@thx/controls 14.0.4 → 15.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/date/DatePicker/datepicker.stories.d.ts +7 -0
- package/dist/date/LocalDatePicker/MaskedDateInput.d.ts +7 -6
- package/dist/date/LocalDatePicker/localdatepicker.stories.d.ts +8 -0
- package/dist/date/LocalDatePicker/maskeddateinput.stories.d.ts +5 -0
- package/dist/date/LocalMonthSelect/localmonthselect.stories.d.ts +6 -0
- package/dist/date/LocalTimePicker/MaskedTimeInput.d.ts +7 -6
- package/dist/date/LocalTimePicker/localtimepicker.stories.d.ts +7 -0
- package/dist/date/LocalTimePicker/maskedtimeinput.stories.d.ts +7 -0
- package/dist/date/MonthDayPicker/monthdaypicker.stories.d.ts +7 -0
- package/dist/date/MonthYearPicker/monthyearpicker.stories.d.ts +8 -0
- package/dist/date/YearSelect/yearselect.stories.d.ts +7 -0
- package/dist/form/TForm/addeditforms.stories.d.ts +30 -0
- package/dist/form/TForm/tform.stories.d.ts +7 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1241 -654
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/inputs/CreditCardInput/CreditCardInput.d.ts +14 -5
- package/dist/inputs/CreditCardInput/CreditCardNumberInput.d.ts +8 -0
- package/dist/inputs/CreditCardInput/creditcardinput.stories.d.ts +5 -0
- package/dist/inputs/CreditCardInput/index.d.ts +1 -1
- package/dist/inputs/MaskedInput/MaskedInput.d.ts +4 -11
- package/dist/inputs/MaskedInput/index.d.ts +1 -0
- package/dist/inputs/MaskedInput/maskedinput.stories.d.ts +6 -0
- package/dist/inputs/MaskedInput/useMaskedInput.d.ts +9 -0
- package/dist/inputs/PhoneInput/PhoneInput.d.ts +2 -1
- package/dist/inputs/PhoneInput/phoneinput.stories.d.ts +5 -0
- package/dist/inputs/RadioGroup/radiogroup.stories.d.ts +6 -0
- package/dist/inputs/Scriptel/withScriptel.d.ts +0 -1
- package/dist/inputs/ScriptelInput/scriptelnput.stories.d.ts +5 -0
- package/dist/inputs/SinInput/SinInput.d.ts +5 -4
- package/dist/inputs/SinInput/sininput.stories.d.ts +5 -0
- package/dist/inputs/TableInput/DropdownCell.d.ts +0 -1
- package/dist/inputs/TableInput/HoverCell.d.ts +0 -1
- package/dist/inputs/TableInput/MoneyCell.d.ts +0 -1
- package/dist/inputs/TableInput/MoneyEditCell.d.ts +0 -1
- package/dist/inputs/TableInput/MoneySumFooter.d.ts +0 -1
- package/dist/inputs/TableInput/StringEditCell.d.ts +0 -1
- package/dist/inputs/TableInput/main.story.d.ts +7 -0
- package/dist/inputs/TableInput/tableinput.stories.d.ts +6 -0
- package/dist/inputs/TableInput/withHover.story.d.ts +7 -0
- package/dist/money/MoneyCurrencyInput/MoneyCurrencyInput.d.ts +1 -1
- package/dist/money/MoneyCurrencyInput/moneycurrencyinput.stories.d.ts +5 -0
- package/dist/money/MoneyInput/MoneyInput.d.ts +3 -4
- package/dist/money/MoneyInput/moneyinput.stories.d.ts +6 -0
- package/dist/money/useMoneyInput.d.ts +6 -8
- package/package.json +32 -42
- package/dist/form/TForm/TFormInner.d.ts +0 -33
package/dist/index.js
CHANGED
|
@@ -47,6 +47,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
47
47
|
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__);
|
|
48
48
|
|
|
49
49
|
|
|
50
|
+
var _excluded = ["minDate", "maxDate", "value", "onChange", "onBlur", "as", "action", "actionPosition", "className", "error", "fluid", "focus", "icon", "iconPosition", "inverted", "label", "labelPosition", "loading", "size", "tabIndex", "transparent"];
|
|
50
51
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/date/LocalDatePicker/LocalDatePicker.tsx";
|
|
51
52
|
|
|
52
53
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -82,7 +83,7 @@ function LocalDatePicker(props) {
|
|
|
82
83
|
size = props.size,
|
|
83
84
|
tabIndex = props.tabIndex,
|
|
84
85
|
transparent = props.transparent,
|
|
85
|
-
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props,
|
|
86
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props, _excluded);
|
|
86
87
|
|
|
87
88
|
var selected = value ? (0,_thx_date__WEBPACK_IMPORTED_MODULE_2__.toDate)(value) : null;
|
|
88
89
|
var inputProps = {
|
|
@@ -155,6 +156,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
155
156
|
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__);
|
|
156
157
|
|
|
157
158
|
|
|
159
|
+
var _excluded = ["onChange", "name"];
|
|
158
160
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/date/LocalDatePicker/MaskedDateInput.tsx";
|
|
159
161
|
|
|
160
162
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -171,7 +173,7 @@ var d = debug__WEBPACK_IMPORTED_MODULE_2___default()('thx.controls.date.LocalDat
|
|
|
171
173
|
function MaskedDateInputInner(props, ref) {
|
|
172
174
|
var _onChange = props.onChange,
|
|
173
175
|
name = props.name,
|
|
174
|
-
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props,
|
|
176
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props, _excluded);
|
|
175
177
|
|
|
176
178
|
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(_inputs_MaskedInput__WEBPACK_IMPORTED_MODULE_4__.MaskedInput, _objectSpread(_objectSpread({}, rest), {}, {
|
|
177
179
|
name: name,
|
|
@@ -188,7 +190,7 @@ function MaskedDateInputInner(props, ref) {
|
|
|
188
190
|
}
|
|
189
191
|
}), void 0, false, {
|
|
190
192
|
fileName: _jsxFileName,
|
|
191
|
-
lineNumber:
|
|
193
|
+
lineNumber: 23,
|
|
192
194
|
columnNumber: 3
|
|
193
195
|
}, this);
|
|
194
196
|
}
|
|
@@ -245,6 +247,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
245
247
|
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__);
|
|
246
248
|
|
|
247
249
|
|
|
250
|
+
var _excluded = ["value", "onChange", "year", "handleBlur"];
|
|
248
251
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/date/LocalMonthSelect/LocalMonthSelect.tsx";
|
|
249
252
|
|
|
250
253
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -311,7 +314,7 @@ function LocalMonthSelect(props) {
|
|
|
311
314
|
_onChange = props.onChange,
|
|
312
315
|
year = props.year,
|
|
313
316
|
handleBlur = props.handleBlur,
|
|
314
|
-
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props,
|
|
317
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props, _excluded);
|
|
315
318
|
|
|
316
319
|
var theYear = year || _js_joda_core__WEBPACK_IMPORTED_MODULE_2__.LocalDate.now().year();
|
|
317
320
|
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_5__.Select, _objectSpread({
|
|
@@ -385,6 +388,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
385
388
|
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__);
|
|
386
389
|
|
|
387
390
|
|
|
391
|
+
var _excluded = ["value", "onChange", "as", "action", "actionPosition", "className", "disabled", "error", "fluid", "focus", "icon", "iconPosition", "inverted", "label", "labelPosition", "loading", "size", "tabIndex", "transparent"];
|
|
388
392
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/date/LocalTimePicker/LocalTimePicker.tsx";
|
|
389
393
|
|
|
390
394
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -419,7 +423,7 @@ function LocalTimePicker(props) {
|
|
|
419
423
|
size = props.size,
|
|
420
424
|
tabIndex = props.tabIndex,
|
|
421
425
|
transparent = props.transparent,
|
|
422
|
-
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props,
|
|
426
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props, _excluded);
|
|
423
427
|
|
|
424
428
|
var selected;
|
|
425
429
|
if (typeof value === 'number') selected = (0,_thx_date__WEBPACK_IMPORTED_MODULE_3__.toDate)(_js_joda_core__WEBPACK_IMPORTED_MODULE_2__.LocalTime.ofSecondOfDay(value));else selected = value ? (0,_thx_date__WEBPACK_IMPORTED_MODULE_3__.toDate)(value) : null;
|
|
@@ -451,11 +455,10 @@ function LocalTimePicker(props) {
|
|
|
451
455
|
showTimeSelectOnly: true,
|
|
452
456
|
timeIntervals: 15,
|
|
453
457
|
timeCaption: "Time",
|
|
454
|
-
dateFormat: "hh:mm aa"
|
|
455
|
-
,
|
|
458
|
+
dateFormat: "hh:mm aa",
|
|
456
459
|
customInput: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)(_MaskedTimeInput__WEBPACK_IMPORTED_MODULE_7__.MaskedTimeInput, _objectSpread({}, inputProps), void 0, false, {
|
|
457
460
|
fileName: _jsxFileName,
|
|
458
|
-
lineNumber:
|
|
461
|
+
lineNumber: 82,
|
|
459
462
|
columnNumber: 17
|
|
460
463
|
}, this)
|
|
461
464
|
}), void 0, false, {
|
|
@@ -495,6 +498,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
495
498
|
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__);
|
|
496
499
|
|
|
497
500
|
|
|
501
|
+
var _excluded = ["onChange"];
|
|
498
502
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/date/LocalTimePicker/MaskedTimeInput.tsx";
|
|
499
503
|
|
|
500
504
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -510,7 +514,7 @@ var d = debug__WEBPACK_IMPORTED_MODULE_2___default()('thx.controls.date.LocalTim
|
|
|
510
514
|
// eslint-disable-next-line no-unused-vars,@typescript-eslint/no-unused-vars
|
|
511
515
|
function MaskedTimeInputInner(props, ref) {
|
|
512
516
|
var _onChange = props.onChange,
|
|
513
|
-
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props,
|
|
517
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props, _excluded);
|
|
514
518
|
|
|
515
519
|
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(_inputs_MaskedInput__WEBPACK_IMPORTED_MODULE_4__.MaskedInput, _objectSpread({
|
|
516
520
|
mask: {
|
|
@@ -526,7 +530,7 @@ function MaskedTimeInputInner(props, ref) {
|
|
|
526
530
|
}
|
|
527
531
|
}, rest), void 0, false, {
|
|
528
532
|
fileName: _jsxFileName,
|
|
529
|
-
lineNumber:
|
|
533
|
+
lineNumber: 22,
|
|
530
534
|
columnNumber: 3
|
|
531
535
|
}, this);
|
|
532
536
|
}
|
|
@@ -584,6 +588,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
584
588
|
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__);
|
|
585
589
|
|
|
586
590
|
|
|
591
|
+
var _excluded = ["value", "onChange", "as", "action", "actionPosition", "className", "disabled", "error", "fluid", "focus", "icon", "iconPosition", "inverted", "label", "labelPosition", "loading", "size", "tabIndex", "transparent"];
|
|
587
592
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/date/MonthDayPicker/MonthDayPicker.tsx";
|
|
588
593
|
|
|
589
594
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -607,7 +612,7 @@ function MonthDayHeader(props) {
|
|
|
607
612
|
children: months[props.date.getMonth()]
|
|
608
613
|
}, void 0, false, {
|
|
609
614
|
fileName: _jsxFileName,
|
|
610
|
-
lineNumber:
|
|
615
|
+
lineNumber: 30,
|
|
611
616
|
columnNumber: 4
|
|
612
617
|
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)("button", {
|
|
613
618
|
type: "button",
|
|
@@ -618,7 +623,7 @@ function MonthDayHeader(props) {
|
|
|
618
623
|
children: "Previous Month"
|
|
619
624
|
}, void 0, false, {
|
|
620
625
|
fileName: _jsxFileName,
|
|
621
|
-
lineNumber:
|
|
626
|
+
lineNumber: 31,
|
|
622
627
|
columnNumber: 4
|
|
623
628
|
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)("button", {
|
|
624
629
|
type: "button",
|
|
@@ -629,7 +634,7 @@ function MonthDayHeader(props) {
|
|
|
629
634
|
children: "Next Month"
|
|
630
635
|
}, void 0, false, {
|
|
631
636
|
fileName: _jsxFileName,
|
|
632
|
-
lineNumber:
|
|
637
|
+
lineNumber: 40,
|
|
633
638
|
columnNumber: 4
|
|
634
639
|
}, this)]
|
|
635
640
|
}, void 0, true);
|
|
@@ -656,7 +661,7 @@ function MonthDayPicker(props) {
|
|
|
656
661
|
size = props.size,
|
|
657
662
|
tabIndex = props.tabIndex,
|
|
658
663
|
transparent = props.transparent,
|
|
659
|
-
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props,
|
|
664
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props, _excluded);
|
|
660
665
|
|
|
661
666
|
var selected = value ? (0,_thx_date__WEBPACK_IMPORTED_MODULE_2__.toDate)(value) : null;
|
|
662
667
|
var inputProps = {
|
|
@@ -685,14 +690,14 @@ function MonthDayPicker(props) {
|
|
|
685
690
|
},
|
|
686
691
|
customInput: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_5__.Input, _objectSpread({}, inputProps), void 0, false, {
|
|
687
692
|
fileName: _jsxFileName,
|
|
688
|
-
lineNumber:
|
|
693
|
+
lineNumber: 116,
|
|
689
694
|
columnNumber: 17
|
|
690
695
|
}, this),
|
|
691
696
|
renderCustomHeader: MonthDayHeader,
|
|
692
697
|
dateFormat: "MMMM d"
|
|
693
698
|
}), void 0, false, {
|
|
694
699
|
fileName: _jsxFileName,
|
|
695
|
-
lineNumber:
|
|
700
|
+
lineNumber: 110,
|
|
696
701
|
columnNumber: 3
|
|
697
702
|
}, this);
|
|
698
703
|
}
|
|
@@ -749,6 +754,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
749
754
|
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__);
|
|
750
755
|
|
|
751
756
|
|
|
757
|
+
var _excluded = ["value", "onChange", "as", "action", "actionPosition", "className", "disabled", "error", "fluid", "focus", "icon", "iconPosition", "inverted", "label", "labelPosition", "loading", "size", "tabIndex", "transparent", "minDate", "maxDate"];
|
|
752
758
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/date/MonthYearPicker/MonthYearPicker.tsx";
|
|
753
759
|
|
|
754
760
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -785,7 +791,7 @@ function MonthYearPicker(props) {
|
|
|
785
791
|
transparent = props.transparent,
|
|
786
792
|
minDate = props.minDate,
|
|
787
793
|
maxDate = props.maxDate,
|
|
788
|
-
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props,
|
|
794
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props, _excluded);
|
|
789
795
|
|
|
790
796
|
var selected = value ? (0,_thx_date__WEBPACK_IMPORTED_MODULE_3__.toDate)(value) : null;
|
|
791
797
|
var inputProps = {
|
|
@@ -874,6 +880,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
874
880
|
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__);
|
|
875
881
|
|
|
876
882
|
|
|
883
|
+
var _excluded = ["value", "minYear", "maxYear", "onChange", "onBlur", "error"];
|
|
877
884
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/date/YearSelect/YearSelect.tsx";
|
|
878
885
|
|
|
879
886
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -896,7 +903,7 @@ function YearSelect(props) {
|
|
|
896
903
|
_onChange = props.onChange,
|
|
897
904
|
onBlur = props.onBlur,
|
|
898
905
|
error = props.error,
|
|
899
|
-
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props,
|
|
906
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props, _excluded);
|
|
900
907
|
|
|
901
908
|
var availableYears = [];
|
|
902
909
|
|
|
@@ -1144,6 +1151,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1144
1151
|
|
|
1145
1152
|
|
|
1146
1153
|
|
|
1154
|
+
var _excluded = ["render", "children"];
|
|
1147
1155
|
|
|
1148
1156
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/form/TForm/useTForm.tsx",
|
|
1149
1157
|
_s = $RefreshSig$();
|
|
@@ -1165,7 +1173,7 @@ function useTForm(config) {
|
|
|
1165
1173
|
|
|
1166
1174
|
var render = config.render,
|
|
1167
1175
|
children = config.children,
|
|
1168
|
-
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_3___default()(config,
|
|
1176
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_3___default()(config, _excluded); // @ts-ignore
|
|
1169
1177
|
|
|
1170
1178
|
|
|
1171
1179
|
var formik = (0,formik__WEBPACK_IMPORTED_MODULE_5__.useFormik)(rest);
|
|
@@ -1309,26 +1317,289 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1309
1317
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1310
1318
|
/* harmony export */ "CreditCardInput": () => (/* binding */ CreditCardInput)
|
|
1311
1319
|
/* harmony export */ });
|
|
1320
|
+
/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "@babel/runtime/helpers/slicedToArray");
|
|
1321
|
+
/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0__);
|
|
1322
|
+
/* harmony import */ var _thx_date__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @thx/date */ "@thx/date");
|
|
1323
|
+
/* harmony import */ var _thx_date__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_thx_date__WEBPACK_IMPORTED_MODULE_1__);
|
|
1324
|
+
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! debug */ "debug");
|
|
1325
|
+
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_2__);
|
|
1326
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ "react");
|
|
1327
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);
|
|
1328
|
+
/* harmony import */ var react_credit_cards__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-credit-cards */ "react-credit-cards");
|
|
1329
|
+
/* harmony import */ var react_credit_cards__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_credit_cards__WEBPACK_IMPORTED_MODULE_4__);
|
|
1330
|
+
/* harmony import */ var react_credit_cards_es_styles_compiled_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-credit-cards/es/styles-compiled.css */ "react-credit-cards/es/styles-compiled.css");
|
|
1331
|
+
/* harmony import */ var react_credit_cards_es_styles_compiled_css__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_credit_cards_es_styles_compiled_css__WEBPACK_IMPORTED_MODULE_5__);
|
|
1332
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
|
|
1333
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__);
|
|
1334
|
+
/* harmony import */ var _date_MonthYearPicker__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../date/MonthYearPicker */ "./date/MonthYearPicker/index.ts");
|
|
1335
|
+
/* harmony import */ var _CreditCardNumberInput__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./CreditCardNumberInput */ "./inputs/CreditCardInput/CreditCardNumberInput.tsx");
|
|
1336
|
+
/* harmony import */ var _styles_css__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./styles.css */ "./inputs/CreditCardInput/styles.css");
|
|
1337
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
1338
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__);
|
|
1339
|
+
|
|
1340
|
+
|
|
1341
|
+
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/inputs/CreditCardInput/CreditCardInput.tsx",
|
|
1342
|
+
_s = $RefreshSig$();
|
|
1343
|
+
|
|
1344
|
+
|
|
1345
|
+
|
|
1346
|
+
|
|
1347
|
+
|
|
1348
|
+
|
|
1349
|
+
|
|
1350
|
+
|
|
1351
|
+
|
|
1352
|
+
|
|
1353
|
+
|
|
1354
|
+
var d = debug__WEBPACK_IMPORTED_MODULE_2___default()('thx.controls.inputs.CreditCardInput');
|
|
1355
|
+
function CreditCardInput(props) {
|
|
1356
|
+
_s();
|
|
1357
|
+
|
|
1358
|
+
var onBlur = props.onBlur,
|
|
1359
|
+
disabled = props.disabled,
|
|
1360
|
+
_onChange = props.onChange,
|
|
1361
|
+
value = props.value;
|
|
1362
|
+
|
|
1363
|
+
var _ref = value || {},
|
|
1364
|
+
name = _ref.name,
|
|
1365
|
+
number = _ref.number,
|
|
1366
|
+
cvc = _ref.cvc,
|
|
1367
|
+
expiry = _ref.expiry;
|
|
1368
|
+
|
|
1369
|
+
var _useState = (0,react__WEBPACK_IMPORTED_MODULE_3__.useState)('number'),
|
|
1370
|
+
_useState2 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default()(_useState, 2),
|
|
1371
|
+
focus = _useState2[0],
|
|
1372
|
+
setFocus = _useState2[1];
|
|
1373
|
+
|
|
1374
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Grid, {
|
|
1375
|
+
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Grid.Column, {
|
|
1376
|
+
width: 4,
|
|
1377
|
+
children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Form, {
|
|
1378
|
+
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Form.Group, {
|
|
1379
|
+
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Form.Field, {
|
|
1380
|
+
width: 9,
|
|
1381
|
+
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)("label", {
|
|
1382
|
+
children: "Number"
|
|
1383
|
+
}, void 0, false, {
|
|
1384
|
+
fileName: _jsxFileName,
|
|
1385
|
+
lineNumber: 38,
|
|
1386
|
+
columnNumber: 8
|
|
1387
|
+
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(_CreditCardNumberInput__WEBPACK_IMPORTED_MODULE_8__.CreditCardNumberInput, {
|
|
1388
|
+
onFocus: function onFocus() {
|
|
1389
|
+
return setFocus('number');
|
|
1390
|
+
},
|
|
1391
|
+
onBlur: onBlur,
|
|
1392
|
+
onChange: function onChange(v) {
|
|
1393
|
+
_onChange && _onChange({
|
|
1394
|
+
name: name,
|
|
1395
|
+
number: v,
|
|
1396
|
+
cvc: cvc,
|
|
1397
|
+
expiry: expiry
|
|
1398
|
+
});
|
|
1399
|
+
},
|
|
1400
|
+
disabled: disabled
|
|
1401
|
+
}, void 0, false, {
|
|
1402
|
+
fileName: _jsxFileName,
|
|
1403
|
+
lineNumber: 39,
|
|
1404
|
+
columnNumber: 8
|
|
1405
|
+
}, this)]
|
|
1406
|
+
}, void 0, true, {
|
|
1407
|
+
fileName: _jsxFileName,
|
|
1408
|
+
lineNumber: 37,
|
|
1409
|
+
columnNumber: 7
|
|
1410
|
+
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Form.Field, {
|
|
1411
|
+
width: 4,
|
|
1412
|
+
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)("label", {
|
|
1413
|
+
children: "CVC"
|
|
1414
|
+
}, void 0, false, {
|
|
1415
|
+
fileName: _jsxFileName,
|
|
1416
|
+
lineNumber: 49,
|
|
1417
|
+
columnNumber: 8
|
|
1418
|
+
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Input, {
|
|
1419
|
+
value: cvc || '',
|
|
1420
|
+
onChange: function onChange(ev, v) {
|
|
1421
|
+
_onChange && _onChange({
|
|
1422
|
+
name: name,
|
|
1423
|
+
number: number,
|
|
1424
|
+
cvc: v.value,
|
|
1425
|
+
expiry: expiry
|
|
1426
|
+
});
|
|
1427
|
+
},
|
|
1428
|
+
onFocus: function onFocus() {
|
|
1429
|
+
return setFocus('cvc');
|
|
1430
|
+
},
|
|
1431
|
+
onBlur: function onBlur() {
|
|
1432
|
+
return setFocus('name');
|
|
1433
|
+
},
|
|
1434
|
+
disabled: disabled
|
|
1435
|
+
}, void 0, false, {
|
|
1436
|
+
fileName: _jsxFileName,
|
|
1437
|
+
lineNumber: 50,
|
|
1438
|
+
columnNumber: 8
|
|
1439
|
+
}, this)]
|
|
1440
|
+
}, void 0, true, {
|
|
1441
|
+
fileName: _jsxFileName,
|
|
1442
|
+
lineNumber: 48,
|
|
1443
|
+
columnNumber: 7
|
|
1444
|
+
}, this)]
|
|
1445
|
+
}, void 0, true, {
|
|
1446
|
+
fileName: _jsxFileName,
|
|
1447
|
+
lineNumber: 36,
|
|
1448
|
+
columnNumber: 6
|
|
1449
|
+
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Form.Group, {
|
|
1450
|
+
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Form.Field, {
|
|
1451
|
+
width: 9,
|
|
1452
|
+
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)("label", {
|
|
1453
|
+
children: "Name"
|
|
1454
|
+
}, void 0, false, {
|
|
1455
|
+
fileName: _jsxFileName,
|
|
1456
|
+
lineNumber: 63,
|
|
1457
|
+
columnNumber: 8
|
|
1458
|
+
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Input, {
|
|
1459
|
+
value: name || '',
|
|
1460
|
+
onChange: function onChange(ev, v) {
|
|
1461
|
+
_onChange && _onChange({
|
|
1462
|
+
name: v.value,
|
|
1463
|
+
number: number,
|
|
1464
|
+
cvc: cvc,
|
|
1465
|
+
expiry: expiry
|
|
1466
|
+
});
|
|
1467
|
+
},
|
|
1468
|
+
onFocus: function onFocus() {
|
|
1469
|
+
return setFocus('name');
|
|
1470
|
+
},
|
|
1471
|
+
disabled: disabled,
|
|
1472
|
+
fluid: true
|
|
1473
|
+
}, void 0, false, {
|
|
1474
|
+
fileName: _jsxFileName,
|
|
1475
|
+
lineNumber: 64,
|
|
1476
|
+
columnNumber: 8
|
|
1477
|
+
}, this)]
|
|
1478
|
+
}, void 0, true, {
|
|
1479
|
+
fileName: _jsxFileName,
|
|
1480
|
+
lineNumber: 62,
|
|
1481
|
+
columnNumber: 7
|
|
1482
|
+
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Form.Field, {
|
|
1483
|
+
width: 6,
|
|
1484
|
+
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)("label", {
|
|
1485
|
+
children: "Expiry"
|
|
1486
|
+
}, void 0, false, {
|
|
1487
|
+
fileName: _jsxFileName,
|
|
1488
|
+
lineNumber: 75,
|
|
1489
|
+
columnNumber: 8
|
|
1490
|
+
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(_date_MonthYearPicker__WEBPACK_IMPORTED_MODULE_7__.MonthYearPicker, {
|
|
1491
|
+
value: expiry,
|
|
1492
|
+
onChange: function onChange(v) {
|
|
1493
|
+
_onChange && _onChange({
|
|
1494
|
+
name: name,
|
|
1495
|
+
number: number,
|
|
1496
|
+
cvc: cvc,
|
|
1497
|
+
expiry: v
|
|
1498
|
+
});
|
|
1499
|
+
},
|
|
1500
|
+
onFocus: function onFocus() {
|
|
1501
|
+
return setFocus('expiry');
|
|
1502
|
+
},
|
|
1503
|
+
disabled: disabled
|
|
1504
|
+
}, void 0, false, {
|
|
1505
|
+
fileName: _jsxFileName,
|
|
1506
|
+
lineNumber: 76,
|
|
1507
|
+
columnNumber: 8
|
|
1508
|
+
}, this)]
|
|
1509
|
+
}, void 0, true, {
|
|
1510
|
+
fileName: _jsxFileName,
|
|
1511
|
+
lineNumber: 74,
|
|
1512
|
+
columnNumber: 7
|
|
1513
|
+
}, this)]
|
|
1514
|
+
}, void 0, true, {
|
|
1515
|
+
fileName: _jsxFileName,
|
|
1516
|
+
lineNumber: 61,
|
|
1517
|
+
columnNumber: 6
|
|
1518
|
+
}, this)]
|
|
1519
|
+
}, void 0, true, {
|
|
1520
|
+
fileName: _jsxFileName,
|
|
1521
|
+
lineNumber: 35,
|
|
1522
|
+
columnNumber: 5
|
|
1523
|
+
}, this)
|
|
1524
|
+
}, void 0, false, {
|
|
1525
|
+
fileName: _jsxFileName,
|
|
1526
|
+
lineNumber: 34,
|
|
1527
|
+
columnNumber: 4
|
|
1528
|
+
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Grid.Column, {
|
|
1529
|
+
width: 12,
|
|
1530
|
+
children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)((react_credit_cards__WEBPACK_IMPORTED_MODULE_4___default()), {
|
|
1531
|
+
cvc: cvc || '',
|
|
1532
|
+
expiry: (0,_thx_date__WEBPACK_IMPORTED_MODULE_1__.formatDate)(expiry, {
|
|
1533
|
+
format: 'MMuu'
|
|
1534
|
+
}) || '',
|
|
1535
|
+
name: name || '',
|
|
1536
|
+
number: number || '',
|
|
1537
|
+
focused: focus,
|
|
1538
|
+
callback: function callback(a, b) {
|
|
1539
|
+
d(a, b);
|
|
1540
|
+
}
|
|
1541
|
+
}, void 0, false, {
|
|
1542
|
+
fileName: _jsxFileName,
|
|
1543
|
+
lineNumber: 89,
|
|
1544
|
+
columnNumber: 5
|
|
1545
|
+
}, this)
|
|
1546
|
+
}, void 0, false, {
|
|
1547
|
+
fileName: _jsxFileName,
|
|
1548
|
+
lineNumber: 88,
|
|
1549
|
+
columnNumber: 4
|
|
1550
|
+
}, this)]
|
|
1551
|
+
}, void 0, true, {
|
|
1552
|
+
fileName: _jsxFileName,
|
|
1553
|
+
lineNumber: 33,
|
|
1554
|
+
columnNumber: 3
|
|
1555
|
+
}, this);
|
|
1556
|
+
}
|
|
1557
|
+
|
|
1558
|
+
_s(CreditCardInput, "4PPyDbPh64qwRUey7hGXkYz4C7U=");
|
|
1559
|
+
|
|
1560
|
+
_c = CreditCardInput;
|
|
1561
|
+
|
|
1562
|
+
var _c;
|
|
1563
|
+
|
|
1564
|
+
$RefreshReg$(_c, "CreditCardInput");
|
|
1565
|
+
|
|
1566
|
+
/***/ }),
|
|
1567
|
+
|
|
1568
|
+
/***/ "./inputs/CreditCardInput/CreditCardNumberInput.tsx":
|
|
1569
|
+
/*!**********************************************************!*\
|
|
1570
|
+
!*** ./inputs/CreditCardInput/CreditCardNumberInput.tsx ***!
|
|
1571
|
+
\**********************************************************/
|
|
1572
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1573
|
+
|
|
1574
|
+
__webpack_require__.r(__webpack_exports__);
|
|
1575
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1576
|
+
/* harmony export */ "CreditCardNumberInput": () => (/* binding */ CreditCardNumberInput)
|
|
1577
|
+
/* harmony export */ });
|
|
1312
1578
|
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
|
|
1313
1579
|
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
|
|
1314
1580
|
/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "@babel/runtime/helpers/slicedToArray");
|
|
1315
1581
|
/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__);
|
|
1316
1582
|
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "@babel/runtime/helpers/objectWithoutProperties");
|
|
1317
1583
|
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__);
|
|
1318
|
-
/* harmony import */ var
|
|
1319
|
-
/* harmony import */ var
|
|
1584
|
+
/* harmony import */ var credit_card_type__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! credit-card-type */ "credit-card-type");
|
|
1585
|
+
/* harmony import */ var credit_card_type__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(credit_card_type__WEBPACK_IMPORTED_MODULE_3__);
|
|
1320
1586
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! debug */ "debug");
|
|
1321
1587
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_4__);
|
|
1322
|
-
/* harmony import */ var
|
|
1323
|
-
/* harmony import */ var
|
|
1324
|
-
/* harmony import */ var
|
|
1325
|
-
/* harmony import */ var
|
|
1326
|
-
/* harmony import */ var
|
|
1588
|
+
/* harmony import */ var luhn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! luhn */ "luhn");
|
|
1589
|
+
/* harmony import */ var luhn__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(luhn__WEBPACK_IMPORTED_MODULE_5__);
|
|
1590
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ "react");
|
|
1591
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);
|
|
1592
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
|
|
1593
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_7__);
|
|
1594
|
+
/* harmony import */ var _MaskedInput_useMaskedInput__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../MaskedInput/useMaskedInput */ "./inputs/MaskedInput/useMaskedInput.ts");
|
|
1595
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
1596
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__);
|
|
1327
1597
|
|
|
1328
1598
|
|
|
1329
1599
|
|
|
1600
|
+
var _excluded = ["value", "onChange"];
|
|
1330
1601
|
|
|
1331
|
-
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/inputs/CreditCardInput/
|
|
1602
|
+
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/inputs/CreditCardInput/CreditCardNumberInput.tsx",
|
|
1332
1603
|
_s = $RefreshSig$();
|
|
1333
1604
|
|
|
1334
1605
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -1340,61 +1611,122 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
1340
1611
|
|
|
1341
1612
|
|
|
1342
1613
|
|
|
1343
|
-
|
|
1344
|
-
|
|
1614
|
+
|
|
1615
|
+
|
|
1616
|
+
var d = debug__WEBPACK_IMPORTED_MODULE_4___default()('thx.controls.inputs.CreditCardInput.CreditCardNumberInput');
|
|
1617
|
+
|
|
1618
|
+
function getIcon(type) {
|
|
1619
|
+
switch (type) {
|
|
1620
|
+
case 'visa':
|
|
1621
|
+
return 'cc visa';
|
|
1622
|
+
|
|
1623
|
+
case 'mastercard':
|
|
1624
|
+
return 'cc mastercard';
|
|
1625
|
+
|
|
1626
|
+
case 'american-express':
|
|
1627
|
+
return 'cc amex';
|
|
1628
|
+
|
|
1629
|
+
case 'diners-club':
|
|
1630
|
+
return 'cc diners club';
|
|
1631
|
+
|
|
1632
|
+
case 'jcb':
|
|
1633
|
+
return 'cc jcb';
|
|
1634
|
+
|
|
1635
|
+
default:
|
|
1636
|
+
return 'credit card';
|
|
1637
|
+
}
|
|
1638
|
+
}
|
|
1639
|
+
|
|
1640
|
+
function CreditCardNumberInput(props) {
|
|
1345
1641
|
_s();
|
|
1346
1642
|
|
|
1347
|
-
var
|
|
1348
|
-
|
|
1643
|
+
var value = props.value,
|
|
1644
|
+
_onChange = props.onChange,
|
|
1645
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2___default()(props, _excluded);
|
|
1349
1646
|
|
|
1350
|
-
var _useState = (0,
|
|
1647
|
+
var _useState = (0,react__WEBPACK_IMPORTED_MODULE_6__.useState)('credit card'),
|
|
1351
1648
|
_useState2 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default()(_useState, 2),
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
(0,
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
} else if (parseInt(cardNumber.substr(0, 2), 10) > 50 && parseInt(cardNumber.substr(0, 2), 10) < 56 || parseInt(cardNumber.substr(0, 2), 10) > 2220 && parseInt(cardNumber.substr(0, 2), 10) < 2721) {
|
|
1368
|
-
// test using 5555555555554444 || 2222405343248877
|
|
1369
|
-
setType(_thx_yup_types__WEBPACK_IMPORTED_MODULE_3__.CreditCardCardNameEnum.MasterCard);
|
|
1649
|
+
icon = _useState2[0],
|
|
1650
|
+
setIcon = _useState2[1];
|
|
1651
|
+
|
|
1652
|
+
var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_6__.useState)('black'),
|
|
1653
|
+
_useState4 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default()(_useState3, 2),
|
|
1654
|
+
color = _useState4[0],
|
|
1655
|
+
setColor = _useState4[1];
|
|
1656
|
+
|
|
1657
|
+
var checkValidation = (0,react__WEBPACK_IMPORTED_MODULE_6__.useCallback)(function (valueArray) {
|
|
1658
|
+
var num = valueArray.join('').replaceAll(/(_|\s)/g, '');
|
|
1659
|
+
var typ = credit_card_type__WEBPACK_IMPORTED_MODULE_3___default()(num);
|
|
1660
|
+
var isValid = (0,luhn__WEBPACK_IMPORTED_MODULE_5__.validate)(num);
|
|
1661
|
+
|
|
1662
|
+
if (typ.length === 1) {
|
|
1663
|
+
setIcon(getIcon(typ[0].type));
|
|
1370
1664
|
} else {
|
|
1371
|
-
|
|
1665
|
+
setIcon('credit card');
|
|
1372
1666
|
}
|
|
1373
1667
|
|
|
1374
|
-
|
|
1375
|
-
|
|
1668
|
+
if (num.length > 0) {
|
|
1669
|
+
if (isValid) {
|
|
1670
|
+
setColor('green');
|
|
1671
|
+
} else {
|
|
1672
|
+
setColor('red');
|
|
1673
|
+
}
|
|
1674
|
+
} else {
|
|
1675
|
+
setColor('black');
|
|
1676
|
+
}
|
|
1376
1677
|
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1678
|
+
return isValid;
|
|
1679
|
+
}, []);
|
|
1680
|
+
var creditCardMask = (0,react__WEBPACK_IMPORTED_MODULE_6__.useMemo)(function () {
|
|
1681
|
+
return {
|
|
1682
|
+
mask: '9999 9999 9999 9999',
|
|
1683
|
+
isComplete: checkValidation,
|
|
1684
|
+
autoUnmask: true
|
|
1685
|
+
};
|
|
1686
|
+
}, [checkValidation]);
|
|
1687
|
+
var cardNumberRef = (0,_MaskedInput_useMaskedInput__WEBPACK_IMPORTED_MODULE_8__.useMaskedInput)({
|
|
1688
|
+
mask: creditCardMask,
|
|
1689
|
+
value: value,
|
|
1690
|
+
onChange: function onChange(v) {
|
|
1691
|
+
var typ = credit_card_type__WEBPACK_IMPORTED_MODULE_3___default()(v || '');
|
|
1692
|
+
d(v, typ); // checkValidation([v || '']);
|
|
1693
|
+
|
|
1694
|
+
_onChange && _onChange(v);
|
|
1695
|
+
}
|
|
1696
|
+
});
|
|
1697
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_7__.Input, _objectSpread(_objectSpread({}, rest), {}, {
|
|
1698
|
+
icon: true,
|
|
1699
|
+
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxDEV)("input", {
|
|
1700
|
+
ref: cardNumberRef
|
|
1701
|
+
}, void 0, false, {
|
|
1702
|
+
fileName: _jsxFileName,
|
|
1703
|
+
lineNumber: 84,
|
|
1704
|
+
columnNumber: 4
|
|
1705
|
+
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_7__.Icon, {
|
|
1706
|
+
name: icon,
|
|
1707
|
+
color: color,
|
|
1708
|
+
size: "large"
|
|
1709
|
+
}, void 0, false, {
|
|
1710
|
+
fileName: _jsxFileName,
|
|
1711
|
+
lineNumber: 85,
|
|
1712
|
+
columnNumber: 4
|
|
1713
|
+
}, this)]
|
|
1714
|
+
}), void 0, true, {
|
|
1385
1715
|
fileName: _jsxFileName,
|
|
1386
|
-
lineNumber:
|
|
1387
|
-
columnNumber:
|
|
1716
|
+
lineNumber: 83,
|
|
1717
|
+
columnNumber: 3
|
|
1388
1718
|
}, this);
|
|
1389
1719
|
}
|
|
1390
1720
|
|
|
1391
|
-
_s(
|
|
1721
|
+
_s(CreditCardNumberInput, "xrhYVJVzbZz9Azh45XSJ5gFaeho=", false, function () {
|
|
1722
|
+
return [_MaskedInput_useMaskedInput__WEBPACK_IMPORTED_MODULE_8__.useMaskedInput];
|
|
1723
|
+
});
|
|
1392
1724
|
|
|
1393
|
-
_c =
|
|
1725
|
+
_c = CreditCardNumberInput;
|
|
1394
1726
|
|
|
1395
1727
|
var _c;
|
|
1396
1728
|
|
|
1397
|
-
$RefreshReg$(_c, "
|
|
1729
|
+
$RefreshReg$(_c, "CreditCardNumberInput");
|
|
1398
1730
|
|
|
1399
1731
|
/***/ }),
|
|
1400
1732
|
|
|
@@ -1429,18 +1761,16 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1429
1761
|
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__);
|
|
1430
1762
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! debug */ "debug");
|
|
1431
1763
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_2__);
|
|
1432
|
-
/* harmony import */ var
|
|
1433
|
-
/* harmony import */ var
|
|
1434
|
-
/* harmony import */ var
|
|
1435
|
-
/* harmony import */ var
|
|
1436
|
-
/* harmony import */ var
|
|
1437
|
-
/* harmony import */ var
|
|
1438
|
-
/* harmony import */ var
|
|
1439
|
-
/* harmony import */ var use_deep_compare_effect__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(use_deep_compare_effect__WEBPACK_IMPORTED_MODULE_6__);
|
|
1440
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
1441
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__);
|
|
1764
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ "react");
|
|
1765
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);
|
|
1766
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
|
|
1767
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__);
|
|
1768
|
+
/* harmony import */ var _useMaskedInput__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./useMaskedInput */ "./inputs/MaskedInput/useMaskedInput.ts");
|
|
1769
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
1770
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__);
|
|
1442
1771
|
|
|
1443
1772
|
|
|
1773
|
+
var _excluded = ["name", "onBlur", "disabled", "onChange", "mask", "value"];
|
|
1444
1774
|
|
|
1445
1775
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/inputs/MaskedInput/MaskedInput.tsx",
|
|
1446
1776
|
_s = $RefreshSig$();
|
|
@@ -1454,85 +1784,43 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
1454
1784
|
|
|
1455
1785
|
|
|
1456
1786
|
|
|
1457
|
-
|
|
1458
1787
|
var d = debug__WEBPACK_IMPORTED_MODULE_2___default()('thx.controls.inputs.MaskedInput');
|
|
1459
|
-
/**
|
|
1460
|
-
* See source code for detailed prop types or {@link https://github.com/RobinHerbots/jquery.inputmask|here} for more info.
|
|
1461
|
-
* @typedef {Object} inputmaskPropTypes
|
|
1462
|
-
*/
|
|
1463
|
-
|
|
1464
1788
|
function MaskedInput(props) {
|
|
1465
1789
|
_s();
|
|
1466
1790
|
|
|
1467
1791
|
var name = props.name,
|
|
1468
|
-
value = props.value,
|
|
1469
|
-
onChange = props.onChange,
|
|
1470
1792
|
onBlur = props.onBlur,
|
|
1471
|
-
mask = props.mask,
|
|
1472
1793
|
disabled = props.disabled,
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
use_deep_compare_effect__WEBPACK_IMPORTED_MODULE_6___default()(function () {
|
|
1478
|
-
if (!inputElement.current) throw new Error('Could not get input element');
|
|
1479
|
-
d('Creating input mask instance');
|
|
1480
|
-
maskInstance.current = new (inputmask__WEBPACK_IMPORTED_MODULE_3___default())(_objectSpread(_objectSpread({}, mask), {}, {
|
|
1481
|
-
oncomplete: function oncomplete() {
|
|
1482
|
-
var _inputElement$current;
|
|
1483
|
-
|
|
1484
|
-
if (onChange) onChange((_inputElement$current = inputElement.current) === null || _inputElement$current === void 0 ? void 0 : _inputElement$current.value);
|
|
1485
|
-
if (mask !== null && mask !== void 0 && mask.oncomplete) mask.oncomplete();
|
|
1486
|
-
},
|
|
1487
|
-
oncleared: function oncleared() {
|
|
1488
|
-
if (onChange) onChange();
|
|
1489
|
-
if (mask !== null && mask !== void 0 && mask.oncleared) mask.oncleared();
|
|
1490
|
-
},
|
|
1491
|
-
onincomplete: function onincomplete() {
|
|
1492
|
-
var _inputElement$current2;
|
|
1493
|
-
|
|
1494
|
-
if (onChange) onChange((_inputElement$current2 = inputElement.current) === null || _inputElement$current2 === void 0 ? void 0 : _inputElement$current2.value);
|
|
1495
|
-
if (mask !== null && mask !== void 0 && mask.onincomplete) mask.onincomplete();
|
|
1496
|
-
}
|
|
1497
|
-
}));
|
|
1498
|
-
maskInstance.current.mask(inputElement.current);
|
|
1499
|
-
return function () {
|
|
1500
|
-
if (maskInstance.current) {
|
|
1501
|
-
d('Cleaning up input mask instance');
|
|
1502
|
-
maskInstance.current.remove();
|
|
1503
|
-
maskInstance.current = null;
|
|
1504
|
-
}
|
|
1505
|
-
};
|
|
1506
|
-
}, [mask]); // If we change the value prop we need to sync the DOM value to display the new value
|
|
1507
|
-
|
|
1508
|
-
(0,react__WEBPACK_IMPORTED_MODULE_4__.useEffect)(function () {
|
|
1509
|
-
var _inputElement$current3;
|
|
1794
|
+
onChange = props.onChange,
|
|
1795
|
+
mask = props.mask,
|
|
1796
|
+
value = props.value,
|
|
1797
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props, _excluded);
|
|
1510
1798
|
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
}
|
|
1516
|
-
return /*#__PURE__*/(0,
|
|
1517
|
-
children: /*#__PURE__*/(0,
|
|
1799
|
+
var inputRef = (0,_useMaskedInput__WEBPACK_IMPORTED_MODULE_5__.useMaskedInput)({
|
|
1800
|
+
mask: mask,
|
|
1801
|
+
value: value,
|
|
1802
|
+
onChange: onChange
|
|
1803
|
+
});
|
|
1804
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__.Input, _objectSpread(_objectSpread({}, rest), {}, {
|
|
1805
|
+
children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxDEV)("input", {
|
|
1518
1806
|
disabled: disabled,
|
|
1519
1807
|
name: name,
|
|
1520
|
-
ref:
|
|
1808
|
+
ref: inputRef,
|
|
1521
1809
|
onBlur: onBlur
|
|
1522
1810
|
}, void 0, false, {
|
|
1523
1811
|
fileName: _jsxFileName,
|
|
1524
|
-
lineNumber:
|
|
1812
|
+
lineNumber: 21,
|
|
1525
1813
|
columnNumber: 4
|
|
1526
1814
|
}, this)
|
|
1527
1815
|
}), void 0, false, {
|
|
1528
1816
|
fileName: _jsxFileName,
|
|
1529
|
-
lineNumber:
|
|
1817
|
+
lineNumber: 20,
|
|
1530
1818
|
columnNumber: 3
|
|
1531
1819
|
}, this);
|
|
1532
1820
|
}
|
|
1533
1821
|
|
|
1534
|
-
_s(MaskedInput, "
|
|
1535
|
-
return [
|
|
1822
|
+
_s(MaskedInput, "W3jy9LOlLdoFzuUq4DZpSE4bDLI=", false, function () {
|
|
1823
|
+
return [_useMaskedInput__WEBPACK_IMPORTED_MODULE_5__.useMaskedInput];
|
|
1536
1824
|
});
|
|
1537
1825
|
|
|
1538
1826
|
_c = MaskedInput;
|
|
@@ -1551,37 +1839,39 @@ $RefreshReg$(_c, "MaskedInput");
|
|
|
1551
1839
|
|
|
1552
1840
|
__webpack_require__.r(__webpack_exports__);
|
|
1553
1841
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1554
|
-
/* harmony export */ "MaskedInput": () => (/* reexport safe */ _MaskedInput__WEBPACK_IMPORTED_MODULE_0__.MaskedInput)
|
|
1842
|
+
/* harmony export */ "MaskedInput": () => (/* reexport safe */ _MaskedInput__WEBPACK_IMPORTED_MODULE_0__.MaskedInput),
|
|
1843
|
+
/* harmony export */ "useMaskedInput": () => (/* reexport safe */ _useMaskedInput__WEBPACK_IMPORTED_MODULE_1__.useMaskedInput)
|
|
1555
1844
|
/* harmony export */ });
|
|
1556
1845
|
/* harmony import */ var _MaskedInput__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./MaskedInput */ "./inputs/MaskedInput/MaskedInput.tsx");
|
|
1846
|
+
/* harmony import */ var _useMaskedInput__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useMaskedInput */ "./inputs/MaskedInput/useMaskedInput.ts");
|
|
1847
|
+
|
|
1557
1848
|
|
|
1558
1849
|
|
|
1559
1850
|
/***/ }),
|
|
1560
1851
|
|
|
1561
|
-
/***/ "./inputs/
|
|
1562
|
-
|
|
1563
|
-
!*** ./inputs/
|
|
1564
|
-
|
|
1852
|
+
/***/ "./inputs/MaskedInput/useMaskedInput.ts":
|
|
1853
|
+
/*!**********************************************!*\
|
|
1854
|
+
!*** ./inputs/MaskedInput/useMaskedInput.ts ***!
|
|
1855
|
+
\**********************************************/
|
|
1565
1856
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1566
1857
|
|
|
1567
1858
|
__webpack_require__.r(__webpack_exports__);
|
|
1568
1859
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1569
|
-
/* harmony export */ "
|
|
1860
|
+
/* harmony export */ "useMaskedInput": () => (/* binding */ useMaskedInput)
|
|
1570
1861
|
/* harmony export */ });
|
|
1571
1862
|
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
|
|
1572
1863
|
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
|
|
1573
|
-
/* harmony import */ var
|
|
1574
|
-
/* harmony import */ var
|
|
1575
|
-
/* harmony import */ var
|
|
1576
|
-
/* harmony import */ var
|
|
1864
|
+
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! debug */ "debug");
|
|
1865
|
+
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_1__);
|
|
1866
|
+
/* harmony import */ var inputmask__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! inputmask */ "inputmask");
|
|
1867
|
+
/* harmony import */ var inputmask__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(inputmask__WEBPACK_IMPORTED_MODULE_2__);
|
|
1577
1868
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ "react");
|
|
1578
1869
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);
|
|
1579
|
-
/* harmony import */ var
|
|
1580
|
-
/* harmony import */ var
|
|
1581
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__);
|
|
1870
|
+
/* harmony import */ var use_deep_compare_effect__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! use-deep-compare-effect */ "use-deep-compare-effect");
|
|
1871
|
+
/* harmony import */ var use_deep_compare_effect__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(use_deep_compare_effect__WEBPACK_IMPORTED_MODULE_4__);
|
|
1582
1872
|
|
|
1583
1873
|
|
|
1584
|
-
var
|
|
1874
|
+
var _s = $RefreshSig$();
|
|
1585
1875
|
|
|
1586
1876
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
1587
1877
|
|
|
@@ -1591,21 +1881,114 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
1591
1881
|
|
|
1592
1882
|
|
|
1593
1883
|
|
|
1594
|
-
var d =
|
|
1595
|
-
function
|
|
1596
|
-
|
|
1597
|
-
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props, ["extension"]);
|
|
1884
|
+
var d = debug__WEBPACK_IMPORTED_MODULE_1___default()('thx.controls.inputs.MaskedInput.useMaskedInput');
|
|
1885
|
+
function useMaskedInput(props) {
|
|
1886
|
+
_s();
|
|
1598
1887
|
|
|
1599
|
-
var
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1888
|
+
var value = props.value,
|
|
1889
|
+
onChange = props.onChange,
|
|
1890
|
+
onSet = props.onSet,
|
|
1891
|
+
mask = props.mask;
|
|
1892
|
+
var inputElement = (0,react__WEBPACK_IMPORTED_MODULE_3__.useRef)(null);
|
|
1893
|
+
var maskInstance = (0,react__WEBPACK_IMPORTED_MODULE_3__.useRef)(null);
|
|
1894
|
+
use_deep_compare_effect__WEBPACK_IMPORTED_MODULE_4___default()(function () {
|
|
1895
|
+
if (!inputElement.current) throw new Error('Could not get input element');
|
|
1896
|
+
d('Creating input mask instance');
|
|
1897
|
+
maskInstance.current = new (inputmask__WEBPACK_IMPORTED_MODULE_2___default())(_objectSpread(_objectSpread({}, mask), {}, {
|
|
1898
|
+
oncomplete: function oncomplete() {
|
|
1899
|
+
var _inputElement$current;
|
|
1900
|
+
|
|
1901
|
+
if (onChange) onChange((_inputElement$current = inputElement.current) === null || _inputElement$current === void 0 ? void 0 : _inputElement$current.value);
|
|
1902
|
+
if (mask !== null && mask !== void 0 && mask.oncomplete) mask.oncomplete();
|
|
1903
|
+
},
|
|
1904
|
+
oncleared: function oncleared() {
|
|
1905
|
+
if (onChange) onChange();
|
|
1906
|
+
if (mask !== null && mask !== void 0 && mask.oncleared) mask.oncleared();
|
|
1907
|
+
},
|
|
1908
|
+
onincomplete: function onincomplete() {
|
|
1909
|
+
var _inputElement$current2;
|
|
1910
|
+
|
|
1911
|
+
if (onChange) onChange((_inputElement$current2 = inputElement.current) === null || _inputElement$current2 === void 0 ? void 0 : _inputElement$current2.value);
|
|
1912
|
+
if (mask !== null && mask !== void 0 && mask.onincomplete) mask.onincomplete();
|
|
1913
|
+
}
|
|
1914
|
+
}));
|
|
1915
|
+
maskInstance.current.mask(inputElement.current);
|
|
1916
|
+
return function () {
|
|
1917
|
+
if (maskInstance.current) {
|
|
1918
|
+
d('Cleaning up input mask instance');
|
|
1919
|
+
maskInstance.current.remove();
|
|
1920
|
+
maskInstance.current = null;
|
|
1921
|
+
}
|
|
1922
|
+
};
|
|
1923
|
+
}, [mask]); // If we change the value prop we need to sync the DOM value to display the new value
|
|
1924
|
+
|
|
1925
|
+
(0,react__WEBPACK_IMPORTED_MODULE_3__.useEffect)(function () {
|
|
1926
|
+
var _inputElement$current3;
|
|
1927
|
+
|
|
1928
|
+
if (inputElement.current && ((_inputElement$current3 = inputElement.current) === null || _inputElement$current3 === void 0 ? void 0 : _inputElement$current3.value) !== value && value !== undefined) {
|
|
1929
|
+
d('Value is changing:', value);
|
|
1930
|
+
inputElement.current.value = value;
|
|
1931
|
+
onSet && onSet(value);
|
|
1932
|
+
}
|
|
1933
|
+
}, [value]);
|
|
1934
|
+
return inputElement;
|
|
1935
|
+
}
|
|
1936
|
+
|
|
1937
|
+
_s(useMaskedInput, "0UoGXAt/O9Xpg5c5EGf1oyTQlfo=", false, function () {
|
|
1938
|
+
return [(use_deep_compare_effect__WEBPACK_IMPORTED_MODULE_4___default())];
|
|
1939
|
+
});
|
|
1940
|
+
|
|
1941
|
+
/***/ }),
|
|
1942
|
+
|
|
1943
|
+
/***/ "./inputs/PhoneInput/PhoneInput.tsx":
|
|
1944
|
+
/*!******************************************!*\
|
|
1945
|
+
!*** ./inputs/PhoneInput/PhoneInput.tsx ***!
|
|
1946
|
+
\******************************************/
|
|
1947
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1948
|
+
|
|
1949
|
+
__webpack_require__.r(__webpack_exports__);
|
|
1950
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1951
|
+
/* harmony export */ "PhoneInput": () => (/* binding */ PhoneInput)
|
|
1952
|
+
/* harmony export */ });
|
|
1953
|
+
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
|
|
1954
|
+
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
|
|
1955
|
+
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "@babel/runtime/helpers/objectWithoutProperties");
|
|
1956
|
+
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__);
|
|
1957
|
+
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! debug */ "debug");
|
|
1958
|
+
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_2__);
|
|
1959
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ "react");
|
|
1960
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);
|
|
1961
|
+
/* harmony import */ var _MaskedInput__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../MaskedInput */ "./inputs/MaskedInput/index.ts");
|
|
1962
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
1963
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__);
|
|
1964
|
+
|
|
1965
|
+
|
|
1966
|
+
var _excluded = ["extension"];
|
|
1967
|
+
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/inputs/PhoneInput/PhoneInput.tsx";
|
|
1968
|
+
|
|
1969
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
1970
|
+
|
|
1971
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
1972
|
+
|
|
1973
|
+
|
|
1974
|
+
|
|
1975
|
+
|
|
1976
|
+
|
|
1977
|
+
var d = debug__WEBPACK_IMPORTED_MODULE_2___default()('thx.controls.inputs.PhoneInput');
|
|
1978
|
+
function PhoneInput(props) {
|
|
1979
|
+
var extension = props.extension,
|
|
1980
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props, _excluded);
|
|
1981
|
+
|
|
1982
|
+
var mask = {
|
|
1983
|
+
mask: extension ? '((999) 999-9999[ x9999])|(+9 (999) 999-9999[ x9999])' : '((999) 999-9999)|( +9 (999) 999-9999)',
|
|
1984
|
+
greedy: false,
|
|
1985
|
+
autoUnmask: true
|
|
1603
1986
|
};
|
|
1604
1987
|
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(_MaskedInput__WEBPACK_IMPORTED_MODULE_4__.MaskedInput, _objectSpread(_objectSpread({}, rest), {}, {
|
|
1605
1988
|
mask: mask
|
|
1606
1989
|
}), void 0, false, {
|
|
1607
1990
|
fileName: _jsxFileName,
|
|
1608
|
-
lineNumber:
|
|
1991
|
+
lineNumber: 20,
|
|
1609
1992
|
columnNumber: 9
|
|
1610
1993
|
}, this);
|
|
1611
1994
|
}
|
|
@@ -1656,6 +2039,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1656
2039
|
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__);
|
|
1657
2040
|
|
|
1658
2041
|
|
|
2042
|
+
var _excluded = ["children", "onChange", "value"];
|
|
1659
2043
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/inputs/RadioGroup/RadioGroup.tsx";
|
|
1660
2044
|
|
|
1661
2045
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -1671,7 +2055,7 @@ function RadioGroup(props) {
|
|
|
1671
2055
|
var children = props.children,
|
|
1672
2056
|
_onChange = props.onChange,
|
|
1673
2057
|
value = props.value,
|
|
1674
|
-
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props,
|
|
2058
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(props, _excluded);
|
|
1675
2059
|
|
|
1676
2060
|
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__.Form.Group, _objectSpread(_objectSpread({}, rest), {}, {
|
|
1677
2061
|
children: react__WEBPACK_IMPORTED_MODULE_3__.Children.map(props.children, function (child) {
|
|
@@ -1923,11 +2307,14 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1923
2307
|
/* harmony import */ var _babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__);
|
|
1924
2308
|
/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ "@babel/runtime/helpers/getPrototypeOf");
|
|
1925
2309
|
/* harmony import */ var _babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__);
|
|
1926
|
-
/* harmony import */ var
|
|
1927
|
-
/* harmony import */ var
|
|
1928
|
-
/* harmony import */ var
|
|
1929
|
-
/* harmony import */ var
|
|
1930
|
-
/* harmony import */ var
|
|
2310
|
+
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
|
|
2311
|
+
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6__);
|
|
2312
|
+
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! debug */ "debug");
|
|
2313
|
+
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_7__);
|
|
2314
|
+
/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! eventemitter3 */ "eventemitter3");
|
|
2315
|
+
/* harmony import */ var eventemitter3__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(eventemitter3__WEBPACK_IMPORTED_MODULE_8__);
|
|
2316
|
+
/* harmony import */ var _enums__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./enums */ "./inputs/Scriptel/scriptel/enums.ts");
|
|
2317
|
+
|
|
1931
2318
|
|
|
1932
2319
|
|
|
1933
2320
|
|
|
@@ -1943,7 +2330,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
|
|
|
1943
2330
|
|
|
1944
2331
|
|
|
1945
2332
|
|
|
1946
|
-
var d =
|
|
2333
|
+
var d = debug__WEBPACK_IMPORTED_MODULE_7___default()('thx.controls.inputs.Scriptel.scriptel');
|
|
1947
2334
|
|
|
1948
2335
|
function serverConnected(msg, socket) {
|
|
1949
2336
|
d('Server connected');
|
|
@@ -1974,7 +2361,7 @@ function deviceConnected(msg, socket, args) {
|
|
|
1974
2361
|
penStyle: penStyle ? {
|
|
1975
2362
|
renderFunction: penStyle
|
|
1976
2363
|
} : {
|
|
1977
|
-
renderFunction:
|
|
2364
|
+
renderFunction: _enums__WEBPACK_IMPORTED_MODULE_9__.ScriptelPenStyle.Plain
|
|
1978
2365
|
}
|
|
1979
2366
|
}
|
|
1980
2367
|
}));
|
|
@@ -1996,8 +2383,11 @@ var ScriptelSocket = /*#__PURE__*/function (_EventEmitter) {
|
|
|
1996
2383
|
_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ScriptelSocket);
|
|
1997
2384
|
|
|
1998
2385
|
_this = _super.call(this);
|
|
1999
|
-
|
|
2000
|
-
_this
|
|
2386
|
+
|
|
2387
|
+
_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this), "socket", void 0);
|
|
2388
|
+
|
|
2389
|
+
_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_6___default()(_babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this), "options", void 0);
|
|
2390
|
+
|
|
2001
2391
|
_this.options = args;
|
|
2002
2392
|
_this.socket = new WebSocket(args.omniscriptUrl || 'ws://localhost:8080');
|
|
2003
2393
|
|
|
@@ -2014,36 +2404,36 @@ var ScriptelSocket = /*#__PURE__*/function (_EventEmitter) {
|
|
|
2014
2404
|
if (!msg._class) return; // A message with no class.
|
|
2015
2405
|
|
|
2016
2406
|
switch (msg._class) {
|
|
2017
|
-
case
|
|
2407
|
+
case _enums__WEBPACK_IMPORTED_MODULE_9__.ScriptelMessageClass.ConnectionOpen:
|
|
2018
2408
|
serverConnected(msg, _this.socket);
|
|
2019
2409
|
break;
|
|
2020
2410
|
|
|
2021
|
-
case
|
|
2411
|
+
case _enums__WEBPACK_IMPORTED_MODULE_9__.ScriptelMessageClass.DeviceOpenResponse:
|
|
2022
2412
|
deviceConnected(msg, _this.socket, _this.options);
|
|
2023
2413
|
break;
|
|
2024
2414
|
|
|
2025
|
-
case
|
|
2415
|
+
case _enums__WEBPACK_IMPORTED_MODULE_9__.ScriptelMessageClass.RenderedImage:
|
|
2026
2416
|
render(msg, _this.options, _babel_runtime_helpers_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2___default()(_this));
|
|
2027
2417
|
break;
|
|
2028
2418
|
|
|
2029
|
-
case
|
|
2419
|
+
case _enums__WEBPACK_IMPORTED_MODULE_9__.ScriptelMessageClass.ScriptelException:
|
|
2030
2420
|
d("Scriptel Exception Error: ".concat(msg.message));
|
|
2031
2421
|
break;
|
|
2032
2422
|
|
|
2033
|
-
case
|
|
2423
|
+
case _enums__WEBPACK_IMPORTED_MODULE_9__.ScriptelMessageClass.ButtonPress:
|
|
2034
2424
|
if (msg.label === 'Cancel') _this.emit('cancel');
|
|
2035
2425
|
break;
|
|
2036
2426
|
|
|
2037
|
-
case
|
|
2427
|
+
case _enums__WEBPACK_IMPORTED_MODULE_9__.ScriptelMessageClass.ButtonDown:
|
|
2038
2428
|
if (msg.label === 'OK') _this.emit('okButtonDown');
|
|
2039
2429
|
break;
|
|
2040
2430
|
|
|
2041
|
-
case
|
|
2431
|
+
case _enums__WEBPACK_IMPORTED_MODULE_9__.ScriptelMessageClass.PenMove:
|
|
2042
2432
|
_this.emit('penMove');
|
|
2043
2433
|
|
|
2044
2434
|
break;
|
|
2045
2435
|
|
|
2046
|
-
case
|
|
2436
|
+
case _enums__WEBPACK_IMPORTED_MODULE_9__.ScriptelMessageClass.PenUp:
|
|
2047
2437
|
_this.emit('penUp');
|
|
2048
2438
|
|
|
2049
2439
|
break;
|
|
@@ -2071,7 +2461,7 @@ var ScriptelSocket = /*#__PURE__*/function (_EventEmitter) {
|
|
|
2071
2461
|
}]);
|
|
2072
2462
|
|
|
2073
2463
|
return ScriptelSocket;
|
|
2074
|
-
}((
|
|
2464
|
+
}((eventemitter3__WEBPACK_IMPORTED_MODULE_8___default()));
|
|
2075
2465
|
|
|
2076
2466
|
/***/ }),
|
|
2077
2467
|
|
|
@@ -2329,12 +2719,15 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2329
2719
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__);
|
|
2330
2720
|
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
|
|
2331
2721
|
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_5__);
|
|
2332
|
-
/* harmony import */ var
|
|
2333
|
-
/* harmony import */ var
|
|
2334
|
-
/* harmony import */ var
|
|
2722
|
+
/* harmony import */ var social_insurance_number__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! social-insurance-number */ "social-insurance-number");
|
|
2723
|
+
/* harmony import */ var social_insurance_number__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(social_insurance_number__WEBPACK_IMPORTED_MODULE_6__);
|
|
2724
|
+
/* harmony import */ var _MaskedInput_useMaskedInput__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../MaskedInput/useMaskedInput */ "./inputs/MaskedInput/useMaskedInput.ts");
|
|
2725
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
2726
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__);
|
|
2335
2727
|
|
|
2336
2728
|
|
|
2337
2729
|
|
|
2730
|
+
var _excluded = ["value", "onChange"];
|
|
2338
2731
|
|
|
2339
2732
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/inputs/SinInput/SinInput.tsx",
|
|
2340
2733
|
_s = $RefreshSig$();
|
|
@@ -2350,142 +2743,89 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
2350
2743
|
|
|
2351
2744
|
|
|
2352
2745
|
var d = debug__WEBPACK_IMPORTED_MODULE_3___default()('thx.controls.inputs.SinInput');
|
|
2353
|
-
// if we click edit the value is set to an empty string.
|
|
2354
|
-
// if we click delete the value is set to an empty string.
|
|
2355
|
-
// if we click cancel the value is set to undefined.
|
|
2356
|
-
// if we change it we set it to the given string.
|
|
2357
2746
|
function SinInput(props) {
|
|
2358
2747
|
_s();
|
|
2359
2748
|
|
|
2360
|
-
var
|
|
2749
|
+
var value = props.value,
|
|
2361
2750
|
onChange = props.onChange,
|
|
2362
|
-
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2___default()(props,
|
|
2751
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2___default()(props, _excluded);
|
|
2363
2752
|
|
|
2364
|
-
var _useState = (0,react__WEBPACK_IMPORTED_MODULE_4__.useState)(
|
|
2753
|
+
var _useState = (0,react__WEBPACK_IMPORTED_MODULE_4__.useState)('black'),
|
|
2365
2754
|
_useState2 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default()(_useState, 2),
|
|
2366
|
-
|
|
2367
|
-
|
|
2368
|
-
|
|
2369
|
-
var
|
|
2370
|
-
|
|
2371
|
-
|
|
2372
|
-
|
|
2755
|
+
color = _useState2[0],
|
|
2756
|
+
setColor = _useState2[1];
|
|
2757
|
+
|
|
2758
|
+
var checkValidation = (0,react__WEBPACK_IMPORTED_MODULE_4__.useCallback)(function (valueArray) {
|
|
2759
|
+
var num = valueArray.join('').replaceAll(/(_|\s|-)/g, '');
|
|
2760
|
+
var validate = new (social_insurance_number__WEBPACK_IMPORTED_MODULE_6___default())(num);
|
|
2761
|
+
|
|
2762
|
+
if (num.length > 0) {
|
|
2763
|
+
if (validate.isValid()) {
|
|
2764
|
+
setColor('green');
|
|
2765
|
+
} else {
|
|
2766
|
+
setColor('red');
|
|
2767
|
+
}
|
|
2768
|
+
} else {
|
|
2769
|
+
setColor('black');
|
|
2770
|
+
}
|
|
2373
2771
|
|
|
2374
|
-
|
|
2375
|
-
|
|
2376
|
-
|
|
2772
|
+
return validate.isValid();
|
|
2773
|
+
}, []);
|
|
2774
|
+
var mask = (0,react__WEBPACK_IMPORTED_MODULE_4__.useMemo)(function () {
|
|
2775
|
+
return {
|
|
2776
|
+
mask: '999-999-999',
|
|
2777
|
+
isComplete: checkValidation,
|
|
2778
|
+
greedy: false,
|
|
2779
|
+
autoUnmask: true
|
|
2780
|
+
};
|
|
2781
|
+
}, [checkValidation]);
|
|
2782
|
+
var cardNumberRef = (0,_MaskedInput_useMaskedInput__WEBPACK_IMPORTED_MODULE_7__.useMaskedInput)({
|
|
2783
|
+
mask: mask,
|
|
2784
|
+
value: value,
|
|
2785
|
+
onChange: function (_onChange) {
|
|
2786
|
+
function onChange(_x) {
|
|
2787
|
+
return _onChange.apply(this, arguments);
|
|
2788
|
+
}
|
|
2377
2789
|
|
|
2790
|
+
onChange.toString = function () {
|
|
2791
|
+
return _onChange.toString();
|
|
2792
|
+
};
|
|
2378
2793
|
|
|
2379
|
-
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
|
|
2386
|
-
|
|
2387
|
-
|
|
2388
|
-
|
|
2389
|
-
|
|
2390
|
-
|
|
2391
|
-
lineNumber: 28,
|
|
2392
|
-
columnNumber: 4
|
|
2393
|
-
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_5__.Popup, {
|
|
2394
|
-
content: "edit",
|
|
2395
|
-
trigger: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_5__.Button, {
|
|
2396
|
-
type: "button",
|
|
2397
|
-
onClick: function onClick() {
|
|
2398
|
-
setEdit(true);
|
|
2399
|
-
handleChange('');
|
|
2400
|
-
},
|
|
2401
|
-
color: "orange",
|
|
2402
|
-
icon: true,
|
|
2403
|
-
children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_5__.Icon, {
|
|
2404
|
-
name: "edit"
|
|
2405
|
-
}, void 0, false, {
|
|
2406
|
-
fileName: _jsxFileName,
|
|
2407
|
-
lineNumber: 43,
|
|
2408
|
-
columnNumber: 7
|
|
2409
|
-
}, this)
|
|
2410
|
-
}, void 0, false, {
|
|
2411
|
-
fileName: _jsxFileName,
|
|
2412
|
-
lineNumber: 34,
|
|
2413
|
-
columnNumber: 6
|
|
2414
|
-
}, this)
|
|
2794
|
+
return onChange;
|
|
2795
|
+
}(function (v) {
|
|
2796
|
+
onChange && onChange(v);
|
|
2797
|
+
}),
|
|
2798
|
+
onSet: function onSet(v) {
|
|
2799
|
+
checkValidation([v || '']);
|
|
2800
|
+
}
|
|
2801
|
+
});
|
|
2802
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_5__.Input, _objectSpread(_objectSpread({}, rest), {}, {
|
|
2803
|
+
icon: true,
|
|
2804
|
+
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("input", {
|
|
2805
|
+
ref: cardNumberRef
|
|
2415
2806
|
}, void 0, false, {
|
|
2416
2807
|
fileName: _jsxFileName,
|
|
2417
|
-
lineNumber:
|
|
2808
|
+
lineNumber: 57,
|
|
2418
2809
|
columnNumber: 4
|
|
2419
|
-
}, this), /*#__PURE__*/(0,
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
type: "button",
|
|
2424
|
-
icon: true,
|
|
2425
|
-
onClick: function onClick() {
|
|
2426
|
-
setDoDelete(true);
|
|
2427
|
-
handleChange('');
|
|
2428
|
-
},
|
|
2429
|
-
children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_5__.Icon, {
|
|
2430
|
-
name: "trash alternate"
|
|
2431
|
-
}, void 0, false, {
|
|
2432
|
-
fileName: _jsxFileName,
|
|
2433
|
-
lineNumber: 59,
|
|
2434
|
-
columnNumber: 7
|
|
2435
|
-
}, this)
|
|
2436
|
-
}, void 0, false, {
|
|
2437
|
-
fileName: _jsxFileName,
|
|
2438
|
-
lineNumber: 50,
|
|
2439
|
-
columnNumber: 6
|
|
2440
|
-
}, this)
|
|
2810
|
+
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_5__.Icon, {
|
|
2811
|
+
name: "id badge",
|
|
2812
|
+
color: color,
|
|
2813
|
+
size: "large"
|
|
2441
2814
|
}, void 0, false, {
|
|
2442
2815
|
fileName: _jsxFileName,
|
|
2443
|
-
lineNumber:
|
|
2444
|
-
columnNumber: 4
|
|
2445
|
-
}, this)]
|
|
2446
|
-
}, void 0, true) :
|
|
2447
|
-
/*#__PURE__*/
|
|
2448
|
-
// if we dont have a SIN
|
|
2449
|
-
(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.Fragment, {
|
|
2450
|
-
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(_MaskedInput__WEBPACK_IMPORTED_MODULE_6__.MaskedInput, _objectSpread(_objectSpread({}, rest), {}, {
|
|
2451
|
-
onChange: handleChange,
|
|
2452
|
-
mask: {
|
|
2453
|
-
mask: '999-999-999',
|
|
2454
|
-
greedy: false,
|
|
2455
|
-
autoUnmask: true
|
|
2456
|
-
}
|
|
2457
|
-
}), void 0, false, {
|
|
2458
|
-
fileName: _jsxFileName,
|
|
2459
|
-
lineNumber: 67,
|
|
2816
|
+
lineNumber: 58,
|
|
2460
2817
|
columnNumber: 4
|
|
2461
|
-
}, this), edit && /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_5__.Button, {
|
|
2462
|
-
type: "button",
|
|
2463
|
-
onClick: function onClick() {
|
|
2464
|
-
setEdit(false);
|
|
2465
|
-
handleChange(undefined);
|
|
2466
|
-
},
|
|
2467
|
-
children: "Cancel"
|
|
2468
|
-
}, void 0, false, {
|
|
2469
|
-
fileName: _jsxFileName,
|
|
2470
|
-
lineNumber: 70,
|
|
2471
|
-
columnNumber: 5
|
|
2472
|
-
}, this), doDelete && /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_5__.Button, {
|
|
2473
|
-
color: "orange",
|
|
2474
|
-
type: "button",
|
|
2475
|
-
onClick: function onClick() {
|
|
2476
|
-
setDoDelete(false);
|
|
2477
|
-
handleChange(undefined);
|
|
2478
|
-
},
|
|
2479
|
-
children: "Undo"
|
|
2480
|
-
}, void 0, false, {
|
|
2481
|
-
fileName: _jsxFileName,
|
|
2482
|
-
lineNumber: 81,
|
|
2483
|
-
columnNumber: 5
|
|
2484
2818
|
}, this)]
|
|
2485
|
-
}, void 0, true
|
|
2819
|
+
}), void 0, true, {
|
|
2820
|
+
fileName: _jsxFileName,
|
|
2821
|
+
lineNumber: 56,
|
|
2822
|
+
columnNumber: 3
|
|
2823
|
+
}, this);
|
|
2486
2824
|
}
|
|
2487
2825
|
|
|
2488
|
-
_s(SinInput, "
|
|
2826
|
+
_s(SinInput, "jWyiZuExrAnOzUol/0RzfJlCPSI=", false, function () {
|
|
2827
|
+
return [_MaskedInput_useMaskedInput__WEBPACK_IMPORTED_MODULE_7__.useMaskedInput];
|
|
2828
|
+
});
|
|
2489
2829
|
|
|
2490
2830
|
_c = SinInput;
|
|
2491
2831
|
|
|
@@ -2532,6 +2872,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2532
2872
|
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__);
|
|
2533
2873
|
|
|
2534
2874
|
|
|
2875
|
+
var _excluded = ["value", "onChange"];
|
|
2535
2876
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/inputs/TableInput/DropdownCell.tsx";
|
|
2536
2877
|
|
|
2537
2878
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -2550,7 +2891,7 @@ function DropdownCell(dropdownProps) {
|
|
|
2550
2891
|
|
|
2551
2892
|
var v = dropdownProps.value,
|
|
2552
2893
|
_onChange = dropdownProps.onChange,
|
|
2553
|
-
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(dropdownProps,
|
|
2894
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(dropdownProps, _excluded);
|
|
2554
2895
|
|
|
2555
2896
|
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_3__.Dropdown, _objectSpread(_objectSpread({}, rest), {}, {
|
|
2556
2897
|
value: value,
|
|
@@ -3191,23 +3532,27 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3191
3532
|
/* harmony export */ });
|
|
3192
3533
|
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
|
|
3193
3534
|
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
|
|
3194
|
-
/* harmony import */ var
|
|
3195
|
-
/* harmony import */ var
|
|
3196
|
-
/* harmony import */ var
|
|
3197
|
-
/* harmony import */ var
|
|
3198
|
-
/* harmony import */ var
|
|
3199
|
-
/* harmony import */ var
|
|
3200
|
-
/* harmony import */ var
|
|
3201
|
-
/* harmony import */ var
|
|
3202
|
-
/* harmony import */ var
|
|
3203
|
-
/* harmony import */ var
|
|
3204
|
-
/* harmony import */ var
|
|
3205
|
-
/* harmony import */ var
|
|
3206
|
-
/* harmony import */ var
|
|
3207
|
-
/* harmony import */ var
|
|
3208
|
-
/* harmony import */ var
|
|
3535
|
+
/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "@babel/runtime/helpers/slicedToArray");
|
|
3536
|
+
/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__);
|
|
3537
|
+
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "@babel/runtime/helpers/objectWithoutProperties");
|
|
3538
|
+
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__);
|
|
3539
|
+
/* harmony import */ var _thx_money__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @thx/money */ "@thx/money");
|
|
3540
|
+
/* harmony import */ var _thx_money__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_thx_money__WEBPACK_IMPORTED_MODULE_3__);
|
|
3541
|
+
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! debug */ "debug");
|
|
3542
|
+
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_4__);
|
|
3543
|
+
/* harmony import */ var js_money__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! js-money */ "js-money");
|
|
3544
|
+
/* harmony import */ var js_money__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(js_money__WEBPACK_IMPORTED_MODULE_5__);
|
|
3545
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ "react");
|
|
3546
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);
|
|
3547
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
|
|
3548
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_7__);
|
|
3549
|
+
/* harmony import */ var _useMoneyInput__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../useMoneyInput */ "./money/useMoneyInput.ts");
|
|
3550
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
3551
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__);
|
|
3552
|
+
|
|
3209
3553
|
|
|
3210
3554
|
|
|
3555
|
+
var _excluded = ["name", "onBlur", "prefix", "defaultCurrency", "onChange", "showPrefix", "value", "wholeNumber", "currencies", "locked"];
|
|
3211
3556
|
|
|
3212
3557
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/money/MoneyCurrencyInput/MoneyCurrencyInput.tsx",
|
|
3213
3558
|
_s = $RefreshSig$();
|
|
@@ -3225,7 +3570,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
3225
3570
|
|
|
3226
3571
|
|
|
3227
3572
|
|
|
3228
|
-
var d =
|
|
3573
|
+
var d = debug__WEBPACK_IMPORTED_MODULE_4___default()('thx.controls.money.MoneyCurrencyInput');
|
|
3229
3574
|
function MoneyCurrencyInput(props) {
|
|
3230
3575
|
_s();
|
|
3231
3576
|
|
|
@@ -3239,17 +3584,7 @@ function MoneyCurrencyInput(props) {
|
|
|
3239
3584
|
wholeNumber = props.wholeNumber,
|
|
3240
3585
|
currencies = props.currencies,
|
|
3241
3586
|
locked = props.locked,
|
|
3242
|
-
rest =
|
|
3243
|
-
|
|
3244
|
-
var _useMoneyInput = (0,_useMoneyInput__WEBPACK_IMPORTED_MODULE_7__.useMoneyInput)({
|
|
3245
|
-
defaultCurrency: defaultCurrency,
|
|
3246
|
-
onChange: onChange,
|
|
3247
|
-
prefix: prefix,
|
|
3248
|
-
showPrefix: showPrefix,
|
|
3249
|
-
value: value,
|
|
3250
|
-
wholeNumber: wholeNumber
|
|
3251
|
-
}),
|
|
3252
|
-
inputElement = _useMoneyInput.inputElement;
|
|
3587
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2___default()(props, _excluded);
|
|
3253
3588
|
|
|
3254
3589
|
var options = currencies || [{
|
|
3255
3590
|
key: 'CAD',
|
|
@@ -3260,49 +3595,71 @@ function MoneyCurrencyInput(props) {
|
|
|
3260
3595
|
text: 'USD',
|
|
3261
3596
|
value: 'USD'
|
|
3262
3597
|
}];
|
|
3598
|
+
var handleChange = (0,react__WEBPACK_IMPORTED_MODULE_6__.useCallback)(function (v) {
|
|
3599
|
+
if (!v) {
|
|
3600
|
+
onChange && onChange((0,_thx_money__WEBPACK_IMPORTED_MODULE_3__.toMoney)(0, defaultCurrency));
|
|
3601
|
+
} else {
|
|
3602
|
+
onChange && onChange(v);
|
|
3603
|
+
}
|
|
3604
|
+
}, [defaultCurrency, onChange]);
|
|
3605
|
+
var val = !(value instanceof (js_money__WEBPACK_IMPORTED_MODULE_5___default())) && value !== undefined ? (0,_thx_money__WEBPACK_IMPORTED_MODULE_3__.toMoney)(value) : value;
|
|
3263
3606
|
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
|
|
3268
|
-
|
|
3269
|
-
|
|
3607
|
+
var _useMoneyInput = (0,_useMoneyInput__WEBPACK_IMPORTED_MODULE_8__.useMoneyInput)({
|
|
3608
|
+
onChange: handleChange,
|
|
3609
|
+
prefix: prefix,
|
|
3610
|
+
showPrefix: showPrefix,
|
|
3611
|
+
value: val,
|
|
3612
|
+
wholeNumber: wholeNumber
|
|
3613
|
+
}),
|
|
3614
|
+
_useMoneyInput2 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default()(_useMoneyInput, 1),
|
|
3615
|
+
inputElement = _useMoneyInput2[0];
|
|
3616
|
+
|
|
3617
|
+
var handleDropdownChange = (0,react__WEBPACK_IMPORTED_MODULE_6__.useCallback)(function (e, v) {
|
|
3618
|
+
var newCurrencyCode = v.value;
|
|
3619
|
+
var newMoney = new (js_money__WEBPACK_IMPORTED_MODULE_5___default())((value === null || value === void 0 ? void 0 : value.amount) || 0, newCurrencyCode);
|
|
3620
|
+
d('Change', value, newCurrencyCode, newMoney); // setInputValue(newMoney);
|
|
3621
|
+
|
|
3622
|
+
onChange && onChange(newMoney); // forceUpdate();
|
|
3623
|
+
}, [onChange, value]);
|
|
3624
|
+
var currencyCode = (value === null || value === void 0 ? void 0 : value.currency) || (defaultCurrency === null || defaultCurrency === void 0 ? void 0 : defaultCurrency.code) || 'CAD';
|
|
3625
|
+
d('Render', value, currencyCode);
|
|
3626
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_7__.Input, _objectSpread(_objectSpread({}, rest), {}, {
|
|
3270
3627
|
labelPosition: "right",
|
|
3271
|
-
children: [/*#__PURE__*/(0,
|
|
3628
|
+
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxDEV)("input", {
|
|
3272
3629
|
name: name,
|
|
3273
3630
|
ref: inputElement,
|
|
3274
3631
|
onBlur: onBlur,
|
|
3275
3632
|
readOnly: locked
|
|
3276
3633
|
}, void 0, false, {
|
|
3277
3634
|
fileName: _jsxFileName,
|
|
3278
|
-
lineNumber:
|
|
3635
|
+
lineNumber: 57,
|
|
3279
3636
|
columnNumber: 4
|
|
3280
|
-
}, this), /*#__PURE__*/(0,
|
|
3637
|
+
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_7__.Label, {
|
|
3281
3638
|
basic: true,
|
|
3282
|
-
children: /*#__PURE__*/(0,
|
|
3639
|
+
children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_7__.Dropdown, {
|
|
3283
3640
|
disabled: locked,
|
|
3284
3641
|
options: options,
|
|
3285
|
-
value:
|
|
3642
|
+
value: currencyCode,
|
|
3286
3643
|
onChange: handleDropdownChange
|
|
3287
3644
|
}, void 0, false, {
|
|
3288
3645
|
fileName: _jsxFileName,
|
|
3289
|
-
lineNumber:
|
|
3646
|
+
lineNumber: 59,
|
|
3290
3647
|
columnNumber: 5
|
|
3291
3648
|
}, this)
|
|
3292
3649
|
}, void 0, false, {
|
|
3293
3650
|
fileName: _jsxFileName,
|
|
3294
|
-
lineNumber:
|
|
3651
|
+
lineNumber: 58,
|
|
3295
3652
|
columnNumber: 4
|
|
3296
3653
|
}, this)]
|
|
3297
3654
|
}), void 0, true, {
|
|
3298
3655
|
fileName: _jsxFileName,
|
|
3299
|
-
lineNumber:
|
|
3656
|
+
lineNumber: 56,
|
|
3300
3657
|
columnNumber: 3
|
|
3301
3658
|
}, this);
|
|
3302
3659
|
}
|
|
3303
3660
|
|
|
3304
|
-
_s(MoneyCurrencyInput, "
|
|
3305
|
-
return [
|
|
3661
|
+
_s(MoneyCurrencyInput, "Fcek2bCp4hfSWAilxJqXOkS1juU=", false, function () {
|
|
3662
|
+
return [_useMoneyInput__WEBPACK_IMPORTED_MODULE_8__.useMoneyInput];
|
|
3306
3663
|
});
|
|
3307
3664
|
|
|
3308
3665
|
_c = MoneyCurrencyInput;
|
|
@@ -3340,19 +3697,27 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
3340
3697
|
/* harmony export */ });
|
|
3341
3698
|
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
|
|
3342
3699
|
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
|
|
3343
|
-
/* harmony import */ var
|
|
3344
|
-
/* harmony import */ var
|
|
3345
|
-
/* harmony import */ var
|
|
3346
|
-
/* harmony import */ var
|
|
3347
|
-
/* harmony import */ var
|
|
3348
|
-
/* harmony import */ var
|
|
3349
|
-
/* harmony import */ var
|
|
3350
|
-
/* harmony import */ var
|
|
3351
|
-
/* harmony import */ var
|
|
3352
|
-
/* harmony import */ var
|
|
3353
|
-
/* harmony import */ var
|
|
3700
|
+
/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "@babel/runtime/helpers/slicedToArray");
|
|
3701
|
+
/* harmony import */ var _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1__);
|
|
3702
|
+
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "@babel/runtime/helpers/objectWithoutProperties");
|
|
3703
|
+
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__);
|
|
3704
|
+
/* harmony import */ var _thx_money__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @thx/money */ "@thx/money");
|
|
3705
|
+
/* harmony import */ var _thx_money__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_thx_money__WEBPACK_IMPORTED_MODULE_3__);
|
|
3706
|
+
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! debug */ "debug");
|
|
3707
|
+
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_4__);
|
|
3708
|
+
/* harmony import */ var js_money__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! js-money */ "js-money");
|
|
3709
|
+
/* harmony import */ var js_money__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(js_money__WEBPACK_IMPORTED_MODULE_5__);
|
|
3710
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ "react");
|
|
3711
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);
|
|
3712
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
|
|
3713
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_7__);
|
|
3714
|
+
/* harmony import */ var _useMoneyInput__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../useMoneyInput */ "./money/useMoneyInput.ts");
|
|
3715
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
3716
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__);
|
|
3717
|
+
|
|
3354
3718
|
|
|
3355
3719
|
|
|
3720
|
+
var _excluded = ["name", "onBlur", "locked", "prefix", "defaultCurrency", "onChange", "showPrefix", "value", "wholeNumber"];
|
|
3356
3721
|
|
|
3357
3722
|
var _jsxFileName = "/home/mike/dev/thr-addons/packages/controls/src/money/MoneyInput/MoneyInput.tsx",
|
|
3358
3723
|
_s = $RefreshSig$();
|
|
@@ -3361,13 +3726,16 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
3361
3726
|
|
|
3362
3727
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
3363
3728
|
|
|
3729
|
+
|
|
3364
3730
|
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
|
3365
3731
|
|
|
3366
3732
|
|
|
3367
3733
|
|
|
3368
3734
|
|
|
3369
3735
|
|
|
3370
|
-
|
|
3736
|
+
|
|
3737
|
+
|
|
3738
|
+
var d = debug__WEBPACK_IMPORTED_MODULE_4___default()('thx.controls.money.MoneyInput');
|
|
3371
3739
|
function MoneyInput(props) {
|
|
3372
3740
|
_s();
|
|
3373
3741
|
|
|
@@ -3380,38 +3748,47 @@ function MoneyInput(props) {
|
|
|
3380
3748
|
showPrefix = props.showPrefix,
|
|
3381
3749
|
value = props.value,
|
|
3382
3750
|
wholeNumber = props.wholeNumber,
|
|
3383
|
-
rest =
|
|
3751
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2___default()(props, _excluded);
|
|
3752
|
+
|
|
3753
|
+
var handleChange = (0,react__WEBPACK_IMPORTED_MODULE_6__.useCallback)(function (v) {
|
|
3754
|
+
if (!v) {
|
|
3755
|
+
onChange && onChange((0,_thx_money__WEBPACK_IMPORTED_MODULE_3__.toMoney)(0, defaultCurrency));
|
|
3756
|
+
} else {
|
|
3757
|
+
onChange && onChange(v);
|
|
3758
|
+
}
|
|
3759
|
+
}, [defaultCurrency, onChange]);
|
|
3760
|
+
var val = !(value instanceof (js_money__WEBPACK_IMPORTED_MODULE_5___default())) && value !== undefined ? (0,_thx_money__WEBPACK_IMPORTED_MODULE_3__.toMoney)(value) : value;
|
|
3384
3761
|
|
|
3385
|
-
var _useMoneyInput = (0,
|
|
3386
|
-
|
|
3387
|
-
onChange: onChange,
|
|
3762
|
+
var _useMoneyInput = (0,_useMoneyInput__WEBPACK_IMPORTED_MODULE_8__.useMoneyInput)({
|
|
3763
|
+
onChange: handleChange,
|
|
3388
3764
|
prefix: prefix,
|
|
3389
3765
|
showPrefix: showPrefix,
|
|
3390
|
-
value:
|
|
3766
|
+
value: val,
|
|
3391
3767
|
wholeNumber: wholeNumber
|
|
3392
3768
|
}),
|
|
3393
|
-
|
|
3769
|
+
_useMoneyInput2 = _babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default()(_useMoneyInput, 1),
|
|
3770
|
+
inputElement = _useMoneyInput2[0];
|
|
3394
3771
|
|
|
3395
|
-
return /*#__PURE__*/(0,
|
|
3396
|
-
children: /*#__PURE__*/(0,
|
|
3772
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_7__.Input, _objectSpread(_objectSpread({}, rest), {}, {
|
|
3773
|
+
children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxDEV)("input", {
|
|
3397
3774
|
name: name,
|
|
3398
3775
|
ref: inputElement,
|
|
3399
3776
|
onBlur: onBlur,
|
|
3400
3777
|
readOnly: locked
|
|
3401
3778
|
}, void 0, false, {
|
|
3402
3779
|
fileName: _jsxFileName,
|
|
3403
|
-
lineNumber:
|
|
3780
|
+
lineNumber: 43,
|
|
3404
3781
|
columnNumber: 4
|
|
3405
3782
|
}, this)
|
|
3406
3783
|
}), void 0, false, {
|
|
3407
3784
|
fileName: _jsxFileName,
|
|
3408
|
-
lineNumber:
|
|
3785
|
+
lineNumber: 42,
|
|
3409
3786
|
columnNumber: 3
|
|
3410
3787
|
}, this);
|
|
3411
3788
|
}
|
|
3412
3789
|
|
|
3413
|
-
_s(MoneyInput, "
|
|
3414
|
-
return [
|
|
3790
|
+
_s(MoneyInput, "rDHjOMB4aOZuIvLkNHsA4XLdOAc=", false, function () {
|
|
3791
|
+
return [_useMoneyInput__WEBPACK_IMPORTED_MODULE_8__.useMoneyInput];
|
|
3415
3792
|
});
|
|
3416
3793
|
|
|
3417
3794
|
_c = MoneyInput;
|
|
@@ -3470,40 +3847,48 @@ function useMoneyInput(props) {
|
|
|
3470
3847
|
|
|
3471
3848
|
var value = props.value,
|
|
3472
3849
|
onChange = props.onChange,
|
|
3473
|
-
|
|
3850
|
+
onSet = props.onSet,
|
|
3474
3851
|
showPrefix = props.showPrefix,
|
|
3475
3852
|
prefix = props.prefix,
|
|
3476
3853
|
wholeNumber = props.wholeNumber;
|
|
3477
3854
|
var inputElement = (0,react__WEBPACK_IMPORTED_MODULE_4__.useRef)(null);
|
|
3478
3855
|
var maskInstance = (0,react__WEBPACK_IMPORTED_MODULE_4__.useRef)(null); // set the adjCurrency
|
|
3856
|
+
// let adjCurrency = Money.CAD;
|
|
3857
|
+
// if (value?.currency && Money[value?.currency]) adjCurrency = Money[value?.currency];
|
|
3858
|
+
// if (defaultCurrency) adjCurrency = defaultCurrency;
|
|
3479
3859
|
|
|
3480
|
-
var
|
|
3481
|
-
|
|
3482
|
-
if (value !== null && value !== void 0 && value.currency && (js_money__WEBPACK_IMPORTED_MODULE_3___default())[value === null || value === void 0 ? void 0 : value.currency]) adjCurrency = (js_money__WEBPACK_IMPORTED_MODULE_3___default())[value === null || value === void 0 ? void 0 : value.currency];
|
|
3483
|
-
if (defaultCurrency) adjCurrency = defaultCurrency;
|
|
3860
|
+
var currencyCode = (value === null || value === void 0 ? void 0 : value.currency) || 'CAD';
|
|
3484
3861
|
(0,react__WEBPACK_IMPORTED_MODULE_4__.useEffect)(function () {
|
|
3485
3862
|
if (!inputElement.current) throw new Error('Could not get input element');
|
|
3486
3863
|
d('Creating input mask instance');
|
|
3487
3864
|
maskInstance.current = new (inputmask__WEBPACK_IMPORTED_MODULE_2___default())({
|
|
3488
3865
|
alias: 'numeric',
|
|
3489
3866
|
groupSeparator: ',',
|
|
3490
|
-
digits: wholeNumber ? '0' :
|
|
3867
|
+
digits: wholeNumber ? '0' : (js_money__WEBPACK_IMPORTED_MODULE_3___default())[currencyCode].decimal_digits.toString(),
|
|
3491
3868
|
digitsOptional: false,
|
|
3492
|
-
prefix: showPrefix ? prefix ||
|
|
3869
|
+
prefix: showPrefix ? prefix || (js_money__WEBPACK_IMPORTED_MODULE_3___default())[currencyCode].symbol : undefined,
|
|
3493
3870
|
placeholder: '0',
|
|
3494
3871
|
autoUnmask: true,
|
|
3495
3872
|
oncomplete: function oncomplete() {
|
|
3496
|
-
|
|
3873
|
+
if (onChange) {
|
|
3874
|
+
var _inputElement$current;
|
|
3497
3875
|
|
|
3498
|
-
|
|
3876
|
+
if ((_inputElement$current = inputElement.current) !== null && _inputElement$current !== void 0 && _inputElement$current.value) {
|
|
3877
|
+
var _inputElement$current2;
|
|
3878
|
+
|
|
3879
|
+
onChange((0,_thx_money__WEBPACK_IMPORTED_MODULE_0__.toMoney)((_inputElement$current2 = inputElement.current) === null || _inputElement$current2 === void 0 ? void 0 : _inputElement$current2.value, currencyCode));
|
|
3880
|
+
} else {
|
|
3881
|
+
onChange();
|
|
3882
|
+
}
|
|
3883
|
+
}
|
|
3499
3884
|
},
|
|
3500
3885
|
oncleared: function oncleared() {
|
|
3501
|
-
if (onChange) onChange(
|
|
3886
|
+
if (onChange) onChange();
|
|
3502
3887
|
},
|
|
3503
3888
|
onincomplete: function onincomplete() {
|
|
3504
|
-
var _inputElement$
|
|
3889
|
+
var _inputElement$current3;
|
|
3505
3890
|
|
|
3506
|
-
if (onChange) onChange((0,_thx_money__WEBPACK_IMPORTED_MODULE_0__.toMoney)((_inputElement$
|
|
3891
|
+
if (onChange) onChange((0,_thx_money__WEBPACK_IMPORTED_MODULE_0__.toMoney)((_inputElement$current3 = inputElement.current) === null || _inputElement$current3 === void 0 ? void 0 : _inputElement$current3.value, currencyCode));
|
|
3507
3892
|
}
|
|
3508
3893
|
});
|
|
3509
3894
|
maskInstance.current.mask(inputElement.current);
|
|
@@ -3514,35 +3899,36 @@ function useMoneyInput(props) {
|
|
|
3514
3899
|
maskInstance.current = null;
|
|
3515
3900
|
}
|
|
3516
3901
|
};
|
|
3517
|
-
}, [
|
|
3902
|
+
}, [currencyCode, prefix, showPrefix, wholeNumber]);
|
|
3903
|
+
var setVal = (0,react__WEBPACK_IMPORTED_MODULE_4__.useCallback)(function (v) {
|
|
3904
|
+
if (inputElement.current) {
|
|
3905
|
+
d('Value is being set:', v);
|
|
3906
|
+
|
|
3907
|
+
if (v) {
|
|
3908
|
+
inputElement.current.value = v.toDecimal().toString();
|
|
3909
|
+
} else {
|
|
3910
|
+
inputElement.current.value = '';
|
|
3911
|
+
}
|
|
3912
|
+
|
|
3913
|
+
onSet && onSet(v);
|
|
3914
|
+
}
|
|
3915
|
+
}, [onSet]); // If we change the value prop we need to sync the DOM value to display the new value
|
|
3518
3916
|
|
|
3519
3917
|
(0,react__WEBPACK_IMPORTED_MODULE_4__.useEffect)(function () {
|
|
3520
|
-
var _inputElement$
|
|
3918
|
+
var _inputElement$current4;
|
|
3521
3919
|
|
|
3522
|
-
var
|
|
3920
|
+
var whatCurrentlyIsDisplayed = ((_inputElement$current4 = inputElement.current) === null || _inputElement$current4 === void 0 ? void 0 : _inputElement$current4.value) || ''; // string | undef
|
|
3523
3921
|
|
|
3524
|
-
|
|
3525
|
-
inputElement.current.value = '';
|
|
3526
|
-
} else if (value instanceof (js_money__WEBPACK_IMPORTED_MODULE_3___default()) && inputElement.current) {
|
|
3527
|
-
if (!inputValue.equals(value)) {
|
|
3528
|
-
inputElement.current.value = value.toString();
|
|
3529
|
-
}
|
|
3530
|
-
} else if ((0,_thx_money__WEBPACK_IMPORTED_MODULE_0__.isMoneyObject)(value) && inputElement.current) {
|
|
3531
|
-
var valueInMoney = (0,_thx_money__WEBPACK_IMPORTED_MODULE_0__.toMoney)(value);
|
|
3922
|
+
var whatWeAreSetting = value ? value.toString() : ''; // money | undef
|
|
3532
3923
|
|
|
3533
|
-
|
|
3534
|
-
|
|
3535
|
-
}
|
|
3536
|
-
} else {
|
|
3537
|
-
throw new Error("Value must be a Money instance or IMoneyObject: ".concat(value, " (").concat(typeof value));
|
|
3924
|
+
if (whatCurrentlyIsDisplayed !== whatWeAreSetting) {
|
|
3925
|
+
setVal(value);
|
|
3538
3926
|
}
|
|
3539
|
-
}, [
|
|
3540
|
-
return
|
|
3541
|
-
inputElement: inputElement
|
|
3542
|
-
};
|
|
3927
|
+
}, [setVal, value]);
|
|
3928
|
+
return [inputElement, setVal];
|
|
3543
3929
|
}
|
|
3544
3930
|
|
|
3545
|
-
_s(useMoneyInput, "
|
|
3931
|
+
_s(useMoneyInput, "56k+EB9kpodjnKmpNNvxiCUDcZg=");
|
|
3546
3932
|
|
|
3547
3933
|
/***/ }),
|
|
3548
3934
|
|
|
@@ -4001,20 +4387,99 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
4001
4387
|
/* harmony export */ });
|
|
4002
4388
|
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
|
|
4003
4389
|
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
4004
|
-
/* harmony import */ var
|
|
4390
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "../node_modules/style-loader/dist/runtime/styleDomAPI.js");
|
|
4391
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
4392
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/insertBySelector.js */ "../node_modules/style-loader/dist/runtime/insertBySelector.js");
|
|
4393
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
|
|
4394
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
|
|
4395
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
|
|
4396
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "../node_modules/style-loader/dist/runtime/insertStyleElement.js");
|
|
4397
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
|
|
4398
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "../node_modules/style-loader/dist/runtime/styleTagTransform.js");
|
|
4399
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
|
|
4400
|
+
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./styles.css */ "../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./date/DatePicker/styles.css");
|
|
4401
|
+
|
|
4402
|
+
|
|
4403
|
+
|
|
4404
|
+
|
|
4405
|
+
|
|
4406
|
+
|
|
4407
|
+
|
|
4408
|
+
|
|
4409
|
+
|
|
4410
|
+
|
|
4411
|
+
|
|
4412
|
+
var options = {};
|
|
4413
|
+
|
|
4414
|
+
options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
|
|
4415
|
+
options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
|
|
4416
|
+
|
|
4417
|
+
options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
|
|
4418
|
+
|
|
4419
|
+
options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
|
|
4420
|
+
options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
|
|
4421
|
+
|
|
4422
|
+
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);
|
|
4423
|
+
|
|
4424
|
+
|
|
4425
|
+
|
|
4426
|
+
|
|
4427
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
|
|
4005
4428
|
|
|
4006
|
-
|
|
4429
|
+
|
|
4430
|
+
/***/ }),
|
|
4431
|
+
|
|
4432
|
+
/***/ "./inputs/CreditCardInput/styles.css":
|
|
4433
|
+
/*!*******************************************!*\
|
|
4434
|
+
!*** ./inputs/CreditCardInput/styles.css ***!
|
|
4435
|
+
\*******************************************/
|
|
4436
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
4437
|
+
|
|
4438
|
+
__webpack_require__.r(__webpack_exports__);
|
|
4439
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4440
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
4441
|
+
/* harmony export */ });
|
|
4442
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
|
|
4443
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
4444
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "../node_modules/style-loader/dist/runtime/styleDomAPI.js");
|
|
4445
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
4446
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/insertBySelector.js */ "../node_modules/style-loader/dist/runtime/insertBySelector.js");
|
|
4447
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
|
|
4448
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
|
|
4449
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
|
|
4450
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "../node_modules/style-loader/dist/runtime/insertStyleElement.js");
|
|
4451
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
|
|
4452
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "../node_modules/style-loader/dist/runtime/styleTagTransform.js");
|
|
4453
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
|
|
4454
|
+
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./styles.css */ "../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./inputs/CreditCardInput/styles.css");
|
|
4455
|
+
|
|
4456
|
+
|
|
4457
|
+
|
|
4458
|
+
|
|
4459
|
+
|
|
4460
|
+
|
|
4461
|
+
|
|
4462
|
+
|
|
4463
|
+
|
|
4464
|
+
|
|
4007
4465
|
|
|
4008
4466
|
var options = {};
|
|
4009
4467
|
|
|
4010
|
-
options.
|
|
4011
|
-
options.
|
|
4468
|
+
options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
|
|
4469
|
+
options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
|
|
4470
|
+
|
|
4471
|
+
options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
|
|
4472
|
+
|
|
4473
|
+
options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
|
|
4474
|
+
options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
|
|
4475
|
+
|
|
4476
|
+
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);
|
|
4012
4477
|
|
|
4013
|
-
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_1__.default, options);
|
|
4014
4478
|
|
|
4015
4479
|
|
|
4016
4480
|
|
|
4017
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (
|
|
4481
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
|
|
4482
|
+
|
|
4018
4483
|
|
|
4019
4484
|
/***/ }),
|
|
4020
4485
|
|
|
@@ -4028,17 +4493,45 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
4028
4493
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4029
4494
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
4030
4495
|
/* harmony export */ });
|
|
4031
|
-
/* harmony import */ var
|
|
4032
|
-
/* harmony import */ var
|
|
4496
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../node_modules/css-loader/dist/runtime/sourceMaps.js");
|
|
4497
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
4033
4498
|
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "../node_modules/css-loader/dist/runtime/api.js");
|
|
4034
4499
|
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
4035
4500
|
// Imports
|
|
4036
4501
|
|
|
4037
4502
|
|
|
4038
|
-
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((
|
|
4503
|
+
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
4039
4504
|
// Module
|
|
4040
4505
|
___CSS_LOADER_EXPORT___.push([module.id, ".rw-datetimepicker > input {\n\tborder: none !important;\n}\n\n.rw-datetimepicker .rw-calendar-grid.rw-nav-view .rw-btn {\n\tpadding: 0 !important;\n}\n\n.dateTimePickerAutoWidth {\n\twidth: auto;\n\tdisplay: inline-flex;\n}\n\n.dateTimePickerAutoWidth > input {\n\twidth: auto;\n}\n\n.react-datepicker-wrapper {\n\twidth: 100%;\n\tdisplay: inline !important;\n}\n\n.react-datepicker__input-container {\n\tdisplay: inline !important;\n}\n\n.react-datepicker-popper {\n\tz-index: 5 !important;\n}\n", "",{"version":3,"sources":["webpack://./date/DatePicker/styles.css"],"names":[],"mappings":"AAAA;CACC,uBAAuB;AACxB;;AAEA;CACC,qBAAqB;AACtB;;AAEA;CACC,WAAW;CACX,oBAAoB;AACrB;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,WAAW;CACX,0BAA0B;AAC3B;;AAEA;CACC,0BAA0B;AAC3B;;AAEA;CACC,qBAAqB;AACtB","sourcesContent":[":global(.rw-datetimepicker) > input {\n\tborder: none !important;\n}\n\n:global(.rw-datetimepicker) :global(.rw-calendar-grid.rw-nav-view) :global(.rw-btn) {\n\tpadding: 0 !important;\n}\n\n:global(.dateTimePickerAutoWidth) {\n\twidth: auto;\n\tdisplay: inline-flex;\n}\n\n:global(.dateTimePickerAutoWidth) > input {\n\twidth: auto;\n}\n\n:global(.react-datepicker-wrapper) {\n\twidth: 100%;\n\tdisplay: inline !important;\n}\n\n:global(.react-datepicker__input-container) {\n\tdisplay: inline !important;\n}\n\n:global(.react-datepicker-popper) {\n\tz-index: 5 !important;\n}\n"],"sourceRoot":""}]);
|
|
4041
4506
|
// Exports
|
|
4507
|
+
___CSS_LOADER_EXPORT___.locals = {};
|
|
4508
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
4509
|
+
|
|
4510
|
+
|
|
4511
|
+
/***/ }),
|
|
4512
|
+
|
|
4513
|
+
/***/ "../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./inputs/CreditCardInput/styles.css":
|
|
4514
|
+
/*!**************************************************************************************************************!*\
|
|
4515
|
+
!*** ../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./inputs/CreditCardInput/styles.css ***!
|
|
4516
|
+
\**************************************************************************************************************/
|
|
4517
|
+
/***/ ((module, __webpack_exports__, __webpack_require__) => {
|
|
4518
|
+
|
|
4519
|
+
__webpack_require__.r(__webpack_exports__);
|
|
4520
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
4521
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
4522
|
+
/* harmony export */ });
|
|
4523
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../node_modules/css-loader/dist/runtime/sourceMaps.js");
|
|
4524
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
4525
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "../node_modules/css-loader/dist/runtime/api.js");
|
|
4526
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
4527
|
+
// Imports
|
|
4528
|
+
|
|
4529
|
+
|
|
4530
|
+
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
4531
|
+
// Module
|
|
4532
|
+
___CSS_LOADER_EXPORT___.push([module.id, ".rccs {\n\tmargin: 0 !important;\n}\n", "",{"version":3,"sources":["webpack://./inputs/CreditCardInput/styles.css"],"names":[],"mappings":"AAAA;CACC,oBAAoB;AACrB","sourcesContent":[":global .rccs {\n\tmargin: 0 !important;\n}\n"],"sourceRoot":""}]);
|
|
4533
|
+
// Exports
|
|
4534
|
+
___CSS_LOADER_EXPORT___.locals = {};
|
|
4042
4535
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
4043
4536
|
|
|
4044
4537
|
|
|
@@ -4056,37 +4549,55 @@ ___CSS_LOADER_EXPORT___.push([module.id, ".rw-datetimepicker > input {\n\tborder
|
|
|
4056
4549
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
4057
4550
|
Author Tobias Koppers @sokra
|
|
4058
4551
|
*/
|
|
4059
|
-
// css base code, injected by the css-loader
|
|
4060
|
-
// eslint-disable-next-line func-names
|
|
4061
4552
|
module.exports = function (cssWithMappingToString) {
|
|
4062
4553
|
var list = []; // return the list of modules as css string
|
|
4063
4554
|
|
|
4064
4555
|
list.toString = function toString() {
|
|
4065
4556
|
return this.map(function (item) {
|
|
4066
|
-
var content =
|
|
4557
|
+
var content = "";
|
|
4558
|
+
var needLayer = typeof item[5] !== "undefined";
|
|
4559
|
+
|
|
4560
|
+
if (item[4]) {
|
|
4561
|
+
content += "@supports (".concat(item[4], ") {");
|
|
4562
|
+
}
|
|
4067
4563
|
|
|
4068
4564
|
if (item[2]) {
|
|
4069
|
-
|
|
4565
|
+
content += "@media ".concat(item[2], " {");
|
|
4566
|
+
}
|
|
4567
|
+
|
|
4568
|
+
if (needLayer) {
|
|
4569
|
+
content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {");
|
|
4570
|
+
}
|
|
4571
|
+
|
|
4572
|
+
content += cssWithMappingToString(item);
|
|
4573
|
+
|
|
4574
|
+
if (needLayer) {
|
|
4575
|
+
content += "}";
|
|
4576
|
+
}
|
|
4577
|
+
|
|
4578
|
+
if (item[2]) {
|
|
4579
|
+
content += "}";
|
|
4580
|
+
}
|
|
4581
|
+
|
|
4582
|
+
if (item[4]) {
|
|
4583
|
+
content += "}";
|
|
4070
4584
|
}
|
|
4071
4585
|
|
|
4072
4586
|
return content;
|
|
4073
4587
|
}).join("");
|
|
4074
4588
|
}; // import a list of modules into the list
|
|
4075
|
-
// eslint-disable-next-line func-names
|
|
4076
4589
|
|
|
4077
4590
|
|
|
4078
|
-
list.i = function (modules,
|
|
4591
|
+
list.i = function i(modules, media, dedupe, supports, layer) {
|
|
4079
4592
|
if (typeof modules === "string") {
|
|
4080
|
-
|
|
4081
|
-
modules = [[null, modules, ""]];
|
|
4593
|
+
modules = [[null, modules, undefined]];
|
|
4082
4594
|
}
|
|
4083
4595
|
|
|
4084
4596
|
var alreadyImportedModules = {};
|
|
4085
4597
|
|
|
4086
4598
|
if (dedupe) {
|
|
4087
|
-
for (var
|
|
4088
|
-
|
|
4089
|
-
var id = this[i][0];
|
|
4599
|
+
for (var _i = 0; _i < this.length; _i++) {
|
|
4600
|
+
var id = this[_i][0];
|
|
4090
4601
|
|
|
4091
4602
|
if (id != null) {
|
|
4092
4603
|
alreadyImportedModules[id] = true;
|
|
@@ -4094,19 +4605,37 @@ module.exports = function (cssWithMappingToString) {
|
|
|
4094
4605
|
}
|
|
4095
4606
|
}
|
|
4096
4607
|
|
|
4097
|
-
for (var
|
|
4098
|
-
var item = [].concat(modules[
|
|
4608
|
+
for (var _i2 = 0; _i2 < modules.length; _i2++) {
|
|
4609
|
+
var item = [].concat(modules[_i2]);
|
|
4099
4610
|
|
|
4100
4611
|
if (dedupe && alreadyImportedModules[item[0]]) {
|
|
4101
|
-
// eslint-disable-next-line no-continue
|
|
4102
4612
|
continue;
|
|
4103
4613
|
}
|
|
4104
4614
|
|
|
4105
|
-
if (
|
|
4615
|
+
if (typeof layer !== "undefined") {
|
|
4616
|
+
if (typeof item[5] === "undefined") {
|
|
4617
|
+
item[5] = layer;
|
|
4618
|
+
} else {
|
|
4619
|
+
item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");
|
|
4620
|
+
item[5] = layer;
|
|
4621
|
+
}
|
|
4622
|
+
}
|
|
4623
|
+
|
|
4624
|
+
if (media) {
|
|
4106
4625
|
if (!item[2]) {
|
|
4107
|
-
item[2] =
|
|
4626
|
+
item[2] = media;
|
|
4108
4627
|
} else {
|
|
4109
|
-
item[
|
|
4628
|
+
item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");
|
|
4629
|
+
item[2] = media;
|
|
4630
|
+
}
|
|
4631
|
+
}
|
|
4632
|
+
|
|
4633
|
+
if (supports) {
|
|
4634
|
+
if (!item[4]) {
|
|
4635
|
+
item[4] = "".concat(supports);
|
|
4636
|
+
} else {
|
|
4637
|
+
item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");
|
|
4638
|
+
item[4] = supports;
|
|
4110
4639
|
}
|
|
4111
4640
|
}
|
|
4112
4641
|
|
|
@@ -4119,33 +4648,23 @@ module.exports = function (cssWithMappingToString) {
|
|
|
4119
4648
|
|
|
4120
4649
|
/***/ }),
|
|
4121
4650
|
|
|
4122
|
-
/***/ "../node_modules/css-loader/dist/runtime/
|
|
4123
|
-
|
|
4124
|
-
!*** ../node_modules/css-loader/dist/runtime/
|
|
4125
|
-
|
|
4651
|
+
/***/ "../node_modules/css-loader/dist/runtime/sourceMaps.js":
|
|
4652
|
+
/*!*************************************************************!*\
|
|
4653
|
+
!*** ../node_modules/css-loader/dist/runtime/sourceMaps.js ***!
|
|
4654
|
+
\*************************************************************/
|
|
4126
4655
|
/***/ ((module) => {
|
|
4127
4656
|
|
|
4128
4657
|
|
|
4129
4658
|
|
|
4130
|
-
function
|
|
4131
|
-
|
|
4132
|
-
|
|
4133
|
-
|
|
4134
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4135
|
-
|
|
4136
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
4659
|
+
module.exports = function (item) {
|
|
4660
|
+
var content = item[1];
|
|
4661
|
+
var cssMapping = item[3];
|
|
4137
4662
|
|
|
4138
|
-
|
|
4139
|
-
|
|
4140
|
-
|
|
4141
|
-
|
|
4142
|
-
module.exports = function cssWithMappingToString(item) {
|
|
4143
|
-
var _item = _slicedToArray(item, 4),
|
|
4144
|
-
content = _item[1],
|
|
4145
|
-
cssMapping = _item[3];
|
|
4663
|
+
if (!cssMapping) {
|
|
4664
|
+
return content;
|
|
4665
|
+
}
|
|
4146
4666
|
|
|
4147
4667
|
if (typeof btoa === "function") {
|
|
4148
|
-
// eslint-disable-next-line no-undef
|
|
4149
4668
|
var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));
|
|
4150
4669
|
var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64);
|
|
4151
4670
|
var sourceMapping = "/*# ".concat(data, " */");
|
|
@@ -4164,57 +4683,17 @@ module.exports = function cssWithMappingToString(item) {
|
|
|
4164
4683
|
/*!*****************************************************************************!*\
|
|
4165
4684
|
!*** ../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
|
|
4166
4685
|
\*****************************************************************************/
|
|
4167
|
-
/***/ ((module
|
|
4168
|
-
|
|
4169
|
-
|
|
4170
|
-
|
|
4171
|
-
var isOldIE = function isOldIE() {
|
|
4172
|
-
var memo;
|
|
4173
|
-
return function memorize() {
|
|
4174
|
-
if (typeof memo === 'undefined') {
|
|
4175
|
-
// Test for IE <= 9 as proposed by Browserhacks
|
|
4176
|
-
// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
|
|
4177
|
-
// Tests for existence of standard globals is to allow style-loader
|
|
4178
|
-
// to operate correctly into non-standard environments
|
|
4179
|
-
// @see https://github.com/webpack-contrib/style-loader/issues/177
|
|
4180
|
-
memo = Boolean(window && document && document.all && !window.atob);
|
|
4181
|
-
}
|
|
4182
|
-
|
|
4183
|
-
return memo;
|
|
4184
|
-
};
|
|
4185
|
-
}();
|
|
4186
|
-
|
|
4187
|
-
var getTarget = function getTarget() {
|
|
4188
|
-
var memo = {};
|
|
4189
|
-
return function memorize(target) {
|
|
4190
|
-
if (typeof memo[target] === 'undefined') {
|
|
4191
|
-
var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself
|
|
4192
|
-
|
|
4193
|
-
if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
|
|
4194
|
-
try {
|
|
4195
|
-
// This will throw an exception if access to iframe is blocked
|
|
4196
|
-
// due to cross-origin restrictions
|
|
4197
|
-
styleTarget = styleTarget.contentDocument.head;
|
|
4198
|
-
} catch (e) {
|
|
4199
|
-
// istanbul ignore next
|
|
4200
|
-
styleTarget = null;
|
|
4201
|
-
}
|
|
4202
|
-
}
|
|
4686
|
+
/***/ ((module) => {
|
|
4203
4687
|
|
|
4204
|
-
memo[target] = styleTarget;
|
|
4205
|
-
}
|
|
4206
4688
|
|
|
4207
|
-
return memo[target];
|
|
4208
|
-
};
|
|
4209
|
-
}();
|
|
4210
4689
|
|
|
4211
|
-
var
|
|
4690
|
+
var stylesInDOM = [];
|
|
4212
4691
|
|
|
4213
4692
|
function getIndexByIdentifier(identifier) {
|
|
4214
4693
|
var result = -1;
|
|
4215
4694
|
|
|
4216
|
-
for (var i = 0; i <
|
|
4217
|
-
if (
|
|
4695
|
+
for (var i = 0; i < stylesInDOM.length; i++) {
|
|
4696
|
+
if (stylesInDOM[i].identifier === identifier) {
|
|
4218
4697
|
result = i;
|
|
4219
4698
|
break;
|
|
4220
4699
|
}
|
|
@@ -4233,20 +4712,24 @@ function modulesToDom(list, options) {
|
|
|
4233
4712
|
var count = idCountMap[id] || 0;
|
|
4234
4713
|
var identifier = "".concat(id, " ").concat(count);
|
|
4235
4714
|
idCountMap[id] = count + 1;
|
|
4236
|
-
var
|
|
4715
|
+
var indexByIdentifier = getIndexByIdentifier(identifier);
|
|
4237
4716
|
var obj = {
|
|
4238
4717
|
css: item[1],
|
|
4239
4718
|
media: item[2],
|
|
4240
|
-
sourceMap: item[3]
|
|
4719
|
+
sourceMap: item[3],
|
|
4720
|
+
supports: item[4],
|
|
4721
|
+
layer: item[5]
|
|
4241
4722
|
};
|
|
4242
4723
|
|
|
4243
|
-
if (
|
|
4244
|
-
|
|
4245
|
-
|
|
4724
|
+
if (indexByIdentifier !== -1) {
|
|
4725
|
+
stylesInDOM[indexByIdentifier].references++;
|
|
4726
|
+
stylesInDOM[indexByIdentifier].updater(obj);
|
|
4246
4727
|
} else {
|
|
4247
|
-
|
|
4728
|
+
var updater = addElementStyle(obj, options);
|
|
4729
|
+
options.byIndex = i;
|
|
4730
|
+
stylesInDOM.splice(i, 0, {
|
|
4248
4731
|
identifier: identifier,
|
|
4249
|
-
updater:
|
|
4732
|
+
updater: updater,
|
|
4250
4733
|
references: 1
|
|
4251
4734
|
});
|
|
4252
4735
|
}
|
|
@@ -4257,184 +4740,248 @@ function modulesToDom(list, options) {
|
|
|
4257
4740
|
return identifiers;
|
|
4258
4741
|
}
|
|
4259
4742
|
|
|
4260
|
-
function
|
|
4261
|
-
var
|
|
4262
|
-
|
|
4743
|
+
function addElementStyle(obj, options) {
|
|
4744
|
+
var api = options.domAPI(options);
|
|
4745
|
+
api.update(obj);
|
|
4263
4746
|
|
|
4264
|
-
|
|
4265
|
-
|
|
4747
|
+
var updater = function updater(newObj) {
|
|
4748
|
+
if (newObj) {
|
|
4749
|
+
if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {
|
|
4750
|
+
return;
|
|
4751
|
+
}
|
|
4266
4752
|
|
|
4267
|
-
|
|
4268
|
-
|
|
4753
|
+
api.update(obj = newObj);
|
|
4754
|
+
} else {
|
|
4755
|
+
api.remove();
|
|
4269
4756
|
}
|
|
4270
|
-
}
|
|
4757
|
+
};
|
|
4271
4758
|
|
|
4272
|
-
|
|
4273
|
-
|
|
4274
|
-
|
|
4759
|
+
return updater;
|
|
4760
|
+
}
|
|
4761
|
+
|
|
4762
|
+
module.exports = function (list, options) {
|
|
4763
|
+
options = options || {};
|
|
4764
|
+
list = list || [];
|
|
4765
|
+
var lastIdentifiers = modulesToDom(list, options);
|
|
4766
|
+
return function update(newList) {
|
|
4767
|
+
newList = newList || [];
|
|
4768
|
+
|
|
4769
|
+
for (var i = 0; i < lastIdentifiers.length; i++) {
|
|
4770
|
+
var identifier = lastIdentifiers[i];
|
|
4771
|
+
var index = getIndexByIdentifier(identifier);
|
|
4772
|
+
stylesInDOM[index].references--;
|
|
4773
|
+
}
|
|
4774
|
+
|
|
4775
|
+
var newLastIdentifiers = modulesToDom(newList, options);
|
|
4776
|
+
|
|
4777
|
+
for (var _i = 0; _i < lastIdentifiers.length; _i++) {
|
|
4778
|
+
var _identifier = lastIdentifiers[_i];
|
|
4779
|
+
|
|
4780
|
+
var _index = getIndexByIdentifier(_identifier);
|
|
4781
|
+
|
|
4782
|
+
if (stylesInDOM[_index].references === 0) {
|
|
4783
|
+
stylesInDOM[_index].updater();
|
|
4784
|
+
|
|
4785
|
+
stylesInDOM.splice(_index, 1);
|
|
4786
|
+
}
|
|
4787
|
+
}
|
|
4788
|
+
|
|
4789
|
+
lastIdentifiers = newLastIdentifiers;
|
|
4790
|
+
};
|
|
4791
|
+
};
|
|
4792
|
+
|
|
4793
|
+
/***/ }),
|
|
4794
|
+
|
|
4795
|
+
/***/ "../node_modules/style-loader/dist/runtime/insertBySelector.js":
|
|
4796
|
+
/*!*********************************************************************!*\
|
|
4797
|
+
!*** ../node_modules/style-loader/dist/runtime/insertBySelector.js ***!
|
|
4798
|
+
\*********************************************************************/
|
|
4799
|
+
/***/ ((module) => {
|
|
4275
4800
|
|
|
4276
|
-
if (typeof options.insert === 'function') {
|
|
4277
|
-
options.insert(style);
|
|
4278
|
-
} else {
|
|
4279
|
-
var target = getTarget(options.insert || 'head');
|
|
4280
4801
|
|
|
4281
|
-
|
|
4282
|
-
|
|
4802
|
+
|
|
4803
|
+
var memo = {};
|
|
4804
|
+
/* istanbul ignore next */
|
|
4805
|
+
|
|
4806
|
+
function getTarget(target) {
|
|
4807
|
+
if (typeof memo[target] === "undefined") {
|
|
4808
|
+
var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself
|
|
4809
|
+
|
|
4810
|
+
if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
|
|
4811
|
+
try {
|
|
4812
|
+
// This will throw an exception if access to iframe is blocked
|
|
4813
|
+
// due to cross-origin restrictions
|
|
4814
|
+
styleTarget = styleTarget.contentDocument.head;
|
|
4815
|
+
} catch (e) {
|
|
4816
|
+
// istanbul ignore next
|
|
4817
|
+
styleTarget = null;
|
|
4818
|
+
}
|
|
4283
4819
|
}
|
|
4284
4820
|
|
|
4285
|
-
target
|
|
4821
|
+
memo[target] = styleTarget;
|
|
4286
4822
|
}
|
|
4287
4823
|
|
|
4288
|
-
return
|
|
4824
|
+
return memo[target];
|
|
4289
4825
|
}
|
|
4826
|
+
/* istanbul ignore next */
|
|
4290
4827
|
|
|
4291
|
-
|
|
4292
|
-
|
|
4293
|
-
|
|
4294
|
-
|
|
4828
|
+
|
|
4829
|
+
function insertBySelector(insert, style) {
|
|
4830
|
+
var target = getTarget(insert);
|
|
4831
|
+
|
|
4832
|
+
if (!target) {
|
|
4833
|
+
throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
|
|
4295
4834
|
}
|
|
4296
4835
|
|
|
4297
|
-
|
|
4836
|
+
target.appendChild(style);
|
|
4298
4837
|
}
|
|
4838
|
+
|
|
4839
|
+
module.exports = insertBySelector;
|
|
4840
|
+
|
|
4841
|
+
/***/ }),
|
|
4842
|
+
|
|
4843
|
+
/***/ "../node_modules/style-loader/dist/runtime/insertStyleElement.js":
|
|
4844
|
+
/*!***********************************************************************!*\
|
|
4845
|
+
!*** ../node_modules/style-loader/dist/runtime/insertStyleElement.js ***!
|
|
4846
|
+
\***********************************************************************/
|
|
4847
|
+
/***/ ((module) => {
|
|
4848
|
+
|
|
4849
|
+
|
|
4850
|
+
|
|
4299
4851
|
/* istanbul ignore next */
|
|
4852
|
+
function insertStyleElement(options) {
|
|
4853
|
+
var element = document.createElement("style");
|
|
4854
|
+
options.setAttributes(element, options.attributes);
|
|
4855
|
+
options.insert(element, options.options);
|
|
4856
|
+
return element;
|
|
4857
|
+
}
|
|
4300
4858
|
|
|
4859
|
+
module.exports = insertStyleElement;
|
|
4301
4860
|
|
|
4302
|
-
|
|
4303
|
-
var textStore = [];
|
|
4304
|
-
return function replace(index, replacement) {
|
|
4305
|
-
textStore[index] = replacement;
|
|
4306
|
-
return textStore.filter(Boolean).join('\n');
|
|
4307
|
-
};
|
|
4308
|
-
}();
|
|
4861
|
+
/***/ }),
|
|
4309
4862
|
|
|
4310
|
-
|
|
4311
|
-
|
|
4863
|
+
/***/ "../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":
|
|
4864
|
+
/*!***********************************************************************************!*\
|
|
4865
|
+
!*** ../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js ***!
|
|
4866
|
+
\***********************************************************************************/
|
|
4867
|
+
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
4312
4868
|
|
|
4313
|
-
/* istanbul ignore if */
|
|
4314
4869
|
|
|
4315
|
-
if (style.styleSheet) {
|
|
4316
|
-
style.styleSheet.cssText = replaceText(index, css);
|
|
4317
|
-
} else {
|
|
4318
|
-
var cssNode = document.createTextNode(css);
|
|
4319
|
-
var childNodes = style.childNodes;
|
|
4320
4870
|
|
|
4321
|
-
|
|
4322
|
-
|
|
4323
|
-
|
|
4871
|
+
/* istanbul ignore next */
|
|
4872
|
+
function setAttributesWithoutAttributes(styleElement) {
|
|
4873
|
+
var nonce = true ? __webpack_require__.nc : 0;
|
|
4324
4874
|
|
|
4325
|
-
|
|
4326
|
-
|
|
4327
|
-
} else {
|
|
4328
|
-
style.appendChild(cssNode);
|
|
4329
|
-
}
|
|
4875
|
+
if (nonce) {
|
|
4876
|
+
styleElement.setAttribute("nonce", nonce);
|
|
4330
4877
|
}
|
|
4331
4878
|
}
|
|
4332
4879
|
|
|
4333
|
-
|
|
4334
|
-
var css = obj.css;
|
|
4335
|
-
var media = obj.media;
|
|
4336
|
-
var sourceMap = obj.sourceMap;
|
|
4880
|
+
module.exports = setAttributesWithoutAttributes;
|
|
4337
4881
|
|
|
4338
|
-
|
|
4339
|
-
style.setAttribute('media', media);
|
|
4340
|
-
} else {
|
|
4341
|
-
style.removeAttribute('media');
|
|
4342
|
-
}
|
|
4882
|
+
/***/ }),
|
|
4343
4883
|
|
|
4344
|
-
|
|
4345
|
-
|
|
4346
|
-
|
|
4884
|
+
/***/ "../node_modules/style-loader/dist/runtime/styleDomAPI.js":
|
|
4885
|
+
/*!****************************************************************!*\
|
|
4886
|
+
!*** ../node_modules/style-loader/dist/runtime/styleDomAPI.js ***!
|
|
4887
|
+
\****************************************************************/
|
|
4888
|
+
/***/ ((module) => {
|
|
4347
4889
|
|
|
4348
|
-
/* istanbul ignore if */
|
|
4349
4890
|
|
|
4350
4891
|
|
|
4351
|
-
|
|
4352
|
-
|
|
4353
|
-
|
|
4354
|
-
while (style.firstChild) {
|
|
4355
|
-
style.removeChild(style.firstChild);
|
|
4356
|
-
}
|
|
4892
|
+
/* istanbul ignore next */
|
|
4893
|
+
function apply(styleElement, options, obj) {
|
|
4894
|
+
var css = "";
|
|
4357
4895
|
|
|
4358
|
-
|
|
4896
|
+
if (obj.supports) {
|
|
4897
|
+
css += "@supports (".concat(obj.supports, ") {");
|
|
4898
|
+
}
|
|
4899
|
+
|
|
4900
|
+
if (obj.media) {
|
|
4901
|
+
css += "@media ".concat(obj.media, " {");
|
|
4359
4902
|
}
|
|
4360
|
-
}
|
|
4361
4903
|
|
|
4362
|
-
var
|
|
4363
|
-
var singletonCounter = 0;
|
|
4904
|
+
var needLayer = typeof obj.layer !== "undefined";
|
|
4364
4905
|
|
|
4365
|
-
|
|
4366
|
-
|
|
4367
|
-
|
|
4368
|
-
var remove;
|
|
4906
|
+
if (needLayer) {
|
|
4907
|
+
css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {");
|
|
4908
|
+
}
|
|
4369
4909
|
|
|
4370
|
-
|
|
4371
|
-
var styleIndex = singletonCounter++;
|
|
4372
|
-
style = singleton || (singleton = insertStyleElement(options));
|
|
4373
|
-
update = applyToSingletonTag.bind(null, style, styleIndex, false);
|
|
4374
|
-
remove = applyToSingletonTag.bind(null, style, styleIndex, true);
|
|
4375
|
-
} else {
|
|
4376
|
-
style = insertStyleElement(options);
|
|
4377
|
-
update = applyToTag.bind(null, style, options);
|
|
4910
|
+
css += obj.css;
|
|
4378
4911
|
|
|
4379
|
-
|
|
4380
|
-
|
|
4381
|
-
};
|
|
4912
|
+
if (needLayer) {
|
|
4913
|
+
css += "}";
|
|
4382
4914
|
}
|
|
4383
4915
|
|
|
4384
|
-
|
|
4385
|
-
|
|
4386
|
-
|
|
4387
|
-
if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {
|
|
4388
|
-
return;
|
|
4389
|
-
}
|
|
4916
|
+
if (obj.media) {
|
|
4917
|
+
css += "}";
|
|
4918
|
+
}
|
|
4390
4919
|
|
|
4391
|
-
|
|
4392
|
-
|
|
4393
|
-
|
|
4394
|
-
}
|
|
4395
|
-
};
|
|
4396
|
-
}
|
|
4920
|
+
if (obj.supports) {
|
|
4921
|
+
css += "}";
|
|
4922
|
+
}
|
|
4397
4923
|
|
|
4398
|
-
|
|
4399
|
-
options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
|
|
4400
|
-
// tags it will allow on a page
|
|
4924
|
+
var sourceMap = obj.sourceMap;
|
|
4401
4925
|
|
|
4402
|
-
if (
|
|
4403
|
-
|
|
4926
|
+
if (sourceMap && typeof btoa !== "undefined") {
|
|
4927
|
+
css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
|
|
4928
|
+
} // For old IE
|
|
4929
|
+
|
|
4930
|
+
/* istanbul ignore if */
|
|
4931
|
+
|
|
4932
|
+
|
|
4933
|
+
options.styleTagTransform(css, styleElement, options.options);
|
|
4934
|
+
}
|
|
4935
|
+
|
|
4936
|
+
function removeStyleElement(styleElement) {
|
|
4937
|
+
// istanbul ignore if
|
|
4938
|
+
if (styleElement.parentNode === null) {
|
|
4939
|
+
return false;
|
|
4404
4940
|
}
|
|
4405
4941
|
|
|
4406
|
-
|
|
4407
|
-
|
|
4408
|
-
|
|
4409
|
-
newList = newList || [];
|
|
4942
|
+
styleElement.parentNode.removeChild(styleElement);
|
|
4943
|
+
}
|
|
4944
|
+
/* istanbul ignore next */
|
|
4410
4945
|
|
|
4411
|
-
if (Object.prototype.toString.call(newList) !== '[object Array]') {
|
|
4412
|
-
return;
|
|
4413
|
-
}
|
|
4414
4946
|
|
|
4415
|
-
|
|
4416
|
-
|
|
4417
|
-
|
|
4418
|
-
|
|
4947
|
+
function domAPI(options) {
|
|
4948
|
+
var styleElement = options.insertStyleElement(options);
|
|
4949
|
+
return {
|
|
4950
|
+
update: function update(obj) {
|
|
4951
|
+
apply(styleElement, options, obj);
|
|
4952
|
+
},
|
|
4953
|
+
remove: function remove() {
|
|
4954
|
+
removeStyleElement(styleElement);
|
|
4419
4955
|
}
|
|
4956
|
+
};
|
|
4957
|
+
}
|
|
4420
4958
|
|
|
4421
|
-
|
|
4959
|
+
module.exports = domAPI;
|
|
4422
4960
|
|
|
4423
|
-
|
|
4424
|
-
var _identifier = lastIdentifiers[_i];
|
|
4961
|
+
/***/ }),
|
|
4425
4962
|
|
|
4426
|
-
|
|
4963
|
+
/***/ "../node_modules/style-loader/dist/runtime/styleTagTransform.js":
|
|
4964
|
+
/*!**********************************************************************!*\
|
|
4965
|
+
!*** ../node_modules/style-loader/dist/runtime/styleTagTransform.js ***!
|
|
4966
|
+
\**********************************************************************/
|
|
4967
|
+
/***/ ((module) => {
|
|
4427
4968
|
|
|
4428
|
-
if (stylesInDom[_index].references === 0) {
|
|
4429
|
-
stylesInDom[_index].updater();
|
|
4430
4969
|
|
|
4431
|
-
|
|
4432
|
-
|
|
4970
|
+
|
|
4971
|
+
/* istanbul ignore next */
|
|
4972
|
+
function styleTagTransform(css, styleElement) {
|
|
4973
|
+
if (styleElement.styleSheet) {
|
|
4974
|
+
styleElement.styleSheet.cssText = css;
|
|
4975
|
+
} else {
|
|
4976
|
+
while (styleElement.firstChild) {
|
|
4977
|
+
styleElement.removeChild(styleElement.firstChild);
|
|
4433
4978
|
}
|
|
4434
4979
|
|
|
4435
|
-
|
|
4436
|
-
}
|
|
4437
|
-
}
|
|
4980
|
+
styleElement.appendChild(document.createTextNode(css));
|
|
4981
|
+
}
|
|
4982
|
+
}
|
|
4983
|
+
|
|
4984
|
+
module.exports = styleTagTransform;
|
|
4438
4985
|
|
|
4439
4986
|
/***/ }),
|
|
4440
4987
|
|
|
@@ -4444,7 +4991,7 @@ module.exports = function (list, options) {
|
|
|
4444
4991
|
\***************************************************************/
|
|
4445
4992
|
/***/ ((module) => {
|
|
4446
4993
|
|
|
4447
|
-
module.exports = require("@babel/runtime/helpers/assertThisInitialized")
|
|
4994
|
+
module.exports = require("@babel/runtime/helpers/assertThisInitialized");
|
|
4448
4995
|
|
|
4449
4996
|
/***/ }),
|
|
4450
4997
|
|
|
@@ -4454,7 +5001,7 @@ module.exports = require("@babel/runtime/helpers/assertThisInitialized");;
|
|
|
4454
5001
|
\********************************************************/
|
|
4455
5002
|
/***/ ((module) => {
|
|
4456
5003
|
|
|
4457
|
-
module.exports = require("@babel/runtime/helpers/classCallCheck")
|
|
5004
|
+
module.exports = require("@babel/runtime/helpers/classCallCheck");
|
|
4458
5005
|
|
|
4459
5006
|
/***/ }),
|
|
4460
5007
|
|
|
@@ -4464,7 +5011,7 @@ module.exports = require("@babel/runtime/helpers/classCallCheck");;
|
|
|
4464
5011
|
\*****************************************************/
|
|
4465
5012
|
/***/ ((module) => {
|
|
4466
5013
|
|
|
4467
|
-
module.exports = require("@babel/runtime/helpers/createClass")
|
|
5014
|
+
module.exports = require("@babel/runtime/helpers/createClass");
|
|
4468
5015
|
|
|
4469
5016
|
/***/ }),
|
|
4470
5017
|
|
|
@@ -4474,7 +5021,7 @@ module.exports = require("@babel/runtime/helpers/createClass");;
|
|
|
4474
5021
|
\********************************************************/
|
|
4475
5022
|
/***/ ((module) => {
|
|
4476
5023
|
|
|
4477
|
-
module.exports = require("@babel/runtime/helpers/defineProperty")
|
|
5024
|
+
module.exports = require("@babel/runtime/helpers/defineProperty");
|
|
4478
5025
|
|
|
4479
5026
|
/***/ }),
|
|
4480
5027
|
|
|
@@ -4484,7 +5031,7 @@ module.exports = require("@babel/runtime/helpers/defineProperty");;
|
|
|
4484
5031
|
\********************************************************/
|
|
4485
5032
|
/***/ ((module) => {
|
|
4486
5033
|
|
|
4487
|
-
module.exports = require("@babel/runtime/helpers/getPrototypeOf")
|
|
5034
|
+
module.exports = require("@babel/runtime/helpers/getPrototypeOf");
|
|
4488
5035
|
|
|
4489
5036
|
/***/ }),
|
|
4490
5037
|
|
|
@@ -4494,7 +5041,7 @@ module.exports = require("@babel/runtime/helpers/getPrototypeOf");;
|
|
|
4494
5041
|
\**************************************************/
|
|
4495
5042
|
/***/ ((module) => {
|
|
4496
5043
|
|
|
4497
|
-
module.exports = require("@babel/runtime/helpers/inherits")
|
|
5044
|
+
module.exports = require("@babel/runtime/helpers/inherits");
|
|
4498
5045
|
|
|
4499
5046
|
/***/ }),
|
|
4500
5047
|
|
|
@@ -4504,7 +5051,7 @@ module.exports = require("@babel/runtime/helpers/inherits");;
|
|
|
4504
5051
|
\*****************************************************************/
|
|
4505
5052
|
/***/ ((module) => {
|
|
4506
5053
|
|
|
4507
|
-
module.exports = require("@babel/runtime/helpers/objectWithoutProperties")
|
|
5054
|
+
module.exports = require("@babel/runtime/helpers/objectWithoutProperties");
|
|
4508
5055
|
|
|
4509
5056
|
/***/ }),
|
|
4510
5057
|
|
|
@@ -4514,7 +5061,7 @@ module.exports = require("@babel/runtime/helpers/objectWithoutProperties");;
|
|
|
4514
5061
|
\*******************************************************************/
|
|
4515
5062
|
/***/ ((module) => {
|
|
4516
5063
|
|
|
4517
|
-
module.exports = require("@babel/runtime/helpers/possibleConstructorReturn")
|
|
5064
|
+
module.exports = require("@babel/runtime/helpers/possibleConstructorReturn");
|
|
4518
5065
|
|
|
4519
5066
|
/***/ }),
|
|
4520
5067
|
|
|
@@ -4524,7 +5071,7 @@ module.exports = require("@babel/runtime/helpers/possibleConstructorReturn");;
|
|
|
4524
5071
|
\*******************************************************/
|
|
4525
5072
|
/***/ ((module) => {
|
|
4526
5073
|
|
|
4527
|
-
module.exports = require("@babel/runtime/helpers/slicedToArray")
|
|
5074
|
+
module.exports = require("@babel/runtime/helpers/slicedToArray");
|
|
4528
5075
|
|
|
4529
5076
|
/***/ }),
|
|
4530
5077
|
|
|
@@ -4534,7 +5081,7 @@ module.exports = require("@babel/runtime/helpers/slicedToArray");;
|
|
|
4534
5081
|
\***********************************************************/
|
|
4535
5082
|
/***/ ((module) => {
|
|
4536
5083
|
|
|
4537
|
-
module.exports = require("@babel/runtime/helpers/toConsumableArray")
|
|
5084
|
+
module.exports = require("@babel/runtime/helpers/toConsumableArray");
|
|
4538
5085
|
|
|
4539
5086
|
/***/ }),
|
|
4540
5087
|
|
|
@@ -4544,7 +5091,7 @@ module.exports = require("@babel/runtime/helpers/toConsumableArray");;
|
|
|
4544
5091
|
\********************************/
|
|
4545
5092
|
/***/ ((module) => {
|
|
4546
5093
|
|
|
4547
|
-
module.exports = require("@js-joda/core")
|
|
5094
|
+
module.exports = require("@js-joda/core");
|
|
4548
5095
|
|
|
4549
5096
|
/***/ }),
|
|
4550
5097
|
|
|
@@ -4554,7 +5101,7 @@ module.exports = require("@js-joda/core");;
|
|
|
4554
5101
|
\****************************/
|
|
4555
5102
|
/***/ ((module) => {
|
|
4556
5103
|
|
|
4557
|
-
module.exports = require("@thx/date")
|
|
5104
|
+
module.exports = require("@thx/date");
|
|
4558
5105
|
|
|
4559
5106
|
/***/ }),
|
|
4560
5107
|
|
|
@@ -4564,17 +5111,17 @@ module.exports = require("@thx/date");;
|
|
|
4564
5111
|
\*****************************/
|
|
4565
5112
|
/***/ ((module) => {
|
|
4566
5113
|
|
|
4567
|
-
module.exports = require("@thx/money")
|
|
5114
|
+
module.exports = require("@thx/money");
|
|
4568
5115
|
|
|
4569
5116
|
/***/ }),
|
|
4570
5117
|
|
|
4571
|
-
/***/ "
|
|
4572
|
-
|
|
4573
|
-
!*** external "
|
|
4574
|
-
|
|
5118
|
+
/***/ "credit-card-type":
|
|
5119
|
+
/*!***********************************!*\
|
|
5120
|
+
!*** external "credit-card-type" ***!
|
|
5121
|
+
\***********************************/
|
|
4575
5122
|
/***/ ((module) => {
|
|
4576
5123
|
|
|
4577
|
-
module.exports = require("
|
|
5124
|
+
module.exports = require("credit-card-type");
|
|
4578
5125
|
|
|
4579
5126
|
/***/ }),
|
|
4580
5127
|
|
|
@@ -4584,7 +5131,7 @@ module.exports = require("@thx/yup-types");;
|
|
|
4584
5131
|
\************************/
|
|
4585
5132
|
/***/ ((module) => {
|
|
4586
5133
|
|
|
4587
|
-
module.exports = require("debug")
|
|
5134
|
+
module.exports = require("debug");
|
|
4588
5135
|
|
|
4589
5136
|
/***/ }),
|
|
4590
5137
|
|
|
@@ -4594,7 +5141,7 @@ module.exports = require("debug");;
|
|
|
4594
5141
|
\********************************/
|
|
4595
5142
|
/***/ ((module) => {
|
|
4596
5143
|
|
|
4597
|
-
module.exports = require("eventemitter3")
|
|
5144
|
+
module.exports = require("eventemitter3");
|
|
4598
5145
|
|
|
4599
5146
|
/***/ }),
|
|
4600
5147
|
|
|
@@ -4604,7 +5151,7 @@ module.exports = require("eventemitter3");;
|
|
|
4604
5151
|
\***********************/
|
|
4605
5152
|
/***/ ((module) => {
|
|
4606
5153
|
|
|
4607
|
-
module.exports = require("flat")
|
|
5154
|
+
module.exports = require("flat");
|
|
4608
5155
|
|
|
4609
5156
|
/***/ }),
|
|
4610
5157
|
|
|
@@ -4614,7 +5161,7 @@ module.exports = require("flat");;
|
|
|
4614
5161
|
\*************************/
|
|
4615
5162
|
/***/ ((module) => {
|
|
4616
5163
|
|
|
4617
|
-
module.exports = require("formik")
|
|
5164
|
+
module.exports = require("formik");
|
|
4618
5165
|
|
|
4619
5166
|
/***/ }),
|
|
4620
5167
|
|
|
@@ -4624,7 +5171,7 @@ module.exports = require("formik");;
|
|
|
4624
5171
|
\****************************/
|
|
4625
5172
|
/***/ ((module) => {
|
|
4626
5173
|
|
|
4627
|
-
module.exports = require("inputmask")
|
|
5174
|
+
module.exports = require("inputmask");
|
|
4628
5175
|
|
|
4629
5176
|
/***/ }),
|
|
4630
5177
|
|
|
@@ -4634,7 +5181,7 @@ module.exports = require("inputmask");;
|
|
|
4634
5181
|
\***************************/
|
|
4635
5182
|
/***/ ((module) => {
|
|
4636
5183
|
|
|
4637
|
-
module.exports = require("js-money")
|
|
5184
|
+
module.exports = require("js-money");
|
|
4638
5185
|
|
|
4639
5186
|
/***/ }),
|
|
4640
5187
|
|
|
@@ -4644,7 +5191,7 @@ module.exports = require("js-money");;
|
|
|
4644
5191
|
\*****************************/
|
|
4645
5192
|
/***/ ((module) => {
|
|
4646
5193
|
|
|
4647
|
-
module.exports = require("lodash/get")
|
|
5194
|
+
module.exports = require("lodash/get");
|
|
4648
5195
|
|
|
4649
5196
|
/***/ }),
|
|
4650
5197
|
|
|
@@ -4654,7 +5201,7 @@ module.exports = require("lodash/get");;
|
|
|
4654
5201
|
\**********************************/
|
|
4655
5202
|
/***/ ((module) => {
|
|
4656
5203
|
|
|
4657
|
-
module.exports = require("lodash/property")
|
|
5204
|
+
module.exports = require("lodash/property");
|
|
4658
5205
|
|
|
4659
5206
|
/***/ }),
|
|
4660
5207
|
|
|
@@ -4664,7 +5211,17 @@ module.exports = require("lodash/property");;
|
|
|
4664
5211
|
\******************************/
|
|
4665
5212
|
/***/ ((module) => {
|
|
4666
5213
|
|
|
4667
|
-
module.exports = require("lodash/uniq")
|
|
5214
|
+
module.exports = require("lodash/uniq");
|
|
5215
|
+
|
|
5216
|
+
/***/ }),
|
|
5217
|
+
|
|
5218
|
+
/***/ "luhn":
|
|
5219
|
+
/*!***********************!*\
|
|
5220
|
+
!*** external "luhn" ***!
|
|
5221
|
+
\***********************/
|
|
5222
|
+
/***/ ((module) => {
|
|
5223
|
+
|
|
5224
|
+
module.exports = require("luhn");
|
|
4668
5225
|
|
|
4669
5226
|
/***/ }),
|
|
4670
5227
|
|
|
@@ -4674,7 +5231,27 @@ module.exports = require("lodash/uniq");;
|
|
|
4674
5231
|
\************************/
|
|
4675
5232
|
/***/ ((module) => {
|
|
4676
5233
|
|
|
4677
|
-
module.exports = require("react")
|
|
5234
|
+
module.exports = require("react");
|
|
5235
|
+
|
|
5236
|
+
/***/ }),
|
|
5237
|
+
|
|
5238
|
+
/***/ "react-credit-cards":
|
|
5239
|
+
/*!*************************************!*\
|
|
5240
|
+
!*** external "react-credit-cards" ***!
|
|
5241
|
+
\*************************************/
|
|
5242
|
+
/***/ ((module) => {
|
|
5243
|
+
|
|
5244
|
+
module.exports = require("react-credit-cards");
|
|
5245
|
+
|
|
5246
|
+
/***/ }),
|
|
5247
|
+
|
|
5248
|
+
/***/ "react-credit-cards/es/styles-compiled.css":
|
|
5249
|
+
/*!************************************************************!*\
|
|
5250
|
+
!*** external "react-credit-cards/es/styles-compiled.css" ***!
|
|
5251
|
+
\************************************************************/
|
|
5252
|
+
/***/ ((module) => {
|
|
5253
|
+
|
|
5254
|
+
module.exports = require("react-credit-cards/es/styles-compiled.css");
|
|
4678
5255
|
|
|
4679
5256
|
/***/ }),
|
|
4680
5257
|
|
|
@@ -4684,7 +5261,7 @@ module.exports = require("react");;
|
|
|
4684
5261
|
\***********************************/
|
|
4685
5262
|
/***/ ((module) => {
|
|
4686
5263
|
|
|
4687
|
-
module.exports = require("react-datepicker")
|
|
5264
|
+
module.exports = require("react-datepicker");
|
|
4688
5265
|
|
|
4689
5266
|
/***/ }),
|
|
4690
5267
|
|
|
@@ -4694,7 +5271,7 @@ module.exports = require("react-datepicker");;
|
|
|
4694
5271
|
\***********************************/
|
|
4695
5272
|
/***/ ((module) => {
|
|
4696
5273
|
|
|
4697
|
-
module.exports = require("react-router-dom")
|
|
5274
|
+
module.exports = require("react-router-dom");
|
|
4698
5275
|
|
|
4699
5276
|
/***/ }),
|
|
4700
5277
|
|
|
@@ -4704,7 +5281,7 @@ module.exports = require("react-router-dom");;
|
|
|
4704
5281
|
\******************************/
|
|
4705
5282
|
/***/ ((module) => {
|
|
4706
5283
|
|
|
4707
|
-
module.exports = require("react-table")
|
|
5284
|
+
module.exports = require("react-table");
|
|
4708
5285
|
|
|
4709
5286
|
/***/ }),
|
|
4710
5287
|
|
|
@@ -4714,7 +5291,7 @@ module.exports = require("react-table");;
|
|
|
4714
5291
|
\****************************************/
|
|
4715
5292
|
/***/ ((module) => {
|
|
4716
5293
|
|
|
4717
|
-
module.exports = require("react/jsx-dev-runtime")
|
|
5294
|
+
module.exports = require("react/jsx-dev-runtime");
|
|
4718
5295
|
|
|
4719
5296
|
/***/ }),
|
|
4720
5297
|
|
|
@@ -4724,7 +5301,17 @@ module.exports = require("react/jsx-dev-runtime");;
|
|
|
4724
5301
|
\************************************/
|
|
4725
5302
|
/***/ ((module) => {
|
|
4726
5303
|
|
|
4727
|
-
module.exports = require("semantic-ui-react")
|
|
5304
|
+
module.exports = require("semantic-ui-react");
|
|
5305
|
+
|
|
5306
|
+
/***/ }),
|
|
5307
|
+
|
|
5308
|
+
/***/ "social-insurance-number":
|
|
5309
|
+
/*!******************************************!*\
|
|
5310
|
+
!*** external "social-insurance-number" ***!
|
|
5311
|
+
\******************************************/
|
|
5312
|
+
/***/ ((module) => {
|
|
5313
|
+
|
|
5314
|
+
module.exports = require("social-insurance-number");
|
|
4728
5315
|
|
|
4729
5316
|
/***/ }),
|
|
4730
5317
|
|
|
@@ -4734,7 +5321,7 @@ module.exports = require("semantic-ui-react");;
|
|
|
4734
5321
|
\******************************************/
|
|
4735
5322
|
/***/ ((module) => {
|
|
4736
5323
|
|
|
4737
|
-
module.exports = require("use-deep-compare-effect")
|
|
5324
|
+
module.exports = require("use-deep-compare-effect");
|
|
4738
5325
|
|
|
4739
5326
|
/***/ })
|
|
4740
5327
|
|
|
@@ -4892,4 +5479,4 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
4892
5479
|
module.exports = __webpack_exports__;
|
|
4893
5480
|
/******/ })()
|
|
4894
5481
|
;
|
|
4895
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9kYXRlL0RhdGVQaWNrZXIvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vZGF0ZS9Mb2NhbERhdGVQaWNrZXIvTG9jYWxEYXRlUGlja2VyLnRzeCIsIndlYnBhY2s6Ly8vLi9kYXRlL0xvY2FsRGF0ZVBpY2tlci9NYXNrZWREYXRlSW5wdXQudHN4Iiwid2VicGFjazovLy8uL2RhdGUvTG9jYWxNb250aFNlbGVjdC9Mb2NhbE1vbnRoU2VsZWN0LnRzeCIsIndlYnBhY2s6Ly8vLi9kYXRlL0xvY2FsVGltZVBpY2tlci9Mb2NhbFRpbWVQaWNrZXIudHN4Iiwid2VicGFjazovLy8uL2RhdGUvTG9jYWxUaW1lUGlja2VyL01hc2tlZFRpbWVJbnB1dC50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0ZS9Nb250aERheVBpY2tlci9Nb250aERheVBpY2tlci50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0ZS9Nb250aFllYXJQaWNrZXIvTW9udGhZZWFyUGlja2VyLnRzeCIsIndlYnBhY2s6Ly8vLi9kYXRlL1llYXJTZWxlY3QvWWVhclNlbGVjdC50c3giLCJ3ZWJwYWNrOi8vLy4vZm9ybS9URm9ybS9URm9ybS50c3giLCJ3ZWJwYWNrOi8vLy4vZm9ybS9URm9ybS9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9mb3JtL1RGb3JtL3VzZVRGb3JtLnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvQ3JlZGl0Q2FyZElucHV0L0NyZWRpdENhcmRJbnB1dC50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL01hc2tlZElucHV0L01hc2tlZElucHV0LnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvUGhvbmVJbnB1dC9QaG9uZUlucHV0LnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvUmFkaW9Hcm91cC9SYWRpb0dyb3VwLnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvU2NyaXB0ZWwvU2NyaXB0ZWwudHN4Iiwid2VicGFjazovLy8uL2lucHV0cy9TY3JpcHRlbC9TY3JpcHRlbENvbnRleHQudHMiLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1NjcmlwdGVsL2luZGV4LnRzIiwid2VicGFjazovLy8uL2lucHV0cy9TY3JpcHRlbC9zY3JpcHRlbC9lbnVtcy50cyIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvU2NyaXB0ZWwvc2NyaXB0ZWwvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1NjcmlwdGVsL3dpdGhTY3JpcHRlbC50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1NjcmlwdGVsSW5wdXQvU2NyaXB0ZWxJbnB1dC50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1NpbklucHV0L1NpbklucHV0LnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvVGFibGVJbnB1dC9Ecm9wZG93bkNlbGwudHN4Iiwid2VicGFjazovLy8uL2lucHV0cy9UYWJsZUlucHV0L0hvdmVyQ2VsbC50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1RhYmxlSW5wdXQvTW9uZXlDZWxsLnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvVGFibGVJbnB1dC9Nb25leUVkaXRDZWxsLnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvVGFibGVJbnB1dC9Nb25leVN1bUZvb3Rlci50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1RhYmxlSW5wdXQvU3RyaW5nRWRpdENlbGwudHN4Iiwid2VicGFjazovLy8uL2lucHV0cy9UYWJsZUlucHV0L1RhYmxlSW5wdXQudHN4Iiwid2VicGFjazovLy8uL2lucHV0cy9UYWJsZUlucHV0L2FkZFJvd09uVGFiLnRzIiwid2VicGFjazovLy8uL2lucHV0cy9UYWJsZUlucHV0L2luZGV4LnRzIiwid2VicGFjazovLy8uL21vbmV5L01vbmV5Q3VycmVuY3lJbnB1dC9Nb25leUN1cnJlbmN5SW5wdXQudHN4Iiwid2VicGFjazovLy8uL21vbmV5L01vbmV5SW5wdXQvTW9uZXlJbnB1dC50c3giLCJ3ZWJwYWNrOi8vLy4vbW9uZXkvdXNlTW9uZXlJbnB1dC50cyIsIndlYnBhY2s6Ly8vLi9zdGVwL0Zvcm1TdGVwLnRzeCIsIndlYnBhY2s6Ly8vLi9zdGVwL1N0ZXAudHN4Iiwid2VicGFjazovLy8uL3N0ZXAvU3RlcFByb3ZpZGVyLnRzeCIsIndlYnBhY2s6Ly8vLi9zdGVwL2luZGV4LnRzIiwid2VicGFjazovLy8uL3N0ZXAvc3RlcENvbnRleHQudHMiLCJ3ZWJwYWNrOi8vLy4vc3RlcC91c2VTdGVwLnRzIiwid2VicGFjazovLy8uL2RhdGUvRGF0ZVBpY2tlci9zdHlsZXMuY3NzP2IwMTkiLCJ3ZWJwYWNrOi8vLy4vZGF0ZS9EYXRlUGlja2VyL3N0eWxlcy5jc3MiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGpzLWpvZGEvY29yZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkB0aHgvZGF0ZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkB0aHgvbW9uZXlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAdGh4L3l1cC10eXBlc1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcImRlYnVnXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiZXZlbnRlbWl0dGVyM1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcImZsYXRcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJmb3JtaWtcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJpbnB1dG1hc2tcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJqcy1tb25leVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcImxvZGFzaC9nZXRcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJsb2Rhc2gvcHJvcGVydHlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJsb2Rhc2gvdW5pcVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcInJlYWN0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicmVhY3QtZGF0ZXBpY2tlclwiIiwid2VicGFjazovLy9leHRlcm5hbCBcInJlYWN0LXJvdXRlci1kb21cIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZWFjdC10YWJsZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcInJlYWN0L2pzeC1kZXYtcnVudGltZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcInNlbWFudGljLXVpLXJlYWN0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXNlLWRlZXAtY29tcGFyZS1lZmZlY3RcIiIsIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vLy4vaW5kZXgudHMiXSwibmFtZXMiOlsiZCIsImRlYnVnIiwiTG9jYWxEYXRlUGlja2VyIiwicHJvcHMiLCJtaW5EYXRlIiwibWF4RGF0ZSIsInZhbHVlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJhcyIsImFjdGlvbiIsImFjdGlvblBvc2l0aW9uIiwiY2xhc3NOYW1lIiwiZXJyb3IiLCJmbHVpZCIsImZvY3VzIiwiaWNvbiIsImljb25Qb3NpdGlvbiIsImludmVydGVkIiwibGFiZWwiLCJsYWJlbFBvc2l0aW9uIiwibG9hZGluZyIsInNpemUiLCJ0YWJJbmRleCIsInRyYW5zcGFyZW50IiwicmVzdCIsInNlbGVjdGVkIiwidG9EYXRlIiwiaW5wdXRQcm9wcyIsImRhdGUiLCJ0b0xvY2FsRGF0ZSIsIk1hc2tlZERhdGVJbnB1dElubmVyIiwicmVmIiwibmFtZSIsImFsaWFzIiwiaW5wdXRGb3JtYXQiLCJ0YXJnZXQiLCJNYXNrZWREYXRlSW5wdXQiLCJmb3J3YXJkUmVmIiwibW9udGhPcHRpb25zIiwidGV4dCIsImtleSIsIkxvY2FsTW9udGhTZWxlY3QiLCJ5ZWFyIiwiaGFuZGxlQmx1ciIsInRoZVllYXIiLCJMb2NhbERhdGUiLCJtb250aFZhbHVlIiwiZXYiLCJ2IiwiTG9jYWxUaW1lUGlja2VyIiwiZGlzYWJsZWQiLCJMb2NhbFRpbWUiLCJ0b0xvY2FsVGltZSIsIk1hc2tlZFRpbWVJbnB1dElubmVyIiwiTWFza2VkVGltZUlucHV0IiwibW9udGhzIiwiTW9udGhEYXlIZWFkZXIiLCJnZXRNb250aCIsImRlY3JlYXNlTW9udGgiLCJwcmV2TW9udGhCdXR0b25EaXNhYmxlZCIsImluY3JlYXNlTW9udGgiLCJuZXh0TW9udGhCdXR0b25EaXNhYmxlZCIsIk1vbnRoRGF5UGlja2VyIiwiTW9udGhZZWFyUGlja2VyIiwidW5kZWZpbmVkIiwid2l0aERheU9mTW9udGgiLCJwbHVzTW9udGhzIiwibWludXNEYXlzIiwicGx1c1llYXJzIiwiWWVhclNlbGVjdCIsInRoaXNZZWFyIiwiRGF0ZSIsImdldEZ1bGxZZWFyIiwibWluWWVhciIsIm1heFllYXIiLCJhdmFpbGFibGVZZWFycyIsImkiLCJwdXNoIiwidG9TdHJpbmciLCJwYWRkaW5nIiwibWFyZ2luIiwiZSIsInZhbCIsIm1hcmdpblJpZ2h0IiwiVEZvcm0iLCJ0YmFnIiwidXNlVEZvcm0iLCJjb21wb25lbnQiLCJyZW5kZXIiLCJjaGlsZHJlbiIsImlubmVyUmVmIiwiUmVhY3QiLCJjaGlsZCIsImlzRnVuY3Rpb24iLCJpc0VtcHR5Q2hpbGRyZW4iLCJjb25maWciLCJmb3JtaWsiLCJ1c2VGb3JtaWsiLCJ1c2VFZmZlY3QiLCJvblZhbGlkYXRlIiwiaXNWYWxpZCIsImdldFN1Ym1pdEZuIiwic3VibWl0Rm9ybSIsInZhbHVlcyIsInVzZVN0YXRlIiwiZXJyb3JDbGVhcmVkIiwic2V0RXJyb3JDbGVhcmVkIiwibWVzc2FnZSIsImlzU3VibWl0dGluZyIsImZsYXRXYXJuaW5ncyIsImZsYXR0ZW4iLCJlcnJvcnMiLCJmbGF0VG91Y2hlZCIsInRvdWNoZWQiLCJ3YXJuaW5ncyIsInVuaXEiLCJPYmplY3QiLCJrZXlzIiwicmVkdWNlIiwibWVtbyIsImlzVG91Y2hlZCIsInN1Ym1pdENvdW50IiwiZ2V0IiwiZXJyb3JIZWFkZXIiLCJncmFwaFFMRXJyb3JzIiwiZXJyb3JNZXNzYWdlIiwic2xpY2UiLCJpbmRleE9mIiwiaGFzV2FybmluZ3MiLCJsZW5ndGgiLCJoYXNFcnJvcnMiLCJyZW5kZXJXYXJuaW5ncyIsIm92ZXJmbG93IiwibWF4SGVpZ2h0IiwibWFwIiwibXNnIiwiZmllbGRFcnJvciIsImZpZWxkTmFtZSIsInByb3BlcnR5IiwiaGFuZGxlU3VibWl0Iiwic3VibWl0RGlzYWJsZWQiLCJlcnJvck1hcmtlZENsZWFyZWQiLCJmb3JtRXJyb3IiLCJDcmVkaXRDYXJkSW5wdXQiLCJjYXJkVHlwZSIsInR5cGUiLCJzZXRUeXBlIiwidmFsaWRhdGUiLCJ2YWx1ZUFycmF5IiwiY2FyZE51bWJlciIsImZpbHRlciIsImIiLCJqb2luIiwiQ3JlZGl0Q2FyZENhcmROYW1lRW51bSIsInBhcnNlSW50Iiwic3Vic3RyIiwiY3JlZGl0Q2FyZE1hc2siLCJtYXNrIiwiaXNDb21wbGV0ZSIsImF1dG9Vbm1hc2siLCJNYXNrZWRJbnB1dCIsImlucHV0RWxlbWVudCIsInVzZVJlZiIsIm1hc2tJbnN0YW5jZSIsInVzZURlZXBDb21wYXJlRWZmZWN0IiwiY3VycmVudCIsIkVycm9yIiwiSW5wdXRtYXNrIiwib25jb21wbGV0ZSIsIm9uY2xlYXJlZCIsIm9uaW5jb21wbGV0ZSIsInJlbW92ZSIsIlBob25lSW5wdXQiLCJleHRlbnNpb24iLCJncmVlZHkiLCJSYWRpb0dyb3VwIiwiQ2hpbGRyZW4iLCJGb3JtUmFkaW8iLCJSYWRpbyIsIkZvcm0iLCJjbG9uZUVsZW1lbnQiLCJhcmdzIiwiY2hlY2tlZCIsIlNjcmlwdGVsIiwib21uaXNjcmlwdFVybCIsImltYWdlVHlwZSIsInNjYWxlIiwiY3JvcCIsInBlblN0eWxlIiwic29ja2V0Iiwic2V0UmVuZGVyIiwic2V0TG9hZGluZyIsImlzU2lnbmluZyIsInNldElzU2lnbmluZyIsIlNjcmlwdGVsU29ja2V0Iiwib24iLCJjbG9zZSIsInJlbmRlckltYWdlIiwiU2NyaXB0ZWxDb250ZXh0IiwiU2NyaXB0ZWxQZW5TdHlsZSIsIlNjcmlwdGVsTWVzc2FnZUNsYXNzIiwic2VydmVyQ29ubmVjdGVkIiwic2VydmVySW5mbyIsImRldmljZXMiLCJkZXZpY2UiLCJzZW5kIiwiSlNPTiIsInN0cmluZ2lmeSIsIl9jbGFzcyIsInV1aWQiLCJkZXZpY2VDb25uZWN0ZWQiLCJyZW5kZXJTZXR0aW5ncyIsInJlbmRlckZ1bmN0aW9uIiwiUGxhaW4iLCJldmVudEVtaXR0ZXIiLCJ3aWR0aCIsImhlaWdodCIsImVtaXQiLCJvcHRpb25zIiwiV2ViU29ja2V0Iiwib25vcGVuIiwib25jbG9zZSIsIm9ubWVzc2FnZSIsInBhcnNlIiwiZGF0YSIsIkV2ZW50RW1pdHRlciIsIndpdGhTY3JpcHRlbCIsIldyYXBwZWRDb21wb25lbnQiLCJzY3JpcHRlbFByb3BzIiwiU2NyaXB0ZWxJbnB1dCIsImJ1dHRvblRleHQiLCJjdHgiLCJ1c2VDb250ZXh0IiwiZW50ZXJTaWduYXR1cmUiLCJzZXRFbnRlclNpZ25hdHVyZSIsInRpbWVzdGFtcCIsImNhbGlicmF0ZSIsIlNpbklucHV0IiwiaGFzU2luIiwiZWRpdCIsInNldEVkaXQiLCJkb0RlbGV0ZSIsInNldERvRGVsZXRlIiwiaGFuZGxlQ2hhbmdlIiwicGFkZGluZ1RvcCIsIkRyb3Bkb3duQ2VsbCIsImRyb3Bkb3duUHJvcHMiLCJEcm9wZG93bkNlbGxGbiIsInJvd0luZGV4Iiwicm93IiwiaW5kZXgiLCJpZCIsImNvbHVtbiIsInVwZGF0ZURhdGEiLCJldmVudCIsIkhvdmVyQ2VsbCIsIkhvdmVyQ2VsbEZuIiwiQWN0aW9uIiwiaG92ZXJSb3ciLCJ0ZXh0QWxpZ24iLCJNb25leUNlbGwiLCJNb25leUNlbGxGbiIsImZvcm1hdE1vbmV5Iiwib3ZlcnJpZGVWYWx1ZSIsIk1vbmV5RWRpdENlbGwiLCJvcHRzIiwiTW9uZXlFZGl0Q2VsbEZuIiwiaW5pdGlhbFZhbHVlIiwic2V0VmFsdWUiLCJhZGRSb3dPblRhYiIsImFkZFJvd09uVGFiSWYiLCJNb25leVN1bUZvb3RlciIsImluZm8iLCJzdW0iLCJyb3dzIiwiYWRkIiwidG9Nb25leSIsIlN0cmluZ0VkaXRDZWxsIiwiU3RyaW5nRWRpdENlbGxGbiIsIlRhYmxlSW5wdXRUYWJsZSIsImNvbHVtbnMiLCJhcnJheUhlbHBlcnMiLCJzZXRGaWVsZFZhbHVlIiwiY3JlYXRlUm93IiwidGFibGVQcm9wcyIsImhlYWRlclJvd1Byb3BzIiwiaGVhZGVyQ2VsbFByb3BzIiwiYm9keVByb3BzIiwicm93UHJvcHMiLCJjZWxsUHJvcHMiLCJmb290ZXJDZWxsUHJvcHMiLCJmb290ZXJSb3dQcm9wcyIsImNvbHMiLCJ1c2VNZW1vIiwidmFscyIsInNldEhvdmVyUm93IiwidXNlVGFibGUiLCJjb2x1bW5JZCIsImFkZFJvdyIsImdldFRhYmxlUHJvcHMiLCJnZXRUYWJsZUJvZHlQcm9wcyIsImhlYWRlckdyb3VwcyIsInByZXBhcmVSb3ciLCJmb290ZXJHcm91cHMiLCJoYXNGb290ZXIiLCJzb21lIiwiZmciLCJoZWFkZXJzIiwiZmdoIiwiRm9vdGVyIiwiZm9vdGVyIiwiZ3JvdXAiLCJnZXRGb290ZXJHcm91cFByb3BzIiwiZ2V0Rm9vdGVyUHJvcHMiLCJoZWFkZXJHcm91cCIsImdldEhlYWRlckdyb3VwUHJvcHMiLCJnZXRIZWFkZXJQcm9wcyIsImdldFJvd1Byb3BzIiwiY2VsbHMiLCJjZWxsIiwiZ2V0Q2VsbFByb3BzIiwiVGFibGVJbnB1dCIsInJvd3NMZW5ndGgiLCJzaGlmdEtleSIsIk1vbmV5Q3VycmVuY3lJbnB1dCIsInByZWZpeCIsImRlZmF1bHRDdXJyZW5jeSIsInNob3dQcmVmaXgiLCJ3aG9sZU51bWJlciIsImN1cnJlbmNpZXMiLCJsb2NrZWQiLCJ1c2VNb25leUlucHV0IiwiaGFuZGxlRHJvcGRvd25DaGFuZ2UiLCJhbW91bnQiLCJNb25leSIsImN1cnJlbmN5IiwiZGVjaW1hbF9kaWdpdHMiLCJjb2RlIiwiTW9uZXlJbnB1dCIsImFkakN1cnJlbmN5IiwiZ3JvdXBTZXBhcmF0b3IiLCJkaWdpdHMiLCJDdXJyZW5jaWVzIiwiZGlnaXRzT3B0aW9uYWwiLCJzeW1ib2wiLCJwbGFjZWhvbGRlciIsImlucHV0VmFsdWUiLCJlcXVhbHMiLCJpc01vbmV5T2JqZWN0IiwidmFsdWVJbk1vbmV5IiwiRm9ybVN0ZXAiLCJ1c2VTdGVwIiwic3RhdGUiLCJzdGVwS2V5IiwiZm9ybSIsIm9uU3VibWl0IiwidGl0bGUiLCJTdGVwIiwiU3RlcFByb3ZpZGVyIiwic2V0U3RhdGUiLCJjdXJyZW50U3RlcCIsInNldEN1cnJlbnRTdGVwIiwic2V0SXNTdWJtaXR0aW5nIiwidGl0bGVzIiwiaGlkZGVuIiwic3RlcCIsIm9uTmF2aWdhdGUiLCJ2ZXJ0aWNhbCIsIndhcm5PblJlcm91dGUiLCJTdGVwQ29udGV4dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTs7QUFFQSxJQUFNQSxDQUFDLEdBQUdDLDRDQUFLLENBQUMsbUNBQUQsQ0FBZjtBQWNPLFNBQVNDLGVBQVQsQ0FBeUJDLEtBQXpCLEVBQW1FO0FBQ3pFLE1BQ0NDLE9BREQsR0F1QklELEtBdkJKLENBQ0NDLE9BREQ7QUFBQSxNQUVDQyxPQUZELEdBdUJJRixLQXZCSixDQUVDRSxPQUZEO0FBQUEsTUFHQ0MsS0FIRCxHQXVCSUgsS0F2QkosQ0FHQ0csS0FIRDtBQUFBLE1BSUNDLFNBSkQsR0F1QklKLEtBdkJKLENBSUNJLFFBSkQ7QUFBQSxNQUtDQyxNQUxELEdBdUJJTCxLQXZCSixDQUtDSyxNQUxEO0FBQUEsTUFNQ0MsRUFORCxHQXVCSU4sS0F2QkosQ0FNQ00sRUFORDtBQUFBLE1BT0NDLE1BUEQsR0F1QklQLEtBdkJKLENBT0NPLE1BUEQ7QUFBQSxNQVFDQyxjQVJELEdBdUJJUixLQXZCSixDQVFDUSxjQVJEO0FBQUEsTUFTQ0MsU0FURCxHQXVCSVQsS0F2QkosQ0FTQ1MsU0FURDtBQUFBLE1BVUNDLEtBVkQs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LHdDOzs7Ozs7Ozs7O0FDQUEsNEM7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7OztBQ0FBLDJDOzs7Ozs7Ozs7O0FDQUEsa0M7Ozs7Ozs7Ozs7QUNBQSxvQzs7Ozs7Ozs7OztBQ0FBLHVDOzs7Ozs7Ozs7O0FDQUEsc0M7Ozs7Ozs7Ozs7QUNBQSx3Qzs7Ozs7Ozs7OztBQ0FBLDZDOzs7Ozs7Ozs7O0FDQUEseUM7Ozs7Ozs7Ozs7QUNBQSxtQzs7Ozs7Ozs7OztBQ0FBLDhDOzs7Ozs7Ozs7O0FDQUEsOEM7Ozs7Ozs7Ozs7QUNBQSx5Qzs7Ozs7Ozs7OztBQ0FBLG1EOzs7Ozs7Ozs7O0FDQUEsK0M7Ozs7Ozs7Ozs7QUNBQSxxRDs7Ozs7O1VDQUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7Ozs7V0N0QkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLGdDQUFnQyxZQUFZO1dBQzVDO1dBQ0EsRTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHdDQUF3Qyx5Q0FBeUM7V0FDakY7V0FDQTtXQUNBLEU7Ozs7O1dDUEEsd0Y7Ozs7O1dDQUE7V0FDQTtXQUNBO1dBQ0Esc0RBQXNELGtCQUFrQjtXQUN4RTtXQUNBLCtDQUErQyxjQUFjO1dBQzdELEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNOQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUdBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUdBIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERhdGVQaWNrZXIgZnJvbSAncmVhY3QtZGF0ZXBpY2tlcic7XG5pbXBvcnQgJy4vc3R5bGVzLmNzcyc7XG5cbmV4cG9ydCB7RGF0ZVBpY2tlcn07XG4iLCJpbXBvcnQgdHlwZSB7TG9jYWxEYXRlfSBmcm9tICdAanMtam9kYS9jb3JlJztcbmltcG9ydCB7dG9EYXRlLCB0b0xvY2FsRGF0ZX0gZnJvbSAnQHRoeC9kYXRlJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge1JlYWN0RGF0ZVBpY2tlclByb3BzfSBmcm9tICdyZWFjdC1kYXRlcGlja2VyJztcbmltcG9ydCB0eXBlIHtJbnB1dFByb3BzfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge0RhdGVQaWNrZXJ9IGZyb20gJy4uL0RhdGVQaWNrZXIvaW5kZXgnO1xuaW1wb3J0IHtNYXNrZWREYXRlSW5wdXR9IGZyb20gJy4vTWFza2VkRGF0ZUlucHV0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuZGF0ZS5Mb2NhbERhdGVQaWNrZXInKTtcblxuaW50ZXJmYWNlIElMb2NhbERhdGVQaWNrZXIge1xuXHR2YWx1ZT86IExvY2FsRGF0ZSB8IG51bWJlciB8IG51bGw7XG5cdG9uQ2hhbmdlPzogKHZhbHVlOiBMb2NhbERhdGUgfCBudWxsKSA9PiB2b2lkO1xuXHRvbkNoYW5nZVJhdz86ICgpID0+IHZvaWQ7XG5cdG1pbkRhdGU/OiBMb2NhbERhdGU7XG5cdG1heERhdGU/OiBMb2NhbERhdGU7XG59XG5cbnR5cGUgSW5wdXRQcm9wc09taXR0ZWQgPSBPbWl0PElucHV0UHJvcHMsICdvbkNoYW5nZSc+O1xudHlwZSBSZWFjdERhdGVQaWNrZXJQcm9wc09taXR0ZWQgPSBPbWl0PE9taXQ8UmVhY3REYXRlUGlja2VyUHJvcHMsICd2YWx1ZSc+LCAnb25DaGFuZ2UnIHwgJ21pbkRhdGUnIHwgJ21heERhdGUnPjtcbmV4cG9ydCB0eXBlIExvY2FsRGF0ZVBpY2tlclByb3BzID0gSUxvY2FsRGF0ZVBpY2tlciAmIElucHV0UHJvcHNPbWl0dGVkICYgUmVhY3REYXRlUGlja2VyUHJvcHNPbWl0dGVkO1xuXG5leHBvcnQgZnVuY3Rpb24gTG9jYWxEYXRlUGlja2VyKHByb3BzOiBMb2NhbERhdGVQaWNrZXJQcm9wcyk6IEpTWC5FbGVtZW50IHtcblx0Y29uc3Qge1xuXHRcdG1pbkRhdGUsXG5cdFx0bWF4RGF0ZSxcblx0XHR2YWx1ZSxcblx0XHRvbkNoYW5nZSxcblx0XHRvbkJsdXIsXG5cdFx0YXMsXG5cdFx0YWN0aW9uLFxuXHRcdGFjdGlvblBvc2l0aW9uLFxuXHRcdGNsYXNzTmFtZSxcblx0XHRlcnJvcixcblx0XHRmbHVpZCxcblx0XHRmb2N1cyxcblx0XHRpY29uLFxuXHRcdGljb25Qb3NpdGlvbixcblx0XHRpbnZlcnRlZCxcblx0XHRsYWJlbCxcblx0XHRsYWJlbFBvc2l0aW9uLFxuXHRcdGxvYWRpbmcsXG5cdFx0c2l6ZSxcblx0XHR0YWJJbmRleCxcblx0XHR0cmFuc3BhcmVudCxcblx0XHQuLi5yZXN0XG5cdH0gPSBwcm9wcztcblxuXHRjb25zdCBzZWxlY3RlZCA9IHZhbHVlID8gdG9EYXRlKHZhbHVlKSA6IG51bGw7XG5cblx0Y29uc3QgaW5wdXRQcm9wcyA9IHtcblx0XHRhcyxcblx0XHRhY3Rpb24sXG5cdFx0YWN0aW9uUG9zaXRpb24sXG5cdFx0Y2xhc3NOYW1lLFxuXHRcdGVycm9yLFxuXHRcdGZsdWlkLFxuXHRcdGZvY3VzLFxuXHRcdGljb24sXG5cdFx0aWNvblBvc2l0aW9uLFxuXHRcdGludmVydGVkLFxuXHRcdGxhYmVsLFxuXHRcdGxhYmVsUG9zaXRpb24sXG5cdFx0bG9hZGluZyxcblx0XHRzaXplLFxuXHRcdHRhYkluZGV4LFxuXHRcdHRyYW5zcGFyZW50LFxuXHR9O1xuXG5cdHJldHVybiAoXG5cdFx0PERhdGVQaWNrZXJcblx0XHRcdHsuLi5yZXN0fVxuXHRcdFx0c2VsZWN0ZWQ9e3NlbGVjdGVkfVxuXHRcdFx0b25DaGFuZ2U9e2RhdGUgPT4ge1xuXHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKGRhdGUgPyB0b0xvY2FsRGF0ZShkYXRlKSA6IG51bGwpO1xuXHRcdFx0fX1cblx0XHRcdG9uQmx1cj17b25CbHVyfVxuXHRcdFx0Y3VzdG9tSW5wdXQ9ezxNYXNrZWREYXRlSW5wdXQgey4uLmlucHV0UHJvcHN9IG9uQmx1cj17b25CbHVyfSAvPn1cblx0XHRcdG1pbkRhdGU9e21pbkRhdGUgPyB0b0RhdGUobWluRGF0ZSkgOiBudWxsfVxuXHRcdFx0bWF4RGF0ZT17bWF4RGF0ZSA/IHRvRGF0ZShtYXhEYXRlKSA6IG51bGx9XG5cdFx0Lz5cblx0KTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QsIHtmb3J3YXJkUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge01hc2tlZElucHV0LCBNYXNrZWRJbnB1dFByb3BzfSBmcm9tICcuLi8uLi9pbnB1dHMvTWFza2VkSW5wdXQnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5kYXRlLkxvY2FsRGF0ZVBpY2tlci5NYXNrZWREYXRlSW5wdXQnKTtcblxuZXhwb3J0IGludGVyZmFjZSBNYXNrZWREYXRlSW5wdXRQcm9wcyB7XG5cdG5hbWU/OiBzdHJpbmc7XG5cdG9uQ2hhbmdlPzogKHZhbHVlOiB7dGFyZ2V0OiB7dmFsdWU6IHN0cmluZ319KSA9PiB2b2lkO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMsQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5mdW5jdGlvbiBNYXNrZWREYXRlSW5wdXRJbm5lcihwcm9wczogTWFza2VkRGF0ZUlucHV0UHJvcHMgJiBPbWl0PE1hc2tlZElucHV0UHJvcHMsICdvbkNoYW5nZSc+LCByZWY6IGFueSkge1xuXHRjb25zdCB7b25DaGFuZ2UsIG5hbWUsIC4uLnJlc3R9ID0gcHJvcHM7XG5cblx0cmV0dXJuIChcblx0XHQ8TWFza2VkSW5wdXRcblx0XHRcdHsuLi5yZXN0fVxuXHRcdFx0bmFtZT17bmFtZX1cblx0XHRcdG1hc2s9e3thbGlhczogJ2RhdGV0aW1lJywgaW5wdXRGb3JtYXQ6ICdtbS9kZC95eXl5J319XG5cdFx0XHRvbkNoYW5nZT17dmFsdWUgPT4ge1xuXHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKHt0YXJnZXQ6IHt2YWx1ZTogdmFsdWUgfHwgJyd9fSk7XG5cdFx0XHR9fVxuXHRcdC8+XG5cdCk7XG59XG5cbmV4cG9ydCBjb25zdCBNYXNrZWREYXRlSW5wdXQgPSBmb3J3YXJkUmVmKE1hc2tlZERhdGVJbnB1dElubmVyKTtcbiIsImltcG9ydCB7TG9jYWxEYXRlfSBmcm9tICdAanMtam9kYS9jb3JlJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtTZWxlY3QsIFNlbGVjdFByb3BzfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmRhdGUuTG9jYWxNb250aFNlbGVjdCcpO1xuXG5jb25zdCBtb250aE9wdGlvbnMgPSBbXG5cdHt0ZXh0OiAnSmFudWFyeScsIHZhbHVlOiAxLCBrZXk6IDF9LFxuXHR7dGV4dDogJ0ZlYnJ1YXJ5JywgdmFsdWU6IDIsIGtleTogMn0sXG5cdHt0ZXh0OiAnTWFyY2gnLCB2YWx1ZTogMywga2V5OiAzfSxcblx0e3RleHQ6ICdBcHJpbCcsIHZhbHVlOiA0LCBrZXk6IDR9LFxuXHR7dGV4dDogJ01heScsIHZhbHVlOiA1LCBrZXk6IDV9LFxuXHR7dGV4dDogJ0p1bmUnLCB2YWx1ZTogNiwga2V5OiA2fSxcblx0e3RleHQ6ICdKdWx5JywgdmFsdWU6IDcsIGtleTogN30sXG5cdHt0ZXh0OiAnQXVndXN0JywgdmFsdWU6IDgsIGtleTogOH0sXG5cdHt0ZXh0OiAnU2VwdGVtYmVyJywgdmFsdWU6IDksIGtleTogOX0sXG5cdHt0ZXh0OiAnT2N0b2JlcicsIHZhbHVlOiAxMCwga2V5OiAxMH0sXG5cdHt0ZXh0OiAnTm92ZW1iZXInLCB2YWx1ZTogMTEsIGtleTogMTF9LFxuXHR7dGV4dDogJ0RlY2VtYmVyJywgdmFsdWU6IDEyLCBrZXk6IDEyfSxcbl07XG5cbmludGVyZmFjZSBJTG9jYWxNb250aFNlbGVjdFByb3BzIHtcblx0b25DaGFuZ2U/OiAodmFsdWU6IExvY2FsRGF0ZSB8IG51bGwpID0+IHZvaWQ7XG5cdHZhbHVlPzogTG9jYWxEYXRlIHwgbnVsbDtcblx0eWVhcj86IG51bWJlcjtcblx0aGFuZGxlQmx1cj86IChldmVudDogYW55KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBMb2NhbE1vbnRoU2VsZWN0UHJvcHMgPSBJTG9jYWxNb250aFNlbGVjdFByb3BzICYgT21pdDxTZWxlY3RQcm9wcywgJ29wdGlvbnMnPjtcblxuZXhwb3J0IGZ1bmN0aW9uIExvY2FsTW9udGhTZWxlY3QocHJvcHM6IExvY2FsTW9udGhTZWxlY3RQcm9wcyk6IEpTWC5FbGVtZW50IHtcblx0Y29uc3Qge3ZhbHVlLCBvbkNoYW5nZSwgeWVhciwgaGFuZGxlQmx1ciwgLi4ucmVzdH0gPSBwcm9wcztcblxuXHRjb25zdCB0aGVZZWFyID0geWVhciB8fCBMb2NhbERhdGUubm93KCkueWVhcigpO1xuXG5cdHJldHVybiAoXG5cdFx0PFNlbGVjdFxuXHRcdFx0cGxhY2Vob2xkZXI9XCJTZWxlY3QgTW9udGhcIlxuXHRcdFx0b3B0aW9ucz17bW9udGhPcHRpb25zfVxuXHRcdFx0dmFsdWU9e3ZhbHVlID8gdmFsdWUubW9udGhWYWx1ZSgpIDogJyd9XG5cdFx0XHRvbkNoYW5nZT17KGV2LCB2KSA9PiB7XG5cdFx0XHRcdGlmIChvbkNoYW5nZSkge1xuXHRcdFx0XHRcdGlmICh0eXBlb2Ygdi52YWx1ZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0XHRcdG9uQ2hhbmdlKHYgPyBMb2NhbERhdGUub2YodGhlWWVhciwgdi52YWx1ZSwgMSkgOiBudWxsKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0b25DaGFuZ2UobnVsbCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9fVxuXHRcdFx0b25CbHVyPXtoYW5kbGVCbHVyfVxuXHRcdFx0ey4uLnJlc3R9XG5cdFx0Lz5cblx0KTtcbn1cbiIsImltcG9ydCB7TG9jYWxUaW1lfSBmcm9tICdAanMtam9kYS9jb3JlJztcbmltcG9ydCB7dG9EYXRlLCB0b0xvY2FsVGltZX0gZnJvbSAnQHRoeC9kYXRlJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge1JlYWN0RGF0ZVBpY2tlclByb3BzfSBmcm9tICdyZWFjdC1kYXRlcGlja2VyJztcbmltcG9ydCB0eXBlIHtJbnB1dFByb3BzfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge0RhdGVQaWNrZXJ9IGZyb20gJy4uL0RhdGVQaWNrZXIvaW5kZXgnO1xuaW1wb3J0IHtNYXNrZWRUaW1lSW5wdXR9IGZyb20gJy4vTWFza2VkVGltZUlucHV0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuZGF0ZS5Mb2NhbFRpbWVQaWNrZXInKTtcblxuaW50ZXJmYWNlIElMb2NhbFRpbWVQaWNrZXIge1xuXHR2YWx1ZT86IExvY2FsVGltZSB8IG51bWJlciB8IG51bGw7XG5cdG9uQ2hhbmdlPzogKHZhbHVlOiBMb2NhbFRpbWUgfCBudWxsKSA9PiB2b2lkO1xuXHRvbkNoYW5nZVJhdz86ICgpID0+IHZvaWQ7XG59XG5cbnR5cGUgSW5wdXRQcm9wc09taXR0ZWQgPSBPbWl0PElucHV0UHJvcHMsICdvbkNoYW5nZSc+O1xudHlwZSBSZWFjdERhdGVQaWNrZXJQcm9wc09taXR0ZWQgPSBPbWl0PE9taXQ8UmVhY3REYXRlUGlja2VyUHJvcHMsICd2YWx1ZSc+LCAnb25DaGFuZ2UnPjtcbmV4cG9ydCB0eXBlIExvY2FsVGltZVBpY2tlclByb3BzID0gSUxvY2FsVGltZVBpY2tlciAmIElucHV0UHJvcHNPbWl0dGVkICYgUmVhY3REYXRlUGlja2VyUHJvcHNPbWl0dGVkO1xuXG5leHBvcnQgZnVuY3Rpb24gTG9jYWxUaW1lUGlja2VyKHByb3BzOiBMb2NhbFRpbWVQaWNrZXJQcm9wcyk6IEpTWC5FbGVtZW50IHtcblx0Y29uc3Qge1xuXHRcdHZhbHVlLFxuXHRcdG9uQ2hhbmdlLFxuXHRcdGFzLFxuXHRcdGFjdGlvbixcblx0XHRhY3Rpb25Qb3NpdGlvbixcblx0XHRjbGFzc05hbWUsXG5cdFx0ZGlzYWJsZWQsXG5cdFx0ZXJyb3IsXG5cdFx0Zmx1aWQsXG5cdFx0Zm9jdXMsXG5cdFx0aWNvbixcblx0XHRpY29uUG9zaXRpb24sXG5cdFx0aW52ZXJ0ZWQsXG5cdFx0bGFiZWwsXG5cdFx0bGFiZWxQb3NpdGlvbixcblx0XHRsb2FkaW5nLFxuXHRcdHNpemUsXG5cdFx0dGFiSW5kZXgsXG5cdFx0dHJhbnNwYXJlbnQsXG5cdFx0Li4ucmVzdFxuXHR9ID0gcHJvcHM7XG5cblx0bGV0IHNlbGVjdGVkO1xuXHRpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgc2VsZWN0ZWQgPSB0b0RhdGUoTG9jYWxUaW1lLm9mU2Vjb25kT2ZEYXkodmFsdWUpKTtcblx0ZWxzZSBzZWxlY3RlZCA9IHZhbHVlID8gdG9EYXRlKHZhbHVlKSA6IG51bGw7XG5cblx0Y29uc3QgaW5wdXRQcm9wcyA9IHtcblx0XHRhcyxcblx0XHRhY3Rpb24sXG5cdFx0YWN0aW9uUG9zaXRpb24sXG5cdFx0Y2xhc3NOYW1lLFxuXHRcdGRpc2FibGVkLFxuXHRcdGVycm9yLFxuXHRcdGZsdWlkLFxuXHRcdGZvY3VzLFxuXHRcdGljb24sXG5cdFx0aWNvblBvc2l0aW9uLFxuXHRcdGludmVydGVkLFxuXHRcdGxhYmVsLFxuXHRcdGxhYmVsUG9zaXRpb24sXG5cdFx0bG9hZGluZyxcblx0XHRzaXplLFxuXHRcdHRhYkluZGV4LFxuXHRcdHRyYW5zcGFyZW50LFxuXHR9O1xuXG5cdHJldHVybiAoXG5cdFx0PERhdGVQaWNrZXJcblx0XHRcdHsuLi5yZXN0fVxuXHRcdFx0c2VsZWN0ZWQ9e3NlbGVjdGVkfVxuXHRcdFx0b25DaGFuZ2U9e2RhdGUgPT4ge1xuXHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKGRhdGUgPyB0b0xvY2FsVGltZShkYXRlKSA6IG51bGwpO1xuXHRcdFx0fX1cblx0XHRcdHNob3dUaW1lU2VsZWN0XG5cdFx0XHRzaG93VGltZVNlbGVjdE9ubHlcblx0XHRcdHRpbWVJbnRlcnZhbHM9ezE1fVxuXHRcdFx0dGltZUNhcHRpb249XCJUaW1lXCJcblx0XHRcdGRhdGVGb3JtYXQ9XCJoaDptbSBhYVwiXG5cdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRjdXN0b21JbnB1dD17PE1hc2tlZFRpbWVJbnB1dCB7Li4uaW5wdXRQcm9wc30gLz59XG5cdFx0Lz5cblx0KTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QsIHtmb3J3YXJkUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge01hc2tlZElucHV0LCBNYXNrZWRJbnB1dFByb3BzfSBmcm9tICcuLi8uLi9pbnB1dHMvTWFza2VkSW5wdXQnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5kYXRlLkxvY2FsVGltZVBpY2tlci5NYXNrZWRUaW1lSW5wdXQnKTtcblxuZXhwb3J0IGludGVyZmFjZSBNYXNrZWRUaW1lSW5wdXRQcm9wcyB7XG5cdG9uQ2hhbmdlPzogKHZhbHVlOiB7dGFyZ2V0OiB7dmFsdWU6IHN0cmluZ319KSA9PiB2b2lkO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMsQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5mdW5jdGlvbiBNYXNrZWRUaW1lSW5wdXRJbm5lcihwcm9wczogTWFza2VkVGltZUlucHV0UHJvcHMgJiBPbWl0PE1hc2tlZElucHV0UHJvcHMsICdvbkNoYW5nZSc+LCByZWY6IGFueSkge1xuXHRjb25zdCB7b25DaGFuZ2UsIC4uLnJlc3R9ID0gcHJvcHM7XG5cblx0cmV0dXJuIChcblx0XHQ8TWFza2VkSW5wdXRcblx0XHRcdG1hc2s9e3thbGlhczogJ2RhdGV0aW1lJywgaW5wdXRGb3JtYXQ6ICdoaDpNTSBUVCd9fVxuXHRcdFx0b25DaGFuZ2U9e3ZhbHVlID0+IHtcblx0XHRcdFx0aWYgKG9uQ2hhbmdlKSBvbkNoYW5nZSh7dGFyZ2V0OiB7dmFsdWU6IHZhbHVlIHx8ICcnfX0pO1xuXHRcdFx0fX1cblx0XHRcdHsuLi5yZXN0fVxuXHRcdC8+XG5cdCk7XG59XG5cbmV4cG9ydCBjb25zdCBNYXNrZWRUaW1lSW5wdXQgPSBmb3J3YXJkUmVmKE1hc2tlZFRpbWVJbnB1dElubmVyKTtcbiIsImltcG9ydCB0eXBlIHtMb2NhbERhdGV9IGZyb20gJ0Bqcy1qb2RhL2NvcmUnO1xuaW1wb3J0IHt0b0RhdGUsIHRvTG9jYWxEYXRlfSBmcm9tICdAdGh4L2RhdGUnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7UmVhY3REYXRlUGlja2VyUHJvcHN9IGZyb20gJ3JlYWN0LWRhdGVwaWNrZXInO1xuaW1wb3J0IHtJbnB1dFByb3BzLCBJbnB1dH0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHtEYXRlUGlja2VyfSBmcm9tICcuLi9EYXRlUGlja2VyL2luZGV4JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuZGF0ZS5Nb250aERheVBpY2tlcicpO1xuXG5jb25zdCBtb250aHMgPSBbXG5cdCdKYW51YXJ5Jyxcblx0J0ZlYnJ1YXJ5Jyxcblx0J01hcmNoJyxcblx0J0FwcmlsJyxcblx0J01heScsXG5cdCdKdW5lJyxcblx0J0p1bHknLFxuXHQnQXVndXN0Jyxcblx0J1NlcHRlbWJlcicsXG5cdCdPY3RvYmVyJyxcblx0J05vdmVtYmVyJyxcblx0J0RlY2VtYmVyJyxcbl07XG5cbmludGVyZmFjZSBNb250aERheUhlYWRlclByb3BzIHtcblx0ZGF0ZTogRGF0ZTtcblx0Y2hhbmdlWWVhcih5ZWFyOiBudW1iZXIpOiB2b2lkO1xuXHRjaGFuZ2VNb250aChtb250aDogbnVtYmVyKTogdm9pZDtcblx0ZGVjcmVhc2VNb250aCgpOiB2b2lkO1xuXHRpbmNyZWFzZU1vbnRoKCk6IHZvaWQ7XG5cdHByZXZNb250aEJ1dHRvbkRpc2FibGVkOiBib29sZWFuO1xuXHRuZXh0TW9udGhCdXR0b25EaXNhYmxlZDogYm9vbGVhbjtcblx0ZGVjcmVhc2VZZWFyKCk6IHZvaWQ7XG5cdGluY3JlYXNlWWVhcigpOiB2b2lkO1xuXHRwcmV2WWVhckJ1dHRvbkRpc2FibGVkOiBib29sZWFuO1xuXHRuZXh0WWVhckJ1dHRvbkRpc2FibGVkOiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiBNb250aERheUhlYWRlcihwcm9wczogTW9udGhEYXlIZWFkZXJQcm9wcykge1xuXHRyZXR1cm4gKFxuXHRcdDw+XG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cInJlYWN0LWRhdGVwaWNrZXJfX2N1cnJlbnQtbW9udGhcIj57bW9udGhzW3Byb3BzLmRhdGUuZ2V0TW9udGgoKV19PC9kaXY+XG5cdFx0XHQ8YnV0dG9uXG5cdFx0XHRcdHR5cGU9XCJidXR0b25cIlxuXHRcdFx0XHRjbGFzc05hbWU9XCJyZWFjdC1kYXRlcGlja2VyX19uYXZpZ2F0aW9uIHJlYWN0LWRhdGVwaWNrZXJfX25hdmlnYXRpb24tLXByZXZpb3VzXCJcblx0XHRcdFx0YXJpYS1sYWJlbD1cIlByZXZpb3VzIE1vbnRoXCJcblx0XHRcdFx0b25DbGljaz17cHJvcHMuZGVjcmVhc2VNb250aH1cblx0XHRcdFx0ZGlzYWJsZWQ9e3Byb3BzLnByZXZNb250aEJ1dHRvbkRpc2FibGVkfVxuXHRcdFx0PlxuXHRcdFx0XHRQcmV2aW91cyBNb250aFxuXHRcdFx0PC9idXR0b24+XG5cdFx0XHQ8YnV0dG9uXG5cdFx0XHRcdHR5cGU9XCJidXR0b25cIlxuXHRcdFx0XHRjbGFzc05hbWU9XCJyZWFjdC1kYXRlcGlja2VyX19uYXZpZ2F0aW9uIHJlYWN0LWRhdGVwaWNrZXJfX25hdmlnYXRpb24tLW5leHRcIlxuXHRcdFx0XHRhcmlhLWxhYmVsPVwiTmV4dCBNb250aFwiXG5cdFx0XHRcdG9uQ2xpY2s9e3Byb3BzLmluY3JlYXNlTW9udGh9XG5cdFx0XHRcdGRpc2FibGVkPXtwcm9wcy5uZXh0TW9udGhCdXR0b25EaXNhYmxlZH1cblx0XHRcdD5cblx0XHRcdFx0TmV4dCBNb250aFxuXHRcdFx0PC9idXR0b24+XG5cdFx0PC8+XG5cdCk7XG59XG5cbmludGVyZmFjZSBJTW9udGhEYXlQaWNrZXJQcm9wcyB7XG5cdHZhbHVlPzogTG9jYWxEYXRlIHwgbnVtYmVyIHwgbnVsbDtcblx0b25DaGFuZ2U/OiAodmFsdWU6IExvY2FsRGF0ZSB8IG51bGwpID0+IHZvaWQ7XG5cdG9uQ2hhbmdlUmF3PzogKCkgPT4gdm9pZDtcbn1cblxudHlwZSBJbnB1dFByb3BzT21pdHRlZCA9IE9taXQ8SW5wdXRQcm9wcywgJ29uQ2hhbmdlJz47XG50eXBlIFJlYWN0RGF0ZVBpY2tlclByb3BzT21pdHRlZCA9IE9taXQ8T21pdDxSZWFjdERhdGVQaWNrZXJQcm9wcywgJ3ZhbHVlJz4sICdvbkNoYW5nZSc+O1xuZXhwb3J0IHR5cGUgTW9udGhEYXlQaWNrZXJQcm9wcyA9IElNb250aERheVBpY2tlclByb3BzICYgSW5wdXRQcm9wc09taXR0ZWQgJiBSZWFjdERhdGVQaWNrZXJQcm9wc09taXR0ZWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBNb250aERheVBpY2tlcihwcm9wczogTW9udGhEYXlQaWNrZXJQcm9wcyk6IEpTWC5FbGVtZW50IHtcblx0Y29uc3Qge1xuXHRcdHZhbHVlLFxuXHRcdG9uQ2hhbmdlLFxuXHRcdGFzLFxuXHRcdGFjdGlvbixcblx0XHRhY3Rpb25Qb3NpdGlvbixcblx0XHRjbGFzc05hbWUsXG5cdFx0ZGlzYWJsZWQsXG5cdFx0ZXJyb3IsXG5cdFx0Zmx1aWQsXG5cdFx0Zm9jdXMsXG5cdFx0aWNvbixcblx0XHRpY29uUG9zaXRpb24sXG5cdFx0aW52ZXJ0ZWQsXG5cdFx0bGFiZWwsXG5cdFx0bGFiZWxQb3NpdGlvbixcblx0XHRsb2FkaW5nLFxuXHRcdHNpemUsXG5cdFx0dGFiSW5kZXgsXG5cdFx0dHJhbnNwYXJlbnQsXG5cdFx0Li4ucmVzdFxuXHR9ID0gcHJvcHM7XG5cblx0Y29uc3Qgc2VsZWN0ZWQgPSB2YWx1ZSA/IHRvRGF0ZSh2YWx1ZSkgOiBudWxsO1xuXG5cdGNvbnN0IGlucHV0UHJvcHMgPSB7XG5cdFx0YXMsXG5cdFx0YWN0aW9uLFxuXHRcdGFjdGlvblBvc2l0aW9uLFxuXHRcdGNsYXNzTmFtZSxcblx0XHRkaXNhYmxlZCxcblx0XHRlcnJvcixcblx0XHRmbHVpZCxcblx0XHRmb2N1cyxcblx0XHRpY29uLFxuXHRcdGljb25Qb3NpdGlvbixcblx0XHRpbnZlcnRlZCxcblx0XHRsYWJlbCxcblx0XHRsYWJlbFBvc2l0aW9uLFxuXHRcdGxvYWRpbmcsXG5cdFx0c2l6ZSxcblx0XHR0YWJJbmRleCxcblx0XHR0cmFuc3BhcmVudCxcblx0fTtcblxuXHRyZXR1cm4gKFxuXHRcdDxEYXRlUGlja2VyXG5cdFx0XHR7Li4ucmVzdH1cblx0XHRcdHNlbGVjdGVkPXtzZWxlY3RlZH1cblx0XHRcdG9uQ2hhbmdlPXtkYXRlID0+IHtcblx0XHRcdFx0aWYgKG9uQ2hhbmdlKSBvbkNoYW5nZShkYXRlID8gdG9Mb2NhbERhdGUoZGF0ZSkgOiBudWxsKTtcblx0XHRcdH19XG5cdFx0XHRjdXN0b21JbnB1dD17PElucHV0IHsuLi5pbnB1dFByb3BzfSAvPn1cblx0XHRcdHJlbmRlckN1c3RvbUhlYWRlcj17TW9udGhEYXlIZWFkZXJ9XG5cdFx0XHRkYXRlRm9ybWF0PVwiTU1NTSBkXCJcblx0XHQvPlxuXHQpO1xufVxuIiwiaW1wb3J0IHtMb2NhbERhdGV9IGZyb20gJ0Bqcy1qb2RhL2NvcmUnO1xuaW1wb3J0IHt0b0RhdGUsIHRvTG9jYWxEYXRlfSBmcm9tICdAdGh4L2RhdGUnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7UmVhY3REYXRlUGlja2VyUHJvcHN9IGZyb20gJ3JlYWN0LWRhdGVwaWNrZXInO1xuaW1wb3J0IHtJbnB1dFByb3BzLCBJbnB1dH0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHtEYXRlUGlja2VyfSBmcm9tICcuLi9EYXRlUGlja2VyL2luZGV4JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuZGF0ZS5Nb250aFllYXJQaWNrZXInKTtcblxuaW50ZXJmYWNlIElNb250aFllYXJQaWNrZXJQcm9wcyB7XG5cdHZhbHVlPzogTG9jYWxEYXRlIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xuXHRvbkNoYW5nZT86ICh2YWx1ZTogTG9jYWxEYXRlIHwgdW5kZWZpbmVkKSA9PiB2b2lkO1xuXHRvbkNoYW5nZVJhdz86ICgpID0+IHZvaWQ7XG5cdG1pbkRhdGU/OiBMb2NhbERhdGUgfCB1bmRlZmluZWQ7XG5cdG1heERhdGU/OiBMb2NhbERhdGUgfCB1bmRlZmluZWQ7XG59XG5cbnR5cGUgSW5wdXRQcm9wc09taXR0ZWQgPSBPbWl0PElucHV0UHJvcHMsICdvbkNoYW5nZSc+O1xudHlwZSBSZWFjdERhdGVQaWNrZXJQcm9wc09taXR0ZWQgPSBPbWl0PE9taXQ8UmVhY3REYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnbWluRGF0ZScgfCAnbWF4RGF0ZSc+LCAnb25DaGFuZ2UnPjtcbmV4cG9ydCB0eXBlIE1vbnRoWWVhclBpY2tlclByb3BzID0gSU1vbnRoWWVhclBpY2tlclByb3BzICYgSW5wdXRQcm9wc09taXR0ZWQgJiBSZWFjdERhdGVQaWNrZXJQcm9wc09taXR0ZWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBNb250aFllYXJQaWNrZXIocHJvcHM6IE1vbnRoWWVhclBpY2tlclByb3BzKTogSlNYLkVsZW1lbnQge1xuXHRjb25zdCB7XG5cdFx0dmFsdWUsXG5cdFx0b25DaGFuZ2UsXG5cdFx0YXMsXG5cdFx0YWN0aW9uLFxuXHRcdGFjdGlvblBvc2l0aW9uLFxuXHRcdGNsYXNzTmFtZSxcblx0XHRkaXNhYmxlZCxcblx0XHRlcnJvcixcblx0XHRmbHVpZCxcblx0XHRmb2N1cyxcblx0XHRpY29uLFxuXHRcdGljb25Qb3NpdGlvbixcblx0XHRpbnZlcnRlZCxcblx0XHRsYWJlbCxcblx0XHRsYWJlbFBvc2l0aW9uLFxuXHRcdGxvYWRpbmcsXG5cdFx0c2l6ZSxcblx0XHR0YWJJbmRleCxcblx0XHR0cmFuc3BhcmVudCxcblx0XHRtaW5EYXRlLFxuXHRcdG1heERhdGUsXG5cdFx0Li4ucmVzdFxuXHR9ID0gcHJvcHM7XG5cblx0Y29uc3Qgc2VsZWN0ZWQgPSB2YWx1ZSA/IHRvRGF0ZSh2YWx1ZSkgOiBudWxsO1xuXG5cdGNvbnN0IGlucHV0UHJvcHMgPSB7XG5cdFx0YXMsXG5cdFx0YWN0aW9uLFxuXHRcdGFjdGlvblBvc2l0aW9uLFxuXHRcdGNsYXNzTmFtZSxcblx0XHRkaXNhYmxlZCxcblx0XHRlcnJvcixcblx0XHRmbHVpZCxcblx0XHRmb2N1cyxcblx0XHRpY29uLFxuXHRcdGljb25Qb3NpdGlvbixcblx0XHRpbnZlcnRlZCxcblx0XHRsYWJlbCxcblx0XHRsYWJlbFBvc2l0aW9uLFxuXHRcdGxvYWRpbmcsXG5cdFx0c2l6ZSxcblx0XHR0YWJJbmRleCxcblx0XHR0cmFuc3BhcmVudCxcblx0fTtcblxuXHRyZXR1cm4gKFxuXHRcdDxEYXRlUGlja2VyXG5cdFx0XHR7Li4ucmVzdH1cblx0XHRcdHNlbGVjdGVkPXtzZWxlY3RlZH1cblx0XHRcdG9uQ2hhbmdlPXtkYXRlID0+IHtcblx0XHRcdFx0aWYgKG9uQ2hhbmdlKSBvbkNoYW5nZShkYXRlID8gdG9Mb2NhbERhdGUoZGF0ZSkgOiB1bmRlZmluZWQpO1xuXHRcdFx0fX1cblx0XHRcdGN1c3RvbUlucHV0PXs8SW5wdXQgey4uLmlucHV0UHJvcHN9IC8+fVxuXHRcdFx0ZGF0ZUZvcm1hdD1cIk1NTU0geXl5eVwiXG5cdFx0XHRzaG93TW9udGhZZWFyUGlja2VyXG5cdFx0XHRtaW5EYXRlPXt0b0RhdGUobWluRGF0ZT8ud2l0aERheU9mTW9udGgoMSkgfHwgTG9jYWxEYXRlLm9mRXBvY2hEYXkoMCkpfVxuXHRcdFx0bWF4RGF0ZT17dG9EYXRlKG1heERhdGU/LnBsdXNNb250aHMoMSkud2l0aERheU9mTW9udGgoMSkubWludXNEYXlzKDEpIHx8IExvY2FsRGF0ZS5ub3coKS5wbHVzWWVhcnMoMjApKX1cblx0XHQvPlxuXHQpO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0ljb24sIEJ1dHRvbiwgRHJvcGRvd24sIERyb3Bkb3duSXRlbVByb3BzLCBTZWdtZW50LCBTZWdtZW50UHJvcHN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuZGF0ZS5ZZWFyU2VsZWN0Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgWWVhclNlbGVjdFByb3BzIHtcblx0b25DaGFuZ2U/OiAodmFsdWU6IG51bWJlcikgPT4gdm9pZDtcblx0b25CbHVyPzogKGV2OiBhbnkpID0+IHZvaWQ7XG5cdHZhbHVlOiBudW1iZXI7XG5cdG1pblllYXI/OiBudW1iZXI7IC8vIERlZmF1bHRzIHRvIDE5NzBcblx0bWF4WWVhcj86IG51bWJlcjsgLy8gRGVmYXVsdHMgdG8gY3VycmVudCB5ZWFyXG5cdGVycm9yPzogYm9vbGVhbjsgLy8gRGVmYXVsdHMgdG8gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFllYXJTZWxlY3QocHJvcHM6IFllYXJTZWxlY3RQcm9wcyAmIE9taXQ8U2VnbWVudFByb3BzLCAnb25DaGFuZ2UnPikge1xuXHRjb25zdCB0aGlzWWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcblx0Y29uc3Qge3ZhbHVlLCBtaW5ZZWFyID0gMTk3MCwgbWF4WWVhciA9IHRoaXNZZWFyLCBvbkNoYW5nZSwgb25CbHVyLCBlcnJvciwgLi4ucmVzdH0gPSBwcm9wcztcblxuXHRjb25zdCBhdmFpbGFibGVZZWFyczogRHJvcGRvd25JdGVtUHJvcHNbXSA9IFtdO1xuXHRmb3IgKGxldCBpID0gbWF4WWVhcjsgaSA+PSBtaW5ZZWFyOyBpLS0pIHtcblx0XHRhdmFpbGFibGVZZWFycy5wdXNoKHt2YWx1ZTogaSwgdGV4dDogaS50b1N0cmluZygpLCBrZXk6IGl9KTtcblx0fVxuXG5cdHJldHVybiAoXG5cdFx0PFNlZ21lbnQgYmFzaWMgY29tcGFjdCBzdHlsZT17e3BhZGRpbmc6IDAsIG1hcmdpbjogMH19IHsuLi5yZXN0fT5cblx0XHRcdDxCdXR0b25cblx0XHRcdFx0YmFzaWNcblx0XHRcdFx0aWNvblxuXHRcdFx0XHR0eXBlPVwiYnV0dG9uXCJcblx0XHRcdFx0Y29sb3I9e2Vycm9yID8gJ3JlZCcgOiAnZ3JlZW4nfVxuXHRcdFx0XHRkaXNhYmxlZD17dmFsdWUgPD0gbWluWWVhcn1cblx0XHRcdFx0b25DbGljaz17KCkgPT4ge1xuXHRcdFx0XHRcdGlmIChvbkNoYW5nZSkgb25DaGFuZ2UodmFsdWUgLSAxKTtcblx0XHRcdFx0fX1cblx0XHRcdFx0b25CbHVyPXtvbkJsdXJ9XG5cdFx0XHQ+XG5cdFx0XHRcdDxJY29uIG5hbWU9XCJhcnJvdyBsZWZ0XCIgLz5cblx0XHRcdDwvQnV0dG9uPlxuXHRcdFx0PERyb3Bkb3duXG5cdFx0XHRcdGljb249ezxkaXYgLz59XG5cdFx0XHRcdGJ1dHRvblxuXHRcdFx0XHRiYXNpY1xuXHRcdFx0XHRzY3JvbGxpbmdcblx0XHRcdFx0dmFsdWU9e3ZhbHVlfVxuXHRcdFx0XHRvcHRpb25zPXthdmFpbGFibGVZZWFyc31cblx0XHRcdFx0b25DaGFuZ2U9eyhlLCB2YWwpID0+IHtcblx0XHRcdFx0XHRpZiAodHlwZW9mIHZhbC52YWx1ZSA9PT0gJ251bWJlcicgJiYgb25DaGFuZ2UpIG9uQ2hhbmdlKHZhbC52YWx1ZSk7XG5cdFx0XHRcdH19XG5cdFx0XHRcdGVycm9yPXtlcnJvcn1cblx0XHRcdFx0b25CbHVyPXtvbkJsdXJ9XG5cdFx0XHQvPlxuXHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRiYXNpY1xuXHRcdFx0XHRpY29uXG5cdFx0XHRcdHR5cGU9XCJidXR0b25cIlxuXHRcdFx0XHRjb2xvcj17ZXJyb3IgPyAncmVkJyA6ICdncmVlbid9XG5cdFx0XHRcdGRpc2FibGVkPXt2YWx1ZSA+PSBtYXhZZWFyfVxuXHRcdFx0XHRvbkNsaWNrPXsoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKG9uQ2hhbmdlKSBvbkNoYW5nZSh2YWx1ZSArIDEpO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHRvbkJsdXI9e29uQmx1cn1cblx0XHRcdFx0c3R5bGU9e3ttYXJnaW5SaWdodDogMH19XG5cdFx0XHQ+XG5cdFx0XHRcdDxJY29uIG5hbWU9XCJhcnJvdyByaWdodFwiIC8+XG5cdFx0XHQ8L0J1dHRvbj5cblx0XHQ8L1NlZ21lbnQ+XG5cdCk7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHtGb3JtaWtWYWx1ZXMsIGlzRnVuY3Rpb24sIEZvcm1pa1Byb3ZpZGVyLCBpc0VtcHR5Q2hpbGRyZW59IGZyb20gJ2Zvcm1payc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge1RGb3JtQ29uZmlnLCBURm9ybVByb3BzfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7dXNlVEZvcm19IGZyb20gJy4vdXNlVEZvcm0nO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5mb3JtLlRGb3JtJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBURm9ybTxWYWx1ZXMgZXh0ZW5kcyBGb3JtaWtWYWx1ZXMgPSBGb3JtaWtWYWx1ZXM+KHByb3BzOiBURm9ybUNvbmZpZzxWYWx1ZXM+KSB7XG5cdGNvbnN0IHRiYWcgPSB1c2VURm9ybTxWYWx1ZXM+KHByb3BzKTtcblx0Y29uc3Qge2NvbXBvbmVudCwgcmVuZGVyLCBjaGlsZHJlbiwgaW5uZXJSZWZ9ID0gcHJvcHM7XG5cblx0Ly8gVGhpcyBhbGxvd3MgZm9sa3MgdG8gcGFzcyBhIHJlZiB0byA8Rm9ybWlrIC8+XG5cdFJlYWN0LnVzZUltcGVyYXRpdmVIYW5kbGUoaW5uZXJSZWYsICgpID0+IHRiYWcpO1xuXG5cdGxldCBjaGlsZCA9IG51bGw7XG5cdGlmIChjb21wb25lbnQpIHtcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0Y2hpbGQgPSBSZWFjdC5jcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgdGJhZyk7XG5cdH0gZWxzZSBpZiAocmVuZGVyKSB7XG5cdFx0Y2hpbGQgPSByZW5kZXIodGJhZyk7XG5cdH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcblx0XHRpZiAoaXNGdW5jdGlvbihjaGlsZHJlbikpIHtcblx0XHRcdGNoaWxkID0gKGNoaWxkcmVuIGFzIChiYWc6IFRGb3JtUHJvcHM8VmFsdWVzPikgPT4gUmVhY3QuUmVhY3ROb2RlKSh0YmFnIGFzIFRGb3JtUHJvcHM8VmFsdWVzPik7XG5cdFx0fSBlbHNlIGlmICghaXNFbXB0eUNoaWxkcmVuKGNoaWxkcmVuKSkge1xuXHRcdFx0Y2hpbGQgPSBSZWFjdC5DaGlsZHJlbi5vbmx5KGNoaWxkcmVuKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gPEZvcm1pa1Byb3ZpZGVyIHZhbHVlPXt0YmFnfT57Y2hpbGR9PC9Gb3JtaWtQcm92aWRlcj47XG59XG4iLCJleHBvcnQge1RGb3JtfSBmcm9tICcuL1RGb3JtJztcbmV4cG9ydCB7dXNlVEZvcm19IGZyb20gJy4vdXNlVEZvcm0nO1xuZXhwb3J0IHR5cGUge1RGb3JtUHJvcHN9IGZyb20gJy4vdHlwZXMnO1xuIiwiaW1wb3J0IGZsYXR0ZW4gZnJvbSAnZmxhdCc7XG5pbXBvcnQge0Zvcm1pa1ZhbHVlcywgdXNlRm9ybWlrLCBGb3JtaWtFcnJvcnMsIEZvcm1pa1RvdWNoZWR9IGZyb20gJ2Zvcm1payc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IHByb3BlcnR5IGZyb20gJ2xvZGFzaC9wcm9wZXJ0eSc7XG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gvdW5pcSc7XG5pbXBvcnQgUmVhY3QsIHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge01lc3NhZ2UsIFNlZ21lbnR9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtURm9ybUNvbmZpZ30gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VURm9ybTxWYWx1ZXMgZXh0ZW5kcyBGb3JtaWtWYWx1ZXMgPSBGb3JtaWtWYWx1ZXMsIEluaXRpYWxWYWx1ZXMgPSBhbnk+KGNvbmZpZzogVEZvcm1Db25maWc8VmFsdWVzLCBJbml0aWFsVmFsdWVzPikge1xuXHRjb25zdCB7cmVuZGVyLCBjaGlsZHJlbiwgLi4ucmVzdH0gPSBjb25maWc7XG5cdC8vIEB0cy1pZ25vcmVcblx0Y29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHJlc3QpO1xuXG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0aWYgKGNvbmZpZy5vblZhbGlkYXRlKSBjb25maWcub25WYWxpZGF0ZShmb3JtaWsuaXNWYWxpZCk7XG5cdH0sIFtmb3JtaWsuaXNWYWxpZCwgY29uZmlnLm9uVmFsaWRhdGVdKTtcblxuXHQvLyBHZXQgc3VibWl0IGZ1bmN0aW9uXG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0aWYgKGNvbmZpZy5nZXRTdWJtaXRGbikgY29uZmlnLmdldFN1Ym1pdEZuKGZvcm1pay5zdWJtaXRGb3JtKTtcblx0fSwgW2Zvcm1pay5zdWJtaXRGb3JtLCBjb25maWcuZ2V0U3VibWl0Rm5dKTtcblxuXHQvLyBPbiBjaGFuZ2UgZXZlbnQgKGlmIHRoaXMgZW5kcyB1cCBjaGFuZ2luZyB2YWx1ZXMgaXQgd2lsbCBjeWNsZSlcblx0dXNlRWZmZWN0KCgpID0+IHtcblx0XHRpZiAoY29uZmlnLm9uQ2hhbmdlKSBjb25maWcub25DaGFuZ2UoZm9ybWlrLnZhbHVlcyk7XG5cdH0sIFtmb3JtaWsudmFsdWVzXSk7XG5cblx0Ly8gTWFyayB0aGUgZXJyb3IgY2xlYXJlZCBpZiB0aGUgZm9ybSBoYXMgYmVlbiBlZGl0ZWQgYWZ0ZXIgYW4gZXJyb3Jcblx0Y29uc3QgW2Vycm9yQ2xlYXJlZCwgc2V0RXJyb3JDbGVhcmVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblx0dXNlRWZmZWN0KCgpID0+IHtcblx0XHRpZiAoY29uZmlnLmVycm9yICYmIGNvbmZpZy5lcnJvci5tZXNzYWdlICYmICFmb3JtaWsuaXNTdWJtaXR0aW5nKSB7XG5cdFx0XHRzZXRFcnJvckNsZWFyZWQodHJ1ZSk7XG5cdFx0fVxuXHR9LCBbZm9ybWlrLnZhbHVlcywgY29uZmlnLmVycm9yXSk7XG5cblx0Ly8gRmxhdHRlbiB0aGUgd2FybmluZ3MgKGZvcm1payBlcnJvcnMpIGFuZCB0b3VjaCBvYmplY3RzLlxuXHRjb25zdCBmbGF0V2FybmluZ3MgPSBmbGF0dGVuPEZvcm1pa0Vycm9yczxWYWx1ZXM+LCB7W2tleTogc3RyaW5nXTogc3RyaW5nfT4oZm9ybWlrLmVycm9ycyk7XG5cdGNvbnN0IGZsYXRUb3VjaGVkID0gZmxhdHRlbjxGb3JtaWtUb3VjaGVkPFZhbHVlcz4sIHtba2V5OiBzdHJpbmddOiBzdHJpbmd9Pihmb3JtaWsudG91Y2hlZCk7XG5cblx0Ly8gQ3JlYXRlIGFuIGFycmF5IG9mIHN0cmluZ3MgdGhhdCBhcmUgd2FybmluZ3MgKGZvcm1payBlcnJvcnMpLiBJZiB0aGUgc3VibWl0IGNvdW50IGlzIGdyZWF0ZXIgdGhhbiAwXG5cdC8vIHRoZW4gaXQgd2lsbCBzaG93IGFsbCB3YXJuaW5ncy4gT3RoZXJ3aXNlIG9ubHkgdG91Y2hlZCBmaWVsZCB3YXJuaW5ncyB3aWxsIGJlIGFkZGVkIHRvIHRoaXMgYXJyYXkuXG5cdGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IHVuaXEoXG5cdFx0T2JqZWN0LmtleXMoZmxhdFdhcm5pbmdzKS5yZWR1Y2U8c3RyaW5nW10+KChtZW1vLCB2YWx1ZSkgPT4ge1xuXHRcdFx0Y29uc3QgaXNUb3VjaGVkID0gZmxhdFRvdWNoZWRbdmFsdWVdO1xuXHRcdFx0aWYgKGlzVG91Y2hlZCB8fCBmb3JtaWsuc3VibWl0Q291bnQgPiAwKSB7XG5cdFx0XHRcdHJldHVybiBbLi4ubWVtbywgZ2V0KGZsYXRXYXJuaW5ncywgdmFsdWUpXTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtZW1vO1xuXHRcdH0sIFtdKSxcblx0KTtcblxuXHQvLyBDcmVhdGUgYW4gYXJyYXkgb2Ygc3RyaW5ncyB0aGF0IGFyZSBlcnJvcnMgKGdyYXBocWwgZXJyb3JzKS5cblx0bGV0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblx0bGV0IGVycm9ySGVhZGVyID0gJyc7XG5cdGlmIChjb25maWcuZXJyb3IgJiYgY29uZmlnLmVycm9yLm1lc3NhZ2UpIHtcblx0XHRpZiAoY29uZmlnLmVycm9yLmdyYXBoUUxFcnJvcnMpIHtcblx0XHRcdGVycm9ycyA9IGNvbmZpZy5lcnJvci5ncmFwaFFMRXJyb3JzLnJlZHVjZSgobWVtbywgdikgPT4ge1xuXHRcdFx0XHRpZiAodi5tZXNzYWdlKSByZXR1cm4gWy4uLm1lbW8sIHYubWVzc2FnZV07XG5cdFx0XHRcdHJldHVybiBtZW1vO1xuXHRcdFx0fSwgW10gYXMgc3RyaW5nW10pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBlcnJvck1lc3NhZ2UgPSBjb25maWcuZXJyb3IubWVzc2FnZS5zbGljZShjb25maWcuZXJyb3IubWVzc2FnZS5pbmRleE9mKCc6ICcpICsgMSk7XG5cdFx0XHRlcnJvcnMucHVzaChlcnJvck1lc3NhZ2UpO1xuXHRcdH1cblx0XHRlcnJvckhlYWRlciA9IGNvbmZpZy5lcnJvci5tZXNzYWdlLnNsaWNlKDAsIGNvbmZpZy5lcnJvci5tZXNzYWdlLmluZGV4T2YoJzogJykpO1xuXHR9XG5cdGVycm9ycyA9IHVuaXEoZXJyb3JzKTtcblxuXHQvLyBDaGVjayBpZiB0aGVyZSBhcmUgd2FybmluZ3Mgb3IgZXJyb3JzXG5cdGNvbnN0IGhhc1dhcm5pbmdzID0gIShmb3JtaWsuaXNWYWxpZCB8fCB3YXJuaW5ncy5sZW5ndGggPT09IDApO1xuXHRjb25zdCBoYXNFcnJvcnMgPSBlcnJvcnMubGVuZ3RoID4gMDtcblxuXHQvLyBSZW5kZXIgdGhlIHdhcm5pbmdzXG5cdGZ1bmN0aW9uIHJlbmRlcldhcm5pbmdzKCkge1xuXHRcdGlmICghaGFzV2FybmluZ3MgJiYgIWhhc0Vycm9ycykgcmV0dXJuIG51bGw7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxNZXNzYWdlIHdhcm5pbmc9e2hhc1dhcm5pbmdzfSBlcnJvcj17aGFzRXJyb3JzICYmICFoYXNXYXJuaW5nc30+XG5cdFx0XHRcdDxNZXNzYWdlLkhlYWRlcj57aGFzV2FybmluZ3MgPyAnU29tZSBmaWVsZHMgYXJlIG5vdCBjb21wbGV0ZTonIDogYCR7ZXJyb3JIZWFkZXJ9OmB9PC9NZXNzYWdlLkhlYWRlcj5cblx0XHRcdFx0ey8qIFB1dCBpdCBpbiBhIHNlZ21lbnQgdG8gbWFrZSBzdXJlIHRoZSBlcnJvck1lc3NhZ2UgaXNuJ3QgdG9vIGJpZyB3aGVuIHRoZXJlIGFyZSBhIGxvdCBvZiBlcnJvcnMgKi99XG5cdFx0XHRcdDxTZWdtZW50IHN0eWxlPXt7b3ZlcmZsb3c6ICdhdXRvJywgbWF4SGVpZ2h0OiAxMDB9fT5cblx0XHRcdFx0XHR7KGhhc1dhcm5pbmdzID8gd2FybmluZ3MgOiBlcnJvcnMpLm1hcChtc2cgPT4gKFxuXHRcdFx0XHRcdFx0PGRpdiBrZXk9e21zZ30+e21zZ308L2Rpdj5cblx0XHRcdFx0XHQpKX1cblx0XHRcdFx0PC9TZWdtZW50PlxuXHRcdFx0PC9NZXNzYWdlPlxuXHRcdCk7XG5cdH1cblxuXHQvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGZpZWxkIGhhcyBhbiBlcnJvclxuXHRmdW5jdGlvbiBmaWVsZEVycm9yKGZpZWxkTmFtZToga2V5b2YgVmFsdWVzIHwgc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuICghIXByb3BlcnR5KGZpZWxkTmFtZSkoZm9ybWlrLnRvdWNoZWQpIHx8IGZvcm1pay5zdWJtaXRDb3VudCA+IDApICYmICEhcHJvcGVydHkoZmllbGROYW1lKShmb3JtaWsuZXJyb3JzKTtcblx0fVxuXG5cdC8vIEhhbmRsZXMgdGhlIGZvcm0gc3VibWl0XG5cdGZ1bmN0aW9uIGhhbmRsZVN1Ym1pdChlPzogUmVhY3QuRm9ybUV2ZW50PEhUTUxGb3JtRWxlbWVudD4pIHtcblx0XHRzZXRFcnJvckNsZWFyZWQoZmFsc2UpO1xuXHRcdGZvcm1pay5oYW5kbGVTdWJtaXQoZSk7XG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdC4uLmZvcm1payxcblx0XHRoYXNFcnJvcnM6IGhhc0Vycm9ycyAmJiAhZXJyb3JDbGVhcmVkLFxuXHRcdGhhc1dhcm5pbmdzLFxuXHRcdGlzVmFsaWQ6ICFoYXNXYXJuaW5ncyxcblx0XHRsb2FkaW5nOiBjb25maWcubG9hZGluZyA/IGNvbmZpZy5sb2FkaW5nIDogZmFsc2UsXG5cdFx0c3VibWl0RGlzYWJsZWQ6IGhhc1dhcm5pbmdzIHx8IGZvcm1pay5pc1N1Ym1pdHRpbmcsXG5cdFx0ZXJyb3JNYXJrZWRDbGVhcmVkOiBlcnJvckNsZWFyZWQsXG5cdFx0Zm9ybUVycm9yOiBoYXNFcnJvcnMgJiYgIWhhc1dhcm5pbmdzICYmICFlcnJvckNsZWFyZWQgJiYgIWZvcm1pay5pc1N1Ym1pdHRpbmcsIC8vIENvbnZlbmllbmNlXG5cdFx0cmVuZGVyV2FybmluZ3MsXG5cdFx0ZmllbGRFcnJvcixcblx0XHRoYW5kbGVTdWJtaXQsXG5cdH07XG59XG4iLCJpbXBvcnQge0NyZWRpdENhcmRDYXJkTmFtZUVudW19IGZyb20gJ0B0aHgveXVwLXR5cGVzJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QsIHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge01hc2tlZElucHV0LCBNYXNrZWRJbnB1dFByb3BzfSBmcm9tICcuLi9NYXNrZWRJbnB1dCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmlucHV0cy5DcmVkaXRDYXJkSW5wdXQnKTtcblxuZXhwb3J0IGludGVyZmFjZSBDcmVkaXRDYXJkSW5wdXRUeXBlIHtcblx0Y2FyZFR5cGU/OiAoY2FyZFR5cGU6IENyZWRpdENhcmRDYXJkTmFtZUVudW0gfCB1bmRlZmluZWQpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDcmVkaXRDYXJkSW5wdXQoe2NhcmRUeXBlLCAuLi5yZXN0fTogQ3JlZGl0Q2FyZElucHV0VHlwZSAmIE9taXQ8TWFza2VkSW5wdXRQcm9wcywgJ21hc2snPikge1xuXHRjb25zdCBbdHlwZSwgc2V0VHlwZV0gPSB1c2VTdGF0ZTxDcmVkaXRDYXJkQ2FyZE5hbWVFbnVtIHwgdW5kZWZpbmVkPigpO1xuXG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0aWYgKGNhcmRUeXBlKSBjYXJkVHlwZSh0eXBlKTtcblx0fSwgW3R5cGVdKTtcblxuXHRmdW5jdGlvbiB2YWxpZGF0ZSh2YWx1ZUFycmF5OiBzdHJpbmdbXSkge1xuXHRcdGNvbnN0IGNhcmROdW1iZXIgPSB2YWx1ZUFycmF5LmZpbHRlcihiID0+IGIgIT09ICdfJyAmJiBiICE9PSAnICcpLmpvaW4oJycpO1xuXG5cdFx0aWYgKGNhcmROdW1iZXJbMF0gPT09ICc0Jykge1xuXHRcdFx0Ly8gdGVzdCB1c2luZyA0MTExMTExMTExMTExMTExXG5cdFx0XHRzZXRUeXBlKENyZWRpdENhcmRDYXJkTmFtZUVudW0uVmlzYSk7XG5cdFx0fSBlbHNlIGlmIChcblx0XHRcdChwYXJzZUludChjYXJkTnVtYmVyLnN1YnN0cigwLCAyKSwgMTApID4gNTAgJiYgcGFyc2VJbnQoY2FyZE51bWJlci5zdWJzdHIoMCwgMiksIDEwKSA8IDU2KSB8fFxuXHRcdFx0KHBhcnNlSW50KGNhcmROdW1iZXIuc3Vic3RyKDAsIDIpLCAxMCkgPiAyMjIwICYmIHBhcnNlSW50KGNhcmROdW1iZXIuc3Vic3RyKDAsIDIpLCAxMCkgPCAyNzIxKVxuXHRcdCkge1xuXHRcdFx0Ly8gdGVzdCB1c2luZyA1NTU1NTU1NTU1NTU0NDQ0IHx8IDIyMjI0MDUzNDMyNDg4Nzdcblx0XHRcdHNldFR5cGUoQ3JlZGl0Q2FyZENhcmROYW1lRW51bS5NYXN0ZXJDYXJkKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c2V0VHlwZSh1bmRlZmluZWQpO1xuXHRcdH1cblx0XHRyZXR1cm4gY2FyZE51bWJlci5sZW5ndGggPT09IDE2O1xuXHR9XG5cblx0Y29uc3QgY3JlZGl0Q2FyZE1hc2s6IE1hc2tlZElucHV0UHJvcHNbJ21hc2snXSA9IHtcblx0XHRtYXNrOiAnOTk5OSA5OTk5IDk5OTkgOTk5OScsXG5cdFx0aXNDb21wbGV0ZTogdmFsaWRhdGUsXG5cdFx0YXV0b1VubWFzazogdHJ1ZSxcblx0fTtcblxuXHRyZXR1cm4gPE1hc2tlZElucHV0IG1hc2s9e2NyZWRpdENhcmRNYXNrfSB7Li4ucmVzdH0gLz47XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IElucHV0bWFzayBmcm9tICdpbnB1dG1hc2snO1xuaW1wb3J0IFJlYWN0LCB7dXNlUmVmLCB1c2VFZmZlY3R9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7SW5wdXQsIElucHV0UHJvcHN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB1c2VEZWVwQ29tcGFyZUVmZmVjdCBmcm9tICd1c2UtZGVlcC1jb21wYXJlLWVmZmVjdCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmlucHV0cy5NYXNrZWRJbnB1dCcpO1xuXG4vKipcbiAqIFNlZSBzb3VyY2UgY29kZSBmb3IgZGV0YWlsZWQgcHJvcCB0eXBlcyBvciB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL1JvYmluSGVyYm90cy9qcXVlcnkuaW5wdXRtYXNrfGhlcmV9IGZvciBtb3JlIGluZm8uXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBpbnB1dG1hc2tQcm9wVHlwZXNcbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIE1hc2tlZElucHV0UHJvcHMge1xuXHRuYW1lPzogc3RyaW5nO1xuXHR2YWx1ZT86IHN0cmluZztcblx0b25DaGFuZ2U/OiAodmFsdWU/OiBzdHJpbmcpID0+IHZvaWQ7XG5cdG9uQmx1cj86IChldmVudDogYW55KSA9PiB2b2lkO1xuXHRtYXNrPzogSW5wdXRtYXNrLk9wdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNYXNrZWRJbnB1dChwcm9wczogTWFza2VkSW5wdXRQcm9wcyAmIE9taXQ8SW5wdXRQcm9wcywgJ29uQ2hhbmdlJz4pIHtcblx0Y29uc3Qge25hbWUsIHZhbHVlLCBvbkNoYW5nZSwgb25CbHVyLCBtYXNrLCBkaXNhYmxlZCwgLi4ucmVzdH0gPSBwcm9wcztcblxuXHRjb25zdCBpbnB1dEVsZW1lbnQgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuXHRjb25zdCBtYXNrSW5zdGFuY2UgPSB1c2VSZWY8SW5wdXRtYXNrLkluc3RhbmNlIHwgbnVsbD4obnVsbCk7XG5cblx0dXNlRGVlcENvbXBhcmVFZmZlY3QoKCkgPT4ge1xuXHRcdGlmICghaW5wdXRFbGVtZW50LmN1cnJlbnQpIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGdldCBpbnB1dCBlbGVtZW50Jyk7XG5cblx0XHRkKCdDcmVhdGluZyBpbnB1dCBtYXNrIGluc3RhbmNlJyk7XG5cdFx0bWFza0luc3RhbmNlLmN1cnJlbnQgPSBuZXcgSW5wdXRtYXNrKHtcblx0XHRcdC4uLm1hc2ssXG5cdFx0XHRvbmNvbXBsZXRlKCkge1xuXHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKGlucHV0RWxlbWVudC5jdXJyZW50Py52YWx1ZSk7XG5cdFx0XHRcdGlmIChtYXNrPy5vbmNvbXBsZXRlKSBtYXNrLm9uY29tcGxldGUoKTtcblx0XHRcdH0sXG5cdFx0XHRvbmNsZWFyZWQoKSB7XG5cdFx0XHRcdGlmIChvbkNoYW5nZSkgb25DaGFuZ2UoKTtcblx0XHRcdFx0aWYgKG1hc2s/Lm9uY2xlYXJlZCkgbWFzay5vbmNsZWFyZWQoKTtcblx0XHRcdH0sXG5cdFx0XHRvbmluY29tcGxldGUoKSB7XG5cdFx0XHRcdGlmIChvbkNoYW5nZSkgb25DaGFuZ2UoaW5wdXRFbGVtZW50LmN1cnJlbnQ/LnZhbHVlKTtcblx0XHRcdFx0aWYgKG1hc2s/Lm9uaW5jb21wbGV0ZSkgbWFzay5vbmluY29tcGxldGUoKTtcblx0XHRcdH0sXG5cdFx0fSk7XG5cdFx0bWFza0luc3RhbmNlLmN1cnJlbnQubWFzayhpbnB1dEVsZW1lbnQuY3VycmVudCk7XG5cblx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0aWYgKG1hc2tJbnN0YW5jZS5jdXJyZW50KSB7XG5cdFx0XHRcdGQoJ0NsZWFuaW5nIHVwIGlucHV0IG1hc2sgaW5zdGFuY2UnKTtcblx0XHRcdFx0bWFza0luc3RhbmNlLmN1cnJlbnQucmVtb3ZlKCk7XG5cdFx0XHRcdG1hc2tJbnN0YW5jZS5jdXJyZW50ID0gbnVsbDtcblx0XHRcdH1cblx0XHR9O1xuXHR9LCBbbWFza10pO1xuXG5cdC8vIElmIHdlIGNoYW5nZSB0aGUgdmFsdWUgcHJvcCB3ZSBuZWVkIHRvIHN5bmMgdGhlIERPTSB2YWx1ZSB0byBkaXNwbGF5IHRoZSBuZXcgdmFsdWVcblx0dXNlRWZmZWN0KCgpID0+IHtcblx0XHRpZiAoaW5wdXRFbGVtZW50LmN1cnJlbnQgJiYgaW5wdXRFbGVtZW50LmN1cnJlbnQ/LnZhbHVlICE9PSB2YWx1ZSAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRkKCdWYWx1ZSBpcyBjaGFuZ2luZzonLCB2YWx1ZSk7XG5cdFx0XHRpbnB1dEVsZW1lbnQuY3VycmVudC52YWx1ZSA9IHZhbHVlO1xuXHRcdH1cblx0fSwgW3ZhbHVlXSk7XG5cblx0cmV0dXJuIChcblx0XHQ8SW5wdXQgey4uLnJlc3R9PlxuXHRcdFx0PGlucHV0IGRpc2FibGVkPXtkaXNhYmxlZH0gbmFtZT17bmFtZX0gcmVmPXtpbnB1dEVsZW1lbnR9IG9uQmx1cj17b25CbHVyfSAvPlxuXHRcdDwvSW5wdXQ+XG5cdCk7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7TWFza2VkSW5wdXQsIE1hc2tlZElucHV0UHJvcHN9IGZyb20gJy4uL01hc2tlZElucHV0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuaW5wdXRzLlBob25lSW5wdXQnKTtcblxuZXhwb3J0IGludGVyZmFjZSBQaG9uZUlucHV0UHJvcHMge1xuXHRleHRlbnNpb24/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUGhvbmVJbnB1dChwcm9wczogUGhvbmVJbnB1dFByb3BzICYgT21pdDxNYXNrZWRJbnB1dFByb3BzLCAnbWFzayc+KSB7XG5cdGNvbnN0IHtleHRlbnNpb24sIC4uLnJlc3R9ID0gcHJvcHM7XG5cdGNvbnN0IG1hc2sgPSB7XG5cdFx0bWFzazogZXh0ZW5zaW9uID8gJygoOTk5KSA5OTktOTk5OVsgeDk5OTldKXwoKzkgKDk5OSkgOTk5LTk5OTlbIHg5OTk5XSknIDogJygoOTk5KSA5OTktOTk5OSl8KCArOSAoOTk5KSA5OTktOTk5OSknLFxuXHRcdGdyZWVkeTogZmFsc2UsXG5cdFx0YXV0b1VubWFzazogdHJ1ZSxcblx0fTtcblxuXHRyZXR1cm4gPE1hc2tlZElucHV0IHsuLi5yZXN0fSBtYXNrPXttYXNrfSAvPjtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QsIHtDaGlsZHJlbiwgY2xvbmVFbGVtZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0Zvcm0sIFJhZGlvLCBGb3JtUmFkaW8sIEZvcm1Hcm91cFByb3BzfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmlucHV0cy5SYWRpb0dyb3VwJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFkaW9Hcm91cFByb3BzIHtcblx0Y2hpbGRyZW4/OiBKU1guRWxlbWVudFtdIHwgSlNYLkVsZW1lbnQ7XG5cdG9uQ2hhbmdlPzogKHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyKSA9PiB2b2lkO1xuXHR2YWx1ZT86IHN0cmluZyB8IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJhZGlvR3JvdXAocHJvcHM6IFJhZGlvR3JvdXBQcm9wcyAmIE9taXQ8Rm9ybUdyb3VwUHJvcHMsICdjaGlsZHJlbic+KSB7XG5cdGNvbnN0IHtjaGlsZHJlbiwgb25DaGFuZ2UsIHZhbHVlLCAuLi5yZXN0fSA9IHByb3BzO1xuXG5cdHJldHVybiAoXG5cdFx0PEZvcm0uR3JvdXAgey4uLnJlc3R9PlxuXHRcdFx0e0NoaWxkcmVuLm1hcChwcm9wcy5jaGlsZHJlbiwgY2hpbGQgPT4ge1xuXHRcdFx0XHRpZiAoY2hpbGQ/LnR5cGUgPT09IEZvcm1SYWRpbyB8fCBjaGlsZD8udHlwZSA9PT0gUmFkaW8gfHwgY2hpbGQ/LnR5cGUgPT09IEZvcm0uUmFkaW8pIHtcblx0XHRcdFx0XHRyZXR1cm4gY2xvbmVFbGVtZW50KGNoaWxkLCB7XG5cdFx0XHRcdFx0XHRvbkNoYW5nZTogKGV2OiBhbnksIGFyZ3M6IHt2YWx1ZT86IHN0cmluZyB8IG51bWJlcn0pID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKG9uQ2hhbmdlKSBvbkNoYW5nZShhcmdzLnZhbHVlKTtcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRjaGVja2VkOiB2YWx1ZSA9PT0gY2hpbGQucHJvcHMudmFsdWUsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGNoaWxkO1xuXHRcdFx0fSl9XG5cdFx0PC9Gb3JtLkdyb3VwPlxuXHQpO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCwge3VzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtTY3JpcHRlbENvbnRleHR9IGZyb20gJy4vU2NyaXB0ZWxDb250ZXh0JztcbmltcG9ydCB7U2NyaXB0ZWxTb2NrZXR9IGZyb20gJy4vc2NyaXB0ZWwnO1xuaW1wb3J0IHR5cGUge1NjcmlwdGVsUGVuU3R5bGV9IGZyb20gJy4vc2NyaXB0ZWwvZW51bXMnO1xuaW1wb3J0IHR5cGUge1JlbmRlcmVkSW1hZ2V9IGZyb20gJy4vc2NyaXB0ZWwvbWVzc2FnZXMnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5pbnB1dHMuU2NyaXB0ZWwnKTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JpcHRlbFByb3BzIHtcblx0b21uaXNjcmlwdFVybD86IHN0cmluZzsgLy8gRGVmYXVsdHMgdG8gJ3dzOi8vbG9jYWxob3N0OjgwODAnXG5cdGltYWdlVHlwZT86IHN0cmluZzsgLy8gRGVmYXVsdHMgdG8gJ2ltYWdlL3N2Zyt4bWwnLlxuXHRzY2FsZT86IG51bWJlcjsgLy8gRGVmYXVsdHMgdG8gMVxuXHRjcm9wPzogYm9vbGVhbjsgLy8gRGVmYXVsdHMgdG8gZmFsc2Vcblx0cGVuU3R5bGU/OiBTY3JpcHRlbFBlblN0eWxlOyAvLyBEZWZhdWx0cyB0byAnUGxhaW5QZW5TdHlsZSdcblx0Y2hpbGRyZW46IEpTWC5FbGVtZW50IHwgSlNYLkVsZW1lbnRbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNjcmlwdGVsKHtvbW5pc2NyaXB0VXJsLCBpbWFnZVR5cGUsIHNjYWxlLCBjcm9wLCBwZW5TdHlsZSwgY2hpbGRyZW59OiBTY3JpcHRlbFByb3BzKSB7XG5cdGNvbnN0IHNvY2tldCA9IHVzZVJlZjxTY3JpcHRlbFNvY2tldD4oKTtcblx0Y29uc3QgW3JlbmRlciwgc2V0UmVuZGVyXSA9IHVzZVN0YXRlPFJlbmRlcmVkSW1hZ2U+KCk7XG5cdGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcblx0Y29uc3QgW2lzU2lnbmluZywgc2V0SXNTaWduaW5nXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcblxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdHNvY2tldC5jdXJyZW50ID0gbmV3IFNjcmlwdGVsU29ja2V0KHtcblx0XHRcdG9tbmlzY3JpcHRVcmwsXG5cdFx0XHRpbWFnZVR5cGUsXG5cdFx0XHRzY2FsZSxcblx0XHRcdGNyb3AsXG5cdFx0XHRwZW5TdHlsZSxcblx0XHR9KTtcblxuXHRcdHNvY2tldC5jdXJyZW50Lm9uKCdyZW5kZXInLCBtc2cgPT4ge1xuXHRcdFx0c2V0UmVuZGVyKG1zZyk7XG5cdFx0XHRzZXRMb2FkaW5nKGZhbHNlKTtcblx0XHRcdHNldFJlbmRlcih1bmRlZmluZWQpOyAvLyB0b2RvIGxvb2sgYXQgdGhpcyBpbiBmdXR1cmVcblx0XHR9KTtcblx0XHRzb2NrZXQuY3VycmVudC5vbignb2tCdXR0b25Eb3duJywgKCkgPT4ge1xuXHRcdFx0c2V0TG9hZGluZyh0cnVlKTtcblx0XHR9KTtcblx0XHRzb2NrZXQuY3VycmVudC5vbignY2FuY2VsJywgKCkgPT4ge1xuXHRcdFx0c2V0TG9hZGluZyhmYWxzZSk7XG5cdFx0XHRzZXRSZW5kZXIodW5kZWZpbmVkKTtcblx0XHR9KTtcblx0XHRzb2NrZXQuY3VycmVudC5vbigncGVuTW92ZScsICgpID0+IHtcblx0XHRcdHNldElzU2lnbmluZyh0cnVlKTtcblx0XHR9KTtcblx0XHRzb2NrZXQuY3VycmVudC5vbigncGVuVXAnLCAoKSA9PiB7XG5cdFx0XHRzZXRJc1NpZ25pbmcoZmFsc2UpO1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdGlmIChzb2NrZXQuY3VycmVudCkgc29ja2V0LmN1cnJlbnQuY2xvc2UoKTtcblx0XHR9O1xuXHR9LCBbb21uaXNjcmlwdFVybCwgaW1hZ2VUeXBlLCBzY2FsZSwgY3JvcCwgcGVuU3R5bGVdKTtcblxuXHRyZXR1cm4gPFNjcmlwdGVsQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17e3NvY2tldCwgcmVuZGVySW1hZ2U6IHJlbmRlciwgbG9hZGluZywgaXNTaWduaW5nfX0+e2NoaWxkcmVufTwvU2NyaXB0ZWxDb250ZXh0LlByb3ZpZGVyPjtcbn1cbiIsImltcG9ydCBSZWFjdCwge011dGFibGVSZWZPYmplY3R9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtTY3JpcHRlbFNvY2tldH0gZnJvbSAnLi9zY3JpcHRlbCc7XG5pbXBvcnQgdHlwZSB7UmVuZGVyZWRJbWFnZX0gZnJvbSAnLi9zY3JpcHRlbC9tZXNzYWdlcyc7XG5cbmV4cG9ydCBjb25zdCBTY3JpcHRlbENvbnRleHQgPVxuXHRSZWFjdC5jcmVhdGVDb250ZXh0PFxuXHRcdHtzb2NrZXQ6IE11dGFibGVSZWZPYmplY3Q8U2NyaXB0ZWxTb2NrZXQgfCB1bmRlZmluZWQ+OyByZW5kZXJJbWFnZTogUmVuZGVyZWRJbWFnZSB8IHVuZGVmaW5lZDsgbG9hZGluZzogYm9vbGVhbjsgaXNTaWduaW5nOiBib29sZWFufSB8IHVuZGVmaW5lZFxuXHQ+KHVuZGVmaW5lZCk7XG4iLCJleHBvcnQge1NjcmlwdGVsfSBmcm9tICcuL1NjcmlwdGVsJztcbmV4cG9ydCB0eXBlIHtTY3JpcHRlbFByb3BzfSBmcm9tICcuL1NjcmlwdGVsJztcbmV4cG9ydCB7d2l0aFNjcmlwdGVsfSBmcm9tICcuL3dpdGhTY3JpcHRlbCc7XG5leHBvcnQge1NjcmlwdGVsUGVuU3R5bGUsIFNjcmlwdGVsTWVzc2FnZUNsYXNzfSBmcm9tICcuL3NjcmlwdGVsL2VudW1zJztcbiIsImV4cG9ydCBlbnVtIFNjcmlwdGVsUGVuU3R5bGUge1xuXHRQbGFpbiA9ICdQbGFpblBlblN0eWxlJyxcblx0Q2hpc2VsID0gJ0NoaXNlbFBlblN0eWxlJyxcblx0SW5rd2VsbCA9ICdJbmt3ZWxsUGVuU3R5bGUnLFxufVxuXG5leHBvcnQgZW51bSBTY3JpcHRlbE1lc3NhZ2VDbGFzcyB7XG5cdENvbm5lY3Rpb25PcGVuID0gJ0Nvbm5lY3Rpb25PcGVuJyxcblx0RGV2aWNlT3BlblJlcXVlc3QgPSAnRGV2aWNlT3BlblJlcXVlc3QnLFxuXHREZXZpY2VPcGVuUmVzcG9uc2UgPSAnRGV2aWNlT3BlblJlc3BvbnNlJyxcblx0UmVuZGVyZWRJbWFnZSA9ICdSZW5kZXJlZEltYWdlJyxcblx0U2NyaXB0ZWxFeGNlcHRpb24gPSAnU2NyaXB0ZWxFeGNlcHRpb24nLFxuXHRCdXR0b25Eb3duID0gJ0J1dHRvbkRvd24nLFxuXHRCdXR0b25QcmVzcyA9ICdCdXR0b25QcmVzcycsXG5cdFBlbk1vdmUgPSAnUGVuTW92ZScsXG5cdFBlblVwID0gJ1BlblVwJyxcbn1cbiIsIi8qIGdsb2JhbHMgV2ViU29ja2V0OiB0cnVlICovXG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IEV2ZW50RW1pdHRlciBmcm9tICdldmVudGVtaXR0ZXIzJztcbmltcG9ydCB7U2NyaXB0ZWxNZXNzYWdlQ2xhc3MsIFNjcmlwdGVsUGVuU3R5bGV9IGZyb20gJy4vZW51bXMnO1xuaW1wb3J0IHR5cGUge0Nvbm5lY3Rpb25PcGVuLCBEZXZpY2VPcGVuUmVzcG9uc2UsIE1lc3NhZ2UsIFJlbmRlcmVkSW1hZ2V9IGZyb20gJy4vbWVzc2FnZXMnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5pbnB1dHMuU2NyaXB0ZWwuc2NyaXB0ZWwnKTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JpcHRlbFNvY2tldEFyZ3Mge1xuXHRvbW5pc2NyaXB0VXJsPzogc3RyaW5nOyAvLyBEZWZhdWx0cyB0byAnd3M6Ly9sb2NhbGhvc3Q6ODA4MCdcblx0aW1hZ2VUeXBlPzogc3RyaW5nOyAvLyBEZWZhdWx0cyB0byAnaW1hZ2Uvc3ZnK3htbCcuXG5cdHNjYWxlPzogbnVtYmVyOyAvLyBEZWZhdWx0cyB0byAxXG5cdGNyb3A/OiBib29sZWFuOyAvLyBEZWZhdWx0cyB0byBmYWxzZVxuXHRwZW5TdHlsZT86IFNjcmlwdGVsUGVuU3R5bGU7IC8vIERlZmF1bHRzIHRvICdQbGFpblBlblN0eWxlJ1xuXHRyZW5kZXI/OiAoKSA9PiB2b2lkO1xufVxuXG5mdW5jdGlvbiBzZXJ2ZXJDb25uZWN0ZWQobXNnOiBDb25uZWN0aW9uT3Blbiwgc29ja2V0OiBXZWJTb2NrZXQpIHtcblx0ZCgnU2VydmVyIGNvbm5lY3RlZCcpO1xuXHRpZiAobXNnLnNlcnZlckluZm8uZGV2aWNlcy5sZW5ndGggPiAwKSB7XG5cdFx0Ly8gR3JhYiB0aGUgZmlyc3QgYXZhaWxhYmxlIGRldmljZVxuXHRcdGNvbnN0IGRldmljZSA9IG1zZy5zZXJ2ZXJJbmZvLmRldmljZXNbMF07XG5cdFx0c29ja2V0LnNlbmQoXG5cdFx0XHRKU09OLnN0cmluZ2lmeSh7XG5cdFx0XHRcdF9jbGFzczogJ0RldmljZU9wZW5SZXF1ZXN0Jyxcblx0XHRcdFx0dXVpZDogZGV2aWNlLnV1aWQsXG5cdFx0XHR9KSxcblx0XHQpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGRldmljZUNvbm5lY3RlZChtc2c6IERldmljZU9wZW5SZXNwb25zZSwgc29ja2V0OiBXZWJTb2NrZXQsIGFyZ3M6IFNjcmlwdGVsU29ja2V0QXJncykge1xuXHRkKGBEZXZpY2UgY29ubmVjdGVkOiAke21zZy5kZXZpY2UudXVpZH1gKTtcblx0Y29uc3Qge2ltYWdlVHlwZSwgc2NhbGUsIGNyb3AsIHBlblN0eWxlfSA9IGFyZ3M7XG5cdHNvY2tldC5zZW5kKFxuXHRcdEpTT04uc3RyaW5naWZ5KHtcblx0XHRcdF9jbGFzczogJ1JlbmRlclNldHRpbmdzVXBkYXRlUmVxdWVzdCcsXG5cdFx0XHRyZW5kZXJTZXR0aW5nczoge1xuXHRcdFx0XHRfY2xhc3M6ICdSZW5kZXJTZXR0aW5ncycsXG5cdFx0XHRcdHR5cGU6IGltYWdlVHlwZSB8fCAnaW1hZ2Uvc3ZnK3htbCcsXG5cdFx0XHRcdHNjYWxlOiBzY2FsZSB8fCAxLFxuXHRcdFx0XHRjcm9wOiBjcm9wIHx8IGZhbHNlLFxuXHRcdFx0XHRwZW5TdHlsZTogcGVuU3R5bGVcblx0XHRcdFx0XHQ/IHtcblx0XHRcdFx0XHRcdFx0cmVuZGVyRnVuY3Rpb246IHBlblN0eWxlLFxuXHRcdFx0XHRcdCAgfVxuXHRcdFx0XHRcdDoge1xuXHRcdFx0XHRcdFx0XHRyZW5kZXJGdW5jdGlvbjogU2NyaXB0ZWxQZW5TdHlsZS5QbGFpbixcblx0XHRcdFx0XHQgIH0sXG5cdFx0XHR9LFxuXHRcdH0pLFxuXHQpO1xufVxuXG5mdW5jdGlvbiByZW5kZXIobXNnOiBSZW5kZXJlZEltYWdlLCBhcmdzOiBTY3JpcHRlbFNvY2tldEFyZ3MsIGV2ZW50RW1pdHRlcjogRXZlbnRFbWl0dGVyKSB7XG5cdGQoYFJlbmRlcmVkIGltYWdlOiAke21zZy50eXBlfSAke21zZy53aWR0aH14JHttc2cuaGVpZ2h0fWApO1xuXHRldmVudEVtaXR0ZXIuZW1pdCgncmVuZGVyJywgbXNnKTtcbn1cblxuZXhwb3J0IGNsYXNzIFNjcmlwdGVsU29ja2V0IGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcblx0cHJpdmF0ZSBzb2NrZXQ6IFdlYlNvY2tldDtcblx0cHJpdmF0ZSBvcHRpb25zOiBTY3JpcHRlbFNvY2tldEFyZ3M7XG5cblx0Y29uc3RydWN0b3IoYXJnczogU2NyaXB0ZWxTb2NrZXRBcmdzKSB7XG5cdFx0c3VwZXIoKTtcblxuXHRcdHRoaXMub3B0aW9ucyA9IGFyZ3M7XG5cblx0XHR0aGlzLnNvY2tldCA9IG5ldyBXZWJTb2NrZXQoYXJncy5vbW5pc2NyaXB0VXJsIHx8ICd3czovL2xvY2FsaG9zdDo4MDgwJyk7XG5cblx0XHR0aGlzLnNvY2tldC5vbm9wZW4gPSAoKSA9PiB7XG5cdFx0XHRkKCdTb2NrZXQgb3BlbicpO1xuXHRcdH07XG5cblx0XHR0aGlzLnNvY2tldC5vbmNsb3NlID0gKCkgPT4ge1xuXHRcdFx0ZCgnU29ja2V0IGNsb3NlZCcpO1xuXHRcdH07XG5cblx0XHR0aGlzLnNvY2tldC5vbm1lc3NhZ2UgPSBldiA9PiB7XG5cdFx0XHRjb25zdCBtc2cgPSBKU09OLnBhcnNlKGV2LmRhdGEpIGFzIE1lc3NhZ2U7XG5cdFx0XHRpZiAoIW1zZy5fY2xhc3MpIHJldHVybjsgLy8gQSBtZXNzYWdlIHdpdGggbm8gY2xhc3MuXG5cblx0XHRcdHN3aXRjaCAobXNnLl9jbGFzcykge1xuXHRcdFx0XHRjYXNlIFNjcmlwdGVsTWVzc2FnZUNsYXNzLkNvbm5lY3Rpb25PcGVuOlxuXHRcdFx0XHRcdHNlcnZlckNvbm5lY3RlZChtc2csIHRoaXMuc29ja2V0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBTY3JpcHRlbE1lc3NhZ2VDbGFzcy5EZXZpY2VPcGVuUmVzcG9uc2U6XG5cdFx0XHRcdFx0ZGV2aWNlQ29ubmVjdGVkKG1zZywgdGhpcy5zb2NrZXQsIHRoaXMub3B0aW9ucyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgU2NyaXB0ZWxNZXNzYWdlQ2xhc3MuUmVuZGVyZWRJbWFnZTpcblx0XHRcdFx0XHRyZW5kZXIobXNnLCB0aGlzLm9wdGlvbnMsIHRoaXMpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFNjcmlwdGVsTWVzc2FnZUNsYXNzLlNjcmlwdGVsRXhjZXB0aW9uOlxuXHRcdFx0XHRcdGQoYFNjcmlwdGVsIEV4Y2VwdGlvbiBFcnJvcjogJHttc2cubWVzc2FnZX1gKTtcblx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRjYXNlIFNjcmlwdGVsTWVzc2FnZUNsYXNzLkJ1dHRvblByZXNzOlxuXHRcdFx0XHRcdGlmIChtc2cubGFiZWwgPT09ICdDYW5jZWwnKSB0aGlzLmVtaXQoJ2NhbmNlbCcpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFNjcmlwdGVsTWVzc2FnZUNsYXNzLkJ1dHRvbkRvd246XG5cdFx0XHRcdFx0aWYgKG1zZy5sYWJlbCA9PT0gJ09LJykgdGhpcy5lbWl0KCdva0J1dHRvbkRvd24nKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBTY3JpcHRlbE1lc3NhZ2VDbGFzcy5QZW5Nb3ZlOlxuXHRcdFx0XHRcdHRoaXMuZW1pdCgncGVuTW92ZScpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFNjcmlwdGVsTWVzc2FnZUNsYXNzLlBlblVwOlxuXHRcdFx0XHRcdHRoaXMuZW1pdCgncGVuVXAnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdH1cblx0XHR9O1xuXHR9XG5cblx0Y2FsaWJyYXRlKCkge1xuXHRcdGQoJ2NhbGlicmF0ZScpO1xuXHRcdHRoaXMuc29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoe19jbGFzczogJ0ZvcmNlUmVjYWxpYnJhdGUnfSkpO1xuXHR9XG5cblx0Y2xvc2UoKSB7XG5cdFx0dGhpcy5zb2NrZXQuY2xvc2UoKTtcblx0fVxufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7U2NyaXB0ZWwsIFNjcmlwdGVsUHJvcHN9IGZyb20gJy4vU2NyaXB0ZWwnO1xuXG4vKipcbiAqIEEgSG9DIHRoYXQgcHJvdmlkZXMgYSBjb25uZWN0aW9uIHRvIGEgU2NyaXB0ZWwgT21uaXNjcmlwdCBkZXZpY2UuXG4gKiBZb3UgY2FuIG9ubHkgaGF2ZSBhIHNpbmdsZSBjb25uZWN0aW9uIG9wZW4gYXQgYSB0aW1lLlxuICogQHBhcmFtIFdyYXBwZWRDb21wb25lbnRcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhTY3JpcHRlbChXcmFwcGVkQ29tcG9uZW50OiBhbnksIHNjcmlwdGVsUHJvcHM6IFNjcmlwdGVsUHJvcHMpIHtcblx0cmV0dXJuIChwcm9wczogYW55KSA9PiAoXG5cdFx0PFNjcmlwdGVsIHsuLi5zY3JpcHRlbFByb3BzfT5cblx0XHRcdDxXcmFwcGVkQ29tcG9uZW50IHsuLi5wcm9wc30gLz5cblx0XHQ8L1NjcmlwdGVsPlxuXHQpO1xufVxuIiwiaW1wb3J0IHR5cGUge1NjcmlwdGVsU2NoZW1hVHlwZX0gZnJvbSAnQHRoeC95dXAtdHlwZXMnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCwge3VzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7QnV0dG9uLCBJbWFnZX0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHtTY3JpcHRlbENvbnRleHR9IGZyb20gJy4uL1NjcmlwdGVsL1NjcmlwdGVsQ29udGV4dCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmlucHV0cy5TY3JpcHRlbElucHV0Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyaXB0ZWxJbnB1dFByb3BzIHtcblx0dmFsdWU/OiBTY3JpcHRlbFNjaGVtYVR5cGU7XG5cdG9uQ2hhbmdlPzogKHZhbHVlPzogU2NyaXB0ZWxTY2hlbWFUeXBlKSA9PiB2b2lkO1xuXHRidXR0b25UZXh0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU2NyaXB0ZWxJbnB1dChwcm9wczogU2NyaXB0ZWxJbnB1dFByb3BzKSB7XG5cdGNvbnN0IHt2YWx1ZSwgb25DaGFuZ2UsIGJ1dHRvblRleHQgPSAnRW50ZXIgU2lnbmF0dXJlJ30gPSBwcm9wcztcblx0Y29uc3QgY3R4ID0gdXNlQ29udGV4dChTY3JpcHRlbENvbnRleHQpO1xuXG5cdGNvbnN0IFtlbnRlclNpZ25hdHVyZSwgc2V0RW50ZXJTaWduYXR1cmVdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0aWYgKGVudGVyU2lnbmF0dXJlKSB7XG5cdFx0XHRpZiAob25DaGFuZ2UgJiYgY3R4Py5yZW5kZXJJbWFnZSkge1xuXHRcdFx0XHRzZXRFbnRlclNpZ25hdHVyZShmYWxzZSk7XG5cdFx0XHRcdGlmIChjdHgucmVuZGVySW1hZ2UudHlwZSA9PT0gJ2ltYWdlL3N2Zyt4bWwnIHx8IGN0eC5yZW5kZXJJbWFnZS50eXBlID09PSAnaW1hZ2UvcG5nJykge1xuXHRcdFx0XHRcdG9uQ2hhbmdlKHtcblx0XHRcdFx0XHRcdHR5cGU6IGN0eC5yZW5kZXJJbWFnZS50eXBlLFxuXHRcdFx0XHRcdFx0d2lkdGg6IGN0eC5yZW5kZXJJbWFnZS53aWR0aCxcblx0XHRcdFx0XHRcdGhlaWdodDogY3R4LnJlbmRlckltYWdlLmhlaWdodCxcblx0XHRcdFx0XHRcdHRpbWVzdGFtcDogbmV3IERhdGUoKSxcblx0XHRcdFx0XHRcdGRhdGE6IGN0eC5yZW5kZXJJbWFnZS5kYXRhLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAob25DaGFuZ2UgJiYgIWN0eCkge1xuXHRcdFx0XHRvbkNoYW5nZSgpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSwgW2N0eF0pO1xuXG5cdGlmIChlbnRlclNpZ25hdHVyZSkge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8ZGl2PlxuXHRcdFx0XHQ8ZGl2PntjdHg/LmlzU2lnbmluZyA/ICdzaWduaW5nLi4uJyA6ICdFbnRlciBhIHNpZ25hdHVyZSBhbmQgY2xpY2sgT0suJ308L2Rpdj5cblx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdG9uQ2xpY2s9eygpID0+IHtcblx0XHRcdFx0XHRcdHNldEVudGVyU2lnbmF0dXJlKGZhbHNlKTtcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdGNvbG9yPVwiYmxhY2tcIlxuXHRcdFx0XHRcdGxvYWRpbmc9e2N0eD8ubG9hZGluZ31cblx0XHRcdFx0XHRkaXNhYmxlZD17Y3R4Py5sb2FkaW5nfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0Q2FuY2VsXG5cdFx0XHRcdDwvQnV0dG9uPlxuXHRcdFx0XHQ8QnV0dG9uIHNpemU9XCJtaW5pXCIgYXM9XCJhXCIgYmFzaWMgb25DbGljaz17KCkgPT4gY3R4Py5zb2NrZXQuY3VycmVudD8uY2FsaWJyYXRlKCl9IGRpc2FibGVkPXtjdHg/LmxvYWRpbmd9PlxuXHRcdFx0XHRcdENhbGlicmF0ZVxuXHRcdFx0XHQ8L0J1dHRvbj5cblx0XHRcdDwvZGl2PlxuXHRcdCk7XG5cdH1cblxuXHRpZiAodmFsdWUgJiYgdmFsdWUuZGF0YSkge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8ZGl2PlxuXHRcdFx0XHQ8SW1hZ2Ugc2l6ZT1cIm1lZGl1bVwiIHNyYz17dmFsdWUuZGF0YX0gYm9yZGVyZWQgLz5cblx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdHNpemU9XCJtaW5pXCJcblx0XHRcdFx0XHRjb21wYWN0XG5cdFx0XHRcdFx0b25DbGljaz17KCkgPT4ge1xuXHRcdFx0XHRcdFx0c2V0RW50ZXJTaWduYXR1cmUoZmFsc2UpO1xuXHRcdFx0XHRcdFx0aWYgKG9uQ2hhbmdlKSBvbkNoYW5nZSgpO1xuXHRcdFx0XHRcdH19XG5cdFx0XHRcdD5cblx0XHRcdFx0XHRSZXNldFxuXHRcdFx0XHQ8L0J1dHRvbj5cblx0XHRcdDwvZGl2PlxuXHRcdCk7XG5cdH1cblxuXHRyZXR1cm4gPEJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRFbnRlclNpZ25hdHVyZSh0cnVlKX0+e2J1dHRvblRleHR9PC9CdXR0b24+O1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCwge3VzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0J1dHRvbiwgSWNvbiwgTGFiZWwsIFBvcHVwfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge01hc2tlZElucHV0LCBNYXNrZWRJbnB1dFByb3BzfSBmcm9tICcuLi9NYXNrZWRJbnB1dCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmlucHV0cy5TaW5JbnB1dCcpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpbklucHV0UHJvcHMge1xuXHRoYXNTaW46IGJvb2xlYW47XG59XG5cbi8vIGlmIHdlIGNsaWNrIGVkaXQgdGhlIHZhbHVlIGlzIHNldCB0byBhbiBlbXB0eSBzdHJpbmcuXG4vLyBpZiB3ZSBjbGljayBkZWxldGUgdGhlIHZhbHVlIGlzIHNldCB0byBhbiBlbXB0eSBzdHJpbmcuXG4vLyBpZiB3ZSBjbGljayBjYW5jZWwgdGhlIHZhbHVlIGlzIHNldCB0byB1bmRlZmluZWQuXG4vLyBpZiB3ZSBjaGFuZ2UgaXQgd2Ugc2V0IGl0IHRvIHRoZSBnaXZlbiBzdHJpbmcuXG5leHBvcnQgZnVuY3Rpb24gU2luSW5wdXQocHJvcHM6IFNpbklucHV0UHJvcHMgJiBPbWl0PE1hc2tlZElucHV0UHJvcHMsICdtYXNrJyB8ICduYW1lJz4pIHtcblx0Y29uc3Qge2hhc1Npbiwgb25DaGFuZ2UsIC4uLnJlc3R9ID0gcHJvcHM7XG5cdGNvbnN0IFtlZGl0LCBzZXRFZGl0XSA9IHVzZVN0YXRlKGZhbHNlKTtcblx0Y29uc3QgW2RvRGVsZXRlLCBzZXREb0RlbGV0ZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cblx0ZnVuY3Rpb24gaGFuZGxlQ2hhbmdlKHZhbD86IHN0cmluZykge1xuXHRcdG9uQ2hhbmdlICYmIG9uQ2hhbmdlKHZhbCk7XG5cdH1cblxuXHQvLyBpZiB3ZSBoYXZlIGEgU0lOIGFuZCB3ZSBkb24ndCB3YW50IHRvIGVkaXRcblx0cmV0dXJuIGhhc1NpbiAmJiAhZWRpdCAmJiAhZG9EZWxldGUgPyAoXG5cdFx0PD5cblx0XHRcdDxMYWJlbCBzdHlsZT17e3dpZHRoOiAnMTAwJScsIGhlaWdodDogJzM2cHgnLCBwYWRkaW5nVG9wOiAnMTBweCd9fSBzaXplPVwibGFyZ2VcIiBjb2xvcj1cImdyZWVuXCI+XG5cdFx0XHRcdFNJTiBpcyBzYXZlZFxuXHRcdFx0PC9MYWJlbD5cblx0XHRcdDxQb3B1cFxuXHRcdFx0XHRjb250ZW50PVwiZWRpdFwiXG5cdFx0XHRcdHRyaWdnZXI9e1xuXHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdHR5cGU9XCJidXR0b25cIlxuXHRcdFx0XHRcdFx0b25DbGljaz17KCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRzZXRFZGl0KHRydWUpO1xuXHRcdFx0XHRcdFx0XHRoYW5kbGVDaGFuZ2UoJycpO1xuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdGNvbG9yPVwib3JhbmdlXCJcblx0XHRcdFx0XHRcdGljb25cblx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHQ8SWNvbiBuYW1lPVwiZWRpdFwiIC8+XG5cdFx0XHRcdFx0PC9CdXR0b24+XG5cdFx0XHRcdH1cblx0XHRcdC8+XG5cdFx0XHQ8UG9wdXBcblx0XHRcdFx0Y29udGVudD1cImRlbGV0ZVwiXG5cdFx0XHRcdHRyaWdnZXI9e1xuXHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdG5lZ2F0aXZlXG5cdFx0XHRcdFx0XHR0eXBlPVwiYnV0dG9uXCJcblx0XHRcdFx0XHRcdGljb25cblx0XHRcdFx0XHRcdG9uQ2xpY2s9eygpID0+IHtcblx0XHRcdFx0XHRcdFx0c2V0RG9EZWxldGUodHJ1ZSk7XG5cdFx0XHRcdFx0XHRcdGhhbmRsZUNoYW5nZSgnJyk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdDxJY29uIG5hbWU9XCJ0cmFzaCBhbHRlcm5hdGVcIiAvPlxuXHRcdFx0XHRcdDwvQnV0dG9uPlxuXHRcdFx0XHR9XG5cdFx0XHQvPlxuXHRcdDwvPlxuXHQpIDogKFxuXHRcdC8vIGlmIHdlIGRvbnQgaGF2ZSBhIFNJTlxuXHRcdDw+XG5cdFx0XHQ8TWFza2VkSW5wdXQgey4uLnJlc3R9IG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9IG1hc2s9e3ttYXNrOiAnOTk5LTk5OS05OTknLCBncmVlZHk6IGZhbHNlLCBhdXRvVW5tYXNrOiB0cnVlfX0gLz5cblx0XHRcdHsvKiBpZiB3ZSBhcmUgZWRpdGluZyAqL31cblx0XHRcdHtlZGl0ICYmIChcblx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdHR5cGU9XCJidXR0b25cIlxuXHRcdFx0XHRcdG9uQ2xpY2s9eygpID0+IHtcblx0XHRcdFx0XHRcdHNldEVkaXQoZmFsc2UpO1xuXHRcdFx0XHRcdFx0aGFuZGxlQ2hhbmdlKHVuZGVmaW5lZCk7XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdENhbmNlbFxuXHRcdFx0XHQ8L0J1dHRvbj5cblx0XHRcdCl9XG5cdFx0XHR7ZG9EZWxldGUgJiYgKFxuXHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0Y29sb3I9XCJvcmFuZ2VcIlxuXHRcdFx0XHRcdHR5cGU9XCJidXR0b25cIlxuXHRcdFx0XHRcdG9uQ2xpY2s9eygpID0+IHtcblx0XHRcdFx0XHRcdHNldERvRGVsZXRlKGZhbHNlKTtcblx0XHRcdFx0XHRcdGhhbmRsZUNoYW5nZSh1bmRlZmluZWQpO1xuXHRcdFx0XHRcdH19XG5cdFx0XHRcdD5cblx0XHRcdFx0XHRVbmRvXG5cdFx0XHRcdDwvQnV0dG9uPlxuXHRcdFx0KX1cblx0XHQ8Lz5cblx0KTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0Ryb3Bkb3dufSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7RHJvcGRvd25Qcm9wc30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge1RhYmxlQ2VsbFByb3BzfSBmcm9tICcuL1RhYmxlSW5wdXQnO1xuXG5leHBvcnQgZnVuY3Rpb24gRHJvcGRvd25DZWxsPEQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oZHJvcGRvd25Qcm9wczogRHJvcGRvd25Qcm9wcykge1xuXHRyZXR1cm4gZnVuY3Rpb24gRHJvcGRvd25DZWxsRm4ocHJvcHM6IFRhYmxlQ2VsbFByb3BzPEQ+KSB7XG5cdFx0Y29uc3Qge1xuXHRcdFx0dmFsdWUsXG5cdFx0XHRyb3c6IHtpbmRleDogcm93SW5kZXh9LFxuXHRcdFx0Y29sdW1uOiB7aWR9LFxuXHRcdFx0dXBkYXRlRGF0YSxcblx0XHR9ID0gcHJvcHM7XG5cblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMsQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdFx0Y29uc3Qge3ZhbHVlOiB2LCBvbkNoYW5nZSwgLi4ucmVzdH0gPSBkcm9wZG93blByb3BzO1xuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxEcm9wZG93blxuXHRcdFx0XHR7Li4ucmVzdH1cblx0XHRcdFx0dmFsdWU9e3ZhbHVlfVxuXHRcdFx0XHRvbkNoYW5nZT17KGV2ZW50LCB2YWwpID0+IHtcblx0XHRcdFx0XHR1cGRhdGVEYXRhKHJvd0luZGV4LCBpZCwgdmFsLnZhbHVlKTtcblx0XHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKGV2ZW50LCB2YWwpO1xuXHRcdFx0XHR9fVxuXHRcdFx0Lz5cblx0XHQpO1xuXHR9O1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7Q2VsbFByb3BzLCBSZW5kZXJlcn0gZnJvbSAncmVhY3QtdGFibGUnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5pbnB1dHMuVGFibGVJbnB1dC5Ib3ZlckNlbGwnKTtcblxuaW50ZXJmYWNlIEhvdmVyQ2VsbE9wdGlvbnM8RCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG5cdEFjdGlvbjogUmVuZGVyZXI8Q2VsbFByb3BzPEQ+Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhvdmVyQ2VsbDxEIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KG9wdGlvbnM6IEhvdmVyQ2VsbE9wdGlvbnM8RD4pIHtcblx0cmV0dXJuIGZ1bmN0aW9uIEhvdmVyQ2VsbEZuKHByb3BzOiBDZWxsUHJvcHM8RD4pIHtcblx0XHRjb25zdCB7QWN0aW9ufSA9IG9wdGlvbnM7XG5cblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yXG5cdFx0aWYgKHByb3BzLmhvdmVyUm93ID09PSBwcm9wcy5yb3cuaWQpIHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdDxkaXYgc3R5bGU9e3t0ZXh0QWxpZ246ICdyaWdodCd9fT5cblx0XHRcdFx0XHR7LyogQHRzLWV4cGVjdC1lcnJvciAqL31cblx0XHRcdFx0XHQ8QWN0aW9uIHsuLi5wcm9wc30gLz5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQpO1xuXHRcdH1cblx0XHRyZXR1cm4gbnVsbDtcblx0fTtcbn1cbiIsImltcG9ydCB7Zm9ybWF0TW9uZXl9IGZyb20gJ0B0aHgvbW9uZXknO1xuaW1wb3J0IHR5cGUgTW9uZXkgZnJvbSAnanMtbW9uZXknO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtDZWxsUHJvcHN9IGZyb20gJ3JlYWN0LXRhYmxlJztcblxuaW50ZXJmYWNlIE1vbmV5Q2VsbE9wdGlvbnM8RCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG5cdC8qKiBJZiBwcm92aWRlZCwgdGhpcyBmdW5jdGlvbiB3aWxsIG92ZXJyaWRlIHRoZSBNb25leSB2YWx1ZSBkaXNwbGF5ZWQgKi9cblx0b3ZlcnJpZGVWYWx1ZT86IChwcm9wczogQ2VsbFByb3BzPEQsIE1vbmV5PikgPT4gTW9uZXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNb25leUNlbGw8RCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihvcHRpb25zPzogTW9uZXlDZWxsT3B0aW9uczxEPikge1xuXHRyZXR1cm4gZnVuY3Rpb24gTW9uZXlDZWxsRm4ocHJvcHM6IENlbGxQcm9wczxELCBNb25leT4pIHtcblx0XHRyZXR1cm4gPGRpdiBzdHlsZT17e3RleHRBbGlnbjogJ3JpZ2h0J319Pntmb3JtYXRNb25leShvcHRpb25zPy5vdmVycmlkZVZhbHVlID8gb3B0aW9ucy5vdmVycmlkZVZhbHVlKHByb3BzKSA6IHByb3BzLnZhbHVlKX08L2Rpdj47XG5cdH07XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHR5cGUgTW9uZXkgZnJvbSAnanMtbW9uZXknO1xuaW1wb3J0IFJlYWN0LCB7dXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7TW9uZXlJbnB1dH0gZnJvbSAnLi4vLi4vbW9uZXkvTW9uZXlJbnB1dCc7XG5pbXBvcnQgdHlwZSB7VGFibGVDZWxsUHJvcHN9IGZyb20gJy4vVGFibGVJbnB1dCc7XG5pbXBvcnQgdHlwZSB7QWRkUm93T25UYWJJZn0gZnJvbSAnLi9hZGRSb3dPblRhYic7XG5pbXBvcnQge2FkZFJvd09uVGFifSBmcm9tICcuL2FkZFJvd09uVGFiJztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuaW5wdXRzLlRhYmxlSW5wdXQuTW9uZXlFZGl0Q2VsbCcpO1xuXG5pbnRlcmZhY2UgTW9uZXlFZGl0Q2VsbE9wdGlvbnM8RCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG5cdC8qKiBJZiBmdW5jdGlvbiBpcyBwcmVzZW50LCBhbmQgcmV0dXJucyB0cnVlLCB3aWxsIGFkZCBhIG5ldyByb3cgaWYgdGFiIGlzIHByZXNzZWQgb24gdGhlIGxhc3Qgcm93ICovXG5cdGFkZFJvd09uVGFiSWY/OiBBZGRSb3dPblRhYklmPEQsIE1vbmV5Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1vbmV5RWRpdENlbGw8RCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihvcHRzPzogTW9uZXlFZGl0Q2VsbE9wdGlvbnM8RD4pIHtcblx0cmV0dXJuIGZ1bmN0aW9uIE1vbmV5RWRpdENlbGxGbihwcm9wczogVGFibGVDZWxsUHJvcHM8RCwgTW9uZXk+KSB7XG5cdFx0Y29uc3Qge1xuXHRcdFx0dmFsdWU6IGluaXRpYWxWYWx1ZSxcblx0XHRcdHJvdzoge2luZGV4OiByb3dJbmRleH0sXG5cdFx0XHRjb2x1bW46IHtpZH0sXG5cdFx0XHR1cGRhdGVEYXRhLFxuXHRcdH0gPSBwcm9wcztcblxuXHRcdGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoaW5pdGlhbFZhbHVlKTtcblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8TW9uZXlJbnB1dFxuXHRcdFx0XHRmbHVpZFxuXHRcdFx0XHR0cmFuc3BhcmVudFxuXHRcdFx0XHR2YWx1ZT17dmFsdWV9XG5cdFx0XHRcdG9uQ2hhbmdlPXtzZXRWYWx1ZX1cblx0XHRcdFx0b25CbHVyPXsoKSA9PiB7XG5cdFx0XHRcdFx0dXBkYXRlRGF0YShyb3dJbmRleCwgaWQsIHZhbHVlKTtcblx0XHRcdFx0fX1cblx0XHRcdFx0b25LZXlEb3duPXsoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IGFkZFJvd09uVGFiKGV2ZW50LCB2YWx1ZSwgcHJvcHMsIG9wdHM/LmFkZFJvd09uVGFiSWYpfVxuXHRcdFx0Lz5cblx0XHQpO1xuXHR9O1xufVxuIiwiaW1wb3J0IHtmb3JtYXRNb25leSwgdG9Nb25leX0gZnJvbSAnQHRoeC9tb25leSc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge0lkVHlwZSwgVGFibGVJbnN0YW5jZX0gZnJvbSAncmVhY3QtdGFibGUnO1xuXG5pbnRlcmZhY2UgTW9uZXlTdW1Gb290ZXJPcHRpb25zPEEgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuXHRpZDogSWRUeXBlPEE+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTW9uZXlTdW1Gb290ZXI8QSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihvcHRpb25zOiBNb25leVN1bUZvb3Rlck9wdGlvbnM8QT4pIHtcblx0Y29uc3Qge2lkfSA9IG9wdGlvbnMgfHwge307XG5cblx0cmV0dXJuIChpbmZvOiBUYWJsZUluc3RhbmNlPEE+KSA9PiB7XG5cdFx0Y29uc3Qgc3VtID0gaW5mby5yb3dzLnJlZHVjZSgobWVtbywgcm93KSA9PiBtZW1vLmFkZChyb3cudmFsdWVzW2lkXSksIHRvTW9uZXkoKSk7XG5cdFx0cmV0dXJuIDxkaXYgc3R5bGU9e3t0ZXh0QWxpZ246ICdyaWdodCd9fT57Zm9ybWF0TW9uZXkoc3VtKX08L2Rpdj47XG5cdH07XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0LCB7dXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7SW5wdXQsIElucHV0UHJvcHN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtUYWJsZUNlbGxQcm9wc30gZnJvbSAnLi9UYWJsZUlucHV0JztcbmltcG9ydCB0eXBlIHtBZGRSb3dPblRhYklmfSBmcm9tICcuL2FkZFJvd09uVGFiJztcbmltcG9ydCB7YWRkUm93T25UYWJ9IGZyb20gJy4vYWRkUm93T25UYWInO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5pbnB1dHMuVGFibGVJbnB1dC5TdHJpbmdFZGl0Q2VsbCcpO1xuXG5pbnRlcmZhY2UgU3RyaW5nRWRpdENlbGxPcHRpb25zPEQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuXHQvKiogT3ZlcnJpZGUgU2VtYW50aWNVSSBJbnB1dCBwcm9wcyAqL1xuXHRpbnB1dFByb3BzPzogSW5wdXRQcm9wcztcblx0LyoqIElmIGZ1bmN0aW9uIGlzIHByZXNlbnQsIGFuZCByZXR1cm5zIHRydWUsIHdpbGwgYWRkIGEgbmV3IHJvdyBpZiB0YWIgaXMgcHJlc3NlZCBvbiB0aGUgbGFzdCByb3cgKi9cblx0YWRkUm93T25UYWJJZj86IEFkZFJvd09uVGFiSWY8RCwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFN0cmluZ0VkaXRDZWxsPEQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ob3B0aW9ucz86IFN0cmluZ0VkaXRDZWxsT3B0aW9uczxEPikge1xuXHRjb25zdCB7aW5wdXRQcm9wcywgYWRkUm93T25UYWJJZn0gPSBvcHRpb25zIHx8IHt9O1xuXG5cdHJldHVybiBmdW5jdGlvbiBTdHJpbmdFZGl0Q2VsbEZuKHByb3BzOiBUYWJsZUNlbGxQcm9wczxELCBzdHJpbmc+KSB7XG5cdFx0Y29uc3Qge1xuXHRcdFx0dmFsdWU6IGluaXRpYWxWYWx1ZSxcblx0XHRcdHJvdzoge2luZGV4fSxcblx0XHRcdGNvbHVtbjoge2lkfSxcblx0XHRcdHVwZGF0ZURhdGEsXG5cdFx0fSA9IHByb3BzO1xuXG5cdFx0Y29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZShpbml0aWFsVmFsdWUpO1xuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxJbnB1dFxuXHRcdFx0XHRmbHVpZFxuXHRcdFx0XHR0cmFuc3BhcmVudFxuXHRcdFx0XHR7Li4uaW5wdXRQcm9wc31cblx0XHRcdFx0dmFsdWU9e3ZhbHVlfVxuXHRcdFx0XHRvbkNoYW5nZT17KGV2LCB2KSA9PiB7XG5cdFx0XHRcdFx0c2V0VmFsdWUodi52YWx1ZSk7XG5cdFx0XHRcdH19XG5cdFx0XHRcdG9uQmx1cj17KCkgPT4ge1xuXHRcdFx0XHRcdHVwZGF0ZURhdGEoaW5kZXgsIGlkLCB2YWx1ZSk7XG5cdFx0XHRcdH19XG5cdFx0XHRcdG9uS2V5RG93bj17KGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiBhZGRSb3dPblRhYihldmVudCwgdmFsdWUsIHByb3BzLCBhZGRSb3dPblRhYklmKX1cblx0XHRcdC8+XG5cdFx0KTtcblx0fTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQge0ZpZWxkQXJyYXksIEZpZWxkQXJyYXlSZW5kZXJQcm9wc30gZnJvbSAnZm9ybWlrJztcbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1rZXkgKi9cbmltcG9ydCBSZWFjdCwge3VzZU1lbW8sIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuXHRDZWxsUHJvcEdldHRlcixcblx0Q2VsbFByb3BzLFxuXHRDb2x1bW4sXG5cdEZvb3Rlckdyb3VwUHJvcEdldHRlcixcblx0Rm9vdGVyUHJvcEdldHRlcixcblx0SGVhZGVyR3JvdXBQcm9wR2V0dGVyLFxuXHRIZWFkZXJQcm9wR2V0dGVyLFxuXHRSb3dQcm9wR2V0dGVyLFxuXHRUYWJsZUJvZHlQcm9wR2V0dGVyLFxuXHR1c2VUYWJsZSxcbn0gZnJvbSAncmVhY3QtdGFibGUnO1xuaW1wb3J0IHtUYWJsZSwgVGFibGVQcm9wc30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5pbnB1dHMuVGFibGVJbnB1dCcpO1xuXG50eXBlIERlZmF1bHRUYWJsZVR5cGUgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuaW50ZXJmYWNlIFRhYmxlSW5wdXRQcm9wczxBIGV4dGVuZHMgRGVmYXVsdFRhYmxlVHlwZT4ge1xuXHRuYW1lOiBzdHJpbmc7XG5cdHZhbHVlczogQVtdO1xuXHRjb2x1bW5zOiBDb2x1bW48QT5bXTtcblx0c2V0RmllbGRWYWx1ZTogKGZpZWxkOiBzdHJpbmcsIHZhbHVlOiBhbnksIHNob3VsZFZhbGlkYXRlPzogYm9vbGVhbiB8IHVuZGVmaW5lZCkgPT4gdm9pZDtcblx0Y3JlYXRlUm93OiAoKSA9PiBBO1xuXHR0YWJsZVByb3BzPzogVGFibGVQcm9wcztcblx0aGVhZGVyUm93UHJvcHM/OiBIZWFkZXJHcm91cFByb3BHZXR0ZXI8QT47XG5cdGhlYWRlckNlbGxQcm9wcz86IEhlYWRlclByb3BHZXR0ZXI8QT47XG5cdGZvb3RlclJvd1Byb3BzPzogRm9vdGVyR3JvdXBQcm9wR2V0dGVyPEE+O1xuXHRmb290ZXJDZWxsUHJvcHM/OiBGb290ZXJQcm9wR2V0dGVyPEE+O1xuXHRib2R5UHJvcHM/OiBUYWJsZUJvZHlQcm9wR2V0dGVyPEE+O1xuXHRyb3dQcm9wcz86IFJvd1Byb3BHZXR0ZXI8QT47XG5cdGNlbGxQcm9wcz86IENlbGxQcm9wR2V0dGVyPEE+O1xufVxuXG5pbnRlcmZhY2UgVGFibGVJbnB1dFRhYmxlUHJvcHM8QSBleHRlbmRzIERlZmF1bHRUYWJsZVR5cGU+IGV4dGVuZHMgVGFibGVJbnB1dFByb3BzPEE+IHtcblx0YXJyYXlIZWxwZXJzOiBGaWVsZEFycmF5UmVuZGVyUHJvcHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVDZWxsUHJvcHM8RCBleHRlbmRzIERlZmF1bHRUYWJsZVR5cGUsIFYgPSBhbnk+IGV4dGVuZHMgQ2VsbFByb3BzPEQsIFY+IHtcblx0YXJyYXlIZWxwZXJzOiBGaWVsZEFycmF5UmVuZGVyUHJvcHM7XG5cdGFkZFJvdzogKCkgPT4gdm9pZDtcblx0dXBkYXRlRGF0YTogKGluZGV4OiBudW1iZXIsIGlkOiBzdHJpbmcsIHZhbHVlOiBWKSA9PiB2b2lkO1xufVxuXG5mdW5jdGlvbiBUYWJsZUlucHV0VGFibGU8QSBleHRlbmRzIERlZmF1bHRUYWJsZVR5cGU+KHByb3BzOiBUYWJsZUlucHV0VGFibGVQcm9wczxBPikge1xuXHRjb25zdCB7XG5cdFx0bmFtZSxcblx0XHRjb2x1bW5zLFxuXHRcdHZhbHVlcyxcblx0XHRhcnJheUhlbHBlcnMsXG5cdFx0c2V0RmllbGRWYWx1ZSxcblx0XHRjcmVhdGVSb3csXG5cdFx0dGFibGVQcm9wcyxcblx0XHRoZWFkZXJSb3dQcm9wcyxcblx0XHRoZWFkZXJDZWxsUHJvcHMsXG5cdFx0Ym9keVByb3BzLFxuXHRcdHJvd1Byb3BzLFxuXHRcdGNlbGxQcm9wcyxcblx0XHRmb290ZXJDZWxsUHJvcHMsXG5cdFx0Zm9vdGVyUm93UHJvcHMsXG5cdH0gPSBwcm9wcztcblx0Y29uc3QgY29scyA9IHVzZU1lbW8oKCkgPT4gY29sdW1ucywgW2NvbHVtbnNdKTtcblx0Y29uc3QgdmFscyA9IHVzZU1lbW8oKCkgPT4gdmFsdWVzLCBbdmFsdWVzXSk7XG5cdGNvbnN0IFtob3ZlclJvdywgc2V0SG92ZXJSb3ddID0gdXNlU3RhdGUoJycpO1xuXG5cdC8vIFJlYWN0LVRhYmxlIGhvb2tcblx0Y29uc3Qge2dldFRhYmxlUHJvcHMsIGdldFRhYmxlQm9keVByb3BzLCBoZWFkZXJHcm91cHMsIHByZXBhcmVSb3csIHJvd3MsIGZvb3Rlckdyb3Vwc30gPSB1c2VUYWJsZTxBPih7XG5cdFx0Y29sdW1uczogY29scyxcblx0XHRkYXRhOiB2YWxzLFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHR1cGRhdGVEYXRhKHJvd0luZGV4LCBjb2x1bW5JZCwgdmFsdWUpIHtcblx0XHRcdHNldEZpZWxkVmFsdWUoYCR7bmFtZX1bJHtyb3dJbmRleH1dLiR7Y29sdW1uSWR9YCwgdmFsdWUpO1xuXHRcdH0sXG5cdFx0YWRkUm93KCkge1xuXHRcdFx0YXJyYXlIZWxwZXJzLnB1c2goY3JlYXRlUm93KCkpO1xuXHRcdH0sXG5cdFx0YXJyYXlIZWxwZXJzLFxuXHR9KTtcblxuXHQvLyBAdHMtaWdub3JlIENoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIGEgRm9vdGVyIHRoYXQgaXMgbm90IHRoZSBkZWZhdWx0IGVtcHR5UmVuZGVyZXIoKVxuXHRjb25zdCBoYXNGb290ZXIgPSBmb290ZXJHcm91cHMuc29tZShmZyA9PiBmZy5oZWFkZXJzLnNvbWUoZmdoID0+IGZnaC5Gb290ZXIubmFtZSAhPT0gJ2VtcHR5UmVuZGVyZXInKSk7XG5cblx0Ly8gQnVpbGQgRm9vdGVyIGlmIGFueSBmb290ZXIgcmVuZGVyZXJzIGV4aXN0XG5cdGNvbnN0IGZvb3RlciA9IGhhc0Zvb3RlciA/IChcblx0XHQ8VGFibGUuRm9vdGVyPlxuXHRcdFx0e2Zvb3Rlckdyb3Vwcy5tYXAoZ3JvdXAgPT4gKFxuXHRcdFx0XHQ8VGFibGUuUm93IHsuLi57Li4uZ3JvdXAuZ2V0Rm9vdGVyR3JvdXBQcm9wcygpLCAuLi5ncm91cC5nZXRGb290ZXJHcm91cFByb3BzKGZvb3RlclJvd1Byb3BzKX19PlxuXHRcdFx0XHRcdHtncm91cC5oZWFkZXJzLm1hcChjb2x1bW4gPT4gKFxuXHRcdFx0XHRcdFx0PFRhYmxlLkhlYWRlckNlbGwgey4uLnsuLi5jb2x1bW4uZ2V0Rm9vdGVyUHJvcHMoKSwgLi4uY29sdW1uLmdldEZvb3RlclByb3BzKGZvb3RlckNlbGxQcm9wcyl9fT5cblx0XHRcdFx0XHRcdFx0e2NvbHVtbi5yZW5kZXIoJ0Zvb3RlcicpfVxuXHRcdFx0XHRcdFx0PC9UYWJsZS5IZWFkZXJDZWxsPlxuXHRcdFx0XHRcdCkpfVxuXHRcdFx0XHQ8L1RhYmxlLlJvdz5cblx0XHRcdCkpfVxuXHRcdDwvVGFibGUuRm9vdGVyPlxuXHQpIDogbnVsbDtcblxuXHRyZXR1cm4gKFxuXHRcdDw+XG5cdFx0XHQ8VGFibGUgey4uLnsuLi5nZXRUYWJsZVByb3BzKCksIC4uLmdldFRhYmxlUHJvcHModGFibGVQcm9wcyl9fT5cblx0XHRcdFx0PFRhYmxlLkhlYWRlcj5cblx0XHRcdFx0XHR7aGVhZGVyR3JvdXBzLm1hcChoZWFkZXJHcm91cCA9PiAoXG5cdFx0XHRcdFx0XHQ8VGFibGUuUm93IHsuLi57Li4uaGVhZGVyR3JvdXAuZ2V0SGVhZGVyR3JvdXBQcm9wcygpLCAuLi5oZWFkZXJHcm91cC5nZXRIZWFkZXJHcm91cFByb3BzKGhlYWRlclJvd1Byb3BzKX19PlxuXHRcdFx0XHRcdFx0XHR7aGVhZGVyR3JvdXAuaGVhZGVycy5tYXAoY29sdW1uID0+IChcblx0XHRcdFx0XHRcdFx0XHQ8VGFibGUuSGVhZGVyQ2VsbCB7Li4uey4uLmNvbHVtbi5nZXRIZWFkZXJQcm9wcygpLCAuLi5jb2x1bW4uZ2V0SGVhZGVyUHJvcHMoaGVhZGVyQ2VsbFByb3BzKX19PlxuXHRcdFx0XHRcdFx0XHRcdFx0e2NvbHVtbi5yZW5kZXIoJ0hlYWRlcicpfVxuXHRcdFx0XHRcdFx0XHRcdDwvVGFibGUuSGVhZGVyQ2VsbD5cblx0XHRcdFx0XHRcdFx0KSl9XG5cdFx0XHRcdFx0XHQ8L1RhYmxlLlJvdz5cblx0XHRcdFx0XHQpKX1cblx0XHRcdFx0PC9UYWJsZS5IZWFkZXI+XG5cdFx0XHRcdDxUYWJsZS5Cb2R5IHsuLi57Li4uZ2V0VGFibGVCb2R5UHJvcHMoKSwgLi4uZ2V0VGFibGVCb2R5UHJvcHMoYm9keVByb3BzKX19PlxuXHRcdFx0XHRcdHtyb3dzLm1hcChyb3cgPT4ge1xuXHRcdFx0XHRcdFx0cHJlcGFyZVJvdyhyb3cpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0PFRhYmxlLlJvd1xuXHRcdFx0XHRcdFx0XHRcdHsuLi57Li4ucm93LmdldFJvd1Byb3BzKCksIC4uLnJvdy5nZXRSb3dQcm9wcyhyb3dQcm9wcyl9fVxuXHRcdFx0XHRcdFx0XHRcdG9uTW91c2VFbnRlcj17KCkgPT4gc2V0SG92ZXJSb3cocm93LmlkKX1cblx0XHRcdFx0XHRcdFx0XHRvbk1vdXNlTGVhdmU9eygpID0+IHNldEhvdmVyUm93KCcnKX1cblx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdHtyb3cuY2VsbHMubWFwKGNlbGwgPT4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0PFRhYmxlLkNlbGwgey4uLnsuLi5jZWxsLmdldENlbGxQcm9wcygpLCAuLi5jZWxsLmdldENlbGxQcm9wcyhjZWxsUHJvcHMpfX0+e2NlbGwucmVuZGVyKCdDZWxsJywge2hvdmVyUm93fSl9PC9UYWJsZS5DZWxsPlxuXHRcdFx0XHRcdFx0XHRcdCkpfVxuXHRcdFx0XHRcdFx0XHQ8L1RhYmxlLlJvdz5cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSl9XG5cdFx0XHRcdDwvVGFibGUuQm9keT5cblx0XHRcdFx0e2Zvb3Rlcn1cblx0XHRcdDwvVGFibGU+XG5cdFx0PC8+XG5cdCk7XG59XG5cbi8qKlxuICogQ2FuIGJlIHVzZWQgaW4gYSBURm9ybSBhcyBhIFRhYmxlIElucHV0LlxuICogQHBhcmFtIHByb3BzXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFRhYmxlSW5wdXQ8QSBleHRlbmRzIERlZmF1bHRUYWJsZVR5cGU+KHByb3BzOiBUYWJsZUlucHV0UHJvcHM8QT4pIHtcblx0cmV0dXJuIDxGaWVsZEFycmF5IG5hbWU9e3Byb3BzLm5hbWV9IHJlbmRlcj17YXJyYXlIZWxwZXJzID0+IDxUYWJsZUlucHV0VGFibGUgYXJyYXlIZWxwZXJzPXthcnJheUhlbHBlcnN9IHsuLi5wcm9wc30gLz59IC8+O1xufVxuIiwiaW1wb3J0IHR5cGUge1RhYmxlQ2VsbFByb3BzfSBmcm9tICcuL1RhYmxlSW5wdXQnO1xuXG5leHBvcnQgdHlwZSBBZGRSb3dPblRhYklmPEQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgViA9IGFueT4gPSAocHJvcHM6IFRhYmxlQ2VsbFByb3BzPEQsIFY+LCBuZXdWYWx1ZTogVikgPT4gYm9vbGVhbjtcblxuLyoqXG4gKiBVc2UgYXMgYW4gb25LZXlEb3duIGV2ZW50IGhhbmRsZXIgdG8gYWRkIGEgbmV3IHJvdyB3aGVuIHRhYiBpcyBwcmVzc2VkLCBkZXBlbmRpbmcgb24gY2VydGFpbiBjcml0ZXJpYS5cbiAqIEBwYXJhbSBldmVudFxuICogQHBhcmFtIHZhbHVlXG4gKiBAcGFyYW0gcHJvcHNcbiAqIEBwYXJhbSBhZGRSb3dPblRhYklmXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRSb3dPblRhYjxEIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIFYgPSBhbnk+KFxuXHRldmVudDogS2V5Ym9hcmRFdmVudCxcblx0dmFsdWU6IFYsXG5cdHByb3BzOiBUYWJsZUNlbGxQcm9wczxELCBWPixcblx0YWRkUm93T25UYWJJZj86IEFkZFJvd09uVGFiSWY8RCwgVj4sXG4pIHtcblx0Y29uc3Qge1xuXHRcdHJvdzoge2luZGV4OiByb3dJbmRleH0sXG5cdFx0cm93czoge2xlbmd0aDogcm93c0xlbmd0aH0sXG5cdFx0YWRkUm93LFxuXHR9ID0gcHJvcHM7XG5cblx0aWYgKGV2ZW50LmtleSA9PT0gJ1RhYicgJiYgIWV2ZW50LnNoaWZ0S2V5ICYmIHJvd0luZGV4ICsgMSA9PT0gcm93c0xlbmd0aCAmJiAoYWRkUm93T25UYWJJZiA/IGFkZFJvd09uVGFiSWYocHJvcHMsIHZhbHVlKSA6IGZhbHNlKSkge1xuXHRcdGFkZFJvdygpO1xuXHR9XG59XG4iLCJleHBvcnQge1RhYmxlSW5wdXR9IGZyb20gJy4vVGFibGVJbnB1dCc7XG5leHBvcnQge01vbmV5Q2VsbH0gZnJvbSAnLi9Nb25leUNlbGwnO1xuZXhwb3J0IHtNb25leUVkaXRDZWxsfSBmcm9tICcuL01vbmV5RWRpdENlbGwnO1xuZXhwb3J0IHtNb25leVN1bUZvb3Rlcn0gZnJvbSAnLi9Nb25leVN1bUZvb3Rlcic7XG5leHBvcnQge1N0cmluZ0VkaXRDZWxsfSBmcm9tICcuL1N0cmluZ0VkaXRDZWxsJztcbmV4cG9ydCB7RHJvcGRvd25DZWxsfSBmcm9tICcuL0Ryb3Bkb3duQ2VsbCc7XG5leHBvcnQge0hvdmVyQ2VsbH0gZnJvbSAnLi9Ib3ZlckNlbGwnO1xuZXhwb3J0IHthZGRSb3dPblRhYn0gZnJvbSAnLi9hZGRSb3dPblRhYic7XG5leHBvcnQgdHlwZSB7QWRkUm93T25UYWJJZn0gZnJvbSAnLi9hZGRSb3dPblRhYic7XG4iLCJpbXBvcnQge3RvTW9uZXl9IGZyb20gJ0B0aHgvbW9uZXknO1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IE1vbmV5IGZyb20gJ2pzLW1vbmV5JztcbmltcG9ydCBSZWFjdCwge1N5bnRoZXRpY0V2ZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0Ryb3Bkb3duLCBEcm9wZG93blByb3BzLCBJbnB1dCwgSW5wdXRQcm9wcywgTGFiZWx9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtNb25leUlucHV0UHJvcHN9IGZyb20gJy4uL01vbmV5SW5wdXQnO1xuaW1wb3J0IHt1c2VNb25leUlucHV0fSBmcm9tICcuLi91c2VNb25leUlucHV0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMubW9uZXkuTW9uZXlDdXJyZW5jeUlucHV0Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9uZXlDdXJyZW5jeUlucHV0UHJvcHMgZXh0ZW5kcyBNb25leUlucHV0UHJvcHMge1xuXHRjdXJyZW5jeU9wdGlvbnM/OiB7a2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmc7IHRleHQ6IHN0cmluZ31bXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1vbmV5Q3VycmVuY3lJbnB1dChwcm9wczogTW9uZXlDdXJyZW5jeUlucHV0UHJvcHMgJiBPbWl0PElucHV0UHJvcHMsICdvbkNoYW5nZSc+KSB7XG5cdGNvbnN0IHtuYW1lLCBvbkJsdXIsIHByZWZpeCwgZGVmYXVsdEN1cnJlbmN5LCBvbkNoYW5nZSwgc2hvd1ByZWZpeCwgdmFsdWUsIHdob2xlTnVtYmVyLCBjdXJyZW5jaWVzLCBsb2NrZWQsIC4uLnJlc3R9ID0gcHJvcHM7XG5cdGNvbnN0IHtpbnB1dEVsZW1lbnR9ID0gdXNlTW9uZXlJbnB1dCh7ZGVmYXVsdEN1cnJlbmN5LCBvbkNoYW5nZSwgcHJlZml4LCBzaG93UHJlZml4LCB2YWx1ZSwgd2hvbGVOdW1iZXJ9KTtcblxuXHRjb25zdCBvcHRpb25zID0gY3VycmVuY2llcyB8fCBbXG5cdFx0e2tleTogJ0NBRCcsIHRleHQ6ICdDQUQnLCB2YWx1ZTogJ0NBRCd9LFxuXHRcdHtrZXk6ICdVU0QnLCB0ZXh0OiAnVVNEJywgdmFsdWU6ICdVU0QnfSxcblx0XTtcblxuXHRmdW5jdGlvbiBoYW5kbGVEcm9wZG93bkNoYW5nZShlOiBTeW50aGV0aWNFdmVudDxIVE1MRWxlbWVudCwgRXZlbnQ+LCB2YWw6IERyb3Bkb3duUHJvcHMpIHtcblx0XHQvLyBAdHMtaWdub3JlIERPTlQgREVMRVRFIFRIRSAqKiBJVCBJUyBBTiBPUEVSQVRPUiBNRUFOSU5HIFBPV0VSL0VYUE9ORU5UXG5cdFx0aWYgKHZhbC52YWx1ZSAmJiBvbkNoYW5nZSkgb25DaGFuZ2UodG9Nb25leSh2YWx1ZS5hbW91bnQgLyAxMCAqKiBNb25leVt2YWx1ZS5jdXJyZW5jeV0uZGVjaW1hbF9kaWdpdHMsIE1vbmV5W3ZhbC52YWx1ZV0pKTtcblx0fVxuXG5cdHJldHVybiAoXG5cdFx0PElucHV0IHsuLi5yZXN0fSBsYWJlbFBvc2l0aW9uPVwicmlnaHRcIj5cblx0XHRcdDxpbnB1dCBuYW1lPXtuYW1lfSByZWY9e2lucHV0RWxlbWVudH0gb25CbHVyPXtvbkJsdXJ9IHJlYWRPbmx5PXtsb2NrZWR9IC8+XG5cdFx0XHQ8TGFiZWwgYmFzaWM+XG5cdFx0XHRcdDxEcm9wZG93biBkaXNhYmxlZD17bG9ja2VkfSBvcHRpb25zPXtvcHRpb25zfSB2YWx1ZT17dmFsdWU/LmN1cnJlbmN5IHx8IGRlZmF1bHRDdXJyZW5jeT8uY29kZSB8fCAnQ0FEJ30gb25DaGFuZ2U9e2hhbmRsZURyb3Bkb3duQ2hhbmdlfSAvPlxuXHRcdFx0PC9MYWJlbD5cblx0XHQ8L0lucHV0PlxuXHQpO1xufVxuIiwiaW1wb3J0IHR5cGUge0N1cnJlbmNpZXMsIElNb25leU9iamVjdH0gZnJvbSAnQHRoeC9tb25leSc7XG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgdHlwZSBNb25leSBmcm9tICdqcy1tb25leSc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtJbnB1dCwgSW5wdXRQcm9wc30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHt1c2VNb25leUlucHV0fSBmcm9tICcuLi91c2VNb25leUlucHV0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMubW9uZXkuTW9uZXlJbnB1dCcpO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vbmV5SW5wdXRQcm9wcyB7XG5cdG5hbWU/OiBzdHJpbmc7XG5cdG9uQ2hhbmdlPzogKHZhbHVlOiBNb25leSkgPT4gdm9pZDtcblx0dmFsdWU/OiBNb25leSB8IElNb25leU9iamVjdDtcblx0ZGVmYXVsdEN1cnJlbmN5PzogQ3VycmVuY2llcy5DdXJyZW5jeTsgLy8gRGVmYXVsdHMgdG8gTW9uZXkuQ0FEXG5cdG9uQmx1cj86IChldjogYW55KSA9PiB2b2lkO1xuXHRwcmVmaXg/OiBzdHJpbmc7IC8vIERlZmF1bHRzIHRvIGN1cnJlbmN5IHN5bWJvbFxuXHRzaG93UHJlZml4PzogYm9vbGVhbjsgLy8gRGVmYXVsdHMgdG8gZmFsc2Vcblx0bG9ja2VkPzogYm9vbGVhbjsgLy8gRGVmYXVsdHMgdG8gZmFsc2Vcblx0d2hvbGVOdW1iZXI/OiBib29sZWFuOyAvLyBEZWZhdWx0cyB0byBmYWxzZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gTW9uZXlJbnB1dChwcm9wczogTW9uZXlJbnB1dFByb3BzICYgT21pdDxJbnB1dFByb3BzLCAnb25DaGFuZ2UnPikge1xuXHRjb25zdCB7bmFtZSwgb25CbHVyLCBsb2NrZWQsIHByZWZpeCwgZGVmYXVsdEN1cnJlbmN5LCBvbkNoYW5nZSwgc2hvd1ByZWZpeCwgdmFsdWUsIHdob2xlTnVtYmVyLCAuLi5yZXN0fSA9IHByb3BzO1xuXHRjb25zdCB7aW5wdXRFbGVtZW50fSA9IHVzZU1vbmV5SW5wdXQoe2RlZmF1bHRDdXJyZW5jeSwgb25DaGFuZ2UsIHByZWZpeCwgc2hvd1ByZWZpeCwgdmFsdWUsIHdob2xlTnVtYmVyfSk7XG5cblx0cmV0dXJuIChcblx0XHQ8SW5wdXQgey4uLnJlc3R9PlxuXHRcdFx0PGlucHV0IG5hbWU9e25hbWV9IHJlZj17aW5wdXRFbGVtZW50fSBvbkJsdXI9e29uQmx1cn0gcmVhZE9ubHk9e2xvY2tlZH0gLz5cblx0XHQ8L0lucHV0PlxuXHQpO1xufVxuIiwiaW1wb3J0IHtDdXJyZW5jaWVzLCBJTW9uZXlPYmplY3QsIGlzTW9uZXlPYmplY3QsIHRvTW9uZXl9IGZyb20gJ0B0aHgvbW9uZXknO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBJbnB1dG1hc2sgZnJvbSAnaW5wdXRtYXNrJztcbmltcG9ydCBNb25leSBmcm9tICdqcy1tb25leSc7XG5pbXBvcnQge3VzZUVmZmVjdCwgdXNlUmVmfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLm1vbmV5LnVzZU1vbmV5SW5wdXQnKTtcblxuaW50ZXJmYWNlIFVzZU1vbmV5SW5wdXRQcm9wcyB7XG5cdG9uQ2hhbmdlPzogKHZhbHVlOiBNb25leSkgPT4gdm9pZDtcblx0dmFsdWU/OiBNb25leSB8IElNb25leU9iamVjdDtcblx0ZGVmYXVsdEN1cnJlbmN5PzogQ3VycmVuY2llcy5DdXJyZW5jeTsgLy8gRGVmYXVsdHMgdG8gTW9uZXkuQ0FEXG5cdHByZWZpeD86IHN0cmluZzsgLy8gRGVmYXVsdHMgdG8gY3VycmVuY3kgc3ltYm9sXG5cdHNob3dQcmVmaXg/OiBib29sZWFuOyAvLyBEZWZhdWx0cyB0byBmYWxzZVxuXHR3aG9sZU51bWJlcj86IGJvb2xlYW47IC8vIERlZmF1bHRzIHRvIGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VNb25leUlucHV0KHByb3BzOiBVc2VNb25leUlucHV0UHJvcHMpIHtcblx0Y29uc3Qge3ZhbHVlLCBvbkNoYW5nZSwgZGVmYXVsdEN1cnJlbmN5LCBzaG93UHJlZml4LCBwcmVmaXgsIHdob2xlTnVtYmVyfSA9IHByb3BzO1xuXG5cdGNvbnN0IGlucHV0RWxlbWVudCA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cdGNvbnN0IG1hc2tJbnN0YW5jZSA9IHVzZVJlZjxJbnB1dG1hc2suSW5zdGFuY2UgfCBudWxsPihudWxsKTtcblxuXHQvLyBzZXQgdGhlIGFkakN1cnJlbmN5XG5cdGxldCBhZGpDdXJyZW5jeSA9IE1vbmV5LkNBRDtcblx0Ly8gQHRzLWlnbm9yZVxuXHRpZiAodmFsdWU/LmN1cnJlbmN5ICYmIE1vbmV5W3ZhbHVlPy5jdXJyZW5jeV0pIGFkakN1cnJlbmN5ID0gTW9uZXlbdmFsdWU/LmN1cnJlbmN5XTtcblx0aWYgKGRlZmF1bHRDdXJyZW5jeSkgYWRqQ3VycmVuY3kgPSBkZWZhdWx0Q3VycmVuY3k7XG5cblx0dXNlRWZmZWN0KCgpID0+IHtcblx0XHRpZiAoIWlucHV0RWxlbWVudC5jdXJyZW50KSB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBnZXQgaW5wdXQgZWxlbWVudCcpO1xuXG5cdFx0ZCgnQ3JlYXRpbmcgaW5wdXQgbWFzayBpbnN0YW5jZScpO1xuXHRcdG1hc2tJbnN0YW5jZS5jdXJyZW50ID0gbmV3IElucHV0bWFzayh7XG5cdFx0XHRhbGlhczogJ251bWVyaWMnLFxuXHRcdFx0Z3JvdXBTZXBhcmF0b3I6ICcsJyxcblx0XHRcdGRpZ2l0czogd2hvbGVOdW1iZXIgPyAnMCcgOiBDdXJyZW5jaWVzW2FkakN1cnJlbmN5LmNvZGVdLmRlY2ltYWxfZGlnaXRzLnRvU3RyaW5nKCksXG5cdFx0XHRkaWdpdHNPcHRpb25hbDogZmFsc2UsXG5cdFx0XHRwcmVmaXg6IHNob3dQcmVmaXggPyBwcmVmaXggfHwgQ3VycmVuY2llc1thZGpDdXJyZW5jeS5jb2RlXS5zeW1ib2wgOiB1bmRlZmluZWQsXG5cdFx0XHRwbGFjZWhvbGRlcjogJzAnLFxuXHRcdFx0YXV0b1VubWFzazogdHJ1ZSxcblx0XHRcdG9uY29tcGxldGUoKSB7XG5cdFx0XHRcdGlmIChvbkNoYW5nZSkgb25DaGFuZ2UodG9Nb25leShpbnB1dEVsZW1lbnQuY3VycmVudD8udmFsdWUsIGFkakN1cnJlbmN5KSk7XG5cdFx0XHR9LFxuXHRcdFx0b25jbGVhcmVkKCkge1xuXHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKHRvTW9uZXkoMCwgYWRqQ3VycmVuY3kpKTtcblx0XHRcdH0sXG5cdFx0XHRvbmluY29tcGxldGUoKSB7XG5cdFx0XHRcdGlmIChvbkNoYW5nZSkgb25DaGFuZ2UodG9Nb25leShpbnB1dEVsZW1lbnQuY3VycmVudD8udmFsdWUsIGFkakN1cnJlbmN5KSk7XG5cdFx0XHR9LFxuXHRcdH0pO1xuXHRcdG1hc2tJbnN0YW5jZS5jdXJyZW50Lm1hc2soaW5wdXRFbGVtZW50LmN1cnJlbnQpO1xuXG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdGlmIChtYXNrSW5zdGFuY2UuY3VycmVudCkge1xuXHRcdFx0XHRkKCdDbGVhbmluZyB1cCBpbnB1dCBtYXNrIGluc3RhbmNlJyk7XG5cdFx0XHRcdG1hc2tJbnN0YW5jZS5jdXJyZW50LnJlbW92ZSgpO1xuXHRcdFx0XHRtYXNrSW5zdGFuY2UuY3VycmVudCA9IG51bGw7XG5cdFx0XHR9XG5cdFx0fTtcblx0fSwgW2FkakN1cnJlbmN5LCBwcmVmaXgsIHdob2xlTnVtYmVyXSk7XG5cblx0Ly8gSWYgd2UgY2hhbmdlIHRoZSB2YWx1ZSBwcm9wIHdlIG5lZWQgdG8gc3luYyB0aGUgRE9NIHZhbHVlIHRvIGRpc3BsYXkgdGhlIG5ldyB2YWx1ZVxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdGNvbnN0IGlucHV0VmFsdWUgPSB0b01vbmV5KGlucHV0RWxlbWVudC5jdXJyZW50Py52YWx1ZSwgYWRqQ3VycmVuY3kpO1xuXHRcdGlmICgodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkgJiYgaW5wdXRFbGVtZW50LmN1cnJlbnQpIHtcblx0XHRcdGlucHV0RWxlbWVudC5jdXJyZW50LnZhbHVlID0gJyc7XG5cdFx0fSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1vbmV5ICYmIGlucHV0RWxlbWVudC5jdXJyZW50KSB7XG5cdFx0XHRpZiAoIWlucHV0VmFsdWUuZXF1YWxzKHZhbHVlKSkge1xuXHRcdFx0XHRpbnB1dEVsZW1lbnQuY3VycmVudC52YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChpc01vbmV5T2JqZWN0KHZhbHVlKSAmJiBpbnB1dEVsZW1lbnQuY3VycmVudCkge1xuXHRcdFx0Y29uc3QgdmFsdWVJbk1vbmV5ID0gdG9Nb25leSh2YWx1ZSk7XG5cdFx0XHRpZiAoIWlucHV0VmFsdWUuZXF1YWxzKHZhbHVlSW5Nb25leSkpIHtcblx0XHRcdFx0aW5wdXRFbGVtZW50LmN1cnJlbnQudmFsdWUgPSB2YWx1ZUluTW9uZXkudG9TdHJpbmcoKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBWYWx1ZSBtdXN0IGJlIGEgTW9uZXkgaW5zdGFuY2Ugb3IgSU1vbmV5T2JqZWN0OiAke3ZhbHVlfSAoJHt0eXBlb2YgdmFsdWV9YCk7XG5cdFx0fVxuXHR9LCBbdmFsdWUsIGFkakN1cnJlbmN5XSk7XG5cblx0cmV0dXJuIHtpbnB1dEVsZW1lbnR9O1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCwge0NoaWxkcmVufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZVN0ZXB9IGZyb20gJy4vdXNlU3RlcCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLnN0ZXAuRm9ybVN0ZXAnKTtcblxuaW50ZXJmYWNlIEZvcm1TdGVwUHJvcHMge1xuXHRjaGlsZHJlbjogSlNYLkVsZW1lbnQ7XG5cdHRpdGxlPzogc3RyaW5nO1xuXHRzdGVwS2V5OiBzdHJpbmc7XG5cdGhpZGRlbj86IGJvb2xlYW4gfCAoKHN0YXRlOiBhbnksIHN0ZXA6IG51bWJlcikgPT4gYm9vbGVhbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBGb3JtU3RlcChwcm9wczogRm9ybVN0ZXBQcm9wcykge1xuXHRjb25zdCBbc3RhdGUsIGhhbmRsZVN1Ym1pdF0gPSB1c2VTdGVwKCk7XG5cdGNvbnN0IHZhbHVlcyA9IHN0YXRlW3Byb3BzLnN0ZXBLZXldIHx8IHt9O1xuXG5cdGNvbnN0IGZvcm0gPSBSZWFjdC5jbG9uZUVsZW1lbnQoQ2hpbGRyZW4ub25seShwcm9wcy5jaGlsZHJlbiksIHtcblx0XHR2YWx1ZXM6IHZhbHVlcyB8fCB7fSxcblx0XHRvblN1Ym1pdDogKHZhbHM6IHVua25vd24pID0+IGhhbmRsZVN1Ym1pdCh2YWxzLCBwcm9wcy5zdGVwS2V5KSxcblx0fSk7XG5cblx0cmV0dXJuIChcblx0XHQ8PlxuXHRcdFx0PGgxPntwcm9wcy50aXRsZX08L2gxPlxuXHRcdFx0e2Zvcm19XG5cdFx0PC8+XG5cdCk7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuc3RlcC5TdGVwJyk7XG5cbmludGVyZmFjZSBTdGVwUHJvcHMge1xuXHRjaGlsZHJlbj86IEpTWC5FbGVtZW50IHwgSlNYLkVsZW1lbnRbXTtcblx0dGl0bGU/OiBzdHJpbmc7XG5cdHN0ZXA/OiBudW1iZXI7XG5cdGhpZGRlbj86IGJvb2xlYW4gfCAoKHN0YXRlOiBhbnksIHN0ZXA6IG51bWJlcikgPT4gYm9vbGVhbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTdGVwKHByb3BzOiBTdGVwUHJvcHMpIHtcblx0cmV0dXJuIChcblx0XHQ8PlxuXHRcdFx0PGgxPntwcm9wcy50aXRsZX08L2gxPlxuXHRcdFx0e3Byb3BzLmNoaWxkcmVufVxuXHRcdDwvPlxuXHQpO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCwge3VzZVN0YXRlLCBDaGlsZHJlbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtQcm9tcHR9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHtHcmlkLCBTdGVwIGFzIFNlbWFudGljU3RlcH0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHtGb3JtU3RlcH0gZnJvbSAnLi9Gb3JtU3RlcCc7XG5pbXBvcnQge1N0ZXB9IGZyb20gJy4vU3RlcCc7XG5pbXBvcnQge1N0ZXBDb250ZXh0fSBmcm9tICcuL3N0ZXBDb250ZXh0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuc3RlcC5TdGVwUHJvdmlkZXInKTtcblxuaW50ZXJmYWNlIFN0ZXBQcm92aWRlclByb3BzIHtcblx0Y2hpbGRyZW46IChKU1guRWxlbWVudCB8IG51bGwgfCBmYWxzZSlbXTtcblx0b25TdWJtaXQ6ICh2YWx1ZXM6IGFueSkgPT4gdm9pZDtcblx0dmFsdWVzPzogYW55O1xuXHR3YXJuT25SZXJvdXRlPzogYm9vbGVhbjtcblx0dmVydGljYWw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU3RlcFByb3ZpZGVyKHByb3BzOiBTdGVwUHJvdmlkZXJQcm9wcykge1xuXHRjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKHByb3BzLnZhbHVlcyB8fCB7fSk7XG5cdGNvbnN0IFtjdXJyZW50U3RlcCwgc2V0Q3VycmVudFN0ZXBdID0gdXNlU3RhdGUoMCk7XG5cdGNvbnN0IFtpc1N1Ym1pdHRpbmcsIHNldElzU3VibWl0dGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cblx0Y29uc3QgdGl0bGVzOiBzdHJpbmdbXSA9IFtdO1xuXHRjb25zdCBjaGlsZHJlbjogSlNYLkVsZW1lbnRbXSA9IFtdO1xuXG5cdENoaWxkcmVuLmZvckVhY2gocHJvcHM/LmNoaWxkcmVuLCAoY2hpbGQsIGluZGV4KSA9PiB7XG5cdFx0aWYgKCFjaGlsZCkgcmV0dXJuO1xuXHRcdGlmIChjaGlsZD8udHlwZSAhPT0gU3RlcCAmJiBjaGlsZD8udHlwZSAhPT0gRm9ybVN0ZXApIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgQ2FuIG5vdCByZW5kZXIgJyR7Y2hpbGQ/LnR5cGV9JyBhcyBjaGlsZCBvZiAnU3RlcFByb3ZpZGVyJy4gTXVzdCBiZSBvZiB0eXBlICdTdGVwJyBvciAnRm9ybVN0ZXAnYCk7XG5cdFx0fVxuXHRcdGlmIChjaGlsZC5wcm9wcy5oaWRkZW4pIHtcblx0XHRcdGlmICh0eXBlb2YgY2hpbGQucHJvcHMuaGlkZGVuID09PSAnZnVuY3Rpb24nICYmICFjaGlsZC5wcm9wcy5oaWRkZW4oc3RhdGUsIGluZGV4KSkge1xuXHRcdFx0XHR0aXRsZXMucHVzaChjaGlsZD8ucHJvcHM/LnRpdGxlIHx8ICcnKTtcblx0XHRcdFx0Y2hpbGRyZW4ucHVzaChSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGQsIHtzdGVwOiBpbmRleCwga2V5OiBjaGlsZD8ua2V5IHx8IGluZGV4LnRvU3RyaW5nKCl9KSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRpdGxlcy5wdXNoKGNoaWxkPy5wcm9wcz8udGl0bGUgfHwgJycpO1xuXHRcdFx0Y2hpbGRyZW4ucHVzaChSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGQsIHtzdGVwOiBpbmRleCwga2V5OiBjaGlsZD8ua2V5IHx8IGluZGV4LnRvU3RyaW5nKCl9KSk7XG5cdFx0fVxuXHR9KTtcblxuXHRjb25zdCBvbk5hdmlnYXRlID0gKCkgPT4gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBlbmQgdGhpcyBwcm9jZXNzPyBBbGwgdGhlIGVudGVyZWQgZGF0YSB3aWxsIGJlIGxvc3QhJztcblxuXHRjb25zdCBoYW5kbGVTdWJtaXQgPSAodmFsdWVzOiBhbnksIHN0ZXBLZXk6IHN0cmluZykgPT4ge1xuXHRcdGlmIChjdXJyZW50U3RlcCArIDEgPT09IGNoaWxkcmVuPy5sZW5ndGgpIHtcblx0XHRcdHNldFN0YXRlKHsuLi5zdGF0ZSwgW3N0ZXBLZXldOiB2YWx1ZXN9KTtcblx0XHRcdHNldElzU3VibWl0dGluZyh0cnVlKTtcblx0XHRcdHByb3BzLm9uU3VibWl0KHsuLi5zdGF0ZSwgW3N0ZXBLZXldOiB2YWx1ZXN9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c2V0U3RhdGUoey4uLnN0YXRlLCBbc3RlcEtleV06IHZhbHVlc30pO1xuXHRcdFx0c2V0Q3VycmVudFN0ZXAoY3VycmVudFN0ZXAgKyAxKTtcblx0XHR9XG5cdH07XG5cblx0aWYgKHByb3BzLnZlcnRpY2FsKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxTdGVwQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17e3N0YXRlLCBoYW5kbGVTdWJtaXR9fT5cblx0XHRcdFx0e3Byb3BzLndhcm5PblJlcm91dGUgJiYgPFByb21wdCBtZXNzYWdlPXtvbk5hdmlnYXRlfSB3aGVuPXshaXNTdWJtaXR0aW5nfSAvPn1cblx0XHRcdFx0PEdyaWQgZGl2aWRlZCBzdGFja2FibGU+XG5cdFx0XHRcdFx0PEdyaWQuUm93PlxuXHRcdFx0XHRcdFx0PEdyaWQuQ29sdW1uIHdpZHRoPXszfT5cblx0XHRcdFx0XHRcdFx0PFNlbWFudGljU3RlcC5Hcm91cCBvcmRlcmVkIHNpemU9XCJtaW5pXCIgdmVydGljYWwgd2lkdGhzPXsxfT5cblx0XHRcdFx0XHRcdFx0XHR7dGl0bGVzPy5tYXAoKHRpdGxlLCBpbmRleCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0PFNlbWFudGljU3RlcFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGtleT17aW5kZXgudG9TdHJpbmcoKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb21wbGV0ZWQ9e2luZGV4IDwgT2JqZWN0LmtleXMoc3RhdGUpLmxlbmd0aH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhY3RpdmU9e2N1cnJlbnRTdGVwID09PSBpbmRleH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvbkNsaWNrPXsoKSA9PiBzZXRDdXJyZW50U3RlcChpbmRleCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e2luZGV4ID4gT2JqZWN0LmtleXMoc3RhdGUpLmxlbmd0aH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxTZW1hbnRpY1N0ZXAuQ29udGVudD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxTZW1hbnRpY1N0ZXAuVGl0bGU+e3RpdGxlfTwvU2VtYW50aWNTdGVwLlRpdGxlPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvU2VtYW50aWNTdGVwLkNvbnRlbnQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvU2VtYW50aWNTdGVwPlxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9KX1cblx0XHRcdFx0XHRcdFx0PC9TZW1hbnRpY1N0ZXAuR3JvdXA+XG5cdFx0XHRcdFx0XHQ8L0dyaWQuQ29sdW1uPlxuXHRcdFx0XHRcdFx0PEdyaWQuQ29sdW1uIHdpZHRoPXsxM30+e2NoaWxkcmVuPy5bY3VycmVudFN0ZXBdfTwvR3JpZC5Db2x1bW4+XG5cdFx0XHRcdFx0PC9HcmlkLlJvdz5cblx0XHRcdFx0PC9HcmlkPlxuXHRcdFx0PC9TdGVwQ29udGV4dC5Qcm92aWRlcj5cblx0XHQpO1xuXHR9XG5cblx0cmV0dXJuIChcblx0XHQ8U3RlcENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3tzdGF0ZSwgaGFuZGxlU3VibWl0fX0+XG5cdFx0XHR7cHJvcHMud2Fybk9uUmVyb3V0ZSAmJiA8UHJvbXB0IG1lc3NhZ2U9e29uTmF2aWdhdGV9IC8+fVxuXHRcdFx0PFNlbWFudGljU3RlcC5Hcm91cCBvcmRlcmVkIHNpemU9XCJtaW5pXCI+XG5cdFx0XHRcdHt0aXRsZXM/Lm1hcCgodGl0bGUsIGluZGV4KSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdDxTZW1hbnRpY1N0ZXBcblx0XHRcdFx0XHRcdFx0a2V5PXtpbmRleC50b1N0cmluZygpfVxuXHRcdFx0XHRcdFx0XHRjb21wbGV0ZWQ9e2luZGV4IDwgT2JqZWN0LmtleXMoc3RhdGUpLmxlbmd0aH1cblx0XHRcdFx0XHRcdFx0YWN0aXZlPXtjdXJyZW50U3RlcCA9PT0gaW5kZXh9XG5cdFx0XHRcdFx0XHRcdG9uQ2xpY2s9eygpID0+IHNldEN1cnJlbnRTdGVwKGluZGV4KX1cblx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e2luZGV4ID4gT2JqZWN0LmtleXMoc3RhdGUpLmxlbmd0aH1cblx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0PFNlbWFudGljU3RlcC5Db250ZW50PlxuXHRcdFx0XHRcdFx0XHRcdDxTZW1hbnRpY1N0ZXAuVGl0bGU+e3RpdGxlfTwvU2VtYW50aWNTdGVwLlRpdGxlPlxuXHRcdFx0XHRcdFx0XHQ8L1NlbWFudGljU3RlcC5Db250ZW50PlxuXHRcdFx0XHRcdFx0PC9TZW1hbnRpY1N0ZXA+XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSl9XG5cdFx0XHQ8L1NlbWFudGljU3RlcC5Hcm91cD5cblx0XHRcdHtjaGlsZHJlbj8uW2N1cnJlbnRTdGVwXX1cblx0XHQ8L1N0ZXBDb250ZXh0LlByb3ZpZGVyPlxuXHQpO1xufVxuIiwiZXhwb3J0IHtTdGVwfSBmcm9tICcuL1N0ZXAnO1xuZXhwb3J0IHt1c2VTdGVwfSBmcm9tICcuL3VzZVN0ZXAnO1xuZXhwb3J0IHtGb3JtU3RlcH0gZnJvbSAnLi9Gb3JtU3RlcCc7XG5leHBvcnQge1N0ZXBQcm92aWRlcn0gZnJvbSAnLi9TdGVwUHJvdmlkZXInO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGNvbnN0IFN0ZXBDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDx7aGFuZGxlU3VibWl0OiAodmFsdWVzOiB1bmtub3duLCBzdGVwS2V5OiBzdHJpbmcpID0+IHZvaWQ7IHN0YXRlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+fT4oe1xuXHRoYW5kbGVTdWJtaXQ6ICgpID0+IHt9LFxuXHRzdGF0ZToge30sXG59KTtcbiIsImltcG9ydCB7dXNlQ29udGV4dH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtTdGVwQ29udGV4dH0gZnJvbSAnLi9zdGVwQ29udGV4dCc7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTdGVwKCk6IFthbnksICh2YWx1ZXM6IHVua25vd24sIHN0ZXBLZXk6IHN0cmluZykgPT4gdm9pZF0ge1xuXHRjb25zdCB7c3RhdGUsIGhhbmRsZVN1Ym1pdH0gPSB1c2VDb250ZXh0KFN0ZXBDb250ZXh0KTtcblxuXHRyZXR1cm4gW3N0YXRlLCBoYW5kbGVTdWJtaXRdO1xufVxuIiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzJdIS4vc3R5bGVzLmNzc1wiO1xuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLmluc2VydCA9IFwiaGVhZFwiO1xub3B0aW9ucy5zaW5nbGV0b24gPSBmYWxzZTtcblxudmFyIHVwZGF0ZSA9IGFwaShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvbnRlbnQubG9jYWxzIHx8IHt9OyIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLnJ3LWRhdGV0aW1lcGlja2VyID4gaW5wdXQge1xcblxcdGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucnctZGF0ZXRpbWVwaWNrZXIgLnJ3LWNhbGVuZGFyLWdyaWQucnctbmF2LXZpZXcgLnJ3LWJ0biB7XFxuXFx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uZGF0ZVRpbWVQaWNrZXJBdXRvV2lkdGgge1xcblxcdHdpZHRoOiBhdXRvO1xcblxcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbn1cXG5cXG4uZGF0ZVRpbWVQaWNrZXJBdXRvV2lkdGggPiBpbnB1dCB7XFxuXFx0d2lkdGg6IGF1dG87XFxufVxcblxcbi5yZWFjdC1kYXRlcGlja2VyLXdyYXBwZXIge1xcblxcdHdpZHRoOiAxMDAlO1xcblxcdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xcbn1cXG5cXG4ucmVhY3QtZGF0ZXBpY2tlcl9faW5wdXQtY29udGFpbmVyIHtcXG5cXHRkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlYWN0LWRhdGVwaWNrZXItcG9wcGVyIHtcXG5cXHR6LWluZGV4OiA1ICFpbXBvcnRhbnQ7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL2RhdGUvRGF0ZVBpY2tlci9zdHlsZXMuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0NBQ0MsdUJBQXVCO0FBQ3hCOztBQUVBO0NBQ0MscUJBQXFCO0FBQ3RCOztBQUVBO0NBQ0MsV0FBVztDQUNYLG9CQUFvQjtBQUNyQjs7QUFFQTtDQUNDLFdBQVc7QUFDWjs7QUFFQTtDQUNDLFdBQVc7Q0FDWCwwQkFBMEI7QUFDM0I7O0FBRUE7Q0FDQywwQkFBMEI7QUFDM0I7O0FBRUE7Q0FDQyxxQkFBcUI7QUFDdEJcIixcInNvdXJjZXNDb250ZW50XCI6W1wiOmdsb2JhbCgucnctZGF0ZXRpbWVwaWNrZXIpID4gaW5wdXQge1xcblxcdGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xcbn1cXG5cXG46Z2xvYmFsKC5ydy1kYXRldGltZXBpY2tlcikgOmdsb2JhbCgucnctY2FsZW5kYXItZ3JpZC5ydy1uYXYtdmlldykgOmdsb2JhbCgucnctYnRuKSB7XFxuXFx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xcbn1cXG5cXG46Z2xvYmFsKC5kYXRlVGltZVBpY2tlckF1dG9XaWR0aCkge1xcblxcdHdpZHRoOiBhdXRvO1xcblxcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbn1cXG5cXG46Z2xvYmFsKC5kYXRlVGltZVBpY2tlckF1dG9XaWR0aCkgPiBpbnB1dCB7XFxuXFx0d2lkdGg6IGF1dG87XFxufVxcblxcbjpnbG9iYWwoLnJlYWN0LWRhdGVwaWNrZXItd3JhcHBlcikge1xcblxcdHdpZHRoOiAxMDAlO1xcblxcdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xcbn1cXG5cXG46Z2xvYmFsKC5yZWFjdC1kYXRlcGlja2VyX19pbnB1dC1jb250YWluZXIpIHtcXG5cXHRkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDtcXG59XFxuXFxuOmdsb2JhbCgucmVhY3QtZGF0ZXBpY2tlci1wb3BwZXIpIHtcXG5cXHR6LWluZGV4OiA1ICFpbXBvcnRhbnQ7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbi8vIGNzcyBiYXNlIGNvZGUsIGluamVjdGVkIGJ5IHRoZSBjc3MtbG9hZGVyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdOyAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuXG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICByZXR1cm4gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIikuY29uY2F0KGNvbnRlbnQsIFwifVwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTsgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcblxuXG4gIGxpc3QuaSA9IGZ1bmN0aW9uIChtb2R1bGVzLCBtZWRpYVF1ZXJ5LCBkZWR1cGUpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgXCJcIl1dO1xuICAgIH1cblxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG5cbiAgICBpZiAoZGVkdXBlKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1kZXN0cnVjdHVyaW5nXG4gICAgICAgIHZhciBpZCA9IHRoaXNbaV1bMF07XG5cbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbW9kdWxlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2ldKTtcblxuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250aW51ZVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lZGlhUXVlcnkpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhUXVlcnk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsyXSA9IFwiXCIuY29uY2F0KG1lZGlhUXVlcnksIFwiIGFuZCBcIikuY29uY2F0KGl0ZW1bMl0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgeyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoYXJyKSkpIHJldHVybjsgdmFyIF9hcnIgPSBbXTsgdmFyIF9uID0gdHJ1ZTsgdmFyIF9kID0gZmFsc2U7IHZhciBfZSA9IHVuZGVmaW5lZDsgdHJ5IHsgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgeyBfYXJyLnB1c2goX3MudmFsdWUpOyBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7IH0gfSBjYXRjaCAoZXJyKSB7IF9kID0gdHJ1ZTsgX2UgPSBlcnI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKF9kKSB0aHJvdyBfZTsgfSB9IHJldHVybiBfYXJyOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSkge1xuICB2YXIgX2l0ZW0gPSBfc2xpY2VkVG9BcnJheShpdGVtLCA0KSxcbiAgICAgIGNvbnRlbnQgPSBfaXRlbVsxXSxcbiAgICAgIGNzc01hcHBpbmcgPSBfaXRlbVszXTtcblxuICBpZiAodHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgIHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShjc3NNYXBwaW5nKSkpKTtcbiAgICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBcIi8qIyBcIi5jb25jYXQoZGF0YSwgXCIgKi9cIik7XG4gICAgdmFyIHNvdXJjZVVSTHMgPSBjc3NNYXBwaW5nLnNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgIHJldHVybiBcIi8qIyBzb3VyY2VVUkw9XCIuY29uY2F0KGNzc01hcHBpbmcuc291cmNlUm9vdCB8fCBcIlwiKS5jb25jYXQoc291cmNlLCBcIiAqL1wiKTtcbiAgICB9KTtcbiAgICByZXR1cm4gW2NvbnRlbnRdLmNvbmNhdChzb3VyY2VVUkxzKS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgcmV0dXJuIFtjb250ZW50XS5qb2luKFwiXFxuXCIpO1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIGlzT2xkSUUgPSBmdW5jdGlvbiBpc09sZElFKCkge1xuICB2YXIgbWVtbztcbiAgcmV0dXJuIGZ1bmN0aW9uIG1lbW9yaXplKCkge1xuICAgIGlmICh0eXBlb2YgbWVtbyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIFRlc3QgZm9yIElFIDw9IDkgYXMgcHJvcG9zZWQgYnkgQnJvd3NlcmhhY2tzXG4gICAgICAvLyBAc2VlIGh0dHA6Ly9icm93c2VyaGFja3MuY29tLyNoYWNrLWU3MWQ4NjkyZjY1MzM0MTczZmVlNzE1YzIyMmNiODA1XG4gICAgICAvLyBUZXN0cyBmb3IgZXhpc3RlbmNlIG9mIHN0YW5kYXJkIGdsb2JhbHMgaXMgdG8gYWxsb3cgc3R5bGUtbG9hZGVyXG4gICAgICAvLyB0byBvcGVyYXRlIGNvcnJlY3RseSBpbnRvIG5vbi1zdGFuZGFyZCBlbnZpcm9ubWVudHNcbiAgICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2stY29udHJpYi9zdHlsZS1sb2FkZXIvaXNzdWVzLzE3N1xuICAgICAgbWVtbyA9IEJvb2xlYW4od2luZG93ICYmIGRvY3VtZW50ICYmIGRvY3VtZW50LmFsbCAmJiAhd2luZG93LmF0b2IpO1xuICAgIH1cblxuICAgIHJldHVybiBtZW1vO1xuICB9O1xufSgpO1xuXG52YXIgZ2V0VGFyZ2V0ID0gZnVuY3Rpb24gZ2V0VGFyZ2V0KCkge1xuICB2YXIgbWVtbyA9IHt9O1xuICByZXR1cm4gZnVuY3Rpb24gbWVtb3JpemUodGFyZ2V0KSB7XG4gICAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB2YXIgc3R5bGVUYXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7IC8vIFNwZWNpYWwgY2FzZSB0byByZXR1cm4gaGVhZCBvZiBpZnJhbWUgaW5zdGVhZCBvZiBpZnJhbWUgaXRzZWxmXG5cbiAgICAgIGlmICh3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQgJiYgc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAgIC8vIGR1ZSB0byBjcm9zcy1vcmlnaW4gcmVzdHJpY3Rpb25zXG4gICAgICAgICAgc3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgICAgc3R5bGVUYXJnZXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICAgIH1cblxuICAgIHJldHVybiBtZW1vW3RhcmdldF07XG4gIH07XG59KCk7XG5cbnZhciBzdHlsZXNJbkRvbSA9IFtdO1xuXG5mdW5jdGlvbiBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSB7XG4gIHZhciByZXN1bHQgPSAtMTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRG9tLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRG9tW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucykge1xuICB2YXIgaWRDb3VudE1hcCA9IHt9O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM11cbiAgICB9O1xuXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgc3R5bGVzSW5Eb21baW5kZXhdLnJlZmVyZW5jZXMrKztcbiAgICAgIHN0eWxlc0luRG9tW2luZGV4XS51cGRhdGVyKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlc0luRG9tLnB1c2goe1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiBhZGRTdHlsZShvYmosIG9wdGlvbnMpLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50aWZpZXIpO1xuICB9XG5cbiAgcmV0dXJuIGlkZW50aWZpZXJzO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICB2YXIgYXR0cmlidXRlcyA9IG9wdGlvbnMuYXR0cmlidXRlcyB8fCB7fTtcblxuICBpZiAodHlwZW9mIGF0dHJpYnV0ZXMubm9uY2UgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSAndW5kZWZpbmVkJyA/IF9fd2VicGFja19ub25jZV9fIDogbnVsbDtcblxuICAgIGlmIChub25jZSkge1xuICAgICAgYXR0cmlidXRlcy5ub25jZSA9IG5vbmNlO1xuICAgIH1cbiAgfVxuXG4gIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHN0eWxlLnNldEF0dHJpYnV0ZShrZXksIGF0dHJpYnV0ZXNba2V5XSk7XG4gIH0pO1xuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5pbnNlcnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBvcHRpb25zLmluc2VydChzdHlsZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHRhcmdldCA9IGdldFRhcmdldChvcHRpb25zLmluc2VydCB8fCAnaGVhZCcpO1xuXG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0JyBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cIik7XG4gICAgfVxuXG4gICAgdGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgfVxuXG4gIHJldHVybiBzdHlsZTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlKSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGUucGFyZW50Tm9kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0eWxlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGUpO1xufVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cblxudmFyIHJlcGxhY2VUZXh0ID0gZnVuY3Rpb24gcmVwbGFjZVRleHQoKSB7XG4gIHZhciB0ZXh0U3RvcmUgPSBbXTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHJlcGxhY2UoaW5kZXgsIHJlcGxhY2VtZW50KSB7XG4gICAgdGV4dFN0b3JlW2luZGV4XSA9IHJlcGxhY2VtZW50O1xuICAgIHJldHVybiB0ZXh0U3RvcmUuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpO1xuICB9O1xufSgpO1xuXG5mdW5jdGlvbiBhcHBseVRvU2luZ2xldG9uVGFnKHN0eWxlLCBpbmRleCwgcmVtb3ZlLCBvYmopIHtcbiAgdmFyIGNzcyA9IHJlbW92ZSA/ICcnIDogb2JqLm1lZGlhID8gXCJAbWVkaWEgXCIuY29uY2F0KG9iai5tZWRpYSwgXCIge1wiKS5jb25jYXQob2JqLmNzcywgXCJ9XCIpIDogb2JqLmNzczsgLy8gRm9yIG9sZCBJRVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IHJlcGxhY2VUZXh0KGluZGV4LCBjc3MpO1xuICB9IGVsc2Uge1xuICAgIHZhciBjc3NOb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKTtcbiAgICB2YXIgY2hpbGROb2RlcyA9IHN0eWxlLmNoaWxkTm9kZXM7XG5cbiAgICBpZiAoY2hpbGROb2Rlc1tpbmRleF0pIHtcbiAgICAgIHN0eWxlLnJlbW92ZUNoaWxkKGNoaWxkTm9kZXNbaW5kZXhdKTtcbiAgICB9XG5cbiAgICBpZiAoY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgIHN0eWxlLmluc2VydEJlZm9yZShjc3NOb2RlLCBjaGlsZE5vZGVzW2luZGV4XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGNzc05vZGUpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseVRvVGFnKHN0eWxlLCBvcHRpb25zLCBvYmopIHtcbiAgdmFyIGNzcyA9IG9iai5jc3M7XG4gIHZhciBtZWRpYSA9IG9iai5tZWRpYTtcbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG5cbiAgaWYgKG1lZGlhKSB7XG4gICAgc3R5bGUuc2V0QXR0cmlidXRlKCdtZWRpYScsIG1lZGlhKTtcbiAgfSBlbHNlIHtcbiAgICBzdHlsZS5yZW1vdmVBdHRyaWJ1dGUoJ21lZGlhJyk7XG4gIH1cblxuICBpZiAoc291cmNlTWFwICYmIHR5cGVvZiBidG9hICE9PSAndW5kZWZpbmVkJykge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9IC8vIEZvciBvbGQgSUVcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG5cblxuICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGUuZmlyc3RDaGlsZCkge1xuICAgICAgc3R5bGUucmVtb3ZlQ2hpbGQoc3R5bGUuZmlyc3RDaGlsZCk7XG4gICAgfVxuXG4gICAgc3R5bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxudmFyIHNpbmdsZXRvbiA9IG51bGw7XG52YXIgc2luZ2xldG9uQ291bnRlciA9IDA7XG5cbmZ1bmN0aW9uIGFkZFN0eWxlKG9iaiwgb3B0aW9ucykge1xuICB2YXIgc3R5bGU7XG4gIHZhciB1cGRhdGU7XG4gIHZhciByZW1vdmU7XG5cbiAgaWYgKG9wdGlvbnMuc2luZ2xldG9uKSB7XG4gICAgdmFyIHN0eWxlSW5kZXggPSBzaW5nbGV0b25Db3VudGVyKys7XG4gICAgc3R5bGUgPSBzaW5nbGV0b24gfHwgKHNpbmdsZXRvbiA9IGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSk7XG4gICAgdXBkYXRlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlLCBzdHlsZUluZGV4LCBmYWxzZSk7XG4gICAgcmVtb3ZlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlLCBzdHlsZUluZGV4LCB0cnVlKTtcbiAgfSBlbHNlIHtcbiAgICBzdHlsZSA9IGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKTtcbiAgICB1cGRhdGUgPSBhcHBseVRvVGFnLmJpbmQobnVsbCwgc3R5bGUsIG9wdGlvbnMpO1xuXG4gICAgcmVtb3ZlID0gZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlKTtcbiAgICB9O1xuICB9XG5cbiAgdXBkYXRlKG9iaik7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGVTdHlsZShuZXdPYmopIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJiBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJiBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92ZSgpO1xuICAgIH1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsgLy8gRm9yY2Ugc2luZ2xlLXRhZyBzb2x1dGlvbiBvbiBJRTYtOSwgd2hpY2ggaGFzIGEgaGFyZCBsaW1pdCBvbiB0aGUgIyBvZiA8c3R5bGU+XG4gIC8vIHRhZ3MgaXQgd2lsbCBhbGxvdyBvbiBhIHBhZ2VcblxuICBpZiAoIW9wdGlvbnMuc2luZ2xldG9uICYmIHR5cGVvZiBvcHRpb25zLnNpbmdsZXRvbiAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgb3B0aW9ucy5zaW5nbGV0b24gPSBpc09sZElFKCk7XG4gIH1cblxuICBsaXN0ID0gbGlzdCB8fCBbXTtcbiAgdmFyIGxhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZShuZXdMaXN0KSB7XG4gICAgbmV3TGlzdCA9IG5ld0xpc3QgfHwgW107XG5cbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG5ld0xpc3QpICE9PSAnW29iamVjdCBBcnJheV0nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW2ldO1xuICAgICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgICBzdHlsZXNJbkRvbVtpbmRleF0ucmVmZXJlbmNlcy0tO1xuICAgIH1cblxuICAgIHZhciBuZXdMYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obmV3TGlzdCwgb3B0aW9ucyk7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcblxuICAgICAgdmFyIF9pbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKF9pZGVudGlmaWVyKTtcblxuICAgICAgaWYgKHN0eWxlc0luRG9tW19pbmRleF0ucmVmZXJlbmNlcyA9PT0gMCkge1xuICAgICAgICBzdHlsZXNJbkRvbVtfaW5kZXhdLnVwZGF0ZXIoKTtcblxuICAgICAgICBzdHlsZXNJbkRvbS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsYXN0SWRlbnRpZmllcnMgPSBuZXdMYXN0SWRlbnRpZmllcnM7XG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXNzZXJ0VGhpc0luaXRpYWxpemVkXCIpOzsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCIpOzsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCIpOzsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpOzsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCIpOzsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCIpOzsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIpOzsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIik7OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheVwiKTs7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheVwiKTs7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGpzLWpvZGEvY29yZVwiKTs7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHRoeC9kYXRlXCIpOzsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAdGh4L21vbmV5XCIpOzsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAdGh4L3l1cC10eXBlc1wiKTs7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZGVidWdcIik7OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50ZW1pdHRlcjNcIik7OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZsYXRcIik7OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZvcm1pa1wiKTs7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaW5wdXRtYXNrXCIpOzsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJqcy1tb25leVwiKTs7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibG9kYXNoL2dldFwiKTs7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibG9kYXNoL3Byb3BlcnR5XCIpOzsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsb2Rhc2gvdW5pcVwiKTs7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWRhdGVwaWNrZXJcIik7OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJvdXRlci1kb21cIik7OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXRhYmxlXCIpOzsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtZGV2LXJ1bnRpbWVcIik7OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInNlbWFudGljLXVpLXJlYWN0XCIpOzsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1c2UtZGVlcC1jb21wYXJlLWVmZmVjdFwiKTs7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIi8vIERhdGVcbmV4cG9ydCB0eXBlIHtEYXRlUGlja2VyfSBmcm9tICcuL2RhdGUvRGF0ZVBpY2tlcic7XG5leHBvcnQge0xvY2FsRGF0ZVBpY2tlcn0gZnJvbSAnLi9kYXRlL0xvY2FsRGF0ZVBpY2tlcic7XG5leHBvcnQgdHlwZSB7TG9jYWxEYXRlUGlja2VyUHJvcHN9IGZyb20gJy4vZGF0ZS9Mb2NhbERhdGVQaWNrZXInO1xuZXhwb3J0IHtMb2NhbE1vbnRoU2VsZWN0fSBmcm9tICcuL2RhdGUvTG9jYWxNb250aFNlbGVjdCc7XG5leHBvcnQgdHlwZSB7TG9jYWxNb250aFNlbGVjdFByb3BzfSBmcm9tICcuL2RhdGUvTG9jYWxNb250aFNlbGVjdCc7XG5leHBvcnQge0xvY2FsVGltZVBpY2tlcn0gZnJvbSAnLi9kYXRlL0xvY2FsVGltZVBpY2tlcic7XG5leHBvcnQgdHlwZSB7TG9jYWxUaW1lUGlja2VyUHJvcHN9IGZyb20gJy4vZGF0ZS9Mb2NhbFRpbWVQaWNrZXInO1xuZXhwb3J0IHtNb250aERheVBpY2tlcn0gZnJvbSAnLi9kYXRlL01vbnRoRGF5UGlja2VyJztcbmV4cG9ydCB0eXBlIHtNb250aERheVBpY2tlclByb3BzfSBmcm9tICcuL2RhdGUvTW9udGhEYXlQaWNrZXInO1xuZXhwb3J0IHtNb250aFllYXJQaWNrZXJ9IGZyb20gJy4vZGF0ZS9Nb250aFllYXJQaWNrZXInO1xuZXhwb3J0IHR5cGUge01vbnRoWWVhclBpY2tlclByb3BzfSBmcm9tICcuL2RhdGUvTW9udGhZZWFyUGlja2VyJztcbmV4cG9ydCB7WWVhclNlbGVjdH0gZnJvbSAnLi9kYXRlL1llYXJTZWxlY3QnO1xuZXhwb3J0IHR5cGUge1llYXJTZWxlY3RQcm9wc30gZnJvbSAnLi9kYXRlL1llYXJTZWxlY3QnO1xuXG4vLyBGb3JtXG5leHBvcnQge3VzZVRGb3JtLCBURm9ybX0gZnJvbSAnLi9mb3JtL1RGb3JtJztcbmV4cG9ydCB0eXBlIHtURm9ybVByb3BzfSBmcm9tICcuL2Zvcm0vVEZvcm0nO1xuXG4vLyBJbnB1dHNcbmV4cG9ydCB7TWFza2VkSW5wdXR9IGZyb20gJy4vaW5wdXRzL01hc2tlZElucHV0JztcbmV4cG9ydCB0eXBlIHtNYXNrZWRJbnB1dFByb3BzfSBmcm9tICcuL2lucHV0cy9NYXNrZWRJbnB1dCc7XG5leHBvcnQge1JhZGlvR3JvdXB9IGZyb20gJy4vaW5wdXRzL1JhZGlvR3JvdXAnO1xuZXhwb3J0IHR5cGUge1JhZGlvR3JvdXBQcm9wc30gZnJvbSAnLi9pbnB1dHMvUmFkaW9Hcm91cCc7XG5leHBvcnQge1NjcmlwdGVsLCB3aXRoU2NyaXB0ZWx9IGZyb20gJy4vaW5wdXRzL1NjcmlwdGVsJztcbmV4cG9ydCB0eXBlIHtTY3JpcHRlbFByb3BzLCBTY3JpcHRlbE1lc3NhZ2VDbGFzcywgU2NyaXB0ZWxQZW5TdHlsZX0gZnJvbSAnLi9pbnB1dHMvU2NyaXB0ZWwnO1xuZXhwb3J0IHtTY3JpcHRlbElucHV0fSBmcm9tICcuL2lucHV0cy9TY3JpcHRlbElucHV0JztcbmV4cG9ydCB0eXBlIHtTY3JpcHRlbElucHV0UHJvcHN9IGZyb20gJy4vaW5wdXRzL1NjcmlwdGVsSW5wdXQnO1xuZXhwb3J0IHtQaG9uZUlucHV0fSBmcm9tICcuL2lucHV0cy9QaG9uZUlucHV0JztcbmV4cG9ydCB0eXBlIHtQaG9uZUlucHV0UHJvcHN9IGZyb20gJy4vaW5wdXRzL1Bob25lSW5wdXQnO1xuZXhwb3J0IHtDcmVkaXRDYXJkSW5wdXR9IGZyb20gJy4vaW5wdXRzL0NyZWRpdENhcmRJbnB1dCc7XG5leHBvcnQgdHlwZSB7Q3JlZGl0Q2FyZElucHV0VHlwZX0gZnJvbSAnLi9pbnB1dHMvQ3JlZGl0Q2FyZElucHV0JztcbmV4cG9ydCB7U2luSW5wdXR9IGZyb20gJy4vaW5wdXRzL1NpbklucHV0JztcbmV4cG9ydCB0eXBlIHtTaW5JbnB1dFByb3BzfSBmcm9tICcuL2lucHV0cy9TaW5JbnB1dCc7XG5cbi8vIFRhYmxlXG5leHBvcnQge2FkZFJvd09uVGFiLCBNb25leUVkaXRDZWxsLCBTdHJpbmdFZGl0Q2VsbCwgTW9uZXlTdW1Gb290ZXIsIE1vbmV5Q2VsbCwgVGFibGVJbnB1dCwgSG92ZXJDZWxsLCBEcm9wZG93bkNlbGx9IGZyb20gJy4vaW5wdXRzL1RhYmxlSW5wdXQnO1xuZXhwb3J0IHR5cGUge0FkZFJvd09uVGFiSWZ9IGZyb20gJy4vaW5wdXRzL1RhYmxlSW5wdXQnO1xuXG4vLyBNb25leVxuZXhwb3J0IHtNb25leUlucHV0fSBmcm9tICcuL21vbmV5L01vbmV5SW5wdXQnO1xuZXhwb3J0IHR5cGUge01vbmV5SW5wdXRQcm9wc30gZnJvbSAnLi9tb25leS9Nb25leUlucHV0JztcbmV4cG9ydCB7TW9uZXlDdXJyZW5jeUlucHV0fSBmcm9tICcuL21vbmV5L01vbmV5Q3VycmVuY3lJbnB1dCc7XG5leHBvcnQgdHlwZSB7TW9uZXlDdXJyZW5jeUlucHV0UHJvcHN9IGZyb20gJy4vbW9uZXkvTW9uZXlDdXJyZW5jeUlucHV0JztcblxuLy8gU3RlcFxuZXhwb3J0IHtGb3JtU3RlcCwgU3RlcFByb3ZpZGVyLCB1c2VTdGVwLCBTdGVwfSBmcm9tICcuL3N0ZXAnO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==
|
|
5482
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Ozs7VUNBQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBOztVQUVBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBOzs7OztXQ3RCQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EsaUNBQWlDLFdBQVc7V0FDNUM7V0FDQTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHlDQUF5Qyx3Q0FBd0M7V0FDakY7V0FDQTtXQUNBOzs7OztXQ1BBOzs7OztXQ0FBO1dBQ0E7V0FDQTtXQUNBLHVEQUF1RCxpQkFBaUI7V0FDeEU7V0FDQSxnREFBZ0QsYUFBYTtXQUM3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ05BO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUVBO0FBR0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9kYXRlL0RhdGVQaWNrZXIvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vZGF0ZS9Mb2NhbERhdGVQaWNrZXIvTG9jYWxEYXRlUGlja2VyLnRzeCIsIndlYnBhY2s6Ly8vLi9kYXRlL0xvY2FsRGF0ZVBpY2tlci9NYXNrZWREYXRlSW5wdXQudHN4Iiwid2VicGFjazovLy8uL2RhdGUvTG9jYWxEYXRlUGlja2VyL2luZGV4LnRzIiwid2VicGFjazovLy8uL2RhdGUvTG9jYWxNb250aFNlbGVjdC9Mb2NhbE1vbnRoU2VsZWN0LnRzeCIsIndlYnBhY2s6Ly8vLi9kYXRlL0xvY2FsTW9udGhTZWxlY3QvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vZGF0ZS9Mb2NhbFRpbWVQaWNrZXIvTG9jYWxUaW1lUGlja2VyLnRzeCIsIndlYnBhY2s6Ly8vLi9kYXRlL0xvY2FsVGltZVBpY2tlci9NYXNrZWRUaW1lSW5wdXQudHN4Iiwid2VicGFjazovLy8uL2RhdGUvTG9jYWxUaW1lUGlja2VyL2luZGV4LnRzIiwid2VicGFjazovLy8uL2RhdGUvTW9udGhEYXlQaWNrZXIvTW9udGhEYXlQaWNrZXIudHN4Iiwid2VicGFjazovLy8uL2RhdGUvTW9udGhEYXlQaWNrZXIvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vZGF0ZS9Nb250aFllYXJQaWNrZXIvTW9udGhZZWFyUGlja2VyLnRzeCIsIndlYnBhY2s6Ly8vLi9kYXRlL01vbnRoWWVhclBpY2tlci9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9kYXRlL1llYXJTZWxlY3QvWWVhclNlbGVjdC50c3giLCJ3ZWJwYWNrOi8vLy4vZGF0ZS9ZZWFyU2VsZWN0L2luZGV4LnRzIiwid2VicGFjazovLy8uL2Zvcm0vVEZvcm0vVEZvcm0udHN4Iiwid2VicGFjazovLy8uL2Zvcm0vVEZvcm0vaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vZm9ybS9URm9ybS91c2VURm9ybS50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL0NyZWRpdENhcmRJbnB1dC9DcmVkaXRDYXJkSW5wdXQudHN4Iiwid2VicGFjazovLy8uL2lucHV0cy9DcmVkaXRDYXJkSW5wdXQvQ3JlZGl0Q2FyZE51bWJlcklucHV0LnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvQ3JlZGl0Q2FyZElucHV0L2luZGV4LnRzIiwid2VicGFjazovLy8uL2lucHV0cy9NYXNrZWRJbnB1dC9NYXNrZWRJbnB1dC50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL01hc2tlZElucHV0L2luZGV4LnRzIiwid2VicGFjazovLy8uL2lucHV0cy9NYXNrZWRJbnB1dC91c2VNYXNrZWRJbnB1dC50cyIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvUGhvbmVJbnB1dC9QaG9uZUlucHV0LnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvUGhvbmVJbnB1dC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvUmFkaW9Hcm91cC9SYWRpb0dyb3VwLnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvUmFkaW9Hcm91cC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvU2NyaXB0ZWwvU2NyaXB0ZWwudHN4Iiwid2VicGFjazovLy8uL2lucHV0cy9TY3JpcHRlbC9TY3JpcHRlbENvbnRleHQudHMiLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1NjcmlwdGVsL2luZGV4LnRzIiwid2VicGFjazovLy8uL2lucHV0cy9TY3JpcHRlbC9zY3JpcHRlbC9lbnVtcy50cyIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvU2NyaXB0ZWwvc2NyaXB0ZWwvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1NjcmlwdGVsL3dpdGhTY3JpcHRlbC50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1NjcmlwdGVsSW5wdXQvU2NyaXB0ZWxJbnB1dC50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1NjcmlwdGVsSW5wdXQvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1NpbklucHV0L1NpbklucHV0LnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvU2luSW5wdXQvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1RhYmxlSW5wdXQvRHJvcGRvd25DZWxsLnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvVGFibGVJbnB1dC9Ib3ZlckNlbGwudHN4Iiwid2VicGFjazovLy8uL2lucHV0cy9UYWJsZUlucHV0L01vbmV5Q2VsbC50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1RhYmxlSW5wdXQvTW9uZXlFZGl0Q2VsbC50c3giLCJ3ZWJwYWNrOi8vLy4vaW5wdXRzL1RhYmxlSW5wdXQvTW9uZXlTdW1Gb290ZXIudHN4Iiwid2VicGFjazovLy8uL2lucHV0cy9UYWJsZUlucHV0L1N0cmluZ0VkaXRDZWxsLnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvVGFibGVJbnB1dC9UYWJsZUlucHV0LnRzeCIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvVGFibGVJbnB1dC9hZGRSb3dPblRhYi50cyIsIndlYnBhY2s6Ly8vLi9pbnB1dHMvVGFibGVJbnB1dC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9tb25leS9Nb25leUN1cnJlbmN5SW5wdXQvTW9uZXlDdXJyZW5jeUlucHV0LnRzeCIsIndlYnBhY2s6Ly8vLi9tb25leS9Nb25leUN1cnJlbmN5SW5wdXQvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vbW9uZXkvTW9uZXlJbnB1dC9Nb25leUlucHV0LnRzeCIsIndlYnBhY2s6Ly8vLi9tb25leS9Nb25leUlucHV0L2luZGV4LnRzIiwid2VicGFjazovLy8uL21vbmV5L3VzZU1vbmV5SW5wdXQudHMiLCJ3ZWJwYWNrOi8vLy4vc3RlcC9Gb3JtU3RlcC50c3giLCJ3ZWJwYWNrOi8vLy4vc3RlcC9TdGVwLnRzeCIsIndlYnBhY2s6Ly8vLi9zdGVwL1N0ZXBQcm92aWRlci50c3giLCJ3ZWJwYWNrOi8vLy4vc3RlcC9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi9zdGVwL3N0ZXBDb250ZXh0LnRzIiwid2VicGFjazovLy8uL3N0ZXAvdXNlU3RlcC50cyIsIndlYnBhY2s6Ly8vLi9kYXRlL0RhdGVQaWNrZXIvc3R5bGVzLmNzcz8xM2I3Iiwid2VicGFjazovLy8uL2lucHV0cy9DcmVkaXRDYXJkSW5wdXQvc3R5bGVzLmNzcz9mZTFkIiwid2VicGFjazovLy8uL2RhdGUvRGF0ZVBpY2tlci9zdHlsZXMuY3NzIiwid2VicGFjazovLy8uL2lucHV0cy9DcmVkaXRDYXJkSW5wdXQvc3R5bGVzLmNzcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVyblwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvc2xpY2VkVG9BcnJheVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAanMtam9kYS9jb3JlXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQHRoeC9kYXRlXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQHRoeC9tb25leVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImNyZWRpdC1jYXJkLXR5cGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJkZWJ1Z1wiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImV2ZW50ZW1pdHRlcjNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJmbGF0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiZm9ybWlrXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiaW5wdXRtYXNrXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwianMtbW9uZXlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJsb2Rhc2gvZ2V0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibG9kYXNoL3Byb3BlcnR5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibG9kYXNoL3VuaXFcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJsdWhuXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3RcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1jcmVkaXQtY2FyZHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1jcmVkaXQtY2FyZHMvZXMvc3R5bGVzLWNvbXBpbGVkLmNzc1wiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWRhdGVwaWNrZXJcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yb3V0ZXItZG9tXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtdGFibGVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC9qc3gtZGV2LXJ1bnRpbWVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJzZW1hbnRpYy11aS1yZWFjdFwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInNvY2lhbC1pbnN1cmFuY2UtbnVtYmVyXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwidXNlLWRlZXAtY29tcGFyZS1lZmZlY3RcIiIsIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vLy4vaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERhdGVQaWNrZXIgZnJvbSAncmVhY3QtZGF0ZXBpY2tlcic7XG5pbXBvcnQgJy4vc3R5bGVzLmNzcyc7XG5cbmV4cG9ydCB7RGF0ZVBpY2tlcn07XG4iLCJpbXBvcnQgdHlwZSB7TG9jYWxEYXRlfSBmcm9tICdAanMtam9kYS9jb3JlJztcbmltcG9ydCB7dG9EYXRlLCB0b0xvY2FsRGF0ZX0gZnJvbSAnQHRoeC9kYXRlJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge1JlYWN0RGF0ZVBpY2tlclByb3BzfSBmcm9tICdyZWFjdC1kYXRlcGlja2VyJztcbmltcG9ydCB0eXBlIHtJbnB1dFByb3BzfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge0RhdGVQaWNrZXJ9IGZyb20gJy4uL0RhdGVQaWNrZXIvaW5kZXgnO1xuaW1wb3J0IHtNYXNrZWREYXRlSW5wdXR9IGZyb20gJy4vTWFza2VkRGF0ZUlucHV0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuZGF0ZS5Mb2NhbERhdGVQaWNrZXInKTtcblxuaW50ZXJmYWNlIElMb2NhbERhdGVQaWNrZXIge1xuXHR2YWx1ZT86IExvY2FsRGF0ZSB8IG51bWJlciB8IG51bGw7XG5cdG9uQ2hhbmdlPzogKHZhbHVlOiBMb2NhbERhdGUgfCBudWxsKSA9PiB2b2lkO1xuXHRvbkNoYW5nZVJhdz86ICgpID0+IHZvaWQ7XG5cdG1pbkRhdGU/OiBMb2NhbERhdGU7XG5cdG1heERhdGU/OiBMb2NhbERhdGU7XG59XG5cbnR5cGUgSW5wdXRQcm9wc09taXR0ZWQgPSBPbWl0PElucHV0UHJvcHMsICdvbkNoYW5nZSc+O1xudHlwZSBSZWFjdERhdGVQaWNrZXJQcm9wc09taXR0ZWQgPSBPbWl0PE9taXQ8UmVhY3REYXRlUGlja2VyUHJvcHMsICd2YWx1ZSc+LCAnb25DaGFuZ2UnIHwgJ21pbkRhdGUnIHwgJ21heERhdGUnPjtcbmV4cG9ydCB0eXBlIExvY2FsRGF0ZVBpY2tlclByb3BzID0gSUxvY2FsRGF0ZVBpY2tlciAmIElucHV0UHJvcHNPbWl0dGVkICYgUmVhY3REYXRlUGlja2VyUHJvcHNPbWl0dGVkO1xuXG5leHBvcnQgZnVuY3Rpb24gTG9jYWxEYXRlUGlja2VyKHByb3BzOiBMb2NhbERhdGVQaWNrZXJQcm9wcyk6IEpTWC5FbGVtZW50IHtcblx0Y29uc3Qge1xuXHRcdG1pbkRhdGUsXG5cdFx0bWF4RGF0ZSxcblx0XHR2YWx1ZSxcblx0XHRvbkNoYW5nZSxcblx0XHRvbkJsdXIsXG5cdFx0YXMsXG5cdFx0YWN0aW9uLFxuXHRcdGFjdGlvblBvc2l0aW9uLFxuXHRcdGNsYXNzTmFtZSxcblx0XHRlcnJvcixcblx0XHRmbHVpZCxcblx0XHRmb2N1cyxcblx0XHRpY29uLFxuXHRcdGljb25Qb3NpdGlvbixcblx0XHRpbnZlcnRlZCxcblx0XHRsYWJlbCxcblx0XHRsYWJlbFBvc2l0aW9uLFxuXHRcdGxvYWRpbmcsXG5cdFx0c2l6ZSxcblx0XHR0YWJJbmRleCxcblx0XHR0cmFuc3BhcmVudCxcblx0XHQuLi5yZXN0XG5cdH0gPSBwcm9wcztcblxuXHRjb25zdCBzZWxlY3RlZCA9IHZhbHVlID8gdG9EYXRlKHZhbHVlKSA6IG51bGw7XG5cblx0Y29uc3QgaW5wdXRQcm9wcyA9IHtcblx0XHRhcyxcblx0XHRhY3Rpb24sXG5cdFx0YWN0aW9uUG9zaXRpb24sXG5cdFx0Y2xhc3NOYW1lLFxuXHRcdGVycm9yLFxuXHRcdGZsdWlkLFxuXHRcdGZvY3VzLFxuXHRcdGljb24sXG5cdFx0aWNvblBvc2l0aW9uLFxuXHRcdGludmVydGVkLFxuXHRcdGxhYmVsLFxuXHRcdGxhYmVsUG9zaXRpb24sXG5cdFx0bG9hZGluZyxcblx0XHRzaXplLFxuXHRcdHRhYkluZGV4LFxuXHRcdHRyYW5zcGFyZW50LFxuXHR9O1xuXG5cdHJldHVybiAoXG5cdFx0PERhdGVQaWNrZXJcblx0XHRcdHsuLi5yZXN0fVxuXHRcdFx0c2VsZWN0ZWQ9e3NlbGVjdGVkfVxuXHRcdFx0b25DaGFuZ2U9e2RhdGUgPT4ge1xuXHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKGRhdGUgPyB0b0xvY2FsRGF0ZShkYXRlKSA6IG51bGwpO1xuXHRcdFx0fX1cblx0XHRcdG9uQmx1cj17b25CbHVyfVxuXHRcdFx0Y3VzdG9tSW5wdXQ9ezxNYXNrZWREYXRlSW5wdXQgey4uLmlucHV0UHJvcHN9IG9uQmx1cj17b25CbHVyfSAvPn1cblx0XHRcdG1pbkRhdGU9e21pbkRhdGUgPyB0b0RhdGUobWluRGF0ZSkgOiBudWxsfVxuXHRcdFx0bWF4RGF0ZT17bWF4RGF0ZSA/IHRvRGF0ZShtYXhEYXRlKSA6IG51bGx9XG5cdFx0Lz5cblx0KTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QsIHtmb3J3YXJkUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge01hc2tlZElucHV0LCBNYXNrZWRJbnB1dFByb3BzfSBmcm9tICcuLi8uLi9pbnB1dHMvTWFza2VkSW5wdXQnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5kYXRlLkxvY2FsRGF0ZVBpY2tlci5NYXNrZWREYXRlSW5wdXQnKTtcblxuZXhwb3J0IGludGVyZmFjZSBNYXNrZWREYXRlSW5wdXRWYWx1ZSB7XG5cdHRhcmdldDoge1xuXHRcdHZhbHVlOiBzdHJpbmc7XG5cdH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFza2VkRGF0ZUlucHV0UHJvcHMge1xuXHRuYW1lPzogc3RyaW5nO1xuXHRvbkNoYW5nZT86ICh2YWx1ZTogTWFza2VkRGF0ZUlucHV0VmFsdWUpID0+IHZvaWQ7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmZ1bmN0aW9uIE1hc2tlZERhdGVJbnB1dElubmVyKHByb3BzOiBNYXNrZWREYXRlSW5wdXRQcm9wcyAmIE9taXQ8TWFza2VkSW5wdXRQcm9wcywgJ29uQ2hhbmdlJz4sIHJlZjogYW55KSB7XG5cdGNvbnN0IHtvbkNoYW5nZSwgbmFtZSwgLi4ucmVzdH0gPSBwcm9wcztcblxuXHRyZXR1cm4gKFxuXHRcdDxNYXNrZWRJbnB1dFxuXHRcdFx0ey4uLnJlc3R9XG5cdFx0XHRuYW1lPXtuYW1lfVxuXHRcdFx0bWFzaz17e2FsaWFzOiAnZGF0ZXRpbWUnLCBpbnB1dEZvcm1hdDogJ21tL2RkL3l5eXknfX1cblx0XHRcdG9uQ2hhbmdlPXt2YWx1ZSA9PiB7XG5cdFx0XHRcdGlmIChvbkNoYW5nZSkgb25DaGFuZ2Uoe3RhcmdldDoge3ZhbHVlOiB2YWx1ZSB8fCAnJ319KTtcblx0XHRcdH19XG5cdFx0Lz5cblx0KTtcbn1cblxuZXhwb3J0IGNvbnN0IE1hc2tlZERhdGVJbnB1dCA9IGZvcndhcmRSZWYoTWFza2VkRGF0ZUlucHV0SW5uZXIpO1xuIiwiZXhwb3J0IHtMb2NhbERhdGVQaWNrZXJ9IGZyb20gJy4vTG9jYWxEYXRlUGlja2VyJztcbmV4cG9ydCB0eXBlIHtMb2NhbERhdGVQaWNrZXJQcm9wc30gZnJvbSAnLi9Mb2NhbERhdGVQaWNrZXInO1xuIiwiaW1wb3J0IHtMb2NhbERhdGV9IGZyb20gJ0Bqcy1qb2RhL2NvcmUnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1NlbGVjdCwgU2VsZWN0UHJvcHN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuZGF0ZS5Mb2NhbE1vbnRoU2VsZWN0Jyk7XG5cbmNvbnN0IG1vbnRoT3B0aW9ucyA9IFtcblx0e3RleHQ6ICdKYW51YXJ5JywgdmFsdWU6IDEsIGtleTogMX0sXG5cdHt0ZXh0OiAnRmVicnVhcnknLCB2YWx1ZTogMiwga2V5OiAyfSxcblx0e3RleHQ6ICdNYXJjaCcsIHZhbHVlOiAzLCBrZXk6IDN9LFxuXHR7dGV4dDogJ0FwcmlsJywgdmFsdWU6IDQsIGtleTogNH0sXG5cdHt0ZXh0OiAnTWF5JywgdmFsdWU6IDUsIGtleTogNX0sXG5cdHt0ZXh0OiAnSnVuZScsIHZhbHVlOiA2LCBrZXk6IDZ9LFxuXHR7dGV4dDogJ0p1bHknLCB2YWx1ZTogNywga2V5OiA3fSxcblx0e3RleHQ6ICdBdWd1c3QnLCB2YWx1ZTogOCwga2V5OiA4fSxcblx0e3RleHQ6ICdTZXB0ZW1iZXInLCB2YWx1ZTogOSwga2V5OiA5fSxcblx0e3RleHQ6ICdPY3RvYmVyJywgdmFsdWU6IDEwLCBrZXk6IDEwfSxcblx0e3RleHQ6ICdOb3ZlbWJlcicsIHZhbHVlOiAxMSwga2V5OiAxMX0sXG5cdHt0ZXh0OiAnRGVjZW1iZXInLCB2YWx1ZTogMTIsIGtleTogMTJ9LFxuXTtcblxuaW50ZXJmYWNlIElMb2NhbE1vbnRoU2VsZWN0UHJvcHMge1xuXHRvbkNoYW5nZT86ICh2YWx1ZTogTG9jYWxEYXRlIHwgbnVsbCkgPT4gdm9pZDtcblx0dmFsdWU/OiBMb2NhbERhdGUgfCBudWxsO1xuXHR5ZWFyPzogbnVtYmVyO1xuXHRoYW5kbGVCbHVyPzogKGV2ZW50OiBhbnkpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIExvY2FsTW9udGhTZWxlY3RQcm9wcyA9IElMb2NhbE1vbnRoU2VsZWN0UHJvcHMgJiBPbWl0PFNlbGVjdFByb3BzLCAnb3B0aW9ucyc+O1xuXG5leHBvcnQgZnVuY3Rpb24gTG9jYWxNb250aFNlbGVjdChwcm9wczogTG9jYWxNb250aFNlbGVjdFByb3BzKTogSlNYLkVsZW1lbnQge1xuXHRjb25zdCB7dmFsdWUsIG9uQ2hhbmdlLCB5ZWFyLCBoYW5kbGVCbHVyLCAuLi5yZXN0fSA9IHByb3BzO1xuXG5cdGNvbnN0IHRoZVllYXIgPSB5ZWFyIHx8IExvY2FsRGF0ZS5ub3coKS55ZWFyKCk7XG5cblx0cmV0dXJuIChcblx0XHQ8U2VsZWN0XG5cdFx0XHRwbGFjZWhvbGRlcj1cIlNlbGVjdCBNb250aFwiXG5cdFx0XHRvcHRpb25zPXttb250aE9wdGlvbnN9XG5cdFx0XHR2YWx1ZT17dmFsdWUgPyB2YWx1ZS5tb250aFZhbHVlKCkgOiAnJ31cblx0XHRcdG9uQ2hhbmdlPXsoZXYsIHYpID0+IHtcblx0XHRcdFx0aWYgKG9uQ2hhbmdlKSB7XG5cdFx0XHRcdFx0aWYgKHR5cGVvZiB2LnZhbHVlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRcdFx0b25DaGFuZ2UodiA/IExvY2FsRGF0ZS5vZih0aGVZZWFyLCB2LnZhbHVlLCAxKSA6IG51bGwpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRvbkNoYW5nZShudWxsKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH19XG5cdFx0XHRvbkJsdXI9e2hhbmRsZUJsdXJ9XG5cdFx0XHR7Li4ucmVzdH1cblx0XHQvPlxuXHQpO1xufVxuIiwiZXhwb3J0IHtMb2NhbE1vbnRoU2VsZWN0fSBmcm9tICcuL0xvY2FsTW9udGhTZWxlY3QnO1xuZXhwb3J0IHR5cGUge0xvY2FsTW9udGhTZWxlY3RQcm9wc30gZnJvbSAnLi9Mb2NhbE1vbnRoU2VsZWN0JztcbiIsImltcG9ydCB7TG9jYWxUaW1lfSBmcm9tICdAanMtam9kYS9jb3JlJztcbmltcG9ydCB7dG9EYXRlLCB0b0xvY2FsVGltZX0gZnJvbSAnQHRoeC9kYXRlJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge1JlYWN0RGF0ZVBpY2tlclByb3BzfSBmcm9tICdyZWFjdC1kYXRlcGlja2VyJztcbmltcG9ydCB0eXBlIHtJbnB1dFByb3BzfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge0RhdGVQaWNrZXJ9IGZyb20gJy4uL0RhdGVQaWNrZXIvaW5kZXgnO1xuaW1wb3J0IHtNYXNrZWRUaW1lSW5wdXR9IGZyb20gJy4vTWFza2VkVGltZUlucHV0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuZGF0ZS5Mb2NhbFRpbWVQaWNrZXInKTtcblxuaW50ZXJmYWNlIElMb2NhbFRpbWVQaWNrZXIge1xuXHR2YWx1ZT86IExvY2FsVGltZSB8IG51bWJlciB8IG51bGw7XG5cdG9uQ2hhbmdlPzogKHZhbHVlOiBMb2NhbFRpbWUgfCBudWxsKSA9PiB2b2lkO1xuXHRvbkNoYW5nZVJhdz86ICgpID0+IHZvaWQ7XG59XG5cbnR5cGUgSW5wdXRQcm9wc09taXR0ZWQgPSBPbWl0PElucHV0UHJvcHMsICdvbkNoYW5nZSc+O1xudHlwZSBSZWFjdERhdGVQaWNrZXJQcm9wc09taXR0ZWQgPSBPbWl0PE9taXQ8UmVhY3REYXRlUGlja2VyUHJvcHMsICd2YWx1ZSc+LCAnb25DaGFuZ2UnPjtcbmV4cG9ydCB0eXBlIExvY2FsVGltZVBpY2tlclByb3BzID0gSUxvY2FsVGltZVBpY2tlciAmIElucHV0UHJvcHNPbWl0dGVkICYgUmVhY3REYXRlUGlja2VyUHJvcHNPbWl0dGVkO1xuXG5leHBvcnQgZnVuY3Rpb24gTG9jYWxUaW1lUGlja2VyKHByb3BzOiBMb2NhbFRpbWVQaWNrZXJQcm9wcyk6IEpTWC5FbGVtZW50IHtcblx0Y29uc3Qge1xuXHRcdHZhbHVlLFxuXHRcdG9uQ2hhbmdlLFxuXHRcdGFzLFxuXHRcdGFjdGlvbixcblx0XHRhY3Rpb25Qb3NpdGlvbixcblx0XHRjbGFzc05hbWUsXG5cdFx0ZGlzYWJsZWQsXG5cdFx0ZXJyb3IsXG5cdFx0Zmx1aWQsXG5cdFx0Zm9jdXMsXG5cdFx0aWNvbixcblx0XHRpY29uUG9zaXRpb24sXG5cdFx0aW52ZXJ0ZWQsXG5cdFx0bGFiZWwsXG5cdFx0bGFiZWxQb3NpdGlvbixcblx0XHRsb2FkaW5nLFxuXHRcdHNpemUsXG5cdFx0dGFiSW5kZXgsXG5cdFx0dHJhbnNwYXJlbnQsXG5cdFx0Li4ucmVzdFxuXHR9ID0gcHJvcHM7XG5cblx0bGV0IHNlbGVjdGVkO1xuXHRpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgc2VsZWN0ZWQgPSB0b0RhdGUoTG9jYWxUaW1lLm9mU2Vjb25kT2ZEYXkodmFsdWUpKTtcblx0ZWxzZSBzZWxlY3RlZCA9IHZhbHVlID8gdG9EYXRlKHZhbHVlKSA6IG51bGw7XG5cblx0Y29uc3QgaW5wdXRQcm9wcyA9IHtcblx0XHRhcyxcblx0XHRhY3Rpb24sXG5cdFx0YWN0aW9uUG9zaXRpb24sXG5cdFx0Y2xhc3NOYW1lLFxuXHRcdGRpc2FibGVkLFxuXHRcdGVycm9yLFxuXHRcdGZsdWlkLFxuXHRcdGZvY3VzLFxuXHRcdGljb24sXG5cdFx0aWNvblBvc2l0aW9uLFxuXHRcdGludmVydGVkLFxuXHRcdGxhYmVsLFxuXHRcdGxhYmVsUG9zaXRpb24sXG5cdFx0bG9hZGluZyxcblx0XHRzaXplLFxuXHRcdHRhYkluZGV4LFxuXHRcdHRyYW5zcGFyZW50LFxuXHR9O1xuXG5cdHJldHVybiAoXG5cdFx0PERhdGVQaWNrZXJcblx0XHRcdHsuLi5yZXN0fVxuXHRcdFx0c2VsZWN0ZWQ9e3NlbGVjdGVkfVxuXHRcdFx0b25DaGFuZ2U9e2RhdGUgPT4ge1xuXHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKGRhdGUgPyB0b0xvY2FsVGltZShkYXRlKSA6IG51bGwpO1xuXHRcdFx0fX1cblx0XHRcdHNob3dUaW1lU2VsZWN0XG5cdFx0XHRzaG93VGltZVNlbGVjdE9ubHlcblx0XHRcdHRpbWVJbnRlcnZhbHM9ezE1fVxuXHRcdFx0dGltZUNhcHRpb249XCJUaW1lXCJcblx0XHRcdGRhdGVGb3JtYXQ9XCJoaDptbSBhYVwiXG5cdFx0XHRjdXN0b21JbnB1dD17PE1hc2tlZFRpbWVJbnB1dCB7Li4uaW5wdXRQcm9wc30gLz59XG5cdFx0Lz5cblx0KTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QsIHtmb3J3YXJkUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge01hc2tlZElucHV0LCBNYXNrZWRJbnB1dFByb3BzfSBmcm9tICcuLi8uLi9pbnB1dHMvTWFza2VkSW5wdXQnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5kYXRlLkxvY2FsVGltZVBpY2tlci5NYXNrZWRUaW1lSW5wdXQnKTtcblxuZXhwb3J0IGludGVyZmFjZSBNYXNrZWRUaW1lSW5wdXRWYWx1ZSB7XG5cdHRhcmdldDoge1xuXHRcdHZhbHVlOiBzdHJpbmc7XG5cdH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFza2VkVGltZUlucHV0UHJvcHMge1xuXHRvbkNoYW5nZT86ICh2YWx1ZTogTWFza2VkVGltZUlucHV0VmFsdWUpID0+IHZvaWQ7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmZ1bmN0aW9uIE1hc2tlZFRpbWVJbnB1dElubmVyKHByb3BzOiBNYXNrZWRUaW1lSW5wdXRQcm9wcyAmIE9taXQ8TWFza2VkSW5wdXRQcm9wcywgJ29uQ2hhbmdlJz4sIHJlZjogYW55KSB7XG5cdGNvbnN0IHtvbkNoYW5nZSwgLi4ucmVzdH0gPSBwcm9wcztcblxuXHRyZXR1cm4gKFxuXHRcdDxNYXNrZWRJbnB1dFxuXHRcdFx0bWFzaz17e2FsaWFzOiAnZGF0ZXRpbWUnLCBpbnB1dEZvcm1hdDogJ2hoOk1NIFRUJ319XG5cdFx0XHRvbkNoYW5nZT17dmFsdWUgPT4ge1xuXHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKHt0YXJnZXQ6IHt2YWx1ZTogdmFsdWUgfHwgJyd9fSk7XG5cdFx0XHR9fVxuXHRcdFx0ey4uLnJlc3R9XG5cdFx0Lz5cblx0KTtcbn1cblxuZXhwb3J0IGNvbnN0IE1hc2tlZFRpbWVJbnB1dCA9IGZvcndhcmRSZWYoTWFza2VkVGltZUlucHV0SW5uZXIpO1xuIiwiZXhwb3J0IHtMb2NhbFRpbWVQaWNrZXJ9IGZyb20gJy4vTG9jYWxUaW1lUGlja2VyJztcbmV4cG9ydCB0eXBlIHtMb2NhbFRpbWVQaWNrZXJQcm9wc30gZnJvbSAnLi9Mb2NhbFRpbWVQaWNrZXInO1xuIiwiaW1wb3J0IHR5cGUge0xvY2FsRGF0ZX0gZnJvbSAnQGpzLWpvZGEvY29yZSc7XG5pbXBvcnQge3RvRGF0ZSwgdG9Mb2NhbERhdGV9IGZyb20gJ0B0aHgvZGF0ZSc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtSZWFjdERhdGVQaWNrZXJQcm9wc30gZnJvbSAncmVhY3QtZGF0ZXBpY2tlcic7XG5pbXBvcnQge0lucHV0UHJvcHMsIElucHV0fSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge0RhdGVQaWNrZXJ9IGZyb20gJy4uL0RhdGVQaWNrZXIvaW5kZXgnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5kYXRlLk1vbnRoRGF5UGlja2VyJyk7XG5cbmNvbnN0IG1vbnRocyA9IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddO1xuXG5pbnRlcmZhY2UgTW9udGhEYXlIZWFkZXJQcm9wcyB7XG5cdGRhdGU6IERhdGU7XG5cdGNoYW5nZVllYXIoeWVhcjogbnVtYmVyKTogdm9pZDtcblx0Y2hhbmdlTW9udGgobW9udGg6IG51bWJlcik6IHZvaWQ7XG5cdGRlY3JlYXNlTW9udGgoKTogdm9pZDtcblx0aW5jcmVhc2VNb250aCgpOiB2b2lkO1xuXHRwcmV2TW9udGhCdXR0b25EaXNhYmxlZDogYm9vbGVhbjtcblx0bmV4dE1vbnRoQnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW47XG5cdGRlY3JlYXNlWWVhcigpOiB2b2lkO1xuXHRpbmNyZWFzZVllYXIoKTogdm9pZDtcblx0cHJldlllYXJCdXR0b25EaXNhYmxlZDogYm9vbGVhbjtcblx0bmV4dFllYXJCdXR0b25EaXNhYmxlZDogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gTW9udGhEYXlIZWFkZXIocHJvcHM6IE1vbnRoRGF5SGVhZGVyUHJvcHMpIHtcblx0cmV0dXJuIChcblx0XHQ8PlxuXHRcdFx0PGRpdiBjbGFzc05hbWU9XCJyZWFjdC1kYXRlcGlja2VyX19jdXJyZW50LW1vbnRoXCI+e21vbnRoc1twcm9wcy5kYXRlLmdldE1vbnRoKCldfTwvZGl2PlxuXHRcdFx0PGJ1dHRvblxuXHRcdFx0XHR0eXBlPVwiYnV0dG9uXCJcblx0XHRcdFx0Y2xhc3NOYW1lPVwicmVhY3QtZGF0ZXBpY2tlcl9fbmF2aWdhdGlvbiByZWFjdC1kYXRlcGlja2VyX19uYXZpZ2F0aW9uLS1wcmV2aW91c1wiXG5cdFx0XHRcdGFyaWEtbGFiZWw9XCJQcmV2aW91cyBNb250aFwiXG5cdFx0XHRcdG9uQ2xpY2s9e3Byb3BzLmRlY3JlYXNlTW9udGh9XG5cdFx0XHRcdGRpc2FibGVkPXtwcm9wcy5wcmV2TW9udGhCdXR0b25EaXNhYmxlZH1cblx0XHRcdD5cblx0XHRcdFx0UHJldmlvdXMgTW9udGhcblx0XHRcdDwvYnV0dG9uPlxuXHRcdFx0PGJ1dHRvblxuXHRcdFx0XHR0eXBlPVwiYnV0dG9uXCJcblx0XHRcdFx0Y2xhc3NOYW1lPVwicmVhY3QtZGF0ZXBpY2tlcl9fbmF2aWdhdGlvbiByZWFjdC1kYXRlcGlja2VyX19uYXZpZ2F0aW9uLS1uZXh0XCJcblx0XHRcdFx0YXJpYS1sYWJlbD1cIk5leHQgTW9udGhcIlxuXHRcdFx0XHRvbkNsaWNrPXtwcm9wcy5pbmNyZWFzZU1vbnRofVxuXHRcdFx0XHRkaXNhYmxlZD17cHJvcHMubmV4dE1vbnRoQnV0dG9uRGlzYWJsZWR9XG5cdFx0XHQ+XG5cdFx0XHRcdE5leHQgTW9udGhcblx0XHRcdDwvYnV0dG9uPlxuXHRcdDwvPlxuXHQpO1xufVxuXG5pbnRlcmZhY2UgSU1vbnRoRGF5UGlja2VyUHJvcHMge1xuXHR2YWx1ZT86IExvY2FsRGF0ZSB8IG51bWJlciB8IG51bGw7XG5cdG9uQ2hhbmdlPzogKHZhbHVlOiBMb2NhbERhdGUgfCBudWxsKSA9PiB2b2lkO1xuXHRvbkNoYW5nZVJhdz86ICgpID0+IHZvaWQ7XG59XG5cbnR5cGUgSW5wdXRQcm9wc09taXR0ZWQgPSBPbWl0PElucHV0UHJvcHMsICdvbkNoYW5nZSc+O1xudHlwZSBSZWFjdERhdGVQaWNrZXJQcm9wc09taXR0ZWQgPSBPbWl0PE9taXQ8UmVhY3REYXRlUGlja2VyUHJvcHMsICd2YWx1ZSc+LCAnb25DaGFuZ2UnPjtcbmV4cG9ydCB0eXBlIE1vbnRoRGF5UGlja2VyUHJvcHMgPSBJTW9udGhEYXlQaWNrZXJQcm9wcyAmIElucHV0UHJvcHNPbWl0dGVkICYgUmVhY3REYXRlUGlja2VyUHJvcHNPbWl0dGVkO1xuXG5leHBvcnQgZnVuY3Rpb24gTW9udGhEYXlQaWNrZXIocHJvcHM6IE1vbnRoRGF5UGlja2VyUHJvcHMpOiBKU1guRWxlbWVudCB7XG5cdGNvbnN0IHtcblx0XHR2YWx1ZSxcblx0XHRvbkNoYW5nZSxcblx0XHRhcyxcblx0XHRhY3Rpb24sXG5cdFx0YWN0aW9uUG9zaXRpb24sXG5cdFx0Y2xhc3NOYW1lLFxuXHRcdGRpc2FibGVkLFxuXHRcdGVycm9yLFxuXHRcdGZsdWlkLFxuXHRcdGZvY3VzLFxuXHRcdGljb24sXG5cdFx0aWNvblBvc2l0aW9uLFxuXHRcdGludmVydGVkLFxuXHRcdGxhYmVsLFxuXHRcdGxhYmVsUG9zaXRpb24sXG5cdFx0bG9hZGluZyxcblx0XHRzaXplLFxuXHRcdHRhYkluZGV4LFxuXHRcdHRyYW5zcGFyZW50LFxuXHRcdC4uLnJlc3Rcblx0fSA9IHByb3BzO1xuXG5cdGNvbnN0IHNlbGVjdGVkID0gdmFsdWUgPyB0b0RhdGUodmFsdWUpIDogbnVsbDtcblxuXHRjb25zdCBpbnB1dFByb3BzID0ge1xuXHRcdGFzLFxuXHRcdGFjdGlvbixcblx0XHRhY3Rpb25Qb3NpdGlvbixcblx0XHRjbGFzc05hbWUsXG5cdFx0ZGlzYWJsZWQsXG5cdFx0ZXJyb3IsXG5cdFx0Zmx1aWQsXG5cdFx0Zm9jdXMsXG5cdFx0aWNvbixcblx0XHRpY29uUG9zaXRpb24sXG5cdFx0aW52ZXJ0ZWQsXG5cdFx0bGFiZWwsXG5cdFx0bGFiZWxQb3NpdGlvbixcblx0XHRsb2FkaW5nLFxuXHRcdHNpemUsXG5cdFx0dGFiSW5kZXgsXG5cdFx0dHJhbnNwYXJlbnQsXG5cdH07XG5cblx0cmV0dXJuIChcblx0XHQ8RGF0ZVBpY2tlclxuXHRcdFx0ey4uLnJlc3R9XG5cdFx0XHRzZWxlY3RlZD17c2VsZWN0ZWR9XG5cdFx0XHRvbkNoYW5nZT17ZGF0ZSA9PiB7XG5cdFx0XHRcdGlmIChvbkNoYW5nZSkgb25DaGFuZ2UoZGF0ZSA/IHRvTG9jYWxEYXRlKGRhdGUpIDogbnVsbCk7XG5cdFx0XHR9fVxuXHRcdFx0Y3VzdG9tSW5wdXQ9ezxJbnB1dCB7Li4uaW5wdXRQcm9wc30gLz59XG5cdFx0XHRyZW5kZXJDdXN0b21IZWFkZXI9e01vbnRoRGF5SGVhZGVyfVxuXHRcdFx0ZGF0ZUZvcm1hdD1cIk1NTU0gZFwiXG5cdFx0Lz5cblx0KTtcbn1cbiIsImV4cG9ydCB7TW9udGhEYXlQaWNrZXJ9IGZyb20gJy4vTW9udGhEYXlQaWNrZXInO1xuZXhwb3J0IHR5cGUge01vbnRoRGF5UGlja2VyUHJvcHN9IGZyb20gJy4vTW9udGhEYXlQaWNrZXInO1xuIiwiaW1wb3J0IHtMb2NhbERhdGV9IGZyb20gJ0Bqcy1qb2RhL2NvcmUnO1xuaW1wb3J0IHt0b0RhdGUsIHRvTG9jYWxEYXRlfSBmcm9tICdAdGh4L2RhdGUnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7UmVhY3REYXRlUGlja2VyUHJvcHN9IGZyb20gJ3JlYWN0LWRhdGVwaWNrZXInO1xuaW1wb3J0IHtJbnB1dFByb3BzLCBJbnB1dH0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHtEYXRlUGlja2VyfSBmcm9tICcuLi9EYXRlUGlja2VyL2luZGV4JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuZGF0ZS5Nb250aFllYXJQaWNrZXInKTtcblxuaW50ZXJmYWNlIElNb250aFllYXJQaWNrZXJQcm9wcyB7XG5cdHZhbHVlPzogTG9jYWxEYXRlIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xuXHRvbkNoYW5nZT86ICh2YWx1ZTogTG9jYWxEYXRlIHwgdW5kZWZpbmVkKSA9PiB2b2lkO1xuXHRvbkNoYW5nZVJhdz86ICgpID0+IHZvaWQ7XG5cdG1pbkRhdGU/OiBMb2NhbERhdGUgfCB1bmRlZmluZWQ7XG5cdG1heERhdGU/OiBMb2NhbERhdGUgfCB1bmRlZmluZWQ7XG59XG5cbnR5cGUgSW5wdXRQcm9wc09taXR0ZWQgPSBPbWl0PElucHV0UHJvcHMsICdvbkNoYW5nZSc+O1xudHlwZSBSZWFjdERhdGVQaWNrZXJQcm9wc09taXR0ZWQgPSBPbWl0PE9taXQ8UmVhY3REYXRlUGlja2VyUHJvcHMsICd2YWx1ZScgfCAnbWluRGF0ZScgfCAnbWF4RGF0ZSc+LCAnb25DaGFuZ2UnPjtcbmV4cG9ydCB0eXBlIE1vbnRoWWVhclBpY2tlclByb3BzID0gSU1vbnRoWWVhclBpY2tlclByb3BzICYgSW5wdXRQcm9wc09taXR0ZWQgJiBSZWFjdERhdGVQaWNrZXJQcm9wc09taXR0ZWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBNb250aFllYXJQaWNrZXIocHJvcHM6IE1vbnRoWWVhclBpY2tlclByb3BzKTogSlNYLkVsZW1lbnQge1xuXHRjb25zdCB7XG5cdFx0dmFsdWUsXG5cdFx0b25DaGFuZ2UsXG5cdFx0YXMsXG5cdFx0YWN0aW9uLFxuXHRcdGFjdGlvblBvc2l0aW9uLFxuXHRcdGNsYXNzTmFtZSxcblx0XHRkaXNhYmxlZCxcblx0XHRlcnJvcixcblx0XHRmbHVpZCxcblx0XHRmb2N1cyxcblx0XHRpY29uLFxuXHRcdGljb25Qb3NpdGlvbixcblx0XHRpbnZlcnRlZCxcblx0XHRsYWJlbCxcblx0XHRsYWJlbFBvc2l0aW9uLFxuXHRcdGxvYWRpbmcsXG5cdFx0c2l6ZSxcblx0XHR0YWJJbmRleCxcblx0XHR0cmFuc3BhcmVudCxcblx0XHRtaW5EYXRlLFxuXHRcdG1heERhdGUsXG5cdFx0Li4ucmVzdFxuXHR9ID0gcHJvcHM7XG5cblx0Y29uc3Qgc2VsZWN0ZWQgPSB2YWx1ZSA/IHRvRGF0ZSh2YWx1ZSkgOiBudWxsO1xuXG5cdGNvbnN0IGlucHV0UHJvcHMgPSB7XG5cdFx0YXMsXG5cdFx0YWN0aW9uLFxuXHRcdGFjdGlvblBvc2l0aW9uLFxuXHRcdGNsYXNzTmFtZSxcblx0XHRkaXNhYmxlZCxcblx0XHRlcnJvcixcblx0XHRmbHVpZCxcblx0XHRmb2N1cyxcblx0XHRpY29uLFxuXHRcdGljb25Qb3NpdGlvbixcblx0XHRpbnZlcnRlZCxcblx0XHRsYWJlbCxcblx0XHRsYWJlbFBvc2l0aW9uLFxuXHRcdGxvYWRpbmcsXG5cdFx0c2l6ZSxcblx0XHR0YWJJbmRleCxcblx0XHR0cmFuc3BhcmVudCxcblx0fTtcblxuXHRyZXR1cm4gKFxuXHRcdDxEYXRlUGlja2VyXG5cdFx0XHR7Li4ucmVzdH1cblx0XHRcdHNlbGVjdGVkPXtzZWxlY3RlZH1cblx0XHRcdG9uQ2hhbmdlPXtkYXRlID0+IHtcblx0XHRcdFx0aWYgKG9uQ2hhbmdlKSBvbkNoYW5nZShkYXRlID8gdG9Mb2NhbERhdGUoZGF0ZSkgOiB1bmRlZmluZWQpO1xuXHRcdFx0fX1cblx0XHRcdGN1c3RvbUlucHV0PXs8SW5wdXQgey4uLmlucHV0UHJvcHN9IC8+fVxuXHRcdFx0ZGF0ZUZvcm1hdD1cIk1NTU0geXl5eVwiXG5cdFx0XHRzaG93TW9udGhZZWFyUGlja2VyXG5cdFx0XHRtaW5EYXRlPXt0b0RhdGUobWluRGF0ZT8ud2l0aERheU9mTW9udGgoMSkgfHwgTG9jYWxEYXRlLm9mRXBvY2hEYXkoMCkpfVxuXHRcdFx0bWF4RGF0ZT17dG9EYXRlKG1heERhdGU/LnBsdXNNb250aHMoMSkud2l0aERheU9mTW9udGgoMSkubWludXNEYXlzKDEpIHx8IExvY2FsRGF0ZS5ub3coKS5wbHVzWWVhcnMoMjApKX1cblx0XHQvPlxuXHQpO1xufVxuIiwiZXhwb3J0IHtNb250aFllYXJQaWNrZXJ9IGZyb20gJy4vTW9udGhZZWFyUGlja2VyJztcbmV4cG9ydCB0eXBlIHtNb250aFllYXJQaWNrZXJQcm9wc30gZnJvbSAnLi9Nb250aFllYXJQaWNrZXInO1xuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0ljb24sIEJ1dHRvbiwgRHJvcGRvd24sIERyb3Bkb3duSXRlbVByb3BzLCBTZWdtZW50LCBTZWdtZW50UHJvcHN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuZGF0ZS5ZZWFyU2VsZWN0Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgWWVhclNlbGVjdFByb3BzIHtcblx0b25DaGFuZ2U/OiAodmFsdWU6IG51bWJlcikgPT4gdm9pZDtcblx0b25CbHVyPzogKGV2OiBhbnkpID0+IHZvaWQ7XG5cdHZhbHVlOiBudW1iZXI7XG5cdG1pblllYXI/OiBudW1iZXI7IC8vIERlZmF1bHRzIHRvIDE5NzBcblx0bWF4WWVhcj86IG51bWJlcjsgLy8gRGVmYXVsdHMgdG8gY3VycmVudCB5ZWFyXG5cdGVycm9yPzogYm9vbGVhbjsgLy8gRGVmYXVsdHMgdG8gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFllYXJTZWxlY3QocHJvcHM6IFllYXJTZWxlY3RQcm9wcyAmIE9taXQ8U2VnbWVudFByb3BzLCAnb25DaGFuZ2UnPikge1xuXHRjb25zdCB0aGlzWWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcblx0Y29uc3Qge3ZhbHVlLCBtaW5ZZWFyID0gMTk3MCwgbWF4WWVhciA9IHRoaXNZZWFyLCBvbkNoYW5nZSwgb25CbHVyLCBlcnJvciwgLi4ucmVzdH0gPSBwcm9wcztcblxuXHRjb25zdCBhdmFpbGFibGVZZWFyczogRHJvcGRvd25JdGVtUHJvcHNbXSA9IFtdO1xuXHRmb3IgKGxldCBpID0gbWF4WWVhcjsgaSA+PSBtaW5ZZWFyOyBpLS0pIHtcblx0XHRhdmFpbGFibGVZZWFycy5wdXNoKHt2YWx1ZTogaSwgdGV4dDogaS50b1N0cmluZygpLCBrZXk6IGl9KTtcblx0fVxuXG5cdHJldHVybiAoXG5cdFx0PFNlZ21lbnQgYmFzaWMgY29tcGFjdCBzdHlsZT17e3BhZGRpbmc6IDAsIG1hcmdpbjogMH19IHsuLi5yZXN0fT5cblx0XHRcdDxCdXR0b25cblx0XHRcdFx0YmFzaWNcblx0XHRcdFx0aWNvblxuXHRcdFx0XHR0eXBlPVwiYnV0dG9uXCJcblx0XHRcdFx0Y29sb3I9e2Vycm9yID8gJ3JlZCcgOiAnZ3JlZW4nfVxuXHRcdFx0XHRkaXNhYmxlZD17dmFsdWUgPD0gbWluWWVhcn1cblx0XHRcdFx0b25DbGljaz17KCkgPT4ge1xuXHRcdFx0XHRcdGlmIChvbkNoYW5nZSkgb25DaGFuZ2UodmFsdWUgLSAxKTtcblx0XHRcdFx0fX1cblx0XHRcdFx0b25CbHVyPXtvbkJsdXJ9XG5cdFx0XHQ+XG5cdFx0XHRcdDxJY29uIG5hbWU9XCJhcnJvdyBsZWZ0XCIgLz5cblx0XHRcdDwvQnV0dG9uPlxuXHRcdFx0PERyb3Bkb3duXG5cdFx0XHRcdGljb249ezxkaXYgLz59XG5cdFx0XHRcdGJ1dHRvblxuXHRcdFx0XHRiYXNpY1xuXHRcdFx0XHRzY3JvbGxpbmdcblx0XHRcdFx0dmFsdWU9e3ZhbHVlfVxuXHRcdFx0XHRvcHRpb25zPXthdmFpbGFibGVZZWFyc31cblx0XHRcdFx0b25DaGFuZ2U9eyhlLCB2YWwpID0+IHtcblx0XHRcdFx0XHRpZiAodHlwZW9mIHZhbC52YWx1ZSA9PT0gJ251bWJlcicgJiYgb25DaGFuZ2UpIG9uQ2hhbmdlKHZhbC52YWx1ZSk7XG5cdFx0XHRcdH19XG5cdFx0XHRcdGVycm9yPXtlcnJvcn1cblx0XHRcdFx0b25CbHVyPXtvbkJsdXJ9XG5cdFx0XHQvPlxuXHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRiYXNpY1xuXHRcdFx0XHRpY29uXG5cdFx0XHRcdHR5cGU9XCJidXR0b25cIlxuXHRcdFx0XHRjb2xvcj17ZXJyb3IgPyAncmVkJyA6ICdncmVlbid9XG5cdFx0XHRcdGRpc2FibGVkPXt2YWx1ZSA+PSBtYXhZZWFyfVxuXHRcdFx0XHRvbkNsaWNrPXsoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKG9uQ2hhbmdlKSBvbkNoYW5nZSh2YWx1ZSArIDEpO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHRvbkJsdXI9e29uQmx1cn1cblx0XHRcdFx0c3R5bGU9e3ttYXJnaW5SaWdodDogMH19XG5cdFx0XHQ+XG5cdFx0XHRcdDxJY29uIG5hbWU9XCJhcnJvdyByaWdodFwiIC8+XG5cdFx0XHQ8L0J1dHRvbj5cblx0XHQ8L1NlZ21lbnQ+XG5cdCk7XG59XG4iLCJleHBvcnQge1llYXJTZWxlY3R9IGZyb20gJy4vWWVhclNlbGVjdCc7XG5leHBvcnQgdHlwZSB7WWVhclNlbGVjdFByb3BzfSBmcm9tICcuL1llYXJTZWxlY3QnO1xuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7Rm9ybWlrVmFsdWVzLCBpc0Z1bmN0aW9uLCBGb3JtaWtQcm92aWRlciwgaXNFbXB0eUNoaWxkcmVufSBmcm9tICdmb3JtaWsnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtURm9ybUNvbmZpZywgVEZvcm1Qcm9wc30gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge3VzZVRGb3JtfSBmcm9tICcuL3VzZVRGb3JtJztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuZm9ybS5URm9ybScpO1xuXG5leHBvcnQgZnVuY3Rpb24gVEZvcm08VmFsdWVzIGV4dGVuZHMgRm9ybWlrVmFsdWVzID0gRm9ybWlrVmFsdWVzPihwcm9wczogVEZvcm1Db25maWc8VmFsdWVzPikge1xuXHRjb25zdCB0YmFnID0gdXNlVEZvcm08VmFsdWVzPihwcm9wcyk7XG5cdGNvbnN0IHtjb21wb25lbnQsIHJlbmRlciwgY2hpbGRyZW4sIGlubmVyUmVmfSA9IHByb3BzO1xuXG5cdC8vIFRoaXMgYWxsb3dzIGZvbGtzIHRvIHBhc3MgYSByZWYgdG8gPEZvcm1payAvPlxuXHRSZWFjdC51c2VJbXBlcmF0aXZlSGFuZGxlKGlubmVyUmVmLCAoKSA9PiB0YmFnKTtcblxuXHRsZXQgY2hpbGQgPSBudWxsO1xuXHRpZiAoY29tcG9uZW50KSB7XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGNoaWxkID0gUmVhY3QuY3JlYXRlRWxlbWVudChjb21wb25lbnQsIHRiYWcpO1xuXHR9IGVsc2UgaWYgKHJlbmRlcikge1xuXHRcdGNoaWxkID0gcmVuZGVyKHRiYWcpO1xuXHR9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XG5cdFx0aWYgKGlzRnVuY3Rpb24oY2hpbGRyZW4pKSB7XG5cdFx0XHRjaGlsZCA9IChjaGlsZHJlbiBhcyAoYmFnOiBURm9ybVByb3BzPFZhbHVlcz4pID0+IFJlYWN0LlJlYWN0Tm9kZSkodGJhZyBhcyBURm9ybVByb3BzPFZhbHVlcz4pO1xuXHRcdH0gZWxzZSBpZiAoIWlzRW1wdHlDaGlsZHJlbihjaGlsZHJlbikpIHtcblx0XHRcdGNoaWxkID0gUmVhY3QuQ2hpbGRyZW4ub25seShjaGlsZHJlbik7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIDxGb3JtaWtQcm92aWRlciB2YWx1ZT17dGJhZ30+e2NoaWxkfTwvRm9ybWlrUHJvdmlkZXI+O1xufVxuIiwiZXhwb3J0IHtURm9ybX0gZnJvbSAnLi9URm9ybSc7XG5leHBvcnQge3VzZVRGb3JtfSBmcm9tICcuL3VzZVRGb3JtJztcbmV4cG9ydCB0eXBlIHtURm9ybVByb3BzfSBmcm9tICcuL3R5cGVzJztcbiIsImltcG9ydCBmbGF0dGVuIGZyb20gJ2ZsYXQnO1xuaW1wb3J0IHtGb3JtaWtWYWx1ZXMsIHVzZUZvcm1paywgRm9ybWlrRXJyb3JzLCBGb3JtaWtUb3VjaGVkfSBmcm9tICdmb3JtaWsnO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBwcm9wZXJ0eSBmcm9tICdsb2Rhc2gvcHJvcGVydHknO1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoL3VuaXEnO1xuaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtNZXNzYWdlLCBTZWdtZW50fSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7VEZvcm1Db25maWd9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlVEZvcm08VmFsdWVzIGV4dGVuZHMgRm9ybWlrVmFsdWVzID0gRm9ybWlrVmFsdWVzLCBJbml0aWFsVmFsdWVzID0gYW55Pihjb25maWc6IFRGb3JtQ29uZmlnPFZhbHVlcywgSW5pdGlhbFZhbHVlcz4pIHtcblx0Y29uc3Qge3JlbmRlciwgY2hpbGRyZW4sIC4uLnJlc3R9ID0gY29uZmlnO1xuXHQvLyBAdHMtaWdub3JlXG5cdGNvbnN0IGZvcm1payA9IHVzZUZvcm1payhyZXN0KTtcblxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdGlmIChjb25maWcub25WYWxpZGF0ZSkgY29uZmlnLm9uVmFsaWRhdGUoZm9ybWlrLmlzVmFsaWQpO1xuXHR9LCBbZm9ybWlrLmlzVmFsaWQsIGNvbmZpZy5vblZhbGlkYXRlXSk7XG5cblx0Ly8gR2V0IHN1Ym1pdCBmdW5jdGlvblxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdGlmIChjb25maWcuZ2V0U3VibWl0Rm4pIGNvbmZpZy5nZXRTdWJtaXRGbihmb3JtaWsuc3VibWl0Rm9ybSk7XG5cdH0sIFtmb3JtaWsuc3VibWl0Rm9ybSwgY29uZmlnLmdldFN1Ym1pdEZuXSk7XG5cblx0Ly8gT24gY2hhbmdlIGV2ZW50IChpZiB0aGlzIGVuZHMgdXAgY2hhbmdpbmcgdmFsdWVzIGl0IHdpbGwgY3ljbGUpXG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0aWYgKGNvbmZpZy5vbkNoYW5nZSkgY29uZmlnLm9uQ2hhbmdlKGZvcm1pay52YWx1ZXMpO1xuXHR9LCBbZm9ybWlrLnZhbHVlc10pO1xuXG5cdC8vIE1hcmsgdGhlIGVycm9yIGNsZWFyZWQgaWYgdGhlIGZvcm0gaGFzIGJlZW4gZWRpdGVkIGFmdGVyIGFuIGVycm9yXG5cdGNvbnN0IFtlcnJvckNsZWFyZWQsIHNldEVycm9yQ2xlYXJlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0aWYgKGNvbmZpZy5lcnJvciAmJiBjb25maWcuZXJyb3IubWVzc2FnZSAmJiAhZm9ybWlrLmlzU3VibWl0dGluZykge1xuXHRcdFx0c2V0RXJyb3JDbGVhcmVkKHRydWUpO1xuXHRcdH1cblx0fSwgW2Zvcm1pay52YWx1ZXMsIGNvbmZpZy5lcnJvcl0pO1xuXG5cdC8vIEZsYXR0ZW4gdGhlIHdhcm5pbmdzIChmb3JtaWsgZXJyb3JzKSBhbmQgdG91Y2ggb2JqZWN0cy5cblx0Y29uc3QgZmxhdFdhcm5pbmdzID0gZmxhdHRlbjxGb3JtaWtFcnJvcnM8VmFsdWVzPiwge1trZXk6IHN0cmluZ106IHN0cmluZ30+KGZvcm1pay5lcnJvcnMpO1xuXHRjb25zdCBmbGF0VG91Y2hlZCA9IGZsYXR0ZW48Rm9ybWlrVG91Y2hlZDxWYWx1ZXM+LCB7W2tleTogc3RyaW5nXTogc3RyaW5nfT4oZm9ybWlrLnRvdWNoZWQpO1xuXG5cdC8vIENyZWF0ZSBhbiBhcnJheSBvZiBzdHJpbmdzIHRoYXQgYXJlIHdhcm5pbmdzIChmb3JtaWsgZXJyb3JzKS4gSWYgdGhlIHN1Ym1pdCBjb3VudCBpcyBncmVhdGVyIHRoYW4gMFxuXHQvLyB0aGVuIGl0IHdpbGwgc2hvdyBhbGwgd2FybmluZ3MuIE90aGVyd2lzZSBvbmx5IHRvdWNoZWQgZmllbGQgd2FybmluZ3Mgd2lsbCBiZSBhZGRlZCB0byB0aGlzIGFycmF5LlxuXHRjb25zdCB3YXJuaW5nczogc3RyaW5nW10gPSB1bmlxKFxuXHRcdE9iamVjdC5rZXlzKGZsYXRXYXJuaW5ncykucmVkdWNlPHN0cmluZ1tdPigobWVtbywgdmFsdWUpID0+IHtcblx0XHRcdGNvbnN0IGlzVG91Y2hlZCA9IGZsYXRUb3VjaGVkW3ZhbHVlXTtcblx0XHRcdGlmIChpc1RvdWNoZWQgfHwgZm9ybWlrLnN1Ym1pdENvdW50ID4gMCkge1xuXHRcdFx0XHRyZXR1cm4gWy4uLm1lbW8sIGdldChmbGF0V2FybmluZ3MsIHZhbHVlKV07XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWVtbztcblx0XHR9LCBbXSksXG5cdCk7XG5cblx0Ly8gQ3JlYXRlIGFuIGFycmF5IG9mIHN0cmluZ3MgdGhhdCBhcmUgZXJyb3JzIChncmFwaHFsIGVycm9ycykuXG5cdGxldCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cdGxldCBlcnJvckhlYWRlciA9ICcnO1xuXHRpZiAoY29uZmlnLmVycm9yICYmIGNvbmZpZy5lcnJvci5tZXNzYWdlKSB7XG5cdFx0aWYgKGNvbmZpZy5lcnJvci5ncmFwaFFMRXJyb3JzKSB7XG5cdFx0XHRlcnJvcnMgPSBjb25maWcuZXJyb3IuZ3JhcGhRTEVycm9ycy5yZWR1Y2UoKG1lbW8sIHYpID0+IHtcblx0XHRcdFx0aWYgKHYubWVzc2FnZSkgcmV0dXJuIFsuLi5tZW1vLCB2Lm1lc3NhZ2VdO1xuXHRcdFx0XHRyZXR1cm4gbWVtbztcblx0XHRcdH0sIFtdIGFzIHN0cmluZ1tdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgZXJyb3JNZXNzYWdlID0gY29uZmlnLmVycm9yLm1lc3NhZ2Uuc2xpY2UoY29uZmlnLmVycm9yLm1lc3NhZ2UuaW5kZXhPZignOiAnKSArIDEpO1xuXHRcdFx0ZXJyb3JzLnB1c2goZXJyb3JNZXNzYWdlKTtcblx0XHR9XG5cdFx0ZXJyb3JIZWFkZXIgPSBjb25maWcuZXJyb3IubWVzc2FnZS5zbGljZSgwLCBjb25maWcuZXJyb3IubWVzc2FnZS5pbmRleE9mKCc6ICcpKTtcblx0fVxuXHRlcnJvcnMgPSB1bmlxKGVycm9ycyk7XG5cblx0Ly8gQ2hlY2sgaWYgdGhlcmUgYXJlIHdhcm5pbmdzIG9yIGVycm9yc1xuXHRjb25zdCBoYXNXYXJuaW5ncyA9ICEoZm9ybWlrLmlzVmFsaWQgfHwgd2FybmluZ3MubGVuZ3RoID09PSAwKTtcblx0Y29uc3QgaGFzRXJyb3JzID0gZXJyb3JzLmxlbmd0aCA+IDA7XG5cblx0Ly8gUmVuZGVyIHRoZSB3YXJuaW5nc1xuXHRmdW5jdGlvbiByZW5kZXJXYXJuaW5ncygpIHtcblx0XHRpZiAoIWhhc1dhcm5pbmdzICYmICFoYXNFcnJvcnMpIHJldHVybiBudWxsO1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8TWVzc2FnZSB3YXJuaW5nPXtoYXNXYXJuaW5nc30gZXJyb3I9e2hhc0Vycm9ycyAmJiAhaGFzV2FybmluZ3N9PlxuXHRcdFx0XHQ8TWVzc2FnZS5IZWFkZXI+e2hhc1dhcm5pbmdzID8gJ1NvbWUgZmllbGRzIGFyZSBub3QgY29tcGxldGU6JyA6IGAke2Vycm9ySGVhZGVyfTpgfTwvTWVzc2FnZS5IZWFkZXI+XG5cdFx0XHRcdHsvKiBQdXQgaXQgaW4gYSBzZWdtZW50IHRvIG1ha2Ugc3VyZSB0aGUgZXJyb3JNZXNzYWdlIGlzbid0IHRvbyBiaWcgd2hlbiB0aGVyZSBhcmUgYSBsb3Qgb2YgZXJyb3JzICovfVxuXHRcdFx0XHQ8U2VnbWVudCBzdHlsZT17e292ZXJmbG93OiAnYXV0bycsIG1heEhlaWdodDogMTAwfX0+XG5cdFx0XHRcdFx0eyhoYXNXYXJuaW5ncyA/IHdhcm5pbmdzIDogZXJyb3JzKS5tYXAobXNnID0+IChcblx0XHRcdFx0XHRcdDxkaXYga2V5PXttc2d9Pnttc2d9PC9kaXY+XG5cdFx0XHRcdFx0KSl9XG5cdFx0XHRcdDwvU2VnbWVudD5cblx0XHRcdDwvTWVzc2FnZT5cblx0XHQpO1xuXHR9XG5cblx0Ly8gUmV0dXJucyB0cnVlIGlmIHRoZSBmaWVsZCBoYXMgYW4gZXJyb3Jcblx0ZnVuY3Rpb24gZmllbGRFcnJvcihmaWVsZE5hbWU6IGtleW9mIFZhbHVlcyB8IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiAoISFwcm9wZXJ0eShmaWVsZE5hbWUpKGZvcm1pay50b3VjaGVkKSB8fCBmb3JtaWsuc3VibWl0Q291bnQgPiAwKSAmJiAhIXByb3BlcnR5KGZpZWxkTmFtZSkoZm9ybWlrLmVycm9ycyk7XG5cdH1cblxuXHQvLyBIYW5kbGVzIHRoZSBmb3JtIHN1Ym1pdFxuXHRmdW5jdGlvbiBoYW5kbGVTdWJtaXQoZT86IFJlYWN0LkZvcm1FdmVudDxIVE1MRm9ybUVsZW1lbnQ+KSB7XG5cdFx0c2V0RXJyb3JDbGVhcmVkKGZhbHNlKTtcblx0XHRmb3JtaWsuaGFuZGxlU3VibWl0KGUpO1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHQuLi5mb3JtaWssXG5cdFx0aGFzRXJyb3JzOiBoYXNFcnJvcnMgJiYgIWVycm9yQ2xlYXJlZCxcblx0XHRoYXNXYXJuaW5ncyxcblx0XHRpc1ZhbGlkOiAhaGFzV2FybmluZ3MsXG5cdFx0bG9hZGluZzogY29uZmlnLmxvYWRpbmcgPyBjb25maWcubG9hZGluZyA6IGZhbHNlLFxuXHRcdHN1Ym1pdERpc2FibGVkOiBoYXNXYXJuaW5ncyB8fCBmb3JtaWsuaXNTdWJtaXR0aW5nLFxuXHRcdGVycm9yTWFya2VkQ2xlYXJlZDogZXJyb3JDbGVhcmVkLFxuXHRcdGZvcm1FcnJvcjogaGFzRXJyb3JzICYmICFoYXNXYXJuaW5ncyAmJiAhZXJyb3JDbGVhcmVkICYmICFmb3JtaWsuaXNTdWJtaXR0aW5nLCAvLyBDb252ZW5pZW5jZVxuXHRcdHJlbmRlcldhcm5pbmdzLFxuXHRcdGZpZWxkRXJyb3IsXG5cdFx0aGFuZGxlU3VibWl0LFxuXHR9O1xufVxuIiwiaW1wb3J0IHR5cGUge0xvY2FsRGF0ZX0gZnJvbSAnQGpzLWpvZGEvY29yZSc7XG5pbXBvcnQge2Zvcm1hdERhdGV9IGZyb20gJ0B0aHgvZGF0ZSc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0LCB7dXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBDcmVkaXRDYXJkcywge0ZvY3VzZWR9IGZyb20gJ3JlYWN0LWNyZWRpdC1jYXJkcyc7XG5pbXBvcnQgJ3JlYWN0LWNyZWRpdC1jYXJkcy9lcy9zdHlsZXMtY29tcGlsZWQuY3NzJztcbmltcG9ydCB7Rm9ybSwgR3JpZCwgSW5wdXQsIElucHV0UHJvcHN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB7TW9udGhZZWFyUGlja2VyfSBmcm9tICcuLi8uLi9kYXRlL01vbnRoWWVhclBpY2tlcic7XG5pbXBvcnQge0NyZWRpdENhcmROdW1iZXJJbnB1dH0gZnJvbSAnLi9DcmVkaXRDYXJkTnVtYmVySW5wdXQnO1xuaW1wb3J0ICcuL3N0eWxlcy5jc3MnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5pbnB1dHMuQ3JlZGl0Q2FyZElucHV0Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlZGl0Q2FyZERhdGEge1xuXHRudW1iZXI/OiBzdHJpbmc7XG5cdG5hbWU/OiBzdHJpbmc7XG5cdGN2Yz86IHN0cmluZztcblx0ZXhwaXJ5PzogTG9jYWxEYXRlO1xufVxuXG5leHBvcnQgdHlwZSBDcmVkaXRDYXJkSW5wdXRQcm9wcyA9IHtcblx0dmFsdWU/OiBDcmVkaXRDYXJkRGF0YTtcblx0b25DaGFuZ2U/OiAoZGF0YTogQ3JlZGl0Q2FyZERhdGEpID0+IHZvaWQ7XG59ICYgUGljazxJbnB1dFByb3BzLCAnZGlzYWJsZWQnIHwgJ29uQmx1cic+O1xuXG5leHBvcnQgZnVuY3Rpb24gQ3JlZGl0Q2FyZElucHV0KHByb3BzOiBDcmVkaXRDYXJkSW5wdXRQcm9wcykge1xuXHRjb25zdCB7b25CbHVyLCBkaXNhYmxlZCwgb25DaGFuZ2UsIHZhbHVlfSA9IHByb3BzO1xuXHRjb25zdCB7bmFtZSwgbnVtYmVyLCBjdmMsIGV4cGlyeX0gPSB2YWx1ZSB8fCB7fTtcblxuXHRjb25zdCBbZm9jdXMsIHNldEZvY3VzXSA9IHVzZVN0YXRlPEZvY3VzZWQ+KCdudW1iZXInKTtcblxuXHRyZXR1cm4gKFxuXHRcdDxHcmlkPlxuXHRcdFx0PEdyaWQuQ29sdW1uIHdpZHRoPXs0fT5cblx0XHRcdFx0PEZvcm0+XG5cdFx0XHRcdFx0PEZvcm0uR3JvdXA+XG5cdFx0XHRcdFx0XHQ8Rm9ybS5GaWVsZCB3aWR0aD17OX0+XG5cdFx0XHRcdFx0XHRcdDxsYWJlbD5OdW1iZXI8L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHQ8Q3JlZGl0Q2FyZE51bWJlcklucHV0XG5cdFx0XHRcdFx0XHRcdFx0b25Gb2N1cz17KCkgPT4gc2V0Rm9jdXMoJ251bWJlcicpfVxuXHRcdFx0XHRcdFx0XHRcdG9uQmx1cj17b25CbHVyfVxuXHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXt2ID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlICYmIG9uQ2hhbmdlKHtuYW1lLCBudW1iZXI6IHYsIGN2YywgZXhwaXJ5fSk7XG5cdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRkaXNhYmxlZD17ZGlzYWJsZWR9XG5cdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHQ8L0Zvcm0uRmllbGQ+XG5cdFx0XHRcdFx0XHQ8Rm9ybS5GaWVsZCB3aWR0aD17NH0+XG5cdFx0XHRcdFx0XHRcdDxsYWJlbD5DVkM8L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHQ8SW5wdXRcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17Y3ZjIHx8ICcnfVxuXHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsoZXYsIHYpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlICYmIG9uQ2hhbmdlKHtuYW1lLCBudW1iZXIsIGN2Yzogdi52YWx1ZSwgZXhwaXJ5fSk7XG5cdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRvbkZvY3VzPXsoKSA9PiBzZXRGb2N1cygnY3ZjJyl9XG5cdFx0XHRcdFx0XHRcdFx0b25CbHVyPXsoKSA9PiBzZXRGb2N1cygnbmFtZScpfVxuXHRcdFx0XHRcdFx0XHRcdGRpc2FibGVkPXtkaXNhYmxlZH1cblx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdDwvRm9ybS5GaWVsZD5cblx0XHRcdFx0XHQ8L0Zvcm0uR3JvdXA+XG5cdFx0XHRcdFx0PEZvcm0uR3JvdXA+XG5cdFx0XHRcdFx0XHQ8Rm9ybS5GaWVsZCB3aWR0aD17OX0+XG5cdFx0XHRcdFx0XHRcdDxsYWJlbD5OYW1lPC9sYWJlbD5cblx0XHRcdFx0XHRcdFx0PElucHV0XG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU9e25hbWUgfHwgJyd9XG5cdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyhldiwgdikgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2UgJiYgb25DaGFuZ2Uoe25hbWU6IHYudmFsdWUsIG51bWJlciwgY3ZjLCBleHBpcnl9KTtcblx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdG9uRm9jdXM9eygpID0+IHNldEZvY3VzKCduYW1lJyl9XG5cdFx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e2Rpc2FibGVkfVxuXHRcdFx0XHRcdFx0XHRcdGZsdWlkXG5cdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHQ8L0Zvcm0uRmllbGQ+XG5cdFx0XHRcdFx0XHQ8Rm9ybS5GaWVsZCB3aWR0aD17Nn0+XG5cdFx0XHRcdFx0XHRcdDxsYWJlbD5FeHBpcnk8L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHQ8TW9udGhZZWFyUGlja2VyXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU9e2V4cGlyeX1cblx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZT17diA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZSAmJiBvbkNoYW5nZSh7bmFtZSwgbnVtYmVyLCBjdmMsIGV4cGlyeTogdn0pO1xuXHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0b25Gb2N1cz17KCkgPT4gc2V0Rm9jdXMoJ2V4cGlyeScpfVxuXHRcdFx0XHRcdFx0XHRcdGRpc2FibGVkPXtkaXNhYmxlZH1cblx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdDwvRm9ybS5GaWVsZD5cblx0XHRcdFx0XHQ8L0Zvcm0uR3JvdXA+XG5cdFx0XHRcdDwvRm9ybT5cblx0XHRcdDwvR3JpZC5Db2x1bW4+XG5cdFx0XHQ8R3JpZC5Db2x1bW4gd2lkdGg9ezEyfT5cblx0XHRcdFx0PENyZWRpdENhcmRzXG5cdFx0XHRcdFx0Y3ZjPXtjdmMgfHwgJyd9XG5cdFx0XHRcdFx0ZXhwaXJ5PXtmb3JtYXREYXRlKGV4cGlyeSwge2Zvcm1hdDogJ01NdXUnfSkgfHwgJyd9XG5cdFx0XHRcdFx0bmFtZT17bmFtZSB8fCAnJ31cblx0XHRcdFx0XHRudW1iZXI9e251bWJlciB8fCAnJ31cblx0XHRcdFx0XHRmb2N1c2VkPXtmb2N1c31cblx0XHRcdFx0XHRjYWxsYmFjaz17KGEsIGIpID0+IHtcblx0XHRcdFx0XHRcdGQoYSwgYik7XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0Lz5cblx0XHRcdDwvR3JpZC5Db2x1bW4+XG5cdFx0PC9HcmlkPlxuXHQpO1xufVxuIiwiaW1wb3J0IGNyZWRpdENhcmRUeXBlIGZyb20gJ2NyZWRpdC1jYXJkLXR5cGUnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7dmFsaWRhdGV9IGZyb20gJ2x1aG4nO1xuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZU1lbW8sIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0ljb24sIElucHV0LCBJbnB1dFByb3BzLCBTZW1hbnRpY0lDT05TLCBTZW1hbnRpY0NPTE9SU30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge01hc2tlZElucHV0UHJvcHN9IGZyb20gJy4uL01hc2tlZElucHV0JztcbmltcG9ydCB7dXNlTWFza2VkSW5wdXR9IGZyb20gJy4uL01hc2tlZElucHV0L3VzZU1hc2tlZElucHV0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuaW5wdXRzLkNyZWRpdENhcmRJbnB1dC5DcmVkaXRDYXJkTnVtYmVySW5wdXQnKTtcblxuaW50ZXJmYWNlIENyZWRpdENhcmROdW1iZXJJbnB1dFByb3BzIHtcblx0b25DaGFuZ2U/OiAodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4gdm9pZDtcblx0dmFsdWU/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldEljb24odHlwZTogc3RyaW5nKTogU2VtYW50aWNJQ09OUyB7XG5cdHN3aXRjaCAodHlwZSkge1xuXHRcdGNhc2UgJ3Zpc2EnOlxuXHRcdFx0cmV0dXJuICdjYyB2aXNhJztcblx0XHRjYXNlICdtYXN0ZXJjYXJkJzpcblx0XHRcdHJldHVybiAnY2MgbWFzdGVyY2FyZCc7XG5cdFx0Y2FzZSAnYW1lcmljYW4tZXhwcmVzcyc6XG5cdFx0XHRyZXR1cm4gJ2NjIGFtZXgnO1xuXHRcdGNhc2UgJ2RpbmVycy1jbHViJzpcblx0XHRcdHJldHVybiAnY2MgZGluZXJzIGNsdWInO1xuXHRcdGNhc2UgJ2pjYic6XG5cdFx0XHRyZXR1cm4gJ2NjIGpjYic7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiAnY3JlZGl0IGNhcmQnO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDcmVkaXRDYXJkTnVtYmVySW5wdXQocHJvcHM6IENyZWRpdENhcmROdW1iZXJJbnB1dFByb3BzICYgT21pdDxJbnB1dFByb3BzLCAnb25DaGFuZ2UnPikge1xuXHRjb25zdCB7dmFsdWUsIG9uQ2hhbmdlLCAuLi5yZXN0fSA9IHByb3BzO1xuXHRjb25zdCBbaWNvbiwgc2V0SWNvbl0gPSB1c2VTdGF0ZTxTZW1hbnRpY0lDT05TPignY3JlZGl0IGNhcmQnKTtcblx0Y29uc3QgW2NvbG9yLCBzZXRDb2xvcl0gPSB1c2VTdGF0ZTxTZW1hbnRpY0NPTE9SUz4oJ2JsYWNrJyk7XG5cblx0Y29uc3QgY2hlY2tWYWxpZGF0aW9uID0gdXNlQ2FsbGJhY2soKHZhbHVlQXJyYXk6IHN0cmluZ1tdKSA9PiB7XG5cdFx0Y29uc3QgbnVtID0gdmFsdWVBcnJheS5qb2luKCcnKS5yZXBsYWNlQWxsKC8oX3xcXHMpL2csICcnKTtcblx0XHRjb25zdCB0eXAgPSBjcmVkaXRDYXJkVHlwZShudW0pO1xuXHRcdGNvbnN0IGlzVmFsaWQgPSB2YWxpZGF0ZShudW0pO1xuXG5cdFx0aWYgKHR5cC5sZW5ndGggPT09IDEpIHtcblx0XHRcdHNldEljb24oZ2V0SWNvbih0eXBbMF0udHlwZSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzZXRJY29uKCdjcmVkaXQgY2FyZCcpO1xuXHRcdH1cblxuXHRcdGlmIChudW0ubGVuZ3RoID4gMCkge1xuXHRcdFx0aWYgKGlzVmFsaWQpIHtcblx0XHRcdFx0c2V0Q29sb3IoJ2dyZWVuJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzZXRDb2xvcigncmVkJyk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNldENvbG9yKCdibGFjaycpO1xuXHRcdH1cblxuXHRcdHJldHVybiBpc1ZhbGlkO1xuXHR9LCBbXSk7XG5cblx0Y29uc3QgY3JlZGl0Q2FyZE1hc2s6IE1hc2tlZElucHV0UHJvcHNbJ21hc2snXSA9IHVzZU1lbW8oXG5cdFx0KCkgPT4gKHtcblx0XHRcdG1hc2s6ICc5OTk5IDk5OTkgOTk5OSA5OTk5Jyxcblx0XHRcdGlzQ29tcGxldGU6IGNoZWNrVmFsaWRhdGlvbixcblx0XHRcdGF1dG9Vbm1hc2s6IHRydWUsXG5cdFx0fSksXG5cdFx0W2NoZWNrVmFsaWRhdGlvbl0sXG5cdCk7XG5cblx0Y29uc3QgY2FyZE51bWJlclJlZiA9IHVzZU1hc2tlZElucHV0KHtcblx0XHRtYXNrOiBjcmVkaXRDYXJkTWFzayxcblx0XHR2YWx1ZSxcblx0XHRvbkNoYW5nZTogdiA9PiB7XG5cdFx0XHRjb25zdCB0eXAgPSBjcmVkaXRDYXJkVHlwZSh2IHx8ICcnKTtcblx0XHRcdGQodiwgdHlwKTtcblx0XHRcdC8vIGNoZWNrVmFsaWRhdGlvbihbdiB8fCAnJ10pO1xuXHRcdFx0b25DaGFuZ2UgJiYgb25DaGFuZ2Uodik7XG5cdFx0fSxcblx0fSk7XG5cblx0cmV0dXJuIChcblx0XHQ8SW5wdXQgey4uLnJlc3R9IGljb24+XG5cdFx0XHQ8aW5wdXQgcmVmPXtjYXJkTnVtYmVyUmVmfSAvPlxuXHRcdFx0PEljb24gbmFtZT17aWNvbn0gY29sb3I9e2NvbG9yfSBzaXplPVwibGFyZ2VcIiAvPlxuXHRcdDwvSW5wdXQ+XG5cdCk7XG59XG4iLCJleHBvcnQge0NyZWRpdENhcmRJbnB1dH0gZnJvbSAnLi9DcmVkaXRDYXJkSW5wdXQnO1xuZXhwb3J0IHR5cGUge0NyZWRpdENhcmRJbnB1dFByb3BzfSBmcm9tICcuL0NyZWRpdENhcmRJbnB1dCc7XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7SW5wdXQsIElucHV0UHJvcHN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB7dXNlTWFza2VkSW5wdXQsIFVzZU1hc2tlZElucHV0UHJvcHN9IGZyb20gJy4vdXNlTWFza2VkSW5wdXQnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5pbnB1dHMuTWFza2VkSW5wdXQnKTtcblxuZXhwb3J0IHR5cGUgTWFza2VkSW5wdXRQcm9wcyA9IHtcblx0bmFtZT86IHN0cmluZztcblx0b25CbHVyPzogKGV2ZW50OiBhbnkpID0+IHZvaWQ7XG59ICYgVXNlTWFza2VkSW5wdXRQcm9wcyAmXG5cdE9taXQ8SW5wdXRQcm9wcywgJ29uQ2hhbmdlJz47XG5cbmV4cG9ydCBmdW5jdGlvbiBNYXNrZWRJbnB1dChwcm9wczogTWFza2VkSW5wdXRQcm9wcykge1xuXHRjb25zdCB7bmFtZSwgb25CbHVyLCBkaXNhYmxlZCwgb25DaGFuZ2UsIG1hc2ssIHZhbHVlLCAuLi5yZXN0fSA9IHByb3BzO1xuXG5cdGNvbnN0IGlucHV0UmVmID0gdXNlTWFza2VkSW5wdXQoe21hc2ssIHZhbHVlLCBvbkNoYW5nZX0pO1xuXG5cdHJldHVybiAoXG5cdFx0PElucHV0IHsuLi5yZXN0fT5cblx0XHRcdDxpbnB1dCBkaXNhYmxlZD17ZGlzYWJsZWR9IG5hbWU9e25hbWV9IHJlZj17aW5wdXRSZWZ9IG9uQmx1cj17b25CbHVyfSAvPlxuXHRcdDwvSW5wdXQ+XG5cdCk7XG59XG4iLCJleHBvcnQge01hc2tlZElucHV0fSBmcm9tICcuL01hc2tlZElucHV0JztcbmV4cG9ydCB7dXNlTWFza2VkSW5wdXR9IGZyb20gJy4vdXNlTWFza2VkSW5wdXQnO1xuZXhwb3J0IHR5cGUge01hc2tlZElucHV0UHJvcHN9IGZyb20gJy4vTWFza2VkSW5wdXQnO1xuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBJbnB1dG1hc2sgZnJvbSAnaW5wdXRtYXNrJztcbmltcG9ydCB7dXNlRWZmZWN0LCB1c2VSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VEZWVwQ29tcGFyZUVmZmVjdCBmcm9tICd1c2UtZGVlcC1jb21wYXJlLWVmZmVjdCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmlucHV0cy5NYXNrZWRJbnB1dC51c2VNYXNrZWRJbnB1dCcpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZU1hc2tlZElucHV0UHJvcHMge1xuXHR2YWx1ZT86IHN0cmluZztcblx0b25DaGFuZ2U/OiAodmFsdWU/OiBzdHJpbmcpID0+IHZvaWQ7XG5cdG1hc2s/OiBJbnB1dG1hc2suT3B0aW9ucztcblx0b25TZXQ/OiAodmFsdWU/OiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VNYXNrZWRJbnB1dChwcm9wczogVXNlTWFza2VkSW5wdXRQcm9wcykge1xuXHRjb25zdCB7dmFsdWUsIG9uQ2hhbmdlLCBvblNldCwgbWFza30gPSBwcm9wcztcblxuXHRjb25zdCBpbnB1dEVsZW1lbnQgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuXHRjb25zdCBtYXNrSW5zdGFuY2UgPSB1c2VSZWY8SW5wdXRtYXNrLkluc3RhbmNlIHwgbnVsbD4obnVsbCk7XG5cblx0dXNlRGVlcENvbXBhcmVFZmZlY3QoKCkgPT4ge1xuXHRcdGlmICghaW5wdXRFbGVtZW50LmN1cnJlbnQpIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGdldCBpbnB1dCBlbGVtZW50Jyk7XG5cblx0XHRkKCdDcmVhdGluZyBpbnB1dCBtYXNrIGluc3RhbmNlJyk7XG5cdFx0bWFza0luc3RhbmNlLmN1cnJlbnQgPSBuZXcgSW5wdXRtYXNrKHtcblx0XHRcdC4uLm1hc2ssXG5cdFx0XHRvbmNvbXBsZXRlKCkge1xuXHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKGlucHV0RWxlbWVudC5jdXJyZW50Py52YWx1ZSk7XG5cdFx0XHRcdGlmIChtYXNrPy5vbmNvbXBsZXRlKSBtYXNrLm9uY29tcGxldGUoKTtcblx0XHRcdH0sXG5cdFx0XHRvbmNsZWFyZWQoKSB7XG5cdFx0XHRcdGlmIChvbkNoYW5nZSkgb25DaGFuZ2UoKTtcblx0XHRcdFx0aWYgKG1hc2s/Lm9uY2xlYXJlZCkgbWFzay5vbmNsZWFyZWQoKTtcblx0XHRcdH0sXG5cdFx0XHRvbmluY29tcGxldGUoKSB7XG5cdFx0XHRcdGlmIChvbkNoYW5nZSkgb25DaGFuZ2UoaW5wdXRFbGVtZW50LmN1cnJlbnQ/LnZhbHVlKTtcblx0XHRcdFx0aWYgKG1hc2s/Lm9uaW5jb21wbGV0ZSkgbWFzay5vbmluY29tcGxldGUoKTtcblx0XHRcdH0sXG5cdFx0fSk7XG5cdFx0bWFza0luc3RhbmNlLmN1cnJlbnQubWFzayhpbnB1dEVsZW1lbnQuY3VycmVudCk7XG5cblx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0aWYgKG1hc2tJbnN0YW5jZS5jdXJyZW50KSB7XG5cdFx0XHRcdGQoJ0NsZWFuaW5nIHVwIGlucHV0IG1hc2sgaW5zdGFuY2UnKTtcblx0XHRcdFx0bWFza0luc3RhbmNlLmN1cnJlbnQucmVtb3ZlKCk7XG5cdFx0XHRcdG1hc2tJbnN0YW5jZS5jdXJyZW50ID0gbnVsbDtcblx0XHRcdH1cblx0XHR9O1xuXHR9LCBbbWFza10pO1xuXG5cdC8vIElmIHdlIGNoYW5nZSB0aGUgdmFsdWUgcHJvcCB3ZSBuZWVkIHRvIHN5bmMgdGhlIERPTSB2YWx1ZSB0byBkaXNwbGF5IHRoZSBuZXcgdmFsdWVcblx0dXNlRWZmZWN0KCgpID0+IHtcblx0XHRpZiAoaW5wdXRFbGVtZW50LmN1cnJlbnQgJiYgaW5wdXRFbGVtZW50LmN1cnJlbnQ/LnZhbHVlICE9PSB2YWx1ZSAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRkKCdWYWx1ZSBpcyBjaGFuZ2luZzonLCB2YWx1ZSk7XG5cdFx0XHRpbnB1dEVsZW1lbnQuY3VycmVudC52YWx1ZSA9IHZhbHVlO1xuXHRcdFx0b25TZXQgJiYgb25TZXQodmFsdWUpO1xuXHRcdH1cblx0fSwgW3ZhbHVlXSk7XG5cblx0cmV0dXJuIGlucHV0RWxlbWVudDtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtNYXNrZWRJbnB1dCwgTWFza2VkSW5wdXRQcm9wc30gZnJvbSAnLi4vTWFza2VkSW5wdXQnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5pbnB1dHMuUGhvbmVJbnB1dCcpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBob25lSW5wdXRQcm9wcyB7XG5cdGV4dGVuc2lvbj86IGJvb2xlYW47XG5cdG9uQ2hhbmdlPzogKHZhbHVlPzogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUGhvbmVJbnB1dChwcm9wczogUGhvbmVJbnB1dFByb3BzICYgT21pdDxNYXNrZWRJbnB1dFByb3BzLCAnbWFzaycgfCAnb25DaGFuZ2UnPikge1xuXHRjb25zdCB7ZXh0ZW5zaW9uLCAuLi5yZXN0fSA9IHByb3BzO1xuXHRjb25zdCBtYXNrID0ge1xuXHRcdG1hc2s6IGV4dGVuc2lvbiA/ICcoKDk5OSkgOTk5LTk5OTlbIHg5OTk5XSl8KCs5ICg5OTkpIDk5OS05OTk5WyB4OTk5OV0pJyA6ICcoKDk5OSkgOTk5LTk5OTkpfCggKzkgKDk5OSkgOTk5LTk5OTkpJyxcblx0XHRncmVlZHk6IGZhbHNlLFxuXHRcdGF1dG9Vbm1hc2s6IHRydWUsXG5cdH07XG5cblx0cmV0dXJuIDxNYXNrZWRJbnB1dCB7Li4ucmVzdH0gbWFzaz17bWFza30gLz47XG59XG4iLCJleHBvcnQge1Bob25lSW5wdXR9IGZyb20gJy4vUGhvbmVJbnB1dCc7XG5leHBvcnQgdHlwZSB7UGhvbmVJbnB1dFByb3BzfSBmcm9tICcuL1Bob25lSW5wdXQnO1xuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCwge0NoaWxkcmVuLCBjbG9uZUVsZW1lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7Rm9ybSwgUmFkaW8sIEZvcm1SYWRpbywgRm9ybUdyb3VwUHJvcHN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuaW5wdXRzLlJhZGlvR3JvdXAnKTtcblxuZXhwb3J0IGludGVyZmFjZSBSYWRpb0dyb3VwUHJvcHMge1xuXHRjaGlsZHJlbj86IEpTWC5FbGVtZW50W10gfCBKU1guRWxlbWVudDtcblx0b25DaGFuZ2U/OiAodmFsdWU/OiBzdHJpbmcgfCBudW1iZXIpID0+IHZvaWQ7XG5cdHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUmFkaW9Hcm91cChwcm9wczogUmFkaW9Hcm91cFByb3BzICYgT21pdDxGb3JtR3JvdXBQcm9wcywgJ2NoaWxkcmVuJz4pIHtcblx0Y29uc3Qge2NoaWxkcmVuLCBvbkNoYW5nZSwgdmFsdWUsIC4uLnJlc3R9ID0gcHJvcHM7XG5cblx0cmV0dXJuIChcblx0XHQ8Rm9ybS5Hcm91cCB7Li4ucmVzdH0+XG5cdFx0XHR7Q2hpbGRyZW4ubWFwKHByb3BzLmNoaWxkcmVuLCBjaGlsZCA9PiB7XG5cdFx0XHRcdGlmIChjaGlsZD8udHlwZSA9PT0gRm9ybVJhZGlvIHx8IGNoaWxkPy50eXBlID09PSBSYWRpbyB8fCBjaGlsZD8udHlwZSA9PT0gRm9ybS5SYWRpbykge1xuXHRcdFx0XHRcdHJldHVybiBjbG9uZUVsZW1lbnQoY2hpbGQsIHtcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiAoZXY6IGFueSwgYXJnczoge3ZhbHVlPzogc3RyaW5nIHwgbnVtYmVyfSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKGFyZ3MudmFsdWUpO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IHZhbHVlID09PSBjaGlsZC5wcm9wcy52YWx1ZSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gY2hpbGQ7XG5cdFx0XHR9KX1cblx0XHQ8L0Zvcm0uR3JvdXA+XG5cdCk7XG59XG4iLCJleHBvcnQge1JhZGlvR3JvdXB9IGZyb20gJy4vUmFkaW9Hcm91cCc7XG5leHBvcnQgdHlwZSB7UmFkaW9Hcm91cFByb3BzfSBmcm9tICcuL1JhZGlvR3JvdXAnO1xuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCwge3VzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtTY3JpcHRlbENvbnRleHR9IGZyb20gJy4vU2NyaXB0ZWxDb250ZXh0JztcbmltcG9ydCB7U2NyaXB0ZWxTb2NrZXR9IGZyb20gJy4vc2NyaXB0ZWwnO1xuaW1wb3J0IHR5cGUge1NjcmlwdGVsUGVuU3R5bGV9IGZyb20gJy4vc2NyaXB0ZWwvZW51bXMnO1xuaW1wb3J0IHR5cGUge1JlbmRlcmVkSW1hZ2V9IGZyb20gJy4vc2NyaXB0ZWwvbWVzc2FnZXMnO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5pbnB1dHMuU2NyaXB0ZWwnKTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JpcHRlbFByb3BzIHtcblx0b21uaXNjcmlwdFVybD86IHN0cmluZzsgLy8gRGVmYXVsdHMgdG8gJ3dzOi8vbG9jYWxob3N0OjgwODAnXG5cdGltYWdlVHlwZT86IHN0cmluZzsgLy8gRGVmYXVsdHMgdG8gJ2ltYWdlL3N2Zyt4bWwnLlxuXHRzY2FsZT86IG51bWJlcjsgLy8gRGVmYXVsdHMgdG8gMVxuXHRjcm9wPzogYm9vbGVhbjsgLy8gRGVmYXVsdHMgdG8gZmFsc2Vcblx0cGVuU3R5bGU/OiBTY3JpcHRlbFBlblN0eWxlOyAvLyBEZWZhdWx0cyB0byAnUGxhaW5QZW5TdHlsZSdcblx0Y2hpbGRyZW46IEpTWC5FbGVtZW50IHwgSlNYLkVsZW1lbnRbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNjcmlwdGVsKHtvbW5pc2NyaXB0VXJsLCBpbWFnZVR5cGUsIHNjYWxlLCBjcm9wLCBwZW5TdHlsZSwgY2hpbGRyZW59OiBTY3JpcHRlbFByb3BzKSB7XG5cdGNvbnN0IHNvY2tldCA9IHVzZVJlZjxTY3JpcHRlbFNvY2tldD4oKTtcblx0Y29uc3QgW3JlbmRlciwgc2V0UmVuZGVyXSA9IHVzZVN0YXRlPFJlbmRlcmVkSW1hZ2U+KCk7XG5cdGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcblx0Y29uc3QgW2lzU2lnbmluZywgc2V0SXNTaWduaW5nXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcblxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdHNvY2tldC5jdXJyZW50ID0gbmV3IFNjcmlwdGVsU29ja2V0KHtcblx0XHRcdG9tbmlzY3JpcHRVcmwsXG5cdFx0XHRpbWFnZVR5cGUsXG5cdFx0XHRzY2FsZSxcblx0XHRcdGNyb3AsXG5cdFx0XHRwZW5TdHlsZSxcblx0XHR9KTtcblxuXHRcdHNvY2tldC5jdXJyZW50Lm9uKCdyZW5kZXInLCBtc2cgPT4ge1xuXHRcdFx0c2V0UmVuZGVyKG1zZyk7XG5cdFx0XHRzZXRMb2FkaW5nKGZhbHNlKTtcblx0XHRcdHNldFJlbmRlcih1bmRlZmluZWQpOyAvLyB0b2RvIGxvb2sgYXQgdGhpcyBpbiBmdXR1cmVcblx0XHR9KTtcblx0XHRzb2NrZXQuY3VycmVudC5vbignb2tCdXR0b25Eb3duJywgKCkgPT4ge1xuXHRcdFx0c2V0TG9hZGluZyh0cnVlKTtcblx0XHR9KTtcblx0XHRzb2NrZXQuY3VycmVudC5vbignY2FuY2VsJywgKCkgPT4ge1xuXHRcdFx0c2V0TG9hZGluZyhmYWxzZSk7XG5cdFx0XHRzZXRSZW5kZXIodW5kZWZpbmVkKTtcblx0XHR9KTtcblx0XHRzb2NrZXQuY3VycmVudC5vbigncGVuTW92ZScsICgpID0+IHtcblx0XHRcdHNldElzU2lnbmluZyh0cnVlKTtcblx0XHR9KTtcblx0XHRzb2NrZXQuY3VycmVudC5vbigncGVuVXAnLCAoKSA9PiB7XG5cdFx0XHRzZXRJc1NpZ25pbmcoZmFsc2UpO1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdGlmIChzb2NrZXQuY3VycmVudCkgc29ja2V0LmN1cnJlbnQuY2xvc2UoKTtcblx0XHR9O1xuXHR9LCBbb21uaXNjcmlwdFVybCwgaW1hZ2VUeXBlLCBzY2FsZSwgY3JvcCwgcGVuU3R5bGVdKTtcblxuXHRyZXR1cm4gPFNjcmlwdGVsQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17e3NvY2tldCwgcmVuZGVySW1hZ2U6IHJlbmRlciwgbG9hZGluZywgaXNTaWduaW5nfX0+e2NoaWxkcmVufTwvU2NyaXB0ZWxDb250ZXh0LlByb3ZpZGVyPjtcbn1cbiIsImltcG9ydCBSZWFjdCwge011dGFibGVSZWZPYmplY3R9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtTY3JpcHRlbFNvY2tldH0gZnJvbSAnLi9zY3JpcHRlbCc7XG5pbXBvcnQgdHlwZSB7UmVuZGVyZWRJbWFnZX0gZnJvbSAnLi9zY3JpcHRlbC9tZXNzYWdlcyc7XG5cbmV4cG9ydCBjb25zdCBTY3JpcHRlbENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PFxuXHR7c29ja2V0OiBNdXRhYmxlUmVmT2JqZWN0PFNjcmlwdGVsU29ja2V0IHwgdW5kZWZpbmVkPjsgcmVuZGVySW1hZ2U6IFJlbmRlcmVkSW1hZ2UgfCB1bmRlZmluZWQ7IGxvYWRpbmc6IGJvb2xlYW47IGlzU2lnbmluZzogYm9vbGVhbn0gfCB1bmRlZmluZWRcbj4odW5kZWZpbmVkKTtcbiIsImV4cG9ydCB7U2NyaXB0ZWx9IGZyb20gJy4vU2NyaXB0ZWwnO1xuZXhwb3J0IHR5cGUge1NjcmlwdGVsUHJvcHN9IGZyb20gJy4vU2NyaXB0ZWwnO1xuZXhwb3J0IHt3aXRoU2NyaXB0ZWx9IGZyb20gJy4vd2l0aFNjcmlwdGVsJztcbmV4cG9ydCB7U2NyaXB0ZWxQZW5TdHlsZSwgU2NyaXB0ZWxNZXNzYWdlQ2xhc3N9IGZyb20gJy4vc2NyaXB0ZWwvZW51bXMnO1xuIiwiZXhwb3J0IGVudW0gU2NyaXB0ZWxQZW5TdHlsZSB7XG5cdFBsYWluID0gJ1BsYWluUGVuU3R5bGUnLFxuXHRDaGlzZWwgPSAnQ2hpc2VsUGVuU3R5bGUnLFxuXHRJbmt3ZWxsID0gJ0lua3dlbGxQZW5TdHlsZScsXG59XG5cbmV4cG9ydCBlbnVtIFNjcmlwdGVsTWVzc2FnZUNsYXNzIHtcblx0Q29ubmVjdGlvbk9wZW4gPSAnQ29ubmVjdGlvbk9wZW4nLFxuXHREZXZpY2VPcGVuUmVxdWVzdCA9ICdEZXZpY2VPcGVuUmVxdWVzdCcsXG5cdERldmljZU9wZW5SZXNwb25zZSA9ICdEZXZpY2VPcGVuUmVzcG9uc2UnLFxuXHRSZW5kZXJlZEltYWdlID0gJ1JlbmRlcmVkSW1hZ2UnLFxuXHRTY3JpcHRlbEV4Y2VwdGlvbiA9ICdTY3JpcHRlbEV4Y2VwdGlvbicsXG5cdEJ1dHRvbkRvd24gPSAnQnV0dG9uRG93bicsXG5cdEJ1dHRvblByZXNzID0gJ0J1dHRvblByZXNzJyxcblx0UGVuTW92ZSA9ICdQZW5Nb3ZlJyxcblx0UGVuVXAgPSAnUGVuVXAnLFxufVxuIiwiLyogZ2xvYmFscyBXZWJTb2NrZXQ6IHRydWUgKi9cbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgRXZlbnRFbWl0dGVyIGZyb20gJ2V2ZW50ZW1pdHRlcjMnO1xuaW1wb3J0IHtTY3JpcHRlbE1lc3NhZ2VDbGFzcywgU2NyaXB0ZWxQZW5TdHlsZX0gZnJvbSAnLi9lbnVtcyc7XG5pbXBvcnQgdHlwZSB7Q29ubmVjdGlvbk9wZW4sIERldmljZU9wZW5SZXNwb25zZSwgTWVzc2FnZSwgUmVuZGVyZWRJbWFnZX0gZnJvbSAnLi9tZXNzYWdlcyc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmlucHV0cy5TY3JpcHRlbC5zY3JpcHRlbCcpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmlwdGVsU29ja2V0QXJncyB7XG5cdG9tbmlzY3JpcHRVcmw/OiBzdHJpbmc7IC8vIERlZmF1bHRzIHRvICd3czovL2xvY2FsaG9zdDo4MDgwJ1xuXHRpbWFnZVR5cGU/OiBzdHJpbmc7IC8vIERlZmF1bHRzIHRvICdpbWFnZS9zdmcreG1sJy5cblx0c2NhbGU/OiBudW1iZXI7IC8vIERlZmF1bHRzIHRvIDFcblx0Y3JvcD86IGJvb2xlYW47IC8vIERlZmF1bHRzIHRvIGZhbHNlXG5cdHBlblN0eWxlPzogU2NyaXB0ZWxQZW5TdHlsZTsgLy8gRGVmYXVsdHMgdG8gJ1BsYWluUGVuU3R5bGUnXG5cdHJlbmRlcj86ICgpID0+IHZvaWQ7XG59XG5cbmZ1bmN0aW9uIHNlcnZlckNvbm5lY3RlZChtc2c6IENvbm5lY3Rpb25PcGVuLCBzb2NrZXQ6IFdlYlNvY2tldCkge1xuXHRkKCdTZXJ2ZXIgY29ubmVjdGVkJyk7XG5cdGlmIChtc2cuc2VydmVySW5mby5kZXZpY2VzLmxlbmd0aCA+IDApIHtcblx0XHQvLyBHcmFiIHRoZSBmaXJzdCBhdmFpbGFibGUgZGV2aWNlXG5cdFx0Y29uc3QgZGV2aWNlID0gbXNnLnNlcnZlckluZm8uZGV2aWNlc1swXTtcblx0XHRzb2NrZXQuc2VuZChcblx0XHRcdEpTT04uc3RyaW5naWZ5KHtcblx0XHRcdFx0X2NsYXNzOiAnRGV2aWNlT3BlblJlcXVlc3QnLFxuXHRcdFx0XHR1dWlkOiBkZXZpY2UudXVpZCxcblx0XHRcdH0pLFxuXHRcdCk7XG5cdH1cbn1cblxuZnVuY3Rpb24gZGV2aWNlQ29ubmVjdGVkKG1zZzogRGV2aWNlT3BlblJlc3BvbnNlLCBzb2NrZXQ6IFdlYlNvY2tldCwgYXJnczogU2NyaXB0ZWxTb2NrZXRBcmdzKSB7XG5cdGQoYERldmljZSBjb25uZWN0ZWQ6ICR7bXNnLmRldmljZS51dWlkfWApO1xuXHRjb25zdCB7aW1hZ2VUeXBlLCBzY2FsZSwgY3JvcCwgcGVuU3R5bGV9ID0gYXJncztcblx0c29ja2V0LnNlbmQoXG5cdFx0SlNPTi5zdHJpbmdpZnkoe1xuXHRcdFx0X2NsYXNzOiAnUmVuZGVyU2V0dGluZ3NVcGRhdGVSZXF1ZXN0Jyxcblx0XHRcdHJlbmRlclNldHRpbmdzOiB7XG5cdFx0XHRcdF9jbGFzczogJ1JlbmRlclNldHRpbmdzJyxcblx0XHRcdFx0dHlwZTogaW1hZ2VUeXBlIHx8ICdpbWFnZS9zdmcreG1sJyxcblx0XHRcdFx0c2NhbGU6IHNjYWxlIHx8IDEsXG5cdFx0XHRcdGNyb3A6IGNyb3AgfHwgZmFsc2UsXG5cdFx0XHRcdHBlblN0eWxlOiBwZW5TdHlsZVxuXHRcdFx0XHRcdD8ge1xuXHRcdFx0XHRcdFx0XHRyZW5kZXJGdW5jdGlvbjogcGVuU3R5bGUsXG5cdFx0XHRcdFx0ICB9XG5cdFx0XHRcdFx0OiB7XG5cdFx0XHRcdFx0XHRcdHJlbmRlckZ1bmN0aW9uOiBTY3JpcHRlbFBlblN0eWxlLlBsYWluLFxuXHRcdFx0XHRcdCAgfSxcblx0XHRcdH0sXG5cdFx0fSksXG5cdCk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlcihtc2c6IFJlbmRlcmVkSW1hZ2UsIGFyZ3M6IFNjcmlwdGVsU29ja2V0QXJncywgZXZlbnRFbWl0dGVyOiBFdmVudEVtaXR0ZXIpIHtcblx0ZChgUmVuZGVyZWQgaW1hZ2U6ICR7bXNnLnR5cGV9ICR7bXNnLndpZHRofXgke21zZy5oZWlnaHR9YCk7XG5cdGV2ZW50RW1pdHRlci5lbWl0KCdyZW5kZXInLCBtc2cpO1xufVxuXG5leHBvcnQgY2xhc3MgU2NyaXB0ZWxTb2NrZXQgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuXHRwcml2YXRlIHNvY2tldDogV2ViU29ja2V0O1xuXHRwcml2YXRlIG9wdGlvbnM6IFNjcmlwdGVsU29ja2V0QXJncztcblxuXHRjb25zdHJ1Y3RvcihhcmdzOiBTY3JpcHRlbFNvY2tldEFyZ3MpIHtcblx0XHRzdXBlcigpO1xuXG5cdFx0dGhpcy5vcHRpb25zID0gYXJncztcblxuXHRcdHRoaXMuc29ja2V0ID0gbmV3IFdlYlNvY2tldChhcmdzLm9tbmlzY3JpcHRVcmwgfHwgJ3dzOi8vbG9jYWxob3N0OjgwODAnKTtcblxuXHRcdHRoaXMuc29ja2V0Lm9ub3BlbiA9ICgpID0+IHtcblx0XHRcdGQoJ1NvY2tldCBvcGVuJyk7XG5cdFx0fTtcblxuXHRcdHRoaXMuc29ja2V0Lm9uY2xvc2UgPSAoKSA9PiB7XG5cdFx0XHRkKCdTb2NrZXQgY2xvc2VkJyk7XG5cdFx0fTtcblxuXHRcdHRoaXMuc29ja2V0Lm9ubWVzc2FnZSA9IGV2ID0+IHtcblx0XHRcdGNvbnN0IG1zZyA9IEpTT04ucGFyc2UoZXYuZGF0YSkgYXMgTWVzc2FnZTtcblx0XHRcdGlmICghbXNnLl9jbGFzcykgcmV0dXJuOyAvLyBBIG1lc3NhZ2Ugd2l0aCBubyBjbGFzcy5cblxuXHRcdFx0c3dpdGNoIChtc2cuX2NsYXNzKSB7XG5cdFx0XHRcdGNhc2UgU2NyaXB0ZWxNZXNzYWdlQ2xhc3MuQ29ubmVjdGlvbk9wZW46XG5cdFx0XHRcdFx0c2VydmVyQ29ubmVjdGVkKG1zZywgdGhpcy5zb2NrZXQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFNjcmlwdGVsTWVzc2FnZUNsYXNzLkRldmljZU9wZW5SZXNwb25zZTpcblx0XHRcdFx0XHRkZXZpY2VDb25uZWN0ZWQobXNnLCB0aGlzLnNvY2tldCwgdGhpcy5vcHRpb25zKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBTY3JpcHRlbE1lc3NhZ2VDbGFzcy5SZW5kZXJlZEltYWdlOlxuXHRcdFx0XHRcdHJlbmRlcihtc2csIHRoaXMub3B0aW9ucywgdGhpcyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgU2NyaXB0ZWxNZXNzYWdlQ2xhc3MuU2NyaXB0ZWxFeGNlcHRpb246XG5cdFx0XHRcdFx0ZChgU2NyaXB0ZWwgRXhjZXB0aW9uIEVycm9yOiAke21zZy5tZXNzYWdlfWApO1xuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgU2NyaXB0ZWxNZXNzYWdlQ2xhc3MuQnV0dG9uUHJlc3M6XG5cdFx0XHRcdFx0aWYgKG1zZy5sYWJlbCA9PT0gJ0NhbmNlbCcpIHRoaXMuZW1pdCgnY2FuY2VsJyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgU2NyaXB0ZWxNZXNzYWdlQ2xhc3MuQnV0dG9uRG93bjpcblx0XHRcdFx0XHRpZiAobXNnLmxhYmVsID09PSAnT0snKSB0aGlzLmVtaXQoJ29rQnV0dG9uRG93bicpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIFNjcmlwdGVsTWVzc2FnZUNsYXNzLlBlbk1vdmU6XG5cdFx0XHRcdFx0dGhpcy5lbWl0KCdwZW5Nb3ZlJyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgU2NyaXB0ZWxNZXNzYWdlQ2xhc3MuUGVuVXA6XG5cdFx0XHRcdFx0dGhpcy5lbWl0KCdwZW5VcCcpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0fVxuXHRcdH07XG5cdH1cblxuXHRjYWxpYnJhdGUoKSB7XG5cdFx0ZCgnY2FsaWJyYXRlJyk7XG5cdFx0dGhpcy5zb2NrZXQuc2VuZChKU09OLnN0cmluZ2lmeSh7X2NsYXNzOiAnRm9yY2VSZWNhbGlicmF0ZSd9KSk7XG5cdH1cblxuXHRjbG9zZSgpIHtcblx0XHR0aGlzLnNvY2tldC5jbG9zZSgpO1xuXHR9XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtTY3JpcHRlbCwgU2NyaXB0ZWxQcm9wc30gZnJvbSAnLi9TY3JpcHRlbCc7XG5cbi8qKlxuICogQSBIb0MgdGhhdCBwcm92aWRlcyBhIGNvbm5lY3Rpb24gdG8gYSBTY3JpcHRlbCBPbW5pc2NyaXB0IGRldmljZS5cbiAqIFlvdSBjYW4gb25seSBoYXZlIGEgc2luZ2xlIGNvbm5lY3Rpb24gb3BlbiBhdCBhIHRpbWUuXG4gKiBAcGFyYW0gV3JhcHBlZENvbXBvbmVudFxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aFNjcmlwdGVsKFdyYXBwZWRDb21wb25lbnQ6IGFueSwgc2NyaXB0ZWxQcm9wczogU2NyaXB0ZWxQcm9wcykge1xuXHRyZXR1cm4gKHByb3BzOiBhbnkpID0+IChcblx0XHQ8U2NyaXB0ZWwgey4uLnNjcmlwdGVsUHJvcHN9PlxuXHRcdFx0PFdyYXBwZWRDb21wb25lbnQgey4uLnByb3BzfSAvPlxuXHRcdDwvU2NyaXB0ZWw+XG5cdCk7XG59XG4iLCJpbXBvcnQgdHlwZSB7U2NyaXB0ZWxTY2hlbWFUeXBlfSBmcm9tICdAdGh4L3l1cC10eXBlcyc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0LCB7dXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtCdXR0b24sIEltYWdlfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQge1NjcmlwdGVsQ29udGV4dH0gZnJvbSAnLi4vU2NyaXB0ZWwvU2NyaXB0ZWxDb250ZXh0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuaW5wdXRzLlNjcmlwdGVsSW5wdXQnKTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JpcHRlbElucHV0UHJvcHMge1xuXHR2YWx1ZT86IFNjcmlwdGVsU2NoZW1hVHlwZTtcblx0b25DaGFuZ2U/OiAodmFsdWU/OiBTY3JpcHRlbFNjaGVtYVR5cGUpID0+IHZvaWQ7XG5cdGJ1dHRvblRleHQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTY3JpcHRlbElucHV0KHByb3BzOiBTY3JpcHRlbElucHV0UHJvcHMpIHtcblx0Y29uc3Qge3ZhbHVlLCBvbkNoYW5nZSwgYnV0dG9uVGV4dCA9ICdFbnRlciBTaWduYXR1cmUnfSA9IHByb3BzO1xuXHRjb25zdCBjdHggPSB1c2VDb250ZXh0KFNjcmlwdGVsQ29udGV4dCk7XG5cblx0Y29uc3QgW2VudGVyU2lnbmF0dXJlLCBzZXRFbnRlclNpZ25hdHVyZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cblx0dXNlRWZmZWN0KCgpID0+IHtcblx0XHRpZiAoZW50ZXJTaWduYXR1cmUpIHtcblx0XHRcdGlmIChvbkNoYW5nZSAmJiBjdHg/LnJlbmRlckltYWdlKSB7XG5cdFx0XHRcdHNldEVudGVyU2lnbmF0dXJlKGZhbHNlKTtcblx0XHRcdFx0aWYgKGN0eC5yZW5kZXJJbWFnZS50eXBlID09PSAnaW1hZ2Uvc3ZnK3htbCcgfHwgY3R4LnJlbmRlckltYWdlLnR5cGUgPT09ICdpbWFnZS9wbmcnKSB7XG5cdFx0XHRcdFx0b25DaGFuZ2Uoe1xuXHRcdFx0XHRcdFx0dHlwZTogY3R4LnJlbmRlckltYWdlLnR5cGUsXG5cdFx0XHRcdFx0XHR3aWR0aDogY3R4LnJlbmRlckltYWdlLndpZHRoLFxuXHRcdFx0XHRcdFx0aGVpZ2h0OiBjdHgucmVuZGVySW1hZ2UuaGVpZ2h0LFxuXHRcdFx0XHRcdFx0dGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuXHRcdFx0XHRcdFx0ZGF0YTogY3R4LnJlbmRlckltYWdlLmRhdGEsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChvbkNoYW5nZSAmJiAhY3R4KSB7XG5cdFx0XHRcdG9uQ2hhbmdlKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LCBbY3R4XSk7XG5cblx0aWYgKGVudGVyU2lnbmF0dXJlKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxkaXY+XG5cdFx0XHRcdDxkaXY+e2N0eD8uaXNTaWduaW5nID8gJ3NpZ25pbmcuLi4nIDogJ0VudGVyIGEgc2lnbmF0dXJlIGFuZCBjbGljayBPSy4nfTwvZGl2PlxuXHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0b25DbGljaz17KCkgPT4ge1xuXHRcdFx0XHRcdFx0c2V0RW50ZXJTaWduYXR1cmUoZmFsc2UpO1xuXHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Y29sb3I9XCJibGFja1wiXG5cdFx0XHRcdFx0bG9hZGluZz17Y3R4Py5sb2FkaW5nfVxuXHRcdFx0XHRcdGRpc2FibGVkPXtjdHg/LmxvYWRpbmd9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHRDYW5jZWxcblx0XHRcdFx0PC9CdXR0b24+XG5cdFx0XHRcdDxCdXR0b24gc2l6ZT1cIm1pbmlcIiBhcz1cImFcIiBiYXNpYyBvbkNsaWNrPXsoKSA9PiBjdHg/LnNvY2tldC5jdXJyZW50Py5jYWxpYnJhdGUoKX0gZGlzYWJsZWQ9e2N0eD8ubG9hZGluZ30+XG5cdFx0XHRcdFx0Q2FsaWJyYXRlXG5cdFx0XHRcdDwvQnV0dG9uPlxuXHRcdFx0PC9kaXY+XG5cdFx0KTtcblx0fVxuXG5cdGlmICh2YWx1ZSAmJiB2YWx1ZS5kYXRhKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxkaXY+XG5cdFx0XHRcdDxJbWFnZSBzaXplPVwibWVkaXVtXCIgc3JjPXt2YWx1ZS5kYXRhfSBib3JkZXJlZCAvPlxuXHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0c2l6ZT1cIm1pbmlcIlxuXHRcdFx0XHRcdGNvbXBhY3Rcblx0XHRcdFx0XHRvbkNsaWNrPXsoKSA9PiB7XG5cdFx0XHRcdFx0XHRzZXRFbnRlclNpZ25hdHVyZShmYWxzZSk7XG5cdFx0XHRcdFx0XHRpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKCk7XG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdFJlc2V0XG5cdFx0XHRcdDwvQnV0dG9uPlxuXHRcdFx0PC9kaXY+XG5cdFx0KTtcblx0fVxuXG5cdHJldHVybiA8QnV0dG9uIG9uQ2xpY2s9eygpID0+IHNldEVudGVyU2lnbmF0dXJlKHRydWUpfT57YnV0dG9uVGV4dH08L0J1dHRvbj47XG59XG4iLCJleHBvcnQge1NjcmlwdGVsSW5wdXR9IGZyb20gJy4vU2NyaXB0ZWxJbnB1dCc7XG5leHBvcnQgdHlwZSB7U2NyaXB0ZWxJbnB1dFByb3BzfSBmcm9tICcuL1NjcmlwdGVsSW5wdXQnO1xuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtJY29uLCBJbnB1dCwgU2VtYW50aWNDT0xPUlN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCBTSU4gZnJvbSAnc29jaWFsLWluc3VyYW5jZS1udW1iZXInO1xuaW1wb3J0IHR5cGUge01hc2tlZElucHV0UHJvcHN9IGZyb20gJy4uL01hc2tlZElucHV0JztcbmltcG9ydCB7dXNlTWFza2VkSW5wdXR9IGZyb20gJy4uL01hc2tlZElucHV0L3VzZU1hc2tlZElucHV0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuaW5wdXRzLlNpbklucHV0Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2luSW5wdXRQcm9wcyBleHRlbmRzIE9taXQ8TWFza2VkSW5wdXRQcm9wcywgJ21hc2snPiB7XG5cdHZhbHVlPzogc3RyaW5nO1xuXHRvbkNoYW5nZSh2YWx1ZT86IHN0cmluZyk6IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTaW5JbnB1dChwcm9wczogU2luSW5wdXRQcm9wcykge1xuXHRjb25zdCB7dmFsdWUsIG9uQ2hhbmdlLCAuLi5yZXN0fSA9IHByb3BzO1xuXHRjb25zdCBbY29sb3IsIHNldENvbG9yXSA9IHVzZVN0YXRlPFNlbWFudGljQ09MT1JTPignYmxhY2snKTtcblxuXHRjb25zdCBjaGVja1ZhbGlkYXRpb24gPSB1c2VDYWxsYmFjaygodmFsdWVBcnJheTogc3RyaW5nW10pID0+IHtcblx0XHRjb25zdCBudW0gPSB2YWx1ZUFycmF5LmpvaW4oJycpLnJlcGxhY2VBbGwoLyhffFxcc3wtKS9nLCAnJyk7XG5cdFx0Y29uc3QgdmFsaWRhdGUgPSBuZXcgU0lOKG51bSk7XG5cdFx0aWYgKG51bS5sZW5ndGggPiAwKSB7XG5cdFx0XHRpZiAodmFsaWRhdGUuaXNWYWxpZCgpKSB7XG5cdFx0XHRcdHNldENvbG9yKCdncmVlbicpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c2V0Q29sb3IoJ3JlZCcpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzZXRDb2xvcignYmxhY2snKTtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbGlkYXRlLmlzVmFsaWQoKTtcblx0fSwgW10pO1xuXG5cdGNvbnN0IG1hc2s6IE1hc2tlZElucHV0UHJvcHNbJ21hc2snXSA9IHVzZU1lbW8oXG5cdFx0KCkgPT4gKHtcblx0XHRcdG1hc2s6ICc5OTktOTk5LTk5OScsXG5cdFx0XHRpc0NvbXBsZXRlOiBjaGVja1ZhbGlkYXRpb24sXG5cdFx0XHRncmVlZHk6IGZhbHNlLFxuXHRcdFx0YXV0b1VubWFzazogdHJ1ZSxcblx0XHR9KSxcblx0XHRbY2hlY2tWYWxpZGF0aW9uXSxcblx0KTtcblxuXHRjb25zdCBjYXJkTnVtYmVyUmVmID0gdXNlTWFza2VkSW5wdXQoe1xuXHRcdG1hc2ssXG5cdFx0dmFsdWUsXG5cdFx0b25DaGFuZ2U6IHYgPT4ge1xuXHRcdFx0b25DaGFuZ2UgJiYgb25DaGFuZ2Uodik7XG5cdFx0fSxcblx0XHRvblNldDogdiA9PiB7XG5cdFx0XHRjaGVja1ZhbGlkYXRpb24oW3YgfHwgJyddKTtcblx0XHR9LFxuXHR9KTtcblxuXHRyZXR1cm4gKFxuXHRcdDxJbnB1dCB7Li4ucmVzdH0gaWNvbj5cblx0XHRcdDxpbnB1dCByZWY9e2NhcmROdW1iZXJSZWZ9IC8+XG5cdFx0XHQ8SWNvbiBuYW1lPVwiaWQgYmFkZ2VcIiBjb2xvcj17Y29sb3J9IHNpemU9XCJsYXJnZVwiIC8+XG5cdFx0PC9JbnB1dD5cblx0KTtcbn1cbiIsImV4cG9ydCB7U2luSW5wdXR9IGZyb20gJy4vU2luSW5wdXQnO1xuZXhwb3J0IHR5cGUge1NpbklucHV0UHJvcHN9IGZyb20gJy4vU2luSW5wdXQnO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7RHJvcGRvd259IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtEcm9wZG93blByb3BzfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7VGFibGVDZWxsUHJvcHN9IGZyb20gJy4vVGFibGVJbnB1dCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBEcm9wZG93bkNlbGw8RCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+Pihkcm9wZG93blByb3BzOiBEcm9wZG93blByb3BzKSB7XG5cdHJldHVybiBmdW5jdGlvbiBEcm9wZG93bkNlbGxGbihwcm9wczogVGFibGVDZWxsUHJvcHM8RD4pIHtcblx0XHRjb25zdCB7XG5cdFx0XHR2YWx1ZSxcblx0XHRcdHJvdzoge2luZGV4OiByb3dJbmRleH0sXG5cdFx0XHRjb2x1bW46IHtpZH0sXG5cdFx0XHR1cGRhdGVEYXRhLFxuXHRcdH0gPSBwcm9wcztcblxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0XHRjb25zdCB7dmFsdWU6IHYsIG9uQ2hhbmdlLCAuLi5yZXN0fSA9IGRyb3Bkb3duUHJvcHM7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PERyb3Bkb3duXG5cdFx0XHRcdHsuLi5yZXN0fVxuXHRcdFx0XHR2YWx1ZT17dmFsdWV9XG5cdFx0XHRcdG9uQ2hhbmdlPXsoZXZlbnQsIHZhbCkgPT4ge1xuXHRcdFx0XHRcdHVwZGF0ZURhdGEocm93SW5kZXgsIGlkLCB2YWwudmFsdWUpO1xuXHRcdFx0XHRcdGlmIChvbkNoYW5nZSkgb25DaGFuZ2UoZXZlbnQsIHZhbCk7XG5cdFx0XHRcdH19XG5cdFx0XHQvPlxuXHRcdCk7XG5cdH07XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHtDZWxsUHJvcHMsIFJlbmRlcmVyfSBmcm9tICdyZWFjdC10YWJsZSc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmlucHV0cy5UYWJsZUlucHV0LkhvdmVyQ2VsbCcpO1xuXG5pbnRlcmZhY2UgSG92ZXJDZWxsT3B0aW9uczxEIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcblx0QWN0aW9uOiBSZW5kZXJlcjxDZWxsUHJvcHM8RD4+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSG92ZXJDZWxsPEQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ob3B0aW9uczogSG92ZXJDZWxsT3B0aW9uczxEPikge1xuXHRyZXR1cm4gZnVuY3Rpb24gSG92ZXJDZWxsRm4ocHJvcHM6IENlbGxQcm9wczxEPikge1xuXHRcdGNvbnN0IHtBY3Rpb259ID0gb3B0aW9ucztcblxuXHRcdC8vIEB0cy1leHBlY3QtZXJyb3Jcblx0XHRpZiAocHJvcHMuaG92ZXJSb3cgPT09IHByb3BzLnJvdy5pZCkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PGRpdiBzdHlsZT17e3RleHRBbGlnbjogJ3JpZ2h0J319PlxuXHRcdFx0XHRcdHsvKiBAdHMtZXhwZWN0LWVycm9yICovfVxuXHRcdFx0XHRcdDxBY3Rpb24gey4uLnByb3BzfSAvPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiBudWxsO1xuXHR9O1xufVxuIiwiaW1wb3J0IHtmb3JtYXRNb25leX0gZnJvbSAnQHRoeC9tb25leSc7XG5pbXBvcnQgdHlwZSBNb25leSBmcm9tICdqcy1tb25leSc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge0NlbGxQcm9wc30gZnJvbSAncmVhY3QtdGFibGUnO1xuXG5pbnRlcmZhY2UgTW9uZXlDZWxsT3B0aW9uczxEIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcblx0LyoqIElmIHByb3ZpZGVkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgb3ZlcnJpZGUgdGhlIE1vbmV5IHZhbHVlIGRpc3BsYXllZCAqL1xuXHRvdmVycmlkZVZhbHVlPzogKHByb3BzOiBDZWxsUHJvcHM8RCwgTW9uZXk+KSA9PiBNb25leTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1vbmV5Q2VsbDxEIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KG9wdGlvbnM/OiBNb25leUNlbGxPcHRpb25zPEQ+KSB7XG5cdHJldHVybiBmdW5jdGlvbiBNb25leUNlbGxGbihwcm9wczogQ2VsbFByb3BzPEQsIE1vbmV5Pikge1xuXHRcdHJldHVybiA8ZGl2IHN0eWxlPXt7dGV4dEFsaWduOiAncmlnaHQnfX0+e2Zvcm1hdE1vbmV5KG9wdGlvbnM/Lm92ZXJyaWRlVmFsdWUgPyBvcHRpb25zLm92ZXJyaWRlVmFsdWUocHJvcHMpIDogcHJvcHMudmFsdWUpfTwvZGl2Pjtcblx0fTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgdHlwZSBNb25leSBmcm9tICdqcy1tb25leSc7XG5pbXBvcnQgUmVhY3QsIHt1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtNb25leUlucHV0fSBmcm9tICcuLi8uLi9tb25leS9Nb25leUlucHV0JztcbmltcG9ydCB0eXBlIHtUYWJsZUNlbGxQcm9wc30gZnJvbSAnLi9UYWJsZUlucHV0JztcbmltcG9ydCB0eXBlIHtBZGRSb3dPblRhYklmfSBmcm9tICcuL2FkZFJvd09uVGFiJztcbmltcG9ydCB7YWRkUm93T25UYWJ9IGZyb20gJy4vYWRkUm93T25UYWInO1xuXG5jb25zdCBkID0gZGVidWcoJ3RoeC5jb250cm9scy5pbnB1dHMuVGFibGVJbnB1dC5Nb25leUVkaXRDZWxsJyk7XG5cbmludGVyZmFjZSBNb25leUVkaXRDZWxsT3B0aW9uczxEIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcblx0LyoqIElmIGZ1bmN0aW9uIGlzIHByZXNlbnQsIGFuZCByZXR1cm5zIHRydWUsIHdpbGwgYWRkIGEgbmV3IHJvdyBpZiB0YWIgaXMgcHJlc3NlZCBvbiB0aGUgbGFzdCByb3cgKi9cblx0YWRkUm93T25UYWJJZj86IEFkZFJvd09uVGFiSWY8RCwgTW9uZXk+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTW9uZXlFZGl0Q2VsbDxEIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KG9wdHM/OiBNb25leUVkaXRDZWxsT3B0aW9uczxEPikge1xuXHRyZXR1cm4gZnVuY3Rpb24gTW9uZXlFZGl0Q2VsbEZuKHByb3BzOiBUYWJsZUNlbGxQcm9wczxELCBNb25leT4pIHtcblx0XHRjb25zdCB7XG5cdFx0XHR2YWx1ZTogaW5pdGlhbFZhbHVlLFxuXHRcdFx0cm93OiB7aW5kZXg6IHJvd0luZGV4fSxcblx0XHRcdGNvbHVtbjoge2lkfSxcblx0XHRcdHVwZGF0ZURhdGEsXG5cdFx0fSA9IHByb3BzO1xuXG5cdFx0Y29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZShpbml0aWFsVmFsdWUpO1xuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxNb25leUlucHV0XG5cdFx0XHRcdGZsdWlkXG5cdFx0XHRcdHRyYW5zcGFyZW50XG5cdFx0XHRcdHZhbHVlPXt2YWx1ZX1cblx0XHRcdFx0b25DaGFuZ2U9e3NldFZhbHVlfVxuXHRcdFx0XHRvbkJsdXI9eygpID0+IHtcblx0XHRcdFx0XHR1cGRhdGVEYXRhKHJvd0luZGV4LCBpZCwgdmFsdWUpO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHRvbktleURvd249eyhldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gYWRkUm93T25UYWIoZXZlbnQsIHZhbHVlLCBwcm9wcywgb3B0cz8uYWRkUm93T25UYWJJZil9XG5cdFx0XHQvPlxuXHRcdCk7XG5cdH07XG59XG4iLCJpbXBvcnQge2Zvcm1hdE1vbmV5LCB0b01vbmV5fSBmcm9tICdAdGh4L21vbmV5JztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7SWRUeXBlLCBUYWJsZUluc3RhbmNlfSBmcm9tICdyZWFjdC10YWJsZSc7XG5cbmludGVyZmFjZSBNb25leVN1bUZvb3Rlck9wdGlvbnM8QSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG5cdGlkOiBJZFR5cGU8QT47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNb25leVN1bUZvb3RlcjxBIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KG9wdGlvbnM6IE1vbmV5U3VtRm9vdGVyT3B0aW9uczxBPikge1xuXHRjb25zdCB7aWR9ID0gb3B0aW9ucyB8fCB7fTtcblxuXHRyZXR1cm4gKGluZm86IFRhYmxlSW5zdGFuY2U8QT4pID0+IHtcblx0XHRjb25zdCBzdW0gPSBpbmZvLnJvd3MucmVkdWNlKChtZW1vLCByb3cpID0+IG1lbW8uYWRkKHJvdy52YWx1ZXNbaWRdKSwgdG9Nb25leSgpKTtcblx0XHRyZXR1cm4gPGRpdiBzdHlsZT17e3RleHRBbGlnbjogJ3JpZ2h0J319Pntmb3JtYXRNb25leShzdW0pfTwvZGl2Pjtcblx0fTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QsIHt1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtJbnB1dCwgSW5wdXRQcm9wc30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge1RhYmxlQ2VsbFByb3BzfSBmcm9tICcuL1RhYmxlSW5wdXQnO1xuaW1wb3J0IHR5cGUge0FkZFJvd09uVGFiSWZ9IGZyb20gJy4vYWRkUm93T25UYWInO1xuaW1wb3J0IHthZGRSb3dPblRhYn0gZnJvbSAnLi9hZGRSb3dPblRhYic7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmlucHV0cy5UYWJsZUlucHV0LlN0cmluZ0VkaXRDZWxsJyk7XG5cbmludGVyZmFjZSBTdHJpbmdFZGl0Q2VsbE9wdGlvbnM8RCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG5cdC8qKiBPdmVycmlkZSBTZW1hbnRpY1VJIElucHV0IHByb3BzICovXG5cdGlucHV0UHJvcHM/OiBJbnB1dFByb3BzO1xuXHQvKiogSWYgZnVuY3Rpb24gaXMgcHJlc2VudCwgYW5kIHJldHVybnMgdHJ1ZSwgd2lsbCBhZGQgYSBuZXcgcm93IGlmIHRhYiBpcyBwcmVzc2VkIG9uIHRoZSBsYXN0IHJvdyAqL1xuXHRhZGRSb3dPblRhYklmPzogQWRkUm93T25UYWJJZjxELCBzdHJpbmc+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU3RyaW5nRWRpdENlbGw8RCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PihvcHRpb25zPzogU3RyaW5nRWRpdENlbGxPcHRpb25zPEQ+KSB7XG5cdGNvbnN0IHtpbnB1dFByb3BzLCBhZGRSb3dPblRhYklmfSA9IG9wdGlvbnMgfHwge307XG5cblx0cmV0dXJuIGZ1bmN0aW9uIFN0cmluZ0VkaXRDZWxsRm4ocHJvcHM6IFRhYmxlQ2VsbFByb3BzPEQsIHN0cmluZz4pIHtcblx0XHRjb25zdCB7XG5cdFx0XHR2YWx1ZTogaW5pdGlhbFZhbHVlLFxuXHRcdFx0cm93OiB7aW5kZXh9LFxuXHRcdFx0Y29sdW1uOiB7aWR9LFxuXHRcdFx0dXBkYXRlRGF0YSxcblx0XHR9ID0gcHJvcHM7XG5cblx0XHRjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKGluaXRpYWxWYWx1ZSk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PElucHV0XG5cdFx0XHRcdGZsdWlkXG5cdFx0XHRcdHRyYW5zcGFyZW50XG5cdFx0XHRcdHsuLi5pbnB1dFByb3BzfVxuXHRcdFx0XHR2YWx1ZT17dmFsdWV9XG5cdFx0XHRcdG9uQ2hhbmdlPXsoZXYsIHYpID0+IHtcblx0XHRcdFx0XHRzZXRWYWx1ZSh2LnZhbHVlKTtcblx0XHRcdFx0fX1cblx0XHRcdFx0b25CbHVyPXsoKSA9PiB7XG5cdFx0XHRcdFx0dXBkYXRlRGF0YShpbmRleCwgaWQsIHZhbHVlKTtcblx0XHRcdFx0fX1cblx0XHRcdFx0b25LZXlEb3duPXsoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IGFkZFJvd09uVGFiKGV2ZW50LCB2YWx1ZSwgcHJvcHMsIGFkZFJvd09uVGFiSWYpfVxuXHRcdFx0Lz5cblx0XHQpO1xuXHR9O1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7RmllbGRBcnJheSwgRmllbGRBcnJheVJlbmRlclByb3BzfSBmcm9tICdmb3JtaWsnO1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LWtleSAqL1xuaW1wb3J0IFJlYWN0LCB7dXNlTWVtbywgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7XG5cdENlbGxQcm9wR2V0dGVyLFxuXHRDZWxsUHJvcHMsXG5cdENvbHVtbixcblx0Rm9vdGVyR3JvdXBQcm9wR2V0dGVyLFxuXHRGb290ZXJQcm9wR2V0dGVyLFxuXHRIZWFkZXJHcm91cFByb3BHZXR0ZXIsXG5cdEhlYWRlclByb3BHZXR0ZXIsXG5cdFJvd1Byb3BHZXR0ZXIsXG5cdFRhYmxlQm9keVByb3BHZXR0ZXIsXG5cdHVzZVRhYmxlLFxufSBmcm9tICdyZWFjdC10YWJsZSc7XG5pbXBvcnQge1RhYmxlLCBUYWJsZVByb3BzfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLmlucHV0cy5UYWJsZUlucHV0Jyk7XG5cbnR5cGUgRGVmYXVsdFRhYmxlVHlwZSA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5pbnRlcmZhY2UgVGFibGVJbnB1dFByb3BzPEEgZXh0ZW5kcyBEZWZhdWx0VGFibGVUeXBlPiB7XG5cdG5hbWU6IHN0cmluZztcblx0dmFsdWVzOiBBW107XG5cdGNvbHVtbnM6IENvbHVtbjxBPltdO1xuXHRzZXRGaWVsZFZhbHVlOiAoZmllbGQ6IHN0cmluZywgdmFsdWU6IGFueSwgc2hvdWxkVmFsaWRhdGU/OiBib29sZWFuIHwgdW5kZWZpbmVkKSA9PiB2b2lkO1xuXHRjcmVhdGVSb3c6ICgpID0+IEE7XG5cdHRhYmxlUHJvcHM/OiBUYWJsZVByb3BzO1xuXHRoZWFkZXJSb3dQcm9wcz86IEhlYWRlckdyb3VwUHJvcEdldHRlcjxBPjtcblx0aGVhZGVyQ2VsbFByb3BzPzogSGVhZGVyUHJvcEdldHRlcjxBPjtcblx0Zm9vdGVyUm93UHJvcHM/OiBGb290ZXJHcm91cFByb3BHZXR0ZXI8QT47XG5cdGZvb3RlckNlbGxQcm9wcz86IEZvb3RlclByb3BHZXR0ZXI8QT47XG5cdGJvZHlQcm9wcz86IFRhYmxlQm9keVByb3BHZXR0ZXI8QT47XG5cdHJvd1Byb3BzPzogUm93UHJvcEdldHRlcjxBPjtcblx0Y2VsbFByb3BzPzogQ2VsbFByb3BHZXR0ZXI8QT47XG59XG5cbmludGVyZmFjZSBUYWJsZUlucHV0VGFibGVQcm9wczxBIGV4dGVuZHMgRGVmYXVsdFRhYmxlVHlwZT4gZXh0ZW5kcyBUYWJsZUlucHV0UHJvcHM8QT4ge1xuXHRhcnJheUhlbHBlcnM6IEZpZWxkQXJyYXlSZW5kZXJQcm9wcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNlbGxQcm9wczxEIGV4dGVuZHMgRGVmYXVsdFRhYmxlVHlwZSwgViA9IGFueT4gZXh0ZW5kcyBDZWxsUHJvcHM8RCwgVj4ge1xuXHRhcnJheUhlbHBlcnM6IEZpZWxkQXJyYXlSZW5kZXJQcm9wcztcblx0YWRkUm93OiAoKSA9PiB2b2lkO1xuXHR1cGRhdGVEYXRhOiAoaW5kZXg6IG51bWJlciwgaWQ6IHN0cmluZywgdmFsdWU6IFYpID0+IHZvaWQ7XG59XG5cbmZ1bmN0aW9uIFRhYmxlSW5wdXRUYWJsZTxBIGV4dGVuZHMgRGVmYXVsdFRhYmxlVHlwZT4ocHJvcHM6IFRhYmxlSW5wdXRUYWJsZVByb3BzPEE+KSB7XG5cdGNvbnN0IHtcblx0XHRuYW1lLFxuXHRcdGNvbHVtbnMsXG5cdFx0dmFsdWVzLFxuXHRcdGFycmF5SGVscGVycyxcblx0XHRzZXRGaWVsZFZhbHVlLFxuXHRcdGNyZWF0ZVJvdyxcblx0XHR0YWJsZVByb3BzLFxuXHRcdGhlYWRlclJvd1Byb3BzLFxuXHRcdGhlYWRlckNlbGxQcm9wcyxcblx0XHRib2R5UHJvcHMsXG5cdFx0cm93UHJvcHMsXG5cdFx0Y2VsbFByb3BzLFxuXHRcdGZvb3RlckNlbGxQcm9wcyxcblx0XHRmb290ZXJSb3dQcm9wcyxcblx0fSA9IHByb3BzO1xuXHRjb25zdCBjb2xzID0gdXNlTWVtbygoKSA9PiBjb2x1bW5zLCBbY29sdW1uc10pO1xuXHRjb25zdCB2YWxzID0gdXNlTWVtbygoKSA9PiB2YWx1ZXMsIFt2YWx1ZXNdKTtcblx0Y29uc3QgW2hvdmVyUm93LCBzZXRIb3ZlclJvd10gPSB1c2VTdGF0ZSgnJyk7XG5cblx0Ly8gUmVhY3QtVGFibGUgaG9va1xuXHRjb25zdCB7Z2V0VGFibGVQcm9wcywgZ2V0VGFibGVCb2R5UHJvcHMsIGhlYWRlckdyb3VwcywgcHJlcGFyZVJvdywgcm93cywgZm9vdGVyR3JvdXBzfSA9IHVzZVRhYmxlPEE+KHtcblx0XHRjb2x1bW5zOiBjb2xzLFxuXHRcdGRhdGE6IHZhbHMsXG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdHVwZGF0ZURhdGEocm93SW5kZXgsIGNvbHVtbklkLCB2YWx1ZSkge1xuXHRcdFx0c2V0RmllbGRWYWx1ZShgJHtuYW1lfVske3Jvd0luZGV4fV0uJHtjb2x1bW5JZH1gLCB2YWx1ZSk7XG5cdFx0fSxcblx0XHRhZGRSb3coKSB7XG5cdFx0XHRhcnJheUhlbHBlcnMucHVzaChjcmVhdGVSb3coKSk7XG5cdFx0fSxcblx0XHRhcnJheUhlbHBlcnMsXG5cdH0pO1xuXG5cdC8vIEB0cy1pZ25vcmUgQ2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYSBGb290ZXIgdGhhdCBpcyBub3QgdGhlIGRlZmF1bHQgZW1wdHlSZW5kZXJlcigpXG5cdGNvbnN0IGhhc0Zvb3RlciA9IGZvb3Rlckdyb3Vwcy5zb21lKGZnID0+IGZnLmhlYWRlcnMuc29tZShmZ2ggPT4gZmdoLkZvb3Rlci5uYW1lICE9PSAnZW1wdHlSZW5kZXJlcicpKTtcblxuXHQvLyBCdWlsZCBGb290ZXIgaWYgYW55IGZvb3RlciByZW5kZXJlcnMgZXhpc3Rcblx0Y29uc3QgZm9vdGVyID0gaGFzRm9vdGVyID8gKFxuXHRcdDxUYWJsZS5Gb290ZXI+XG5cdFx0XHR7Zm9vdGVyR3JvdXBzLm1hcChncm91cCA9PiAoXG5cdFx0XHRcdDxUYWJsZS5Sb3cgey4uLnsuLi5ncm91cC5nZXRGb290ZXJHcm91cFByb3BzKCksIC4uLmdyb3VwLmdldEZvb3Rlckdyb3VwUHJvcHMoZm9vdGVyUm93UHJvcHMpfX0+XG5cdFx0XHRcdFx0e2dyb3VwLmhlYWRlcnMubWFwKGNvbHVtbiA9PiAoXG5cdFx0XHRcdFx0XHQ8VGFibGUuSGVhZGVyQ2VsbCB7Li4uey4uLmNvbHVtbi5nZXRGb290ZXJQcm9wcygpLCAuLi5jb2x1bW4uZ2V0Rm9vdGVyUHJvcHMoZm9vdGVyQ2VsbFByb3BzKX19PlxuXHRcdFx0XHRcdFx0XHR7Y29sdW1uLnJlbmRlcignRm9vdGVyJyl9XG5cdFx0XHRcdFx0XHQ8L1RhYmxlLkhlYWRlckNlbGw+XG5cdFx0XHRcdFx0KSl9XG5cdFx0XHRcdDwvVGFibGUuUm93PlxuXHRcdFx0KSl9XG5cdFx0PC9UYWJsZS5Gb290ZXI+XG5cdCkgOiBudWxsO1xuXG5cdHJldHVybiAoXG5cdFx0PD5cblx0XHRcdDxUYWJsZSB7Li4uey4uLmdldFRhYmxlUHJvcHMoKSwgLi4uZ2V0VGFibGVQcm9wcyh0YWJsZVByb3BzKX19PlxuXHRcdFx0XHQ8VGFibGUuSGVhZGVyPlxuXHRcdFx0XHRcdHtoZWFkZXJHcm91cHMubWFwKGhlYWRlckdyb3VwID0+IChcblx0XHRcdFx0XHRcdDxUYWJsZS5Sb3cgey4uLnsuLi5oZWFkZXJHcm91cC5nZXRIZWFkZXJHcm91cFByb3BzKCksIC4uLmhlYWRlckdyb3VwLmdldEhlYWRlckdyb3VwUHJvcHMoaGVhZGVyUm93UHJvcHMpfX0+XG5cdFx0XHRcdFx0XHRcdHtoZWFkZXJHcm91cC5oZWFkZXJzLm1hcChjb2x1bW4gPT4gKFxuXHRcdFx0XHRcdFx0XHRcdDxUYWJsZS5IZWFkZXJDZWxsIHsuLi57Li4uY29sdW1uLmdldEhlYWRlclByb3BzKCksIC4uLmNvbHVtbi5nZXRIZWFkZXJQcm9wcyhoZWFkZXJDZWxsUHJvcHMpfX0+XG5cdFx0XHRcdFx0XHRcdFx0XHR7Y29sdW1uLnJlbmRlcignSGVhZGVyJyl9XG5cdFx0XHRcdFx0XHRcdFx0PC9UYWJsZS5IZWFkZXJDZWxsPlxuXHRcdFx0XHRcdFx0XHQpKX1cblx0XHRcdFx0XHRcdDwvVGFibGUuUm93PlxuXHRcdFx0XHRcdCkpfVxuXHRcdFx0XHQ8L1RhYmxlLkhlYWRlcj5cblx0XHRcdFx0PFRhYmxlLkJvZHkgey4uLnsuLi5nZXRUYWJsZUJvZHlQcm9wcygpLCAuLi5nZXRUYWJsZUJvZHlQcm9wcyhib2R5UHJvcHMpfX0+XG5cdFx0XHRcdFx0e3Jvd3MubWFwKHJvdyA9PiB7XG5cdFx0XHRcdFx0XHRwcmVwYXJlUm93KHJvdyk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHQ8VGFibGUuUm93XG5cdFx0XHRcdFx0XHRcdFx0ey4uLnsuLi5yb3cuZ2V0Um93UHJvcHMoKSwgLi4ucm93LmdldFJvd1Byb3BzKHJvd1Byb3BzKX19XG5cdFx0XHRcdFx0XHRcdFx0b25Nb3VzZUVudGVyPXsoKSA9PiBzZXRIb3ZlclJvdyhyb3cuaWQpfVxuXHRcdFx0XHRcdFx0XHRcdG9uTW91c2VMZWF2ZT17KCkgPT4gc2V0SG92ZXJSb3coJycpfVxuXHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0e3Jvdy5jZWxscy5tYXAoY2VsbCA9PiAoXG5cdFx0XHRcdFx0XHRcdFx0XHQ8VGFibGUuQ2VsbCB7Li4uey4uLmNlbGwuZ2V0Q2VsbFByb3BzKCksIC4uLmNlbGwuZ2V0Q2VsbFByb3BzKGNlbGxQcm9wcyl9fT57Y2VsbC5yZW5kZXIoJ0NlbGwnLCB7aG92ZXJSb3d9KX08L1RhYmxlLkNlbGw+XG5cdFx0XHRcdFx0XHRcdFx0KSl9XG5cdFx0XHRcdFx0XHRcdDwvVGFibGUuUm93PlxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9KX1cblx0XHRcdFx0PC9UYWJsZS5Cb2R5PlxuXHRcdFx0XHR7Zm9vdGVyfVxuXHRcdFx0PC9UYWJsZT5cblx0XHQ8Lz5cblx0KTtcbn1cblxuLyoqXG4gKiBDYW4gYmUgdXNlZCBpbiBhIFRGb3JtIGFzIGEgVGFibGUgSW5wdXQuXG4gKiBAcGFyYW0gcHJvcHNcbiAqIEBjb25zdHJ1Y3RvclxuICovXG5leHBvcnQgZnVuY3Rpb24gVGFibGVJbnB1dDxBIGV4dGVuZHMgRGVmYXVsdFRhYmxlVHlwZT4ocHJvcHM6IFRhYmxlSW5wdXRQcm9wczxBPikge1xuXHRyZXR1cm4gPEZpZWxkQXJyYXkgbmFtZT17cHJvcHMubmFtZX0gcmVuZGVyPXthcnJheUhlbHBlcnMgPT4gPFRhYmxlSW5wdXRUYWJsZSBhcnJheUhlbHBlcnM9e2FycmF5SGVscGVyc30gey4uLnByb3BzfSAvPn0gLz47XG59XG4iLCJpbXBvcnQgdHlwZSB7VGFibGVDZWxsUHJvcHN9IGZyb20gJy4vVGFibGVJbnB1dCc7XG5cbmV4cG9ydCB0eXBlIEFkZFJvd09uVGFiSWY8RCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBWID0gYW55PiA9IChwcm9wczogVGFibGVDZWxsUHJvcHM8RCwgVj4sIG5ld1ZhbHVlOiBWKSA9PiBib29sZWFuO1xuXG4vKipcbiAqIFVzZSBhcyBhbiBvbktleURvd24gZXZlbnQgaGFuZGxlciB0byBhZGQgYSBuZXcgcm93IHdoZW4gdGFiIGlzIHByZXNzZWQsIGRlcGVuZGluZyBvbiBjZXJ0YWluIGNyaXRlcmlhLlxuICogQHBhcmFtIGV2ZW50XG4gKiBAcGFyYW0gdmFsdWVcbiAqIEBwYXJhbSBwcm9wc1xuICogQHBhcmFtIGFkZFJvd09uVGFiSWZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFJvd09uVGFiPEQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgViA9IGFueT4oXG5cdGV2ZW50OiBLZXlib2FyZEV2ZW50LFxuXHR2YWx1ZTogVixcblx0cHJvcHM6IFRhYmxlQ2VsbFByb3BzPEQsIFY+LFxuXHRhZGRSb3dPblRhYklmPzogQWRkUm93T25UYWJJZjxELCBWPixcbikge1xuXHRjb25zdCB7XG5cdFx0cm93OiB7aW5kZXg6IHJvd0luZGV4fSxcblx0XHRyb3dzOiB7bGVuZ3RoOiByb3dzTGVuZ3RofSxcblx0XHRhZGRSb3csXG5cdH0gPSBwcm9wcztcblxuXHRpZiAoZXZlbnQua2V5ID09PSAnVGFiJyAmJiAhZXZlbnQuc2hpZnRLZXkgJiYgcm93SW5kZXggKyAxID09PSByb3dzTGVuZ3RoICYmIChhZGRSb3dPblRhYklmID8gYWRkUm93T25UYWJJZihwcm9wcywgdmFsdWUpIDogZmFsc2UpKSB7XG5cdFx0YWRkUm93KCk7XG5cdH1cbn1cbiIsImV4cG9ydCB7VGFibGVJbnB1dH0gZnJvbSAnLi9UYWJsZUlucHV0JztcbmV4cG9ydCB7TW9uZXlDZWxsfSBmcm9tICcuL01vbmV5Q2VsbCc7XG5leHBvcnQge01vbmV5RWRpdENlbGx9IGZyb20gJy4vTW9uZXlFZGl0Q2VsbCc7XG5leHBvcnQge01vbmV5U3VtRm9vdGVyfSBmcm9tICcuL01vbmV5U3VtRm9vdGVyJztcbmV4cG9ydCB7U3RyaW5nRWRpdENlbGx9IGZyb20gJy4vU3RyaW5nRWRpdENlbGwnO1xuZXhwb3J0IHtEcm9wZG93bkNlbGx9IGZyb20gJy4vRHJvcGRvd25DZWxsJztcbmV4cG9ydCB7SG92ZXJDZWxsfSBmcm9tICcuL0hvdmVyQ2VsbCc7XG5leHBvcnQge2FkZFJvd09uVGFifSBmcm9tICcuL2FkZFJvd09uVGFiJztcbmV4cG9ydCB0eXBlIHtBZGRSb3dPblRhYklmfSBmcm9tICcuL2FkZFJvd09uVGFiJztcbiIsImltcG9ydCB7dG9Nb25leX0gZnJvbSAnQHRoeC9tb25leSc7XG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgTW9uZXksIHtDdXJyZW5jeVN0cmluZ30gZnJvbSAnanMtbW9uZXknO1xuaW1wb3J0IFJlYWN0LCB7U3ludGhldGljRXZlbnQsIHVzZUNhbGxiYWNrfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0Ryb3Bkb3duLCBEcm9wZG93blByb3BzLCBJbnB1dCwgSW5wdXRQcm9wcywgTGFiZWx9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtNb25leUlucHV0UHJvcHN9IGZyb20gJy4uL01vbmV5SW5wdXQnO1xuaW1wb3J0IHt1c2VNb25leUlucHV0fSBmcm9tICcuLi91c2VNb25leUlucHV0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMubW9uZXkuTW9uZXlDdXJyZW5jeUlucHV0Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9uZXlDdXJyZW5jeUlucHV0UHJvcHMgZXh0ZW5kcyBNb25leUlucHV0UHJvcHMge1xuXHRjdXJyZW5jaWVzPzoge2tleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyB0ZXh0OiBzdHJpbmd9W107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNb25leUN1cnJlbmN5SW5wdXQocHJvcHM6IE1vbmV5Q3VycmVuY3lJbnB1dFByb3BzICYgT21pdDxJbnB1dFByb3BzLCAnb25DaGFuZ2UnPikge1xuXHRjb25zdCB7bmFtZSwgb25CbHVyLCBwcmVmaXgsIGRlZmF1bHRDdXJyZW5jeSwgb25DaGFuZ2UsIHNob3dQcmVmaXgsIHZhbHVlLCB3aG9sZU51bWJlciwgY3VycmVuY2llcywgbG9ja2VkLCAuLi5yZXN0fSA9IHByb3BzO1xuXG5cdGNvbnN0IG9wdGlvbnMgPSBjdXJyZW5jaWVzIHx8IFtcblx0XHR7a2V5OiAnQ0FEJywgdGV4dDogJ0NBRCcsIHZhbHVlOiAnQ0FEJ30sXG5cdFx0e2tleTogJ1VTRCcsIHRleHQ6ICdVU0QnLCB2YWx1ZTogJ1VTRCd9LFxuXHRdO1xuXG5cdGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuXHRcdCh2PzogTW9uZXkpID0+IHtcblx0XHRcdGlmICghdikge1xuXHRcdFx0XHRvbkNoYW5nZSAmJiBvbkNoYW5nZSh0b01vbmV5KDAsIGRlZmF1bHRDdXJyZW5jeSkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b25DaGFuZ2UgJiYgb25DaGFuZ2Uodik7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRbZGVmYXVsdEN1cnJlbmN5LCBvbkNoYW5nZV0sXG5cdCk7XG5cblx0Y29uc3QgdmFsID0gISh2YWx1ZSBpbnN0YW5jZW9mIE1vbmV5KSAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdG9Nb25leSh2YWx1ZSkgOiB2YWx1ZTtcblxuXHRjb25zdCBbaW5wdXRFbGVtZW50XSA9IHVzZU1vbmV5SW5wdXQoe29uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIHByZWZpeCwgc2hvd1ByZWZpeCwgdmFsdWU6IHZhbCwgd2hvbGVOdW1iZXJ9KTtcblxuXHRjb25zdCBoYW5kbGVEcm9wZG93bkNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuXHRcdChlOiBTeW50aGV0aWNFdmVudDxIVE1MRWxlbWVudCwgRXZlbnQ+LCB2OiBEcm9wZG93blByb3BzKSA9PiB7XG5cdFx0XHRjb25zdCBuZXdDdXJyZW5jeUNvZGUgPSB2LnZhbHVlIGFzIEN1cnJlbmN5U3RyaW5nO1xuXHRcdFx0Y29uc3QgbmV3TW9uZXkgPSBuZXcgTW9uZXkodmFsdWU/LmFtb3VudCB8fCAwLCBuZXdDdXJyZW5jeUNvZGUpO1xuXG5cdFx0XHRkKCdDaGFuZ2UnLCB2YWx1ZSwgbmV3Q3VycmVuY3lDb2RlLCBuZXdNb25leSk7XG5cdFx0XHQvLyBzZXRJbnB1dFZhbHVlKG5ld01vbmV5KTtcblx0XHRcdG9uQ2hhbmdlICYmIG9uQ2hhbmdlKG5ld01vbmV5KTtcblx0XHRcdC8vIGZvcmNlVXBkYXRlKCk7XG5cdFx0fSxcblx0XHRbb25DaGFuZ2UsIHZhbHVlXSxcblx0KTtcblxuXHRjb25zdCBjdXJyZW5jeUNvZGUgPSB2YWx1ZT8uY3VycmVuY3kgfHwgZGVmYXVsdEN1cnJlbmN5Py5jb2RlIHx8ICdDQUQnO1xuXHRkKCdSZW5kZXInLCB2YWx1ZSwgY3VycmVuY3lDb2RlKTtcblxuXHRyZXR1cm4gKFxuXHRcdDxJbnB1dCB7Li4ucmVzdH0gbGFiZWxQb3NpdGlvbj1cInJpZ2h0XCI+XG5cdFx0XHQ8aW5wdXQgbmFtZT17bmFtZX0gcmVmPXtpbnB1dEVsZW1lbnR9IG9uQmx1cj17b25CbHVyfSByZWFkT25seT17bG9ja2VkfSAvPlxuXHRcdFx0PExhYmVsIGJhc2ljPlxuXHRcdFx0XHQ8RHJvcGRvd24gZGlzYWJsZWQ9e2xvY2tlZH0gb3B0aW9ucz17b3B0aW9uc30gdmFsdWU9e2N1cnJlbmN5Q29kZX0gb25DaGFuZ2U9e2hhbmRsZURyb3Bkb3duQ2hhbmdlfSAvPlxuXHRcdFx0PC9MYWJlbD5cblx0XHQ8L0lucHV0PlxuXHQpO1xufVxuIiwiZXhwb3J0IHtNb25leUN1cnJlbmN5SW5wdXR9IGZyb20gJy4vTW9uZXlDdXJyZW5jeUlucHV0JztcbmV4cG9ydCB0eXBlIHtNb25leUN1cnJlbmN5SW5wdXRQcm9wc30gZnJvbSAnLi9Nb25leUN1cnJlbmN5SW5wdXQnO1xuIiwiaW1wb3J0IHt0b01vbmV5fSBmcm9tICdAdGh4L21vbmV5Jztcbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBNb25leSwge0N1cnJlbmN5LCBNb25leU9iamVjdH0gZnJvbSAnanMtbW9uZXknO1xuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2t9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7SW5wdXQsIElucHV0UHJvcHN9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB7dXNlTW9uZXlJbnB1dH0gZnJvbSAnLi4vdXNlTW9uZXlJbnB1dCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLm1vbmV5Lk1vbmV5SW5wdXQnKTtcblxuZXhwb3J0IGludGVyZmFjZSBNb25leUlucHV0UHJvcHMge1xuXHRuYW1lPzogc3RyaW5nO1xuXHRvbkNoYW5nZT86ICh2YWx1ZTogTW9uZXkpID0+IHZvaWQ7XG5cdHZhbHVlPzogTW9uZXkgfCBNb25leU9iamVjdDtcblx0ZGVmYXVsdEN1cnJlbmN5PzogQ3VycmVuY3k7IC8vIERlZmF1bHRzIHRvIE1vbmV5LkNBRFxuXHRvbkJsdXI/OiAoZXY6IGFueSkgPT4gdm9pZDtcblx0cHJlZml4Pzogc3RyaW5nOyAvLyBEZWZhdWx0cyB0byBjdXJyZW5jeSBzeW1ib2xcblx0c2hvd1ByZWZpeD86IGJvb2xlYW47IC8vIERlZmF1bHRzIHRvIGZhbHNlXG5cdGxvY2tlZD86IGJvb2xlYW47IC8vIERlZmF1bHRzIHRvIGZhbHNlXG5cdHdob2xlTnVtYmVyPzogYm9vbGVhbjsgLy8gRGVmYXVsdHMgdG8gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1vbmV5SW5wdXQocHJvcHM6IE1vbmV5SW5wdXRQcm9wcyAmIE9taXQ8SW5wdXRQcm9wcywgJ29uQ2hhbmdlJz4pIHtcblx0Y29uc3Qge25hbWUsIG9uQmx1ciwgbG9ja2VkLCBwcmVmaXgsIGRlZmF1bHRDdXJyZW5jeSwgb25DaGFuZ2UsIHNob3dQcmVmaXgsIHZhbHVlLCB3aG9sZU51bWJlciwgLi4ucmVzdH0gPSBwcm9wcztcblxuXHRjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcblx0XHQodj86IE1vbmV5KSA9PiB7XG5cdFx0XHRpZiAoIXYpIHtcblx0XHRcdFx0b25DaGFuZ2UgJiYgb25DaGFuZ2UodG9Nb25leSgwLCBkZWZhdWx0Q3VycmVuY3kpKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9uQ2hhbmdlICYmIG9uQ2hhbmdlKHYpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0W2RlZmF1bHRDdXJyZW5jeSwgb25DaGFuZ2VdLFxuXHQpO1xuXG5cdGNvbnN0IHZhbCA9ICEodmFsdWUgaW5zdGFuY2VvZiBNb25leSkgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCA/IHRvTW9uZXkodmFsdWUpIDogdmFsdWU7XG5cblx0Y29uc3QgW2lucHV0RWxlbWVudF0gPSB1c2VNb25leUlucHV0KHtvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBwcmVmaXgsIHNob3dQcmVmaXgsIHZhbHVlOiB2YWwsIHdob2xlTnVtYmVyfSk7XG5cblx0cmV0dXJuIChcblx0XHQ8SW5wdXQgey4uLnJlc3R9PlxuXHRcdFx0PGlucHV0IG5hbWU9e25hbWV9IHJlZj17aW5wdXRFbGVtZW50fSBvbkJsdXI9e29uQmx1cn0gcmVhZE9ubHk9e2xvY2tlZH0gLz5cblx0XHQ8L0lucHV0PlxuXHQpO1xufVxuIiwiZXhwb3J0IHtNb25leUlucHV0fSBmcm9tICcuL01vbmV5SW5wdXQnO1xuZXhwb3J0IHR5cGUge01vbmV5SW5wdXRQcm9wc30gZnJvbSAnLi9Nb25leUlucHV0JztcbiIsImltcG9ydCB7dG9Nb25leX0gZnJvbSAnQHRoeC9tb25leSc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IElucHV0bWFzayBmcm9tICdpbnB1dG1hc2snO1xuaW1wb3J0IE1vbmV5IGZyb20gJ2pzLW1vbmV5JztcbmltcG9ydCB7TXV0YWJsZVJlZk9iamVjdCwgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmfSBmcm9tICdyZWFjdCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLm1vbmV5LnVzZU1vbmV5SW5wdXQnKTtcblxuaW50ZXJmYWNlIFVzZU1vbmV5SW5wdXRQcm9wcyB7XG5cdHZhbHVlPzogTW9uZXk7XG5cdG9uQ2hhbmdlPzogKHZhbHVlPzogTW9uZXkpID0+IHZvaWQ7XG5cdG9uU2V0PzogKHZhbHVlPzogTW9uZXkpID0+IHZvaWQ7XG5cdC8vIGRlZmF1bHRDdXJyZW5jeT86IEN1cnJlbmN5OyAvLyBEZWZhdWx0cyB0byBNb25leS5DQURcblx0cHJlZml4Pzogc3RyaW5nOyAvLyBEZWZhdWx0cyB0byBjdXJyZW5jeSBzeW1ib2xcblx0c2hvd1ByZWZpeD86IGJvb2xlYW47IC8vIERlZmF1bHRzIHRvIGZhbHNlXG5cdHdob2xlTnVtYmVyPzogYm9vbGVhbjsgLy8gRGVmYXVsdHMgdG8gZmFsc2Vcbn1cblxudHlwZSBTZXRWYWx1ZUZuID0gKHZhbHVlPzogTW9uZXkpID0+IHZvaWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VNb25leUlucHV0KHByb3BzOiBVc2VNb25leUlucHV0UHJvcHMpOiBbTXV0YWJsZVJlZk9iamVjdDxIVE1MSW5wdXRFbGVtZW50IHwgbnVsbD4sIFNldFZhbHVlRm5dIHtcblx0Y29uc3Qge3ZhbHVlLCBvbkNoYW5nZSwgb25TZXQsIHNob3dQcmVmaXgsIHByZWZpeCwgd2hvbGVOdW1iZXJ9ID0gcHJvcHM7XG5cblx0Y29uc3QgaW5wdXRFbGVtZW50ID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcblx0Y29uc3QgbWFza0luc3RhbmNlID0gdXNlUmVmPElucHV0bWFzay5JbnN0YW5jZSB8IG51bGw+KG51bGwpO1xuXG5cdC8vIHNldCB0aGUgYWRqQ3VycmVuY3lcblx0Ly8gbGV0IGFkakN1cnJlbmN5ID0gTW9uZXkuQ0FEO1xuXHQvLyBpZiAodmFsdWU/LmN1cnJlbmN5ICYmIE1vbmV5W3ZhbHVlPy5jdXJyZW5jeV0pIGFkakN1cnJlbmN5ID0gTW9uZXlbdmFsdWU/LmN1cnJlbmN5XTtcblx0Ly8gaWYgKGRlZmF1bHRDdXJyZW5jeSkgYWRqQ3VycmVuY3kgPSBkZWZhdWx0Q3VycmVuY3k7XG5cdGNvbnN0IGN1cnJlbmN5Q29kZSA9IHZhbHVlPy5jdXJyZW5jeSB8fCAnQ0FEJztcblxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdGlmICghaW5wdXRFbGVtZW50LmN1cnJlbnQpIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGdldCBpbnB1dCBlbGVtZW50Jyk7XG5cblx0XHRkKCdDcmVhdGluZyBpbnB1dCBtYXNrIGluc3RhbmNlJyk7XG5cdFx0bWFza0luc3RhbmNlLmN1cnJlbnQgPSBuZXcgSW5wdXRtYXNrKHtcblx0XHRcdGFsaWFzOiAnbnVtZXJpYycsXG5cdFx0XHRncm91cFNlcGFyYXRvcjogJywnLFxuXHRcdFx0ZGlnaXRzOiB3aG9sZU51bWJlciA/ICcwJyA6IE1vbmV5W2N1cnJlbmN5Q29kZV0uZGVjaW1hbF9kaWdpdHMudG9TdHJpbmcoKSxcblx0XHRcdGRpZ2l0c09wdGlvbmFsOiBmYWxzZSxcblx0XHRcdHByZWZpeDogc2hvd1ByZWZpeCA/IHByZWZpeCB8fCBNb25leVtjdXJyZW5jeUNvZGVdLnN5bWJvbCA6IHVuZGVmaW5lZCxcblx0XHRcdHBsYWNlaG9sZGVyOiAnMCcsXG5cdFx0XHRhdXRvVW5tYXNrOiB0cnVlLFxuXHRcdFx0b25jb21wbGV0ZSgpIHtcblx0XHRcdFx0aWYgKG9uQ2hhbmdlKSB7XG5cdFx0XHRcdFx0aWYgKGlucHV0RWxlbWVudC5jdXJyZW50Py52YWx1ZSkge1xuXHRcdFx0XHRcdFx0b25DaGFuZ2UodG9Nb25leShpbnB1dEVsZW1lbnQuY3VycmVudD8udmFsdWUsIGN1cnJlbmN5Q29kZSkpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRvbkNoYW5nZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdG9uY2xlYXJlZCgpIHtcblx0XHRcdFx0aWYgKG9uQ2hhbmdlKSBvbkNoYW5nZSgpO1xuXHRcdFx0fSxcblx0XHRcdG9uaW5jb21wbGV0ZSgpIHtcblx0XHRcdFx0aWYgKG9uQ2hhbmdlKSBvbkNoYW5nZSh0b01vbmV5KGlucHV0RWxlbWVudC5jdXJyZW50Py52YWx1ZSwgY3VycmVuY3lDb2RlKSk7XG5cdFx0XHR9LFxuXHRcdH0pO1xuXHRcdG1hc2tJbnN0YW5jZS5jdXJyZW50Lm1hc2soaW5wdXRFbGVtZW50LmN1cnJlbnQpO1xuXG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdGlmIChtYXNrSW5zdGFuY2UuY3VycmVudCkge1xuXHRcdFx0XHRkKCdDbGVhbmluZyB1cCBpbnB1dCBtYXNrIGluc3RhbmNlJyk7XG5cdFx0XHRcdG1hc2tJbnN0YW5jZS5jdXJyZW50LnJlbW92ZSgpO1xuXHRcdFx0XHRtYXNrSW5zdGFuY2UuY3VycmVudCA9IG51bGw7XG5cdFx0XHR9XG5cdFx0fTtcblx0fSwgW2N1cnJlbmN5Q29kZSwgcHJlZml4LCBzaG93UHJlZml4LCB3aG9sZU51bWJlcl0pO1xuXG5cdGNvbnN0IHNldFZhbCA9IHVzZUNhbGxiYWNrPFNldFZhbHVlRm4+KFxuXHRcdCh2PzogTW9uZXkpID0+IHtcblx0XHRcdGlmIChpbnB1dEVsZW1lbnQuY3VycmVudCkge1xuXHRcdFx0XHRkKCdWYWx1ZSBpcyBiZWluZyBzZXQ6Jywgdik7XG5cdFx0XHRcdGlmICh2KSB7XG5cdFx0XHRcdFx0aW5wdXRFbGVtZW50LmN1cnJlbnQudmFsdWUgPSB2LnRvRGVjaW1hbCgpLnRvU3RyaW5nKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aW5wdXRFbGVtZW50LmN1cnJlbnQudmFsdWUgPSAnJztcblx0XHRcdFx0fVxuXHRcdFx0XHRvblNldCAmJiBvblNldCh2KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdFtvblNldF0sXG5cdCk7XG5cblx0Ly8gSWYgd2UgY2hhbmdlIHRoZSB2YWx1ZSBwcm9wIHdlIG5lZWQgdG8gc3luYyB0aGUgRE9NIHZhbHVlIHRvIGRpc3BsYXkgdGhlIG5ldyB2YWx1ZVxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdGNvbnN0IHdoYXRDdXJyZW50bHlJc0Rpc3BsYXllZCA9IGlucHV0RWxlbWVudC5jdXJyZW50Py52YWx1ZSB8fCAnJzsgLy8gc3RyaW5nIHwgdW5kZWZcblx0XHRjb25zdCB3aGF0V2VBcmVTZXR0aW5nID0gdmFsdWUgPyB2YWx1ZS50b1N0cmluZygpIDogJyc7IC8vIG1vbmV5IHwgdW5kZWZcblxuXHRcdGlmICh3aGF0Q3VycmVudGx5SXNEaXNwbGF5ZWQgIT09IHdoYXRXZUFyZVNldHRpbmcpIHtcblx0XHRcdHNldFZhbCh2YWx1ZSk7XG5cdFx0fVxuXHR9LCBbc2V0VmFsLCB2YWx1ZV0pO1xuXG5cdHJldHVybiBbaW5wdXRFbGVtZW50LCBzZXRWYWxdO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCwge0NoaWxkcmVufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZVN0ZXB9IGZyb20gJy4vdXNlU3RlcCc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygndGh4LmNvbnRyb2xzLnN0ZXAuRm9ybVN0ZXAnKTtcblxuaW50ZXJmYWNlIEZvcm1TdGVwUHJvcHMge1xuXHRjaGlsZHJlbjogSlNYLkVsZW1lbnQ7XG5cdHRpdGxlPzogc3RyaW5nO1xuXHRzdGVwS2V5OiBzdHJpbmc7XG5cdGhpZGRlbj86IGJvb2xlYW4gfCAoKHN0YXRlOiBhbnksIHN0ZXA6IG51bWJlcikgPT4gYm9vbGVhbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBGb3JtU3RlcChwcm9wczogRm9ybVN0ZXBQcm9wcykge1xuXHRjb25zdCBbc3RhdGUsIGhhbmRsZVN1Ym1pdF0gPSB1c2VTdGVwKCk7XG5cdGNvbnN0IHZhbHVlcyA9IHN0YXRlW3Byb3BzLnN0ZXBLZXldIHx8IHt9O1xuXG5cdGNvbnN0IGZvcm0gPSBSZWFjdC5jbG9uZUVsZW1lbnQoQ2hpbGRyZW4ub25seShwcm9wcy5jaGlsZHJlbiksIHtcblx0XHR2YWx1ZXM6IHZhbHVlcyB8fCB7fSxcblx0XHRvblN1Ym1pdDogKHZhbHM6IHVua25vd24pID0+IGhhbmRsZVN1Ym1pdCh2YWxzLCBwcm9wcy5zdGVwS2V5KSxcblx0fSk7XG5cblx0cmV0dXJuIChcblx0XHQ8PlxuXHRcdFx0PGgxPntwcm9wcy50aXRsZX08L2gxPlxuXHRcdFx0e2Zvcm19XG5cdFx0PC8+XG5cdCk7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuc3RlcC5TdGVwJyk7XG5cbmludGVyZmFjZSBTdGVwUHJvcHMge1xuXHRjaGlsZHJlbj86IEpTWC5FbGVtZW50IHwgSlNYLkVsZW1lbnRbXTtcblx0dGl0bGU/OiBzdHJpbmc7XG5cdHN0ZXA/OiBudW1iZXI7XG5cdGhpZGRlbj86IGJvb2xlYW4gfCAoKHN0YXRlOiBhbnksIHN0ZXA6IG51bWJlcikgPT4gYm9vbGVhbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTdGVwKHByb3BzOiBTdGVwUHJvcHMpIHtcblx0cmV0dXJuIChcblx0XHQ8PlxuXHRcdFx0PGgxPntwcm9wcy50aXRsZX08L2gxPlxuXHRcdFx0e3Byb3BzLmNoaWxkcmVufVxuXHRcdDwvPlxuXHQpO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCwge3VzZVN0YXRlLCBDaGlsZHJlbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtQcm9tcHR9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHtHcmlkLCBTdGVwIGFzIFNlbWFudGljU3RlcH0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHtGb3JtU3RlcH0gZnJvbSAnLi9Gb3JtU3RlcCc7XG5pbXBvcnQge1N0ZXB9IGZyb20gJy4vU3RlcCc7XG5pbXBvcnQge1N0ZXBDb250ZXh0fSBmcm9tICcuL3N0ZXBDb250ZXh0JztcblxuY29uc3QgZCA9IGRlYnVnKCd0aHguY29udHJvbHMuc3RlcC5TdGVwUHJvdmlkZXInKTtcblxuaW50ZXJmYWNlIFN0ZXBQcm92aWRlclByb3BzIHtcblx0Y2hpbGRyZW46IChKU1guRWxlbWVudCB8IG51bGwgfCBmYWxzZSlbXTtcblx0b25TdWJtaXQ6ICh2YWx1ZXM6IGFueSkgPT4gdm9pZDtcblx0dmFsdWVzPzogYW55O1xuXHR3YXJuT25SZXJvdXRlPzogYm9vbGVhbjtcblx0dmVydGljYWw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU3RlcFByb3ZpZGVyKHByb3BzOiBTdGVwUHJvdmlkZXJQcm9wcykge1xuXHRjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKHByb3BzLnZhbHVlcyB8fCB7fSk7XG5cdGNvbnN0IFtjdXJyZW50U3RlcCwgc2V0Q3VycmVudFN0ZXBdID0gdXNlU3RhdGUoMCk7XG5cdGNvbnN0IFtpc1N1Ym1pdHRpbmcsIHNldElzU3VibWl0dGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cblx0Y29uc3QgdGl0bGVzOiBzdHJpbmdbXSA9IFtdO1xuXHRjb25zdCBjaGlsZHJlbjogSlNYLkVsZW1lbnRbXSA9IFtdO1xuXG5cdENoaWxkcmVuLmZvckVhY2gocHJvcHM/LmNoaWxkcmVuLCAoY2hpbGQsIGluZGV4KSA9PiB7XG5cdFx0aWYgKCFjaGlsZCkgcmV0dXJuO1xuXHRcdGlmIChjaGlsZD8udHlwZSAhPT0gU3RlcCAmJiBjaGlsZD8udHlwZSAhPT0gRm9ybVN0ZXApIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgQ2FuIG5vdCByZW5kZXIgJyR7Y2hpbGQ/LnR5cGV9JyBhcyBjaGlsZCBvZiAnU3RlcFByb3ZpZGVyJy4gTXVzdCBiZSBvZiB0eXBlICdTdGVwJyBvciAnRm9ybVN0ZXAnYCk7XG5cdFx0fVxuXHRcdGlmIChjaGlsZC5wcm9wcy5oaWRkZW4pIHtcblx0XHRcdGlmICh0eXBlb2YgY2hpbGQucHJvcHMuaGlkZGVuID09PSAnZnVuY3Rpb24nICYmICFjaGlsZC5wcm9wcy5oaWRkZW4oc3RhdGUsIGluZGV4KSkge1xuXHRcdFx0XHR0aXRsZXMucHVzaChjaGlsZD8ucHJvcHM/LnRpdGxlIHx8ICcnKTtcblx0XHRcdFx0Y2hpbGRyZW4ucHVzaChSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGQsIHtzdGVwOiBpbmRleCwga2V5OiBjaGlsZD8ua2V5IHx8IGluZGV4LnRvU3RyaW5nKCl9KSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRpdGxlcy5wdXNoKGNoaWxkPy5wcm9wcz8udGl0bGUgfHwgJycpO1xuXHRcdFx0Y2hpbGRyZW4ucHVzaChSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGQsIHtzdGVwOiBpbmRleCwga2V5OiBjaGlsZD8ua2V5IHx8IGluZGV4LnRvU3RyaW5nKCl9KSk7XG5cdFx0fVxuXHR9KTtcblxuXHRjb25zdCBvbk5hdmlnYXRlID0gKCkgPT4gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBlbmQgdGhpcyBwcm9jZXNzPyBBbGwgdGhlIGVudGVyZWQgZGF0YSB3aWxsIGJlIGxvc3QhJztcblxuXHRjb25zdCBoYW5kbGVTdWJtaXQgPSAodmFsdWVzOiBhbnksIHN0ZXBLZXk6IHN0cmluZykgPT4ge1xuXHRcdGlmIChjdXJyZW50U3RlcCArIDEgPT09IGNoaWxkcmVuPy5sZW5ndGgpIHtcblx0XHRcdHNldFN0YXRlKHsuLi5zdGF0ZSwgW3N0ZXBLZXldOiB2YWx1ZXN9KTtcblx0XHRcdHNldElzU3VibWl0dGluZyh0cnVlKTtcblx0XHRcdHByb3BzLm9uU3VibWl0KHsuLi5zdGF0ZSwgW3N0ZXBLZXldOiB2YWx1ZXN9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c2V0U3RhdGUoey4uLnN0YXRlLCBbc3RlcEtleV06IHZhbHVlc30pO1xuXHRcdFx0c2V0Q3VycmVudFN0ZXAoY3VycmVudFN0ZXAgKyAxKTtcblx0XHR9XG5cdH07XG5cblx0aWYgKHByb3BzLnZlcnRpY2FsKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxTdGVwQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17e3N0YXRlLCBoYW5kbGVTdWJtaXR9fT5cblx0XHRcdFx0e3Byb3BzLndhcm5PblJlcm91dGUgJiYgPFByb21wdCBtZXNzYWdlPXtvbk5hdmlnYXRlfSB3aGVuPXshaXNTdWJtaXR0aW5nfSAvPn1cblx0XHRcdFx0PEdyaWQgZGl2aWRlZCBzdGFja2FibGU+XG5cdFx0XHRcdFx0PEdyaWQuUm93PlxuXHRcdFx0XHRcdFx0PEdyaWQuQ29sdW1uIHdpZHRoPXszfT5cblx0XHRcdFx0XHRcdFx0PFNlbWFudGljU3RlcC5Hcm91cCBvcmRlcmVkIHNpemU9XCJtaW5pXCIgdmVydGljYWwgd2lkdGhzPXsxfT5cblx0XHRcdFx0XHRcdFx0XHR7dGl0bGVzPy5tYXAoKHRpdGxlLCBpbmRleCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0XHRcdFx0PFNlbWFudGljU3RlcFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGtleT17aW5kZXgudG9TdHJpbmcoKX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb21wbGV0ZWQ9e2luZGV4IDwgT2JqZWN0LmtleXMoc3RhdGUpLmxlbmd0aH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhY3RpdmU9e2N1cnJlbnRTdGVwID09PSBpbmRleH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvbkNsaWNrPXsoKSA9PiBzZXRDdXJyZW50U3RlcChpbmRleCl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e2luZGV4ID4gT2JqZWN0LmtleXMoc3RhdGUpLmxlbmd0aH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxTZW1hbnRpY1N0ZXAuQ29udGVudD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxTZW1hbnRpY1N0ZXAuVGl0bGU+e3RpdGxlfTwvU2VtYW50aWNTdGVwLlRpdGxlPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvU2VtYW50aWNTdGVwLkNvbnRlbnQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvU2VtYW50aWNTdGVwPlxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9KX1cblx0XHRcdFx0XHRcdFx0PC9TZW1hbnRpY1N0ZXAuR3JvdXA+XG5cdFx0XHRcdFx0XHQ8L0dyaWQuQ29sdW1uPlxuXHRcdFx0XHRcdFx0PEdyaWQuQ29sdW1uIHdpZHRoPXsxM30+e2NoaWxkcmVuPy5bY3VycmVudFN0ZXBdfTwvR3JpZC5Db2x1bW4+XG5cdFx0XHRcdFx0PC9HcmlkLlJvdz5cblx0XHRcdFx0PC9HcmlkPlxuXHRcdFx0PC9TdGVwQ29udGV4dC5Qcm92aWRlcj5cblx0XHQpO1xuXHR9XG5cblx0cmV0dXJuIChcblx0XHQ8U3RlcENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3tzdGF0ZSwgaGFuZGxlU3VibWl0fX0+XG5cdFx0XHR7cHJvcHMud2Fybk9uUmVyb3V0ZSAmJiA8UHJvbXB0IG1lc3NhZ2U9e29uTmF2aWdhdGV9IC8+fVxuXHRcdFx0PFNlbWFudGljU3RlcC5Hcm91cCBvcmRlcmVkIHNpemU9XCJtaW5pXCI+XG5cdFx0XHRcdHt0aXRsZXM/Lm1hcCgodGl0bGUsIGluZGV4KSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdDxTZW1hbnRpY1N0ZXBcblx0XHRcdFx0XHRcdFx0a2V5PXtpbmRleC50b1N0cmluZygpfVxuXHRcdFx0XHRcdFx0XHRjb21wbGV0ZWQ9e2luZGV4IDwgT2JqZWN0LmtleXMoc3RhdGUpLmxlbmd0aH1cblx0XHRcdFx0XHRcdFx0YWN0aXZlPXtjdXJyZW50U3RlcCA9PT0gaW5kZXh9XG5cdFx0XHRcdFx0XHRcdG9uQ2xpY2s9eygpID0+IHNldEN1cnJlbnRTdGVwKGluZGV4KX1cblx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e2luZGV4ID4gT2JqZWN0LmtleXMoc3RhdGUpLmxlbmd0aH1cblx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0PFNlbWFudGljU3RlcC5Db250ZW50PlxuXHRcdFx0XHRcdFx0XHRcdDxTZW1hbnRpY1N0ZXAuVGl0bGU+e3RpdGxlfTwvU2VtYW50aWNTdGVwLlRpdGxlPlxuXHRcdFx0XHRcdFx0XHQ8L1NlbWFudGljU3RlcC5Db250ZW50PlxuXHRcdFx0XHRcdFx0PC9TZW1hbnRpY1N0ZXA+XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSl9XG5cdFx0XHQ8L1NlbWFudGljU3RlcC5Hcm91cD5cblx0XHRcdHtjaGlsZHJlbj8uW2N1cnJlbnRTdGVwXX1cblx0XHQ8L1N0ZXBDb250ZXh0LlByb3ZpZGVyPlxuXHQpO1xufVxuIiwiZXhwb3J0IHtTdGVwfSBmcm9tICcuL1N0ZXAnO1xuZXhwb3J0IHt1c2VTdGVwfSBmcm9tICcuL3VzZVN0ZXAnO1xuZXhwb3J0IHtGb3JtU3RlcH0gZnJvbSAnLi9Gb3JtU3RlcCc7XG5leHBvcnQge1N0ZXBQcm92aWRlcn0gZnJvbSAnLi9TdGVwUHJvdmlkZXInO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGNvbnN0IFN0ZXBDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDx7aGFuZGxlU3VibWl0OiAodmFsdWVzOiB1bmtub3duLCBzdGVwS2V5OiBzdHJpbmcpID0+IHZvaWQ7IHN0YXRlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+fT4oe1xuXHRoYW5kbGVTdWJtaXQ6ICgpID0+IHt9LFxuXHRzdGF0ZToge30sXG59KTtcbiIsImltcG9ydCB7dXNlQ29udGV4dH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtTdGVwQ29udGV4dH0gZnJvbSAnLi9zdGVwQ29udGV4dCc7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTdGVwKCk6IFthbnksICh2YWx1ZXM6IHVua25vd24sIHN0ZXBLZXk6IHN0cmluZykgPT4gdm9pZF0ge1xuXHRjb25zdCB7c3RhdGUsIGhhbmRsZVN1Ym1pdH0gPSB1c2VDb250ZXh0KFN0ZXBDb250ZXh0KTtcblxuXHRyZXR1cm4gW3N0YXRlLCBoYW5kbGVTdWJtaXRdO1xufVxuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1syXS51c2VbMl0hLi9zdHlsZXMuY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzJdIS4vc3R5bGVzLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzJdIS4vc3R5bGVzLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdLnVzZVsyXSEuL3N0eWxlcy5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5ydy1kYXRldGltZXBpY2tlciA+IGlucHV0IHtcXG5cXHRib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuXFxuLnJ3LWRhdGV0aW1lcGlja2VyIC5ydy1jYWxlbmRhci1ncmlkLnJ3LW5hdi12aWV3IC5ydy1idG4ge1xcblxcdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcXG59XFxuXFxuLmRhdGVUaW1lUGlja2VyQXV0b1dpZHRoIHtcXG5cXHR3aWR0aDogYXV0bztcXG5cXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG59XFxuXFxuLmRhdGVUaW1lUGlja2VyQXV0b1dpZHRoID4gaW5wdXQge1xcblxcdHdpZHRoOiBhdXRvO1xcbn1cXG5cXG4ucmVhY3QtZGF0ZXBpY2tlci13cmFwcGVyIHtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDtcXG59XFxuXFxuLnJlYWN0LWRhdGVwaWNrZXJfX2lucHV0LWNvbnRhaW5lciB7XFxuXFx0ZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7XFxufVxcblxcbi5yZWFjdC1kYXRlcGlja2VyLXBvcHBlciB7XFxuXFx0ei1pbmRleDogNSAhaW1wb3J0YW50O1xcbn1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9kYXRlL0RhdGVQaWNrZXIvc3R5bGVzLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTtDQUNDLHVCQUF1QjtBQUN4Qjs7QUFFQTtDQUNDLHFCQUFxQjtBQUN0Qjs7QUFFQTtDQUNDLFdBQVc7Q0FDWCxvQkFBb0I7QUFDckI7O0FBRUE7Q0FDQyxXQUFXO0FBQ1o7O0FBRUE7Q0FDQyxXQUFXO0NBQ1gsMEJBQTBCO0FBQzNCOztBQUVBO0NBQ0MsMEJBQTBCO0FBQzNCOztBQUVBO0NBQ0MscUJBQXFCO0FBQ3RCXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjpnbG9iYWwoLnJ3LWRhdGV0aW1lcGlja2VyKSA+IGlucHV0IHtcXG5cXHRib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuXFxuOmdsb2JhbCgucnctZGF0ZXRpbWVwaWNrZXIpIDpnbG9iYWwoLnJ3LWNhbGVuZGFyLWdyaWQucnctbmF2LXZpZXcpIDpnbG9iYWwoLnJ3LWJ0bikge1xcblxcdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcXG59XFxuXFxuOmdsb2JhbCguZGF0ZVRpbWVQaWNrZXJBdXRvV2lkdGgpIHtcXG5cXHR3aWR0aDogYXV0bztcXG5cXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG59XFxuXFxuOmdsb2JhbCguZGF0ZVRpbWVQaWNrZXJBdXRvV2lkdGgpID4gaW5wdXQge1xcblxcdHdpZHRoOiBhdXRvO1xcbn1cXG5cXG46Z2xvYmFsKC5yZWFjdC1kYXRlcGlja2VyLXdyYXBwZXIpIHtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDtcXG59XFxuXFxuOmdsb2JhbCgucmVhY3QtZGF0ZXBpY2tlcl9faW5wdXQtY29udGFpbmVyKSB7XFxuXFx0ZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7XFxufVxcblxcbjpnbG9iYWwoLnJlYWN0LWRhdGVwaWNrZXItcG9wcGVyKSB7XFxuXFx0ei1pbmRleDogNSAhaW1wb3J0YW50O1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLmxvY2FscyA9IHt9O1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5yY2NzIHtcXG5cXHRtYXJnaW46IDAgIWltcG9ydGFudDtcXG59XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vaW5wdXRzL0NyZWRpdENhcmRJbnB1dC9zdHlsZXMuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0NBQ0Msb0JBQW9CO0FBQ3JCXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIjpnbG9iYWwgLnJjY3Mge1xcblxcdG1hcmdpbjogMCAhaW1wb3J0YW50O1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLmxvY2FscyA9IHt9O1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTsgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICAgIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2YgaXRlbVs1XSAhPT0gXCJ1bmRlZmluZWRcIjtcblxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKTtcbiAgICAgIH1cblxuICAgICAgY29udGVudCArPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuXG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmpvaW4oXCJcIik7XG4gIH07IC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG5cblxuICBsaXN0LmkgPSBmdW5jdGlvbiBpKG1vZHVsZXMsIG1lZGlhLCBkZWR1cGUsIHN1cHBvcnRzLCBsYXllcikge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgdW5kZWZpbmVkXV07XG4gICAgfVxuXG4gICAgdmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcblxuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCB0aGlzLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YXIgaWQgPSB0aGlzW19pXVswXTtcblxuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IG1vZHVsZXMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfaTJdKTtcblxuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGxheWVyICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbVs1XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobWVkaWEpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc3VwcG9ydHMpIHtcbiAgICAgICAgaWYgKCFpdGVtWzRdKSB7XG4gICAgICAgICAgaXRlbVs0XSA9IFwiXCIuY29uY2F0KHN1cHBvcnRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNF0gPSBzdXBwb3J0cztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsaXN0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBsaXN0O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcblxuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGNzc01hcHBpbmcpKSkpO1xuICAgIHZhciBkYXRhID0gXCJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIi5jb25jYXQoYmFzZTY0KTtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IFwiLyojIFwiLmNvbmNhdChkYXRhLCBcIiAqL1wiKTtcbiAgICB2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIFwiLyojIHNvdXJjZVVSTD1cIi5jb25jYXQoY3NzTWFwcGluZy5zb3VyY2VSb290IHx8IFwiXCIpLmNvbmNhdChzb3VyY2UsIFwiICovXCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oXCJcXG5cIik7XG4gIH1cblxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgc3R5bGVzSW5ET00gPSBbXTtcblxuZnVuY3Rpb24gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcikge1xuICB2YXIgcmVzdWx0ID0gLTE7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXNJbkRPTS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdHlsZXNJbkRPTVtpXS5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKSB7XG4gICAgICByZXN1bHQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpIHtcbiAgdmFyIGlkQ291bnRNYXAgPSB7fTtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldO1xuICAgIHZhciBpZCA9IG9wdGlvbnMuYmFzZSA/IGl0ZW1bMF0gKyBvcHRpb25zLmJhc2UgOiBpdGVtWzBdO1xuICAgIHZhciBjb3VudCA9IGlkQ291bnRNYXBbaWRdIHx8IDA7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBcIlwiLmNvbmNhdChpZCwgXCIgXCIpLmNvbmNhdChjb3VudCk7XG4gICAgaWRDb3VudE1hcFtpZF0gPSBjb3VudCArIDE7XG4gICAgdmFyIGluZGV4QnlJZGVudGlmaWVyID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgdmFyIG9iaiA9IHtcbiAgICAgIGNzczogaXRlbVsxXSxcbiAgICAgIG1lZGlhOiBpdGVtWzJdLFxuICAgICAgc291cmNlTWFwOiBpdGVtWzNdLFxuICAgICAgc3VwcG9ydHM6IGl0ZW1bNF0sXG4gICAgICBsYXllcjogaXRlbVs1XVxuICAgIH07XG5cbiAgICBpZiAoaW5kZXhCeUlkZW50aWZpZXIgIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHVwZGF0ZXIgPSBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMuYnlJbmRleCA9IGk7XG4gICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoaSwgMCwge1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiB1cGRhdGVyLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50aWZpZXIpO1xuICB9XG5cbiAgcmV0dXJuIGlkZW50aWZpZXJzO1xufVxuXG5mdW5jdGlvbiBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBhcGkgPSBvcHRpb25zLmRvbUFQSShvcHRpb25zKTtcbiAgYXBpLnVwZGF0ZShvYmopO1xuXG4gIHZhciB1cGRhdGVyID0gZnVuY3Rpb24gdXBkYXRlcihuZXdPYmopIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJiBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJiBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwICYmIG5ld09iai5zdXBwb3J0cyA9PT0gb2JqLnN1cHBvcnRzICYmIG5ld09iai5sYXllciA9PT0gb2JqLmxheWVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgYXBpLnVwZGF0ZShvYmogPSBuZXdPYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVtb3ZlKCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB1cGRhdGVyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChsaXN0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBsaXN0ID0gbGlzdCB8fCBbXTtcbiAgdmFyIGxhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZShuZXdMaXN0KSB7XG4gICAgbmV3TGlzdCA9IG5ld0xpc3QgfHwgW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbaV07XG4gICAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4XS5yZWZlcmVuY2VzLS07XG4gICAgfVxuXG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX2lkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbX2ldO1xuXG4gICAgICB2YXIgX2luZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoX2lkZW50aWZpZXIpO1xuXG4gICAgICBpZiAoc3R5bGVzSW5ET01bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRE9NW19pbmRleF0udXBkYXRlcigpO1xuXG4gICAgICAgIHN0eWxlc0luRE9NLnNwbGljZShfaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxhc3RJZGVudGlmaWVycyA9IG5ld0xhc3RJZGVudGlmaWVycztcbiAgfTtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBtZW1vID0ge307XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuZnVuY3Rpb24gZ2V0VGFyZ2V0KHRhcmdldCkge1xuICBpZiAodHlwZW9mIG1lbW9bdGFyZ2V0XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHZhciBzdHlsZVRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KTsgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcblxuICAgIGlmICh3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQgJiYgc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYWNjZXNzIHRvIGlmcmFtZSBpcyBibG9ja2VkXG4gICAgICAgIC8vIGR1ZSB0byBjcm9zcy1vcmlnaW4gcmVzdHJpY3Rpb25zXG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gc3R5bGVUYXJnZXQuY29udGVudERvY3VtZW50LmhlYWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBtZW1vW3RhcmdldF0gPSBzdHlsZVRhcmdldDtcbiAgfVxuXG4gIHJldHVybiBtZW1vW3RhcmdldF07XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuXG5mdW5jdGlvbiBpbnNlcnRCeVNlbGVjdG9yKGluc2VydCwgc3R5bGUpIHtcbiAgdmFyIHRhcmdldCA9IGdldFRhcmdldChpbnNlcnQpO1xuXG4gIGlmICghdGFyZ2V0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnQnIHBhcmFtZXRlciBpcyBpbnZhbGlkLlwiKTtcbiAgfVxuXG4gIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0QnlTZWxlY3RvcjsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgb3B0aW9ucy5zZXRBdHRyaWJ1dGVzKGVsZW1lbnQsIG9wdGlvbnMuYXR0cmlidXRlcyk7XG4gIG9wdGlvbnMuaW5zZXJ0KGVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG4gIHJldHVybiBlbGVtZW50O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydFN0eWxlRWxlbWVudDsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMoc3R5bGVFbGVtZW50KSB7XG4gIHZhciBub25jZSA9IHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gXCJ1bmRlZmluZWRcIiA/IF9fd2VicGFja19ub25jZV9fIDogbnVsbDtcblxuICBpZiAobm9uY2UpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2UpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKSB7XG4gIHZhciBjc3MgPSBcIlwiO1xuXG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChvYmouc3VwcG9ydHMsIFwiKSB7XCIpO1xuICB9XG5cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpO1xuICB9XG5cbiAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBvYmoubGF5ZXIgIT09IFwidW5kZWZpbmVkXCI7XG5cbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIkBsYXllclwiLmNvbmNhdChvYmoubGF5ZXIubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChvYmoubGF5ZXIpIDogXCJcIiwgXCIge1wiKTtcbiAgfVxuXG4gIGNzcyArPSBvYmouY3NzO1xuXG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cblxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG5cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuXG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuXG4gIGlmIChzb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpLCBcIiAqL1wiKTtcbiAgfSAvLyBGb3Igb2xkIElFXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuXG5cbiAgb3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgaWYgKHN0eWxlRWxlbWVudC5wYXJlbnROb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5cbmZ1bmN0aW9uIGRvbUFQSShvcHRpb25zKSB7XG4gIHZhciBzdHlsZUVsZW1lbnQgPSBvcHRpb25zLmluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKTtcbiAgcmV0dXJuIHtcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShvYmopIHtcbiAgICAgIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKTtcbiAgICB9LFxuICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCk7XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRvbUFQSTsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCkge1xuICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCkge1xuICAgICAgc3R5bGVFbGVtZW50LnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKTtcbiAgICB9XG5cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHlsZVRhZ1RyYW5zZm9ybTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGpzLWpvZGEvY29yZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAdGh4L2RhdGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHRoeC9tb25leVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjcmVkaXQtY2FyZC10eXBlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImRlYnVnXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50ZW1pdHRlcjNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZmxhdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJmb3JtaWtcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaW5wdXRtYXNrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImpzLW1vbmV5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImxvZGFzaC9nZXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibG9kYXNoL3Byb3BlcnR5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImxvZGFzaC91bmlxXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImx1aG5cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtY3JlZGl0LWNhcmRzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWNyZWRpdC1jYXJkcy9lcy9zdHlsZXMtY29tcGlsZWQuY3NzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWRhdGVwaWNrZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3Qtcm91dGVyLWRvbVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC10YWJsZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtZGV2LXJ1bnRpbWVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwic2VtYW50aWMtdWktcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwic29jaWFsLWluc3VyYW5jZS1udW1iZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidXNlLWRlZXAtY29tcGFyZS1lZmZlY3RcIik7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIi8vIERhdGVcbmV4cG9ydCB0eXBlIHtEYXRlUGlja2VyfSBmcm9tICcuL2RhdGUvRGF0ZVBpY2tlcic7XG5leHBvcnQge0xvY2FsRGF0ZVBpY2tlcn0gZnJvbSAnLi9kYXRlL0xvY2FsRGF0ZVBpY2tlcic7XG5leHBvcnQgdHlwZSB7TG9jYWxEYXRlUGlja2VyUHJvcHN9IGZyb20gJy4vZGF0ZS9Mb2NhbERhdGVQaWNrZXInO1xuZXhwb3J0IHtMb2NhbE1vbnRoU2VsZWN0fSBmcm9tICcuL2RhdGUvTG9jYWxNb250aFNlbGVjdCc7XG5leHBvcnQgdHlwZSB7TG9jYWxNb250aFNlbGVjdFByb3BzfSBmcm9tICcuL2RhdGUvTG9jYWxNb250aFNlbGVjdCc7XG5leHBvcnQge0xvY2FsVGltZVBpY2tlcn0gZnJvbSAnLi9kYXRlL0xvY2FsVGltZVBpY2tlcic7XG5leHBvcnQgdHlwZSB7TG9jYWxUaW1lUGlja2VyUHJvcHN9IGZyb20gJy4vZGF0ZS9Mb2NhbFRpbWVQaWNrZXInO1xuZXhwb3J0IHtNb250aERheVBpY2tlcn0gZnJvbSAnLi9kYXRlL01vbnRoRGF5UGlja2VyJztcbmV4cG9ydCB0eXBlIHtNb250aERheVBpY2tlclByb3BzfSBmcm9tICcuL2RhdGUvTW9udGhEYXlQaWNrZXInO1xuZXhwb3J0IHtNb250aFllYXJQaWNrZXJ9IGZyb20gJy4vZGF0ZS9Nb250aFllYXJQaWNrZXInO1xuZXhwb3J0IHR5cGUge01vbnRoWWVhclBpY2tlclByb3BzfSBmcm9tICcuL2RhdGUvTW9udGhZZWFyUGlja2VyJztcbmV4cG9ydCB7WWVhclNlbGVjdH0gZnJvbSAnLi9kYXRlL1llYXJTZWxlY3QnO1xuZXhwb3J0IHR5cGUge1llYXJTZWxlY3RQcm9wc30gZnJvbSAnLi9kYXRlL1llYXJTZWxlY3QnO1xuXG4vLyBGb3JtXG5leHBvcnQge3VzZVRGb3JtLCBURm9ybX0gZnJvbSAnLi9mb3JtL1RGb3JtJztcbmV4cG9ydCB0eXBlIHtURm9ybVByb3BzfSBmcm9tICcuL2Zvcm0vVEZvcm0nO1xuXG4vLyBJbnB1dHNcbmV4cG9ydCB7TWFza2VkSW5wdXR9IGZyb20gJy4vaW5wdXRzL01hc2tlZElucHV0JztcbmV4cG9ydCB0eXBlIHtNYXNrZWRJbnB1dFByb3BzfSBmcm9tICcuL2lucHV0cy9NYXNrZWRJbnB1dCc7XG5leHBvcnQge1JhZGlvR3JvdXB9IGZyb20gJy4vaW5wdXRzL1JhZGlvR3JvdXAnO1xuZXhwb3J0IHR5cGUge1JhZGlvR3JvdXBQcm9wc30gZnJvbSAnLi9pbnB1dHMvUmFkaW9Hcm91cCc7XG5leHBvcnQge1NjcmlwdGVsLCB3aXRoU2NyaXB0ZWx9IGZyb20gJy4vaW5wdXRzL1NjcmlwdGVsJztcbmV4cG9ydCB0eXBlIHtTY3JpcHRlbFByb3BzLCBTY3JpcHRlbE1lc3NhZ2VDbGFzcywgU2NyaXB0ZWxQZW5TdHlsZX0gZnJvbSAnLi9pbnB1dHMvU2NyaXB0ZWwnO1xuZXhwb3J0IHtTY3JpcHRlbElucHV0fSBmcm9tICcuL2lucHV0cy9TY3JpcHRlbElucHV0JztcbmV4cG9ydCB0eXBlIHtTY3JpcHRlbElucHV0UHJvcHN9IGZyb20gJy4vaW5wdXRzL1NjcmlwdGVsSW5wdXQnO1xuZXhwb3J0IHtQaG9uZUlucHV0fSBmcm9tICcuL2lucHV0cy9QaG9uZUlucHV0JztcbmV4cG9ydCB0eXBlIHtQaG9uZUlucHV0UHJvcHN9IGZyb20gJy4vaW5wdXRzL1Bob25lSW5wdXQnO1xuZXhwb3J0IHtDcmVkaXRDYXJkSW5wdXR9IGZyb20gJy4vaW5wdXRzL0NyZWRpdENhcmRJbnB1dCc7XG5leHBvcnQgdHlwZSB7Q3JlZGl0Q2FyZElucHV0UHJvcHN9IGZyb20gJy4vaW5wdXRzL0NyZWRpdENhcmRJbnB1dCc7XG5leHBvcnQge1NpbklucHV0fSBmcm9tICcuL2lucHV0cy9TaW5JbnB1dCc7XG5leHBvcnQgdHlwZSB7U2luSW5wdXRQcm9wc30gZnJvbSAnLi9pbnB1dHMvU2luSW5wdXQnO1xuXG4vLyBUYWJsZVxuZXhwb3J0IHthZGRSb3dPblRhYiwgTW9uZXlFZGl0Q2VsbCwgU3RyaW5nRWRpdENlbGwsIE1vbmV5U3VtRm9vdGVyLCBNb25leUNlbGwsIFRhYmxlSW5wdXQsIEhvdmVyQ2VsbCwgRHJvcGRvd25DZWxsfSBmcm9tICcuL2lucHV0cy9UYWJsZUlucHV0JztcbmV4cG9ydCB0eXBlIHtBZGRSb3dPblRhYklmfSBmcm9tICcuL2lucHV0cy9UYWJsZUlucHV0JztcblxuLy8gTW9uZXlcbmV4cG9ydCB7TW9uZXlJbnB1dH0gZnJvbSAnLi9tb25leS9Nb25leUlucHV0JztcbmV4cG9ydCB0eXBlIHtNb25leUlucHV0UHJvcHN9IGZyb20gJy4vbW9uZXkvTW9uZXlJbnB1dCc7XG5leHBvcnQge01vbmV5Q3VycmVuY3lJbnB1dH0gZnJvbSAnLi9tb25leS9Nb25leUN1cnJlbmN5SW5wdXQnO1xuZXhwb3J0IHR5cGUge01vbmV5Q3VycmVuY3lJbnB1dFByb3BzfSBmcm9tICcuL21vbmV5L01vbmV5Q3VycmVuY3lJbnB1dCc7XG5cbi8vIFN0ZXBcbmV4cG9ydCB7Rm9ybVN0ZXAsIFN0ZXBQcm92aWRlciwgdXNlU3RlcCwgU3RlcH0gZnJvbSAnLi9zdGVwJztcbiJdLCJuYW1lcyI6WyJEYXRlUGlja2VyIiwidG9EYXRlIiwidG9Mb2NhbERhdGUiLCJkZWJ1ZyIsIlJlYWN0IiwiTWFza2VkRGF0ZUlucHV0IiwiZCIsIkxvY2FsRGF0ZVBpY2tlciIsInByb3BzIiwibWluRGF0ZSIsIm1heERhdGUiLCJ2YWx1ZSIsIm9uQ2hhbmdlIiwib25CbHVyIiwiYXMiLCJhY3Rpb24iLCJhY3Rpb25Qb3NpdGlvbiIsImNsYXNzTmFtZSIsImVycm9yIiwiZmx1aWQiLCJmb2N1cyIsImljb24iLCJpY29uUG9zaXRpb24iLCJpbnZlcnRlZCIsImxhYmVsIiwibGFiZWxQb3NpdGlvbiIsImxvYWRpbmciLCJzaXplIiwidGFiSW5kZXgiLCJ0cmFuc3BhcmVudCIsInJlc3QiLCJzZWxlY3RlZCIsImlucHV0UHJvcHMiLCJkYXRlIiwiZm9yd2FyZFJlZiIsIk1hc2tlZElucHV0IiwiTWFza2VkRGF0ZUlucHV0SW5uZXIiLCJyZWYiLCJuYW1lIiwiYWxpYXMiLCJpbnB1dEZvcm1hdCIsInRhcmdldCIsIkxvY2FsRGF0ZSIsIlNlbGVjdCIsIm1vbnRoT3B0aW9ucyIsInRleHQiLCJrZXkiLCJMb2NhbE1vbnRoU2VsZWN0IiwieWVhciIsImhhbmRsZUJsdXIiLCJ0aGVZZWFyIiwibm93IiwibW9udGhWYWx1ZSIsImV2IiwidiIsIm9mIiwiTG9jYWxUaW1lIiwidG9Mb2NhbFRpbWUiLCJNYXNrZWRUaW1lSW5wdXQiLCJMb2NhbFRpbWVQaWNrZXIiLCJkaXNhYmxlZCIsIm9mU2Vjb25kT2ZEYXkiLCJNYXNrZWRUaW1lSW5wdXRJbm5lciIsIklucHV0IiwibW9udGhzIiwiTW9udGhEYXlIZWFkZXIiLCJnZXRNb250aCIsImRlY3JlYXNlTW9udGgiLCJwcmV2TW9udGhCdXR0b25EaXNhYmxlZCIsImluY3JlYXNlTW9udGgiLCJuZXh0TW9udGhCdXR0b25EaXNhYmxlZCIsIk1vbnRoRGF5UGlja2VyIiwiTW9udGhZZWFyUGlja2VyIiwidW5kZWZpbmVkIiwid2l0aERheU9mTW9udGgiLCJvZkVwb2NoRGF5IiwicGx1c01vbnRocyIsIm1pbnVzRGF5cyIsInBsdXNZZWFycyIsIkljb24iLCJCdXR0b24iLCJEcm9wZG93biIsIlNlZ21lbnQiLCJZZWFyU2VsZWN0IiwidGhpc1llYXIiLCJEYXRlIiwiZ2V0RnVsbFllYXIiLCJtaW5ZZWFyIiwibWF4WWVhciIsImF2YWlsYWJsZVllYXJzIiwiaSIsInB1c2giLCJ0b1N0cmluZyIsInBhZGRpbmciLCJtYXJnaW4iLCJlIiwidmFsIiwibWFyZ2luUmlnaHQiLCJpc0Z1bmN0aW9uIiwiRm9ybWlrUHJvdmlkZXIiLCJpc0VtcHR5Q2hpbGRyZW4iLCJ1c2VURm9ybSIsIlRGb3JtIiwidGJhZyIsImNvbXBvbmVudCIsInJlbmRlciIsImNoaWxkcmVuIiwiaW5uZXJSZWYiLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwiY2hpbGQiLCJjcmVhdGVFbGVtZW50IiwiQ2hpbGRyZW4iLCJvbmx5IiwiZmxhdHRlbiIsInVzZUZvcm1payIsImdldCIsInByb3BlcnR5IiwidW5pcSIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiTWVzc2FnZSIsImNvbmZpZyIsImZvcm1payIsIm9uVmFsaWRhdGUiLCJpc1ZhbGlkIiwiZ2V0U3VibWl0Rm4iLCJzdWJtaXRGb3JtIiwidmFsdWVzIiwiZXJyb3JDbGVhcmVkIiwic2V0RXJyb3JDbGVhcmVkIiwibWVzc2FnZSIsImlzU3VibWl0dGluZyIsImZsYXRXYXJuaW5ncyIsImVycm9ycyIsImZsYXRUb3VjaGVkIiwidG91Y2hlZCIsIndhcm5pbmdzIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsIm1lbW8iLCJpc1RvdWNoZWQiLCJzdWJtaXRDb3VudCIsImVycm9ySGVhZGVyIiwiZ3JhcGhRTEVycm9ycyIsImVycm9yTWVzc2FnZSIsInNsaWNlIiwiaW5kZXhPZiIsImhhc1dhcm5pbmdzIiwibGVuZ3RoIiwiaGFzRXJyb3JzIiwicmVuZGVyV2FybmluZ3MiLCJvdmVyZmxvdyIsIm1heEhlaWdodCIsIm1hcCIsIm1zZyIsImZpZWxkRXJyb3IiLCJmaWVsZE5hbWUiLCJoYW5kbGVTdWJtaXQiLCJzdWJtaXREaXNhYmxlZCIsImVycm9yTWFya2VkQ2xlYXJlZCIsImZvcm1FcnJvciIsImZvcm1hdERhdGUiLCJDcmVkaXRDYXJkcyIsIkZvcm0iLCJHcmlkIiwiQ3JlZGl0Q2FyZE51bWJlcklucHV0IiwiQ3JlZGl0Q2FyZElucHV0IiwibnVtYmVyIiwiY3ZjIiwiZXhwaXJ5Iiwic2V0Rm9jdXMiLCJmb3JtYXQiLCJhIiwiYiIsImNyZWRpdENhcmRUeXBlIiwidmFsaWRhdGUiLCJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VNYXNrZWRJbnB1dCIsImdldEljb24iLCJ0eXBlIiwic2V0SWNvbiIsImNvbG9yIiwic2V0Q29sb3IiLCJjaGVja1ZhbGlkYXRpb24iLCJ2YWx1ZUFycmF5IiwibnVtIiwiam9pbiIsInJlcGxhY2VBbGwiLCJ0eXAiLCJjcmVkaXRDYXJkTWFzayIsIm1hc2siLCJpc0NvbXBsZXRlIiwiYXV0b1VubWFzayIsImNhcmROdW1iZXJSZWYiLCJpbnB1dFJlZiIsIklucHV0bWFzayIsInVzZVJlZiIsInVzZURlZXBDb21wYXJlRWZmZWN0Iiwib25TZXQiLCJpbnB1dEVsZW1lbnQiLCJtYXNrSW5zdGFuY2UiLCJjdXJyZW50IiwiRXJyb3IiLCJvbmNvbXBsZXRlIiwib25jbGVhcmVkIiwib25pbmNvbXBsZXRlIiwicmVtb3ZlIiwiUGhvbmVJbnB1dCIsImV4dGVuc2lvbiIsImdyZWVkeSIsImNsb25lRWxlbWVudCIsIlJhZGlvIiwiRm9ybVJhZGlvIiwiUmFkaW9Hcm91cCIsImFyZ3MiLCJjaGVja2VkIiwiU2NyaXB0ZWxDb250ZXh0IiwiU2NyaXB0ZWxTb2NrZXQiLCJTY3JpcHRlbCIsIm9tbmlzY3JpcHRVcmwiLCJpbWFnZVR5cGUiLCJzY2FsZSIsImNyb3AiLCJwZW5TdHlsZSIsInNvY2tldCIsInNldFJlbmRlciIsInNldExvYWRpbmciLCJpc1NpZ25pbmciLCJzZXRJc1NpZ25pbmciLCJvbiIsImNsb3NlIiwicmVuZGVySW1hZ2UiLCJjcmVhdGVDb250ZXh0Iiwid2l0aFNjcmlwdGVsIiwiU2NyaXB0ZWxQZW5TdHlsZSIsIlNjcmlwdGVsTWVzc2FnZUNsYXNzIiwiRXZlbnRFbWl0dGVyIiwic2VydmVyQ29ubmVjdGVkIiwic2VydmVySW5mbyIsImRldmljZXMiLCJkZXZpY2UiLCJzZW5kIiwiSlNPTiIsInN0cmluZ2lmeSIsIl9jbGFzcyIsInV1aWQiLCJkZXZpY2VDb25uZWN0ZWQiLCJyZW5kZXJTZXR0aW5ncyIsInJlbmRlckZ1bmN0aW9uIiwiUGxhaW4iLCJldmVudEVtaXR0ZXIiLCJ3aWR0aCIsImhlaWdodCIsImVtaXQiLCJvcHRpb25zIiwiV2ViU29ja2V0Iiwib25vcGVuIiwib25jbG9zZSIsIm9ubWVzc2FnZSIsInBhcnNlIiwiZGF0YSIsIkNvbm5lY3Rpb25PcGVuIiwiRGV2aWNlT3BlblJlc3BvbnNlIiwiUmVuZGVyZWRJbWFnZSIsIlNjcmlwdGVsRXhjZXB0aW9uIiwiQnV0dG9uUHJlc3MiLCJCdXR0b25Eb3duIiwiUGVuTW92ZSIsIlBlblVwIiwiV3JhcHBlZENvbXBvbmVudCIsInNjcmlwdGVsUHJvcHMiLCJ1c2VDb250ZXh0IiwiSW1hZ2UiLCJTY3JpcHRlbElucHV0IiwiYnV0dG9uVGV4dCIsImN0eCIsImVudGVyU2lnbmF0dXJlIiwic2V0RW50ZXJTaWduYXR1cmUiLCJ0aW1lc3RhbXAiLCJjYWxpYnJhdGUiLCJTSU4iLCJTaW5JbnB1dCIsIkRyb3Bkb3duQ2VsbCIsImRyb3Bkb3duUHJvcHMiLCJEcm9wZG93bkNlbGxGbiIsInJvd0luZGV4Iiwicm93IiwiaW5kZXgiLCJpZCIsImNvbHVtbiIsInVwZGF0ZURhdGEiLCJldmVudCIsIkhvdmVyQ2VsbCIsIkhvdmVyQ2VsbEZuIiwiQWN0aW9uIiwiaG92ZXJSb3ciLCJ0ZXh0QWxpZ24iLCJmb3JtYXRNb25leSIsIk1vbmV5Q2VsbCIsIk1vbmV5Q2VsbEZuIiwib3ZlcnJpZGVWYWx1ZSIsIk1vbmV5SW5wdXQiLCJhZGRSb3dPblRhYiIsIk1vbmV5RWRpdENlbGwiLCJvcHRzIiwiTW9uZXlFZGl0Q2VsbEZuIiwiaW5pdGlhbFZhbHVlIiwic2V0VmFsdWUiLCJhZGRSb3dPblRhYklmIiwidG9Nb25leSIsIk1vbmV5U3VtRm9vdGVyIiwiaW5mbyIsInN1bSIsInJvd3MiLCJhZGQiLCJTdHJpbmdFZGl0Q2VsbCIsIlN0cmluZ0VkaXRDZWxsRm4iLCJGaWVsZEFycmF5IiwidXNlVGFibGUiLCJUYWJsZSIsIlRhYmxlSW5wdXRUYWJsZSIsImNvbHVtbnMiLCJhcnJheUhlbHBlcnMiLCJzZXRGaWVsZFZhbHVlIiwiY3JlYXRlUm93IiwidGFibGVQcm9wcyIsImhlYWRlclJvd1Byb3BzIiwiaGVhZGVyQ2VsbFByb3BzIiwiYm9keVByb3BzIiwicm93UHJvcHMiLCJjZWxsUHJvcHMiLCJmb290ZXJDZWxsUHJvcHMiLCJmb290ZXJSb3dQcm9wcyIsImNvbHMiLCJ2YWxzIiwic2V0SG92ZXJSb3ciLCJjb2x1bW5JZCIsImFkZFJvdyIsImdldFRhYmxlUHJvcHMiLCJnZXRUYWJsZUJvZHlQcm9wcyIsImhlYWRlckdyb3VwcyIsInByZXBhcmVSb3ciLCJmb290ZXJHcm91cHMiLCJoYXNGb290ZXIiLCJzb21lIiwiZmciLCJoZWFkZXJzIiwiZmdoIiwiRm9vdGVyIiwiZm9vdGVyIiwiZ3JvdXAiLCJnZXRGb290ZXJHcm91cFByb3BzIiwiZ2V0Rm9vdGVyUHJvcHMiLCJoZWFkZXJHcm91cCIsImdldEhlYWRlckdyb3VwUHJvcHMiLCJnZXRIZWFkZXJQcm9wcyIsImdldFJvd1Byb3BzIiwiY2VsbHMiLCJjZWxsIiwiZ2V0Q2VsbFByb3BzIiwiVGFibGVJbnB1dCIsInJvd3NMZW5ndGgiLCJzaGlmdEtleSIsIk1vbmV5IiwiTGFiZWwiLCJ1c2VNb25leUlucHV0IiwiTW9uZXlDdXJyZW5jeUlucHV0IiwicHJlZml4IiwiZGVmYXVsdEN1cnJlbmN5Iiwic2hvd1ByZWZpeCIsIndob2xlTnVtYmVyIiwiY3VycmVuY2llcyIsImxvY2tlZCIsImhhbmRsZUNoYW5nZSIsImhhbmRsZURyb3Bkb3duQ2hhbmdlIiwibmV3Q3VycmVuY3lDb2RlIiwibmV3TW9uZXkiLCJhbW91bnQiLCJjdXJyZW5jeUNvZGUiLCJjdXJyZW5jeSIsImNvZGUiLCJncm91cFNlcGFyYXRvciIsImRpZ2l0cyIsImRlY2ltYWxfZGlnaXRzIiwiZGlnaXRzT3B0aW9uYWwiLCJzeW1ib2wiLCJwbGFjZWhvbGRlciIsInNldFZhbCIsInRvRGVjaW1hbCIsIndoYXRDdXJyZW50bHlJc0Rpc3BsYXllZCIsIndoYXRXZUFyZVNldHRpbmciLCJ1c2VTdGVwIiwiRm9ybVN0ZXAiLCJzdGF0ZSIsInN0ZXBLZXkiLCJmb3JtIiwib25TdWJtaXQiLCJ0aXRsZSIsIlN0ZXAiLCJQcm9tcHQiLCJTZW1hbnRpY1N0ZXAiLCJTdGVwQ29udGV4dCIsIlN0ZXBQcm92aWRlciIsInNldFN0YXRlIiwiY3VycmVudFN0ZXAiLCJzZXRDdXJyZW50U3RlcCIsInNldElzU3VibWl0dGluZyIsInRpdGxlcyIsImZvckVhY2giLCJoaWRkZW4iLCJzdGVwIiwib25OYXZpZ2F0ZSIsInZlcnRpY2FsIiwid2Fybk9uUmVyb3V0ZSJdLCJzb3VyY2VSb290IjoiIn0=
|