schummar-table 0.37.1 → 0.37.4
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/dist/cjs/index.js +31 -25
- package/dist/cjs/index.js.map +1 -1
- package/dist/es/index.js +31 -25
- package/dist/es/index.js.map +1 -1
- package/dist/types/components/datePicker.d.ts +1 -1
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -868,15 +868,15 @@ const thisYear = (delta = 0) => {
|
|
|
868
868
|
};
|
|
869
869
|
const MS_PER_DAY = 1e3 * 60 * 60 * 24;
|
|
870
870
|
const getCalendarWeek = (date) => {
|
|
871
|
-
const
|
|
872
|
-
const
|
|
873
|
-
const
|
|
874
|
-
const
|
|
875
|
-
const
|
|
876
|
-
if (
|
|
877
|
-
return getCalendarWeek(new Date(
|
|
871
|
+
const endOfWeek = new Date(date.getFullYear(), date.getMonth(), date.getDate() + (7 - (date.getDay() || 7)));
|
|
872
|
+
const year = endOfWeek.getFullYear();
|
|
873
|
+
const firstDayOfYear = new Date(year, 0, 1);
|
|
874
|
+
const dayOfYear = Math.floor((endOfWeek.getTime() - firstDayOfYear.getTime() + (endOfWeek.getTimezoneOffset() - firstDayOfYear.getTimezoneOffset())) / MS_PER_DAY) + 1;
|
|
875
|
+
const weekOfYear = Math.floor((3 + dayOfYear) / 7);
|
|
876
|
+
if (weekOfYear === 0) {
|
|
877
|
+
return getCalendarWeek(new Date(endOfWeek.getFullYear(), endOfWeek.getMonth(), endOfWeek.getDate() - 7)) + 1;
|
|
878
878
|
}
|
|
879
|
-
return
|
|
879
|
+
return weekOfYear;
|
|
880
880
|
};
|
|
881
881
|
const commonQuickOptions = {
|
|
882
882
|
today: {
|
|
@@ -947,7 +947,7 @@ var _ref$d = process.env.NODE_ENV === "production" ? {
|
|
|
947
947
|
} : {
|
|
948
948
|
name: "kl77zb-DatePicker",
|
|
949
949
|
styles: "display:grid;grid-auto-flow:column;justify-content:center;align-items:baseline;gap:var(--spacing);label:DatePicker;",
|
|
950
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdhUSIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9zY2h1bW1hci10YWJsZS9zY2h1bW1hci10YWJsZS9zcmMvY29tcG9uZW50cy9kYXRlUGlja2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVPYmosIHVzZURheXplZCB9IGZyb20gJ2RheXplZCc7XG5pbXBvcnQge1xuICBGcmFnbWVudCxcbiAgUmVhY3ROb2RlLFxuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJy4uL2hvb2tzL3VzZVRoZW1lJztcbmltcG9ydCB7IGRlZmF1bHRzIH0gZnJvbSAnLi4vbWlzYy9kZWZhdWx0cyc7XG5pbXBvcnQgeyBncmF5IH0gZnJvbSAnLi4vdGhlbWUvZGVmYXVsdFRoZW1lL2RlZmF1bHRDbGFzc2VzJztcbmltcG9ydCB7IHVzZUNzc1ZhcmlhYmxlcyB9IGZyb20gJy4uL3RoZW1lL3VzZUNzc1ZhcmlhYmxlcyc7XG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tICcuL2RhdGVJbnB1dCc7XG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi90ZXh0JztcbmltcG9ydCB7IEludGVycG9sYXRpb24sIFRoZW1lIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG5leHBvcnQgdHlwZSBEYXRlUmFuZ2UgPSB7IG1pbjogRGF0ZTsgbWF4OiBEYXRlIH07XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJRdWlja09wdGlvbiA9XG4gIHwgJ3RvZGF5J1xuICB8ICd0aGlzV2VlaydcbiAgfCAndGhpc01vbnRoJ1xuICB8ICd0aGlzWWVhcidcbiAgfCAnbGFzdFNldmVuRGF5cydcbiAgfCAnbGFzdFRoaXJ0eURheXMnXG4gIHwgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgoKSA9PiBEYXRlIHwgRGF0ZVJhbmdlKSB9XG4gIHwgKChvbkNoYW5nZTogKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkgPT4gdm9pZCkgPT4gUmVhY3ROb2RlKTtcblxuZXhwb3J0IHR5cGUgRGF0ZVBpY2tlclByb3BzID0ge1xuICAvKiogQ3VycmVudGx5IHNlbGVjdGVkIGRheSBvciByYW5nZSBvZiBkYXlzLiAqL1xuICB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGw7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgZGF5IChyYW5nZSkgY2hhbmdlcy4gKi9cbiAgb25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQ7XG4gIC8qKiBDdXJyZW50bHkgdmlzaWJsZSBkYXRlLiAqL1xuICBkYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIENhbGxiYWNrIGZvciB3aGVuIHRoZSBjdXJyZW50bHkgdmlzaWJsZSBkYXRlIGNoYW5nZXMuICovXG4gIG9uRGF0ZUluVmlld0NoYW5nZT86ICh2YWx1ZTogRGF0ZSkgPT4gdm9pZDtcbiAgLyoqIElmIGVuYWJsZWQsIHJhbmdlcyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gIHJhbmdlU2VsZWN0PzogYm9vbGVhbjtcbiAgLyoqIFdoaWNoIGxvY2FsZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBjYWxlbmRhci4gKi9cbiAgbG9jYWxlPzogc3RyaW5nO1xuICAvKiogV2hpY2ggZGF5IG9mIHRoZSB3ZWVrIHNob3VsZCBiZSBpbiB0aGUgZmlyc3QgY29sdW1uLiAoMD1TdW5kYXksIDE9TW9uZGF5LCAuLi4pXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGZpcnN0RGF5T2ZXZWVrPzogMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNjtcbiAgLyoqIFdoaWNoIG1vbnRoIHRvIHNob3cgaW5pdGlhbGx5ICovXG4gIGRlZmF1bHREYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIFNob3cgYnV0dG9ucyB0byBxdWlja2x5IHNlbGVjdCBzdWdnZXN0ZWQgZGF0ZXMgb3IgZGF0ZSByYW5nZXMgKi9cbiAgcXVpY2tPcHRpb25zPzogRGF0ZVBpY2tlclF1aWNrT3B0aW9uW107XG4gIC8qKiBNaW5pbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICAvKiogRGF0ZSByYW5nZXMgdGhhdCBhcmUgdmlzdWFsbHkgbWFya2VkIGFzIGJsb2NrZWQgKi9cbiAgYmxvY2tlZFJhbmdlcz86IERhdGVSYW5nZVtdO1xuICBtaW5EYXRlPzogRGF0ZTtcbiAgLyoqIE1heGltdW0gc2VsZWN0YWJsZSBkYXRlICovXG4gIG1heERhdGU/OiBEYXRlO1xuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBjYWxlbmRhciB3ZWVrIGluIHRoZSBmaXJzdCBjb2x1bW4gKi9cbiAgc2hvd0NhbGVuZGFyV2Vlaz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBEYXRlUGlja2VyQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8UGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+Pj4oe30pO1xuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlclByb3ZpZGVyKHtcbiAgY2hpbGRyZW4sXG4gIC4uLnByb3BzXG59OiBQYXJ0aWFsPE9taXQ8RGF0ZVBpY2tlclByb3BzLCAndmFsdWUnIHwgJ29uQ2hhbmdlJz4+ICYgeyBjaGlsZHJlbj86IFJlYWN0Tm9kZSB9KSB7XG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbygoKSA9PiBwcm9wcywgW0pTT04uc3RyaW5naWZ5KHByb3BzKV0pO1xuXG4gIHJldHVybiA8RGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9EYXRlUGlja2VyQ29udGV4dC5Qcm92aWRlcj47XG59XG5cbmNvbnN0IHdlZWtEYXlzID0gWzAsIDEsIDIsIDMsIDQsIDUsIDZdIGFzIGNvbnN0O1xuXG4vKiogUm91bmRzIGEgZGF0ZSBkb3duIHRvIHRoZSBzdGFydCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IHN0YXJ0T2ZEYXkgPSAoZDogRGF0ZSkgPT4gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpKTtcblxuLyoqIFJvdW5kcyBhIGRhdGUgdXAgdG8gdGhlIGVuZCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IGVuZE9mRGF5ID0gKGQ6IERhdGUpID0+XG4gIG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSArIDEsIDAsIDAsIDAsIC0xKTtcblxuZXhwb3J0IGNvbnN0IGxhc3REYXlzID0gKGRheXM6IG51bWJlcik6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkYXlzICsgMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG5vdyksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdG9kYXkgPSAoKSA9PiBsYXN0RGF5cygxKTtcblxuZXhwb3J0IGNvbnN0IHRoaXNXZWVrID0gKGRlbHRhID0gMCwgZmlyc3REYXlPZldlZWsgPSAxKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcblxuICBsZXQgZGlmZiA9IG1pbi5nZXREYXkoKSAtIGZpcnN0RGF5T2ZXZWVrO1xuICBpZiAoZGlmZiA8IDApIHtcbiAgICBkaWZmICs9IDc7XG4gIH1cbiAgbWluLnNldERhdGUobWluLmdldERhdGUoKSAtIGRpZmYgKyBkZWx0YSAqIDcpO1xuXG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgKyA2KTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzTW9udGggPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aChtaW4uZ2V0TW9udGgoKSArIGRlbHRhKTtcbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldE1vbnRoKG1heC5nZXRNb250aCgpICsgMSk7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgLSAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzWWVhciA9IChkZWx0YSA9IDApOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZSgxKTtcbiAgbWluLnNldE1vbnRoKDApO1xuICBtaW4uc2V0RnVsbFllYXIobWluLmdldEZ1bGxZZWFyKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRGdWxsWWVhcihtYXguZ2V0RnVsbFllYXIoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5jb25zdCBNU19QRVJfREFZID0gMTAwMCAqIDYwICogNjAgKiAyNDtcbmV4cG9ydCBjb25zdCBnZXRDYWxlbmRhcldlZWsgPSAoZGF0ZTogRGF0ZSk6IG51bWJlciA9PiB7XG4gIC8vIElTTyA4NjAxOiBXZWVrIDEgaXMgdGhlIHdlZWsgd2l0aCB0aGUgZmlyc3QgVGh1cnNkYXkgb2YgdGhlIHllYXIuXG4gIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcblxuICBjb25zdCB5ID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBmZG95ID0gbmV3IERhdGUoeSwgMCwgMSk7XG4gIGNvbnN0IGRveSA9IE1hdGguZmxvb3IoXG4gICAgKGRhdGUuZ2V0VGltZSgpIC0gZmRveS5nZXRUaW1lKCkgKyAoZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIC0gZmRveS5nZXRUaW1lem9uZU9mZnNldCgpKSkgL1xuICAgICAgTVNfUEVSX0RBWSxcbiAgKTtcbiAgY29uc3QgZG93ID0gZmRveS5nZXREYXkoKTtcbiAgY29uc3QgdyA9IE1hdGguZmxvb3IoKDEwICsgZG95IC0gZG93KSAvIDcpO1xuXG4gIGlmICh3ID09PSAwKSB7XG4gICAgcmV0dXJuIGdldENhbGVuZGFyV2VlayhuZXcgRGF0ZSh5IC0gMSwgMTEsIDMxKSk7XG4gIH1cblxuICByZXR1cm4gdztcbn07XG5cbmV4cG9ydCBjb25zdCBjb21tb25RdWlja09wdGlvbnMgPSB7XG4gIHRvZGF5OiB7IGxhYmVsOiA8VGV4dCBpZD1cInRvZGF5XCIgLz4sIHZhbHVlOiB0b2RheSB9LFxuICB0aGlzV2VlazogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzV2Vla1wiIC8+LCB2YWx1ZTogKHByb3BzKSA9PiB0aGlzV2VlaygwLCBwcm9wcy5maXJzdERheU9mV2VlaykgfSxcbiAgdGhpc01vbnRoOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNNb250aFwiIC8+LCB2YWx1ZTogKCkgPT4gdGhpc01vbnRoKCkgfSxcbiAgdGhpc1llYXI6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1llYXJcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNZZWFyKCkgfSxcbiAgbGFzdFNldmVuRGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0U2V2ZW5EYXlzXCIgLz4sIHZhbHVlOiAoKSA9PiBsYXN0RGF5cyg3KSB9LFxuICBsYXN0VGhpcnR5RGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0VGhpcnR5RGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoMzApIH0sXG59IHNhdGlzZmllcyBSZWNvcmQ8XG4gIERhdGVQaWNrZXJRdWlja09wdGlvbiAmIHN0cmluZyxcbiAgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgocHJvcHM6IERhdGVQaWNrZXJQcm9wcykgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuPjtcblxuLyoqIFJldHVybnMgd2hldGhlciB0d28gZGF0ZXMgYW5kL29yIGRhdGUgcmFuZ2VzIGludGVyc2VjdC4gSW50ZXJzZWN0aW9uIGlzIGNvbnNpZGVyZWQgcGVyIGRheS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRlSW50ZXJzZWN0KGE6IERhdGUgfCBudWxsIHwgRGF0ZVJhbmdlLCBiOiBEYXRlIHwgbnVsbCB8IERhdGVSYW5nZSkge1xuICBpZiAoYSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBhID0geyBtaW46IGEsIG1heDogYSB9O1xuICB9XG4gIGlmIChiIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGIgPSB7IG1pbjogYiwgbWF4OiBiIH07XG4gIH1cblxuICBpZiAoIWE/Lm1pbiB8fCAhYS5tYXggfHwgIWI/Lm1pbiB8fCAhYi5tYXgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gIShlbmRPZkRheShhLm1heCkgPCBzdGFydE9mRGF5KGIubWluKSB8fCBzdGFydE9mRGF5KGEubWluKSA+IGVuZE9mRGF5KGIubWF4KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlQ2xhbXAoZGF0ZTogRGF0ZSwgbWluPzogRGF0ZSwgbWF4PzogRGF0ZSkge1xuICBpZiAobWluICYmIGRhdGUgPCBtaW4pIHtcbiAgICByZXR1cm4gbWluO1xuICB9XG5cbiAgaWYgKG1heCAmJiBkYXRlID4gbWF4KSB7XG4gICAgcmV0dXJuIG1heDtcbiAgfVxuXG4gIHJldHVybiBkYXRlO1xufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWU/OiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gdmFsdWUuZ2V0VGltZSgpO1xuICB9XG4gIHJldHVybiBgJHt2YWx1ZS5taW4/LmdldFRpbWUoKX0tJHt2YWx1ZS5tYXg/LmdldFRpbWUoKX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlcihwcm9wczogRGF0ZVBpY2tlclByb3BzKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERhdGVQaWNrZXJDb250ZXh0KTtcblxuICBjb25zdCB7XG4gICAgdmFsdWUsXG4gICAgcmFuZ2VTZWxlY3QsXG4gICAgbG9jYWxlLFxuICAgIGZpcnN0RGF5T2ZXZWVrID0gMSxcbiAgICBkZWZhdWx0RGF0ZUluVmlldyxcbiAgICBxdWlja09wdGlvbnMgPSBbJ3RvZGF5JywgJ3RoaXNXZWVrJ10sXG4gICAgbWluRGF0ZSxcbiAgICBtYXhEYXRlLFxuICAgIHNob3dDYWxlbmRhcldlZWssXG4gICAgYmxvY2tlZFJhbmdlcyA9IFtdLFxuICB9ID0gZGVmYXVsdHM8RGF0ZVBpY2tlclByb3BzPihwcm9wcywgY29udGV4dCk7XG5cbiAgZnVuY3Rpb24gb25DaGFuZ2UodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgdmFsdWUgPSBkYXRlQ2xhbXAodmFsdWUsIG1pbkRhdGUsIG1heERhdGUpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgIHZhbHVlID0ge1xuICAgICAgICBtaW46IGRhdGVDbGFtcCh2YWx1ZS5taW4sIG1pbkRhdGUsIG1heERhdGUpLFxuICAgICAgICBtYXg6IGRhdGVDbGFtcCh2YWx1ZS5tYXgsIG1pbkRhdGUsIG1heERhdGUpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBwcm9wcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICBjb25zdCBCdXR0b24gPSB1c2VUaGVtZSgodCkgPT4gdC5jb21wb25lbnRzLkJ1dHRvbik7XG4gIGNvbnN0IEljb25CdXR0b24gPSB1c2VUaGVtZSgodCkgPT4gdC5jb21wb25lbnRzLkljb25CdXR0b24pO1xuICBjb25zdCBDaGV2cm9uUmlnaHQgPSB1c2VUaGVtZSgodCkgPT4gdC5pY29ucy5DaGV2cm9uUmlnaHQpO1xuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB1c2VDc3NWYXJpYWJsZXMoKTtcbiAgZnVuY3Rpb24gZ2V0RGF5Q3NzU3R5bGVzKHtcbiAgICBkaXNhYmxlZCxcbiAgICBwcmV2TW9udGgsXG4gICAgbmV4dE1vbnRoLFxuICAgIHRvZGF5LFxuICAgIGJsb2NrZWQsXG4gICAgc2VsZWN0ZWQsXG4gICAgcHJlU2VsZWN0ZWQsXG4gIH06IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgcHJldk1vbnRoPzogYm9vbGVhbjtcbiAgICBuZXh0TW9udGg/OiBib29sZWFuO1xuICAgIHRvZGF5PzogYm9vbGVhbjtcbiAgICBibG9ja2VkPzogYm9vbGVhbjtcbiAgICBzZWxlY3RlZD86IGJvb2xlYW47XG4gICAgcHJlU2VsZWN0ZWQ/OiBib29sZWFuO1xuICB9KTogSW50ZXJwb2xhdGlvbjxUaGVtZT4ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgY3Vyc29yOiBkaXNhYmxlZCA/IHVuZGVmaW5lZCA6ICdwb2ludGVyJyxcbiAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgfSxcbiAgICAgIChwcmV2TW9udGggfHwgbmV4dE1vbnRoKSAmJiB7XG4gICAgICAgIGNvbG9yOiBncmF5LFxuICAgICAgfSxcbiAgICAgIHRvZGF5ICYmIHtcbiAgICAgICAgb3V0bGluZTogJzFweCBzb2xpZCB2YXIoLS1zZWNvbmRhcnlNYWluKScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ibG9ja2VkTWFpbiknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLWJsb2NrZWRDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TWFpbiknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLXByaW1hcnlDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgICBibG9ja2VkICYmXG4gICAgICAgIHNlbGVjdGVkICYmIHtcbiAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAnOjpiZWZvcmUnOiB7XG4gICAgICAgICAgICBjb250ZW50OiAnXCJcIicsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ibG9ja2VkTWFpbiknLFxuICAgICAgICAgICAgY2xpcFBhdGg6ICdwb2x5Z29uKDAgMCwgMCA1MCUsIDUwJSAwKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIHByZVNlbGVjdGVkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLXByaW1hcnlMaWdodCknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLXByaW1hcnlDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0IG1vdW50VGltZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoKSwgW10pO1xuICBjb25zdCBbZGlydHksIHNldERpcnR5XSA9IHVzZVN0YXRlPFBhcnRpYWw8RGF0ZVJhbmdlPj4oKTtcbiAgY29uc3QgW2hvdmVyZWQsIHNldEhvdmVyZWRdID0gdXNlU3RhdGU8RGF0ZT4oKTtcbiAgY29uc3QgW2RhdGVJblZpZXdMb2NhbCwgc2V0RGF0ZUluVmlld0xvY2FsXSA9IHVzZVN0YXRlPERhdGU+KGRlZmF1bHREYXRlSW5WaWV3ID8/IG1vdW50VGltZSk7XG4gIGNvbnN0IGRhdGVJblZpZXcgPSBwcm9wcy5kYXRlSW5WaWV3ID8/IGRhdGVJblZpZXdMb2NhbDtcblxuICBmdW5jdGlvbiBzZXREYXRlSW5WaWV3KGRhdGU6IERhdGUpIHtcbiAgICBzZXREYXRlSW5WaWV3TG9jYWwoZGF0ZSk7XG4gICAgcHJvcHMub25EYXRlSW5WaWV3Q2hhbmdlPy4oZGF0ZSk7XG4gIH1cblxuICBjb25zdCBtaW4gPSBkaXJ0eSA/IGRpcnR5Lm1pbiA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWU/Lm1pbjtcbiAgY29uc3QgbWF4ID0gZGlydHkgPyBkaXJ0eS5tYXggOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5tYXg7XG5cbiAgY29uc3QgcmVzb2x2ZWRRdWlja09wdGlvbnMgPSBbLi4ucXVpY2tPcHRpb25zLCB7IGxhYmVsOiA8VGV4dCBpZD1cInJlc2V0XCIgLz4sIHZhbHVlOiBudWxsIH1dLm1hcChcbiAgICAob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKG9wdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSB9ID0gdHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycgPyBjb21tb25RdWlja09wdGlvbnNbb3B0aW9uXSA6IG9wdGlvbjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKHByb3BzKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApO1xuICAgIH0sXG4gICk7XG5cbiAgY29uc3QgeyBjYWxlbmRhcnMsIGdldEJhY2tQcm9wcywgZ2V0Rm9yd2FyZFByb3BzLCBnZXREYXRlUHJvcHMgfSA9IHVzZURheXplZCh7XG4gICAgb25EYXRlU2VsZWN0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBmaXJzdERheU9mV2VlayxcbiAgICBzaG93T3V0c2lkZURheXM6IHRydWUsXG4gICAgZGF0ZTogZGF0ZUluVmlldyxcbiAgICBvbk9mZnNldENoYW5nZWQ6IChvZmZzZXQpID0+XG4gICAgICBzZXREYXRlSW5WaWV3KG5ldyBEYXRlKGRhdGVJblZpZXcuZ2V0RnVsbFllYXIoKSwgZGF0ZUluVmlldy5nZXRNb250aCgpICsgb2Zmc2V0KSksXG4gICAgb2Zmc2V0OiAwLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgfSk7XG4gIGNvbnN0IG5vdyA9IHVzZU1lbW8oKCkgPT4gc3RhcnRPZkRheShuZXcgRGF0ZSgpKSwgW10pO1xuXG4gIGNvbnN0IGZvcm1hdFdlZWtkYXkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHdlZWtkYXk6ICdzaG9ydCcgfSk7XG4gICAgcmV0dXJuICh3ZWVrRGF5OiBudW1iZXIpID0+XG4gICAgICBmb3JtYXQobmV3IERhdGUoRGF0ZS5VVEMoMjAyMSwgNywgKCh3ZWVrRGF5ICsgZmlyc3REYXlPZldlZWspICUgNykgKyAxKSkpO1xuICB9LCBbbG9jYWxlLCBmaXJzdERheU9mV2Vla10pO1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhcbiAgICAgICAgdmFsdWUgPT09IG51bGwgPyBkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUgOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlLm1heCxcbiAgICAgICksXG4gICAgW2dldFZhbHVlRm9yQ29tcGFyaXNvbih2YWx1ZSksIGdldFZhbHVlRm9yQ29tcGFyaXNvbihkZWZhdWx0RGF0ZUluVmlldyksIG1vdW50VGltZV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSwgW3JhbmdlU2VsZWN0XSk7XG5cbiAgZnVuY3Rpb24gc2V0KG1pbj86IERhdGUsIG1heD86IERhdGUsIGVkaXQ/OiAnbWluJyB8ICdtYXgnKSB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgb25DaGFuZ2UobWluID8/IG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChtaW4gJiYgbWF4ICYmIG1pbiA+IG1heCkge1xuICAgICAgaWYgKGVkaXQgPT09ICdtaW4nKSB7XG4gICAgICAgIG1heCA9IG1pbjtcbiAgICAgIH0gZWxzZSBpZiAoZWRpdCA9PT0gJ21heCcpIHtcbiAgICAgICAgbWluID0gbWF4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgW21pbiwgbWF4XSA9IFttYXgsIG1pbl07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFtaW4gPT09ICFtYXgpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICBvbkNoYW5nZShtaW4gJiYgbWF4ID8geyBtaW4sIG1heDogZW5kT2ZEYXkobWF4KSB9IDogbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldERpcnR5KHsgbWluLCBtYXggfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZm9ybWF0TW9udGggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XG4gICAgcmV0dXJuIChtb250aDogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoMjAyMSwgbW9udGgpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIGNvbnN0IGZvcm1hdFllYXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHllYXI6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gKHllYXI6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKHllYXIsIDAsIDEpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjc3M9e2Nzc1ZhcmlhYmxlc30+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiAnYmFzZWxpbmUnLFxuICAgICAgICAgIGdhcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgIHZhbHVlPXttaW4gPz8gbnVsbH1cbiAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChkYXRlID8/IHVuZGVmaW5lZCwgbWF4LCAnbWluJyl9XG4gICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgIC8+XG5cbiAgICAgICAge3JhbmdlU2VsZWN0ICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgeycgLSAnfVxuICAgICAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgICAgICB2YWx1ZT17bWF4ID8/IG51bGx9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KG1pbiwgZGF0ZSA/PyB1bmRlZmluZWQsICdtYXgnKX1cbiAgICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHtjYWxlbmRhcnMubWFwKCh7IG1vbnRoLCB5ZWFyLCB3ZWVrcyB9KSA9PiAoXG4gICAgICAgIDxkaXYga2V5PXtgJHttb250aH0ke3llYXJ9YH0gY3NzPXt7IGRpc3BsYXk6ICdncmlkJyB9fT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgbWFyZ2luOiAnY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpIDAnLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEJhY2tQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgY3NzPXt7IHRyYW5zZm9ybTogJ3JvdGF0ZTNkKDAsIDAsIDEsIDE4MGRlZyknIH19IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY3NzPXt7IGRpc3BsYXk6ICdmbGV4JyB9fT5cbiAgICAgICAgICAgICAge2Zvcm1hdE1vbnRoKG1vbnRoKX0ge2Zvcm1hdFllYXIoeWVhcil9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRGb3J3YXJkUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICdyZXBlYXQoOCwgbWF4LWNvbnRlbnQpJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUZXh0IGlkPVwiY2FsZW5kYXJXZWVrXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7d2Vla0RheXMubWFwKChfdiwgd2Vla0RheSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAga2V5PXt3ZWVrRGF5fVxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtmb3JtYXRXZWVrZGF5KHdlZWtEYXkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuXG4gICAgICAgICAgICB7d2Vla3MubWFwKCh3ZWVrLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrU3RhcnQgPSB3ZWVrWzBdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtFbmQgPSB3ZWVrWzZdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtEaXNhYmxlZCA9XG4gICAgICAgICAgICAgICAgIXJhbmdlU2VsZWN0IHx8XG4gICAgICAgICAgICAgICAgKG1pbkRhdGUgJiYgd2Vla0VuZC5kYXRlIDwgbWluRGF0ZSkgfHxcbiAgICAgICAgICAgICAgICAobWF4RGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiB3ZWVrRGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ZWVrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW4gPSBtaW5EYXRlICYmIHdlZWtTdGFydC5kYXRlIDwgbWluRGF0ZSA/IG1pbkRhdGUgOiB3ZWVrU3RhcnQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heCA9IG1heERhdGUgJiYgd2Vla0VuZC5kYXRlID4gbWF4RGF0ZSA/IG1heERhdGUgOiB3ZWVrRW5kLmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXQobWluLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7Z2V0Q2FsZW5kYXJXZWVrKCh3ZWVrWzBdIGFzIERhdGVPYmopLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgIHt3ZWVrLm1hcCgoZGF0ZU9iamVjdCwgZGF5SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtkYXlJbmRleH0gLz47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZNb250aCwgbmV4dE1vbnRoLCBkYXRlIH0gPSBkYXRlT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZEYXkoZGF0ZSkuZ2V0VGltZSgpID09PSBub3cuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB8fCAobWF4RGF0ZSAmJiBkYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGUuZ2V0VGltZSgpID09PSBtaW4/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiYgbWF4ICYmIGRhdGVJbnRlcnNlY3QoZGF0ZSwgeyBtaW4sIG1heCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZS5nZXRUaW1lKCkgPT09IGhvdmVyZWQ/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUludGVyc2VjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA8PSBob3ZlcmVkID8geyBtaW4sIG1heDogaG92ZXJlZCB9IDogeyBtaW46IGhvdmVyZWQsIG1heDogbWluIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tlZCA9IGJsb2NrZWRSYW5nZXMuc29tZSgocmFuZ2UpID0+IGRhdGVJbnRlcnNlY3QoZGF0ZSwgcmFuZ2UpKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtpbmRleH0tJHtkYXlJbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtnZXREYXlDc3NTdHlsZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldk1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvZGF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZXREYXRlUHJvcHMoeyBkYXRlT2JqOiBkYXRlT2JqZWN0IH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluKSBzZXQobWluLCBkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNldChkYXRlLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+IHNldEhvdmVyZWQoZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+IHNldEhvdmVyZWQodW5kZWZpbmVkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGF0ZS5nZXREYXRlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSl9XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgbWFyZ2luVG9wOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3Jlc29sdmVkUXVpY2tPcHRpb25zfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0= */",
|
|
950
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXViUSIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9zY2h1bW1hci10YWJsZS9zY2h1bW1hci10YWJsZS9zcmMvY29tcG9uZW50cy9kYXRlUGlja2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVPYmosIHVzZURheXplZCB9IGZyb20gJ2RheXplZCc7XG5pbXBvcnQge1xuICBGcmFnbWVudCxcbiAgUmVhY3ROb2RlLFxuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJy4uL2hvb2tzL3VzZVRoZW1lJztcbmltcG9ydCB7IGRlZmF1bHRzIH0gZnJvbSAnLi4vbWlzYy9kZWZhdWx0cyc7XG5pbXBvcnQgeyBncmF5IH0gZnJvbSAnLi4vdGhlbWUvZGVmYXVsdFRoZW1lL2RlZmF1bHRDbGFzc2VzJztcbmltcG9ydCB7IHVzZUNzc1ZhcmlhYmxlcyB9IGZyb20gJy4uL3RoZW1lL3VzZUNzc1ZhcmlhYmxlcyc7XG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tICcuL2RhdGVJbnB1dCc7XG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi90ZXh0JztcbmltcG9ydCB7IEludGVycG9sYXRpb24sIFRoZW1lIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG5leHBvcnQgdHlwZSBEYXRlUmFuZ2UgPSB7IG1pbjogRGF0ZTsgbWF4OiBEYXRlIH07XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJRdWlja09wdGlvbiA9XG4gIHwgJ3RvZGF5J1xuICB8ICd0aGlzV2VlaydcbiAgfCAndGhpc01vbnRoJ1xuICB8ICd0aGlzWWVhcidcbiAgfCAnbGFzdFNldmVuRGF5cydcbiAgfCAnbGFzdFRoaXJ0eURheXMnXG4gIHwgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgoKSA9PiBEYXRlIHwgRGF0ZVJhbmdlKSB9XG4gIHwgKChvbkNoYW5nZTogKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkgPT4gdm9pZCkgPT4gUmVhY3ROb2RlKTtcblxuZXhwb3J0IHR5cGUgRGF0ZVBpY2tlclByb3BzID0ge1xuICAvKiogQ3VycmVudGx5IHNlbGVjdGVkIGRheSBvciByYW5nZSBvZiBkYXlzLiAqL1xuICB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGw7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgZGF5IChyYW5nZSkgY2hhbmdlcy4gKi9cbiAgb25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQ7XG4gIC8qKiBDdXJyZW50bHkgdmlzaWJsZSBkYXRlLiAqL1xuICBkYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIENhbGxiYWNrIGZvciB3aGVuIHRoZSBjdXJyZW50bHkgdmlzaWJsZSBkYXRlIGNoYW5nZXMuICovXG4gIG9uRGF0ZUluVmlld0NoYW5nZT86ICh2YWx1ZTogRGF0ZSkgPT4gdm9pZDtcbiAgLyoqIElmIGVuYWJsZWQsIHJhbmdlcyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gIHJhbmdlU2VsZWN0PzogYm9vbGVhbjtcbiAgLyoqIFdoaWNoIGxvY2FsZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBjYWxlbmRhci4gKi9cbiAgbG9jYWxlPzogc3RyaW5nO1xuICAvKiogV2hpY2ggZGF5IG9mIHRoZSB3ZWVrIHNob3VsZCBiZSBpbiB0aGUgZmlyc3QgY29sdW1uLiAoMD1TdW5kYXksIDE9TW9uZGF5LCAuLi4pXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGZpcnN0RGF5T2ZXZWVrPzogMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNjtcbiAgLyoqIFdoaWNoIG1vbnRoIHRvIHNob3cgaW5pdGlhbGx5ICovXG4gIGRlZmF1bHREYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIFNob3cgYnV0dG9ucyB0byBxdWlja2x5IHNlbGVjdCBzdWdnZXN0ZWQgZGF0ZXMgb3IgZGF0ZSByYW5nZXMgKi9cbiAgcXVpY2tPcHRpb25zPzogRGF0ZVBpY2tlclF1aWNrT3B0aW9uW107XG4gIC8qKiBNaW5pbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICAvKiogRGF0ZSByYW5nZXMgdGhhdCBhcmUgdmlzdWFsbHkgbWFya2VkIGFzIGJsb2NrZWQgKi9cbiAgYmxvY2tlZFJhbmdlcz86IERhdGVSYW5nZVtdO1xuICBtaW5EYXRlPzogRGF0ZTtcbiAgLyoqIE1heGltdW0gc2VsZWN0YWJsZSBkYXRlICovXG4gIG1heERhdGU/OiBEYXRlO1xuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBjYWxlbmRhciB3ZWVrIGluIHRoZSBmaXJzdCBjb2x1bW4gKi9cbiAgc2hvd0NhbGVuZGFyV2Vlaz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBEYXRlUGlja2VyQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8UGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+Pj4oe30pO1xuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlclByb3ZpZGVyKHtcbiAgY2hpbGRyZW4sXG4gIC4uLnByb3BzXG59OiBQYXJ0aWFsPE9taXQ8RGF0ZVBpY2tlclByb3BzLCAndmFsdWUnIHwgJ29uQ2hhbmdlJz4+ICYgeyBjaGlsZHJlbj86IFJlYWN0Tm9kZSB9KSB7XG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbygoKSA9PiBwcm9wcywgW0pTT04uc3RyaW5naWZ5KHByb3BzKV0pO1xuXG4gIHJldHVybiA8RGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9EYXRlUGlja2VyQ29udGV4dC5Qcm92aWRlcj47XG59XG5cbmNvbnN0IHdlZWtEYXlzID0gWzAsIDEsIDIsIDMsIDQsIDUsIDZdIGFzIGNvbnN0O1xuXG4vKiogUm91bmRzIGEgZGF0ZSBkb3duIHRvIHRoZSBzdGFydCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IHN0YXJ0T2ZEYXkgPSAoZDogRGF0ZSkgPT4gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpKTtcblxuLyoqIFJvdW5kcyBhIGRhdGUgdXAgdG8gdGhlIGVuZCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IGVuZE9mRGF5ID0gKGQ6IERhdGUpID0+XG4gIG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSArIDEsIDAsIDAsIDAsIC0xKTtcblxuZXhwb3J0IGNvbnN0IGxhc3REYXlzID0gKGRheXM6IG51bWJlcik6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkYXlzICsgMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG5vdyksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdG9kYXkgPSAoKSA9PiBsYXN0RGF5cygxKTtcblxuZXhwb3J0IGNvbnN0IHRoaXNXZWVrID0gKGRlbHRhID0gMCwgZmlyc3REYXlPZldlZWsgPSAxKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcblxuICBsZXQgZGlmZiA9IG1pbi5nZXREYXkoKSAtIGZpcnN0RGF5T2ZXZWVrO1xuICBpZiAoZGlmZiA8IDApIHtcbiAgICBkaWZmICs9IDc7XG4gIH1cbiAgbWluLnNldERhdGUobWluLmdldERhdGUoKSAtIGRpZmYgKyBkZWx0YSAqIDcpO1xuXG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgKyA2KTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzTW9udGggPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aChtaW4uZ2V0TW9udGgoKSArIGRlbHRhKTtcbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldE1vbnRoKG1heC5nZXRNb250aCgpICsgMSk7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgLSAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzWWVhciA9IChkZWx0YSA9IDApOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZSgxKTtcbiAgbWluLnNldE1vbnRoKDApO1xuICBtaW4uc2V0RnVsbFllYXIobWluLmdldEZ1bGxZZWFyKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRGdWxsWWVhcihtYXguZ2V0RnVsbFllYXIoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5jb25zdCBNU19QRVJfREFZID0gMTAwMCAqIDYwICogNjAgKiAyNDtcbmV4cG9ydCBjb25zdCBnZXRDYWxlbmRhcldlZWsgPSAoZGF0ZTogRGF0ZSk6IG51bWJlciA9PiB7XG4gIC8vIElTTyA4NjAxOiBXZWVrIDEgaXMgdGhlIHdlZWsgd2l0aCB0aGUgZmlyc3QgVGh1cnNkYXkgb2YgdGhlIHllYXIuXG4gIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcblxuICBjb25zdCBlbmRPZldlZWsgPSBuZXcgRGF0ZShcbiAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgZGF0ZS5nZXRNb250aCgpLFxuICAgIGRhdGUuZ2V0RGF0ZSgpICsgKDcgLSAoZGF0ZS5nZXREYXkoKSB8fCA3KSksXG4gICk7XG5cbiAgY29uc3QgeWVhciA9IGVuZE9mV2Vlay5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBmaXJzdERheU9mWWVhciA9IG5ldyBEYXRlKHllYXIsIDAsIDEpO1xuICBjb25zdCBkYXlPZlllYXIgPVxuICAgIE1hdGguZmxvb3IoXG4gICAgICAoZW5kT2ZXZWVrLmdldFRpbWUoKSAtXG4gICAgICAgIGZpcnN0RGF5T2ZZZWFyLmdldFRpbWUoKSArXG4gICAgICAgIChlbmRPZldlZWsuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGZpcnN0RGF5T2ZZZWFyLmdldFRpbWV6b25lT2Zmc2V0KCkpKSAvXG4gICAgICAgIE1TX1BFUl9EQVksXG4gICAgKSArIDE7XG4gIGNvbnN0IHdlZWtPZlllYXIgPSBNYXRoLmZsb29yKCgzICsgZGF5T2ZZZWFyKSAvIDcpO1xuXG4gIGlmICh3ZWVrT2ZZZWFyID09PSAwKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGdldENhbGVuZGFyV2VlayhcbiAgICAgICAgbmV3IERhdGUoZW5kT2ZXZWVrLmdldEZ1bGxZZWFyKCksIGVuZE9mV2Vlay5nZXRNb250aCgpLCBlbmRPZldlZWsuZ2V0RGF0ZSgpIC0gNyksXG4gICAgICApICsgMVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gd2Vla09mWWVhcjtcbn07XG5cbmV4cG9ydCBjb25zdCBjb21tb25RdWlja09wdGlvbnMgPSB7XG4gIHRvZGF5OiB7IGxhYmVsOiA8VGV4dCBpZD1cInRvZGF5XCIgLz4sIHZhbHVlOiB0b2RheSB9LFxuICB0aGlzV2VlazogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzV2Vla1wiIC8+LCB2YWx1ZTogKHByb3BzKSA9PiB0aGlzV2VlaygwLCBwcm9wcy5maXJzdERheU9mV2VlaykgfSxcbiAgdGhpc01vbnRoOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNNb250aFwiIC8+LCB2YWx1ZTogKCkgPT4gdGhpc01vbnRoKCkgfSxcbiAgdGhpc1llYXI6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1llYXJcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNZZWFyKCkgfSxcbiAgbGFzdFNldmVuRGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0U2V2ZW5EYXlzXCIgLz4sIHZhbHVlOiAoKSA9PiBsYXN0RGF5cyg3KSB9LFxuICBsYXN0VGhpcnR5RGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0VGhpcnR5RGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoMzApIH0sXG59IHNhdGlzZmllcyBSZWNvcmQ8XG4gIERhdGVQaWNrZXJRdWlja09wdGlvbiAmIHN0cmluZyxcbiAgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgocHJvcHM6IERhdGVQaWNrZXJQcm9wcykgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuPjtcblxuLyoqIFJldHVybnMgd2hldGhlciB0d28gZGF0ZXMgYW5kL29yIGRhdGUgcmFuZ2VzIGludGVyc2VjdC4gSW50ZXJzZWN0aW9uIGlzIGNvbnNpZGVyZWQgcGVyIGRheS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRlSW50ZXJzZWN0KFxuICBhOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgYjogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwgfCB1bmRlZmluZWQsXG4pIHtcbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYSA9IHsgbWluOiBhLCBtYXg6IGEgfTtcbiAgfVxuICBpZiAoYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBiID0geyBtaW46IGIsIG1heDogYiB9O1xuICB9XG5cbiAgaWYgKCFhPy5taW4gfHwgIWEubWF4IHx8ICFiPy5taW4gfHwgIWIubWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuICEoZW5kT2ZEYXkoYS5tYXgpIDwgc3RhcnRPZkRheShiLm1pbikgfHwgc3RhcnRPZkRheShhLm1pbikgPiBlbmRPZkRheShiLm1heCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNsYW1wKGRhdGU6IERhdGUsIG1pbj86IERhdGUsIG1heD86IERhdGUpIHtcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxuXG4gIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWVGb3JDb21wYXJpc29uKHZhbHVlPzogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmdldFRpbWUoKTtcbiAgfVxuICByZXR1cm4gYCR7dmFsdWUubWluPy5nZXRUaW1lKCl9LSR7dmFsdWUubWF4Py5nZXRUaW1lKCl9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXIocHJvcHM6IERhdGVQaWNrZXJQcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChEYXRlUGlja2VyQ29udGV4dCk7XG5cbiAgY29uc3Qge1xuICAgIHZhbHVlLFxuICAgIHJhbmdlU2VsZWN0LFxuICAgIGxvY2FsZSxcbiAgICBmaXJzdERheU9mV2VlayA9IDEsXG4gICAgZGVmYXVsdERhdGVJblZpZXcsXG4gICAgcXVpY2tPcHRpb25zID0gWyd0b2RheScsICd0aGlzV2VlayddLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICBzaG93Q2FsZW5kYXJXZWVrLFxuICAgIGJsb2NrZWRSYW5nZXMgPSBbXSxcbiAgfSA9IGRlZmF1bHRzPERhdGVQaWNrZXJQcm9wcz4ocHJvcHMsIGNvbnRleHQpO1xuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHZhbHVlID0gZGF0ZUNsYW1wKHZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHtcbiAgICAgICAgbWluOiBkYXRlQ2xhbXAodmFsdWUubWluLCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgICAgbWF4OiBkYXRlQ2xhbXAodmFsdWUubWF4LCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgY29uc3QgQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5CdXR0b24pO1xuICBjb25zdCBJY29uQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5JY29uQnV0dG9uKTtcbiAgY29uc3QgQ2hldnJvblJpZ2h0ID0gdXNlVGhlbWUoKHQpID0+IHQuaWNvbnMuQ2hldnJvblJpZ2h0KTtcbiAgY29uc3QgY3NzVmFyaWFibGVzID0gdXNlQ3NzVmFyaWFibGVzKCk7XG4gIGZ1bmN0aW9uIGdldERheUNzc1N0eWxlcyh7XG4gICAgZGlzYWJsZWQsXG4gICAgcHJldk1vbnRoLFxuICAgIG5leHRNb250aCxcbiAgICB0b2RheSxcbiAgICBibG9ja2VkLFxuICAgIHNlbGVjdGVkLFxuICAgIHByZVNlbGVjdGVkLFxuICB9OiB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZNb250aD86IGJvb2xlYW47XG4gICAgbmV4dE1vbnRoPzogYm9vbGVhbjtcbiAgICB0b2RheT86IGJvb2xlYW47XG4gICAgYmxvY2tlZD86IGJvb2xlYW47XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIHByZVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgfSk6IEludGVycG9sYXRpb248VGhlbWU+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGN1cnNvcjogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgIH0sXG4gICAgICAocHJldk1vbnRoIHx8IG5leHRNb250aCkgJiYge1xuICAgICAgICBjb2xvcjogZ3JheSxcbiAgICAgIH0sXG4gICAgICB0b2RheSAmJiB7XG4gICAgICAgIG91dGxpbmU6ICcxcHggc29saWQgdmFyKC0tc2Vjb25kYXJ5TWFpbiknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1ibG9ja2VkQ29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeU1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJlxuICAgICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgJzo6YmVmb3JlJzoge1xuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgICAgIGNsaXBQYXRoOiAncG9seWdvbigwIDAsIDAgNTAlLCA1MCUgMCknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBwcmVTZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TGlnaHQpJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBjb25zdCBtb3VudFRpbWUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKCksIFtdKTtcbiAgY29uc3QgW2RpcnR5LCBzZXREaXJ0eV0gPSB1c2VTdGF0ZTxQYXJ0aWFsPERhdGVSYW5nZT4+KCk7XG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlPERhdGVSYW5nZT4oKTtcbiAgY29uc3QgW2RhdGVJblZpZXdMb2NhbCwgc2V0RGF0ZUluVmlld0xvY2FsXSA9IHVzZVN0YXRlPERhdGU+KGRlZmF1bHREYXRlSW5WaWV3ID8/IG1vdW50VGltZSk7XG4gIGNvbnN0IGRhdGVJblZpZXcgPSBwcm9wcy5kYXRlSW5WaWV3ID8/IGRhdGVJblZpZXdMb2NhbDtcblxuICBmdW5jdGlvbiBzZXREYXRlSW5WaWV3KGRhdGU6IERhdGUpIHtcbiAgICBzZXREYXRlSW5WaWV3TG9jYWwoZGF0ZSk7XG4gICAgcHJvcHMub25EYXRlSW5WaWV3Q2hhbmdlPy4oZGF0ZSk7XG4gIH1cblxuICBjb25zdCBtaW4gPSBkaXJ0eSA/IGRpcnR5Lm1pbiA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWU/Lm1pbjtcbiAgY29uc3QgbWF4ID0gZGlydHkgPyBkaXJ0eS5tYXggOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5tYXg7XG5cbiAgY29uc3QgcmVzb2x2ZWRRdWlja09wdGlvbnMgPSBbLi4ucXVpY2tPcHRpb25zLCB7IGxhYmVsOiA8VGV4dCBpZD1cInJlc2V0XCIgLz4sIHZhbHVlOiBudWxsIH1dLm1hcChcbiAgICAob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKG9wdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSB9ID0gdHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycgPyBjb21tb25RdWlja09wdGlvbnNbb3B0aW9uXSA6IG9wdGlvbjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKHByb3BzKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApO1xuICAgIH0sXG4gICk7XG5cbiAgY29uc3QgeyBjYWxlbmRhcnMsIGdldEJhY2tQcm9wcywgZ2V0Rm9yd2FyZFByb3BzLCBnZXREYXRlUHJvcHMgfSA9IHVzZURheXplZCh7XG4gICAgb25EYXRlU2VsZWN0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBmaXJzdERheU9mV2VlayxcbiAgICBzaG93T3V0c2lkZURheXM6IHRydWUsXG4gICAgZGF0ZTogZGF0ZUluVmlldyxcbiAgICBvbk9mZnNldENoYW5nZWQ6IChvZmZzZXQpID0+XG4gICAgICBzZXREYXRlSW5WaWV3KG5ldyBEYXRlKGRhdGVJblZpZXcuZ2V0RnVsbFllYXIoKSwgZGF0ZUluVmlldy5nZXRNb250aCgpICsgb2Zmc2V0KSksXG4gICAgb2Zmc2V0OiAwLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgfSk7XG4gIGNvbnN0IG5vdyA9IHVzZU1lbW8oKCkgPT4gc3RhcnRPZkRheShuZXcgRGF0ZSgpKSwgW10pO1xuXG4gIGNvbnN0IGZvcm1hdFdlZWtkYXkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHdlZWtkYXk6ICdzaG9ydCcgfSk7XG4gICAgcmV0dXJuICh3ZWVrRGF5OiBudW1iZXIpID0+XG4gICAgICBmb3JtYXQobmV3IERhdGUoRGF0ZS5VVEMoMjAyMSwgNywgKCh3ZWVrRGF5ICsgZmlyc3REYXlPZldlZWspICUgNykgKyAxKSkpO1xuICB9LCBbbG9jYWxlLCBmaXJzdERheU9mV2Vla10pO1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhcbiAgICAgICAgdmFsdWUgPT09IG51bGwgPyBkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUgOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlLm1heCxcbiAgICAgICksXG4gICAgW2dldFZhbHVlRm9yQ29tcGFyaXNvbih2YWx1ZSksIGdldFZhbHVlRm9yQ29tcGFyaXNvbihkZWZhdWx0RGF0ZUluVmlldyksIG1vdW50VGltZV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSwgW3JhbmdlU2VsZWN0XSk7XG5cbiAgZnVuY3Rpb24gc2V0KG1pbj86IERhdGUsIG1heD86IERhdGUsIGVkaXQ/OiAnbWluJyB8ICdtYXgnKSB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgb25DaGFuZ2UobWluID8/IG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChtaW4gJiYgbWF4ICYmIG1pbiA+IG1heCkge1xuICAgICAgaWYgKGVkaXQgPT09ICdtaW4nKSB7XG4gICAgICAgIG1heCA9IG1pbjtcbiAgICAgIH0gZWxzZSBpZiAoZWRpdCA9PT0gJ21heCcpIHtcbiAgICAgICAgbWluID0gbWF4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgW21pbiwgbWF4XSA9IFttYXgsIG1pbl07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFtaW4gPT09ICFtYXgpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICBvbkNoYW5nZShtaW4gJiYgbWF4ID8geyBtaW4sIG1heDogZW5kT2ZEYXkobWF4KSB9IDogbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldERpcnR5KHsgbWluLCBtYXggfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZm9ybWF0TW9udGggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XG4gICAgcmV0dXJuIChtb250aDogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoMjAyMSwgbW9udGgpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIGNvbnN0IGZvcm1hdFllYXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHllYXI6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gKHllYXI6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKHllYXIsIDAsIDEpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjc3M9e2Nzc1ZhcmlhYmxlc30+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiAnYmFzZWxpbmUnLFxuICAgICAgICAgIGdhcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgIHZhbHVlPXttaW4gPz8gbnVsbH1cbiAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChkYXRlID8/IHVuZGVmaW5lZCwgbWF4LCAnbWluJyl9XG4gICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgIC8+XG5cbiAgICAgICAge3JhbmdlU2VsZWN0ICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgeycgLSAnfVxuICAgICAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgICAgICB2YWx1ZT17bWF4ID8/IG51bGx9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KG1pbiwgZGF0ZSA/PyB1bmRlZmluZWQsICdtYXgnKX1cbiAgICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHtjYWxlbmRhcnMubWFwKCh7IG1vbnRoLCB5ZWFyLCB3ZWVrcyB9KSA9PiAoXG4gICAgICAgIDxkaXYga2V5PXtgJHttb250aH0ke3llYXJ9YH0gY3NzPXt7IGRpc3BsYXk6ICdncmlkJyB9fT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgbWFyZ2luOiAnY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpIDAnLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEJhY2tQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgY3NzPXt7IHRyYW5zZm9ybTogJ3JvdGF0ZTNkKDAsIDAsIDEsIDE4MGRlZyknIH19IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY3NzPXt7IGRpc3BsYXk6ICdmbGV4JyB9fT5cbiAgICAgICAgICAgICAge2Zvcm1hdE1vbnRoKG1vbnRoKX0ge2Zvcm1hdFllYXIoeWVhcil9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRGb3J3YXJkUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICdyZXBlYXQoOCwgbWF4LWNvbnRlbnQpJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUZXh0IGlkPVwiY2FsZW5kYXJXZWVrXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7d2Vla0RheXMubWFwKChfdiwgd2Vla0RheSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAga2V5PXt3ZWVrRGF5fVxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtmb3JtYXRXZWVrZGF5KHdlZWtEYXkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuXG4gICAgICAgICAgICB7d2Vla3MubWFwKCh3ZWVrLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrU3RhcnQgPSB3ZWVrWzBdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtFbmQgPSB3ZWVrWzZdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtEaXNhYmxlZCA9XG4gICAgICAgICAgICAgICAgIXJhbmdlU2VsZWN0IHx8XG4gICAgICAgICAgICAgICAgKG1pbkRhdGUgJiYgd2Vla0VuZC5kYXRlIDwgbWluRGF0ZSkgfHxcbiAgICAgICAgICAgICAgICAobWF4RGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiB3ZWVrRGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ZWVrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW4gPSBtaW5EYXRlICYmIHdlZWtTdGFydC5kYXRlIDwgbWluRGF0ZSA/IG1pbkRhdGUgOiB3ZWVrU3RhcnQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heCA9IG1heERhdGUgJiYgd2Vla0VuZC5kYXRlID4gbWF4RGF0ZSA/IG1heERhdGUgOiB3ZWVrRW5kLmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXQobWluLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3Zlcj17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICF3ZWVrRGlzYWJsZWQgJiYgc2V0SG92ZXJlZCh7IG1pbjogd2Vla1N0YXJ0LmRhdGUsIG1heDogd2Vla0VuZC5kYXRlIH0pXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck91dD17KCkgPT4gIXdlZWtEaXNhYmxlZCAmJiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7Z2V0Q2FsZW5kYXJXZWVrKHdlZWtFbmQuZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAge3dlZWsubWFwKChkYXRlT2JqZWN0LCBkYXlJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGVPYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2RheUluZGV4fSAvPjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJldk1vbnRoLCBuZXh0TW9udGgsIGRhdGUgfSA9IGRhdGVPYmplY3Q7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvZGF5ID0gc3RhcnRPZkRheShkYXRlKS5nZXRUaW1lKCkgPT09IG5vdy5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkID0gKG1pbkRhdGUgJiYgZGF0ZSA8IG1pbkRhdGUpIHx8IChtYXhEYXRlICYmIGRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgZGF0ZS5nZXRUaW1lKCkgPT09IG1pbj8uZ2V0VGltZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJiBtYXggJiYgZGF0ZUludGVyc2VjdChkYXRlLCB7IG1pbiwgbWF4IH0pKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJlU2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICFzZWxlY3RlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICFkaXNhYmxlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgIChkYXRlSW50ZXJzZWN0KGRhdGUsIGhvdmVyZWQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAobWluICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFtYXggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlSW50ZXJzZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluIDw9IGhvdmVyZWQubWluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgbWluLCBtYXg6IGhvdmVyZWQubWluIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogeyBtaW46IGhvdmVyZWQubWF4LCBtYXg6IG1pbiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICApKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrZWQgPSBibG9ja2VkUmFuZ2VzLnNvbWUoKHJhbmdlKSA9PiBkYXRlSW50ZXJzZWN0KGRhdGUsIHJhbmdlKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7aW5kZXh9LSR7ZGF5SW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Z2V0RGF5Q3NzU3R5bGVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZVNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0RGF0ZVByb3BzKHsgZGF0ZU9iajogZGF0ZU9iamVjdCB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbikgc2V0KG1pbiwgZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzZXQoZGF0ZSwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdmVyPXsoKSA9PiBzZXRIb3ZlcmVkKHsgbWluOiBkYXRlLCBtYXg6IGRhdGUgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+IHNldEhvdmVyZWQodW5kZWZpbmVkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGF0ZS5nZXREYXRlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSl9XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgbWFyZ2luVG9wOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3Jlc29sdmVkUXVpY2tPcHRpb25zfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0= */",
|
|
951
951
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__$d
|
|
952
952
|
};
|
|
953
953
|
var _ref2$4 = process.env.NODE_ENV === "production" ? {
|
|
@@ -956,7 +956,7 @@ var _ref2$4 = process.env.NODE_ENV === "production" ? {
|
|
|
956
956
|
} : {
|
|
957
957
|
name: "7ssa71-DatePicker",
|
|
958
958
|
styles: "display:grid;label:DatePicker;",
|
|
959
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1jcUMiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgeSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmRveSA9IG5ldyBEYXRlKHksIDAsIDEpO1xuICBjb25zdCBkb3kgPSBNYXRoLmZsb29yKFxuICAgIChkYXRlLmdldFRpbWUoKSAtIGZkb3kuZ2V0VGltZSgpICsgKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGZkb3kuZ2V0VGltZXpvbmVPZmZzZXQoKSkpIC9cbiAgICAgIE1TX1BFUl9EQVksXG4gICk7XG4gIGNvbnN0IGRvdyA9IGZkb3kuZ2V0RGF5KCk7XG4gIGNvbnN0IHcgPSBNYXRoLmZsb29yKCgxMCArIGRveSAtIGRvdykgLyA3KTtcblxuICBpZiAodyA9PT0gMCkge1xuICAgIHJldHVybiBnZXRDYWxlbmRhcldlZWsobmV3IERhdGUoeSAtIDEsIDExLCAzMSkpO1xuICB9XG5cbiAgcmV0dXJuIHc7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChhOiBEYXRlIHwgbnVsbCB8IERhdGVSYW5nZSwgYjogRGF0ZSB8IG51bGwgfCBEYXRlUmFuZ2UpIHtcbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYSA9IHsgbWluOiBhLCBtYXg6IGEgfTtcbiAgfVxuICBpZiAoYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBiID0geyBtaW46IGIsIG1heDogYiB9O1xuICB9XG5cbiAgaWYgKCFhPy5taW4gfHwgIWEubWF4IHx8ICFiPy5taW4gfHwgIWIubWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuICEoZW5kT2ZEYXkoYS5tYXgpIDwgc3RhcnRPZkRheShiLm1pbikgfHwgc3RhcnRPZkRheShhLm1pbikgPiBlbmRPZkRheShiLm1heCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNsYW1wKGRhdGU6IERhdGUsIG1pbj86IERhdGUsIG1heD86IERhdGUpIHtcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxuXG4gIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWVGb3JDb21wYXJpc29uKHZhbHVlPzogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmdldFRpbWUoKTtcbiAgfVxuICByZXR1cm4gYCR7dmFsdWUubWluPy5nZXRUaW1lKCl9LSR7dmFsdWUubWF4Py5nZXRUaW1lKCl9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXIocHJvcHM6IERhdGVQaWNrZXJQcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChEYXRlUGlja2VyQ29udGV4dCk7XG5cbiAgY29uc3Qge1xuICAgIHZhbHVlLFxuICAgIHJhbmdlU2VsZWN0LFxuICAgIGxvY2FsZSxcbiAgICBmaXJzdERheU9mV2VlayA9IDEsXG4gICAgZGVmYXVsdERhdGVJblZpZXcsXG4gICAgcXVpY2tPcHRpb25zID0gWyd0b2RheScsICd0aGlzV2VlayddLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICBzaG93Q2FsZW5kYXJXZWVrLFxuICAgIGJsb2NrZWRSYW5nZXMgPSBbXSxcbiAgfSA9IGRlZmF1bHRzPERhdGVQaWNrZXJQcm9wcz4ocHJvcHMsIGNvbnRleHQpO1xuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHZhbHVlID0gZGF0ZUNsYW1wKHZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHtcbiAgICAgICAgbWluOiBkYXRlQ2xhbXAodmFsdWUubWluLCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgICAgbWF4OiBkYXRlQ2xhbXAodmFsdWUubWF4LCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgY29uc3QgQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5CdXR0b24pO1xuICBjb25zdCBJY29uQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5JY29uQnV0dG9uKTtcbiAgY29uc3QgQ2hldnJvblJpZ2h0ID0gdXNlVGhlbWUoKHQpID0+IHQuaWNvbnMuQ2hldnJvblJpZ2h0KTtcbiAgY29uc3QgY3NzVmFyaWFibGVzID0gdXNlQ3NzVmFyaWFibGVzKCk7XG4gIGZ1bmN0aW9uIGdldERheUNzc1N0eWxlcyh7XG4gICAgZGlzYWJsZWQsXG4gICAgcHJldk1vbnRoLFxuICAgIG5leHRNb250aCxcbiAgICB0b2RheSxcbiAgICBibG9ja2VkLFxuICAgIHNlbGVjdGVkLFxuICAgIHByZVNlbGVjdGVkLFxuICB9OiB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZNb250aD86IGJvb2xlYW47XG4gICAgbmV4dE1vbnRoPzogYm9vbGVhbjtcbiAgICB0b2RheT86IGJvb2xlYW47XG4gICAgYmxvY2tlZD86IGJvb2xlYW47XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIHByZVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgfSk6IEludGVycG9sYXRpb248VGhlbWU+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGN1cnNvcjogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgIH0sXG4gICAgICAocHJldk1vbnRoIHx8IG5leHRNb250aCkgJiYge1xuICAgICAgICBjb2xvcjogZ3JheSxcbiAgICAgIH0sXG4gICAgICB0b2RheSAmJiB7XG4gICAgICAgIG91dGxpbmU6ICcxcHggc29saWQgdmFyKC0tc2Vjb25kYXJ5TWFpbiknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1ibG9ja2VkQ29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeU1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJlxuICAgICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgJzo6YmVmb3JlJzoge1xuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgICAgIGNsaXBQYXRoOiAncG9seWdvbigwIDAsIDAgNTAlLCA1MCUgMCknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBwcmVTZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TGlnaHQpJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBjb25zdCBtb3VudFRpbWUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKCksIFtdKTtcbiAgY29uc3QgW2RpcnR5LCBzZXREaXJ0eV0gPSB1c2VTdGF0ZTxQYXJ0aWFsPERhdGVSYW5nZT4+KCk7XG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlPERhdGU+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFtnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWUpLCBnZXRWYWx1ZUZvckNvbXBhcmlzb24oZGVmYXVsdERhdGVJblZpZXcpLCBtb3VudFRpbWVdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICB9XG4gIH0sIFtyYW5nZVNlbGVjdF0pO1xuXG4gIGZ1bmN0aW9uIHNldChtaW4/OiBEYXRlLCBtYXg/OiBEYXRlLCBlZGl0PzogJ21pbicgfCAnbWF4Jykge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIG9uQ2hhbmdlKG1pbiA/PyBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobWluICYmIG1heCAmJiBtaW4gPiBtYXgpIHtcbiAgICAgIGlmIChlZGl0ID09PSAnbWluJykge1xuICAgICAgICBtYXggPSBtaW47XG4gICAgICB9IGVsc2UgaWYgKGVkaXQgPT09ICdtYXgnKSB7XG4gICAgICAgIG1pbiA9IG1heDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFttaW4sIG1heF0gPSBbbWF4LCBtaW5dO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghbWluID09PSAhbWF4KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgICAgb25DaGFuZ2UobWluICYmIG1heCA/IHsgbWluLCBtYXg6IGVuZE9mRGF5KG1heCkgfSA6IG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXREaXJ0eSh7IG1pbiwgbWF4IH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZvcm1hdE1vbnRoID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBtb250aDogJ2xvbmcnIH0pO1xuICAgIHJldHVybiAobW9udGg6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKDIwMjEsIG1vbnRoKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICBjb25zdCBmb3JtYXRZZWFyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gICAgcmV0dXJuICh5ZWFyOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSh5ZWFyLCAwLCAxKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY3NzPXtjc3NWYXJpYWJsZXN9PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2Jhc2VsaW5lJyxcbiAgICAgICAgICBnYXA6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICB2YWx1ZT17bWluID8/IG51bGx9XG4gICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQoZGF0ZSA/PyB1bmRlZmluZWQsIG1heCwgJ21pbicpfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAvPlxuXG4gICAgICAgIHtyYW5nZVNlbGVjdCAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHsnIC0gJ31cbiAgICAgICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICAgICAgdmFsdWU9e21heCA/PyBudWxsfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChtaW4sIGRhdGUgPz8gdW5kZWZpbmVkLCAnbWF4Jyl9XG4gICAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7Y2FsZW5kYXJzLm1hcCgoeyBtb250aCwgeWVhciwgd2Vla3MgfSkgPT4gKFxuICAgICAgICA8ZGl2IGtleT17YCR7bW9udGh9JHt5ZWFyfWB9IGNzcz17eyBkaXNwbGF5OiAnZ3JpZCcgfX0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIG1hcmdpbjogJ2NhbGModmFyKC0tc3BhY2luZykgKiA0KSAwJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRCYWNrUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNzcz17eyB0cmFuc2Zvcm06ICdyb3RhdGUzZCgwLCAwLCAxLCAxODBkZWcpJyB9fSAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2IGNzcz17eyBkaXNwbGF5OiAnZmxleCcgfX0+XG4gICAgICAgICAgICAgIHtmb3JtYXRNb250aChtb250aCl9IHtmb3JtYXRZZWFyKHllYXIpfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0Rm9yd2FyZFByb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KDgsIG1heC1jb250ZW50KScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGV4dCBpZD1cImNhbGVuZGFyV2Vla1wiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3dlZWtEYXlzLm1hcCgoX3YsIHdlZWtEYXkpID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGtleT17d2Vla0RheX1cbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Zm9ybWF0V2Vla2RheSh3ZWVrRGF5KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cblxuICAgICAgICAgICAge3dlZWtzLm1hcCgod2VlaywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla1N0YXJ0ID0gd2Vla1swXSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRW5kID0gd2Vla1s2XSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICFyYW5nZVNlbGVjdCB8fFxuICAgICAgICAgICAgICAgIChtaW5EYXRlICYmIHdlZWtFbmQuZGF0ZSA8IG1pbkRhdGUpIHx8XG4gICAgICAgICAgICAgICAgKG1heERhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGcmFnbWVudCBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogd2Vla0Rpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2Vla0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluID0gbWluRGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA8IG1pbkRhdGUgPyBtaW5EYXRlIDogd2Vla1N0YXJ0LmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXggPSBtYXhEYXRlICYmIHdlZWtFbmQuZGF0ZSA+IG1heERhdGUgPyBtYXhEYXRlIDogd2Vla0VuZC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG1pbiwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2dldENhbGVuZGFyV2Vlaygod2Vla1swXSBhcyBEYXRlT2JqKS5kYXRlKX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICB7d2Vlay5tYXAoKGRhdGVPYmplY3QsIGRheUluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0ZU9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17ZGF5SW5kZXh9IC8+O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwcmV2TW9udGgsIG5leHRNb250aCwgZGF0ZSB9ID0gZGF0ZU9iamVjdDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9kYXkgPSBzdGFydE9mRGF5KGRhdGUpLmdldFRpbWUoKSA9PT0gbm93LmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzYWJsZWQgPSAobWluRGF0ZSAmJiBkYXRlIDwgbWluRGF0ZSkgfHwgKG1heERhdGUgJiYgZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICBkYXRlLmdldFRpbWUoKSA9PT0gbWluPy5nZXRUaW1lKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAobWluICYmIG1heCAmJiBkYXRlSW50ZXJzZWN0KGRhdGUsIHsgbWluLCBtYXggfSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVTZWxlY3RlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgIWRpc2FibGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgKGRhdGUuZ2V0VGltZSgpID09PSBob3ZlcmVkPy5nZXRUaW1lKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIW1heCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBob3ZlcmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVJbnRlcnNlY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4gPD0gaG92ZXJlZCA/IHsgbWluLCBtYXg6IGhvdmVyZWQgfSA6IHsgbWluOiBob3ZlcmVkLCBtYXg6IG1pbiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICApKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrZWQgPSBibG9ja2VkUmFuZ2VzLnNvbWUoKHJhbmdlKSA9PiBkYXRlSW50ZXJzZWN0KGRhdGUsIHJhbmdlKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7aW5kZXh9LSR7ZGF5SW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Z2V0RGF5Q3NzU3R5bGVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZVNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0RGF0ZVByb3BzKHsgZGF0ZU9iajogZGF0ZU9iamVjdCB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbikgc2V0KG1pbiwgZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzZXQoZGF0ZSwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdmVyPXsoKSA9PiBzZXRIb3ZlcmVkKGRhdGUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3V0PXsoKSA9PiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2RhdGUuZ2V0RGF0ZSgpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICkpfVxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIG1hcmdpblRvcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXNvbHZlZFF1aWNrT3B0aW9uc31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19 */",
|
|
959
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtkcUMiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgZW5kT2ZXZWVrID0gbmV3IERhdGUoXG4gICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgIGRhdGUuZ2V0TW9udGgoKSxcbiAgICBkYXRlLmdldERhdGUoKSArICg3IC0gKGRhdGUuZ2V0RGF5KCkgfHwgNykpLFxuICApO1xuXG4gIGNvbnN0IHllYXIgPSBlbmRPZldlZWsuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmlyc3REYXlPZlllYXIgPSBuZXcgRGF0ZSh5ZWFyLCAwLCAxKTtcbiAgY29uc3QgZGF5T2ZZZWFyID1cbiAgICBNYXRoLmZsb29yKFxuICAgICAgKGVuZE9mV2Vlay5nZXRUaW1lKCkgLVxuICAgICAgICBmaXJzdERheU9mWWVhci5nZXRUaW1lKCkgK1xuICAgICAgICAoZW5kT2ZXZWVrLmdldFRpbWV6b25lT2Zmc2V0KCkgLSBmaXJzdERheU9mWWVhci5nZXRUaW1lem9uZU9mZnNldCgpKSkgL1xuICAgICAgICBNU19QRVJfREFZLFxuICAgICkgKyAxO1xuICBjb25zdCB3ZWVrT2ZZZWFyID0gTWF0aC5mbG9vcigoMyArIGRheU9mWWVhcikgLyA3KTtcblxuICBpZiAod2Vla09mWWVhciA9PT0gMCkge1xuICAgIHJldHVybiAoXG4gICAgICBnZXRDYWxlbmRhcldlZWsoXG4gICAgICAgIG5ldyBEYXRlKGVuZE9mV2Vlay5nZXRGdWxsWWVhcigpLCBlbmRPZldlZWsuZ2V0TW9udGgoKSwgZW5kT2ZXZWVrLmdldERhdGUoKSAtIDcpLFxuICAgICAgKSArIDFcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHdlZWtPZlllYXI7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChcbiAgYTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGI6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsIHwgdW5kZWZpbmVkLFxuKSB7XG4gIGlmIChhIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGEgPSB7IG1pbjogYSwgbWF4OiBhIH07XG4gIH1cbiAgaWYgKGIgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYiA9IHsgbWluOiBiLCBtYXg6IGIgfTtcbiAgfVxuXG4gIGlmICghYT8ubWluIHx8ICFhLm1heCB8fCAhYj8ubWluIHx8ICFiLm1heCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAhKGVuZE9mRGF5KGEubWF4KSA8IHN0YXJ0T2ZEYXkoYi5taW4pIHx8IHN0YXJ0T2ZEYXkoYS5taW4pID4gZW5kT2ZEYXkoYi5tYXgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVDbGFtcChkYXRlOiBEYXRlLCBtaW4/OiBEYXRlLCBtYXg/OiBEYXRlKSB7XG4gIGlmIChtaW4gJiYgZGF0ZSA8IG1pbikge1xuICAgIHJldHVybiBtaW47XG4gIH1cblxuICBpZiAobWF4ICYmIGRhdGUgPiBtYXgpIHtcbiAgICByZXR1cm4gbWF4O1xuICB9XG5cbiAgcmV0dXJuIGRhdGU7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlRm9yQ29tcGFyaXNvbih2YWx1ZT86IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiB2YWx1ZS5nZXRUaW1lKCk7XG4gIH1cbiAgcmV0dXJuIGAke3ZhbHVlLm1pbj8uZ2V0VGltZSgpfS0ke3ZhbHVlLm1heD8uZ2V0VGltZSgpfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlUGlja2VyKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRGF0ZVBpY2tlckNvbnRleHQpO1xuXG4gIGNvbnN0IHtcbiAgICB2YWx1ZSxcbiAgICByYW5nZVNlbGVjdCxcbiAgICBsb2NhbGUsXG4gICAgZmlyc3REYXlPZldlZWsgPSAxLFxuICAgIGRlZmF1bHREYXRlSW5WaWV3LFxuICAgIHF1aWNrT3B0aW9ucyA9IFsndG9kYXknLCAndGhpc1dlZWsnXSxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gICAgc2hvd0NhbGVuZGFyV2VlayxcbiAgICBibG9ja2VkUmFuZ2VzID0gW10sXG4gIH0gPSBkZWZhdWx0czxEYXRlUGlja2VyUHJvcHM+KHByb3BzLCBjb250ZXh0KTtcblxuICBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICB2YWx1ZSA9IGRhdGVDbGFtcCh2YWx1ZSwgbWluRGF0ZSwgbWF4RGF0ZSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgdmFsdWUgPSB7XG4gICAgICAgIG1pbjogZGF0ZUNsYW1wKHZhbHVlLm1pbiwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICAgIG1heDogZGF0ZUNsYW1wKHZhbHVlLm1heCwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHByb3BzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0IEJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuQnV0dG9uKTtcbiAgY29uc3QgSWNvbkJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuSWNvbkJ1dHRvbik7XG4gIGNvbnN0IENoZXZyb25SaWdodCA9IHVzZVRoZW1lKCh0KSA9PiB0Lmljb25zLkNoZXZyb25SaWdodCk7XG4gIGNvbnN0IGNzc1ZhcmlhYmxlcyA9IHVzZUNzc1ZhcmlhYmxlcygpO1xuICBmdW5jdGlvbiBnZXREYXlDc3NTdHlsZXMoe1xuICAgIGRpc2FibGVkLFxuICAgIHByZXZNb250aCxcbiAgICBuZXh0TW9udGgsXG4gICAgdG9kYXksXG4gICAgYmxvY2tlZCxcbiAgICBzZWxlY3RlZCxcbiAgICBwcmVTZWxlY3RlZCxcbiAgfToge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBwcmV2TW9udGg/OiBib29sZWFuO1xuICAgIG5leHRNb250aD86IGJvb2xlYW47XG4gICAgdG9kYXk/OiBib29sZWFuO1xuICAgIGJsb2NrZWQ/OiBib29sZWFuO1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgICBwcmVTZWxlY3RlZD86IGJvb2xlYW47XG4gIH0pOiBJbnRlcnBvbGF0aW9uPFRoZW1lPiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICBjdXJzb3I6IGRpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICB9LFxuICAgICAgKHByZXZNb250aCB8fCBuZXh0TW9udGgpICYmIHtcbiAgICAgICAgY29sb3I6IGdyYXksXG4gICAgICB9LFxuICAgICAgdG9kYXkgJiYge1xuICAgICAgICBvdXRsaW5lOiAnMXB4IHNvbGlkIHZhcigtLXNlY29uZGFyeU1haW4pJyxcbiAgICAgIH0sXG4gICAgICBibG9ja2VkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tYmxvY2tlZENvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIHNlbGVjdGVkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLXByaW1hcnlNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiZcbiAgICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICc6OmJlZm9yZSc6IHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICdcIlwiJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICBib3R0b206IDAsXG4gICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgICAgICBjbGlwUGF0aDogJ3BvbHlnb24oMCAwLCAwIDUwJSwgNTAlIDApJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgcHJlU2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeUxpZ2h0KScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgY29uc3QgbW91bnRUaW1lID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgpLCBbXSk7XG4gIGNvbnN0IFtkaXJ0eSwgc2V0RGlydHldID0gdXNlU3RhdGU8UGFydGlhbDxEYXRlUmFuZ2U+PigpO1xuICBjb25zdCBbaG92ZXJlZCwgc2V0SG92ZXJlZF0gPSB1c2VTdGF0ZTxEYXRlUmFuZ2U+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFtnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWUpLCBnZXRWYWx1ZUZvckNvbXBhcmlzb24oZGVmYXVsdERhdGVJblZpZXcpLCBtb3VudFRpbWVdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICB9XG4gIH0sIFtyYW5nZVNlbGVjdF0pO1xuXG4gIGZ1bmN0aW9uIHNldChtaW4/OiBEYXRlLCBtYXg/OiBEYXRlLCBlZGl0PzogJ21pbicgfCAnbWF4Jykge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIG9uQ2hhbmdlKG1pbiA/PyBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobWluICYmIG1heCAmJiBtaW4gPiBtYXgpIHtcbiAgICAgIGlmIChlZGl0ID09PSAnbWluJykge1xuICAgICAgICBtYXggPSBtaW47XG4gICAgICB9IGVsc2UgaWYgKGVkaXQgPT09ICdtYXgnKSB7XG4gICAgICAgIG1pbiA9IG1heDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFttaW4sIG1heF0gPSBbbWF4LCBtaW5dO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghbWluID09PSAhbWF4KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgICAgb25DaGFuZ2UobWluICYmIG1heCA/IHsgbWluLCBtYXg6IGVuZE9mRGF5KG1heCkgfSA6IG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXREaXJ0eSh7IG1pbiwgbWF4IH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZvcm1hdE1vbnRoID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBtb250aDogJ2xvbmcnIH0pO1xuICAgIHJldHVybiAobW9udGg6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKDIwMjEsIG1vbnRoKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICBjb25zdCBmb3JtYXRZZWFyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gICAgcmV0dXJuICh5ZWFyOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSh5ZWFyLCAwLCAxKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY3NzPXtjc3NWYXJpYWJsZXN9PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2Jhc2VsaW5lJyxcbiAgICAgICAgICBnYXA6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICB2YWx1ZT17bWluID8/IG51bGx9XG4gICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQoZGF0ZSA/PyB1bmRlZmluZWQsIG1heCwgJ21pbicpfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAvPlxuXG4gICAgICAgIHtyYW5nZVNlbGVjdCAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHsnIC0gJ31cbiAgICAgICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICAgICAgdmFsdWU9e21heCA/PyBudWxsfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChtaW4sIGRhdGUgPz8gdW5kZWZpbmVkLCAnbWF4Jyl9XG4gICAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7Y2FsZW5kYXJzLm1hcCgoeyBtb250aCwgeWVhciwgd2Vla3MgfSkgPT4gKFxuICAgICAgICA8ZGl2IGtleT17YCR7bW9udGh9JHt5ZWFyfWB9IGNzcz17eyBkaXNwbGF5OiAnZ3JpZCcgfX0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIG1hcmdpbjogJ2NhbGModmFyKC0tc3BhY2luZykgKiA0KSAwJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRCYWNrUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNzcz17eyB0cmFuc2Zvcm06ICdyb3RhdGUzZCgwLCAwLCAxLCAxODBkZWcpJyB9fSAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2IGNzcz17eyBkaXNwbGF5OiAnZmxleCcgfX0+XG4gICAgICAgICAgICAgIHtmb3JtYXRNb250aChtb250aCl9IHtmb3JtYXRZZWFyKHllYXIpfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0Rm9yd2FyZFByb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KDgsIG1heC1jb250ZW50KScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGV4dCBpZD1cImNhbGVuZGFyV2Vla1wiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3dlZWtEYXlzLm1hcCgoX3YsIHdlZWtEYXkpID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGtleT17d2Vla0RheX1cbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Zm9ybWF0V2Vla2RheSh3ZWVrRGF5KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cblxuICAgICAgICAgICAge3dlZWtzLm1hcCgod2VlaywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla1N0YXJ0ID0gd2Vla1swXSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRW5kID0gd2Vla1s2XSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICFyYW5nZVNlbGVjdCB8fFxuICAgICAgICAgICAgICAgIChtaW5EYXRlICYmIHdlZWtFbmQuZGF0ZSA8IG1pbkRhdGUpIHx8XG4gICAgICAgICAgICAgICAgKG1heERhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGcmFnbWVudCBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogd2Vla0Rpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2Vla0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluID0gbWluRGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA8IG1pbkRhdGUgPyBtaW5EYXRlIDogd2Vla1N0YXJ0LmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXggPSBtYXhEYXRlICYmIHdlZWtFbmQuZGF0ZSA+IG1heERhdGUgPyBtYXhEYXRlIDogd2Vla0VuZC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG1pbiwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAhd2Vla0Rpc2FibGVkICYmIHNldEhvdmVyZWQoeyBtaW46IHdlZWtTdGFydC5kYXRlLCBtYXg6IHdlZWtFbmQuZGF0ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+ICF3ZWVrRGlzYWJsZWQgJiYgc2V0SG92ZXJlZCh1bmRlZmluZWQpfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2dldENhbGVuZGFyV2Vlayh3ZWVrRW5kLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgIHt3ZWVrLm1hcCgoZGF0ZU9iamVjdCwgZGF5SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtkYXlJbmRleH0gLz47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZNb250aCwgbmV4dE1vbnRoLCBkYXRlIH0gPSBkYXRlT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZEYXkoZGF0ZSkuZ2V0VGltZSgpID09PSBub3cuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB8fCAobWF4RGF0ZSAmJiBkYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGUuZ2V0VGltZSgpID09PSBtaW4/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiYgbWF4ICYmIGRhdGVJbnRlcnNlY3QoZGF0ZSwgeyBtaW4sIG1heCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZUludGVyc2VjdChkYXRlLCBob3ZlcmVkKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUludGVyc2VjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA8PSBob3ZlcmVkLm1pblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IG1pbiwgbWF4OiBob3ZlcmVkLm1pbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHsgbWluOiBob3ZlcmVkLm1heCwgbWF4OiBtaW4gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja2VkID0gYmxvY2tlZFJhbmdlcy5zb21lKChyYW5nZSkgPT4gZGF0ZUludGVyc2VjdChkYXRlLCByYW5nZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake2luZGV4fS0ke2RheUluZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2dldERheUNzc1N0eWxlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldERhdGVQcm9wcyh7IGRhdGVPYmo6IGRhdGVPYmplY3QgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaW4pIHNldChtaW4sIGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc2V0KGRhdGUsIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3Zlcj17KCkgPT4gc2V0SG92ZXJlZCh7IG1pbjogZGF0ZSwgbWF4OiBkYXRlIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3V0PXsoKSA9PiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2RhdGUuZ2V0RGF0ZSgpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICkpfVxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIG1hcmdpblRvcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXNvbHZlZFF1aWNrT3B0aW9uc31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19 */",
|
|
960
960
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__$d
|
|
961
961
|
};
|
|
962
962
|
var _ref3$2 = process.env.NODE_ENV === "production" ? {
|
|
@@ -965,7 +965,7 @@ var _ref3$2 = process.env.NODE_ENV === "production" ? {
|
|
|
965
965
|
} : {
|
|
966
966
|
name: "1e48re2-DatePicker",
|
|
967
967
|
styles: "margin:calc(var(--spacing) * 4) 0;display:grid;grid-auto-flow:column;justify-content:space-between;align-items:center;label:DatePicker;",
|
|
968
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFjWSIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9zY2h1bW1hci10YWJsZS9zY2h1bW1hci10YWJsZS9zcmMvY29tcG9uZW50cy9kYXRlUGlja2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVPYmosIHVzZURheXplZCB9IGZyb20gJ2RheXplZCc7XG5pbXBvcnQge1xuICBGcmFnbWVudCxcbiAgUmVhY3ROb2RlLFxuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJy4uL2hvb2tzL3VzZVRoZW1lJztcbmltcG9ydCB7IGRlZmF1bHRzIH0gZnJvbSAnLi4vbWlzYy9kZWZhdWx0cyc7XG5pbXBvcnQgeyBncmF5IH0gZnJvbSAnLi4vdGhlbWUvZGVmYXVsdFRoZW1lL2RlZmF1bHRDbGFzc2VzJztcbmltcG9ydCB7IHVzZUNzc1ZhcmlhYmxlcyB9IGZyb20gJy4uL3RoZW1lL3VzZUNzc1ZhcmlhYmxlcyc7XG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tICcuL2RhdGVJbnB1dCc7XG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi90ZXh0JztcbmltcG9ydCB7IEludGVycG9sYXRpb24sIFRoZW1lIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG5leHBvcnQgdHlwZSBEYXRlUmFuZ2UgPSB7IG1pbjogRGF0ZTsgbWF4OiBEYXRlIH07XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJRdWlja09wdGlvbiA9XG4gIHwgJ3RvZGF5J1xuICB8ICd0aGlzV2VlaydcbiAgfCAndGhpc01vbnRoJ1xuICB8ICd0aGlzWWVhcidcbiAgfCAnbGFzdFNldmVuRGF5cydcbiAgfCAnbGFzdFRoaXJ0eURheXMnXG4gIHwgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgoKSA9PiBEYXRlIHwgRGF0ZVJhbmdlKSB9XG4gIHwgKChvbkNoYW5nZTogKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkgPT4gdm9pZCkgPT4gUmVhY3ROb2RlKTtcblxuZXhwb3J0IHR5cGUgRGF0ZVBpY2tlclByb3BzID0ge1xuICAvKiogQ3VycmVudGx5IHNlbGVjdGVkIGRheSBvciByYW5nZSBvZiBkYXlzLiAqL1xuICB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGw7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgZGF5IChyYW5nZSkgY2hhbmdlcy4gKi9cbiAgb25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQ7XG4gIC8qKiBDdXJyZW50bHkgdmlzaWJsZSBkYXRlLiAqL1xuICBkYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIENhbGxiYWNrIGZvciB3aGVuIHRoZSBjdXJyZW50bHkgdmlzaWJsZSBkYXRlIGNoYW5nZXMuICovXG4gIG9uRGF0ZUluVmlld0NoYW5nZT86ICh2YWx1ZTogRGF0ZSkgPT4gdm9pZDtcbiAgLyoqIElmIGVuYWJsZWQsIHJhbmdlcyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gIHJhbmdlU2VsZWN0PzogYm9vbGVhbjtcbiAgLyoqIFdoaWNoIGxvY2FsZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBjYWxlbmRhci4gKi9cbiAgbG9jYWxlPzogc3RyaW5nO1xuICAvKiogV2hpY2ggZGF5IG9mIHRoZSB3ZWVrIHNob3VsZCBiZSBpbiB0aGUgZmlyc3QgY29sdW1uLiAoMD1TdW5kYXksIDE9TW9uZGF5LCAuLi4pXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGZpcnN0RGF5T2ZXZWVrPzogMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNjtcbiAgLyoqIFdoaWNoIG1vbnRoIHRvIHNob3cgaW5pdGlhbGx5ICovXG4gIGRlZmF1bHREYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIFNob3cgYnV0dG9ucyB0byBxdWlja2x5IHNlbGVjdCBzdWdnZXN0ZWQgZGF0ZXMgb3IgZGF0ZSByYW5nZXMgKi9cbiAgcXVpY2tPcHRpb25zPzogRGF0ZVBpY2tlclF1aWNrT3B0aW9uW107XG4gIC8qKiBNaW5pbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICAvKiogRGF0ZSByYW5nZXMgdGhhdCBhcmUgdmlzdWFsbHkgbWFya2VkIGFzIGJsb2NrZWQgKi9cbiAgYmxvY2tlZFJhbmdlcz86IERhdGVSYW5nZVtdO1xuICBtaW5EYXRlPzogRGF0ZTtcbiAgLyoqIE1heGltdW0gc2VsZWN0YWJsZSBkYXRlICovXG4gIG1heERhdGU/OiBEYXRlO1xuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBjYWxlbmRhciB3ZWVrIGluIHRoZSBmaXJzdCBjb2x1bW4gKi9cbiAgc2hvd0NhbGVuZGFyV2Vlaz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBEYXRlUGlja2VyQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8UGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+Pj4oe30pO1xuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlclByb3ZpZGVyKHtcbiAgY2hpbGRyZW4sXG4gIC4uLnByb3BzXG59OiBQYXJ0aWFsPE9taXQ8RGF0ZVBpY2tlclByb3BzLCAndmFsdWUnIHwgJ29uQ2hhbmdlJz4+ICYgeyBjaGlsZHJlbj86IFJlYWN0Tm9kZSB9KSB7XG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbygoKSA9PiBwcm9wcywgW0pTT04uc3RyaW5naWZ5KHByb3BzKV0pO1xuXG4gIHJldHVybiA8RGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9EYXRlUGlja2VyQ29udGV4dC5Qcm92aWRlcj47XG59XG5cbmNvbnN0IHdlZWtEYXlzID0gWzAsIDEsIDIsIDMsIDQsIDUsIDZdIGFzIGNvbnN0O1xuXG4vKiogUm91bmRzIGEgZGF0ZSBkb3duIHRvIHRoZSBzdGFydCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IHN0YXJ0T2ZEYXkgPSAoZDogRGF0ZSkgPT4gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpKTtcblxuLyoqIFJvdW5kcyBhIGRhdGUgdXAgdG8gdGhlIGVuZCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IGVuZE9mRGF5ID0gKGQ6IERhdGUpID0+XG4gIG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSArIDEsIDAsIDAsIDAsIC0xKTtcblxuZXhwb3J0IGNvbnN0IGxhc3REYXlzID0gKGRheXM6IG51bWJlcik6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkYXlzICsgMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG5vdyksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdG9kYXkgPSAoKSA9PiBsYXN0RGF5cygxKTtcblxuZXhwb3J0IGNvbnN0IHRoaXNXZWVrID0gKGRlbHRhID0gMCwgZmlyc3REYXlPZldlZWsgPSAxKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcblxuICBsZXQgZGlmZiA9IG1pbi5nZXREYXkoKSAtIGZpcnN0RGF5T2ZXZWVrO1xuICBpZiAoZGlmZiA8IDApIHtcbiAgICBkaWZmICs9IDc7XG4gIH1cbiAgbWluLnNldERhdGUobWluLmdldERhdGUoKSAtIGRpZmYgKyBkZWx0YSAqIDcpO1xuXG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgKyA2KTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzTW9udGggPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aChtaW4uZ2V0TW9udGgoKSArIGRlbHRhKTtcbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldE1vbnRoKG1heC5nZXRNb250aCgpICsgMSk7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgLSAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzWWVhciA9IChkZWx0YSA9IDApOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZSgxKTtcbiAgbWluLnNldE1vbnRoKDApO1xuICBtaW4uc2V0RnVsbFllYXIobWluLmdldEZ1bGxZZWFyKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRGdWxsWWVhcihtYXguZ2V0RnVsbFllYXIoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5jb25zdCBNU19QRVJfREFZID0gMTAwMCAqIDYwICogNjAgKiAyNDtcbmV4cG9ydCBjb25zdCBnZXRDYWxlbmRhcldlZWsgPSAoZGF0ZTogRGF0ZSk6IG51bWJlciA9PiB7XG4gIC8vIElTTyA4NjAxOiBXZWVrIDEgaXMgdGhlIHdlZWsgd2l0aCB0aGUgZmlyc3QgVGh1cnNkYXkgb2YgdGhlIHllYXIuXG4gIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcblxuICBjb25zdCB5ID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBmZG95ID0gbmV3IERhdGUoeSwgMCwgMSk7XG4gIGNvbnN0IGRveSA9IE1hdGguZmxvb3IoXG4gICAgKGRhdGUuZ2V0VGltZSgpIC0gZmRveS5nZXRUaW1lKCkgKyAoZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIC0gZmRveS5nZXRUaW1lem9uZU9mZnNldCgpKSkgL1xuICAgICAgTVNfUEVSX0RBWSxcbiAgKTtcbiAgY29uc3QgZG93ID0gZmRveS5nZXREYXkoKTtcbiAgY29uc3QgdyA9IE1hdGguZmxvb3IoKDEwICsgZG95IC0gZG93KSAvIDcpO1xuXG4gIGlmICh3ID09PSAwKSB7XG4gICAgcmV0dXJuIGdldENhbGVuZGFyV2VlayhuZXcgRGF0ZSh5IC0gMSwgMTEsIDMxKSk7XG4gIH1cblxuICByZXR1cm4gdztcbn07XG5cbmV4cG9ydCBjb25zdCBjb21tb25RdWlja09wdGlvbnMgPSB7XG4gIHRvZGF5OiB7IGxhYmVsOiA8VGV4dCBpZD1cInRvZGF5XCIgLz4sIHZhbHVlOiB0b2RheSB9LFxuICB0aGlzV2VlazogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzV2Vla1wiIC8+LCB2YWx1ZTogKHByb3BzKSA9PiB0aGlzV2VlaygwLCBwcm9wcy5maXJzdERheU9mV2VlaykgfSxcbiAgdGhpc01vbnRoOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNNb250aFwiIC8+LCB2YWx1ZTogKCkgPT4gdGhpc01vbnRoKCkgfSxcbiAgdGhpc1llYXI6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1llYXJcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNZZWFyKCkgfSxcbiAgbGFzdFNldmVuRGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0U2V2ZW5EYXlzXCIgLz4sIHZhbHVlOiAoKSA9PiBsYXN0RGF5cyg3KSB9LFxuICBsYXN0VGhpcnR5RGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0VGhpcnR5RGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoMzApIH0sXG59IHNhdGlzZmllcyBSZWNvcmQ8XG4gIERhdGVQaWNrZXJRdWlja09wdGlvbiAmIHN0cmluZyxcbiAgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgocHJvcHM6IERhdGVQaWNrZXJQcm9wcykgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuPjtcblxuLyoqIFJldHVybnMgd2hldGhlciB0d28gZGF0ZXMgYW5kL29yIGRhdGUgcmFuZ2VzIGludGVyc2VjdC4gSW50ZXJzZWN0aW9uIGlzIGNvbnNpZGVyZWQgcGVyIGRheS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRlSW50ZXJzZWN0KGE6IERhdGUgfCBudWxsIHwgRGF0ZVJhbmdlLCBiOiBEYXRlIHwgbnVsbCB8IERhdGVSYW5nZSkge1xuICBpZiAoYSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBhID0geyBtaW46IGEsIG1heDogYSB9O1xuICB9XG4gIGlmIChiIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGIgPSB7IG1pbjogYiwgbWF4OiBiIH07XG4gIH1cblxuICBpZiAoIWE/Lm1pbiB8fCAhYS5tYXggfHwgIWI/Lm1pbiB8fCAhYi5tYXgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gIShlbmRPZkRheShhLm1heCkgPCBzdGFydE9mRGF5KGIubWluKSB8fCBzdGFydE9mRGF5KGEubWluKSA+IGVuZE9mRGF5KGIubWF4KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlQ2xhbXAoZGF0ZTogRGF0ZSwgbWluPzogRGF0ZSwgbWF4PzogRGF0ZSkge1xuICBpZiAobWluICYmIGRhdGUgPCBtaW4pIHtcbiAgICByZXR1cm4gbWluO1xuICB9XG5cbiAgaWYgKG1heCAmJiBkYXRlID4gbWF4KSB7XG4gICAgcmV0dXJuIG1heDtcbiAgfVxuXG4gIHJldHVybiBkYXRlO1xufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWU/OiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gdmFsdWUuZ2V0VGltZSgpO1xuICB9XG4gIHJldHVybiBgJHt2YWx1ZS5taW4/LmdldFRpbWUoKX0tJHt2YWx1ZS5tYXg/LmdldFRpbWUoKX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlcihwcm9wczogRGF0ZVBpY2tlclByb3BzKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERhdGVQaWNrZXJDb250ZXh0KTtcblxuICBjb25zdCB7XG4gICAgdmFsdWUsXG4gICAgcmFuZ2VTZWxlY3QsXG4gICAgbG9jYWxlLFxuICAgIGZpcnN0RGF5T2ZXZWVrID0gMSxcbiAgICBkZWZhdWx0RGF0ZUluVmlldyxcbiAgICBxdWlja09wdGlvbnMgPSBbJ3RvZGF5JywgJ3RoaXNXZWVrJ10sXG4gICAgbWluRGF0ZSxcbiAgICBtYXhEYXRlLFxuICAgIHNob3dDYWxlbmRhcldlZWssXG4gICAgYmxvY2tlZFJhbmdlcyA9IFtdLFxuICB9ID0gZGVmYXVsdHM8RGF0ZVBpY2tlclByb3BzPihwcm9wcywgY29udGV4dCk7XG5cbiAgZnVuY3Rpb24gb25DaGFuZ2UodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgdmFsdWUgPSBkYXRlQ2xhbXAodmFsdWUsIG1pbkRhdGUsIG1heERhdGUpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgIHZhbHVlID0ge1xuICAgICAgICBtaW46IGRhdGVDbGFtcCh2YWx1ZS5taW4sIG1pbkRhdGUsIG1heERhdGUpLFxuICAgICAgICBtYXg6IGRhdGVDbGFtcCh2YWx1ZS5tYXgsIG1pbkRhdGUsIG1heERhdGUpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBwcm9wcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICBjb25zdCBCdXR0b24gPSB1c2VUaGVtZSgodCkgPT4gdC5jb21wb25lbnRzLkJ1dHRvbik7XG4gIGNvbnN0IEljb25CdXR0b24gPSB1c2VUaGVtZSgodCkgPT4gdC5jb21wb25lbnRzLkljb25CdXR0b24pO1xuICBjb25zdCBDaGV2cm9uUmlnaHQgPSB1c2VUaGVtZSgodCkgPT4gdC5pY29ucy5DaGV2cm9uUmlnaHQpO1xuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB1c2VDc3NWYXJpYWJsZXMoKTtcbiAgZnVuY3Rpb24gZ2V0RGF5Q3NzU3R5bGVzKHtcbiAgICBkaXNhYmxlZCxcbiAgICBwcmV2TW9udGgsXG4gICAgbmV4dE1vbnRoLFxuICAgIHRvZGF5LFxuICAgIGJsb2NrZWQsXG4gICAgc2VsZWN0ZWQsXG4gICAgcHJlU2VsZWN0ZWQsXG4gIH06IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgcHJldk1vbnRoPzogYm9vbGVhbjtcbiAgICBuZXh0TW9udGg/OiBib29sZWFuO1xuICAgIHRvZGF5PzogYm9vbGVhbjtcbiAgICBibG9ja2VkPzogYm9vbGVhbjtcbiAgICBzZWxlY3RlZD86IGJvb2xlYW47XG4gICAgcHJlU2VsZWN0ZWQ/OiBib29sZWFuO1xuICB9KTogSW50ZXJwb2xhdGlvbjxUaGVtZT4ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgY3Vyc29yOiBkaXNhYmxlZCA/IHVuZGVmaW5lZCA6ICdwb2ludGVyJyxcbiAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgfSxcbiAgICAgIChwcmV2TW9udGggfHwgbmV4dE1vbnRoKSAmJiB7XG4gICAgICAgIGNvbG9yOiBncmF5LFxuICAgICAgfSxcbiAgICAgIHRvZGF5ICYmIHtcbiAgICAgICAgb3V0bGluZTogJzFweCBzb2xpZCB2YXIoLS1zZWNvbmRhcnlNYWluKScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ibG9ja2VkTWFpbiknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLWJsb2NrZWRDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TWFpbiknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLXByaW1hcnlDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgICBibG9ja2VkICYmXG4gICAgICAgIHNlbGVjdGVkICYmIHtcbiAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAnOjpiZWZvcmUnOiB7XG4gICAgICAgICAgICBjb250ZW50OiAnXCJcIicsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ibG9ja2VkTWFpbiknLFxuICAgICAgICAgICAgY2xpcFBhdGg6ICdwb2x5Z29uKDAgMCwgMCA1MCUsIDUwJSAwKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIHByZVNlbGVjdGVkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLXByaW1hcnlMaWdodCknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLXByaW1hcnlDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0IG1vdW50VGltZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoKSwgW10pO1xuICBjb25zdCBbZGlydHksIHNldERpcnR5XSA9IHVzZVN0YXRlPFBhcnRpYWw8RGF0ZVJhbmdlPj4oKTtcbiAgY29uc3QgW2hvdmVyZWQsIHNldEhvdmVyZWRdID0gdXNlU3RhdGU8RGF0ZT4oKTtcbiAgY29uc3QgW2RhdGVJblZpZXdMb2NhbCwgc2V0RGF0ZUluVmlld0xvY2FsXSA9IHVzZVN0YXRlPERhdGU+KGRlZmF1bHREYXRlSW5WaWV3ID8/IG1vdW50VGltZSk7XG4gIGNvbnN0IGRhdGVJblZpZXcgPSBwcm9wcy5kYXRlSW5WaWV3ID8/IGRhdGVJblZpZXdMb2NhbDtcblxuICBmdW5jdGlvbiBzZXREYXRlSW5WaWV3KGRhdGU6IERhdGUpIHtcbiAgICBzZXREYXRlSW5WaWV3TG9jYWwoZGF0ZSk7XG4gICAgcHJvcHMub25EYXRlSW5WaWV3Q2hhbmdlPy4oZGF0ZSk7XG4gIH1cblxuICBjb25zdCBtaW4gPSBkaXJ0eSA/IGRpcnR5Lm1pbiA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWU/Lm1pbjtcbiAgY29uc3QgbWF4ID0gZGlydHkgPyBkaXJ0eS5tYXggOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5tYXg7XG5cbiAgY29uc3QgcmVzb2x2ZWRRdWlja09wdGlvbnMgPSBbLi4ucXVpY2tPcHRpb25zLCB7IGxhYmVsOiA8VGV4dCBpZD1cInJlc2V0XCIgLz4sIHZhbHVlOiBudWxsIH1dLm1hcChcbiAgICAob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKG9wdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSB9ID0gdHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycgPyBjb21tb25RdWlja09wdGlvbnNbb3B0aW9uXSA6IG9wdGlvbjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKHByb3BzKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApO1xuICAgIH0sXG4gICk7XG5cbiAgY29uc3QgeyBjYWxlbmRhcnMsIGdldEJhY2tQcm9wcywgZ2V0Rm9yd2FyZFByb3BzLCBnZXREYXRlUHJvcHMgfSA9IHVzZURheXplZCh7XG4gICAgb25EYXRlU2VsZWN0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBmaXJzdERheU9mV2VlayxcbiAgICBzaG93T3V0c2lkZURheXM6IHRydWUsXG4gICAgZGF0ZTogZGF0ZUluVmlldyxcbiAgICBvbk9mZnNldENoYW5nZWQ6IChvZmZzZXQpID0+XG4gICAgICBzZXREYXRlSW5WaWV3KG5ldyBEYXRlKGRhdGVJblZpZXcuZ2V0RnVsbFllYXIoKSwgZGF0ZUluVmlldy5nZXRNb250aCgpICsgb2Zmc2V0KSksXG4gICAgb2Zmc2V0OiAwLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgfSk7XG4gIGNvbnN0IG5vdyA9IHVzZU1lbW8oKCkgPT4gc3RhcnRPZkRheShuZXcgRGF0ZSgpKSwgW10pO1xuXG4gIGNvbnN0IGZvcm1hdFdlZWtkYXkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHdlZWtkYXk6ICdzaG9ydCcgfSk7XG4gICAgcmV0dXJuICh3ZWVrRGF5OiBudW1iZXIpID0+XG4gICAgICBmb3JtYXQobmV3IERhdGUoRGF0ZS5VVEMoMjAyMSwgNywgKCh3ZWVrRGF5ICsgZmlyc3REYXlPZldlZWspICUgNykgKyAxKSkpO1xuICB9LCBbbG9jYWxlLCBmaXJzdERheU9mV2Vla10pO1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhcbiAgICAgICAgdmFsdWUgPT09IG51bGwgPyBkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUgOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlLm1heCxcbiAgICAgICksXG4gICAgW2dldFZhbHVlRm9yQ29tcGFyaXNvbih2YWx1ZSksIGdldFZhbHVlRm9yQ29tcGFyaXNvbihkZWZhdWx0RGF0ZUluVmlldyksIG1vdW50VGltZV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSwgW3JhbmdlU2VsZWN0XSk7XG5cbiAgZnVuY3Rpb24gc2V0KG1pbj86IERhdGUsIG1heD86IERhdGUsIGVkaXQ/OiAnbWluJyB8ICdtYXgnKSB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgb25DaGFuZ2UobWluID8/IG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChtaW4gJiYgbWF4ICYmIG1pbiA+IG1heCkge1xuICAgICAgaWYgKGVkaXQgPT09ICdtaW4nKSB7XG4gICAgICAgIG1heCA9IG1pbjtcbiAgICAgIH0gZWxzZSBpZiAoZWRpdCA9PT0gJ21heCcpIHtcbiAgICAgICAgbWluID0gbWF4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgW21pbiwgbWF4XSA9IFttYXgsIG1pbl07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFtaW4gPT09ICFtYXgpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICBvbkNoYW5nZShtaW4gJiYgbWF4ID8geyBtaW4sIG1heDogZW5kT2ZEYXkobWF4KSB9IDogbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldERpcnR5KHsgbWluLCBtYXggfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZm9ybWF0TW9udGggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XG4gICAgcmV0dXJuIChtb250aDogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoMjAyMSwgbW9udGgpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIGNvbnN0IGZvcm1hdFllYXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHllYXI6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gKHllYXI6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKHllYXIsIDAsIDEpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjc3M9e2Nzc1ZhcmlhYmxlc30+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiAnYmFzZWxpbmUnLFxuICAgICAgICAgIGdhcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgIHZhbHVlPXttaW4gPz8gbnVsbH1cbiAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChkYXRlID8/IHVuZGVmaW5lZCwgbWF4LCAnbWluJyl9XG4gICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgIC8+XG5cbiAgICAgICAge3JhbmdlU2VsZWN0ICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgeycgLSAnfVxuICAgICAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgICAgICB2YWx1ZT17bWF4ID8/IG51bGx9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KG1pbiwgZGF0ZSA/PyB1bmRlZmluZWQsICdtYXgnKX1cbiAgICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHtjYWxlbmRhcnMubWFwKCh7IG1vbnRoLCB5ZWFyLCB3ZWVrcyB9KSA9PiAoXG4gICAgICAgIDxkaXYga2V5PXtgJHttb250aH0ke3llYXJ9YH0gY3NzPXt7IGRpc3BsYXk6ICdncmlkJyB9fT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgbWFyZ2luOiAnY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpIDAnLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEJhY2tQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgY3NzPXt7IHRyYW5zZm9ybTogJ3JvdGF0ZTNkKDAsIDAsIDEsIDE4MGRlZyknIH19IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY3NzPXt7IGRpc3BsYXk6ICdmbGV4JyB9fT5cbiAgICAgICAgICAgICAge2Zvcm1hdE1vbnRoKG1vbnRoKX0ge2Zvcm1hdFllYXIoeWVhcil9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRGb3J3YXJkUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICdyZXBlYXQoOCwgbWF4LWNvbnRlbnQpJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUZXh0IGlkPVwiY2FsZW5kYXJXZWVrXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7d2Vla0RheXMubWFwKChfdiwgd2Vla0RheSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAga2V5PXt3ZWVrRGF5fVxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtmb3JtYXRXZWVrZGF5KHdlZWtEYXkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuXG4gICAgICAgICAgICB7d2Vla3MubWFwKCh3ZWVrLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrU3RhcnQgPSB3ZWVrWzBdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtFbmQgPSB3ZWVrWzZdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtEaXNhYmxlZCA9XG4gICAgICAgICAgICAgICAgIXJhbmdlU2VsZWN0IHx8XG4gICAgICAgICAgICAgICAgKG1pbkRhdGUgJiYgd2Vla0VuZC5kYXRlIDwgbWluRGF0ZSkgfHxcbiAgICAgICAgICAgICAgICAobWF4RGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiB3ZWVrRGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ZWVrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW4gPSBtaW5EYXRlICYmIHdlZWtTdGFydC5kYXRlIDwgbWluRGF0ZSA/IG1pbkRhdGUgOiB3ZWVrU3RhcnQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heCA9IG1heERhdGUgJiYgd2Vla0VuZC5kYXRlID4gbWF4RGF0ZSA/IG1heERhdGUgOiB3ZWVrRW5kLmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXQobWluLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7Z2V0Q2FsZW5kYXJXZWVrKCh3ZWVrWzBdIGFzIERhdGVPYmopLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgIHt3ZWVrLm1hcCgoZGF0ZU9iamVjdCwgZGF5SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtkYXlJbmRleH0gLz47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZNb250aCwgbmV4dE1vbnRoLCBkYXRlIH0gPSBkYXRlT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZEYXkoZGF0ZSkuZ2V0VGltZSgpID09PSBub3cuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB8fCAobWF4RGF0ZSAmJiBkYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGUuZ2V0VGltZSgpID09PSBtaW4/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiYgbWF4ICYmIGRhdGVJbnRlcnNlY3QoZGF0ZSwgeyBtaW4sIG1heCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZS5nZXRUaW1lKCkgPT09IGhvdmVyZWQ/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUludGVyc2VjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA8PSBob3ZlcmVkID8geyBtaW4sIG1heDogaG92ZXJlZCB9IDogeyBtaW46IGhvdmVyZWQsIG1heDogbWluIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tlZCA9IGJsb2NrZWRSYW5nZXMuc29tZSgocmFuZ2UpID0+IGRhdGVJbnRlcnNlY3QoZGF0ZSwgcmFuZ2UpKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtpbmRleH0tJHtkYXlJbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtnZXREYXlDc3NTdHlsZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldk1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvZGF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZXREYXRlUHJvcHMoeyBkYXRlT2JqOiBkYXRlT2JqZWN0IH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluKSBzZXQobWluLCBkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNldChkYXRlLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+IHNldEhvdmVyZWQoZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+IHNldEhvdmVyZWQodW5kZWZpbmVkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGF0ZS5nZXREYXRlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSl9XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgbWFyZ2luVG9wOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3Jlc29sdmVkUXVpY2tPcHRpb25zfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0= */",
|
|
968
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9kWSIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9zY2h1bW1hci10YWJsZS9zY2h1bW1hci10YWJsZS9zcmMvY29tcG9uZW50cy9kYXRlUGlja2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVPYmosIHVzZURheXplZCB9IGZyb20gJ2RheXplZCc7XG5pbXBvcnQge1xuICBGcmFnbWVudCxcbiAgUmVhY3ROb2RlLFxuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJy4uL2hvb2tzL3VzZVRoZW1lJztcbmltcG9ydCB7IGRlZmF1bHRzIH0gZnJvbSAnLi4vbWlzYy9kZWZhdWx0cyc7XG5pbXBvcnQgeyBncmF5IH0gZnJvbSAnLi4vdGhlbWUvZGVmYXVsdFRoZW1lL2RlZmF1bHRDbGFzc2VzJztcbmltcG9ydCB7IHVzZUNzc1ZhcmlhYmxlcyB9IGZyb20gJy4uL3RoZW1lL3VzZUNzc1ZhcmlhYmxlcyc7XG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tICcuL2RhdGVJbnB1dCc7XG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi90ZXh0JztcbmltcG9ydCB7IEludGVycG9sYXRpb24sIFRoZW1lIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG5leHBvcnQgdHlwZSBEYXRlUmFuZ2UgPSB7IG1pbjogRGF0ZTsgbWF4OiBEYXRlIH07XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJRdWlja09wdGlvbiA9XG4gIHwgJ3RvZGF5J1xuICB8ICd0aGlzV2VlaydcbiAgfCAndGhpc01vbnRoJ1xuICB8ICd0aGlzWWVhcidcbiAgfCAnbGFzdFNldmVuRGF5cydcbiAgfCAnbGFzdFRoaXJ0eURheXMnXG4gIHwgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgoKSA9PiBEYXRlIHwgRGF0ZVJhbmdlKSB9XG4gIHwgKChvbkNoYW5nZTogKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkgPT4gdm9pZCkgPT4gUmVhY3ROb2RlKTtcblxuZXhwb3J0IHR5cGUgRGF0ZVBpY2tlclByb3BzID0ge1xuICAvKiogQ3VycmVudGx5IHNlbGVjdGVkIGRheSBvciByYW5nZSBvZiBkYXlzLiAqL1xuICB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGw7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgZGF5IChyYW5nZSkgY2hhbmdlcy4gKi9cbiAgb25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQ7XG4gIC8qKiBDdXJyZW50bHkgdmlzaWJsZSBkYXRlLiAqL1xuICBkYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIENhbGxiYWNrIGZvciB3aGVuIHRoZSBjdXJyZW50bHkgdmlzaWJsZSBkYXRlIGNoYW5nZXMuICovXG4gIG9uRGF0ZUluVmlld0NoYW5nZT86ICh2YWx1ZTogRGF0ZSkgPT4gdm9pZDtcbiAgLyoqIElmIGVuYWJsZWQsIHJhbmdlcyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gIHJhbmdlU2VsZWN0PzogYm9vbGVhbjtcbiAgLyoqIFdoaWNoIGxvY2FsZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBjYWxlbmRhci4gKi9cbiAgbG9jYWxlPzogc3RyaW5nO1xuICAvKiogV2hpY2ggZGF5IG9mIHRoZSB3ZWVrIHNob3VsZCBiZSBpbiB0aGUgZmlyc3QgY29sdW1uLiAoMD1TdW5kYXksIDE9TW9uZGF5LCAuLi4pXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGZpcnN0RGF5T2ZXZWVrPzogMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNjtcbiAgLyoqIFdoaWNoIG1vbnRoIHRvIHNob3cgaW5pdGlhbGx5ICovXG4gIGRlZmF1bHREYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIFNob3cgYnV0dG9ucyB0byBxdWlja2x5IHNlbGVjdCBzdWdnZXN0ZWQgZGF0ZXMgb3IgZGF0ZSByYW5nZXMgKi9cbiAgcXVpY2tPcHRpb25zPzogRGF0ZVBpY2tlclF1aWNrT3B0aW9uW107XG4gIC8qKiBNaW5pbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICAvKiogRGF0ZSByYW5nZXMgdGhhdCBhcmUgdmlzdWFsbHkgbWFya2VkIGFzIGJsb2NrZWQgKi9cbiAgYmxvY2tlZFJhbmdlcz86IERhdGVSYW5nZVtdO1xuICBtaW5EYXRlPzogRGF0ZTtcbiAgLyoqIE1heGltdW0gc2VsZWN0YWJsZSBkYXRlICovXG4gIG1heERhdGU/OiBEYXRlO1xuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBjYWxlbmRhciB3ZWVrIGluIHRoZSBmaXJzdCBjb2x1bW4gKi9cbiAgc2hvd0NhbGVuZGFyV2Vlaz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBEYXRlUGlja2VyQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8UGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+Pj4oe30pO1xuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlclByb3ZpZGVyKHtcbiAgY2hpbGRyZW4sXG4gIC4uLnByb3BzXG59OiBQYXJ0aWFsPE9taXQ8RGF0ZVBpY2tlclByb3BzLCAndmFsdWUnIHwgJ29uQ2hhbmdlJz4+ICYgeyBjaGlsZHJlbj86IFJlYWN0Tm9kZSB9KSB7XG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbygoKSA9PiBwcm9wcywgW0pTT04uc3RyaW5naWZ5KHByb3BzKV0pO1xuXG4gIHJldHVybiA8RGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9EYXRlUGlja2VyQ29udGV4dC5Qcm92aWRlcj47XG59XG5cbmNvbnN0IHdlZWtEYXlzID0gWzAsIDEsIDIsIDMsIDQsIDUsIDZdIGFzIGNvbnN0O1xuXG4vKiogUm91bmRzIGEgZGF0ZSBkb3duIHRvIHRoZSBzdGFydCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IHN0YXJ0T2ZEYXkgPSAoZDogRGF0ZSkgPT4gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpKTtcblxuLyoqIFJvdW5kcyBhIGRhdGUgdXAgdG8gdGhlIGVuZCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IGVuZE9mRGF5ID0gKGQ6IERhdGUpID0+XG4gIG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSArIDEsIDAsIDAsIDAsIC0xKTtcblxuZXhwb3J0IGNvbnN0IGxhc3REYXlzID0gKGRheXM6IG51bWJlcik6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkYXlzICsgMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG5vdyksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdG9kYXkgPSAoKSA9PiBsYXN0RGF5cygxKTtcblxuZXhwb3J0IGNvbnN0IHRoaXNXZWVrID0gKGRlbHRhID0gMCwgZmlyc3REYXlPZldlZWsgPSAxKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcblxuICBsZXQgZGlmZiA9IG1pbi5nZXREYXkoKSAtIGZpcnN0RGF5T2ZXZWVrO1xuICBpZiAoZGlmZiA8IDApIHtcbiAgICBkaWZmICs9IDc7XG4gIH1cbiAgbWluLnNldERhdGUobWluLmdldERhdGUoKSAtIGRpZmYgKyBkZWx0YSAqIDcpO1xuXG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgKyA2KTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzTW9udGggPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aChtaW4uZ2V0TW9udGgoKSArIGRlbHRhKTtcbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldE1vbnRoKG1heC5nZXRNb250aCgpICsgMSk7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgLSAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzWWVhciA9IChkZWx0YSA9IDApOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZSgxKTtcbiAgbWluLnNldE1vbnRoKDApO1xuICBtaW4uc2V0RnVsbFllYXIobWluLmdldEZ1bGxZZWFyKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRGdWxsWWVhcihtYXguZ2V0RnVsbFllYXIoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5jb25zdCBNU19QRVJfREFZID0gMTAwMCAqIDYwICogNjAgKiAyNDtcbmV4cG9ydCBjb25zdCBnZXRDYWxlbmRhcldlZWsgPSAoZGF0ZTogRGF0ZSk6IG51bWJlciA9PiB7XG4gIC8vIElTTyA4NjAxOiBXZWVrIDEgaXMgdGhlIHdlZWsgd2l0aCB0aGUgZmlyc3QgVGh1cnNkYXkgb2YgdGhlIHllYXIuXG4gIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcblxuICBjb25zdCBlbmRPZldlZWsgPSBuZXcgRGF0ZShcbiAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgZGF0ZS5nZXRNb250aCgpLFxuICAgIGRhdGUuZ2V0RGF0ZSgpICsgKDcgLSAoZGF0ZS5nZXREYXkoKSB8fCA3KSksXG4gICk7XG5cbiAgY29uc3QgeWVhciA9IGVuZE9mV2Vlay5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBmaXJzdERheU9mWWVhciA9IG5ldyBEYXRlKHllYXIsIDAsIDEpO1xuICBjb25zdCBkYXlPZlllYXIgPVxuICAgIE1hdGguZmxvb3IoXG4gICAgICAoZW5kT2ZXZWVrLmdldFRpbWUoKSAtXG4gICAgICAgIGZpcnN0RGF5T2ZZZWFyLmdldFRpbWUoKSArXG4gICAgICAgIChlbmRPZldlZWsuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGZpcnN0RGF5T2ZZZWFyLmdldFRpbWV6b25lT2Zmc2V0KCkpKSAvXG4gICAgICAgIE1TX1BFUl9EQVksXG4gICAgKSArIDE7XG4gIGNvbnN0IHdlZWtPZlllYXIgPSBNYXRoLmZsb29yKCgzICsgZGF5T2ZZZWFyKSAvIDcpO1xuXG4gIGlmICh3ZWVrT2ZZZWFyID09PSAwKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGdldENhbGVuZGFyV2VlayhcbiAgICAgICAgbmV3IERhdGUoZW5kT2ZXZWVrLmdldEZ1bGxZZWFyKCksIGVuZE9mV2Vlay5nZXRNb250aCgpLCBlbmRPZldlZWsuZ2V0RGF0ZSgpIC0gNyksXG4gICAgICApICsgMVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gd2Vla09mWWVhcjtcbn07XG5cbmV4cG9ydCBjb25zdCBjb21tb25RdWlja09wdGlvbnMgPSB7XG4gIHRvZGF5OiB7IGxhYmVsOiA8VGV4dCBpZD1cInRvZGF5XCIgLz4sIHZhbHVlOiB0b2RheSB9LFxuICB0aGlzV2VlazogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzV2Vla1wiIC8+LCB2YWx1ZTogKHByb3BzKSA9PiB0aGlzV2VlaygwLCBwcm9wcy5maXJzdERheU9mV2VlaykgfSxcbiAgdGhpc01vbnRoOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNNb250aFwiIC8+LCB2YWx1ZTogKCkgPT4gdGhpc01vbnRoKCkgfSxcbiAgdGhpc1llYXI6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1llYXJcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNZZWFyKCkgfSxcbiAgbGFzdFNldmVuRGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0U2V2ZW5EYXlzXCIgLz4sIHZhbHVlOiAoKSA9PiBsYXN0RGF5cyg3KSB9LFxuICBsYXN0VGhpcnR5RGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0VGhpcnR5RGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoMzApIH0sXG59IHNhdGlzZmllcyBSZWNvcmQ8XG4gIERhdGVQaWNrZXJRdWlja09wdGlvbiAmIHN0cmluZyxcbiAgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgocHJvcHM6IERhdGVQaWNrZXJQcm9wcykgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuPjtcblxuLyoqIFJldHVybnMgd2hldGhlciB0d28gZGF0ZXMgYW5kL29yIGRhdGUgcmFuZ2VzIGludGVyc2VjdC4gSW50ZXJzZWN0aW9uIGlzIGNvbnNpZGVyZWQgcGVyIGRheS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRlSW50ZXJzZWN0KFxuICBhOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgYjogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwgfCB1bmRlZmluZWQsXG4pIHtcbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYSA9IHsgbWluOiBhLCBtYXg6IGEgfTtcbiAgfVxuICBpZiAoYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBiID0geyBtaW46IGIsIG1heDogYiB9O1xuICB9XG5cbiAgaWYgKCFhPy5taW4gfHwgIWEubWF4IHx8ICFiPy5taW4gfHwgIWIubWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuICEoZW5kT2ZEYXkoYS5tYXgpIDwgc3RhcnRPZkRheShiLm1pbikgfHwgc3RhcnRPZkRheShhLm1pbikgPiBlbmRPZkRheShiLm1heCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNsYW1wKGRhdGU6IERhdGUsIG1pbj86IERhdGUsIG1heD86IERhdGUpIHtcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxuXG4gIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWVGb3JDb21wYXJpc29uKHZhbHVlPzogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmdldFRpbWUoKTtcbiAgfVxuICByZXR1cm4gYCR7dmFsdWUubWluPy5nZXRUaW1lKCl9LSR7dmFsdWUubWF4Py5nZXRUaW1lKCl9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXIocHJvcHM6IERhdGVQaWNrZXJQcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChEYXRlUGlja2VyQ29udGV4dCk7XG5cbiAgY29uc3Qge1xuICAgIHZhbHVlLFxuICAgIHJhbmdlU2VsZWN0LFxuICAgIGxvY2FsZSxcbiAgICBmaXJzdERheU9mV2VlayA9IDEsXG4gICAgZGVmYXVsdERhdGVJblZpZXcsXG4gICAgcXVpY2tPcHRpb25zID0gWyd0b2RheScsICd0aGlzV2VlayddLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICBzaG93Q2FsZW5kYXJXZWVrLFxuICAgIGJsb2NrZWRSYW5nZXMgPSBbXSxcbiAgfSA9IGRlZmF1bHRzPERhdGVQaWNrZXJQcm9wcz4ocHJvcHMsIGNvbnRleHQpO1xuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHZhbHVlID0gZGF0ZUNsYW1wKHZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHtcbiAgICAgICAgbWluOiBkYXRlQ2xhbXAodmFsdWUubWluLCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgICAgbWF4OiBkYXRlQ2xhbXAodmFsdWUubWF4LCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgY29uc3QgQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5CdXR0b24pO1xuICBjb25zdCBJY29uQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5JY29uQnV0dG9uKTtcbiAgY29uc3QgQ2hldnJvblJpZ2h0ID0gdXNlVGhlbWUoKHQpID0+IHQuaWNvbnMuQ2hldnJvblJpZ2h0KTtcbiAgY29uc3QgY3NzVmFyaWFibGVzID0gdXNlQ3NzVmFyaWFibGVzKCk7XG4gIGZ1bmN0aW9uIGdldERheUNzc1N0eWxlcyh7XG4gICAgZGlzYWJsZWQsXG4gICAgcHJldk1vbnRoLFxuICAgIG5leHRNb250aCxcbiAgICB0b2RheSxcbiAgICBibG9ja2VkLFxuICAgIHNlbGVjdGVkLFxuICAgIHByZVNlbGVjdGVkLFxuICB9OiB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZNb250aD86IGJvb2xlYW47XG4gICAgbmV4dE1vbnRoPzogYm9vbGVhbjtcbiAgICB0b2RheT86IGJvb2xlYW47XG4gICAgYmxvY2tlZD86IGJvb2xlYW47XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIHByZVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgfSk6IEludGVycG9sYXRpb248VGhlbWU+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGN1cnNvcjogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgIH0sXG4gICAgICAocHJldk1vbnRoIHx8IG5leHRNb250aCkgJiYge1xuICAgICAgICBjb2xvcjogZ3JheSxcbiAgICAgIH0sXG4gICAgICB0b2RheSAmJiB7XG4gICAgICAgIG91dGxpbmU6ICcxcHggc29saWQgdmFyKC0tc2Vjb25kYXJ5TWFpbiknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1ibG9ja2VkQ29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeU1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJlxuICAgICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgJzo6YmVmb3JlJzoge1xuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgICAgIGNsaXBQYXRoOiAncG9seWdvbigwIDAsIDAgNTAlLCA1MCUgMCknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBwcmVTZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TGlnaHQpJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBjb25zdCBtb3VudFRpbWUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKCksIFtdKTtcbiAgY29uc3QgW2RpcnR5LCBzZXREaXJ0eV0gPSB1c2VTdGF0ZTxQYXJ0aWFsPERhdGVSYW5nZT4+KCk7XG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlPERhdGVSYW5nZT4oKTtcbiAgY29uc3QgW2RhdGVJblZpZXdMb2NhbCwgc2V0RGF0ZUluVmlld0xvY2FsXSA9IHVzZVN0YXRlPERhdGU+KGRlZmF1bHREYXRlSW5WaWV3ID8/IG1vdW50VGltZSk7XG4gIGNvbnN0IGRhdGVJblZpZXcgPSBwcm9wcy5kYXRlSW5WaWV3ID8/IGRhdGVJblZpZXdMb2NhbDtcblxuICBmdW5jdGlvbiBzZXREYXRlSW5WaWV3KGRhdGU6IERhdGUpIHtcbiAgICBzZXREYXRlSW5WaWV3TG9jYWwoZGF0ZSk7XG4gICAgcHJvcHMub25EYXRlSW5WaWV3Q2hhbmdlPy4oZGF0ZSk7XG4gIH1cblxuICBjb25zdCBtaW4gPSBkaXJ0eSA/IGRpcnR5Lm1pbiA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWU/Lm1pbjtcbiAgY29uc3QgbWF4ID0gZGlydHkgPyBkaXJ0eS5tYXggOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5tYXg7XG5cbiAgY29uc3QgcmVzb2x2ZWRRdWlja09wdGlvbnMgPSBbLi4ucXVpY2tPcHRpb25zLCB7IGxhYmVsOiA8VGV4dCBpZD1cInJlc2V0XCIgLz4sIHZhbHVlOiBudWxsIH1dLm1hcChcbiAgICAob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKG9wdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSB9ID0gdHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycgPyBjb21tb25RdWlja09wdGlvbnNbb3B0aW9uXSA6IG9wdGlvbjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKHByb3BzKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApO1xuICAgIH0sXG4gICk7XG5cbiAgY29uc3QgeyBjYWxlbmRhcnMsIGdldEJhY2tQcm9wcywgZ2V0Rm9yd2FyZFByb3BzLCBnZXREYXRlUHJvcHMgfSA9IHVzZURheXplZCh7XG4gICAgb25EYXRlU2VsZWN0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBmaXJzdERheU9mV2VlayxcbiAgICBzaG93T3V0c2lkZURheXM6IHRydWUsXG4gICAgZGF0ZTogZGF0ZUluVmlldyxcbiAgICBvbk9mZnNldENoYW5nZWQ6IChvZmZzZXQpID0+XG4gICAgICBzZXREYXRlSW5WaWV3KG5ldyBEYXRlKGRhdGVJblZpZXcuZ2V0RnVsbFllYXIoKSwgZGF0ZUluVmlldy5nZXRNb250aCgpICsgb2Zmc2V0KSksXG4gICAgb2Zmc2V0OiAwLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgfSk7XG4gIGNvbnN0IG5vdyA9IHVzZU1lbW8oKCkgPT4gc3RhcnRPZkRheShuZXcgRGF0ZSgpKSwgW10pO1xuXG4gIGNvbnN0IGZvcm1hdFdlZWtkYXkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHdlZWtkYXk6ICdzaG9ydCcgfSk7XG4gICAgcmV0dXJuICh3ZWVrRGF5OiBudW1iZXIpID0+XG4gICAgICBmb3JtYXQobmV3IERhdGUoRGF0ZS5VVEMoMjAyMSwgNywgKCh3ZWVrRGF5ICsgZmlyc3REYXlPZldlZWspICUgNykgKyAxKSkpO1xuICB9LCBbbG9jYWxlLCBmaXJzdERheU9mV2Vla10pO1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhcbiAgICAgICAgdmFsdWUgPT09IG51bGwgPyBkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUgOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlLm1heCxcbiAgICAgICksXG4gICAgW2dldFZhbHVlRm9yQ29tcGFyaXNvbih2YWx1ZSksIGdldFZhbHVlRm9yQ29tcGFyaXNvbihkZWZhdWx0RGF0ZUluVmlldyksIG1vdW50VGltZV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSwgW3JhbmdlU2VsZWN0XSk7XG5cbiAgZnVuY3Rpb24gc2V0KG1pbj86IERhdGUsIG1heD86IERhdGUsIGVkaXQ/OiAnbWluJyB8ICdtYXgnKSB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgb25DaGFuZ2UobWluID8/IG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChtaW4gJiYgbWF4ICYmIG1pbiA+IG1heCkge1xuICAgICAgaWYgKGVkaXQgPT09ICdtaW4nKSB7XG4gICAgICAgIG1heCA9IG1pbjtcbiAgICAgIH0gZWxzZSBpZiAoZWRpdCA9PT0gJ21heCcpIHtcbiAgICAgICAgbWluID0gbWF4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgW21pbiwgbWF4XSA9IFttYXgsIG1pbl07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFtaW4gPT09ICFtYXgpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICBvbkNoYW5nZShtaW4gJiYgbWF4ID8geyBtaW4sIG1heDogZW5kT2ZEYXkobWF4KSB9IDogbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldERpcnR5KHsgbWluLCBtYXggfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZm9ybWF0TW9udGggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XG4gICAgcmV0dXJuIChtb250aDogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoMjAyMSwgbW9udGgpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIGNvbnN0IGZvcm1hdFllYXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHllYXI6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gKHllYXI6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKHllYXIsIDAsIDEpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjc3M9e2Nzc1ZhcmlhYmxlc30+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiAnYmFzZWxpbmUnLFxuICAgICAgICAgIGdhcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgIHZhbHVlPXttaW4gPz8gbnVsbH1cbiAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChkYXRlID8/IHVuZGVmaW5lZCwgbWF4LCAnbWluJyl9XG4gICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgIC8+XG5cbiAgICAgICAge3JhbmdlU2VsZWN0ICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgeycgLSAnfVxuICAgICAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgICAgICB2YWx1ZT17bWF4ID8/IG51bGx9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KG1pbiwgZGF0ZSA/PyB1bmRlZmluZWQsICdtYXgnKX1cbiAgICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHtjYWxlbmRhcnMubWFwKCh7IG1vbnRoLCB5ZWFyLCB3ZWVrcyB9KSA9PiAoXG4gICAgICAgIDxkaXYga2V5PXtgJHttb250aH0ke3llYXJ9YH0gY3NzPXt7IGRpc3BsYXk6ICdncmlkJyB9fT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgbWFyZ2luOiAnY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpIDAnLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEJhY2tQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgY3NzPXt7IHRyYW5zZm9ybTogJ3JvdGF0ZTNkKDAsIDAsIDEsIDE4MGRlZyknIH19IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY3NzPXt7IGRpc3BsYXk6ICdmbGV4JyB9fT5cbiAgICAgICAgICAgICAge2Zvcm1hdE1vbnRoKG1vbnRoKX0ge2Zvcm1hdFllYXIoeWVhcil9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRGb3J3YXJkUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICdyZXBlYXQoOCwgbWF4LWNvbnRlbnQpJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUZXh0IGlkPVwiY2FsZW5kYXJXZWVrXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7d2Vla0RheXMubWFwKChfdiwgd2Vla0RheSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAga2V5PXt3ZWVrRGF5fVxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtmb3JtYXRXZWVrZGF5KHdlZWtEYXkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuXG4gICAgICAgICAgICB7d2Vla3MubWFwKCh3ZWVrLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrU3RhcnQgPSB3ZWVrWzBdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtFbmQgPSB3ZWVrWzZdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtEaXNhYmxlZCA9XG4gICAgICAgICAgICAgICAgIXJhbmdlU2VsZWN0IHx8XG4gICAgICAgICAgICAgICAgKG1pbkRhdGUgJiYgd2Vla0VuZC5kYXRlIDwgbWluRGF0ZSkgfHxcbiAgICAgICAgICAgICAgICAobWF4RGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiB3ZWVrRGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ZWVrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW4gPSBtaW5EYXRlICYmIHdlZWtTdGFydC5kYXRlIDwgbWluRGF0ZSA/IG1pbkRhdGUgOiB3ZWVrU3RhcnQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heCA9IG1heERhdGUgJiYgd2Vla0VuZC5kYXRlID4gbWF4RGF0ZSA/IG1heERhdGUgOiB3ZWVrRW5kLmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXQobWluLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3Zlcj17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICF3ZWVrRGlzYWJsZWQgJiYgc2V0SG92ZXJlZCh7IG1pbjogd2Vla1N0YXJ0LmRhdGUsIG1heDogd2Vla0VuZC5kYXRlIH0pXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck91dD17KCkgPT4gIXdlZWtEaXNhYmxlZCAmJiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7Z2V0Q2FsZW5kYXJXZWVrKHdlZWtFbmQuZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAge3dlZWsubWFwKChkYXRlT2JqZWN0LCBkYXlJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGVPYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2RheUluZGV4fSAvPjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJldk1vbnRoLCBuZXh0TW9udGgsIGRhdGUgfSA9IGRhdGVPYmplY3Q7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvZGF5ID0gc3RhcnRPZkRheShkYXRlKS5nZXRUaW1lKCkgPT09IG5vdy5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkID0gKG1pbkRhdGUgJiYgZGF0ZSA8IG1pbkRhdGUpIHx8IChtYXhEYXRlICYmIGRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgZGF0ZS5nZXRUaW1lKCkgPT09IG1pbj8uZ2V0VGltZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJiBtYXggJiYgZGF0ZUludGVyc2VjdChkYXRlLCB7IG1pbiwgbWF4IH0pKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJlU2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICFzZWxlY3RlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICFkaXNhYmxlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgIChkYXRlSW50ZXJzZWN0KGRhdGUsIGhvdmVyZWQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAobWluICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFtYXggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlSW50ZXJzZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluIDw9IGhvdmVyZWQubWluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgbWluLCBtYXg6IGhvdmVyZWQubWluIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogeyBtaW46IGhvdmVyZWQubWF4LCBtYXg6IG1pbiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICApKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrZWQgPSBibG9ja2VkUmFuZ2VzLnNvbWUoKHJhbmdlKSA9PiBkYXRlSW50ZXJzZWN0KGRhdGUsIHJhbmdlKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7aW5kZXh9LSR7ZGF5SW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Z2V0RGF5Q3NzU3R5bGVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZVNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0RGF0ZVByb3BzKHsgZGF0ZU9iajogZGF0ZU9iamVjdCB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbikgc2V0KG1pbiwgZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzZXQoZGF0ZSwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdmVyPXsoKSA9PiBzZXRIb3ZlcmVkKHsgbWluOiBkYXRlLCBtYXg6IGRhdGUgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+IHNldEhvdmVyZWQodW5kZWZpbmVkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGF0ZS5nZXREYXRlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSl9XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgbWFyZ2luVG9wOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3Jlc29sdmVkUXVpY2tPcHRpb25zfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0= */",
|
|
969
969
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__$d
|
|
970
970
|
};
|
|
971
971
|
var _ref4$2 = process.env.NODE_ENV === "production" ? {
|
|
@@ -974,7 +974,7 @@ var _ref4$2 = process.env.NODE_ENV === "production" ? {
|
|
|
974
974
|
} : {
|
|
975
975
|
name: "avs0ta-DatePicker",
|
|
976
976
|
styles: "transform:rotate3d(0, 0, 1, 180deg);label:DatePicker;",
|
|
977
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThjNEIiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgeSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmRveSA9IG5ldyBEYXRlKHksIDAsIDEpO1xuICBjb25zdCBkb3kgPSBNYXRoLmZsb29yKFxuICAgIChkYXRlLmdldFRpbWUoKSAtIGZkb3kuZ2V0VGltZSgpICsgKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGZkb3kuZ2V0VGltZXpvbmVPZmZzZXQoKSkpIC9cbiAgICAgIE1TX1BFUl9EQVksXG4gICk7XG4gIGNvbnN0IGRvdyA9IGZkb3kuZ2V0RGF5KCk7XG4gIGNvbnN0IHcgPSBNYXRoLmZsb29yKCgxMCArIGRveSAtIGRvdykgLyA3KTtcblxuICBpZiAodyA9PT0gMCkge1xuICAgIHJldHVybiBnZXRDYWxlbmRhcldlZWsobmV3IERhdGUoeSAtIDEsIDExLCAzMSkpO1xuICB9XG5cbiAgcmV0dXJuIHc7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChhOiBEYXRlIHwgbnVsbCB8IERhdGVSYW5nZSwgYjogRGF0ZSB8IG51bGwgfCBEYXRlUmFuZ2UpIHtcbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYSA9IHsgbWluOiBhLCBtYXg6IGEgfTtcbiAgfVxuICBpZiAoYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBiID0geyBtaW46IGIsIG1heDogYiB9O1xuICB9XG5cbiAgaWYgKCFhPy5taW4gfHwgIWEubWF4IHx8ICFiPy5taW4gfHwgIWIubWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuICEoZW5kT2ZEYXkoYS5tYXgpIDwgc3RhcnRPZkRheShiLm1pbikgfHwgc3RhcnRPZkRheShhLm1pbikgPiBlbmRPZkRheShiLm1heCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNsYW1wKGRhdGU6IERhdGUsIG1pbj86IERhdGUsIG1heD86IERhdGUpIHtcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxuXG4gIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWVGb3JDb21wYXJpc29uKHZhbHVlPzogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmdldFRpbWUoKTtcbiAgfVxuICByZXR1cm4gYCR7dmFsdWUubWluPy5nZXRUaW1lKCl9LSR7dmFsdWUubWF4Py5nZXRUaW1lKCl9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXIocHJvcHM6IERhdGVQaWNrZXJQcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChEYXRlUGlja2VyQ29udGV4dCk7XG5cbiAgY29uc3Qge1xuICAgIHZhbHVlLFxuICAgIHJhbmdlU2VsZWN0LFxuICAgIGxvY2FsZSxcbiAgICBmaXJzdERheU9mV2VlayA9IDEsXG4gICAgZGVmYXVsdERhdGVJblZpZXcsXG4gICAgcXVpY2tPcHRpb25zID0gWyd0b2RheScsICd0aGlzV2VlayddLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICBzaG93Q2FsZW5kYXJXZWVrLFxuICAgIGJsb2NrZWRSYW5nZXMgPSBbXSxcbiAgfSA9IGRlZmF1bHRzPERhdGVQaWNrZXJQcm9wcz4ocHJvcHMsIGNvbnRleHQpO1xuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHZhbHVlID0gZGF0ZUNsYW1wKHZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHtcbiAgICAgICAgbWluOiBkYXRlQ2xhbXAodmFsdWUubWluLCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgICAgbWF4OiBkYXRlQ2xhbXAodmFsdWUubWF4LCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgY29uc3QgQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5CdXR0b24pO1xuICBjb25zdCBJY29uQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5JY29uQnV0dG9uKTtcbiAgY29uc3QgQ2hldnJvblJpZ2h0ID0gdXNlVGhlbWUoKHQpID0+IHQuaWNvbnMuQ2hldnJvblJpZ2h0KTtcbiAgY29uc3QgY3NzVmFyaWFibGVzID0gdXNlQ3NzVmFyaWFibGVzKCk7XG4gIGZ1bmN0aW9uIGdldERheUNzc1N0eWxlcyh7XG4gICAgZGlzYWJsZWQsXG4gICAgcHJldk1vbnRoLFxuICAgIG5leHRNb250aCxcbiAgICB0b2RheSxcbiAgICBibG9ja2VkLFxuICAgIHNlbGVjdGVkLFxuICAgIHByZVNlbGVjdGVkLFxuICB9OiB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZNb250aD86IGJvb2xlYW47XG4gICAgbmV4dE1vbnRoPzogYm9vbGVhbjtcbiAgICB0b2RheT86IGJvb2xlYW47XG4gICAgYmxvY2tlZD86IGJvb2xlYW47XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIHByZVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgfSk6IEludGVycG9sYXRpb248VGhlbWU+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGN1cnNvcjogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgIH0sXG4gICAgICAocHJldk1vbnRoIHx8IG5leHRNb250aCkgJiYge1xuICAgICAgICBjb2xvcjogZ3JheSxcbiAgICAgIH0sXG4gICAgICB0b2RheSAmJiB7XG4gICAgICAgIG91dGxpbmU6ICcxcHggc29saWQgdmFyKC0tc2Vjb25kYXJ5TWFpbiknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1ibG9ja2VkQ29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeU1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJlxuICAgICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgJzo6YmVmb3JlJzoge1xuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgICAgIGNsaXBQYXRoOiAncG9seWdvbigwIDAsIDAgNTAlLCA1MCUgMCknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBwcmVTZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TGlnaHQpJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBjb25zdCBtb3VudFRpbWUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKCksIFtdKTtcbiAgY29uc3QgW2RpcnR5LCBzZXREaXJ0eV0gPSB1c2VTdGF0ZTxQYXJ0aWFsPERhdGVSYW5nZT4+KCk7XG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlPERhdGU+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFtnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWUpLCBnZXRWYWx1ZUZvckNvbXBhcmlzb24oZGVmYXVsdERhdGVJblZpZXcpLCBtb3VudFRpbWVdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICB9XG4gIH0sIFtyYW5nZVNlbGVjdF0pO1xuXG4gIGZ1bmN0aW9uIHNldChtaW4/OiBEYXRlLCBtYXg/OiBEYXRlLCBlZGl0PzogJ21pbicgfCAnbWF4Jykge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIG9uQ2hhbmdlKG1pbiA/PyBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobWluICYmIG1heCAmJiBtaW4gPiBtYXgpIHtcbiAgICAgIGlmIChlZGl0ID09PSAnbWluJykge1xuICAgICAgICBtYXggPSBtaW47XG4gICAgICB9IGVsc2UgaWYgKGVkaXQgPT09ICdtYXgnKSB7XG4gICAgICAgIG1pbiA9IG1heDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFttaW4sIG1heF0gPSBbbWF4LCBtaW5dO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghbWluID09PSAhbWF4KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgICAgb25DaGFuZ2UobWluICYmIG1heCA/IHsgbWluLCBtYXg6IGVuZE9mRGF5KG1heCkgfSA6IG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXREaXJ0eSh7IG1pbiwgbWF4IH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZvcm1hdE1vbnRoID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBtb250aDogJ2xvbmcnIH0pO1xuICAgIHJldHVybiAobW9udGg6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKDIwMjEsIG1vbnRoKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICBjb25zdCBmb3JtYXRZZWFyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gICAgcmV0dXJuICh5ZWFyOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSh5ZWFyLCAwLCAxKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY3NzPXtjc3NWYXJpYWJsZXN9PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2Jhc2VsaW5lJyxcbiAgICAgICAgICBnYXA6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICB2YWx1ZT17bWluID8/IG51bGx9XG4gICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQoZGF0ZSA/PyB1bmRlZmluZWQsIG1heCwgJ21pbicpfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAvPlxuXG4gICAgICAgIHtyYW5nZVNlbGVjdCAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHsnIC0gJ31cbiAgICAgICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICAgICAgdmFsdWU9e21heCA/PyBudWxsfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChtaW4sIGRhdGUgPz8gdW5kZWZpbmVkLCAnbWF4Jyl9XG4gICAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7Y2FsZW5kYXJzLm1hcCgoeyBtb250aCwgeWVhciwgd2Vla3MgfSkgPT4gKFxuICAgICAgICA8ZGl2IGtleT17YCR7bW9udGh9JHt5ZWFyfWB9IGNzcz17eyBkaXNwbGF5OiAnZ3JpZCcgfX0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIG1hcmdpbjogJ2NhbGModmFyKC0tc3BhY2luZykgKiA0KSAwJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRCYWNrUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNzcz17eyB0cmFuc2Zvcm06ICdyb3RhdGUzZCgwLCAwLCAxLCAxODBkZWcpJyB9fSAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2IGNzcz17eyBkaXNwbGF5OiAnZmxleCcgfX0+XG4gICAgICAgICAgICAgIHtmb3JtYXRNb250aChtb250aCl9IHtmb3JtYXRZZWFyKHllYXIpfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0Rm9yd2FyZFByb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KDgsIG1heC1jb250ZW50KScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGV4dCBpZD1cImNhbGVuZGFyV2Vla1wiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3dlZWtEYXlzLm1hcCgoX3YsIHdlZWtEYXkpID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGtleT17d2Vla0RheX1cbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Zm9ybWF0V2Vla2RheSh3ZWVrRGF5KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cblxuICAgICAgICAgICAge3dlZWtzLm1hcCgod2VlaywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla1N0YXJ0ID0gd2Vla1swXSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRW5kID0gd2Vla1s2XSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICFyYW5nZVNlbGVjdCB8fFxuICAgICAgICAgICAgICAgIChtaW5EYXRlICYmIHdlZWtFbmQuZGF0ZSA8IG1pbkRhdGUpIHx8XG4gICAgICAgICAgICAgICAgKG1heERhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGcmFnbWVudCBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogd2Vla0Rpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2Vla0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluID0gbWluRGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA8IG1pbkRhdGUgPyBtaW5EYXRlIDogd2Vla1N0YXJ0LmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXggPSBtYXhEYXRlICYmIHdlZWtFbmQuZGF0ZSA+IG1heERhdGUgPyBtYXhEYXRlIDogd2Vla0VuZC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG1pbiwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2dldENhbGVuZGFyV2Vlaygod2Vla1swXSBhcyBEYXRlT2JqKS5kYXRlKX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICB7d2Vlay5tYXAoKGRhdGVPYmplY3QsIGRheUluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0ZU9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17ZGF5SW5kZXh9IC8+O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwcmV2TW9udGgsIG5leHRNb250aCwgZGF0ZSB9ID0gZGF0ZU9iamVjdDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9kYXkgPSBzdGFydE9mRGF5KGRhdGUpLmdldFRpbWUoKSA9PT0gbm93LmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzYWJsZWQgPSAobWluRGF0ZSAmJiBkYXRlIDwgbWluRGF0ZSkgfHwgKG1heERhdGUgJiYgZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICBkYXRlLmdldFRpbWUoKSA9PT0gbWluPy5nZXRUaW1lKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAobWluICYmIG1heCAmJiBkYXRlSW50ZXJzZWN0KGRhdGUsIHsgbWluLCBtYXggfSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVTZWxlY3RlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgIWRpc2FibGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgKGRhdGUuZ2V0VGltZSgpID09PSBob3ZlcmVkPy5nZXRUaW1lKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIW1heCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBob3ZlcmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVJbnRlcnNlY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4gPD0gaG92ZXJlZCA/IHsgbWluLCBtYXg6IGhvdmVyZWQgfSA6IHsgbWluOiBob3ZlcmVkLCBtYXg6IG1pbiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICApKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrZWQgPSBibG9ja2VkUmFuZ2VzLnNvbWUoKHJhbmdlKSA9PiBkYXRlSW50ZXJzZWN0KGRhdGUsIHJhbmdlKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7aW5kZXh9LSR7ZGF5SW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Z2V0RGF5Q3NzU3R5bGVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZVNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0RGF0ZVByb3BzKHsgZGF0ZU9iajogZGF0ZU9iamVjdCB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbikgc2V0KG1pbiwgZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzZXQoZGF0ZSwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdmVyPXsoKSA9PiBzZXRIb3ZlcmVkKGRhdGUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3V0PXsoKSA9PiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2RhdGUuZ2V0RGF0ZSgpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICkpfVxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIG1hcmdpblRvcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXNvbHZlZFF1aWNrT3B0aW9uc31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19 */",
|
|
977
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZkNEIiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgZW5kT2ZXZWVrID0gbmV3IERhdGUoXG4gICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgIGRhdGUuZ2V0TW9udGgoKSxcbiAgICBkYXRlLmdldERhdGUoKSArICg3IC0gKGRhdGUuZ2V0RGF5KCkgfHwgNykpLFxuICApO1xuXG4gIGNvbnN0IHllYXIgPSBlbmRPZldlZWsuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmlyc3REYXlPZlllYXIgPSBuZXcgRGF0ZSh5ZWFyLCAwLCAxKTtcbiAgY29uc3QgZGF5T2ZZZWFyID1cbiAgICBNYXRoLmZsb29yKFxuICAgICAgKGVuZE9mV2Vlay5nZXRUaW1lKCkgLVxuICAgICAgICBmaXJzdERheU9mWWVhci5nZXRUaW1lKCkgK1xuICAgICAgICAoZW5kT2ZXZWVrLmdldFRpbWV6b25lT2Zmc2V0KCkgLSBmaXJzdERheU9mWWVhci5nZXRUaW1lem9uZU9mZnNldCgpKSkgL1xuICAgICAgICBNU19QRVJfREFZLFxuICAgICkgKyAxO1xuICBjb25zdCB3ZWVrT2ZZZWFyID0gTWF0aC5mbG9vcigoMyArIGRheU9mWWVhcikgLyA3KTtcblxuICBpZiAod2Vla09mWWVhciA9PT0gMCkge1xuICAgIHJldHVybiAoXG4gICAgICBnZXRDYWxlbmRhcldlZWsoXG4gICAgICAgIG5ldyBEYXRlKGVuZE9mV2Vlay5nZXRGdWxsWWVhcigpLCBlbmRPZldlZWsuZ2V0TW9udGgoKSwgZW5kT2ZXZWVrLmdldERhdGUoKSAtIDcpLFxuICAgICAgKSArIDFcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHdlZWtPZlllYXI7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChcbiAgYTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGI6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsIHwgdW5kZWZpbmVkLFxuKSB7XG4gIGlmIChhIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGEgPSB7IG1pbjogYSwgbWF4OiBhIH07XG4gIH1cbiAgaWYgKGIgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYiA9IHsgbWluOiBiLCBtYXg6IGIgfTtcbiAgfVxuXG4gIGlmICghYT8ubWluIHx8ICFhLm1heCB8fCAhYj8ubWluIHx8ICFiLm1heCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAhKGVuZE9mRGF5KGEubWF4KSA8IHN0YXJ0T2ZEYXkoYi5taW4pIHx8IHN0YXJ0T2ZEYXkoYS5taW4pID4gZW5kT2ZEYXkoYi5tYXgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVDbGFtcChkYXRlOiBEYXRlLCBtaW4/OiBEYXRlLCBtYXg/OiBEYXRlKSB7XG4gIGlmIChtaW4gJiYgZGF0ZSA8IG1pbikge1xuICAgIHJldHVybiBtaW47XG4gIH1cblxuICBpZiAobWF4ICYmIGRhdGUgPiBtYXgpIHtcbiAgICByZXR1cm4gbWF4O1xuICB9XG5cbiAgcmV0dXJuIGRhdGU7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlRm9yQ29tcGFyaXNvbih2YWx1ZT86IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiB2YWx1ZS5nZXRUaW1lKCk7XG4gIH1cbiAgcmV0dXJuIGAke3ZhbHVlLm1pbj8uZ2V0VGltZSgpfS0ke3ZhbHVlLm1heD8uZ2V0VGltZSgpfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlUGlja2VyKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRGF0ZVBpY2tlckNvbnRleHQpO1xuXG4gIGNvbnN0IHtcbiAgICB2YWx1ZSxcbiAgICByYW5nZVNlbGVjdCxcbiAgICBsb2NhbGUsXG4gICAgZmlyc3REYXlPZldlZWsgPSAxLFxuICAgIGRlZmF1bHREYXRlSW5WaWV3LFxuICAgIHF1aWNrT3B0aW9ucyA9IFsndG9kYXknLCAndGhpc1dlZWsnXSxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gICAgc2hvd0NhbGVuZGFyV2VlayxcbiAgICBibG9ja2VkUmFuZ2VzID0gW10sXG4gIH0gPSBkZWZhdWx0czxEYXRlUGlja2VyUHJvcHM+KHByb3BzLCBjb250ZXh0KTtcblxuICBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICB2YWx1ZSA9IGRhdGVDbGFtcCh2YWx1ZSwgbWluRGF0ZSwgbWF4RGF0ZSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgdmFsdWUgPSB7XG4gICAgICAgIG1pbjogZGF0ZUNsYW1wKHZhbHVlLm1pbiwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICAgIG1heDogZGF0ZUNsYW1wKHZhbHVlLm1heCwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHByb3BzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0IEJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuQnV0dG9uKTtcbiAgY29uc3QgSWNvbkJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuSWNvbkJ1dHRvbik7XG4gIGNvbnN0IENoZXZyb25SaWdodCA9IHVzZVRoZW1lKCh0KSA9PiB0Lmljb25zLkNoZXZyb25SaWdodCk7XG4gIGNvbnN0IGNzc1ZhcmlhYmxlcyA9IHVzZUNzc1ZhcmlhYmxlcygpO1xuICBmdW5jdGlvbiBnZXREYXlDc3NTdHlsZXMoe1xuICAgIGRpc2FibGVkLFxuICAgIHByZXZNb250aCxcbiAgICBuZXh0TW9udGgsXG4gICAgdG9kYXksXG4gICAgYmxvY2tlZCxcbiAgICBzZWxlY3RlZCxcbiAgICBwcmVTZWxlY3RlZCxcbiAgfToge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBwcmV2TW9udGg/OiBib29sZWFuO1xuICAgIG5leHRNb250aD86IGJvb2xlYW47XG4gICAgdG9kYXk/OiBib29sZWFuO1xuICAgIGJsb2NrZWQ/OiBib29sZWFuO1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgICBwcmVTZWxlY3RlZD86IGJvb2xlYW47XG4gIH0pOiBJbnRlcnBvbGF0aW9uPFRoZW1lPiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICBjdXJzb3I6IGRpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICB9LFxuICAgICAgKHByZXZNb250aCB8fCBuZXh0TW9udGgpICYmIHtcbiAgICAgICAgY29sb3I6IGdyYXksXG4gICAgICB9LFxuICAgICAgdG9kYXkgJiYge1xuICAgICAgICBvdXRsaW5lOiAnMXB4IHNvbGlkIHZhcigtLXNlY29uZGFyeU1haW4pJyxcbiAgICAgIH0sXG4gICAgICBibG9ja2VkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tYmxvY2tlZENvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIHNlbGVjdGVkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLXByaW1hcnlNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiZcbiAgICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICc6OmJlZm9yZSc6IHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICdcIlwiJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICBib3R0b206IDAsXG4gICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgICAgICBjbGlwUGF0aDogJ3BvbHlnb24oMCAwLCAwIDUwJSwgNTAlIDApJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgcHJlU2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeUxpZ2h0KScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgY29uc3QgbW91bnRUaW1lID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgpLCBbXSk7XG4gIGNvbnN0IFtkaXJ0eSwgc2V0RGlydHldID0gdXNlU3RhdGU8UGFydGlhbDxEYXRlUmFuZ2U+PigpO1xuICBjb25zdCBbaG92ZXJlZCwgc2V0SG92ZXJlZF0gPSB1c2VTdGF0ZTxEYXRlUmFuZ2U+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFtnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWUpLCBnZXRWYWx1ZUZvckNvbXBhcmlzb24oZGVmYXVsdERhdGVJblZpZXcpLCBtb3VudFRpbWVdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICB9XG4gIH0sIFtyYW5nZVNlbGVjdF0pO1xuXG4gIGZ1bmN0aW9uIHNldChtaW4/OiBEYXRlLCBtYXg/OiBEYXRlLCBlZGl0PzogJ21pbicgfCAnbWF4Jykge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIG9uQ2hhbmdlKG1pbiA/PyBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobWluICYmIG1heCAmJiBtaW4gPiBtYXgpIHtcbiAgICAgIGlmIChlZGl0ID09PSAnbWluJykge1xuICAgICAgICBtYXggPSBtaW47XG4gICAgICB9IGVsc2UgaWYgKGVkaXQgPT09ICdtYXgnKSB7XG4gICAgICAgIG1pbiA9IG1heDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFttaW4sIG1heF0gPSBbbWF4LCBtaW5dO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghbWluID09PSAhbWF4KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgICAgb25DaGFuZ2UobWluICYmIG1heCA/IHsgbWluLCBtYXg6IGVuZE9mRGF5KG1heCkgfSA6IG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXREaXJ0eSh7IG1pbiwgbWF4IH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZvcm1hdE1vbnRoID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBtb250aDogJ2xvbmcnIH0pO1xuICAgIHJldHVybiAobW9udGg6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKDIwMjEsIG1vbnRoKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICBjb25zdCBmb3JtYXRZZWFyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gICAgcmV0dXJuICh5ZWFyOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSh5ZWFyLCAwLCAxKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY3NzPXtjc3NWYXJpYWJsZXN9PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2Jhc2VsaW5lJyxcbiAgICAgICAgICBnYXA6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICB2YWx1ZT17bWluID8/IG51bGx9XG4gICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQoZGF0ZSA/PyB1bmRlZmluZWQsIG1heCwgJ21pbicpfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAvPlxuXG4gICAgICAgIHtyYW5nZVNlbGVjdCAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHsnIC0gJ31cbiAgICAgICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICAgICAgdmFsdWU9e21heCA/PyBudWxsfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChtaW4sIGRhdGUgPz8gdW5kZWZpbmVkLCAnbWF4Jyl9XG4gICAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7Y2FsZW5kYXJzLm1hcCgoeyBtb250aCwgeWVhciwgd2Vla3MgfSkgPT4gKFxuICAgICAgICA8ZGl2IGtleT17YCR7bW9udGh9JHt5ZWFyfWB9IGNzcz17eyBkaXNwbGF5OiAnZ3JpZCcgfX0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIG1hcmdpbjogJ2NhbGModmFyKC0tc3BhY2luZykgKiA0KSAwJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRCYWNrUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNzcz17eyB0cmFuc2Zvcm06ICdyb3RhdGUzZCgwLCAwLCAxLCAxODBkZWcpJyB9fSAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2IGNzcz17eyBkaXNwbGF5OiAnZmxleCcgfX0+XG4gICAgICAgICAgICAgIHtmb3JtYXRNb250aChtb250aCl9IHtmb3JtYXRZZWFyKHllYXIpfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0Rm9yd2FyZFByb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KDgsIG1heC1jb250ZW50KScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGV4dCBpZD1cImNhbGVuZGFyV2Vla1wiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3dlZWtEYXlzLm1hcCgoX3YsIHdlZWtEYXkpID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGtleT17d2Vla0RheX1cbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Zm9ybWF0V2Vla2RheSh3ZWVrRGF5KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cblxuICAgICAgICAgICAge3dlZWtzLm1hcCgod2VlaywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla1N0YXJ0ID0gd2Vla1swXSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRW5kID0gd2Vla1s2XSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICFyYW5nZVNlbGVjdCB8fFxuICAgICAgICAgICAgICAgIChtaW5EYXRlICYmIHdlZWtFbmQuZGF0ZSA8IG1pbkRhdGUpIHx8XG4gICAgICAgICAgICAgICAgKG1heERhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGcmFnbWVudCBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogd2Vla0Rpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2Vla0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluID0gbWluRGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA8IG1pbkRhdGUgPyBtaW5EYXRlIDogd2Vla1N0YXJ0LmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXggPSBtYXhEYXRlICYmIHdlZWtFbmQuZGF0ZSA+IG1heERhdGUgPyBtYXhEYXRlIDogd2Vla0VuZC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG1pbiwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAhd2Vla0Rpc2FibGVkICYmIHNldEhvdmVyZWQoeyBtaW46IHdlZWtTdGFydC5kYXRlLCBtYXg6IHdlZWtFbmQuZGF0ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+ICF3ZWVrRGlzYWJsZWQgJiYgc2V0SG92ZXJlZCh1bmRlZmluZWQpfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2dldENhbGVuZGFyV2Vlayh3ZWVrRW5kLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgIHt3ZWVrLm1hcCgoZGF0ZU9iamVjdCwgZGF5SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtkYXlJbmRleH0gLz47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZNb250aCwgbmV4dE1vbnRoLCBkYXRlIH0gPSBkYXRlT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZEYXkoZGF0ZSkuZ2V0VGltZSgpID09PSBub3cuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB8fCAobWF4RGF0ZSAmJiBkYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGUuZ2V0VGltZSgpID09PSBtaW4/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiYgbWF4ICYmIGRhdGVJbnRlcnNlY3QoZGF0ZSwgeyBtaW4sIG1heCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZUludGVyc2VjdChkYXRlLCBob3ZlcmVkKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUludGVyc2VjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA8PSBob3ZlcmVkLm1pblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IG1pbiwgbWF4OiBob3ZlcmVkLm1pbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHsgbWluOiBob3ZlcmVkLm1heCwgbWF4OiBtaW4gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja2VkID0gYmxvY2tlZFJhbmdlcy5zb21lKChyYW5nZSkgPT4gZGF0ZUludGVyc2VjdChkYXRlLCByYW5nZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake2luZGV4fS0ke2RheUluZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2dldERheUNzc1N0eWxlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldERhdGVQcm9wcyh7IGRhdGVPYmo6IGRhdGVPYmplY3QgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaW4pIHNldChtaW4sIGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc2V0KGRhdGUsIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3Zlcj17KCkgPT4gc2V0SG92ZXJlZCh7IG1pbjogZGF0ZSwgbWF4OiBkYXRlIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3V0PXsoKSA9PiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2RhdGUuZ2V0RGF0ZSgpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICkpfVxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIG1hcmdpblRvcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXNvbHZlZFF1aWNrT3B0aW9uc31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19 */",
|
|
978
978
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__$d
|
|
979
979
|
};
|
|
980
980
|
var _ref5$2 = process.env.NODE_ENV === "production" ? {
|
|
@@ -983,7 +983,7 @@ var _ref5$2 = process.env.NODE_ENV === "production" ? {
|
|
|
983
983
|
} : {
|
|
984
984
|
name: "g57uq1-DatePicker",
|
|
985
985
|
styles: "display:flex;label:DatePicker;",
|
|
986
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlkaUIiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgeSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmRveSA9IG5ldyBEYXRlKHksIDAsIDEpO1xuICBjb25zdCBkb3kgPSBNYXRoLmZsb29yKFxuICAgIChkYXRlLmdldFRpbWUoKSAtIGZkb3kuZ2V0VGltZSgpICsgKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGZkb3kuZ2V0VGltZXpvbmVPZmZzZXQoKSkpIC9cbiAgICAgIE1TX1BFUl9EQVksXG4gICk7XG4gIGNvbnN0IGRvdyA9IGZkb3kuZ2V0RGF5KCk7XG4gIGNvbnN0IHcgPSBNYXRoLmZsb29yKCgxMCArIGRveSAtIGRvdykgLyA3KTtcblxuICBpZiAodyA9PT0gMCkge1xuICAgIHJldHVybiBnZXRDYWxlbmRhcldlZWsobmV3IERhdGUoeSAtIDEsIDExLCAzMSkpO1xuICB9XG5cbiAgcmV0dXJuIHc7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChhOiBEYXRlIHwgbnVsbCB8IERhdGVSYW5nZSwgYjogRGF0ZSB8IG51bGwgfCBEYXRlUmFuZ2UpIHtcbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYSA9IHsgbWluOiBhLCBtYXg6IGEgfTtcbiAgfVxuICBpZiAoYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBiID0geyBtaW46IGIsIG1heDogYiB9O1xuICB9XG5cbiAgaWYgKCFhPy5taW4gfHwgIWEubWF4IHx8ICFiPy5taW4gfHwgIWIubWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuICEoZW5kT2ZEYXkoYS5tYXgpIDwgc3RhcnRPZkRheShiLm1pbikgfHwgc3RhcnRPZkRheShhLm1pbikgPiBlbmRPZkRheShiLm1heCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNsYW1wKGRhdGU6IERhdGUsIG1pbj86IERhdGUsIG1heD86IERhdGUpIHtcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxuXG4gIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWVGb3JDb21wYXJpc29uKHZhbHVlPzogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmdldFRpbWUoKTtcbiAgfVxuICByZXR1cm4gYCR7dmFsdWUubWluPy5nZXRUaW1lKCl9LSR7dmFsdWUubWF4Py5nZXRUaW1lKCl9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXIocHJvcHM6IERhdGVQaWNrZXJQcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChEYXRlUGlja2VyQ29udGV4dCk7XG5cbiAgY29uc3Qge1xuICAgIHZhbHVlLFxuICAgIHJhbmdlU2VsZWN0LFxuICAgIGxvY2FsZSxcbiAgICBmaXJzdERheU9mV2VlayA9IDEsXG4gICAgZGVmYXVsdERhdGVJblZpZXcsXG4gICAgcXVpY2tPcHRpb25zID0gWyd0b2RheScsICd0aGlzV2VlayddLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICBzaG93Q2FsZW5kYXJXZWVrLFxuICAgIGJsb2NrZWRSYW5nZXMgPSBbXSxcbiAgfSA9IGRlZmF1bHRzPERhdGVQaWNrZXJQcm9wcz4ocHJvcHMsIGNvbnRleHQpO1xuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHZhbHVlID0gZGF0ZUNsYW1wKHZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHtcbiAgICAgICAgbWluOiBkYXRlQ2xhbXAodmFsdWUubWluLCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgICAgbWF4OiBkYXRlQ2xhbXAodmFsdWUubWF4LCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgY29uc3QgQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5CdXR0b24pO1xuICBjb25zdCBJY29uQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5JY29uQnV0dG9uKTtcbiAgY29uc3QgQ2hldnJvblJpZ2h0ID0gdXNlVGhlbWUoKHQpID0+IHQuaWNvbnMuQ2hldnJvblJpZ2h0KTtcbiAgY29uc3QgY3NzVmFyaWFibGVzID0gdXNlQ3NzVmFyaWFibGVzKCk7XG4gIGZ1bmN0aW9uIGdldERheUNzc1N0eWxlcyh7XG4gICAgZGlzYWJsZWQsXG4gICAgcHJldk1vbnRoLFxuICAgIG5leHRNb250aCxcbiAgICB0b2RheSxcbiAgICBibG9ja2VkLFxuICAgIHNlbGVjdGVkLFxuICAgIHByZVNlbGVjdGVkLFxuICB9OiB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZNb250aD86IGJvb2xlYW47XG4gICAgbmV4dE1vbnRoPzogYm9vbGVhbjtcbiAgICB0b2RheT86IGJvb2xlYW47XG4gICAgYmxvY2tlZD86IGJvb2xlYW47XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIHByZVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgfSk6IEludGVycG9sYXRpb248VGhlbWU+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGN1cnNvcjogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgIH0sXG4gICAgICAocHJldk1vbnRoIHx8IG5leHRNb250aCkgJiYge1xuICAgICAgICBjb2xvcjogZ3JheSxcbiAgICAgIH0sXG4gICAgICB0b2RheSAmJiB7XG4gICAgICAgIG91dGxpbmU6ICcxcHggc29saWQgdmFyKC0tc2Vjb25kYXJ5TWFpbiknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1ibG9ja2VkQ29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeU1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJlxuICAgICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgJzo6YmVmb3JlJzoge1xuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgICAgIGNsaXBQYXRoOiAncG9seWdvbigwIDAsIDAgNTAlLCA1MCUgMCknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBwcmVTZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TGlnaHQpJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBjb25zdCBtb3VudFRpbWUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKCksIFtdKTtcbiAgY29uc3QgW2RpcnR5LCBzZXREaXJ0eV0gPSB1c2VTdGF0ZTxQYXJ0aWFsPERhdGVSYW5nZT4+KCk7XG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlPERhdGU+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFtnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWUpLCBnZXRWYWx1ZUZvckNvbXBhcmlzb24oZGVmYXVsdERhdGVJblZpZXcpLCBtb3VudFRpbWVdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICB9XG4gIH0sIFtyYW5nZVNlbGVjdF0pO1xuXG4gIGZ1bmN0aW9uIHNldChtaW4/OiBEYXRlLCBtYXg/OiBEYXRlLCBlZGl0PzogJ21pbicgfCAnbWF4Jykge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIG9uQ2hhbmdlKG1pbiA/PyBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobWluICYmIG1heCAmJiBtaW4gPiBtYXgpIHtcbiAgICAgIGlmIChlZGl0ID09PSAnbWluJykge1xuICAgICAgICBtYXggPSBtaW47XG4gICAgICB9IGVsc2UgaWYgKGVkaXQgPT09ICdtYXgnKSB7XG4gICAgICAgIG1pbiA9IG1heDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFttaW4sIG1heF0gPSBbbWF4LCBtaW5dO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghbWluID09PSAhbWF4KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgICAgb25DaGFuZ2UobWluICYmIG1heCA/IHsgbWluLCBtYXg6IGVuZE9mRGF5KG1heCkgfSA6IG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXREaXJ0eSh7IG1pbiwgbWF4IH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZvcm1hdE1vbnRoID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBtb250aDogJ2xvbmcnIH0pO1xuICAgIHJldHVybiAobW9udGg6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKDIwMjEsIG1vbnRoKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICBjb25zdCBmb3JtYXRZZWFyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gICAgcmV0dXJuICh5ZWFyOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSh5ZWFyLCAwLCAxKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY3NzPXtjc3NWYXJpYWJsZXN9PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2Jhc2VsaW5lJyxcbiAgICAgICAgICBnYXA6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICB2YWx1ZT17bWluID8/IG51bGx9XG4gICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQoZGF0ZSA/PyB1bmRlZmluZWQsIG1heCwgJ21pbicpfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAvPlxuXG4gICAgICAgIHtyYW5nZVNlbGVjdCAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHsnIC0gJ31cbiAgICAgICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICAgICAgdmFsdWU9e21heCA/PyBudWxsfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChtaW4sIGRhdGUgPz8gdW5kZWZpbmVkLCAnbWF4Jyl9XG4gICAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7Y2FsZW5kYXJzLm1hcCgoeyBtb250aCwgeWVhciwgd2Vla3MgfSkgPT4gKFxuICAgICAgICA8ZGl2IGtleT17YCR7bW9udGh9JHt5ZWFyfWB9IGNzcz17eyBkaXNwbGF5OiAnZ3JpZCcgfX0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIG1hcmdpbjogJ2NhbGModmFyKC0tc3BhY2luZykgKiA0KSAwJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRCYWNrUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNzcz17eyB0cmFuc2Zvcm06ICdyb3RhdGUzZCgwLCAwLCAxLCAxODBkZWcpJyB9fSAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2IGNzcz17eyBkaXNwbGF5OiAnZmxleCcgfX0+XG4gICAgICAgICAgICAgIHtmb3JtYXRNb250aChtb250aCl9IHtmb3JtYXRZZWFyKHllYXIpfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0Rm9yd2FyZFByb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KDgsIG1heC1jb250ZW50KScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGV4dCBpZD1cImNhbGVuZGFyV2Vla1wiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3dlZWtEYXlzLm1hcCgoX3YsIHdlZWtEYXkpID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGtleT17d2Vla0RheX1cbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Zm9ybWF0V2Vla2RheSh3ZWVrRGF5KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cblxuICAgICAgICAgICAge3dlZWtzLm1hcCgod2VlaywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla1N0YXJ0ID0gd2Vla1swXSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRW5kID0gd2Vla1s2XSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICFyYW5nZVNlbGVjdCB8fFxuICAgICAgICAgICAgICAgIChtaW5EYXRlICYmIHdlZWtFbmQuZGF0ZSA8IG1pbkRhdGUpIHx8XG4gICAgICAgICAgICAgICAgKG1heERhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGcmFnbWVudCBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogd2Vla0Rpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2Vla0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluID0gbWluRGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA8IG1pbkRhdGUgPyBtaW5EYXRlIDogd2Vla1N0YXJ0LmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXggPSBtYXhEYXRlICYmIHdlZWtFbmQuZGF0ZSA+IG1heERhdGUgPyBtYXhEYXRlIDogd2Vla0VuZC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG1pbiwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2dldENhbGVuZGFyV2Vlaygod2Vla1swXSBhcyBEYXRlT2JqKS5kYXRlKX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICB7d2Vlay5tYXAoKGRhdGVPYmplY3QsIGRheUluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0ZU9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17ZGF5SW5kZXh9IC8+O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwcmV2TW9udGgsIG5leHRNb250aCwgZGF0ZSB9ID0gZGF0ZU9iamVjdDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9kYXkgPSBzdGFydE9mRGF5KGRhdGUpLmdldFRpbWUoKSA9PT0gbm93LmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzYWJsZWQgPSAobWluRGF0ZSAmJiBkYXRlIDwgbWluRGF0ZSkgfHwgKG1heERhdGUgJiYgZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICBkYXRlLmdldFRpbWUoKSA9PT0gbWluPy5nZXRUaW1lKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAobWluICYmIG1heCAmJiBkYXRlSW50ZXJzZWN0KGRhdGUsIHsgbWluLCBtYXggfSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVTZWxlY3RlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgIWRpc2FibGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgKGRhdGUuZ2V0VGltZSgpID09PSBob3ZlcmVkPy5nZXRUaW1lKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIW1heCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBob3ZlcmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVJbnRlcnNlY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4gPD0gaG92ZXJlZCA/IHsgbWluLCBtYXg6IGhvdmVyZWQgfSA6IHsgbWluOiBob3ZlcmVkLCBtYXg6IG1pbiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICApKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrZWQgPSBibG9ja2VkUmFuZ2VzLnNvbWUoKHJhbmdlKSA9PiBkYXRlSW50ZXJzZWN0KGRhdGUsIHJhbmdlKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7aW5kZXh9LSR7ZGF5SW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Z2V0RGF5Q3NzU3R5bGVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZVNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0RGF0ZVByb3BzKHsgZGF0ZU9iajogZGF0ZU9iamVjdCB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbikgc2V0KG1pbiwgZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzZXQoZGF0ZSwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdmVyPXsoKSA9PiBzZXRIb3ZlcmVkKGRhdGUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3V0PXsoKSA9PiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2RhdGUuZ2V0RGF0ZSgpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICkpfVxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIG1hcmdpblRvcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXNvbHZlZFF1aWNrT3B0aW9uc31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19 */",
|
|
986
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdlaUIiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgZW5kT2ZXZWVrID0gbmV3IERhdGUoXG4gICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgIGRhdGUuZ2V0TW9udGgoKSxcbiAgICBkYXRlLmdldERhdGUoKSArICg3IC0gKGRhdGUuZ2V0RGF5KCkgfHwgNykpLFxuICApO1xuXG4gIGNvbnN0IHllYXIgPSBlbmRPZldlZWsuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmlyc3REYXlPZlllYXIgPSBuZXcgRGF0ZSh5ZWFyLCAwLCAxKTtcbiAgY29uc3QgZGF5T2ZZZWFyID1cbiAgICBNYXRoLmZsb29yKFxuICAgICAgKGVuZE9mV2Vlay5nZXRUaW1lKCkgLVxuICAgICAgICBmaXJzdERheU9mWWVhci5nZXRUaW1lKCkgK1xuICAgICAgICAoZW5kT2ZXZWVrLmdldFRpbWV6b25lT2Zmc2V0KCkgLSBmaXJzdERheU9mWWVhci5nZXRUaW1lem9uZU9mZnNldCgpKSkgL1xuICAgICAgICBNU19QRVJfREFZLFxuICAgICkgKyAxO1xuICBjb25zdCB3ZWVrT2ZZZWFyID0gTWF0aC5mbG9vcigoMyArIGRheU9mWWVhcikgLyA3KTtcblxuICBpZiAod2Vla09mWWVhciA9PT0gMCkge1xuICAgIHJldHVybiAoXG4gICAgICBnZXRDYWxlbmRhcldlZWsoXG4gICAgICAgIG5ldyBEYXRlKGVuZE9mV2Vlay5nZXRGdWxsWWVhcigpLCBlbmRPZldlZWsuZ2V0TW9udGgoKSwgZW5kT2ZXZWVrLmdldERhdGUoKSAtIDcpLFxuICAgICAgKSArIDFcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHdlZWtPZlllYXI7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChcbiAgYTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGI6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsIHwgdW5kZWZpbmVkLFxuKSB7XG4gIGlmIChhIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGEgPSB7IG1pbjogYSwgbWF4OiBhIH07XG4gIH1cbiAgaWYgKGIgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYiA9IHsgbWluOiBiLCBtYXg6IGIgfTtcbiAgfVxuXG4gIGlmICghYT8ubWluIHx8ICFhLm1heCB8fCAhYj8ubWluIHx8ICFiLm1heCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAhKGVuZE9mRGF5KGEubWF4KSA8IHN0YXJ0T2ZEYXkoYi5taW4pIHx8IHN0YXJ0T2ZEYXkoYS5taW4pID4gZW5kT2ZEYXkoYi5tYXgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVDbGFtcChkYXRlOiBEYXRlLCBtaW4/OiBEYXRlLCBtYXg/OiBEYXRlKSB7XG4gIGlmIChtaW4gJiYgZGF0ZSA8IG1pbikge1xuICAgIHJldHVybiBtaW47XG4gIH1cblxuICBpZiAobWF4ICYmIGRhdGUgPiBtYXgpIHtcbiAgICByZXR1cm4gbWF4O1xuICB9XG5cbiAgcmV0dXJuIGRhdGU7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlRm9yQ29tcGFyaXNvbih2YWx1ZT86IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiB2YWx1ZS5nZXRUaW1lKCk7XG4gIH1cbiAgcmV0dXJuIGAke3ZhbHVlLm1pbj8uZ2V0VGltZSgpfS0ke3ZhbHVlLm1heD8uZ2V0VGltZSgpfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlUGlja2VyKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRGF0ZVBpY2tlckNvbnRleHQpO1xuXG4gIGNvbnN0IHtcbiAgICB2YWx1ZSxcbiAgICByYW5nZVNlbGVjdCxcbiAgICBsb2NhbGUsXG4gICAgZmlyc3REYXlPZldlZWsgPSAxLFxuICAgIGRlZmF1bHREYXRlSW5WaWV3LFxuICAgIHF1aWNrT3B0aW9ucyA9IFsndG9kYXknLCAndGhpc1dlZWsnXSxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gICAgc2hvd0NhbGVuZGFyV2VlayxcbiAgICBibG9ja2VkUmFuZ2VzID0gW10sXG4gIH0gPSBkZWZhdWx0czxEYXRlUGlja2VyUHJvcHM+KHByb3BzLCBjb250ZXh0KTtcblxuICBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICB2YWx1ZSA9IGRhdGVDbGFtcCh2YWx1ZSwgbWluRGF0ZSwgbWF4RGF0ZSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgdmFsdWUgPSB7XG4gICAgICAgIG1pbjogZGF0ZUNsYW1wKHZhbHVlLm1pbiwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICAgIG1heDogZGF0ZUNsYW1wKHZhbHVlLm1heCwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHByb3BzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0IEJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuQnV0dG9uKTtcbiAgY29uc3QgSWNvbkJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuSWNvbkJ1dHRvbik7XG4gIGNvbnN0IENoZXZyb25SaWdodCA9IHVzZVRoZW1lKCh0KSA9PiB0Lmljb25zLkNoZXZyb25SaWdodCk7XG4gIGNvbnN0IGNzc1ZhcmlhYmxlcyA9IHVzZUNzc1ZhcmlhYmxlcygpO1xuICBmdW5jdGlvbiBnZXREYXlDc3NTdHlsZXMoe1xuICAgIGRpc2FibGVkLFxuICAgIHByZXZNb250aCxcbiAgICBuZXh0TW9udGgsXG4gICAgdG9kYXksXG4gICAgYmxvY2tlZCxcbiAgICBzZWxlY3RlZCxcbiAgICBwcmVTZWxlY3RlZCxcbiAgfToge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBwcmV2TW9udGg/OiBib29sZWFuO1xuICAgIG5leHRNb250aD86IGJvb2xlYW47XG4gICAgdG9kYXk/OiBib29sZWFuO1xuICAgIGJsb2NrZWQ/OiBib29sZWFuO1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgICBwcmVTZWxlY3RlZD86IGJvb2xlYW47XG4gIH0pOiBJbnRlcnBvbGF0aW9uPFRoZW1lPiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICBjdXJzb3I6IGRpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICB9LFxuICAgICAgKHByZXZNb250aCB8fCBuZXh0TW9udGgpICYmIHtcbiAgICAgICAgY29sb3I6IGdyYXksXG4gICAgICB9LFxuICAgICAgdG9kYXkgJiYge1xuICAgICAgICBvdXRsaW5lOiAnMXB4IHNvbGlkIHZhcigtLXNlY29uZGFyeU1haW4pJyxcbiAgICAgIH0sXG4gICAgICBibG9ja2VkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tYmxvY2tlZENvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIHNlbGVjdGVkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLXByaW1hcnlNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiZcbiAgICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICc6OmJlZm9yZSc6IHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICdcIlwiJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICBib3R0b206IDAsXG4gICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgICAgICBjbGlwUGF0aDogJ3BvbHlnb24oMCAwLCAwIDUwJSwgNTAlIDApJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgcHJlU2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeUxpZ2h0KScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgY29uc3QgbW91bnRUaW1lID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgpLCBbXSk7XG4gIGNvbnN0IFtkaXJ0eSwgc2V0RGlydHldID0gdXNlU3RhdGU8UGFydGlhbDxEYXRlUmFuZ2U+PigpO1xuICBjb25zdCBbaG92ZXJlZCwgc2V0SG92ZXJlZF0gPSB1c2VTdGF0ZTxEYXRlUmFuZ2U+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFtnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWUpLCBnZXRWYWx1ZUZvckNvbXBhcmlzb24oZGVmYXVsdERhdGVJblZpZXcpLCBtb3VudFRpbWVdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICB9XG4gIH0sIFtyYW5nZVNlbGVjdF0pO1xuXG4gIGZ1bmN0aW9uIHNldChtaW4/OiBEYXRlLCBtYXg/OiBEYXRlLCBlZGl0PzogJ21pbicgfCAnbWF4Jykge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIG9uQ2hhbmdlKG1pbiA/PyBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobWluICYmIG1heCAmJiBtaW4gPiBtYXgpIHtcbiAgICAgIGlmIChlZGl0ID09PSAnbWluJykge1xuICAgICAgICBtYXggPSBtaW47XG4gICAgICB9IGVsc2UgaWYgKGVkaXQgPT09ICdtYXgnKSB7XG4gICAgICAgIG1pbiA9IG1heDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFttaW4sIG1heF0gPSBbbWF4LCBtaW5dO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghbWluID09PSAhbWF4KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgICAgb25DaGFuZ2UobWluICYmIG1heCA/IHsgbWluLCBtYXg6IGVuZE9mRGF5KG1heCkgfSA6IG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXREaXJ0eSh7IG1pbiwgbWF4IH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZvcm1hdE1vbnRoID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBtb250aDogJ2xvbmcnIH0pO1xuICAgIHJldHVybiAobW9udGg6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKDIwMjEsIG1vbnRoKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICBjb25zdCBmb3JtYXRZZWFyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gICAgcmV0dXJuICh5ZWFyOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSh5ZWFyLCAwLCAxKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY3NzPXtjc3NWYXJpYWJsZXN9PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2Jhc2VsaW5lJyxcbiAgICAgICAgICBnYXA6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICB2YWx1ZT17bWluID8/IG51bGx9XG4gICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQoZGF0ZSA/PyB1bmRlZmluZWQsIG1heCwgJ21pbicpfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAvPlxuXG4gICAgICAgIHtyYW5nZVNlbGVjdCAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHsnIC0gJ31cbiAgICAgICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICAgICAgdmFsdWU9e21heCA/PyBudWxsfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChtaW4sIGRhdGUgPz8gdW5kZWZpbmVkLCAnbWF4Jyl9XG4gICAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7Y2FsZW5kYXJzLm1hcCgoeyBtb250aCwgeWVhciwgd2Vla3MgfSkgPT4gKFxuICAgICAgICA8ZGl2IGtleT17YCR7bW9udGh9JHt5ZWFyfWB9IGNzcz17eyBkaXNwbGF5OiAnZ3JpZCcgfX0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIG1hcmdpbjogJ2NhbGModmFyKC0tc3BhY2luZykgKiA0KSAwJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRCYWNrUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNzcz17eyB0cmFuc2Zvcm06ICdyb3RhdGUzZCgwLCAwLCAxLCAxODBkZWcpJyB9fSAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2IGNzcz17eyBkaXNwbGF5OiAnZmxleCcgfX0+XG4gICAgICAgICAgICAgIHtmb3JtYXRNb250aChtb250aCl9IHtmb3JtYXRZZWFyKHllYXIpfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0Rm9yd2FyZFByb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KDgsIG1heC1jb250ZW50KScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGV4dCBpZD1cImNhbGVuZGFyV2Vla1wiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3dlZWtEYXlzLm1hcCgoX3YsIHdlZWtEYXkpID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGtleT17d2Vla0RheX1cbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Zm9ybWF0V2Vla2RheSh3ZWVrRGF5KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cblxuICAgICAgICAgICAge3dlZWtzLm1hcCgod2VlaywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla1N0YXJ0ID0gd2Vla1swXSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRW5kID0gd2Vla1s2XSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICFyYW5nZVNlbGVjdCB8fFxuICAgICAgICAgICAgICAgIChtaW5EYXRlICYmIHdlZWtFbmQuZGF0ZSA8IG1pbkRhdGUpIHx8XG4gICAgICAgICAgICAgICAgKG1heERhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGcmFnbWVudCBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogd2Vla0Rpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2Vla0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluID0gbWluRGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA8IG1pbkRhdGUgPyBtaW5EYXRlIDogd2Vla1N0YXJ0LmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXggPSBtYXhEYXRlICYmIHdlZWtFbmQuZGF0ZSA+IG1heERhdGUgPyBtYXhEYXRlIDogd2Vla0VuZC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG1pbiwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAhd2Vla0Rpc2FibGVkICYmIHNldEhvdmVyZWQoeyBtaW46IHdlZWtTdGFydC5kYXRlLCBtYXg6IHdlZWtFbmQuZGF0ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+ICF3ZWVrRGlzYWJsZWQgJiYgc2V0SG92ZXJlZCh1bmRlZmluZWQpfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2dldENhbGVuZGFyV2Vlayh3ZWVrRW5kLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgIHt3ZWVrLm1hcCgoZGF0ZU9iamVjdCwgZGF5SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtkYXlJbmRleH0gLz47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZNb250aCwgbmV4dE1vbnRoLCBkYXRlIH0gPSBkYXRlT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZEYXkoZGF0ZSkuZ2V0VGltZSgpID09PSBub3cuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB8fCAobWF4RGF0ZSAmJiBkYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGUuZ2V0VGltZSgpID09PSBtaW4/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiYgbWF4ICYmIGRhdGVJbnRlcnNlY3QoZGF0ZSwgeyBtaW4sIG1heCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZUludGVyc2VjdChkYXRlLCBob3ZlcmVkKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUludGVyc2VjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA8PSBob3ZlcmVkLm1pblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IG1pbiwgbWF4OiBob3ZlcmVkLm1pbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHsgbWluOiBob3ZlcmVkLm1heCwgbWF4OiBtaW4gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja2VkID0gYmxvY2tlZFJhbmdlcy5zb21lKChyYW5nZSkgPT4gZGF0ZUludGVyc2VjdChkYXRlLCByYW5nZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake2luZGV4fS0ke2RheUluZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2dldERheUNzc1N0eWxlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldERhdGVQcm9wcyh7IGRhdGVPYmo6IGRhdGVPYmplY3QgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaW4pIHNldChtaW4sIGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc2V0KGRhdGUsIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3Zlcj17KCkgPT4gc2V0SG92ZXJlZCh7IG1pbjogZGF0ZSwgbWF4OiBkYXRlIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3V0PXsoKSA9PiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2RhdGUuZ2V0RGF0ZSgpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICkpfVxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIG1hcmdpblRvcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXNvbHZlZFF1aWNrT3B0aW9uc31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19 */",
|
|
987
987
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__$d
|
|
988
988
|
};
|
|
989
989
|
var _ref6 = process.env.NODE_ENV === "production" ? {
|
|
@@ -992,7 +992,7 @@ var _ref6 = process.env.NODE_ENV === "production" ? {
|
|
|
992
992
|
} : {
|
|
993
993
|
name: "ru3xfb-DatePicker",
|
|
994
994
|
styles: "justify-self:center;display:grid;grid-template-columns:repeat(8, max-content);label:DatePicker;",
|
|
995
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJkWSIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9zY2h1bW1hci10YWJsZS9zY2h1bW1hci10YWJsZS9zcmMvY29tcG9uZW50cy9kYXRlUGlja2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVPYmosIHVzZURheXplZCB9IGZyb20gJ2RheXplZCc7XG5pbXBvcnQge1xuICBGcmFnbWVudCxcbiAgUmVhY3ROb2RlLFxuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJy4uL2hvb2tzL3VzZVRoZW1lJztcbmltcG9ydCB7IGRlZmF1bHRzIH0gZnJvbSAnLi4vbWlzYy9kZWZhdWx0cyc7XG5pbXBvcnQgeyBncmF5IH0gZnJvbSAnLi4vdGhlbWUvZGVmYXVsdFRoZW1lL2RlZmF1bHRDbGFzc2VzJztcbmltcG9ydCB7IHVzZUNzc1ZhcmlhYmxlcyB9IGZyb20gJy4uL3RoZW1lL3VzZUNzc1ZhcmlhYmxlcyc7XG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tICcuL2RhdGVJbnB1dCc7XG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi90ZXh0JztcbmltcG9ydCB7IEludGVycG9sYXRpb24sIFRoZW1lIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG5leHBvcnQgdHlwZSBEYXRlUmFuZ2UgPSB7IG1pbjogRGF0ZTsgbWF4OiBEYXRlIH07XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJRdWlja09wdGlvbiA9XG4gIHwgJ3RvZGF5J1xuICB8ICd0aGlzV2VlaydcbiAgfCAndGhpc01vbnRoJ1xuICB8ICd0aGlzWWVhcidcbiAgfCAnbGFzdFNldmVuRGF5cydcbiAgfCAnbGFzdFRoaXJ0eURheXMnXG4gIHwgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgoKSA9PiBEYXRlIHwgRGF0ZVJhbmdlKSB9XG4gIHwgKChvbkNoYW5nZTogKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkgPT4gdm9pZCkgPT4gUmVhY3ROb2RlKTtcblxuZXhwb3J0IHR5cGUgRGF0ZVBpY2tlclByb3BzID0ge1xuICAvKiogQ3VycmVudGx5IHNlbGVjdGVkIGRheSBvciByYW5nZSBvZiBkYXlzLiAqL1xuICB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGw7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgZGF5IChyYW5nZSkgY2hhbmdlcy4gKi9cbiAgb25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQ7XG4gIC8qKiBDdXJyZW50bHkgdmlzaWJsZSBkYXRlLiAqL1xuICBkYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIENhbGxiYWNrIGZvciB3aGVuIHRoZSBjdXJyZW50bHkgdmlzaWJsZSBkYXRlIGNoYW5nZXMuICovXG4gIG9uRGF0ZUluVmlld0NoYW5nZT86ICh2YWx1ZTogRGF0ZSkgPT4gdm9pZDtcbiAgLyoqIElmIGVuYWJsZWQsIHJhbmdlcyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gIHJhbmdlU2VsZWN0PzogYm9vbGVhbjtcbiAgLyoqIFdoaWNoIGxvY2FsZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBjYWxlbmRhci4gKi9cbiAgbG9jYWxlPzogc3RyaW5nO1xuICAvKiogV2hpY2ggZGF5IG9mIHRoZSB3ZWVrIHNob3VsZCBiZSBpbiB0aGUgZmlyc3QgY29sdW1uLiAoMD1TdW5kYXksIDE9TW9uZGF5LCAuLi4pXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGZpcnN0RGF5T2ZXZWVrPzogMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNjtcbiAgLyoqIFdoaWNoIG1vbnRoIHRvIHNob3cgaW5pdGlhbGx5ICovXG4gIGRlZmF1bHREYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIFNob3cgYnV0dG9ucyB0byBxdWlja2x5IHNlbGVjdCBzdWdnZXN0ZWQgZGF0ZXMgb3IgZGF0ZSByYW5nZXMgKi9cbiAgcXVpY2tPcHRpb25zPzogRGF0ZVBpY2tlclF1aWNrT3B0aW9uW107XG4gIC8qKiBNaW5pbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICAvKiogRGF0ZSByYW5nZXMgdGhhdCBhcmUgdmlzdWFsbHkgbWFya2VkIGFzIGJsb2NrZWQgKi9cbiAgYmxvY2tlZFJhbmdlcz86IERhdGVSYW5nZVtdO1xuICBtaW5EYXRlPzogRGF0ZTtcbiAgLyoqIE1heGltdW0gc2VsZWN0YWJsZSBkYXRlICovXG4gIG1heERhdGU/OiBEYXRlO1xuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBjYWxlbmRhciB3ZWVrIGluIHRoZSBmaXJzdCBjb2x1bW4gKi9cbiAgc2hvd0NhbGVuZGFyV2Vlaz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBEYXRlUGlja2VyQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8UGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+Pj4oe30pO1xuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlclByb3ZpZGVyKHtcbiAgY2hpbGRyZW4sXG4gIC4uLnByb3BzXG59OiBQYXJ0aWFsPE9taXQ8RGF0ZVBpY2tlclByb3BzLCAndmFsdWUnIHwgJ29uQ2hhbmdlJz4+ICYgeyBjaGlsZHJlbj86IFJlYWN0Tm9kZSB9KSB7XG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbygoKSA9PiBwcm9wcywgW0pTT04uc3RyaW5naWZ5KHByb3BzKV0pO1xuXG4gIHJldHVybiA8RGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9EYXRlUGlja2VyQ29udGV4dC5Qcm92aWRlcj47XG59XG5cbmNvbnN0IHdlZWtEYXlzID0gWzAsIDEsIDIsIDMsIDQsIDUsIDZdIGFzIGNvbnN0O1xuXG4vKiogUm91bmRzIGEgZGF0ZSBkb3duIHRvIHRoZSBzdGFydCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IHN0YXJ0T2ZEYXkgPSAoZDogRGF0ZSkgPT4gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpKTtcblxuLyoqIFJvdW5kcyBhIGRhdGUgdXAgdG8gdGhlIGVuZCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IGVuZE9mRGF5ID0gKGQ6IERhdGUpID0+XG4gIG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSArIDEsIDAsIDAsIDAsIC0xKTtcblxuZXhwb3J0IGNvbnN0IGxhc3REYXlzID0gKGRheXM6IG51bWJlcik6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkYXlzICsgMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG5vdyksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdG9kYXkgPSAoKSA9PiBsYXN0RGF5cygxKTtcblxuZXhwb3J0IGNvbnN0IHRoaXNXZWVrID0gKGRlbHRhID0gMCwgZmlyc3REYXlPZldlZWsgPSAxKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcblxuICBsZXQgZGlmZiA9IG1pbi5nZXREYXkoKSAtIGZpcnN0RGF5T2ZXZWVrO1xuICBpZiAoZGlmZiA8IDApIHtcbiAgICBkaWZmICs9IDc7XG4gIH1cbiAgbWluLnNldERhdGUobWluLmdldERhdGUoKSAtIGRpZmYgKyBkZWx0YSAqIDcpO1xuXG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgKyA2KTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzTW9udGggPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aChtaW4uZ2V0TW9udGgoKSArIGRlbHRhKTtcbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldE1vbnRoKG1heC5nZXRNb250aCgpICsgMSk7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgLSAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzWWVhciA9IChkZWx0YSA9IDApOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZSgxKTtcbiAgbWluLnNldE1vbnRoKDApO1xuICBtaW4uc2V0RnVsbFllYXIobWluLmdldEZ1bGxZZWFyKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRGdWxsWWVhcihtYXguZ2V0RnVsbFllYXIoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5jb25zdCBNU19QRVJfREFZID0gMTAwMCAqIDYwICogNjAgKiAyNDtcbmV4cG9ydCBjb25zdCBnZXRDYWxlbmRhcldlZWsgPSAoZGF0ZTogRGF0ZSk6IG51bWJlciA9PiB7XG4gIC8vIElTTyA4NjAxOiBXZWVrIDEgaXMgdGhlIHdlZWsgd2l0aCB0aGUgZmlyc3QgVGh1cnNkYXkgb2YgdGhlIHllYXIuXG4gIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcblxuICBjb25zdCB5ID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBmZG95ID0gbmV3IERhdGUoeSwgMCwgMSk7XG4gIGNvbnN0IGRveSA9IE1hdGguZmxvb3IoXG4gICAgKGRhdGUuZ2V0VGltZSgpIC0gZmRveS5nZXRUaW1lKCkgKyAoZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIC0gZmRveS5nZXRUaW1lem9uZU9mZnNldCgpKSkgL1xuICAgICAgTVNfUEVSX0RBWSxcbiAgKTtcbiAgY29uc3QgZG93ID0gZmRveS5nZXREYXkoKTtcbiAgY29uc3QgdyA9IE1hdGguZmxvb3IoKDEwICsgZG95IC0gZG93KSAvIDcpO1xuXG4gIGlmICh3ID09PSAwKSB7XG4gICAgcmV0dXJuIGdldENhbGVuZGFyV2VlayhuZXcgRGF0ZSh5IC0gMSwgMTEsIDMxKSk7XG4gIH1cblxuICByZXR1cm4gdztcbn07XG5cbmV4cG9ydCBjb25zdCBjb21tb25RdWlja09wdGlvbnMgPSB7XG4gIHRvZGF5OiB7IGxhYmVsOiA8VGV4dCBpZD1cInRvZGF5XCIgLz4sIHZhbHVlOiB0b2RheSB9LFxuICB0aGlzV2VlazogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzV2Vla1wiIC8+LCB2YWx1ZTogKHByb3BzKSA9PiB0aGlzV2VlaygwLCBwcm9wcy5maXJzdERheU9mV2VlaykgfSxcbiAgdGhpc01vbnRoOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNNb250aFwiIC8+LCB2YWx1ZTogKCkgPT4gdGhpc01vbnRoKCkgfSxcbiAgdGhpc1llYXI6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1llYXJcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNZZWFyKCkgfSxcbiAgbGFzdFNldmVuRGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0U2V2ZW5EYXlzXCIgLz4sIHZhbHVlOiAoKSA9PiBsYXN0RGF5cyg3KSB9LFxuICBsYXN0VGhpcnR5RGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0VGhpcnR5RGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoMzApIH0sXG59IHNhdGlzZmllcyBSZWNvcmQ8XG4gIERhdGVQaWNrZXJRdWlja09wdGlvbiAmIHN0cmluZyxcbiAgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgocHJvcHM6IERhdGVQaWNrZXJQcm9wcykgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuPjtcblxuLyoqIFJldHVybnMgd2hldGhlciB0d28gZGF0ZXMgYW5kL29yIGRhdGUgcmFuZ2VzIGludGVyc2VjdC4gSW50ZXJzZWN0aW9uIGlzIGNvbnNpZGVyZWQgcGVyIGRheS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRlSW50ZXJzZWN0KGE6IERhdGUgfCBudWxsIHwgRGF0ZVJhbmdlLCBiOiBEYXRlIHwgbnVsbCB8IERhdGVSYW5nZSkge1xuICBpZiAoYSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBhID0geyBtaW46IGEsIG1heDogYSB9O1xuICB9XG4gIGlmIChiIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGIgPSB7IG1pbjogYiwgbWF4OiBiIH07XG4gIH1cblxuICBpZiAoIWE/Lm1pbiB8fCAhYS5tYXggfHwgIWI/Lm1pbiB8fCAhYi5tYXgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gIShlbmRPZkRheShhLm1heCkgPCBzdGFydE9mRGF5KGIubWluKSB8fCBzdGFydE9mRGF5KGEubWluKSA+IGVuZE9mRGF5KGIubWF4KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlQ2xhbXAoZGF0ZTogRGF0ZSwgbWluPzogRGF0ZSwgbWF4PzogRGF0ZSkge1xuICBpZiAobWluICYmIGRhdGUgPCBtaW4pIHtcbiAgICByZXR1cm4gbWluO1xuICB9XG5cbiAgaWYgKG1heCAmJiBkYXRlID4gbWF4KSB7XG4gICAgcmV0dXJuIG1heDtcbiAgfVxuXG4gIHJldHVybiBkYXRlO1xufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWU/OiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gdmFsdWUuZ2V0VGltZSgpO1xuICB9XG4gIHJldHVybiBgJHt2YWx1ZS5taW4/LmdldFRpbWUoKX0tJHt2YWx1ZS5tYXg/LmdldFRpbWUoKX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlcihwcm9wczogRGF0ZVBpY2tlclByb3BzKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERhdGVQaWNrZXJDb250ZXh0KTtcblxuICBjb25zdCB7XG4gICAgdmFsdWUsXG4gICAgcmFuZ2VTZWxlY3QsXG4gICAgbG9jYWxlLFxuICAgIGZpcnN0RGF5T2ZXZWVrID0gMSxcbiAgICBkZWZhdWx0RGF0ZUluVmlldyxcbiAgICBxdWlja09wdGlvbnMgPSBbJ3RvZGF5JywgJ3RoaXNXZWVrJ10sXG4gICAgbWluRGF0ZSxcbiAgICBtYXhEYXRlLFxuICAgIHNob3dDYWxlbmRhcldlZWssXG4gICAgYmxvY2tlZFJhbmdlcyA9IFtdLFxuICB9ID0gZGVmYXVsdHM8RGF0ZVBpY2tlclByb3BzPihwcm9wcywgY29udGV4dCk7XG5cbiAgZnVuY3Rpb24gb25DaGFuZ2UodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgdmFsdWUgPSBkYXRlQ2xhbXAodmFsdWUsIG1pbkRhdGUsIG1heERhdGUpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgIHZhbHVlID0ge1xuICAgICAgICBtaW46IGRhdGVDbGFtcCh2YWx1ZS5taW4sIG1pbkRhdGUsIG1heERhdGUpLFxuICAgICAgICBtYXg6IGRhdGVDbGFtcCh2YWx1ZS5tYXgsIG1pbkRhdGUsIG1heERhdGUpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBwcm9wcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICBjb25zdCBCdXR0b24gPSB1c2VUaGVtZSgodCkgPT4gdC5jb21wb25lbnRzLkJ1dHRvbik7XG4gIGNvbnN0IEljb25CdXR0b24gPSB1c2VUaGVtZSgodCkgPT4gdC5jb21wb25lbnRzLkljb25CdXR0b24pO1xuICBjb25zdCBDaGV2cm9uUmlnaHQgPSB1c2VUaGVtZSgodCkgPT4gdC5pY29ucy5DaGV2cm9uUmlnaHQpO1xuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB1c2VDc3NWYXJpYWJsZXMoKTtcbiAgZnVuY3Rpb24gZ2V0RGF5Q3NzU3R5bGVzKHtcbiAgICBkaXNhYmxlZCxcbiAgICBwcmV2TW9udGgsXG4gICAgbmV4dE1vbnRoLFxuICAgIHRvZGF5LFxuICAgIGJsb2NrZWQsXG4gICAgc2VsZWN0ZWQsXG4gICAgcHJlU2VsZWN0ZWQsXG4gIH06IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgcHJldk1vbnRoPzogYm9vbGVhbjtcbiAgICBuZXh0TW9udGg/OiBib29sZWFuO1xuICAgIHRvZGF5PzogYm9vbGVhbjtcbiAgICBibG9ja2VkPzogYm9vbGVhbjtcbiAgICBzZWxlY3RlZD86IGJvb2xlYW47XG4gICAgcHJlU2VsZWN0ZWQ/OiBib29sZWFuO1xuICB9KTogSW50ZXJwb2xhdGlvbjxUaGVtZT4ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgY3Vyc29yOiBkaXNhYmxlZCA/IHVuZGVmaW5lZCA6ICdwb2ludGVyJyxcbiAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgfSxcbiAgICAgIChwcmV2TW9udGggfHwgbmV4dE1vbnRoKSAmJiB7XG4gICAgICAgIGNvbG9yOiBncmF5LFxuICAgICAgfSxcbiAgICAgIHRvZGF5ICYmIHtcbiAgICAgICAgb3V0bGluZTogJzFweCBzb2xpZCB2YXIoLS1zZWNvbmRhcnlNYWluKScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ibG9ja2VkTWFpbiknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLWJsb2NrZWRDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TWFpbiknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLXByaW1hcnlDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgICBibG9ja2VkICYmXG4gICAgICAgIHNlbGVjdGVkICYmIHtcbiAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAnOjpiZWZvcmUnOiB7XG4gICAgICAgICAgICBjb250ZW50OiAnXCJcIicsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ibG9ja2VkTWFpbiknLFxuICAgICAgICAgICAgY2xpcFBhdGg6ICdwb2x5Z29uKDAgMCwgMCA1MCUsIDUwJSAwKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIHByZVNlbGVjdGVkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLXByaW1hcnlMaWdodCknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLXByaW1hcnlDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0IG1vdW50VGltZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoKSwgW10pO1xuICBjb25zdCBbZGlydHksIHNldERpcnR5XSA9IHVzZVN0YXRlPFBhcnRpYWw8RGF0ZVJhbmdlPj4oKTtcbiAgY29uc3QgW2hvdmVyZWQsIHNldEhvdmVyZWRdID0gdXNlU3RhdGU8RGF0ZT4oKTtcbiAgY29uc3QgW2RhdGVJblZpZXdMb2NhbCwgc2V0RGF0ZUluVmlld0xvY2FsXSA9IHVzZVN0YXRlPERhdGU+KGRlZmF1bHREYXRlSW5WaWV3ID8/IG1vdW50VGltZSk7XG4gIGNvbnN0IGRhdGVJblZpZXcgPSBwcm9wcy5kYXRlSW5WaWV3ID8/IGRhdGVJblZpZXdMb2NhbDtcblxuICBmdW5jdGlvbiBzZXREYXRlSW5WaWV3KGRhdGU6IERhdGUpIHtcbiAgICBzZXREYXRlSW5WaWV3TG9jYWwoZGF0ZSk7XG4gICAgcHJvcHMub25EYXRlSW5WaWV3Q2hhbmdlPy4oZGF0ZSk7XG4gIH1cblxuICBjb25zdCBtaW4gPSBkaXJ0eSA/IGRpcnR5Lm1pbiA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWU/Lm1pbjtcbiAgY29uc3QgbWF4ID0gZGlydHkgPyBkaXJ0eS5tYXggOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5tYXg7XG5cbiAgY29uc3QgcmVzb2x2ZWRRdWlja09wdGlvbnMgPSBbLi4ucXVpY2tPcHRpb25zLCB7IGxhYmVsOiA8VGV4dCBpZD1cInJlc2V0XCIgLz4sIHZhbHVlOiBudWxsIH1dLm1hcChcbiAgICAob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKG9wdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSB9ID0gdHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycgPyBjb21tb25RdWlja09wdGlvbnNbb3B0aW9uXSA6IG9wdGlvbjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKHByb3BzKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApO1xuICAgIH0sXG4gICk7XG5cbiAgY29uc3QgeyBjYWxlbmRhcnMsIGdldEJhY2tQcm9wcywgZ2V0Rm9yd2FyZFByb3BzLCBnZXREYXRlUHJvcHMgfSA9IHVzZURheXplZCh7XG4gICAgb25EYXRlU2VsZWN0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBmaXJzdERheU9mV2VlayxcbiAgICBzaG93T3V0c2lkZURheXM6IHRydWUsXG4gICAgZGF0ZTogZGF0ZUluVmlldyxcbiAgICBvbk9mZnNldENoYW5nZWQ6IChvZmZzZXQpID0+XG4gICAgICBzZXREYXRlSW5WaWV3KG5ldyBEYXRlKGRhdGVJblZpZXcuZ2V0RnVsbFllYXIoKSwgZGF0ZUluVmlldy5nZXRNb250aCgpICsgb2Zmc2V0KSksXG4gICAgb2Zmc2V0OiAwLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgfSk7XG4gIGNvbnN0IG5vdyA9IHVzZU1lbW8oKCkgPT4gc3RhcnRPZkRheShuZXcgRGF0ZSgpKSwgW10pO1xuXG4gIGNvbnN0IGZvcm1hdFdlZWtkYXkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHdlZWtkYXk6ICdzaG9ydCcgfSk7XG4gICAgcmV0dXJuICh3ZWVrRGF5OiBudW1iZXIpID0+XG4gICAgICBmb3JtYXQobmV3IERhdGUoRGF0ZS5VVEMoMjAyMSwgNywgKCh3ZWVrRGF5ICsgZmlyc3REYXlPZldlZWspICUgNykgKyAxKSkpO1xuICB9LCBbbG9jYWxlLCBmaXJzdERheU9mV2Vla10pO1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhcbiAgICAgICAgdmFsdWUgPT09IG51bGwgPyBkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUgOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlLm1heCxcbiAgICAgICksXG4gICAgW2dldFZhbHVlRm9yQ29tcGFyaXNvbih2YWx1ZSksIGdldFZhbHVlRm9yQ29tcGFyaXNvbihkZWZhdWx0RGF0ZUluVmlldyksIG1vdW50VGltZV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSwgW3JhbmdlU2VsZWN0XSk7XG5cbiAgZnVuY3Rpb24gc2V0KG1pbj86IERhdGUsIG1heD86IERhdGUsIGVkaXQ/OiAnbWluJyB8ICdtYXgnKSB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgb25DaGFuZ2UobWluID8/IG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChtaW4gJiYgbWF4ICYmIG1pbiA+IG1heCkge1xuICAgICAgaWYgKGVkaXQgPT09ICdtaW4nKSB7XG4gICAgICAgIG1heCA9IG1pbjtcbiAgICAgIH0gZWxzZSBpZiAoZWRpdCA9PT0gJ21heCcpIHtcbiAgICAgICAgbWluID0gbWF4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgW21pbiwgbWF4XSA9IFttYXgsIG1pbl07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFtaW4gPT09ICFtYXgpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICBvbkNoYW5nZShtaW4gJiYgbWF4ID8geyBtaW4sIG1heDogZW5kT2ZEYXkobWF4KSB9IDogbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldERpcnR5KHsgbWluLCBtYXggfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZm9ybWF0TW9udGggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XG4gICAgcmV0dXJuIChtb250aDogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoMjAyMSwgbW9udGgpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIGNvbnN0IGZvcm1hdFllYXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHllYXI6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gKHllYXI6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKHllYXIsIDAsIDEpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjc3M9e2Nzc1ZhcmlhYmxlc30+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiAnYmFzZWxpbmUnLFxuICAgICAgICAgIGdhcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgIHZhbHVlPXttaW4gPz8gbnVsbH1cbiAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChkYXRlID8/IHVuZGVmaW5lZCwgbWF4LCAnbWluJyl9XG4gICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgIC8+XG5cbiAgICAgICAge3JhbmdlU2VsZWN0ICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgeycgLSAnfVxuICAgICAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgICAgICB2YWx1ZT17bWF4ID8/IG51bGx9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KG1pbiwgZGF0ZSA/PyB1bmRlZmluZWQsICdtYXgnKX1cbiAgICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHtjYWxlbmRhcnMubWFwKCh7IG1vbnRoLCB5ZWFyLCB3ZWVrcyB9KSA9PiAoXG4gICAgICAgIDxkaXYga2V5PXtgJHttb250aH0ke3llYXJ9YH0gY3NzPXt7IGRpc3BsYXk6ICdncmlkJyB9fT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgbWFyZ2luOiAnY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpIDAnLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEJhY2tQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgY3NzPXt7IHRyYW5zZm9ybTogJ3JvdGF0ZTNkKDAsIDAsIDEsIDE4MGRlZyknIH19IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY3NzPXt7IGRpc3BsYXk6ICdmbGV4JyB9fT5cbiAgICAgICAgICAgICAge2Zvcm1hdE1vbnRoKG1vbnRoKX0ge2Zvcm1hdFllYXIoeWVhcil9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRGb3J3YXJkUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICdyZXBlYXQoOCwgbWF4LWNvbnRlbnQpJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUZXh0IGlkPVwiY2FsZW5kYXJXZWVrXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7d2Vla0RheXMubWFwKChfdiwgd2Vla0RheSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAga2V5PXt3ZWVrRGF5fVxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtmb3JtYXRXZWVrZGF5KHdlZWtEYXkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuXG4gICAgICAgICAgICB7d2Vla3MubWFwKCh3ZWVrLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrU3RhcnQgPSB3ZWVrWzBdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtFbmQgPSB3ZWVrWzZdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtEaXNhYmxlZCA9XG4gICAgICAgICAgICAgICAgIXJhbmdlU2VsZWN0IHx8XG4gICAgICAgICAgICAgICAgKG1pbkRhdGUgJiYgd2Vla0VuZC5kYXRlIDwgbWluRGF0ZSkgfHxcbiAgICAgICAgICAgICAgICAobWF4RGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiB3ZWVrRGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ZWVrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW4gPSBtaW5EYXRlICYmIHdlZWtTdGFydC5kYXRlIDwgbWluRGF0ZSA/IG1pbkRhdGUgOiB3ZWVrU3RhcnQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heCA9IG1heERhdGUgJiYgd2Vla0VuZC5kYXRlID4gbWF4RGF0ZSA/IG1heERhdGUgOiB3ZWVrRW5kLmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXQobWluLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7Z2V0Q2FsZW5kYXJXZWVrKCh3ZWVrWzBdIGFzIERhdGVPYmopLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgIHt3ZWVrLm1hcCgoZGF0ZU9iamVjdCwgZGF5SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtkYXlJbmRleH0gLz47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZNb250aCwgbmV4dE1vbnRoLCBkYXRlIH0gPSBkYXRlT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZEYXkoZGF0ZSkuZ2V0VGltZSgpID09PSBub3cuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB8fCAobWF4RGF0ZSAmJiBkYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGUuZ2V0VGltZSgpID09PSBtaW4/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiYgbWF4ICYmIGRhdGVJbnRlcnNlY3QoZGF0ZSwgeyBtaW4sIG1heCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZS5nZXRUaW1lKCkgPT09IGhvdmVyZWQ/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUludGVyc2VjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA8PSBob3ZlcmVkID8geyBtaW4sIG1heDogaG92ZXJlZCB9IDogeyBtaW46IGhvdmVyZWQsIG1heDogbWluIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tlZCA9IGJsb2NrZWRSYW5nZXMuc29tZSgocmFuZ2UpID0+IGRhdGVJbnRlcnNlY3QoZGF0ZSwgcmFuZ2UpKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtpbmRleH0tJHtkYXlJbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtnZXREYXlDc3NTdHlsZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldk1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvZGF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZXREYXRlUHJvcHMoeyBkYXRlT2JqOiBkYXRlT2JqZWN0IH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluKSBzZXQobWluLCBkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNldChkYXRlLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+IHNldEhvdmVyZWQoZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+IHNldEhvdmVyZWQodW5kZWZpbmVkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGF0ZS5nZXREYXRlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSl9XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgbWFyZ2luVG9wOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3Jlc29sdmVkUXVpY2tPcHRpb25zfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0= */",
|
|
995
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBlWSIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay9zY2h1bW1hci10YWJsZS9zY2h1bW1hci10YWJsZS9zcmMvY29tcG9uZW50cy9kYXRlUGlja2VyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVPYmosIHVzZURheXplZCB9IGZyb20gJ2RheXplZCc7XG5pbXBvcnQge1xuICBGcmFnbWVudCxcbiAgUmVhY3ROb2RlLFxuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJy4uL2hvb2tzL3VzZVRoZW1lJztcbmltcG9ydCB7IGRlZmF1bHRzIH0gZnJvbSAnLi4vbWlzYy9kZWZhdWx0cyc7XG5pbXBvcnQgeyBncmF5IH0gZnJvbSAnLi4vdGhlbWUvZGVmYXVsdFRoZW1lL2RlZmF1bHRDbGFzc2VzJztcbmltcG9ydCB7IHVzZUNzc1ZhcmlhYmxlcyB9IGZyb20gJy4uL3RoZW1lL3VzZUNzc1ZhcmlhYmxlcyc7XG5pbXBvcnQgeyBEYXRlSW5wdXQgfSBmcm9tICcuL2RhdGVJbnB1dCc7XG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi90ZXh0JztcbmltcG9ydCB7IEludGVycG9sYXRpb24sIFRoZW1lIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG5leHBvcnQgdHlwZSBEYXRlUmFuZ2UgPSB7IG1pbjogRGF0ZTsgbWF4OiBEYXRlIH07XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJRdWlja09wdGlvbiA9XG4gIHwgJ3RvZGF5J1xuICB8ICd0aGlzV2VlaydcbiAgfCAndGhpc01vbnRoJ1xuICB8ICd0aGlzWWVhcidcbiAgfCAnbGFzdFNldmVuRGF5cydcbiAgfCAnbGFzdFRoaXJ0eURheXMnXG4gIHwgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgoKSA9PiBEYXRlIHwgRGF0ZVJhbmdlKSB9XG4gIHwgKChvbkNoYW5nZTogKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkgPT4gdm9pZCkgPT4gUmVhY3ROb2RlKTtcblxuZXhwb3J0IHR5cGUgRGF0ZVBpY2tlclByb3BzID0ge1xuICAvKiogQ3VycmVudGx5IHNlbGVjdGVkIGRheSBvciByYW5nZSBvZiBkYXlzLiAqL1xuICB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGw7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgZGF5IChyYW5nZSkgY2hhbmdlcy4gKi9cbiAgb25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQ7XG4gIC8qKiBDdXJyZW50bHkgdmlzaWJsZSBkYXRlLiAqL1xuICBkYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIENhbGxiYWNrIGZvciB3aGVuIHRoZSBjdXJyZW50bHkgdmlzaWJsZSBkYXRlIGNoYW5nZXMuICovXG4gIG9uRGF0ZUluVmlld0NoYW5nZT86ICh2YWx1ZTogRGF0ZSkgPT4gdm9pZDtcbiAgLyoqIElmIGVuYWJsZWQsIHJhbmdlcyBjYW4gYmUgc2VsZWN0ZWQuICovXG4gIHJhbmdlU2VsZWN0PzogYm9vbGVhbjtcbiAgLyoqIFdoaWNoIGxvY2FsZSB0byB1c2UgdG8gcmVuZGVyIHRoZSBjYWxlbmRhci4gKi9cbiAgbG9jYWxlPzogc3RyaW5nO1xuICAvKiogV2hpY2ggZGF5IG9mIHRoZSB3ZWVrIHNob3VsZCBiZSBpbiB0aGUgZmlyc3QgY29sdW1uLiAoMD1TdW5kYXksIDE9TW9uZGF5LCAuLi4pXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGZpcnN0RGF5T2ZXZWVrPzogMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNjtcbiAgLyoqIFdoaWNoIG1vbnRoIHRvIHNob3cgaW5pdGlhbGx5ICovXG4gIGRlZmF1bHREYXRlSW5WaWV3PzogRGF0ZTtcbiAgLyoqIFNob3cgYnV0dG9ucyB0byBxdWlja2x5IHNlbGVjdCBzdWdnZXN0ZWQgZGF0ZXMgb3IgZGF0ZSByYW5nZXMgKi9cbiAgcXVpY2tPcHRpb25zPzogRGF0ZVBpY2tlclF1aWNrT3B0aW9uW107XG4gIC8qKiBNaW5pbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICAvKiogRGF0ZSByYW5nZXMgdGhhdCBhcmUgdmlzdWFsbHkgbWFya2VkIGFzIGJsb2NrZWQgKi9cbiAgYmxvY2tlZFJhbmdlcz86IERhdGVSYW5nZVtdO1xuICBtaW5EYXRlPzogRGF0ZTtcbiAgLyoqIE1heGltdW0gc2VsZWN0YWJsZSBkYXRlICovXG4gIG1heERhdGU/OiBEYXRlO1xuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBjYWxlbmRhciB3ZWVrIGluIHRoZSBmaXJzdCBjb2x1bW4gKi9cbiAgc2hvd0NhbGVuZGFyV2Vlaz86IGJvb2xlYW47XG59O1xuXG5jb25zdCBEYXRlUGlja2VyQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8UGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+Pj4oe30pO1xuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlclByb3ZpZGVyKHtcbiAgY2hpbGRyZW4sXG4gIC4uLnByb3BzXG59OiBQYXJ0aWFsPE9taXQ8RGF0ZVBpY2tlclByb3BzLCAndmFsdWUnIHwgJ29uQ2hhbmdlJz4+ICYgeyBjaGlsZHJlbj86IFJlYWN0Tm9kZSB9KSB7XG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbygoKSA9PiBwcm9wcywgW0pTT04uc3RyaW5naWZ5KHByb3BzKV0pO1xuXG4gIHJldHVybiA8RGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9EYXRlUGlja2VyQ29udGV4dC5Qcm92aWRlcj47XG59XG5cbmNvbnN0IHdlZWtEYXlzID0gWzAsIDEsIDIsIDMsIDQsIDUsIDZdIGFzIGNvbnN0O1xuXG4vKiogUm91bmRzIGEgZGF0ZSBkb3duIHRvIHRoZSBzdGFydCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IHN0YXJ0T2ZEYXkgPSAoZDogRGF0ZSkgPT4gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpKTtcblxuLyoqIFJvdW5kcyBhIGRhdGUgdXAgdG8gdGhlIGVuZCBvZiB0aGUgZGF5LiAqL1xuZXhwb3J0IGNvbnN0IGVuZE9mRGF5ID0gKGQ6IERhdGUpID0+XG4gIG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSArIDEsIDAsIDAsIDAsIC0xKTtcblxuZXhwb3J0IGNvbnN0IGxhc3REYXlzID0gKGRheXM6IG51bWJlcik6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkYXlzICsgMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG5vdyksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdG9kYXkgPSAoKSA9PiBsYXN0RGF5cygxKTtcblxuZXhwb3J0IGNvbnN0IHRoaXNXZWVrID0gKGRlbHRhID0gMCwgZmlyc3REYXlPZldlZWsgPSAxKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcblxuICBsZXQgZGlmZiA9IG1pbi5nZXREYXkoKSAtIGZpcnN0RGF5T2ZXZWVrO1xuICBpZiAoZGlmZiA8IDApIHtcbiAgICBkaWZmICs9IDc7XG4gIH1cbiAgbWluLnNldERhdGUobWluLmdldERhdGUoKSAtIGRpZmYgKyBkZWx0YSAqIDcpO1xuXG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgKyA2KTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzTW9udGggPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aChtaW4uZ2V0TW9udGgoKSArIGRlbHRhKTtcbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldE1vbnRoKG1heC5nZXRNb250aCgpICsgMSk7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgLSAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0aGlzWWVhciA9IChkZWx0YSA9IDApOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZSgxKTtcbiAgbWluLnNldE1vbnRoKDApO1xuICBtaW4uc2V0RnVsbFllYXIobWluLmdldEZ1bGxZZWFyKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRGdWxsWWVhcihtYXguZ2V0RnVsbFllYXIoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5jb25zdCBNU19QRVJfREFZID0gMTAwMCAqIDYwICogNjAgKiAyNDtcbmV4cG9ydCBjb25zdCBnZXRDYWxlbmRhcldlZWsgPSAoZGF0ZTogRGF0ZSk6IG51bWJlciA9PiB7XG4gIC8vIElTTyA4NjAxOiBXZWVrIDEgaXMgdGhlIHdlZWsgd2l0aCB0aGUgZmlyc3QgVGh1cnNkYXkgb2YgdGhlIHllYXIuXG4gIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcblxuICBjb25zdCBlbmRPZldlZWsgPSBuZXcgRGF0ZShcbiAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgZGF0ZS5nZXRNb250aCgpLFxuICAgIGRhdGUuZ2V0RGF0ZSgpICsgKDcgLSAoZGF0ZS5nZXREYXkoKSB8fCA3KSksXG4gICk7XG5cbiAgY29uc3QgeWVhciA9IGVuZE9mV2Vlay5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBmaXJzdERheU9mWWVhciA9IG5ldyBEYXRlKHllYXIsIDAsIDEpO1xuICBjb25zdCBkYXlPZlllYXIgPVxuICAgIE1hdGguZmxvb3IoXG4gICAgICAoZW5kT2ZXZWVrLmdldFRpbWUoKSAtXG4gICAgICAgIGZpcnN0RGF5T2ZZZWFyLmdldFRpbWUoKSArXG4gICAgICAgIChlbmRPZldlZWsuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGZpcnN0RGF5T2ZZZWFyLmdldFRpbWV6b25lT2Zmc2V0KCkpKSAvXG4gICAgICAgIE1TX1BFUl9EQVksXG4gICAgKSArIDE7XG4gIGNvbnN0IHdlZWtPZlllYXIgPSBNYXRoLmZsb29yKCgzICsgZGF5T2ZZZWFyKSAvIDcpO1xuXG4gIGlmICh3ZWVrT2ZZZWFyID09PSAwKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGdldENhbGVuZGFyV2VlayhcbiAgICAgICAgbmV3IERhdGUoZW5kT2ZXZWVrLmdldEZ1bGxZZWFyKCksIGVuZE9mV2Vlay5nZXRNb250aCgpLCBlbmRPZldlZWsuZ2V0RGF0ZSgpIC0gNyksXG4gICAgICApICsgMVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gd2Vla09mWWVhcjtcbn07XG5cbmV4cG9ydCBjb25zdCBjb21tb25RdWlja09wdGlvbnMgPSB7XG4gIHRvZGF5OiB7IGxhYmVsOiA8VGV4dCBpZD1cInRvZGF5XCIgLz4sIHZhbHVlOiB0b2RheSB9LFxuICB0aGlzV2VlazogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzV2Vla1wiIC8+LCB2YWx1ZTogKHByb3BzKSA9PiB0aGlzV2VlaygwLCBwcm9wcy5maXJzdERheU9mV2VlaykgfSxcbiAgdGhpc01vbnRoOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNNb250aFwiIC8+LCB2YWx1ZTogKCkgPT4gdGhpc01vbnRoKCkgfSxcbiAgdGhpc1llYXI6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1llYXJcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNZZWFyKCkgfSxcbiAgbGFzdFNldmVuRGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0U2V2ZW5EYXlzXCIgLz4sIHZhbHVlOiAoKSA9PiBsYXN0RGF5cyg3KSB9LFxuICBsYXN0VGhpcnR5RGF5czogeyBsYWJlbDogPFRleHQgaWQ9XCJsYXN0VGhpcnR5RGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoMzApIH0sXG59IHNhdGlzZmllcyBSZWNvcmQ8XG4gIERhdGVQaWNrZXJRdWlja09wdGlvbiAmIHN0cmluZyxcbiAgeyBsYWJlbDogUmVhY3ROb2RlOyB2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8ICgocHJvcHM6IERhdGVQaWNrZXJQcm9wcykgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuPjtcblxuLyoqIFJldHVybnMgd2hldGhlciB0d28gZGF0ZXMgYW5kL29yIGRhdGUgcmFuZ2VzIGludGVyc2VjdC4gSW50ZXJzZWN0aW9uIGlzIGNvbnNpZGVyZWQgcGVyIGRheS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRlSW50ZXJzZWN0KFxuICBhOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgYjogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwgfCB1bmRlZmluZWQsXG4pIHtcbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYSA9IHsgbWluOiBhLCBtYXg6IGEgfTtcbiAgfVxuICBpZiAoYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBiID0geyBtaW46IGIsIG1heDogYiB9O1xuICB9XG5cbiAgaWYgKCFhPy5taW4gfHwgIWEubWF4IHx8ICFiPy5taW4gfHwgIWIubWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuICEoZW5kT2ZEYXkoYS5tYXgpIDwgc3RhcnRPZkRheShiLm1pbikgfHwgc3RhcnRPZkRheShhLm1pbikgPiBlbmRPZkRheShiLm1heCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNsYW1wKGRhdGU6IERhdGUsIG1pbj86IERhdGUsIG1heD86IERhdGUpIHtcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxuXG4gIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWVGb3JDb21wYXJpc29uKHZhbHVlPzogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmdldFRpbWUoKTtcbiAgfVxuICByZXR1cm4gYCR7dmFsdWUubWluPy5nZXRUaW1lKCl9LSR7dmFsdWUubWF4Py5nZXRUaW1lKCl9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXIocHJvcHM6IERhdGVQaWNrZXJQcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChEYXRlUGlja2VyQ29udGV4dCk7XG5cbiAgY29uc3Qge1xuICAgIHZhbHVlLFxuICAgIHJhbmdlU2VsZWN0LFxuICAgIGxvY2FsZSxcbiAgICBmaXJzdERheU9mV2VlayA9IDEsXG4gICAgZGVmYXVsdERhdGVJblZpZXcsXG4gICAgcXVpY2tPcHRpb25zID0gWyd0b2RheScsICd0aGlzV2VlayddLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICBzaG93Q2FsZW5kYXJXZWVrLFxuICAgIGJsb2NrZWRSYW5nZXMgPSBbXSxcbiAgfSA9IGRlZmF1bHRzPERhdGVQaWNrZXJQcm9wcz4ocHJvcHMsIGNvbnRleHQpO1xuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHZhbHVlID0gZGF0ZUNsYW1wKHZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHtcbiAgICAgICAgbWluOiBkYXRlQ2xhbXAodmFsdWUubWluLCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgICAgbWF4OiBkYXRlQ2xhbXAodmFsdWUubWF4LCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgY29uc3QgQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5CdXR0b24pO1xuICBjb25zdCBJY29uQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5JY29uQnV0dG9uKTtcbiAgY29uc3QgQ2hldnJvblJpZ2h0ID0gdXNlVGhlbWUoKHQpID0+IHQuaWNvbnMuQ2hldnJvblJpZ2h0KTtcbiAgY29uc3QgY3NzVmFyaWFibGVzID0gdXNlQ3NzVmFyaWFibGVzKCk7XG4gIGZ1bmN0aW9uIGdldERheUNzc1N0eWxlcyh7XG4gICAgZGlzYWJsZWQsXG4gICAgcHJldk1vbnRoLFxuICAgIG5leHRNb250aCxcbiAgICB0b2RheSxcbiAgICBibG9ja2VkLFxuICAgIHNlbGVjdGVkLFxuICAgIHByZVNlbGVjdGVkLFxuICB9OiB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZNb250aD86IGJvb2xlYW47XG4gICAgbmV4dE1vbnRoPzogYm9vbGVhbjtcbiAgICB0b2RheT86IGJvb2xlYW47XG4gICAgYmxvY2tlZD86IGJvb2xlYW47XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIHByZVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgfSk6IEludGVycG9sYXRpb248VGhlbWU+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGN1cnNvcjogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgIH0sXG4gICAgICAocHJldk1vbnRoIHx8IG5leHRNb250aCkgJiYge1xuICAgICAgICBjb2xvcjogZ3JheSxcbiAgICAgIH0sXG4gICAgICB0b2RheSAmJiB7XG4gICAgICAgIG91dGxpbmU6ICcxcHggc29saWQgdmFyKC0tc2Vjb25kYXJ5TWFpbiknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1ibG9ja2VkQ29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeU1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJlxuICAgICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgJzo6YmVmb3JlJzoge1xuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgICAgIGNsaXBQYXRoOiAncG9seWdvbigwIDAsIDAgNTAlLCA1MCUgMCknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBwcmVTZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TGlnaHQpJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBjb25zdCBtb3VudFRpbWUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKCksIFtdKTtcbiAgY29uc3QgW2RpcnR5LCBzZXREaXJ0eV0gPSB1c2VTdGF0ZTxQYXJ0aWFsPERhdGVSYW5nZT4+KCk7XG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlPERhdGVSYW5nZT4oKTtcbiAgY29uc3QgW2RhdGVJblZpZXdMb2NhbCwgc2V0RGF0ZUluVmlld0xvY2FsXSA9IHVzZVN0YXRlPERhdGU+KGRlZmF1bHREYXRlSW5WaWV3ID8/IG1vdW50VGltZSk7XG4gIGNvbnN0IGRhdGVJblZpZXcgPSBwcm9wcy5kYXRlSW5WaWV3ID8/IGRhdGVJblZpZXdMb2NhbDtcblxuICBmdW5jdGlvbiBzZXREYXRlSW5WaWV3KGRhdGU6IERhdGUpIHtcbiAgICBzZXREYXRlSW5WaWV3TG9jYWwoZGF0ZSk7XG4gICAgcHJvcHMub25EYXRlSW5WaWV3Q2hhbmdlPy4oZGF0ZSk7XG4gIH1cblxuICBjb25zdCBtaW4gPSBkaXJ0eSA/IGRpcnR5Lm1pbiA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWU/Lm1pbjtcbiAgY29uc3QgbWF4ID0gZGlydHkgPyBkaXJ0eS5tYXggOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5tYXg7XG5cbiAgY29uc3QgcmVzb2x2ZWRRdWlja09wdGlvbnMgPSBbLi4ucXVpY2tPcHRpb25zLCB7IGxhYmVsOiA8VGV4dCBpZD1cInJlc2V0XCIgLz4sIHZhbHVlOiBudWxsIH1dLm1hcChcbiAgICAob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKG9wdGlvbiBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgIHJldHVybiBvcHRpb24oKHZhbHVlKSA9PiB7XG4gICAgICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSB9ID0gdHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycgPyBjb21tb25RdWlja09wdGlvbnNbb3B0aW9uXSA6IG9wdGlvbjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKHByb3BzKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApO1xuICAgIH0sXG4gICk7XG5cbiAgY29uc3QgeyBjYWxlbmRhcnMsIGdldEJhY2tQcm9wcywgZ2V0Rm9yd2FyZFByb3BzLCBnZXREYXRlUHJvcHMgfSA9IHVzZURheXplZCh7XG4gICAgb25EYXRlU2VsZWN0ZWQ6ICgpID0+IHVuZGVmaW5lZCxcbiAgICBmaXJzdERheU9mV2VlayxcbiAgICBzaG93T3V0c2lkZURheXM6IHRydWUsXG4gICAgZGF0ZTogZGF0ZUluVmlldyxcbiAgICBvbk9mZnNldENoYW5nZWQ6IChvZmZzZXQpID0+XG4gICAgICBzZXREYXRlSW5WaWV3KG5ldyBEYXRlKGRhdGVJblZpZXcuZ2V0RnVsbFllYXIoKSwgZGF0ZUluVmlldy5nZXRNb250aCgpICsgb2Zmc2V0KSksXG4gICAgb2Zmc2V0OiAwLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgfSk7XG4gIGNvbnN0IG5vdyA9IHVzZU1lbW8oKCkgPT4gc3RhcnRPZkRheShuZXcgRGF0ZSgpKSwgW10pO1xuXG4gIGNvbnN0IGZvcm1hdFdlZWtkYXkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHdlZWtkYXk6ICdzaG9ydCcgfSk7XG4gICAgcmV0dXJuICh3ZWVrRGF5OiBudW1iZXIpID0+XG4gICAgICBmb3JtYXQobmV3IERhdGUoRGF0ZS5VVEMoMjAyMSwgNywgKCh3ZWVrRGF5ICsgZmlyc3REYXlPZldlZWspICUgNykgKyAxKSkpO1xuICB9LCBbbG9jYWxlLCBmaXJzdERheU9mV2Vla10pO1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhcbiAgICAgICAgdmFsdWUgPT09IG51bGwgPyBkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUgOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlLm1heCxcbiAgICAgICksXG4gICAgW2dldFZhbHVlRm9yQ29tcGFyaXNvbih2YWx1ZSksIGdldFZhbHVlRm9yQ29tcGFyaXNvbihkZWZhdWx0RGF0ZUluVmlldyksIG1vdW50VGltZV0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSwgW3JhbmdlU2VsZWN0XSk7XG5cbiAgZnVuY3Rpb24gc2V0KG1pbj86IERhdGUsIG1heD86IERhdGUsIGVkaXQ/OiAnbWluJyB8ICdtYXgnKSB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgb25DaGFuZ2UobWluID8/IG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChtaW4gJiYgbWF4ICYmIG1pbiA+IG1heCkge1xuICAgICAgaWYgKGVkaXQgPT09ICdtaW4nKSB7XG4gICAgICAgIG1heCA9IG1pbjtcbiAgICAgIH0gZWxzZSBpZiAoZWRpdCA9PT0gJ21heCcpIHtcbiAgICAgICAgbWluID0gbWF4O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgW21pbiwgbWF4XSA9IFttYXgsIG1pbl07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFtaW4gPT09ICFtYXgpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICBvbkNoYW5nZShtaW4gJiYgbWF4ID8geyBtaW4sIG1heDogZW5kT2ZEYXkobWF4KSB9IDogbnVsbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldERpcnR5KHsgbWluLCBtYXggfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZm9ybWF0TW9udGggPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XG4gICAgcmV0dXJuIChtb250aDogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoMjAyMSwgbW9udGgpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIGNvbnN0IGZvcm1hdFllYXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IGZvcm1hdCB9ID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IHllYXI6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gKHllYXI6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKHllYXIsIDAsIDEpKTtcbiAgfSwgW2xvY2FsZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjc3M9e2Nzc1ZhcmlhYmxlc30+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiAnYmFzZWxpbmUnLFxuICAgICAgICAgIGdhcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgIHZhbHVlPXttaW4gPz8gbnVsbH1cbiAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChkYXRlID8/IHVuZGVmaW5lZCwgbWF4LCAnbWluJyl9XG4gICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgIC8+XG5cbiAgICAgICAge3JhbmdlU2VsZWN0ICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgeycgLSAnfVxuICAgICAgICAgICAgPERhdGVJbnB1dFxuICAgICAgICAgICAgICB2YWx1ZT17bWF4ID8/IG51bGx9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KG1pbiwgZGF0ZSA/PyB1bmRlZmluZWQsICdtYXgnKX1cbiAgICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHtjYWxlbmRhcnMubWFwKCh7IG1vbnRoLCB5ZWFyLCB3ZWVrcyB9KSA9PiAoXG4gICAgICAgIDxkaXYga2V5PXtgJHttb250aH0ke3llYXJ9YH0gY3NzPXt7IGRpc3BsYXk6ICdncmlkJyB9fT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgbWFyZ2luOiAnY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpIDAnLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEJhY2tQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgY3NzPXt7IHRyYW5zZm9ybTogJ3JvdGF0ZTNkKDAsIDAsIDEsIDE4MGRlZyknIH19IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY3NzPXt7IGRpc3BsYXk6ICdmbGV4JyB9fT5cbiAgICAgICAgICAgICAge2Zvcm1hdE1vbnRoKG1vbnRoKX0ge2Zvcm1hdFllYXIoeWVhcil9XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRGb3J3YXJkUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IC8+XG4gICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICdyZXBlYXQoOCwgbWF4LWNvbnRlbnQpJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUZXh0IGlkPVwiY2FsZW5kYXJXZWVrXCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7d2Vla0RheXMubWFwKChfdiwgd2Vla0RheSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAga2V5PXt3ZWVrRGF5fVxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtmb3JtYXRXZWVrZGF5KHdlZWtEYXkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuXG4gICAgICAgICAgICB7d2Vla3MubWFwKCh3ZWVrLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrU3RhcnQgPSB3ZWVrWzBdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtFbmQgPSB3ZWVrWzZdIGFzIERhdGVPYmo7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtEaXNhYmxlZCA9XG4gICAgICAgICAgICAgICAgIXJhbmdlU2VsZWN0IHx8XG4gICAgICAgICAgICAgICAgKG1pbkRhdGUgJiYgd2Vla0VuZC5kYXRlIDwgbWluRGF0ZSkgfHxcbiAgICAgICAgICAgICAgICAobWF4RGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAge3Nob3dDYWxlbmRhcldlZWsgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiB3ZWVrRGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ZWVrRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW4gPSBtaW5EYXRlICYmIHdlZWtTdGFydC5kYXRlIDwgbWluRGF0ZSA/IG1pbkRhdGUgOiB3ZWVrU3RhcnQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heCA9IG1heERhdGUgJiYgd2Vla0VuZC5kYXRlID4gbWF4RGF0ZSA/IG1heERhdGUgOiB3ZWVrRW5kLmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXQobWluLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3Zlcj17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICF3ZWVrRGlzYWJsZWQgJiYgc2V0SG92ZXJlZCh7IG1pbjogd2Vla1N0YXJ0LmRhdGUsIG1heDogd2Vla0VuZC5kYXRlIH0pXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck91dD17KCkgPT4gIXdlZWtEaXNhYmxlZCAmJiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7Z2V0Q2FsZW5kYXJXZWVrKHdlZWtFbmQuZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAge3dlZWsubWFwKChkYXRlT2JqZWN0LCBkYXlJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGVPYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2RheUluZGV4fSAvPjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJldk1vbnRoLCBuZXh0TW9udGgsIGRhdGUgfSA9IGRhdGVPYmplY3Q7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvZGF5ID0gc3RhcnRPZkRheShkYXRlKS5nZXRUaW1lKCkgPT09IG5vdy5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkID0gKG1pbkRhdGUgJiYgZGF0ZSA8IG1pbkRhdGUpIHx8IChtYXhEYXRlICYmIGRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgZGF0ZS5nZXRUaW1lKCkgPT09IG1pbj8uZ2V0VGltZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJiBtYXggJiYgZGF0ZUludGVyc2VjdChkYXRlLCB7IG1pbiwgbWF4IH0pKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJlU2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICFzZWxlY3RlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICFkaXNhYmxlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgIChkYXRlSW50ZXJzZWN0KGRhdGUsIGhvdmVyZWQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAobWluICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFtYXggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlSW50ZXJzZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluIDw9IGhvdmVyZWQubWluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgbWluLCBtYXg6IGhvdmVyZWQubWluIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogeyBtaW46IGhvdmVyZWQubWF4LCBtYXg6IG1pbiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICApKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrZWQgPSBibG9ja2VkUmFuZ2VzLnNvbWUoKHJhbmdlKSA9PiBkYXRlSW50ZXJzZWN0KGRhdGUsIHJhbmdlKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7aW5kZXh9LSR7ZGF5SW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Z2V0RGF5Q3NzU3R5bGVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZVNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0RGF0ZVByb3BzKHsgZGF0ZU9iajogZGF0ZU9iamVjdCB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbikgc2V0KG1pbiwgZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzZXQoZGF0ZSwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdmVyPXsoKSA9PiBzZXRIb3ZlcmVkKHsgbWluOiBkYXRlLCBtYXg6IGRhdGUgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+IHNldEhvdmVyZWQodW5kZWZpbmVkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGF0ZS5nZXREYXRlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSl9XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgbWFyZ2luVG9wOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3Jlc29sdmVkUXVpY2tPcHRpb25zfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0= */",
|
|
996
996
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__$d
|
|
997
997
|
};
|
|
998
998
|
var _ref7 = process.env.NODE_ENV === "production" ? {
|
|
@@ -1001,7 +1001,7 @@ var _ref7 = process.env.NODE_ENV === "production" ? {
|
|
|
1001
1001
|
} : {
|
|
1002
1002
|
name: "5a0dsf-DatePicker",
|
|
1003
1003
|
styles: "justify-self:center;padding:10px;label:DatePicker;",
|
|
1004
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtmZ0IiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgeSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmRveSA9IG5ldyBEYXRlKHksIDAsIDEpO1xuICBjb25zdCBkb3kgPSBNYXRoLmZsb29yKFxuICAgIChkYXRlLmdldFRpbWUoKSAtIGZkb3kuZ2V0VGltZSgpICsgKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGZkb3kuZ2V0VGltZXpvbmVPZmZzZXQoKSkpIC9cbiAgICAgIE1TX1BFUl9EQVksXG4gICk7XG4gIGNvbnN0IGRvdyA9IGZkb3kuZ2V0RGF5KCk7XG4gIGNvbnN0IHcgPSBNYXRoLmZsb29yKCgxMCArIGRveSAtIGRvdykgLyA3KTtcblxuICBpZiAodyA9PT0gMCkge1xuICAgIHJldHVybiBnZXRDYWxlbmRhcldlZWsobmV3IERhdGUoeSAtIDEsIDExLCAzMSkpO1xuICB9XG5cbiAgcmV0dXJuIHc7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChhOiBEYXRlIHwgbnVsbCB8IERhdGVSYW5nZSwgYjogRGF0ZSB8IG51bGwgfCBEYXRlUmFuZ2UpIHtcbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYSA9IHsgbWluOiBhLCBtYXg6IGEgfTtcbiAgfVxuICBpZiAoYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBiID0geyBtaW46IGIsIG1heDogYiB9O1xuICB9XG5cbiAgaWYgKCFhPy5taW4gfHwgIWEubWF4IHx8ICFiPy5taW4gfHwgIWIubWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuICEoZW5kT2ZEYXkoYS5tYXgpIDwgc3RhcnRPZkRheShiLm1pbikgfHwgc3RhcnRPZkRheShhLm1pbikgPiBlbmRPZkRheShiLm1heCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNsYW1wKGRhdGU6IERhdGUsIG1pbj86IERhdGUsIG1heD86IERhdGUpIHtcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxuXG4gIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWVGb3JDb21wYXJpc29uKHZhbHVlPzogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmdldFRpbWUoKTtcbiAgfVxuICByZXR1cm4gYCR7dmFsdWUubWluPy5nZXRUaW1lKCl9LSR7dmFsdWUubWF4Py5nZXRUaW1lKCl9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXIocHJvcHM6IERhdGVQaWNrZXJQcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChEYXRlUGlja2VyQ29udGV4dCk7XG5cbiAgY29uc3Qge1xuICAgIHZhbHVlLFxuICAgIHJhbmdlU2VsZWN0LFxuICAgIGxvY2FsZSxcbiAgICBmaXJzdERheU9mV2VlayA9IDEsXG4gICAgZGVmYXVsdERhdGVJblZpZXcsXG4gICAgcXVpY2tPcHRpb25zID0gWyd0b2RheScsICd0aGlzV2VlayddLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICBzaG93Q2FsZW5kYXJXZWVrLFxuICAgIGJsb2NrZWRSYW5nZXMgPSBbXSxcbiAgfSA9IGRlZmF1bHRzPERhdGVQaWNrZXJQcm9wcz4ocHJvcHMsIGNvbnRleHQpO1xuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHZhbHVlID0gZGF0ZUNsYW1wKHZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHtcbiAgICAgICAgbWluOiBkYXRlQ2xhbXAodmFsdWUubWluLCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgICAgbWF4OiBkYXRlQ2xhbXAodmFsdWUubWF4LCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgY29uc3QgQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5CdXR0b24pO1xuICBjb25zdCBJY29uQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5JY29uQnV0dG9uKTtcbiAgY29uc3QgQ2hldnJvblJpZ2h0ID0gdXNlVGhlbWUoKHQpID0+IHQuaWNvbnMuQ2hldnJvblJpZ2h0KTtcbiAgY29uc3QgY3NzVmFyaWFibGVzID0gdXNlQ3NzVmFyaWFibGVzKCk7XG4gIGZ1bmN0aW9uIGdldERheUNzc1N0eWxlcyh7XG4gICAgZGlzYWJsZWQsXG4gICAgcHJldk1vbnRoLFxuICAgIG5leHRNb250aCxcbiAgICB0b2RheSxcbiAgICBibG9ja2VkLFxuICAgIHNlbGVjdGVkLFxuICAgIHByZVNlbGVjdGVkLFxuICB9OiB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZNb250aD86IGJvb2xlYW47XG4gICAgbmV4dE1vbnRoPzogYm9vbGVhbjtcbiAgICB0b2RheT86IGJvb2xlYW47XG4gICAgYmxvY2tlZD86IGJvb2xlYW47XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIHByZVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgfSk6IEludGVycG9sYXRpb248VGhlbWU+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGN1cnNvcjogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgIH0sXG4gICAgICAocHJldk1vbnRoIHx8IG5leHRNb250aCkgJiYge1xuICAgICAgICBjb2xvcjogZ3JheSxcbiAgICAgIH0sXG4gICAgICB0b2RheSAmJiB7XG4gICAgICAgIG91dGxpbmU6ICcxcHggc29saWQgdmFyKC0tc2Vjb25kYXJ5TWFpbiknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1ibG9ja2VkQ29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeU1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJlxuICAgICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgJzo6YmVmb3JlJzoge1xuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgICAgIGNsaXBQYXRoOiAncG9seWdvbigwIDAsIDAgNTAlLCA1MCUgMCknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBwcmVTZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TGlnaHQpJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBjb25zdCBtb3VudFRpbWUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKCksIFtdKTtcbiAgY29uc3QgW2RpcnR5LCBzZXREaXJ0eV0gPSB1c2VTdGF0ZTxQYXJ0aWFsPERhdGVSYW5nZT4+KCk7XG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlPERhdGU+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFtnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWUpLCBnZXRWYWx1ZUZvckNvbXBhcmlzb24oZGVmYXVsdERhdGVJblZpZXcpLCBtb3VudFRpbWVdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICB9XG4gIH0sIFtyYW5nZVNlbGVjdF0pO1xuXG4gIGZ1bmN0aW9uIHNldChtaW4/OiBEYXRlLCBtYXg/OiBEYXRlLCBlZGl0PzogJ21pbicgfCAnbWF4Jykge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIG9uQ2hhbmdlKG1pbiA/PyBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobWluICYmIG1heCAmJiBtaW4gPiBtYXgpIHtcbiAgICAgIGlmIChlZGl0ID09PSAnbWluJykge1xuICAgICAgICBtYXggPSBtaW47XG4gICAgICB9IGVsc2UgaWYgKGVkaXQgPT09ICdtYXgnKSB7XG4gICAgICAgIG1pbiA9IG1heDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFttaW4sIG1heF0gPSBbbWF4LCBtaW5dO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghbWluID09PSAhbWF4KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgICAgb25DaGFuZ2UobWluICYmIG1heCA/IHsgbWluLCBtYXg6IGVuZE9mRGF5KG1heCkgfSA6IG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXREaXJ0eSh7IG1pbiwgbWF4IH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZvcm1hdE1vbnRoID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBtb250aDogJ2xvbmcnIH0pO1xuICAgIHJldHVybiAobW9udGg6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKDIwMjEsIG1vbnRoKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICBjb25zdCBmb3JtYXRZZWFyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gICAgcmV0dXJuICh5ZWFyOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSh5ZWFyLCAwLCAxKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY3NzPXtjc3NWYXJpYWJsZXN9PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2Jhc2VsaW5lJyxcbiAgICAgICAgICBnYXA6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICB2YWx1ZT17bWluID8/IG51bGx9XG4gICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQoZGF0ZSA/PyB1bmRlZmluZWQsIG1heCwgJ21pbicpfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAvPlxuXG4gICAgICAgIHtyYW5nZVNlbGVjdCAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHsnIC0gJ31cbiAgICAgICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICAgICAgdmFsdWU9e21heCA/PyBudWxsfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChtaW4sIGRhdGUgPz8gdW5kZWZpbmVkLCAnbWF4Jyl9XG4gICAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7Y2FsZW5kYXJzLm1hcCgoeyBtb250aCwgeWVhciwgd2Vla3MgfSkgPT4gKFxuICAgICAgICA8ZGl2IGtleT17YCR7bW9udGh9JHt5ZWFyfWB9IGNzcz17eyBkaXNwbGF5OiAnZ3JpZCcgfX0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIG1hcmdpbjogJ2NhbGModmFyKC0tc3BhY2luZykgKiA0KSAwJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRCYWNrUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNzcz17eyB0cmFuc2Zvcm06ICdyb3RhdGUzZCgwLCAwLCAxLCAxODBkZWcpJyB9fSAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2IGNzcz17eyBkaXNwbGF5OiAnZmxleCcgfX0+XG4gICAgICAgICAgICAgIHtmb3JtYXRNb250aChtb250aCl9IHtmb3JtYXRZZWFyKHllYXIpfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0Rm9yd2FyZFByb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KDgsIG1heC1jb250ZW50KScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGV4dCBpZD1cImNhbGVuZGFyV2Vla1wiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3dlZWtEYXlzLm1hcCgoX3YsIHdlZWtEYXkpID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGtleT17d2Vla0RheX1cbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Zm9ybWF0V2Vla2RheSh3ZWVrRGF5KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cblxuICAgICAgICAgICAge3dlZWtzLm1hcCgod2VlaywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla1N0YXJ0ID0gd2Vla1swXSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRW5kID0gd2Vla1s2XSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICFyYW5nZVNlbGVjdCB8fFxuICAgICAgICAgICAgICAgIChtaW5EYXRlICYmIHdlZWtFbmQuZGF0ZSA8IG1pbkRhdGUpIHx8XG4gICAgICAgICAgICAgICAgKG1heERhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGcmFnbWVudCBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogd2Vla0Rpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2Vla0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluID0gbWluRGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA8IG1pbkRhdGUgPyBtaW5EYXRlIDogd2Vla1N0YXJ0LmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXggPSBtYXhEYXRlICYmIHdlZWtFbmQuZGF0ZSA+IG1heERhdGUgPyBtYXhEYXRlIDogd2Vla0VuZC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG1pbiwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2dldENhbGVuZGFyV2Vlaygod2Vla1swXSBhcyBEYXRlT2JqKS5kYXRlKX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICB7d2Vlay5tYXAoKGRhdGVPYmplY3QsIGRheUluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0ZU9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17ZGF5SW5kZXh9IC8+O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwcmV2TW9udGgsIG5leHRNb250aCwgZGF0ZSB9ID0gZGF0ZU9iamVjdDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9kYXkgPSBzdGFydE9mRGF5KGRhdGUpLmdldFRpbWUoKSA9PT0gbm93LmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzYWJsZWQgPSAobWluRGF0ZSAmJiBkYXRlIDwgbWluRGF0ZSkgfHwgKG1heERhdGUgJiYgZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICBkYXRlLmdldFRpbWUoKSA9PT0gbWluPy5nZXRUaW1lKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAobWluICYmIG1heCAmJiBkYXRlSW50ZXJzZWN0KGRhdGUsIHsgbWluLCBtYXggfSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVTZWxlY3RlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgIWRpc2FibGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgKGRhdGUuZ2V0VGltZSgpID09PSBob3ZlcmVkPy5nZXRUaW1lKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIW1heCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBob3ZlcmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVJbnRlcnNlY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4gPD0gaG92ZXJlZCA/IHsgbWluLCBtYXg6IGhvdmVyZWQgfSA6IHsgbWluOiBob3ZlcmVkLCBtYXg6IG1pbiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICApKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrZWQgPSBibG9ja2VkUmFuZ2VzLnNvbWUoKHJhbmdlKSA9PiBkYXRlSW50ZXJzZWN0KGRhdGUsIHJhbmdlKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7aW5kZXh9LSR7ZGF5SW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Z2V0RGF5Q3NzU3R5bGVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZVNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0RGF0ZVByb3BzKHsgZGF0ZU9iajogZGF0ZU9iamVjdCB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbikgc2V0KG1pbiwgZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzZXQoZGF0ZSwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdmVyPXsoKSA9PiBzZXRIb3ZlcmVkKGRhdGUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3V0PXsoKSA9PiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2RhdGUuZ2V0RGF0ZSgpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICkpfVxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIG1hcmdpblRvcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXNvbHZlZFF1aWNrT3B0aW9uc31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19 */",
|
|
1004
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlnQmdCIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZU9iaiwgdXNlRGF5emVkIH0gZnJvbSAnZGF5emVkJztcbmltcG9ydCB7XG4gIEZyYWdtZW50LFxuICBSZWFjdE5vZGUsXG4gIGNyZWF0ZUNvbnRleHQsXG4gIHVzZUNvbnRleHQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSAnLi4vaG9va3MvdXNlVGhlbWUnO1xuaW1wb3J0IHsgZGVmYXVsdHMgfSBmcm9tICcuLi9taXNjL2RlZmF1bHRzJztcbmltcG9ydCB7IGdyYXkgfSBmcm9tICcuLi90aGVtZS9kZWZhdWx0VGhlbWUvZGVmYXVsdENsYXNzZXMnO1xuaW1wb3J0IHsgdXNlQ3NzVmFyaWFibGVzIH0gZnJvbSAnLi4vdGhlbWUvdXNlQ3NzVmFyaWFibGVzJztcbmltcG9ydCB7IERhdGVJbnB1dCB9IGZyb20gJy4vZGF0ZUlucHV0JztcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuL3RleHQnO1xuaW1wb3J0IHsgSW50ZXJwb2xhdGlvbiwgVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmV4cG9ydCB0eXBlIERhdGVSYW5nZSA9IHsgbWluOiBEYXRlOyBtYXg6IERhdGUgfTtcblxuZXhwb3J0IHR5cGUgRGF0ZVBpY2tlclF1aWNrT3B0aW9uID1cbiAgfCAndG9kYXknXG4gIHwgJ3RoaXNXZWVrJ1xuICB8ICd0aGlzTW9udGgnXG4gIHwgJ3RoaXNZZWFyJ1xuICB8ICdsYXN0U2V2ZW5EYXlzJ1xuICB8ICdsYXN0VGhpcnR5RGF5cydcbiAgfCB7IGxhYmVsOiBSZWFjdE5vZGU7IHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgKCgpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbiAgfCAoKG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkKSA9PiBSZWFjdE5vZGUpO1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUHJvcHMgPSB7XG4gIC8qKiBDdXJyZW50bHkgc2VsZWN0ZWQgZGF5IG9yIHJhbmdlIG9mIGRheXMuICovXG4gIHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbDtcbiAgLyoqIENhbGxiYWNrIGZvciB3aGVuIHRoZSBkYXkgKHJhbmdlKSBjaGFuZ2VzLiAqL1xuICBvbkNoYW5nZTogKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkgPT4gdm9pZDtcbiAgLyoqIEN1cnJlbnRseSB2aXNpYmxlIGRhdGUuICovXG4gIGRhdGVJblZpZXc/OiBEYXRlO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGN1cnJlbnRseSB2aXNpYmxlIGRhdGUgY2hhbmdlcy4gKi9cbiAgb25EYXRlSW5WaWV3Q2hhbmdlPzogKHZhbHVlOiBEYXRlKSA9PiB2b2lkO1xuICAvKiogSWYgZW5hYmxlZCwgcmFuZ2VzIGNhbiBiZSBzZWxlY3RlZC4gKi9cbiAgcmFuZ2VTZWxlY3Q/OiBib29sZWFuO1xuICAvKiogV2hpY2ggbG9jYWxlIHRvIHVzZSB0byByZW5kZXIgdGhlIGNhbGVuZGFyLiAqL1xuICBsb2NhbGU/OiBzdHJpbmc7XG4gIC8qKiBXaGljaCBkYXkgb2YgdGhlIHdlZWsgc2hvdWxkIGJlIGluIHRoZSBmaXJzdCBjb2x1bW4uICgwPVN1bmRheSwgMT1Nb25kYXksIC4uLilcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgZmlyc3REYXlPZldlZWs/OiAwIHwgMSB8IDIgfCAzIHwgNCB8IDUgfCA2O1xuICAvKiogV2hpY2ggbW9udGggdG8gc2hvdyBpbml0aWFsbHkgKi9cbiAgZGVmYXVsdERhdGVJblZpZXc/OiBEYXRlO1xuICAvKiogU2hvdyBidXR0b25zIHRvIHF1aWNrbHkgc2VsZWN0IHN1Z2dlc3RlZCBkYXRlcyBvciBkYXRlIHJhbmdlcyAqL1xuICBxdWlja09wdGlvbnM/OiBEYXRlUGlja2VyUXVpY2tPcHRpb25bXTtcbiAgLyoqIE1pbmltdW0gc2VsZWN0YWJsZSBkYXRlICovXG4gIC8qKiBEYXRlIHJhbmdlcyB0aGF0IGFyZSB2aXN1YWxseSBtYXJrZWQgYXMgYmxvY2tlZCAqL1xuICBibG9ja2VkUmFuZ2VzPzogRGF0ZVJhbmdlW107XG4gIG1pbkRhdGU/OiBEYXRlO1xuICAvKiogTWF4aW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgbWF4RGF0ZT86IERhdGU7XG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIGNhbGVuZGFyIHdlZWsgaW4gdGhlIGZpcnN0IGNvbHVtbiAqL1xuICBzaG93Q2FsZW5kYXJXZWVrPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IERhdGVQaWNrZXJDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxQYXJ0aWFsPE9taXQ8RGF0ZVBpY2tlclByb3BzLCAndmFsdWUnIHwgJ29uQ2hhbmdlJz4+Pih7fSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlUGlja2VyUHJvdmlkZXIoe1xuICBjaGlsZHJlbixcbiAgLi4ucHJvcHNcbn06IFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4gJiB7IGNoaWxkcmVuPzogUmVhY3ROb2RlIH0pIHtcbiAgY29uc3QgdmFsdWUgPSB1c2VNZW1vKCgpID0+IHByb3BzLCBbSlNPTi5zdHJpbmdpZnkocHJvcHMpXSk7XG5cbiAgcmV0dXJuIDxEYXRlUGlja2VyQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dmFsdWV9PntjaGlsZHJlbn08L0RhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyPjtcbn1cblxuY29uc3Qgd2Vla0RheXMgPSBbMCwgMSwgMiwgMywgNCwgNSwgNl0gYXMgY29uc3Q7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIGRvd24gdG8gdGhlIHN0YXJ0IG9mIHRoZSBkYXkuICovXG5leHBvcnQgY29uc3Qgc3RhcnRPZkRheSA9IChkOiBEYXRlKSA9PiBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkpO1xuXG4vKiogUm91bmRzIGEgZGF0ZSB1cCB0byB0aGUgZW5kIG9mIHRoZSBkYXkuICovXG5leHBvcnQgY29uc3QgZW5kT2ZEYXkgPSAoZDogRGF0ZSkgPT5cbiAgbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpICsgMSwgMCwgMCwgMCwgLTEpO1xuXG5leHBvcnQgY29uc3QgbGFzdERheXMgPSAoZGF5czogbnVtYmVyKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUobWluLmdldERhdGUoKSAtIGRheXMgKyAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobm93KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0b2RheSA9ICgpID0+IGxhc3REYXlzKDEpO1xuXG5leHBvcnQgY29uc3QgdGhpc1dlZWsgPSAoZGVsdGEgPSAwLCBmaXJzdERheU9mV2VlayA9IDEpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuXG4gIGxldCBkaWZmID0gbWluLmdldERheSgpIC0gZmlyc3REYXlPZldlZWs7XG4gIGlmIChkaWZmIDwgMCkge1xuICAgIGRpZmYgKz0gNztcbiAgfVxuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGlmZiArIGRlbHRhICogNyk7XG5cbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSArIDYpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRoaXNNb250aCA9IChkZWx0YSA9IDApOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZSgxKTtcbiAgbWluLnNldE1vbnRoKG1pbi5nZXRNb250aCgpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0TW9udGgobWF4LmdldE1vbnRoKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRoaXNZZWFyID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgoMCk7XG4gIG1pbi5zZXRGdWxsWWVhcihtaW4uZ2V0RnVsbFllYXIoKSArIGRlbHRhKTtcbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldEZ1bGxZZWFyKG1heC5nZXRGdWxsWWVhcigpICsgMSk7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgLSAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmNvbnN0IE1TX1BFUl9EQVkgPSAxMDAwICogNjAgKiA2MCAqIDI0O1xuZXhwb3J0IGNvbnN0IGdldENhbGVuZGFyV2VlayA9IChkYXRlOiBEYXRlKTogbnVtYmVyID0+IHtcbiAgLy8gSVNPIDg2MDE6IFdlZWsgMSBpcyB0aGUgd2VlayB3aXRoIHRoZSBmaXJzdCBUaHVyc2RheSBvZiB0aGUgeWVhci5cbiAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuXG4gIGNvbnN0IGVuZE9mV2VlayA9IG5ldyBEYXRlKFxuICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgZGF0ZS5nZXREYXRlKCkgKyAoNyAtIChkYXRlLmdldERheSgpIHx8IDcpKSxcbiAgKTtcblxuICBjb25zdCB5ZWFyID0gZW5kT2ZXZWVrLmdldEZ1bGxZZWFyKCk7XG4gIGNvbnN0IGZpcnN0RGF5T2ZZZWFyID0gbmV3IERhdGUoeWVhciwgMCwgMSk7XG4gIGNvbnN0IGRheU9mWWVhciA9XG4gICAgTWF0aC5mbG9vcihcbiAgICAgIChlbmRPZldlZWsuZ2V0VGltZSgpIC1cbiAgICAgICAgZmlyc3REYXlPZlllYXIuZ2V0VGltZSgpICtcbiAgICAgICAgKGVuZE9mV2Vlay5nZXRUaW1lem9uZU9mZnNldCgpIC0gZmlyc3REYXlPZlllYXIuZ2V0VGltZXpvbmVPZmZzZXQoKSkpIC9cbiAgICAgICAgTVNfUEVSX0RBWSxcbiAgICApICsgMTtcbiAgY29uc3Qgd2Vla09mWWVhciA9IE1hdGguZmxvb3IoKDMgKyBkYXlPZlllYXIpIC8gNyk7XG5cbiAgaWYgKHdlZWtPZlllYXIgPT09IDApIHtcbiAgICByZXR1cm4gKFxuICAgICAgZ2V0Q2FsZW5kYXJXZWVrKFxuICAgICAgICBuZXcgRGF0ZShlbmRPZldlZWsuZ2V0RnVsbFllYXIoKSwgZW5kT2ZXZWVrLmdldE1vbnRoKCksIGVuZE9mV2Vlay5nZXREYXRlKCkgLSA3KSxcbiAgICAgICkgKyAxXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB3ZWVrT2ZZZWFyO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbW1vblF1aWNrT3B0aW9ucyA9IHtcbiAgdG9kYXk6IHsgbGFiZWw6IDxUZXh0IGlkPVwidG9kYXlcIiAvPiwgdmFsdWU6IHRvZGF5IH0sXG4gIHRoaXNXZWVrOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNXZWVrXCIgLz4sIHZhbHVlOiAocHJvcHMpID0+IHRoaXNXZWVrKDAsIHByb3BzLmZpcnN0RGF5T2ZXZWVrKSB9LFxuICB0aGlzTW9udGg6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc01vbnRoXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzTW9udGgoKSB9LFxuICB0aGlzWWVhcjogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzWWVhclwiIC8+LCB2YWx1ZTogKCkgPT4gdGhpc1llYXIoKSB9LFxuICBsYXN0U2V2ZW5EYXlzOiB7IGxhYmVsOiA8VGV4dCBpZD1cImxhc3RTZXZlbkRheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDcpIH0sXG4gIGxhc3RUaGlydHlEYXlzOiB7IGxhYmVsOiA8VGV4dCBpZD1cImxhc3RUaGlydHlEYXlzXCIgLz4sIHZhbHVlOiAoKSA9PiBsYXN0RGF5cygzMCkgfSxcbn0gc2F0aXNmaWVzIFJlY29yZDxcbiAgRGF0ZVBpY2tlclF1aWNrT3B0aW9uICYgc3RyaW5nLFxuICB7IGxhYmVsOiBSZWFjdE5vZGU7IHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgKChwcm9wczogRGF0ZVBpY2tlclByb3BzKSA9PiBEYXRlIHwgRGF0ZVJhbmdlKSB9XG4+O1xuXG4vKiogUmV0dXJucyB3aGV0aGVyIHR3byBkYXRlcyBhbmQvb3IgZGF0ZSByYW5nZXMgaW50ZXJzZWN0LiBJbnRlcnNlY3Rpb24gaXMgY29uc2lkZXJlZCBwZXIgZGF5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGVJbnRlcnNlY3QoXG4gIGE6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBiOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCB8IHVuZGVmaW5lZCxcbikge1xuICBpZiAoYSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBhID0geyBtaW46IGEsIG1heDogYSB9O1xuICB9XG4gIGlmIChiIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGIgPSB7IG1pbjogYiwgbWF4OiBiIH07XG4gIH1cblxuICBpZiAoIWE/Lm1pbiB8fCAhYS5tYXggfHwgIWI/Lm1pbiB8fCAhYi5tYXgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gIShlbmRPZkRheShhLm1heCkgPCBzdGFydE9mRGF5KGIubWluKSB8fCBzdGFydE9mRGF5KGEubWluKSA+IGVuZE9mRGF5KGIubWF4KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlQ2xhbXAoZGF0ZTogRGF0ZSwgbWluPzogRGF0ZSwgbWF4PzogRGF0ZSkge1xuICBpZiAobWluICYmIGRhdGUgPCBtaW4pIHtcbiAgICByZXR1cm4gbWluO1xuICB9XG5cbiAgaWYgKG1heCAmJiBkYXRlID4gbWF4KSB7XG4gICAgcmV0dXJuIG1heDtcbiAgfVxuXG4gIHJldHVybiBkYXRlO1xufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWU/OiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gdmFsdWUuZ2V0VGltZSgpO1xuICB9XG4gIHJldHVybiBgJHt2YWx1ZS5taW4/LmdldFRpbWUoKX0tJHt2YWx1ZS5tYXg/LmdldFRpbWUoKX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlcihwcm9wczogRGF0ZVBpY2tlclByb3BzKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERhdGVQaWNrZXJDb250ZXh0KTtcblxuICBjb25zdCB7XG4gICAgdmFsdWUsXG4gICAgcmFuZ2VTZWxlY3QsXG4gICAgbG9jYWxlLFxuICAgIGZpcnN0RGF5T2ZXZWVrID0gMSxcbiAgICBkZWZhdWx0RGF0ZUluVmlldyxcbiAgICBxdWlja09wdGlvbnMgPSBbJ3RvZGF5JywgJ3RoaXNXZWVrJ10sXG4gICAgbWluRGF0ZSxcbiAgICBtYXhEYXRlLFxuICAgIHNob3dDYWxlbmRhcldlZWssXG4gICAgYmxvY2tlZFJhbmdlcyA9IFtdLFxuICB9ID0gZGVmYXVsdHM8RGF0ZVBpY2tlclByb3BzPihwcm9wcywgY29udGV4dCk7XG5cbiAgZnVuY3Rpb24gb25DaGFuZ2UodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgdmFsdWUgPSBkYXRlQ2xhbXAodmFsdWUsIG1pbkRhdGUsIG1heERhdGUpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgIHZhbHVlID0ge1xuICAgICAgICBtaW46IGRhdGVDbGFtcCh2YWx1ZS5taW4sIG1pbkRhdGUsIG1heERhdGUpLFxuICAgICAgICBtYXg6IGRhdGVDbGFtcCh2YWx1ZS5tYXgsIG1pbkRhdGUsIG1heERhdGUpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBwcm9wcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICBjb25zdCBCdXR0b24gPSB1c2VUaGVtZSgodCkgPT4gdC5jb21wb25lbnRzLkJ1dHRvbik7XG4gIGNvbnN0IEljb25CdXR0b24gPSB1c2VUaGVtZSgodCkgPT4gdC5jb21wb25lbnRzLkljb25CdXR0b24pO1xuICBjb25zdCBDaGV2cm9uUmlnaHQgPSB1c2VUaGVtZSgodCkgPT4gdC5pY29ucy5DaGV2cm9uUmlnaHQpO1xuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB1c2VDc3NWYXJpYWJsZXMoKTtcbiAgZnVuY3Rpb24gZ2V0RGF5Q3NzU3R5bGVzKHtcbiAgICBkaXNhYmxlZCxcbiAgICBwcmV2TW9udGgsXG4gICAgbmV4dE1vbnRoLFxuICAgIHRvZGF5LFxuICAgIGJsb2NrZWQsXG4gICAgc2VsZWN0ZWQsXG4gICAgcHJlU2VsZWN0ZWQsXG4gIH06IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgcHJldk1vbnRoPzogYm9vbGVhbjtcbiAgICBuZXh0TW9udGg/OiBib29sZWFuO1xuICAgIHRvZGF5PzogYm9vbGVhbjtcbiAgICBibG9ja2VkPzogYm9vbGVhbjtcbiAgICBzZWxlY3RlZD86IGJvb2xlYW47XG4gICAgcHJlU2VsZWN0ZWQ/OiBib29sZWFuO1xuICB9KTogSW50ZXJwb2xhdGlvbjxUaGVtZT4ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgY3Vyc29yOiBkaXNhYmxlZCA/IHVuZGVmaW5lZCA6ICdwb2ludGVyJyxcbiAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgfSxcbiAgICAgIChwcmV2TW9udGggfHwgbmV4dE1vbnRoKSAmJiB7XG4gICAgICAgIGNvbG9yOiBncmF5LFxuICAgICAgfSxcbiAgICAgIHRvZGF5ICYmIHtcbiAgICAgICAgb3V0bGluZTogJzFweCBzb2xpZCB2YXIoLS1zZWNvbmRhcnlNYWluKScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ibG9ja2VkTWFpbiknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLWJsb2NrZWRDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TWFpbiknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLXByaW1hcnlDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgICBibG9ja2VkICYmXG4gICAgICAgIHNlbGVjdGVkICYmIHtcbiAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAnOjpiZWZvcmUnOiB7XG4gICAgICAgICAgICBjb250ZW50OiAnXCJcIicsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ibG9ja2VkTWFpbiknLFxuICAgICAgICAgICAgY2xpcFBhdGg6ICdwb2x5Z29uKDAgMCwgMCA1MCUsIDUwJSAwKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIHByZVNlbGVjdGVkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLXByaW1hcnlMaWdodCknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLXByaW1hcnlDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0IG1vdW50VGltZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoKSwgW10pO1xuICBjb25zdCBbZGlydHksIHNldERpcnR5XSA9IHVzZVN0YXRlPFBhcnRpYWw8RGF0ZVJhbmdlPj4oKTtcbiAgY29uc3QgW2hvdmVyZWQsIHNldEhvdmVyZWRdID0gdXNlU3RhdGU8RGF0ZVJhbmdlPigpO1xuICBjb25zdCBbZGF0ZUluVmlld0xvY2FsLCBzZXREYXRlSW5WaWV3TG9jYWxdID0gdXNlU3RhdGU8RGF0ZT4oZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lKTtcbiAgY29uc3QgZGF0ZUluVmlldyA9IHByb3BzLmRhdGVJblZpZXcgPz8gZGF0ZUluVmlld0xvY2FsO1xuXG4gIGZ1bmN0aW9uIHNldERhdGVJblZpZXcoZGF0ZTogRGF0ZSkge1xuICAgIHNldERhdGVJblZpZXdMb2NhbChkYXRlKTtcbiAgICBwcm9wcy5vbkRhdGVJblZpZXdDaGFuZ2U/LihkYXRlKTtcbiAgfVxuXG4gIGNvbnN0IG1pbiA9IGRpcnR5ID8gZGlydHkubWluIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWluO1xuICBjb25zdCBtYXggPSBkaXJ0eSA/IGRpcnR5Lm1heCA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWU/Lm1heDtcblxuICBjb25zdCByZXNvbHZlZFF1aWNrT3B0aW9ucyA9IFsuLi5xdWlja09wdGlvbnMsIHsgbGFiZWw6IDxUZXh0IGlkPVwicmVzZXRcIiAvPiwgdmFsdWU6IG51bGwgfV0ubWFwKFxuICAgIChvcHRpb24sIGluZGV4KSA9PiB7XG4gICAgICBpZiAob3B0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbigodmFsdWUpID0+IHtcbiAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgbGFiZWwsIHZhbHVlIH0gPSB0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJyA/IGNvbW1vblF1aWNrT3B0aW9uc1tvcHRpb25dIDogb3B0aW9uO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUocHJvcHMpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge2xhYmVsfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICk7XG4gICAgfSxcbiAgKTtcblxuICBjb25zdCB7IGNhbGVuZGFycywgZ2V0QmFja1Byb3BzLCBnZXRGb3J3YXJkUHJvcHMsIGdldERhdGVQcm9wcyB9ID0gdXNlRGF5emVkKHtcbiAgICBvbkRhdGVTZWxlY3RlZDogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGZpcnN0RGF5T2ZXZWVrLFxuICAgIHNob3dPdXRzaWRlRGF5czogdHJ1ZSxcbiAgICBkYXRlOiBkYXRlSW5WaWV3LFxuICAgIG9uT2Zmc2V0Q2hhbmdlZDogKG9mZnNldCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcobmV3IERhdGUoZGF0ZUluVmlldy5nZXRGdWxsWWVhcigpLCBkYXRlSW5WaWV3LmdldE1vbnRoKCkgKyBvZmZzZXQpKSxcbiAgICBvZmZzZXQ6IDAsXG4gICAgbWluRGF0ZSxcbiAgICBtYXhEYXRlLFxuICB9KTtcbiAgY29uc3Qgbm93ID0gdXNlTWVtbygoKSA9PiBzdGFydE9mRGF5KG5ldyBEYXRlKCkpLCBbXSk7XG5cbiAgY29uc3QgZm9ybWF0V2Vla2RheSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgd2Vla2RheTogJ3Nob3J0JyB9KTtcbiAgICByZXR1cm4gKHdlZWtEYXk6IG51bWJlcikgPT5cbiAgICAgIGZvcm1hdChuZXcgRGF0ZShEYXRlLlVUQygyMDIxLCA3LCAoKHdlZWtEYXkgKyBmaXJzdERheU9mV2VlaykgJSA3KSArIDEpKSk7XG4gIH0sIFtsb2NhbGUsIGZpcnN0RGF5T2ZXZWVrXSk7XG5cbiAgdXNlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICBzZXREYXRlSW5WaWV3KFxuICAgICAgICB2YWx1ZSA9PT0gbnVsbCA/IGRlZmF1bHREYXRlSW5WaWV3ID8/IG1vdW50VGltZSA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWUubWF4LFxuICAgICAgKSxcbiAgICBbZ2V0VmFsdWVGb3JDb21wYXJpc29uKHZhbHVlKSwgZ2V0VmFsdWVGb3JDb21wYXJpc29uKGRlZmF1bHREYXRlSW5WaWV3KSwgbW91bnRUaW1lXSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgfVxuICB9LCBbcmFuZ2VTZWxlY3RdKTtcblxuICBmdW5jdGlvbiBzZXQobWluPzogRGF0ZSwgbWF4PzogRGF0ZSwgZWRpdD86ICdtaW4nIHwgJ21heCcpIHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBvbkNoYW5nZShtaW4gPz8gbnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG1pbiAmJiBtYXggJiYgbWluID4gbWF4KSB7XG4gICAgICBpZiAoZWRpdCA9PT0gJ21pbicpIHtcbiAgICAgICAgbWF4ID0gbWluO1xuICAgICAgfSBlbHNlIGlmIChlZGl0ID09PSAnbWF4Jykge1xuICAgICAgICBtaW4gPSBtYXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbbWluLCBtYXhdID0gW21heCwgbWluXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW1pbiA9PT0gIW1heCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICAgIG9uQ2hhbmdlKG1pbiAmJiBtYXggPyB7IG1pbiwgbWF4OiBlbmRPZkRheShtYXgpIH0gOiBudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0RGlydHkoeyBtaW4sIG1heCB9KTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBmb3JtYXRNb250aCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgbW9udGg6ICdsb25nJyB9KTtcbiAgICByZXR1cm4gKG1vbnRoOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSgyMDIxLCBtb250aCkpO1xuICB9LCBbbG9jYWxlXSk7XG5cbiAgY29uc3QgZm9ybWF0WWVhciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgeWVhcjogJ251bWVyaWMnIH0pO1xuICAgIHJldHVybiAoeWVhcjogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoeWVhciwgMCwgMSkpO1xuICB9LCBbbG9jYWxlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNzcz17Y3NzVmFyaWFibGVzfT5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgIGFsaWduSXRlbXM6ICdiYXNlbGluZScsXG4gICAgICAgICAgZ2FwOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8RGF0ZUlucHV0XG4gICAgICAgICAgdmFsdWU9e21pbiA/PyBudWxsfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KGRhdGUgPz8gdW5kZWZpbmVkLCBtYXgsICdtaW4nKX1cbiAgICAgICAgICBsb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgLz5cblxuICAgICAgICB7cmFuZ2VTZWxlY3QgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICB7JyAtICd9XG4gICAgICAgICAgICA8RGF0ZUlucHV0XG4gICAgICAgICAgICAgIHZhbHVlPXttYXggPz8gbnVsbH1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQobWluLCBkYXRlID8/IHVuZGVmaW5lZCwgJ21heCcpfVxuICAgICAgICAgICAgICBsb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAge2NhbGVuZGFycy5tYXAoKHsgbW9udGgsIHllYXIsIHdlZWtzIH0pID0+IChcbiAgICAgICAgPGRpdiBrZXk9e2Ake21vbnRofSR7eWVhcn1gfSBjc3M9e3sgZGlzcGxheTogJ2dyaWQnIH19PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICBtYXJnaW46ICdjYWxjKHZhcigtLXNwYWNpbmcpICogNCkgMCcsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0QmFja1Byb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCBjc3M9e3sgdHJhbnNmb3JtOiAncm90YXRlM2QoMCwgMCwgMSwgMTgwZGVnKScgfX0gLz5cbiAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cblxuICAgICAgICAgICAgPGRpdiBjc3M9e3sgZGlzcGxheTogJ2ZsZXgnIH19PlxuICAgICAgICAgICAgICB7Zm9ybWF0TW9udGgobW9udGgpfSB7Zm9ybWF0WWVhcih5ZWFyKX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEZvcndhcmRQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgLz5cbiAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICAgICAgZ3JpZFRlbXBsYXRlQ29sdW1uczogJ3JlcGVhdCg4LCBtYXgtY29udGVudCknLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2hvd0NhbGVuZGFyV2VlayA/IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFRleHQgaWQ9XCJjYWxlbmRhcldlZWtcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHt3ZWVrRGF5cy5tYXAoKF92LCB3ZWVrRGF5KSA9PiAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBrZXk9e3dlZWtEYXl9XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2Zvcm1hdFdlZWtkYXkod2Vla0RheSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSl9XG5cbiAgICAgICAgICAgIHt3ZWVrcy5tYXAoKHdlZWssIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtTdGFydCA9IHdlZWtbMF0gYXMgRGF0ZU9iajtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla0VuZCA9IHdlZWtbNl0gYXMgRGF0ZU9iajtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla0Rpc2FibGVkID1cbiAgICAgICAgICAgICAgICAhcmFuZ2VTZWxlY3QgfHxcbiAgICAgICAgICAgICAgICAobWluRGF0ZSAmJiB3ZWVrRW5kLmRhdGUgPCBtaW5EYXRlKSB8fFxuICAgICAgICAgICAgICAgIChtYXhEYXRlICYmIHdlZWtTdGFydC5kYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8RnJhZ21lbnQga2V5PXtpbmRleH0+XG4gICAgICAgICAgICAgICAgICB7c2hvd0NhbGVuZGFyV2VlayA/IChcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHdlZWtEaXNhYmxlZCA/IHVuZGVmaW5lZCA6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdlZWtEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pbiA9IG1pbkRhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPCBtaW5EYXRlID8gbWluRGF0ZSA6IHdlZWtTdGFydC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4ID0gbWF4RGF0ZSAmJiB3ZWVrRW5kLmRhdGUgPiBtYXhEYXRlID8gbWF4RGF0ZSA6IHdlZWtFbmQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldChtaW4sIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdmVyPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgIXdlZWtEaXNhYmxlZCAmJiBzZXRIb3ZlcmVkKHsgbWluOiB3ZWVrU3RhcnQuZGF0ZSwgbWF4OiB3ZWVrRW5kLmRhdGUgfSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3V0PXsoKSA9PiAhd2Vla0Rpc2FibGVkICYmIHNldEhvdmVyZWQodW5kZWZpbmVkKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtnZXRDYWxlbmRhcldlZWsod2Vla0VuZC5kYXRlKX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICB7d2Vlay5tYXAoKGRhdGVPYmplY3QsIGRheUluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0ZU9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17ZGF5SW5kZXh9IC8+O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwcmV2TW9udGgsIG5leHRNb250aCwgZGF0ZSB9ID0gZGF0ZU9iamVjdDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9kYXkgPSBzdGFydE9mRGF5KGRhdGUpLmdldFRpbWUoKSA9PT0gbm93LmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzYWJsZWQgPSAobWluRGF0ZSAmJiBkYXRlIDwgbWluRGF0ZSkgfHwgKG1heERhdGUgJiYgZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICBkYXRlLmdldFRpbWUoKSA9PT0gbWluPy5nZXRUaW1lKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAobWluICYmIG1heCAmJiBkYXRlSW50ZXJzZWN0KGRhdGUsIHsgbWluLCBtYXggfSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVTZWxlY3RlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgIWRpc2FibGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgKGRhdGVJbnRlcnNlY3QoZGF0ZSwgaG92ZXJlZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIW1heCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBob3ZlcmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVJbnRlcnNlY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4gPD0gaG92ZXJlZC5taW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBtaW4sIG1heDogaG92ZXJlZC5taW4gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7IG1pbjogaG92ZXJlZC5tYXgsIG1heDogbWluIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tlZCA9IGJsb2NrZWRSYW5nZXMuc29tZSgocmFuZ2UpID0+IGRhdGVJbnRlcnNlY3QoZGF0ZSwgcmFuZ2UpKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtpbmRleH0tJHtkYXlJbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtnZXREYXlDc3NTdHlsZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldk1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvZGF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZXREYXRlUHJvcHMoeyBkYXRlT2JqOiBkYXRlT2JqZWN0IH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluKSBzZXQobWluLCBkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNldChkYXRlLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+IHNldEhvdmVyZWQoeyBtaW46IGRhdGUsIG1heDogZGF0ZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck91dD17KCkgPT4gc2V0SG92ZXJlZCh1bmRlZmluZWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtkYXRlLmdldERhdGUoKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApKX1cblxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBtYXJnaW5Ub3A6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7cmVzb2x2ZWRRdWlja09wdGlvbnN9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdfQ== */",
|
|
1005
1005
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__$d
|
|
1006
1006
|
};
|
|
1007
1007
|
var _ref8 = process.env.NODE_ENV === "production" ? {
|
|
@@ -1010,7 +1010,7 @@ var _ref8 = process.env.NODE_ENV === "production" ? {
|
|
|
1010
1010
|
} : {
|
|
1011
1011
|
name: "1lzq5di-DatePicker",
|
|
1012
1012
|
styles: "margin-top:var(--spacing);display:grid;grid-auto-flow:column;justify-content:center;label:DatePicker;",
|
|
1013
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStsQlEiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgeSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmRveSA9IG5ldyBEYXRlKHksIDAsIDEpO1xuICBjb25zdCBkb3kgPSBNYXRoLmZsb29yKFxuICAgIChkYXRlLmdldFRpbWUoKSAtIGZkb3kuZ2V0VGltZSgpICsgKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGZkb3kuZ2V0VGltZXpvbmVPZmZzZXQoKSkpIC9cbiAgICAgIE1TX1BFUl9EQVksXG4gICk7XG4gIGNvbnN0IGRvdyA9IGZkb3kuZ2V0RGF5KCk7XG4gIGNvbnN0IHcgPSBNYXRoLmZsb29yKCgxMCArIGRveSAtIGRvdykgLyA3KTtcblxuICBpZiAodyA9PT0gMCkge1xuICAgIHJldHVybiBnZXRDYWxlbmRhcldlZWsobmV3IERhdGUoeSAtIDEsIDExLCAzMSkpO1xuICB9XG5cbiAgcmV0dXJuIHc7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChhOiBEYXRlIHwgbnVsbCB8IERhdGVSYW5nZSwgYjogRGF0ZSB8IG51bGwgfCBEYXRlUmFuZ2UpIHtcbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYSA9IHsgbWluOiBhLCBtYXg6IGEgfTtcbiAgfVxuICBpZiAoYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBiID0geyBtaW46IGIsIG1heDogYiB9O1xuICB9XG5cbiAgaWYgKCFhPy5taW4gfHwgIWEubWF4IHx8ICFiPy5taW4gfHwgIWIubWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuICEoZW5kT2ZEYXkoYS5tYXgpIDwgc3RhcnRPZkRheShiLm1pbikgfHwgc3RhcnRPZkRheShhLm1pbikgPiBlbmRPZkRheShiLm1heCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNsYW1wKGRhdGU6IERhdGUsIG1pbj86IERhdGUsIG1heD86IERhdGUpIHtcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxuXG4gIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWVGb3JDb21wYXJpc29uKHZhbHVlPzogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmdldFRpbWUoKTtcbiAgfVxuICByZXR1cm4gYCR7dmFsdWUubWluPy5nZXRUaW1lKCl9LSR7dmFsdWUubWF4Py5nZXRUaW1lKCl9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXIocHJvcHM6IERhdGVQaWNrZXJQcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChEYXRlUGlja2VyQ29udGV4dCk7XG5cbiAgY29uc3Qge1xuICAgIHZhbHVlLFxuICAgIHJhbmdlU2VsZWN0LFxuICAgIGxvY2FsZSxcbiAgICBmaXJzdERheU9mV2VlayA9IDEsXG4gICAgZGVmYXVsdERhdGVJblZpZXcsXG4gICAgcXVpY2tPcHRpb25zID0gWyd0b2RheScsICd0aGlzV2VlayddLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICBzaG93Q2FsZW5kYXJXZWVrLFxuICAgIGJsb2NrZWRSYW5nZXMgPSBbXSxcbiAgfSA9IGRlZmF1bHRzPERhdGVQaWNrZXJQcm9wcz4ocHJvcHMsIGNvbnRleHQpO1xuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHZhbHVlID0gZGF0ZUNsYW1wKHZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHtcbiAgICAgICAgbWluOiBkYXRlQ2xhbXAodmFsdWUubWluLCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgICAgbWF4OiBkYXRlQ2xhbXAodmFsdWUubWF4LCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgY29uc3QgQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5CdXR0b24pO1xuICBjb25zdCBJY29uQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5JY29uQnV0dG9uKTtcbiAgY29uc3QgQ2hldnJvblJpZ2h0ID0gdXNlVGhlbWUoKHQpID0+IHQuaWNvbnMuQ2hldnJvblJpZ2h0KTtcbiAgY29uc3QgY3NzVmFyaWFibGVzID0gdXNlQ3NzVmFyaWFibGVzKCk7XG4gIGZ1bmN0aW9uIGdldERheUNzc1N0eWxlcyh7XG4gICAgZGlzYWJsZWQsXG4gICAgcHJldk1vbnRoLFxuICAgIG5leHRNb250aCxcbiAgICB0b2RheSxcbiAgICBibG9ja2VkLFxuICAgIHNlbGVjdGVkLFxuICAgIHByZVNlbGVjdGVkLFxuICB9OiB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZNb250aD86IGJvb2xlYW47XG4gICAgbmV4dE1vbnRoPzogYm9vbGVhbjtcbiAgICB0b2RheT86IGJvb2xlYW47XG4gICAgYmxvY2tlZD86IGJvb2xlYW47XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIHByZVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgfSk6IEludGVycG9sYXRpb248VGhlbWU+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGN1cnNvcjogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgIH0sXG4gICAgICAocHJldk1vbnRoIHx8IG5leHRNb250aCkgJiYge1xuICAgICAgICBjb2xvcjogZ3JheSxcbiAgICAgIH0sXG4gICAgICB0b2RheSAmJiB7XG4gICAgICAgIG91dGxpbmU6ICcxcHggc29saWQgdmFyKC0tc2Vjb25kYXJ5TWFpbiknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1ibG9ja2VkQ29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeU1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJlxuICAgICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgJzo6YmVmb3JlJzoge1xuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgICAgIGNsaXBQYXRoOiAncG9seWdvbigwIDAsIDAgNTAlLCA1MCUgMCknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBwcmVTZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TGlnaHQpJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBjb25zdCBtb3VudFRpbWUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKCksIFtdKTtcbiAgY29uc3QgW2RpcnR5LCBzZXREaXJ0eV0gPSB1c2VTdGF0ZTxQYXJ0aWFsPERhdGVSYW5nZT4+KCk7XG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlPERhdGU+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFtnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWUpLCBnZXRWYWx1ZUZvckNvbXBhcmlzb24oZGVmYXVsdERhdGVJblZpZXcpLCBtb3VudFRpbWVdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICB9XG4gIH0sIFtyYW5nZVNlbGVjdF0pO1xuXG4gIGZ1bmN0aW9uIHNldChtaW4/OiBEYXRlLCBtYXg/OiBEYXRlLCBlZGl0PzogJ21pbicgfCAnbWF4Jykge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIG9uQ2hhbmdlKG1pbiA/PyBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobWluICYmIG1heCAmJiBtaW4gPiBtYXgpIHtcbiAgICAgIGlmIChlZGl0ID09PSAnbWluJykge1xuICAgICAgICBtYXggPSBtaW47XG4gICAgICB9IGVsc2UgaWYgKGVkaXQgPT09ICdtYXgnKSB7XG4gICAgICAgIG1pbiA9IG1heDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFttaW4sIG1heF0gPSBbbWF4LCBtaW5dO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghbWluID09PSAhbWF4KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgICAgb25DaGFuZ2UobWluICYmIG1heCA/IHsgbWluLCBtYXg6IGVuZE9mRGF5KG1heCkgfSA6IG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXREaXJ0eSh7IG1pbiwgbWF4IH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZvcm1hdE1vbnRoID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBtb250aDogJ2xvbmcnIH0pO1xuICAgIHJldHVybiAobW9udGg6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKDIwMjEsIG1vbnRoKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICBjb25zdCBmb3JtYXRZZWFyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gICAgcmV0dXJuICh5ZWFyOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSh5ZWFyLCAwLCAxKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY3NzPXtjc3NWYXJpYWJsZXN9PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2Jhc2VsaW5lJyxcbiAgICAgICAgICBnYXA6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICB2YWx1ZT17bWluID8/IG51bGx9XG4gICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQoZGF0ZSA/PyB1bmRlZmluZWQsIG1heCwgJ21pbicpfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAvPlxuXG4gICAgICAgIHtyYW5nZVNlbGVjdCAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHsnIC0gJ31cbiAgICAgICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICAgICAgdmFsdWU9e21heCA/PyBudWxsfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChtaW4sIGRhdGUgPz8gdW5kZWZpbmVkLCAnbWF4Jyl9XG4gICAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7Y2FsZW5kYXJzLm1hcCgoeyBtb250aCwgeWVhciwgd2Vla3MgfSkgPT4gKFxuICAgICAgICA8ZGl2IGtleT17YCR7bW9udGh9JHt5ZWFyfWB9IGNzcz17eyBkaXNwbGF5OiAnZ3JpZCcgfX0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIG1hcmdpbjogJ2NhbGModmFyKC0tc3BhY2luZykgKiA0KSAwJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRCYWNrUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNzcz17eyB0cmFuc2Zvcm06ICdyb3RhdGUzZCgwLCAwLCAxLCAxODBkZWcpJyB9fSAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2IGNzcz17eyBkaXNwbGF5OiAnZmxleCcgfX0+XG4gICAgICAgICAgICAgIHtmb3JtYXRNb250aChtb250aCl9IHtmb3JtYXRZZWFyKHllYXIpfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0Rm9yd2FyZFByb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KDgsIG1heC1jb250ZW50KScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGV4dCBpZD1cImNhbGVuZGFyV2Vla1wiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3dlZWtEYXlzLm1hcCgoX3YsIHdlZWtEYXkpID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGtleT17d2Vla0RheX1cbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Zm9ybWF0V2Vla2RheSh3ZWVrRGF5KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cblxuICAgICAgICAgICAge3dlZWtzLm1hcCgod2VlaywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla1N0YXJ0ID0gd2Vla1swXSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRW5kID0gd2Vla1s2XSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICFyYW5nZVNlbGVjdCB8fFxuICAgICAgICAgICAgICAgIChtaW5EYXRlICYmIHdlZWtFbmQuZGF0ZSA8IG1pbkRhdGUpIHx8XG4gICAgICAgICAgICAgICAgKG1heERhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGcmFnbWVudCBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogd2Vla0Rpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2Vla0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluID0gbWluRGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA8IG1pbkRhdGUgPyBtaW5EYXRlIDogd2Vla1N0YXJ0LmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXggPSBtYXhEYXRlICYmIHdlZWtFbmQuZGF0ZSA+IG1heERhdGUgPyBtYXhEYXRlIDogd2Vla0VuZC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG1pbiwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2dldENhbGVuZGFyV2Vlaygod2Vla1swXSBhcyBEYXRlT2JqKS5kYXRlKX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICB7d2Vlay5tYXAoKGRhdGVPYmplY3QsIGRheUluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0ZU9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17ZGF5SW5kZXh9IC8+O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwcmV2TW9udGgsIG5leHRNb250aCwgZGF0ZSB9ID0gZGF0ZU9iamVjdDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9kYXkgPSBzdGFydE9mRGF5KGRhdGUpLmdldFRpbWUoKSA9PT0gbm93LmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzYWJsZWQgPSAobWluRGF0ZSAmJiBkYXRlIDwgbWluRGF0ZSkgfHwgKG1heERhdGUgJiYgZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICBkYXRlLmdldFRpbWUoKSA9PT0gbWluPy5nZXRUaW1lKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAobWluICYmIG1heCAmJiBkYXRlSW50ZXJzZWN0KGRhdGUsIHsgbWluLCBtYXggfSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVTZWxlY3RlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgIWRpc2FibGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgKGRhdGUuZ2V0VGltZSgpID09PSBob3ZlcmVkPy5nZXRUaW1lKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIW1heCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBob3ZlcmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVJbnRlcnNlY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4gPD0gaG92ZXJlZCA/IHsgbWluLCBtYXg6IGhvdmVyZWQgfSA6IHsgbWluOiBob3ZlcmVkLCBtYXg6IG1pbiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICApKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrZWQgPSBibG9ja2VkUmFuZ2VzLnNvbWUoKHJhbmdlKSA9PiBkYXRlSW50ZXJzZWN0KGRhdGUsIHJhbmdlKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7aW5kZXh9LSR7ZGF5SW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Z2V0RGF5Q3NzU3R5bGVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZVNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0RGF0ZVByb3BzKHsgZGF0ZU9iajogZGF0ZU9iamVjdCB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbikgc2V0KG1pbiwgZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzZXQoZGF0ZSwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdmVyPXsoKSA9PiBzZXRIb3ZlcmVkKGRhdGUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3V0PXsoKSA9PiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2RhdGUuZ2V0RGF0ZSgpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICkpfVxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIG1hcmdpblRvcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXNvbHZlZFF1aWNrT3B0aW9uc31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19 */",
|
|
1013
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9uQlEiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgZW5kT2ZXZWVrID0gbmV3IERhdGUoXG4gICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgIGRhdGUuZ2V0TW9udGgoKSxcbiAgICBkYXRlLmdldERhdGUoKSArICg3IC0gKGRhdGUuZ2V0RGF5KCkgfHwgNykpLFxuICApO1xuXG4gIGNvbnN0IHllYXIgPSBlbmRPZldlZWsuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmlyc3REYXlPZlllYXIgPSBuZXcgRGF0ZSh5ZWFyLCAwLCAxKTtcbiAgY29uc3QgZGF5T2ZZZWFyID1cbiAgICBNYXRoLmZsb29yKFxuICAgICAgKGVuZE9mV2Vlay5nZXRUaW1lKCkgLVxuICAgICAgICBmaXJzdERheU9mWWVhci5nZXRUaW1lKCkgK1xuICAgICAgICAoZW5kT2ZXZWVrLmdldFRpbWV6b25lT2Zmc2V0KCkgLSBmaXJzdERheU9mWWVhci5nZXRUaW1lem9uZU9mZnNldCgpKSkgL1xuICAgICAgICBNU19QRVJfREFZLFxuICAgICkgKyAxO1xuICBjb25zdCB3ZWVrT2ZZZWFyID0gTWF0aC5mbG9vcigoMyArIGRheU9mWWVhcikgLyA3KTtcblxuICBpZiAod2Vla09mWWVhciA9PT0gMCkge1xuICAgIHJldHVybiAoXG4gICAgICBnZXRDYWxlbmRhcldlZWsoXG4gICAgICAgIG5ldyBEYXRlKGVuZE9mV2Vlay5nZXRGdWxsWWVhcigpLCBlbmRPZldlZWsuZ2V0TW9udGgoKSwgZW5kT2ZXZWVrLmdldERhdGUoKSAtIDcpLFxuICAgICAgKSArIDFcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHdlZWtPZlllYXI7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChcbiAgYTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGI6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsIHwgdW5kZWZpbmVkLFxuKSB7XG4gIGlmIChhIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGEgPSB7IG1pbjogYSwgbWF4OiBhIH07XG4gIH1cbiAgaWYgKGIgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYiA9IHsgbWluOiBiLCBtYXg6IGIgfTtcbiAgfVxuXG4gIGlmICghYT8ubWluIHx8ICFhLm1heCB8fCAhYj8ubWluIHx8ICFiLm1heCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAhKGVuZE9mRGF5KGEubWF4KSA8IHN0YXJ0T2ZEYXkoYi5taW4pIHx8IHN0YXJ0T2ZEYXkoYS5taW4pID4gZW5kT2ZEYXkoYi5tYXgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVDbGFtcChkYXRlOiBEYXRlLCBtaW4/OiBEYXRlLCBtYXg/OiBEYXRlKSB7XG4gIGlmIChtaW4gJiYgZGF0ZSA8IG1pbikge1xuICAgIHJldHVybiBtaW47XG4gIH1cblxuICBpZiAobWF4ICYmIGRhdGUgPiBtYXgpIHtcbiAgICByZXR1cm4gbWF4O1xuICB9XG5cbiAgcmV0dXJuIGRhdGU7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlRm9yQ29tcGFyaXNvbih2YWx1ZT86IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiB2YWx1ZS5nZXRUaW1lKCk7XG4gIH1cbiAgcmV0dXJuIGAke3ZhbHVlLm1pbj8uZ2V0VGltZSgpfS0ke3ZhbHVlLm1heD8uZ2V0VGltZSgpfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlUGlja2VyKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRGF0ZVBpY2tlckNvbnRleHQpO1xuXG4gIGNvbnN0IHtcbiAgICB2YWx1ZSxcbiAgICByYW5nZVNlbGVjdCxcbiAgICBsb2NhbGUsXG4gICAgZmlyc3REYXlPZldlZWsgPSAxLFxuICAgIGRlZmF1bHREYXRlSW5WaWV3LFxuICAgIHF1aWNrT3B0aW9ucyA9IFsndG9kYXknLCAndGhpc1dlZWsnXSxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gICAgc2hvd0NhbGVuZGFyV2VlayxcbiAgICBibG9ja2VkUmFuZ2VzID0gW10sXG4gIH0gPSBkZWZhdWx0czxEYXRlUGlja2VyUHJvcHM+KHByb3BzLCBjb250ZXh0KTtcblxuICBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICB2YWx1ZSA9IGRhdGVDbGFtcCh2YWx1ZSwgbWluRGF0ZSwgbWF4RGF0ZSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgdmFsdWUgPSB7XG4gICAgICAgIG1pbjogZGF0ZUNsYW1wKHZhbHVlLm1pbiwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICAgIG1heDogZGF0ZUNsYW1wKHZhbHVlLm1heCwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHByb3BzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0IEJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuQnV0dG9uKTtcbiAgY29uc3QgSWNvbkJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuSWNvbkJ1dHRvbik7XG4gIGNvbnN0IENoZXZyb25SaWdodCA9IHVzZVRoZW1lKCh0KSA9PiB0Lmljb25zLkNoZXZyb25SaWdodCk7XG4gIGNvbnN0IGNzc1ZhcmlhYmxlcyA9IHVzZUNzc1ZhcmlhYmxlcygpO1xuICBmdW5jdGlvbiBnZXREYXlDc3NTdHlsZXMoe1xuICAgIGRpc2FibGVkLFxuICAgIHByZXZNb250aCxcbiAgICBuZXh0TW9udGgsXG4gICAgdG9kYXksXG4gICAgYmxvY2tlZCxcbiAgICBzZWxlY3RlZCxcbiAgICBwcmVTZWxlY3RlZCxcbiAgfToge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBwcmV2TW9udGg/OiBib29sZWFuO1xuICAgIG5leHRNb250aD86IGJvb2xlYW47XG4gICAgdG9kYXk/OiBib29sZWFuO1xuICAgIGJsb2NrZWQ/OiBib29sZWFuO1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgICBwcmVTZWxlY3RlZD86IGJvb2xlYW47XG4gIH0pOiBJbnRlcnBvbGF0aW9uPFRoZW1lPiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICBjdXJzb3I6IGRpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICB9LFxuICAgICAgKHByZXZNb250aCB8fCBuZXh0TW9udGgpICYmIHtcbiAgICAgICAgY29sb3I6IGdyYXksXG4gICAgICB9LFxuICAgICAgdG9kYXkgJiYge1xuICAgICAgICBvdXRsaW5lOiAnMXB4IHNvbGlkIHZhcigtLXNlY29uZGFyeU1haW4pJyxcbiAgICAgIH0sXG4gICAgICBibG9ja2VkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tYmxvY2tlZENvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIHNlbGVjdGVkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLXByaW1hcnlNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiZcbiAgICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICc6OmJlZm9yZSc6IHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICdcIlwiJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICBib3R0b206IDAsXG4gICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgICAgICBjbGlwUGF0aDogJ3BvbHlnb24oMCAwLCAwIDUwJSwgNTAlIDApJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgcHJlU2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeUxpZ2h0KScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgY29uc3QgbW91bnRUaW1lID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgpLCBbXSk7XG4gIGNvbnN0IFtkaXJ0eSwgc2V0RGlydHldID0gdXNlU3RhdGU8UGFydGlhbDxEYXRlUmFuZ2U+PigpO1xuICBjb25zdCBbaG92ZXJlZCwgc2V0SG92ZXJlZF0gPSB1c2VTdGF0ZTxEYXRlUmFuZ2U+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFtnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWUpLCBnZXRWYWx1ZUZvckNvbXBhcmlzb24oZGVmYXVsdERhdGVJblZpZXcpLCBtb3VudFRpbWVdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICB9XG4gIH0sIFtyYW5nZVNlbGVjdF0pO1xuXG4gIGZ1bmN0aW9uIHNldChtaW4/OiBEYXRlLCBtYXg/OiBEYXRlLCBlZGl0PzogJ21pbicgfCAnbWF4Jykge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIG9uQ2hhbmdlKG1pbiA/PyBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobWluICYmIG1heCAmJiBtaW4gPiBtYXgpIHtcbiAgICAgIGlmIChlZGl0ID09PSAnbWluJykge1xuICAgICAgICBtYXggPSBtaW47XG4gICAgICB9IGVsc2UgaWYgKGVkaXQgPT09ICdtYXgnKSB7XG4gICAgICAgIG1pbiA9IG1heDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFttaW4sIG1heF0gPSBbbWF4LCBtaW5dO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghbWluID09PSAhbWF4KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgICAgb25DaGFuZ2UobWluICYmIG1heCA/IHsgbWluLCBtYXg6IGVuZE9mRGF5KG1heCkgfSA6IG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXREaXJ0eSh7IG1pbiwgbWF4IH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZvcm1hdE1vbnRoID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBtb250aDogJ2xvbmcnIH0pO1xuICAgIHJldHVybiAobW9udGg6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKDIwMjEsIG1vbnRoKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICBjb25zdCBmb3JtYXRZZWFyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gICAgcmV0dXJuICh5ZWFyOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSh5ZWFyLCAwLCAxKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY3NzPXtjc3NWYXJpYWJsZXN9PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2Jhc2VsaW5lJyxcbiAgICAgICAgICBnYXA6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICB2YWx1ZT17bWluID8/IG51bGx9XG4gICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQoZGF0ZSA/PyB1bmRlZmluZWQsIG1heCwgJ21pbicpfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAvPlxuXG4gICAgICAgIHtyYW5nZVNlbGVjdCAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHsnIC0gJ31cbiAgICAgICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICAgICAgdmFsdWU9e21heCA/PyBudWxsfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChtaW4sIGRhdGUgPz8gdW5kZWZpbmVkLCAnbWF4Jyl9XG4gICAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7Y2FsZW5kYXJzLm1hcCgoeyBtb250aCwgeWVhciwgd2Vla3MgfSkgPT4gKFxuICAgICAgICA8ZGl2IGtleT17YCR7bW9udGh9JHt5ZWFyfWB9IGNzcz17eyBkaXNwbGF5OiAnZ3JpZCcgfX0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIG1hcmdpbjogJ2NhbGModmFyKC0tc3BhY2luZykgKiA0KSAwJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRCYWNrUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNzcz17eyB0cmFuc2Zvcm06ICdyb3RhdGUzZCgwLCAwLCAxLCAxODBkZWcpJyB9fSAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2IGNzcz17eyBkaXNwbGF5OiAnZmxleCcgfX0+XG4gICAgICAgICAgICAgIHtmb3JtYXRNb250aChtb250aCl9IHtmb3JtYXRZZWFyKHllYXIpfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0Rm9yd2FyZFByb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KDgsIG1heC1jb250ZW50KScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGV4dCBpZD1cImNhbGVuZGFyV2Vla1wiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3dlZWtEYXlzLm1hcCgoX3YsIHdlZWtEYXkpID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGtleT17d2Vla0RheX1cbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Zm9ybWF0V2Vla2RheSh3ZWVrRGF5KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cblxuICAgICAgICAgICAge3dlZWtzLm1hcCgod2VlaywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla1N0YXJ0ID0gd2Vla1swXSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRW5kID0gd2Vla1s2XSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICFyYW5nZVNlbGVjdCB8fFxuICAgICAgICAgICAgICAgIChtaW5EYXRlICYmIHdlZWtFbmQuZGF0ZSA8IG1pbkRhdGUpIHx8XG4gICAgICAgICAgICAgICAgKG1heERhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGcmFnbWVudCBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogd2Vla0Rpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2Vla0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluID0gbWluRGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA8IG1pbkRhdGUgPyBtaW5EYXRlIDogd2Vla1N0YXJ0LmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXggPSBtYXhEYXRlICYmIHdlZWtFbmQuZGF0ZSA+IG1heERhdGUgPyBtYXhEYXRlIDogd2Vla0VuZC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG1pbiwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAhd2Vla0Rpc2FibGVkICYmIHNldEhvdmVyZWQoeyBtaW46IHdlZWtTdGFydC5kYXRlLCBtYXg6IHdlZWtFbmQuZGF0ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+ICF3ZWVrRGlzYWJsZWQgJiYgc2V0SG92ZXJlZCh1bmRlZmluZWQpfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2dldENhbGVuZGFyV2Vlayh3ZWVrRW5kLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgIHt3ZWVrLm1hcCgoZGF0ZU9iamVjdCwgZGF5SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtkYXlJbmRleH0gLz47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZNb250aCwgbmV4dE1vbnRoLCBkYXRlIH0gPSBkYXRlT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZEYXkoZGF0ZSkuZ2V0VGltZSgpID09PSBub3cuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB8fCAobWF4RGF0ZSAmJiBkYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGUuZ2V0VGltZSgpID09PSBtaW4/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiYgbWF4ICYmIGRhdGVJbnRlcnNlY3QoZGF0ZSwgeyBtaW4sIG1heCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZUludGVyc2VjdChkYXRlLCBob3ZlcmVkKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUludGVyc2VjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA8PSBob3ZlcmVkLm1pblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IG1pbiwgbWF4OiBob3ZlcmVkLm1pbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHsgbWluOiBob3ZlcmVkLm1heCwgbWF4OiBtaW4gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja2VkID0gYmxvY2tlZFJhbmdlcy5zb21lKChyYW5nZSkgPT4gZGF0ZUludGVyc2VjdChkYXRlLCByYW5nZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake2luZGV4fS0ke2RheUluZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2dldERheUNzc1N0eWxlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldERhdGVQcm9wcyh7IGRhdGVPYmo6IGRhdGVPYmplY3QgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaW4pIHNldChtaW4sIGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc2V0KGRhdGUsIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3Zlcj17KCkgPT4gc2V0SG92ZXJlZCh7IG1pbjogZGF0ZSwgbWF4OiBkYXRlIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3V0PXsoKSA9PiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2RhdGUuZ2V0RGF0ZSgpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICkpfVxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIG1hcmdpblRvcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXNvbHZlZFF1aWNrT3B0aW9uc31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19 */",
|
|
1014
1014
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__$d
|
|
1015
1015
|
};
|
|
1016
1016
|
function DatePicker(props) {
|
|
@@ -1223,7 +1223,7 @@ function DatePicker(props) {
|
|
|
1223
1223
|
justifySelf: "center",
|
|
1224
1224
|
padding: 10,
|
|
1225
1225
|
borderRight: `1px solid ${tableTheme.gray}`
|
|
1226
|
-
}, process.env.NODE_ENV === "production" ? "" : ";label:DatePicker;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1lZ0IiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgeSA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmRveSA9IG5ldyBEYXRlKHksIDAsIDEpO1xuICBjb25zdCBkb3kgPSBNYXRoLmZsb29yKFxuICAgIChkYXRlLmdldFRpbWUoKSAtIGZkb3kuZ2V0VGltZSgpICsgKGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIGZkb3kuZ2V0VGltZXpvbmVPZmZzZXQoKSkpIC9cbiAgICAgIE1TX1BFUl9EQVksXG4gICk7XG4gIGNvbnN0IGRvdyA9IGZkb3kuZ2V0RGF5KCk7XG4gIGNvbnN0IHcgPSBNYXRoLmZsb29yKCgxMCArIGRveSAtIGRvdykgLyA3KTtcblxuICBpZiAodyA9PT0gMCkge1xuICAgIHJldHVybiBnZXRDYWxlbmRhcldlZWsobmV3IERhdGUoeSAtIDEsIDExLCAzMSkpO1xuICB9XG5cbiAgcmV0dXJuIHc7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChhOiBEYXRlIHwgbnVsbCB8IERhdGVSYW5nZSwgYjogRGF0ZSB8IG51bGwgfCBEYXRlUmFuZ2UpIHtcbiAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYSA9IHsgbWluOiBhLCBtYXg6IGEgfTtcbiAgfVxuICBpZiAoYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBiID0geyBtaW46IGIsIG1heDogYiB9O1xuICB9XG5cbiAgaWYgKCFhPy5taW4gfHwgIWEubWF4IHx8ICFiPy5taW4gfHwgIWIubWF4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuICEoZW5kT2ZEYXkoYS5tYXgpIDwgc3RhcnRPZkRheShiLm1pbikgfHwgc3RhcnRPZkRheShhLm1pbikgPiBlbmRPZkRheShiLm1heCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUNsYW1wKGRhdGU6IERhdGUsIG1pbj86IERhdGUsIG1heD86IERhdGUpIHtcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxuXG4gIGlmIChtYXggJiYgZGF0ZSA+IG1heCkge1xuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICByZXR1cm4gZGF0ZTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWVGb3JDb21wYXJpc29uKHZhbHVlPzogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmdldFRpbWUoKTtcbiAgfVxuICByZXR1cm4gYCR7dmFsdWUubWluPy5nZXRUaW1lKCl9LSR7dmFsdWUubWF4Py5nZXRUaW1lKCl9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXIocHJvcHM6IERhdGVQaWNrZXJQcm9wcykge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChEYXRlUGlja2VyQ29udGV4dCk7XG5cbiAgY29uc3Qge1xuICAgIHZhbHVlLFxuICAgIHJhbmdlU2VsZWN0LFxuICAgIGxvY2FsZSxcbiAgICBmaXJzdERheU9mV2VlayA9IDEsXG4gICAgZGVmYXVsdERhdGVJblZpZXcsXG4gICAgcXVpY2tPcHRpb25zID0gWyd0b2RheScsICd0aGlzV2VlayddLFxuICAgIG1pbkRhdGUsXG4gICAgbWF4RGF0ZSxcbiAgICBzaG93Q2FsZW5kYXJXZWVrLFxuICAgIGJsb2NrZWRSYW5nZXMgPSBbXSxcbiAgfSA9IGRlZmF1bHRzPERhdGVQaWNrZXJQcm9wcz4ocHJvcHMsIGNvbnRleHQpO1xuXG4gIGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHZhbHVlID0gZGF0ZUNsYW1wKHZhbHVlLCBtaW5EYXRlLCBtYXhEYXRlKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IHtcbiAgICAgICAgbWluOiBkYXRlQ2xhbXAodmFsdWUubWluLCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgICAgbWF4OiBkYXRlQ2xhbXAodmFsdWUubWF4LCBtaW5EYXRlLCBtYXhEYXRlKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgY29uc3QgQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5CdXR0b24pO1xuICBjb25zdCBJY29uQnV0dG9uID0gdXNlVGhlbWUoKHQpID0+IHQuY29tcG9uZW50cy5JY29uQnV0dG9uKTtcbiAgY29uc3QgQ2hldnJvblJpZ2h0ID0gdXNlVGhlbWUoKHQpID0+IHQuaWNvbnMuQ2hldnJvblJpZ2h0KTtcbiAgY29uc3QgY3NzVmFyaWFibGVzID0gdXNlQ3NzVmFyaWFibGVzKCk7XG4gIGZ1bmN0aW9uIGdldERheUNzc1N0eWxlcyh7XG4gICAgZGlzYWJsZWQsXG4gICAgcHJldk1vbnRoLFxuICAgIG5leHRNb250aCxcbiAgICB0b2RheSxcbiAgICBibG9ja2VkLFxuICAgIHNlbGVjdGVkLFxuICAgIHByZVNlbGVjdGVkLFxuICB9OiB7XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIHByZXZNb250aD86IGJvb2xlYW47XG4gICAgbmV4dE1vbnRoPzogYm9vbGVhbjtcbiAgICB0b2RheT86IGJvb2xlYW47XG4gICAgYmxvY2tlZD86IGJvb2xlYW47XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xuICAgIHByZVNlbGVjdGVkPzogYm9vbGVhbjtcbiAgfSk6IEludGVycG9sYXRpb248VGhlbWU+IHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGN1cnNvcjogZGlzYWJsZWQgPyB1bmRlZmluZWQgOiAncG9pbnRlcicsXG4gICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgIH0sXG4gICAgICAocHJldk1vbnRoIHx8IG5leHRNb250aCkgJiYge1xuICAgICAgICBjb2xvcjogZ3JheSxcbiAgICAgIH0sXG4gICAgICB0b2RheSAmJiB7XG4gICAgICAgIG91dGxpbmU6ICcxcHggc29saWQgdmFyKC0tc2Vjb25kYXJ5TWFpbiknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1ibG9ja2VkQ29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeU1haW4pJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJlxuICAgICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgJzo6YmVmb3JlJzoge1xuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxvY2tlZE1haW4pJyxcbiAgICAgICAgICAgIGNsaXBQYXRoOiAncG9seWdvbigwIDAsIDAgNTAlLCA1MCUgMCknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBwcmVTZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TGlnaHQpJyxcbiAgICAgICAgY29sb3I6ICd2YXIoLS1wcmltYXJ5Q29udHJhc3RUZXh0KScsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBjb25zdCBtb3VudFRpbWUgPSB1c2VNZW1vKCgpID0+IG5ldyBEYXRlKCksIFtdKTtcbiAgY29uc3QgW2RpcnR5LCBzZXREaXJ0eV0gPSB1c2VTdGF0ZTxQYXJ0aWFsPERhdGVSYW5nZT4+KCk7XG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlPERhdGU+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFtnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWUpLCBnZXRWYWx1ZUZvckNvbXBhcmlzb24oZGVmYXVsdERhdGVJblZpZXcpLCBtb3VudFRpbWVdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICB9XG4gIH0sIFtyYW5nZVNlbGVjdF0pO1xuXG4gIGZ1bmN0aW9uIHNldChtaW4/OiBEYXRlLCBtYXg/OiBEYXRlLCBlZGl0PzogJ21pbicgfCAnbWF4Jykge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIG9uQ2hhbmdlKG1pbiA/PyBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobWluICYmIG1heCAmJiBtaW4gPiBtYXgpIHtcbiAgICAgIGlmIChlZGl0ID09PSAnbWluJykge1xuICAgICAgICBtYXggPSBtaW47XG4gICAgICB9IGVsc2UgaWYgKGVkaXQgPT09ICdtYXgnKSB7XG4gICAgICAgIG1pbiA9IG1heDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFttaW4sIG1heF0gPSBbbWF4LCBtaW5dO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghbWluID09PSAhbWF4KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgICAgb25DaGFuZ2UobWluICYmIG1heCA/IHsgbWluLCBtYXg6IGVuZE9mRGF5KG1heCkgfSA6IG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXREaXJ0eSh7IG1pbiwgbWF4IH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZvcm1hdE1vbnRoID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBtb250aDogJ2xvbmcnIH0pO1xuICAgIHJldHVybiAobW9udGg6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKDIwMjEsIG1vbnRoKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICBjb25zdCBmb3JtYXRZZWFyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gICAgcmV0dXJuICh5ZWFyOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSh5ZWFyLCAwLCAxKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY3NzPXtjc3NWYXJpYWJsZXN9PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2Jhc2VsaW5lJyxcbiAgICAgICAgICBnYXA6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICB2YWx1ZT17bWluID8/IG51bGx9XG4gICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQoZGF0ZSA/PyB1bmRlZmluZWQsIG1heCwgJ21pbicpfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAvPlxuXG4gICAgICAgIHtyYW5nZVNlbGVjdCAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHsnIC0gJ31cbiAgICAgICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICAgICAgdmFsdWU9e21heCA/PyBudWxsfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChtaW4sIGRhdGUgPz8gdW5kZWZpbmVkLCAnbWF4Jyl9XG4gICAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7Y2FsZW5kYXJzLm1hcCgoeyBtb250aCwgeWVhciwgd2Vla3MgfSkgPT4gKFxuICAgICAgICA8ZGl2IGtleT17YCR7bW9udGh9JHt5ZWFyfWB9IGNzcz17eyBkaXNwbGF5OiAnZ3JpZCcgfX0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIG1hcmdpbjogJ2NhbGModmFyKC0tc3BhY2luZykgKiA0KSAwJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRCYWNrUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNzcz17eyB0cmFuc2Zvcm06ICdyb3RhdGUzZCgwLCAwLCAxLCAxODBkZWcpJyB9fSAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2IGNzcz17eyBkaXNwbGF5OiAnZmxleCcgfX0+XG4gICAgICAgICAgICAgIHtmb3JtYXRNb250aChtb250aCl9IHtmb3JtYXRZZWFyKHllYXIpfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0Rm9yd2FyZFByb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KDgsIG1heC1jb250ZW50KScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGV4dCBpZD1cImNhbGVuZGFyV2Vla1wiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3dlZWtEYXlzLm1hcCgoX3YsIHdlZWtEYXkpID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGtleT17d2Vla0RheX1cbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Zm9ybWF0V2Vla2RheSh3ZWVrRGF5KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cblxuICAgICAgICAgICAge3dlZWtzLm1hcCgod2VlaywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla1N0YXJ0ID0gd2Vla1swXSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRW5kID0gd2Vla1s2XSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICFyYW5nZVNlbGVjdCB8fFxuICAgICAgICAgICAgICAgIChtaW5EYXRlICYmIHdlZWtFbmQuZGF0ZSA8IG1pbkRhdGUpIHx8XG4gICAgICAgICAgICAgICAgKG1heERhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGcmFnbWVudCBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogd2Vla0Rpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2Vla0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluID0gbWluRGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA8IG1pbkRhdGUgPyBtaW5EYXRlIDogd2Vla1N0YXJ0LmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXggPSBtYXhEYXRlICYmIHdlZWtFbmQuZGF0ZSA+IG1heERhdGUgPyBtYXhEYXRlIDogd2Vla0VuZC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG1pbiwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2dldENhbGVuZGFyV2Vlaygod2Vla1swXSBhcyBEYXRlT2JqKS5kYXRlKX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICB7d2Vlay5tYXAoKGRhdGVPYmplY3QsIGRheUluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0ZU9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17ZGF5SW5kZXh9IC8+O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwcmV2TW9udGgsIG5leHRNb250aCwgZGF0ZSB9ID0gZGF0ZU9iamVjdDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9kYXkgPSBzdGFydE9mRGF5KGRhdGUpLmdldFRpbWUoKSA9PT0gbm93LmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzYWJsZWQgPSAobWluRGF0ZSAmJiBkYXRlIDwgbWluRGF0ZSkgfHwgKG1heERhdGUgJiYgZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICBkYXRlLmdldFRpbWUoKSA9PT0gbWluPy5nZXRUaW1lKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAobWluICYmIG1heCAmJiBkYXRlSW50ZXJzZWN0KGRhdGUsIHsgbWluLCBtYXggfSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVTZWxlY3RlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgIWRpc2FibGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgKGRhdGUuZ2V0VGltZSgpID09PSBob3ZlcmVkPy5nZXRUaW1lKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIW1heCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBob3ZlcmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVJbnRlcnNlY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4gPD0gaG92ZXJlZCA/IHsgbWluLCBtYXg6IGhvdmVyZWQgfSA6IHsgbWluOiBob3ZlcmVkLCBtYXg6IG1pbiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICApKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrZWQgPSBibG9ja2VkUmFuZ2VzLnNvbWUoKHJhbmdlKSA9PiBkYXRlSW50ZXJzZWN0KGRhdGUsIHJhbmdlKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7aW5kZXh9LSR7ZGF5SW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Z2V0RGF5Q3NzU3R5bGVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dE1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b2RheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZVNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0RGF0ZVByb3BzKHsgZGF0ZU9iajogZGF0ZU9iamVjdCB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbikgc2V0KG1pbiwgZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzZXQoZGF0ZSwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdmVyPXsoKSA9PiBzZXRIb3ZlcmVkKGRhdGUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3V0PXsoKSA9PiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2RhdGUuZ2V0RGF0ZSgpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICkpfVxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIG1hcmdpblRvcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXNvbHZlZFF1aWNrT3B0aW9uc31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19 */"), children: /* @__PURE__ */ jsxRuntime.jsx(Text, { id: "calendarWeek" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", {}),
|
|
1226
|
+
}, process.env.NODE_ENV === "production" ? "" : ";label:DatePicker;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtmZ0IiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvc2NodW1tYXItdGFibGUvc2NodW1tYXItdGFibGUvc3JjL2NvbXBvbmVudHMvZGF0ZVBpY2tlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlT2JqLCB1c2VEYXl6ZWQgfSBmcm9tICdkYXl6ZWQnO1xuaW1wb3J0IHtcbiAgRnJhZ21lbnQsXG4gIFJlYWN0Tm9kZSxcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICcuLi9ob29rcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBkZWZhdWx0cyB9IGZyb20gJy4uL21pc2MvZGVmYXVsdHMnO1xuaW1wb3J0IHsgZ3JheSB9IGZyb20gJy4uL3RoZW1lL2RlZmF1bHRUaGVtZS9kZWZhdWx0Q2xhc3Nlcyc7XG5pbXBvcnQgeyB1c2VDc3NWYXJpYWJsZXMgfSBmcm9tICcuLi90aGVtZS91c2VDc3NWYXJpYWJsZXMnO1xuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi9kYXRlSW5wdXQnO1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4vdGV4dCc7XG5pbXBvcnQgeyBJbnRlcnBvbGF0aW9uLCBUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlID0geyBtaW46IERhdGU7IG1heDogRGF0ZSB9O1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUXVpY2tPcHRpb24gPVxuICB8ICd0b2RheSdcbiAgfCAndGhpc1dlZWsnXG4gIHwgJ3RoaXNNb250aCdcbiAgfCAndGhpc1llYXInXG4gIHwgJ2xhc3RTZXZlbkRheXMnXG4gIHwgJ2xhc3RUaGlydHlEYXlzJ1xuICB8IHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKCkgPT4gRGF0ZSB8IERhdGVSYW5nZSkgfVxuICB8ICgob25DaGFuZ2U6ICh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSk7XG5cbmV4cG9ydCB0eXBlIERhdGVQaWNrZXJQcm9wcyA9IHtcbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCBkYXkgb3IgcmFuZ2Ugb2YgZGF5cy4gKi9cbiAgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGRheSAocmFuZ2UpIGNoYW5nZXMuICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkO1xuICAvKiogQ3VycmVudGx5IHZpc2libGUgZGF0ZS4gKi9cbiAgZGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBDYWxsYmFjayBmb3Igd2hlbiB0aGUgY3VycmVudGx5IHZpc2libGUgZGF0ZSBjaGFuZ2VzLiAqL1xuICBvbkRhdGVJblZpZXdDaGFuZ2U/OiAodmFsdWU6IERhdGUpID0+IHZvaWQ7XG4gIC8qKiBJZiBlbmFibGVkLCByYW5nZXMgY2FuIGJlIHNlbGVjdGVkLiAqL1xuICByYW5nZVNlbGVjdD86IGJvb2xlYW47XG4gIC8qKiBXaGljaCBsb2NhbGUgdG8gdXNlIHRvIHJlbmRlciB0aGUgY2FsZW5kYXIuICovXG4gIGxvY2FsZT86IHN0cmluZztcbiAgLyoqIFdoaWNoIGRheSBvZiB0aGUgd2VlayBzaG91bGQgYmUgaW4gdGhlIGZpcnN0IGNvbHVtbi4gKDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uKVxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBmaXJzdERheU9mV2Vlaz86IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG4gIC8qKiBXaGljaCBtb250aCB0byBzaG93IGluaXRpYWxseSAqL1xuICBkZWZhdWx0RGF0ZUluVmlldz86IERhdGU7XG4gIC8qKiBTaG93IGJ1dHRvbnMgdG8gcXVpY2tseSBzZWxlY3Qgc3VnZ2VzdGVkIGRhdGVzIG9yIGRhdGUgcmFuZ2VzICovXG4gIHF1aWNrT3B0aW9ucz86IERhdGVQaWNrZXJRdWlja09wdGlvbltdO1xuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgLyoqIERhdGUgcmFuZ2VzIHRoYXQgYXJlIHZpc3VhbGx5IG1hcmtlZCBhcyBibG9ja2VkICovXG4gIGJsb2NrZWRSYW5nZXM/OiBEYXRlUmFuZ2VbXTtcbiAgbWluRGF0ZT86IERhdGU7XG4gIC8qKiBNYXhpbXVtIHNlbGVjdGFibGUgZGF0ZSAqL1xuICBtYXhEYXRlPzogRGF0ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY2FsZW5kYXIgd2VlayBpbiB0aGUgZmlyc3QgY29sdW1uICovXG4gIHNob3dDYWxlbmRhcldlZWs/OiBib29sZWFuO1xufTtcblxuY29uc3QgRGF0ZVBpY2tlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0PFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4+KHt9KTtcblxuZXhwb3J0IGZ1bmN0aW9uIERhdGVQaWNrZXJQcm92aWRlcih7XG4gIGNoaWxkcmVuLFxuICAuLi5wcm9wc1xufTogUGFydGlhbDxPbWl0PERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJyB8ICdvbkNoYW5nZSc+PiAmIHsgY2hpbGRyZW4/OiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCkgPT4gcHJvcHMsIFtKU09OLnN0cmluZ2lmeShwcm9wcyldKTtcblxuICByZXR1cm4gPERhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvRGF0ZVBpY2tlckNvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5jb25zdCB3ZWVrRGF5cyA9IFswLCAxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcblxuLyoqIFJvdW5kcyBhIGRhdGUgZG93biB0byB0aGUgc3RhcnQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE9mRGF5ID0gKGQ6IERhdGUpID0+IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSk7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRheS4gKi9cbmV4cG9ydCBjb25zdCBlbmRPZkRheSA9IChkOiBEYXRlKSA9PlxuICBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkgKyAxLCAwLCAwLCAwLCAtMSk7XG5cbmV4cG9ydCBjb25zdCBsYXN0RGF5cyA9IChkYXlzOiBudW1iZXIpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGF5cyArIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShub3cpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvZGF5ID0gKCkgPT4gbGFzdERheXMoMSk7XG5cbmV4cG9ydCBjb25zdCB0aGlzV2VlayA9IChkZWx0YSA9IDAsIGZpcnN0RGF5T2ZXZWVrID0gMSk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG5cbiAgbGV0IGRpZmYgPSBtaW4uZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlaztcbiAgaWYgKGRpZmYgPCAwKSB7XG4gICAgZGlmZiArPSA3O1xuICB9XG4gIG1pbi5zZXREYXRlKG1pbi5nZXREYXRlKCkgLSBkaWZmICsgZGVsdGEgKiA3KTtcblxuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpICsgNik7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc01vbnRoID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgobWluLmdldE1vbnRoKCkgKyBkZWx0YSk7XG4gIGNvbnN0IG1heCA9IG5ldyBEYXRlKG1pbik7XG4gIG1heC5zZXRNb250aChtYXguZ2V0TW9udGgoKSArIDEpO1xuICBtYXguc2V0RGF0ZShtYXguZ2V0RGF0ZSgpIC0gMSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtaW46IHN0YXJ0T2ZEYXkobWluKSxcbiAgICBtYXg6IGVuZE9mRGF5KG1heCksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdGhpc1llYXIgPSAoZGVsdGEgPSAwKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUoMSk7XG4gIG1pbi5zZXRNb250aCgwKTtcbiAgbWluLnNldEZ1bGxZZWFyKG1pbi5nZXRGdWxsWWVhcigpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0RnVsbFllYXIobWF4LmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuY29uc3QgTVNfUEVSX0RBWSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5leHBvcnQgY29uc3QgZ2V0Q2FsZW5kYXJXZWVrID0gKGRhdGU6IERhdGUpOiBudW1iZXIgPT4ge1xuICAvLyBJU08gODYwMTogV2VlayAxIGlzIHRoZSB3ZWVrIHdpdGggdGhlIGZpcnN0IFRodXJzZGF5IG9mIHRoZSB5ZWFyLlxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5cbiAgY29uc3QgZW5kT2ZXZWVrID0gbmV3IERhdGUoXG4gICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgIGRhdGUuZ2V0TW9udGgoKSxcbiAgICBkYXRlLmdldERhdGUoKSArICg3IC0gKGRhdGUuZ2V0RGF5KCkgfHwgNykpLFxuICApO1xuXG4gIGNvbnN0IHllYXIgPSBlbmRPZldlZWsuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgZmlyc3REYXlPZlllYXIgPSBuZXcgRGF0ZSh5ZWFyLCAwLCAxKTtcbiAgY29uc3QgZGF5T2ZZZWFyID1cbiAgICBNYXRoLmZsb29yKFxuICAgICAgKGVuZE9mV2Vlay5nZXRUaW1lKCkgLVxuICAgICAgICBmaXJzdERheU9mWWVhci5nZXRUaW1lKCkgK1xuICAgICAgICAoZW5kT2ZXZWVrLmdldFRpbWV6b25lT2Zmc2V0KCkgLSBmaXJzdERheU9mWWVhci5nZXRUaW1lem9uZU9mZnNldCgpKSkgL1xuICAgICAgICBNU19QRVJfREFZLFxuICAgICkgKyAxO1xuICBjb25zdCB3ZWVrT2ZZZWFyID0gTWF0aC5mbG9vcigoMyArIGRheU9mWWVhcikgLyA3KTtcblxuICBpZiAod2Vla09mWWVhciA9PT0gMCkge1xuICAgIHJldHVybiAoXG4gICAgICBnZXRDYWxlbmRhcldlZWsoXG4gICAgICAgIG5ldyBEYXRlKGVuZE9mV2Vlay5nZXRGdWxsWWVhcigpLCBlbmRPZldlZWsuZ2V0TW9udGgoKSwgZW5kT2ZXZWVrLmdldERhdGUoKSAtIDcpLFxuICAgICAgKSArIDFcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHdlZWtPZlllYXI7XG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uUXVpY2tPcHRpb25zID0ge1xuICB0b2RheTogeyBsYWJlbDogPFRleHQgaWQ9XCJ0b2RheVwiIC8+LCB2YWx1ZTogdG9kYXkgfSxcbiAgdGhpc1dlZWs6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc1dlZWtcIiAvPiwgdmFsdWU6IChwcm9wcykgPT4gdGhpc1dlZWsoMCwgcHJvcHMuZmlyc3REYXlPZldlZWspIH0sXG4gIHRoaXNNb250aDogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzTW9udGhcIiAvPiwgdmFsdWU6ICgpID0+IHRoaXNNb250aCgpIH0sXG4gIHRoaXNZZWFyOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNZZWFyXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzWWVhcigpIH0sXG4gIGxhc3RTZXZlbkRheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFNldmVuRGF5c1wiIC8+LCB2YWx1ZTogKCkgPT4gbGFzdERheXMoNykgfSxcbiAgbGFzdFRoaXJ0eURheXM6IHsgbGFiZWw6IDxUZXh0IGlkPVwibGFzdFRoaXJ0eURheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDMwKSB9LFxufSBzYXRpc2ZpZXMgUmVjb3JkPFxuICBEYXRlUGlja2VyUXVpY2tPcHRpb24gJiBzdHJpbmcsXG4gIHsgbGFiZWw6IFJlYWN0Tm9kZTsgdmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCAoKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbj47XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdHdvIGRhdGVzIGFuZC9vciBkYXRlIHJhbmdlcyBpbnRlcnNlY3QuIEludGVyc2VjdGlvbiBpcyBjb25zaWRlcmVkIHBlciBkYXkuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0ZUludGVyc2VjdChcbiAgYTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGI6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsIHwgdW5kZWZpbmVkLFxuKSB7XG4gIGlmIChhIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGEgPSB7IG1pbjogYSwgbWF4OiBhIH07XG4gIH1cbiAgaWYgKGIgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYiA9IHsgbWluOiBiLCBtYXg6IGIgfTtcbiAgfVxuXG4gIGlmICghYT8ubWluIHx8ICFhLm1heCB8fCAhYj8ubWluIHx8ICFiLm1heCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAhKGVuZE9mRGF5KGEubWF4KSA8IHN0YXJ0T2ZEYXkoYi5taW4pIHx8IHN0YXJ0T2ZEYXkoYS5taW4pID4gZW5kT2ZEYXkoYi5tYXgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVDbGFtcChkYXRlOiBEYXRlLCBtaW4/OiBEYXRlLCBtYXg/OiBEYXRlKSB7XG4gIGlmIChtaW4gJiYgZGF0ZSA8IG1pbikge1xuICAgIHJldHVybiBtaW47XG4gIH1cblxuICBpZiAobWF4ICYmIGRhdGUgPiBtYXgpIHtcbiAgICByZXR1cm4gbWF4O1xuICB9XG5cbiAgcmV0dXJuIGRhdGU7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlRm9yQ29tcGFyaXNvbih2YWx1ZT86IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiB2YWx1ZS5nZXRUaW1lKCk7XG4gIH1cbiAgcmV0dXJuIGAke3ZhbHVlLm1pbj8uZ2V0VGltZSgpfS0ke3ZhbHVlLm1heD8uZ2V0VGltZSgpfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlUGlja2VyKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRGF0ZVBpY2tlckNvbnRleHQpO1xuXG4gIGNvbnN0IHtcbiAgICB2YWx1ZSxcbiAgICByYW5nZVNlbGVjdCxcbiAgICBsb2NhbGUsXG4gICAgZmlyc3REYXlPZldlZWsgPSAxLFxuICAgIGRlZmF1bHREYXRlSW5WaWV3LFxuICAgIHF1aWNrT3B0aW9ucyA9IFsndG9kYXknLCAndGhpc1dlZWsnXSxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gICAgc2hvd0NhbGVuZGFyV2VlayxcbiAgICBibG9ja2VkUmFuZ2VzID0gW10sXG4gIH0gPSBkZWZhdWx0czxEYXRlUGlja2VyUHJvcHM+KHByb3BzLCBjb250ZXh0KTtcblxuICBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICB2YWx1ZSA9IGRhdGVDbGFtcCh2YWx1ZSwgbWluRGF0ZSwgbWF4RGF0ZSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgdmFsdWUgPSB7XG4gICAgICAgIG1pbjogZGF0ZUNsYW1wKHZhbHVlLm1pbiwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICAgIG1heDogZGF0ZUNsYW1wKHZhbHVlLm1heCwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHByb3BzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0IEJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuQnV0dG9uKTtcbiAgY29uc3QgSWNvbkJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuSWNvbkJ1dHRvbik7XG4gIGNvbnN0IENoZXZyb25SaWdodCA9IHVzZVRoZW1lKCh0KSA9PiB0Lmljb25zLkNoZXZyb25SaWdodCk7XG4gIGNvbnN0IGNzc1ZhcmlhYmxlcyA9IHVzZUNzc1ZhcmlhYmxlcygpO1xuICBmdW5jdGlvbiBnZXREYXlDc3NTdHlsZXMoe1xuICAgIGRpc2FibGVkLFxuICAgIHByZXZNb250aCxcbiAgICBuZXh0TW9udGgsXG4gICAgdG9kYXksXG4gICAgYmxvY2tlZCxcbiAgICBzZWxlY3RlZCxcbiAgICBwcmVTZWxlY3RlZCxcbiAgfToge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBwcmV2TW9udGg/OiBib29sZWFuO1xuICAgIG5leHRNb250aD86IGJvb2xlYW47XG4gICAgdG9kYXk/OiBib29sZWFuO1xuICAgIGJsb2NrZWQ/OiBib29sZWFuO1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgICBwcmVTZWxlY3RlZD86IGJvb2xlYW47XG4gIH0pOiBJbnRlcnBvbGF0aW9uPFRoZW1lPiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICBjdXJzb3I6IGRpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICB9LFxuICAgICAgKHByZXZNb250aCB8fCBuZXh0TW9udGgpICYmIHtcbiAgICAgICAgY29sb3I6IGdyYXksXG4gICAgICB9LFxuICAgICAgdG9kYXkgJiYge1xuICAgICAgICBvdXRsaW5lOiAnMXB4IHNvbGlkIHZhcigtLXNlY29uZGFyeU1haW4pJyxcbiAgICAgIH0sXG4gICAgICBibG9ja2VkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tYmxvY2tlZENvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIHNlbGVjdGVkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLXByaW1hcnlNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiZcbiAgICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICc6OmJlZm9yZSc6IHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICdcIlwiJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICBib3R0b206IDAsXG4gICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgICAgICBjbGlwUGF0aDogJ3BvbHlnb24oMCAwLCAwIDUwJSwgNTAlIDApJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgcHJlU2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeUxpZ2h0KScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgY29uc3QgbW91bnRUaW1lID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgpLCBbXSk7XG4gIGNvbnN0IFtkaXJ0eSwgc2V0RGlydHldID0gdXNlU3RhdGU8UGFydGlhbDxEYXRlUmFuZ2U+PigpO1xuICBjb25zdCBbaG92ZXJlZCwgc2V0SG92ZXJlZF0gPSB1c2VTdGF0ZTxEYXRlUmFuZ2U+KCk7XG4gIGNvbnN0IFtkYXRlSW5WaWV3TG9jYWwsIHNldERhdGVJblZpZXdMb2NhbF0gPSB1c2VTdGF0ZTxEYXRlPihkZWZhdWx0RGF0ZUluVmlldyA/PyBtb3VudFRpbWUpO1xuICBjb25zdCBkYXRlSW5WaWV3ID0gcHJvcHMuZGF0ZUluVmlldyA/PyBkYXRlSW5WaWV3TG9jYWw7XG5cbiAgZnVuY3Rpb24gc2V0RGF0ZUluVmlldyhkYXRlOiBEYXRlKSB7XG4gICAgc2V0RGF0ZUluVmlld0xvY2FsKGRhdGUpO1xuICAgIHByb3BzLm9uRGF0ZUluVmlld0NoYW5nZT8uKGRhdGUpO1xuICB9XG5cbiAgY29uc3QgbWluID0gZGlydHkgPyBkaXJ0eS5taW4gOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IHZhbHVlPy5taW47XG4gIGNvbnN0IG1heCA9IGRpcnR5ID8gZGlydHkubWF4IDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWF4O1xuXG4gIGNvbnN0IHJlc29sdmVkUXVpY2tPcHRpb25zID0gWy4uLnF1aWNrT3B0aW9ucywgeyBsYWJlbDogPFRleHQgaWQ9XCJyZXNldFwiIC8+LCB2YWx1ZTogbnVsbCB9XS5tYXAoXG4gICAgKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChvcHRpb24gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBsYWJlbCwgdmFsdWUgfSA9IHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gY29tbW9uUXVpY2tPcHRpb25zW29wdGlvbl0gOiBvcHRpb247XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuXG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgICAgICBvbkNoYW5nZSh2YWx1ZShwcm9wcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bGFiZWx9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKTtcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0IHsgY2FsZW5kYXJzLCBnZXRCYWNrUHJvcHMsIGdldEZvcndhcmRQcm9wcywgZ2V0RGF0ZVByb3BzIH0gPSB1c2VEYXl6ZWQoe1xuICAgIG9uRGF0ZVNlbGVjdGVkOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgc2hvd091dHNpZGVEYXlzOiB0cnVlLFxuICAgIGRhdGU6IGRhdGVJblZpZXcsXG4gICAgb25PZmZzZXRDaGFuZ2VkOiAob2Zmc2V0KSA9PlxuICAgICAgc2V0RGF0ZUluVmlldyhuZXcgRGF0ZShkYXRlSW5WaWV3LmdldEZ1bGxZZWFyKCksIGRhdGVJblZpZXcuZ2V0TW9udGgoKSArIG9mZnNldCkpLFxuICAgIG9mZnNldDogMCxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gIH0pO1xuICBjb25zdCBub3cgPSB1c2VNZW1vKCgpID0+IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIFtdKTtcblxuICBjb25zdCBmb3JtYXRXZWVrZGF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xuICAgIHJldHVybiAod2Vla0RheTogbnVtYmVyKSA9PlxuICAgICAgZm9ybWF0KG5ldyBEYXRlKERhdGUuVVRDKDIwMjEsIDcsICgod2Vla0RheSArIGZpcnN0RGF5T2ZXZWVrKSAlIDcpICsgMSkpKTtcbiAgfSwgW2xvY2FsZSwgZmlyc3REYXlPZldlZWtdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcoXG4gICAgICAgIHZhbHVlID09PSBudWxsID8gZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZS5tYXgsXG4gICAgICApLFxuICAgIFtnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWUpLCBnZXRWYWx1ZUZvckNvbXBhcmlzb24oZGVmYXVsdERhdGVJblZpZXcpLCBtb3VudFRpbWVdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFyYW5nZVNlbGVjdCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICB9XG4gIH0sIFtyYW5nZVNlbGVjdF0pO1xuXG4gIGZ1bmN0aW9uIHNldChtaW4/OiBEYXRlLCBtYXg/OiBEYXRlLCBlZGl0PzogJ21pbicgfCAnbWF4Jykge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIG9uQ2hhbmdlKG1pbiA/PyBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobWluICYmIG1heCAmJiBtaW4gPiBtYXgpIHtcbiAgICAgIGlmIChlZGl0ID09PSAnbWluJykge1xuICAgICAgICBtYXggPSBtaW47XG4gICAgICB9IGVsc2UgaWYgKGVkaXQgPT09ICdtYXgnKSB7XG4gICAgICAgIG1pbiA9IG1heDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFttaW4sIG1heF0gPSBbbWF4LCBtaW5dO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghbWluID09PSAhbWF4KSB7XG4gICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgICAgb25DaGFuZ2UobWluICYmIG1heCA/IHsgbWluLCBtYXg6IGVuZE9mRGF5KG1heCkgfSA6IG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXREaXJ0eSh7IG1pbiwgbWF4IH0pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZvcm1hdE1vbnRoID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBtb250aDogJ2xvbmcnIH0pO1xuICAgIHJldHVybiAobW9udGg6IG51bWJlcikgPT4gZm9ybWF0KG5ldyBEYXRlKDIwMjEsIG1vbnRoKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICBjb25zdCBmb3JtYXRZZWFyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgeyBmb3JtYXQgfSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gICAgcmV0dXJuICh5ZWFyOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSh5ZWFyLCAwLCAxKSk7XG4gIH0sIFtsb2NhbGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY3NzPXtjc3NWYXJpYWJsZXN9PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2Jhc2VsaW5lJyxcbiAgICAgICAgICBnYXA6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICB2YWx1ZT17bWluID8/IG51bGx9XG4gICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQoZGF0ZSA/PyB1bmRlZmluZWQsIG1heCwgJ21pbicpfVxuICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAvPlxuXG4gICAgICAgIHtyYW5nZVNlbGVjdCAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHsnIC0gJ31cbiAgICAgICAgICAgIDxEYXRlSW5wdXRcbiAgICAgICAgICAgICAgdmFsdWU9e21heCA/PyBudWxsfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGRhdGUpID0+IHNldChtaW4sIGRhdGUgPz8gdW5kZWZpbmVkLCAnbWF4Jyl9XG4gICAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7Y2FsZW5kYXJzLm1hcCgoeyBtb250aCwgeWVhciwgd2Vla3MgfSkgPT4gKFxuICAgICAgICA8ZGl2IGtleT17YCR7bW9udGh9JHt5ZWFyfWB9IGNzcz17eyBkaXNwbGF5OiAnZ3JpZCcgfX0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIG1hcmdpbjogJ2NhbGModmFyKC0tc3BhY2luZykgKiA0KSAwJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkQXV0b0Zsb3c6ICdjb2x1bW4nLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEljb25CdXR0b24gdHlwZT1cImJ1dHRvblwiIHsuLi5nZXRCYWNrUHJvcHMoeyBjYWxlbmRhcnMgfSl9PlxuICAgICAgICAgICAgICA8Q2hldnJvblJpZ2h0IGNzcz17eyB0cmFuc2Zvcm06ICdyb3RhdGUzZCgwLCAwLCAxLCAxODBkZWcpJyB9fSAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuXG4gICAgICAgICAgICA8ZGl2IGNzcz17eyBkaXNwbGF5OiAnZmxleCcgfX0+XG4gICAgICAgICAgICAgIHtmb3JtYXRNb250aChtb250aCl9IHtmb3JtYXRZZWFyKHllYXIpfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0Rm9yd2FyZFByb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCAvPlxuICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgICAgICBncmlkVGVtcGxhdGVDb2x1bW5zOiAncmVwZWF0KDgsIG1heC1jb250ZW50KScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGV4dCBpZD1cImNhbGVuZGFyV2Vla1wiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge3dlZWtEYXlzLm1hcCgoX3YsIHdlZWtEYXkpID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGtleT17d2Vla0RheX1cbiAgICAgICAgICAgICAgICBjc3M9e3tcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlTZWxmOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7Zm9ybWF0V2Vla2RheSh3ZWVrRGF5KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cblxuICAgICAgICAgICAge3dlZWtzLm1hcCgod2VlaywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla1N0YXJ0ID0gd2Vla1swXSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRW5kID0gd2Vla1s2XSBhcyBEYXRlT2JqO1xuICAgICAgICAgICAgICBjb25zdCB3ZWVrRGlzYWJsZWQgPVxuICAgICAgICAgICAgICAgICFyYW5nZVNlbGVjdCB8fFxuICAgICAgICAgICAgICAgIChtaW5EYXRlICYmIHdlZWtFbmQuZGF0ZSA8IG1pbkRhdGUpIHx8XG4gICAgICAgICAgICAgICAgKG1heERhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxGcmFnbWVudCBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgIHtzaG93Q2FsZW5kYXJXZWVrID8gKFxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcjogd2Vla0Rpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHtncmF5fWAsXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2Vla0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluID0gbWluRGF0ZSAmJiB3ZWVrU3RhcnQuZGF0ZSA8IG1pbkRhdGUgPyBtaW5EYXRlIDogd2Vla1N0YXJ0LmRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXggPSBtYXhEYXRlICYmIHdlZWtFbmQuZGF0ZSA+IG1heERhdGUgPyBtYXhEYXRlIDogd2Vla0VuZC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0KG1pbiwgbWF4KTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAhd2Vla0Rpc2FibGVkICYmIHNldEhvdmVyZWQoeyBtaW46IHdlZWtTdGFydC5kYXRlLCBtYXg6IHdlZWtFbmQuZGF0ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdXQ9eygpID0+ICF3ZWVrRGlzYWJsZWQgJiYgc2V0SG92ZXJlZCh1bmRlZmluZWQpfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2dldENhbGVuZGFyV2Vlayh3ZWVrRW5kLmRhdGUpfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgIHt3ZWVrLm1hcCgoZGF0ZU9iamVjdCwgZGF5SW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtkYXlJbmRleH0gLz47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHByZXZNb250aCwgbmV4dE1vbnRoLCBkYXRlIH0gPSBkYXRlT2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZEYXkoZGF0ZSkuZ2V0VGltZSgpID09PSBub3cuZ2V0VGltZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IChtaW5EYXRlICYmIGRhdGUgPCBtaW5EYXRlKSB8fCAobWF4RGF0ZSAmJiBkYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGUuZ2V0VGltZSgpID09PSBtaW4/LmdldFRpbWUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiYgbWF4ICYmIGRhdGVJbnRlcnNlY3QoZGF0ZSwgeyBtaW4sIG1heCB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZVNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAhc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhZGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoZGF0ZUludGVyc2VjdChkYXRlLCBob3ZlcmVkKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUludGVyc2VjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA8PSBob3ZlcmVkLm1pblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IG1pbiwgbWF4OiBob3ZlcmVkLm1pbiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHsgbWluOiBob3ZlcmVkLm1heCwgbWF4OiBtaW4gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja2VkID0gYmxvY2tlZFJhbmdlcy5zb21lKChyYW5nZSkgPT4gZGF0ZUludGVyc2VjdChkYXRlLCByYW5nZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake2luZGV4fS0ke2RheUluZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2dldERheUNzc1N0eWxlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldERhdGVQcm9wcyh7IGRhdGVPYmo6IGRhdGVPYmplY3QgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaW4pIHNldChtaW4sIGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc2V0KGRhdGUsIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3Zlcj17KCkgPT4gc2V0SG92ZXJlZCh7IG1pbjogZGF0ZSwgbWF4OiBkYXRlIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3V0PXsoKSA9PiBzZXRIb3ZlcmVkKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2RhdGUuZ2V0RGF0ZSgpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgPC9GcmFnbWVudD5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICkpfVxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIG1hcmdpblRvcDogJ3ZhcigtLXNwYWNpbmcpJyxcbiAgICAgICAgICBkaXNwbGF5OiAnZ3JpZCcsXG4gICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXNvbHZlZFF1aWNrT3B0aW9uc31cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19 */"), children: /* @__PURE__ */ jsxRuntime.jsx(Text, { id: "calendarWeek" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", {}),
|
|
1227
1227
|
weekDays.map((_v, weekDay) => /* @__PURE__ */ jsxRuntime.jsx("div", { css: _ref7, children: formatWeekday(weekDay) }, weekDay)),
|
|
1228
1228
|
weeks.map((week, index) => {
|
|
1229
1229
|
const weekStart = week[0];
|
|
@@ -1237,14 +1237,17 @@ function DatePicker(props) {
|
|
|
1237
1237
|
cursor: weekDisabled ? void 0 : "pointer",
|
|
1238
1238
|
font: "inherit",
|
|
1239
1239
|
borderRight: `1px solid ${tableTheme.gray}`
|
|
1240
|
-
}, process.env.NODE_ENV === "production" ? "" : ";label:DatePicker;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdnQnNCIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZU9iaiwgdXNlRGF5emVkIH0gZnJvbSAnZGF5emVkJztcbmltcG9ydCB7XG4gIEZyYWdtZW50LFxuICBSZWFjdE5vZGUsXG4gIGNyZWF0ZUNvbnRleHQsXG4gIHVzZUNvbnRleHQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSAnLi4vaG9va3MvdXNlVGhlbWUnO1xuaW1wb3J0IHsgZGVmYXVsdHMgfSBmcm9tICcuLi9taXNjL2RlZmF1bHRzJztcbmltcG9ydCB7IGdyYXkgfSBmcm9tICcuLi90aGVtZS9kZWZhdWx0VGhlbWUvZGVmYXVsdENsYXNzZXMnO1xuaW1wb3J0IHsgdXNlQ3NzVmFyaWFibGVzIH0gZnJvbSAnLi4vdGhlbWUvdXNlQ3NzVmFyaWFibGVzJztcbmltcG9ydCB7IERhdGVJbnB1dCB9IGZyb20gJy4vZGF0ZUlucHV0JztcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuL3RleHQnO1xuaW1wb3J0IHsgSW50ZXJwb2xhdGlvbiwgVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmV4cG9ydCB0eXBlIERhdGVSYW5nZSA9IHsgbWluOiBEYXRlOyBtYXg6IERhdGUgfTtcblxuZXhwb3J0IHR5cGUgRGF0ZVBpY2tlclF1aWNrT3B0aW9uID1cbiAgfCAndG9kYXknXG4gIHwgJ3RoaXNXZWVrJ1xuICB8ICd0aGlzTW9udGgnXG4gIHwgJ3RoaXNZZWFyJ1xuICB8ICdsYXN0U2V2ZW5EYXlzJ1xuICB8ICdsYXN0VGhpcnR5RGF5cydcbiAgfCB7IGxhYmVsOiBSZWFjdE5vZGU7IHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgKCgpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbiAgfCAoKG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkKSA9PiBSZWFjdE5vZGUpO1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUHJvcHMgPSB7XG4gIC8qKiBDdXJyZW50bHkgc2VsZWN0ZWQgZGF5IG9yIHJhbmdlIG9mIGRheXMuICovXG4gIHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbDtcbiAgLyoqIENhbGxiYWNrIGZvciB3aGVuIHRoZSBkYXkgKHJhbmdlKSBjaGFuZ2VzLiAqL1xuICBvbkNoYW5nZTogKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkgPT4gdm9pZDtcbiAgLyoqIEN1cnJlbnRseSB2aXNpYmxlIGRhdGUuICovXG4gIGRhdGVJblZpZXc/OiBEYXRlO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGN1cnJlbnRseSB2aXNpYmxlIGRhdGUgY2hhbmdlcy4gKi9cbiAgb25EYXRlSW5WaWV3Q2hhbmdlPzogKHZhbHVlOiBEYXRlKSA9PiB2b2lkO1xuICAvKiogSWYgZW5hYmxlZCwgcmFuZ2VzIGNhbiBiZSBzZWxlY3RlZC4gKi9cbiAgcmFuZ2VTZWxlY3Q/OiBib29sZWFuO1xuICAvKiogV2hpY2ggbG9jYWxlIHRvIHVzZSB0byByZW5kZXIgdGhlIGNhbGVuZGFyLiAqL1xuICBsb2NhbGU/OiBzdHJpbmc7XG4gIC8qKiBXaGljaCBkYXkgb2YgdGhlIHdlZWsgc2hvdWxkIGJlIGluIHRoZSBmaXJzdCBjb2x1bW4uICgwPVN1bmRheSwgMT1Nb25kYXksIC4uLilcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgZmlyc3REYXlPZldlZWs/OiAwIHwgMSB8IDIgfCAzIHwgNCB8IDUgfCA2O1xuICAvKiogV2hpY2ggbW9udGggdG8gc2hvdyBpbml0aWFsbHkgKi9cbiAgZGVmYXVsdERhdGVJblZpZXc/OiBEYXRlO1xuICAvKiogU2hvdyBidXR0b25zIHRvIHF1aWNrbHkgc2VsZWN0IHN1Z2dlc3RlZCBkYXRlcyBvciBkYXRlIHJhbmdlcyAqL1xuICBxdWlja09wdGlvbnM/OiBEYXRlUGlja2VyUXVpY2tPcHRpb25bXTtcbiAgLyoqIE1pbmltdW0gc2VsZWN0YWJsZSBkYXRlICovXG4gIC8qKiBEYXRlIHJhbmdlcyB0aGF0IGFyZSB2aXN1YWxseSBtYXJrZWQgYXMgYmxvY2tlZCAqL1xuICBibG9ja2VkUmFuZ2VzPzogRGF0ZVJhbmdlW107XG4gIG1pbkRhdGU/OiBEYXRlO1xuICAvKiogTWF4aW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgbWF4RGF0ZT86IERhdGU7XG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIGNhbGVuZGFyIHdlZWsgaW4gdGhlIGZpcnN0IGNvbHVtbiAqL1xuICBzaG93Q2FsZW5kYXJXZWVrPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IERhdGVQaWNrZXJDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxQYXJ0aWFsPE9taXQ8RGF0ZVBpY2tlclByb3BzLCAndmFsdWUnIHwgJ29uQ2hhbmdlJz4+Pih7fSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlUGlja2VyUHJvdmlkZXIoe1xuICBjaGlsZHJlbixcbiAgLi4ucHJvcHNcbn06IFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4gJiB7IGNoaWxkcmVuPzogUmVhY3ROb2RlIH0pIHtcbiAgY29uc3QgdmFsdWUgPSB1c2VNZW1vKCgpID0+IHByb3BzLCBbSlNPTi5zdHJpbmdpZnkocHJvcHMpXSk7XG5cbiAgcmV0dXJuIDxEYXRlUGlja2VyQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dmFsdWV9PntjaGlsZHJlbn08L0RhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyPjtcbn1cblxuY29uc3Qgd2Vla0RheXMgPSBbMCwgMSwgMiwgMywgNCwgNSwgNl0gYXMgY29uc3Q7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIGRvd24gdG8gdGhlIHN0YXJ0IG9mIHRoZSBkYXkuICovXG5leHBvcnQgY29uc3Qgc3RhcnRPZkRheSA9IChkOiBEYXRlKSA9PiBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkpO1xuXG4vKiogUm91bmRzIGEgZGF0ZSB1cCB0byB0aGUgZW5kIG9mIHRoZSBkYXkuICovXG5leHBvcnQgY29uc3QgZW5kT2ZEYXkgPSAoZDogRGF0ZSkgPT5cbiAgbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpICsgMSwgMCwgMCwgMCwgLTEpO1xuXG5leHBvcnQgY29uc3QgbGFzdERheXMgPSAoZGF5czogbnVtYmVyKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUobWluLmdldERhdGUoKSAtIGRheXMgKyAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobm93KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0b2RheSA9ICgpID0+IGxhc3REYXlzKDEpO1xuXG5leHBvcnQgY29uc3QgdGhpc1dlZWsgPSAoZGVsdGEgPSAwLCBmaXJzdERheU9mV2VlayA9IDEpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuXG4gIGxldCBkaWZmID0gbWluLmdldERheSgpIC0gZmlyc3REYXlPZldlZWs7XG4gIGlmIChkaWZmIDwgMCkge1xuICAgIGRpZmYgKz0gNztcbiAgfVxuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGlmZiArIGRlbHRhICogNyk7XG5cbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSArIDYpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRoaXNNb250aCA9IChkZWx0YSA9IDApOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZSgxKTtcbiAgbWluLnNldE1vbnRoKG1pbi5nZXRNb250aCgpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0TW9udGgobWF4LmdldE1vbnRoKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRoaXNZZWFyID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgoMCk7XG4gIG1pbi5zZXRGdWxsWWVhcihtaW4uZ2V0RnVsbFllYXIoKSArIGRlbHRhKTtcbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldEZ1bGxZZWFyKG1heC5nZXRGdWxsWWVhcigpICsgMSk7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgLSAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmNvbnN0IE1TX1BFUl9EQVkgPSAxMDAwICogNjAgKiA2MCAqIDI0O1xuZXhwb3J0IGNvbnN0IGdldENhbGVuZGFyV2VlayA9IChkYXRlOiBEYXRlKTogbnVtYmVyID0+IHtcbiAgLy8gSVNPIDg2MDE6IFdlZWsgMSBpcyB0aGUgd2VlayB3aXRoIHRoZSBmaXJzdCBUaHVyc2RheSBvZiB0aGUgeWVhci5cbiAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuXG4gIGNvbnN0IHkgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIGNvbnN0IGZkb3kgPSBuZXcgRGF0ZSh5LCAwLCAxKTtcbiAgY29uc3QgZG95ID0gTWF0aC5mbG9vcihcbiAgICAoZGF0ZS5nZXRUaW1lKCkgLSBmZG95LmdldFRpbWUoKSArIChkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgLSBmZG95LmdldFRpbWV6b25lT2Zmc2V0KCkpKSAvXG4gICAgICBNU19QRVJfREFZLFxuICApO1xuICBjb25zdCBkb3cgPSBmZG95LmdldERheSgpO1xuICBjb25zdCB3ID0gTWF0aC5mbG9vcigoMTAgKyBkb3kgLSBkb3cpIC8gNyk7XG5cbiAgaWYgKHcgPT09IDApIHtcbiAgICByZXR1cm4gZ2V0Q2FsZW5kYXJXZWVrKG5ldyBEYXRlKHkgLSAxLCAxMSwgMzEpKTtcbiAgfVxuXG4gIHJldHVybiB3O1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbW1vblF1aWNrT3B0aW9ucyA9IHtcbiAgdG9kYXk6IHsgbGFiZWw6IDxUZXh0IGlkPVwidG9kYXlcIiAvPiwgdmFsdWU6IHRvZGF5IH0sXG4gIHRoaXNXZWVrOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNXZWVrXCIgLz4sIHZhbHVlOiAocHJvcHMpID0+IHRoaXNXZWVrKDAsIHByb3BzLmZpcnN0RGF5T2ZXZWVrKSB9LFxuICB0aGlzTW9udGg6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc01vbnRoXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzTW9udGgoKSB9LFxuICB0aGlzWWVhcjogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzWWVhclwiIC8+LCB2YWx1ZTogKCkgPT4gdGhpc1llYXIoKSB9LFxuICBsYXN0U2V2ZW5EYXlzOiB7IGxhYmVsOiA8VGV4dCBpZD1cImxhc3RTZXZlbkRheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDcpIH0sXG4gIGxhc3RUaGlydHlEYXlzOiB7IGxhYmVsOiA8VGV4dCBpZD1cImxhc3RUaGlydHlEYXlzXCIgLz4sIHZhbHVlOiAoKSA9PiBsYXN0RGF5cygzMCkgfSxcbn0gc2F0aXNmaWVzIFJlY29yZDxcbiAgRGF0ZVBpY2tlclF1aWNrT3B0aW9uICYgc3RyaW5nLFxuICB7IGxhYmVsOiBSZWFjdE5vZGU7IHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgKChwcm9wczogRGF0ZVBpY2tlclByb3BzKSA9PiBEYXRlIHwgRGF0ZVJhbmdlKSB9XG4+O1xuXG4vKiogUmV0dXJucyB3aGV0aGVyIHR3byBkYXRlcyBhbmQvb3IgZGF0ZSByYW5nZXMgaW50ZXJzZWN0LiBJbnRlcnNlY3Rpb24gaXMgY29uc2lkZXJlZCBwZXIgZGF5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGVJbnRlcnNlY3QoYTogRGF0ZSB8IG51bGwgfCBEYXRlUmFuZ2UsIGI6IERhdGUgfCBudWxsIHwgRGF0ZVJhbmdlKSB7XG4gIGlmIChhIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGEgPSB7IG1pbjogYSwgbWF4OiBhIH07XG4gIH1cbiAgaWYgKGIgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgYiA9IHsgbWluOiBiLCBtYXg6IGIgfTtcbiAgfVxuXG4gIGlmICghYT8ubWluIHx8ICFhLm1heCB8fCAhYj8ubWluIHx8ICFiLm1heCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAhKGVuZE9mRGF5KGEubWF4KSA8IHN0YXJ0T2ZEYXkoYi5taW4pIHx8IHN0YXJ0T2ZEYXkoYS5taW4pID4gZW5kT2ZEYXkoYi5tYXgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVDbGFtcChkYXRlOiBEYXRlLCBtaW4/OiBEYXRlLCBtYXg/OiBEYXRlKSB7XG4gIGlmIChtaW4gJiYgZGF0ZSA8IG1pbikge1xuICAgIHJldHVybiBtaW47XG4gIH1cblxuICBpZiAobWF4ICYmIGRhdGUgPiBtYXgpIHtcbiAgICByZXR1cm4gbWF4O1xuICB9XG5cbiAgcmV0dXJuIGRhdGU7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlRm9yQ29tcGFyaXNvbih2YWx1ZT86IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSB7XG4gIGlmICghdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiB2YWx1ZS5nZXRUaW1lKCk7XG4gIH1cbiAgcmV0dXJuIGAke3ZhbHVlLm1pbj8uZ2V0VGltZSgpfS0ke3ZhbHVlLm1heD8uZ2V0VGltZSgpfWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlUGlja2VyKHByb3BzOiBEYXRlUGlja2VyUHJvcHMpIHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoRGF0ZVBpY2tlckNvbnRleHQpO1xuXG4gIGNvbnN0IHtcbiAgICB2YWx1ZSxcbiAgICByYW5nZVNlbGVjdCxcbiAgICBsb2NhbGUsXG4gICAgZmlyc3REYXlPZldlZWsgPSAxLFxuICAgIGRlZmF1bHREYXRlSW5WaWV3LFxuICAgIHF1aWNrT3B0aW9ucyA9IFsndG9kYXknLCAndGhpc1dlZWsnXSxcbiAgICBtaW5EYXRlLFxuICAgIG1heERhdGUsXG4gICAgc2hvd0NhbGVuZGFyV2VlayxcbiAgICBibG9ja2VkUmFuZ2VzID0gW10sXG4gIH0gPSBkZWZhdWx0czxEYXRlUGlja2VyUHJvcHM+KHByb3BzLCBjb250ZXh0KTtcblxuICBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZTogRGF0ZSB8IERhdGVSYW5nZSB8IG51bGwpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICB2YWx1ZSA9IGRhdGVDbGFtcCh2YWx1ZSwgbWluRGF0ZSwgbWF4RGF0ZSk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgdmFsdWUgPSB7XG4gICAgICAgIG1pbjogZGF0ZUNsYW1wKHZhbHVlLm1pbiwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICAgIG1heDogZGF0ZUNsYW1wKHZhbHVlLm1heCwgbWluRGF0ZSwgbWF4RGF0ZSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHByb3BzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIGNvbnN0IEJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuQnV0dG9uKTtcbiAgY29uc3QgSWNvbkJ1dHRvbiA9IHVzZVRoZW1lKCh0KSA9PiB0LmNvbXBvbmVudHMuSWNvbkJ1dHRvbik7XG4gIGNvbnN0IENoZXZyb25SaWdodCA9IHVzZVRoZW1lKCh0KSA9PiB0Lmljb25zLkNoZXZyb25SaWdodCk7XG4gIGNvbnN0IGNzc1ZhcmlhYmxlcyA9IHVzZUNzc1ZhcmlhYmxlcygpO1xuICBmdW5jdGlvbiBnZXREYXlDc3NTdHlsZXMoe1xuICAgIGRpc2FibGVkLFxuICAgIHByZXZNb250aCxcbiAgICBuZXh0TW9udGgsXG4gICAgdG9kYXksXG4gICAgYmxvY2tlZCxcbiAgICBzZWxlY3RlZCxcbiAgICBwcmVTZWxlY3RlZCxcbiAgfToge1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBwcmV2TW9udGg/OiBib29sZWFuO1xuICAgIG5leHRNb250aD86IGJvb2xlYW47XG4gICAgdG9kYXk/OiBib29sZWFuO1xuICAgIGJsb2NrZWQ/OiBib29sZWFuO1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcbiAgICBwcmVTZWxlY3RlZD86IGJvb2xlYW47XG4gIH0pOiBJbnRlcnBvbGF0aW9uPFRoZW1lPiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICBjdXJzb3I6IGRpc2FibGVkID8gdW5kZWZpbmVkIDogJ3BvaW50ZXInLFxuICAgICAgICBmb250OiAnaW5oZXJpdCcsXG4gICAgICB9LFxuICAgICAgKHByZXZNb250aCB8fCBuZXh0TW9udGgpICYmIHtcbiAgICAgICAgY29sb3I6IGdyYXksXG4gICAgICB9LFxuICAgICAgdG9kYXkgJiYge1xuICAgICAgICBvdXRsaW5lOiAnMXB4IHNvbGlkIHZhcigtLXNlY29uZGFyeU1haW4pJyxcbiAgICAgIH0sXG4gICAgICBibG9ja2VkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tYmxvY2tlZENvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIHNlbGVjdGVkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLXByaW1hcnlNYWluKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICAgIGJsb2NrZWQgJiZcbiAgICAgICAgc2VsZWN0ZWQgJiYge1xuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICc6OmJlZm9yZSc6IHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICdcIlwiJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICBib3R0b206IDAsXG4gICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsb2NrZWRNYWluKScsXG4gICAgICAgICAgICBjbGlwUGF0aDogJ3BvbHlnb24oMCAwLCAwIDUwJSwgNTAlIDApJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgcHJlU2VsZWN0ZWQgJiYge1xuICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHJpbWFyeUxpZ2h0KScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tcHJpbWFyeUNvbnRyYXN0VGV4dCknLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgY29uc3QgbW91bnRUaW1lID0gdXNlTWVtbygoKSA9PiBuZXcgRGF0ZSgpLCBbXSk7XG4gIGNvbnN0IFtkaXJ0eSwgc2V0RGlydHldID0gdXNlU3RhdGU8UGFydGlhbDxEYXRlUmFuZ2U+PigpO1xuICBjb25zdCBbaG92ZXJlZCwgc2V0SG92ZXJlZF0gPSB1c2VTdGF0ZTxEYXRlPigpO1xuICBjb25zdCBbZGF0ZUluVmlld0xvY2FsLCBzZXREYXRlSW5WaWV3TG9jYWxdID0gdXNlU3RhdGU8RGF0ZT4oZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lKTtcbiAgY29uc3QgZGF0ZUluVmlldyA9IHByb3BzLmRhdGVJblZpZXcgPz8gZGF0ZUluVmlld0xvY2FsO1xuXG4gIGZ1bmN0aW9uIHNldERhdGVJblZpZXcoZGF0ZTogRGF0ZSkge1xuICAgIHNldERhdGVJblZpZXdMb2NhbChkYXRlKTtcbiAgICBwcm9wcy5vbkRhdGVJblZpZXdDaGFuZ2U/LihkYXRlKTtcbiAgfVxuXG4gIGNvbnN0IG1pbiA9IGRpcnR5ID8gZGlydHkubWluIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWluO1xuICBjb25zdCBtYXggPSBkaXJ0eSA/IGRpcnR5Lm1heCA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWU/Lm1heDtcblxuICBjb25zdCByZXNvbHZlZFF1aWNrT3B0aW9ucyA9IFsuLi5xdWlja09wdGlvbnMsIHsgbGFiZWw6IDxUZXh0IGlkPVwicmVzZXRcIiAvPiwgdmFsdWU6IG51bGwgfV0ubWFwKFxuICAgIChvcHRpb24sIGluZGV4KSA9PiB7XG4gICAgICBpZiAob3B0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbigodmFsdWUpID0+IHtcbiAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgbGFiZWwsIHZhbHVlIH0gPSB0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJyA/IGNvbW1vblF1aWNrT3B0aW9uc1tvcHRpb25dIDogb3B0aW9uO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUocHJvcHMpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge2xhYmVsfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICk7XG4gICAgfSxcbiAgKTtcblxuICBjb25zdCB7IGNhbGVuZGFycywgZ2V0QmFja1Byb3BzLCBnZXRGb3J3YXJkUHJvcHMsIGdldERhdGVQcm9wcyB9ID0gdXNlRGF5emVkKHtcbiAgICBvbkRhdGVTZWxlY3RlZDogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGZpcnN0RGF5T2ZXZWVrLFxuICAgIHNob3dPdXRzaWRlRGF5czogdHJ1ZSxcbiAgICBkYXRlOiBkYXRlSW5WaWV3LFxuICAgIG9uT2Zmc2V0Q2hhbmdlZDogKG9mZnNldCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcobmV3IERhdGUoZGF0ZUluVmlldy5nZXRGdWxsWWVhcigpLCBkYXRlSW5WaWV3LmdldE1vbnRoKCkgKyBvZmZzZXQpKSxcbiAgICBvZmZzZXQ6IDAsXG4gICAgbWluRGF0ZSxcbiAgICBtYXhEYXRlLFxuICB9KTtcbiAgY29uc3Qgbm93ID0gdXNlTWVtbygoKSA9PiBzdGFydE9mRGF5KG5ldyBEYXRlKCkpLCBbXSk7XG5cbiAgY29uc3QgZm9ybWF0V2Vla2RheSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgd2Vla2RheTogJ3Nob3J0JyB9KTtcbiAgICByZXR1cm4gKHdlZWtEYXk6IG51bWJlcikgPT5cbiAgICAgIGZvcm1hdChuZXcgRGF0ZShEYXRlLlVUQygyMDIxLCA3LCAoKHdlZWtEYXkgKyBmaXJzdERheU9mV2VlaykgJSA3KSArIDEpKSk7XG4gIH0sIFtsb2NhbGUsIGZpcnN0RGF5T2ZXZWVrXSk7XG5cbiAgdXNlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICBzZXREYXRlSW5WaWV3KFxuICAgICAgICB2YWx1ZSA9PT0gbnVsbCA/IGRlZmF1bHREYXRlSW5WaWV3ID8/IG1vdW50VGltZSA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWUubWF4LFxuICAgICAgKSxcbiAgICBbZ2V0VmFsdWVGb3JDb21wYXJpc29uKHZhbHVlKSwgZ2V0VmFsdWVGb3JDb21wYXJpc29uKGRlZmF1bHREYXRlSW5WaWV3KSwgbW91bnRUaW1lXSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgfVxuICB9LCBbcmFuZ2VTZWxlY3RdKTtcblxuICBmdW5jdGlvbiBzZXQobWluPzogRGF0ZSwgbWF4PzogRGF0ZSwgZWRpdD86ICdtaW4nIHwgJ21heCcpIHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBvbkNoYW5nZShtaW4gPz8gbnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG1pbiAmJiBtYXggJiYgbWluID4gbWF4KSB7XG4gICAgICBpZiAoZWRpdCA9PT0gJ21pbicpIHtcbiAgICAgICAgbWF4ID0gbWluO1xuICAgICAgfSBlbHNlIGlmIChlZGl0ID09PSAnbWF4Jykge1xuICAgICAgICBtaW4gPSBtYXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbbWluLCBtYXhdID0gW21heCwgbWluXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW1pbiA9PT0gIW1heCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICAgIG9uQ2hhbmdlKG1pbiAmJiBtYXggPyB7IG1pbiwgbWF4OiBlbmRPZkRheShtYXgpIH0gOiBudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0RGlydHkoeyBtaW4sIG1heCB9KTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBmb3JtYXRNb250aCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgbW9udGg6ICdsb25nJyB9KTtcbiAgICByZXR1cm4gKG1vbnRoOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSgyMDIxLCBtb250aCkpO1xuICB9LCBbbG9jYWxlXSk7XG5cbiAgY29uc3QgZm9ybWF0WWVhciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgeWVhcjogJ251bWVyaWMnIH0pO1xuICAgIHJldHVybiAoeWVhcjogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoeWVhciwgMCwgMSkpO1xuICB9LCBbbG9jYWxlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNzcz17Y3NzVmFyaWFibGVzfT5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgIGFsaWduSXRlbXM6ICdiYXNlbGluZScsXG4gICAgICAgICAgZ2FwOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8RGF0ZUlucHV0XG4gICAgICAgICAgdmFsdWU9e21pbiA/PyBudWxsfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KGRhdGUgPz8gdW5kZWZpbmVkLCBtYXgsICdtaW4nKX1cbiAgICAgICAgICBsb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgLz5cblxuICAgICAgICB7cmFuZ2VTZWxlY3QgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICB7JyAtICd9XG4gICAgICAgICAgICA8RGF0ZUlucHV0XG4gICAgICAgICAgICAgIHZhbHVlPXttYXggPz8gbnVsbH1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQobWluLCBkYXRlID8/IHVuZGVmaW5lZCwgJ21heCcpfVxuICAgICAgICAgICAgICBsb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAge2NhbGVuZGFycy5tYXAoKHsgbW9udGgsIHllYXIsIHdlZWtzIH0pID0+IChcbiAgICAgICAgPGRpdiBrZXk9e2Ake21vbnRofSR7eWVhcn1gfSBjc3M9e3sgZGlzcGxheTogJ2dyaWQnIH19PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICBtYXJnaW46ICdjYWxjKHZhcigtLXNwYWNpbmcpICogNCkgMCcsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0QmFja1Byb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCBjc3M9e3sgdHJhbnNmb3JtOiAncm90YXRlM2QoMCwgMCwgMSwgMTgwZGVnKScgfX0gLz5cbiAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cblxuICAgICAgICAgICAgPGRpdiBjc3M9e3sgZGlzcGxheTogJ2ZsZXgnIH19PlxuICAgICAgICAgICAgICB7Zm9ybWF0TW9udGgobW9udGgpfSB7Zm9ybWF0WWVhcih5ZWFyKX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEZvcndhcmRQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgLz5cbiAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICAgICAgZ3JpZFRlbXBsYXRlQ29sdW1uczogJ3JlcGVhdCg4LCBtYXgtY29udGVudCknLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2hvd0NhbGVuZGFyV2VlayA/IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFRleHQgaWQ9XCJjYWxlbmRhcldlZWtcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHt3ZWVrRGF5cy5tYXAoKF92LCB3ZWVrRGF5KSA9PiAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBrZXk9e3dlZWtEYXl9XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2Zvcm1hdFdlZWtkYXkod2Vla0RheSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSl9XG5cbiAgICAgICAgICAgIHt3ZWVrcy5tYXAoKHdlZWssIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtTdGFydCA9IHdlZWtbMF0gYXMgRGF0ZU9iajtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla0VuZCA9IHdlZWtbNl0gYXMgRGF0ZU9iajtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla0Rpc2FibGVkID1cbiAgICAgICAgICAgICAgICAhcmFuZ2VTZWxlY3QgfHxcbiAgICAgICAgICAgICAgICAobWluRGF0ZSAmJiB3ZWVrRW5kLmRhdGUgPCBtaW5EYXRlKSB8fFxuICAgICAgICAgICAgICAgIChtYXhEYXRlICYmIHdlZWtTdGFydC5kYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8RnJhZ21lbnQga2V5PXtpbmRleH0+XG4gICAgICAgICAgICAgICAgICB7c2hvd0NhbGVuZGFyV2VlayA/IChcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHdlZWtEaXNhYmxlZCA/IHVuZGVmaW5lZCA6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdlZWtEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pbiA9IG1pbkRhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPCBtaW5EYXRlID8gbWluRGF0ZSA6IHdlZWtTdGFydC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4ID0gbWF4RGF0ZSAmJiB3ZWVrRW5kLmRhdGUgPiBtYXhEYXRlID8gbWF4RGF0ZSA6IHdlZWtFbmQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldChtaW4sIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtnZXRDYWxlbmRhcldlZWsoKHdlZWtbMF0gYXMgRGF0ZU9iaikuZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAge3dlZWsubWFwKChkYXRlT2JqZWN0LCBkYXlJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGVPYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiBrZXk9e2RheUluZGV4fSAvPjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcHJldk1vbnRoLCBuZXh0TW9udGgsIGRhdGUgfSA9IGRhdGVPYmplY3Q7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvZGF5ID0gc3RhcnRPZkRheShkYXRlKS5nZXRUaW1lKCkgPT09IG5vdy5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkID0gKG1pbkRhdGUgJiYgZGF0ZSA8IG1pbkRhdGUpIHx8IChtYXhEYXRlICYmIGRhdGUgPiBtYXhEYXRlKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgZGF0ZS5nZXRUaW1lKCkgPT09IG1pbj8uZ2V0VGltZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgKG1pbiAmJiBtYXggJiYgZGF0ZUludGVyc2VjdChkYXRlLCB7IG1pbiwgbWF4IH0pKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJlU2VsZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICFzZWxlY3RlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICFkaXNhYmxlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgIChkYXRlLmdldFRpbWUoKSA9PT0gaG92ZXJlZD8uZ2V0VGltZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAobWluICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFtYXggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlSW50ZXJzZWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluIDw9IGhvdmVyZWQgPyB7IG1pbiwgbWF4OiBob3ZlcmVkIH0gOiB7IG1pbjogaG92ZXJlZCwgbWF4OiBtaW4gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja2VkID0gYmxvY2tlZFJhbmdlcy5zb21lKChyYW5nZSkgPT4gZGF0ZUludGVyc2VjdChkYXRlLCByYW5nZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake2luZGV4fS0ke2RheUluZGV4fWB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2dldERheUNzc1N0eWxlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRNb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG9kYXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVTZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLmdldERhdGVQcm9wcyh7IGRhdGVPYmo6IGRhdGVPYmplY3QgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaW4pIHNldChtaW4sIGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc2V0KGRhdGUsIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3Zlcj17KCkgPT4gc2V0SG92ZXJlZChkYXRlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck91dD17KCkgPT4gc2V0SG92ZXJlZCh1bmRlZmluZWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtkYXRlLmdldERhdGUoKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApKX1cblxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBtYXJnaW5Ub3A6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7cmVzb2x2ZWRRdWlja09wdGlvbnN9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdfQ== */"), onClick: () => {
|
|
1240
|
+
}, process.env.NODE_ENV === "production" ? "" : ";label:DatePicker;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVoQnNCIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2RhdGVQaWNrZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZU9iaiwgdXNlRGF5emVkIH0gZnJvbSAnZGF5emVkJztcbmltcG9ydCB7XG4gIEZyYWdtZW50LFxuICBSZWFjdE5vZGUsXG4gIGNyZWF0ZUNvbnRleHQsXG4gIHVzZUNvbnRleHQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSAnLi4vaG9va3MvdXNlVGhlbWUnO1xuaW1wb3J0IHsgZGVmYXVsdHMgfSBmcm9tICcuLi9taXNjL2RlZmF1bHRzJztcbmltcG9ydCB7IGdyYXkgfSBmcm9tICcuLi90aGVtZS9kZWZhdWx0VGhlbWUvZGVmYXVsdENsYXNzZXMnO1xuaW1wb3J0IHsgdXNlQ3NzVmFyaWFibGVzIH0gZnJvbSAnLi4vdGhlbWUvdXNlQ3NzVmFyaWFibGVzJztcbmltcG9ydCB7IERhdGVJbnB1dCB9IGZyb20gJy4vZGF0ZUlucHV0JztcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuL3RleHQnO1xuaW1wb3J0IHsgSW50ZXJwb2xhdGlvbiwgVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmV4cG9ydCB0eXBlIERhdGVSYW5nZSA9IHsgbWluOiBEYXRlOyBtYXg6IERhdGUgfTtcblxuZXhwb3J0IHR5cGUgRGF0ZVBpY2tlclF1aWNrT3B0aW9uID1cbiAgfCAndG9kYXknXG4gIHwgJ3RoaXNXZWVrJ1xuICB8ICd0aGlzTW9udGgnXG4gIHwgJ3RoaXNZZWFyJ1xuICB8ICdsYXN0U2V2ZW5EYXlzJ1xuICB8ICdsYXN0VGhpcnR5RGF5cydcbiAgfCB7IGxhYmVsOiBSZWFjdE5vZGU7IHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgKCgpID0+IERhdGUgfCBEYXRlUmFuZ2UpIH1cbiAgfCAoKG9uQ2hhbmdlOiAodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSA9PiB2b2lkKSA9PiBSZWFjdE5vZGUpO1xuXG5leHBvcnQgdHlwZSBEYXRlUGlja2VyUHJvcHMgPSB7XG4gIC8qKiBDdXJyZW50bHkgc2VsZWN0ZWQgZGF5IG9yIHJhbmdlIG9mIGRheXMuICovXG4gIHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbDtcbiAgLyoqIENhbGxiYWNrIGZvciB3aGVuIHRoZSBkYXkgKHJhbmdlKSBjaGFuZ2VzLiAqL1xuICBvbkNoYW5nZTogKHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkgPT4gdm9pZDtcbiAgLyoqIEN1cnJlbnRseSB2aXNpYmxlIGRhdGUuICovXG4gIGRhdGVJblZpZXc/OiBEYXRlO1xuICAvKiogQ2FsbGJhY2sgZm9yIHdoZW4gdGhlIGN1cnJlbnRseSB2aXNpYmxlIGRhdGUgY2hhbmdlcy4gKi9cbiAgb25EYXRlSW5WaWV3Q2hhbmdlPzogKHZhbHVlOiBEYXRlKSA9PiB2b2lkO1xuICAvKiogSWYgZW5hYmxlZCwgcmFuZ2VzIGNhbiBiZSBzZWxlY3RlZC4gKi9cbiAgcmFuZ2VTZWxlY3Q/OiBib29sZWFuO1xuICAvKiogV2hpY2ggbG9jYWxlIHRvIHVzZSB0byByZW5kZXIgdGhlIGNhbGVuZGFyLiAqL1xuICBsb2NhbGU/OiBzdHJpbmc7XG4gIC8qKiBXaGljaCBkYXkgb2YgdGhlIHdlZWsgc2hvdWxkIGJlIGluIHRoZSBmaXJzdCBjb2x1bW4uICgwPVN1bmRheSwgMT1Nb25kYXksIC4uLilcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgZmlyc3REYXlPZldlZWs/OiAwIHwgMSB8IDIgfCAzIHwgNCB8IDUgfCA2O1xuICAvKiogV2hpY2ggbW9udGggdG8gc2hvdyBpbml0aWFsbHkgKi9cbiAgZGVmYXVsdERhdGVJblZpZXc/OiBEYXRlO1xuICAvKiogU2hvdyBidXR0b25zIHRvIHF1aWNrbHkgc2VsZWN0IHN1Z2dlc3RlZCBkYXRlcyBvciBkYXRlIHJhbmdlcyAqL1xuICBxdWlja09wdGlvbnM/OiBEYXRlUGlja2VyUXVpY2tPcHRpb25bXTtcbiAgLyoqIE1pbmltdW0gc2VsZWN0YWJsZSBkYXRlICovXG4gIC8qKiBEYXRlIHJhbmdlcyB0aGF0IGFyZSB2aXN1YWxseSBtYXJrZWQgYXMgYmxvY2tlZCAqL1xuICBibG9ja2VkUmFuZ2VzPzogRGF0ZVJhbmdlW107XG4gIG1pbkRhdGU/OiBEYXRlO1xuICAvKiogTWF4aW11bSBzZWxlY3RhYmxlIGRhdGUgKi9cbiAgbWF4RGF0ZT86IERhdGU7XG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIGNhbGVuZGFyIHdlZWsgaW4gdGhlIGZpcnN0IGNvbHVtbiAqL1xuICBzaG93Q2FsZW5kYXJXZWVrPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IERhdGVQaWNrZXJDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxQYXJ0aWFsPE9taXQ8RGF0ZVBpY2tlclByb3BzLCAndmFsdWUnIHwgJ29uQ2hhbmdlJz4+Pih7fSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBEYXRlUGlja2VyUHJvdmlkZXIoe1xuICBjaGlsZHJlbixcbiAgLi4ucHJvcHNcbn06IFBhcnRpYWw8T21pdDxEYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnb25DaGFuZ2UnPj4gJiB7IGNoaWxkcmVuPzogUmVhY3ROb2RlIH0pIHtcbiAgY29uc3QgdmFsdWUgPSB1c2VNZW1vKCgpID0+IHByb3BzLCBbSlNPTi5zdHJpbmdpZnkocHJvcHMpXSk7XG5cbiAgcmV0dXJuIDxEYXRlUGlja2VyQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dmFsdWV9PntjaGlsZHJlbn08L0RhdGVQaWNrZXJDb250ZXh0LlByb3ZpZGVyPjtcbn1cblxuY29uc3Qgd2Vla0RheXMgPSBbMCwgMSwgMiwgMywgNCwgNSwgNl0gYXMgY29uc3Q7XG5cbi8qKiBSb3VuZHMgYSBkYXRlIGRvd24gdG8gdGhlIHN0YXJ0IG9mIHRoZSBkYXkuICovXG5leHBvcnQgY29uc3Qgc3RhcnRPZkRheSA9IChkOiBEYXRlKSA9PiBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkpO1xuXG4vKiogUm91bmRzIGEgZGF0ZSB1cCB0byB0aGUgZW5kIG9mIHRoZSBkYXkuICovXG5leHBvcnQgY29uc3QgZW5kT2ZEYXkgPSAoZDogRGF0ZSkgPT5cbiAgbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpICsgMSwgMCwgMCwgMCwgLTEpO1xuXG5leHBvcnQgY29uc3QgbGFzdERheXMgPSAoZGF5czogbnVtYmVyKTogRGF0ZVJhbmdlID0+IHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgY29uc3QgbWluID0gbmV3IERhdGUobm93KTtcbiAgbWluLnNldERhdGUobWluLmdldERhdGUoKSAtIGRheXMgKyAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobm93KSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB0b2RheSA9ICgpID0+IGxhc3REYXlzKDEpO1xuXG5leHBvcnQgY29uc3QgdGhpc1dlZWsgPSAoZGVsdGEgPSAwLCBmaXJzdERheU9mV2VlayA9IDEpOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuXG4gIGxldCBkaWZmID0gbWluLmdldERheSgpIC0gZmlyc3REYXlPZldlZWs7XG4gIGlmIChkaWZmIDwgMCkge1xuICAgIGRpZmYgKz0gNztcbiAgfVxuICBtaW4uc2V0RGF0ZShtaW4uZ2V0RGF0ZSgpIC0gZGlmZiArIGRlbHRhICogNyk7XG5cbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSArIDYpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRoaXNNb250aCA9IChkZWx0YSA9IDApOiBEYXRlUmFuZ2UgPT4ge1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICBjb25zdCBtaW4gPSBuZXcgRGF0ZShub3cpO1xuICBtaW4uc2V0RGF0ZSgxKTtcbiAgbWluLnNldE1vbnRoKG1pbi5nZXRNb250aCgpICsgZGVsdGEpO1xuICBjb25zdCBtYXggPSBuZXcgRGF0ZShtaW4pO1xuICBtYXguc2V0TW9udGgobWF4LmdldE1vbnRoKCkgKyAxKTtcbiAgbWF4LnNldERhdGUobWF4LmdldERhdGUoKSAtIDEpO1xuXG4gIHJldHVybiB7XG4gICAgbWluOiBzdGFydE9mRGF5KG1pbiksXG4gICAgbWF4OiBlbmRPZkRheShtYXgpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHRoaXNZZWFyID0gKGRlbHRhID0gMCk6IERhdGVSYW5nZSA9PiB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IG1pbiA9IG5ldyBEYXRlKG5vdyk7XG4gIG1pbi5zZXREYXRlKDEpO1xuICBtaW4uc2V0TW9udGgoMCk7XG4gIG1pbi5zZXRGdWxsWWVhcihtaW4uZ2V0RnVsbFllYXIoKSArIGRlbHRhKTtcbiAgY29uc3QgbWF4ID0gbmV3IERhdGUobWluKTtcbiAgbWF4LnNldEZ1bGxZZWFyKG1heC5nZXRGdWxsWWVhcigpICsgMSk7XG4gIG1heC5zZXREYXRlKG1heC5nZXREYXRlKCkgLSAxKTtcblxuICByZXR1cm4ge1xuICAgIG1pbjogc3RhcnRPZkRheShtaW4pLFxuICAgIG1heDogZW5kT2ZEYXkobWF4KSxcbiAgfTtcbn07XG5cbmNvbnN0IE1TX1BFUl9EQVkgPSAxMDAwICogNjAgKiA2MCAqIDI0O1xuZXhwb3J0IGNvbnN0IGdldENhbGVuZGFyV2VlayA9IChkYXRlOiBEYXRlKTogbnVtYmVyID0+IHtcbiAgLy8gSVNPIDg2MDE6IFdlZWsgMSBpcyB0aGUgd2VlayB3aXRoIHRoZSBmaXJzdCBUaHVyc2RheSBvZiB0aGUgeWVhci5cbiAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuXG4gIGNvbnN0IGVuZE9mV2VlayA9IG5ldyBEYXRlKFxuICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgZGF0ZS5nZXREYXRlKCkgKyAoNyAtIChkYXRlLmdldERheSgpIHx8IDcpKSxcbiAgKTtcblxuICBjb25zdCB5ZWFyID0gZW5kT2ZXZWVrLmdldEZ1bGxZZWFyKCk7XG4gIGNvbnN0IGZpcnN0RGF5T2ZZZWFyID0gbmV3IERhdGUoeWVhciwgMCwgMSk7XG4gIGNvbnN0IGRheU9mWWVhciA9XG4gICAgTWF0aC5mbG9vcihcbiAgICAgIChlbmRPZldlZWsuZ2V0VGltZSgpIC1cbiAgICAgICAgZmlyc3REYXlPZlllYXIuZ2V0VGltZSgpICtcbiAgICAgICAgKGVuZE9mV2Vlay5nZXRUaW1lem9uZU9mZnNldCgpIC0gZmlyc3REYXlPZlllYXIuZ2V0VGltZXpvbmVPZmZzZXQoKSkpIC9cbiAgICAgICAgTVNfUEVSX0RBWSxcbiAgICApICsgMTtcbiAgY29uc3Qgd2Vla09mWWVhciA9IE1hdGguZmxvb3IoKDMgKyBkYXlPZlllYXIpIC8gNyk7XG5cbiAgaWYgKHdlZWtPZlllYXIgPT09IDApIHtcbiAgICByZXR1cm4gKFxuICAgICAgZ2V0Q2FsZW5kYXJXZWVrKFxuICAgICAgICBuZXcgRGF0ZShlbmRPZldlZWsuZ2V0RnVsbFllYXIoKSwgZW5kT2ZXZWVrLmdldE1vbnRoKCksIGVuZE9mV2Vlay5nZXREYXRlKCkgLSA3KSxcbiAgICAgICkgKyAxXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB3ZWVrT2ZZZWFyO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbW1vblF1aWNrT3B0aW9ucyA9IHtcbiAgdG9kYXk6IHsgbGFiZWw6IDxUZXh0IGlkPVwidG9kYXlcIiAvPiwgdmFsdWU6IHRvZGF5IH0sXG4gIHRoaXNXZWVrOiB7IGxhYmVsOiA8VGV4dCBpZD1cInRoaXNXZWVrXCIgLz4sIHZhbHVlOiAocHJvcHMpID0+IHRoaXNXZWVrKDAsIHByb3BzLmZpcnN0RGF5T2ZXZWVrKSB9LFxuICB0aGlzTW9udGg6IHsgbGFiZWw6IDxUZXh0IGlkPVwidGhpc01vbnRoXCIgLz4sIHZhbHVlOiAoKSA9PiB0aGlzTW9udGgoKSB9LFxuICB0aGlzWWVhcjogeyBsYWJlbDogPFRleHQgaWQ9XCJ0aGlzWWVhclwiIC8+LCB2YWx1ZTogKCkgPT4gdGhpc1llYXIoKSB9LFxuICBsYXN0U2V2ZW5EYXlzOiB7IGxhYmVsOiA8VGV4dCBpZD1cImxhc3RTZXZlbkRheXNcIiAvPiwgdmFsdWU6ICgpID0+IGxhc3REYXlzKDcpIH0sXG4gIGxhc3RUaGlydHlEYXlzOiB7IGxhYmVsOiA8VGV4dCBpZD1cImxhc3RUaGlydHlEYXlzXCIgLz4sIHZhbHVlOiAoKSA9PiBsYXN0RGF5cygzMCkgfSxcbn0gc2F0aXNmaWVzIFJlY29yZDxcbiAgRGF0ZVBpY2tlclF1aWNrT3B0aW9uICYgc3RyaW5nLFxuICB7IGxhYmVsOiBSZWFjdE5vZGU7IHZhbHVlOiBEYXRlIHwgRGF0ZVJhbmdlIHwgKChwcm9wczogRGF0ZVBpY2tlclByb3BzKSA9PiBEYXRlIHwgRGF0ZVJhbmdlKSB9XG4+O1xuXG4vKiogUmV0dXJucyB3aGV0aGVyIHR3byBkYXRlcyBhbmQvb3IgZGF0ZSByYW5nZXMgaW50ZXJzZWN0LiBJbnRlcnNlY3Rpb24gaXMgY29uc2lkZXJlZCBwZXIgZGF5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGVJbnRlcnNlY3QoXG4gIGE6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBiOiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCB8IHVuZGVmaW5lZCxcbikge1xuICBpZiAoYSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICBhID0geyBtaW46IGEsIG1heDogYSB9O1xuICB9XG4gIGlmIChiIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIGIgPSB7IG1pbjogYiwgbWF4OiBiIH07XG4gIH1cblxuICBpZiAoIWE/Lm1pbiB8fCAhYS5tYXggfHwgIWI/Lm1pbiB8fCAhYi5tYXgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gIShlbmRPZkRheShhLm1heCkgPCBzdGFydE9mRGF5KGIubWluKSB8fCBzdGFydE9mRGF5KGEubWluKSA+IGVuZE9mRGF5KGIubWF4KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlQ2xhbXAoZGF0ZTogRGF0ZSwgbWluPzogRGF0ZSwgbWF4PzogRGF0ZSkge1xuICBpZiAobWluICYmIGRhdGUgPCBtaW4pIHtcbiAgICByZXR1cm4gbWluO1xuICB9XG5cbiAgaWYgKG1heCAmJiBkYXRlID4gbWF4KSB7XG4gICAgcmV0dXJuIG1heDtcbiAgfVxuXG4gIHJldHVybiBkYXRlO1xufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZUZvckNvbXBhcmlzb24odmFsdWU/OiBEYXRlIHwgRGF0ZVJhbmdlIHwgbnVsbCkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gdmFsdWUuZ2V0VGltZSgpO1xuICB9XG4gIHJldHVybiBgJHt2YWx1ZS5taW4/LmdldFRpbWUoKX0tJHt2YWx1ZS5tYXg/LmdldFRpbWUoKX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGF0ZVBpY2tlcihwcm9wczogRGF0ZVBpY2tlclByb3BzKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KERhdGVQaWNrZXJDb250ZXh0KTtcblxuICBjb25zdCB7XG4gICAgdmFsdWUsXG4gICAgcmFuZ2VTZWxlY3QsXG4gICAgbG9jYWxlLFxuICAgIGZpcnN0RGF5T2ZXZWVrID0gMSxcbiAgICBkZWZhdWx0RGF0ZUluVmlldyxcbiAgICBxdWlja09wdGlvbnMgPSBbJ3RvZGF5JywgJ3RoaXNXZWVrJ10sXG4gICAgbWluRGF0ZSxcbiAgICBtYXhEYXRlLFxuICAgIHNob3dDYWxlbmRhcldlZWssXG4gICAgYmxvY2tlZFJhbmdlcyA9IFtdLFxuICB9ID0gZGVmYXVsdHM8RGF0ZVBpY2tlclByb3BzPihwcm9wcywgY29udGV4dCk7XG5cbiAgZnVuY3Rpb24gb25DaGFuZ2UodmFsdWU6IERhdGUgfCBEYXRlUmFuZ2UgfCBudWxsKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgdmFsdWUgPSBkYXRlQ2xhbXAodmFsdWUsIG1pbkRhdGUsIG1heERhdGUpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgIHZhbHVlID0ge1xuICAgICAgICBtaW46IGRhdGVDbGFtcCh2YWx1ZS5taW4sIG1pbkRhdGUsIG1heERhdGUpLFxuICAgICAgICBtYXg6IGRhdGVDbGFtcCh2YWx1ZS5tYXgsIG1pbkRhdGUsIG1heERhdGUpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBwcm9wcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICBjb25zdCBCdXR0b24gPSB1c2VUaGVtZSgodCkgPT4gdC5jb21wb25lbnRzLkJ1dHRvbik7XG4gIGNvbnN0IEljb25CdXR0b24gPSB1c2VUaGVtZSgodCkgPT4gdC5jb21wb25lbnRzLkljb25CdXR0b24pO1xuICBjb25zdCBDaGV2cm9uUmlnaHQgPSB1c2VUaGVtZSgodCkgPT4gdC5pY29ucy5DaGV2cm9uUmlnaHQpO1xuICBjb25zdCBjc3NWYXJpYWJsZXMgPSB1c2VDc3NWYXJpYWJsZXMoKTtcbiAgZnVuY3Rpb24gZ2V0RGF5Q3NzU3R5bGVzKHtcbiAgICBkaXNhYmxlZCxcbiAgICBwcmV2TW9udGgsXG4gICAgbmV4dE1vbnRoLFxuICAgIHRvZGF5LFxuICAgIGJsb2NrZWQsXG4gICAgc2VsZWN0ZWQsXG4gICAgcHJlU2VsZWN0ZWQsXG4gIH06IHtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgcHJldk1vbnRoPzogYm9vbGVhbjtcbiAgICBuZXh0TW9udGg/OiBib29sZWFuO1xuICAgIHRvZGF5PzogYm9vbGVhbjtcbiAgICBibG9ja2VkPzogYm9vbGVhbjtcbiAgICBzZWxlY3RlZD86IGJvb2xlYW47XG4gICAgcHJlU2VsZWN0ZWQ/OiBib29sZWFuO1xuICB9KTogSW50ZXJwb2xhdGlvbjxUaGVtZT4ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHBhZGRpbmc6IDEwLFxuICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgY3Vyc29yOiBkaXNhYmxlZCA/IHVuZGVmaW5lZCA6ICdwb2ludGVyJyxcbiAgICAgICAgZm9udDogJ2luaGVyaXQnLFxuICAgICAgfSxcbiAgICAgIChwcmV2TW9udGggfHwgbmV4dE1vbnRoKSAmJiB7XG4gICAgICAgIGNvbG9yOiBncmF5LFxuICAgICAgfSxcbiAgICAgIHRvZGF5ICYmIHtcbiAgICAgICAgb3V0bGluZTogJzFweCBzb2xpZCB2YXIoLS1zZWNvbmRhcnlNYWluKScsXG4gICAgICB9LFxuICAgICAgYmxvY2tlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ibG9ja2VkTWFpbiknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLWJsb2NrZWRDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgICBzZWxlY3RlZCAmJiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wcmltYXJ5TWFpbiknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLXByaW1hcnlDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgICBibG9ja2VkICYmXG4gICAgICAgIHNlbGVjdGVkICYmIHtcbiAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAnOjpiZWZvcmUnOiB7XG4gICAgICAgICAgICBjb250ZW50OiAnXCJcIicsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICAgICAgbGVmdDogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1ibG9ja2VkTWFpbiknLFxuICAgICAgICAgICAgY2xpcFBhdGg6ICdwb2x5Z29uKDAgMCwgMCA1MCUsIDUwJSAwKScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIHByZVNlbGVjdGVkICYmIHtcbiAgICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLXByaW1hcnlMaWdodCknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLXByaW1hcnlDb250cmFzdFRleHQpJyxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIGNvbnN0IG1vdW50VGltZSA9IHVzZU1lbW8oKCkgPT4gbmV3IERhdGUoKSwgW10pO1xuICBjb25zdCBbZGlydHksIHNldERpcnR5XSA9IHVzZVN0YXRlPFBhcnRpYWw8RGF0ZVJhbmdlPj4oKTtcbiAgY29uc3QgW2hvdmVyZWQsIHNldEhvdmVyZWRdID0gdXNlU3RhdGU8RGF0ZVJhbmdlPigpO1xuICBjb25zdCBbZGF0ZUluVmlld0xvY2FsLCBzZXREYXRlSW5WaWV3TG9jYWxdID0gdXNlU3RhdGU8RGF0ZT4oZGVmYXVsdERhdGVJblZpZXcgPz8gbW91bnRUaW1lKTtcbiAgY29uc3QgZGF0ZUluVmlldyA9IHByb3BzLmRhdGVJblZpZXcgPz8gZGF0ZUluVmlld0xvY2FsO1xuXG4gIGZ1bmN0aW9uIHNldERhdGVJblZpZXcoZGF0ZTogRGF0ZSkge1xuICAgIHNldERhdGVJblZpZXdMb2NhbChkYXRlKTtcbiAgICBwcm9wcy5vbkRhdGVJblZpZXdDaGFuZ2U/LihkYXRlKTtcbiAgfVxuXG4gIGNvbnN0IG1pbiA9IGRpcnR5ID8gZGlydHkubWluIDogdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiB2YWx1ZT8ubWluO1xuICBjb25zdCBtYXggPSBkaXJ0eSA/IGRpcnR5Lm1heCA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWU/Lm1heDtcblxuICBjb25zdCByZXNvbHZlZFF1aWNrT3B0aW9ucyA9IFsuLi5xdWlja09wdGlvbnMsIHsgbGFiZWw6IDxUZXh0IGlkPVwicmVzZXRcIiAvPiwgdmFsdWU6IG51bGwgfV0ubWFwKFxuICAgIChvcHRpb24sIGluZGV4KSA9PiB7XG4gICAgICBpZiAob3B0aW9uIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbigodmFsdWUpID0+IHtcbiAgICAgICAgICBzZXREaXJ0eSh1bmRlZmluZWQpO1xuICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgbGFiZWwsIHZhbHVlIH0gPSB0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJyA/IGNvbW1vblF1aWNrT3B0aW9uc1tvcHRpb25dIDogb3B0aW9uO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUocHJvcHMpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge2xhYmVsfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICk7XG4gICAgfSxcbiAgKTtcblxuICBjb25zdCB7IGNhbGVuZGFycywgZ2V0QmFja1Byb3BzLCBnZXRGb3J3YXJkUHJvcHMsIGdldERhdGVQcm9wcyB9ID0gdXNlRGF5emVkKHtcbiAgICBvbkRhdGVTZWxlY3RlZDogKCkgPT4gdW5kZWZpbmVkLFxuICAgIGZpcnN0RGF5T2ZXZWVrLFxuICAgIHNob3dPdXRzaWRlRGF5czogdHJ1ZSxcbiAgICBkYXRlOiBkYXRlSW5WaWV3LFxuICAgIG9uT2Zmc2V0Q2hhbmdlZDogKG9mZnNldCkgPT5cbiAgICAgIHNldERhdGVJblZpZXcobmV3IERhdGUoZGF0ZUluVmlldy5nZXRGdWxsWWVhcigpLCBkYXRlSW5WaWV3LmdldE1vbnRoKCkgKyBvZmZzZXQpKSxcbiAgICBvZmZzZXQ6IDAsXG4gICAgbWluRGF0ZSxcbiAgICBtYXhEYXRlLFxuICB9KTtcbiAgY29uc3Qgbm93ID0gdXNlTWVtbygoKSA9PiBzdGFydE9mRGF5KG5ldyBEYXRlKCkpLCBbXSk7XG5cbiAgY29uc3QgZm9ybWF0V2Vla2RheSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgd2Vla2RheTogJ3Nob3J0JyB9KTtcbiAgICByZXR1cm4gKHdlZWtEYXk6IG51bWJlcikgPT5cbiAgICAgIGZvcm1hdChuZXcgRGF0ZShEYXRlLlVUQygyMDIxLCA3LCAoKHdlZWtEYXkgKyBmaXJzdERheU9mV2VlaykgJSA3KSArIDEpKSk7XG4gIH0sIFtsb2NhbGUsIGZpcnN0RGF5T2ZXZWVrXSk7XG5cbiAgdXNlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICBzZXREYXRlSW5WaWV3KFxuICAgICAgICB2YWx1ZSA9PT0gbnVsbCA/IGRlZmF1bHREYXRlSW5WaWV3ID8/IG1vdW50VGltZSA6IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogdmFsdWUubWF4LFxuICAgICAgKSxcbiAgICBbZ2V0VmFsdWVGb3JDb21wYXJpc29uKHZhbHVlKSwgZ2V0VmFsdWVGb3JDb21wYXJpc29uKGRlZmF1bHREYXRlSW5WaWV3KSwgbW91bnRUaW1lXSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcmFuZ2VTZWxlY3QpIHtcbiAgICAgIHNldERpcnR5KHVuZGVmaW5lZCk7XG4gICAgfVxuICB9LCBbcmFuZ2VTZWxlY3RdKTtcblxuICBmdW5jdGlvbiBzZXQobWluPzogRGF0ZSwgbWF4PzogRGF0ZSwgZWRpdD86ICdtaW4nIHwgJ21heCcpIHtcbiAgICBpZiAoIXJhbmdlU2VsZWN0KSB7XG4gICAgICBvbkNoYW5nZShtaW4gPz8gbnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG1pbiAmJiBtYXggJiYgbWluID4gbWF4KSB7XG4gICAgICBpZiAoZWRpdCA9PT0gJ21pbicpIHtcbiAgICAgICAgbWF4ID0gbWluO1xuICAgICAgfSBlbHNlIGlmIChlZGl0ID09PSAnbWF4Jykge1xuICAgICAgICBtaW4gPSBtYXg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbbWluLCBtYXhdID0gW21heCwgbWluXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW1pbiA9PT0gIW1heCkge1xuICAgICAgc2V0RGlydHkodW5kZWZpbmVkKTtcbiAgICAgIG9uQ2hhbmdlKG1pbiAmJiBtYXggPyB7IG1pbiwgbWF4OiBlbmRPZkRheShtYXgpIH0gOiBudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0RGlydHkoeyBtaW4sIG1heCB9KTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBmb3JtYXRNb250aCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgbW9udGg6ICdsb25nJyB9KTtcbiAgICByZXR1cm4gKG1vbnRoOiBudW1iZXIpID0+IGZvcm1hdChuZXcgRGF0ZSgyMDIxLCBtb250aCkpO1xuICB9LCBbbG9jYWxlXSk7XG5cbiAgY29uc3QgZm9ybWF0WWVhciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHsgZm9ybWF0IH0gPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgeWVhcjogJ251bWVyaWMnIH0pO1xuICAgIHJldHVybiAoeWVhcjogbnVtYmVyKSA9PiBmb3JtYXQobmV3IERhdGUoeWVhciwgMCwgMSkpO1xuICB9LCBbbG9jYWxlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNzcz17Y3NzVmFyaWFibGVzfT5cbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXt7XG4gICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgIGFsaWduSXRlbXM6ICdiYXNlbGluZScsXG4gICAgICAgICAgZ2FwOiAndmFyKC0tc3BhY2luZyknLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8RGF0ZUlucHV0XG4gICAgICAgICAgdmFsdWU9e21pbiA/PyBudWxsfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZGF0ZSkgPT4gc2V0KGRhdGUgPz8gdW5kZWZpbmVkLCBtYXgsICdtaW4nKX1cbiAgICAgICAgICBsb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgLz5cblxuICAgICAgICB7cmFuZ2VTZWxlY3QgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICB7JyAtICd9XG4gICAgICAgICAgICA8RGF0ZUlucHV0XG4gICAgICAgICAgICAgIHZhbHVlPXttYXggPz8gbnVsbH1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiBzZXQobWluLCBkYXRlID8/IHVuZGVmaW5lZCwgJ21heCcpfVxuICAgICAgICAgICAgICBsb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAge2NhbGVuZGFycy5tYXAoKHsgbW9udGgsIHllYXIsIHdlZWtzIH0pID0+IChcbiAgICAgICAgPGRpdiBrZXk9e2Ake21vbnRofSR7eWVhcn1gfSBjc3M9e3sgZGlzcGxheTogJ2dyaWQnIH19PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICBtYXJnaW46ICdjYWxjKHZhcigtLXNwYWNpbmcpICogNCkgMCcsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICAgICAgZ3JpZEF1dG9GbG93OiAnY29sdW1uJyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxJY29uQnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4uZ2V0QmFja1Byb3BzKHsgY2FsZW5kYXJzIH0pfT5cbiAgICAgICAgICAgICAgPENoZXZyb25SaWdodCBjc3M9e3sgdHJhbnNmb3JtOiAncm90YXRlM2QoMCwgMCwgMSwgMTgwZGVnKScgfX0gLz5cbiAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cblxuICAgICAgICAgICAgPGRpdiBjc3M9e3sgZGlzcGxheTogJ2ZsZXgnIH19PlxuICAgICAgICAgICAgICB7Zm9ybWF0TW9udGgobW9udGgpfSB7Zm9ybWF0WWVhcih5ZWFyKX1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8SWNvbkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgey4uLmdldEZvcndhcmRQcm9wcyh7IGNhbGVuZGFycyB9KX0+XG4gICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHQgLz5cbiAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdncmlkJyxcbiAgICAgICAgICAgICAgZ3JpZFRlbXBsYXRlQ29sdW1uczogJ3JlcGVhdCg4LCBtYXgtY29udGVudCknLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2hvd0NhbGVuZGFyV2VlayA/IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAganVzdGlmeVNlbGY6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke2dyYXl9YCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFRleHQgaWQ9XCJjYWxlbmRhcldlZWtcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHt3ZWVrRGF5cy5tYXAoKF92LCB3ZWVrRGF5KSA9PiAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBrZXk9e3dlZWtEYXl9XG4gICAgICAgICAgICAgICAgY3NzPXt7XG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5U2VsZjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2Zvcm1hdFdlZWtkYXkod2Vla0RheSl9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSl9XG5cbiAgICAgICAgICAgIHt3ZWVrcy5tYXAoKHdlZWssIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHdlZWtTdGFydCA9IHdlZWtbMF0gYXMgRGF0ZU9iajtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla0VuZCA9IHdlZWtbNl0gYXMgRGF0ZU9iajtcbiAgICAgICAgICAgICAgY29uc3Qgd2Vla0Rpc2FibGVkID1cbiAgICAgICAgICAgICAgICAhcmFuZ2VTZWxlY3QgfHxcbiAgICAgICAgICAgICAgICAobWluRGF0ZSAmJiB3ZWVrRW5kLmRhdGUgPCBtaW5EYXRlKSB8fFxuICAgICAgICAgICAgICAgIChtYXhEYXRlICYmIHdlZWtTdGFydC5kYXRlID4gbWF4RGF0ZSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8RnJhZ21lbnQga2V5PXtpbmRleH0+XG4gICAgICAgICAgICAgICAgICB7c2hvd0NhbGVuZGFyV2VlayA/IChcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIGNzcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMTAsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHdlZWtEaXNhYmxlZCA/IHVuZGVmaW5lZCA6ICdwb2ludGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQ6ICdpbmhlcml0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7Z3JheX1gLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdlZWtEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pbiA9IG1pbkRhdGUgJiYgd2Vla1N0YXJ0LmRhdGUgPCBtaW5EYXRlID8gbWluRGF0ZSA6IHdlZWtTdGFydC5kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4ID0gbWF4RGF0ZSAmJiB3ZWVrRW5kLmRhdGUgPiBtYXhEYXRlID8gbWF4RGF0ZSA6IHdlZWtFbmQuZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldChtaW4sIG1heCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvblBvaW50ZXJPdmVyPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgIXdlZWtEaXNhYmxlZCAmJiBzZXRIb3ZlcmVkKHsgbWluOiB3ZWVrU3RhcnQuZGF0ZSwgbWF4OiB3ZWVrRW5kLmRhdGUgfSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgb25Qb2ludGVyT3V0PXsoKSA9PiAhd2Vla0Rpc2FibGVkICYmIHNldEhvdmVyZWQodW5kZWZpbmVkKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtnZXRDYWxlbmRhcldlZWsod2Vla0VuZC5kYXRlKX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICB7d2Vlay5tYXAoKGRhdGVPYmplY3QsIGRheUluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0ZU9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17ZGF5SW5kZXh9IC8+O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBwcmV2TW9udGgsIG5leHRNb250aCwgZGF0ZSB9ID0gZGF0ZU9iamVjdDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9kYXkgPSBzdGFydE9mRGF5KGRhdGUpLmdldFRpbWUoKSA9PT0gbm93LmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzYWJsZWQgPSAobWluRGF0ZSAmJiBkYXRlIDwgbWluRGF0ZSkgfHwgKG1heERhdGUgJiYgZGF0ZSA+IG1heERhdGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICBkYXRlLmdldFRpbWUoKSA9PT0gbWluPy5nZXRUaW1lKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAobWluICYmIG1heCAmJiBkYXRlSW50ZXJzZWN0KGRhdGUsIHsgbWluLCBtYXggfSkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmVTZWxlY3RlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgIWRpc2FibGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgKGRhdGVJbnRlcnNlY3QoZGF0ZSwgaG92ZXJlZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChtaW4gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIW1heCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBob3ZlcmVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVJbnRlcnNlY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4gPD0gaG92ZXJlZC5taW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBtaW4sIG1heDogaG92ZXJlZC5taW4gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7IG1pbjogaG92ZXJlZC5tYXgsIG1heDogbWluIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tlZCA9IGJsb2NrZWRSYW5nZXMuc29tZSgocmFuZ2UpID0+IGRhdGVJbnRlcnNlY3QoZGF0ZSwgcmFuZ2UpKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtpbmRleH0tJHtkYXlJbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtnZXREYXlDc3NTdHlsZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldk1vbnRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0TW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvZGF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlU2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5nZXREYXRlUHJvcHMoeyBkYXRlT2JqOiBkYXRlT2JqZWN0IH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluKSBzZXQobWluLCBkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNldChkYXRlLCBtYXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck92ZXI9eygpID0+IHNldEhvdmVyZWQoeyBtaW46IGRhdGUsIG1heDogZGF0ZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck91dD17KCkgPT4gc2V0SG92ZXJlZCh1bmRlZmluZWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtkYXRlLmdldERhdGUoKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApKX1cblxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e3tcbiAgICAgICAgICBtYXJnaW5Ub3A6ICd2YXIoLS1zcGFjaW5nKScsXG4gICAgICAgICAgZGlzcGxheTogJ2dyaWQnLFxuICAgICAgICAgIGdyaWRBdXRvRmxvdzogJ2NvbHVtbicsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7cmVzb2x2ZWRRdWlja09wdGlvbnN9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdfQ== */"), onClick: () => {
|
|
1241
1241
|
if (weekDisabled) {
|
|
1242
1242
|
return;
|
|
1243
1243
|
}
|
|
1244
1244
|
const min2 = minDate && weekStart.date < minDate ? minDate : weekStart.date;
|
|
1245
1245
|
const max2 = maxDate && weekEnd.date > maxDate ? maxDate : weekEnd.date;
|
|
1246
1246
|
set(min2, max2);
|
|
1247
|
-
},
|
|
1247
|
+
}, onPointerOver: () => !weekDisabled && setHovered({
|
|
1248
|
+
min: weekStart.date,
|
|
1249
|
+
max: weekEnd.date
|
|
1250
|
+
}), onPointerOut: () => !weekDisabled && setHovered(void 0), children: getCalendarWeek(weekEnd.date) }) : /* @__PURE__ */ jsxRuntime.jsx("div", {}),
|
|
1248
1251
|
week.map((dateObject, dayIndex) => {
|
|
1249
1252
|
if (!dateObject) {
|
|
1250
1253
|
return /* @__PURE__ */ jsxRuntime.jsx("div", {}, dayIndex);
|
|
@@ -1260,11 +1263,11 @@ function DatePicker(props) {
|
|
|
1260
1263
|
min,
|
|
1261
1264
|
max
|
|
1262
1265
|
});
|
|
1263
|
-
const preSelected = !selected && !disabled && (date
|
|
1266
|
+
const preSelected = !selected && !disabled && (dateIntersect(date, hovered) || min && !max && hovered && dateIntersect(date, min <= hovered.min ? {
|
|
1264
1267
|
min,
|
|
1265
|
-
max: hovered
|
|
1268
|
+
max: hovered.min
|
|
1266
1269
|
} : {
|
|
1267
|
-
min: hovered,
|
|
1270
|
+
min: hovered.max,
|
|
1268
1271
|
max: min
|
|
1269
1272
|
}));
|
|
1270
1273
|
const blocked = blockedRanges.some((range) => dateIntersect(date, range));
|
|
@@ -1287,7 +1290,10 @@ function DatePicker(props) {
|
|
|
1287
1290
|
} else {
|
|
1288
1291
|
set(date);
|
|
1289
1292
|
}
|
|
1290
|
-
}, onPointerOver: () => setHovered(
|
|
1293
|
+
}, onPointerOver: () => setHovered({
|
|
1294
|
+
min: date,
|
|
1295
|
+
max: date
|
|
1296
|
+
}), onPointerOut: () => setHovered(void 0), disabled, children: date.getDate() }, `${index}-${dayIndex}`);
|
|
1291
1297
|
})
|
|
1292
1298
|
] }, index);
|
|
1293
1299
|
})
|
|
@@ -2569,7 +2575,7 @@ var _ref$6 = process.env.NODE_ENV === "production" ? {
|
|
|
2569
2575
|
} : {
|
|
2570
2576
|
name: "lhgk4n-ColumnHeader",
|
|
2571
2577
|
styles: "flex:1;label:ColumnHeader;",
|
|
2572
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2NvbHVtbkhlYWRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd05XIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2NvbHVtbkhlYWRlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjYXN0RHJhZnQgfSBmcm9tICdpbW1lcic7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFN0b3JlU2NvcGUgfSBmcm9tICdzY2h1bW1hci1zdGF0ZS9yZWFjdCc7XG5pbXBvcnQgeyB1c2VDb2x1bW5Db250ZXh0LCB1c2VUYWJsZUNvbnRleHQgfSBmcm9tICcuLi9taXNjL3RhYmxlQ29udGV4dCc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJy4uL2hvb2tzL3VzZVRoZW1lJztcbmltcG9ydCB7IGN4IH0gZnJvbSAnLi4vbWlzYy9oZWxwZXJzJztcbmltcG9ydCB7IGRlZmF1bHRDbGFzc2VzIH0gZnJvbSAnLi4vdGhlbWUvZGVmYXVsdFRoZW1lL2RlZmF1bHRDbGFzc2VzJztcbmltcG9ydCB0eXBlIHsgSWQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBGaWx0ZXJDb250cm9sIH0gZnJvbSAnLi9maWx0ZXJDb250cm9sJztcbmltcG9ydCB7IFJlc2l6ZUhhbmRsZSB9IGZyb20gJy4vcmVzaXplSGFuZGxlJztcbmltcG9ydCB7IFNvcnRDb21wb25lbnQgfSBmcm9tICcuL3NvcnRDb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgQ29sdW1uSGVhZGVyQ29udGV4dCA9IG5ldyBTdG9yZVNjb3BlKHtcbiAgaXRlbXM6IG5ldyBNYXA8SWQsIEhUTUxEaXZFbGVtZW50PigpLFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBDb2x1bW5IZWFkZXIoKSB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGNvbHVtbklkID0gdXNlQ29sdW1uQ29udGV4dCgpO1xuICBjb25zdCB0YWJsZSA9IHVzZVRhYmxlQ29udGV4dCgpO1xuICBjb25zdCBlbmFibGVkID0gdGFibGUudXNlU3RhdGUoKHN0YXRlKSA9PiBzdGF0ZS5wcm9wcy5lbmFibGVDb2x1bW5SZW9yZGVyKTtcbiAgY29uc3QgY29sdW1uU3R5bGVPdmVycmlkZSA9IHRhYmxlLnVzZVN0YXRlKChzdGF0ZSkgPT4gc3RhdGUuY29sdW1uU3R5bGVPdmVycmlkZS5nZXQoY29sdW1uSWQpLCB7XG4gICAgdGhyb3R0bGU6IDE2LFxuICB9KTtcbiAgY29uc3Qgc3RpY2t5SGVhZGVyID0gdGFibGUudXNlU3RhdGUoKHN0YXRlKSA9PiBzdGF0ZS5wcm9wcy5zdGlja3lIZWFkZXIpO1xuICBjb25zdCBjbGFzc2VzID0gdXNlVGhlbWUoKHRoZW1lKSA9PiB0aGVtZS5jbGFzc2VzPy5oZWFkZXJDZWxsKTtcbiAgY29uc3Qgc3R5bGVzID0gdXNlVGhlbWUoKHRoZW1lKSA9PiB0aGVtZS5zdHlsZXM/LmhlYWRlckNlbGwpO1xuXG4gIGNvbnN0IHsgaGVhZGVyLCBjb2x1bW5DbGFzc2VzLCBjb2x1bW5TdHlsZXMgfSA9IHRhYmxlLnVzZVN0YXRlKChzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGNvbHVtbiA9IHN0YXRlLmFjdGl2ZUNvbHVtbnMuZmluZCgoY29sdW1uKSA9PiBjb2x1bW4uaWQgPT09IGNvbHVtbklkKTtcbiAgICByZXR1cm4ge1xuICAgICAgaGVhZGVyOiBjb2x1bW4/LmhlYWRlcixcbiAgICAgIGNvbHVtbkNsYXNzZXM6IGNvbHVtbj8uY2xhc3Nlcz8uaGVhZGVyQ2VsbCxcbiAgICAgIGNvbHVtblN0eWxlczogY29sdW1uPy5zdHlsZXM/LmhlYWRlckNlbGwsXG4gICAgfTtcbiAgfSk7XG5cbiAgY29uc3Qgc3RvcmUgPSBDb2x1bW5IZWFkZXJDb250ZXh0LnVzZVN0b3JlKCk7XG4gIGNvbnN0IGRyYWdnaW5nU3RhcnQgPSB1c2VSZWY8eyBtb3VzZVg6IG51bWJlcjsgYm91bmRzOiBET01SZWN0IH0+KCk7XG4gIGNvbnN0IGNsb25lID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xuXG4gIC8vIFRyYWNrIGVhY2ggaGVhZGVycyBkaXYgaW4gYSBzdG9yZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGRpdiA9IHJlZi5jdXJyZW50O1xuICAgIGlmICghZGl2KSByZXR1cm47XG5cbiAgICBzdG9yZS51cGRhdGUoKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5pdGVtcy5zZXQoY29sdW1uSWQsIGNhc3REcmFmdChkaXYpKTtcbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzdG9yZS51cGRhdGUoKHN0YXRlKSA9PiB7XG4gICAgICAgIHN0YXRlLml0ZW1zLmRlbGV0ZShjb2x1bW5JZCk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9LCBbc3RvcmUsIGNvbHVtbklkXSk7XG5cbiAgLy8gQ2FsY3VsYXRlIHdoaWNoIGluZGV4IHRoZSBjdXJyZW50IGhlYWRlciB3b3VsZCBnZXQsIGdpdmVuIHRoZSBjdXJyZW50IG9mZnNldFxuICBmdW5jdGlvbiBjYWxjVGFyZ2V0SW5kZXgob2Zmc2V0TGVmdDogbnVtYmVyKSB7XG4gICAgY29uc3QgY29scyA9IHRhYmxlXG4gICAgICAuZ2V0U3RhdGUoKVxuICAgICAgLmNvbHVtbk9yZGVyLm1hcCgoaWQpID0+ICh7IGlkLCBkaXY6IHN0b3JlLmdldFN0YXRlKCkuaXRlbXMuZ2V0KGlkKSB9KSk7XG5cbiAgICBjb25zdCBvdGhlckNvbHMgPSBjb2xzLmZpbHRlcigoY29sKSA9PiBjb2wuaWQgIT09IGNvbHVtbklkKTtcblxuICAgIGNvbnN0IGZpcnN0T2Zmc2V0bGVmdCA9IGNvbHMuZmluZCgoY29sKSA9PiBjb2wuZGl2KT8uZGl2Py5vZmZzZXRMZWZ0ID8/IDA7XG5cbiAgICBsZXQgc3VtID0gMDtcbiAgICBjb25zdCB0YXJnZXRJbmRleCA9IG90aGVyQ29scy5maW5kSW5kZXgoKGNvbCkgPT4ge1xuICAgICAgY29uc3Qgd2lkdGggPSBjb2wuZGl2Py5vZmZzZXRXaWR0aCA/PyAwO1xuICAgICAgaWYgKHN1bSArIHdpZHRoIC8gMiA+IG9mZnNldExlZnQgLSBmaXJzdE9mZnNldGxlZnQpIHJldHVybiB0cnVlO1xuICAgICAgc3VtICs9IHdpZHRoO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRhcmdldEluZGV4ID09PSAtMSA/IG90aGVyQ29scy5sZW5ndGggOiB0YXJnZXRJbmRleDtcbiAgfVxuXG4gIC8vIFdoZW4gc3RhcnRpbmcgY2xpY2tpbmc6IFJlY29yZCBpbml0aWFsIG1vdXNlIGFuZCBkaXYncyBib3VuZHNcbiAgZnVuY3Rpb24gb25Qb2ludGVyRG93bihldmVudDogUmVhY3QuUG9pbnRlckV2ZW50KSB7XG4gICAgY29uc3QgZGl2ID0gcmVmLmN1cnJlbnQ7XG4gICAgaWYgKCFkaXYpIHJldHVybjtcbiAgICBkcmFnZ2luZ1N0YXJ0LmN1cnJlbnQgPSB7IG1vdXNlWDogZXZlbnQuY2xpZW50WCwgYm91bmRzOiBkaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgfTtcbiAgfVxuXG4gIC8vIFdoZW4gbW91c2UgbW92ZXMgd2hpbGUgY2xpY2tlZDogQ2FsY3VsYXRlIHRyYW5zZm9ybXNcbiAgZnVuY3Rpb24gb25Qb2ludGVyTW92ZShldmVudDogUmVhY3QuUG9pbnRlckV2ZW50KSB7XG4gICAgdGFibGUudXBkYXRlKChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgZGl2ID0gcmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoXG4gICAgICAgICFkaXYgfHxcbiAgICAgICAgZHJhZ2dpbmdTdGFydC5jdXJyZW50ID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgTWF0aC5hYnMoZXZlbnQuY2xpZW50WCAtIGRyYWdnaW5nU3RhcnQuY3VycmVudC5tb3VzZVgpIDwgNVxuICAgICAgKVxuICAgICAgICByZXR1cm47XG5cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZGl2LnNldFBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCk7XG5cbiAgICAgIC8vIENyZWF0ZSBjbG9uZSBvZiBoZWFkZXIgZGl2IHRvIG1vdmUgYXJvdW5kIHdpdGggbW91c2VcbiAgICAgIGlmICghY2xvbmUuY3VycmVudCkge1xuICAgICAgICBjbG9uZS5jdXJyZW50ID0gZGl2LmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoY2xvbmUuY3VycmVudCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZ2V0Q29tcHV0ZWRTdHlsZShkaXYpKSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjbG9uZS5jdXJyZW50LnN0eWxlW2tleSBhcyBhbnldID0gdmFsdWU7XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAvLyBpZ25vcmVcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3QuYXNzaWduKGNsb25lLmN1cnJlbnQuc3R5bGUsIHtcbiAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICAgICAgYm94U2hhZG93OlxuICAgICAgICAgICAgJzBweCA1cHggNXB4IC0zcHggcmdiKDAgMCAwIC8gMjAlKSwgMHB4IDhweCAxMHB4IDFweCByZ2IoMCAwIDAgLyAxNCUpLCAwcHggM3B4IDE0cHggMnB4IHJnYigwIDAgMCAvIDEyJSknLFxuICAgICAgICAgIGxlZnQ6IGAke2RyYWdnaW5nU3RhcnQuY3VycmVudC5ib3VuZHMubGVmdH1weGAsXG4gICAgICAgICAgdG9wOiBgJHtkcmFnZ2luZ1N0YXJ0LmN1cnJlbnQuYm91bmRzLnRvcH1weGAsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRpdi5zdHlsZS5jb2xvciA9ICdyZ2JhKDAsIDAsIDAsIDAuMiknO1xuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgY2xvbmUncyBwb3NpdGlvbiBlYWNoIHRpbWVcbiAgICAgIGNsb25lLmN1cnJlbnQuc3R5bGUubGVmdCA9IGAke1xuICAgICAgICBkcmFnZ2luZ1N0YXJ0LmN1cnJlbnQuYm91bmRzLmxlZnQgKyBldmVudC5jbGllbnRYIC0gZHJhZ2dpbmdTdGFydC5jdXJyZW50Lm1vdXNlWFxuICAgICAgfXB4YDtcblxuICAgICAgLy8gQ2FsY3VsYXRlIHRhcmdldCBpbmRleFxuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5jb2x1bW5PcmRlci5pbmRleE9mKGNvbHVtbklkKTtcbiAgICAgIGNvbnN0IHRhcmdldEluZGV4ID0gY2FsY1RhcmdldEluZGV4KFxuICAgICAgICBkaXYub2Zmc2V0TGVmdCArIGV2ZW50LmNsaWVudFggLSBkcmFnZ2luZ1N0YXJ0LmN1cnJlbnQubW91c2VYLFxuICAgICAgKTtcblxuICAgICAgLy8gQXBwbHkgdHJhbnNmb3JtcyB0byBlYWNoIGNvbHVtblxuICAgICAgY29uc3QgY29sdW1ucyA9IHRhYmxlLmdldFN0YXRlKCkuY29sdW1uT3JkZXIubWFwKChpZCwgaW5kZXgpID0+ICh7XG4gICAgICAgIGlkLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgd2lkdGg6IHN0b3JlLmdldFN0YXRlKCkuaXRlbXMuZ2V0KGlkKT8ub2Zmc2V0V2lkdGggPz8gMCxcbiAgICAgIH0pKTtcblxuICAgICAgc3RhdGUuY29sdW1uT3JkZXIuZm9yRWFjaCgoaWQsIGkpID0+IHtcbiAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgIGlmIChpID09PSBpbmRleCkge1xuICAgICAgICAgIC8vIEN1cnJlbnQgY29sdW1uOiBNb3ZlIHRvIHRhcmdldCBwb3NcbiAgICAgICAgICBpZiAodGFyZ2V0SW5kZXggPiBpbmRleCkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gY29sdW1uc1xuICAgICAgICAgICAgICAuc2xpY2UoaW5kZXggKyAxLCB0YXJnZXRJbmRleCArIDEpXG4gICAgICAgICAgICAgIC5yZWR1Y2UoKHN1bSwgY29sKSA9PiBzdW0gKyBjb2wud2lkdGgsIDApO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0SW5kZXggPCBpbmRleCkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gLWNvbHVtbnMuc2xpY2UodGFyZ2V0SW5kZXgsIGluZGV4KS5yZWR1Y2UoKHN1bSwgY29sKSA9PiBzdW0gKyBjb2wud2lkdGgsIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChpID49IHRhcmdldEluZGV4ICYmIGkgPCBpbmRleCkge1xuICAgICAgICAgIC8vIExlZnQgY29sdW1uczogTW92ZSByaWdodCB0byBtYWtlIHJvb20gaWYgbmVlZGVkXG4gICAgICAgICAgb2Zmc2V0ID0gZGl2Lm9mZnNldFdpZHRoO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPiBpbmRleCAmJiBpIDw9IHRhcmdldEluZGV4KSB7XG4gICAgICAgICAgLy8gUmlnaHQgY29sdW1uczogTW92ZSBsZWZ0IHRvIG1ha2Ugcm9vbSBpZiBuZWVkZWRcbiAgICAgICAgICBvZmZzZXQgPSAtZGl2Lm9mZnNldFdpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUuY29sdW1uU3R5bGVPdmVycmlkZS5zZXQoaWQsIHtcbiAgICAgICAgICB0cmFuc2l0aW9uOiAndHJhbnNmb3JtIDUwMG1zJyxcbiAgICAgICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGUzZCgke29mZnNldH1weCwgMCwgMClgLFxuICAgICAgICAgIHpJbmRleDogaSA9PT0gaW5kZXggPyAxIDogdW5kZWZpbmVkLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gV2hlbiByZWxlYXNpbmcgbW91c2U6IFJlc2V0IGRyYWdnaW4gc3RhdGUgYW5kIGFwcGx5IGNvbHVtbiBtb3ZlXG4gIGZ1bmN0aW9uIG9uUG9pbnRlclVwKGV2ZW50OiBSZWFjdC5Qb2ludGVyRXZlbnQpIHtcbiAgICB0YWJsZS51cGRhdGUoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBkaXYgPSByZWYuY3VycmVudDtcbiAgICAgIGlmICghZGl2IHx8IGRyYWdnaW5nU3RhcnQuY3VycmVudCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cbiAgICAgIC8vIEFwcGx5IGNvbHVtbiBtb3ZlXG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLmNvbHVtbk9yZGVyLmluZGV4T2YoY29sdW1uSWQpO1xuICAgICAgY29uc3QgdGFyZ2V0SW5kZXggPSBjYWxjVGFyZ2V0SW5kZXgoXG4gICAgICAgIGRpdi5vZmZzZXRMZWZ0ICsgZXZlbnQuY2xpZW50WCAtIGRyYWdnaW5nU3RhcnQuY3VycmVudC5tb3VzZVgsXG4gICAgICApO1xuXG4gICAgICBzdGF0ZS5jb2x1bW5PcmRlci5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgc3RhdGUuY29sdW1uT3JkZXIuc3BsaWNlKHRhcmdldEluZGV4LCAwLCBjb2x1bW5JZCk7XG5cbiAgICAgIC8vIENsZWFudXBcbiAgICAgIGNsb25lLmN1cnJlbnQ/LnJlbW92ZSgpO1xuICAgICAgZGl2LnN0eWxlLmNvbG9yID0gJyc7XG4gICAgICBzdGF0ZS5jb2x1bW5TdHlsZU92ZXJyaWRlLmNsZWFyKCk7XG4gICAgICBkcmFnZ2luZ1N0YXJ0LmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICBjbG9uZS5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y3goY2xhc3NlcywgY29sdW1uQ2xhc3Nlcyl9XG4gICAgICBjc3M9e1tcbiAgICAgICAge1xuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgIHVzZXJTZWxlY3Q6ICdub25lJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdENsYXNzZXMuaGVhZGVyQ2VsbCxcbiAgICAgICAgc3R5bGVzLFxuICAgICAgICBjb2x1bW5TdHlsZXMsXG4gICAgICAgIHN0aWNreUhlYWRlciAmJiBkZWZhdWx0Q2xhc3Nlcy5zdGlja3ksXG4gICAgICAgIHN0aWNreUhlYWRlciBpbnN0YW5jZW9mIE9iamVjdCAmJiBzdGlja3lIZWFkZXIsXG4gICAgICBdfVxuICAgICAgc3R5bGU9e2NvbHVtblN0eWxlT3ZlcnJpZGV9XG4gICAgICBvblBvaW50ZXJEb3duPXtlbmFibGVkID8gb25Qb2ludGVyRG93biA6IHVuZGVmaW5lZH1cbiAgICAgIG9uUG9pbnRlck1vdmU9e2VuYWJsZWQgPyBvblBvaW50ZXJNb3ZlIDogdW5kZWZpbmVkfVxuICAgICAgb25Qb2ludGVyVXA9e2VuYWJsZWQgPyBvblBvaW50ZXJVcCA6IHVuZGVmaW5lZH1cbiAgICA+XG4gICAgICA8U29ydENvbXBvbmVudD57aGVhZGVyfTwvU29ydENvbXBvbmVudD5cbiAgICAgIDxkaXYgY3NzPXt7IGZsZXg6IDEgfX0gLz5cbiAgICAgIDxGaWx0ZXJDb250cm9sIC8+XG4gICAgICA8UmVzaXplSGFuZGxlIC8+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0= */",
|
|
2578
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2NvbHVtbkhlYWRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBd05XIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2NvbHVtbkhlYWRlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjYXN0RHJhZnQgfSBmcm9tICdpbW1lcic7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFN0b3JlU2NvcGUgfSBmcm9tICdzY2h1bW1hci1zdGF0ZS9yZWFjdCc7XG5pbXBvcnQgeyB1c2VDb2x1bW5Db250ZXh0LCB1c2VUYWJsZUNvbnRleHQgfSBmcm9tICcuLi9taXNjL3RhYmxlQ29udGV4dCc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJy4uL2hvb2tzL3VzZVRoZW1lJztcbmltcG9ydCB7IGN4IH0gZnJvbSAnLi4vbWlzYy9oZWxwZXJzJztcbmltcG9ydCB7IGRlZmF1bHRDbGFzc2VzIH0gZnJvbSAnLi4vdGhlbWUvZGVmYXVsdFRoZW1lL2RlZmF1bHRDbGFzc2VzJztcbmltcG9ydCB0eXBlIHsgSWQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBGaWx0ZXJDb250cm9sIH0gZnJvbSAnLi9maWx0ZXJDb250cm9sJztcbmltcG9ydCB7IFJlc2l6ZUhhbmRsZSB9IGZyb20gJy4vcmVzaXplSGFuZGxlJztcbmltcG9ydCB7IFNvcnRDb21wb25lbnQgfSBmcm9tICcuL3NvcnRDb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgQ29sdW1uSGVhZGVyQ29udGV4dCA9IG5ldyBTdG9yZVNjb3BlKHtcbiAgaXRlbXM6IG5ldyBNYXA8SWQsIEhUTUxEaXZFbGVtZW50PigpLFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBDb2x1bW5IZWFkZXIoKSB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGNvbHVtbklkID0gdXNlQ29sdW1uQ29udGV4dCgpO1xuICBjb25zdCB0YWJsZSA9IHVzZVRhYmxlQ29udGV4dCgpO1xuICBjb25zdCBlbmFibGVkID0gdGFibGUudXNlU3RhdGUoKHN0YXRlKSA9PiBzdGF0ZS5wcm9wcy5lbmFibGVDb2x1bW5SZW9yZGVyKTtcbiAgY29uc3QgY29sdW1uU3R5bGVPdmVycmlkZSA9IHRhYmxlLnVzZVN0YXRlKChzdGF0ZSkgPT4gc3RhdGUuY29sdW1uU3R5bGVPdmVycmlkZS5nZXQoY29sdW1uSWQpLCB7XG4gICAgdGhyb3R0bGU6IDE2LFxuICB9KTtcbiAgY29uc3Qgc3RpY2t5SGVhZGVyID0gdGFibGUudXNlU3RhdGUoKHN0YXRlKSA9PiBzdGF0ZS5wcm9wcy5zdGlja3lIZWFkZXIpO1xuICBjb25zdCBjbGFzc2VzID0gdXNlVGhlbWUoKHRoZW1lKSA9PiB0aGVtZS5jbGFzc2VzPy5oZWFkZXJDZWxsKTtcbiAgY29uc3Qgc3R5bGVzID0gdXNlVGhlbWUoKHRoZW1lKSA9PiB0aGVtZS5zdHlsZXM/LmhlYWRlckNlbGwpO1xuXG4gIGNvbnN0IHsgaGVhZGVyLCBjb2x1bW5DbGFzc2VzLCBjb2x1bW5TdHlsZXMgfSA9IHRhYmxlLnVzZVN0YXRlKChzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGNvbHVtbiA9IHN0YXRlLmFjdGl2ZUNvbHVtbnMuZmluZCgoY29sdW1uKSA9PiBjb2x1bW4uaWQgPT09IGNvbHVtbklkKTtcbiAgICByZXR1cm4ge1xuICAgICAgaGVhZGVyOiBjb2x1bW4/LmhlYWRlcixcbiAgICAgIGNvbHVtbkNsYXNzZXM6IGNvbHVtbj8uY2xhc3Nlcz8uaGVhZGVyQ2VsbCxcbiAgICAgIGNvbHVtblN0eWxlczogY29sdW1uPy5zdHlsZXM/LmhlYWRlckNlbGwsXG4gICAgfTtcbiAgfSk7XG5cbiAgY29uc3Qgc3RvcmUgPSBDb2x1bW5IZWFkZXJDb250ZXh0LnVzZVN0b3JlKCk7XG4gIGNvbnN0IGRyYWdnaW5nU3RhcnQgPSB1c2VSZWY8eyBtb3VzZVg6IG51bWJlcjsgYm91bmRzOiBET01SZWN0IH0+KCk7XG4gIGNvbnN0IGNsb25lID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xuXG4gIC8vIFRyYWNrIGVhY2ggaGVhZGVycyBkaXYgaW4gYSBzdG9yZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGRpdiA9IHJlZi5jdXJyZW50O1xuICAgIGlmICghZGl2KSByZXR1cm47XG5cbiAgICBzdG9yZS51cGRhdGUoKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5pdGVtcy5zZXQoY29sdW1uSWQsIGNhc3REcmFmdChkaXYpKTtcbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzdG9yZS51cGRhdGUoKHN0YXRlKSA9PiB7XG4gICAgICAgIHN0YXRlLml0ZW1zLmRlbGV0ZShjb2x1bW5JZCk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9LCBbc3RvcmUsIGNvbHVtbklkXSk7XG5cbiAgLy8gQ2FsY3VsYXRlIHdoaWNoIGluZGV4IHRoZSBjdXJyZW50IGhlYWRlciB3b3VsZCBnZXQsIGdpdmVuIHRoZSBjdXJyZW50IG9mZnNldFxuICBmdW5jdGlvbiBjYWxjVGFyZ2V0SW5kZXgob2Zmc2V0TGVmdDogbnVtYmVyKSB7XG4gICAgY29uc3QgY29scyA9IHRhYmxlXG4gICAgICAuZ2V0U3RhdGUoKVxuICAgICAgLmNvbHVtbk9yZGVyLm1hcCgoaWQpID0+ICh7IGlkLCBkaXY6IHN0b3JlLmdldFN0YXRlKCkuaXRlbXMuZ2V0KGlkKSB9KSk7XG5cbiAgICBjb25zdCBvdGhlckNvbHMgPSBjb2xzLmZpbHRlcigoY29sKSA9PiBjb2wuaWQgIT09IGNvbHVtbklkKTtcblxuICAgIGNvbnN0IGZpcnN0T2Zmc2V0bGVmdCA9IGNvbHMuZmluZCgoY29sKSA9PiBjb2wuZGl2KT8uZGl2Py5vZmZzZXRMZWZ0ID8/IDA7XG5cbiAgICBsZXQgc3VtID0gMDtcbiAgICBjb25zdCB0YXJnZXRJbmRleCA9IG90aGVyQ29scy5maW5kSW5kZXgoKGNvbCkgPT4ge1xuICAgICAgY29uc3Qgd2lkdGggPSBjb2wuZGl2Py5vZmZzZXRXaWR0aCA/PyAwO1xuICAgICAgaWYgKHN1bSArIHdpZHRoIC8gMiA+IG9mZnNldExlZnQgLSBmaXJzdE9mZnNldGxlZnQpIHJldHVybiB0cnVlO1xuICAgICAgc3VtICs9IHdpZHRoO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRhcmdldEluZGV4ID09PSAtMSA/IG90aGVyQ29scy5sZW5ndGggOiB0YXJnZXRJbmRleDtcbiAgfVxuXG4gIC8vIFdoZW4gc3RhcnRpbmcgY2xpY2tpbmc6IFJlY29yZCBpbml0aWFsIG1vdXNlIGFuZCBkaXYncyBib3VuZHNcbiAgZnVuY3Rpb24gb25Qb2ludGVyRG93bihldmVudDogUmVhY3QuUG9pbnRlckV2ZW50KSB7XG4gICAgY29uc3QgZGl2ID0gcmVmLmN1cnJlbnQ7XG4gICAgaWYgKCFkaXYpIHJldHVybjtcbiAgICBkcmFnZ2luZ1N0YXJ0LmN1cnJlbnQgPSB7IG1vdXNlWDogZXZlbnQuY2xpZW50WCwgYm91bmRzOiBkaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgfTtcbiAgfVxuXG4gIC8vIFdoZW4gbW91c2UgbW92ZXMgd2hpbGUgY2xpY2tlZDogQ2FsY3VsYXRlIHRyYW5zZm9ybXNcbiAgZnVuY3Rpb24gb25Qb2ludGVyTW92ZShldmVudDogUmVhY3QuUG9pbnRlckV2ZW50KSB7XG4gICAgdGFibGUudXBkYXRlKChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgZGl2ID0gcmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoXG4gICAgICAgICFkaXYgfHxcbiAgICAgICAgZHJhZ2dpbmdTdGFydC5jdXJyZW50ID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgTWF0aC5hYnMoZXZlbnQuY2xpZW50WCAtIGRyYWdnaW5nU3RhcnQuY3VycmVudC5tb3VzZVgpIDwgNVxuICAgICAgKVxuICAgICAgICByZXR1cm47XG5cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZGl2LnNldFBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCk7XG5cbiAgICAgIC8vIENyZWF0ZSBjbG9uZSBvZiBoZWFkZXIgZGl2IHRvIG1vdmUgYXJvdW5kIHdpdGggbW91c2VcbiAgICAgIGlmICghY2xvbmUuY3VycmVudCkge1xuICAgICAgICBjbG9uZS5jdXJyZW50ID0gZGl2LmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoY2xvbmUuY3VycmVudCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZ2V0Q29tcHV0ZWRTdHlsZShkaXYpKSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjbG9uZS5jdXJyZW50LnN0eWxlW2tleSBhcyBhbnldID0gdmFsdWU7XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAvLyBpZ25vcmVcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3QuYXNzaWduKGNsb25lLmN1cnJlbnQuc3R5bGUsIHtcbiAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICAgICAgYm94U2hhZG93OlxuICAgICAgICAgICAgJzBweCA1cHggNXB4IC0zcHggcmdiKDAgMCAwIC8gMjAlKSwgMHB4IDhweCAxMHB4IDFweCByZ2IoMCAwIDAgLyAxNCUpLCAwcHggM3B4IDE0cHggMnB4IHJnYigwIDAgMCAvIDEyJSknLFxuICAgICAgICAgIGxlZnQ6IGAke2RyYWdnaW5nU3RhcnQuY3VycmVudC5ib3VuZHMubGVmdH1weGAsXG4gICAgICAgICAgdG9wOiBgJHtkcmFnZ2luZ1N0YXJ0LmN1cnJlbnQuYm91bmRzLnRvcH1weGAsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRpdi5zdHlsZS5jb2xvciA9ICdyZ2JhKDAsIDAsIDAsIDAuMiknO1xuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgY2xvbmUncyBwb3NpdGlvbiBlYWNoIHRpbWVcbiAgICAgIGNsb25lLmN1cnJlbnQuc3R5bGUubGVmdCA9IGAke1xuICAgICAgICBkcmFnZ2luZ1N0YXJ0LmN1cnJlbnQuYm91bmRzLmxlZnQgKyBldmVudC5jbGllbnRYIC0gZHJhZ2dpbmdTdGFydC5jdXJyZW50Lm1vdXNlWFxuICAgICAgfXB4YDtcblxuICAgICAgLy8gQ2FsY3VsYXRlIHRhcmdldCBpbmRleFxuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5jb2x1bW5PcmRlci5pbmRleE9mKGNvbHVtbklkKTtcbiAgICAgIGNvbnN0IHRhcmdldEluZGV4ID0gY2FsY1RhcmdldEluZGV4KFxuICAgICAgICBkaXYub2Zmc2V0TGVmdCArIGV2ZW50LmNsaWVudFggLSBkcmFnZ2luZ1N0YXJ0LmN1cnJlbnQubW91c2VYLFxuICAgICAgKTtcblxuICAgICAgLy8gQXBwbHkgdHJhbnNmb3JtcyB0byBlYWNoIGNvbHVtblxuICAgICAgY29uc3QgY29sdW1ucyA9IHRhYmxlLmdldFN0YXRlKCkuY29sdW1uT3JkZXIubWFwKChpZCwgaW5kZXgpID0+ICh7XG4gICAgICAgIGlkLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgd2lkdGg6IHN0b3JlLmdldFN0YXRlKCkuaXRlbXMuZ2V0KGlkKT8ub2Zmc2V0V2lkdGggPz8gMCxcbiAgICAgIH0pKTtcblxuICAgICAgc3RhdGUuY29sdW1uT3JkZXIuZm9yRWFjaCgoaWQsIGkpID0+IHtcbiAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgIGlmIChpID09PSBpbmRleCkge1xuICAgICAgICAgIC8vIEN1cnJlbnQgY29sdW1uOiBNb3ZlIHRvIHRhcmdldCBwb3NcbiAgICAgICAgICBpZiAodGFyZ2V0SW5kZXggPiBpbmRleCkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gY29sdW1uc1xuICAgICAgICAgICAgICAuc2xpY2UoaW5kZXggKyAxLCB0YXJnZXRJbmRleCArIDEpXG4gICAgICAgICAgICAgIC5yZWR1Y2UoKHN1bSwgY29sKSA9PiBzdW0gKyBjb2wud2lkdGgsIDApO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0SW5kZXggPCBpbmRleCkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gLWNvbHVtbnMuc2xpY2UodGFyZ2V0SW5kZXgsIGluZGV4KS5yZWR1Y2UoKHN1bSwgY29sKSA9PiBzdW0gKyBjb2wud2lkdGgsIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChpID49IHRhcmdldEluZGV4ICYmIGkgPCBpbmRleCkge1xuICAgICAgICAgIC8vIExlZnQgY29sdW1uczogTW92ZSByaWdodCB0byBtYWtlIHJvb20gaWYgbmVlZGVkXG4gICAgICAgICAgb2Zmc2V0ID0gZGl2Lm9mZnNldFdpZHRoO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPiBpbmRleCAmJiBpIDw9IHRhcmdldEluZGV4KSB7XG4gICAgICAgICAgLy8gUmlnaHQgY29sdW1uczogTW92ZSBsZWZ0IHRvIG1ha2Ugcm9vbSBpZiBuZWVkZWRcbiAgICAgICAgICBvZmZzZXQgPSAtZGl2Lm9mZnNldFdpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUuY29sdW1uU3R5bGVPdmVycmlkZS5zZXQoaWQsIHtcbiAgICAgICAgICB0cmFuc2l0aW9uOiAndHJhbnNmb3JtIDUwMG1zJyxcbiAgICAgICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGUzZCgke29mZnNldH1weCwgMCwgMClgLFxuICAgICAgICAgIHpJbmRleDogaSA9PT0gaW5kZXggPyAxIDogdW5kZWZpbmVkLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gV2hlbiByZWxlYXNpbmcgbW91c2U6IFJlc2V0IGRyYWdnaW4gc3RhdGUgYW5kIGFwcGx5IGNvbHVtbiBtb3ZlXG4gIGZ1bmN0aW9uIG9uUG9pbnRlclVwKGV2ZW50OiBSZWFjdC5Qb2ludGVyRXZlbnQpIHtcbiAgICB0YWJsZS51cGRhdGUoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBkaXYgPSByZWYuY3VycmVudDtcbiAgICAgIGlmICghZGl2IHx8IGRyYWdnaW5nU3RhcnQuY3VycmVudCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cbiAgICAgIC8vIEFwcGx5IGNvbHVtbiBtb3ZlXG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLmNvbHVtbk9yZGVyLmluZGV4T2YoY29sdW1uSWQpO1xuICAgICAgY29uc3QgdGFyZ2V0SW5kZXggPSBjYWxjVGFyZ2V0SW5kZXgoXG4gICAgICAgIGRpdi5vZmZzZXRMZWZ0ICsgZXZlbnQuY2xpZW50WCAtIGRyYWdnaW5nU3RhcnQuY3VycmVudC5tb3VzZVgsXG4gICAgICApO1xuXG4gICAgICBzdGF0ZS5jb2x1bW5PcmRlci5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgc3RhdGUuY29sdW1uT3JkZXIuc3BsaWNlKHRhcmdldEluZGV4LCAwLCBjb2x1bW5JZCk7XG5cbiAgICAgIC8vIENsZWFudXBcbiAgICAgIGNsb25lLmN1cnJlbnQ/LnJlbW92ZSgpO1xuICAgICAgZGl2LnN0eWxlLmNvbG9yID0gJyc7XG4gICAgICBzdGF0ZS5jb2x1bW5TdHlsZU92ZXJyaWRlLmNsZWFyKCk7XG4gICAgICBkcmFnZ2luZ1N0YXJ0LmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICBjbG9uZS5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y3goY2xhc3NlcywgY29sdW1uQ2xhc3Nlcyl9XG4gICAgICBjc3M9e1tcbiAgICAgICAgZGVmYXVsdENsYXNzZXMuaGVhZGVyQ2VsbCxcbiAgICAgICAge1xuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgIHVzZXJTZWxlY3Q6ICdub25lJyxcbiAgICAgICAgfSxcbiAgICAgICAgc3RpY2t5SGVhZGVyICYmIGRlZmF1bHRDbGFzc2VzLnN0aWNreSxcbiAgICAgICAgc3RpY2t5SGVhZGVyIGluc3RhbmNlb2YgT2JqZWN0ICYmIHN0aWNreUhlYWRlcixcbiAgICAgICAgc3R5bGVzLFxuICAgICAgICBjb2x1bW5TdHlsZXMsXG4gICAgICBdfVxuICAgICAgc3R5bGU9e2NvbHVtblN0eWxlT3ZlcnJpZGV9XG4gICAgICBvblBvaW50ZXJEb3duPXtlbmFibGVkID8gb25Qb2ludGVyRG93biA6IHVuZGVmaW5lZH1cbiAgICAgIG9uUG9pbnRlck1vdmU9e2VuYWJsZWQgPyBvblBvaW50ZXJNb3ZlIDogdW5kZWZpbmVkfVxuICAgICAgb25Qb2ludGVyVXA9e2VuYWJsZWQgPyBvblBvaW50ZXJVcCA6IHVuZGVmaW5lZH1cbiAgICA+XG4gICAgICA8U29ydENvbXBvbmVudD57aGVhZGVyfTwvU29ydENvbXBvbmVudD5cbiAgICAgIDxkaXYgY3NzPXt7IGZsZXg6IDEgfX0gLz5cbiAgICAgIDxGaWx0ZXJDb250cm9sIC8+XG4gICAgICA8UmVzaXplSGFuZGxlIC8+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0= */",
|
|
2573
2579
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__$6
|
|
2574
2580
|
};
|
|
2575
2581
|
function ColumnHeader() {
|
|
@@ -2720,7 +2726,7 @@ function ColumnHeader() {
|
|
|
2720
2726
|
clone.current = void 0;
|
|
2721
2727
|
});
|
|
2722
2728
|
}
|
|
2723
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: cx(classes, columnClasses), css: ["position:relative;user-select:none;", tableTheme.defaultClasses.headerCell, styles, columnStyles, stickyHeader && tableTheme.defaultClasses.sticky, stickyHeader instanceof Object && stickyHeader, process.env.NODE_ENV === "production" ? "" : ";label:ColumnHeader;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2NvbHVtbkhlYWRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdU1NIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2NvbHVtbkhlYWRlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjYXN0RHJhZnQgfSBmcm9tICdpbW1lcic7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFN0b3JlU2NvcGUgfSBmcm9tICdzY2h1bW1hci1zdGF0ZS9yZWFjdCc7XG5pbXBvcnQgeyB1c2VDb2x1bW5Db250ZXh0LCB1c2VUYWJsZUNvbnRleHQgfSBmcm9tICcuLi9taXNjL3RhYmxlQ29udGV4dCc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJy4uL2hvb2tzL3VzZVRoZW1lJztcbmltcG9ydCB7IGN4IH0gZnJvbSAnLi4vbWlzYy9oZWxwZXJzJztcbmltcG9ydCB7IGRlZmF1bHRDbGFzc2VzIH0gZnJvbSAnLi4vdGhlbWUvZGVmYXVsdFRoZW1lL2RlZmF1bHRDbGFzc2VzJztcbmltcG9ydCB0eXBlIHsgSWQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBGaWx0ZXJDb250cm9sIH0gZnJvbSAnLi9maWx0ZXJDb250cm9sJztcbmltcG9ydCB7IFJlc2l6ZUhhbmRsZSB9IGZyb20gJy4vcmVzaXplSGFuZGxlJztcbmltcG9ydCB7IFNvcnRDb21wb25lbnQgfSBmcm9tICcuL3NvcnRDb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgQ29sdW1uSGVhZGVyQ29udGV4dCA9IG5ldyBTdG9yZVNjb3BlKHtcbiAgaXRlbXM6IG5ldyBNYXA8SWQsIEhUTUxEaXZFbGVtZW50PigpLFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBDb2x1bW5IZWFkZXIoKSB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGNvbHVtbklkID0gdXNlQ29sdW1uQ29udGV4dCgpO1xuICBjb25zdCB0YWJsZSA9IHVzZVRhYmxlQ29udGV4dCgpO1xuICBjb25zdCBlbmFibGVkID0gdGFibGUudXNlU3RhdGUoKHN0YXRlKSA9PiBzdGF0ZS5wcm9wcy5lbmFibGVDb2x1bW5SZW9yZGVyKTtcbiAgY29uc3QgY29sdW1uU3R5bGVPdmVycmlkZSA9IHRhYmxlLnVzZVN0YXRlKChzdGF0ZSkgPT4gc3RhdGUuY29sdW1uU3R5bGVPdmVycmlkZS5nZXQoY29sdW1uSWQpLCB7XG4gICAgdGhyb3R0bGU6IDE2LFxuICB9KTtcbiAgY29uc3Qgc3RpY2t5SGVhZGVyID0gdGFibGUudXNlU3RhdGUoKHN0YXRlKSA9PiBzdGF0ZS5wcm9wcy5zdGlja3lIZWFkZXIpO1xuICBjb25zdCBjbGFzc2VzID0gdXNlVGhlbWUoKHRoZW1lKSA9PiB0aGVtZS5jbGFzc2VzPy5oZWFkZXJDZWxsKTtcbiAgY29uc3Qgc3R5bGVzID0gdXNlVGhlbWUoKHRoZW1lKSA9PiB0aGVtZS5zdHlsZXM/LmhlYWRlckNlbGwpO1xuXG4gIGNvbnN0IHsgaGVhZGVyLCBjb2x1bW5DbGFzc2VzLCBjb2x1bW5TdHlsZXMgfSA9IHRhYmxlLnVzZVN0YXRlKChzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGNvbHVtbiA9IHN0YXRlLmFjdGl2ZUNvbHVtbnMuZmluZCgoY29sdW1uKSA9PiBjb2x1bW4uaWQgPT09IGNvbHVtbklkKTtcbiAgICByZXR1cm4ge1xuICAgICAgaGVhZGVyOiBjb2x1bW4/LmhlYWRlcixcbiAgICAgIGNvbHVtbkNsYXNzZXM6IGNvbHVtbj8uY2xhc3Nlcz8uaGVhZGVyQ2VsbCxcbiAgICAgIGNvbHVtblN0eWxlczogY29sdW1uPy5zdHlsZXM/LmhlYWRlckNlbGwsXG4gICAgfTtcbiAgfSk7XG5cbiAgY29uc3Qgc3RvcmUgPSBDb2x1bW5IZWFkZXJDb250ZXh0LnVzZVN0b3JlKCk7XG4gIGNvbnN0IGRyYWdnaW5nU3RhcnQgPSB1c2VSZWY8eyBtb3VzZVg6IG51bWJlcjsgYm91bmRzOiBET01SZWN0IH0+KCk7XG4gIGNvbnN0IGNsb25lID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xuXG4gIC8vIFRyYWNrIGVhY2ggaGVhZGVycyBkaXYgaW4gYSBzdG9yZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGRpdiA9IHJlZi5jdXJyZW50O1xuICAgIGlmICghZGl2KSByZXR1cm47XG5cbiAgICBzdG9yZS51cGRhdGUoKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5pdGVtcy5zZXQoY29sdW1uSWQsIGNhc3REcmFmdChkaXYpKTtcbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzdG9yZS51cGRhdGUoKHN0YXRlKSA9PiB7XG4gICAgICAgIHN0YXRlLml0ZW1zLmRlbGV0ZShjb2x1bW5JZCk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9LCBbc3RvcmUsIGNvbHVtbklkXSk7XG5cbiAgLy8gQ2FsY3VsYXRlIHdoaWNoIGluZGV4IHRoZSBjdXJyZW50IGhlYWRlciB3b3VsZCBnZXQsIGdpdmVuIHRoZSBjdXJyZW50IG9mZnNldFxuICBmdW5jdGlvbiBjYWxjVGFyZ2V0SW5kZXgob2Zmc2V0TGVmdDogbnVtYmVyKSB7XG4gICAgY29uc3QgY29scyA9IHRhYmxlXG4gICAgICAuZ2V0U3RhdGUoKVxuICAgICAgLmNvbHVtbk9yZGVyLm1hcCgoaWQpID0+ICh7IGlkLCBkaXY6IHN0b3JlLmdldFN0YXRlKCkuaXRlbXMuZ2V0KGlkKSB9KSk7XG5cbiAgICBjb25zdCBvdGhlckNvbHMgPSBjb2xzLmZpbHRlcigoY29sKSA9PiBjb2wuaWQgIT09IGNvbHVtbklkKTtcblxuICAgIGNvbnN0IGZpcnN0T2Zmc2V0bGVmdCA9IGNvbHMuZmluZCgoY29sKSA9PiBjb2wuZGl2KT8uZGl2Py5vZmZzZXRMZWZ0ID8/IDA7XG5cbiAgICBsZXQgc3VtID0gMDtcbiAgICBjb25zdCB0YXJnZXRJbmRleCA9IG90aGVyQ29scy5maW5kSW5kZXgoKGNvbCkgPT4ge1xuICAgICAgY29uc3Qgd2lkdGggPSBjb2wuZGl2Py5vZmZzZXRXaWR0aCA/PyAwO1xuICAgICAgaWYgKHN1bSArIHdpZHRoIC8gMiA+IG9mZnNldExlZnQgLSBmaXJzdE9mZnNldGxlZnQpIHJldHVybiB0cnVlO1xuICAgICAgc3VtICs9IHdpZHRoO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRhcmdldEluZGV4ID09PSAtMSA/IG90aGVyQ29scy5sZW5ndGggOiB0YXJnZXRJbmRleDtcbiAgfVxuXG4gIC8vIFdoZW4gc3RhcnRpbmcgY2xpY2tpbmc6IFJlY29yZCBpbml0aWFsIG1vdXNlIGFuZCBkaXYncyBib3VuZHNcbiAgZnVuY3Rpb24gb25Qb2ludGVyRG93bihldmVudDogUmVhY3QuUG9pbnRlckV2ZW50KSB7XG4gICAgY29uc3QgZGl2ID0gcmVmLmN1cnJlbnQ7XG4gICAgaWYgKCFkaXYpIHJldHVybjtcbiAgICBkcmFnZ2luZ1N0YXJ0LmN1cnJlbnQgPSB7IG1vdXNlWDogZXZlbnQuY2xpZW50WCwgYm91bmRzOiBkaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgfTtcbiAgfVxuXG4gIC8vIFdoZW4gbW91c2UgbW92ZXMgd2hpbGUgY2xpY2tlZDogQ2FsY3VsYXRlIHRyYW5zZm9ybXNcbiAgZnVuY3Rpb24gb25Qb2ludGVyTW92ZShldmVudDogUmVhY3QuUG9pbnRlckV2ZW50KSB7XG4gICAgdGFibGUudXBkYXRlKChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgZGl2ID0gcmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoXG4gICAgICAgICFkaXYgfHxcbiAgICAgICAgZHJhZ2dpbmdTdGFydC5jdXJyZW50ID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgTWF0aC5hYnMoZXZlbnQuY2xpZW50WCAtIGRyYWdnaW5nU3RhcnQuY3VycmVudC5tb3VzZVgpIDwgNVxuICAgICAgKVxuICAgICAgICByZXR1cm47XG5cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZGl2LnNldFBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCk7XG5cbiAgICAgIC8vIENyZWF0ZSBjbG9uZSBvZiBoZWFkZXIgZGl2IHRvIG1vdmUgYXJvdW5kIHdpdGggbW91c2VcbiAgICAgIGlmICghY2xvbmUuY3VycmVudCkge1xuICAgICAgICBjbG9uZS5jdXJyZW50ID0gZGl2LmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoY2xvbmUuY3VycmVudCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZ2V0Q29tcHV0ZWRTdHlsZShkaXYpKSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjbG9uZS5jdXJyZW50LnN0eWxlW2tleSBhcyBhbnldID0gdmFsdWU7XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAvLyBpZ25vcmVcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3QuYXNzaWduKGNsb25lLmN1cnJlbnQuc3R5bGUsIHtcbiAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICAgICAgYm94U2hhZG93OlxuICAgICAgICAgICAgJzBweCA1cHggNXB4IC0zcHggcmdiKDAgMCAwIC8gMjAlKSwgMHB4IDhweCAxMHB4IDFweCByZ2IoMCAwIDAgLyAxNCUpLCAwcHggM3B4IDE0cHggMnB4IHJnYigwIDAgMCAvIDEyJSknLFxuICAgICAgICAgIGxlZnQ6IGAke2RyYWdnaW5nU3RhcnQuY3VycmVudC5ib3VuZHMubGVmdH1weGAsXG4gICAgICAgICAgdG9wOiBgJHtkcmFnZ2luZ1N0YXJ0LmN1cnJlbnQuYm91bmRzLnRvcH1weGAsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRpdi5zdHlsZS5jb2xvciA9ICdyZ2JhKDAsIDAsIDAsIDAuMiknO1xuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgY2xvbmUncyBwb3NpdGlvbiBlYWNoIHRpbWVcbiAgICAgIGNsb25lLmN1cnJlbnQuc3R5bGUubGVmdCA9IGAke1xuICAgICAgICBkcmFnZ2luZ1N0YXJ0LmN1cnJlbnQuYm91bmRzLmxlZnQgKyBldmVudC5jbGllbnRYIC0gZHJhZ2dpbmdTdGFydC5jdXJyZW50Lm1vdXNlWFxuICAgICAgfXB4YDtcblxuICAgICAgLy8gQ2FsY3VsYXRlIHRhcmdldCBpbmRleFxuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5jb2x1bW5PcmRlci5pbmRleE9mKGNvbHVtbklkKTtcbiAgICAgIGNvbnN0IHRhcmdldEluZGV4ID0gY2FsY1RhcmdldEluZGV4KFxuICAgICAgICBkaXYub2Zmc2V0TGVmdCArIGV2ZW50LmNsaWVudFggLSBkcmFnZ2luZ1N0YXJ0LmN1cnJlbnQubW91c2VYLFxuICAgICAgKTtcblxuICAgICAgLy8gQXBwbHkgdHJhbnNmb3JtcyB0byBlYWNoIGNvbHVtblxuICAgICAgY29uc3QgY29sdW1ucyA9IHRhYmxlLmdldFN0YXRlKCkuY29sdW1uT3JkZXIubWFwKChpZCwgaW5kZXgpID0+ICh7XG4gICAgICAgIGlkLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgd2lkdGg6IHN0b3JlLmdldFN0YXRlKCkuaXRlbXMuZ2V0KGlkKT8ub2Zmc2V0V2lkdGggPz8gMCxcbiAgICAgIH0pKTtcblxuICAgICAgc3RhdGUuY29sdW1uT3JkZXIuZm9yRWFjaCgoaWQsIGkpID0+IHtcbiAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgIGlmIChpID09PSBpbmRleCkge1xuICAgICAgICAgIC8vIEN1cnJlbnQgY29sdW1uOiBNb3ZlIHRvIHRhcmdldCBwb3NcbiAgICAgICAgICBpZiAodGFyZ2V0SW5kZXggPiBpbmRleCkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gY29sdW1uc1xuICAgICAgICAgICAgICAuc2xpY2UoaW5kZXggKyAxLCB0YXJnZXRJbmRleCArIDEpXG4gICAgICAgICAgICAgIC5yZWR1Y2UoKHN1bSwgY29sKSA9PiBzdW0gKyBjb2wud2lkdGgsIDApO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0SW5kZXggPCBpbmRleCkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gLWNvbHVtbnMuc2xpY2UodGFyZ2V0SW5kZXgsIGluZGV4KS5yZWR1Y2UoKHN1bSwgY29sKSA9PiBzdW0gKyBjb2wud2lkdGgsIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChpID49IHRhcmdldEluZGV4ICYmIGkgPCBpbmRleCkge1xuICAgICAgICAgIC8vIExlZnQgY29sdW1uczogTW92ZSByaWdodCB0byBtYWtlIHJvb20gaWYgbmVlZGVkXG4gICAgICAgICAgb2Zmc2V0ID0gZGl2Lm9mZnNldFdpZHRoO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPiBpbmRleCAmJiBpIDw9IHRhcmdldEluZGV4KSB7XG4gICAgICAgICAgLy8gUmlnaHQgY29sdW1uczogTW92ZSBsZWZ0IHRvIG1ha2Ugcm9vbSBpZiBuZWVkZWRcbiAgICAgICAgICBvZmZzZXQgPSAtZGl2Lm9mZnNldFdpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUuY29sdW1uU3R5bGVPdmVycmlkZS5zZXQoaWQsIHtcbiAgICAgICAgICB0cmFuc2l0aW9uOiAndHJhbnNmb3JtIDUwMG1zJyxcbiAgICAgICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGUzZCgke29mZnNldH1weCwgMCwgMClgLFxuICAgICAgICAgIHpJbmRleDogaSA9PT0gaW5kZXggPyAxIDogdW5kZWZpbmVkLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gV2hlbiByZWxlYXNpbmcgbW91c2U6IFJlc2V0IGRyYWdnaW4gc3RhdGUgYW5kIGFwcGx5IGNvbHVtbiBtb3ZlXG4gIGZ1bmN0aW9uIG9uUG9pbnRlclVwKGV2ZW50OiBSZWFjdC5Qb2ludGVyRXZlbnQpIHtcbiAgICB0YWJsZS51cGRhdGUoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBkaXYgPSByZWYuY3VycmVudDtcbiAgICAgIGlmICghZGl2IHx8IGRyYWdnaW5nU3RhcnQuY3VycmVudCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cbiAgICAgIC8vIEFwcGx5IGNvbHVtbiBtb3ZlXG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLmNvbHVtbk9yZGVyLmluZGV4T2YoY29sdW1uSWQpO1xuICAgICAgY29uc3QgdGFyZ2V0SW5kZXggPSBjYWxjVGFyZ2V0SW5kZXgoXG4gICAgICAgIGRpdi5vZmZzZXRMZWZ0ICsgZXZlbnQuY2xpZW50WCAtIGRyYWdnaW5nU3RhcnQuY3VycmVudC5tb3VzZVgsXG4gICAgICApO1xuXG4gICAgICBzdGF0ZS5jb2x1bW5PcmRlci5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgc3RhdGUuY29sdW1uT3JkZXIuc3BsaWNlKHRhcmdldEluZGV4LCAwLCBjb2x1bW5JZCk7XG5cbiAgICAgIC8vIENsZWFudXBcbiAgICAgIGNsb25lLmN1cnJlbnQ/LnJlbW92ZSgpO1xuICAgICAgZGl2LnN0eWxlLmNvbG9yID0gJyc7XG4gICAgICBzdGF0ZS5jb2x1bW5TdHlsZU92ZXJyaWRlLmNsZWFyKCk7XG4gICAgICBkcmFnZ2luZ1N0YXJ0LmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICBjbG9uZS5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y3goY2xhc3NlcywgY29sdW1uQ2xhc3Nlcyl9XG4gICAgICBjc3M9e1tcbiAgICAgICAge1xuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgIHVzZXJTZWxlY3Q6ICdub25lJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdENsYXNzZXMuaGVhZGVyQ2VsbCxcbiAgICAgICAgc3R5bGVzLFxuICAgICAgICBjb2x1bW5TdHlsZXMsXG4gICAgICAgIHN0aWNreUhlYWRlciAmJiBkZWZhdWx0Q2xhc3Nlcy5zdGlja3ksXG4gICAgICAgIHN0aWNreUhlYWRlciBpbnN0YW5jZW9mIE9iamVjdCAmJiBzdGlja3lIZWFkZXIsXG4gICAgICBdfVxuICAgICAgc3R5bGU9e2NvbHVtblN0eWxlT3ZlcnJpZGV9XG4gICAgICBvblBvaW50ZXJEb3duPXtlbmFibGVkID8gb25Qb2ludGVyRG93biA6IHVuZGVmaW5lZH1cbiAgICAgIG9uUG9pbnRlck1vdmU9e2VuYWJsZWQgPyBvblBvaW50ZXJNb3ZlIDogdW5kZWZpbmVkfVxuICAgICAgb25Qb2ludGVyVXA9e2VuYWJsZWQgPyBvblBvaW50ZXJVcCA6IHVuZGVmaW5lZH1cbiAgICA+XG4gICAgICA8U29ydENvbXBvbmVudD57aGVhZGVyfTwvU29ydENvbXBvbmVudD5cbiAgICAgIDxkaXYgY3NzPXt7IGZsZXg6IDEgfX0gLz5cbiAgICAgIDxGaWx0ZXJDb250cm9sIC8+XG4gICAgICA8UmVzaXplSGFuZGxlIC8+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0= */"], style: columnStyleOverride, onPointerDown: enabled ? onPointerDown : void 0, onPointerMove: enabled ? onPointerMove : void 0, onPointerUp: enabled ? onPointerUp : void 0, children: [
|
|
2729
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: cx(classes, columnClasses), css: [tableTheme.defaultClasses.headerCell, "position:relative;user-select:none;", stickyHeader && tableTheme.defaultClasses.sticky, stickyHeader instanceof Object && stickyHeader, styles, columnStyles, process.env.NODE_ENV === "production" ? "" : ";label:ColumnHeader;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2NvbHVtbkhlYWRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdU1NIiwiZmlsZSI6Ii9ob21lL3J1bm5lci93b3JrL3NjaHVtbWFyLXRhYmxlL3NjaHVtbWFyLXRhYmxlL3NyYy9jb21wb25lbnRzL2NvbHVtbkhlYWRlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjYXN0RHJhZnQgfSBmcm9tICdpbW1lcic7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFN0b3JlU2NvcGUgfSBmcm9tICdzY2h1bW1hci1zdGF0ZS9yZWFjdCc7XG5pbXBvcnQgeyB1c2VDb2x1bW5Db250ZXh0LCB1c2VUYWJsZUNvbnRleHQgfSBmcm9tICcuLi9taXNjL3RhYmxlQ29udGV4dCc7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJy4uL2hvb2tzL3VzZVRoZW1lJztcbmltcG9ydCB7IGN4IH0gZnJvbSAnLi4vbWlzYy9oZWxwZXJzJztcbmltcG9ydCB7IGRlZmF1bHRDbGFzc2VzIH0gZnJvbSAnLi4vdGhlbWUvZGVmYXVsdFRoZW1lL2RlZmF1bHRDbGFzc2VzJztcbmltcG9ydCB0eXBlIHsgSWQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBGaWx0ZXJDb250cm9sIH0gZnJvbSAnLi9maWx0ZXJDb250cm9sJztcbmltcG9ydCB7IFJlc2l6ZUhhbmRsZSB9IGZyb20gJy4vcmVzaXplSGFuZGxlJztcbmltcG9ydCB7IFNvcnRDb21wb25lbnQgfSBmcm9tICcuL3NvcnRDb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgQ29sdW1uSGVhZGVyQ29udGV4dCA9IG5ldyBTdG9yZVNjb3BlKHtcbiAgaXRlbXM6IG5ldyBNYXA8SWQsIEhUTUxEaXZFbGVtZW50PigpLFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBDb2x1bW5IZWFkZXIoKSB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGNvbHVtbklkID0gdXNlQ29sdW1uQ29udGV4dCgpO1xuICBjb25zdCB0YWJsZSA9IHVzZVRhYmxlQ29udGV4dCgpO1xuICBjb25zdCBlbmFibGVkID0gdGFibGUudXNlU3RhdGUoKHN0YXRlKSA9PiBzdGF0ZS5wcm9wcy5lbmFibGVDb2x1bW5SZW9yZGVyKTtcbiAgY29uc3QgY29sdW1uU3R5bGVPdmVycmlkZSA9IHRhYmxlLnVzZVN0YXRlKChzdGF0ZSkgPT4gc3RhdGUuY29sdW1uU3R5bGVPdmVycmlkZS5nZXQoY29sdW1uSWQpLCB7XG4gICAgdGhyb3R0bGU6IDE2LFxuICB9KTtcbiAgY29uc3Qgc3RpY2t5SGVhZGVyID0gdGFibGUudXNlU3RhdGUoKHN0YXRlKSA9PiBzdGF0ZS5wcm9wcy5zdGlja3lIZWFkZXIpO1xuICBjb25zdCBjbGFzc2VzID0gdXNlVGhlbWUoKHRoZW1lKSA9PiB0aGVtZS5jbGFzc2VzPy5oZWFkZXJDZWxsKTtcbiAgY29uc3Qgc3R5bGVzID0gdXNlVGhlbWUoKHRoZW1lKSA9PiB0aGVtZS5zdHlsZXM/LmhlYWRlckNlbGwpO1xuXG4gIGNvbnN0IHsgaGVhZGVyLCBjb2x1bW5DbGFzc2VzLCBjb2x1bW5TdHlsZXMgfSA9IHRhYmxlLnVzZVN0YXRlKChzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGNvbHVtbiA9IHN0YXRlLmFjdGl2ZUNvbHVtbnMuZmluZCgoY29sdW1uKSA9PiBjb2x1bW4uaWQgPT09IGNvbHVtbklkKTtcbiAgICByZXR1cm4ge1xuICAgICAgaGVhZGVyOiBjb2x1bW4/LmhlYWRlcixcbiAgICAgIGNvbHVtbkNsYXNzZXM6IGNvbHVtbj8uY2xhc3Nlcz8uaGVhZGVyQ2VsbCxcbiAgICAgIGNvbHVtblN0eWxlczogY29sdW1uPy5zdHlsZXM/LmhlYWRlckNlbGwsXG4gICAgfTtcbiAgfSk7XG5cbiAgY29uc3Qgc3RvcmUgPSBDb2x1bW5IZWFkZXJDb250ZXh0LnVzZVN0b3JlKCk7XG4gIGNvbnN0IGRyYWdnaW5nU3RhcnQgPSB1c2VSZWY8eyBtb3VzZVg6IG51bWJlcjsgYm91bmRzOiBET01SZWN0IH0+KCk7XG4gIGNvbnN0IGNsb25lID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xuXG4gIC8vIFRyYWNrIGVhY2ggaGVhZGVycyBkaXYgaW4gYSBzdG9yZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGRpdiA9IHJlZi5jdXJyZW50O1xuICAgIGlmICghZGl2KSByZXR1cm47XG5cbiAgICBzdG9yZS51cGRhdGUoKHN0YXRlKSA9PiB7XG4gICAgICBzdGF0ZS5pdGVtcy5zZXQoY29sdW1uSWQsIGNhc3REcmFmdChkaXYpKTtcbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzdG9yZS51cGRhdGUoKHN0YXRlKSA9PiB7XG4gICAgICAgIHN0YXRlLml0ZW1zLmRlbGV0ZShjb2x1bW5JZCk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9LCBbc3RvcmUsIGNvbHVtbklkXSk7XG5cbiAgLy8gQ2FsY3VsYXRlIHdoaWNoIGluZGV4IHRoZSBjdXJyZW50IGhlYWRlciB3b3VsZCBnZXQsIGdpdmVuIHRoZSBjdXJyZW50IG9mZnNldFxuICBmdW5jdGlvbiBjYWxjVGFyZ2V0SW5kZXgob2Zmc2V0TGVmdDogbnVtYmVyKSB7XG4gICAgY29uc3QgY29scyA9IHRhYmxlXG4gICAgICAuZ2V0U3RhdGUoKVxuICAgICAgLmNvbHVtbk9yZGVyLm1hcCgoaWQpID0+ICh7IGlkLCBkaXY6IHN0b3JlLmdldFN0YXRlKCkuaXRlbXMuZ2V0KGlkKSB9KSk7XG5cbiAgICBjb25zdCBvdGhlckNvbHMgPSBjb2xzLmZpbHRlcigoY29sKSA9PiBjb2wuaWQgIT09IGNvbHVtbklkKTtcblxuICAgIGNvbnN0IGZpcnN0T2Zmc2V0bGVmdCA9IGNvbHMuZmluZCgoY29sKSA9PiBjb2wuZGl2KT8uZGl2Py5vZmZzZXRMZWZ0ID8/IDA7XG5cbiAgICBsZXQgc3VtID0gMDtcbiAgICBjb25zdCB0YXJnZXRJbmRleCA9IG90aGVyQ29scy5maW5kSW5kZXgoKGNvbCkgPT4ge1xuICAgICAgY29uc3Qgd2lkdGggPSBjb2wuZGl2Py5vZmZzZXRXaWR0aCA/PyAwO1xuICAgICAgaWYgKHN1bSArIHdpZHRoIC8gMiA+IG9mZnNldExlZnQgLSBmaXJzdE9mZnNldGxlZnQpIHJldHVybiB0cnVlO1xuICAgICAgc3VtICs9IHdpZHRoO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRhcmdldEluZGV4ID09PSAtMSA/IG90aGVyQ29scy5sZW5ndGggOiB0YXJnZXRJbmRleDtcbiAgfVxuXG4gIC8vIFdoZW4gc3RhcnRpbmcgY2xpY2tpbmc6IFJlY29yZCBpbml0aWFsIG1vdXNlIGFuZCBkaXYncyBib3VuZHNcbiAgZnVuY3Rpb24gb25Qb2ludGVyRG93bihldmVudDogUmVhY3QuUG9pbnRlckV2ZW50KSB7XG4gICAgY29uc3QgZGl2ID0gcmVmLmN1cnJlbnQ7XG4gICAgaWYgKCFkaXYpIHJldHVybjtcbiAgICBkcmFnZ2luZ1N0YXJ0LmN1cnJlbnQgPSB7IG1vdXNlWDogZXZlbnQuY2xpZW50WCwgYm91bmRzOiBkaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgfTtcbiAgfVxuXG4gIC8vIFdoZW4gbW91c2UgbW92ZXMgd2hpbGUgY2xpY2tlZDogQ2FsY3VsYXRlIHRyYW5zZm9ybXNcbiAgZnVuY3Rpb24gb25Qb2ludGVyTW92ZShldmVudDogUmVhY3QuUG9pbnRlckV2ZW50KSB7XG4gICAgdGFibGUudXBkYXRlKChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3QgZGl2ID0gcmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoXG4gICAgICAgICFkaXYgfHxcbiAgICAgICAgZHJhZ2dpbmdTdGFydC5jdXJyZW50ID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgTWF0aC5hYnMoZXZlbnQuY2xpZW50WCAtIGRyYWdnaW5nU3RhcnQuY3VycmVudC5tb3VzZVgpIDwgNVxuICAgICAgKVxuICAgICAgICByZXR1cm47XG5cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZGl2LnNldFBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCk7XG5cbiAgICAgIC8vIENyZWF0ZSBjbG9uZSBvZiBoZWFkZXIgZGl2IHRvIG1vdmUgYXJvdW5kIHdpdGggbW91c2VcbiAgICAgIGlmICghY2xvbmUuY3VycmVudCkge1xuICAgICAgICBjbG9uZS5jdXJyZW50ID0gZGl2LmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmQoY2xvbmUuY3VycmVudCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZ2V0Q29tcHV0ZWRTdHlsZShkaXYpKSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjbG9uZS5jdXJyZW50LnN0eWxlW2tleSBhcyBhbnldID0gdmFsdWU7XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAvLyBpZ25vcmVcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3QuYXNzaWduKGNsb25lLmN1cnJlbnQuc3R5bGUsIHtcbiAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICAgICAgYm94U2hhZG93OlxuICAgICAgICAgICAgJzBweCA1cHggNXB4IC0zcHggcmdiKDAgMCAwIC8gMjAlKSwgMHB4IDhweCAxMHB4IDFweCByZ2IoMCAwIDAgLyAxNCUpLCAwcHggM3B4IDE0cHggMnB4IHJnYigwIDAgMCAvIDEyJSknLFxuICAgICAgICAgIGxlZnQ6IGAke2RyYWdnaW5nU3RhcnQuY3VycmVudC5ib3VuZHMubGVmdH1weGAsXG4gICAgICAgICAgdG9wOiBgJHtkcmFnZ2luZ1N0YXJ0LmN1cnJlbnQuYm91bmRzLnRvcH1weGAsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRpdi5zdHlsZS5jb2xvciA9ICdyZ2JhKDAsIDAsIDAsIDAuMiknO1xuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgY2xvbmUncyBwb3NpdGlvbiBlYWNoIHRpbWVcbiAgICAgIGNsb25lLmN1cnJlbnQuc3R5bGUubGVmdCA9IGAke1xuICAgICAgICBkcmFnZ2luZ1N0YXJ0LmN1cnJlbnQuYm91bmRzLmxlZnQgKyBldmVudC5jbGllbnRYIC0gZHJhZ2dpbmdTdGFydC5jdXJyZW50Lm1vdXNlWFxuICAgICAgfXB4YDtcblxuICAgICAgLy8gQ2FsY3VsYXRlIHRhcmdldCBpbmRleFxuICAgICAgY29uc3QgaW5kZXggPSBzdGF0ZS5jb2x1bW5PcmRlci5pbmRleE9mKGNvbHVtbklkKTtcbiAgICAgIGNvbnN0IHRhcmdldEluZGV4ID0gY2FsY1RhcmdldEluZGV4KFxuICAgICAgICBkaXYub2Zmc2V0TGVmdCArIGV2ZW50LmNsaWVudFggLSBkcmFnZ2luZ1N0YXJ0LmN1cnJlbnQubW91c2VYLFxuICAgICAgKTtcblxuICAgICAgLy8gQXBwbHkgdHJhbnNmb3JtcyB0byBlYWNoIGNvbHVtblxuICAgICAgY29uc3QgY29sdW1ucyA9IHRhYmxlLmdldFN0YXRlKCkuY29sdW1uT3JkZXIubWFwKChpZCwgaW5kZXgpID0+ICh7XG4gICAgICAgIGlkLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgd2lkdGg6IHN0b3JlLmdldFN0YXRlKCkuaXRlbXMuZ2V0KGlkKT8ub2Zmc2V0V2lkdGggPz8gMCxcbiAgICAgIH0pKTtcblxuICAgICAgc3RhdGUuY29sdW1uT3JkZXIuZm9yRWFjaCgoaWQsIGkpID0+IHtcbiAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgIGlmIChpID09PSBpbmRleCkge1xuICAgICAgICAgIC8vIEN1cnJlbnQgY29sdW1uOiBNb3ZlIHRvIHRhcmdldCBwb3NcbiAgICAgICAgICBpZiAodGFyZ2V0SW5kZXggPiBpbmRleCkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gY29sdW1uc1xuICAgICAgICAgICAgICAuc2xpY2UoaW5kZXggKyAxLCB0YXJnZXRJbmRleCArIDEpXG4gICAgICAgICAgICAgIC5yZWR1Y2UoKHN1bSwgY29sKSA9PiBzdW0gKyBjb2wud2lkdGgsIDApO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0SW5kZXggPCBpbmRleCkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gLWNvbHVtbnMuc2xpY2UodGFyZ2V0SW5kZXgsIGluZGV4KS5yZWR1Y2UoKHN1bSwgY29sKSA9PiBzdW0gKyBjb2wud2lkdGgsIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChpID49IHRhcmdldEluZGV4ICYmIGkgPCBpbmRleCkge1xuICAgICAgICAgIC8vIExlZnQgY29sdW1uczogTW92ZSByaWdodCB0byBtYWtlIHJvb20gaWYgbmVlZGVkXG4gICAgICAgICAgb2Zmc2V0ID0gZGl2Lm9mZnNldFdpZHRoO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPiBpbmRleCAmJiBpIDw9IHRhcmdldEluZGV4KSB7XG4gICAgICAgICAgLy8gUmlnaHQgY29sdW1uczogTW92ZSBsZWZ0IHRvIG1ha2Ugcm9vbSBpZiBuZWVkZWRcbiAgICAgICAgICBvZmZzZXQgPSAtZGl2Lm9mZnNldFdpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUuY29sdW1uU3R5bGVPdmVycmlkZS5zZXQoaWQsIHtcbiAgICAgICAgICB0cmFuc2l0aW9uOiAndHJhbnNmb3JtIDUwMG1zJyxcbiAgICAgICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGUzZCgke29mZnNldH1weCwgMCwgMClgLFxuICAgICAgICAgIHpJbmRleDogaSA9PT0gaW5kZXggPyAxIDogdW5kZWZpbmVkLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gV2hlbiByZWxlYXNpbmcgbW91c2U6IFJlc2V0IGRyYWdnaW4gc3RhdGUgYW5kIGFwcGx5IGNvbHVtbiBtb3ZlXG4gIGZ1bmN0aW9uIG9uUG9pbnRlclVwKGV2ZW50OiBSZWFjdC5Qb2ludGVyRXZlbnQpIHtcbiAgICB0YWJsZS51cGRhdGUoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBkaXYgPSByZWYuY3VycmVudDtcbiAgICAgIGlmICghZGl2IHx8IGRyYWdnaW5nU3RhcnQuY3VycmVudCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cbiAgICAgIC8vIEFwcGx5IGNvbHVtbiBtb3ZlXG4gICAgICBjb25zdCBpbmRleCA9IHN0YXRlLmNvbHVtbk9yZGVyLmluZGV4T2YoY29sdW1uSWQpO1xuICAgICAgY29uc3QgdGFyZ2V0SW5kZXggPSBjYWxjVGFyZ2V0SW5kZXgoXG4gICAgICAgIGRpdi5vZmZzZXRMZWZ0ICsgZXZlbnQuY2xpZW50WCAtIGRyYWdnaW5nU3RhcnQuY3VycmVudC5tb3VzZVgsXG4gICAgICApO1xuXG4gICAgICBzdGF0ZS5jb2x1bW5PcmRlci5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgc3RhdGUuY29sdW1uT3JkZXIuc3BsaWNlKHRhcmdldEluZGV4LCAwLCBjb2x1bW5JZCk7XG5cbiAgICAgIC8vIENsZWFudXBcbiAgICAgIGNsb25lLmN1cnJlbnQ/LnJlbW92ZSgpO1xuICAgICAgZGl2LnN0eWxlLmNvbG9yID0gJyc7XG4gICAgICBzdGF0ZS5jb2x1bW5TdHlsZU92ZXJyaWRlLmNsZWFyKCk7XG4gICAgICBkcmFnZ2luZ1N0YXJ0LmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICBjbG9uZS5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByZWY9e3JlZn1cbiAgICAgIGNsYXNzTmFtZT17Y3goY2xhc3NlcywgY29sdW1uQ2xhc3Nlcyl9XG4gICAgICBjc3M9e1tcbiAgICAgICAgZGVmYXVsdENsYXNzZXMuaGVhZGVyQ2VsbCxcbiAgICAgICAge1xuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgIHVzZXJTZWxlY3Q6ICdub25lJyxcbiAgICAgICAgfSxcbiAgICAgICAgc3RpY2t5SGVhZGVyICYmIGRlZmF1bHRDbGFzc2VzLnN0aWNreSxcbiAgICAgICAgc3RpY2t5SGVhZGVyIGluc3RhbmNlb2YgT2JqZWN0ICYmIHN0aWNreUhlYWRlcixcbiAgICAgICAgc3R5bGVzLFxuICAgICAgICBjb2x1bW5TdHlsZXMsXG4gICAgICBdfVxuICAgICAgc3R5bGU9e2NvbHVtblN0eWxlT3ZlcnJpZGV9XG4gICAgICBvblBvaW50ZXJEb3duPXtlbmFibGVkID8gb25Qb2ludGVyRG93biA6IHVuZGVmaW5lZH1cbiAgICAgIG9uUG9pbnRlck1vdmU9e2VuYWJsZWQgPyBvblBvaW50ZXJNb3ZlIDogdW5kZWZpbmVkfVxuICAgICAgb25Qb2ludGVyVXA9e2VuYWJsZWQgPyBvblBvaW50ZXJVcCA6IHVuZGVmaW5lZH1cbiAgICA+XG4gICAgICA8U29ydENvbXBvbmVudD57aGVhZGVyfTwvU29ydENvbXBvbmVudD5cbiAgICAgIDxkaXYgY3NzPXt7IGZsZXg6IDEgfX0gLz5cbiAgICAgIDxGaWx0ZXJDb250cm9sIC8+XG4gICAgICA8UmVzaXplSGFuZGxlIC8+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXX0= */"], style: columnStyleOverride, onPointerDown: enabled ? onPointerDown : void 0, onPointerMove: enabled ? onPointerMove : void 0, onPointerUp: enabled ? onPointerUp : void 0, children: [
|
|
2724
2730
|
/* @__PURE__ */ jsxRuntime.jsx(SortComponent, { children: header }),
|
|
2725
2731
|
/* @__PURE__ */ jsxRuntime.jsx("div", { css: _ref$6 }),
|
|
2726
2732
|
/* @__PURE__ */ jsxRuntime.jsx(FilterControl, {}),
|