my-orders-tickets-widget 1.0.1 → 1.0.2

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.
Files changed (2) hide show
  1. package/dist/index.js +11 -13
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -5558,11 +5558,9 @@ __webpack_require__.r(__webpack_exports__);
5558
5558
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__);
5559
5559
  /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ "@mui/material");
5560
5560
  /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_2__);
5561
- /* harmony import */ var _utils_summitUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/summitUtils */ "./src/utils/summitUtils.js");
5562
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/SummitHeader/styles.module.scss");
5563
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
5564
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__);
5565
-
5561
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/SummitHeader/styles.module.scss");
5562
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
5563
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__);
5566
5564
 
5567
5565
 
5568
5566
 
@@ -5572,8 +5570,8 @@ const SummitHeader = () => {
5572
5570
  const {
5573
5571
  summit
5574
5572
  } = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useSelector)(state => state.widgetState || {}, react_redux__WEBPACK_IMPORTED_MODULE_1__.shallowEqual);
5575
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
5576
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.widgetHeader,
5573
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
5574
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__.widgetHeader,
5577
5575
  sx: {
5578
5576
  padding: {
5579
5577
  xs: 2,
@@ -5582,12 +5580,12 @@ const SummitHeader = () => {
5582
5580
  }
5583
5581
  },
5584
5582
  "data-testid": "my-orders-ticket-header",
5585
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("h2", {
5586
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.summitTitleDate,
5583
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("h2", {
5584
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__.summitTitleDate,
5587
5585
  children: summit === null || summit === void 0 ? void 0 : summit.name
5588
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("h2", {
5589
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.summitTitleDate,
5590
- children: (0,_utils_summitUtils__WEBPACK_IMPORTED_MODULE_3__.getSummitFormattedDate)(summit)
5586
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("h2", {
5587
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_3__.summitTitleDate,
5588
+ children: summit === null || summit === void 0 ? void 0 : summit.dates_label
5591
5589
  })]
5592
5590
  });
5593
5591
  };
@@ -10198,4 +10196,4 @@ MyOrdersMyTicketsWidget.propTypes = {
10198
10196
  /******/ })()
10199
10197
  ;
10200
10198
  });
10201
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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O0FBQ0E7QUFDd0Q7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSHhEO0FBQ0E7QUFDQTtBQUNBO0FBQ3dFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSnhFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnSDs7Ozs7Ozs7Ozs7Ozs7O0FDTmhIO0FBQ0E7QUFDMEM7Ozs7Ozs7Ozs7Ozs7OztBQ0YxQztBQUNBO0FBQzBCOzs7Ozs7Ozs7Ozs7Ozs7O0FDRjFCO0FBQ0E7QUFDQTtBQUM0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNINUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDOFg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25COVg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnTTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNSaE07QUFDQTtBQUNBO0FBQ0E7QUFDZ0U7Ozs7Ozs7Ozs7Ozs7OztBQ0poRTtBQUNBO0FBQ21DOzs7Ozs7Ozs7OztBQ0ZuQzs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7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TUFBQyxDQUNHO0lBQUMsQ0FDWjtFQUFDLENBQ04sQ0FBQztBQUVmLENBQUM7QUFFRDhRLHVCQUF1QixDQUFDOWlDLFNBQVMsR0FBRztFQUNsQ2c1QixRQUFRLEVBQUUzNkIsMERBQWdCO0VBQzFCMGtDLFlBQVksRUFBRTFrQywwREFBZ0I7RUFDOUI3TSxNQUFNLEVBQUU2TSwwREFBZ0I7RUFDeEJoSixVQUFVLEVBQUVnSiwwREFBZ0I7RUFDNUI1TSxJQUFJLEVBQUU0TSwwREFBZ0I7RUFDdEIwNkIsUUFBUSxFQUFFMTZCLDBEQUFnQjtFQUMxQjNFLGFBQWEsRUFBRTJFLHdEQUFjbUQ7QUFDL0IsQ0FBQztBQUVELGlFQUFlc2hDLHVCQUF1QixFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvYWN0aW9ucy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db25maXJtRGlhbG9nL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvcHlUZXh0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbU5vdGlmaWNhdGlvbi9Db250ZXh0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbU5vdGlmaWNhdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21UaGVtZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9Ecm9wZG93blF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Bc3NpZ25lZEZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0JhZGdlRmVhdHVyZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0ZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0ZyZWVQYWlkRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvUHJvbW9Db2RlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvU2VhcmNoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvU29ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1N0YXR1c0ZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1RpY2tldFR5cGVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Gb3JtRm9vdGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xhYmVscy9FcnJvckxhYmVsLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xvYWRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTm9UaWNrZXRzRm91bmQvVGlja2V0c0ljb24uanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTm9UaWNrZXRzRm91bmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L09yZGVyU3VtbWFyeVRhYmxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9SZWZ1bmRFbWFpbFN1cHBvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvQXNzaWduZWRUb01lLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvQXR0ZW5kZWVTdGF0dXMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9CYWRnZUZlYXR1cmVJbWFnZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdEl0ZW0uanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFJlcXVlc3RlZFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmRTdGF0dXMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmlnaHREcmF3ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvU3VtbWl0SGVhZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RhYldyYXBwZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvQXNzaWduT3B0aW9ucy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9EZWxlZ2F0ZUZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvSGVhZGVyL0Fzc2lnbkhlYWRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvUmVhc3NpZ25IZWFkZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvUmVhc3NpZ25Gb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9Db21wYW55RmllbGQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldERldGFpbEhlYWRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRUYWJzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFdyYXBwZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZUdldFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlU2Nyb2xsVG9FcnJvci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlVGlja2V0RGV0YWlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaTE4bi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvcmVkdWNlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvc3RvcmUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2F1dGguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3N1bW1pdFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy90aWNrZXRVdGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db3B5VGV4dC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRm9ybUZvb3Rlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL05vVGlja2V0c0ZvdW5kL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3Qvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SaWdodERyYXdlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvU3VtbWl0SGVhZGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9Bc3NpZ25PcHRpb25zL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRUYWJzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0J1dHRvblwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudFRleHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1RpdGxlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAc2VudHJ5L3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZm9ybWlrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaWR0b2tlbi12ZXJpZmllclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm1vbWVudC10aW1lem9uZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInAtbGltaXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwcm9wLXR5cGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXFyLWNvZGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0L2pzeC1ydW50aW1lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJ5dXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL215LW9yZGVycy10aWNrZXRzLXdpZGdldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgKCkgPT4ge1xucmV0dXJuICIsImltcG9ydCB7XG4gIGF1dGhFcnJvckhhbmRsZXIsXG4gIGNyZWF0ZUFjdGlvbixcbiAgZGVsZXRlUmVxdWVzdCxcbiAgZ2V0UmVxdWVzdCxcbiAgcHV0UmVxdWVzdCxcbiAgc3RhcnRMb2FkaW5nLFxuICBzdG9wTG9hZGluZ1xufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQgcExpbWl0IGZyb20gXCJwLWxpbWl0XCI7XG5pbXBvcnQgeyBnZXRJZFRva2VuIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0IHsgb2JqZWN0VG9RdWVyeVN0cmluZyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIjtcbmltcG9ydCBJZFRva2VuVmVyaWZpZXIgZnJvbSBcImlkdG9rZW4tdmVyaWZpZXJcIjtcbmltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBhdXRoUHJvbWlzZVJlamVjdCwgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgfSBmcm9tIFwiLi91dGlscy9hdXRoXCI7XG5pbXBvcnQge1xuICBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICBFUlJPUl9DT0RFUyxcbiAgRklGVFlfUEVSX1BBR0UsXG4gIEZJTFRFUl9BQ1RJT04sXG4gIEZJUlNUX1BBR0UsXG4gIFBST01JU0VfQkFUQ0hfTElNSVRcbn0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBSRVNFVF9TVEFURSA9IFwiUkVTRVRfU1RBVEVcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9GSUxURVIgPSBcIlJFU0VUX0ZJTFRFUlwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX0FQSV9FUlJPUiA9IFwiUkVTRVRfQVBJX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU0VUX1NUQVRFID0gXCJTRVRfU1RBVEVcIjtcbmV4cG9ydCBjb25zdCBTRVRfQVBJX0VSUk9SID0gXCJTRVRfQVBJX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgQ0hBTkdFX0ZJTFRFUiA9IFwiQ0hBTkdFX0ZJTFRFUlwiO1xuZXhwb3J0IGNvbnN0IENIQU5HRV9TT1JUID0gXCJDSEFOR0VfU09SVFwiO1xuXG4vLyBPUkRFUlMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX1VTRVJfT1JERVJTID0gXCJHRVRfT1JERVJTXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX09SREVSID0gXCJSRUZVTkRfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBTRVRfQUNUSVZFX09SREVSX0lEID0gXCJTRVRfQUNUSVZFX09SREVSX0lEXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1VTRVJfT1JERVJTID0gXCJGSUxURVJfVVNFUl9PUkRFUlNcIjtcblxuLy8gVElDS0VUUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfTVlfQVNTSUdORURfVElDS0VUUyA9IFwiR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFNcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfVElDS0VUID0gXCJVUERBVEVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfVElDS0VUID0gXCJSRVNFVF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX1RJQ0tFVCA9IFwiUkVDRUlWRV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRU1PVkVfVElDS0VUX0FUVEVOREVFID0gXCJSRU1PVkVfVElDS0VUX0FUVEVOREVFXCI7XG5leHBvcnQgY29uc3QgQVNTSUdOX1RJQ0tFVCA9IFwiQVNTSUdOX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IERFTEVHQVRFX1RJQ0tFVCA9IFwiREVMRUdBVEVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX1RJQ0tFVCA9IFwiUkVGVU5EX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFU0VORF9OT1RJRklDQVRJT04gPSBcIlJFU0VORF9OT1RJRklDQVRJT05cIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRfREVUQUlMUyA9IFwiR0VUX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMgPSBcIlJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIixcbiAgZXh0cmFRdWVzdGlvbnM6IFwiZXh0cmFfcXVlc3Rpb25zXCJcbn07XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCA9XG4gIFwiVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRFwiO1xuXG4vLyBVU0VSIENPTlRTXG5leHBvcnQgY29uc3QgU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNUT1BfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX0lEUF9QUk9GSUxFID0gXCJVUERBVEVfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTRVRfVVNFUiA9IFwiU0VUX1VTRVJcIjtcblxuLy8gU1VNTUlUIENPTlNUU1xuZXhwb3J0IGNvbnN0IFNFVF9TVU1NSVQgPSBcIlNFVF9TVU1NSVRcIjtcbmV4cG9ydCBjb25zdCBHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMgPSBcIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HU1wiO1xuZXhwb3J0IGNvbnN0IENMRUFSX01BUktFVElOR19TRVRUSU5HUyA9IFwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5cbmV4cG9ydCBjb25zdCByZXNldFRpY2tldCA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfVElDS0VUKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0U3RhdGUgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX1NUQVRFKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RmlsdGVyID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9GSUxURVIpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRFcnJvciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfQVBJX0VSUk9SKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFJlZHVjZXJTdGF0ZSA9IChzdW1taXQsIHVzZXIpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1NUQVRFKSh7IHN1bW1pdCwgdXNlciB9KSk7XG59O1xuXG4vLyBGSUxURVIgLyBTT1JUIENPTlNUQU5UU1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfREFURSA9IFwiRklMVEVSX1ZBUl9EQVRFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFID0gXCJGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFID0gXCJGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQgPSBcIkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMgPSBcIkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9QUk9NT0NPREUgPSBcIkZJTFRFUl9WQVJfUFJPTU9DT0RFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9GUkVFX1BBSUQgPSBcIkZJTFRFUl9WQVJfRlJFRV9QQUlEXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgPSBcIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXCI7XG5cbi8vIEZJTFRFUiAvIFNPUlQgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IGNoYW5nZUZpbHRlciA9IChmaWx0ZXIpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oQ0hBTkdFX0ZJTFRFUikoZmlsdGVyKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hhbmdlU29ydCA9IChzb3J0KSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKENIQU5HRV9TT1JUKShzb3J0KSk7XG59O1xuXG4vLyBGSUxURVIvU09SVCBQQVJTRVxuY29uc3QgcGFyc2VGaWx0ZXIgPSAoZmlsdGVyT2JqLCBmaWx0ZXJBY3Rpb24pID0+IHtcbiAgY29uc3QgZmlsdGVyID0gW107XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9EQVRFKSB7XG4gICAgZmlsdGVyLnB1c2goYGNyZWF0ZWRbXSR7ZmlsdGVyT2JqLmxvd2VyfSYmJHtmaWx0ZXJPYmoudXBwZXJ9YCk7XG4gIH1cbiAgaWYgKFxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgJiZcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLmxlbmd0aCA+IDBcbiAgKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBmaWx0ZXJBY3Rpb24gPT09IEZJTFRFUl9BQ1RJT04uT1JERVJTXG4gICAgICAgID8gXCJ0aWNrZXRzX2JhZGdlX2ZlYXR1cmVzX2lkXCJcbiAgICAgICAgOiBcImJhZGdlX2ZlYXR1cmVzX2lkXCI7XG4gICAgZmlsdGVyLnB1c2goXG4gICAgICBgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLmpvaW4oXCJ8fFwiKX1gXG4gICAgKTtcbiAgfVxuICBpZiAoXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUgJiZcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfVFlQRS5sZW5ndGggPiAwXG4gICkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgZmlsdGVyQWN0aW9uID09PSBGSUxURVJfQUNUSU9OLk9SREVSU1xuICAgICAgICA/IFwidGlja2V0c190eXBlX2lkXCJcbiAgICAgICAgOiBcInRpY2tldF90eXBlX2lkXCI7XG4gICAgZmlsdGVyLnB1c2goXG4gICAgICBgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfVFlQRS5qb2luKFwifHxcIil9YFxuICAgICk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgZmlsdGVyQWN0aW9uID09PSBGSUxURVJfQUNUSU9OLk9SREVSU1xuICAgICAgICA/IFwidGlja2V0c19hc3NpZ25lZF90b1wiXG4gICAgICAgIDogXCJhc3NpZ25lZF90b1wiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRH1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBmaWx0ZXJBY3Rpb24gPT09IEZJTFRFUl9BQ1RJT04uT1JERVJTXG4gICAgICAgID8gXCJ0aWNrZXRzX293bmVyX3N0YXR1c1wiXG4gICAgICAgIDogXCJvd25lcl9zdGF0dXNcIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PV05FUl9TVEFUVVN9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX0ZSRUVfUEFJRCkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgZmlsdGVyQWN0aW9uID09PSBGSUxURVJfQUNUSU9OLk9SREVSUyA/IFwiYW1vdW50XCIgOiBcImZpbmFsX2Ftb3VudFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX0ke2ZpbHRlck9iai5GSUxURVJfVkFSX0ZSRUVfUEFJRCA9PT0gXCJGcmVlXCIgPyBcIj09MFwiIDogXCI+MFwifWBcbiAgICApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9QUk9NT0NPREUpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGZpbHRlckFjdGlvbiA9PT0gRklMVEVSX0FDVElPTi5PUkRFUlNcbiAgICAgICAgPyBcInRpY2tldHNfcHJvbW9fY29kZVwiXG4gICAgICAgIDogXCJwcm9tb19jb2RlXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfUFJPTU9DT0RFfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIpIHtcbiAgICBsZXQgaW5wdXRGaWx0ZXJzID0gXCJcIjtcblxuICAgIHN3aXRjaCAoZmlsdGVyQWN0aW9uKSB7XG4gICAgICBjYXNlIEZJTFRFUl9BQ1RJT04uT1JERVJTOiB7XG4gICAgICAgIGlucHV0RmlsdGVycyA9IGBudW1iZXI9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfSx0aWNrZXRzX293bmVyX2VtYWlsPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn0sdGlja2V0c19udW1iZXI9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBGSUxURVJfQUNUSU9OLlRJQ0tFVFNfQllfT1JERVJTOiB7XG4gICAgICAgIGlucHV0RmlsdGVycyA9IGBudW1iZXI9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfSxvd25lcl9lbWFpbD1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEZJTFRFUl9BQ1RJT04uRVhURVJOQUxfVElDS0VUUzoge1xuICAgICAgICBpbnB1dEZpbHRlcnMgPSBgb3JkZXJfbnVtYmVyPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn0sbnVtYmVyPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn0sb3JkZXJfb3duZXJfZW1haWw9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGZpbHRlci5wdXNoKGlucHV0RmlsdGVycyk7XG4gIH1cbiAgcmV0dXJuIGZpbHRlcjtcbn07XG5cbmNvbnN0IGdldFNvcnREaXJlY3Rpb24gPSAoZGlyZWN0aW9uKSA9PiAoZGlyZWN0aW9uID09PSBcImFzY1wiID8gXCIrXCIgOiBcIi1cIik7XG5cbi8vIHBheWxvYWQ6IHsgaHR0cENvZGUsIHRpdGxlLCBodG1sOiBjb250ZW50LCB0eXBlIH1cbmNvbnN0IGVycm9ySGFuZGxlck5vdGlmeSA9IChwYXlsb2FkLCBjYWxsYmFjaykgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQVBJX0VSUk9SKShwYXlsb2FkKSk7XG4gIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbn07XG5cbmNvbnN0IGN1c3RvbUF1dGhFcnJvckhhbmRsZXIgPSAoZXJyLCByZXMpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChhdXRoRXJyb3JIYW5kbGVyKGVyciwgcmVzLCBlcnJvckhhbmRsZXJOb3RpZnkpKTtcbn07XG5cbmNvbnN0IGN1c3RvbUZldGNoRXJyb3JIYW5kbGVyID0gKHJlc3BvbnNlKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgY29uc3QgY29kZSA9IHJlc3BvbnNlLnN0YXR1cztcbiAgbGV0IG1zZztcbiAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gIHN3aXRjaCAoY29kZSkge1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MDNcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMudXNlcl9ub3RfYXV0aHpcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDAxXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnNlc3Npb25fZXhwaXJlZFwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MTJcIl06XG4gICAgICBtc2cgPSBcIlwiO1xuICAgICAgT2JqZWN0LmVudHJpZXMocmVzcG9uc2UuZXJyb3JzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKE51bWJlci5pc05hTihrZXkpKSB7XG4gICAgICAgICAgbXNnID0gYCR7bXNnfSAke2tleX06IGA7XG4gICAgICAgIH1cblxuICAgICAgICBtc2cgPSBgJHttc2d9ICR7dmFsdWV9IDxicj5gO1xuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNTAwXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnNlcnZlcl9lcnJvclwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBtc2cgPSByZXNwb25zZS5zdGF0dXNUZXh0O1xuICB9XG5cbiAgZGlzcGF0Y2goZXJyb3JIYW5kbGVyTm90aWZ5KHsgdGl0bGU6IGkxOG4udChcImVycm9ycy5lcnJvclwiKSwgaHRtbDogbXNnIH0pKTtcbn07XG5cbi8vIE9SREVSUyBBQ1RJT05TXG5leHBvcnQgY29uc3QgZ2V0VXNlck9yZGVycyA9XG4gIChcbiAgICB7XG4gICAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgICAgZmlsdGVyID0ge30sXG4gICAgICBzb3J0ID0ge31cbiAgICB9LFxuICAgIHNraXBMb2FkaW5nXG4gICkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIG9yZGVyOiBcIi1jcmVhdGVkXCIsXG4gICAgICBcImZpbHRlcltdXCI6IFtcInN0YXR1cz09UGFpZFwiXSxcbiAgICAgIHJlbGF0aW9uczogXCJhcHBsaWVkX3RheGVzLG5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJpZCxjcmVhdGVkLG51bWJlcixhbW91bnQsY3VycmVuY3ksdGF4ZXNfYW1vdW50LGRpc2NvdW50X2Ftb3VudCx0aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUscmVmdW5kZWRfYW1vdW50LHJhd19hbW91bnQsYXBwbGllZF90YXhlcy5pZCxhcHBsaWVkX3RheGVzLm5hbWUsYXBwbGllZF90YXhlcy5hbW91bnRcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyLCBGSUxURVJfQUNUSU9OLk9SREVSUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVVNFUl9PUkRFUlMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9tZWAsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyLFxuICAgICAgeyBmaWx0ZXIsIHNvcnQgfVxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiBwYXlsb2FkKVxuICAgICAgLmNhdGNoKChlKSA9PiBlKVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBpZiAoIXNraXBMb2FkaW5nKSBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2V0QWN0aXZlT3JkZXJJZCA9IChvcmRlcklkKSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQUNUSVZFX09SREVSX0lEKShvcmRlcklkKSk7XG5cbi8vIFVTRVIgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHNldFVzZXIgPSAodXNlcikgPT4gKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1VTRVIpKHVzZXIpKTtcblxuLy8gVElDS0VUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJUaWNrZXRzID1cbiAgKFxuICAgIHtcbiAgICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgICBmaWx0ZXIgPSB7fSxcbiAgICAgIHNvcnQgPSB7fVxuICAgIH0sXG4gICAgc2tpcExvYWRpbmdcbiAgKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCwgdXNlciB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgeyB1c2VyUHJvZmlsZSB9ID0gdXNlcjtcbiAgICBpZiAoIXN1bW1pdCkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBjb25zdCBmaWVsZHMgPSBbXG4gICAgICBcIm9yZGVyLmlkXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2ZpcnN0X25hbWVcIixcbiAgICAgIFwib3JkZXIub3duZXJfbGFzdF9uYW1lXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2VtYWlsXCIsXG4gICAgICBcIm93bmVyLmlkXCIsXG4gICAgICBcIm93bmVyLmVtYWlsXCIsXG4gICAgICBcIm93bmVyLmZpcnN0X25hbWVcIixcbiAgICAgIFwib3duZXIubGFzdF9uYW1lXCIsXG4gICAgICBcIm93bmVyLnN0YXR1c1wiLFxuICAgICAgXCJiYWRnZS5ub25lXCJcbiAgICBdO1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXCJzdGF0dXM9PVBhaWRcIiwgYG9yZGVyX293bmVyX2lkPD4ke3VzZXJQcm9maWxlLmlkfWBdLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLG93bmVyLHRpY2tldF90eXBlLGJhZGdlLGJhZGdlLmZlYXR1cmVzXCIsXG4gICAgICBvcmRlcjogXCItaWRcIixcbiAgICAgIGZpZWxkczogZmllbGRzLmpvaW4oXCIsXCIpLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmUsYmFkZ2UuZmVhdHVyZXNcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlciwgRklMVEVSX0FDVElPTi5FWFRFUk5BTF9USUNLRVRTKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfTVlfQVNTSUdORURfVElDS0VUUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL2FsbC90aWNrZXRzL21lYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAuY2F0Y2goKGUpID0+IGUpXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGlmICghc2tpcExvYWRpbmcpIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRzQnlPcmRlciA9XG4gICh7XG4gICAgb3JkZXJJZCxcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIsXG4gICAgc29ydFxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBcImZpbHRlcltdXCI6IFtdLFxuICAgICAgZmllbGRzOiBcImJhZGdlLm5vbmVcIixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMscmVmdW5kX3JlcXVlc3RzLnJlZnVuZGVkX3RheGVzLHJlZnVuZF9yZXF1ZXN0cy5yZWZ1bmRlZF90YXhlcy50YXgsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlXCIsXG4gICAgICBvcmRlcjogXCIraWRcIixcbiAgICAgIHJlbGF0aW9uczogXCJub25lLGJhZGdlLmZlYXR1cmVzXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIEZJTFRFUl9BQ1RJT04uVElDS0VUU19CWV9PUkRFUlMpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlc2VuZE5vdGlmaWNhdGlvbiA9XG4gICh0aWNrZXQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBjb25zdCB7IG1lc3NhZ2UgfSA9IHRpY2tldDtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRVNFTkRfTk9USUZJQ0FUSU9OKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9hdHRlbmRlZS9yZWludml0ZWAsXG4gICAgICB7IG1lc3NhZ2UgfSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZFRpY2tldCA9XG4gICh7IHRpY2tldCB9KSA9PlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcInJlZnVuZF9yZXF1ZXN0cyx0aWNrZXRfdHlwZVwiLFxuICAgICAgZmllbGRzOiBcInJlZnVuZF9yZXF1ZXN0cy5zdGF0dXNcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVGVU5EX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcmVmdW5kYCxcbiAgICAgIHt9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRCdWxrVGlja2V0cyA9XG4gICh7IHRpY2tldHMgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoKSA9PiB7XG4gICAgY29uc3QgbGltaXQgPSBwTGltaXQoUFJPTUlTRV9CQVRDSF9MSU1JVCk7XG4gICAgY29uc3QgYWxsUmVmdW5kVGlja2V0Q2FsbHMgPSB0aWNrZXRzLm1hcCgodGlja2V0KSA9PlxuICAgICAgbGltaXQoKCkgPT4gZGlzcGF0Y2gocmVmdW5kVGlja2V0KHsgdGlja2V0IH0pKSlcbiAgICApO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChbLi4uYWxsUmVmdW5kVGlja2V0Q2FsbHNdKVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICBjb25zdCBzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQgPSByZXNcbiAgICAgICAgICAuZmlsdGVyKChyKSA9PiByLnJlc3BvbnNlPy5yZWZ1bmRfcmVxdWVzdHM/Lmxlbmd0aClcbiAgICAgICAgICAubWFwKChyKSA9PiByLnJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3NmdWxseVJlcXVlc3RlZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IGUpO1xuICB9O1xuXG4vLyB1cGRhdGUgdGhlIHRpY2tldHMgdGhhdCBoYXZlIGJlZW4gc3VjZXNzZnVsbHkgcmVmdW5kZWRcbmV4cG9ydCBjb25zdCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkID1cbiAgKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpID0+IChkaXNwYXRjaCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEKSh0aWNrZXRzUmVmdW5kUmVxdWVzdGVkKVxuICAgICk7XG5cbi8vIFNVTU1JVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRFeHRyYVF1ZXN0aW9ucyA9XG4gIChhdHRlbmRlZUlkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIHBhZ2U6IDEsXG4gICAgICBwZXJfcGFnZTogRklGVFlfUEVSX1BBR0UsXG4gICAgICBleHBhbmQ6IFwiKnN1Yl9xdWVzdGlvbl9ydWxlcywqc3ViX3F1ZXN0aW9uLCp2YWx1ZXNcIixcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBcImZpbHRlcltdXCI6IFwidGlja2V0c19leGNsdWRlX2luYWN0aXZlcz09dHJ1ZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L2F0dGVuZGVlcy8ke2F0dGVuZGVlSWR9L2FsbG93ZWQtZXh0cmEtcXVlc3Rpb25zYDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLnRoZW4oKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXQgPVxuICAodGlja2V0SWQsIG9yZGVySWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXIscHJvbW9fY29kZVwiLFxuICAgICAgcmVsYXRpb25zOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZSxwcm9tb19jb2RlLm5vbmUsdGlja2V0X3R5cGUubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZSxwcm9tb19jb2RlLmlkLHByb21vX2NvZGUuY29kZSxwcm9tb19jb2RlLmFsbG93c190b19kZWxlZ2F0ZSxwcm9tb19jb2RlLmFsbG93c190b19yZWFzc2lnbix0aWNrZXRfdHlwZS5pZCx0aWNrZXRfdHlwZS5uYW1lLHRpY2tldF90eXBlLmFsbG93c190b19kZWxlZ2F0ZSx0aWNrZXRfdHlwZS5hbGxvd3NfdG9fcmVhc3NpZ24sdGlja2V0X3R5cGUuY29zdCx0aWNrZXRfdHlwZS5jcmVhdGVkXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfWA7XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIGNyZWF0ZUFjdGlvbihSRVNFVF9USUNLRVQpLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfVElDS0VUKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuY29uc3Qgbm9ybWFsaXplVGlja2V0ID0gKGVudGl0eSkgPT4ge1xuICBjb25zdCBub3JtYWxpemVkRW50aXR5ID0geyAuLi5lbnRpdHkgfTtcblxuICBpZiAoIWVudGl0eS5hdHRlbmRlZV9jb21wYW55LmlkKSB7XG4gICAgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55ID0gZW50aXR5LmF0dGVuZGVlX2NvbXBhbnk7XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueTtcbiAgICBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnlfaWQgPSBlbnRpdHkuYXR0ZW5kZWVfY29tcGFueS5pZDtcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVkRW50aXR5O1xufTtcblxuZXhwb3J0IGNvbnN0IHJlZnJlc2hQcm9maWxlID1cbiAgKGRhdGEsIGNvbXBhbnksIHRpY2tldE93bmVyKSA9PlxuICAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IHVwZGF0ZVByb2ZpbGUgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHVzZXIgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHsgdXNlclByb2ZpbGUgfSA9IHVzZXI7XG5cbiAgICAvLyBlbWFpbCBzaG91bGQgbWF0Y2ggKCBvbmx5IHVwZGF0ZSBteSBwcm9maWxlIGlzIHRpY2tldCBiZWxvbmdzIHRvIG1lISlcbiAgICAvLyBhbmQgaWYgdGhlIHRpY2tldCBkb2Vzbid0IGhhdmUgYSBtYW5hZ2VyXG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBjaGFuZ2VzIGluIHRoZSB0aWNrZXQgZGF0YSB0byB1cGRhdGUgdGhlIHByb2ZpbGVcbiAgICBjb25zdCB7XG4gICAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgICBhdHRlbmRlZV9jb21wYW55XG4gICAgfSA9IGRhdGE7XG4gICAgY29uc3QgaGFzTWFuYWdlciA9IHRpY2tldE93bmVyPy5tYW5hZ2VyPy5pZCB8fCB0aWNrZXRPd25lcj8ubWFuYWdlcl9pZDtcbiAgICBjb25zdCBpdHNNZSA9IHVzZXJQcm9maWxlLmVtYWlsID09PSBhdHRlbmRlZV9lbWFpbDtcbiAgICBjb25zdCBwcm9maWxlQ2hhbmdlZCA9XG4gICAgICBhdHRlbmRlZV9jb21wYW55Lm5hbWUgIT09IGNvbXBhbnkgfHxcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUgIT09IHVzZXJQcm9maWxlLmZpcnN0X25hbWUgfHxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZSAhPT0gdXNlclByb2ZpbGUubGFzdF9uYW1lO1xuXG4gICAgaWYgKGl0c01lICYmICFoYXNNYW5hZ2VyICYmIHByb2ZpbGVDaGFuZ2VkKSB7XG4gICAgICBjb25zdCBuZXdQcm9maWxlID0ge1xuICAgICAgICBmaXJzdF9uYW1lOiBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgICAgICBsYXN0X25hbWU6IGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICAgICAgY29tcGFueTogYXR0ZW5kZWVfY29tcGFueS5uYW1lIHx8IGF0dGVuZGVlX2NvbXBhbnlcbiAgICAgIH07XG5cbiAgICAgIC8vIHRoaXMgaXMgYSBjYWxsYmFjayBtZXRob2QgdGhhdCB1cGRhdGVzIHVzZXJQcm9maWxlIGluIEFQSSBhbmQgZXZlbnQtc2l0ZVxuICAgICAgdXBkYXRlUHJvZmlsZShuZXdQcm9maWxlKTtcbiAgICB9XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzYXZlVGlja2V0RGV0YWlscyA9XG4gICh0aWNrZXQsIGFuc3dlcnMpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBpZFRva2VuID0gZ2V0SWRUb2tlbigpO1xuICAgIGxldCBjb21wYW55ID0gXCJcIjtcbiAgICBpZiAoaWRUb2tlbikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdmVyaWZpZXIgPSBuZXcgSWRUb2tlblZlcmlmaWVyKCk7XG4gICAgICAgIGNvbnN0IGp3dCA9IHZlcmlmaWVyLmRlY29kZShpZFRva2VuKTtcbiAgICAgICAgY29tcGFueSA9IGp3dC5wYXlsb2FkLmNvbXBhbnk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSBub3JtYWxpemVUaWNrZXQoYW5zd2Vycyk7XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzL2FsbC90aWNrZXRzLyR7dGlja2V0LmlkfWAsXG4gICAgICBub3JtYWxpemVkRW50aXR5LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2gocmVmcmVzaFByb2ZpbGUoYW5zd2VycywgY29tcGFueSwgdGlja2V0Lm93bmVyKSk7XG4gICAgICB9KVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgYXNzaWduQXR0ZW5kZWUgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGF0dGVuZGVlX2VtYWlsLCBtZXNzYWdlID0gbnVsbCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBjb25zdCBwYXlsb2FkID0geyBhdHRlbmRlZV9lbWFpbCB9O1xuICAgIGlmIChtZXNzYWdlKSBwYXlsb2FkLm1lc3NhZ2UgPSBtZXNzYWdlO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihBU1NJR05fVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2F0dGVuZGVlYCxcbiAgICAgIHBheWxvYWQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlVGlja2V0ID1cbiAgKG9yZGVySWQsIHRpY2tldElkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDogXCJvcmRlciwgb3duZXIsIG93bmVyLmV4dHJhX3F1ZXN0aW9ucywgb3JkZXIuc3VtbWl0XCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlbGV0ZVJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFTU9WRV9USUNLRVRfQVRURU5ERUUpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vYXR0ZW5kZWVgLFxuICAgICAge30sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlYXNzaWduVGlja2V0ID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkgPT4gYXN5bmMgKGRpc3BhdGNoKSA9PlxuICAgIGRpc3BhdGNoKHJlbW92ZVRpY2tldChvcmRlcklkLCB0aWNrZXRJZCkpLnRoZW4oKCkgPT5cbiAgICAgIGRpc3BhdGNoKGFzc2lnbkF0dGVuZGVlKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkpXG4gICAgKTtcblxuZXhwb3J0IGNvbnN0IHVuYXNzaWduVGlja2V0ID0gKG9yZGVySWQsIHRpY2tldElkKSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKHJlbW92ZVRpY2tldChvcmRlcklkLCB0aWNrZXRJZCkpLnRoZW4oKCkgPT4gZGlzcGF0Y2goc3RvcExvYWRpbmcoKSkpO1xuXG5leHBvcnQgY29uc3QgZGVsZWdhdGVUaWNrZXQgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lOiBmaXJzdE5hbWUsXG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWU6IGxhc3ROYW1lLFxuICAgICAgYXR0ZW5kZWVfZW1haWw6IGVtYWlsXG4gICAgfTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oREVMRUdBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2RlbGVnYXRlYCxcbiAgICAgIHBheWxvYWQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZUV4dHJhUXVlc3Rpb25zID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIGFuc3dlcnMsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRQREYgPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBvYmplY3RUb1F1ZXJ5U3RyaW5nKHBhcmFtcyk7XG4gICAgY29uc3QgYXBpVXJsID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L3BkZj8ke3F1ZXJ5U3RyaW5nfWA7XG5cbiAgICByZXR1cm4gZmV0Y2goYXBpVXJsLCB7XG4gICAgICByZXNwb25zZVR5cGU6IFwiQmxvYlwiLFxuICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL3BkZlwiIH1cbiAgICB9KVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuYmxvYigpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnRoZW4oKHBkZikgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChwZGYpO1xuICAgICAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBcInRpY2tldC5wZGZcIjtcbiAgICAgICAgbGluay5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KFwiY2xpY2tcIikpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChjdXN0b21GZXRjaEVycm9ySGFuZGxlcik7XG4gIH07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJAbXVpL21hdGVyaWFsL0J1dHRvblwiO1xuaW1wb3J0IERpYWxvZyBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dcIjtcbmltcG9ydCBEaWFsb2dBY3Rpb25zIGZyb20gXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0FjdGlvbnNcIjtcbmltcG9ydCBEaWFsb2dDb250ZW50IGZyb20gXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0NvbnRlbnRcIjtcbmltcG9ydCBEaWFsb2dDb250ZW50VGV4dCBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50VGV4dFwiO1xuaW1wb3J0IERpYWxvZ1RpdGxlIGZyb20gXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1RpdGxlXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5cbmNvbnN0IENvbmZpcm1EaWFsb2cgPSAoeyBvcGVuLCB0aXRsZSwgYm9keSwgb25DbG9zZSwgb25Db25maXJtIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPERpYWxvZ1xuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICBhcmlhLWxhYmVsbGVkYnk9XCJhbGVydC1kaWFsb2ctdGl0bGVcIlxuICAgICAgYXJpYS1kZXNjcmliZWRieT1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiXG4gICAgPlxuICAgICAgPERpYWxvZ1RpdGxlIGlkPVwiYWxlcnQtZGlhbG9nLXRpdGxlXCI+e3RpdGxlfTwvRGlhbG9nVGl0bGU+XG4gICAgICA8RGlhbG9nQ29udGVudD5cbiAgICAgICAgPERpYWxvZ0NvbnRlbnRUZXh0IGlkPVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAge2JvZHl9XG4gICAgICAgIDwvRGlhbG9nQ29udGVudFRleHQ+XG4gICAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gICAgICA8RGlhbG9nQWN0aW9ucz5cbiAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXtvbkNsb3NlfT57dChcImdlbmVyYWwuY2FuY2VsXCIpfTwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e29uQ29uZmlybX0gYXV0b0ZvY3VzPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb25maXJtXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvRGlhbG9nQWN0aW9ucz5cbiAgICA8L0RpYWxvZz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbmZpcm1EaWFsb2c7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBkZWZhdWx0V2lkdGggPSA5MDtcblxuY29uc3QgQ29weVRleHQgPSAoe1xuICB0ZXh0LFxuICB0b29sdGlwVGV4dCxcbiAgaGlkZUNvcHkgPSBmYWxzZSxcbiAgdHJ1bmNhdGVkID0gdHJ1ZSxcbiAgcmV2ZXJzZWQgPSBmYWxzZSxcbiAgd2lkdGggPSBkZWZhdWx0V2lkdGhcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB0b29sdGlwVGV4dFRvVXNlID0gdG9vbHRpcFRleHQgfHwgdChcImdlbmVyYWwuY29weV90b19jbGlwYm9hcmRcIik7XG4gIGNvbnN0IFt0b29sdGlwLCBzZXRUb29sdGlwXSA9IFJlYWN0LnVzZVN0YXRlKHRvb2x0aXBUZXh0VG9Vc2UpO1xuICBjb25zdCBjbGFzc05hbWVzID0gYCR7dHJ1bmNhdGVkICYmIHN0eWxlcy50cnVuY2F0ZWR9ICR7XG4gICAgcmV2ZXJzZWQgJiYgc3R5bGVzLnJldmVyc2VkXG4gIH1gO1xuXG4gIGNvbnN0IGhhbmRsZUNvcHkgPSAoKSA9PiB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7XG4gICAgc2V0VG9vbHRpcCh0KFwiZ2VuZXJhbC5jb3BpZWRcIikpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0VG9vbHRpcCh0b29sdGlwVGV4dFRvVXNlKTtcbiAgICB9LCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y2xhc3NOYW1lc30gc3R5bGU9e3sgd2lkdGggfX0+XG4gICAgICAgIHt0ZXh0fVxuICAgICAgPC9zcGFuPlxuICAgICAgeyFoaWRlQ29weSAmJiAoXG4gICAgICAgIDxUb29sdGlwIHRpdGxlPXt0b29sdGlwfT5cbiAgICAgICAgICA8Q29udGVudENvcHlJY29uXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb3B5SWNvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvcHl9XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNvcHktbnVtYmVyLWJ1dHRvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNvcHlUZXh0LnByb3BUeXBlcyA9IHtcbiAgdGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdG9vbHRpcFRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGhpZGVDb3B5OiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJ1bmNhdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmV2ZXJzZWQ6IFByb3BUeXBlcy5ib29sLFxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29weVRleHQ7XG4iLCJpbXBvcnQgeyBjcmVhdGVDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQgPSBjcmVhdGVDb250ZXh0KG51bGwpO1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQWxlcnQsIFNuYWNrYmFyLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDaGVja0NpcmNsZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcblxuY29uc3QgQ3VzdG9tTm90aWZpY2F0aW9uID0gKHsgb3Blbiwgb25DbG9zZSwgbWVzc2FnZSwgc2V2ZXJpdHkgfSkgPT4ge1xuICBpZiAoIW1lc3NhZ2UpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPFNuYWNrYmFyXG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIGFuY2hvck9yaWdpbj17eyB2ZXJ0aWNhbDogXCJ0b3BcIiwgaG9yaXpvbnRhbDogXCJjZW50ZXJcIiB9fVxuICAgICAgYXV0b0hpZGVEdXJhdGlvbj17MjAwMH1cbiAgICA+XG4gICAgICA8QWxlcnRcbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgc2V2ZXJpdHk9e3NldmVyaXR5fVxuICAgICAgICB2YXJpYW50PVwiZmlsbGVkXCJcbiAgICAgICAgc3g9e3sgd2lkdGg6IFwiMTAwJVwiLCBiYWNrZ3JvdW5kQ29sb3I6IGAke3NldmVyaXR5fS5saWdodGAgfX1cbiAgICAgICAgaWNvbk1hcHBpbmc9e3tcbiAgICAgICAgICBzdWNjZXNzOiA8Q2hlY2tDaXJjbGVJY29uIGZvbnRTaXplPVwiaW5oZXJpdFwiIC8+LFxuICAgICAgICAgIGVycm9yOiA8RXJyb3JJY29uIGZvbnRTaXplPVwiaW5oZXJpdFwiIC8+XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiPnttZXNzYWdlfTwvVHlwb2dyYXBoeT5cbiAgICAgIDwvQWxlcnQ+XG4gICAgPC9TbmFja2Jhcj5cbiAgKTtcbn07XG5cbkN1c3RvbU5vdGlmaWNhdGlvbi5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgbWVzc2FnZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V2ZXJpdHk6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbU5vdGlmaWNhdGlvbjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxubGV0IGRhcmtDb2xvciA9IFwiXCI7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAvLyBHZXQgdGhlIHJvb3QgZWxlbWVudFxuICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gIC8vIFJldHJpZXZlIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgQ1NTIHZhcmlhYmxlXG4gIGRhcmtDb2xvciA9IGdldENvbXB1dGVkU3R5bGUocm9vdCkuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICBcIi0tY29sb3JfYmFja2dyb3VuZF9kYXJrXCJcbiAgKTtcbn1cblxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHBhbGV0dGU6IHtcbiAgICBwcmltYXJ5OiB7XG4gICAgICBtYWluOiBkYXJrQ29sb3JcbiAgICB9LFxuICAgIHRleHQ6IHtcbiAgICAgIHByaW1hcnk6IFwiIzAwMDAwMERFXCIsXG4gICAgICBzZWNvbmRhcnk6IFwiIzAwMDAwMDk5XCIsXG4gICAgICBsaW5rOiBcIiMyMTk2ZjNcIlxuICAgIH1cbiAgfSxcbiAgdHlwb2dyYXBoeToge1xuICAgIGJvZHkxOiB7XG4gICAgICBmb250U2l6ZTogXCIxNHB4XCIsXG4gICAgICBmb250V2VpZ2h0OiA0MDBcbiAgICB9LFxuICAgIGg1OiB7XG4gICAgICBmb250U2l6ZTogXCIxLjZlbVwiLFxuICAgICAgZm9udFdlaWdodDogNDAwLFxuICAgICAgXCImLk11aVR5cG9ncmFwaHktZ3V0dGVyQm90dG9tXCI6IHtcbiAgICAgICAgbWFyZ2luQm90dG9tOiBcIjIwcHhcIlxuICAgICAgfVxuICAgIH0sXG4gICAgaDY6IHtcbiAgICAgIGZvbnRTaXplOiBcIjEuNGVtXCIsXG4gICAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgICBcIiYuTXVpVHlwb2dyYXBoeS1ndXR0ZXJCb3R0b21cIjoge1xuICAgICAgICBtYXJnaW5Cb3R0b206IFwiMjBweFwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjb21wb25lbnRzOiB7XG4gICAgTXVpRm9ybUhlbHBlclRleHQ6IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJvb3Q6IHtcbiAgICAgICAgICBmb250U2l6ZTogXCIuOGVtXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpQnV0dG9uOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiMWVtXCIsXG4gICAgICAgICAgZm9udFdlaWdodDogNTAwLFxuICAgICAgICAgIGxpbmVIZWlnaHQ6IFwiMjJweFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE11aVRhYjoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIjE0cHhcIixcbiAgICAgICAgICBjb2xvcjogXCIjMDAwMDAwOTlcIixcbiAgICAgICAgICBcIiYuTXVpLXNlbGVjdGVkXCI6IHtcbiAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpVGFiczoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgaW5kaWNhdG9yOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgQ3VzdG9tVGhlbWUgPSAoeyBjaGlsZHJlbiB9KSA9PiAoXG4gIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+e2NoaWxkcmVufTwvVGhlbWVQcm92aWRlcj5cbik7XG5cbkN1c3RvbVRoZW1lLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbVRoZW1lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWxcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuICBjb25zdCBxdWVzdGlvbk1heFZhbHVlcyA9IHF1ZXN0aW9uLm1heF9zZWxlY3RlZF92YWx1ZXM7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICBjb25zdCBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UgPSAoY2hlY2tlZCwgdmFsKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEFucyA9IHZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IG1heFNlbGVjdGlvblJlYWNoZWQgPVxuICAgICAgcXVlc3Rpb25NYXhWYWx1ZXMgIT09IDAgJiYgY3VycmVudEFucy5sZW5ndGggPT09IHF1ZXN0aW9uTWF4VmFsdWVzO1xuICAgIGxldCBuZXdWYWx1ZTtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXdWYWx1ZSA9IG1heFNlbGVjdGlvblJlYWNoZWQgPyBjdXJyZW50QW5zIDogWy4uLmN1cnJlbnRBbnMsIHZhbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gY3VycmVudEFucy5maWx0ZXIoKHYpID0+IHYgIT09IHZhbCk7XG4gICAgfVxuXG4gICAgc2V0RmllbGRWYWx1ZShxdWVzdGlvblNsdWcsIG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbD57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt2YWx1ZT8uaW5jbHVkZXMob3AudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldikgPT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlKGV2LnRhcmdldC5jaGVja2VkLCBvcC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBtYXJnaW49XCJub3JtYWxcIiBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIHN4PXt7IGFsaWduSXRlbXM6IFwiZmxleC1zdGFydFwiIH19XG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICAgICAgc3g9e3sgbWFyZ2luVG9wOiAtMSB9fVxuICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+fVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5ib29sLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIElucHV0TGFiZWwsIE1lbnVJdGVtLCBTZWxlY3QgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgY2hpbGRyZW4sXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWRcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxJbnB1dExhYmVsIGlkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH0+e3F1ZXN0aW9uTGFiZWx9PC9JbnB1dExhYmVsPlxuICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgbGFiZWxJZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9XG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGlkPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgbGFiZWw9e3F1ZXN0aW9uTGFiZWx9XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICBzdHlsZT17eyBtYXJnaW5Cb3R0b206IDIwIH19XG4gICAgICAgID5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxNZW51SXRlbSBrZXk9e29wLmxhYmVsfSB2YWx1ZT17b3AudmFsdWV9PlxuICAgICAgICAgICAgICB7b3AubGFiZWx9XG4gICAgICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1NlbGVjdD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkRyb3Bkb3duUXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEcm9wZG93blF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHQsXG4gIEZvcm1MYWJlbCxcbiAgUmFkaW8sXG4gIFJhZGlvR3JvdXBcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZC50b1N0cmluZygpXG4gICAgfSkpIHx8IFtdO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8Rm9ybUxhYmVsIGlkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH0+e3F1ZXN0aW9uTGFiZWx9PC9Gb3JtTGFiZWw+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICAgIDxSYWRpb0dyb3VwXG4gICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAga2V5PXtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgdmFsdWU9e29wLnZhbHVlfVxuICAgICAgICAgICAgICBjb250cm9sPXs8UmFkaW8gLz59XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cblJhZGlvTGlzdFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEZvcm1Hcm91cCwgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBUZXh0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUdyb3VwPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuVGV4dFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRleHRRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tSdWxlID0gKHZhbHVlLCBydWxlKSA9PiB7XG4gIGNvbnN0IHZhbHVlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlcztcblxuICBpZiAoIXZhbHVlKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKCF2YWx1ZS5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBsZXQgcmVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiO1xuICAgIHZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICBpZiAocnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiKSB7XG4gICAgICAgIHJlcyA9IHJlcyAmJiB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE9yXG4gICAgICAgIHJlcyA9IHJlcyB8fCB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIHJldHVybiB2YWx1ZXMuaW5jbHVkZXModmFsdWU/LnRvU3RyaW5nKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrVmlzaWJpbGl0eSA9IChydWxlLCBydWxlUmVzdWx0KSA9PiB7XG4gIGlmIChydWxlLnZpc2liaWxpdHkgPT09IFwiVmlzaWJsZVwiKSB7XG4gICAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgICAgcmV0dXJuICEhcnVsZVJlc3VsdDtcbiAgICB9XG4gICAgLy8gTm9uIEVxdWFsXG4gICAgcmV0dXJuICFydWxlUmVzdWx0O1xuICB9XG4gIC8vIG5vdCB2aXNpYmxlXG4gIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICByZXR1cm4gIXJ1bGVSZXN1bHQ7XG4gIH1cbiAgcmV0dXJuICEhcnVsZVJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCB0b1NsdWcgPSAodGV4dCwgcXVlc3Rpb25JZCkgPT4ge1xuICBjb25zdCB0ZXh0TEMgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBgJHt0ZXh0TEMucmVwbGFjZSgvW15hLXpBLVowLTldKy9nLCBcIl9cIil9XyR7cXVlc3Rpb25JZH1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExhYmVsID0gKHEpID0+XG4gIC8vIHJlcGxhY2UgbGluZSBicmVha3MgYW5kIHJlbW92ZSBvdXRlciA8cD5cbiAgcT8ubGFiZWw/LnJlcGxhY2UoL1xcbi9nLCBcIiBcIikucmVwbGFjZSgvPHA+KC4qKTxcXC9wPi9naSwgXCIkMVwiKTtcblxuZXhwb3J0IGNvbnN0IGlzQW5zd2VyZWQgPSAoYW5zd2VyKSA9PiB7XG4gIGlmICghYW5zd2VyKSByZXR1cm4gZmFsc2U7XG4gIC8vIGNoZWNrIHR5cGVcbiAgaWYgKEFycmF5LmlzQXJyYXkoYW5zd2VyKSkgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJudW1iZXJcIikgcmV0dXJuIGFuc3dlciA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcImJvb2xlYW5cIikgcmV0dXJuIGFuc3dlcjtcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrSWZWYWx1ZU1hdGNoID0gKGFuc3dlciwgY29tcGFyZVZhbCkgPT4ge1xuICBjb25zdCBhbnN3ZXJBcnJheSA9IEFycmF5LmlzQXJyYXkoYW5zd2VyKSA/IGFuc3dlciA6IFthbnN3ZXJdO1xuXG4gIHJldHVybiBhbnN3ZXJBcnJheS5zb21lKCh2KSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcGFyZVZhbCkpIHtcbiAgICAgIHJldHVybiBjb21wYXJlVmFsLmluY2x1ZGVzKGAke3Z9YCk7XG4gICAgfVxuICAgIHJldHVybiBgJHt2fWAgPT09IGAke2NvbXBhcmVWYWx9YDtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZUluaXRpYWxWYWx1ZSA9IChxKSA9PiB7XG4gIHN3aXRjaCAocS50eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWx1ZSA9IChhbnMsIHR5cGUpID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gYW5zID09PSBcInRydWVcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gYW5zPy5zcGxpdChcIixcIikgfHwgW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIGFucyB8fCBcIlwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBhbnMgfHwgbnVsbDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGFucztcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCA9IChhbnN3ZXJzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgLi4uZXh0cmFfcXVlc3Rpb25zXG4gIH0gPSBhbnN3ZXJzO1xuXG4gIGNvbnN0IGZvcm1hdHRlZEVRID0gT2JqZWN0LmVudHJpZXMoZXh0cmFfcXVlc3Rpb25zKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICBxdWVzdGlvbl9pZDogcGFyc2VJbnQoa2V5LnNwbGl0KFwiX1wiKS5wb3AoKSwgMTApLFxuICAgIGFuc3dlcjogdmFsdWU/LnRvU3RyaW5nKCkgfHwgbnVsbFxuICB9KSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgZXh0cmFfcXVlc3Rpb25zOiBmb3JtYXR0ZWRFUVxuICB9O1xufTtcbiIsImV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dCA9IFwiVGV4dFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0QXJlYSA9IFwiVGV4dEFyZWFcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tib3ggPSBcIkNoZWNrQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCA9IFwiUmFkaW9CdXR0b25MaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvbWJvQm94ID0gXCJDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QgPSBcIkNoZWNrQm94TGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3ggPSBcIkNvdW50cnlDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiA9IFwiUmFkaW9CdXR0b25cIjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgdG9TbHVnLFxuICBpc0Fuc3dlcmVkLFxuICBjaGVja1Zpc2liaWxpdHksXG4gIGNoZWNrUnVsZVxufSBmcm9tIFwiLi9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCxcbiAgUXVlc3Rpb25UeXBlX1RleHQsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCBUZXh0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZFwiO1xuXG5jb25zdCBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gKHF1ZXN0aW9uVHlwZSkgPT4ge1xuICBzd2l0Y2ggKHF1ZXN0aW9uVHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHRBcmVhOlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHQ6IHtcbiAgICAgIHJldHVybiBUZXh0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6IHtcbiAgICAgIHJldHVybiBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDoge1xuICAgICAgcmV0dXJuIFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDoge1xuICAgICAgcmV0dXJuIERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIFJlYWN0LkZyYWdtZW50O1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgRXh0cmFRdWVzdGlvbnNGaWVsZHMgPSAoe1xuICBleHRyYVF1ZXN0aW9ucyxcbiAgY2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uc1wiLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvblwiLFxuICByZWFkT25seSA9IGZhbHNlLFxuICBhbGxvd0VkaXQgPSB0cnVlLFxuICBmb3JtaWtcbn0pID0+IHtcbiAgY29uc3QgcmVuZGVyUnVsZSA9IChydWxlLCBxdWVzdGlvblNsdWcpID0+IHtcbiAgICBjb25zdCBydWxlUmVzdWx0ID0gY2hlY2tSdWxlKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSwgcnVsZSk7XG4gICAgY29uc3QgaXNWaXNpYmxlID0gY2hlY2tWaXNpYmlsaXR5KHJ1bGUsIHJ1bGVSZXN1bHQpO1xuXG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICByZXR1cm4gcmVuZGVyUXVlc3Rpb24ocnVsZS5zdWJfcXVlc3Rpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlclF1ZXN0aW9uID0gKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICAvLyBkaXNhYmxlIGZpZWxkIGlmIGVkaXQgaXNuJ3QgYWxsb3dlZCBhbmQgdGhlIHF1ZXN0aW9ucyBpcyBhbnN3ZXJlZFxuICAgIGNvbnN0IGlzRGlzYWJsZWQgPVxuICAgICAgKCFhbGxvd0VkaXQgJiYgaXNBbnN3ZXJlZChmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10pKSB8fCByZWFkT25seTtcbiAgICBjb25zdCBRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudChxLnR5cGUpO1xuXG4gICAgY29uc3QgZm9ybWlrUHJvcHMgPSB7XG4gICAgICB2YWx1ZTogZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLFxuICAgICAgb25DaGFuZ2U6IGZvcm1pay5oYW5kbGVDaGFuZ2UsXG4gICAgICBvbkJsdXI6IGZvcm1pay5oYW5kbGVCbHVyLFxuICAgICAgZXJyb3I6XG4gICAgICAgIGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgQm9vbGVhbihmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10pLFxuICAgICAgaGVscGVyVGV4dDogZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBzZXRGaWVsZFZhbHVlOiBmb3JtaWsuc2V0RmllbGRWYWx1ZVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFF1ZXN0aW9uRmllbGRDb21wb25lbnRcbiAgICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICAgIHF1ZXN0aW9uPXtxfVxuICAgICAgICBxdWVzdGlvbkNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgICAgIGlzRGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgIHsuLi5mb3JtaWtQcm9wc31cbiAgICAgID5cbiAgICAgICAge3Euc3ViX3F1ZXN0aW9uX3J1bGVzPy5tYXAoKHJ1bGUpID0+IHJlbmRlclJ1bGUocnVsZSwgcXVlc3Rpb25TbHVnKSl9XG4gICAgICA8L1F1ZXN0aW9uRmllbGRDb21wb25lbnQ+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e2V4dHJhUXVlc3Rpb25zLm1hcChyZW5kZXJRdWVzdGlvbil9PC9kaXY+O1xufTtcblxuRXh0cmFRdWVzdGlvbnNGaWVsZHMucHJvcFR5cGVzID0ge1xuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGFsbG93RWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIHJlYWRPbmx5OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRXh0cmFRdWVzdGlvbnNGaWVsZHM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgQXNzaWduZWRGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQ6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIk1lXCIsIGxhYmVsOiBcIk1lXCIgfSxcbiAgICB7IHZhbHVlOiBcIlNvbWVvbmVFbHNlXCIsIGxhYmVsOiBcIlNvbWVvbmUgRWxzZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJOb2JvZHlcIiwgbGFiZWw6IFwiTm9ib2R5XCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIkFzc2lnbmVkXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkFzc2lnbmVkRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25lZEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENoZWNrYm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBCYWRnZUZlYXR1cmVGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQ6IHsgYmFkZ2VfZmVhdHVyZXNfdHlwZXMgfSxcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9ICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBmaWx0ZXJWYWx1ZXM/LmluY2x1ZGVzKHZhbHVlKVxuICAgICAgPyBmaWx0ZXJWYWx1ZXMuZmlsdGVyKChmKSA9PiBmICE9PSB2YWx1ZSlcbiAgICAgIDogWy4uLmZpbHRlclZhbHVlcywgdmFsdWVdO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdOiBuZXdGaWx0ZXJzXG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJc0V4cGFuZGVkKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG4gIH0sIFtmaWx0ZXJWYWx1ZXNdKTtcblxuICBpZiAoIWJhZGdlX2ZlYXR1cmVzX3R5cGVzIHx8IGJhZGdlX2ZlYXR1cmVzX3R5cGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJCYWRnZSBGZWF0dXJlXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtiYWRnZV9mZWF0dXJlc190eXBlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICA8Qm94IHN4PXt7IHB5OiAxIH19IGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YmYubmFtZX19YH0+XG4gICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IGhhbmRsZUZpbHRlckNoYW5nZShiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2ZpbHRlclZhbHVlcy5pbmNsdWRlcyhiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwiIzIxOTZGM1wiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkJhZGdlRmVhdHVyZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQmFkZ2VGZWF0dXJlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgRmlsdGVyTGlzdEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiO1xuaW1wb3J0IHtcbiAgQmFkZ2UsXG4gIEJveCxcbiAgQnV0dG9uLFxuICBDYXJkLFxuICBDYXJkSGVhZGVyLFxuICBEaXZpZGVyLFxuICBQYXBlclxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgY29ubmVjdCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IEJhZGdlRmVhdHVyZUZpbHRlciBmcm9tIFwiLi9CYWRnZUZlYXR1cmVGaWx0ZXJcIjtcbmltcG9ydCB7XG4gIEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSxcbiAgRklMVEVSX1ZBUl9GUkVFX1BBSUQsXG4gIEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTLFxuICBGSUxURVJfVkFSX1BST01PQ09ERSxcbiAgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQsXG4gIEZJTFRFUl9WQVJfVElDS0VUX1RZUEVcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBUaWNrZXRUeXBlRmlsdGVyIGZyb20gXCIuL1RpY2tldFR5cGVGaWx0ZXJcIjtcbmltcG9ydCBBc3NpZ25lZEZpbHRlciBmcm9tIFwiLi9Bc3NpZ25lZEZpbHRlclwiO1xuaW1wb3J0IFN0YXR1c0ZpbHRlciBmcm9tIFwiLi9TdGF0dXNGaWx0ZXJcIjtcbmltcG9ydCBGcmVlUGFpZEZpbHRlciBmcm9tIFwiLi9GcmVlUGFpZEZpbHRlclwiO1xuaW1wb3J0IFByb21vQ29kZUZpbHRlciBmcm9tIFwiLi9Qcm9tb0NvZGVGaWx0ZXJcIjtcblxuY29uc3QgRmlsdGVyID0gKHsgb25GaWx0ZXIsIG9uUmVzZXQsIGZpbHRlciwgYWN0aXZlRmlsdGVyc0NvdW50IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0ZpbHRlckxpc3QsIHNldFNob3dGaWx0ZXJMaXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Nob3dEYXRlcGlja2VyLCBzZXRTaG93RGF0ZXBpY2tlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGZpbHRlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKGZpbHRlclJlZi5jdXJyZW50ICYmICFmaWx0ZXJSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBpZiAoc2hvd0ZpbHRlckxpc3QpIHtcbiAgICAgICAgc2V0U2hvd0ZpbHRlckxpc3QoZmFsc2UpO1xuICAgICAgICBzZXRTaG93RGF0ZXBpY2tlcihmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93RmlsdGVyTGlzdF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93RmlsdGVyTGlzdCghc2hvd0ZpbHRlckxpc3QpO1xuICAgIHNldFNob3dEYXRlcGlja2VyKCFzaG93RGF0ZXBpY2tlcik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyUmVzZXQgPSAoKSA9PiB7XG4gICAgb25SZXNldCgpO1xuICAgIHRvZ2dsZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDb250YWluZXJ9IHJlZj17ZmlsdGVyUmVmfT5cbiAgICAgIDxTdGFja1xuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICAgIG9uQ2xpY2s9e3RvZ2dsZX1cbiAgICAgID5cbiAgICAgICAgPEJhZGdlIGJhZGdlQ29udGVudD17YWN0aXZlRmlsdGVyc0NvdW50fSBjb2xvcj1cInByaW1hcnlcIiBzeD17eyBtcjogMSB9fT5cbiAgICAgICAgICA8RmlsdGVyTGlzdEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckljb259IC8+XG4gICAgICAgIDwvQmFkZ2U+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckxhYmVsfT57dChcImZpbHRlci5maWx0ZXJcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZmlsdGVyTGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfSAke1xuICAgICAgICAgIHNob3dGaWx0ZXJMaXN0ID8gc3R5bGVzLnNob3dGaWx0ZXJMaXN0IDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgID5cbiAgICAgICAgPFBhcGVyIGVsZXZhdGlvbj17OH0gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ2hlY2tib3hDb250YWluZXJ9PlxuICAgICAgICAgIDxDYXJkIHZhcmlhbnQ9XCJvdXRsaW5lZFwiPlxuICAgICAgICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgICAgICAgdGl0bGU9XCJGaWx0ZXJzXCJcbiAgICAgICAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVGaWx0ZXJSZXNldH1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsZWFuQnV0dG9ufVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt0KFwiZmlsdGVyLmNsZWFyXCIpfVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPERpdmlkZXIgLz5cbiAgICAgICAgICAgIDxCYWRnZUZlYXR1cmVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEFzc2lnbmVkRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFN0YXR1c0ZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX09XTkVSX1NUQVRVU119XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxUaWNrZXRUeXBlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8UHJvbW9Db2RlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEZyZWVQYWlkRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgPC9QYXBlcj5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5jb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSAoeyB3aWRnZXRTdGF0ZSB9KSA9PiAoe1xuICBzb3J0OiB3aWRnZXRTdGF0ZS5zb3J0LFxuICBmaWx0ZXI6IHdpZGdldFN0YXRlLmZpbHRlcixcbiAgYWN0aXZlRmlsdGVyc0NvdW50OiB3aWRnZXRTdGF0ZS5hY3RpdmVGaWx0ZXJzQ291bnRcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywge30pKEZpbHRlcik7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfRlJFRV9QQUlEIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgRnJlZVBhaWRGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9GUkVFX1BBSUQ6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIkZyZWVcIiwgbGFiZWw6IFwiRnJlZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJQYWlkXCIsIGxhYmVsOiBcIlBhaWRcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX0ZSRUVfUEFJRF06IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiRnJlZSAvIFBhaWRcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuRnJlZVBhaWRGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZyZWVQYWlkRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFRleHRGaWVsZFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfUFJPTU9DT0RFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgUHJvbW9Db2RlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfUFJPTU9DT0RFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG4gIGNvbnN0IFtwcm9tb0NvZGUsIHNldFByb21vQ29kZV0gPSB1c2VTdGF0ZShmaWx0ZXJWYWx1ZXMgfHwgXCJcIik7XG5cbiAgY29uc3QgZGVib3VuY2VUaW1lciA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgREVCT1VOQ0VfVkFMVUUgPSA1MDA7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRQcm9tb0NvZGUoZmlsdGVyVmFsdWVzIHx8IFwiXCIpO1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2KSA9PiB7XG4gICAgY29uc3QgbmV3UHJvbW9Db2RlID0gZXYudGFyZ2V0LnZhbHVlO1xuICAgIC8vIHVwZGF0ZSBsb2NhbCBzdGF0ZSBzbyB0aGUgaW5wdXQgcmVmbGVjdHMgY2hhbmdlc1xuICAgIHNldFByb21vQ29kZShuZXdQcm9tb0NvZGUpO1xuXG4gICAgLy8gcmVtb3ZlIGN1cnJlbnQgZGVib3VuY2VcbiAgICBpZiAoZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lci5jdXJyZW50KTtcbiAgICB9XG5cbiAgICAvLyBkZWJvdW5jZSBzZXQgdG8gNTAwIG1zXG4gICAgZGVib3VuY2VUaW1lci5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBvbkZpbHRlcih7XG4gICAgICAgIFtGSUxURVJfVkFSX1BST01PQ09ERV06IG5ld1Byb21vQ29kZVxuICAgICAgfSk7XG4gICAgfSwgREVCT1VOQ0VfVkFMVUUpO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gcmVtb3ZlIGRlYm91bmNlIG9uIHJlbG9hZFxuICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiUHJvbW8gQ29kZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcHk6IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgcHJvbW8gY29kZVwiXG4gICAgICAgICAgICB2YWx1ZT17cHJvbW9Db2RlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX1cbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUHJvbW9Db2RlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBQcm9tb0NvZGVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBJbnB1dEJhc2UgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTZWFyY2hDb250YWluZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgbWFyZ2luUmlnaHQ6IFwiMFwiLFxuICBtYXJnaW5MZWZ0OiBcIjBcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxuICBkaXNwbGF5OiBcImJsb2NrXCJcbn0pKTtcbmNvbnN0IFNlYXJjaEljb25XcmFwcGVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIlxufSkpO1xuY29uc3QgU3R5bGVkSW5wdXRCYXNlID0gc3R5bGVkKElucHV0QmFzZSkoKCkgPT4gKHtcbiAgY29sb3I6IFwiaW5oZXJpdFwiLFxuICBib3JkZXJCb3R0b206IFwiMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC40MilcIixcbiAgcGFkZGluZ0xlZnQ6IFwiMjVweFwiLFxuICBwYWRkaW5nUmlnaHQ6IFwiMjVweFwiLFxuICBmb250U2l6ZTogXCIxZW1cIlxufSkpO1xuY29uc3QgQ2xvc2VJY29uV3JhcHBlciA9IHN0eWxlZChDbG9zZUljb24pKCgpID0+ICh7XG4gIHBhZGRpbmc6IFwiMnB4XCIsXG4gIGZvbnRTaXplOiBcIjEuNWVtXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogXCIwXCIsXG4gIHJpZ2h0OiBcIjBcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICBjdXJzb3I6IFwicG9pbnRlclwiLFxuICB6SW5kZXg6IFwiMTAwMFwiXG59KSk7XG5cbmNvbnN0IFNlYXJjaCA9ICh7IG9uU2VhcmNoIH0pID0+IHtcbiAgY29uc3QgeyBmaWx0ZXIgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qgc2hvd0Nsb3NlQnRuID0gISFmaWx0ZXJbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdO1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGtleSxcbiAgICAgIG5hdGl2ZUV2ZW50OiB7XG4gICAgICAgIHRhcmdldDogeyB2YWx1ZSB9XG4gICAgICB9XG4gICAgfSA9IGV2ZW50O1xuICAgIGlmIChrZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgb25TZWFyY2goe1xuICAgICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiB2YWx1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICBjb25zdCByZXNldFNlYXJjaCA9ICgpID0+IHtcbiAgICBzZXRTZWFyY2hWYWx1ZShcIlwiKTtcbiAgICBvblNlYXJjaCh7XG4gICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiBcIlwiXG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyB3ZSBuZWVkIHRoaXMgd2hlbiBzZWFyY2ggaXMgcmVzZXQgZnJvbSBvdXRzaWRlIHRoaXMgY29tcG9uZW50XG4gICAgc2V0U2VhcmNoVmFsdWUoZmlsdGVyW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXSk7XG4gIH0sIFtmaWx0ZXJbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPFNlYXJjaENvbnRhaW5lcj5cbiAgICAgICAge3Nob3dDbG9zZUJ0biAmJiAoXG4gICAgICAgICAgPENsb3NlSWNvbldyYXBwZXIgb25DbGljaz17cmVzZXRTZWFyY2h9PlxuICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgIDwvQ2xvc2VJY29uV3JhcHBlcj5cbiAgICAgICAgKX1cbiAgICAgICAgPFNlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICAgIDxTZWFyY2hJY29uIC8+XG4gICAgICAgIDwvU2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgIDxTdHlsZWRJbnB1dEJhc2VcbiAgICAgICAgICBwbGFjZWhvbGRlcj17dChcIm9yZGVyX3NlYXJjaC5vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgaW5wdXRQcm9wcz17eyBcImFyaWEtbGFiZWxcIjogXCJzZWFyY2hcIiB9fVxuICAgICAgICAgIHZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlYXJjaFZhbHVlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgICAgLz5cbiAgICAgIDwvU2VhcmNoQ29udGFpbmVyPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuU2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWFyY2g7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBQYXBlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgSW1wb3J0RXhwb3J0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgU29ydCA9ICh7IG9uU29ydCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dTb3J0LCBzZXRTaG93U29ydF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNvcnRSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZVNvcnRDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoc29ydFJlZi5jdXJyZW50ICYmICFzb3J0UmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgc2V0U2hvd1NvcnQoZmFsc2UpO1xuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93U29ydF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93U29ydCghc2hvd1NvcnQpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuc29ydENvbnRhaW5lcn0gb25DbGljaz17dG9nZ2xlfT5cbiAgICAgIDxTdGFja1xuICAgICAgICByZWY9e3NvcnRSZWZ9XG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgID5cbiAgICAgICAgPEltcG9ydEV4cG9ydEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRJY29ufSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0TGFiZWx9Pnt0KFwic29ydC5zb3J0XCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICB7c2hvd1NvcnQgJiYgKFxuICAgICAgICA8UGFwZXJcbiAgICAgICAgICBlbGV2YXRpb249ezh9XG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuc29ydExpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn1gfVxuICAgICAgICA+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNvcnQoeyBkaXJlY3Rpb246IFwiZGVzY1wiLCBuYW1lOiBcImNyZWF0ZWRcIiB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInNvcnQubmV3X2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Tb3J0KHsgZGlyZWN0aW9uOiBcImFzY1wiLCBuYW1lOiBcImNyZWF0ZWRcIiB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInNvcnQub2xkX2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L1BhcGVyPlxuICAgICAgKX1cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNvcnQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgU3RhdHVzRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJJbmNvbXBsZXRlXCIsIGxhYmVsOiBcIkluY29tcGxldGVcIiB9LFxuICAgIHsgdmFsdWU6IFwiQ29tcGxldGVcIiwgbGFiZWw6IFwiQ29tcGxldGVcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX09XTkVSX1NUQVRVU106IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiU3RhdHVzXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblN0YXR1c0ZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3RhdHVzRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2hlY2tib3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfVElDS0VUX1RZUEUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBUaWNrZXRUeXBlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgc3VtbWl0OiB7IHRpY2tldF90eXBlcyB9LFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9ICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBmaWx0ZXJWYWx1ZXM/LmluY2x1ZGVzKHZhbHVlKVxuICAgICAgPyBmaWx0ZXJWYWx1ZXMuZmlsdGVyKChmKSA9PiBmICE9PSB2YWx1ZSlcbiAgICAgIDogWy4uLmZpbHRlclZhbHVlcywgdmFsdWVdO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXTogbmV3RmlsdGVyc1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SXNFeHBhbmRlZCghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJUaWNrZXQgVHlwZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dGlja2V0X3R5cGVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxCb3ggc3g9e3sgcHk6IDEgfX0ga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHtiZi5uYW1lfX1gfT5cbiAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gaGFuZGxlRmlsdGVyQ2hhbmdlKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCIjMjE5NkYzXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsYWJlbD17YmYubmFtZX1cbiAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0VHlwZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0VHlwZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwiLi9GaWx0ZXJcIjtcbmltcG9ydCBTb3J0IGZyb20gXCIuL1NvcnRcIjtcbmltcG9ydCBTZWFyY2ggZnJvbSBcIi4vU2VhcmNoXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEZpbHRlcnMgPSAoeyBvbkZpbHRlciwgb25Tb3J0LCBvblNlYXJjaCwgb25SZXNldCB9KSA9PiAoXG4gIDxHcmlkIGNvbnRhaW5lciBqdXN0aWZ5PVwiZmxleC1lbmRcIiBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgPEdyaWRcbiAgICAgIGl0ZW1cbiAgICAgIHhzPXs2fVxuICAgICAgY29udGFpbmVyXG4gICAgICBwYWRkaW5nPXsxfVxuICAgICAgZ2FwPXsyfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyU29ydENvbnRhaW5lcn1cbiAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgID5cbiAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgIDxGaWx0ZXIgb25GaWx0ZXI9e29uRmlsdGVyfSBvblJlc2V0PXtvblJlc2V0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgPFNvcnQgb25Tb3J0PXtvblNvcnR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICAgIDxHcmlkIGl0ZW0geHM9ezZ9IGNvbnRhaW5lciBqdXN0aWZ5Q29udGVudD1cImZsZXgtZW5kXCI+XG4gICAgICA8U2VhcmNoIG9uU2VhcmNoPXtvblNlYXJjaH0gLz5cbiAgICA8L0dyaWQ+XG4gIDwvR3JpZD5cbik7XG5cbkZpbHRlcnMucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU29ydDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlcnM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgRm9ybUZvb3RlciA9ICh7IHNhdmVMYWJlbCwgY2FuY2VsTGFiZWwsIG9uQ2xvc2UsIGRpc2FibGVkIH0pID0+IChcbiAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5mb290ZXJ9PlxuICAgIDxCdXR0b25cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ0bn1cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge2NhbmNlbExhYmVsfVxuICAgIDwvQnV0dG9uPlxuICAgIDxCdXR0b25cbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc2F2ZUJ0bn1cbiAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge3NhdmVMYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgPC9Cb3g+XG4pO1xuXG5Gb3JtRm9vdGVyLnByb3BUeXBlcyA9IHtcbiAgc2F2ZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjYW5jZWxMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRm9ybUZvb3RlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRXJyb3JMYWJlbCh7IG1lc3NhZ2UsIGNvbG9yLCBjbGFzc05hbWVzLCBkYXRhVGVzdElkIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3BhblxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZXJyb3JMYWJlbH0gJHtjbGFzc05hbWVzICYmIGNsYXNzTmFtZXN9YH1cbiAgICAgIHN0eWxlPXt7IGNvbG9yIH19XG4gICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICA+XG4gICAgICA8RXJyb3JJY29uIHN4PXt7IGNvbG9yIH19IC8+XG4gICAgICB7bWVzc2FnZX1cbiAgICA8L3NwYW4+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVycm9yTGFiZWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCYWNrZHJvcCwgQ2lyY3VsYXJQcm9ncmVzcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IExvYWRlciA9ICh7IG9wZW4gfSkgPT4gKFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICA8QmFja2Ryb3Agb3Blbj17b3Blbn0gc3g9eyh0aGVtZSkgPT4gKHsgekluZGV4OiB0aGVtZS56SW5kZXguZHJhd2VyICsgMSB9KX0+XG4gICAgPENpcmN1bGFyUHJvZ3Jlc3MgY29sb3I9XCJpbmhlcml0XCIgLz5cbiAgPC9CYWNrZHJvcD5cbik7XG5cbkxvYWRlci5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBMb2FkZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBzaGFsbG93RXF1YWwsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgSW5maW5pdGVTY3JvbGwgZnJvbSBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIjtcbmltcG9ydCBPcmRlcnNMaXN0IGZyb20gXCIuLi9PcmRlcnNMaXN0XCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNeU9yZGVyc1RpY2tldHMgPSAoeyBmZXRjaERhdGEgfSkgPT4ge1xuICBjb25zdCB7IHN1bW1pdCwgbWVtYmVyT3JkZXJzLCBvcmRlcnNfY3VycmVudF9wYWdlLCBvcmRlcnNfbGFzdF9wYWdlIH0gPVxuICAgIHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGlkPVwiaW5maW5pdGVXcmFwcGVyXCIgY2xhc3NOYW1lPXtzdHlsZXMubXlPcmRlcnNXcmFwcGVyfT5cbiAgICAgIDxJbmZpbml0ZVNjcm9sbFxuICAgICAgICBkYXRhTGVuZ3RoPXttZW1iZXJPcmRlcnM/Lmxlbmd0aH1cbiAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKG9yZGVyc19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgaGFzTW9yZT17b3JkZXJzX2N1cnJlbnRfcGFnZSA8IG9yZGVyc19sYXN0X3BhZ2V9XG4gICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgID5cbiAgICAgICAge21lbWJlck9yZGVycz8ubWFwKChvcmRlcikgPT4gKFxuICAgICAgICAgIDxPcmRlcnNMaXN0XG4gICAgICAgICAgICBrZXk9e29yZGVyLm51bWJlciArIG9yZGVyLmlkfVxuICAgICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBUaWNrZXRzSWNvbiA9ICgpID0+IChcbiAgPHN2Z1xuICAgIHdpZHRoPVwiMTI5XCJcbiAgICBoZWlnaHQ9XCI4MFwiXG4gICAgdmlld0JveD1cIjAgMCAxMjkgODBcIlxuICAgIGZpbGw9XCJub25lXCJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTEyNS4xMjIgMzYuNDc4MUMxMjQuODE0IDM3LjUxMTIgMTIzLjczOCAzOC4wODkxIDEyMi42NjEgMzguMDM3NkMxMTguNTA2IDM3LjgzODYgMTE0LjU5MyA0MC40NzU0IDExMy4zNDkgNDQuNjQxMkMxMTIuMTA1IDQ4LjgwNzMgMTEzLjkzMiA1My4xNTc2IDExNy41MTcgNTUuMjY5N0MxMTguNDQ2IDU1LjgxNjkgMTE5LjAyOCA1Ni44ODk5IDExOC43MiA1Ny45MjMxTDExNi4zNjkgNjUuNzk2N0MxMTYuMDUzIDY2Ljg1NTEgMTE0LjkzOSA2Ny40NTcgMTEzLjg4MSA2Ny4xNDFMMzAuNzY3NSA0Mi4zMjcxQzI5LjcwOTEgNDIuMDExMiAyOS4xMDcyIDQwLjg5NyAyOS40MjMyIDM5LjgzODZMNDAuMzQzOSAzLjI2MDE2QzQwLjY1OTkgMi4yMDE3NiA0MS43NzQgMS41OTk5MSA0Mi44MzI0IDEuOTE1OUwxMjUuOTQ2IDI2LjcyOTdDMTI3LjAwNCAyNy4wNDU3IDEyNy42MDYgMjguMTU5OSAxMjcuMjkgMjkuMjE4M0wxMjUuMTIyIDM2LjQ3ODFaXCJcbiAgICAgIGZpbGw9XCJ3aGl0ZVwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0xMTMuMzQ5IDQ0LjY0MTJMMTEyLjM5MSA0NC4zNTUxTDExMi4zOTEgNDQuMzU1MkwxMTMuMzQ5IDQ0LjY0MTJaTTExNy41MTcgNTUuMjY5N0wxMTcuMDA5IDU2LjEzMTJMMTE3LjUxNyA1NS4yNjk3Wk0xMjIuNjYxIDM4LjAzNzZMMTIyLjcwOSAzNy4wMzg3QzExOC4xMDUgMzYuODE4MyAxMTMuNzY5IDM5LjczODEgMTEyLjM5MSA0NC4zNTUxTDExMy4zNDkgNDQuNjQxMkwxMTQuMzA3IDQ0LjkyNzRDMTE1LjQxNiA0MS4yMTI3IDExOC45MDYgMzguODU4OSAxMjIuNjE0IDM5LjAzNjRMMTIyLjY2MSAzOC4wMzc2Wk0xMTMuMzQ5IDQ0LjY0MTJMMTEyLjM5MSA0NC4zNTUyQzExMS4wMTIgNDguOTcyNSAxMTMuMDM4IDUzLjc5MTUgMTE3LjAwOSA1Ni4xMzEyTDExNy41MTcgNTUuMjY5N0wxMTguMDI0IDU0LjQwODFDMTE0LjgyNiA1Mi41MjM4IDExMy4xOTggNDguNjQyMSAxMTQuMzA3IDQ0LjkyNzNMMTEzLjM0OSA0NC42NDEyWk0xMTguNzIgNTcuOTIzMUwxMTcuNzYyIDU3LjYzN0wxMTUuNDExIDY1LjUxMDZMMTE2LjM2OSA2NS43OTY3TDExNy4zMjcgNjYuMDgyOEwxMTkuNjc4IDU4LjIwOTFMMTE4LjcyIDU3LjkyMzFaTTExMy44ODEgNjcuMTQxTDExNC4xNjcgNjYuMTgyOEwzMS4wNTM1IDQxLjM2ODlMMzAuNzY3NSA0Mi4zMjcxTDMwLjQ4MTQgNDMuMjg1NEwxMTMuNTk1IDY4LjA5OTJMMTEzLjg4MSA2Ny4xNDFaTTI5LjQyMzIgMzkuODM4NkwzMC4zODE0IDQwLjEyNDdMNDEuMzAyMSAzLjU0NjI0TDQwLjM0MzkgMy4yNjAxNkwzOS4zODU3IDIuOTc0MDlMMjguNDY1IDM5LjU1MjVMMjkuNDIzMiAzOS44Mzg2Wk00Mi44MzI0IDEuOTE1OUw0Mi41NDY0IDIuODc0MTFMMTI1LjY2IDI3LjY4NzlMMTI1Ljk0NiAyNi43Mjk3TDEyNi4yMzIgMjUuNzcxNUw0My4xMTg1IDAuOTU3Njk3TDQyLjgzMjQgMS45MTU5Wk0xMjcuMjkgMjkuMjE4M0wxMjYuMzMyIDI4LjkzMjJMMTI0LjE2NCAzNi4xOTJMMTI1LjEyMiAzNi40NzgxTDEyNi4wODEgMzYuNzY0MkwxMjguMjQ4IDI5LjUwNDRMMTI3LjI5IDI5LjIxODNaTTEyNS45NDYgMjYuNzI5N0wxMjUuNjYgMjcuNjg3OUMxMjYuMTg5IDI3Ljg0NTkgMTI2LjQ5IDI4LjQwMyAxMjYuMzMyIDI4LjkzMjJMMTI3LjI5IDI5LjIxODNMMTI4LjI0OCAyOS41MDQ0QzEyOC43MjIgMjcuOTE2OCAxMjcuODE5IDI2LjI0NTUgMTI2LjIzMiAyNS43NzE1TDEyNS45NDYgMjYuNzI5N1pNMzAuNzY3NSA0Mi4zMjcxTDMxLjA1MzUgNDEuMzY4OUMzMC41MjQzIDQxLjIxMDkgMzAuMjIzNCA0MC42NTM5IDMwLjM4MTQgNDAuMTI0N0wyOS40MjMyIDM5LjgzODZMMjguNDY1IDM5LjU1MjVDMjcuOTkxIDQxLjE0MDEgMjguODkzOCA0Mi44MTE0IDMwLjQ4MTQgNDMuMjg1NEwzMC43Njc1IDQyLjMyNzFaTTExNi4zNjkgNjUuNzk2N0wxMTUuNDExIDY1LjUxMDZDMTE1LjI1MyA2Ni4wMzk4IDExNC42OTYgNjYuMzQwOCAxMTQuMTY3IDY2LjE4MjhMMTEzLjg4MSA2Ny4xNDFMMTEzLjU5NSA2OC4wOTkyQzExNS4xODIgNjguNTczMiAxMTYuODUzIDY3LjY3MDQgMTE3LjMyNyA2Ni4wODI4TDExNi4zNjkgNjUuNzk2N1pNMTE3LjUxNyA1NS4yNjk3TDExNy4wMDkgNTYuMTMxMkMxMTcuNjUzIDU2LjUxMDUgMTE3LjkwNSA1Ny4xNTcgMTE3Ljc2MiA1Ny42MzdMMTE4LjcyIDU3LjkyMzFMMTE5LjY3OCA1OC4yMDkxQzEyMC4xNTIgNTYuNjIyOCAxMTkuMjM5IDU1LjEyMzQgMTE4LjAyNCA1NC40MDgxTDExNy41MTcgNTUuMjY5N1pNNDAuMzQzOSAzLjI2MDE2TDQxLjMwMjEgMy41NDYyNEM0MS40NjAxIDMuMDE3MDQgNDIuMDE3MSAyLjcxNjExIDQyLjU0NjQgMi44NzQxMUw0Mi44MzI0IDEuOTE1OUw0My4xMTg1IDAuOTU3Njk3QzQxLjUzMDkgMC40ODM3MSAzOS44NTk2IDEuMzg2NDggMzkuMzg1NyAyLjk3NDA5TDQwLjM0MzkgMy4yNjAxNlpNMTIyLjY2MSAzOC4wMzc2TDEyMi42MTQgMzkuMDM2NEMxMjQuMDIxIDM5LjEwMzggMTI1LjYwNyAzOC4zNTA1IDEyNi4wODEgMzYuNzY0MkwxMjUuMTIyIDM2LjQ3ODFMMTI0LjE2NCAzNi4xOTJDMTI0LjAyMSAzNi42NzIgMTIzLjQ1NiAzNy4wNzQ0IDEyMi43MDkgMzcuMDM4N0wxMjIuNjYxIDM4LjAzNzZaXCJcbiAgICAgIGZpbGw9XCIjQkRCREJEXCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTEwNy45MDMgMjIuNjc1OEw5Ni41Njk2IDYwLjYzNzlcIlxuICAgICAgc3Ryb2tlPVwiI0JEQkRCRFwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZURhc2hhcnJheT1cIjIgNVwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk05MS43NDIgNDUuODk1MkM5MS43NDE5IDQ2Ljk3MzQgOTAuODc2NSA0Ny44MzQ3IDg5LjgyOTcgNDguMDkzM0M4NS43OTA2IDQ5LjA5MTMgODIuNzk1OSA1Mi43Mzc2IDgyLjc5NTMgNTcuMDg1MkM4Mi43OTQ4IDYxLjQzMjkgODUuNzg4NyA2NS4wNzkyIDg5LjgyNzYgNjYuMDc3OUM5MC44NzQyIDY2LjMzNjcgOTEuNzM5NCA2Ny4xOTgzIDkxLjczOTIgNjguMjc2NEw5MS43MzgyIDc2LjQ5MzVDOTEuNzM4MSA3Ny41OTgxIDkwLjg0MjYgNzguNDkzNCA4OS43MzggNzguNDkzM0wyLjk5OTcyIDc4LjQ4MjdDMS44OTUxNSA3OC40ODI1IDAuOTk5ODI1IDc3LjU4NyAwLjk5OTk2IDc2LjQ4MjRMMS4wMDQ2NCAzOC4zMDg2QzEuMDA0NzcgMzcuMjA0IDEuOTAwMzEgMzYuMzA4NyAzLjAwNDg4IDM2LjMwODhMODkuNzQzMiAzNi4zMTk1QzkwLjg0NzcgMzYuMzE5NiA5MS43NDMxIDM3LjIxNTEgOTEuNzQyOSAzOC4zMTk3TDkxLjc0MiA0NS44OTUyWlwiXG4gICAgICBmaWxsPVwid2hpdGVcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNODIuNzk1MyA1Ny4wODUyTDgxLjc5NTMgNTcuMDg1MUw4MS43OTUzIDU3LjA4NTFMODIuNzk1MyA1Ny4wODUyWk04OS44Mjk3IDQ4LjA5MzNMOTAuMDY5NiA0OS4wNjQxTDg5LjgyOTcgNDguMDkzM1pNODkuODI5NyA0OC4wOTMzTDg5LjU4OTkgNDcuMTIyNUM4NS4xMTUgNDguMjI4MSA4MS43OTYgNTIuMjY2NyA4MS43OTUzIDU3LjA4NTFMODIuNzk1MyA1Ny4wODUyTDgzLjc5NTMgNTcuMDg1NEM4My43OTU4IDUzLjIwODQgODYuNDY2MyA0OS45NTQ0IDkwLjA2OTYgNDkuMDY0MUw4OS44Mjk3IDQ4LjA5MzNaTTgyLjc5NTMgNTcuMDg1Mkw4MS43OTUzIDU3LjA4NTFDODEuNzk0NyA2MS45MDM2IDg1LjExMjkgNjUuOTQyMiA4OS41ODc1IDY3LjA0ODdMODkuODI3NiA2Ni4wNzc5TDkwLjA2NzYgNjUuMTA3MUM4Ni40NjQ0IDY0LjIxNjIgODMuNzk0OCA2MC45NjIyIDgzLjc5NTMgNTcuMDg1M0w4Mi43OTUzIDU3LjA4NTJaTTkxLjczOTIgNjguMjc2NEw5MC43MzkyIDY4LjI3NjNMOTAuNzM4MiA3Ni40OTM0TDkxLjczODIgNzYuNDkzNUw5Mi43MzgyIDc2LjQ5MzdMOTIuNzM5MiA2OC4yNzY2TDkxLjczOTIgNjguMjc2NFpNODkuNzM4IDc4LjQ5MzNMODkuNzM4MSA3Ny40OTMzTDIuOTk5ODQgNzcuNDgyN0wyLjk5OTcyIDc4LjQ4MjdMMi45OTk2IDc5LjQ4MjdMODkuNzM3OSA3OS40OTMzTDg5LjczOCA3OC40OTMzWk0wLjk5OTk2IDc2LjQ4MjRMMS45OTk5NiA3Ni40ODI1TDIuMDA0NjQgMzguMzA4N0wxLjAwNDY0IDM4LjMwODZMMC4wMDQ2Mzc3NiAzOC4zMDg1TC0zLjk2MDc1ZS0wNSA3Ni40ODIzTDAuOTk5OTYgNzYuNDgyNFpNMy4wMDQ4OCAzNi4zMDg4TDMuMDA0NzYgMzcuMzA4OEw4OS43NDMgMzcuMzE5NUw4OS43NDMyIDM2LjMxOTVMODkuNzQzMyAzNS4zMTk1TDMuMDA1MDEgMzUuMzA4OEwzLjAwNDg4IDM2LjMwODhaTTkxLjc0MjkgMzguMzE5N0w5MC43NDI5IDM4LjMxOTZMOTAuNzQyIDQ1Ljg5NTFMOTEuNzQyIDQ1Ljg5NTJMOTIuNzQyIDQ1Ljg5NTNMOTIuNzQyOSAzOC4zMTk4TDkxLjc0MjkgMzguMzE5N1pNODkuNzQzMiAzNi4zMTk1TDg5Ljc0MyAzNy4zMTk1QzkwLjI5NTMgMzcuMzE5NSA5MC43NDMgMzcuNzY3MyA5MC43NDI5IDM4LjMxOTZMOTEuNzQyOSAzOC4zMTk3TDkyLjc0MjkgMzguMzE5OEM5Mi43NDMxIDM2LjY2MyA5MS40MDAxIDM1LjMxOTcgODkuNzQzMyAzNS4zMTk1TDg5Ljc0MzIgMzYuMzE5NVpNMi45OTk3MiA3OC40ODI3TDIuOTk5ODQgNzcuNDgyN0MyLjQ0NzU1IDc3LjQ4MjYgMS45OTk4OSA3Ny4wMzQ4IDEuOTk5OTYgNzYuNDgyNUwwLjk5OTk2IDc2LjQ4MjRMLTMuOTYwNzVlLTA1IDc2LjQ4MjNDLTAuMDAwMjQyNjE5IDc4LjEzOTIgMS4zNDI3NCA3OS40ODI1IDIuOTk5NiA3OS40ODI3TDIuOTk5NzIgNzguNDgyN1pNOTEuNzM4MiA3Ni40OTM1TDkwLjczODIgNzYuNDkzNEM5MC43MzgyIDc3LjA0NTcgOTAuMjkwNCA3Ny40OTM0IDg5LjczODEgNzcuNDkzM0w4OS43MzggNzguNDkzM0w4OS43Mzc5IDc5LjQ5MzNDOTEuMzk0NyA3OS40OTM1IDkyLjczOCA3OC4xNTA1IDkyLjczODIgNzYuNDkzN0w5MS43MzgyIDc2LjQ5MzVaTTg5LjgyNzYgNjYuMDc3OUw4OS41ODc1IDY3LjA0ODdDOTAuMzEyOCA2Ny4yMjggOTAuNzM5MyA2Ny43NzU0IDkwLjczOTIgNjguMjc2M0w5MS43MzkyIDY4LjI3NjRMOTIuNzM5MiA2OC4yNzY2QzkyLjczOTUgNjYuNjIxMSA5MS40MzU2IDY1LjQ0NTQgOTAuMDY3NiA2NS4xMDcxTDg5LjgyNzYgNjYuMDc3OVpNMS4wMDQ2NCAzOC4zMDg2TDIuMDA0NjQgMzguMzA4N0MyLjAwNDcxIDM3Ljc1NjQgMi40NTI0OCAzNy4zMDg4IDMuMDA0NzYgMzcuMzA4OEwzLjAwNDg4IDM2LjMwODhMMy4wMDUwMSAzNS4zMDg4QzEuMzQ4MTUgMzUuMzA4NiAwLjAwNDg0MDc3IDM2LjY1MTYgMC4wMDQ2Mzc3NiAzOC4zMDg1TDEuMDA0NjQgMzguMzA4NlpNODkuODI5NyA0OC4wOTMzTDkwLjA2OTYgNDkuMDY0MUM5MS40Mzc2IDQ4LjcyNjEgOTIuNzQxOCA0Ny41NTA4IDkyLjc0MiA0NS44OTUzTDkxLjc0MiA0NS44OTUyTDkwLjc0MiA0NS44OTUxQzkwLjc0MTkgNDYuMzk2IDkwLjMxNTMgNDYuOTQzMyA4OS41ODk5IDQ3LjEyMjVMODkuODI5NyA0OC4wOTMzWlwiXG4gICAgICBmaWxsPVwiI0JEQkRCRFwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk03MS4yOTQ5IDM3LjU5NTdMNzEuMjkwMSA3Ny4yMTM2XCJcbiAgICAgIHN0cm9rZT1cIiNCREJEQkRcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VEYXNoYXJyYXk9XCIyIDVcIlxuICAgIC8+XG4gIDwvc3ZnPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0c0ljb247XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFRpY2tldHNJY29uIGZyb20gXCIuL1RpY2tldHNJY29uXCI7XG5pbXBvcnQgeyBUQUJTIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBOb1RpY2tldHNGb3VuZCA9ICh7IHBhZ2VWaWV3LCBvbkNsaWNrIH0pID0+IHtcbiAgY29uc3QgeyBzdW1taXQsIGxvYWRpbmcgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30pO1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZ2V0Q29udGVudCA9ICgpID0+IHtcbiAgICBjb25zdCBtYWlsdG9UYWcgPSAoXG4gICAgICA8YSBocmVmPXtgbWFpbHRvOiR7c3VtbWl0LnN1cHBvcnRfZW1haWx9YH0+XG4gICAgICAgIHt0KFwiZ2VuZXJhbC5jb250YWN0X3N1cHBvcnRcIil9XG4gICAgICA8L2E+XG4gICAgKTtcblxuICAgIHN3aXRjaCAocGFnZVZpZXcpIHtcbiAgICAgIGNhc2UgVEFCUy5PUkRFUlM6IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0aXRsZTogdChcIm5vX3Jlc3VsdHMub3JkZXJzLnRpdGxlXCIpLFxuICAgICAgICAgIGJvZHk6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHt0KFwibm9fcmVzdWx0cy5vcmRlcnMuYm9keVwiKX0ge21haWx0b1RhZ30uXG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApLFxuICAgICAgICAgIGJ1dHRvbkxhYmVsOiB0KFwibGFiZWxzLmFzc2lnbmVkX3RvX21lXCIpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjYXNlIFRBQlMuVElDS0VUUzoge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRpdGxlOiB0KFwibm9fcmVzdWx0cy5hc3NpZ25lZC50aXRsZVwiKSxcbiAgICAgICAgICBib2R5OiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICB7dChcIm5vX3Jlc3VsdHMuYXNzaWduZWQuYm9keVwiKX0ge21haWx0b1RhZ30uXG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApLFxuICAgICAgICAgIGJ1dHRvbkxhYmVsOiB0KFwib3JkZXJzLnRpdGxlXCIpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGl0bGU6IHQoXCJub19yZXN1bHRzLmZpbHRlci50aXRsZVwiKSxcbiAgICAgICAgICBib2R5OiB0KFwibm9fcmVzdWx0cy5maWx0ZXIuYm9keVwiKSxcbiAgICAgICAgICBidXR0b25MYWJlbDogdChcImZpbHRlci5jbGVhcl9maWx0ZXJzXCIpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHsgdGl0bGUsIGJvZHksIGJ1dHRvbkxhYmVsIH0gPSBnZXRDb250ZW50KCk7XG5cbiAgaWYgKGxvYWRpbmcpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaWNvbldyYXBwZXJ9PlxuICAgICAgICA8VGlja2V0c0ljb24gLz5cbiAgICAgIDwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICB7dGl0bGV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeVxuICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5ib2R5fVxuICAgICAgICBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICA+XG4gICAgICAgIHtib2R5fVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPEJ1dHRvblxuICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgID5cbiAgICAgICAge2J1dHRvbkxhYmVsfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBOb1RpY2tldHNGb3VuZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRGl2aWRlciBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVPcmRlclRvdGFscywgZm9ybWF0Q3VycmVuY3kgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5VGFibGUgPSAoeyBvcmRlciwgc3VtbWl0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7XG4gICAgZGlzY291bnRUb3RhbCxcbiAgICByZWZ1bmRUb3RhbCxcbiAgICBhbW91bnRUb3RhbCxcbiAgICBzdWJUb3RhbCxcbiAgICB0aWNrZXRTdW1tYXJ5LFxuICAgIHRheGVzU3VtbWFyeVxuICB9ID0gY2FsY3VsYXRlT3JkZXJUb3RhbHMoeyBvcmRlciwgc3VtbWl0IH0pO1xuXG4gIGNvbnN0IGh1bmRyZWQgPSAxMDA7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVRhYmxlfT5cbiAgICAgIHt0aWNrZXRTdW1tYXJ5Py5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dGlja2V0U3VtbWFyeS5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGlja2V0VG90YWwgPVxuICAgICAgICAgICAgICAodGlja2V0LnF0eSAqICh0aWNrZXQudGlja2V0X3R5cGUuY29zdCAqIGh1bmRyZWQpKSAvIGh1bmRyZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAga2V5PXtgdGl4b3JkZXJfJHt0aWNrZXQudGlja2V0X3R5cGUuY3JlYXRlZH1gfVxuICAgICAgICAgICAgICAgIHN4PXt7IHBiOiAxIH19XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1zdW1tYXJ5LWl0ZW1pemVkXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIHh7dGlja2V0LnF0eX0ge3RpY2tldC50aWNrZXRfdHlwZS5uYW1lfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0VG90YWwsIHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH0pfVxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAgPERpdmlkZXIgLz5cbiAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwdDogMSwgcGI6IDEgfX0+XG4gICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5zdWJfdG90YWxcIil9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgIHtzdWJUb3RhbH1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgICAge29yZGVyLnRheGVzX2Ftb3VudCA+IDAgJiZcbiAgICAgICAgdGF4ZXNTdW1tYXJ5Py5sZW5ndGggPiAwICYmXG4gICAgICAgIHRheGVzU3VtbWFyeS5tYXAoKHRheCkgPT4gKFxuICAgICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fSBrZXk9e3RheC5pZH0+XG4gICAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgICAge3RheC5uYW1lfVxuICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgICB7dGF4LmFtb3VudH1cbiAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICkpfVxuICAgICAge29yZGVyLmRpc2NvdW50X2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuZGlzY291bnRzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Rpc2NvdW50VG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge3JlZnVuZFRvdGFsID4gMCAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICB7cmVmdW5kVG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPERpdmlkZXIgLz5cbiAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwdDogMSwgcGI6IDEgfX0+XG4gICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS50b3RhbFwiKX1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAge2Ftb3VudFRvdGFsfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5PcmRlclN1bW1hcnlUYWJsZS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGN1cnJlbmN5OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2NvdW50X2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB0YXhlc19hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gIH0pLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeVRhYmxlO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgdGlja2V0c1JlZnVuZGFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IHVzZVN1bW1pdERldGFpbHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcblxuY29uc3QgUmVmdW5kRW1haWxTdXBwb3J0ID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRzLFxuICBzdWJtaXRSZXF1ZXN0LFxuICBvblJlZnVuZENsaWNrLFxuICBvblJlZnVuZERldGFpbENsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBpc1N0YXJ0ZWQgfSA9IHVzZVN1bW1pdERldGFpbHMoeyBzdW1taXQgfSk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCBpc0luUmVmdW5kYWJsZVBlcmlvZCA9XG4gICAgc3VtbWl0LnJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSA+IG5vdztcbiAgY29uc3QgYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXQgPSB0aWNrZXRzUmVmdW5kYWJsZSh0aWNrZXRzKTtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID0gISEoXG4gICAgaXNJblJlZnVuZGFibGVQZXJpb2QgJiZcbiAgICAhaXNTdGFydGVkICYmXG4gICAgYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXRcbiAgKTtcbiAgY29uc3QgaGFzUmVmdW5kUmVxdWVzdHMgPSB0aWNrZXRzPy5zb21lKCh0KSA9PiB0LnJlZnVuZF9yZXF1ZXN0cy5sZW5ndGggPiAwKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2lzUmVmdW5kYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHJlcXVlc3QgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgICAgJHtzdWJtaXRSZXF1ZXN0ID8gc3R5bGVzLnJlZnVuZERpc2FibGVkIDogXCJcIn1gfVxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBvbkNsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIGRpc2FibGVkPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICB7aGFzUmVmdW5kUmVxdWVzdHMgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCBkZXRhaWxzIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBvbkNsaWNrPXtvblJlZnVuZERldGFpbENsaWNrfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJlbWFpbCBzdXBwb3J0IGJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIHRhcmdldD1cIl90b3BcIlxuICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgaHJlZj17YG1haWx0bzoke3N1bW1pdC5zdXBwb3J0X2VtYWlsfWB9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfaW5mby5lbWFpbF9zdXBwb3J0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC8+XG4gICk7XG59O1xuXG5SZWZ1bmRFbWFpbFN1cHBvcnQucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlZnVuZERldGFpbENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgc3VibWl0UmVxdWVzdDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZEVtYWlsU3VwcG9ydDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5VGFibGUgZnJvbSBcIi4vT3JkZXJTdW1tYXJ5VGFibGVcIjtcbmltcG9ydCBSZWZ1bmRFbWFpbFN1cHBvcnQgZnJvbSBcIi4vUmVmdW5kRW1haWxTdXBwb3J0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyU3VtbWFyeSA9ICh7XG4gIG9yZGVyLFxuICBzdW1taXQsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVdyYXBwZXJ9XG4gICAgICAgIHN4PXt7IHB0OiA0LCBweDogNCB9fVxuICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXN1bW1hcnktY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPGgzPnt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9zdW1tYXJ5XCIpfTwvaDM+XG4gICAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgeHM9ezEyfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb31cbiAgICAgICAgICAgIHN4PXt7IHBiOiAzIH19XG4gICAgICAgICAgICBpdGVtXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE9yZGVyU3VtbWFyeVRhYmxlIG9yZGVyPXtvcmRlcn0gc3VtbWl0PXtzdW1taXR9IC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggeHM9ezEyfSBzeD17eyBwYjogMyB9fT5cbiAgICAgICAgPFJlZnVuZEVtYWlsU3VwcG9ydFxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBvblJlZnVuZERldGFpbENsaWNrPXtvblJlZnVuZERldGFpbENsaWNrfVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG59O1xuT3JkZXJTdW1tYXJ5LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZW1iZXJUaWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pLFxuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgc3VibWl0UmVxdWVzdDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgQXNzaWduVG9NZSA9ICh7IGZldGNoRGF0YSB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgdXNlclRpY2tldHMsXG4gICAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSxcbiAgICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlXG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldENvbnRhaW5lcn0+XG4gICAgICA8ZGl2IGlkPVwiYXNzaWduZWRUb01lV3JhcHBlclwiIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkVG9NZVdyYXBwZXJ9PlxuICAgICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgICBkYXRhTGVuZ3RoPXt1c2VyVGlja2V0cz8ubGVuZ3RofVxuICAgICAgICAgIG5leHQ9eygpID0+IGZldGNoRGF0YSh1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlICsgT05FX1BBR0VfTkVYVCl9XG4gICAgICAgICAgaGFzTW9yZT17dXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSA8IHVzZXJfdGlja2V0c19sYXN0X3BhZ2V9XG4gICAgICAgICAgc2Nyb2xsVGhyZXNob2xkPXsxfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfT5cbiAgICAgICAgICAgIHt1c2VyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgIGlzUmVmdW5kTW9kYWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17W119XG4gICAgICAgICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvSW5maW5pdGVTY3JvbGw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnblRvTWU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIEdyaWQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25lZFRvID0gKHsgZW1haWwgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX3RvXCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGRhdGEtdGVzdGlkPVwiYXR0ZW5kZWUtc3RhdHVzLWFzc2lnbmVkXCI+XG4gICAgICAgIHtlbWFpbH1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IEV4dGVybmFsQXNzaWduZWRUbyA9ICh7IGZpcnN0TmFtZSwgbGFzdE5hbWUgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX2J5XCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiPlxuICAgICAgICB7Zmlyc3ROYW1lfSB7bGFzdE5hbWV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBNYW5hZ2VGb3IgPSAoeyBmaXJzdE5hbWUsIGxhc3ROYW1lIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9Pnt0KFwidGlja2V0X3N0YXR1cy5tYW5hZ2VfZm9yXCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiPlxuICAgICAgICB7Zmlyc3ROYW1lfSB7bGFzdE5hbWV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBBdHRlbmRlZVN0YXR1cyA9ICh7IHRpY2tldCwgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSAhdGlja2V0Lm93bmVyPy5lbWFpbCAmJiB0aWNrZXQuaXNfYWN0aXZlO1xuICBjb25zdCBpc0RlbGVnYXRlZCA9ICEhdGlja2V0Lm93bmVyPy5tYW5hZ2VyX2lkO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0T3duZXJFbWFpbH1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJhdHRlbmRlZS1zdGF0dXMtdW5hc3NpZ25lZFwiXG4gICAgICA+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hdHRlbmRlZV9zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICApO1xuICB9XG5cbiAgaWYgKHRpY2tldC5vd25lcj8uZW1haWwpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICA8R3JpZCBpdGVtPlxuICAgICAgICAgIDxBc3NpZ25lZFRvIGVtYWlsPXt0aWNrZXQub3duZXIuZW1haWx9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAge2lzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCAmJiAoXG4gICAgICAgICAgPEdyaWQgaXRlbSBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25lZEJ5VGV4dH0+XG4gICAgICAgICAgICA8RXh0ZXJuYWxBc3NpZ25lZFRvXG4gICAgICAgICAgICAgIGZpcnN0TmFtZT17dGlja2V0Lm9yZGVyPy5vd25lcl9maXJzdF9uYW1lfVxuICAgICAgICAgICAgICBsYXN0TmFtZT17dGlja2V0Lm9yZGVyPy5vd25lcl9sYXN0X25hbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgICAge2lzRGVsZWdhdGVkICYmIChcbiAgICAgICAgICA8R3JpZCBpdGVtIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkQnlUZXh0fT5cbiAgICAgICAgICAgIDxNYW5hZ2VGb3JcbiAgICAgICAgICAgICAgZmlyc3ROYW1lPXt0aWNrZXQub3duZXI/LmZpcnN0X25hbWV9XG4gICAgICAgICAgICAgIGxhc3ROYW1lPXt0aWNrZXQub3duZXI/Lmxhc3RfbmFtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgPC9HcmlkPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbkF0dGVuZGVlU3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBpc19hY3RpdmU6IFByb3BUeXBlcy5ib29sXG4gIH0pLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBdHRlbmRlZVN0YXR1cztcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBPTkVfUkVUUlkgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmNvbnN0IEJhZGdlRmVhdHVyZUltYWdlID0gKHsgc3JjLCBhbHQsIGNsYXNzTmFtZSwgbWF4UmV0cmllcyA9IE9ORV9SRVRSWSB9KSA9PiB7XG4gIGNvbnN0IFtjdXJyZW50U3JjLCBzZXRDdXJyZW50U3JjXSA9IHVzZVN0YXRlKHNyYyk7XG4gIGNvbnN0IFtyZXRyeUNvdW50LCBzZXRSZXRyeUNvdW50XSA9IHVzZVN0YXRlKDApO1xuICBjb25zdCBbaGFzRXJyb3IsIHNldEhhc0Vycm9yXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBoYW5kbGVFcnJvciA9ICgpID0+IHtcbiAgICBpZiAocmV0cnlDb3VudCA8IG1heFJldHJpZXMpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXRDdXJyZW50U3JjKGAke3NyY30/JnQ9JHtEYXRlLm5vdygpfWApO1xuICAgICAgICBzZXRSZXRyeUNvdW50KHJldHJ5Q291bnQgKyBPTkVfUkVUUlkpO1xuICAgICAgfSwgTUlMTElTRUNfVE9fU0VDICogKHJldHJ5Q291bnQgKyBPTkVfUkVUUlkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0SGFzRXJyb3IodHJ1ZSk7XG4gICAgfVxuICB9O1xuXG4gIGlmIChoYXNFcnJvcikge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfSB0aXRsZT17YWx0fT5cbiAgICAgICAge2FsdH1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxpbWdcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgc3JjPXtjdXJyZW50U3JjfVxuICAgICAgYWx0PXthbHR9XG4gICAgICBvbkVycm9yPXtoYW5kbGVFcnJvcn1cbiAgICAvPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQmFkZ2VGZWF0dXJlSW1hZ2U7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJMaXN0SXRlbSA9ICh7XG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIG9uUGFnaW5hdGVDbGljayxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpdGVtc1RvRGlzcGxheSwgc2V0SXRlbXNUb0Rpc3BsYXldID0gdXNlU3RhdGUoXG4gICAgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9LCBbb3JkZXI/LnRpY2tldHNfdG90YWxdKTtcblxuICBpZiAoIW9yZGVyPy5tZW1iZXJUaWNrZXRzPy5sZW5ndGgpIHJldHVybiBudWxsO1xuICBjb25zdCBzbGljZWRUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LnNsaWNlKDAsIGl0ZW1zVG9EaXNwbGF5KTtcblxuICBjb25zdCBvblZpZXdNb3JlID0gKCkgPT4ge1xuICAgIGlmIChvcmRlcj8udGlja2V0c190b3RhbCA+IG9yZGVyPy5tZW1iZXJUaWNrZXRzLmxlbmd0aCkge1xuICAgICAgb25QYWdpbmF0ZUNsaWNrKCk7XG4gICAgfVxuICAgIHNldEl0ZW1zVG9EaXNwbGF5KGl0ZW1zVG9EaXNwbGF5ICsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcbiAgfTtcblxuICBjb25zdCBvblZpZXdMZXNzID0gKCkgPT4gc2V0SXRlbXNUb0Rpc3BsYXkoUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBpc1JlZnVuZE1vZGFsPXtmYWxzZX1cbiAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9eyEhdGlja2V0c1RvUmVmdW5kLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZCl9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgICB7b3JkZXI/LnRpY2tldHNfdG90YWwgPiBpdGVtc1RvRGlzcGxheSA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IG1vcmUgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdNb3JlfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLnZpZXdfbW9yZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgICAge3NsaWNlZFRpY2tldHM/Lmxlbmd0aCA+IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCAmJlxuICAgICAgc2xpY2VkVGlja2V0cz8ubGVuZ3RoID09PSBvcmRlcj8udGlja2V0c190b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IGxlc3MgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdMZXNzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLnZpZXdfbGVzc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJMaXN0SXRlbS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdEl0ZW07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJ1dHRvbiwgQm94LCBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IENoZWNrYm94IGZyb20gXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRSZWFzc2lnbkRhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuL0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsIGZyb20gXCIuLi9UaWNrZXREZXRhaWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0IFRpY2tldEFzc2lnbiBmcm9tIFwiLi4vVGlja2V0QXNzaWduXCI7XG5pbXBvcnQgeyByZXNldFRpY2tldCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgQmFkZ2VGZWF0dXJlSW1hZ2UgZnJvbSBcIi4vQmFkZ2VGZWF0dXJlSW1hZ2VcIjtcblxuY29uc3QgbW9kYWxWaWV3cyA9IHtcbiAgZGV0YWlsOiBcIkRFVEFJTFwiLFxuICByZWFzc2lnbjogXCJSRUFTU0lHTlwiLFxuICBhc3NpZ246IFwiQVNTSUdOXCJcbn07XG5cbmNvbnN0IFRpY2tldENUQXMgPSAoe1xuICBpc0luY29tcGxldGUsXG4gIGlzVW5hc3NpZ25lZCxcbiAgaXNSZWFzc2lnbmFibGUsXG4gIG9uT3BlbkNsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBpZiAoaXNVbmFzc2lnbmVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduVGlja2V0QnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLmFzc2lnbil9XG4gICAgICA+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25fdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFN0YWNrIGFsaWduSXRlbXM9XCJjZW50ZXJcIiBkaXJlY3Rpb249XCJyb3dcIj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld0ZpbmlzaFRpY2tldEJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5kZXRhaWwpfVxuICAgICAgPlxuICAgICAgICB7aXNJbmNvbXBsZXRlXG4gICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5maW5pc2hfdGlja2V0XCIpXG4gICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAge2lzUmVhc3NpZ25hYmxlICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWFzc2lnbiB0aWNrZXQgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWFzc2lnbkJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLnJlYXNzaWduKX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5yZWFzc2lnbl90aWNrZXRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L1N0YWNrPlxuICApO1xufTtcblxuVGlja2V0Q1RBcy5wcm9wVHlwZXMgPSB7XG4gIGlzSW5jb21wbGV0ZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgaXNVbmFzc2lnbmVkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBpc1JlYXNzaWduYWJsZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgb25PcGVuQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmNvbnN0IE9yZGVyTGlzdFRpY2tldHMgPSAoe1xuICB0aWNrZXQsXG4gIHN1bW1pdCxcbiAgaXNSZWZ1bmRNb2RhbCxcbiAgaXNTZWxlY3RlZFRvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZCxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgeyBpc1JlZnVuZGFibGUsIGlzVW5hc3NpZ25lZCwgaXNJbmNvbXBsZXRlLCBjYW5SZWFzc2lnbiB9ID1cbiAgICB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG4gIGNvbnN0IFttb2RhbE9wZW4sIHNldE1vZGFsT3Blbl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IG9uUmVhc3NpZ25hYmxlUGVyaW9kID0gcmVhc3NpZ25EYXRlID4gbm93O1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9XG4gICAgb25SZWFzc2lnbmFibGVQZXJpb2QgJiYgY2FuUmVhc3NpZ24gJiYgIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDtcblxuICBjb25zdCBoYW5kbGVDbG9zZU1vZGFsID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0VGlja2V0KCkpO1xuICAgIHNldE1vZGFsT3BlbihudWxsKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVPcGVuTW9kYWwgPSAodmlldykgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0VGlja2V0KCkpO1xuICAgIHNldE1vZGFsT3Blbih2aWV3KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBjb250YWluZXJcbiAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJXcmFwcGVyfSAke1xuICAgICAgICBpc1JlZnVuZE1vZGFsID8gc3R5bGVzLnJlZnVuZE1vZGFsIDogXCJcIlxuICAgICAgfSAke2lzUmVmdW5kTW9kYWwgJiYgIWlzUmVmdW5kYWJsZSA/IHN0eWxlcy5kaXNhYmxlZFJlZnVuZCA6IFwiXCJ9ICR7XG4gICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZCA/IHN0eWxlcy5zZWxlY3RlZCA6IFwiXCJcbiAgICAgIH1gfVxuICAgID5cbiAgICAgIHtpc1JlZnVuZE1vZGFsICYmIChcbiAgICAgICAgPEdyaWQgaXRlbSB4cz17MX0gcGFkZGluZz17Mn0gY2xhc3NOYW1lPXtzdHlsZXMuY2hlY2tib3h9PlxuICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCB0aWNrZXQgY2hlY2tib3hcIlxuICAgICAgICAgICAgcm9sZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIGNoZWNrZWQ9e2lzU2VsZWN0ZWRUb1JlZnVuZH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2VsZWN0VG9SZWZ1bmQoZSwgdGlja2V0KX1cbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHtcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogMThcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGRpc2FibGVkPXshaXNSZWZ1bmRhYmxlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8R3JpZFxuICAgICAgICBpdGVtXG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLWxpc3QtdGlja2V0XCJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgIHhzPXtpc1JlZnVuZE1vZGFsID8gMTEgOiAxMn1cbiAgICAgID5cbiAgICAgICAgPEdyaWRcbiAgICAgICAgICB4cz17OH1cbiAgICAgICAgICBweT17Mn1cbiAgICAgICAgICBwbD17NH1cbiAgICAgICAgICBpdGVtXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0VGlja2V0VHlwZX1cbiAgICAgICAgICBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgID5cbiAgICAgICAgICA8U3RhY2tcbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcImZsZXgtc3RhcnRcIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIGNsYXNzTmFtZT17c3R5bGVzLmJmRmVhdHVyZVdyYXBwZXJ9IHhzPXs0fSBweT17Mn0gcHI9ezR9IGl0ZW0+XG4gICAgICAgICAgey8qIFRvIGFkZCBiYWRnZSBmZWF0dXJlcyAqL31cbiAgICAgICAgICB7dGlja2V0LmJhZGdlPy5mZWF0dXJlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17YmYubmFtZX0ga2V5PXtiZi5uYW1lfT5cbiAgICAgICAgICAgICAgPEJhZGdlRmVhdHVyZUltYWdlXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmZGZWF0dXJlfVxuICAgICAgICAgICAgICAgIHNyYz17YmYuaW1hZ2V9XG4gICAgICAgICAgICAgICAgYWx0PXtiZi5uYW1lfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXsxMn0gc3g9e3sgcHg6IDQsIHBiOiAyIH19IGl0ZW0+XG4gICAgICAgICAgPEF0dGVuZGVlU3RhdHVzXG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldD17ISFpc0V4dGVybmFsQXNzaWduZWRUaWNrZXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgICAgdGV4dD17dGlja2V0Lm51bWJlcn1cbiAgICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJ0aWNrZXRfc3RhdHVzLmNvcHlfdGlja2V0X251bWJlclwiKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Rm9vdGVyfSBweD17eyB4czogMSB9fSBwYj17eyB4czogMiB9fT5cbiAgICAgICAgICA8Qm94PlxuICAgICAgICAgICAgPFRpY2tldFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldEFjdGlvbkJ1dHRvbnN9PlxuICAgICAgICAgICAge3RpY2tldC5pc19hY3RpdmUgJiYgIWlzUmVmdW5kTW9kYWwgJiYgKFxuICAgICAgICAgICAgICA8VGlja2V0Q1RBc1xuICAgICAgICAgICAgICAgIGlzVW5hc3NpZ25lZD17aXNVbmFzc2lnbmVkfVxuICAgICAgICAgICAgICAgIGlzSW5jb21wbGV0ZT17aXNJbmNvbXBsZXRlfVxuICAgICAgICAgICAgICAgIGlzUmVhc3NpZ25hYmxlPXtpc1JlYXNzaWduYWJsZSAmJiAhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0fVxuICAgICAgICAgICAgICAgIG9uT3BlbkNsaWNrPXtoYW5kbGVPcGVuTW9kYWx9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvQm94PlxuICAgICAgICA8L0JveD5cbiAgICAgICAgPFRpY2tldERldGFpbFxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHRpY2tldElkPXt0aWNrZXQ/LmlkfVxuICAgICAgICAgIG9yZGVySWQ9e3RpY2tldD8ub3JkZXJfaWQgfHwgdGlja2V0Py5vcmRlcj8uaWR9XG4gICAgICAgICAgb3duZXJJZD17dGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgICAgb3Blbj17bW9kYWxPcGVuID09PSBtb2RhbFZpZXdzLmRldGFpbH1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAvPlxuICAgICAgICA8VGlja2V0QXNzaWduXG4gICAgICAgICAgdGlja2V0SWQ9e3RpY2tldD8uaWR9XG4gICAgICAgICAgb3JkZXJJZD17dGlja2V0Py5vcmRlcl9pZCB8fCB0aWNrZXQ/Lm9yZGVyPy5pZH1cbiAgICAgICAgICBvd25lcklkPXt0aWNrZXQ/Lm93bmVyPy5pZH1cbiAgICAgICAgICBvcGVuPXtbbW9kYWxWaWV3cy5yZWFzc2lnbiwgbW9kYWxWaWV3cy5hc3NpZ25dLmluY2x1ZGVzKG1vZGFsT3Blbil9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5PcmRlckxpc3RUaWNrZXRzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG9yZGVyX2lkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB0b3RhbF9yZWZ1bmRlZF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGlja2V0X3R5cGU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgaXNfYWN0aXZlOiBQcm9wVHlwZXMuYm9vbFxuICB9KSxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBpc1JlZnVuZE1vZGFsOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNTZWxlY3RlZFRvUmVmdW5kOiBQcm9wVHlwZXMuYm9vbCxcbiAgc2VsZWN0VG9SZWZ1bmQ6IFByb3BUeXBlcy5mdW5jLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFRhYnMgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiO1xuaW1wb3J0IFRhYiBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJcIjtcbmltcG9ydCBPcmRlckxpc3RJdGVtIGZyb20gXCIuL09yZGVyTGlzdEl0ZW1cIjtcbmltcG9ydCBPcmRlclN1bW1hcnkgZnJvbSBcIi4uL09yZGVyU3VtbWFyeVwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RzTW9kYWwgZnJvbSBcIi4uL1JlZnVuZFJlcXVlc3RzXCI7XG5pbXBvcnQgRXJyb3JMYWJlbCBmcm9tIFwiLi4vTGFiZWxzL0Vycm9yTGFiZWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBSZWZ1bmREZXRhaWxzIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmREZXRhaWxzXCI7XG5cbmNvbnN0IFRhYlBhbmVsID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIHZhbHVlLCBpbmRleCB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgIGhpZGRlbj17dmFsdWUgIT09IGluZGV4fVxuICAgICAgaWQ9e2B0YWJwYW5lbC0ke2luZGV4fWB9XG4gICAgICBhcmlhLWxhYmVsbGVkYnk9e2B0YWItJHtpbmRleH1gfVxuICAgID5cbiAgICAgIHt2YWx1ZSA9PT0gaW5kZXggJiYgY2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSA9ICh7XG4gIGlzTW9iaWxlLFxuICBzdW1taXQsXG4gIG9yZGVyLFxuICBkZXRhaWxzUmVxdWlyZWQsXG4gIG9uUGFnaW5hdGVDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChfLCBuZXdWYWx1ZSkgPT4ge1xuICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgfTtcbiAgY29uc3QgW3RpY2tldHNUb1JlZnVuZCwgc2V0VGlja2V0c1RvUmVmdW5kXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgW3N1Ym1pdFJlcXVlc3QsIHNldFN1Ym1pdFJlcXVlc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbcmVmdW5kRGV0YWlsc09wZW4sIHNldFJlZnVuZERldGFpbHNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBvblJlZnVuZENsaWNrID0gKCkgPT4ge1xuICAgIHNldFN1Ym1pdFJlcXVlc3QodHJ1ZSk7XG4gIH07XG4gIGNvbnN0IHVuc2VsZWN0UmVmdW5kVGlja2V0cyA9ICh0aWNrZXQpID0+IHtcbiAgICBjb25zdCBmaWx0ZXJTZWxlY3RlZCA9IHRpY2tldHNUb1JlZnVuZC5maWx0ZXIoKHQpID0+IHQuaWQgIT09IHRpY2tldC5pZCk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKGZpbHRlclNlbGVjdGVkKTtcbiAgfTtcbiAgY29uc3Qgc2VsZWN0VG9SZWZ1bmQgPSAoZSwgdGlja2V0KSA9PiB7XG4gICAgY29uc3QgeyBjaGVja2VkIH0gPSBlLnRhcmdldDtcbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRUaWNrZXQgPSBvcmRlcj8ubWVtYmVyVGlja2V0cz8uZmluZChcbiAgICAgICAgKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZFxuICAgICAgKTtcbiAgICAgIHNldFRpY2tldHNUb1JlZnVuZChbLi4udGlja2V0c1RvUmVmdW5kLCBzZWxlY3RlZFRpY2tldF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHModGlja2V0KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY2xvc2VTdWJtaXRSZXF1ZXN0ID0gKCkgPT4ge1xuICAgIHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3QgcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IG1vcmVEZXRhaWxzID0gKCkgPT5cbiAgICBkZXRhaWxzUmVxdWlyZWQgJiYgKFxuICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgbWVzc2FnZT17dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2RldGFpbHNfcmVxdWlyZWRcIil9XG4gICAgICAgIGNvbG9yPVwiI2ZmOTgwMFwiXG4gICAgICAgIGRhdGFUZXN0SWQ9XCJtb3JlLWRldGFpbHMtbGFiZWxcIlxuICAgICAgLz5cbiAgICApO1xuXG4gIHJldHVybiBpc01vYmlsZSA/IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJtb2JpbGUtb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8Qm94IHN4PXt7IGJvcmRlckNvbG9yOiBcImRpdmlkZXJcIiwgcGI6IDIgfX0+XG4gICAgICAgIDxUYWJzXG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlRpY2tldHMgJiBTdW1tYXJ5XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMudGlja2V0c1wiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnN1bW1hcnlcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgIDwvVGFicz5cbiAgICAgIDwvQm94PlxuICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MH0+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXsxfT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4odHJ1ZSl9XG4gICAgICAgIC8+XG4gICAgICAgIDxSZWZ1bmRSZXF1ZXN0c01vZGFsXG4gICAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHMgfHwgW119XG4gICAgICAgICAgb3Blbj17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZT17KCkgPT4gcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcygpfVxuICAgICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IGNsb3NlU3VibWl0UmVxdWVzdCgpfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgICAgPFJlZnVuZERldGFpbHNcbiAgICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0c31cbiAgICAgICAgICBjdXJyZW5jeT17b3JkZXIuY3VycmVuY3l9XG4gICAgICAgICAgb3Blbj17cmVmdW5kRGV0YWlsc09wZW59XG4gICAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4oZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICA8L0JveD5cbiAgKSA6IChcbiAgICA8PlxuICAgICAgPEdyaWQgaXRlbSBtZD17MTJ9PlxuICAgICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkXG4gICAgICAgIHBhZGRpbmc9ezF9XG4gICAgICAgIGl0ZW1cbiAgICAgICAgbWQ9ezd9XG4gICAgICAgIG9yZGVyPXt7IG1kOiAxIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiZGVza3RvcC1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHBhZGRpbmc9ezF9IGl0ZW0gbWQ9ezV9IG9yZGVyPXt7IG1kOiAxIH19PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZERldGFpbENsaWNrPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3Blbih0cnVlKX1cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxSZWZ1bmRSZXF1ZXN0c01vZGFsXG4gICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzIHx8IFtdfVxuICAgICAgICBvcGVuPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZT17KCkgPT4gcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcygpfVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBjbG9zZVN1Ym1pdFJlcXVlc3QoKX1cbiAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAvPlxuICAgICAgPFJlZnVuZERldGFpbHNcbiAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgIGN1cnJlbmN5PXtvcmRlci5jdXJyZW5jeX1cbiAgICAgICAgb3Blbj17cmVmdW5kRGV0YWlsc09wZW59XG4gICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKGZhbHNlKX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVtYmVyVGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KSxcbiAgaXNNb2JpbGU6IFByb3BUeXBlcy5ib29sLFxuICBkZXRhaWxzUmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvblBhZ2luYXRlQ2xpY2s6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgdXNlTWVkaWFRdWVyeSBmcm9tIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCI7XG5pbXBvcnQgeyBnZXRUaWNrZXRzQnlPcmRlciB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBnZXRGb3JtYXR0ZWREYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIGZyb20gXCIuL09yZGVyc0xpc3REZXNrdG9wTW9iaWxlXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyc0xpc3QgPSAoeyBzdW1taXQsIG9yZGVyIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHsgdGlja2V0X3Blcl9wYWdlLCBmaWx0ZXIsIHNvcnQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG4gIGNvbnN0IFtpc01vYmlsZVZpZXdhYmxlLCBzZXRNb2JpbGVWaWV3YWJsZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGRldGFpbHNSZXF1aXJlZCA9IG9yZGVyLm1lbWJlclRpY2tldHM/LmZpbmQoXG4gICAgKHRpY2tldCkgPT4gdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiSW5jb21wbGV0ZVwiXG4gICk7XG5cbiAgY29uc3Qgb25QYWdpbmF0ZUNsaWNrID0gKCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgIHBhZ2U6IG9yZGVyLnRpY2tldHNfcGFnZV9jdXJyZW50ICsgT05FX1BBR0VfTkVYVCxcbiAgICAgICAgcGVyUGFnZTogdGlja2V0X3Blcl9wYWdlLFxuICAgICAgICBmaWx0ZXIsXG4gICAgICAgIHNvcnRcbiAgICAgIH0pXG4gICAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAxLCBsZzogMCB9IH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm99XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci10aWNrZXQtaW5mby1jb250YWluZXJcIlxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMucHVyY2hhc2VkXCIpfToge2dldEZvcm1hdHRlZERhdGUob3JkZXIuY3JlYXRlZCl9IHx7XCIgXCJ9XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICB0ZXh0PXtvcmRlci5udW1iZXJ9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB7aXNNb2JpbGUgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIHN4PXt7IHBhZGRpbmc6IFwiNXB4IDEwcHhcIiB9fVxuICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0TW9iaWxlVmlld2FibGUoIWlzTW9iaWxlVmlld2FibGUpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc01vYmlsZVZpZXdhYmxlXG4gICAgICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuaGlkZV90aWNrZXRzXCIpXG4gICAgICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRzXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICA8R3JpZFxuICAgICAgICBrZXk9e29yZGVyLmlkfVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgcm93U3BhY2luZz17MX1cbiAgICAgICAgY29sdW1uU3BhY2luZz17eyB4czogMSwgc206IDIsIG1kOiAzIH19XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfSAke1xuICAgICAgICAgIGlzTW9iaWxlICYmICFpc01vYmlsZVZpZXdhYmxlID8gc3R5bGVzLmRpc3BsYXlfbm9uZSA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgZmxleERpcmVjdGlvbjoge1xuICAgICAgICAgICAgbWQ6IFwicm93XCIsXG4gICAgICAgICAgICBsZzogXCJyb3dcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgeHM6IDIsXG4gICAgICAgICAgICBtZDogNCxcbiAgICAgICAgICAgIGxnOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8T3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcbiAgICAgICAgICBpc01vYmlsZT17aXNNb2JpbGV9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIGRldGFpbHNSZXF1aXJlZD17ISFkZXRhaWxzUmVxdWlyZWR9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlcnNMaXN0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCBmcm9tIFwiLi9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcIjtcbmltcG9ydCB7IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuY29uc3QgUmVmdW5kRGV0YWlscyA9ICh7IHRpY2tldHMsIGN1cnJlbmN5LCBvcGVuLCBvbkNsb3NlU2xpZGVyIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCByZXF1ZXN0ZWRUaWNrZXRzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzKHRpY2tldHMpLFxuICAgIFt0aWNrZXRzXVxuICApO1xuICBjb25zdCBjbG9zZVNsaWRlciA9ICgpID0+IHtcbiAgICBvbkNsb3NlU2xpZGVyKCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPFJpZ2h0RHJhd2VyXG4gICAgICBpZD1cInJlZnVuZC1kZXRhaWxzXCJcbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtjbG9zZVNsaWRlcn1cbiAgICAgIHRpdGxlPXt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICA+XG4gICAgICA8Qm94XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgZmxleERpcmVjdGlvbjogXCJjb2x1bW5cIixcbiAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgICAgIHBhZGRpbmc6IFwiMCA1cmVtXCJcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3JlcXVlc3RlZFRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPFJlZnVuZFJlcXVlc3RlZFRpY2tldFxuICAgICAgICAgICAga2V5PXtgcmVmdW5kX3JlcV8ke3RpY2tldD8uaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgY3VycmVuY3k9e2N1cnJlbmN5fVxuICAgICAgICAgICAgcmVmdW5kRGV0YWlsc1xuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgPC9SaWdodERyYXdlcj5cbiAgKTtcbn07XG5cblJlZnVuZERldGFpbHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZERldGFpbHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBJY29uQnV0dG9uLCBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHRvb2x0aXBDbGFzc2VzIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgSW5mb0ljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCBBdHRlbmRlZVN0YXR1cyBmcm9tIFwiLi4vT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1c1wiO1xuaW1wb3J0IFJlZnVuZFN0YXR1cyBmcm9tIFwiLi9SZWZ1bmRTdGF0dXNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBmb3JtYXRDdXJyZW5jeSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgPSAoeyB0aWNrZXQsIGN1cnJlbmN5LCByZWZ1bmREZXRhaWxzIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IEdSSURfOCA9IDg7XG4gIGNvbnN0IEdSSURfMTIgPSAxMjtcblxuICBjb25zdCBQQURESU5HXzIgPSAyO1xuXG4gIGNvbnN0IGFwcHJvdmVkUmVmdW5kcyA9IHRpY2tldC5yZWZ1bmRfcmVxdWVzdHMuZmlsdGVyKFxuICAgIChyZWZ1bmQpID0+IHJlZnVuZC5zdGF0dXMgPT09IFwiQXBwcm92ZWRcIlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkgPSB7fTtcblxuICBhcHByb3ZlZFJlZnVuZHMuZm9yRWFjaCgocmVmdW5kKSA9PiB7XG4gICAgcmVmdW5kLnJlZnVuZGVkX3RheGVzLmZvckVhY2goKHJ0KSA9PiB7XG4gICAgICBjb25zdCB0YXhJZCA9IHJ0LnRheC5pZDtcbiAgICAgIGlmICghcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0pIHtcbiAgICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0gPSB7XG4gICAgICAgICAgbmFtZTogcnQudGF4Lm5hbWUsXG4gICAgICAgICAgdG90YWxSZWZ1bmRlZFRheEFtb3VudDogMFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0udG90YWxSZWZ1bmRlZFRheEFtb3VudCArPVxuICAgICAgICBydC5yZWZ1bmRlZF9hbW91bnQ7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IEh0bWxUb29sdGlwID0gc3R5bGVkKCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSkgPT4gKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIDxUb29sdGlwIHsuLi5wcm9wc30gY2xhc3Nlcz17eyBwb3BwZXI6IGNsYXNzTmFtZSB9fSAvPlxuICApKSgoKSA9PiAoe1xuICAgIFtgJiAuJHt0b29sdGlwQ2xhc3Nlcy50b29sdGlwfWBdOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiI2Y1ZjVmOVwiLFxuICAgICAgY29sb3I6IFwicmdiYSgwLCAwLCAwLCAwLjg3KVwiLFxuICAgICAgbWF4V2lkdGg6IDIyMCxcbiAgICAgIGZvbnRTaXplOiBcIjFlbVwiLFxuICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCAjZGFkZGU5XCJcbiAgICB9XG4gIH0pKTtcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBjb250YWluZXJcbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnJlZnVuZFRpY2tldEJveENvbnRhaW5lcn0gJHtcbiAgICAgICAgcmVmdW5kRGV0YWlscyA/IHN0eWxlcy5yZWZ1bmREZXRhaWwgOiBcIlwiXG4gICAgICB9IGB9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0ZWQtdGlja2V0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEdyaWRcbiAgICAgICAgeHM9e0dSSURfMTJ9XG4gICAgICAgIHNtPXtyZWZ1bmREZXRhaWxzID8gR1JJRF84IDogR1JJRF8xMn1cbiAgICAgICAgaXRlbVxuICAgICAgICBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgIHB0PXsyfVxuICAgICAgICBweD17NH1cbiAgICAgID5cbiAgICAgICAgPFN0YWNrXG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIixcbiAgICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCJcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgID5cbiAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDxHcmlkIGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZVdyYXBwZXJ9IHhzPXs0fSBpdGVtPlxuICAgICAgICAgICAge3RpY2tldC5iYWRnZT8uZmVhdHVyZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlfVxuICAgICAgICAgICAgICAgIHNyYz17YmYuaW1hZ2V9XG4gICAgICAgICAgICAgICAgYWx0PXtiZi5uYW1lfVxuICAgICAgICAgICAgICAgIGtleT17YmYubmFtZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIHtyZWZ1bmREZXRhaWxzICYmIChcbiAgICAgICAgPEdyaWQgc209ezR9IHhzPXsxMn0gcHg9e3sgc206IDIsIHhzOiA0IH19IHB5PXt7IHhzOiAxLCBzbTogMiB9fSBpdGVtPlxuICAgICAgICAgIDxSZWZ1bmRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8R3JpZCB4cz17MTJ9IGl0ZW0gcHg9ezR9IHBiPXtyZWZ1bmREZXRhaWxzID8gUEFERElOR18yIDogMH0gY29udGFpbmVyPlxuICAgICAgICA8R3JpZCB4cz17MTJ9IHNtPXs4fSBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRUaWNrZXRBdHRlbmRlZX0+XG4gICAgICAgICAgPEF0dGVuZGVlU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy50aWNrZXRfbm9cIil9OiA8Q29weVRleHQgdGV4dD17dGlja2V0Lm51bWJlcn0gLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAge3JlZnVuZERldGFpbHMgJiYgdGlja2V0LnRvdGFsX3JlZnVuZGVkX2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICAgIDxHcmlkIHhzPXsxMn0gbWQ9ezR9IHBsPXt7IHhzOiAwLCBzbTogNCB9fT5cbiAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXQudG90YWxfcmVmdW5kZWRfYW1vdW50LCB7IGN1cnJlbmN5IH0pfXtcIiBcIn1cbiAgICAgICAgICAgIFJlZnVuZGVkXG4gICAgICAgICAgICB7YXBwcm92ZWRSZWZ1bmRzLnNvbWUoKHIpID0+IHIucmVmdW5kZWRfdGF4ZXMubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICA8SHRtbFRvb2x0aXBcbiAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0LnJlZnVuZGVkX2Ftb3VudCwgeyBjdXJyZW5jeSB9KX17XCIgXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgVGlja2V0IEFtb3VudFxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxiPlRheGVzPC9iPlxuICAgICAgICAgICAgICAgICAgICB7T2JqZWN0LmtleXMocmVmdW5kZWRUYXhlc1N1bW1hdG9yeSkubWFwKCh0YXhJZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdG90YWxSZWZ1bmRlZFRheEFtb3VudCwgbmFtZSB9ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnlbdGF4SWRdO1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBrZXk9e3RheElkfT57YCR7bmFtZX0gLSAke2Zvcm1hdEN1cnJlbmN5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFJlZnVuZGVkVGF4QW1vdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IGN1cnJlbmN5IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICl9YH08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxJbmZvSWNvbiAvPlxuICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9IdG1sVG9vbHRpcD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIHttb21lbnQoXG4gICAgICAgICAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHNbMF0uYWN0aW9uX2RhdGUgKiBNSUxMSVNFQ19UT19TRUNcbiAgICAgICAgICAgICkuZm9ybWF0KFwiTU1NIERELCBZWVlZXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgIDwvR3JpZD5cbiAgICAgIHshcmVmdW5kRGV0YWlscyAmJiAoXG4gICAgICAgIDxHcmlkIHhzPXsxMn0gcHI9ezR9IHBiPXsyfT5cbiAgICAgICAgICA8R3JpZCB4cz17MTJ9IGl0ZW0+XG4gICAgICAgICAgICA8VGlja2V0U3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlZnVuZERldGFpbHM6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ2hpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZnVuZFN0YXR1cyA9ICh7IHRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgc3RhdHVzQ29sb3IgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yKHRpY2tldCksXG4gICAgW3RpY2tldF1cbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8Q2hpcFxuICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCByZWZ1bmQgc3RhdHVzIGxhYmVsXCJcbiAgICAgIGxhYmVsPXt0KGB0aWNrZXRfc3RhdHVzLnJlZnVuZF9yZXF1ZXN0XyR7c3RhdHVzQ29sb3J9YCl9XG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlc1tzdGF0dXNDb2xvcl19YH1cbiAgICAvPlxuICApO1xufTtcblxuUmVmdW5kU3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgU3R5bGVkRW5naW5lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENoZWNrQ2lyY2xlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgeyByZWZ1bmRCdWxrVGlja2V0cywgdXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBTVEVQX09ORSwgU1RFUF9USFJFRSwgU1RFUF9UV08gfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi4vT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdGVkVGlja2V0IGZyb20gXCIuL1JlZnVuZFJlcXVlc3RlZFRpY2tldFwiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0c01vZGFsID0gKHtcbiAgdGlja2V0cyxcbiAgc3VtbWl0LFxuICBvcGVuLFxuICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSxcbiAgb25DbG9zZVNsaWRlcixcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZCxcbiAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc3RlcCwgc2V0U3RlcF0gPSB1c2VTdGF0ZShTVEVQX09ORSk7XG4gIGNvbnN0IFtlcnJvck1zZywgc2V0RXJyb3JNc2ddID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtyZWZ1bmRTdWNjZXNzLCBzZXRSZWZ1bmRTdWNjZXNzXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBjbG9zZVNsaWRlciA9ICgpID0+IHtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgICBvbkNsb3NlU2xpZGVyKCk7XG4gICAgc2V0U3RlcChTVEVQX09ORSk7XG4gICAgaWYgKHJlZnVuZFN1Y2Nlc3MpIHtcbiAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlKCk7IC8vIGlmIHRoZSByZWZ1bmQgaXMgYSBzdWNjZXNzLCB0cmlnZ2VyIGFuZCByZS1yZXRyaWV2ZSB0aWNrZXRzIGJ5IG9yZGVyXG4gICAgICBzZXRSZWZ1bmRTdWNjZXNzKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY29uZmlybVJlZnVuZCA9ICgpID0+IHtcbiAgICBzZXRTdGVwKFNURVBfVFdPKTtcbiAgfTtcblxuICBjb25zdCBnb0JhY2tUb1JlZnVuZCA9ICgpID0+IHtcbiAgICBzZXRTdGVwKFNURVBfT05FKTtcbiAgfTtcblxuICBjb25zdCByZWZ1bmRUaWNrZXRzID0gYXN5bmMgKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlZnVuZEJ1bGtUaWNrZXRzKHsgdGlja2V0czogdGlja2V0c1RvUmVmdW5kIH0pKS50aGVuKChyZXMpID0+IHtcbiAgICAgIGRpc3BhdGNoKHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQocmVzKSk7IC8vIHJldHVybmluZyB3aGljaCB0aWNrZXRzIHdlcmUgc3VjY2Vzc2Z1bFxuICAgICAgaWYgKHJlcz8ubGVuZ3RoID09PSB0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoKSB7XG4gICAgICAgIHNldFN0ZXAoU1RFUF9USFJFRSk7IC8vIHN1Y2Nlc3MsIGFsbCByZWZ1bmRzIHdlcmUgcmVxdWVzdGVkXG4gICAgICAgIHNldFJlZnVuZFN1Y2Nlc3ModHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRFcnJvck1zZyh0KFwiZXJyb3JzLnJlZnVuZF91bnN1Y2Nlc3NmdWxcIikpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHNldEVycm9yTXNnKFwiXCIpO1xuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBPbmUgPSAoKSA9PiAoXG4gICAgPD5cbiAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X3NlbGVjdF9yZWZ1bmRcIil9XG4gICAgICA8L2gyPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0fT5cbiAgICAgICAge3RpY2tldHMubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgICAga2V5PXtgdGlja2V0LSR7dGlja2V0LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXtcbiAgICAgICAgICAgICAgISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgICAgICBpc1JlZnVuZE1vZGFsXG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc30+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNhbmNlbC1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jYW5jZWxcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jb250aW51ZS1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2NvbmZpcm1SZWZ1bmR9XG4gICAgICAgICAgZGlzYWJsZWQ9e3RpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29udGludWVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG5cbiAgY29uc3QgcmVmdW5kU3RlcFR3byA9ICgpID0+IChcbiAgICA8Qm94IGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3Qtc3VjY2Vzc2Z1bFwiPlxuICAgICAgPGgzIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAge3QoXCJjb25maXJtX3BvcHVwLnF1ZXN0aW9uX3RleHRfY29uZmlybV9yZWZ1bmRcIil9XG4gICAgICA8L2gzPlxuICAgICAge2Vycm9yTXNnICYmIChcbiAgICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgICBjbGFzc05hbWVzPXtzdHlsZXMucmVmdW5kRXJyb3JNc2d9XG4gICAgICAgICAgY29sb3I9XCIjRkYwMDAwXCJcbiAgICAgICAgICBkYXRhVGVzdElkPVwiZmFpbGVkLXJlZnVuZC1tZXNzYWdlXCJcbiAgICAgICAgICBtZXNzYWdlPXtlcnJvck1zZ31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3R9PlxuICAgICAgICB7dGlja2V0c1RvUmVmdW5kLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPFJlZnVuZFJlcXVlc3RlZFRpY2tldFxuICAgICAgICAgICAga2V5PXtgcmVmdW5kX3JlcV8ke3RpY2tldD8uaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLkNUQUJ1dHRvbldyYXBwZXJ9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1yZXR1cm4tYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Z29CYWNrVG9SZWZ1bmR9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuYmFja1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNvbnRpbnVlLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17cmVmdW5kVGlja2V0c31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb250aW51ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0JveD5cbiAgICA8L0JveD5cbiAgKTtcblxuICBjb25zdCByZWZ1bmRTdGVwVGhyZWUgPSAoKSA9PiAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kU3VjY2Vzc2Z1bH1cbiAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3Qtc3VjY2Vzc2Z1bFwiXG4gICAgPlxuICAgICAgPENoZWNrQ2lyY2xlSWNvbiBzeD17eyBjb2xvcjogXCIjNGNhZjUwXCIgfX0gLz5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2d9PlxuICAgICAgICB7dChcInRpY2tldHMucmVmdW5kX3JlcXVlc3Rfc3VjY2Vzc18xXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3VjY2Vzc01zZzJ9PlxuICAgICAgICB7dChcInRpY2tldHMucmVmdW5kX3JlcXVlc3Rfc3VjY2Vzc18yXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWZpbmlzaC1idXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9e2Nsb3NlU2xpZGVyfVxuICAgICAgPlxuICAgICAgICB7dChcImdlbmVyYWwuZmluaXNoXCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC9Cb3g+XG4gICk7XG5cbiAgY29uc3QgcmVuZGVyU3RlcHMgPSAoKSA9PiB7XG4gICAgc3dpdGNoIChzdGVwKSB7XG4gICAgICBjYXNlIFNURVBfT05FOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcE9uZSgpO1xuICAgICAgY2FzZSBTVEVQX1RXTzpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBUd28oKTtcbiAgICAgIGNhc2UgU1RFUF9USFJFRTpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBUaHJlZSgpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiAoXG4gICAgPFN0eWxlZEVuZ2luZVByb3ZpZGVyIGluamVjdEZpcnN0PlxuICAgICAgPFJpZ2h0RHJhd2VyXG4gICAgICAgIGlkPVwicmVmdW5kLXJlcXVlc3RzXCJcbiAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgb25DbG9zZT17Y2xvc2VTbGlkZXJ9XG4gICAgICAgIHRpdGxlPXt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1tb2RhbFwiXG4gICAgICA+XG4gICAgICAgIHtyZW5kZXJTdGVwcygpfVxuICAgICAgPC9SaWdodERyYXdlcj5cbiAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICApO1xufTtcblxuUmVmdW5kUmVxdWVzdHNNb2RhbC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvblJlZnVuZFN1Y2Nlc3NDbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQ2xvc2VTbGlkZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0c01vZGFsO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBEcmF3ZXIsIEljb25CdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgQ2xvc2UgYXMgQ2xvc2VJY29uIH0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmlnaHREcmF3ZXIgPSAoe1xuICBpZCxcbiAgdGl0bGUsXG4gIGhlYWRlckNoaWxkcmVuID0gbnVsbCxcbiAgY2hpbGRyZW4sXG4gIG9wZW4sXG4gIG9uQ2xvc2UsXG4gIGNsYXNzTmFtZVxufSkgPT4gKFxuICA8RHJhd2VyXG4gICAgaWQ9e2lkfVxuICAgIG9wZW49e29wZW59XG4gICAgb25DbG9zZT17b25DbG9zZX1cbiAgICBhbmNob3I9XCJyaWdodFwiXG4gICAgTW9kYWxQcm9wcz17eyBrZWVwTW91bnRlZDogZmFsc2UgfX1cbiAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy53cmFwcGVyfSAke2NsYXNzTmFtZX1gfVxuICA+XG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgPEljb25CdXR0b25cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJjbG9zZS1kcmF3ZXJcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jbG9zZUJ0bn1cbiAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgc3g9e3sgZmxvYXQ6IFwicmlnaHRcIiB9fVxuICAgICAgICBmb250U2l6ZT1cImxhcmdlXCJcbiAgICAgID5cbiAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAge3RpdGxlICYmIChcbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAgICB7dGl0bGV9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICl9XG4gICAgICB7aGVhZGVyQ2hpbGRyZW59XG4gICAgPC9Cb3g+XG4gICAge2NoaWxkcmVufVxuICA8L0RyYXdlcj5cbik7XG5cblJpZ2h0RHJhd2VyLnByb3BUeXBlcyA9IHtcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdGl0bGU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5ub2RlXSksXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgaGVhZGVyQ2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmlnaHREcmF3ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBzaGFsbG93RXF1YWwsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5pbXBvcnQgeyBnZXRTdW1taXRGb3JtYXR0ZWREYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N1bW1pdFV0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFN1bW1pdEhlYWRlciA9ICgpID0+IHtcbiAgY29uc3QgeyBzdW1taXQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIHJldHVybiAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMud2lkZ2V0SGVhZGVyfVxuICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX1cbiAgICAgIGRhdGEtdGVzdGlkPVwibXktb3JkZXJzLXRpY2tldC1oZWFkZXJcIlxuICAgID5cbiAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PntzdW1taXQ/Lm5hbWV9PC9oMj5cbiAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PlxuICAgICAgICB7Z2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZShzdW1taXQpfVxuICAgICAgPC9oMj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFN1bW1pdEhlYWRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHJlc2V0RmlsdGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBTdW1taXRIZWFkZXIgZnJvbSBcIi4uL1N1bW1pdEhlYWRlclwiO1xuaW1wb3J0IE5vVGlja2V0c0ZvdW5kIGZyb20gXCIuLi9Ob1RpY2tldHNGb3VuZFwiO1xuaW1wb3J0IHsgVEFCUyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuY29uc3QgVGFiV3JhcHBlciA9ICh7IHRhYiwgY2hpbGRyZW4sIHNldFRhYiB9KSA9PiB7XG4gIGNvbnN0IHsgbWVtYmVyT3JkZXJzLCB1c2VyVGlja2V0cywgYWN0aXZlRmlsdGVyc0NvdW50IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9XG4gICk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgdGlja2V0cyA9IHRhYiA9PT0gVEFCUy5USUNLRVRTID8gdXNlclRpY2tldHMgOiBtZW1iZXJPcmRlcnM7XG4gIGNvbnN0IGhhc1RpY2tldHMgPSB0aWNrZXRzLmxlbmd0aCA+IDA7XG4gIGNvbnN0IGlzRmlsdGVyZWQgPSBhY3RpdmVGaWx0ZXJzQ291bnQgPiAwO1xuXG4gIGNvbnN0IGNsZWFyRmlsdGVycyA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldEZpbHRlcigpKTtcbiAgfTtcblxuICBjb25zdCBnZXRQYWdlVmlldyA9ICgpID0+IHtcbiAgICBpZiAoaXNGaWx0ZXJlZCkgcmV0dXJuIFwiZmlsdGVyXCI7XG4gICAgcmV0dXJuIHRhYiA9PT0gVEFCUy5USUNLRVRTID8gVEFCUy5USUNLRVRTIDogVEFCUy5PUkRFUlM7XG4gIH07XG5cbiAgY29uc3QgZ2V0T25DbGljayA9ICgpID0+IHtcbiAgICBpZiAoaXNGaWx0ZXJlZCkgcmV0dXJuIGNsZWFyRmlsdGVycztcbiAgICBjb25zdCB0YWJUb0xpbmsgPSB0YWIgPT09IFRBQlMuVElDS0VUUyA/IFRBQlMuT1JERVJTIDogVEFCUy5USUNLRVRTO1xuICAgIHJldHVybiAoKSA9PiBzZXRUYWIodGFiVG9MaW5rKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7IWhhc1RpY2tldHMgJiYgKFxuICAgICAgICA8Tm9UaWNrZXRzRm91bmQgcGFnZVZpZXc9e2dldFBhZ2VWaWV3KCl9IG9uQ2xpY2s9e2dldE9uQ2xpY2soKX0gLz5cbiAgICAgICl9XG4gICAgICB7aGFzVGlja2V0cyAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPEJveCBzeD17eyBwdDogNiwgcGI6IDMgfX0+XG4gICAgICAgICAgICA8U3VtbWl0SGVhZGVyIC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBUYWJXcmFwcGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIENvbGxhcHNlLCBEaXZpZGVyLCBMaW5rIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBSZWFzc2lnbkZvcm0gZnJvbSBcIi4uL1JlYXNzaWduRm9ybVwiO1xuaW1wb3J0IERlbGVnYXRlRm9ybSBmcm9tIFwiLi4vRGVsZWdhdGVGb3JtXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBDb25maXJtRGlhbG9nIGZyb20gXCIuLi8uLi8uLi9Db25maXJtRGlhbG9nXCI7XG5cbmNvbnN0IEFzc2lnbk9wdGlvbnMgPSAoe1xuICB0aWNrZXQsXG4gIHVzZXJQcm9maWxlLFxuICBhc3NpZ25PcHRpb24sXG4gIHNldEFzc2lnbk9wdGlvbixcbiAgb25Bc3NpZ24sXG4gIG9uRGVsZWdhdGUsXG4gIG9uVW5Bc3NpZ25cbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbb3BlbkNvbmZpcm1VbmFzc2lnbiwgc2V0T3BlbkNvbmZpcm1VbmFzc2lnbl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGlzQXNzaWduZWRUb01lID0gdXNlclByb2ZpbGU/LmVtYWlsID09PSB0aWNrZXQ/Lm93bmVyPy5lbWFpbDtcbiAgY29uc3QgeyBhbGxvd3NEZWxlZ2F0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIGNvbnN0IGhhbmRsZVVuQXNzaWduID0gKCkgPT4ge1xuICAgIHNldE9wZW5Db25maXJtVW5hc3NpZ24oZmFsc2UpO1xuICAgIG9uVW5Bc3NpZ24oKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBkaXNhYmxlZD17aXNBc3NpZ25lZFRvTWV9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQXNzaWduKHVzZXJQcm9maWxlLmVtYWlsLCBcIlwiKX1cbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbl90b19tZVwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAgPERpdmlkZXIgdmFyaWFudD1cIm1pZGRsZVwiIHN4PXt7IG15OiAzLCBweDogNCB9fT5cbiAgICAgICAgb3JcbiAgICAgIDwvRGl2aWRlcj5cbiAgICAgIDxCb3g+XG4gICAgICAgIDxDb2xsYXBzZSBpbj17YXNzaWduT3B0aW9uID09PSBcIm90aGVyXCJ9IHRpbWVvdXQ9ezUwMH0+XG4gICAgICAgICAgPFJlYXNzaWduRm9ybVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBvblN1Ym1pdD17KHZhbCkgPT5cbiAgICAgICAgICAgICAgb25Bc3NpZ24odmFsLm5ld19hdHRlbmRlZV9lbWFpbCwgdmFsLnBlcnNvbmFsX21lc3NhZ2UpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24obnVsbCl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Db2xsYXBzZT5cbiAgICAgICAge2Fzc2lnbk9wdGlvbiAhPT0gXCJvdGhlclwiICYmIChcbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QXNzaWduT3B0aW9uKFwib3RoZXJcIil9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbl90b19vdGhlclwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAge2FsbG93c0RlbGVnYXRlICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8RGl2aWRlciB2YXJpYW50PVwibWlkZGxlXCIgc3g9e3sgbXk6IDMsIHB4OiA0IH19PlxuICAgICAgICAgICAgb3JcbiAgICAgICAgICA8L0RpdmlkZXI+XG4gICAgICAgICAgPENvbGxhcHNlIGluPXthc3NpZ25PcHRpb24gPT09IFwibWFuYWdlXCJ9IHRpbWVvdXQ9ezUwMH0+XG4gICAgICAgICAgICA8RGVsZWdhdGVGb3JtXG4gICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICBvblN1Ym1pdD17KHZhbCkgPT5cbiAgICAgICAgICAgICAgICBvbkRlbGVnYXRlKFxuICAgICAgICAgICAgICAgICAgdmFsLmRlbGVnYXRlX2ZpcnN0X25hbWUsXG4gICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfbGFzdF9uYW1lLFxuICAgICAgICAgICAgICAgICAgdmFsLmRlbGVnYXRlX2VtYWlsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldEFzc2lnbk9wdGlvbihudWxsKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9Db2xsYXBzZT5cbiAgICAgICAgICB7YXNzaWduT3B0aW9uICE9PSBcIm1hbmFnZVwiICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFzc2lnbk9wdGlvbihcIm1hbmFnZVwiKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLm1hbmFnZV90aWNrZXRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7dGlja2V0Py5vd25lcj8uZW1haWwgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnVuYXNzaWduV3JhcHBlcn0+XG4gICAgICAgICAgey8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi99XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGNvbXBvbmVudD1cImJ1dHRvblwiXG4gICAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0T3BlbkNvbmZpcm1VbmFzc2lnbih0cnVlKX1cbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIGNvbG9yOiBcInRleHQubGlua1wiLFxuICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvbjogXCJ1bmRlcmxpbmVcIixcbiAgICAgICAgICAgICAgdGV4dERlY29yYXRpb25Db2xvcjogXCJ0ZXh0LmxpbmtcIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ucmV2ZXJ0X3RvX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgICB7LyogVE9ETzogaWYgd2UgbmVlZCB0byByZXVzZSB0aGlzIHRoZW4gd2Ugc2hvdWxkIG1vdmUgaXQgdG8gY29udGV4dCAqL31cbiAgICAgIDxDb25maXJtRGlhbG9nXG4gICAgICAgIG9wZW49e29wZW5Db25maXJtVW5hc3NpZ259XG4gICAgICAgIHRpdGxlPXt0KFwidGlja2V0X2Fzc2lnbi5jb25maXJtX3VuYXNzaWduLnRpdGxlXCIpfVxuICAgICAgICBib2R5PXt0KFwidGlja2V0X2Fzc2lnbi5jb25maXJtX3VuYXNzaWduLmJvZHlcIil9XG4gICAgICAgIG9uQ29uZmlybT17aGFuZGxlVW5Bc3NpZ259XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldE9wZW5Db25maXJtVW5hc3NpZ24oZmFsc2UpfVxuICAgICAgLz5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkFzc2lnbk9wdGlvbnMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdXNlclByb2ZpbGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgYXNzaWduT3B0aW9uOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRBc3NpZ25PcHRpb246IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQXNzaWduOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkRlbGVnYXRlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25PcHRpb25zO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5cbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5cbmNvbnN0IERlbGVnYXRlRm9ybSA9ICh7IG9uU3VibWl0LCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczoge1xuICAgICAgZGVsZWdhdGVfZmlyc3RfbmFtZTogXCJcIixcbiAgICAgIGRlbGVnYXRlX2xhc3RfbmFtZTogXCJcIixcbiAgICAgIGRlbGVnYXRlX2VtYWlsOiBcIlwiXG4gICAgfSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiB5dXAub2JqZWN0KHtcbiAgICAgIGRlbGVnYXRlX2ZpcnN0X25hbWU6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgICAucmVxdWlyZWQodChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5yZXF1aXJlZFwiKSksXG4gICAgICBkZWxlZ2F0ZV9sYXN0X25hbWU6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5sYXN0X25hbWUucmVxdWlyZWRcIikpLFxuICAgICAgZGVsZWdhdGVfZW1haWw6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgICAgLmVtYWlsKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICB9KSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcywgeyByZXNldEZvcm0gfSkgPT4ge1xuICAgICAgb25TdWJtaXQodmFsdWVzKTtcbiAgICAgIHJlc2V0Rm9ybSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIGZvcm1pay5yZXNldEZvcm0oKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS50aXRsZVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19PlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5ib2R5XCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwiZGVsZWdhdGVfZmlyc3RfbmFtZVwiXG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5maXJzdF9uYW1lXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlX2ZpcnN0X25hbWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9maXJzdF9uYW1lICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZmlyc3RfbmFtZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9maXJzdF9uYW1lICYmXG4gICAgICAgICAgICBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2ZpcnN0X25hbWVcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgLz5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJkZWxlZ2F0ZV9sYXN0X25hbWVcIlxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0ubGFzdF9uYW1lXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlX2xhc3RfbmFtZX1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2xhc3RfbmFtZSAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2xhc3RfbmFtZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9sYXN0X25hbWUgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfbGFzdF9uYW1lXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cImRlbGVnYXRlX2VtYWlsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5lbWFpbFwiKX1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlX2VtYWlsfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZW1haWwgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9lbWFpbClcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9lbWFpbCAmJiBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2VtYWlsXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICA8Rm9ybUZvb3RlclxuICAgICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5zYXZlXCIpfVxuICAgICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmNhbmNlbFwiKX1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAgIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgPC8+XG4gICk7XG59O1xuXG5EZWxlZ2F0ZUZvcm0ucHJvcFR5cGVzID0ge1xuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGVsZWdhdGVGb3JtO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBMaW5rLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vLi4vLi4vQ29weVRleHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgQXNzaWduSGVhZGVyID0gKHsgaW5Qcm9ncmVzcywgdGlja2V0LCB1c2VyRW1haWwsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGFzc2lnbmVkVG9Zb3UgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlckVtYWlsO1xuXG4gIGNvbnN0IGdldFNlY29uZGFyeVRpdGxlID0gKCkgPT4ge1xuICAgIGlmIChpblByb2dyZXNzID09PSBcIm1hbmFnZVwiKSB7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5kZWxlZ2F0ZWRcIil9ICR7XG4gICAgICAgIHRpY2tldC5vd25lci5maXJzdF9uYW1lXG4gICAgICB9ICR7dGlja2V0Lm93bmVyLmxhc3RfbmFtZX0uYDtcbiAgICB9XG5cbiAgICBpZiAoaW5Qcm9ncmVzcykge1xuICAgICAgY29uc3QgdXNlciA9IGFzc2lnbmVkVG9Zb3UgPyBcInlvdVwiIDogdGlja2V0Py5vd25lcj8uZW1haWw7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5hc3NpZ25lZF90b1wiKX0gJHt1c2VyfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRpY2tldC50aWNrZXRfdHlwZS5uYW1lO1xuICB9O1xuXG4gIGNvbnN0IGdldEhlYWRlck5vdGUgPSAoKSA9PiB7XG4gICAgaWYgKGluUHJvZ3Jlc3MpIHtcbiAgICAgIGNvbnN0IHRyYW5zS2V5ID0gYXNzaWduZWRUb1lvdVxuICAgICAgICA/IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFuc3dlcl95b3VyX2VxXCJcbiAgICAgICAgOiBcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5hbnN3ZXJfb3RoZXJzX2VxXCI7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3QodHJhbnNLZXkpfVxuICAgICAgICAgIDxiciAvPlxuICAgICAgICAgIHsvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvYW5jaG9yLWlzLXZhbGlkICovfVxuICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICBjb21wb25lbnQ9XCJidXR0b25cIlxuICAgICAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgICBzeD17eyBmb250V2VpZ2h0OiA3MDAsIG1hcmdpbjogXCIyMHB4IDAgMTBweFwiIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uY29tcGxldGVfbGF0ZXJcIil9XG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCI7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5wdXJjaGFzZWRCeVdyYXBwZXJ9PlxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMucHVyY2hhc2VkQnl9PlxuICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLnB1cmNoYXNlZF9ieVwiKX17XCIgXCJ9XG4gICAgICAgICAge3RpY2tldD8ub3JkZXI/Lm93bmVyX2VtYWlsfVxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5vcmRlck5vfT5cbiAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgIHRleHQ9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgICB3aWR0aD17MjUwfVxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg1XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7Z2V0U2Vjb25kYXJ5VGl0bGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJOb3RlfVxuICAgICAgICBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICA+XG4gICAgICAgIHtnZXRIZWFkZXJOb3RlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG4vLyBBZGRpbmcgcHJvcC10eXBlcyBmb3IgdHlwZS1jaGVja2luZ1xuQXNzaWduSGVhZGVyLnByb3BUeXBlcyA9IHtcbiAgaW5Qcm9ncmVzczogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdXNlckVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbkhlYWRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgTGluaywgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVhc3NpZ25IZWFkZXIgPSAoeyBpblByb2dyZXNzLCB0aWNrZXQsIHVzZXJFbWFpbCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYXNzaWduZWRUb1lvdSA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyRW1haWw7XG4gIGNvbnN0IHsgYWxsb3dzRGVsZWdhdGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBnZXRTZWNvbmRhcnlUaXRsZSA9ICgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gYXNzaWduZWRUb1lvdVxuICAgICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24ueW91cnNlbGZcIilcbiAgICAgIDogdGlja2V0Py5vd25lcj8uZW1haWw7XG5cbiAgICBpZiAoaW5Qcm9ncmVzcyA9PT0gXCJtYW5hZ2VcIikge1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5kZWxlZ2F0ZWRcIil9ICR7XG4gICAgICAgIHRpY2tldC5vd25lci5maXJzdF9uYW1lXG4gICAgICB9ICR7dGlja2V0Lm93bmVyLmxhc3RfbmFtZX0uYDtcbiAgICB9XG5cbiAgICBpZiAoIWluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYXNzaWduZWRfdG9cIil9ICR7dXNlcn1gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24ucmVhc3NpZ25lZF90b1wiKX0gJHt1c2VyfWA7XG4gIH07XG5cbiAgY29uc3QgZ2V0SGVhZGVyTm90ZSA9ICgpID0+IHtcbiAgICBpZiAoIWluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiBhbGxvd3NEZWxlZ2F0ZVxuICAgICAgICA/IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5jaG9vc2Vfb3B0aW9uXCIpXG4gICAgICAgIDogdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmNob29zZV9vcHRpb25fbm9fZGVsZWdhdGVcIik7XG4gICAgfVxuXG4gICAgY29uc3QgdHJhbnNLZXkgPSBhc3NpZ25lZFRvWW91XG4gICAgICA/IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYW5zd2VyX3lvdXJfZXFcIlxuICAgICAgOiBcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmFuc3dlcl9vdGhlcnNfZXFcIjtcblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICB7dCh0cmFuc0tleSl9XG4gICAgICAgIDxiciAvPlxuICAgICAgICB7LyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1pcy12YWxpZCAqL31cbiAgICAgICAgPExpbmtcbiAgICAgICAgICBjb21wb25lbnQ9XCJidXR0b25cIlxuICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICBzeD17eyBmb250V2VpZ2h0OiA3MDAsIG1hcmdpbjogXCIyMHB4IDAgMTBweFwiIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmNvbXBsZXRlX2xhdGVyXCIpfVxuICAgICAgICA8L0xpbms+XG4gICAgICA8Lz5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNVwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge2dldFNlY29uZGFyeVRpdGxlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeVxuICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyTm90ZX1cbiAgICAgICAgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fVxuICAgICAgPlxuICAgICAgICB7Z2V0SGVhZGVyTm90ZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuLy8gQWRkaW5nIHByb3AtdHlwZXMgZm9yIHR5cGUtY2hlY2tpbmdcblJlYXNzaWduSGVhZGVyLnByb3BUeXBlcyA9IHtcbiAgaW5Qcm9ncmVzczogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdXNlckVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYXNzaWduSGVhZGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5cbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5cbmNvbnN0IFJlYXNzaWduRm9ybSA9ICh7IG9uU3VibWl0LCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczoge1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiBcIlwiLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogXCJcIlxuICAgIH0sXG4gICAgdmFsaWRhdGlvblNjaGVtYTogeXVwLm9iamVjdCh7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgICAgLmVtYWlsKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKSxcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IHl1cC5zdHJpbmcodChcInZhbGlkYXRpb24udGV4dC5zdHJpbmdcIikpXG4gICAgfSksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMsIHsgcmVzZXRGb3JtIH0pID0+IHtcbiAgICAgIG9uU3VibWl0KHZhbHVlcyk7XG4gICAgICByZXNldEZvcm0oKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcbiAgICBmb3JtaWsucmVzZXRGb3JtKCk7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0udGl0bGVcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uYm9keVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cIm5ld19hdHRlbmRlZV9lbWFpbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0ubmV3X2F0dGVuZGVlX2VtYWlsXCIpfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMubmV3X2F0dGVuZGVlX2VtYWlsfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWxcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgLz5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJwZXJzb25hbF9tZXNzYWdlXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5wZXJzb25hbF9tZXNzYWdlXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLnBlcnNvbmFsX21lc3NhZ2V9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBtdWx0aWxpbmVcbiAgICAgICAgICBtaW5Sb3dzPXs0fVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2UpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJiBmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2VcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLnNhdmVcIil9XG4gICAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgICAgLz5cbiAgICAgIDwvZm9ybT5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblJlYXNzaWduRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWFzc2lnbkZvcm07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ29udGV4dCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIGFzc2lnbkF0dGVuZGVlLFxuICBkZWxlZ2F0ZVRpY2tldCxcbiAgcmVhc3NpZ25UaWNrZXQsXG4gIHNhdmVFeHRyYVF1ZXN0aW9ucyxcbiAgdW5hc3NpZ25UaWNrZXRcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuLi9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRGb3JtXCI7XG5pbXBvcnQgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dCBmcm9tIFwiLi4vQ3VzdG9tTm90aWZpY2F0aW9uL0NvbnRleHRcIjtcbmltcG9ydCB7IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCB9IGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQgdXNlR2V0VGlja2V0IGZyb20gXCIuLi8uLi9ob29rcy91c2VHZXRUaWNrZXRcIjtcbmltcG9ydCBBc3NpZ25IZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9IZWFkZXIvQXNzaWduSGVhZGVyXCI7XG5pbXBvcnQgUmVhc3NpZ25IZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9IZWFkZXIvUmVhc3NpZ25IZWFkZXJcIjtcbmltcG9ydCBBc3NpZ25PcHRpb25zIGZyb20gXCIuL2NvbXBvbmVudHMvQXNzaWduT3B0aW9uc1wiO1xuaW1wb3J0IHsgVElDS0VUX0RSQVdFUl9JRCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0QXNzaWduID0gKHsgdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIG9wZW4sIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyBzdWNjZXNzTWVzc2FnZSwgZXJyb3JNZXNzYWdlIH0gPSB1c2VDb250ZXh0KFxuICAgIEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHRcbiAgKTtcbiAgY29uc3QgW2Fzc2lnbk9wdGlvbiwgc2V0QXNzaWduT3B0aW9uXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbYXNzaWduYXRpb25JblByb2dyZXNzLCBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3NdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgeyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VHZXRUaWNrZXQoXG4gICAgdGlja2V0SWQsXG4gICAgb3JkZXJJZCxcbiAgICBvd25lcklkLFxuICAgIG9wZW5cbiAgKTtcbiAgY29uc3QgaXNVc2VyT3JkZXJPd25lciA9IHRpY2tldD8ub3JkZXI/Lm93bmVyX2lkID09PSB1c2VyUHJvZmlsZT8uaWQ7XG4gIGNvbnN0IGlzVXNlclRpY2tldE93bmVyID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJQcm9maWxlPy5lbWFpbDtcbiAgY29uc3QgY2FuRWRpdFRpY2tldERhdGEgPVxuICAgIChpc1VzZXJUaWNrZXRPd25lciB8fCBpc1VzZXJPcmRlck93bmVyKSAmJlxuICAgIHN1bW1pdC5hbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zO1xuXG4gIGNvbnN0IG9uQ2xvc2VFUUZvcm0gPSAoKSA9PiB7XG4gICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKFwiXCIpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBvbkFzc2lnbiA9IChlbWFpbCwgbWVzc2FnZSA9IFwiXCIpID0+IHtcbiAgICBpZiAob3duZXJJZCkge1xuICAgICAgZGlzcGF0Y2gocmVhc3NpZ25UaWNrZXQob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSkudGhlbigoKSA9PiB7XG4gICAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwYXRjaChhc3NpZ25BdHRlbmRlZShvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwpKS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgICAgc2V0QXNzaWduT3B0aW9uKG51bGwpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uVW5Bc3NpZ24gPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2godW5hc3NpZ25UaWNrZXQob3JkZXJJZCwgdGlja2V0SWQpKS50aGVuKCgpID0+IHtcbiAgICAgIG9uQ2xvc2VFUUZvcm0oKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvbkRlbGVnYXRlID0gKGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsKSA9PiB7XG4gICAgZGlzcGF0Y2goXG4gICAgICBkZWxlZ2F0ZVRpY2tldChvcmRlcklkLCB0aWNrZXRJZCwgZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpXG4gICAgKS50aGVuKCgpID0+IHtcbiAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICBzZXRBc3NpZ25PcHRpb24obnVsbCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25TYXZlRVEgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVFeHRyYVF1ZXN0aW9ucyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBvbkNsb3NlRVFGb3JtKCk7XG4gICAgICAgIHN1Y2Nlc3NNZXNzYWdlKHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19zdWNjZXNzXCIpKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgIGVycm9yTWVzc2FnZSh0KFwidGlja2V0X2Fzc2lnbi5zYXZpbmdfZXJyb3JcIikpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHRpdGxlID0gb3duZXJJZFxuICAgID8gdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLnRpdGxlXCIpXG4gICAgOiB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLnRpdGxlXCIpO1xuICBjb25zdCBIZWFkZXIgPSBvd25lcklkID8gUmVhc3NpZ25IZWFkZXIgOiBBc3NpZ25IZWFkZXI7XG5cbiAgcmV0dXJuIChcbiAgICA8UmlnaHREcmF3ZXJcbiAgICAgIGlkPXtUSUNLRVRfRFJBV0VSX0lEfVxuICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2VFUUZvcm19XG4gICAgPlxuICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0UmVhc3NpZ25Db250YWluZXJ9PlxuICAgICAgICAgIDxIZWFkZXJcbiAgICAgICAgICAgIGluUHJvZ3Jlc3M9e2Fzc2lnbmF0aW9uSW5Qcm9ncmVzc31cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgdXNlckVtYWlsPXt1c2VyUHJvZmlsZS5lbWFpbH1cbiAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VFUUZvcm19XG4gICAgICAgICAgLz5cblxuICAgICAgICAgIHthc3NpZ25hdGlvbkluUHJvZ3Jlc3MgPyAoXG4gICAgICAgICAgICA8VGlja2V0Rm9ybVxuICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgY2FuRWRpdD17Y2FuRWRpdFRpY2tldERhdGF9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmVFUX1cbiAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxBc3NpZ25PcHRpb25zXG4gICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICB1c2VyUHJvZmlsZT17dXNlclByb2ZpbGV9XG4gICAgICAgICAgICAgIGFzc2lnbk9wdGlvbj17YXNzaWduT3B0aW9ufVxuICAgICAgICAgICAgICBzZXRBc3NpZ25PcHRpb249e3NldEFzc2lnbk9wdGlvbn1cbiAgICAgICAgICAgICAgb25Bc3NpZ249e29uQXNzaWdufVxuICAgICAgICAgICAgICBvblVuQXNzaWduPXtvblVuQXNzaWdufVxuICAgICAgICAgICAgICBvbkRlbGVnYXRlPXtvbkRlbGVnYXRlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgPC9SaWdodERyYXdlcj5cbiAgKTtcbn07XG5cblRpY2tldEFzc2lnbi5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldElkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcmRlcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvd25lcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldEFzc2lnbjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgQXV0b2NvbXBsZXRlLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IENvbXBhbnlGaWVsZCA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGlzUmVxdWlyZWQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbb3B0aW9ucywgc2V0T3B0aW9uc10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gIGNvbnN0IHtcbiAgICBlcnJvcnMsXG4gICAgdmFsdWVzLFxuICAgIHRvdWNoZWQsXG4gICAgc2V0RmllbGRUb3VjaGVkLFxuICAgIHNldEZpZWxkVmFsdWUsXG4gICAgaW5pdGlhbFZhbHVlc1xuICB9ID0gZm9ybWlrO1xuICBjb25zdCBuYW1lID0gVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueTtcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbbmFtZV07XG4gIGNvbnN0IGRpc2FibGVkID0gISFpbml0aWFsVmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSA9PT0gXCJcIikge1xuICAgICAgc2V0T3B0aW9ucyh2YWx1ZSA/IFt2YWx1ZV0gOiBbXSk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzKHN1bW1pdElkLCBpbnB1dFZhbHVlLCAocmVzdWx0cykgPT4ge1xuICAgICAgbGV0IG5ld09wdGlvbnMgPSBbXTtcblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbdmFsdWVdO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICBuZXdPcHRpb25zID0gWy4uLm5ld09wdGlvbnMsIC4uLnJlc3VsdHNdO1xuICAgICAgfVxuXG4gICAgICBzZXRPcHRpb25zKG5ld09wdGlvbnMpO1xuICAgIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sIFt2YWx1ZSwgaW5wdXRWYWx1ZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPEF1dG9jb21wbGV0ZVxuICAgICAgbmFtZT17bmFtZX1cbiAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICBhdXRvQ29tcGxldGVcbiAgICAgIGZyZWVTb2xvXG4gICAgICBpbmNsdWRlSW5wdXRJbkxpc3RcbiAgICAgIGZpbHRlclNlbGVjdGVkT3B0aW9uc1xuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgb25CbHVyPXsoKSA9PiBzZXRGaWVsZFRvdWNoZWQobmFtZSwgdHJ1ZSwgdHJ1ZSl9XG4gICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4ge1xuICAgICAgICAvLyBWYWx1ZSBzZWxlY3RlZCB3aXRoIGVudGVyLCByaWdodCBmcm9tIHRoZSBpbnB1dFxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWRkIFwieHh4XCIgb3B0aW9uIGNyZWF0ZWQgZHluYW1pY2FsbHlcbiAgICAgICAgaWYgKG9wdGlvbi5pbnB1dFZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbi5pbnB1dFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlZ3VsYXIgb3B0aW9uXG4gICAgICAgIHJldHVybiBvcHRpb24ubmFtZTtcbiAgICAgIH19XG4gICAgICBvbkNoYW5nZT17KGV2ZW50LCBuZXdWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB0bXBWYWx1ZSA9IG5ld1ZhbHVlPy5pbnB1dFZhbHVlIHx8IG5ld1ZhbHVlO1xuXG4gICAgICAgIHNldE9wdGlvbnModG1wVmFsdWUgPyBbdG1wVmFsdWUsIC4uLm9wdGlvbnNdIDogb3B0aW9ucyk7XG4gICAgICAgIHNldEZpZWxkVmFsdWUobmFtZSwgdG1wVmFsdWUpO1xuICAgICAgfX1cbiAgICAgIG9uSW5wdXRDaGFuZ2U9eyhldmVudCwgbmV3SW5wdXRWYWx1ZSkgPT4ge1xuICAgICAgICBzZXRJbnB1dFZhbHVlKG5ld0lucHV0VmFsdWUpO1xuICAgICAgfX1cbiAgICAgIGZpbHRlck9wdGlvbnM9eyhvcHRpb25zLCBwYXJhbXMpID0+IHtcbiAgICAgICAgY29uc3QgeyBpbnB1dFZhbHVlIH0gPSBwYXJhbXM7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gWy4uLm9wdGlvbnNdO1xuICAgICAgICAvLyBTdWdnZXN0IHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2YWx1ZVxuICAgICAgICBjb25zdCBpc0V4aXN0aW5nID0gb3B0aW9ucy5zb21lKChvcHRpb24pID0+IGlucHV0VmFsdWUgPT09IG9wdGlvbi5uYW1lKTtcbiAgICAgICAgaWYgKGlucHV0VmFsdWUgIT09IFwiXCIgJiYgIWlzRXhpc3RpbmcpIHtcbiAgICAgICAgICBmaWx0ZXJlZC5wdXNoKHtcbiAgICAgICAgICAgIGlucHV0VmFsdWUsXG4gICAgICAgICAgICBuYW1lOiBgU2VsZWN0IFwiJHtpbnB1dFZhbHVlfVwiYFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgfX1cbiAgICAgIHJlbmRlcklucHV0PXsocGFyYW1zKSA9PiAoXG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5wYXJhbXN9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2NvbXBhbnlcIil9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgaGVscGVyVGV4dD17aGVscGVyVGV4dH1cbiAgICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICByZW5kZXJPcHRpb249eyhwcm9wcywgb3B0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHsga2V5LCAuLi5vcHRpb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmdcbiAgICAgICAgICA8bGkga2V5PXtrZXl9IHsuLi5vcHRpb25Qcm9wc30+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTJcIlxuICAgICAgICAgICAgICBzeD17eyBmb250U2l6ZTogXCIxZW1cIiwgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7b3B0aW9uLm5hbWV9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn07XG5cbkNvbXBhbnlGaWVsZC5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzdW1taXRJZDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb21wYW55RmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgPSAoe1xuICBkaXNjbGFpbWVyLFxuICBmb3JtaWssXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgaXNSZXF1aXJlZCA9IHRydWVcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBuYW1lID0gVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBoYW5kbGVDaGFuZ2UsIGhhbmRsZUJsdXIgfSA9IGZvcm1paztcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8UmF3SFRNTD57ZGlzY2xhaW1lcn08L1Jhd0hUTUw+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmV4dHJhX3F1ZXN0aW9uc19mb3JtLmRpc2NsYWltZXJfbGFiZWxcIil9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5leHRyYV9xdWVzdGlvbnNfZm9ybS5kaXNjbGFpbWVyX2xhYmVsXCIpfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAvPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblJlZ2lzdHJhdGlvbkRpc2NsYWltZXIucHJvcFR5cGVzID0ge1xuICBkaXNjbGFpbWVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNSZXF1aXJlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgUVJDb2RlIGZyb20gXCJyZWFjdC1xci1jb2RlXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBFbWFpbE91dGxpbmVkIGFzIEVtYWlsSWNvbixcbiAgRmlsZURvd25sb2FkT3V0bGluZWQgYXMgRG93bmxvYWRJY29uXG59IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uLy4uLy4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCB7IGdldFRpY2tldFBERiwgcmVzZW5kTm90aWZpY2F0aW9uIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQywgVFdPX0lURU0gfSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4uLy4uL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXREZXRhaWxIZWFkZXIgPSAoeyB0aWNrZXQsIGlzVmlydHVhbFN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBpc0NvbXBsZXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3NlbnRDb25maXJtYXRpb24sIHNldFNlbnRDb25maXJtYXRpb25dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGRvd25sb2FkVGlja2V0UGRmID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKGdldFRpY2tldFBERih0aWNrZXQpKTtcbiAgfTtcblxuICBjb25zdCBvblNlbmRFbWFpbCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNlbmROb3RpZmljYXRpb24odGlja2V0KSkudGhlbigoKSA9PiB7XG4gICAgICBzZXRTZW50Q29uZmlybWF0aW9uKHRydWUpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHNldFNlbnRDb25maXJtYXRpb24oZmFsc2UpO1xuICAgICAgfSwgTUlMTElTRUNfVE9fU0VDICogVFdPX0lURU0pO1xuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg0XCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAge3RpY2tldD8udGlja2V0X3R5cGU/Lm5hbWV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICB7dChcInRpY2tldF9kZXRhaWwucHVyY2hhc2VkX2J5XCIpfSB7dGlja2V0Py5vcmRlcj8ub3duZXJfZW1haWx9XG4gICAgICA8L1R5cG9ncmFwaHk+XG5cbiAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnFyQ29kZX0+XG4gICAgICAgICAgICA8UVJDb2RlXG4gICAgICAgICAgICAgIHNpemU9ezI1Nn1cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiYXV0b1wiLFxuICAgICAgICAgICAgICAgIG1heFdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdmFsdWU9e3RpY2tldC5xcl9jb2RlfVxuICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI1NiAyNTZcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8cCBjbGFzc05hbWU9e3N0eWxlcy5zdGF0dXN9Pnt0KFwidGlja2V0X2RldGFpbC5zdGF0dXNcIil9PC9wPlxuICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MlwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5xck5vdGV9PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnFyX25vdGVcIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICA8Lz5cbiAgICAgICl9XG5cbiAgICAgIHshaXNWaXJ0dWFsU3VtbWl0ICYmIGlzQ29tcGxldGUgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFjdGlvbkJ1dHRvbnNDb250YWluZXJ9PlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRvd25sb2FkQnRufVxuICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgb25DbGljaz17ZG93bmxvYWRUaWNrZXRQZGZ9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPERvd25sb2FkSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5kb3dubG9hZFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5zZW5kQnRufSAke3NlbnRDb25maXJtYXRpb24gJiYgc3R5bGVzLnNlbnR9YH1cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uU2VuZEVtYWlsfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3NlbnRDb25maXJtYXRpb259XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEVtYWlsSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgIHtzZW50Q29uZmlybWF0aW9uXG4gICAgICAgICAgICAgID8gdChcInRpY2tldF9kZXRhaWwuc2VudFwiKVxuICAgICAgICAgICAgICA6IHQoXCJ0aWNrZXRfZGV0YWlsLnNlbmRcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vcmRlck51bWJlcn0+XG4gICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgIHRleHQ9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICByZXZlcnNlZFxuICAgICAgICAgIHdpZHRoPXsxNTB9XG4gICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZXRhaWxIZWFkZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0IEV4dHJhUXVlc3Rpb25zRmllbGRzIGZyb20gXCIuLi8uLi8uLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkc1wiO1xuXG5pbXBvcnQge1xuICBnZXRUeXBlVmFsdWUsXG4gIHRvU2x1Z1xufSBmcm9tIFwiLi4vLi4vLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuXG5pbXBvcnQgVGlja2V0T3duZXJGaWVsZHMgZnJvbSBcIi4uL1RpY2tldE93bmVyRmllbGRzXCI7XG5pbXBvcnQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciBmcm9tIFwiLi4vUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyXCI7XG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuaW1wb3J0IHVzZVNjcm9sbFRvRXJyb3IgZnJvbSBcIi4uLy4uLy4uLy4uL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3JcIjtcbmltcG9ydCB7XG4gIHBhcnNlQW5zd2VycyxcbiAgYnVpbGRWYWxpZGF0aW9uU2NoZW1hXG59IGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4uLy4uL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRGb3JtID0gKHtcbiAgdGlja2V0LFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgc3VtbWl0LFxuICBjYW5FZGl0LFxuICBvblN1Ym1pdCxcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGFuc3dlcnMgPSB0aWNrZXQ/Lm93bmVyPy5leHRyYV9xdWVzdGlvbnMucmVkdWNlKChyZXMsIGFucykgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhhbnMucXVlc3Rpb24ubmFtZSwgYW5zLnF1ZXN0aW9uLmlkKTtcbiAgICByZXNbcXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWx1ZShhbnMudmFsdWUsIGFucy5xdWVzdGlvbi50eXBlKTtcbiAgICByZXR1cm4gcmVzO1xuICB9LCB7fSk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiBwYXJzZUFuc3dlcnMoXG4gICAgICB0aWNrZXQub3duZXIsXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIGFuc3dlcnMsXG4gICAgICB0cnVlLFxuICAgICAgdHJ1ZVxuICAgICksXG4gICAgdmFsaWRhdGlvblNjaGVtYTogYnVpbGRWYWxpZGF0aW9uU2NoZW1hKFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICB0cnVlLFxuICAgICAgc3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeVxuICAgICksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMpID0+IHtcbiAgICAgIGNvbnN0IHJlbGV2YW50QW5zd2VycyA9IHBhcnNlQW5zd2VycyhcbiAgICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICB0cnVlLFxuICAgICAgICB0cnVlLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gb25TdWJtaXQocmVsZXZhbnRBbnN3ZXJzKTtcbiAgICB9LFxuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZVxuICB9KTtcblxuICAvLyBjb25zb2xlLmxvZyhcIlNVTU1JVDogXCIsIHN1bW1pdCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVElDS0VUOiBcIiwgdGlja2V0KTtcbiAgLy8gY29uc29sZS5sb2coXCJRVUVTVElVT05zOiBcIiwgZXh0cmFRdWVzdGlvbnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkFOU1dFUlM6IFwiLCBhbnN3ZXJzKTtcbiAgLy8gY29uc29sZS5sb2coXCJFUlJPUnM6IFwiLCBmb3JtaWsuZXJyb3JzKTtcbiAgLy8gY29uc29sZS5sb2coXCJWQUxVRVM6IFwiLCBmb3JtaWsudmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJJTklUSUFMOiBcIiwgZm9ybWlrLmluaXRpYWxWYWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRPVUNIRUQ6IFwiLCBmb3JtaWsudG91Y2hlZCk7XG5cbiAgLy8gU0NST0xMIFRPIEVSUk9SXG4gIHVzZVNjcm9sbFRvRXJyb3IoZm9ybWlrKTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPFRpY2tldE93bmVyRmllbGRzXG4gICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICBpc0RlbGVnYXRlZD17ISF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWR9XG4gICAgICAgIHN1bW1pdElkPXtzdW1taXQuaWR9XG4gICAgICAgIGRpc2FibGVkPXshY2FuRWRpdH1cbiAgICAgIC8+XG5cbiAgICAgIHtleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgY2xhc3NOYW1lPXtzdHlsZXMuYWRkaXRpb25hbERldGFpbHN9PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmFkaXRpb25hbF9kZXRhaWxzXCIpfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHNcbiAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgIGFsbG93RWRpdD17Y2FuRWRpdH1cbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIGlzRGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9kZXRhaWwuc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmNhbmNlbFwiKX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cblRpY2tldEZvcm0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNhbkVkaXQ6IFByb3BUeXBlcy5ib29sLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0Rm9ybTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgQ29tcGFueUZpZWxkIGZyb20gXCIuLi9Db21wYW55RmllbGRcIjtcblxuY29uc3QgVGlja2V0T3duZXJGaWVsZHMgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBkaXNhYmxlZCwgaXNEZWxlZ2F0ZWQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciwgaW5pdGlhbFZhbHVlcyB9ID1cbiAgICBmb3JtaWs7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT17VElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWx9XG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5lbWFpbFwiKX1cbiAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgdmFsdWU9e3ZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF19XG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAvPlxuICAgICAge2lzRGVsZWdhdGVkICYmIChcbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgc3g9e3sgZm9udFdlaWdodDogNTAwLCBtYXJnaW46IFwiMTBweCAwXCIgfX0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLm1hbmFnZV9mb3JcIil9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICl9XG4gICAgICB7W1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZSwgVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdLm1hcChcbiAgICAgICAgKG5hbWUpID0+IChcbiAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgIGtleT17bmFtZX1cbiAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICBsYWJlbD17dChgdGlja2V0X2RldGFpbC4ke25hbWV9YCl9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkIHx8IGlzRGVsZWdhdGVkIHx8ICEhaW5pdGlhbFZhbHVlc1tuYW1lXX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICBlcnJvcj17dG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSl9XG4gICAgICAgICAgICBoZWxwZXJUZXh0PXtmb3JtaWsudG91Y2hlZFtuYW1lXSAmJiBmb3JtaWsuZXJyb3JzW25hbWVdfVxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgKVxuICAgICAgKX1cbiAgICAgIDxDb21wYW55RmllbGQgZm9ybWlrPXtmb3JtaWt9IHN1bW1pdElkPXtzdW1taXRJZH0gaXNSZXF1aXJlZCAvPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5pbmZvTm90ZX0+e3QoXCJ0aWNrZXRfZGV0YWlsLmluZm9fbm90ZVwiKX08L0JveD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblRpY2tldE93bmVyRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNEZWxlZ2F0ZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRPd25lckZpZWxkcztcbiIsImV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB1c2VHZXRUaWNrZXQgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUdldFRpY2tldFwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7IFRJQ0tFVF9EUkFXRVJfSUQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgVGlja2V0Rm9ybSBmcm9tIFwiLi9jb21wb25lbnRzL1RpY2tldEZvcm1cIjtcbmltcG9ydCBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0IGZyb20gXCIuLi9DdXN0b21Ob3RpZmljYXRpb24vQ29udGV4dFwiO1xuaW1wb3J0IHsgc2F2ZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IFRpY2tldERldGFpbEhlYWRlciBmcm9tIFwiLi9jb21wb25lbnRzL1RpY2tldERldGFpbEhlYWRlclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXREZXRhaWwgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldElkLFxuICBvcmRlcklkLFxuICBvd25lcklkLFxuICBvcGVuLFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBzdWNjZXNzTWVzc2FnZSwgZXJyb3JNZXNzYWdlIH0gPSB1c2VDb250ZXh0KFxuICAgIEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHRcbiAgKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgeyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VHZXRUaWNrZXQoXG4gICAgdGlja2V0SWQsXG4gICAgb3JkZXJJZCxcbiAgICBvd25lcklkLFxuICAgIG9wZW5cbiAgKTtcbiAgY29uc3QgaXNVc2VyT3JkZXJPd25lciA9IHRpY2tldD8ub3JkZXI/Lm93bmVyX2lkID09PSB1c2VyUHJvZmlsZT8uaWQ7XG4gIGNvbnN0IGlzVXNlclRpY2tldE93bmVyID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJQcm9maWxlPy5lbWFpbDtcbiAgY29uc3QgY2FuRWRpdFRpY2tldERhdGEgPVxuICAgIChpc1VzZXJUaWNrZXRPd25lciB8fCBpc1VzZXJPcmRlck93bmVyKSAmJlxuICAgIHN1bW1pdC5hbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zO1xuXG4gIGNvbnN0IG9uU2F2ZSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZVRpY2tldERldGFpbHModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgb25DbG9zZSgpO1xuICAgICAgICBzdWNjZXNzTWVzc2FnZSh0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfc3VjY2Vzc1wiKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICBlcnJvck1lc3NhZ2UodChcInRpY2tldF9kZXRhaWwuc2F2aW5nX2Vycm9yXCIpKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxSaWdodERyYXdlclxuICAgICAgaWQ9e1RJQ0tFVF9EUkFXRVJfSUR9XG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldERldGFpbENvbnRhaW5lcn1cbiAgICAgIGhlYWRlckNoaWxkcmVuPXtcbiAgICAgICAgPFRpY2tldERldGFpbEhlYWRlclxuICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIGlzVmlydHVhbFN1bW1pdD17c3VtbWl0Py5pc192aXJ0dWFsfVxuICAgICAgICAvPlxuICAgICAgfVxuICAgID5cbiAgICAgIHt0aWNrZXQgJiYgZXh0cmFRdWVzdGlvbnMgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlQ29udGFpbmVyfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9UaXRsZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2luZm9ybWF0aW9uXCIpfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAge3RpY2tldCAmJiAoXG4gICAgICAgICAgICAgIDxUaWNrZXRGb3JtXG4gICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgIGNhbkVkaXQ9e2NhbkVkaXRUaWNrZXREYXRhfVxuICAgICAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmV9XG4gICAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgIDwvUmlnaHREcmF3ZXI+XG4gICk7XG59O1xuXG5UaWNrZXREZXRhaWwucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldElkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcmRlcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvd25lcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldERldGFpbDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IENvbnRhaW5lciwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldFN0YXR1cyA9ICh7IHRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlO1xuICBjb25zdCByZWZ1bmRSZXF1ZXN0cyA9IHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LmZpbmQoXG4gICAgKHIpID0+IHIuc3RhdHVzID09PSBcIlJlcXVlc3RlZFwiXG4gICk7XG4gIGNvbnN0IHsgaXNJbmNvbXBsZXRlLCBpc1VuYXNzaWduZWQsIGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0U3RhdHVzQ29udGFpbmVyfT5cbiAgICAgIHtpc0FjdGl2ZSA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7ISFyZWZ1bmRSZXF1ZXN0cyAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyByZWZ1bmQgcmVxdWVzdGVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uUmVmdW5kUmVxdWVzdGVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfcmVmdW5kX3JlcXVlc3RlZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzSW5jb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBpbmNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uSW5jb21wbGV0ZX1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2luY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc1VuYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgdW5hc3NpZ25lZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvblVuYXNzaWduZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjYW5jZWxsZWRcIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNhbmNlbGxlZH1gfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jYW5jZWxsZWRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG5cblRpY2tldFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIHJlZnVuZFJlcXVlc3RzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIERpdmlkZXIsXG4gIFRhYixcbiAgVGFicyxcbiAgdXNlTWVkaWFRdWVyeSxcbiAgdXNlVGhlbWVcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHN0b3BMb2FkaW5nIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgRklSU1RfUEFHRSxcbiAgVEFCU1xufSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgTXlPcmRlcnNUaWNrZXRzIGZyb20gXCIuLi9NeU9yZGVyc1RpY2tldHNcIjtcbmltcG9ydCBBc3NpZ25lZFRvTWUgZnJvbSBcIi4uL09yZGVyc0xpc3QvQXNzaWduZWRUb01lXCI7XG5pbXBvcnQge1xuICBnZXRUaWNrZXRzQnlPcmRlcixcbiAgZ2V0VXNlck9yZGVycyxcbiAgZ2V0VXNlclRpY2tldHNcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBUYWJXcmFwcGVyIGZyb20gXCIuLi9UYWJXcmFwcGVyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFdpZGdldFRhYnMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3RhYiwgc2V0VGFiXSA9IHVzZVN0YXRlKFRBQlMuT1JERVJTKTtcbiAgY29uc3QgW3RpY2tldHNGdWxseUxvYWRlZCwgc2V0VGlja2V0c0Z1bGx5TG9hZGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgZmlsdGVyLFxuICAgIHNvcnQsXG4gICAgb3JkZXJzX3Blcl9wYWdlOiBvcmRlcnNQZXJQYWdlLFxuICAgIHRpY2tldF9wZXJfcGFnZTogdGlja2V0UGVyUGFnZSxcbiAgICB1c2VyVGlja2V0cyxcbiAgICBtZW1iZXJPcmRlcnNcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh0aGVtZS5icmVha3BvaW50cy5kb3duKFwibGdcIikpO1xuXG4gIGNvbnN0IGhhbmRsZVRhYkNoYW5nZSA9IChldiwgbmV3VGFiKSA9PiB7XG4gICAgc2V0VGFiKG5ld1RhYik7XG4gIH07XG5cbiAgY29uc3QgZmV0Y2hBc3NpZ25lZFRpY2tldHMgPSAocGFnZSwgc2tpcExvYWRpbmcgPSBmYWxzZSkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFVzZXJUaWNrZXRzKFxuICAgICAgICB7XG4gICAgICAgICAgcGFnZSxcbiAgICAgICAgICBwZXJQYWdlOiBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICBzb3J0XG4gICAgICAgIH0sXG4gICAgICAgIHNraXBMb2FkaW5nXG4gICAgICApXG4gICAgKTtcblxuICBjb25zdCBmZXRjaE9yZGVyVGlja2V0cyA9IChwYWdlLCBza2lwTG9hZGluZyA9IGZhbHNlKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VXNlck9yZGVycyhcbiAgICAgICAge1xuICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgcGVyUGFnZTogb3JkZXJzUGVyUGFnZSxcbiAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgc29ydFxuICAgICAgICB9LFxuICAgICAgICBza2lwTG9hZGluZ1xuICAgICAgKVxuICAgICkudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3Qgb3JkZXJUaWNrZXRzUHJvbWlzZXMgPSBkYXRhLm1hcCgob3JkZXIpID0+XG4gICAgICAgIGRpc3BhdGNoKFxuICAgICAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICAgICAgY3VycmVudF9wYWdlOiBGSVJTVF9QQUdFLFxuICAgICAgICAgICAgcGVyUGFnZTogdGlja2V0UGVyUGFnZSxcbiAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgIHNvcnRcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwob3JkZXJUaWNrZXRzUHJvbWlzZXMpO1xuICAgIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZmV0Y2hQcm9taXNlcyA9IFtcbiAgICAgIGZldGNoQXNzaWduZWRUaWNrZXRzKEZJUlNUX1BBR0UsIHRydWUpLFxuICAgICAgZmV0Y2hPcmRlclRpY2tldHMoRklSU1RfUEFHRSwgdHJ1ZSlcbiAgICBdO1xuICAgIFByb21pc2UuYWxsKGZldGNoUHJvbWlzZXMpXG4gICAgICAudGhlbigoKSA9PiBzZXRUaWNrZXRzRnVsbHlMb2FkZWQodHJ1ZSkpXG4gICAgICAuZmluYWxseSgoKSA9PiBkaXNwYXRjaChzdG9wTG9hZGluZygpKSk7XG4gIH0sIFtmaWx0ZXIsIHNvcnRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aWNrZXRzRnVsbHlMb2FkZWQpIHtcbiAgICAgIGlmIChtZW1iZXJPcmRlcnM/Lmxlbmd0aCA9PT0gMCAmJiB1c2VyVGlja2V0cz8ubGVuZ3RoID4gMCkge1xuICAgICAgICBzZXRUYWIoVEFCUy5USUNLRVRTKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFt0aWNrZXRzRnVsbHlMb2FkZWRdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGFiV3JhcHBlcn0+XG4gICAgICA8VGFic1xuICAgICAgICB2YWx1ZT17dGFifVxuICAgICAgICBvbkNoYW5nZT17aGFuZGxlVGFiQ2hhbmdlfVxuICAgICAgICB2YXJpYW50PXtpc01vYmlsZSA/IFwiZnVsbFdpZHRoXCIgOiBcInN0YW5kYXJkXCJ9XG4gICAgICA+XG4gICAgICAgIDxUYWIgbGFiZWw9e3QoXCJvcmRlcnMudGl0bGVcIil9IHZhbHVlPXtUQUJTLk9SREVSU30gLz5cbiAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy5hc3NpZ25lZF90b19tZVwiKX0gdmFsdWU9e1RBQlMuVElDS0VUU30gLz5cbiAgICAgIDwvVGFicz5cbiAgICAgIDxEaXZpZGVyIC8+XG5cbiAgICAgIHt0YWIgPT09IFRBQlMuT1JERVJTICYmIChcbiAgICAgICAgPFRhYldyYXBwZXIgdGFiPXtUQUJTLk9SREVSU30gc2V0VGFiPXtzZXRUYWJ9PlxuICAgICAgICAgIDxNeU9yZGVyc1RpY2tldHMgZmV0Y2hEYXRhPXtmZXRjaE9yZGVyVGlja2V0c30gLz5cbiAgICAgICAgPC9UYWJXcmFwcGVyPlxuICAgICAgKX1cbiAgICAgIHt0YWIgPT09IFRBQlMuVElDS0VUUyAmJiAoXG4gICAgICAgIDxUYWJXcmFwcGVyIHRhYj17VEFCUy5USUNLRVRTfSBzZXRUYWI9e3NldFRhYn0+XG4gICAgICAgICAgPEFzc2lnbmVkVG9NZSBmZXRjaERhdGE9e2ZldGNoQXNzaWduZWRUaWNrZXRzfSAvPlxuICAgICAgICA8L1RhYldyYXBwZXI+XG4gICAgICApfVxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0VGFicztcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsLCBjb25uZWN0IH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcmVzZXRGaWx0ZXIsIGNoYW5nZVNvcnQsIGNoYW5nZUZpbHRlciB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgQ3VzdG9tVGhlbWUgZnJvbSBcIi4uL0N1c3RvbVRoZW1lXCI7XG5pbXBvcnQgTG9hZGVyIGZyb20gXCIuLi9Mb2FkZXJcIjtcbmltcG9ydCBGaWx0ZXJzIGZyb20gXCIuLi9GaWx0ZXJzXCI7XG5pbXBvcnQgV2lkZ2V0VGFicyBmcm9tIFwiLi4vV2lkZ2V0VGFic1wiO1xuaW1wb3J0IEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQgZnJvbSBcIi4uL0N1c3RvbU5vdGlmaWNhdGlvbi9Db250ZXh0XCI7XG5pbXBvcnQgQ3VzdG9tTm90aWZpY2F0aW9uIGZyb20gXCIuLi9DdXN0b21Ob3RpZmljYXRpb25cIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgV2lkZ2V0V3JhcHBlciA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFttc2dEYXRhLCBzZXRNc2dEYXRhXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCB7XG4gICAgbG9hZGluZyxcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVI6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IHN1Y2Nlc3NNZXNzYWdlID0gKG1zZykgPT5cbiAgICBzZXRNc2dEYXRhKHsgbWVzc2FnZTogbXNnLCBzZXZlcml0eTogXCJzdWNjZXNzXCIgfSk7XG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IChtc2cpID0+IHNldE1zZ0RhdGEoeyBtZXNzYWdlOiBtc2csIHNldmVyaXR5OiBcImVycm9yXCIgfSk7XG4gIGNvbnN0IG1lc3NhZ2VDb250ZXh0ID0gdXNlTWVtbygoKSA9PiAoeyBzdWNjZXNzTWVzc2FnZSwgZXJyb3JNZXNzYWdlIH0pLCBbXSk7XG5cbiAgY29uc3Qgb25SZXNldCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldEZpbHRlcigpKTtcbiAgfTtcblxuICBjb25zdCBvbkZpbHRlciA9IChmaWx0ZXJWYWx1ZSkgPT4ge1xuICAgIGRpc3BhdGNoKGNoYW5nZUZpbHRlcihmaWx0ZXJWYWx1ZSkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU29ydCA9IChzb3J0VmFsdWUpID0+IHtcbiAgICBkaXNwYXRjaChjaGFuZ2VTb3J0KHNvcnRWYWx1ZSkpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEN1c3RvbVRoZW1lPlxuICAgICAgPExvYWRlciBvcGVuPXtsb2FkaW5nfSAvPlxuICAgICAgPEN1c3RvbU5vdGlmaWNhdGlvblxuICAgICAgICBvcGVuPXshIW1zZ0RhdGF9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldE1zZ0RhdGEobnVsbCl9XG4gICAgICAgIG1lc3NhZ2U9e21zZ0RhdGE/Lm1lc3NhZ2V9XG4gICAgICAgIHNldmVyaXR5PXttc2dEYXRhPy5zZXZlcml0eX1cbiAgICAgIC8+XG4gICAgICA8RmlsdGVyc1xuICAgICAgICBvbkZpbHRlcj17b25GaWx0ZXJ9XG4gICAgICAgIG9uU29ydD17b25Tb3J0fVxuICAgICAgICBvblNlYXJjaD17b25GaWx0ZXJ9XG4gICAgICAgIG9uUmVzZXQ9e29uUmVzZXR9XG4gICAgICAvPlxuICAgICAgPEJveCBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fT5cbiAgICAgICAgPGgzIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldHNUaXRsZVRleHR9PlxuICAgICAgICAgIHtmaWx0ZXJWYWx1ZXNcbiAgICAgICAgICAgID8gdChcImxhYmVscy5zZWFyY2hfcmVzdWx0c1wiLCB7IGZpbHRlcjogZmlsdGVyVmFsdWVzIH0pXG4gICAgICAgICAgICA6IHQoXCJsYWJlbHMudGlja2V0c1wiKX1cbiAgICAgICAgPC9oMz5cbiAgICAgIDwvQm94PlxuICAgICAgPEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e21lc3NhZ2VDb250ZXh0fT5cbiAgICAgICAgPFdpZGdldFRhYnMgLz5cbiAgICAgIDwvQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L0N1c3RvbVRoZW1lPlxuICApO1xufTtcblxuY29uc3QgbWFwU3RhdGVUb1Byb3BzID0gKHsgd2lkZ2V0U3RhdGUgfSkgPT4gKHtcbiAgc29ydDogd2lkZ2V0U3RhdGUuc29ydCxcbiAgZmlsdGVyOiB3aWRnZXRTdGF0ZS5maWx0ZXJcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywge30pKFdpZGdldFdyYXBwZXIpO1xuIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IGdldEV4dHJhUXVlc3Rpb25zLCBnZXRUaWNrZXQgfSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuXG5jb25zdCB1c2VHZXRUaWNrZXQgPSAodGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIHJ1bikgPT4ge1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocnVuKSB7XG4gICAgICBpZiAodGlja2V0SWQgJiYgb3JkZXJJZCkge1xuICAgICAgICBkaXNwYXRjaChnZXRUaWNrZXQodGlja2V0SWQsIG9yZGVySWQpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG93bmVySWQpIHtcbiAgICAgICAgZGlzcGF0Y2goZ2V0RXh0cmFRdWVzdGlvbnMob3duZXJJZCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3RpY2tldElkLCBvcmRlcklkLCBvd25lcklkLCBydW5dKTtcblxuICBjb25zdCB7IGV4dHJhUXVlc3Rpb25zLCBjdXJyZW50VGlja2V0OiB0aWNrZXQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGVcbiAgKTtcblxuICByZXR1cm4geyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VHZXRUaWNrZXQ7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFRJQ0tFVF9EUkFXRVJfSUQgfSBmcm9tIFwiLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbi8vIFNtb290aCBzY3JvbGxpbmcgZnVuY3Rpb24gdXNpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lXG5mdW5jdGlvbiBzbW9vdGhTY3JvbGxUbyhjb250YWluZXIsIHRhcmdldFNjcm9sbFRvcCwgZHVyYXRpb24pIHtcbiAgY29uc3Qgc3RhcnRTY3JvbGxUb3AgPSBjb250YWluZXIuc2Nyb2xsVG9wO1xuICBjb25zdCBkaXN0YW5jZSA9IHRhcmdldFNjcm9sbFRvcCAtIHN0YXJ0U2Nyb2xsVG9wO1xuICBsZXQgc3RhcnRUaW1lID0gbnVsbDtcblxuICBmdW5jdGlvbiBhbmltYXRpb25TdGVwKHRpbWVzdGFtcCkge1xuICAgIGlmICghc3RhcnRUaW1lKSBzdGFydFRpbWUgPSB0aW1lc3RhbXA7XG4gICAgY29uc3QgZWxhcHNlZCA9IHRpbWVzdGFtcCAtIHN0YXJ0VGltZTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgY29uc3QgcHJvZ3Jlc3MgPSBNYXRoLm1pbihlbGFwc2VkIC8gZHVyYXRpb24sIDEpO1xuICAgIGNvbnN0IGVhc2VJbk91dFF1YWQgPVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICAgIHByb2dyZXNzIDwgMC41ID8gMiAqIHByb2dyZXNzICoqIDIgOiAxIC0gKC0yICogcHJvZ3Jlc3MgKyAyKSAqKiAyIC8gMjtcblxuICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSBzdGFydFNjcm9sbFRvcCArIGRpc3RhbmNlICogZWFzZUluT3V0UXVhZDtcblxuICAgIGlmIChlbGFwc2VkIDwgZHVyYXRpb24pIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbiAgICB9XG4gIH1cblxuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uU3RlcCk7XG59XG5cbmNvbnN0IHVzZVNjcm9sbFRvRXJyb3IgPSAoZm9ybWlrKSA9PiB7XG4gIGNvbnN0IHsgZXJyb3JzLCBpc1ZhbGlkLCBpc1N1Ym1pdHRpbmcgfSA9IGZvcm1paztcbiAgY29uc3QgZXJyb3JBcnJheSA9IE9iamVjdC5rZXlzKGVycm9ycyk7XG4gIGNvbnN0IGVycm9yQ291bnQgPSBlcnJvckFycmF5Lmxlbmd0aDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1ZhbGlkIHx8IGVycm9yQ291bnQgPT09IDApIHJldHVybjtcblxuICAgIC8vIHNvcnQgZWxlbWVudHMgYnkgcG9zaXRpb25cbiAgICBjb25zdCBlbGVtZW50c1NvcnRlZCA9IGVycm9yQXJyYXlcbiAgICAgIC5yZWR1Y2UoKHJlc3VsdCwgZXJyb3IpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtuYW1lPScke2Vycm9yfSddYCk7XG4gICAgICAgIGlmICghZWxlbWVudCkgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgICBjb25zdCBlbFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICByZXN1bHQucHVzaCh7IGVsZW1lbnQsIGVycm9yLCB0b3A6IGVsUmVjdC50b3AgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sIFtdKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEudG9wIC0gYi50b3ApO1xuXG4gICAgaWYgKGVsZW1lbnRzU29ydGVkLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnRcbiAgICAgIC5nZXRFbGVtZW50QnlJZChUSUNLRVRfRFJBV0VSX0lEKVxuICAgICAgLnF1ZXJ5U2VsZWN0b3IoXCIuTXVpRHJhd2VyLXBhcGVyXCIpO1xuICAgIGNvbnN0IHRhcmdldCA9IGVsZW1lbnRzU29ydGVkWzBdO1xuXG4gICAgaWYgKGNvbnRhaW5lcj8uY29udGFpbnModGFyZ2V0LmVsZW1lbnQpKSB7XG4gICAgICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAvLyBDYWxjdWxhdGUgdGhlIG9mZnNldCBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQgcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5lclxuICAgICAgY29uc3QgZWxlbU9mZmVzdCA9IDEwMDtcbiAgICAgIGNvbnN0IGFuaW1hdGlvbkR1cmF0aW9uID0gNTAwO1xuICAgICAgY29uc3Qgc2Nyb2xsVG9wID1cbiAgICAgICAgdGFyZ2V0LnRvcCAtIGNvbnRhaW5lclJlY3QudG9wICsgY29udGFpbmVyLnNjcm9sbFRvcCAtIGVsZW1PZmZlc3Q7XG5cbiAgICAgIC8vIFNjcm9sbCB0aGUgY29udGFpbmVyIHRvIHRoZSB0YXJnZXQgZWxlbWVudCdzIHBvc2l0aW9uXG4gICAgICBzbW9vdGhTY3JvbGxUbyhjb250YWluZXIsIHNjcm9sbFRvcCwgYW5pbWF0aW9uRHVyYXRpb24pOyAvLyA1MDBtcyBkdXJhdGlvblxuICAgIH1cbiAgfSwgW2lzU3VibWl0dGluZ10pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXNlU2Nyb2xsVG9FcnJvcjtcbiIsImltcG9ydCB7IGlzVGlja2V0UmVmdW5kYWJsZSB9IGZyb20gXCIuLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJDb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJJbmNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiQ2FuY2VsbGVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlVuYXNzaWduZWRcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVRpY2tldERldGFpbHMgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IGdldFN0YXR1cyA9ICgpID0+IHtcbiAgICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuICAgIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcbiAgICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG4gICAgcmV0dXJuIHRpY2tldC5vd25lci5zdGF0dXM7XG4gIH07XG5cbiAgaWYgKCF0aWNrZXQpIHJldHVybiB7fTtcblxuICBjb25zdCBzdGF0dXMgPSBnZXRTdGF0dXMoKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlICYmIHN0YXR1cyAhPT0gU1RBVFVTX0NBTkNFTExFRDtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID0gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCk7XG4gIGNvbnN0IGFsbG93c0RlbGVnYXRlID1cbiAgICB0aWNrZXQ/LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fZGVsZWdhdGUgfHxcbiAgICB0aWNrZXQ/LnByb21vX2NvZGU/LmFsbG93c190b19kZWxlZ2F0ZTtcbiAgY29uc3QgaXNDb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0NPTVBMRVRFO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSBzdGF0dXMgPT09IFNUQVRVU19VTkFTU0lHTkVEO1xuICBjb25zdCBpc0luY29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19JTkNPTVBMRVRFO1xuICBjb25zdCBjYW5SZWFzc2lnbiA9XG4gICAgIWlzVW5hc3NpZ25lZCAmJlxuICAgIHRpY2tldC50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX3JlYXNzaWduICYmXG4gICAgKCF0aWNrZXQucHJvbW9fY29kZSB8fCB0aWNrZXQucHJvbW9fY29kZT8uYWxsb3dzX3RvX3JlYXNzaWduKTtcblxuICByZXR1cm4ge1xuICAgIHN0YXR1cyxcbiAgICBpc0NvbXBsZXRlLFxuICAgIGlzVW5hc3NpZ25lZCxcbiAgICBpc0luY29tcGxldGUsXG4gICAgaXNBY3RpdmUsXG4gICAgaXNSZWZ1bmRhYmxlLFxuICAgIGFsbG93c0RlbGVnYXRlLFxuICAgIGNhblJlYXNzaWduXG4gIH07XG59O1xuIiwiaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGluaXRSZWFjdEkxOG5leHQgfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IExhbmd1YWdlRGV0ZWN0b3IgZnJvbSBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCI7XG5pbXBvcnQgZW4gZnJvbSBcIi4vbG9jYWxlcy9lbi5qc29uXCI7XG5pbXBvcnQgZXMgZnJvbSBcIi4vbG9jYWxlcy9lcy5qc29uXCI7XG5cbi8vIGltcG9ydCBCYWNrZW5kIGZyb20gJ2kxOG5leHQtaHR0cC1iYWNrZW5kJztcbi8vIGRvbid0IHdhbnQgdG8gdXNlIHRoaXM/XG4vLyBoYXZlIGEgbG9vayBhdCB0aGUgUXVpY2sgc3RhcnQgZ3VpZGVcbi8vIGZvciBwYXNzaW5nIGluIGxuZyBhbmQgdHJhbnNsYXRpb25zIG9uIGluaXRcblxuaTE4blxuICAvLyBsb2FkIHRyYW5zbGF0aW9uIHVzaW5nIGh0dHAgLT4gc2VlIC9wdWJsaWMvbG9jYWxlcyAoaS5lLiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9yZWFjdC1pMThuZXh0L3RyZWUvbWFzdGVyL2V4YW1wbGUvcmVhY3QvcHVibGljL2xvY2FsZXMpXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtaHR0cC1iYWNrZW5kXG4gIC8vIHdhbnQgeW91ciB0cmFuc2xhdGlvbnMgdG8gYmUgbG9hZGVkIGZyb20gYSBwcm9mZXNzaW9uYWwgQ0ROPyA9PiBodHRwczovL2dpdGh1Yi5jb20vbG9jaXplL3JlYWN0LXR1dG9yaWFsI3N0ZXAtMi0tLXVzZS10aGUtbG9jaXplLWNkblxuICAvLyAudXNlKEJhY2tlbmQpXG4gIC8vIGRldGVjdCB1c2VyIGxhbmd1YWdlXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZURldGVjdG9yXG4gIC51c2UoTGFuZ3VhZ2VEZXRlY3RvcilcbiAgLy8gcGFzcyB0aGUgaTE4biBpbnN0YW5jZSB0byByZWFjdC1pMThuZXh0LlxuICAudXNlKGluaXRSZWFjdEkxOG5leHQpXG4gIC8vIGluaXQgaTE4bmV4dFxuICAvLyBmb3IgYWxsIG9wdGlvbnMgcmVhZDogaHR0cHM6Ly93d3cuaTE4bmV4dC5jb20vb3ZlcnZpZXcvY29uZmlndXJhdGlvbi1vcHRpb25zXG4gIC5pbml0KHtcbiAgICBmYWxsYmFja0xuZzogXCJlblwiLFxuICAgIGRlYnVnOiBmYWxzZSxcbiAgICByZXNvdXJjZXM6IHtcbiAgICAgIGVuOiB7IHRyYW5zbGF0aW9uOiBlbiB9LFxuICAgICAgZXM6IHsgdHJhbnNsYXRpb246IGVzIH1cbiAgICB9LFxuICAgIGludGVycG9sYXRpb246IHtcbiAgICAgIGVzY2FwZVZhbHVlOiBmYWxzZSAvLyBub3QgbmVlZGVkIGZvciByZWFjdCBhcyBpdCBlc2NhcGVzIGJ5IGRlZmF1bHRcbiAgICB9XG4gIH0pO1xuXG5leHBvcnQgZGVmYXVsdCBpMThuO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCB7IExPR09VVF9VU0VSIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgU1RBUlRfTE9BRElORyxcbiAgU1RPUF9MT0FESU5HLFxuICBSRVNFVF9MT0FESU5HXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFJFU0VUX1NUQVRFLFxuICBSRVNFVF9GSUxURVIsXG4gIFNFVF9TVEFURSxcbiAgU0VUX1VTRVIsXG4gIEdFVF9VU0VSX09SREVSUyxcbiAgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMsXG4gIEdFVF9USUNLRVRTX0JZX09SREVSLFxuICBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVELFxuICBSRUNFSVZFX1RJQ0tFVCxcbiAgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMsXG4gIFVQREFURV9USUNLRVQsXG4gIEFTU0lHTl9USUNLRVQsXG4gIFJFU0VUX0FQSV9FUlJPUixcbiAgU0VUX0FQSV9FUlJPUixcbiAgUkVTRVRfVElDS0VULFxuICBDSEFOR0VfRklMVEVSLFxuICBDSEFOR0VfU09SVCxcbiAgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLFxuICBGSUxURVJfVkFSX09SREVSX05VTUJFUixcbiAgRklMVEVSX1ZBUl9EQVRFLFxuICBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFLFxuICBGSUxURVJfVkFSX0ZSRUVfUEFJRCxcbiAgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMsXG4gIEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVELFxuICBGSUxURVJfVkFSX1BST01PQ09ERSxcbiAgREVMRUdBVEVfVElDS0VULFxuICBSRU1PVkVfVElDS0VUX0FUVEVOREVFXG59IGZyb20gXCIuL2FjdGlvbnNcIjtcbmltcG9ydCB7IEZJUlNUX1BBR0UsIFRBQlMgfSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IGNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMsIGhhc0xvYWRlZEFsbERhdGEgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgdXBkYXRlVGlja2V0Q29sbGVjdGlvbiB9IGZyb20gXCIuL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmNvbnN0IERFRkFVTFRfRklMVEVSX1NUQVRFID0ge1xuICBbRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXTogW10sXG4gIFtGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXTogW10sXG4gIFtGSUxURVJfVkFSX0ZSRUVfUEFJRF06IFwiXCIsXG4gIFtGSUxURVJfVkFSX09XTkVSX1NUQVRVU106IFwiXCIsXG4gIFtGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF06IFwiXCIsXG4gIFtGSUxURVJfVkFSX1BST01PQ09ERV06IFwiXCIsXG4gIFtGSUxURVJfVkFSX09SREVSX05VTUJFUl06IFwiXCIsXG4gIFtGSUxURVJfVkFSX0RBVEVdOiBudWxsXG59O1xuXG5jb25zdCBERUZBVUxUX1NUQVRFID0ge1xuICBzdW1taXQ6IG51bGwsXG4gIHVzZXI6IHt9LFxuICB3aWRnZXRMb2FkaW5nOiBmYWxzZSxcbiAgbWVtYmVyT3JkZXJzOiBbXSxcbiAgdXNlclRpY2tldHM6IFtdLFxuICBleHRyYVF1ZXN0aW9uczogW10sXG4gIGN1cnJlbnRUaWNrZXQ6IG51bGwsXG4gIGVycm9yczoge30sXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBjdXJyZW50X3RhYjogVEFCUy5PUkRFUlMsXG4gIHNvcnQ6IHt9LFxuICBmaWx0ZXI6IERFRkFVTFRfRklMVEVSX1NUQVRFLFxuICBhY3RpdmVGaWx0ZXJzQ291bnQ6IDAsXG4gIG9yZGVyc19jdXJyZW50X3BhZ2U6IDAsXG4gIG9yZGVyc19sYXN0X3BhZ2U6IDAsXG4gIG9yZGVyc19wZXJfcGFnZTogNSxcbiAgb3JkZXJzX3RvdGFsOiAwLFxuICB0aWNrZXRfY3VycmVudF9wYWdlOiAwLFxuICB0aWNrZXRfbGFzdF9wYWdlOiAwLFxuICB0aWNrZXRfcGVyX3BhZ2U6IDUsXG4gIHRpY2tldF90b3RhbDogMCxcbiAgdXNlcl90aWNrZXRzX3RvdGFsOiAwLFxuICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlOiAwLFxuICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlOiAwLFxuICBhcGlFcnJvcjogbnVsbFxufTtcblxuY29uc3QgV2lkZ2V0UmVkdWNlciA9IChzdGF0ZSA9IERFRkFVTFRfU1RBVEUsIHsgdHlwZSwgcGF5bG9hZCB9ID0ge30pID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBMT0dPVVRfVVNFUjpcbiAgICBjYXNlIFJFU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIERFRkFVTFRfU1RBVEU7XG4gICAgY2FzZSBTVEFSVF9MT0FESU5HOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGxvYWRpbmc6IHRydWUgfTtcbiAgICBjYXNlIFNUT1BfTE9BRElORzpcbiAgICBjYXNlIFJFU0VUX0xPQURJTkc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbG9hZGluZzogZmFsc2UgfTtcbiAgICBjYXNlIFJFU0VUX0FQSV9FUlJPUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhcGlFcnJvcjogbnVsbCB9O1xuICAgIGNhc2UgUkVTRVRfRklMVEVSOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGZpbHRlcjogREVGQVVMVF9GSUxURVJfU1RBVEUsXG4gICAgICAgIGFjdGl2ZUZpbHRlcnNDb3VudDogMCxcbiAgICAgICAgc29ydDoge30sXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IDEsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IDEsXG4gICAgICAgIGxvYWRpbmc6IHRydWVcbiAgICAgIH07XG4gICAgY2FzZSBTRVRfU1RBVEU6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgLi4ucGF5bG9hZCB9O1xuICAgIGNhc2UgU0VUX0FQSV9FUlJPUjoge1xuICAgICAgY29uc3QgeyB0aXRsZSwgaHRtbDogYm9keSB9ID0gcGF5bG9hZDtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhcGlFcnJvcjogeyB0aXRsZSwgYm9keSB9IH07XG4gICAgfVxuICAgIGNhc2UgU0VUX1VTRVI6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgdXNlcjogcGF5bG9hZCB9O1xuICAgIGNhc2UgQ0hBTkdFX0ZJTFRFUjoge1xuICAgICAgY29uc3QgbmV3RmlsdGVycyA9IHsgLi4uc3RhdGUuZmlsdGVyLCAuLi5wYXlsb2FkIH07XG4gICAgICBjb25zdCBuZXdBY3RpdmVDb3VudCA9IGNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMobmV3RmlsdGVycyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZmlsdGVyOiB7IC4uLnN0YXRlLmZpbHRlciwgLi4ucGF5bG9hZCB9LFxuICAgICAgICBhY3RpdmVGaWx0ZXJzQ291bnQ6IG5ld0FjdGl2ZUNvdW50XG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIENIQU5HRV9TT1JUOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgc29ydDogeyAuLi5wYXlsb2FkIH0gfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfVVNFUl9PUkRFUlM6IHtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuXG4gICAgICBpZiAoaGFzTG9hZGVkQWxsRGF0YShjdXJyZW50X3BhZ2UsIHN0YXRlLm1lbWJlck9yZGVycywgdG90YWwpKVxuICAgICAgICByZXR1cm4gc3RhdGU7XG5cbiAgICAgIGNvbnN0IG1lbWJlck9yZGVycyA9XG4gICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4uc3RhdGUubWVtYmVyT3JkZXJzLCAuLi5kYXRhXTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVycyxcbiAgICAgICAgb3JkZXJzX3RvdGFsOiB0b3RhbCxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogY3VycmVudF9wYWdlLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiBsYXN0X3BhZ2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFM6IHtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuXG4gICAgICBpZiAoaGFzTG9hZGVkQWxsRGF0YShjdXJyZW50X3BhZ2UsIHN0YXRlLnVzZXJUaWNrZXRzLCB0b3RhbCkpXG4gICAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgICAgY29uc3QgdXNlclRpY2tldHMgPVxuICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLnN0YXRlLnVzZXJUaWNrZXRzLCAuLi5kYXRhXTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHVzZXJUaWNrZXRzLFxuICAgICAgICB1c2VyX3RpY2tldHNfdG90YWw6IHRvdGFsLFxuICAgICAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIHVzZXJfdGlja2V0c19sYXN0X3BhZ2U6IGxhc3RfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfVElDS0VUU19CWV9PUkRFUjoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBmb3JtZXJPcmRlciA9IG1lbWJlck9yZGVycy5maW5kKChvKSA9PiBvLmlkID09PSBkYXRhWzBdPy5vcmRlcl9pZCk7XG5cbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IG1lbWJlck9yZGVycy5tYXAoKG1vKSA9PiB7XG4gICAgICAgIGlmIChtby5pZCAhPT0gZGF0YVswXT8ub3JkZXJfaWQpIHJldHVybiBtbztcbiAgICAgICAgY29uc3QgbmV3VGlja2V0cyA9XG4gICAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFXG4gICAgICAgICAgICA/IGRhdGFcbiAgICAgICAgICAgIDogWy4uLmZvcm1lck9yZGVyLm1lbWJlclRpY2tldHMsIC4uLmRhdGFdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLm1vLFxuICAgICAgICAgIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMsXG4gICAgICAgICAgdGlja2V0c19wYWdlX2N1cnJlbnQ6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgICB0aWNrZXRzX3BhZ2VfbGFzdDogbGFzdF9wYWdlLFxuICAgICAgICAgIHRpY2tldHNfdG90YWw6IHRvdGFsXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbmV3T3JkZXJzXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQ6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPSBwYXlsb2FkO1xuICAgICAgY29uc3Qgb3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZChcbiAgICAgICAgKG8pID0+IG8uaWQgPT09IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWRbMF0/Lm9yZGVyX2lkXG4gICAgICApO1xuICAgICAgY29uc3QgdXBkYXRlZFRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cy5tYXAoXG4gICAgICAgICh0aWNrZXQpID0+XG4gICAgICAgICAgdGlja2V0c1JlZnVuZFJlcXVlc3RlZC5maW5kKCh0cnIpID0+IHRyci5pZCA9PT0gdGlja2V0LmlkKSB8fCB0aWNrZXRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkT3JkZXIgPSB7XG4gICAgICAgIC4uLm9yZGVyLFxuICAgICAgICBtZW1iZXJUaWNrZXRzOiB1cGRhdGVkVGlja2V0c1xuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6IG1lbWJlck9yZGVycy5tYXAoKG1vKSA9PlxuICAgICAgICAgIG1vLmlkID09PSB1cGRhdGVkT3JkZXIuaWQgPyB1cGRhdGVkT3JkZXIgOiBtb1xuICAgICAgICApXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIFJFU0VUX1RJQ0tFVDoge1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IG51bGwgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiB0aWNrZXQgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUzoge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGV4dHJhUXVlc3Rpb25zOiBkYXRhIH07XG4gICAgfVxuICAgIGNhc2UgUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRTpcbiAgICBjYXNlIFVQREFURV9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldERhdGEgPSBwYXlsb2FkLnJlc3BvbnNlO1xuXG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gdXBkYXRlVGlja2V0Q29sbGVjdGlvbihcbiAgICAgICAgICBvcmRlci5tZW1iZXJUaWNrZXRzLFxuICAgICAgICAgIHRpY2tldERhdGFcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHsgLi4ub3JkZXIsIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMgfTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBuZXdVc2VyVGlja2V0cyA9IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24oXG4gICAgICAgIHN0YXRlLnVzZXJUaWNrZXRzLFxuICAgICAgICB0aWNrZXREYXRhXG4gICAgICApO1xuXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnMsIHVzZXJUaWNrZXRzOiBuZXdVc2VyVGlja2V0cyB9O1xuICAgIH1cbiAgICBjYXNlIERFTEVHQVRFX1RJQ0tFVDpcbiAgICBjYXNlIEFTU0lHTl9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldERhdGEgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgbmV3T3JkZXJzID0gc3RhdGUubWVtYmVyT3JkZXJzLm1hcCgob3JkZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV3VGlja2V0cyA9IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24oXG4gICAgICAgICAgb3JkZXIubWVtYmVyVGlja2V0cyxcbiAgICAgICAgICB0aWNrZXREYXRhXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7IC4uLm9yZGVyLCBtZW1iZXJUaWNrZXRzOiBuZXdUaWNrZXRzIH07XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbmV3VXNlclRpY2tldHMgPSB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uKFxuICAgICAgICBzdGF0ZS51c2VyVGlja2V0cyxcbiAgICAgICAgdGlja2V0RGF0YVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGN1cnJlbnRUaWNrZXQ6IHRpY2tldERhdGEsXG4gICAgICAgIG1lbWJlck9yZGVyczogbmV3T3JkZXJzLFxuICAgICAgICB1c2VyVGlja2V0czogbmV3VXNlclRpY2tldHNcbiAgICAgIH07XG4gICAgfVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFdpZGdldFJlZHVjZXI7XG4iLCJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjb25maWd1cmVTdG9yZSB9IGZyb20gXCJAcmVkdXhqcy90b29sa2l0XCI7XG5pbXBvcnQge1xuICBwZXJzaXN0U3RvcmUsXG4gIHBlcnNpc3RSZWR1Y2VyLFxuICBGTFVTSCxcbiAgUkVIWURSQVRFLFxuICBQQVVTRSxcbiAgUEVSU0lTVCxcbiAgUFVSR0UsXG4gIFJFR0lTVEVSXG59IGZyb20gXCJyZWR1eC1wZXJzaXN0XCI7XG5pbXBvcnQgc3RvcmFnZSBmcm9tIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiO1xuaW1wb3J0IHsgY29tYmluZVJlZHVjZXJzIH0gZnJvbSBcInJlZHV4XCI7XG5pbXBvcnQgV2lkZ2V0UmVkdWNlciBmcm9tIFwiLi9yZWR1Y2VyXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRTdG9yZSA9ICh7XG4gIGNsaWVudElkLFxuICBsb2dpblVybCxcbiAgc3VtbWl0LFxuICBhcGlCYXNlVXJsLFxuICB1cGRhdGVQcm9maWxlXG59KSA9PiB7XG4gIC8vIHRvIGFkZCBvdGhlciByZWR1Y2VycyBsYXRlclxuICBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gICAgd2lkZ2V0U3RhdGU6IFdpZGdldFJlZHVjZXJcbiAgfSk7XG5cbiAgY29uc3Qgc3RvcmUgPSBjb25maWd1cmVTdG9yZSh7XG4gICAgcmVkdWNlcjogcGVyc2lzdFJlZHVjZXIoXG4gICAgICB7XG4gICAgICAgIGtleTogYHJvb3RfbXlfb3JkZXJzX3RpY2tldHNfJHtjbGllbnRJZH1gLFxuICAgICAgICBzdG9yYWdlXG4gICAgICB9LFxuICAgICAgcmVkdWNlcnNcbiAgICApLFxuICAgIG1pZGRsZXdhcmU6IChnZXREZWZhdWx0TWlkZGxld2FyZSkgPT5cbiAgICAgIGdldERlZmF1bHRNaWRkbGV3YXJlKHtcbiAgICAgICAgdGh1bms6IHtcbiAgICAgICAgICBleHRyYUFyZ3VtZW50OiB7XG4gICAgICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgICAgIGFwaUJhc2VVcmwsXG4gICAgICAgICAgICBzdW1taXQsXG4gICAgICAgICAgICBsb2dpblVybCxcbiAgICAgICAgICAgIHVwZGF0ZVByb2ZpbGVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGltbXV0YWJsZUNoZWNrOiBmYWxzZSxcbiAgICAgICAgc2VyaWFsaXphYmxlQ2hlY2s6IHtcbiAgICAgICAgICBpZ25vcmVkQWN0aW9uczogW0ZMVVNILCBSRUhZRFJBVEUsIFBBVVNFLCBQRVJTSVNULCBQVVJHRSwgUkVHSVNURVJdXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH0pO1xuXG4gIHJldHVybiBzdG9yZTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VJbml0U3RvcmUgPSAoY29uZmlnKSA9PiB7XG4gIGNvbnN0IHN0b3JlID0gdXNlTWVtbygoKSA9PiBnZXRTdG9yZShjb25maWcpLCBbXSk7XG4gIGNvbnN0IHBlcnNpc3RvciA9IHVzZU1lbW8oKCkgPT4gcGVyc2lzdFN0b3JlKHN0b3JlKSwgW3N0b3JlXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzdG9yZSxcbiAgICBwZXJzaXN0b3JcbiAgfTtcbn07XG4iLCJpbXBvcnQge1xuICBpbml0TG9nT3V0LFxuICBnZXRBY2Nlc3NUb2tlblxufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCI7XG5pbXBvcnQgKiBhcyBTZW50cnkgZnJvbSBcIkBzZW50cnkvcmVhY3RcIjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG5jb25zdCBnZXRBY2Nlc3NUb2tlbk1vY2sgPSAoKSA9PiB7XG4gIHRocm93IG5ldyBFcnJvcihcIkFjY2VzcyB0b2tlbiBlcnJvclwiKTtcbiAgLy8gcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgPSBhc3luYyAoKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGdldEFjY2Vzc1Rva2VuKCkuY2F0Y2goKGUpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0OjpnZXRBY2Nlc3NUb2tlblNhZmVseSBlcnJvcjogXCIsIGUpO1xuICAgICAgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oZSk7XG4gICAgICBpbml0TG9nT3V0KCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0OjpnZXRBY2Nlc3NUb2tlblNhZmVseSBlcnJvcjogXCIsIGUpO1xuICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgIGluaXRMb2dPdXQoKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGF1dGhQcm9taXNlUmVqZWN0ID0gYXN5bmMgKCkgPT5cbiAgUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiQXV0aCBUb2tlbiBlcnJvclwiKSk7XG4iLCJleHBvcnQgY29uc3QgTEFTVF9IT1VSX09GXzI0X0hPVVIgPSAyMztcbmV4cG9ydCBjb25zdCBMQVNUX01JTlVURV9PRl9IT1VSID0gNTk7XG5leHBvcnQgY29uc3QgT05FX1BBR0VfTkVYVCA9IDE7XG5leHBvcnQgY29uc3QgTUlMTElTRUNfVE9fU0VDID0gMTAwMDtcbmV4cG9ydCBjb25zdCBPTkVfREFZID0gMTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0lURU1TX1BFUl9QQUdFID0gNTtcbmV4cG9ydCBjb25zdCBGSVJTVF9QQUdFID0gMTtcbmV4cG9ydCBjb25zdCBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgPSA1O1xuZXhwb3J0IGNvbnN0IFNURVBfT05FID0gMTtcbmV4cG9ydCBjb25zdCBTVEVQX1RXTyA9IDI7XG5leHBvcnQgY29uc3QgU1RFUF9USFJFRSA9IDM7XG5leHBvcnQgY29uc3QgTUlOX1JFUVVJUkVEID0gMTtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiU1RBVFVTX0NPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIlNUQVRVU19JTkNPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BFTkRJTkcgPSBcIlNUQVRVU19QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiU1RBVFVTX0NBTkNFTExFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19FUlJPUiA9IFwiU1RBVFVTX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BST0NFU1NJTkcgPSBcIlNUQVRVU19QUk9DRVNTSU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlNUQVRVU19VTkFTU0lHTkVEXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1BFTkRJTkcgPSBcIlNUQVRVU19SRUZVTkRfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfQVBQUk9WRUQgPSBcIlNUQVRVU19SRUZVTkRfQVBQUk9WRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEID0gXCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDID0gXCJSZXF1ZXN0ZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDID0gXCJBcHByb3ZlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMgPSBcIlJlamVjdGVkXCI7XG5cbmV4cG9ydCBjb25zdCBKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMgPSAxMDAwMDtcblxuZXhwb3J0IGNvbnN0IE9ORV9JVEVNID0gMTtcbmV4cG9ydCBjb25zdCBUV09fSVRFTSA9IDI7XG5leHBvcnQgY29uc3QgRklWRV9JVEVNID0gNTtcbmV4cG9ydCBjb25zdCBTSVhfSVRFTSA9IDY7XG5cbmV4cG9ydCBjb25zdCBQUk9NSVNFX0JBVENIX0xJTUlUID0gMTA7XG5leHBvcnQgY29uc3QgRklGVFlfUEVSX1BBR0UgPSA1MDtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0NPREVTID0ge1xuICA0MDE6IDQwMSxcbiAgNDAzOiA0MDEsXG4gIDQxMjogNDAxLFxuICA1MDA6IDUwMFxufTtcblxuZXhwb3J0IGNvbnN0IFRBQlMgPSB7XG4gIE9SREVSUzogXCJPUkRFUlNcIixcbiAgVElDS0VUUzogXCJUSUNLRVRTXCJcbn07XG5cbmV4cG9ydCBjb25zdCBPTkVfUkVUUlkgPSAxO1xuXG5leHBvcnQgY29uc3QgRklMVEVSX0FDVElPTiA9IHtcbiAgT1JERVJTOiBcIk9SREVSU1wiLFxuICBFWFRFUk5BTF9USUNLRVRTOiBcIkVYVEVSTkFMX1RJQ0tFVFNcIixcbiAgVElDS0VUU19CWV9PUkRFUlM6IFwiVElDS0VUU19CWV9PUkRFUlNcIlxufTtcblxuZXhwb3J0IGNvbnN0IFRJQ0tFVF9EUkFXRVJfSUQgPSBcInRpY2tldERyYXdlclwiO1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHtcbiAgTEFTVF9IT1VSX09GXzI0X0hPVVIsXG4gIExBU1RfTUlOVVRFX09GX0hPVVIsXG4gIE1JTExJU0VDX1RPX1NFQyxcbiAgRklSU1RfUEFHRVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdEN1cnJlbmN5ID0gKHZhbHVlLCB7IGxvY2FsZSA9IFwiZW4tVVNcIiwgLi4ub3B0aW9ucyB9KSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgIGN1cnJlbmN5OiBcIlVTRFwiLFxuICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJcbiAgfTtcblxuICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCB7XG4gICAgc3R5bGU6IFwiY3VycmVuY3lcIixcbiAgICAuLi5kZWZhdWx0T3B0aW9ucyxcbiAgICAuLi5vcHRpb25zXG4gIH0pO1xuXG4gIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGb3JtYXR0ZWREYXRlID0gKGRhdGV0aW1lLCB0aW1lWm9uZSkgPT4ge1xuICBpZiAodGltZVpvbmUpXG4gICAgcmV0dXJuIG1vbWVudFxuICAgICAgLnR6KGRhdGV0aW1lICogTUlMTElTRUNfVE9fU0VDLCB0aW1lWm9uZSlcbiAgICAgIC5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xuXG4gIHJldHVybiBtb21lbnQudW5peChkYXRldGltZSkuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVPcmRlclRvdGFscyA9ICh7IG9yZGVyLCBzdW1taXQgfSkgPT4ge1xuICBpZiAoIW9yZGVyIHx8ICFzdW1taXQpIHJldHVybiB7fTtcbiAgY29uc3QgdGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzO1xuICBpZiAoIXRpY2tldHMpIHJldHVybiB7fTtcblxuICBjb25zdCB7IHJlZnVuZGVkX2Ftb3VudCwgZGlzY291bnRfYW1vdW50LCBhbW91bnQsIHJhd19hbW91bnQgfSA9IG9yZGVyO1xuICBjb25zdCB7IHRpY2tldF90eXBlcyB9ID0gc3VtbWl0O1xuXG4gIGNvbnN0IGN1cnJlbmN5T2JqZWN0ID0geyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfTtcblxuICBjb25zdCB0YXhlc1N1bW1hcnkgPSBbXTtcbiAgY29uc3QgdGlja2V0U3VtbWFyeSA9IFtdO1xuICBsZXQgcHVyY2hhc2VUaWNrZXRUb3RhbCA9IDA7XG5cbiAgT2JqZWN0LmtleXMob3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlKS5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHRpY2tldFR5cGUgPSB0aWNrZXRfdHlwZXM/LmZpbmQoKHR0KSA9PiB0dC5uYW1lID09PSB0aWNrZXQpO1xuICAgIGlmICghdGlja2V0VHlwZSkgcmV0dXJuIG51bGw7XG4gICAgdGlja2V0U3VtbWFyeS5wdXNoKHtcbiAgICAgIHRpY2tldF90eXBlX2lkOiB0aWNrZXRUeXBlLmlkLFxuICAgICAgdGlja2V0X3R5cGU6IHRpY2tldFR5cGUsXG4gICAgICBuYW1lOiB0aWNrZXQsXG4gICAgICBxdHk6IG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdXG4gICAgfSk7XG4gICAgcHVyY2hhc2VUaWNrZXRUb3RhbCArPVxuICAgICAgdGlja2V0VHlwZS5jb3N0ICogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF07XG5cbiAgICByZXR1cm4gdGlja2V0U3VtbWFyeTtcbiAgfSk7XG5cbiAgb3JkZXIuYXBwbGllZF90YXhlcy5mb3JFYWNoKCh0YXgpID0+IHtcbiAgICBjb25zdCBmb3JtYXR0ZWRUYXggPSB7XG4gICAgICAuLi50YXgsXG4gICAgICBhbW91bnQ6IGZvcm1hdEN1cnJlbmN5KHRheC5hbW91bnQsIGN1cnJlbmN5T2JqZWN0KVxuICAgIH07XG4gICAgdGF4ZXNTdW1tYXJ5LnB1c2goZm9ybWF0dGVkVGF4KTtcbiAgfSk7XG5cbiAgY29uc3QgcHVyY2hhc2VUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVGlja2V0VG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICBjb25zdCBkaXNjb3VudFRvdGFsID0gZm9ybWF0Q3VycmVuY3koZGlzY291bnRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHJlZnVuZFRvdGFsID0gZm9ybWF0Q3VycmVuY3kocmVmdW5kZWRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHN1YlRvdGFsID0gZm9ybWF0Q3VycmVuY3kocmF3X2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCBhbW91bnRUb3RhbCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcmRlciwgXCJhbW91bnRcIilcbiAgICA/IGZvcm1hdEN1cnJlbmN5KGFtb3VudCwgY3VycmVuY3lPYmplY3QpXG4gICAgOiBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgcmV0dXJuIHtcbiAgICBkaXNjb3VudFRvdGFsLFxuICAgIHJlZnVuZFRvdGFsLFxuICAgIHN1YlRvdGFsLFxuICAgIGFtb3VudFRvdGFsLFxuICAgIHRpY2tldFN1bW1hcnksXG4gICAgdGF4ZXNTdW1tYXJ5XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0T3JkZXJUaWNrZXRzID0gKG1lbWJlck9yZGVycywgb3JkZXJJZCkgPT4ge1xuICBjb25zdCBvcmRlcnMgPSBtZW1iZXJPcmRlcnMuZmlsdGVyKChvKSA9PiBvLmlkID09PSBvcmRlcklkKTtcbiAgcmV0dXJuIG9yZGVyc1swXT8ubWVtYmVyVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMgPSAodHMpID0+IHtcbiAgY29uc3QgbG93ZXIgPSB0cy5zZXRIb3VycygwLCAwLCAwLCAwKSAvIE1JTExJU0VDX1RPX1NFQztcbiAgY29uc3QgdXBwZXIgPVxuICAgIHRzLnNldEhvdXJzKExBU1RfSE9VUl9PRl8yNF9IT1VSLCBMQVNUX01JTlVURV9PRl9IT1VSLCAwLCAwKSAvXG4gICAgTUlMTElTRUNfVE9fU0VDO1xuICByZXR1cm4ge1xuICAgIGxvd2VyLFxuICAgIHVwcGVyXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEN1cnJlbnRUaW1lID0gKCkgPT5cbiAgTWF0aC5yb3VuZCgrbmV3IERhdGUoKSAvIE1JTExJU0VDX1RPX1NFQyk7XG5cbmV4cG9ydCBjb25zdCBnZXROb3cgPSAoKSA9PiAoZGlzcGF0Y2gsIGdldFN0YXRlKSA9PiB7XG4gIGNvbnN0IHsgdGltZXJTdGF0ZSB9ID0gZ2V0U3RhdGUoKTtcbiAgcmV0dXJuIHRpbWVyU3RhdGU/Lm5vd1V0YyA9PSBudWxsID8gZGVmYXVsdEN1cnJlbnRUaW1lKCkgOiB0aW1lclN0YXRlPy5ub3dVdGM7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlTm93ID0gKCkgPT4ge1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgcmV0dXJuIGRpc3BhdGNoKGdldE5vdygpKTtcbn07XG5cbi8qKlxuICogQHBhcmFtIGN1cnJlbnRQYWdlXG4gKiBAcGFyYW0gZGF0YVxuICogQHBhcmFtIHRvdGFsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGNvbnN0IGhhc0xvYWRlZEFsbERhdGEgPSAoY3VycmVudFBhZ2UsIGRhdGEsIHRvdGFsKSA9PiB7XG4gIGxldCByZXMgPSBmYWxzZTtcbiAgY29uc3QgZGF0YUxlbmd0aCA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhLmxlbmd0aCA6IDA7XG4gIC8vIHdlIGFscmVhZHkgbG9hZGVkIGFsbCAgZGF0YSAoIGZpcnN0IHBhZ2UgaXMgYWx3YXlzIHJlbG9hZGVkIGl0IClcbiAgaWYgKGN1cnJlbnRQYWdlID4gRklSU1RfUEFHRSAmJiBkYXRhTGVuZ3RoID4gMCAmJiBkYXRhTGVuZ3RoID09PSB0b3RhbClcbiAgICByZXMgPSB0cnVlO1xuICByZXR1cm4gcmVzO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMgPSAoZmlsdGVycykgPT4ge1xuICBsZXQgY291bnQgPSAwO1xuICBPYmplY3QuZW50cmllcyhmaWx0ZXJzKS5mb3JFYWNoKChbLCB2YWx1ZV0pID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGNvdW50ICs9IHZhbHVlLmxlbmd0aDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS50cmltKCkgIT09IFwiXCIpIHtcbiAgICAgIGNvdW50Kys7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgJiYgdmFsdWUgPiAwKSB7XG4gICAgICBjb3VudCsrO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBjb3VudDtcbn07XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQywgT05FX0RBWSB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi5cIjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrU3VtbWl0UGFzdCA9IChzdW1taXQsIG5vdykgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgcmVhc3NpZ25fZGF0ZSA9XG4gICAgc3VtbWl0Py5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlICYmXG4gICAgc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgPCBzdW1taXQuZW5kX2RhdGVcbiAgICAgID8gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGVcbiAgICAgIDogc3VtbWl0LmVuZF9kYXRlO1xuXG4gIHJldHVybiBub3cgPiByZWFzc2lnbl9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrU3VtbWl0U3RhcnRlZCA9IChzdW1taXQsIG5vdykgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHN1bW1pdC5zdGFydF9kYXRlIDwgbm93O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdERheXNEaWZmID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHN0YXJ0RGF5ID0gbW9tZW50KHN1bW1pdC5zdGFydF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGVuZERheSA9IG1vbWVudChzdW1taXQuZW5kX2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZGF5cyA9IGVuZERheT8uZGlmZihzdGFydERheSwgXCJkYXlzXCIpO1xuICByZXR1cm4ge1xuICAgIHN0YXJ0RGF5LFxuICAgIGVuZERheSxcbiAgICBkYXlzXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCB7IHN0YXJ0RGF5LCBlbmREYXksIGRheXMgfSA9IGdldFN1bW1pdERheXNEaWZmKHN1bW1pdCk7XG4gIGlmICghc3RhcnREYXkgfHwgIWVuZERheSkgcmV0dXJuIG51bGw7XG4gIGxldCBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgbGV0IGZvcm1hdEVuZERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgaWYgKHN0YXJ0RGF5LnllYXIoKSA9PT0gZW5kRGF5LnllYXIoKSkgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIEREXCI7XG4gIGlmIChzdGFydERheS5tb250aCgpID09PSBlbmREYXkubW9udGgoKSkgZm9ybWF0RW5kRGF0ZSA9IFwiREQsIFlZWVlcIjtcblxuICBjb25zdCBzdGFydERhdGUgPSBzdGFydERheS5mb3JtYXQoZm9ybWF0U3RhcnREYXRlKTtcbiAgY29uc3QgZW5kRGF0ZSA9IGVuZERheS5mb3JtYXQoZm9ybWF0RW5kRGF0ZSk7XG5cbiAgaWYgKGRheXMgPiBPTkVfREFZKSByZXR1cm4gYCR7c3RhcnREYXRlfSAtICR7ZW5kRGF0ZX1gO1xuXG4gIHJldHVybiBzdGFydERhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0TG9jYXRpb24gPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBsb2NhdGlvbiA9IHN1bW1pdC5sb2NhdGlvbnM/LmZpbmQoXG4gICAgKGwpID0+IGwuY2xhc3NfbmFtZSA9PT0gXCJTdW1taXRWZW51ZVwiICYmIGwuaXNfbWFpbiA9PT0gdHJ1ZVxuICApO1xuXG4gIGlmICghbG9jYXRpb24pIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBgJHtsb2NhdGlvbi5jaXR5fSwgJHtsb2NhdGlvbi5jb3VudHJ5fWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlICYmXG4gICAgc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgPCBzdW1taXQuZW5kX2RhdGVcbiAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgOiBzdW1taXQuZW5kX2RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlU3VtbWl0RGV0YWlscyA9ICh7IHN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuXG4gIGlmICghc3VtbWl0KSByZXR1cm4ge307XG5cbiAgY29uc3QgbG9jYXRpb24gPSBnZXRTdW1taXRMb2NhdGlvbihzdW1taXQpO1xuICBjb25zdCBmb3JtYXR0ZWREYXRlID0gZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZShzdW1taXQpO1xuICBjb25zdCByZWFzc2lnbkRhdGUgPSBnZXRTdW1taXRSZWFzc2lnbkRhdGUoc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkUmVhc3NpZ25EYXRlID0gbW9tZW50LnR6KFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBzdW1taXQudGltZV96b25lPy50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSA9IGdldFN1bW1pdERheXNEaWZmKFxuICAgIG5vdyxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8ubmFtZVxuICApO1xuXG4gIGNvbnN0IGlzUGFzdCA9IGNoZWNrU3VtbWl0UGFzdChzdW1taXQsIG5vdyk7XG4gIGNvbnN0IGlzU3RhcnRlZCA9IGNoZWNrU3VtbWl0U3RhcnRlZChzdW1taXQsIG5vdyk7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID0gcmVhc3NpZ25EYXRlID4gbm93O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogc3VtbWl0Py5uYW1lLFxuICAgIG5vdyxcbiAgICBsb2NhdGlvbixcbiAgICBmb3JtYXR0ZWREYXRlLFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBmb3JtYXR0ZWRSZWFzc2lnbkRhdGUsXG4gICAgZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSxcbiAgICBpc1Bhc3QsXG4gICAgaXNTdGFydGVkLFxuICAgIGlzUmVhc3NpZ25hYmxlXG4gIH07XG59O1xuIiwiaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcbmltcG9ydCBpMThuIGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQge1xuICBNSU5fUkVRVUlSRUQsXG4gIFNUQVRVU19DQU5DRUxMRUQsXG4gIFNUQVRVU19DT01QTEVURSxcbiAgU1RBVFVTX0lOQ09NUExFVEUsXG4gIFNUQVRVU19SRUZVTkRfQVBQUk9WRUQsXG4gIFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMsXG4gIFNUQVRVU19SRUZVTkRfUEVORElORyxcbiAgU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDLFxuICBTVEFUVVNfUkVGVU5EX1JFSkVDVEVELFxuICBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDLFxuICBTVEFUVVNfVU5BU1NJR05FRFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgY2hlY2tJZlZhbHVlTWF0Y2gsXG4gIGdldFR5cGVJbml0aWFsVmFsdWUsXG4gIHRvU2x1Z1xufSBmcm9tIFwiLi4vY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IHN0YXR1c0RhdGEgPSB7XG4gIFtTVEFUVVNfVU5BU1NJR05FRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfVU5BU1NJR05FRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLnVuYXNzaWduZWRcIilcbiAgfSxcbiAgW1NUQVRVU19JTkNPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19JTkNPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuaW5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ0FOQ0VMTEVEXToge1xuICAgIHR5cGU6IFNUQVRVU19DQU5DRUxMRUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jYW5jZWxsZWRcIilcbiAgfVxufTtcbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNLZXkgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG5cbiAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuXG4gIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiQ29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0NPTVBMRVRFO1xuXG4gIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNEYXRhID0gKHRpY2tldCwgaXNTdW1taXRQYXN0KSA9PlxuICBzdGF0dXNEYXRhW2dldFRpY2tldFN0YXR1c0tleSh0aWNrZXQsIGlzU3VtbWl0UGFzdCldO1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0Um9sZSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuYmFkZ2UpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHsgZmVhdHVyZXMgfSA9IHRpY2tldC5iYWRnZTtcblxuICBpZiAoZmVhdHVyZXMubGVuZ3RoID4gMClcbiAgICByZXR1cm4gZmVhdHVyZXMubWFwKChmZWF0dXJlKSA9PiBmZWF0dXJlLm5hbWUpLmpvaW4oXCIsIFwiKTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRUeXBlID0gKHRpY2tldCwgc3VtbWl0KSA9PlxuICBzdW1taXQudGlja2V0X3R5cGVzLmZpbmQoKHR5cGUpID0+IHR5cGUuaWQgPT09IHRpY2tldC50aWNrZXRfdHlwZV9pZCk7XG5cbmV4cG9ydCBjb25zdCBpc1RpY2tldFJlZnVuZGFibGUgPSAodGlja2V0KSA9PlxuICB0aWNrZXQ/LmZpbmFsX2Ftb3VudCA+IDAgJiZcbiAgdGlja2V0Py5uZXRfc2VsbGluZ19jb3N0ID4gdGlja2V0LnJlZnVuZGVkX2Ftb3VudCAmJlxuICAhdGlja2V0Py5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQ1xuICApO1xuXG5leHBvcnQgY29uc3QgdGlja2V0c1JlZnVuZGFibGUgPSAodGlja2V0cykgPT5cbiAgdGlja2V0cz8uZmlsdGVyKCh0aWNrZXQpID0+IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpKS5sZW5ndGggfHwgMDtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZGVkUmVxdWVzdGVkVGlja2V0cyA9ICh0aWNrZXRzKSA9PlxuICB0aWNrZXRzPy5maWx0ZXIoKHRpY2tldCkgPT5cbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMpXG4gICk7XG5leHBvcnQgY29uc3QgZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyA9ICh0aWNrZXRzKSA9PiB7XG4gIGNvbnN0IGFsbFRpY2tldHMgPSBbXTtcbiAgdGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IHtcbiAgICBpZiAoXG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDXG4gICAgICApIHx8XG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQ1xuICAgICAgKSB8fFxuICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTENcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGFsbFRpY2tldHMucHVzaCh0aWNrZXQpO1xuICAgIH1cbiAgICByZXR1cm4gdGlja2V0O1xuICB9KTtcbiAgcmV0dXJuIGFsbFRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXMgPSAodGlja2V0KSA9PiB7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMpXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9QRU5ESU5HO1xuICBpZiAoXG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDXG4gICAgKVxuICApXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfQVBQUk9WRUQ7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTENcbiAgICApXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRDtcbiAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUEVORElORztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciA9ICh0aWNrZXQpID0+IHtcbiAgY29uc3Qgc3RhdHVzID0gZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXModGlja2V0KTtcbiAgbGV0IHN0YXR1c0NvbG9yID0gXCJcIjtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfUEVORElORzpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJwZW5kaW5nXCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfQVBQUk9WRUQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwiYXBwcm92ZWRcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJyZWplY3RlZFwiO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJwZW5kaW5nXCI7XG4gIH1cbiAgcmV0dXJuIHN0YXR1c0NvbG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWxpZGF0aW9uID0gKHR5cGUsIG5hbWUsIGlzUmVxdWlyZWQpID0+IHtcbiAgbGV0IHNjaGVtYTtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICBzY2hlbWEgPSB5dXAuYm9vbCgpLm9uZU9mKFt0cnVlXSwgaTE4bi50KFwidmFsaWRhdGlvbi5jaGVja2JveC5yZXF1aXJlZFwiKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuYXJyYXkoKS5vZih5dXAuc3RyaW5nKCkpO1xuICAgICAgaWYgKGlzUmVxdWlyZWQpIHNjaGVtYSA9IHNjaGVtYS5taW4oTUlOX1JFUVVJUkVELCBgJHtuYW1lfSBpcyByZXF1aXJlZGApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICBzY2hlbWEgPSBzY2hlbWEucmVxdWlyZWQoYCR7bmFtZX0gaXMgcmVxdWlyZWRgKTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59O1xuXG5jb25zdCBwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyID0gKFxuICBxLFxuICBhbnN3ZXJzLFxuICBhbnN3ZXIsXG4gIGluaXRpYWxWYWx1ZXMsXG4gIG9ubHlSZWxldmFudFxuKSA9PiB7XG4gIGlmIChxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgIHEuc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgIGNvbnN0IHsgc3ViX3F1ZXN0aW9uLCBhbnN3ZXJfdmFsdWVzIH0gPSBydWxlO1xuICAgICAgY29uc3Qgc3ViUXVlc3Rpb25TbHVnID0gdG9TbHVnKHN1Yl9xdWVzdGlvbi5uYW1lLCBzdWJfcXVlc3Rpb24uaWQpO1xuICAgICAgY29uc3Qgc3ViQW5zd2VyID0gYW5zd2Vyc1tzdWJRdWVzdGlvblNsdWddO1xuICAgICAgY29uc3QgbWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChhbnN3ZXIsIGFuc3dlcl92YWx1ZXMpO1xuXG4gICAgICBpZiAoIW9ubHlSZWxldmFudCB8fCBtYXRjaCkge1xuICAgICAgICBpbml0aWFsVmFsdWVzW3N1YlF1ZXN0aW9uU2x1Z10gPVxuICAgICAgICAgIHN1YkFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHN1Yl9xdWVzdGlvbik7XG4gICAgICB9XG5cbiAgICAgIHBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIoXG4gICAgICAgIHN1Yl9xdWVzdGlvbixcbiAgICAgICAgYW5zd2VycyxcbiAgICAgICAgc3ViQW5zd2VyLFxuICAgICAgICBpbml0aWFsVmFsdWVzLFxuICAgICAgICBvbmx5UmVsZXZhbnRcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUFuc3dlcnMgPSAoXG4gIG93bmVyLFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgYW5zd2VycyxcbiAgaW5jbHVkZUF0dGVuZGVlSW5mbyxcbiAgaW5jbHVkZURpc2NsYWltZXIsXG4gIG9ubHlSZWxldmFudCA9IGZhbHNlXG4pID0+IHtcbiAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IHt9O1xuXG4gIGlmIChpbmNsdWRlQXR0ZW5kZWVJbmZvKSB7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gfHwgb3duZXIuZW1haWwgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdIHx8IG93bmVyLmZpcnN0X25hbWUgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSB8fCBvd25lci5sYXN0X25hbWUgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gfHwgb3duZXIuY29tcGFueTtcbiAgfVxuXG4gIGlmIChpbmNsdWRlRGlzY2xhaW1lcikge1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gfHxcbiAgICAgIG93bmVyLmRpc2NsYWltZXJfYWNjZXB0ZWQ7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgY29uc3QgYW5zd2VyID0gYW5zd2Vyc1txdWVzdGlvblNsdWddO1xuICAgIGluaXRpYWxWYWx1ZXNbcXVlc3Rpb25TbHVnXSA9IGFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHEpO1xuXG4gICAgcGFyc2VTdWJRdWVzdGlvbkFuc3dlcihxLCBhbnN3ZXJzLCBhbnN3ZXIsIGluaXRpYWxWYWx1ZXMsIG9ubHlSZWxldmFudCk7XG4gIH0pO1xuXG4gIHJldHVybiBpbml0aWFsVmFsdWVzO1xufTtcblxuY29uc3QgYnVpbGRTdWJRdWVzdGlvblZhbGlkYXRpb25TY2hlbWEgPSAocXVlc3Rpb25TbHVnLCBydWxlLCBzY2hlbWEpID0+IHtcbiAgY29uc3Qgc3ViUXVlc3Rpb24gPSBydWxlLnN1Yl9xdWVzdGlvbjtcbiAgY29uc3Qgc3ViUXVlc3Rpb25TbHVnID0gdG9TbHVnKHN1YlF1ZXN0aW9uLm5hbWUsIHN1YlF1ZXN0aW9uLmlkKTtcblxuICBzY2hlbWFbc3ViUXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWxpZGF0aW9uKFxuICAgIHN1YlF1ZXN0aW9uLnR5cGUsXG4gICAgc3ViUXVlc3Rpb24ubmFtZSxcbiAgICBmYWxzZVxuICApXG4gICAgLm51bGxhYmxlKClcbiAgICAud2hlbihxdWVzdGlvblNsdWcsIHtcbiAgICAgIGlzOiAocXVlc3Rpb25BbnMpID0+IHtcbiAgICAgICAgY29uc3QgYW5zVmFsdWVNYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKFxuICAgICAgICAgIHF1ZXN0aW9uQW5zLFxuICAgICAgICAgIHJ1bGUuYW5zd2VyX3ZhbHVlc1xuICAgICAgICApO1xuICAgICAgICAvLyBjaGVjayBpZiBxdWVzdGlvbiBpcyB2aXNpYmxlIHRvIGFkZCB2YWxpZGF0aW9uXG4gICAgICAgIGNvbnN0IGlzVmlzaWJsZSA9ICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gICAgICAgICAgYCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBhbnNWYWx1ZU1hdGNoICYmIGlzVmlzaWJsZTtcbiAgICAgIH0sXG4gICAgICB0aGVuOiAoc2NoKSA9PiB7XG4gICAgICAgIGlmIChzdWJRdWVzdGlvbi50eXBlID09PSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0KSB7XG4gICAgICAgICAgcmV0dXJuIHNjaFxuICAgICAgICAgICAgLm1pbihNSU5fUkVRVUlSRUQsIGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfcXVlc3Rpb25cIikpXG4gICAgICAgICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9xdWVzdGlvblwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNjaC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX3F1ZXN0aW9uXCIpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBpZiAoc3ViUXVlc3Rpb24uc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgc3ViUXVlc3Rpb24uc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHN1YlJ1bGUpID0+IHtcbiAgICAgIGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hKHN1YlF1ZXN0aW9uU2x1Zywgc3ViUnVsZSwgc2NoZW1hKTtcbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkVmFsaWRhdGlvblNjaGVtYSA9IChcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGRpc2NsYWltZXJNYW5kYXRvcnlcbikgPT4ge1xuICBjb25zdCBzY2hlbWEgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAuZW1haWwoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPSB5dXAubGF6eSgodmFsdWUpID0+XG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCJcbiAgICAgICAgPyB5dXBcbiAgICAgICAgICAgIC5vYmplY3QoKVxuICAgICAgICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uY29tcGFueS5yZXF1aXJlZFwiKSlcbiAgICAgICAgICAgIC50eXBlRXJyb3IoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9maWVsZFwiKSlcbiAgICAgICAgOiB5dXAuc3RyaW5nKCkucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5jb21wYW55LnJlcXVpcmVkXCIpKVxuICAgICk7XG4gIH1cblxuICBpZiAoZGlzY2xhaW1lck1hbmRhdG9yeSkge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID0geXVwXG4gICAgICAuYm9vbCgpXG4gICAgICAub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCB7IGlkLCBuYW1lLCB0eXBlLCBtYW5kYXRvcnksIHN1Yl9xdWVzdGlvbl9ydWxlcyB9ID0gcTtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcobmFtZSwgaWQpO1xuICAgIHNjaGVtYVtxdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24odHlwZSwgbmFtZSwgbWFuZGF0b3J5KTtcblxuICAgIGlmIChzdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hKHF1ZXN0aW9uU2x1ZywgcnVsZSwgc2NoZW1hKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHl1cC5vYmplY3Qoc2NoZW1hKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uID0gKHRpY2tldHMsIHRpY2tldCkgPT5cbiAgdGlja2V0cy5tYXAoKHQpID0+IHtcbiAgICBjb25zdCB0bXBUaWNrZXQgPSB7IC4uLnQgfTtcbiAgICAvLyB1cGRhdGUgYXR0ZW5kZWVcbiAgICBpZiAoXG4gICAgICB0Lm93bmVyPy5pZCA9PT0gdGlja2V0Lm93bmVyPy5pZCAmJlxuICAgICAgdC5vd25lcj8uc3RhdHVzICE9PSB0aWNrZXQub3duZXI/LnN0YXR1c1xuICAgICkge1xuICAgICAgdG1wVGlja2V0Lm93bmVyID0gdGlja2V0Lm93bmVyO1xuICAgIH1cbiAgICByZXR1cm4gdC5pZCA9PT0gdGlja2V0LmlkID8gdGlja2V0IDogdG1wVGlja2V0O1xuICB9KTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjb3B5SWNvbl9fX2xJM2VRXCI7XG52YXIgXzIgPSBcInJldmVyc2VkX19fekp6bURcIjtcbnZhciBfMyA9IFwidHJ1bmNhdGVkX19faldTblVcIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX21WUGlSXCI7XG5leHBvcnQgeyBfMSBhcyBcImNvcHlJY29uXCIsIF8yIGFzIFwicmV2ZXJzZWRcIiwgXzMgYXMgXCJ0cnVuY2F0ZWRcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVfX19teEVLV1wiO1xudmFyIF8yID0gXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJfX19PNHNTc1wiO1xudmFyIF8zID0gXCJjYWxlbmRhckRpc3BsYXlfX19GM251S1wiO1xudmFyIF80ID0gXCJjbGVhbkJ1dHRvbl9fX3FxRHZVXCI7XG52YXIgXzUgPSBcImNvbnRhaW5lcl9fX1FlUVlfXCI7XG52YXIgXzYgPSBcImRhdGVQaWNrZXJDb250YWluZXJfX19aNDJtd1wiO1xudmFyIF83ID0gXCJkYXRlcGlja2VyQ2xvc2VfX19UWjdrSlwiO1xudmFyIF84ID0gXCJmaWx0ZXJDaGVja2JveENvbnRhaW5lcl9fX2tVblc5XCI7XG52YXIgXzkgPSBcImZpbHRlckNvbnRhaW5lcl9fX3JycXA5XCI7XG52YXIgX2EgPSBcImZpbHRlckRhdGVMYWJlbF9fX0pnYmNzXCI7XG52YXIgX2IgPSBcImZpbHRlckljb25fX19paU96b1wiO1xudmFyIF9jID0gXCJmaWx0ZXJMYWJlbF9fX3NrWlA3XCI7XG52YXIgX2QgPSBcImZpbHRlckxpc3RDb250YWluZXJfX19JRHJsU1wiO1xudmFyIF9lID0gXCJmaWx0ZXJOdW1BY3RpdmVfX19rbUVFS1wiO1xudmFyIF9mID0gXCJmaWx0ZXJTb3J0Q29udGFpbmVyX19fbmhOSnNcIjtcbnZhciBfMTAgPSBcImxhYmVsX19fTEFtZV9cIjtcbnZhciBfMTEgPSBcInNob3dGaWx0ZXJMaXN0X19fSVc0eEdcIjtcbnZhciBfMTIgPSBcInNvcnRDb250YWluZXJfX19zYjVCZFwiO1xudmFyIF8xMyA9IFwic29ydEljb25fX19jX1haaVwiO1xudmFyIF8xNCA9IFwic29ydExhYmVsX19fZFhpTXlcIjtcbnZhciBfMTUgPSBcInNvcnRMaXN0Q29udGFpbmVyX19fUHAyWGdcIjtcbnZhciBfMTYgPSBcInRpdGxlV3JhcHBlcl9fX1A2bVB1XCI7XG5leHBvcnQgeyBfMSBhcyBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVcIiwgXzIgYXMgXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJcIiwgXzMgYXMgXCJjYWxlbmRhckRpc3BsYXlcIiwgXzQgYXMgXCJjbGVhbkJ1dHRvblwiLCBfNSBhcyBcImNvbnRhaW5lclwiLCBfNiBhcyBcImRhdGVQaWNrZXJDb250YWluZXJcIiwgXzcgYXMgXCJkYXRlcGlja2VyQ2xvc2VcIiwgXzggYXMgXCJmaWx0ZXJDaGVja2JveENvbnRhaW5lclwiLCBfOSBhcyBcImZpbHRlckNvbnRhaW5lclwiLCBfYSBhcyBcImZpbHRlckRhdGVMYWJlbFwiLCBfYiBhcyBcImZpbHRlckljb25cIiwgX2MgYXMgXCJmaWx0ZXJMYWJlbFwiLCBfZCBhcyBcImZpbHRlckxpc3RDb250YWluZXJcIiwgX2UgYXMgXCJmaWx0ZXJOdW1BY3RpdmVcIiwgX2YgYXMgXCJmaWx0ZXJTb3J0Q29udGFpbmVyXCIsIF8xMCBhcyBcImxhYmVsXCIsIF8xMSBhcyBcInNob3dGaWx0ZXJMaXN0XCIsIF8xMiBhcyBcInNvcnRDb250YWluZXJcIiwgXzEzIGFzIFwic29ydEljb25cIiwgXzE0IGFzIFwic29ydExhYmVsXCIsIF8xNSBhcyBcInNvcnRMaXN0Q29udGFpbmVyXCIsIF8xNiBhcyBcInRpdGxlV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjYW5jZWxCdG5fX19xRGV4aFwiO1xudmFyIF8yID0gXCJmb290ZXJfX19TTjcweVwiO1xudmFyIF8zID0gXCJzYXZlQnRuX19fbmJVNmNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2FuY2VsQnRuXCIsIF8yIGFzIFwiZm9vdGVyXCIsIF8zIGFzIFwic2F2ZUJ0blwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJlcnJvckxhYmVsX19fbm9jeVhcIjtcbmV4cG9ydCB7IF8xIGFzIFwiZXJyb3JMYWJlbFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJteU9yZGVyc1dyYXBwZXJfX19ISm15c1wiO1xudmFyIF8yID0gXCJub09yZGVyc0ZvdW5kX19fRFJ3Z29cIjtcbnZhciBfMyA9IFwibm9PcmRlcnNJY29uV3JhcHBlcl9fX3RQVG1ZXCI7XG5leHBvcnQgeyBfMSBhcyBcIm15T3JkZXJzV3JhcHBlclwiLCBfMiBhcyBcIm5vT3JkZXJzRm91bmRcIiwgXzMgYXMgXCJub09yZGVyc0ljb25XcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImJvZHlfX19BV2RpTFwiO1xudmFyIF8yID0gXCJpY29uV3JhcHBlcl9fX216ZXZLXCI7XG52YXIgXzMgPSBcInRpdGxlX19fTTI0Mm1cIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX1Fzd0NQXCI7XG5leHBvcnQgeyBfMSBhcyBcImJvZHlcIiwgXzIgYXMgXCJpY29uV3JhcHBlclwiLCBfMyBhcyBcInRpdGxlXCIsIF80IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJvcmRlckRldGFpbHNNbW91bnRfX19yM2tSQVwiO1xudmFyIF8yID0gXCJvcmRlckRldGFpbHNUaWNrZXRzX19fbTRJaktcIjtcbnZhciBfMyA9IFwib3JkZXJTdW1tYXJ5QnV0dG9uX19fdXhqaHRcIjtcbnZhciBfNCA9IFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb19fX19SQlhFXCI7XG52YXIgXzUgPSBcIm9yZGVyU3VtbWFyeVRhYmxlX19fWURueFZcIjtcbnZhciBfNiA9IFwib3JkZXJTdW1tYXJ5V3JhcHBlcl9fX1J3SUVSXCI7XG52YXIgXzcgPSBcInJlZnVuZERpc2FibGVkX19fanZyazNcIjtcbmV4cG9ydCB7IF8xIGFzIFwib3JkZXJEZXRhaWxzTW1vdW50XCIsIF8yIGFzIFwib3JkZXJEZXRhaWxzVGlja2V0c1wiLCBfMyBhcyBcIm9yZGVyU3VtbWFyeUJ1dHRvblwiLCBfNCBhcyBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9cIiwgXzUgYXMgXCJvcmRlclN1bW1hcnlUYWJsZVwiLCBfNiBhcyBcIm9yZGVyU3VtbWFyeVdyYXBwZXJcIiwgXzcgYXMgXCJyZWZ1bmREaXNhYmxlZFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhc3NpZ25UaWNrZXRCdXR0b25fX196ekxzY1wiO1xudmFyIF8yID0gXCJhc3NpZ25Ub01lVGV4dF9fX1pQYWV4XCI7XG52YXIgXzMgPSBcImFzc2lnbmVkQnlUZXh0X19fYk5aN3pcIjtcbnZhciBfNCA9IFwiYXNzaWduZWRUb01lRGVzX19fR2pGa1ZcIjtcbnZhciBfNSA9IFwiYXNzaWduZWRUb01lV3JhcHBlcl9fX1V4YzJ5XCI7XG52YXIgXzYgPSBcImJmRmVhdHVyZV9fX2VFaW5FXCI7XG52YXIgXzcgPSBcImJmRmVhdHVyZVdyYXBwZXJfX19xV2s5VlwiO1xudmFyIF84ID0gXCJjaGVja2JveF9fX1haSnBiXCI7XG52YXIgXzkgPSBcImRpc2FibGVkUmVmdW5kX19fU2ZmbDdcIjtcbnZhciBfYSA9IFwiZGlzcGxheV9ub25lX19fQ3FwTDNcIjtcbnZhciBfYiA9IFwibGFiZWxfX196WERXelwiO1xudmFyIF9jID0gXCJvcmRlclRpY2tldENvbnRhaW5lcl9fX1pKTHprXCI7XG52YXIgX2QgPSBcIm9yZGVyVGlja2V0SW5mb19fX2dlbXFCXCI7XG52YXIgX2UgPSBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcl9fX19wNjZWXCI7XG52YXIgX2YgPSBcIm9yZGVyV3JhcHBlcl9fX3lEQkFvXCI7XG52YXIgXzEwID0gXCJyZWFzc2lnbkJ1dHRvbl9fX1Jvak01XCI7XG52YXIgXzExID0gXCJyZWZ1bmRCdXR0b25zX19fakRsNEhcIjtcbnZhciBfMTIgPSBcInJlZnVuZE1vZGFsX19fRXFnUEZcIjtcbnZhciBfMTMgPSBcInNlbGVjdGVkX19fSFdHTmNcIjtcbnZhciBfMTQgPSBcInRhYkJ1dHRvbnNfX194VHlKQVwiO1xudmFyIF8xNSA9IFwidGlja2V0QWN0aW9uQnV0dG9uc19fX3JwU01RXCI7XG52YXIgXzE2ID0gXCJ0aWNrZXRGb290ZXJfX19qM2JkaVwiO1xudmFyIF8xNyA9IFwidGlja2V0TGlzdENvbnRhaW5lcl9fX2NmbXJyXCI7XG52YXIgXzE4ID0gXCJ0aWNrZXROb19fX2EyaU05XCI7XG52YXIgXzE5ID0gXCJ0aWNrZXRPd25lckVtYWlsX19fWnQ0T0VcIjtcbnZhciBfMWEgPSBcInRpY2tldFRpY2tldFR5cGVfX19acV9mMFwiO1xudmFyIF8xYiA9IFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbl9fX0hGNkltXCI7XG52YXIgXzFjID0gXCJ2aWV3TW9yZUJ1dHRvbl9fX0tfMXpUXCI7XG5leHBvcnQgeyBfMSBhcyBcImFzc2lnblRpY2tldEJ1dHRvblwiLCBfMiBhcyBcImFzc2lnblRvTWVUZXh0XCIsIF8zIGFzIFwiYXNzaWduZWRCeVRleHRcIiwgXzQgYXMgXCJhc3NpZ25lZFRvTWVEZXNcIiwgXzUgYXMgXCJhc3NpZ25lZFRvTWVXcmFwcGVyXCIsIF82IGFzIFwiYmZGZWF0dXJlXCIsIF83IGFzIFwiYmZGZWF0dXJlV3JhcHBlclwiLCBfOCBhcyBcImNoZWNrYm94XCIsIF85IGFzIFwiZGlzYWJsZWRSZWZ1bmRcIiwgX2EgYXMgXCJkaXNwbGF5X25vbmVcIiwgX2IgYXMgXCJsYWJlbFwiLCBfYyBhcyBcIm9yZGVyVGlja2V0Q29udGFpbmVyXCIsIF9kIGFzIFwib3JkZXJUaWNrZXRJbmZvXCIsIF9lIGFzIFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyXCIsIF9mIGFzIFwib3JkZXJXcmFwcGVyXCIsIF8xMCBhcyBcInJlYXNzaWduQnV0dG9uXCIsIF8xMSBhcyBcInJlZnVuZEJ1dHRvbnNcIiwgXzEyIGFzIFwicmVmdW5kTW9kYWxcIiwgXzEzIGFzIFwic2VsZWN0ZWRcIiwgXzE0IGFzIFwidGFiQnV0dG9uc1wiLCBfMTUgYXMgXCJ0aWNrZXRBY3Rpb25CdXR0b25zXCIsIF8xNiBhcyBcInRpY2tldEZvb3RlclwiLCBfMTcgYXMgXCJ0aWNrZXRMaXN0Q29udGFpbmVyXCIsIF8xOCBhcyBcInRpY2tldE5vXCIsIF8xOSBhcyBcInRpY2tldE93bmVyRW1haWxcIiwgXzFhIGFzIFwidGlja2V0VGlja2V0VHlwZVwiLCBfMWIgYXMgXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uXCIsIF8xYyBhcyBcInZpZXdNb3JlQnV0dG9uXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIkNUQUJ1dHRvbldyYXBwZXJfX19LZ3E2Z1wiO1xudmFyIF8yID0gXCJhY3Rpb25CdXR0b25zX19fdTdtUFNcIjtcbnZhciBfMyA9IFwiYXBwcm92ZWRfX19zeEVKV1wiO1xudmFyIF80ID0gXCJiYWRnZUZlYXR1cmVfX190TGhFcFwiO1xudmFyIF81ID0gXCJiYWRnZUZlYXR1cmVXcmFwcGVyX19fXzlHYkRcIjtcbnZhciBfNiA9IFwiYnV0dG9uUGlsbF9fX0xlc2F6XCI7XG52YXIgXzcgPSBcImNhbmNlbEJ1dHRvbl9fX3lmaFliXCI7XG52YXIgXzggPSBcImNvbnRpbnVlQnV0dG9uX19fTnlYM3NcIjtcbnZhciBfOSA9IFwiZGVsZXRlSWNvbl9fX0ZTd3llXCI7XG52YXIgX2EgPSBcInBlbmRpbmdfX19hRWJXd1wiO1xudmFyIF9iID0gXCJyZWZ1bmREZXRhaWxfX19jUTI4VlwiO1xudmFyIF9jID0gXCJyZWZ1bmRFcnJvck1zZ19fX0FhaHpyXCI7XG52YXIgX2QgPSBcInJlZnVuZFN1Y2Nlc3NmdWxfX196ckRRWVwiO1xudmFyIF9lID0gXCJyZWZ1bmRUZXh0X19fYUVuTDlcIjtcbnZhciBfZiA9IFwicmVmdW5kVGlja2V0QXR0ZW5kZWVfX19RWENqTVwiO1xudmFyIF8xMCA9IFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyX19feWE2MTNcIjtcbnZhciBfMTEgPSBcInJlamVjdGVkX19fTkpFNFpcIjtcbnZhciBfMTIgPSBcInN1YnRpdGxlX19fUHREZTJcIjtcbnZhciBfMTMgPSBcInN1Y2Nlc3NNc2dfX19IdE1zZVwiO1xudmFyIF8xNCA9IFwic3VjY2Vzc01zZzJfX19RNnpuYVwiO1xudmFyIF8xNSA9IFwidGlja2V0TGlzdF9fX2VEUVIzXCI7XG52YXIgXzE2ID0gXCJ0aWNrZXROb19fX19FQUQ0XCI7XG5leHBvcnQgeyBfMSBhcyBcIkNUQUJ1dHRvbldyYXBwZXJcIiwgXzIgYXMgXCJhY3Rpb25CdXR0b25zXCIsIF8zIGFzIFwiYXBwcm92ZWRcIiwgXzQgYXMgXCJiYWRnZUZlYXR1cmVcIiwgXzUgYXMgXCJiYWRnZUZlYXR1cmVXcmFwcGVyXCIsIF82IGFzIFwiYnV0dG9uUGlsbFwiLCBfNyBhcyBcImNhbmNlbEJ1dHRvblwiLCBfOCBhcyBcImNvbnRpbnVlQnV0dG9uXCIsIF85IGFzIFwiZGVsZXRlSWNvblwiLCBfYSBhcyBcInBlbmRpbmdcIiwgX2IgYXMgXCJyZWZ1bmREZXRhaWxcIiwgX2MgYXMgXCJyZWZ1bmRFcnJvck1zZ1wiLCBfZCBhcyBcInJlZnVuZFN1Y2Nlc3NmdWxcIiwgX2UgYXMgXCJyZWZ1bmRUZXh0XCIsIF9mIGFzIFwicmVmdW5kVGlja2V0QXR0ZW5kZWVcIiwgXzEwIGFzIFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyXCIsIF8xMSBhcyBcInJlamVjdGVkXCIsIF8xMiBhcyBcInN1YnRpdGxlXCIsIF8xMyBhcyBcInN1Y2Nlc3NNc2dcIiwgXzE0IGFzIFwic3VjY2Vzc01zZzJcIiwgXzE1IGFzIFwidGlja2V0TGlzdFwiLCBfMTYgYXMgXCJ0aWNrZXROb1wiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjbG9zZUJ0bl9fX3lTUUNPXCI7XG52YXIgXzIgPSBcImhlYWRlcl9fX2ZCWEc5XCI7XG52YXIgXzMgPSBcInRpdGxlX19fdHlaZVFcIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX1JPSkdzXCI7XG5leHBvcnQgeyBfMSBhcyBcImNsb3NlQnRuXCIsIF8yIGFzIFwiaGVhZGVyXCIsIF8zIGFzIFwidGl0bGVcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInN1bW1pdFRpdGxlRGF0ZV9fX1hucnBGXCI7XG52YXIgXzIgPSBcIndpZGdldEhlYWRlcl9fX2dnTHRNXCI7XG5leHBvcnQgeyBfMSBhcyBcInN1bW1pdFRpdGxlRGF0ZVwiLCBfMiBhcyBcIndpZGdldEhlYWRlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ1bmFzc2lnbkJ0bl9fX2k3bWd5XCI7XG52YXIgXzIgPSBcInVuYXNzaWduV3JhcHBlcl9fX2czZTJ1XCI7XG52YXIgXzMgPSBcIndyYXBwZXJfX19XOTRTTFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ1bmFzc2lnbkJ0blwiLCBfMiBhcyBcInVuYXNzaWduV3JhcHBlclwiLCBfMyBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiaGVhZGVyTm90ZV9fX0FlNUVBXCI7XG52YXIgXzIgPSBcIm9yZGVyTm9fX19WT1BSd1wiO1xudmFyIF8zID0gXCJwdXJjaGFzZWRCeV9fX01OaUhUXCI7XG52YXIgXzQgPSBcInB1cmNoYXNlZEJ5V3JhcHBlcl9fX0RoNkhVXCI7XG52YXIgXzUgPSBcIndyYXBwZXJfX19tVnVpWlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJoZWFkZXJOb3RlXCIsIF8yIGFzIFwib3JkZXJOb1wiLCBfMyBhcyBcInB1cmNoYXNlZEJ5XCIsIF80IGFzIFwicHVyY2hhc2VkQnlXcmFwcGVyXCIsIF81IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lcl9fX2dPdGFKXCI7XG5leHBvcnQgeyBfMSBhcyBcInRpY2tldFJlYXNzaWduQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIndyYXBwZXJfX19Fd09SelwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImluZm9Ob3RlX19faTFYWTlcIjtcbnZhciBfMiA9IFwid3JhcHBlcl9fX01BdU5TXCI7XG5leHBvcnQgeyBfMSBhcyBcImluZm9Ob3RlXCIsIF8yIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyX19fQXV2cm5cIjtcbnZhciBfMiA9IFwiYWRkaXRpb25hbERldGFpbHNfX19tUDFpSlwiO1xudmFyIF8zID0gXCJhdHRlbmRlZUNvbnRhaW5lcl9fX1EwVlV6XCI7XG52YXIgXzQgPSBcImF0dGVuZGVlSW5mb1RpdGxlX19fTG1ybTRcIjtcbnZhciBfNSA9IFwiY2xvc2VCdG5fX19XTkpsRVwiO1xudmFyIF82ID0gXCJjb3B5QnRuX19fX3V0QTZcIjtcbnZhciBfNyA9IFwiZGVsZWdhdGVkVG9fX19TR1ZRSVwiO1xudmFyIF84ID0gXCJkb3dubG9hZEJ0bl9fX3FqWWh6XCI7XG52YXIgXzkgPSBcImhlYWRlcl9fX0F1Z256XCI7XG52YXIgX2EgPSBcIm9yZGVyTnVtYmVyX19fTDVRNWFcIjtcbnZhciBfYiA9IFwicXJDb2RlX19fZndxWnFcIjtcbnZhciBfYyA9IFwicXJOb3RlX19fR2M3S25cIjtcbnZhciBfZCA9IFwic2VuZEJ0bl9fX2tvV00yXCI7XG52YXIgX2UgPSBcInNlbnRfX19rNldLeFwiO1xudmFyIF9mID0gXCJzdGF0dXNfX19rd0M4eVwiO1xudmFyIF8xMCA9IFwic3VidGl0bGVfX195X051T1wiO1xudmFyIF8xMSA9IFwidGlja2V0RGV0YWlsQ29udGFpbmVyX19fYjJUTFJcIjtcbnZhciBfMTIgPSBcInRpdGxlX19fd1F6VU5cIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lclwiLCBfMiBhcyBcImFkZGl0aW9uYWxEZXRhaWxzXCIsIF8zIGFzIFwiYXR0ZW5kZWVDb250YWluZXJcIiwgXzQgYXMgXCJhdHRlbmRlZUluZm9UaXRsZVwiLCBfNSBhcyBcImNsb3NlQnRuXCIsIF82IGFzIFwiY29weUJ0blwiLCBfNyBhcyBcImRlbGVnYXRlZFRvXCIsIF84IGFzIFwiZG93bmxvYWRCdG5cIiwgXzkgYXMgXCJoZWFkZXJcIiwgX2EgYXMgXCJvcmRlck51bWJlclwiLCBfYiBhcyBcInFyQ29kZVwiLCBfYyBhcyBcInFyTm90ZVwiLCBfZCBhcyBcInNlbmRCdG5cIiwgX2UgYXMgXCJzZW50XCIsIF9mIGFzIFwic3RhdHVzXCIsIF8xMCBhcyBcInN1YnRpdGxlXCIsIF8xMSBhcyBcInRpY2tldERldGFpbENvbnRhaW5lclwiLCBfMTIgYXMgXCJ0aXRsZVwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJidXR0b25DYW5jZWxsZWRfX19FcmxEWlwiO1xudmFyIF8yID0gXCJidXR0b25Db21wbGV0ZV9fX2xsV2taXCI7XG52YXIgXzMgPSBcImJ1dHRvbkluY29tcGxldGVfX19Ub2xIZ1wiO1xudmFyIF80ID0gXCJidXR0b25QaWxsX19fenEydGNcIjtcbnZhciBfNSA9IFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkX19fcFd0MzBcIjtcbnZhciBfNiA9IFwiYnV0dG9uVW5hc3NpZ25lZF9fX1lEZDhYXCI7XG52YXIgXzcgPSBcInRpY2tldFN0YXR1c0NvbnRhaW5lcl9fX3FqNmZiXCI7XG5leHBvcnQgeyBfMSBhcyBcImJ1dHRvbkNhbmNlbGxlZFwiLCBfMiBhcyBcImJ1dHRvbkNvbXBsZXRlXCIsIF8zIGFzIFwiYnV0dG9uSW5jb21wbGV0ZVwiLCBfNCBhcyBcImJ1dHRvblBpbGxcIiwgXzUgYXMgXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRcIiwgXzYgYXMgXCJidXR0b25VbmFzc2lnbmVkXCIsIF83IGFzIFwidGlja2V0U3RhdHVzQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFjdGl2ZV9fX3RMeVdaXCI7XG52YXIgXzIgPSBcInRhYk9wdGlvbl9fX0g0SDF1XCI7XG52YXIgXzMgPSBcInRhYldyYXBwZXJfX191MjFzR1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3RpdmVcIiwgXzIgYXMgXCJ0YWJPcHRpb25cIiwgXzMgYXMgXCJ0YWJXcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInRpY2tldHNUaXRsZVRleHRfX19URFBtcFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ0aWNrZXRzVGl0bGVUZXh0XCIgfVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvQnV0dG9uXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaWFsb2dcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaWFsb2dBY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0NvbnRlbnRUZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nVGl0bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHJlZHV4anMvdG9vbGtpdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAc2VudHJ5L3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZvcm1pa1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImlkdG9rZW4tdmVyaWZpZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibW9tZW50LXRpbWV6b25lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInAtbGltaXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicHJvcC10eXBlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcXItY29kZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ5dXBcIik7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgUGVyc2lzdEdhdGUgfSBmcm9tIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgU3R5bGVkRW5naW5lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlSW5pdFN0b3JlIH0gZnJvbSBcIi4vc3RvcmVcIjtcbmltcG9ydCB7IFJFU0VUX1NUQVRFLCBzZXRSZWR1Y2VyU3RhdGUgfSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5cbmltcG9ydCBXaWRnZXRXcmFwcGVyIGZyb20gXCIuL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlclwiO1xuXG5jb25zdCBNeU9yZGVyc015VGlja2V0c1dpZGdldCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICBhcGlCYXNlVXJsLFxuICAgIHVzZXIsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBzdG9yZSwgcGVyc2lzdG9yIH0gPSB1c2VJbml0U3RvcmUoe1xuICAgIGxvZ2luVXJsLFxuICAgIHN1cHBvcnRFbWFpbCxcbiAgICBzdW1taXQsXG4gICAgdXNlcixcbiAgICBhcGlCYXNlVXJsLFxuICAgIGNsaWVudElkLFxuICAgIHVwZGF0ZVByb2ZpbGVcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQmVmb3JlTGlmdCA9ICgpID0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIGNvbnN0IGZsdXNoID0gcGFyYW1zLmhhcyhcImZsdXNoU3RhdGVcIik7XG4gICAgaWYgKGZsdXNoKSBzdG9yZS5kaXNwYXRjaCh7IHR5cGU6IFJFU0VUX1NUQVRFLCBwYXlsb2FkOiBudWxsIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc3RvcmUuZGlzcGF0Y2goc2V0UmVkdWNlclN0YXRlKHN1bW1pdCwgdXNlcikpO1xuICB9LCBbc3VtbWl0LCB1c2VyXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8UHJvdmlkZXIgc3RvcmU9e3N0b3JlfT5cbiAgICAgIDxQZXJzaXN0R2F0ZVxuICAgICAgICBvbkJlZm9yZUxpZnQ9e2hhbmRsZUJlZm9yZUxpZnR9XG4gICAgICAgIGxvYWRpbmc9e251bGx9XG4gICAgICAgIHBlcnNpc3Rvcj17cGVyc2lzdG9yfVxuICAgICAgPlxuICAgICAgICA8U3R5bGVkRW5naW5lUHJvdmlkZXIgaW5qZWN0Rmlyc3Q+XG4gICAgICAgICAgPFdpZGdldFdyYXBwZXIgLz5cbiAgICAgICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgICAgIDwvUGVyc2lzdEdhdGU+XG4gICAgPC9Qcm92aWRlcj5cbiAgKTtcbn07XG5cbk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0LnByb3BUeXBlcyA9IHtcbiAgbG9naW5Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1cHBvcnRFbWFpbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBhcGlCYXNlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1c2VyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjbGllbnRJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdXBkYXRlUHJvZmlsZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0O1xuIl0sIm5hbWVzIjpbImF1dGhFcnJvckhhbmRsZXIiLCJjcmVhdGVBY3Rpb24iLCJkZWxldGVSZXF1ZXN0IiwiZ2V0UmVxdWVzdCIsInB1dFJlcXVlc3QiLCJzdGFydExvYWRpbmciLCJzdG9wTG9hZGluZyIsInBMaW1pdCIsImdldElkVG9rZW4iLCJvYmplY3RUb1F1ZXJ5U3RyaW5nIiwiSWRUb2tlblZlcmlmaWVyIiwiaTE4biIsImF1dGhQcm9taXNlUmVqZWN0IiwiZ2V0QWNjZXNzVG9rZW5TYWZlbHkiLCJERUZBVUxUX0lURU1TX1BFUl9QQUdFIiwiRVJST1JfQ09ERVMiLCJGSUZUWV9QRVJfUEFHRSIsIkZJTFRFUl9BQ1RJT04iLCJGSVJTVF9QQUdFIiwiUFJPTUlTRV9CQVRDSF9MSU1JVCIsIlJFU0VUX1NUQVRFIiwiUkVTRVRfRklMVEVSIiwiUkVTRVRfQVBJX0VSUk9SIiwiU0VUX1NUQVRFIiwiU0VUX0FQSV9FUlJPUiIsIkNIQU5HRV9GSUxURVIiLCJDSEFOR0VfU09SVCIsIkdFVF9VU0VSX09SREVSUyIsIlJFRlVORF9PUkRFUiIsIlNFVF9BQ1RJVkVfT1JERVJfSUQiLCJGSUxURVJfVVNFUl9PUkRFUlMiLCJHRVRfTVlfQVNTSUdORURfVElDS0VUUyIsIlVQREFURV9USUNLRVQiLCJSRVNFVF9USUNLRVQiLCJSRUNFSVZFX1RJQ0tFVCIsIlJFTU9WRV9USUNLRVRfQVRURU5ERUUiLCJBU1NJR05fVElDS0VUIiwiREVMRUdBVEVfVElDS0VUIiwiUkVGVU5EX1RJQ0tFVCIsIlJFU0VORF9OT1RJRklDQVRJT04iLCJHRVRfVElDS0VUU19CWV9PUkRFUiIsIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SIiwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTIiwiR0VUX1RJQ0tFVF9ERVRBSUxTIiwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMiLCJUSUNLRVRfQVRURU5ERUVfS0VZUyIsImVtYWlsIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjb21wYW55IiwiZGlzY2xhaW1lckFjY2VwdGVkIiwiZXh0cmFRdWVzdGlvbnMiLCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEIiwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSIsIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRSIsIlVQREFURV9JRFBfUFJPRklMRSIsIlNFVF9VU0VSIiwiU0VUX1NVTU1JVCIsIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyIsIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTIiwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTIiwicmVzZXRUaWNrZXQiLCJkaXNwYXRjaCIsInJlc2V0U3RhdGUiLCJyZXNldEZpbHRlciIsInJlc2V0RXJyb3IiLCJzZXRSZWR1Y2VyU3RhdGUiLCJzdW1taXQiLCJ1c2VyIiwiRklMVEVSX1ZBUl9EQVRFIiwiRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFIiwiRklMVEVSX1ZBUl9USUNLRVRfVFlQRSIsIkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEIiwiRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMiLCJGSUxURVJfVkFSX1BST01PQ09ERSIsIkZJTFRFUl9WQVJfRlJFRV9QQUlEIiwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIiLCJjaGFuZ2VGaWx0ZXIiLCJmaWx0ZXIiLCJjaGFuZ2VTb3J0Iiwic29ydCIsInBhcnNlRmlsdGVyIiwiZmlsdGVyT2JqIiwiZmlsdGVyQWN0aW9uIiwicHVzaCIsImNvbmNhdCIsImxvd2VyIiwidXBwZXIiLCJsZW5ndGgiLCJmaWx0ZXJOYW1lIiwiT1JERVJTIiwiam9pbiIsImlucHV0RmlsdGVycyIsIlRJQ0tFVFNfQllfT1JERVJTIiwiRVhURVJOQUxfVElDS0VUUyIsImdldFNvcnREaXJlY3Rpb24iLCJkaXJlY3Rpb24iLCJlcnJvckhhbmRsZXJOb3RpZnkiLCJwYXlsb2FkIiwiY2FsbGJhY2siLCJjdXN0b21BdXRoRXJyb3JIYW5kbGVyIiwiZXJyIiwicmVzIiwiY3VzdG9tRmV0Y2hFcnJvckhhbmRsZXIiLCJyZXNwb25zZSIsImNvZGUiLCJzdGF0dXMiLCJtc2ciLCJ0IiwiT2JqZWN0IiwiZW50cmllcyIsImVycm9ycyIsImZvckVhY2giLCJfcmVmIiwia2V5IiwidmFsdWUiLCJOdW1iZXIiLCJpc05hTiIsInN0YXR1c1RleHQiLCJ0aXRsZSIsImh0bWwiLCJnZXRVc2VyT3JkZXJzIiwiX3JlZjIiLCJza2lwTG9hZGluZyIsInBhZ2UiLCJwZXJQYWdlIiwiZ2V0U3RhdGUiLCJfcmVmMyIsImFwaUJhc2VVcmwiLCJ3aWRnZXRTdGF0ZSIsImFjY2Vzc1Rva2VuIiwicGFyYW1zIiwiYWNjZXNzX3Rva2VuIiwib3JkZXIiLCJyZWxhdGlvbnMiLCJmaWVsZHMiLCJwZXJfcGFnZSIsImtleXMiLCJmaWx0ZXJzIiwibmFtZSIsImlkIiwidGhlbiIsImNhdGNoIiwiZSIsImZpbmFsbHkiLCJzZXRBY3RpdmVPcmRlcklkIiwib3JkZXJJZCIsInNldFVzZXIiLCJnZXRVc2VyVGlja2V0cyIsIl9yZWY0IiwiX3JlZjUiLCJ1c2VyUHJvZmlsZSIsIlByb21pc2UiLCJyZWplY3QiLCJleHBhbmQiLCJnZXRUaWNrZXRzQnlPcmRlciIsIl9yZWY2IiwiX3JlZjciLCJyZXNlbmROb3RpZmljYXRpb24iLCJ0aWNrZXQiLCJfcmVmOCIsIm1lc3NhZ2UiLCJvcmRlcl9pZCIsInJlZnVuZFRpY2tldCIsIl9yZWY5IiwiX3JlZjEwIiwicmVmdW5kQnVsa1RpY2tldHMiLCJfcmVmMTEiLCJ0aWNrZXRzIiwibGltaXQiLCJhbGxSZWZ1bmRUaWNrZXRDYWxscyIsIm1hcCIsImFsbCIsInN1Y2Nlc3NmdWxseVJlcXVlc3RlZCIsInIiLCJfciRyZXNwb25zZSIsInJlZnVuZF9yZXF1ZXN0cyIsInVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJ0aWNrZXRzUmVmdW5kUmVxdWVzdGVkIiwiZ2V0RXh0cmFRdWVzdGlvbnMiLCJhdHRlbmRlZUlkIiwiX3JlZjEyIiwiZW5kcG9pbnQiLCJnZXRUaWNrZXQiLCJ0aWNrZXRJZCIsIl9yZWYxMyIsIm5vcm1hbGl6ZVRpY2tldCIsImVudGl0eSIsIm5vcm1hbGl6ZWRFbnRpdHkiLCJfb2JqZWN0U3ByZWFkIiwiYXR0ZW5kZWVfY29tcGFueSIsImF0dGVuZGVlX2NvbXBhbnlfaWQiLCJyZWZyZXNoUHJvZmlsZSIsImRhdGEiLCJ0aWNrZXRPd25lciIsIl9yZWYxNCIsIl90aWNrZXRPd25lciRtYW5hZ2VyIiwidXBkYXRlUHJvZmlsZSIsImF0dGVuZGVlX2VtYWlsIiwiYXR0ZW5kZWVfZmlyc3RfbmFtZSIsImF0dGVuZGVlX2xhc3RfbmFtZSIsImhhc01hbmFnZXIiLCJtYW5hZ2VyIiwibWFuYWdlcl9pZCIsIml0c01lIiwicHJvZmlsZUNoYW5nZWQiLCJmaXJzdF9uYW1lIiwibGFzdF9uYW1lIiwibmV3UHJvZmlsZSIsInNhdmVUaWNrZXREZXRhaWxzIiwiYW5zd2VycyIsIl9yZWYxNSIsImlkVG9rZW4iLCJ2ZXJpZmllciIsImp3dCIsImRlY29kZSIsImNvbnNvbGUiLCJsb2ciLCJvd25lciIsImFzc2lnbkF0dGVuZGVlIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiX3JlZjE2IiwicmVtb3ZlVGlja2V0IiwiX3JlZjE3IiwicmVhc3NpZ25UaWNrZXQiLCJ1bmFzc2lnblRpY2tldCIsImRlbGVnYXRlVGlja2V0IiwiX3JlZjE4Iiwic2F2ZUV4dHJhUXVlc3Rpb25zIiwiX3JlZjE5IiwiZ2V0VGlja2V0UERGIiwiX3JlZjIwIiwicXVlcnlTdHJpbmciLCJhcGlVcmwiLCJmZXRjaCIsInJlc3BvbnNlVHlwZSIsImhlYWRlcnMiLCJvayIsImJsb2IiLCJwZGYiLCJsaW5rIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidXJsIiwid2luZG93IiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiaHJlZiIsImRvd25sb2FkIiwiZGlzcGF0Y2hFdmVudCIsIk1vdXNlRXZlbnQiLCJSZWFjdCIsIkJ1dHRvbiIsIkRpYWxvZyIsIkRpYWxvZ0FjdGlvbnMiLCJEaWFsb2dDb250ZW50IiwiRGlhbG9nQ29udGVudFRleHQiLCJEaWFsb2dUaXRsZSIsInVzZVRyYW5zbGF0aW9uIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkNvbmZpcm1EaWFsb2ciLCJvcGVuIiwiYm9keSIsIm9uQ2xvc2UiLCJvbkNvbmZpcm0iLCJjaGlsZHJlbiIsIm9uQ2xpY2siLCJhdXRvRm9jdXMiLCJQcm9wVHlwZXMiLCJDb250ZW50Q29weUljb24iLCJUb29sdGlwIiwiTUlMTElTRUNfVE9fU0VDIiwic3R5bGVzIiwiZGVmYXVsdFdpZHRoIiwiQ29weVRleHQiLCJ0ZXh0IiwidG9vbHRpcFRleHQiLCJoaWRlQ29weSIsInRydW5jYXRlZCIsInJldmVyc2VkIiwid2lkdGgiLCJ0b29sdGlwVGV4dFRvVXNlIiwidG9vbHRpcCIsInNldFRvb2x0aXAiLCJ1c2VTdGF0ZSIsImNsYXNzTmFtZXMiLCJoYW5kbGVDb3B5IiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0Iiwic2V0VGltZW91dCIsImNsYXNzTmFtZSIsIndyYXBwZXIiLCJzdHlsZSIsImNvcHlJY29uIiwicHJvcFR5cGVzIiwic3RyaW5nIiwiYm9vbCIsIm51bWJlciIsImNyZWF0ZUNvbnRleHQiLCJDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0IiwiQWxlcnQiLCJTbmFja2JhciIsIlR5cG9ncmFwaHkiLCJDaGVja0NpcmNsZUljb24iLCJFcnJvckljb24iLCJDdXN0b21Ob3RpZmljYXRpb24iLCJzZXZlcml0eSIsImFuY2hvck9yaWdpbiIsInZlcnRpY2FsIiwiaG9yaXpvbnRhbCIsImF1dG9IaWRlRHVyYXRpb24iLCJ2YXJpYW50Iiwic3giLCJiYWNrZ3JvdW5kQ29sb3IiLCJpY29uTWFwcGluZyIsInN1Y2Nlc3MiLCJmb250U2l6ZSIsImVycm9yIiwiZnVuYyIsIlRoZW1lUHJvdmlkZXIiLCJjcmVhdGVUaGVtZSIsImRhcmtDb2xvciIsInJvb3QiLCJkb2N1bWVudEVsZW1lbnQiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsInRoZW1lIiwicGFsZXR0ZSIsInByaW1hcnkiLCJtYWluIiwic2Vjb25kYXJ5IiwidHlwb2dyYXBoeSIsImJvZHkxIiwiZm9udFdlaWdodCIsImg1IiwibWFyZ2luQm90dG9tIiwiaDYiLCJjb21wb25lbnRzIiwiTXVpRm9ybUhlbHBlclRleHQiLCJzdHlsZU92ZXJyaWRlcyIsIk11aUJ1dHRvbiIsImxpbmVIZWlnaHQiLCJNdWlUYWIiLCJjb2xvciIsIk11aVRhYnMiLCJpbmRpY2F0b3IiLCJDdXN0b21UaGVtZSIsIm5vZGUiLCJpc1JlcXVpcmVkIiwiQ2hlY2tib3giLCJGb3JtQ29udHJvbCIsIkZvcm1Db250cm9sTGFiZWwiLCJGb3JtR3JvdXAiLCJGb3JtSGVscGVyVGV4dCIsIkZvcm1MYWJlbCIsImdldExhYmVsIiwidG9TbHVnIiwiQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCIsIl9xdWVzdGlvbiR2YWx1ZXMiLCJxdWVzdGlvbiIsInF1ZXN0aW9uQ2xhc3NOYW1lIiwiaXNEaXNhYmxlZCIsIm9uQ2hhbmdlIiwic2V0RmllbGRWYWx1ZSIsImhlbHBlclRleHQiLCJyZXN0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwicXVlc3Rpb25TbHVnIiwicXVlc3Rpb25MYWJlbCIsIm1hbmRhdG9yeSIsInF1ZXN0aW9uTWF4VmFsdWVzIiwibWF4X3NlbGVjdGVkX3ZhbHVlcyIsInF1ZXN0aW9uT3B0aW9ucyIsInZhbHVlcyIsInZhbCIsImxhYmVsIiwidG9TdHJpbmciLCJoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UiLCJjaGVja2VkIiwiY3VycmVudEFucyIsIm1heFNlbGVjdGlvblJlYWNoZWQiLCJuZXdWYWx1ZSIsInYiLCJkaXNhYmxlZCIsInJlcXVpcmVkIiwiZnVsbFdpZHRoIiwibWFyZ2luIiwib3AiLCJjb250cm9sIiwiaW5jbHVkZXMiLCJldiIsInRhcmdldCIsIm9iamVjdCIsImFycmF5IiwiUmF3SFRNTCIsIkNoZWNrYm94UXVlc3Rpb25GaWVsZCIsImFsaWduSXRlbXMiLCJtYXJnaW5Ub3AiLCJJbnB1dExhYmVsIiwiTWVudUl0ZW0iLCJTZWxlY3QiLCJEcm9wZG93blF1ZXN0aW9uRmllbGQiLCJsYWJlbElkIiwiUmFkaW8iLCJSYWRpb0dyb3VwIiwiUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCIsIlRleHRGaWVsZCIsIlRleHRRdWVzdGlvbkZpZWxkIiwiUXVlc3Rpb25UeXBlX0NoZWNrYm94IiwiUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCIsIlF1ZXN0aW9uVHlwZV9Db21ib0JveCIsIlF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3giLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0IiwiY2hlY2tSdWxlIiwicnVsZSIsImFuc3dlcl92YWx1ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJhbnN3ZXJfdmFsdWVzX29wZXJhdG9yIiwiY2hlY2tWaXNpYmlsaXR5IiwicnVsZVJlc3VsdCIsInZpc2liaWxpdHkiLCJ2aXNpYmlsaXR5X2NvbmRpdGlvbiIsInF1ZXN0aW9uSWQiLCJ0ZXh0TEMiLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJxIiwiX3EkbGFiZWwiLCJpc0Fuc3dlcmVkIiwiYW5zd2VyIiwiY2hlY2tJZlZhbHVlTWF0Y2giLCJjb21wYXJlVmFsIiwiYW5zd2VyQXJyYXkiLCJzb21lIiwiZ2V0VHlwZUluaXRpYWxWYWx1ZSIsInR5cGUiLCJnZXRUeXBlVmFsdWUiLCJhbnMiLCJzcGxpdCIsInRyYW5zZm9ybUFud2Vyc0Zvcm1hdCIsImRpc2NsYWltZXJfYWNjZXB0ZWQiLCJleHRyYV9xdWVzdGlvbnMiLCJmb3JtYXR0ZWRFUSIsInF1ZXN0aW9uX2lkIiwicGFyc2VJbnQiLCJwb3AiLCJRdWVzdGlvblR5cGVfVGV4dCIsIlF1ZXN0aW9uVHlwZV9UZXh0QXJlYSIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiIsImdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJxdWVzdGlvblR5cGUiLCJGcmFnbWVudCIsIkV4dHJhUXVlc3Rpb25zRmllbGRzIiwicmVhZE9ubHkiLCJhbGxvd0VkaXQiLCJmb3JtaWsiLCJyZW5kZXJSdWxlIiwiaXNWaXNpYmxlIiwicmVuZGVyUXVlc3Rpb24iLCJzdWJfcXVlc3Rpb24iLCJfcSRzdWJfcXVlc3Rpb25fcnVsZXMiLCJRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwiZm9ybWlrUHJvcHMiLCJoYW5kbGVDaGFuZ2UiLCJvbkJsdXIiLCJoYW5kbGVCbHVyIiwidG91Y2hlZCIsIkJvb2xlYW4iLCJzdWJfcXVlc3Rpb25fcnVsZXMiLCJ1c2VTZWxlY3RvciIsInNoYWxsb3dFcXVhbCIsIkJveCIsIkNhcmRIZWFkZXIiLCJJY29uQnV0dG9uIiwiQ29sbGFwc2UiLCJDYXJkQ29udGVudCIsIkV4cGFuZE1vcmVJY29uIiwiQXNzaWduZWRGaWx0ZXIiLCJvbkZpbHRlciIsImZpbHRlclZhbHVlcyIsInN0YXRlIiwiaXNFeHBhbmRlZCIsInNldElzRXhwYW5kZWQiLCJhc3NpZ25lZFZhbHVlcyIsImhhbmRsZUZpbHRlckNoYW5nZSIsIm5ld0ZpbHRlciIsInRpdGxlV3JhcHBlciIsImFjdGlvbiIsImRpc2FibGVSaXBwbGUiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2l0aW9uIiwiaW4iLCJ0aW1lb3V0IiwidW5tb3VudE9uRXhpdCIsInB5IiwicGIiLCJhc3NpZ25lZCIsInVzZUVmZmVjdCIsIkJhZGdlRmVhdHVyZUZpbHRlciIsImJhZGdlX2ZlYXR1cmVzX3R5cGVzIiwibmV3RmlsdGVycyIsImYiLCJiZiIsInVzZVJlZiIsIlN0YWNrIiwiRmlsdGVyTGlzdEljb24iLCJCYWRnZSIsIkNhcmQiLCJEaXZpZGVyIiwiUGFwZXIiLCJjb25uZWN0IiwiVGlja2V0VHlwZUZpbHRlciIsIlN0YXR1c0ZpbHRlciIsIkZyZWVQYWlkRmlsdGVyIiwiUHJvbW9Db2RlRmlsdGVyIiwiRmlsdGVyIiwib25SZXNldCIsImFjdGl2ZUZpbHRlcnNDb3VudCIsInNob3dGaWx0ZXJMaXN0Iiwic2V0U2hvd0ZpbHRlckxpc3QiLCJzaG93RGF0ZXBpY2tlciIsInNldFNob3dEYXRlcGlja2VyIiwiZmlsdGVyUmVmIiwiaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlIiwiZXZlbnQiLCJjdXJyZW50IiwiY29udGFpbnMiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInRvZ2dsZSIsImhhbmRsZUZpbHRlclJlc2V0IiwiZmlsdGVyQ29udGFpbmVyIiwicmVmIiwicHQiLCJiYWRnZUNvbnRlbnQiLCJtciIsImZpbHRlckljb24iLCJmaWx0ZXJMYWJlbCIsImZpbHRlckxpc3RDb250YWluZXIiLCJjb250YWluZXIiLCJlbGV2YXRpb24iLCJmaWx0ZXJDaGVja2JveENvbnRhaW5lciIsImNsZWFuQnV0dG9uIiwibWFwU3RhdGVUb1Byb3BzIiwicHJvbW9Db2RlIiwic2V0UHJvbW9Db2RlIiwiZGVib3VuY2VUaW1lciIsIkRFQk9VTkNFX1ZBTFVFIiwibmV3UHJvbW9Db2RlIiwiY2xlYXJUaW1lb3V0IiwicGxhY2Vob2xkZXIiLCJzdHlsZWQiLCJTZWFyY2hJY29uIiwiQ2xvc2VJY29uIiwiSW5wdXRCYXNlIiwiU2VhcmNoQ29udGFpbmVyIiwicG9zaXRpb24iLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJkaXNwbGF5IiwiU2VhcmNoSWNvbldyYXBwZXIiLCJoZWlnaHQiLCJqdXN0aWZ5Q29udGVudCIsIlN0eWxlZElucHV0QmFzZSIsImJvcmRlckJvdHRvbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiQ2xvc2VJY29uV3JhcHBlciIsInBhZGRpbmciLCJ0b3AiLCJyaWdodCIsImN1cnNvciIsInpJbmRleCIsIlNlYXJjaCIsIm9uU2VhcmNoIiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsInNob3dDbG9zZUJ0biIsIm9uS2V5RG93biIsIm5hdGl2ZUV2ZW50IiwicmVzZXRTZWFyY2giLCJpbnB1dFByb3BzIiwiSW1wb3J0RXhwb3J0SWNvbiIsIlNvcnQiLCJvblNvcnQiLCJzaG93U29ydCIsInNldFNob3dTb3J0Iiwic29ydFJlZiIsImhhbmRsZVNvcnRDbGlja091dHNpZGUiLCJzb3J0Q29udGFpbmVyIiwic29ydEljb24iLCJzb3J0TGFiZWwiLCJzb3J0TGlzdENvbnRhaW5lciIsInRpY2tldF90eXBlcyIsIkdyaWQiLCJGaWx0ZXJzIiwianVzdGlmeSIsIml0ZW0iLCJ4cyIsImdhcCIsImZpbHRlclNvcnRDb250YWluZXIiLCJGb3JtRm9vdGVyIiwic2F2ZUxhYmVsIiwiY2FuY2VsTGFiZWwiLCJmb290ZXIiLCJjYW5jZWxCdG4iLCJzaXplIiwic2F2ZUJ0biIsIkVycm9yTGFiZWwiLCJkYXRhVGVzdElkIiwiZXJyb3JMYWJlbCIsIkJhY2tkcm9wIiwiQ2lyY3VsYXJQcm9ncmVzcyIsIkxvYWRlciIsImRyYXdlciIsIkluZmluaXRlU2Nyb2xsIiwiT3JkZXJzTGlzdCIsIk9ORV9QQUdFX05FWFQiLCJNeU9yZGVyc1RpY2tldHMiLCJmZXRjaERhdGEiLCJtZW1iZXJPcmRlcnMiLCJvcmRlcnNfY3VycmVudF9wYWdlIiwib3JkZXJzX2xhc3RfcGFnZSIsIm15T3JkZXJzV3JhcHBlciIsImRhdGFMZW5ndGgiLCJuZXh0IiwiaGFzTW9yZSIsInNjcm9sbFRocmVzaG9sZCIsIlRpY2tldHNJY29uIiwidmlld0JveCIsImZpbGwiLCJ4bWxucyIsImQiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VEYXNoYXJyYXkiLCJUQUJTIiwiX0ZyYWdtZW50IiwiTm9UaWNrZXRzRm91bmQiLCJwYWdlVmlldyIsImxvYWRpbmciLCJnZXRDb250ZW50IiwibWFpbHRvVGFnIiwic3VwcG9ydF9lbWFpbCIsImJ1dHRvbkxhYmVsIiwiVElDS0VUUyIsImljb25XcmFwcGVyIiwiY2FsY3VsYXRlT3JkZXJUb3RhbHMiLCJmb3JtYXRDdXJyZW5jeSIsIk9yZGVyU3VtbWFyeVRhYmxlIiwiZGlzY291bnRUb3RhbCIsInJlZnVuZFRvdGFsIiwiYW1vdW50VG90YWwiLCJzdWJUb3RhbCIsInRpY2tldFN1bW1hcnkiLCJ0YXhlc1N1bW1hcnkiLCJodW5kcmVkIiwib3JkZXJTdW1tYXJ5VGFibGUiLCJ0aWNrZXRUb3RhbCIsInF0eSIsInRpY2tldF90eXBlIiwiY29zdCIsImFsaWduIiwiY3VycmVuY3kiLCJjcmVhdGVkIiwidGF4ZXNfYW1vdW50IiwidGF4IiwiYW1vdW50IiwiZGlzY291bnRfYW1vdW50Iiwic2hhcGUiLCJ1c2VOb3ciLCJ0aWNrZXRzUmVmdW5kYWJsZSIsInVzZVN1bW1pdERldGFpbHMiLCJSZWZ1bmRFbWFpbFN1cHBvcnQiLCJzdWJtaXRSZXF1ZXN0Iiwib25SZWZ1bmRDbGljayIsIm9uUmVmdW5kRGV0YWlsQ2xpY2siLCJpc1N0YXJ0ZWQiLCJub3ciLCJpc0luUmVmdW5kYWJsZVBlcmlvZCIsInJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSIsImF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0IiwiaXNSZWZ1bmRhYmxlIiwiaGFzUmVmdW5kUmVxdWVzdHMiLCJyb2xlIiwib3JkZXJTdW1tYXJ5QnV0dG9uIiwicmVmdW5kRGlzYWJsZWQiLCJyZWwiLCJhcnJheU9mIiwiT3JkZXJTdW1tYXJ5Iiwib3JkZXJTdW1tYXJ5V3JhcHBlciIsInB4Iiwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mbyIsIm1lbWJlclRpY2tldHMiLCJPcmRlckxpc3RUaWNrZXRzIiwiQXNzaWduVG9NZSIsInVzZXJUaWNrZXRzIiwidXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSIsInVzZXJfdGlja2V0c19sYXN0X3BhZ2UiLCJvcmRlclRpY2tldENvbnRhaW5lciIsImFzc2lnbmVkVG9NZVdyYXBwZXIiLCJ0aWNrZXRMaXN0Q29udGFpbmVyIiwiaXNSZWZ1bmRNb2RhbCIsImlzU2VsZWN0ZWRUb1JlZnVuZCIsInNlbGVjdFRvUmVmdW5kIiwiaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0IiwiQXNzaWduZWRUbyIsIkV4dGVybmFsQXNzaWduZWRUbyIsIk1hbmFnZUZvciIsIkF0dGVuZGVlU3RhdHVzIiwiX3RpY2tldCRvd25lciIsIl90aWNrZXQkb3duZXIyIiwiX3RpY2tldCRvd25lcjMiLCJpc1VuYXNzaWduZWQiLCJpc19hY3RpdmUiLCJpc0RlbGVnYXRlZCIsInRpY2tldE93bmVyRW1haWwiLCJfdGlja2V0JG9yZGVyIiwiX3RpY2tldCRvcmRlcjIiLCJfdGlja2V0JG93bmVyNCIsIl90aWNrZXQkb3duZXI1IiwiYXNzaWduZWRCeVRleHQiLCJvd25lcl9maXJzdF9uYW1lIiwib3duZXJfbGFzdF9uYW1lIiwiT05FX1JFVFJZIiwiQmFkZ2VGZWF0dXJlSW1hZ2UiLCJzcmMiLCJhbHQiLCJtYXhSZXRyaWVzIiwiY3VycmVudFNyYyIsInNldEN1cnJlbnRTcmMiLCJyZXRyeUNvdW50Iiwic2V0UmV0cnlDb3VudCIsImhhc0Vycm9yIiwic2V0SGFzRXJyb3IiLCJoYW5kbGVFcnJvciIsIkRhdGUiLCJvbkVycm9yIiwiUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIiwiT3JkZXJMaXN0SXRlbSIsIl9vcmRlciRtZW1iZXJUaWNrZXRzIiwiX29yZGVyJG1lbWJlclRpY2tldHMyIiwib25QYWdpbmF0ZUNsaWNrIiwidGlja2V0c1RvUmVmdW5kIiwiaXRlbXNUb0Rpc3BsYXkiLCJzZXRJdGVtc1RvRGlzcGxheSIsInRpY2tldHNfdG90YWwiLCJzbGljZWRUaWNrZXRzIiwic2xpY2UiLCJvblZpZXdNb3JlIiwib25WaWV3TGVzcyIsImZpbmQiLCJ2aWV3TW9yZUJ1dHRvbiIsInVzZURpc3BhdGNoIiwiVGlja2V0U3RhdHVzIiwiZ2V0U3VtbWl0UmVhc3NpZ25EYXRlIiwiVGlja2V0RGV0YWlsIiwidXNlVGlja2V0RGV0YWlscyIsIlRpY2tldEFzc2lnbiIsIm1vZGFsVmlld3MiLCJkZXRhaWwiLCJyZWFzc2lnbiIsImFzc2lnbiIsIlRpY2tldENUQXMiLCJpc0luY29tcGxldGUiLCJpc1JlYXNzaWduYWJsZSIsIm9uT3BlbkNsaWNrIiwiYXNzaWduVGlja2V0QnV0dG9uIiwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbiIsInJlYXNzaWduQnV0dG9uIiwiX3RpY2tldCR0aWNrZXRfdHlwZSIsIl90aWNrZXQkYmFkZ2UiLCJjYW5SZWFzc2lnbiIsIm1vZGFsT3BlbiIsInNldE1vZGFsT3BlbiIsInJlYXNzaWduRGF0ZSIsIm9uUmVhc3NpZ25hYmxlUGVyaW9kIiwiaGFuZGxlQ2xvc2VNb2RhbCIsImhhbmRsZU9wZW5Nb2RhbCIsInZpZXciLCJvcmRlcldyYXBwZXIiLCJyZWZ1bmRNb2RhbCIsImRpc2FibGVkUmVmdW5kIiwic2VsZWN0ZWQiLCJjaGVja2JveCIsInBsIiwidGlja2V0VGlja2V0VHlwZSIsImJmRmVhdHVyZVdyYXBwZXIiLCJwciIsImJhZGdlIiwiZmVhdHVyZXMiLCJiZkZlYXR1cmUiLCJpbWFnZSIsInRpY2tldE5vIiwidGlja2V0Rm9vdGVyIiwidGlja2V0QWN0aW9uQnV0dG9ucyIsIm93bmVySWQiLCJ0b3RhbF9yZWZ1bmRlZF9hbW91bnQiLCJUYWJzIiwiVGFiIiwiUmVmdW5kUmVxdWVzdHNNb2RhbCIsIlJlZnVuZERldGFpbHMiLCJUYWJQYW5lbCIsInByb3BzIiwiaW5kZXgiLCJoaWRkZW4iLCJPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSIsImlzTW9iaWxlIiwiZGV0YWlsc1JlcXVpcmVkIiwic2V0VmFsdWUiLCJfIiwic2V0VGlja2V0c1RvUmVmdW5kIiwic2V0U3VibWl0UmVxdWVzdCIsInJlZnVuZERldGFpbHNPcGVuIiwic2V0UmVmdW5kRGV0YWlsc09wZW4iLCJ1bnNlbGVjdFJlZnVuZFRpY2tldHMiLCJmaWx0ZXJTZWxlY3RlZCIsInNlbGVjdGVkVGlja2V0IiwiY2xvc2VTdWJtaXRSZXF1ZXN0IiwicmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyIsIm1vcmVEZXRhaWxzIiwiYm9yZGVyQ29sb3IiLCJ0YWJCdXR0b25zIiwib25SZWZ1bmRTdWNjZXNzQ2xvc2UiLCJvbkNsb3NlU2xpZGVyIiwibWQiLCJ1c2VUaGVtZSIsInVzZU1lZGlhUXVlcnkiLCJnZXRGb3JtYXR0ZWREYXRlIiwidGlja2V0X3Blcl9wYWdlIiwiYnJlYWtwb2ludHMiLCJkb3duIiwiaXNNb2JpbGVWaWV3YWJsZSIsInNldE1vYmlsZVZpZXdhYmxlIiwidGlja2V0c19wYWdlX2N1cnJlbnQiLCJsZyIsIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lciIsIm9yZGVyVGlja2V0SW5mbyIsInJvd1NwYWNpbmciLCJjb2x1bW5TcGFjaW5nIiwic20iLCJkaXNwbGF5X25vbmUiLCJmbGV4RGlyZWN0aW9uIiwidXNlTWVtbyIsIlJpZ2h0RHJhd2VyIiwiUmVmdW5kUmVxdWVzdGVkVGlja2V0IiwiZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyIsInJlcXVlc3RlZFRpY2tldHMiLCJjbG9zZVNsaWRlciIsInJlZnVuZERldGFpbHMiLCJ0b29sdGlwQ2xhc3NlcyIsIkluZm9JY29uIiwibW9tZW50IiwiUmVmdW5kU3RhdHVzIiwiR1JJRF84IiwiR1JJRF8xMiIsIlBBRERJTkdfMiIsImFwcHJvdmVkUmVmdW5kcyIsInJlZnVuZCIsInJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkiLCJyZWZ1bmRlZF90YXhlcyIsInJ0IiwidGF4SWQiLCJ0b3RhbFJlZnVuZGVkVGF4QW1vdW50IiwicmVmdW5kZWRfYW1vdW50IiwiSHRtbFRvb2x0aXAiLCJjbGFzc2VzIiwicG9wcGVyIiwibWF4V2lkdGgiLCJib3JkZXIiLCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXIiLCJyZWZ1bmREZXRhaWwiLCJiYWRnZUZlYXR1cmVXcmFwcGVyIiwiYmFkZ2VGZWF0dXJlIiwicmVmdW5kVGlja2V0QXR0ZW5kZWUiLCJhY3Rpb25fZGF0ZSIsImZvcm1hdCIsIkNoaXAiLCJnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciIsInN0YXR1c0NvbG9yIiwiYnV0dG9uUGlsbCIsIlN0eWxlZEVuZ2luZVByb3ZpZGVyIiwiU1RFUF9PTkUiLCJTVEVQX1RIUkVFIiwiU1RFUF9UV08iLCJzdGVwIiwic2V0U3RlcCIsImVycm9yTXNnIiwic2V0RXJyb3JNc2ciLCJyZWZ1bmRTdWNjZXNzIiwic2V0UmVmdW5kU3VjY2VzcyIsImNvbmZpcm1SZWZ1bmQiLCJnb0JhY2tUb1JlZnVuZCIsInJlZnVuZFRpY2tldHMiLCJyZWZ1bmRTdGVwT25lIiwic3VidGl0bGUiLCJ0aWNrZXRMaXN0IiwiYWN0aW9uQnV0dG9ucyIsImNhbmNlbEJ1dHRvbiIsImNvbnRpbnVlQnV0dG9uIiwicmVmdW5kU3RlcFR3byIsInJlZnVuZEVycm9yTXNnIiwiQ1RBQnV0dG9uV3JhcHBlciIsInJlZnVuZFN0ZXBUaHJlZSIsInJlZnVuZFN1Y2Nlc3NmdWwiLCJzdWNjZXNzTXNnIiwic3VjY2Vzc01zZzIiLCJyZW5kZXJTdGVwcyIsImluamVjdEZpcnN0IiwiRHJhd2VyIiwiQ2xvc2UiLCJoZWFkZXJDaGlsZHJlbiIsImFuY2hvciIsIk1vZGFsUHJvcHMiLCJrZWVwTW91bnRlZCIsImhlYWRlciIsImNsb3NlQnRuIiwiZmxvYXQiLCJndXR0ZXJCb3R0b20iLCJvbmVPZlR5cGUiLCJnZXRTdW1taXRGb3JtYXR0ZWREYXRlIiwiU3VtbWl0SGVhZGVyIiwid2lkZ2V0SGVhZGVyIiwic3VtbWl0VGl0bGVEYXRlIiwiVGFiV3JhcHBlciIsInRhYiIsInNldFRhYiIsImhhc1RpY2tldHMiLCJpc0ZpbHRlcmVkIiwiY2xlYXJGaWx0ZXJzIiwiZ2V0UGFnZVZpZXciLCJnZXRPbkNsaWNrIiwidGFiVG9MaW5rIiwiTGluayIsIlJlYXNzaWduRm9ybSIsIkRlbGVnYXRlRm9ybSIsIkFzc2lnbk9wdGlvbnMiLCJhc3NpZ25PcHRpb24iLCJzZXRBc3NpZ25PcHRpb24iLCJvbkFzc2lnbiIsIm9uRGVsZWdhdGUiLCJvblVuQXNzaWduIiwib3BlbkNvbmZpcm1VbmFzc2lnbiIsInNldE9wZW5Db25maXJtVW5hc3NpZ24iLCJpc0Fzc2lnbmVkVG9NZSIsImFsbG93c0RlbGVnYXRlIiwiaGFuZGxlVW5Bc3NpZ24iLCJteSIsIm9uU3VibWl0IiwibmV3X2F0dGVuZGVlX2VtYWlsIiwicGVyc29uYWxfbWVzc2FnZSIsImRlbGVnYXRlX2ZpcnN0X25hbWUiLCJkZWxlZ2F0ZV9sYXN0X25hbWUiLCJkZWxlZ2F0ZV9lbWFpbCIsInVuYXNzaWduV3JhcHBlciIsImNvbXBvbmVudCIsInRleHREZWNvcmF0aW9uIiwidGV4dERlY29yYXRpb25Db2xvciIsInVzZUZvcm1payIsInl1cCIsImluaXRpYWxWYWx1ZXMiLCJ2YWxpZGF0aW9uU2NoZW1hIiwicmVzZXRGb3JtIiwiaGFuZGxlQ2FuY2VsIiwiaGFuZGxlU3VibWl0Iiwibm9WYWxpZGF0ZSIsImlzU3VibWl0dGluZyIsIkFzc2lnbkhlYWRlciIsImluUHJvZ3Jlc3MiLCJ1c2VyRW1haWwiLCJhc3NpZ25lZFRvWW91IiwiZ2V0U2Vjb25kYXJ5VGl0bGUiLCJnZXRIZWFkZXJOb3RlIiwidHJhbnNLZXkiLCJwdXJjaGFzZWRCeVdyYXBwZXIiLCJwdXJjaGFzZWRCeSIsIm93bmVyX2VtYWlsIiwib3JkZXJObyIsImhlYWRlck5vdGUiLCJSZWFzc2lnbkhlYWRlciIsIm11bHRpbGluZSIsIm1pblJvd3MiLCJ1c2VDb250ZXh0IiwiVGlja2V0Rm9ybSIsInVzZUdldFRpY2tldCIsIlRJQ0tFVF9EUkFXRVJfSUQiLCJzdWNjZXNzTWVzc2FnZSIsImVycm9yTWVzc2FnZSIsImFzc2lnbmF0aW9uSW5Qcm9ncmVzcyIsInNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyIsImlzVXNlck9yZGVyT3duZXIiLCJvd25lcl9pZCIsImlzVXNlclRpY2tldE93bmVyIiwiY2FuRWRpdFRpY2tldERhdGEiLCJhbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zIiwib25DbG9zZUVRRm9ybSIsIm9uU2F2ZUVRIiwicmVzb2x2ZSIsIkhlYWRlciIsInRpY2tldFJlYXNzaWduQ29udGFpbmVyIiwiY2FuRWRpdCIsIkF1dG9jb21wbGV0ZSIsInF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzIiwiQ29tcGFueUZpZWxkIiwic3VtbWl0SWQiLCJpbnB1dFZhbHVlIiwic2V0SW5wdXRWYWx1ZSIsIm9wdGlvbnMiLCJzZXRPcHRpb25zIiwic2V0RmllbGRUb3VjaGVkIiwicmVzdWx0cyIsIm5ld09wdGlvbnMiLCJhdXRvQ29tcGxldGUiLCJmcmVlU29sbyIsImluY2x1ZGVJbnB1dEluTGlzdCIsImZpbHRlclNlbGVjdGVkT3B0aW9ucyIsImdldE9wdGlvbkxhYmVsIiwib3B0aW9uIiwidG1wVmFsdWUiLCJvbklucHV0Q2hhbmdlIiwibmV3SW5wdXRWYWx1ZSIsImZpbHRlck9wdGlvbnMiLCJmaWx0ZXJlZCIsImlzRXhpc3RpbmciLCJyZW5kZXJJbnB1dCIsInJlbmRlck9wdGlvbiIsIm9wdGlvblByb3BzIiwiUmVnaXN0cmF0aW9uRGlzY2xhaW1lciIsImRpc2NsYWltZXIiLCJRUkNvZGUiLCJFbWFpbE91dGxpbmVkIiwiRW1haWxJY29uIiwiRmlsZURvd25sb2FkT3V0bGluZWQiLCJEb3dubG9hZEljb24iLCJUV09fSVRFTSIsIlRpY2tldERldGFpbEhlYWRlciIsImlzVmlydHVhbFN1bW1pdCIsImlzQ29tcGxldGUiLCJzZW50Q29uZmlybWF0aW9uIiwic2V0U2VudENvbmZpcm1hdGlvbiIsImRvd25sb2FkVGlja2V0UGRmIiwib25TZW5kRW1haWwiLCJxckNvZGUiLCJxcl9jb2RlIiwicXJOb3RlIiwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lciIsImRvd25sb2FkQnRuIiwic2VuZEJ0biIsInNlbnQiLCJvcmRlck51bWJlciIsIlRpY2tldE93bmVyRmllbGRzIiwidXNlU2Nyb2xsVG9FcnJvciIsInBhcnNlQW5zd2VycyIsImJ1aWxkVmFsaWRhdGlvblNjaGVtYSIsInJlZHVjZSIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeSIsInJlbGV2YW50QW5zd2VycyIsImVuYWJsZVJlaW5pdGlhbGl6ZSIsImFkZGl0aW9uYWxEZXRhaWxzIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudCIsImluZm9Ob3RlIiwib25TYXZlIiwidGlja2V0RGV0YWlsQ29udGFpbmVyIiwiaXNfdmlydHVhbCIsImF0dGVuZGVlQ29udGFpbmVyIiwiYXR0ZW5kZWVJbmZvVGl0bGUiLCJDb250YWluZXIiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMiLCJpc0FjdGl2ZSIsInJlZnVuZFJlcXVlc3RzIiwidGlja2V0U3RhdHVzQ29udGFpbmVyIiwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkIiwiYnV0dG9uSW5jb21wbGV0ZSIsImJ1dHRvblVuYXNzaWduZWQiLCJidXR0b25Db21wbGV0ZSIsImJ1dHRvbkNhbmNlbGxlZCIsIkFzc2lnbmVkVG9NZSIsIldpZGdldFRhYnMiLCJ0aWNrZXRzRnVsbHlMb2FkZWQiLCJzZXRUaWNrZXRzRnVsbHlMb2FkZWQiLCJvcmRlcnNfcGVyX3BhZ2UiLCJvcmRlcnNQZXJQYWdlIiwidGlja2V0UGVyUGFnZSIsImhhbmRsZVRhYkNoYW5nZSIsIm5ld1RhYiIsImZldGNoQXNzaWduZWRUaWNrZXRzIiwiZmV0Y2hPcmRlclRpY2tldHMiLCJvcmRlclRpY2tldHNQcm9taXNlcyIsImN1cnJlbnRfcGFnZSIsImZldGNoUHJvbWlzZXMiLCJ0YWJXcmFwcGVyIiwiV2lkZ2V0V3JhcHBlciIsIm1zZ0RhdGEiLCJzZXRNc2dEYXRhIiwibWVzc2FnZUNvbnRleHQiLCJmaWx0ZXJWYWx1ZSIsInNvcnRWYWx1ZSIsInRpY2tldHNUaXRsZVRleHQiLCJQcm92aWRlciIsInJ1biIsImN1cnJlbnRUaWNrZXQiLCJzbW9vdGhTY3JvbGxUbyIsInRhcmdldFNjcm9sbFRvcCIsImR1cmF0aW9uIiwic3RhcnRTY3JvbGxUb3AiLCJzY3JvbGxUb3AiLCJkaXN0YW5jZSIsInN0YXJ0VGltZSIsImFuaW1hdGlvblN0ZXAiLCJ0aW1lc3RhbXAiLCJlbGFwc2VkIiwicHJvZ3Jlc3MiLCJNYXRoIiwibWluIiwiZWFzZUluT3V0UXVhZCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImlzVmFsaWQiLCJlcnJvckFycmF5IiwiZXJyb3JDb3VudCIsImVsZW1lbnRzU29ydGVkIiwicmVzdWx0IiwiZWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJlbFJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJhIiwiYiIsImdldEVsZW1lbnRCeUlkIiwiY29udGFpbmVyUmVjdCIsImVsZW1PZmZlc3QiLCJhbmltYXRpb25EdXJhdGlvbiIsImlzVGlja2V0UmVmdW5kYWJsZSIsIlNUQVRVU19DT01QTEVURSIsIlNUQVRVU19JTkNPTVBMRVRFIiwiU1RBVFVTX0NBTkNFTExFRCIsIlNUQVRVU19VTkFTU0lHTkVEIiwiX3RpY2tldCRwcm9tb19jb2RlIiwiX3RpY2tldCR0aWNrZXRfdHlwZTIiLCJfdGlja2V0JHByb21vX2NvZGUyIiwiZ2V0U3RhdHVzIiwiYWxsb3dzX3RvX2RlbGVnYXRlIiwicHJvbW9fY29kZSIsImFsbG93c190b19yZWFzc2lnbiIsImluaXRSZWFjdEkxOG5leHQiLCJMYW5ndWFnZURldGVjdG9yIiwiZW4iLCJlcyIsInVzZSIsImluaXQiLCJmYWxsYmFja0xuZyIsImRlYnVnIiwicmVzb3VyY2VzIiwidHJhbnNsYXRpb24iLCJpbnRlcnBvbGF0aW9uIiwiZXNjYXBlVmFsdWUiLCJMT0dPVVRfVVNFUiIsIlNUQVJUX0xPQURJTkciLCJTVE9QX0xPQURJTkciLCJSRVNFVF9MT0FESU5HIiwiY2FsY3VsYXRlQWN0aXZlRmlsdGVycyIsImhhc0xvYWRlZEFsbERhdGEiLCJ1cGRhdGVUaWNrZXRDb2xsZWN0aW9uIiwiREVGQVVMVF9GSUxURVJfU1RBVEUiLCJERUZBVUxUX1NUQVRFIiwid2lkZ2V0TG9hZGluZyIsImN1cnJlbnRfdGFiIiwib3JkZXJzX3RvdGFsIiwidGlja2V0X2N1cnJlbnRfcGFnZSIsInRpY2tldF9sYXN0X3BhZ2UiLCJ0aWNrZXRfdG90YWwiLCJ1c2VyX3RpY2tldHNfdG90YWwiLCJhcGlFcnJvciIsIldpZGdldFJlZHVjZXIiLCJuZXdBY3RpdmVDb3VudCIsInRvdGFsIiwibGFzdF9wYWdlIiwiZm9ybWVyT3JkZXIiLCJvIiwiX2RhdGEkIiwibmV3T3JkZXJzIiwibW8iLCJfZGF0YSQyIiwibmV3VGlja2V0cyIsInRpY2tldHNfcGFnZV9sYXN0IiwiX3RpY2tldHNSZWZ1bmRSZXF1ZXN0IiwidXBkYXRlZFRpY2tldHMiLCJ0cnIiLCJ1cGRhdGVkT3JkZXIiLCJ0aWNrZXREYXRhIiwibmV3VXNlclRpY2tldHMiLCJjb25maWd1cmVTdG9yZSIsInBlcnNpc3RTdG9yZSIsInBlcnNpc3RSZWR1Y2VyIiwiRkxVU0giLCJSRUhZRFJBVEUiLCJQQVVTRSIsIlBFUlNJU1QiLCJQVVJHRSIsIlJFR0lTVEVSIiwic3RvcmFnZSIsImNvbWJpbmVSZWR1Y2VycyIsImdldFN0b3JlIiwiY2xpZW50SWQiLCJsb2dpblVybCIsInJlZHVjZXJzIiwic3RvcmUiLCJyZWR1Y2VyIiwibWlkZGxld2FyZSIsImdldERlZmF1bHRNaWRkbGV3YXJlIiwidGh1bmsiLCJleHRyYUFyZ3VtZW50IiwiaW1tdXRhYmxlQ2hlY2siLCJzZXJpYWxpemFibGVDaGVjayIsImlnbm9yZWRBY3Rpb25zIiwidXNlSW5pdFN0b3JlIiwiY29uZmlnIiwicGVyc2lzdG9yIiwiaW5pdExvZ091dCIsImdldEFjY2Vzc1Rva2VuIiwiU2VudHJ5IiwiZ2V0QWNjZXNzVG9rZW5Nb2NrIiwiRXJyb3IiLCJjYXB0dXJlRXhjZXB0aW9uIiwiTEFTVF9IT1VSX09GXzI0X0hPVVIiLCJMQVNUX01JTlVURV9PRl9IT1VSIiwiT05FX0RBWSIsIk1JTl9SRVFVSVJFRCIsIlNUQVRVU19QRU5ESU5HIiwiU1RBVFVTX0VSUk9SIiwiU1RBVFVTX1BST0NFU1NJTkciLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkciLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRCIsIlNUQVRVU19SRUZVTkRfUEVORElOR19MQyIsIlNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMiLCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDIiwiSkVTVF9USU1FT1VUX0lOX01JTExJU0VDIiwiT05FX0lURU0iLCJGSVZFX0lURU0iLCJTSVhfSVRFTSIsImxvY2FsZSIsImRlZmF1bHRPcHRpb25zIiwibWluaW11bUZyYWN0aW9uRGlnaXRzIiwibWF4aW11bUZyYWN0aW9uRGlnaXRzIiwiZm9ybWF0dGVyIiwiSW50bCIsIk51bWJlckZvcm1hdCIsImRhdGV0aW1lIiwidGltZVpvbmUiLCJ0eiIsInVuaXgiLCJyYXdfYW1vdW50IiwiY3VycmVuY3lPYmplY3QiLCJwdXJjaGFzZVRpY2tldFRvdGFsIiwidGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlIiwidGlja2V0VHlwZSIsInR0IiwidGlja2V0X3R5cGVfaWQiLCJhcHBsaWVkX3RheGVzIiwiZm9ybWF0dGVkVGF4IiwicHVyY2hhc2VUb3RhbCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImdldE9yZGVyVGlja2V0cyIsIl9vcmRlcnMkIiwib3JkZXJzIiwiZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIiwidHMiLCJzZXRIb3VycyIsImRlZmF1bHRDdXJyZW50VGltZSIsInJvdW5kIiwiZ2V0Tm93IiwidGltZXJTdGF0ZSIsIm5vd1V0YyIsImN1cnJlbnRQYWdlIiwiY291bnQiLCJ0cmltIiwiY2hlY2tTdW1taXRQYXN0IiwicmVhc3NpZ25fZGF0ZSIsInJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUiLCJlbmRfZGF0ZSIsImNoZWNrU3VtbWl0U3RhcnRlZCIsInN0YXJ0X2RhdGUiLCJnZXRTdW1taXREYXlzRGlmZiIsInN0YXJ0RGF5IiwidGltZV96b25lX2lkIiwiZW5kRGF5IiwiZGF5cyIsImRpZmYiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImdldFN1bW1pdExvY2F0aW9uIiwiX3N1bW1pdCRsb2NhdGlvbnMiLCJsb2NhdGlvbiIsImxvY2F0aW9ucyIsImwiLCJjbGFzc19uYW1lIiwiaXNfbWFpbiIsImNpdHkiLCJjb3VudHJ5IiwiX3N1bW1pdCR0aW1lX3pvbmUiLCJfc3VtbWl0JHRpbWVfem9uZTIiLCJmb3JtYXR0ZWREYXRlIiwiZm9ybWF0dGVkUmVhc3NpZ25EYXRlIiwidGltZV96b25lIiwiZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSIsImlzUGFzdCIsInN0YXR1c0RhdGEiLCJnZXRUaWNrZXRTdGF0dXNLZXkiLCJnZXRUaWNrZXRTdGF0dXNEYXRhIiwiaXNTdW1taXRQYXN0IiwiZ2V0VGlja2V0Um9sZSIsImZlYXR1cmUiLCJnZXRUaWNrZXRUeXBlIiwiZmluYWxfYW1vdW50IiwibmV0X3NlbGxpbmdfY29zdCIsInJyIiwiZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzMiIsImFsbFRpY2tldHMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNCIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczUiLCJnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczYiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM3IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzOCIsImdldFR5cGVWYWxpZGF0aW9uIiwic2NoZW1hIiwib25lT2YiLCJvZiIsInBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIiLCJvbmx5UmVsZXZhbnQiLCJzdWJRdWVzdGlvblNsdWciLCJzdWJBbnN3ZXIiLCJtYXRjaCIsImluY2x1ZGVBdHRlbmRlZUluZm8iLCJpbmNsdWRlRGlzY2xhaW1lciIsImJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hIiwiX3N1YlF1ZXN0aW9uJHN1Yl9xdWVzIiwic3ViUXVlc3Rpb24iLCJudWxsYWJsZSIsIndoZW4iLCJpcyIsInF1ZXN0aW9uQW5zIiwiYW5zVmFsdWVNYXRjaCIsInNjaCIsInN1YlJ1bGUiLCJkaXNjbGFpbWVyTWFuZGF0b3J5IiwibGF6eSIsInR5cGVFcnJvciIsIl90JG93bmVyIiwiX3Qkb3duZXIyIiwiX3RpY2tldCRvd25lcjYiLCJ0bXBUaWNrZXQiLCJQZXJzaXN0R2F0ZSIsIk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0Iiwic3VwcG9ydEVtYWlsIiwiaGFuZGxlQmVmb3JlTGlmdCIsIlVSTFNlYXJjaFBhcmFtcyIsInNlYXJjaCIsImZsdXNoIiwiaGFzIiwib25CZWZvcmVMaWZ0Il0sInNvdXJjZVJvb3QiOiIifQ==
10199
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNBO0FBQ0E7QUFDd0Q7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSHhEO0FBQ0E7QUFDQTtBQUNBO0FBQ3dFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSnhFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnSDs7Ozs7Ozs7Ozs7Ozs7O0FDTmhIO0FBQ0E7QUFDMEM7Ozs7Ozs7Ozs7Ozs7OztBQ0YxQztBQUNBO0FBQzBCOzs7Ozs7Ozs7Ozs7Ozs7O0FDRjFCO0FBQ0E7QUFDQTtBQUM0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNINUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDOFg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25COVg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnTTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNSaE07QUFDQTtBQUNBO0FBQ0E7QUFDZ0U7Ozs7Ozs7Ozs7Ozs7OztBQ0poRTtBQUNBO0FBQ21DOzs7Ozs7Ozs7OztBQ0ZuQzs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7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QUU7TUFBQyxDQUNHO0lBQUMsQ0FDWjtFQUFDLENBQ04sQ0FBQztBQUVmLENBQUM7QUFFRCtRLHVCQUF1QixDQUFDL2lDLFNBQVMsR0FBRztFQUNsQ2c1QixRQUFRLEVBQUUzNkIsMERBQWdCO0VBQzFCMmtDLFlBQVksRUFBRTNrQywwREFBZ0I7RUFDOUI3TSxNQUFNLEVBQUU2TSwwREFBZ0I7RUFDeEJoSixVQUFVLEVBQUVnSiwwREFBZ0I7RUFDNUI1TSxJQUFJLEVBQUU0TSwwREFBZ0I7RUFDdEIwNkIsUUFBUSxFQUFFMTZCLDBEQUFnQjtFQUMxQjNFLGFBQWEsRUFBRTJFLHdEQUFjbUQ7QUFDL0IsQ0FBQztBQUVELGlFQUFldWhDLHVCQUF1QixFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvYWN0aW9ucy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db25maXJtRGlhbG9nL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvcHlUZXh0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbU5vdGlmaWNhdGlvbi9Db250ZXh0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbU5vdGlmaWNhdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21UaGVtZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9Ecm9wZG93blF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Bc3NpZ25lZEZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0JhZGdlRmVhdHVyZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0ZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0ZyZWVQYWlkRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvUHJvbW9Db2RlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvU2VhcmNoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvU29ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1N0YXR1c0ZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1RpY2tldFR5cGVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Gb3JtRm9vdGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xhYmVscy9FcnJvckxhYmVsLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xvYWRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTm9UaWNrZXRzRm91bmQvVGlja2V0c0ljb24uanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTm9UaWNrZXRzRm91bmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L09yZGVyU3VtbWFyeVRhYmxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9SZWZ1bmRFbWFpbFN1cHBvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvQXNzaWduZWRUb01lLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvQXR0ZW5kZWVTdGF0dXMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9CYWRnZUZlYXR1cmVJbWFnZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdEl0ZW0uanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFJlcXVlc3RlZFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmRTdGF0dXMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmlnaHREcmF3ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvU3VtbWl0SGVhZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RhYldyYXBwZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvQXNzaWduT3B0aW9ucy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9EZWxlZ2F0ZUZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvSGVhZGVyL0Fzc2lnbkhlYWRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvUmVhc3NpZ25IZWFkZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvUmVhc3NpZ25Gb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9Db21wYW55RmllbGQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldERldGFpbEhlYWRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRUYWJzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFdyYXBwZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZUdldFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlU2Nyb2xsVG9FcnJvci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlVGlja2V0RGV0YWlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaTE4bi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvcmVkdWNlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvc3RvcmUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2F1dGguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3N1bW1pdFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy90aWNrZXRVdGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db3B5VGV4dC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRm9ybUZvb3Rlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL05vVGlja2V0c0ZvdW5kL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3Qvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SaWdodERyYXdlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvU3VtbWl0SGVhZGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9Bc3NpZ25PcHRpb25zL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRUYWJzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0J1dHRvblwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudFRleHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1RpdGxlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAc2VudHJ5L3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZm9ybWlrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaWR0b2tlbi12ZXJpZmllclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm1vbWVudC10aW1lem9uZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInAtbGltaXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwcm9wLXR5cGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXFyLWNvZGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0L2pzeC1ydW50aW1lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJ5dXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL215LW9yZGVycy10aWNrZXRzLXdpZGdldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgKCkgPT4ge1xucmV0dXJuICIsImltcG9ydCB7XG4gIGF1dGhFcnJvckhhbmRsZXIsXG4gIGNyZWF0ZUFjdGlvbixcbiAgZGVsZXRlUmVxdWVzdCxcbiAgZ2V0UmVxdWVzdCxcbiAgcHV0UmVxdWVzdCxcbiAgc3RhcnRMb2FkaW5nLFxuICBzdG9wTG9hZGluZ1xufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQgcExpbWl0IGZyb20gXCJwLWxpbWl0XCI7XG5pbXBvcnQgeyBnZXRJZFRva2VuIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0IHsgb2JqZWN0VG9RdWVyeVN0cmluZyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIjtcbmltcG9ydCBJZFRva2VuVmVyaWZpZXIgZnJvbSBcImlkdG9rZW4tdmVyaWZpZXJcIjtcbmltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBhdXRoUHJvbWlzZVJlamVjdCwgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgfSBmcm9tIFwiLi91dGlscy9hdXRoXCI7XG5pbXBvcnQge1xuICBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICBFUlJPUl9DT0RFUyxcbiAgRklGVFlfUEVSX1BBR0UsXG4gIEZJTFRFUl9BQ1RJT04sXG4gIEZJUlNUX1BBR0UsXG4gIFBST01JU0VfQkFUQ0hfTElNSVRcbn0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBSRVNFVF9TVEFURSA9IFwiUkVTRVRfU1RBVEVcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9GSUxURVIgPSBcIlJFU0VUX0ZJTFRFUlwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX0FQSV9FUlJPUiA9IFwiUkVTRVRfQVBJX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU0VUX1NUQVRFID0gXCJTRVRfU1RBVEVcIjtcbmV4cG9ydCBjb25zdCBTRVRfQVBJX0VSUk9SID0gXCJTRVRfQVBJX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgQ0hBTkdFX0ZJTFRFUiA9IFwiQ0hBTkdFX0ZJTFRFUlwiO1xuZXhwb3J0IGNvbnN0IENIQU5HRV9TT1JUID0gXCJDSEFOR0VfU09SVFwiO1xuXG4vLyBPUkRFUlMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX1VTRVJfT1JERVJTID0gXCJHRVRfT1JERVJTXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX09SREVSID0gXCJSRUZVTkRfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBTRVRfQUNUSVZFX09SREVSX0lEID0gXCJTRVRfQUNUSVZFX09SREVSX0lEXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1VTRVJfT1JERVJTID0gXCJGSUxURVJfVVNFUl9PUkRFUlNcIjtcblxuLy8gVElDS0VUUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfTVlfQVNTSUdORURfVElDS0VUUyA9IFwiR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFNcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfVElDS0VUID0gXCJVUERBVEVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfVElDS0VUID0gXCJSRVNFVF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX1RJQ0tFVCA9IFwiUkVDRUlWRV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRU1PVkVfVElDS0VUX0FUVEVOREVFID0gXCJSRU1PVkVfVElDS0VUX0FUVEVOREVFXCI7XG5leHBvcnQgY29uc3QgQVNTSUdOX1RJQ0tFVCA9IFwiQVNTSUdOX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IERFTEVHQVRFX1RJQ0tFVCA9IFwiREVMRUdBVEVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX1RJQ0tFVCA9IFwiUkVGVU5EX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFU0VORF9OT1RJRklDQVRJT04gPSBcIlJFU0VORF9OT1RJRklDQVRJT05cIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRfREVUQUlMUyA9IFwiR0VUX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMgPSBcIlJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIixcbiAgZXh0cmFRdWVzdGlvbnM6IFwiZXh0cmFfcXVlc3Rpb25zXCJcbn07XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCA9XG4gIFwiVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRFwiO1xuXG4vLyBVU0VSIENPTlRTXG5leHBvcnQgY29uc3QgU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNUT1BfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX0lEUF9QUk9GSUxFID0gXCJVUERBVEVfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTRVRfVVNFUiA9IFwiU0VUX1VTRVJcIjtcblxuLy8gU1VNTUlUIENPTlNUU1xuZXhwb3J0IGNvbnN0IFNFVF9TVU1NSVQgPSBcIlNFVF9TVU1NSVRcIjtcbmV4cG9ydCBjb25zdCBHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMgPSBcIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HU1wiO1xuZXhwb3J0IGNvbnN0IENMRUFSX01BUktFVElOR19TRVRUSU5HUyA9IFwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5cbmV4cG9ydCBjb25zdCByZXNldFRpY2tldCA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfVElDS0VUKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0U3RhdGUgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX1NUQVRFKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RmlsdGVyID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9GSUxURVIpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRFcnJvciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfQVBJX0VSUk9SKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFJlZHVjZXJTdGF0ZSA9IChzdW1taXQsIHVzZXIpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1NUQVRFKSh7IHN1bW1pdCwgdXNlciB9KSk7XG59O1xuXG4vLyBGSUxURVIgLyBTT1JUIENPTlNUQU5UU1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfREFURSA9IFwiRklMVEVSX1ZBUl9EQVRFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFID0gXCJGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFID0gXCJGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQgPSBcIkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMgPSBcIkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9QUk9NT0NPREUgPSBcIkZJTFRFUl9WQVJfUFJPTU9DT0RFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9GUkVFX1BBSUQgPSBcIkZJTFRFUl9WQVJfRlJFRV9QQUlEXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgPSBcIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXCI7XG5cbi8vIEZJTFRFUiAvIFNPUlQgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IGNoYW5nZUZpbHRlciA9IChmaWx0ZXIpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oQ0hBTkdFX0ZJTFRFUikoZmlsdGVyKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hhbmdlU29ydCA9IChzb3J0KSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKENIQU5HRV9TT1JUKShzb3J0KSk7XG59O1xuXG4vLyBGSUxURVIvU09SVCBQQVJTRVxuY29uc3QgcGFyc2VGaWx0ZXIgPSAoZmlsdGVyT2JqLCBmaWx0ZXJBY3Rpb24pID0+IHtcbiAgY29uc3QgZmlsdGVyID0gW107XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9EQVRFKSB7XG4gICAgZmlsdGVyLnB1c2goYGNyZWF0ZWRbXSR7ZmlsdGVyT2JqLmxvd2VyfSYmJHtmaWx0ZXJPYmoudXBwZXJ9YCk7XG4gIH1cbiAgaWYgKFxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgJiZcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLmxlbmd0aCA+IDBcbiAgKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBmaWx0ZXJBY3Rpb24gPT09IEZJTFRFUl9BQ1RJT04uT1JERVJTXG4gICAgICAgID8gXCJ0aWNrZXRzX2JhZGdlX2ZlYXR1cmVzX2lkXCJcbiAgICAgICAgOiBcImJhZGdlX2ZlYXR1cmVzX2lkXCI7XG4gICAgZmlsdGVyLnB1c2goXG4gICAgICBgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLmpvaW4oXCJ8fFwiKX1gXG4gICAgKTtcbiAgfVxuICBpZiAoXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUgJiZcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfVFlQRS5sZW5ndGggPiAwXG4gICkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgZmlsdGVyQWN0aW9uID09PSBGSUxURVJfQUNUSU9OLk9SREVSU1xuICAgICAgICA/IFwidGlja2V0c190eXBlX2lkXCJcbiAgICAgICAgOiBcInRpY2tldF90eXBlX2lkXCI7XG4gICAgZmlsdGVyLnB1c2goXG4gICAgICBgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfVFlQRS5qb2luKFwifHxcIil9YFxuICAgICk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgZmlsdGVyQWN0aW9uID09PSBGSUxURVJfQUNUSU9OLk9SREVSU1xuICAgICAgICA/IFwidGlja2V0c19hc3NpZ25lZF90b1wiXG4gICAgICAgIDogXCJhc3NpZ25lZF90b1wiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRH1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBmaWx0ZXJBY3Rpb24gPT09IEZJTFRFUl9BQ1RJT04uT1JERVJTXG4gICAgICAgID8gXCJ0aWNrZXRzX293bmVyX3N0YXR1c1wiXG4gICAgICAgIDogXCJvd25lcl9zdGF0dXNcIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PV05FUl9TVEFUVVN9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX0ZSRUVfUEFJRCkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgZmlsdGVyQWN0aW9uID09PSBGSUxURVJfQUNUSU9OLk9SREVSUyA/IFwiYW1vdW50XCIgOiBcImZpbmFsX2Ftb3VudFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX0ke2ZpbHRlck9iai5GSUxURVJfVkFSX0ZSRUVfUEFJRCA9PT0gXCJGcmVlXCIgPyBcIj09MFwiIDogXCI+MFwifWBcbiAgICApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9QUk9NT0NPREUpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGZpbHRlckFjdGlvbiA9PT0gRklMVEVSX0FDVElPTi5PUkRFUlNcbiAgICAgICAgPyBcInRpY2tldHNfcHJvbW9fY29kZVwiXG4gICAgICAgIDogXCJwcm9tb19jb2RlXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfUFJPTU9DT0RFfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIpIHtcbiAgICBsZXQgaW5wdXRGaWx0ZXJzID0gXCJcIjtcblxuICAgIHN3aXRjaCAoZmlsdGVyQWN0aW9uKSB7XG4gICAgICBjYXNlIEZJTFRFUl9BQ1RJT04uT1JERVJTOiB7XG4gICAgICAgIGlucHV0RmlsdGVycyA9IGBudW1iZXI9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfSx0aWNrZXRzX293bmVyX2VtYWlsPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn0sdGlja2V0c19udW1iZXI9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBGSUxURVJfQUNUSU9OLlRJQ0tFVFNfQllfT1JERVJTOiB7XG4gICAgICAgIGlucHV0RmlsdGVycyA9IGBudW1iZXI9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfSxvd25lcl9lbWFpbD1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEZJTFRFUl9BQ1RJT04uRVhURVJOQUxfVElDS0VUUzoge1xuICAgICAgICBpbnB1dEZpbHRlcnMgPSBgb3JkZXJfbnVtYmVyPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn0sbnVtYmVyPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn0sb3JkZXJfb3duZXJfZW1haWw9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGZpbHRlci5wdXNoKGlucHV0RmlsdGVycyk7XG4gIH1cbiAgcmV0dXJuIGZpbHRlcjtcbn07XG5cbmNvbnN0IGdldFNvcnREaXJlY3Rpb24gPSAoZGlyZWN0aW9uKSA9PiAoZGlyZWN0aW9uID09PSBcImFzY1wiID8gXCIrXCIgOiBcIi1cIik7XG5cbi8vIHBheWxvYWQ6IHsgaHR0cENvZGUsIHRpdGxlLCBodG1sOiBjb250ZW50LCB0eXBlIH1cbmNvbnN0IGVycm9ySGFuZGxlck5vdGlmeSA9IChwYXlsb2FkLCBjYWxsYmFjaykgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQVBJX0VSUk9SKShwYXlsb2FkKSk7XG4gIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbn07XG5cbmNvbnN0IGN1c3RvbUF1dGhFcnJvckhhbmRsZXIgPSAoZXJyLCByZXMpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChhdXRoRXJyb3JIYW5kbGVyKGVyciwgcmVzLCBlcnJvckhhbmRsZXJOb3RpZnkpKTtcbn07XG5cbmNvbnN0IGN1c3RvbUZldGNoRXJyb3JIYW5kbGVyID0gKHJlc3BvbnNlKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgY29uc3QgY29kZSA9IHJlc3BvbnNlLnN0YXR1cztcbiAgbGV0IG1zZztcbiAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gIHN3aXRjaCAoY29kZSkge1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MDNcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMudXNlcl9ub3RfYXV0aHpcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDAxXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnNlc3Npb25fZXhwaXJlZFwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MTJcIl06XG4gICAgICBtc2cgPSBcIlwiO1xuICAgICAgT2JqZWN0LmVudHJpZXMocmVzcG9uc2UuZXJyb3JzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKE51bWJlci5pc05hTihrZXkpKSB7XG4gICAgICAgICAgbXNnID0gYCR7bXNnfSAke2tleX06IGA7XG4gICAgICAgIH1cblxuICAgICAgICBtc2cgPSBgJHttc2d9ICR7dmFsdWV9IDxicj5gO1xuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNTAwXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnNlcnZlcl9lcnJvclwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBtc2cgPSByZXNwb25zZS5zdGF0dXNUZXh0O1xuICB9XG5cbiAgZGlzcGF0Y2goZXJyb3JIYW5kbGVyTm90aWZ5KHsgdGl0bGU6IGkxOG4udChcImVycm9ycy5lcnJvclwiKSwgaHRtbDogbXNnIH0pKTtcbn07XG5cbi8vIE9SREVSUyBBQ1RJT05TXG5leHBvcnQgY29uc3QgZ2V0VXNlck9yZGVycyA9XG4gIChcbiAgICB7XG4gICAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgICAgZmlsdGVyID0ge30sXG4gICAgICBzb3J0ID0ge31cbiAgICB9LFxuICAgIHNraXBMb2FkaW5nXG4gICkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIG9yZGVyOiBcIi1jcmVhdGVkXCIsXG4gICAgICBcImZpbHRlcltdXCI6IFtcInN0YXR1cz09UGFpZFwiXSxcbiAgICAgIHJlbGF0aW9uczogXCJhcHBsaWVkX3RheGVzLG5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJpZCxjcmVhdGVkLG51bWJlcixhbW91bnQsY3VycmVuY3ksdGF4ZXNfYW1vdW50LGRpc2NvdW50X2Ftb3VudCx0aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUscmVmdW5kZWRfYW1vdW50LHJhd19hbW91bnQsYXBwbGllZF90YXhlcy5pZCxhcHBsaWVkX3RheGVzLm5hbWUsYXBwbGllZF90YXhlcy5hbW91bnRcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyLCBGSUxURVJfQUNUSU9OLk9SREVSUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVVNFUl9PUkRFUlMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9tZWAsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyLFxuICAgICAgeyBmaWx0ZXIsIHNvcnQgfVxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiBwYXlsb2FkKVxuICAgICAgLmNhdGNoKChlKSA9PiBlKVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBpZiAoIXNraXBMb2FkaW5nKSBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2V0QWN0aXZlT3JkZXJJZCA9IChvcmRlcklkKSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQUNUSVZFX09SREVSX0lEKShvcmRlcklkKSk7XG5cbi8vIFVTRVIgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHNldFVzZXIgPSAodXNlcikgPT4gKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1VTRVIpKHVzZXIpKTtcblxuLy8gVElDS0VUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJUaWNrZXRzID1cbiAgKFxuICAgIHtcbiAgICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgICBmaWx0ZXIgPSB7fSxcbiAgICAgIHNvcnQgPSB7fVxuICAgIH0sXG4gICAgc2tpcExvYWRpbmdcbiAgKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCwgdXNlciB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgeyB1c2VyUHJvZmlsZSB9ID0gdXNlcjtcbiAgICBpZiAoIXN1bW1pdCkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBjb25zdCBmaWVsZHMgPSBbXG4gICAgICBcIm9yZGVyLmlkXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2ZpcnN0X25hbWVcIixcbiAgICAgIFwib3JkZXIub3duZXJfbGFzdF9uYW1lXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2VtYWlsXCIsXG4gICAgICBcIm93bmVyLmlkXCIsXG4gICAgICBcIm93bmVyLmVtYWlsXCIsXG4gICAgICBcIm93bmVyLmZpcnN0X25hbWVcIixcbiAgICAgIFwib3duZXIubGFzdF9uYW1lXCIsXG4gICAgICBcIm93bmVyLnN0YXR1c1wiLFxuICAgICAgXCJiYWRnZS5ub25lXCJcbiAgICBdO1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXCJzdGF0dXM9PVBhaWRcIiwgYG9yZGVyX293bmVyX2lkPD4ke3VzZXJQcm9maWxlLmlkfWBdLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLG93bmVyLHRpY2tldF90eXBlLGJhZGdlLGJhZGdlLmZlYXR1cmVzXCIsXG4gICAgICBvcmRlcjogXCItaWRcIixcbiAgICAgIGZpZWxkczogZmllbGRzLmpvaW4oXCIsXCIpLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmUsYmFkZ2UuZmVhdHVyZXNcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlciwgRklMVEVSX0FDVElPTi5FWFRFUk5BTF9USUNLRVRTKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfTVlfQVNTSUdORURfVElDS0VUUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL2FsbC90aWNrZXRzL21lYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAuY2F0Y2goKGUpID0+IGUpXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGlmICghc2tpcExvYWRpbmcpIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRzQnlPcmRlciA9XG4gICh7XG4gICAgb3JkZXJJZCxcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIsXG4gICAgc29ydFxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBcImZpbHRlcltdXCI6IFtdLFxuICAgICAgZmllbGRzOiBcImJhZGdlLm5vbmVcIixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMscmVmdW5kX3JlcXVlc3RzLnJlZnVuZGVkX3RheGVzLHJlZnVuZF9yZXF1ZXN0cy5yZWZ1bmRlZF90YXhlcy50YXgsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlXCIsXG4gICAgICBvcmRlcjogXCIraWRcIixcbiAgICAgIHJlbGF0aW9uczogXCJub25lLGJhZGdlLmZlYXR1cmVzXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIEZJTFRFUl9BQ1RJT04uVElDS0VUU19CWV9PUkRFUlMpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlc2VuZE5vdGlmaWNhdGlvbiA9XG4gICh0aWNrZXQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBjb25zdCB7IG1lc3NhZ2UgfSA9IHRpY2tldDtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRVNFTkRfTk9USUZJQ0FUSU9OKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9hdHRlbmRlZS9yZWludml0ZWAsXG4gICAgICB7IG1lc3NhZ2UgfSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZFRpY2tldCA9XG4gICh7IHRpY2tldCB9KSA9PlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcInJlZnVuZF9yZXF1ZXN0cyx0aWNrZXRfdHlwZVwiLFxuICAgICAgZmllbGRzOiBcInJlZnVuZF9yZXF1ZXN0cy5zdGF0dXNcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVGVU5EX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcmVmdW5kYCxcbiAgICAgIHt9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRCdWxrVGlja2V0cyA9XG4gICh7IHRpY2tldHMgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoKSA9PiB7XG4gICAgY29uc3QgbGltaXQgPSBwTGltaXQoUFJPTUlTRV9CQVRDSF9MSU1JVCk7XG4gICAgY29uc3QgYWxsUmVmdW5kVGlja2V0Q2FsbHMgPSB0aWNrZXRzLm1hcCgodGlja2V0KSA9PlxuICAgICAgbGltaXQoKCkgPT4gZGlzcGF0Y2gocmVmdW5kVGlja2V0KHsgdGlja2V0IH0pKSlcbiAgICApO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChbLi4uYWxsUmVmdW5kVGlja2V0Q2FsbHNdKVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICBjb25zdCBzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQgPSByZXNcbiAgICAgICAgICAuZmlsdGVyKChyKSA9PiByLnJlc3BvbnNlPy5yZWZ1bmRfcmVxdWVzdHM/Lmxlbmd0aClcbiAgICAgICAgICAubWFwKChyKSA9PiByLnJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3NmdWxseVJlcXVlc3RlZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IGUpO1xuICB9O1xuXG4vLyB1cGRhdGUgdGhlIHRpY2tldHMgdGhhdCBoYXZlIGJlZW4gc3VjZXNzZnVsbHkgcmVmdW5kZWRcbmV4cG9ydCBjb25zdCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkID1cbiAgKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpID0+IChkaXNwYXRjaCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEKSh0aWNrZXRzUmVmdW5kUmVxdWVzdGVkKVxuICAgICk7XG5cbi8vIFNVTU1JVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRFeHRyYVF1ZXN0aW9ucyA9XG4gIChhdHRlbmRlZUlkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIHBhZ2U6IDEsXG4gICAgICBwZXJfcGFnZTogRklGVFlfUEVSX1BBR0UsXG4gICAgICBleHBhbmQ6IFwiKnN1Yl9xdWVzdGlvbl9ydWxlcywqc3ViX3F1ZXN0aW9uLCp2YWx1ZXNcIixcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBcImZpbHRlcltdXCI6IFwidGlja2V0c19leGNsdWRlX2luYWN0aXZlcz09dHJ1ZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L2F0dGVuZGVlcy8ke2F0dGVuZGVlSWR9L2FsbG93ZWQtZXh0cmEtcXVlc3Rpb25zYDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLnRoZW4oKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXQgPVxuICAodGlja2V0SWQsIG9yZGVySWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXIscHJvbW9fY29kZVwiLFxuICAgICAgcmVsYXRpb25zOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZSxwcm9tb19jb2RlLm5vbmUsdGlja2V0X3R5cGUubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZSxwcm9tb19jb2RlLmlkLHByb21vX2NvZGUuY29kZSxwcm9tb19jb2RlLmFsbG93c190b19kZWxlZ2F0ZSxwcm9tb19jb2RlLmFsbG93c190b19yZWFzc2lnbix0aWNrZXRfdHlwZS5pZCx0aWNrZXRfdHlwZS5uYW1lLHRpY2tldF90eXBlLmFsbG93c190b19kZWxlZ2F0ZSx0aWNrZXRfdHlwZS5hbGxvd3NfdG9fcmVhc3NpZ24sdGlja2V0X3R5cGUuY29zdCx0aWNrZXRfdHlwZS5jcmVhdGVkXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfWA7XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIGNyZWF0ZUFjdGlvbihSRVNFVF9USUNLRVQpLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfVElDS0VUKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuY29uc3Qgbm9ybWFsaXplVGlja2V0ID0gKGVudGl0eSkgPT4ge1xuICBjb25zdCBub3JtYWxpemVkRW50aXR5ID0geyAuLi5lbnRpdHkgfTtcblxuICBpZiAoIWVudGl0eS5hdHRlbmRlZV9jb21wYW55LmlkKSB7XG4gICAgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55ID0gZW50aXR5LmF0dGVuZGVlX2NvbXBhbnk7XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueTtcbiAgICBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnlfaWQgPSBlbnRpdHkuYXR0ZW5kZWVfY29tcGFueS5pZDtcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVkRW50aXR5O1xufTtcblxuZXhwb3J0IGNvbnN0IHJlZnJlc2hQcm9maWxlID1cbiAgKGRhdGEsIGNvbXBhbnksIHRpY2tldE93bmVyKSA9PlxuICAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IHVwZGF0ZVByb2ZpbGUgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHVzZXIgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHsgdXNlclByb2ZpbGUgfSA9IHVzZXI7XG5cbiAgICAvLyBlbWFpbCBzaG91bGQgbWF0Y2ggKCBvbmx5IHVwZGF0ZSBteSBwcm9maWxlIGlzIHRpY2tldCBiZWxvbmdzIHRvIG1lISlcbiAgICAvLyBhbmQgaWYgdGhlIHRpY2tldCBkb2Vzbid0IGhhdmUgYSBtYW5hZ2VyXG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBjaGFuZ2VzIGluIHRoZSB0aWNrZXQgZGF0YSB0byB1cGRhdGUgdGhlIHByb2ZpbGVcbiAgICBjb25zdCB7XG4gICAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgICBhdHRlbmRlZV9jb21wYW55XG4gICAgfSA9IGRhdGE7XG4gICAgY29uc3QgaGFzTWFuYWdlciA9IHRpY2tldE93bmVyPy5tYW5hZ2VyPy5pZCB8fCB0aWNrZXRPd25lcj8ubWFuYWdlcl9pZDtcbiAgICBjb25zdCBpdHNNZSA9IHVzZXJQcm9maWxlLmVtYWlsID09PSBhdHRlbmRlZV9lbWFpbDtcbiAgICBjb25zdCBwcm9maWxlQ2hhbmdlZCA9XG4gICAgICBhdHRlbmRlZV9jb21wYW55Lm5hbWUgIT09IGNvbXBhbnkgfHxcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUgIT09IHVzZXJQcm9maWxlLmZpcnN0X25hbWUgfHxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZSAhPT0gdXNlclByb2ZpbGUubGFzdF9uYW1lO1xuXG4gICAgaWYgKGl0c01lICYmICFoYXNNYW5hZ2VyICYmIHByb2ZpbGVDaGFuZ2VkKSB7XG4gICAgICBjb25zdCBuZXdQcm9maWxlID0ge1xuICAgICAgICBmaXJzdF9uYW1lOiBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgICAgICBsYXN0X25hbWU6IGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICAgICAgY29tcGFueTogYXR0ZW5kZWVfY29tcGFueS5uYW1lIHx8IGF0dGVuZGVlX2NvbXBhbnlcbiAgICAgIH07XG5cbiAgICAgIC8vIHRoaXMgaXMgYSBjYWxsYmFjayBtZXRob2QgdGhhdCB1cGRhdGVzIHVzZXJQcm9maWxlIGluIEFQSSBhbmQgZXZlbnQtc2l0ZVxuICAgICAgdXBkYXRlUHJvZmlsZShuZXdQcm9maWxlKTtcbiAgICB9XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzYXZlVGlja2V0RGV0YWlscyA9XG4gICh0aWNrZXQsIGFuc3dlcnMpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBpZFRva2VuID0gZ2V0SWRUb2tlbigpO1xuICAgIGxldCBjb21wYW55ID0gXCJcIjtcbiAgICBpZiAoaWRUb2tlbikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdmVyaWZpZXIgPSBuZXcgSWRUb2tlblZlcmlmaWVyKCk7XG4gICAgICAgIGNvbnN0IGp3dCA9IHZlcmlmaWVyLmRlY29kZShpZFRva2VuKTtcbiAgICAgICAgY29tcGFueSA9IGp3dC5wYXlsb2FkLmNvbXBhbnk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSBub3JtYWxpemVUaWNrZXQoYW5zd2Vycyk7XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzL2FsbC90aWNrZXRzLyR7dGlja2V0LmlkfWAsXG4gICAgICBub3JtYWxpemVkRW50aXR5LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2gocmVmcmVzaFByb2ZpbGUoYW5zd2VycywgY29tcGFueSwgdGlja2V0Lm93bmVyKSk7XG4gICAgICB9KVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgYXNzaWduQXR0ZW5kZWUgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGF0dGVuZGVlX2VtYWlsLCBtZXNzYWdlID0gbnVsbCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBjb25zdCBwYXlsb2FkID0geyBhdHRlbmRlZV9lbWFpbCB9O1xuICAgIGlmIChtZXNzYWdlKSBwYXlsb2FkLm1lc3NhZ2UgPSBtZXNzYWdlO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihBU1NJR05fVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2F0dGVuZGVlYCxcbiAgICAgIHBheWxvYWQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlVGlja2V0ID1cbiAgKG9yZGVySWQsIHRpY2tldElkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDogXCJvcmRlciwgb3duZXIsIG93bmVyLmV4dHJhX3F1ZXN0aW9ucywgb3JkZXIuc3VtbWl0XCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlbGV0ZVJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFTU9WRV9USUNLRVRfQVRURU5ERUUpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vYXR0ZW5kZWVgLFxuICAgICAge30sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlYXNzaWduVGlja2V0ID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkgPT4gYXN5bmMgKGRpc3BhdGNoKSA9PlxuICAgIGRpc3BhdGNoKHJlbW92ZVRpY2tldChvcmRlcklkLCB0aWNrZXRJZCkpLnRoZW4oKCkgPT5cbiAgICAgIGRpc3BhdGNoKGFzc2lnbkF0dGVuZGVlKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkpXG4gICAgKTtcblxuZXhwb3J0IGNvbnN0IHVuYXNzaWduVGlja2V0ID0gKG9yZGVySWQsIHRpY2tldElkKSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKHJlbW92ZVRpY2tldChvcmRlcklkLCB0aWNrZXRJZCkpLnRoZW4oKCkgPT4gZGlzcGF0Y2goc3RvcExvYWRpbmcoKSkpO1xuXG5leHBvcnQgY29uc3QgZGVsZWdhdGVUaWNrZXQgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lOiBmaXJzdE5hbWUsXG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWU6IGxhc3ROYW1lLFxuICAgICAgYXR0ZW5kZWVfZW1haWw6IGVtYWlsXG4gICAgfTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oREVMRUdBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2RlbGVnYXRlYCxcbiAgICAgIHBheWxvYWQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZUV4dHJhUXVlc3Rpb25zID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIGFuc3dlcnMsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRQREYgPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBvYmplY3RUb1F1ZXJ5U3RyaW5nKHBhcmFtcyk7XG4gICAgY29uc3QgYXBpVXJsID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L3BkZj8ke3F1ZXJ5U3RyaW5nfWA7XG5cbiAgICByZXR1cm4gZmV0Y2goYXBpVXJsLCB7XG4gICAgICByZXNwb25zZVR5cGU6IFwiQmxvYlwiLFxuICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL3BkZlwiIH1cbiAgICB9KVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuYmxvYigpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnRoZW4oKHBkZikgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChwZGYpO1xuICAgICAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBcInRpY2tldC5wZGZcIjtcbiAgICAgICAgbGluay5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KFwiY2xpY2tcIikpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChjdXN0b21GZXRjaEVycm9ySGFuZGxlcik7XG4gIH07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJAbXVpL21hdGVyaWFsL0J1dHRvblwiO1xuaW1wb3J0IERpYWxvZyBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dcIjtcbmltcG9ydCBEaWFsb2dBY3Rpb25zIGZyb20gXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0FjdGlvbnNcIjtcbmltcG9ydCBEaWFsb2dDb250ZW50IGZyb20gXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0NvbnRlbnRcIjtcbmltcG9ydCBEaWFsb2dDb250ZW50VGV4dCBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50VGV4dFwiO1xuaW1wb3J0IERpYWxvZ1RpdGxlIGZyb20gXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1RpdGxlXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5cbmNvbnN0IENvbmZpcm1EaWFsb2cgPSAoeyBvcGVuLCB0aXRsZSwgYm9keSwgb25DbG9zZSwgb25Db25maXJtIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPERpYWxvZ1xuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICBhcmlhLWxhYmVsbGVkYnk9XCJhbGVydC1kaWFsb2ctdGl0bGVcIlxuICAgICAgYXJpYS1kZXNjcmliZWRieT1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiXG4gICAgPlxuICAgICAgPERpYWxvZ1RpdGxlIGlkPVwiYWxlcnQtZGlhbG9nLXRpdGxlXCI+e3RpdGxlfTwvRGlhbG9nVGl0bGU+XG4gICAgICA8RGlhbG9nQ29udGVudD5cbiAgICAgICAgPERpYWxvZ0NvbnRlbnRUZXh0IGlkPVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAge2JvZHl9XG4gICAgICAgIDwvRGlhbG9nQ29udGVudFRleHQ+XG4gICAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gICAgICA8RGlhbG9nQWN0aW9ucz5cbiAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXtvbkNsb3NlfT57dChcImdlbmVyYWwuY2FuY2VsXCIpfTwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e29uQ29uZmlybX0gYXV0b0ZvY3VzPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb25maXJtXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvRGlhbG9nQWN0aW9ucz5cbiAgICA8L0RpYWxvZz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbmZpcm1EaWFsb2c7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBkZWZhdWx0V2lkdGggPSA5MDtcblxuY29uc3QgQ29weVRleHQgPSAoe1xuICB0ZXh0LFxuICB0b29sdGlwVGV4dCxcbiAgaGlkZUNvcHkgPSBmYWxzZSxcbiAgdHJ1bmNhdGVkID0gdHJ1ZSxcbiAgcmV2ZXJzZWQgPSBmYWxzZSxcbiAgd2lkdGggPSBkZWZhdWx0V2lkdGhcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB0b29sdGlwVGV4dFRvVXNlID0gdG9vbHRpcFRleHQgfHwgdChcImdlbmVyYWwuY29weV90b19jbGlwYm9hcmRcIik7XG4gIGNvbnN0IFt0b29sdGlwLCBzZXRUb29sdGlwXSA9IFJlYWN0LnVzZVN0YXRlKHRvb2x0aXBUZXh0VG9Vc2UpO1xuICBjb25zdCBjbGFzc05hbWVzID0gYCR7dHJ1bmNhdGVkICYmIHN0eWxlcy50cnVuY2F0ZWR9ICR7XG4gICAgcmV2ZXJzZWQgJiYgc3R5bGVzLnJldmVyc2VkXG4gIH1gO1xuXG4gIGNvbnN0IGhhbmRsZUNvcHkgPSAoKSA9PiB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7XG4gICAgc2V0VG9vbHRpcCh0KFwiZ2VuZXJhbC5jb3BpZWRcIikpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0VG9vbHRpcCh0b29sdGlwVGV4dFRvVXNlKTtcbiAgICB9LCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y2xhc3NOYW1lc30gc3R5bGU9e3sgd2lkdGggfX0+XG4gICAgICAgIHt0ZXh0fVxuICAgICAgPC9zcGFuPlxuICAgICAgeyFoaWRlQ29weSAmJiAoXG4gICAgICAgIDxUb29sdGlwIHRpdGxlPXt0b29sdGlwfT5cbiAgICAgICAgICA8Q29udGVudENvcHlJY29uXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb3B5SWNvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvcHl9XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNvcHktbnVtYmVyLWJ1dHRvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNvcHlUZXh0LnByb3BUeXBlcyA9IHtcbiAgdGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdG9vbHRpcFRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGhpZGVDb3B5OiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJ1bmNhdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmV2ZXJzZWQ6IFByb3BUeXBlcy5ib29sLFxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29weVRleHQ7XG4iLCJpbXBvcnQgeyBjcmVhdGVDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQgPSBjcmVhdGVDb250ZXh0KG51bGwpO1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQWxlcnQsIFNuYWNrYmFyLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDaGVja0NpcmNsZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcblxuY29uc3QgQ3VzdG9tTm90aWZpY2F0aW9uID0gKHsgb3Blbiwgb25DbG9zZSwgbWVzc2FnZSwgc2V2ZXJpdHkgfSkgPT4ge1xuICBpZiAoIW1lc3NhZ2UpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPFNuYWNrYmFyXG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIGFuY2hvck9yaWdpbj17eyB2ZXJ0aWNhbDogXCJ0b3BcIiwgaG9yaXpvbnRhbDogXCJjZW50ZXJcIiB9fVxuICAgICAgYXV0b0hpZGVEdXJhdGlvbj17MjAwMH1cbiAgICA+XG4gICAgICA8QWxlcnRcbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgc2V2ZXJpdHk9e3NldmVyaXR5fVxuICAgICAgICB2YXJpYW50PVwiZmlsbGVkXCJcbiAgICAgICAgc3g9e3sgd2lkdGg6IFwiMTAwJVwiLCBiYWNrZ3JvdW5kQ29sb3I6IGAke3NldmVyaXR5fS5saWdodGAgfX1cbiAgICAgICAgaWNvbk1hcHBpbmc9e3tcbiAgICAgICAgICBzdWNjZXNzOiA8Q2hlY2tDaXJjbGVJY29uIGZvbnRTaXplPVwiaW5oZXJpdFwiIC8+LFxuICAgICAgICAgIGVycm9yOiA8RXJyb3JJY29uIGZvbnRTaXplPVwiaW5oZXJpdFwiIC8+XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiPnttZXNzYWdlfTwvVHlwb2dyYXBoeT5cbiAgICAgIDwvQWxlcnQ+XG4gICAgPC9TbmFja2Jhcj5cbiAgKTtcbn07XG5cbkN1c3RvbU5vdGlmaWNhdGlvbi5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgbWVzc2FnZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V2ZXJpdHk6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbU5vdGlmaWNhdGlvbjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxubGV0IGRhcmtDb2xvciA9IFwiXCI7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAvLyBHZXQgdGhlIHJvb3QgZWxlbWVudFxuICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gIC8vIFJldHJpZXZlIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgQ1NTIHZhcmlhYmxlXG4gIGRhcmtDb2xvciA9IGdldENvbXB1dGVkU3R5bGUocm9vdCkuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICBcIi0tY29sb3JfYmFja2dyb3VuZF9kYXJrXCJcbiAgKTtcbn1cblxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHBhbGV0dGU6IHtcbiAgICBwcmltYXJ5OiB7XG4gICAgICBtYWluOiBkYXJrQ29sb3JcbiAgICB9LFxuICAgIHRleHQ6IHtcbiAgICAgIHByaW1hcnk6IFwiIzAwMDAwMERFXCIsXG4gICAgICBzZWNvbmRhcnk6IFwiIzAwMDAwMDk5XCIsXG4gICAgICBsaW5rOiBcIiMyMTk2ZjNcIlxuICAgIH1cbiAgfSxcbiAgdHlwb2dyYXBoeToge1xuICAgIGJvZHkxOiB7XG4gICAgICBmb250U2l6ZTogXCIxNHB4XCIsXG4gICAgICBmb250V2VpZ2h0OiA0MDBcbiAgICB9LFxuICAgIGg1OiB7XG4gICAgICBmb250U2l6ZTogXCIxLjZlbVwiLFxuICAgICAgZm9udFdlaWdodDogNDAwLFxuICAgICAgXCImLk11aVR5cG9ncmFwaHktZ3V0dGVyQm90dG9tXCI6IHtcbiAgICAgICAgbWFyZ2luQm90dG9tOiBcIjIwcHhcIlxuICAgICAgfVxuICAgIH0sXG4gICAgaDY6IHtcbiAgICAgIGZvbnRTaXplOiBcIjEuNGVtXCIsXG4gICAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgICBcIiYuTXVpVHlwb2dyYXBoeS1ndXR0ZXJCb3R0b21cIjoge1xuICAgICAgICBtYXJnaW5Cb3R0b206IFwiMjBweFwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjb21wb25lbnRzOiB7XG4gICAgTXVpRm9ybUhlbHBlclRleHQ6IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJvb3Q6IHtcbiAgICAgICAgICBmb250U2l6ZTogXCIuOGVtXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpQnV0dG9uOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiMWVtXCIsXG4gICAgICAgICAgZm9udFdlaWdodDogNTAwLFxuICAgICAgICAgIGxpbmVIZWlnaHQ6IFwiMjJweFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE11aVRhYjoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIjE0cHhcIixcbiAgICAgICAgICBjb2xvcjogXCIjMDAwMDAwOTlcIixcbiAgICAgICAgICBcIiYuTXVpLXNlbGVjdGVkXCI6IHtcbiAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpVGFiczoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgaW5kaWNhdG9yOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgQ3VzdG9tVGhlbWUgPSAoeyBjaGlsZHJlbiB9KSA9PiAoXG4gIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+e2NoaWxkcmVufTwvVGhlbWVQcm92aWRlcj5cbik7XG5cbkN1c3RvbVRoZW1lLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbVRoZW1lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWxcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuICBjb25zdCBxdWVzdGlvbk1heFZhbHVlcyA9IHF1ZXN0aW9uLm1heF9zZWxlY3RlZF92YWx1ZXM7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICBjb25zdCBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UgPSAoY2hlY2tlZCwgdmFsKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEFucyA9IHZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IG1heFNlbGVjdGlvblJlYWNoZWQgPVxuICAgICAgcXVlc3Rpb25NYXhWYWx1ZXMgIT09IDAgJiYgY3VycmVudEFucy5sZW5ndGggPT09IHF1ZXN0aW9uTWF4VmFsdWVzO1xuICAgIGxldCBuZXdWYWx1ZTtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXdWYWx1ZSA9IG1heFNlbGVjdGlvblJlYWNoZWQgPyBjdXJyZW50QW5zIDogWy4uLmN1cnJlbnRBbnMsIHZhbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gY3VycmVudEFucy5maWx0ZXIoKHYpID0+IHYgIT09IHZhbCk7XG4gICAgfVxuXG4gICAgc2V0RmllbGRWYWx1ZShxdWVzdGlvblNsdWcsIG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbD57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt2YWx1ZT8uaW5jbHVkZXMob3AudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldikgPT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlKGV2LnRhcmdldC5jaGVja2VkLCBvcC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBtYXJnaW49XCJub3JtYWxcIiBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIHN4PXt7IGFsaWduSXRlbXM6IFwiZmxleC1zdGFydFwiIH19XG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICAgICAgc3g9e3sgbWFyZ2luVG9wOiAtMSB9fVxuICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+fVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5ib29sLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIElucHV0TGFiZWwsIE1lbnVJdGVtLCBTZWxlY3QgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgY2hpbGRyZW4sXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWRcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxJbnB1dExhYmVsIGlkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH0+e3F1ZXN0aW9uTGFiZWx9PC9JbnB1dExhYmVsPlxuICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgbGFiZWxJZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9XG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGlkPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgbGFiZWw9e3F1ZXN0aW9uTGFiZWx9XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICBzdHlsZT17eyBtYXJnaW5Cb3R0b206IDIwIH19XG4gICAgICAgID5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxNZW51SXRlbSBrZXk9e29wLmxhYmVsfSB2YWx1ZT17b3AudmFsdWV9PlxuICAgICAgICAgICAgICB7b3AubGFiZWx9XG4gICAgICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1NlbGVjdD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkRyb3Bkb3duUXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEcm9wZG93blF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHQsXG4gIEZvcm1MYWJlbCxcbiAgUmFkaW8sXG4gIFJhZGlvR3JvdXBcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZC50b1N0cmluZygpXG4gICAgfSkpIHx8IFtdO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8Rm9ybUxhYmVsIGlkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH0+e3F1ZXN0aW9uTGFiZWx9PC9Gb3JtTGFiZWw+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICAgIDxSYWRpb0dyb3VwXG4gICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAga2V5PXtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgdmFsdWU9e29wLnZhbHVlfVxuICAgICAgICAgICAgICBjb250cm9sPXs8UmFkaW8gLz59XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cblJhZGlvTGlzdFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEZvcm1Hcm91cCwgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBUZXh0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUdyb3VwPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuVGV4dFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRleHRRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tSdWxlID0gKHZhbHVlLCBydWxlKSA9PiB7XG4gIGNvbnN0IHZhbHVlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlcztcblxuICBpZiAoIXZhbHVlKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKCF2YWx1ZS5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBsZXQgcmVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiO1xuICAgIHZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICBpZiAocnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiKSB7XG4gICAgICAgIHJlcyA9IHJlcyAmJiB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE9yXG4gICAgICAgIHJlcyA9IHJlcyB8fCB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIHJldHVybiB2YWx1ZXMuaW5jbHVkZXModmFsdWU/LnRvU3RyaW5nKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrVmlzaWJpbGl0eSA9IChydWxlLCBydWxlUmVzdWx0KSA9PiB7XG4gIGlmIChydWxlLnZpc2liaWxpdHkgPT09IFwiVmlzaWJsZVwiKSB7XG4gICAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgICAgcmV0dXJuICEhcnVsZVJlc3VsdDtcbiAgICB9XG4gICAgLy8gTm9uIEVxdWFsXG4gICAgcmV0dXJuICFydWxlUmVzdWx0O1xuICB9XG4gIC8vIG5vdCB2aXNpYmxlXG4gIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICByZXR1cm4gIXJ1bGVSZXN1bHQ7XG4gIH1cbiAgcmV0dXJuICEhcnVsZVJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCB0b1NsdWcgPSAodGV4dCwgcXVlc3Rpb25JZCkgPT4ge1xuICBjb25zdCB0ZXh0TEMgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBgJHt0ZXh0TEMucmVwbGFjZSgvW15hLXpBLVowLTldKy9nLCBcIl9cIil9XyR7cXVlc3Rpb25JZH1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExhYmVsID0gKHEpID0+XG4gIC8vIHJlcGxhY2UgbGluZSBicmVha3MgYW5kIHJlbW92ZSBvdXRlciA8cD5cbiAgcT8ubGFiZWw/LnJlcGxhY2UoL1xcbi9nLCBcIiBcIikucmVwbGFjZSgvPHA+KC4qKTxcXC9wPi9naSwgXCIkMVwiKTtcblxuZXhwb3J0IGNvbnN0IGlzQW5zd2VyZWQgPSAoYW5zd2VyKSA9PiB7XG4gIGlmICghYW5zd2VyKSByZXR1cm4gZmFsc2U7XG4gIC8vIGNoZWNrIHR5cGVcbiAgaWYgKEFycmF5LmlzQXJyYXkoYW5zd2VyKSkgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJudW1iZXJcIikgcmV0dXJuIGFuc3dlciA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcImJvb2xlYW5cIikgcmV0dXJuIGFuc3dlcjtcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrSWZWYWx1ZU1hdGNoID0gKGFuc3dlciwgY29tcGFyZVZhbCkgPT4ge1xuICBjb25zdCBhbnN3ZXJBcnJheSA9IEFycmF5LmlzQXJyYXkoYW5zd2VyKSA/IGFuc3dlciA6IFthbnN3ZXJdO1xuXG4gIHJldHVybiBhbnN3ZXJBcnJheS5zb21lKCh2KSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcGFyZVZhbCkpIHtcbiAgICAgIHJldHVybiBjb21wYXJlVmFsLmluY2x1ZGVzKGAke3Z9YCk7XG4gICAgfVxuICAgIHJldHVybiBgJHt2fWAgPT09IGAke2NvbXBhcmVWYWx9YDtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZUluaXRpYWxWYWx1ZSA9IChxKSA9PiB7XG4gIHN3aXRjaCAocS50eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWx1ZSA9IChhbnMsIHR5cGUpID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gYW5zID09PSBcInRydWVcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gYW5zPy5zcGxpdChcIixcIikgfHwgW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIGFucyB8fCBcIlwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBhbnMgfHwgbnVsbDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGFucztcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCA9IChhbnN3ZXJzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgLi4uZXh0cmFfcXVlc3Rpb25zXG4gIH0gPSBhbnN3ZXJzO1xuXG4gIGNvbnN0IGZvcm1hdHRlZEVRID0gT2JqZWN0LmVudHJpZXMoZXh0cmFfcXVlc3Rpb25zKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICBxdWVzdGlvbl9pZDogcGFyc2VJbnQoa2V5LnNwbGl0KFwiX1wiKS5wb3AoKSwgMTApLFxuICAgIGFuc3dlcjogdmFsdWU/LnRvU3RyaW5nKCkgfHwgbnVsbFxuICB9KSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgZXh0cmFfcXVlc3Rpb25zOiBmb3JtYXR0ZWRFUVxuICB9O1xufTtcbiIsImV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dCA9IFwiVGV4dFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0QXJlYSA9IFwiVGV4dEFyZWFcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tib3ggPSBcIkNoZWNrQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCA9IFwiUmFkaW9CdXR0b25MaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvbWJvQm94ID0gXCJDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QgPSBcIkNoZWNrQm94TGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3ggPSBcIkNvdW50cnlDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiA9IFwiUmFkaW9CdXR0b25cIjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgdG9TbHVnLFxuICBpc0Fuc3dlcmVkLFxuICBjaGVja1Zpc2liaWxpdHksXG4gIGNoZWNrUnVsZVxufSBmcm9tIFwiLi9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCxcbiAgUXVlc3Rpb25UeXBlX1RleHQsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCBUZXh0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZFwiO1xuXG5jb25zdCBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gKHF1ZXN0aW9uVHlwZSkgPT4ge1xuICBzd2l0Y2ggKHF1ZXN0aW9uVHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHRBcmVhOlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHQ6IHtcbiAgICAgIHJldHVybiBUZXh0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6IHtcbiAgICAgIHJldHVybiBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDoge1xuICAgICAgcmV0dXJuIFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDoge1xuICAgICAgcmV0dXJuIERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIFJlYWN0LkZyYWdtZW50O1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgRXh0cmFRdWVzdGlvbnNGaWVsZHMgPSAoe1xuICBleHRyYVF1ZXN0aW9ucyxcbiAgY2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uc1wiLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvblwiLFxuICByZWFkT25seSA9IGZhbHNlLFxuICBhbGxvd0VkaXQgPSB0cnVlLFxuICBmb3JtaWtcbn0pID0+IHtcbiAgY29uc3QgcmVuZGVyUnVsZSA9IChydWxlLCBxdWVzdGlvblNsdWcpID0+IHtcbiAgICBjb25zdCBydWxlUmVzdWx0ID0gY2hlY2tSdWxlKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSwgcnVsZSk7XG4gICAgY29uc3QgaXNWaXNpYmxlID0gY2hlY2tWaXNpYmlsaXR5KHJ1bGUsIHJ1bGVSZXN1bHQpO1xuXG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICByZXR1cm4gcmVuZGVyUXVlc3Rpb24ocnVsZS5zdWJfcXVlc3Rpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlclF1ZXN0aW9uID0gKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICAvLyBkaXNhYmxlIGZpZWxkIGlmIGVkaXQgaXNuJ3QgYWxsb3dlZCBhbmQgdGhlIHF1ZXN0aW9ucyBpcyBhbnN3ZXJlZFxuICAgIGNvbnN0IGlzRGlzYWJsZWQgPVxuICAgICAgKCFhbGxvd0VkaXQgJiYgaXNBbnN3ZXJlZChmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10pKSB8fCByZWFkT25seTtcbiAgICBjb25zdCBRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudChxLnR5cGUpO1xuXG4gICAgY29uc3QgZm9ybWlrUHJvcHMgPSB7XG4gICAgICB2YWx1ZTogZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLFxuICAgICAgb25DaGFuZ2U6IGZvcm1pay5oYW5kbGVDaGFuZ2UsXG4gICAgICBvbkJsdXI6IGZvcm1pay5oYW5kbGVCbHVyLFxuICAgICAgZXJyb3I6XG4gICAgICAgIGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgQm9vbGVhbihmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10pLFxuICAgICAgaGVscGVyVGV4dDogZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBzZXRGaWVsZFZhbHVlOiBmb3JtaWsuc2V0RmllbGRWYWx1ZVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFF1ZXN0aW9uRmllbGRDb21wb25lbnRcbiAgICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICAgIHF1ZXN0aW9uPXtxfVxuICAgICAgICBxdWVzdGlvbkNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgICAgIGlzRGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgIHsuLi5mb3JtaWtQcm9wc31cbiAgICAgID5cbiAgICAgICAge3Euc3ViX3F1ZXN0aW9uX3J1bGVzPy5tYXAoKHJ1bGUpID0+IHJlbmRlclJ1bGUocnVsZSwgcXVlc3Rpb25TbHVnKSl9XG4gICAgICA8L1F1ZXN0aW9uRmllbGRDb21wb25lbnQ+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e2V4dHJhUXVlc3Rpb25zLm1hcChyZW5kZXJRdWVzdGlvbil9PC9kaXY+O1xufTtcblxuRXh0cmFRdWVzdGlvbnNGaWVsZHMucHJvcFR5cGVzID0ge1xuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGFsbG93RWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIHJlYWRPbmx5OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRXh0cmFRdWVzdGlvbnNGaWVsZHM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgQXNzaWduZWRGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQ6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIk1lXCIsIGxhYmVsOiBcIk1lXCIgfSxcbiAgICB7IHZhbHVlOiBcIlNvbWVvbmVFbHNlXCIsIGxhYmVsOiBcIlNvbWVvbmUgRWxzZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJOb2JvZHlcIiwgbGFiZWw6IFwiTm9ib2R5XCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIkFzc2lnbmVkXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkFzc2lnbmVkRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25lZEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENoZWNrYm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBCYWRnZUZlYXR1cmVGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQ6IHsgYmFkZ2VfZmVhdHVyZXNfdHlwZXMgfSxcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9ICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBmaWx0ZXJWYWx1ZXM/LmluY2x1ZGVzKHZhbHVlKVxuICAgICAgPyBmaWx0ZXJWYWx1ZXMuZmlsdGVyKChmKSA9PiBmICE9PSB2YWx1ZSlcbiAgICAgIDogWy4uLmZpbHRlclZhbHVlcywgdmFsdWVdO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdOiBuZXdGaWx0ZXJzXG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJc0V4cGFuZGVkKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG4gIH0sIFtmaWx0ZXJWYWx1ZXNdKTtcblxuICBpZiAoIWJhZGdlX2ZlYXR1cmVzX3R5cGVzIHx8IGJhZGdlX2ZlYXR1cmVzX3R5cGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJCYWRnZSBGZWF0dXJlXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtiYWRnZV9mZWF0dXJlc190eXBlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICA8Qm94IHN4PXt7IHB5OiAxIH19IGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YmYubmFtZX19YH0+XG4gICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IGhhbmRsZUZpbHRlckNoYW5nZShiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2ZpbHRlclZhbHVlcy5pbmNsdWRlcyhiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwiIzIxOTZGM1wiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkJhZGdlRmVhdHVyZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQmFkZ2VGZWF0dXJlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgRmlsdGVyTGlzdEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiO1xuaW1wb3J0IHtcbiAgQmFkZ2UsXG4gIEJveCxcbiAgQnV0dG9uLFxuICBDYXJkLFxuICBDYXJkSGVhZGVyLFxuICBEaXZpZGVyLFxuICBQYXBlclxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgY29ubmVjdCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IEJhZGdlRmVhdHVyZUZpbHRlciBmcm9tIFwiLi9CYWRnZUZlYXR1cmVGaWx0ZXJcIjtcbmltcG9ydCB7XG4gIEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSxcbiAgRklMVEVSX1ZBUl9GUkVFX1BBSUQsXG4gIEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTLFxuICBGSUxURVJfVkFSX1BST01PQ09ERSxcbiAgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQsXG4gIEZJTFRFUl9WQVJfVElDS0VUX1RZUEVcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBUaWNrZXRUeXBlRmlsdGVyIGZyb20gXCIuL1RpY2tldFR5cGVGaWx0ZXJcIjtcbmltcG9ydCBBc3NpZ25lZEZpbHRlciBmcm9tIFwiLi9Bc3NpZ25lZEZpbHRlclwiO1xuaW1wb3J0IFN0YXR1c0ZpbHRlciBmcm9tIFwiLi9TdGF0dXNGaWx0ZXJcIjtcbmltcG9ydCBGcmVlUGFpZEZpbHRlciBmcm9tIFwiLi9GcmVlUGFpZEZpbHRlclwiO1xuaW1wb3J0IFByb21vQ29kZUZpbHRlciBmcm9tIFwiLi9Qcm9tb0NvZGVGaWx0ZXJcIjtcblxuY29uc3QgRmlsdGVyID0gKHsgb25GaWx0ZXIsIG9uUmVzZXQsIGZpbHRlciwgYWN0aXZlRmlsdGVyc0NvdW50IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0ZpbHRlckxpc3QsIHNldFNob3dGaWx0ZXJMaXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Nob3dEYXRlcGlja2VyLCBzZXRTaG93RGF0ZXBpY2tlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGZpbHRlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKGZpbHRlclJlZi5jdXJyZW50ICYmICFmaWx0ZXJSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBpZiAoc2hvd0ZpbHRlckxpc3QpIHtcbiAgICAgICAgc2V0U2hvd0ZpbHRlckxpc3QoZmFsc2UpO1xuICAgICAgICBzZXRTaG93RGF0ZXBpY2tlcihmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93RmlsdGVyTGlzdF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93RmlsdGVyTGlzdCghc2hvd0ZpbHRlckxpc3QpO1xuICAgIHNldFNob3dEYXRlcGlja2VyKCFzaG93RGF0ZXBpY2tlcik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyUmVzZXQgPSAoKSA9PiB7XG4gICAgb25SZXNldCgpO1xuICAgIHRvZ2dsZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDb250YWluZXJ9IHJlZj17ZmlsdGVyUmVmfT5cbiAgICAgIDxTdGFja1xuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICAgIG9uQ2xpY2s9e3RvZ2dsZX1cbiAgICAgID5cbiAgICAgICAgPEJhZGdlIGJhZGdlQ29udGVudD17YWN0aXZlRmlsdGVyc0NvdW50fSBjb2xvcj1cInByaW1hcnlcIiBzeD17eyBtcjogMSB9fT5cbiAgICAgICAgICA8RmlsdGVyTGlzdEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckljb259IC8+XG4gICAgICAgIDwvQmFkZ2U+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckxhYmVsfT57dChcImZpbHRlci5maWx0ZXJcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZmlsdGVyTGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfSAke1xuICAgICAgICAgIHNob3dGaWx0ZXJMaXN0ID8gc3R5bGVzLnNob3dGaWx0ZXJMaXN0IDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgID5cbiAgICAgICAgPFBhcGVyIGVsZXZhdGlvbj17OH0gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ2hlY2tib3hDb250YWluZXJ9PlxuICAgICAgICAgIDxDYXJkIHZhcmlhbnQ9XCJvdXRsaW5lZFwiPlxuICAgICAgICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgICAgICAgdGl0bGU9XCJGaWx0ZXJzXCJcbiAgICAgICAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVGaWx0ZXJSZXNldH1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsZWFuQnV0dG9ufVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt0KFwiZmlsdGVyLmNsZWFyXCIpfVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPERpdmlkZXIgLz5cbiAgICAgICAgICAgIDxCYWRnZUZlYXR1cmVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEFzc2lnbmVkRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFN0YXR1c0ZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX09XTkVSX1NUQVRVU119XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxUaWNrZXRUeXBlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8UHJvbW9Db2RlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEZyZWVQYWlkRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgPC9QYXBlcj5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5jb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSAoeyB3aWRnZXRTdGF0ZSB9KSA9PiAoe1xuICBzb3J0OiB3aWRnZXRTdGF0ZS5zb3J0LFxuICBmaWx0ZXI6IHdpZGdldFN0YXRlLmZpbHRlcixcbiAgYWN0aXZlRmlsdGVyc0NvdW50OiB3aWRnZXRTdGF0ZS5hY3RpdmVGaWx0ZXJzQ291bnRcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywge30pKEZpbHRlcik7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfRlJFRV9QQUlEIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgRnJlZVBhaWRGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9GUkVFX1BBSUQ6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIkZyZWVcIiwgbGFiZWw6IFwiRnJlZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJQYWlkXCIsIGxhYmVsOiBcIlBhaWRcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX0ZSRUVfUEFJRF06IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiRnJlZSAvIFBhaWRcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuRnJlZVBhaWRGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZyZWVQYWlkRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFRleHRGaWVsZFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfUFJPTU9DT0RFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgUHJvbW9Db2RlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfUFJPTU9DT0RFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG4gIGNvbnN0IFtwcm9tb0NvZGUsIHNldFByb21vQ29kZV0gPSB1c2VTdGF0ZShmaWx0ZXJWYWx1ZXMgfHwgXCJcIik7XG5cbiAgY29uc3QgZGVib3VuY2VUaW1lciA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgREVCT1VOQ0VfVkFMVUUgPSA1MDA7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRQcm9tb0NvZGUoZmlsdGVyVmFsdWVzIHx8IFwiXCIpO1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2KSA9PiB7XG4gICAgY29uc3QgbmV3UHJvbW9Db2RlID0gZXYudGFyZ2V0LnZhbHVlO1xuICAgIC8vIHVwZGF0ZSBsb2NhbCBzdGF0ZSBzbyB0aGUgaW5wdXQgcmVmbGVjdHMgY2hhbmdlc1xuICAgIHNldFByb21vQ29kZShuZXdQcm9tb0NvZGUpO1xuXG4gICAgLy8gcmVtb3ZlIGN1cnJlbnQgZGVib3VuY2VcbiAgICBpZiAoZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lci5jdXJyZW50KTtcbiAgICB9XG5cbiAgICAvLyBkZWJvdW5jZSBzZXQgdG8gNTAwIG1zXG4gICAgZGVib3VuY2VUaW1lci5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBvbkZpbHRlcih7XG4gICAgICAgIFtGSUxURVJfVkFSX1BST01PQ09ERV06IG5ld1Byb21vQ29kZVxuICAgICAgfSk7XG4gICAgfSwgREVCT1VOQ0VfVkFMVUUpO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gcmVtb3ZlIGRlYm91bmNlIG9uIHJlbG9hZFxuICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiUHJvbW8gQ29kZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcHk6IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgcHJvbW8gY29kZVwiXG4gICAgICAgICAgICB2YWx1ZT17cHJvbW9Db2RlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX1cbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUHJvbW9Db2RlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBQcm9tb0NvZGVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBJbnB1dEJhc2UgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTZWFyY2hDb250YWluZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgbWFyZ2luUmlnaHQ6IFwiMFwiLFxuICBtYXJnaW5MZWZ0OiBcIjBcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxuICBkaXNwbGF5OiBcImJsb2NrXCJcbn0pKTtcbmNvbnN0IFNlYXJjaEljb25XcmFwcGVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIlxufSkpO1xuY29uc3QgU3R5bGVkSW5wdXRCYXNlID0gc3R5bGVkKElucHV0QmFzZSkoKCkgPT4gKHtcbiAgY29sb3I6IFwiaW5oZXJpdFwiLFxuICBib3JkZXJCb3R0b206IFwiMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC40MilcIixcbiAgcGFkZGluZ0xlZnQ6IFwiMjVweFwiLFxuICBwYWRkaW5nUmlnaHQ6IFwiMjVweFwiLFxuICBmb250U2l6ZTogXCIxZW1cIlxufSkpO1xuY29uc3QgQ2xvc2VJY29uV3JhcHBlciA9IHN0eWxlZChDbG9zZUljb24pKCgpID0+ICh7XG4gIHBhZGRpbmc6IFwiMnB4XCIsXG4gIGZvbnRTaXplOiBcIjEuNWVtXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogXCIwXCIsXG4gIHJpZ2h0OiBcIjBcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICBjdXJzb3I6IFwicG9pbnRlclwiLFxuICB6SW5kZXg6IFwiMTAwMFwiXG59KSk7XG5cbmNvbnN0IFNlYXJjaCA9ICh7IG9uU2VhcmNoIH0pID0+IHtcbiAgY29uc3QgeyBmaWx0ZXIgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qgc2hvd0Nsb3NlQnRuID0gISFmaWx0ZXJbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdO1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGtleSxcbiAgICAgIG5hdGl2ZUV2ZW50OiB7XG4gICAgICAgIHRhcmdldDogeyB2YWx1ZSB9XG4gICAgICB9XG4gICAgfSA9IGV2ZW50O1xuICAgIGlmIChrZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgb25TZWFyY2goe1xuICAgICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiB2YWx1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICBjb25zdCByZXNldFNlYXJjaCA9ICgpID0+IHtcbiAgICBzZXRTZWFyY2hWYWx1ZShcIlwiKTtcbiAgICBvblNlYXJjaCh7XG4gICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiBcIlwiXG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyB3ZSBuZWVkIHRoaXMgd2hlbiBzZWFyY2ggaXMgcmVzZXQgZnJvbSBvdXRzaWRlIHRoaXMgY29tcG9uZW50XG4gICAgc2V0U2VhcmNoVmFsdWUoZmlsdGVyW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXSk7XG4gIH0sIFtmaWx0ZXJbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPFNlYXJjaENvbnRhaW5lcj5cbiAgICAgICAge3Nob3dDbG9zZUJ0biAmJiAoXG4gICAgICAgICAgPENsb3NlSWNvbldyYXBwZXIgb25DbGljaz17cmVzZXRTZWFyY2h9PlxuICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgIDwvQ2xvc2VJY29uV3JhcHBlcj5cbiAgICAgICAgKX1cbiAgICAgICAgPFNlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICAgIDxTZWFyY2hJY29uIC8+XG4gICAgICAgIDwvU2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgIDxTdHlsZWRJbnB1dEJhc2VcbiAgICAgICAgICBwbGFjZWhvbGRlcj17dChcIm9yZGVyX3NlYXJjaC5vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgaW5wdXRQcm9wcz17eyBcImFyaWEtbGFiZWxcIjogXCJzZWFyY2hcIiB9fVxuICAgICAgICAgIHZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlYXJjaFZhbHVlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgICAgLz5cbiAgICAgIDwvU2VhcmNoQ29udGFpbmVyPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuU2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWFyY2g7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBQYXBlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgSW1wb3J0RXhwb3J0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgU29ydCA9ICh7IG9uU29ydCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dTb3J0LCBzZXRTaG93U29ydF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNvcnRSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZVNvcnRDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoc29ydFJlZi5jdXJyZW50ICYmICFzb3J0UmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgc2V0U2hvd1NvcnQoZmFsc2UpO1xuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93U29ydF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93U29ydCghc2hvd1NvcnQpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuc29ydENvbnRhaW5lcn0gb25DbGljaz17dG9nZ2xlfT5cbiAgICAgIDxTdGFja1xuICAgICAgICByZWY9e3NvcnRSZWZ9XG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgID5cbiAgICAgICAgPEltcG9ydEV4cG9ydEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRJY29ufSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0TGFiZWx9Pnt0KFwic29ydC5zb3J0XCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICB7c2hvd1NvcnQgJiYgKFxuICAgICAgICA8UGFwZXJcbiAgICAgICAgICBlbGV2YXRpb249ezh9XG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuc29ydExpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn1gfVxuICAgICAgICA+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNvcnQoeyBkaXJlY3Rpb246IFwiZGVzY1wiLCBuYW1lOiBcImNyZWF0ZWRcIiB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInNvcnQubmV3X2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Tb3J0KHsgZGlyZWN0aW9uOiBcImFzY1wiLCBuYW1lOiBcImNyZWF0ZWRcIiB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInNvcnQub2xkX2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L1BhcGVyPlxuICAgICAgKX1cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNvcnQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgU3RhdHVzRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJJbmNvbXBsZXRlXCIsIGxhYmVsOiBcIkluY29tcGxldGVcIiB9LFxuICAgIHsgdmFsdWU6IFwiQ29tcGxldGVcIiwgbGFiZWw6IFwiQ29tcGxldGVcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX09XTkVSX1NUQVRVU106IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiU3RhdHVzXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblN0YXR1c0ZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3RhdHVzRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2hlY2tib3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfVElDS0VUX1RZUEUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBUaWNrZXRUeXBlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgc3VtbWl0OiB7IHRpY2tldF90eXBlcyB9LFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9ICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBmaWx0ZXJWYWx1ZXM/LmluY2x1ZGVzKHZhbHVlKVxuICAgICAgPyBmaWx0ZXJWYWx1ZXMuZmlsdGVyKChmKSA9PiBmICE9PSB2YWx1ZSlcbiAgICAgIDogWy4uLmZpbHRlclZhbHVlcywgdmFsdWVdO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXTogbmV3RmlsdGVyc1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SXNFeHBhbmRlZCghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJUaWNrZXQgVHlwZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dGlja2V0X3R5cGVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxCb3ggc3g9e3sgcHk6IDEgfX0ga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHtiZi5uYW1lfX1gfT5cbiAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gaGFuZGxlRmlsdGVyQ2hhbmdlKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCIjMjE5NkYzXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsYWJlbD17YmYubmFtZX1cbiAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0VHlwZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0VHlwZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwiLi9GaWx0ZXJcIjtcbmltcG9ydCBTb3J0IGZyb20gXCIuL1NvcnRcIjtcbmltcG9ydCBTZWFyY2ggZnJvbSBcIi4vU2VhcmNoXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEZpbHRlcnMgPSAoeyBvbkZpbHRlciwgb25Tb3J0LCBvblNlYXJjaCwgb25SZXNldCB9KSA9PiAoXG4gIDxHcmlkIGNvbnRhaW5lciBqdXN0aWZ5PVwiZmxleC1lbmRcIiBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgPEdyaWRcbiAgICAgIGl0ZW1cbiAgICAgIHhzPXs2fVxuICAgICAgY29udGFpbmVyXG4gICAgICBwYWRkaW5nPXsxfVxuICAgICAgZ2FwPXsyfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyU29ydENvbnRhaW5lcn1cbiAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgID5cbiAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgIDxGaWx0ZXIgb25GaWx0ZXI9e29uRmlsdGVyfSBvblJlc2V0PXtvblJlc2V0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgPFNvcnQgb25Tb3J0PXtvblNvcnR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICAgIDxHcmlkIGl0ZW0geHM9ezZ9IGNvbnRhaW5lciBqdXN0aWZ5Q29udGVudD1cImZsZXgtZW5kXCI+XG4gICAgICA8U2VhcmNoIG9uU2VhcmNoPXtvblNlYXJjaH0gLz5cbiAgICA8L0dyaWQ+XG4gIDwvR3JpZD5cbik7XG5cbkZpbHRlcnMucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU29ydDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlcnM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgRm9ybUZvb3RlciA9ICh7IHNhdmVMYWJlbCwgY2FuY2VsTGFiZWwsIG9uQ2xvc2UsIGRpc2FibGVkIH0pID0+IChcbiAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5mb290ZXJ9PlxuICAgIDxCdXR0b25cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ0bn1cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge2NhbmNlbExhYmVsfVxuICAgIDwvQnV0dG9uPlxuICAgIDxCdXR0b25cbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc2F2ZUJ0bn1cbiAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge3NhdmVMYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgPC9Cb3g+XG4pO1xuXG5Gb3JtRm9vdGVyLnByb3BUeXBlcyA9IHtcbiAgc2F2ZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjYW5jZWxMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRm9ybUZvb3RlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRXJyb3JMYWJlbCh7IG1lc3NhZ2UsIGNvbG9yLCBjbGFzc05hbWVzLCBkYXRhVGVzdElkIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3BhblxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZXJyb3JMYWJlbH0gJHtjbGFzc05hbWVzICYmIGNsYXNzTmFtZXN9YH1cbiAgICAgIHN0eWxlPXt7IGNvbG9yIH19XG4gICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICA+XG4gICAgICA8RXJyb3JJY29uIHN4PXt7IGNvbG9yIH19IC8+XG4gICAgICB7bWVzc2FnZX1cbiAgICA8L3NwYW4+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVycm9yTGFiZWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCYWNrZHJvcCwgQ2lyY3VsYXJQcm9ncmVzcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IExvYWRlciA9ICh7IG9wZW4gfSkgPT4gKFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICA8QmFja2Ryb3Agb3Blbj17b3Blbn0gc3g9eyh0aGVtZSkgPT4gKHsgekluZGV4OiB0aGVtZS56SW5kZXguZHJhd2VyICsgMSB9KX0+XG4gICAgPENpcmN1bGFyUHJvZ3Jlc3MgY29sb3I9XCJpbmhlcml0XCIgLz5cbiAgPC9CYWNrZHJvcD5cbik7XG5cbkxvYWRlci5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBMb2FkZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBzaGFsbG93RXF1YWwsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgSW5maW5pdGVTY3JvbGwgZnJvbSBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIjtcbmltcG9ydCBPcmRlcnNMaXN0IGZyb20gXCIuLi9PcmRlcnNMaXN0XCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNeU9yZGVyc1RpY2tldHMgPSAoeyBmZXRjaERhdGEgfSkgPT4ge1xuICBjb25zdCB7IHN1bW1pdCwgbWVtYmVyT3JkZXJzLCBvcmRlcnNfY3VycmVudF9wYWdlLCBvcmRlcnNfbGFzdF9wYWdlIH0gPVxuICAgIHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGlkPVwiaW5maW5pdGVXcmFwcGVyXCIgY2xhc3NOYW1lPXtzdHlsZXMubXlPcmRlcnNXcmFwcGVyfT5cbiAgICAgIDxJbmZpbml0ZVNjcm9sbFxuICAgICAgICBkYXRhTGVuZ3RoPXttZW1iZXJPcmRlcnM/Lmxlbmd0aH1cbiAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKG9yZGVyc19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgaGFzTW9yZT17b3JkZXJzX2N1cnJlbnRfcGFnZSA8IG9yZGVyc19sYXN0X3BhZ2V9XG4gICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgID5cbiAgICAgICAge21lbWJlck9yZGVycz8ubWFwKChvcmRlcikgPT4gKFxuICAgICAgICAgIDxPcmRlcnNMaXN0XG4gICAgICAgICAgICBrZXk9e29yZGVyLm51bWJlciArIG9yZGVyLmlkfVxuICAgICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBUaWNrZXRzSWNvbiA9ICgpID0+IChcbiAgPHN2Z1xuICAgIHdpZHRoPVwiMTI5XCJcbiAgICBoZWlnaHQ9XCI4MFwiXG4gICAgdmlld0JveD1cIjAgMCAxMjkgODBcIlxuICAgIGZpbGw9XCJub25lXCJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTEyNS4xMjIgMzYuNDc4MUMxMjQuODE0IDM3LjUxMTIgMTIzLjczOCAzOC4wODkxIDEyMi42NjEgMzguMDM3NkMxMTguNTA2IDM3LjgzODYgMTE0LjU5MyA0MC40NzU0IDExMy4zNDkgNDQuNjQxMkMxMTIuMTA1IDQ4LjgwNzMgMTEzLjkzMiA1My4xNTc2IDExNy41MTcgNTUuMjY5N0MxMTguNDQ2IDU1LjgxNjkgMTE5LjAyOCA1Ni44ODk5IDExOC43MiA1Ny45MjMxTDExNi4zNjkgNjUuNzk2N0MxMTYuMDUzIDY2Ljg1NTEgMTE0LjkzOSA2Ny40NTcgMTEzLjg4MSA2Ny4xNDFMMzAuNzY3NSA0Mi4zMjcxQzI5LjcwOTEgNDIuMDExMiAyOS4xMDcyIDQwLjg5NyAyOS40MjMyIDM5LjgzODZMNDAuMzQzOSAzLjI2MDE2QzQwLjY1OTkgMi4yMDE3NiA0MS43NzQgMS41OTk5MSA0Mi44MzI0IDEuOTE1OUwxMjUuOTQ2IDI2LjcyOTdDMTI3LjAwNCAyNy4wNDU3IDEyNy42MDYgMjguMTU5OSAxMjcuMjkgMjkuMjE4M0wxMjUuMTIyIDM2LjQ3ODFaXCJcbiAgICAgIGZpbGw9XCJ3aGl0ZVwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0xMTMuMzQ5IDQ0LjY0MTJMMTEyLjM5MSA0NC4zNTUxTDExMi4zOTEgNDQuMzU1MkwxMTMuMzQ5IDQ0LjY0MTJaTTExNy41MTcgNTUuMjY5N0wxMTcuMDA5IDU2LjEzMTJMMTE3LjUxNyA1NS4yNjk3Wk0xMjIuNjYxIDM4LjAzNzZMMTIyLjcwOSAzNy4wMzg3QzExOC4xMDUgMzYuODE4MyAxMTMuNzY5IDM5LjczODEgMTEyLjM5MSA0NC4zNTUxTDExMy4zNDkgNDQuNjQxMkwxMTQuMzA3IDQ0LjkyNzRDMTE1LjQxNiA0MS4yMTI3IDExOC45MDYgMzguODU4OSAxMjIuNjE0IDM5LjAzNjRMMTIyLjY2MSAzOC4wMzc2Wk0xMTMuMzQ5IDQ0LjY0MTJMMTEyLjM5MSA0NC4zNTUyQzExMS4wMTIgNDguOTcyNSAxMTMuMDM4IDUzLjc5MTUgMTE3LjAwOSA1Ni4xMzEyTDExNy41MTcgNTUuMjY5N0wxMTguMDI0IDU0LjQwODFDMTE0LjgyNiA1Mi41MjM4IDExMy4xOTggNDguNjQyMSAxMTQuMzA3IDQ0LjkyNzNMMTEzLjM0OSA0NC42NDEyWk0xMTguNzIgNTcuOTIzMUwxMTcuNzYyIDU3LjYzN0wxMTUuNDExIDY1LjUxMDZMMTE2LjM2OSA2NS43OTY3TDExNy4zMjcgNjYuMDgyOEwxMTkuNjc4IDU4LjIwOTFMMTE4LjcyIDU3LjkyMzFaTTExMy44ODEgNjcuMTQxTDExNC4xNjcgNjYuMTgyOEwzMS4wNTM1IDQxLjM2ODlMMzAuNzY3NSA0Mi4zMjcxTDMwLjQ4MTQgNDMuMjg1NEwxMTMuNTk1IDY4LjA5OTJMMTEzLjg4MSA2Ny4xNDFaTTI5LjQyMzIgMzkuODM4NkwzMC4zODE0IDQwLjEyNDdMNDEuMzAyMSAzLjU0NjI0TDQwLjM0MzkgMy4yNjAxNkwzOS4zODU3IDIuOTc0MDlMMjguNDY1IDM5LjU1MjVMMjkuNDIzMiAzOS44Mzg2Wk00Mi44MzI0IDEuOTE1OUw0Mi41NDY0IDIuODc0MTFMMTI1LjY2IDI3LjY4NzlMMTI1Ljk0NiAyNi43Mjk3TDEyNi4yMzIgMjUuNzcxNUw0My4xMTg1IDAuOTU3Njk3TDQyLjgzMjQgMS45MTU5Wk0xMjcuMjkgMjkuMjE4M0wxMjYuMzMyIDI4LjkzMjJMMTI0LjE2NCAzNi4xOTJMMTI1LjEyMiAzNi40NzgxTDEyNi4wODEgMzYuNzY0MkwxMjguMjQ4IDI5LjUwNDRMMTI3LjI5IDI5LjIxODNaTTEyNS45NDYgMjYuNzI5N0wxMjUuNjYgMjcuNjg3OUMxMjYuMTg5IDI3Ljg0NTkgMTI2LjQ5IDI4LjQwMyAxMjYuMzMyIDI4LjkzMjJMMTI3LjI5IDI5LjIxODNMMTI4LjI0OCAyOS41MDQ0QzEyOC43MjIgMjcuOTE2OCAxMjcuODE5IDI2LjI0NTUgMTI2LjIzMiAyNS43NzE1TDEyNS45NDYgMjYuNzI5N1pNMzAuNzY3NSA0Mi4zMjcxTDMxLjA1MzUgNDEuMzY4OUMzMC41MjQzIDQxLjIxMDkgMzAuMjIzNCA0MC42NTM5IDMwLjM4MTQgNDAuMTI0N0wyOS40MjMyIDM5LjgzODZMMjguNDY1IDM5LjU1MjVDMjcuOTkxIDQxLjE0MDEgMjguODkzOCA0Mi44MTE0IDMwLjQ4MTQgNDMuMjg1NEwzMC43Njc1IDQyLjMyNzFaTTExNi4zNjkgNjUuNzk2N0wxMTUuNDExIDY1LjUxMDZDMTE1LjI1MyA2Ni4wMzk4IDExNC42OTYgNjYuMzQwOCAxMTQuMTY3IDY2LjE4MjhMMTEzLjg4MSA2Ny4xNDFMMTEzLjU5NSA2OC4wOTkyQzExNS4xODIgNjguNTczMiAxMTYuODUzIDY3LjY3MDQgMTE3LjMyNyA2Ni4wODI4TDExNi4zNjkgNjUuNzk2N1pNMTE3LjUxNyA1NS4yNjk3TDExNy4wMDkgNTYuMTMxMkMxMTcuNjUzIDU2LjUxMDUgMTE3LjkwNSA1Ny4xNTcgMTE3Ljc2MiA1Ny42MzdMMTE4LjcyIDU3LjkyMzFMMTE5LjY3OCA1OC4yMDkxQzEyMC4xNTIgNTYuNjIyOCAxMTkuMjM5IDU1LjEyMzQgMTE4LjAyNCA1NC40MDgxTDExNy41MTcgNTUuMjY5N1pNNDAuMzQzOSAzLjI2MDE2TDQxLjMwMjEgMy41NDYyNEM0MS40NjAxIDMuMDE3MDQgNDIuMDE3MSAyLjcxNjExIDQyLjU0NjQgMi44NzQxMUw0Mi44MzI0IDEuOTE1OUw0My4xMTg1IDAuOTU3Njk3QzQxLjUzMDkgMC40ODM3MSAzOS44NTk2IDEuMzg2NDggMzkuMzg1NyAyLjk3NDA5TDQwLjM0MzkgMy4yNjAxNlpNMTIyLjY2MSAzOC4wMzc2TDEyMi42MTQgMzkuMDM2NEMxMjQuMDIxIDM5LjEwMzggMTI1LjYwNyAzOC4zNTA1IDEyNi4wODEgMzYuNzY0MkwxMjUuMTIyIDM2LjQ3ODFMMTI0LjE2NCAzNi4xOTJDMTI0LjAyMSAzNi42NzIgMTIzLjQ1NiAzNy4wNzQ0IDEyMi43MDkgMzcuMDM4N0wxMjIuNjYxIDM4LjAzNzZaXCJcbiAgICAgIGZpbGw9XCIjQkRCREJEXCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTEwNy45MDMgMjIuNjc1OEw5Ni41Njk2IDYwLjYzNzlcIlxuICAgICAgc3Ryb2tlPVwiI0JEQkRCRFwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZURhc2hhcnJheT1cIjIgNVwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk05MS43NDIgNDUuODk1MkM5MS43NDE5IDQ2Ljk3MzQgOTAuODc2NSA0Ny44MzQ3IDg5LjgyOTcgNDguMDkzM0M4NS43OTA2IDQ5LjA5MTMgODIuNzk1OSA1Mi43Mzc2IDgyLjc5NTMgNTcuMDg1MkM4Mi43OTQ4IDYxLjQzMjkgODUuNzg4NyA2NS4wNzkyIDg5LjgyNzYgNjYuMDc3OUM5MC44NzQyIDY2LjMzNjcgOTEuNzM5NCA2Ny4xOTgzIDkxLjczOTIgNjguMjc2NEw5MS43MzgyIDc2LjQ5MzVDOTEuNzM4MSA3Ny41OTgxIDkwLjg0MjYgNzguNDkzNCA4OS43MzggNzguNDkzM0wyLjk5OTcyIDc4LjQ4MjdDMS44OTUxNSA3OC40ODI1IDAuOTk5ODI1IDc3LjU4NyAwLjk5OTk2IDc2LjQ4MjRMMS4wMDQ2NCAzOC4zMDg2QzEuMDA0NzcgMzcuMjA0IDEuOTAwMzEgMzYuMzA4NyAzLjAwNDg4IDM2LjMwODhMODkuNzQzMiAzNi4zMTk1QzkwLjg0NzcgMzYuMzE5NiA5MS43NDMxIDM3LjIxNTEgOTEuNzQyOSAzOC4zMTk3TDkxLjc0MiA0NS44OTUyWlwiXG4gICAgICBmaWxsPVwid2hpdGVcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNODIuNzk1MyA1Ny4wODUyTDgxLjc5NTMgNTcuMDg1MUw4MS43OTUzIDU3LjA4NTFMODIuNzk1MyA1Ny4wODUyWk04OS44Mjk3IDQ4LjA5MzNMOTAuMDY5NiA0OS4wNjQxTDg5LjgyOTcgNDguMDkzM1pNODkuODI5NyA0OC4wOTMzTDg5LjU4OTkgNDcuMTIyNUM4NS4xMTUgNDguMjI4MSA4MS43OTYgNTIuMjY2NyA4MS43OTUzIDU3LjA4NTFMODIuNzk1MyA1Ny4wODUyTDgzLjc5NTMgNTcuMDg1NEM4My43OTU4IDUzLjIwODQgODYuNDY2MyA0OS45NTQ0IDkwLjA2OTYgNDkuMDY0MUw4OS44Mjk3IDQ4LjA5MzNaTTgyLjc5NTMgNTcuMDg1Mkw4MS43OTUzIDU3LjA4NTFDODEuNzk0NyA2MS45MDM2IDg1LjExMjkgNjUuOTQyMiA4OS41ODc1IDY3LjA0ODdMODkuODI3NiA2Ni4wNzc5TDkwLjA2NzYgNjUuMTA3MUM4Ni40NjQ0IDY0LjIxNjIgODMuNzk0OCA2MC45NjIyIDgzLjc5NTMgNTcuMDg1M0w4Mi43OTUzIDU3LjA4NTJaTTkxLjczOTIgNjguMjc2NEw5MC43MzkyIDY4LjI3NjNMOTAuNzM4MiA3Ni40OTM0TDkxLjczODIgNzYuNDkzNUw5Mi43MzgyIDc2LjQ5MzdMOTIuNzM5MiA2OC4yNzY2TDkxLjczOTIgNjguMjc2NFpNODkuNzM4IDc4LjQ5MzNMODkuNzM4MSA3Ny40OTMzTDIuOTk5ODQgNzcuNDgyN0wyLjk5OTcyIDc4LjQ4MjdMMi45OTk2IDc5LjQ4MjdMODkuNzM3OSA3OS40OTMzTDg5LjczOCA3OC40OTMzWk0wLjk5OTk2IDc2LjQ4MjRMMS45OTk5NiA3Ni40ODI1TDIuMDA0NjQgMzguMzA4N0wxLjAwNDY0IDM4LjMwODZMMC4wMDQ2Mzc3NiAzOC4zMDg1TC0zLjk2MDc1ZS0wNSA3Ni40ODIzTDAuOTk5OTYgNzYuNDgyNFpNMy4wMDQ4OCAzNi4zMDg4TDMuMDA0NzYgMzcuMzA4OEw4OS43NDMgMzcuMzE5NUw4OS43NDMyIDM2LjMxOTVMODkuNzQzMyAzNS4zMTk1TDMuMDA1MDEgMzUuMzA4OEwzLjAwNDg4IDM2LjMwODhaTTkxLjc0MjkgMzguMzE5N0w5MC43NDI5IDM4LjMxOTZMOTAuNzQyIDQ1Ljg5NTFMOTEuNzQyIDQ1Ljg5NTJMOTIuNzQyIDQ1Ljg5NTNMOTIuNzQyOSAzOC4zMTk4TDkxLjc0MjkgMzguMzE5N1pNODkuNzQzMiAzNi4zMTk1TDg5Ljc0MyAzNy4zMTk1QzkwLjI5NTMgMzcuMzE5NSA5MC43NDMgMzcuNzY3MyA5MC43NDI5IDM4LjMxOTZMOTEuNzQyOSAzOC4zMTk3TDkyLjc0MjkgMzguMzE5OEM5Mi43NDMxIDM2LjY2MyA5MS40MDAxIDM1LjMxOTcgODkuNzQzMyAzNS4zMTk1TDg5Ljc0MzIgMzYuMzE5NVpNMi45OTk3MiA3OC40ODI3TDIuOTk5ODQgNzcuNDgyN0MyLjQ0NzU1IDc3LjQ4MjYgMS45OTk4OSA3Ny4wMzQ4IDEuOTk5OTYgNzYuNDgyNUwwLjk5OTk2IDc2LjQ4MjRMLTMuOTYwNzVlLTA1IDc2LjQ4MjNDLTAuMDAwMjQyNjE5IDc4LjEzOTIgMS4zNDI3NCA3OS40ODI1IDIuOTk5NiA3OS40ODI3TDIuOTk5NzIgNzguNDgyN1pNOTEuNzM4MiA3Ni40OTM1TDkwLjczODIgNzYuNDkzNEM5MC43MzgyIDc3LjA0NTcgOTAuMjkwNCA3Ny40OTM0IDg5LjczODEgNzcuNDkzM0w4OS43MzggNzguNDkzM0w4OS43Mzc5IDc5LjQ5MzNDOTEuMzk0NyA3OS40OTM1IDkyLjczOCA3OC4xNTA1IDkyLjczODIgNzYuNDkzN0w5MS43MzgyIDc2LjQ5MzVaTTg5LjgyNzYgNjYuMDc3OUw4OS41ODc1IDY3LjA0ODdDOTAuMzEyOCA2Ny4yMjggOTAuNzM5MyA2Ny43NzU0IDkwLjczOTIgNjguMjc2M0w5MS43MzkyIDY4LjI3NjRMOTIuNzM5MiA2OC4yNzY2QzkyLjczOTUgNjYuNjIxMSA5MS40MzU2IDY1LjQ0NTQgOTAuMDY3NiA2NS4xMDcxTDg5LjgyNzYgNjYuMDc3OVpNMS4wMDQ2NCAzOC4zMDg2TDIuMDA0NjQgMzguMzA4N0MyLjAwNDcxIDM3Ljc1NjQgMi40NTI0OCAzNy4zMDg4IDMuMDA0NzYgMzcuMzA4OEwzLjAwNDg4IDM2LjMwODhMMy4wMDUwMSAzNS4zMDg4QzEuMzQ4MTUgMzUuMzA4NiAwLjAwNDg0MDc3IDM2LjY1MTYgMC4wMDQ2Mzc3NiAzOC4zMDg1TDEuMDA0NjQgMzguMzA4NlpNODkuODI5NyA0OC4wOTMzTDkwLjA2OTYgNDkuMDY0MUM5MS40Mzc2IDQ4LjcyNjEgOTIuNzQxOCA0Ny41NTA4IDkyLjc0MiA0NS44OTUzTDkxLjc0MiA0NS44OTUyTDkwLjc0MiA0NS44OTUxQzkwLjc0MTkgNDYuMzk2IDkwLjMxNTMgNDYuOTQzMyA4OS41ODk5IDQ3LjEyMjVMODkuODI5NyA0OC4wOTMzWlwiXG4gICAgICBmaWxsPVwiI0JEQkRCRFwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk03MS4yOTQ5IDM3LjU5NTdMNzEuMjkwMSA3Ny4yMTM2XCJcbiAgICAgIHN0cm9rZT1cIiNCREJEQkRcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VEYXNoYXJyYXk9XCIyIDVcIlxuICAgIC8+XG4gIDwvc3ZnPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0c0ljb247XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFRpY2tldHNJY29uIGZyb20gXCIuL1RpY2tldHNJY29uXCI7XG5pbXBvcnQgeyBUQUJTIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBOb1RpY2tldHNGb3VuZCA9ICh7IHBhZ2VWaWV3LCBvbkNsaWNrIH0pID0+IHtcbiAgY29uc3QgeyBzdW1taXQsIGxvYWRpbmcgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30pO1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZ2V0Q29udGVudCA9ICgpID0+IHtcbiAgICBjb25zdCBtYWlsdG9UYWcgPSAoXG4gICAgICA8YSBocmVmPXtgbWFpbHRvOiR7c3VtbWl0LnN1cHBvcnRfZW1haWx9YH0+XG4gICAgICAgIHt0KFwiZ2VuZXJhbC5jb250YWN0X3N1cHBvcnRcIil9XG4gICAgICA8L2E+XG4gICAgKTtcblxuICAgIHN3aXRjaCAocGFnZVZpZXcpIHtcbiAgICAgIGNhc2UgVEFCUy5PUkRFUlM6IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0aXRsZTogdChcIm5vX3Jlc3VsdHMub3JkZXJzLnRpdGxlXCIpLFxuICAgICAgICAgIGJvZHk6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHt0KFwibm9fcmVzdWx0cy5vcmRlcnMuYm9keVwiKX0ge21haWx0b1RhZ30uXG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApLFxuICAgICAgICAgIGJ1dHRvbkxhYmVsOiB0KFwibGFiZWxzLmFzc2lnbmVkX3RvX21lXCIpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjYXNlIFRBQlMuVElDS0VUUzoge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRpdGxlOiB0KFwibm9fcmVzdWx0cy5hc3NpZ25lZC50aXRsZVwiKSxcbiAgICAgICAgICBib2R5OiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICB7dChcIm5vX3Jlc3VsdHMuYXNzaWduZWQuYm9keVwiKX0ge21haWx0b1RhZ30uXG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApLFxuICAgICAgICAgIGJ1dHRvbkxhYmVsOiB0KFwib3JkZXJzLnRpdGxlXCIpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGl0bGU6IHQoXCJub19yZXN1bHRzLmZpbHRlci50aXRsZVwiKSxcbiAgICAgICAgICBib2R5OiB0KFwibm9fcmVzdWx0cy5maWx0ZXIuYm9keVwiKSxcbiAgICAgICAgICBidXR0b25MYWJlbDogdChcImZpbHRlci5jbGVhcl9maWx0ZXJzXCIpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHsgdGl0bGUsIGJvZHksIGJ1dHRvbkxhYmVsIH0gPSBnZXRDb250ZW50KCk7XG5cbiAgaWYgKGxvYWRpbmcpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaWNvbldyYXBwZXJ9PlxuICAgICAgICA8VGlja2V0c0ljb24gLz5cbiAgICAgIDwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICB7dGl0bGV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeVxuICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5ib2R5fVxuICAgICAgICBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICA+XG4gICAgICAgIHtib2R5fVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPEJ1dHRvblxuICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgID5cbiAgICAgICAge2J1dHRvbkxhYmVsfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBOb1RpY2tldHNGb3VuZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRGl2aWRlciBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVPcmRlclRvdGFscywgZm9ybWF0Q3VycmVuY3kgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5VGFibGUgPSAoeyBvcmRlciwgc3VtbWl0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7XG4gICAgZGlzY291bnRUb3RhbCxcbiAgICByZWZ1bmRUb3RhbCxcbiAgICBhbW91bnRUb3RhbCxcbiAgICBzdWJUb3RhbCxcbiAgICB0aWNrZXRTdW1tYXJ5LFxuICAgIHRheGVzU3VtbWFyeVxuICB9ID0gY2FsY3VsYXRlT3JkZXJUb3RhbHMoeyBvcmRlciwgc3VtbWl0IH0pO1xuXG4gIGNvbnN0IGh1bmRyZWQgPSAxMDA7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVRhYmxlfT5cbiAgICAgIHt0aWNrZXRTdW1tYXJ5Py5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dGlja2V0U3VtbWFyeS5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGlja2V0VG90YWwgPVxuICAgICAgICAgICAgICAodGlja2V0LnF0eSAqICh0aWNrZXQudGlja2V0X3R5cGUuY29zdCAqIGh1bmRyZWQpKSAvIGh1bmRyZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAga2V5PXtgdGl4b3JkZXJfJHt0aWNrZXQudGlja2V0X3R5cGUuY3JlYXRlZH1gfVxuICAgICAgICAgICAgICAgIHN4PXt7IHBiOiAxIH19XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1zdW1tYXJ5LWl0ZW1pemVkXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIHh7dGlja2V0LnF0eX0ge3RpY2tldC50aWNrZXRfdHlwZS5uYW1lfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0VG90YWwsIHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH0pfVxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAgPERpdmlkZXIgLz5cbiAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwdDogMSwgcGI6IDEgfX0+XG4gICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5zdWJfdG90YWxcIil9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgIHtzdWJUb3RhbH1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgICAge29yZGVyLnRheGVzX2Ftb3VudCA+IDAgJiZcbiAgICAgICAgdGF4ZXNTdW1tYXJ5Py5sZW5ndGggPiAwICYmXG4gICAgICAgIHRheGVzU3VtbWFyeS5tYXAoKHRheCkgPT4gKFxuICAgICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fSBrZXk9e3RheC5pZH0+XG4gICAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgICAge3RheC5uYW1lfVxuICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgICB7dGF4LmFtb3VudH1cbiAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICkpfVxuICAgICAge29yZGVyLmRpc2NvdW50X2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuZGlzY291bnRzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Rpc2NvdW50VG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge3JlZnVuZFRvdGFsID4gMCAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICB7cmVmdW5kVG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPERpdmlkZXIgLz5cbiAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwdDogMSwgcGI6IDEgfX0+XG4gICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS50b3RhbFwiKX1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAge2Ftb3VudFRvdGFsfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5PcmRlclN1bW1hcnlUYWJsZS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGN1cnJlbmN5OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2NvdW50X2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB0YXhlc19hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gIH0pLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeVRhYmxlO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgdGlja2V0c1JlZnVuZGFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IHVzZVN1bW1pdERldGFpbHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcblxuY29uc3QgUmVmdW5kRW1haWxTdXBwb3J0ID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRzLFxuICBzdWJtaXRSZXF1ZXN0LFxuICBvblJlZnVuZENsaWNrLFxuICBvblJlZnVuZERldGFpbENsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBpc1N0YXJ0ZWQgfSA9IHVzZVN1bW1pdERldGFpbHMoeyBzdW1taXQgfSk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCBpc0luUmVmdW5kYWJsZVBlcmlvZCA9XG4gICAgc3VtbWl0LnJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSA+IG5vdztcbiAgY29uc3QgYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXQgPSB0aWNrZXRzUmVmdW5kYWJsZSh0aWNrZXRzKTtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID0gISEoXG4gICAgaXNJblJlZnVuZGFibGVQZXJpb2QgJiZcbiAgICAhaXNTdGFydGVkICYmXG4gICAgYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXRcbiAgKTtcbiAgY29uc3QgaGFzUmVmdW5kUmVxdWVzdHMgPSB0aWNrZXRzPy5zb21lKCh0KSA9PiB0LnJlZnVuZF9yZXF1ZXN0cy5sZW5ndGggPiAwKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2lzUmVmdW5kYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHJlcXVlc3QgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgICAgJHtzdWJtaXRSZXF1ZXN0ID8gc3R5bGVzLnJlZnVuZERpc2FibGVkIDogXCJcIn1gfVxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBvbkNsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIGRpc2FibGVkPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICB7aGFzUmVmdW5kUmVxdWVzdHMgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCBkZXRhaWxzIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBvbkNsaWNrPXtvblJlZnVuZERldGFpbENsaWNrfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJlbWFpbCBzdXBwb3J0IGJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIHRhcmdldD1cIl90b3BcIlxuICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgaHJlZj17YG1haWx0bzoke3N1bW1pdC5zdXBwb3J0X2VtYWlsfWB9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfaW5mby5lbWFpbF9zdXBwb3J0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC8+XG4gICk7XG59O1xuXG5SZWZ1bmRFbWFpbFN1cHBvcnQucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlZnVuZERldGFpbENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgc3VibWl0UmVxdWVzdDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZEVtYWlsU3VwcG9ydDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5VGFibGUgZnJvbSBcIi4vT3JkZXJTdW1tYXJ5VGFibGVcIjtcbmltcG9ydCBSZWZ1bmRFbWFpbFN1cHBvcnQgZnJvbSBcIi4vUmVmdW5kRW1haWxTdXBwb3J0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyU3VtbWFyeSA9ICh7XG4gIG9yZGVyLFxuICBzdW1taXQsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVdyYXBwZXJ9XG4gICAgICAgIHN4PXt7IHB0OiA0LCBweDogNCB9fVxuICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXN1bW1hcnktY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPGgzPnt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9zdW1tYXJ5XCIpfTwvaDM+XG4gICAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgeHM9ezEyfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb31cbiAgICAgICAgICAgIHN4PXt7IHBiOiAzIH19XG4gICAgICAgICAgICBpdGVtXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE9yZGVyU3VtbWFyeVRhYmxlIG9yZGVyPXtvcmRlcn0gc3VtbWl0PXtzdW1taXR9IC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggeHM9ezEyfSBzeD17eyBwYjogMyB9fT5cbiAgICAgICAgPFJlZnVuZEVtYWlsU3VwcG9ydFxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBvblJlZnVuZERldGFpbENsaWNrPXtvblJlZnVuZERldGFpbENsaWNrfVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG59O1xuT3JkZXJTdW1tYXJ5LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZW1iZXJUaWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pLFxuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgc3VibWl0UmVxdWVzdDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgQXNzaWduVG9NZSA9ICh7IGZldGNoRGF0YSB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgdXNlclRpY2tldHMsXG4gICAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSxcbiAgICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlXG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldENvbnRhaW5lcn0+XG4gICAgICA8ZGl2IGlkPVwiYXNzaWduZWRUb01lV3JhcHBlclwiIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkVG9NZVdyYXBwZXJ9PlxuICAgICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgICBkYXRhTGVuZ3RoPXt1c2VyVGlja2V0cz8ubGVuZ3RofVxuICAgICAgICAgIG5leHQ9eygpID0+IGZldGNoRGF0YSh1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlICsgT05FX1BBR0VfTkVYVCl9XG4gICAgICAgICAgaGFzTW9yZT17dXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSA8IHVzZXJfdGlja2V0c19sYXN0X3BhZ2V9XG4gICAgICAgICAgc2Nyb2xsVGhyZXNob2xkPXsxfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfT5cbiAgICAgICAgICAgIHt1c2VyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgIGlzUmVmdW5kTW9kYWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17W119XG4gICAgICAgICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvSW5maW5pdGVTY3JvbGw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnblRvTWU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIEdyaWQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25lZFRvID0gKHsgZW1haWwgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX3RvXCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGRhdGEtdGVzdGlkPVwiYXR0ZW5kZWUtc3RhdHVzLWFzc2lnbmVkXCI+XG4gICAgICAgIHtlbWFpbH1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IEV4dGVybmFsQXNzaWduZWRUbyA9ICh7IGZpcnN0TmFtZSwgbGFzdE5hbWUgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX2J5XCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiPlxuICAgICAgICB7Zmlyc3ROYW1lfSB7bGFzdE5hbWV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBNYW5hZ2VGb3IgPSAoeyBmaXJzdE5hbWUsIGxhc3ROYW1lIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9Pnt0KFwidGlja2V0X3N0YXR1cy5tYW5hZ2VfZm9yXCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiPlxuICAgICAgICB7Zmlyc3ROYW1lfSB7bGFzdE5hbWV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBBdHRlbmRlZVN0YXR1cyA9ICh7IHRpY2tldCwgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSAhdGlja2V0Lm93bmVyPy5lbWFpbCAmJiB0aWNrZXQuaXNfYWN0aXZlO1xuICBjb25zdCBpc0RlbGVnYXRlZCA9ICEhdGlja2V0Lm93bmVyPy5tYW5hZ2VyX2lkO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0T3duZXJFbWFpbH1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJhdHRlbmRlZS1zdGF0dXMtdW5hc3NpZ25lZFwiXG4gICAgICA+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hdHRlbmRlZV9zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICApO1xuICB9XG5cbiAgaWYgKHRpY2tldC5vd25lcj8uZW1haWwpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICA8R3JpZCBpdGVtPlxuICAgICAgICAgIDxBc3NpZ25lZFRvIGVtYWlsPXt0aWNrZXQub3duZXIuZW1haWx9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAge2lzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCAmJiAoXG4gICAgICAgICAgPEdyaWQgaXRlbSBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25lZEJ5VGV4dH0+XG4gICAgICAgICAgICA8RXh0ZXJuYWxBc3NpZ25lZFRvXG4gICAgICAgICAgICAgIGZpcnN0TmFtZT17dGlja2V0Lm9yZGVyPy5vd25lcl9maXJzdF9uYW1lfVxuICAgICAgICAgICAgICBsYXN0TmFtZT17dGlja2V0Lm9yZGVyPy5vd25lcl9sYXN0X25hbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgICAge2lzRGVsZWdhdGVkICYmIChcbiAgICAgICAgICA8R3JpZCBpdGVtIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkQnlUZXh0fT5cbiAgICAgICAgICAgIDxNYW5hZ2VGb3JcbiAgICAgICAgICAgICAgZmlyc3ROYW1lPXt0aWNrZXQub3duZXI/LmZpcnN0X25hbWV9XG4gICAgICAgICAgICAgIGxhc3ROYW1lPXt0aWNrZXQub3duZXI/Lmxhc3RfbmFtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgPC9HcmlkPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbkF0dGVuZGVlU3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBpc19hY3RpdmU6IFByb3BUeXBlcy5ib29sXG4gIH0pLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBdHRlbmRlZVN0YXR1cztcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjUgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBPTkVfUkVUUlkgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmNvbnN0IEJhZGdlRmVhdHVyZUltYWdlID0gKHsgc3JjLCBhbHQsIGNsYXNzTmFtZSwgbWF4UmV0cmllcyA9IE9ORV9SRVRSWSB9KSA9PiB7XG4gIGNvbnN0IFtjdXJyZW50U3JjLCBzZXRDdXJyZW50U3JjXSA9IHVzZVN0YXRlKHNyYyk7XG4gIGNvbnN0IFtyZXRyeUNvdW50LCBzZXRSZXRyeUNvdW50XSA9IHVzZVN0YXRlKDApO1xuICBjb25zdCBbaGFzRXJyb3IsIHNldEhhc0Vycm9yXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBoYW5kbGVFcnJvciA9ICgpID0+IHtcbiAgICBpZiAocmV0cnlDb3VudCA8IG1heFJldHJpZXMpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXRDdXJyZW50U3JjKGAke3NyY30/JnQ9JHtEYXRlLm5vdygpfWApO1xuICAgICAgICBzZXRSZXRyeUNvdW50KHJldHJ5Q291bnQgKyBPTkVfUkVUUlkpO1xuICAgICAgfSwgTUlMTElTRUNfVE9fU0VDICogKHJldHJ5Q291bnQgKyBPTkVfUkVUUlkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0SGFzRXJyb3IodHJ1ZSk7XG4gICAgfVxuICB9O1xuXG4gIGlmIChoYXNFcnJvcikge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfSB0aXRsZT17YWx0fT5cbiAgICAgICAge2FsdH1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxpbWdcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgc3JjPXtjdXJyZW50U3JjfVxuICAgICAgYWx0PXthbHR9XG4gICAgICBvbkVycm9yPXtoYW5kbGVFcnJvcn1cbiAgICAvPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQmFkZ2VGZWF0dXJlSW1hZ2U7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJMaXN0SXRlbSA9ICh7XG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIG9uUGFnaW5hdGVDbGljayxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpdGVtc1RvRGlzcGxheSwgc2V0SXRlbXNUb0Rpc3BsYXldID0gdXNlU3RhdGUoXG4gICAgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9LCBbb3JkZXI/LnRpY2tldHNfdG90YWxdKTtcblxuICBpZiAoIW9yZGVyPy5tZW1iZXJUaWNrZXRzPy5sZW5ndGgpIHJldHVybiBudWxsO1xuICBjb25zdCBzbGljZWRUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LnNsaWNlKDAsIGl0ZW1zVG9EaXNwbGF5KTtcblxuICBjb25zdCBvblZpZXdNb3JlID0gKCkgPT4ge1xuICAgIGlmIChvcmRlcj8udGlja2V0c190b3RhbCA+IG9yZGVyPy5tZW1iZXJUaWNrZXRzLmxlbmd0aCkge1xuICAgICAgb25QYWdpbmF0ZUNsaWNrKCk7XG4gICAgfVxuICAgIHNldEl0ZW1zVG9EaXNwbGF5KGl0ZW1zVG9EaXNwbGF5ICsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcbiAgfTtcblxuICBjb25zdCBvblZpZXdMZXNzID0gKCkgPT4gc2V0SXRlbXNUb0Rpc3BsYXkoUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBpc1JlZnVuZE1vZGFsPXtmYWxzZX1cbiAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9eyEhdGlja2V0c1RvUmVmdW5kLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZCl9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgICB7b3JkZXI/LnRpY2tldHNfdG90YWwgPiBpdGVtc1RvRGlzcGxheSA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IG1vcmUgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdNb3JlfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLnZpZXdfbW9yZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgICAge3NsaWNlZFRpY2tldHM/Lmxlbmd0aCA+IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCAmJlxuICAgICAgc2xpY2VkVGlja2V0cz8ubGVuZ3RoID09PSBvcmRlcj8udGlja2V0c190b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IGxlc3MgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdMZXNzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLnZpZXdfbGVzc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJMaXN0SXRlbS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdEl0ZW07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJ1dHRvbiwgQm94LCBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IENoZWNrYm94IGZyb20gXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRSZWFzc2lnbkRhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuL0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsIGZyb20gXCIuLi9UaWNrZXREZXRhaWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0IFRpY2tldEFzc2lnbiBmcm9tIFwiLi4vVGlja2V0QXNzaWduXCI7XG5pbXBvcnQgeyByZXNldFRpY2tldCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgQmFkZ2VGZWF0dXJlSW1hZ2UgZnJvbSBcIi4vQmFkZ2VGZWF0dXJlSW1hZ2VcIjtcblxuY29uc3QgbW9kYWxWaWV3cyA9IHtcbiAgZGV0YWlsOiBcIkRFVEFJTFwiLFxuICByZWFzc2lnbjogXCJSRUFTU0lHTlwiLFxuICBhc3NpZ246IFwiQVNTSUdOXCJcbn07XG5cbmNvbnN0IFRpY2tldENUQXMgPSAoe1xuICBpc0luY29tcGxldGUsXG4gIGlzVW5hc3NpZ25lZCxcbiAgaXNSZWFzc2lnbmFibGUsXG4gIG9uT3BlbkNsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBpZiAoaXNVbmFzc2lnbmVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduVGlja2V0QnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLmFzc2lnbil9XG4gICAgICA+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25fdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFN0YWNrIGFsaWduSXRlbXM9XCJjZW50ZXJcIiBkaXJlY3Rpb249XCJyb3dcIj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld0ZpbmlzaFRpY2tldEJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5kZXRhaWwpfVxuICAgICAgPlxuICAgICAgICB7aXNJbmNvbXBsZXRlXG4gICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5maW5pc2hfdGlja2V0XCIpXG4gICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAge2lzUmVhc3NpZ25hYmxlICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWFzc2lnbiB0aWNrZXQgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWFzc2lnbkJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLnJlYXNzaWduKX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5yZWFzc2lnbl90aWNrZXRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L1N0YWNrPlxuICApO1xufTtcblxuVGlja2V0Q1RBcy5wcm9wVHlwZXMgPSB7XG4gIGlzSW5jb21wbGV0ZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgaXNVbmFzc2lnbmVkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBpc1JlYXNzaWduYWJsZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgb25PcGVuQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmNvbnN0IE9yZGVyTGlzdFRpY2tldHMgPSAoe1xuICB0aWNrZXQsXG4gIHN1bW1pdCxcbiAgaXNSZWZ1bmRNb2RhbCxcbiAgaXNTZWxlY3RlZFRvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZCxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgeyBpc1JlZnVuZGFibGUsIGlzVW5hc3NpZ25lZCwgaXNJbmNvbXBsZXRlLCBjYW5SZWFzc2lnbiB9ID1cbiAgICB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG4gIGNvbnN0IFttb2RhbE9wZW4sIHNldE1vZGFsT3Blbl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IG9uUmVhc3NpZ25hYmxlUGVyaW9kID0gcmVhc3NpZ25EYXRlID4gbm93O1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9XG4gICAgb25SZWFzc2lnbmFibGVQZXJpb2QgJiYgY2FuUmVhc3NpZ24gJiYgIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDtcblxuICBjb25zdCBoYW5kbGVDbG9zZU1vZGFsID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0VGlja2V0KCkpO1xuICAgIHNldE1vZGFsT3BlbihudWxsKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVPcGVuTW9kYWwgPSAodmlldykgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0VGlja2V0KCkpO1xuICAgIHNldE1vZGFsT3Blbih2aWV3KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBjb250YWluZXJcbiAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJXcmFwcGVyfSAke1xuICAgICAgICBpc1JlZnVuZE1vZGFsID8gc3R5bGVzLnJlZnVuZE1vZGFsIDogXCJcIlxuICAgICAgfSAke2lzUmVmdW5kTW9kYWwgJiYgIWlzUmVmdW5kYWJsZSA/IHN0eWxlcy5kaXNhYmxlZFJlZnVuZCA6IFwiXCJ9ICR7XG4gICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZCA/IHN0eWxlcy5zZWxlY3RlZCA6IFwiXCJcbiAgICAgIH1gfVxuICAgID5cbiAgICAgIHtpc1JlZnVuZE1vZGFsICYmIChcbiAgICAgICAgPEdyaWQgaXRlbSB4cz17MX0gcGFkZGluZz17Mn0gY2xhc3NOYW1lPXtzdHlsZXMuY2hlY2tib3h9PlxuICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCB0aWNrZXQgY2hlY2tib3hcIlxuICAgICAgICAgICAgcm9sZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIGNoZWNrZWQ9e2lzU2VsZWN0ZWRUb1JlZnVuZH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2VsZWN0VG9SZWZ1bmQoZSwgdGlja2V0KX1cbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHtcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogMThcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGRpc2FibGVkPXshaXNSZWZ1bmRhYmxlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8R3JpZFxuICAgICAgICBpdGVtXG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLWxpc3QtdGlja2V0XCJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgIHhzPXtpc1JlZnVuZE1vZGFsID8gMTEgOiAxMn1cbiAgICAgID5cbiAgICAgICAgPEdyaWRcbiAgICAgICAgICB4cz17OH1cbiAgICAgICAgICBweT17Mn1cbiAgICAgICAgICBwbD17NH1cbiAgICAgICAgICBpdGVtXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0VGlja2V0VHlwZX1cbiAgICAgICAgICBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgID5cbiAgICAgICAgICA8U3RhY2tcbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcImZsZXgtc3RhcnRcIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIGNsYXNzTmFtZT17c3R5bGVzLmJmRmVhdHVyZVdyYXBwZXJ9IHhzPXs0fSBweT17Mn0gcHI9ezR9IGl0ZW0+XG4gICAgICAgICAgey8qIFRvIGFkZCBiYWRnZSBmZWF0dXJlcyAqL31cbiAgICAgICAgICB7dGlja2V0LmJhZGdlPy5mZWF0dXJlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17YmYubmFtZX0ga2V5PXtiZi5uYW1lfT5cbiAgICAgICAgICAgICAgPEJhZGdlRmVhdHVyZUltYWdlXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmZGZWF0dXJlfVxuICAgICAgICAgICAgICAgIHNyYz17YmYuaW1hZ2V9XG4gICAgICAgICAgICAgICAgYWx0PXtiZi5uYW1lfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXsxMn0gc3g9e3sgcHg6IDQsIHBiOiAyIH19IGl0ZW0+XG4gICAgICAgICAgPEF0dGVuZGVlU3RhdHVzXG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldD17ISFpc0V4dGVybmFsQXNzaWduZWRUaWNrZXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgICAgdGV4dD17dGlja2V0Lm51bWJlcn1cbiAgICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJ0aWNrZXRfc3RhdHVzLmNvcHlfdGlja2V0X251bWJlclwiKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Rm9vdGVyfSBweD17eyB4czogMSB9fSBwYj17eyB4czogMiB9fT5cbiAgICAgICAgICA8Qm94PlxuICAgICAgICAgICAgPFRpY2tldFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldEFjdGlvbkJ1dHRvbnN9PlxuICAgICAgICAgICAge3RpY2tldC5pc19hY3RpdmUgJiYgIWlzUmVmdW5kTW9kYWwgJiYgKFxuICAgICAgICAgICAgICA8VGlja2V0Q1RBc1xuICAgICAgICAgICAgICAgIGlzVW5hc3NpZ25lZD17aXNVbmFzc2lnbmVkfVxuICAgICAgICAgICAgICAgIGlzSW5jb21wbGV0ZT17aXNJbmNvbXBsZXRlfVxuICAgICAgICAgICAgICAgIGlzUmVhc3NpZ25hYmxlPXtpc1JlYXNzaWduYWJsZSAmJiAhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0fVxuICAgICAgICAgICAgICAgIG9uT3BlbkNsaWNrPXtoYW5kbGVPcGVuTW9kYWx9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvQm94PlxuICAgICAgICA8L0JveD5cbiAgICAgICAgPFRpY2tldERldGFpbFxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHRpY2tldElkPXt0aWNrZXQ/LmlkfVxuICAgICAgICAgIG9yZGVySWQ9e3RpY2tldD8ub3JkZXJfaWQgfHwgdGlja2V0Py5vcmRlcj8uaWR9XG4gICAgICAgICAgb3duZXJJZD17dGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgICAgb3Blbj17bW9kYWxPcGVuID09PSBtb2RhbFZpZXdzLmRldGFpbH1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAvPlxuICAgICAgICA8VGlja2V0QXNzaWduXG4gICAgICAgICAgdGlja2V0SWQ9e3RpY2tldD8uaWR9XG4gICAgICAgICAgb3JkZXJJZD17dGlja2V0Py5vcmRlcl9pZCB8fCB0aWNrZXQ/Lm9yZGVyPy5pZH1cbiAgICAgICAgICBvd25lcklkPXt0aWNrZXQ/Lm93bmVyPy5pZH1cbiAgICAgICAgICBvcGVuPXtbbW9kYWxWaWV3cy5yZWFzc2lnbiwgbW9kYWxWaWV3cy5hc3NpZ25dLmluY2x1ZGVzKG1vZGFsT3Blbil9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5PcmRlckxpc3RUaWNrZXRzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG9yZGVyX2lkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB0b3RhbF9yZWZ1bmRlZF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGlja2V0X3R5cGU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgaXNfYWN0aXZlOiBQcm9wVHlwZXMuYm9vbFxuICB9KSxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBpc1JlZnVuZE1vZGFsOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNTZWxlY3RlZFRvUmVmdW5kOiBQcm9wVHlwZXMuYm9vbCxcbiAgc2VsZWN0VG9SZWZ1bmQ6IFByb3BUeXBlcy5mdW5jLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFRhYnMgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiO1xuaW1wb3J0IFRhYiBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJcIjtcbmltcG9ydCBPcmRlckxpc3RJdGVtIGZyb20gXCIuL09yZGVyTGlzdEl0ZW1cIjtcbmltcG9ydCBPcmRlclN1bW1hcnkgZnJvbSBcIi4uL09yZGVyU3VtbWFyeVwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RzTW9kYWwgZnJvbSBcIi4uL1JlZnVuZFJlcXVlc3RzXCI7XG5pbXBvcnQgRXJyb3JMYWJlbCBmcm9tIFwiLi4vTGFiZWxzL0Vycm9yTGFiZWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBSZWZ1bmREZXRhaWxzIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmREZXRhaWxzXCI7XG5cbmNvbnN0IFRhYlBhbmVsID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIHZhbHVlLCBpbmRleCB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgIGhpZGRlbj17dmFsdWUgIT09IGluZGV4fVxuICAgICAgaWQ9e2B0YWJwYW5lbC0ke2luZGV4fWB9XG4gICAgICBhcmlhLWxhYmVsbGVkYnk9e2B0YWItJHtpbmRleH1gfVxuICAgID5cbiAgICAgIHt2YWx1ZSA9PT0gaW5kZXggJiYgY2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5jb25zdCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSA9ICh7XG4gIGlzTW9iaWxlLFxuICBzdW1taXQsXG4gIG9yZGVyLFxuICBkZXRhaWxzUmVxdWlyZWQsXG4gIG9uUGFnaW5hdGVDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChfLCBuZXdWYWx1ZSkgPT4ge1xuICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgfTtcbiAgY29uc3QgW3RpY2tldHNUb1JlZnVuZCwgc2V0VGlja2V0c1RvUmVmdW5kXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgW3N1Ym1pdFJlcXVlc3QsIHNldFN1Ym1pdFJlcXVlc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbcmVmdW5kRGV0YWlsc09wZW4sIHNldFJlZnVuZERldGFpbHNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBvblJlZnVuZENsaWNrID0gKCkgPT4ge1xuICAgIHNldFN1Ym1pdFJlcXVlc3QodHJ1ZSk7XG4gIH07XG4gIGNvbnN0IHVuc2VsZWN0UmVmdW5kVGlja2V0cyA9ICh0aWNrZXQpID0+IHtcbiAgICBjb25zdCBmaWx0ZXJTZWxlY3RlZCA9IHRpY2tldHNUb1JlZnVuZC5maWx0ZXIoKHQpID0+IHQuaWQgIT09IHRpY2tldC5pZCk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKGZpbHRlclNlbGVjdGVkKTtcbiAgfTtcbiAgY29uc3Qgc2VsZWN0VG9SZWZ1bmQgPSAoZSwgdGlja2V0KSA9PiB7XG4gICAgY29uc3QgeyBjaGVja2VkIH0gPSBlLnRhcmdldDtcbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRUaWNrZXQgPSBvcmRlcj8ubWVtYmVyVGlja2V0cz8uZmluZChcbiAgICAgICAgKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZFxuICAgICAgKTtcbiAgICAgIHNldFRpY2tldHNUb1JlZnVuZChbLi4udGlja2V0c1RvUmVmdW5kLCBzZWxlY3RlZFRpY2tldF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHModGlja2V0KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY2xvc2VTdWJtaXRSZXF1ZXN0ID0gKCkgPT4ge1xuICAgIHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3QgcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IG1vcmVEZXRhaWxzID0gKCkgPT5cbiAgICBkZXRhaWxzUmVxdWlyZWQgJiYgKFxuICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgbWVzc2FnZT17dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2RldGFpbHNfcmVxdWlyZWRcIil9XG4gICAgICAgIGNvbG9yPVwiI2ZmOTgwMFwiXG4gICAgICAgIGRhdGFUZXN0SWQ9XCJtb3JlLWRldGFpbHMtbGFiZWxcIlxuICAgICAgLz5cbiAgICApO1xuXG4gIHJldHVybiBpc01vYmlsZSA/IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJtb2JpbGUtb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8Qm94IHN4PXt7IGJvcmRlckNvbG9yOiBcImRpdmlkZXJcIiwgcGI6IDIgfX0+XG4gICAgICAgIDxUYWJzXG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlRpY2tldHMgJiBTdW1tYXJ5XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMudGlja2V0c1wiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnN1bW1hcnlcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgIDwvVGFicz5cbiAgICAgIDwvQm94PlxuICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MH0+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXsxfT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4odHJ1ZSl9XG4gICAgICAgIC8+XG4gICAgICAgIDxSZWZ1bmRSZXF1ZXN0c01vZGFsXG4gICAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHMgfHwgW119XG4gICAgICAgICAgb3Blbj17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZT17KCkgPT4gcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcygpfVxuICAgICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IGNsb3NlU3VibWl0UmVxdWVzdCgpfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgICAgPFJlZnVuZERldGFpbHNcbiAgICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0c31cbiAgICAgICAgICBjdXJyZW5jeT17b3JkZXIuY3VycmVuY3l9XG4gICAgICAgICAgb3Blbj17cmVmdW5kRGV0YWlsc09wZW59XG4gICAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4oZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICA8L0JveD5cbiAgKSA6IChcbiAgICA8PlxuICAgICAgPEdyaWQgaXRlbSBtZD17MTJ9PlxuICAgICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkXG4gICAgICAgIHBhZGRpbmc9ezF9XG4gICAgICAgIGl0ZW1cbiAgICAgICAgbWQ9ezd9XG4gICAgICAgIG9yZGVyPXt7IG1kOiAxIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiZGVza3RvcC1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHBhZGRpbmc9ezF9IGl0ZW0gbWQ9ezV9IG9yZGVyPXt7IG1kOiAxIH19PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZERldGFpbENsaWNrPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3Blbih0cnVlKX1cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxSZWZ1bmRSZXF1ZXN0c01vZGFsXG4gICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzIHx8IFtdfVxuICAgICAgICBvcGVuPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZT17KCkgPT4gcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcygpfVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBjbG9zZVN1Ym1pdFJlcXVlc3QoKX1cbiAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAvPlxuICAgICAgPFJlZnVuZERldGFpbHNcbiAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgIGN1cnJlbmN5PXtvcmRlci5jdXJyZW5jeX1cbiAgICAgICAgb3Blbj17cmVmdW5kRGV0YWlsc09wZW59XG4gICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKGZhbHNlKX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVtYmVyVGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KSxcbiAgaXNNb2JpbGU6IFByb3BUeXBlcy5ib29sLFxuICBkZXRhaWxzUmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvblBhZ2luYXRlQ2xpY2s6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgdXNlTWVkaWFRdWVyeSBmcm9tIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCI7XG5pbXBvcnQgeyBnZXRUaWNrZXRzQnlPcmRlciB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBnZXRGb3JtYXR0ZWREYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIGZyb20gXCIuL09yZGVyc0xpc3REZXNrdG9wTW9iaWxlXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyc0xpc3QgPSAoeyBzdW1taXQsIG9yZGVyIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHsgdGlja2V0X3Blcl9wYWdlLCBmaWx0ZXIsIHNvcnQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG4gIGNvbnN0IFtpc01vYmlsZVZpZXdhYmxlLCBzZXRNb2JpbGVWaWV3YWJsZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGRldGFpbHNSZXF1aXJlZCA9IG9yZGVyLm1lbWJlclRpY2tldHM/LmZpbmQoXG4gICAgKHRpY2tldCkgPT4gdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiSW5jb21wbGV0ZVwiXG4gICk7XG5cbiAgY29uc3Qgb25QYWdpbmF0ZUNsaWNrID0gKCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgIHBhZ2U6IG9yZGVyLnRpY2tldHNfcGFnZV9jdXJyZW50ICsgT05FX1BBR0VfTkVYVCxcbiAgICAgICAgcGVyUGFnZTogdGlja2V0X3Blcl9wYWdlLFxuICAgICAgICBmaWx0ZXIsXG4gICAgICAgIHNvcnRcbiAgICAgIH0pXG4gICAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAxLCBsZzogMCB9IH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm99XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci10aWNrZXQtaW5mby1jb250YWluZXJcIlxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMucHVyY2hhc2VkXCIpfToge2dldEZvcm1hdHRlZERhdGUob3JkZXIuY3JlYXRlZCl9IHx7XCIgXCJ9XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICB0ZXh0PXtvcmRlci5udW1iZXJ9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB7aXNNb2JpbGUgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIHN4PXt7IHBhZGRpbmc6IFwiNXB4IDEwcHhcIiB9fVxuICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0TW9iaWxlVmlld2FibGUoIWlzTW9iaWxlVmlld2FibGUpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc01vYmlsZVZpZXdhYmxlXG4gICAgICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuaGlkZV90aWNrZXRzXCIpXG4gICAgICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRzXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICA8R3JpZFxuICAgICAgICBrZXk9e29yZGVyLmlkfVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgcm93U3BhY2luZz17MX1cbiAgICAgICAgY29sdW1uU3BhY2luZz17eyB4czogMSwgc206IDIsIG1kOiAzIH19XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfSAke1xuICAgICAgICAgIGlzTW9iaWxlICYmICFpc01vYmlsZVZpZXdhYmxlID8gc3R5bGVzLmRpc3BsYXlfbm9uZSA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgZmxleERpcmVjdGlvbjoge1xuICAgICAgICAgICAgbWQ6IFwicm93XCIsXG4gICAgICAgICAgICBsZzogXCJyb3dcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgeHM6IDIsXG4gICAgICAgICAgICBtZDogNCxcbiAgICAgICAgICAgIGxnOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8T3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcbiAgICAgICAgICBpc01vYmlsZT17aXNNb2JpbGV9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIGRldGFpbHNSZXF1aXJlZD17ISFkZXRhaWxzUmVxdWlyZWR9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlcnNMaXN0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCBmcm9tIFwiLi9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcIjtcbmltcG9ydCB7IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuY29uc3QgUmVmdW5kRGV0YWlscyA9ICh7IHRpY2tldHMsIGN1cnJlbmN5LCBvcGVuLCBvbkNsb3NlU2xpZGVyIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCByZXF1ZXN0ZWRUaWNrZXRzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzKHRpY2tldHMpLFxuICAgIFt0aWNrZXRzXVxuICApO1xuICBjb25zdCBjbG9zZVNsaWRlciA9ICgpID0+IHtcbiAgICBvbkNsb3NlU2xpZGVyKCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPFJpZ2h0RHJhd2VyXG4gICAgICBpZD1cInJlZnVuZC1kZXRhaWxzXCJcbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtjbG9zZVNsaWRlcn1cbiAgICAgIHRpdGxlPXt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICA+XG4gICAgICA8Qm94XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgZmxleERpcmVjdGlvbjogXCJjb2x1bW5cIixcbiAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgICAgIHBhZGRpbmc6IFwiMCA1cmVtXCJcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3JlcXVlc3RlZFRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPFJlZnVuZFJlcXVlc3RlZFRpY2tldFxuICAgICAgICAgICAga2V5PXtgcmVmdW5kX3JlcV8ke3RpY2tldD8uaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgY3VycmVuY3k9e2N1cnJlbmN5fVxuICAgICAgICAgICAgcmVmdW5kRGV0YWlsc1xuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgPC9SaWdodERyYXdlcj5cbiAgKTtcbn07XG5cblJlZnVuZERldGFpbHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZERldGFpbHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBJY29uQnV0dG9uLCBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHRvb2x0aXBDbGFzc2VzIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgSW5mb0ljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCBBdHRlbmRlZVN0YXR1cyBmcm9tIFwiLi4vT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1c1wiO1xuaW1wb3J0IFJlZnVuZFN0YXR1cyBmcm9tIFwiLi9SZWZ1bmRTdGF0dXNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBmb3JtYXRDdXJyZW5jeSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgPSAoeyB0aWNrZXQsIGN1cnJlbmN5LCByZWZ1bmREZXRhaWxzIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IEdSSURfOCA9IDg7XG4gIGNvbnN0IEdSSURfMTIgPSAxMjtcblxuICBjb25zdCBQQURESU5HXzIgPSAyO1xuXG4gIGNvbnN0IGFwcHJvdmVkUmVmdW5kcyA9IHRpY2tldC5yZWZ1bmRfcmVxdWVzdHMuZmlsdGVyKFxuICAgIChyZWZ1bmQpID0+IHJlZnVuZC5zdGF0dXMgPT09IFwiQXBwcm92ZWRcIlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkgPSB7fTtcblxuICBhcHByb3ZlZFJlZnVuZHMuZm9yRWFjaCgocmVmdW5kKSA9PiB7XG4gICAgcmVmdW5kLnJlZnVuZGVkX3RheGVzLmZvckVhY2goKHJ0KSA9PiB7XG4gICAgICBjb25zdCB0YXhJZCA9IHJ0LnRheC5pZDtcbiAgICAgIGlmICghcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0pIHtcbiAgICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0gPSB7XG4gICAgICAgICAgbmFtZTogcnQudGF4Lm5hbWUsXG4gICAgICAgICAgdG90YWxSZWZ1bmRlZFRheEFtb3VudDogMFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0udG90YWxSZWZ1bmRlZFRheEFtb3VudCArPVxuICAgICAgICBydC5yZWZ1bmRlZF9hbW91bnQ7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IEh0bWxUb29sdGlwID0gc3R5bGVkKCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSkgPT4gKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIDxUb29sdGlwIHsuLi5wcm9wc30gY2xhc3Nlcz17eyBwb3BwZXI6IGNsYXNzTmFtZSB9fSAvPlxuICApKSgoKSA9PiAoe1xuICAgIFtgJiAuJHt0b29sdGlwQ2xhc3Nlcy50b29sdGlwfWBdOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiI2Y1ZjVmOVwiLFxuICAgICAgY29sb3I6IFwicmdiYSgwLCAwLCAwLCAwLjg3KVwiLFxuICAgICAgbWF4V2lkdGg6IDIyMCxcbiAgICAgIGZvbnRTaXplOiBcIjFlbVwiLFxuICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCAjZGFkZGU5XCJcbiAgICB9XG4gIH0pKTtcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBjb250YWluZXJcbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnJlZnVuZFRpY2tldEJveENvbnRhaW5lcn0gJHtcbiAgICAgICAgcmVmdW5kRGV0YWlscyA/IHN0eWxlcy5yZWZ1bmREZXRhaWwgOiBcIlwiXG4gICAgICB9IGB9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0ZWQtdGlja2V0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEdyaWRcbiAgICAgICAgeHM9e0dSSURfMTJ9XG4gICAgICAgIHNtPXtyZWZ1bmREZXRhaWxzID8gR1JJRF84IDogR1JJRF8xMn1cbiAgICAgICAgaXRlbVxuICAgICAgICBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgIHB0PXsyfVxuICAgICAgICBweD17NH1cbiAgICAgID5cbiAgICAgICAgPFN0YWNrXG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIixcbiAgICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCJcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgID5cbiAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDxHcmlkIGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZVdyYXBwZXJ9IHhzPXs0fSBpdGVtPlxuICAgICAgICAgICAge3RpY2tldC5iYWRnZT8uZmVhdHVyZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlfVxuICAgICAgICAgICAgICAgIHNyYz17YmYuaW1hZ2V9XG4gICAgICAgICAgICAgICAgYWx0PXtiZi5uYW1lfVxuICAgICAgICAgICAgICAgIGtleT17YmYubmFtZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIHtyZWZ1bmREZXRhaWxzICYmIChcbiAgICAgICAgPEdyaWQgc209ezR9IHhzPXsxMn0gcHg9e3sgc206IDIsIHhzOiA0IH19IHB5PXt7IHhzOiAxLCBzbTogMiB9fSBpdGVtPlxuICAgICAgICAgIDxSZWZ1bmRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8R3JpZCB4cz17MTJ9IGl0ZW0gcHg9ezR9IHBiPXtyZWZ1bmREZXRhaWxzID8gUEFERElOR18yIDogMH0gY29udGFpbmVyPlxuICAgICAgICA8R3JpZCB4cz17MTJ9IHNtPXs4fSBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRUaWNrZXRBdHRlbmRlZX0+XG4gICAgICAgICAgPEF0dGVuZGVlU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy50aWNrZXRfbm9cIil9OiA8Q29weVRleHQgdGV4dD17dGlja2V0Lm51bWJlcn0gLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAge3JlZnVuZERldGFpbHMgJiYgdGlja2V0LnRvdGFsX3JlZnVuZGVkX2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICAgIDxHcmlkIHhzPXsxMn0gbWQ9ezR9IHBsPXt7IHhzOiAwLCBzbTogNCB9fT5cbiAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXQudG90YWxfcmVmdW5kZWRfYW1vdW50LCB7IGN1cnJlbmN5IH0pfXtcIiBcIn1cbiAgICAgICAgICAgIFJlZnVuZGVkXG4gICAgICAgICAgICB7YXBwcm92ZWRSZWZ1bmRzLnNvbWUoKHIpID0+IHIucmVmdW5kZWRfdGF4ZXMubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICA8SHRtbFRvb2x0aXBcbiAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0LnJlZnVuZGVkX2Ftb3VudCwgeyBjdXJyZW5jeSB9KX17XCIgXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgVGlja2V0IEFtb3VudFxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxiPlRheGVzPC9iPlxuICAgICAgICAgICAgICAgICAgICB7T2JqZWN0LmtleXMocmVmdW5kZWRUYXhlc1N1bW1hdG9yeSkubWFwKCh0YXhJZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdG90YWxSZWZ1bmRlZFRheEFtb3VudCwgbmFtZSB9ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnlbdGF4SWRdO1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBrZXk9e3RheElkfT57YCR7bmFtZX0gLSAke2Zvcm1hdEN1cnJlbmN5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFJlZnVuZGVkVGF4QW1vdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IGN1cnJlbmN5IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICl9YH08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxJbmZvSWNvbiAvPlxuICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9IdG1sVG9vbHRpcD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIHttb21lbnQoXG4gICAgICAgICAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHNbMF0uYWN0aW9uX2RhdGUgKiBNSUxMSVNFQ19UT19TRUNcbiAgICAgICAgICAgICkuZm9ybWF0KFwiTU1NIERELCBZWVlZXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgIDwvR3JpZD5cbiAgICAgIHshcmVmdW5kRGV0YWlscyAmJiAoXG4gICAgICAgIDxHcmlkIHhzPXsxMn0gcHI9ezR9IHBiPXsyfT5cbiAgICAgICAgICA8R3JpZCB4cz17MTJ9IGl0ZW0+XG4gICAgICAgICAgICA8VGlja2V0U3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlZnVuZERldGFpbHM6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ2hpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZnVuZFN0YXR1cyA9ICh7IHRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgc3RhdHVzQ29sb3IgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yKHRpY2tldCksXG4gICAgW3RpY2tldF1cbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8Q2hpcFxuICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCByZWZ1bmQgc3RhdHVzIGxhYmVsXCJcbiAgICAgIGxhYmVsPXt0KGB0aWNrZXRfc3RhdHVzLnJlZnVuZF9yZXF1ZXN0XyR7c3RhdHVzQ29sb3J9YCl9XG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlc1tzdGF0dXNDb2xvcl19YH1cbiAgICAvPlxuICApO1xufTtcblxuUmVmdW5kU3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgU3R5bGVkRW5naW5lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENoZWNrQ2lyY2xlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgeyByZWZ1bmRCdWxrVGlja2V0cywgdXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBTVEVQX09ORSwgU1RFUF9USFJFRSwgU1RFUF9UV08gfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi4vT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdGVkVGlja2V0IGZyb20gXCIuL1JlZnVuZFJlcXVlc3RlZFRpY2tldFwiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0c01vZGFsID0gKHtcbiAgdGlja2V0cyxcbiAgc3VtbWl0LFxuICBvcGVuLFxuICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSxcbiAgb25DbG9zZVNsaWRlcixcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZCxcbiAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc3RlcCwgc2V0U3RlcF0gPSB1c2VTdGF0ZShTVEVQX09ORSk7XG4gIGNvbnN0IFtlcnJvck1zZywgc2V0RXJyb3JNc2ddID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtyZWZ1bmRTdWNjZXNzLCBzZXRSZWZ1bmRTdWNjZXNzXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBjbG9zZVNsaWRlciA9ICgpID0+IHtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgICBvbkNsb3NlU2xpZGVyKCk7XG4gICAgc2V0U3RlcChTVEVQX09ORSk7XG4gICAgaWYgKHJlZnVuZFN1Y2Nlc3MpIHtcbiAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlKCk7IC8vIGlmIHRoZSByZWZ1bmQgaXMgYSBzdWNjZXNzLCB0cmlnZ2VyIGFuZCByZS1yZXRyaWV2ZSB0aWNrZXRzIGJ5IG9yZGVyXG4gICAgICBzZXRSZWZ1bmRTdWNjZXNzKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY29uZmlybVJlZnVuZCA9ICgpID0+IHtcbiAgICBzZXRTdGVwKFNURVBfVFdPKTtcbiAgfTtcblxuICBjb25zdCBnb0JhY2tUb1JlZnVuZCA9ICgpID0+IHtcbiAgICBzZXRTdGVwKFNURVBfT05FKTtcbiAgfTtcblxuICBjb25zdCByZWZ1bmRUaWNrZXRzID0gYXN5bmMgKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlZnVuZEJ1bGtUaWNrZXRzKHsgdGlja2V0czogdGlja2V0c1RvUmVmdW5kIH0pKS50aGVuKChyZXMpID0+IHtcbiAgICAgIGRpc3BhdGNoKHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQocmVzKSk7IC8vIHJldHVybmluZyB3aGljaCB0aWNrZXRzIHdlcmUgc3VjY2Vzc2Z1bFxuICAgICAgaWYgKHJlcz8ubGVuZ3RoID09PSB0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoKSB7XG4gICAgICAgIHNldFN0ZXAoU1RFUF9USFJFRSk7IC8vIHN1Y2Nlc3MsIGFsbCByZWZ1bmRzIHdlcmUgcmVxdWVzdGVkXG4gICAgICAgIHNldFJlZnVuZFN1Y2Nlc3ModHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRFcnJvck1zZyh0KFwiZXJyb3JzLnJlZnVuZF91bnN1Y2Nlc3NmdWxcIikpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHNldEVycm9yTXNnKFwiXCIpO1xuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBPbmUgPSAoKSA9PiAoXG4gICAgPD5cbiAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X3NlbGVjdF9yZWZ1bmRcIil9XG4gICAgICA8L2gyPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0fT5cbiAgICAgICAge3RpY2tldHMubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgICAga2V5PXtgdGlja2V0LSR7dGlja2V0LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXtcbiAgICAgICAgICAgICAgISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgICAgICBpc1JlZnVuZE1vZGFsXG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc30+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNhbmNlbC1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jYW5jZWxcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jb250aW51ZS1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2NvbmZpcm1SZWZ1bmR9XG4gICAgICAgICAgZGlzYWJsZWQ9e3RpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29udGludWVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG5cbiAgY29uc3QgcmVmdW5kU3RlcFR3byA9ICgpID0+IChcbiAgICA8Qm94IGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3Qtc3VjY2Vzc2Z1bFwiPlxuICAgICAgPGgzIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAge3QoXCJjb25maXJtX3BvcHVwLnF1ZXN0aW9uX3RleHRfY29uZmlybV9yZWZ1bmRcIil9XG4gICAgICA8L2gzPlxuICAgICAge2Vycm9yTXNnICYmIChcbiAgICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgICBjbGFzc05hbWVzPXtzdHlsZXMucmVmdW5kRXJyb3JNc2d9XG4gICAgICAgICAgY29sb3I9XCIjRkYwMDAwXCJcbiAgICAgICAgICBkYXRhVGVzdElkPVwiZmFpbGVkLXJlZnVuZC1tZXNzYWdlXCJcbiAgICAgICAgICBtZXNzYWdlPXtlcnJvck1zZ31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3R9PlxuICAgICAgICB7dGlja2V0c1RvUmVmdW5kLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPFJlZnVuZFJlcXVlc3RlZFRpY2tldFxuICAgICAgICAgICAga2V5PXtgcmVmdW5kX3JlcV8ke3RpY2tldD8uaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLkNUQUJ1dHRvbldyYXBwZXJ9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1yZXR1cm4tYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Z29CYWNrVG9SZWZ1bmR9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuYmFja1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNvbnRpbnVlLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17cmVmdW5kVGlja2V0c31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb250aW51ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0JveD5cbiAgICA8L0JveD5cbiAgKTtcblxuICBjb25zdCByZWZ1bmRTdGVwVGhyZWUgPSAoKSA9PiAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kU3VjY2Vzc2Z1bH1cbiAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3Qtc3VjY2Vzc2Z1bFwiXG4gICAgPlxuICAgICAgPENoZWNrQ2lyY2xlSWNvbiBzeD17eyBjb2xvcjogXCIjNGNhZjUwXCIgfX0gLz5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2d9PlxuICAgICAgICB7dChcInRpY2tldHMucmVmdW5kX3JlcXVlc3Rfc3VjY2Vzc18xXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3VjY2Vzc01zZzJ9PlxuICAgICAgICB7dChcInRpY2tldHMucmVmdW5kX3JlcXVlc3Rfc3VjY2Vzc18yXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWZpbmlzaC1idXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9e2Nsb3NlU2xpZGVyfVxuICAgICAgPlxuICAgICAgICB7dChcImdlbmVyYWwuZmluaXNoXCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC9Cb3g+XG4gICk7XG5cbiAgY29uc3QgcmVuZGVyU3RlcHMgPSAoKSA9PiB7XG4gICAgc3dpdGNoIChzdGVwKSB7XG4gICAgICBjYXNlIFNURVBfT05FOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcE9uZSgpO1xuICAgICAgY2FzZSBTVEVQX1RXTzpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBUd28oKTtcbiAgICAgIGNhc2UgU1RFUF9USFJFRTpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBUaHJlZSgpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiAoXG4gICAgPFN0eWxlZEVuZ2luZVByb3ZpZGVyIGluamVjdEZpcnN0PlxuICAgICAgPFJpZ2h0RHJhd2VyXG4gICAgICAgIGlkPVwicmVmdW5kLXJlcXVlc3RzXCJcbiAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgb25DbG9zZT17Y2xvc2VTbGlkZXJ9XG4gICAgICAgIHRpdGxlPXt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1tb2RhbFwiXG4gICAgICA+XG4gICAgICAgIHtyZW5kZXJTdGVwcygpfVxuICAgICAgPC9SaWdodERyYXdlcj5cbiAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICApO1xufTtcblxuUmVmdW5kUmVxdWVzdHNNb2RhbC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvblJlZnVuZFN1Y2Nlc3NDbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQ2xvc2VTbGlkZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0c01vZGFsO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBEcmF3ZXIsIEljb25CdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgQ2xvc2UgYXMgQ2xvc2VJY29uIH0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmlnaHREcmF3ZXIgPSAoe1xuICBpZCxcbiAgdGl0bGUsXG4gIGhlYWRlckNoaWxkcmVuID0gbnVsbCxcbiAgY2hpbGRyZW4sXG4gIG9wZW4sXG4gIG9uQ2xvc2UsXG4gIGNsYXNzTmFtZVxufSkgPT4gKFxuICA8RHJhd2VyXG4gICAgaWQ9e2lkfVxuICAgIG9wZW49e29wZW59XG4gICAgb25DbG9zZT17b25DbG9zZX1cbiAgICBhbmNob3I9XCJyaWdodFwiXG4gICAgTW9kYWxQcm9wcz17eyBrZWVwTW91bnRlZDogZmFsc2UgfX1cbiAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy53cmFwcGVyfSAke2NsYXNzTmFtZX1gfVxuICA+XG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgPEljb25CdXR0b25cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJjbG9zZS1kcmF3ZXJcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jbG9zZUJ0bn1cbiAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgc3g9e3sgZmxvYXQ6IFwicmlnaHRcIiB9fVxuICAgICAgICBmb250U2l6ZT1cImxhcmdlXCJcbiAgICAgID5cbiAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAge3RpdGxlICYmIChcbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAgICB7dGl0bGV9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICl9XG4gICAgICB7aGVhZGVyQ2hpbGRyZW59XG4gICAgPC9Cb3g+XG4gICAge2NoaWxkcmVufVxuICA8L0RyYXdlcj5cbik7XG5cblJpZ2h0RHJhd2VyLnByb3BUeXBlcyA9IHtcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdGl0bGU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5ub2RlXSksXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgaGVhZGVyQ2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmlnaHREcmF3ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBzaGFsbG93RXF1YWwsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFN1bW1pdEhlYWRlciA9ICgpID0+IHtcbiAgY29uc3QgeyBzdW1taXQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIHJldHVybiAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMud2lkZ2V0SGVhZGVyfVxuICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX1cbiAgICAgIGRhdGEtdGVzdGlkPVwibXktb3JkZXJzLXRpY2tldC1oZWFkZXJcIlxuICAgID5cbiAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PntzdW1taXQ/Lm5hbWV9PC9oMj5cbiAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PntzdW1taXQ/LmRhdGVzX2xhYmVsfTwvaDI+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTdW1taXRIZWFkZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyByZXNldEZpbHRlciB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgU3VtbWl0SGVhZGVyIGZyb20gXCIuLi9TdW1taXRIZWFkZXJcIjtcbmltcG9ydCBOb1RpY2tldHNGb3VuZCBmcm9tIFwiLi4vTm9UaWNrZXRzRm91bmRcIjtcbmltcG9ydCB7IFRBQlMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmNvbnN0IFRhYldyYXBwZXIgPSAoeyB0YWIsIGNoaWxkcmVuLCBzZXRUYWIgfSkgPT4ge1xuICBjb25zdCB7IG1lbWJlck9yZGVycywgdXNlclRpY2tldHMsIGFjdGl2ZUZpbHRlcnNDb3VudCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fVxuICApO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHRpY2tldHMgPSB0YWIgPT09IFRBQlMuVElDS0VUUyA/IHVzZXJUaWNrZXRzIDogbWVtYmVyT3JkZXJzO1xuICBjb25zdCBoYXNUaWNrZXRzID0gdGlja2V0cy5sZW5ndGggPiAwO1xuICBjb25zdCBpc0ZpbHRlcmVkID0gYWN0aXZlRmlsdGVyc0NvdW50ID4gMDtcblxuICBjb25zdCBjbGVhckZpbHRlcnMgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRGaWx0ZXIoKSk7XG4gIH07XG5cbiAgY29uc3QgZ2V0UGFnZVZpZXcgPSAoKSA9PiB7XG4gICAgaWYgKGlzRmlsdGVyZWQpIHJldHVybiBcImZpbHRlclwiO1xuICAgIHJldHVybiB0YWIgPT09IFRBQlMuVElDS0VUUyA/IFRBQlMuVElDS0VUUyA6IFRBQlMuT1JERVJTO1xuICB9O1xuXG4gIGNvbnN0IGdldE9uQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKGlzRmlsdGVyZWQpIHJldHVybiBjbGVhckZpbHRlcnM7XG4gICAgY29uc3QgdGFiVG9MaW5rID0gdGFiID09PSBUQUJTLlRJQ0tFVFMgPyBUQUJTLk9SREVSUyA6IFRBQlMuVElDS0VUUztcbiAgICByZXR1cm4gKCkgPT4gc2V0VGFiKHRhYlRvTGluayk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgeyFoYXNUaWNrZXRzICYmIChcbiAgICAgICAgPE5vVGlja2V0c0ZvdW5kIHBhZ2VWaWV3PXtnZXRQYWdlVmlldygpfSBvbkNsaWNrPXtnZXRPbkNsaWNrKCl9IC8+XG4gICAgICApfVxuICAgICAge2hhc1RpY2tldHMgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxCb3ggc3g9e3sgcHQ6IDYsIHBiOiAzIH19PlxuICAgICAgICAgICAgPFN1bW1pdEhlYWRlciAvPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGFiV3JhcHBlcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBDb2xsYXBzZSwgRGl2aWRlciwgTGluayB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgUmVhc3NpZ25Gb3JtIGZyb20gXCIuLi9SZWFzc2lnbkZvcm1cIjtcbmltcG9ydCBEZWxlZ2F0ZUZvcm0gZnJvbSBcIi4uL0RlbGVnYXRlRm9ybVwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi8uLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgQ29uZmlybURpYWxvZyBmcm9tIFwiLi4vLi4vLi4vQ29uZmlybURpYWxvZ1wiO1xuXG5jb25zdCBBc3NpZ25PcHRpb25zID0gKHtcbiAgdGlja2V0LFxuICB1c2VyUHJvZmlsZSxcbiAgYXNzaWduT3B0aW9uLFxuICBzZXRBc3NpZ25PcHRpb24sXG4gIG9uQXNzaWduLFxuICBvbkRlbGVnYXRlLFxuICBvblVuQXNzaWduXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW29wZW5Db25maXJtVW5hc3NpZ24sIHNldE9wZW5Db25maXJtVW5hc3NpZ25dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBpc0Fzc2lnbmVkVG9NZSA9IHVzZXJQcm9maWxlPy5lbWFpbCA9PT0gdGlja2V0Py5vd25lcj8uZW1haWw7XG4gIGNvbnN0IHsgYWxsb3dzRGVsZWdhdGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBoYW5kbGVVbkFzc2lnbiA9ICgpID0+IHtcbiAgICBzZXRPcGVuQ29uZmlybVVuYXNzaWduKGZhbHNlKTtcbiAgICBvblVuQXNzaWduKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEJ1dHRvblxuICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgZGlzYWJsZWQ9e2lzQXNzaWduZWRUb01lfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbkFzc2lnbih1c2VyUHJvZmlsZS5lbWFpbCwgXCJcIil9XG4gICAgICA+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5hc3NpZ25fdG9fbWVcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICAgIDxEaXZpZGVyIHZhcmlhbnQ9XCJtaWRkbGVcIiBzeD17eyBteTogMywgcHg6IDQgfX0+XG4gICAgICAgIG9yXG4gICAgICA8L0RpdmlkZXI+XG4gICAgICA8Qm94PlxuICAgICAgICA8Q29sbGFwc2UgaW49e2Fzc2lnbk9wdGlvbiA9PT0gXCJvdGhlclwifSB0aW1lb3V0PXs1MDB9PlxuICAgICAgICAgIDxSZWFzc2lnbkZvcm1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgb25TdWJtaXQ9eyh2YWwpID0+XG4gICAgICAgICAgICAgIG9uQXNzaWduKHZhbC5uZXdfYXR0ZW5kZWVfZW1haWwsIHZhbC5wZXJzb25hbF9tZXNzYWdlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0QXNzaWduT3B0aW9uKG51bGwpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQ29sbGFwc2U+XG4gICAgICAgIHthc3NpZ25PcHRpb24gIT09IFwib3RoZXJcIiAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFzc2lnbk9wdGlvbihcIm90aGVyXCIpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5hc3NpZ25fdG9fb3RoZXJcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIHthbGxvd3NEZWxlZ2F0ZSAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPERpdmlkZXIgdmFyaWFudD1cIm1pZGRsZVwiIHN4PXt7IG15OiAzLCBweDogNCB9fT5cbiAgICAgICAgICAgIG9yXG4gICAgICAgICAgPC9EaXZpZGVyPlxuICAgICAgICAgIDxDb2xsYXBzZSBpbj17YXNzaWduT3B0aW9uID09PSBcIm1hbmFnZVwifSB0aW1lb3V0PXs1MDB9PlxuICAgICAgICAgICAgPERlbGVnYXRlRm9ybVxuICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9eyh2YWwpID0+XG4gICAgICAgICAgICAgICAgb25EZWxlZ2F0ZShcbiAgICAgICAgICAgICAgICAgIHZhbC5kZWxlZ2F0ZV9maXJzdF9uYW1lLFxuICAgICAgICAgICAgICAgICAgdmFsLmRlbGVnYXRlX2xhc3RfbmFtZSxcbiAgICAgICAgICAgICAgICAgIHZhbC5kZWxlZ2F0ZV9lbWFpbFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24obnVsbCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQ29sbGFwc2U+XG4gICAgICAgICAge2Fzc2lnbk9wdGlvbiAhPT0gXCJtYW5hZ2VcIiAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24oXCJtYW5hZ2VcIil9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5tYW5hZ2VfdGlja2V0XCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAge3RpY2tldD8ub3duZXI/LmVtYWlsICYmIChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy51bmFzc2lnbldyYXBwZXJ9PlxuICAgICAgICAgIHsvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvYW5jaG9yLWlzLXZhbGlkICovfVxuICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICBjb21wb25lbnQ9XCJidXR0b25cIlxuICAgICAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldE9wZW5Db25maXJtVW5hc3NpZ24odHJ1ZSl9XG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBjb2xvcjogXCJ0ZXh0LmxpbmtcIixcbiAgICAgICAgICAgICAgdGV4dERlY29yYXRpb246IFwidW5kZXJsaW5lXCIsXG4gICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uQ29sb3I6IFwidGV4dC5saW5rXCJcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLnJldmVydF90b191bmFzc2lnbmVkXCIpfVxuICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgICAgey8qIFRPRE86IGlmIHdlIG5lZWQgdG8gcmV1c2UgdGhpcyB0aGVuIHdlIHNob3VsZCBtb3ZlIGl0IHRvIGNvbnRleHQgKi99XG4gICAgICA8Q29uZmlybURpYWxvZ1xuICAgICAgICBvcGVuPXtvcGVuQ29uZmlybVVuYXNzaWdufVxuICAgICAgICB0aXRsZT17dChcInRpY2tldF9hc3NpZ24uY29uZmlybV91bmFzc2lnbi50aXRsZVwiKX1cbiAgICAgICAgYm9keT17dChcInRpY2tldF9hc3NpZ24uY29uZmlybV91bmFzc2lnbi5ib2R5XCIpfVxuICAgICAgICBvbkNvbmZpcm09e2hhbmRsZVVuQXNzaWdufVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRPcGVuQ29uZmlybVVuYXNzaWduKGZhbHNlKX1cbiAgICAgIC8+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5Bc3NpZ25PcHRpb25zLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHVzZXJQcm9maWxlOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGFzc2lnbk9wdGlvbjogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0QXNzaWduT3B0aW9uOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkFzc2lnbjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25EZWxlZ2F0ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduT3B0aW9ucztcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuXG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuXG5jb25zdCBEZWxlZ2F0ZUZvcm0gPSAoeyBvblN1Ym1pdCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHtcbiAgICAgIGRlbGVnYXRlX2ZpcnN0X25hbWU6IFwiXCIsXG4gICAgICBkZWxlZ2F0ZV9sYXN0X25hbWU6IFwiXCIsXG4gICAgICBkZWxlZ2F0ZV9lbWFpbDogXCJcIlxuICAgIH0sXG4gICAgdmFsaWRhdGlvblNjaGVtYTogeXVwLm9iamVjdCh7XG4gICAgICBkZWxlZ2F0ZV9maXJzdF9uYW1lOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUucmVxdWlyZWRcIikpLFxuICAgICAgZGVsZWdhdGVfbGFzdF9uYW1lOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5sYXN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgICAucmVxdWlyZWQodChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnJlcXVpcmVkXCIpKSxcbiAgICAgIGRlbGVnYXRlX2VtYWlsOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAgIC5lbWFpbCh0KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgfSksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMsIHsgcmVzZXRGb3JtIH0pID0+IHtcbiAgICAgIG9uU3VibWl0KHZhbHVlcyk7XG4gICAgICByZXNldEZvcm0oKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcbiAgICBmb3JtaWsucmVzZXRGb3JtKCk7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0udGl0bGVcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uYm9keVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cImRlbGVnYXRlX2ZpcnN0X25hbWVcIlxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uZmlyc3RfbmFtZVwiKX1cbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZV9maXJzdF9uYW1lfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZmlyc3RfbmFtZSAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2ZpcnN0X25hbWUpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZmlyc3RfbmFtZSAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9maXJzdF9uYW1lXG4gICAgICAgICAgfVxuICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgIC8+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwiZGVsZWdhdGVfbGFzdF9uYW1lXCJcbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmxhc3RfbmFtZVwiKX1cbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZV9sYXN0X25hbWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9sYXN0X25hbWUgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9sYXN0X25hbWUpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfbGFzdF9uYW1lICYmXG4gICAgICAgICAgICBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2xhc3RfbmFtZVxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJkZWxlZ2F0ZV9lbWFpbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uZW1haWxcIil9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZV9lbWFpbH1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2VtYWlsICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZW1haWwpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZW1haWwgJiYgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9lbWFpbFxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uc2F2ZVwiKX1cbiAgICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5jYW5jZWxcIil9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2FuY2VsfVxuICAgICAgICAgIGRpc2FibGVkPXtmb3JtaWsuaXNTdWJtaXR0aW5nfVxuICAgICAgICAvPlxuICAgICAgPC9mb3JtPlxuICAgIDwvPlxuICApO1xufTtcblxuRGVsZWdhdGVGb3JtLnByb3BUeXBlcyA9IHtcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERlbGVnYXRlRm9ybTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgTGluaywgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uLy4uLy4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEFzc2lnbkhlYWRlciA9ICh7IGluUHJvZ3Jlc3MsIHRpY2tldCwgdXNlckVtYWlsLCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhc3NpZ25lZFRvWW91ID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJFbWFpbDtcblxuICBjb25zdCBnZXRTZWNvbmRhcnlUaXRsZSA9ICgpID0+IHtcbiAgICBpZiAoaW5Qcm9ncmVzcyA9PT0gXCJtYW5hZ2VcIikge1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uZGVsZWdhdGVkXCIpfSAke1xuICAgICAgICB0aWNrZXQub3duZXIuZmlyc3RfbmFtZVxuICAgICAgfSAke3RpY2tldC5vd25lci5sYXN0X25hbWV9LmA7XG4gICAgfVxuXG4gICAgaWYgKGluUHJvZ3Jlc3MpIHtcbiAgICAgIGNvbnN0IHVzZXIgPSBhc3NpZ25lZFRvWW91ID8gXCJ5b3VcIiA6IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uYXNzaWduZWRfdG9cIil9ICR7dXNlcn1gO1xuICAgIH1cblxuICAgIHJldHVybiB0aWNrZXQudGlja2V0X3R5cGUubmFtZTtcbiAgfTtcblxuICBjb25zdCBnZXRIZWFkZXJOb3RlID0gKCkgPT4ge1xuICAgIGlmIChpblByb2dyZXNzKSB7XG4gICAgICBjb25zdCB0cmFuc0tleSA9IGFzc2lnbmVkVG9Zb3VcbiAgICAgICAgPyBcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5hbnN3ZXJfeW91cl9lcVwiXG4gICAgICAgIDogXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uYW5zd2VyX290aGVyc19lcVwiO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgIHt0KHRyYW5zS2V5KX1cbiAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICB7LyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1pcy12YWxpZCAqL31cbiAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgY29tcG9uZW50PVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICAgICAgc3g9e3sgZm9udFdlaWdodDogNzAwLCBtYXJnaW46IFwiMjBweCAwIDEwcHhcIiB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmNvbXBsZXRlX2xhdGVyXCIpfVxuICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBcIlwiO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMucHVyY2hhc2VkQnlXcmFwcGVyfT5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnB1cmNoYXNlZEJ5fT5cbiAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5wdXJjaGFzZWRfYnlcIil9e1wiIFwifVxuICAgICAgICAgIHt0aWNrZXQ/Lm9yZGVyPy5vd25lcl9lbWFpbH1cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJOb30+XG4gICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICB0ZXh0PXt0aWNrZXQ/Lm9yZGVyPy5udW1iZXJ9XG4gICAgICAgICAgICByZXZlcnNlZFxuICAgICAgICAgICAgd2lkdGg9ezI1MH1cbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNVwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge2dldFNlY29uZGFyeVRpdGxlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeVxuICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyTm90ZX1cbiAgICAgICAgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fVxuICAgICAgPlxuICAgICAgICB7Z2V0SGVhZGVyTm90ZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuLy8gQWRkaW5nIHByb3AtdHlwZXMgZm9yIHR5cGUtY2hlY2tpbmdcbkFzc2lnbkhlYWRlci5wcm9wVHlwZXMgPSB7XG4gIGluUHJvZ3Jlc3M6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHVzZXJFbWFpbDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25IZWFkZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIExpbmssIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi8uLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlYXNzaWduSGVhZGVyID0gKHsgaW5Qcm9ncmVzcywgdGlja2V0LCB1c2VyRW1haWwsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGFzc2lnbmVkVG9Zb3UgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlckVtYWlsO1xuICBjb25zdCB7IGFsbG93c0RlbGVnYXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgY29uc3QgZ2V0U2Vjb25kYXJ5VGl0bGUgPSAoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IGFzc2lnbmVkVG9Zb3VcbiAgICAgID8gdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLnlvdXJzZWxmXCIpXG4gICAgICA6IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuXG4gICAgaWYgKGluUHJvZ3Jlc3MgPT09IFwibWFuYWdlXCIpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uZGVsZWdhdGVkXCIpfSAke1xuICAgICAgICB0aWNrZXQub3duZXIuZmlyc3RfbmFtZVxuICAgICAgfSAke3RpY2tldC5vd25lci5sYXN0X25hbWV9LmA7XG4gICAgfVxuXG4gICAgaWYgKCFpblByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLnJlYXNzaWduZWRfdG9cIil9ICR7dXNlcn1gO1xuICB9O1xuXG4gIGNvbnN0IGdldEhlYWRlck5vdGUgPSAoKSA9PiB7XG4gICAgaWYgKCFpblByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gYWxsb3dzRGVsZWdhdGVcbiAgICAgICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uY2hvb3NlX29wdGlvblwiKVxuICAgICAgICA6IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5jaG9vc2Vfb3B0aW9uX25vX2RlbGVnYXRlXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHRyYW5zS2V5ID0gYXNzaWduZWRUb1lvdVxuICAgICAgPyBcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmFuc3dlcl95b3VyX2VxXCJcbiAgICAgIDogXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5hbnN3ZXJfb3RoZXJzX2VxXCI7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge3QodHJhbnNLZXkpfVxuICAgICAgICA8YnIgLz5cbiAgICAgICAgey8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi99XG4gICAgICAgIDxMaW5rXG4gICAgICAgICAgY29tcG9uZW50PVwiYnV0dG9uXCJcbiAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgc3g9e3sgZm9udFdlaWdodDogNzAwLCBtYXJnaW46IFwiMjBweCAwIDEwcHhcIiB9fVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5jb21wbGV0ZV9sYXRlclwiKX1cbiAgICAgICAgPC9MaW5rPlxuICAgICAgPC8+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDVcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHtnZXRTZWNvbmRhcnlUaXRsZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlck5vdGV9XG4gICAgICAgIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgID5cbiAgICAgICAge2dldEhlYWRlck5vdGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbi8vIEFkZGluZyBwcm9wLXR5cGVzIGZvciB0eXBlLWNoZWNraW5nXG5SZWFzc2lnbkhlYWRlci5wcm9wVHlwZXMgPSB7XG4gIGluUHJvZ3Jlc3M6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHVzZXJFbWFpbDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWFzc2lnbkhlYWRlcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuXG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuXG5jb25zdCBSZWFzc2lnbkZvcm0gPSAoeyBvblN1Ym1pdCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHtcbiAgICAgIG5ld19hdHRlbmRlZV9lbWFpbDogXCJcIixcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IFwiXCJcbiAgICB9LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHl1cC5vYmplY3Qoe1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAgIC5lbWFpbCh0KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSksXG4gICAgICBwZXJzb25hbF9tZXNzYWdlOiB5dXAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLnRleHQuc3RyaW5nXCIpKVxuICAgIH0pLFxuICAgIG9uU3VibWl0OiAodmFsdWVzLCB7IHJlc2V0Rm9ybSB9KSA9PiB7XG4gICAgICBvblN1Ym1pdCh2YWx1ZXMpO1xuICAgICAgcmVzZXRGb3JtKCk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgZm9ybWlrLnJlc2V0Rm9ybSgpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLnRpdGxlXCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX0+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLmJvZHlcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJuZXdfYXR0ZW5kZWVfZW1haWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLm5ld19hdHRlbmRlZV9lbWFpbFwiKX1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLm5ld19hdHRlbmRlZV9lbWFpbH1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbClcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsXG4gICAgICAgICAgfVxuICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgIC8+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwicGVyc29uYWxfbWVzc2FnZVwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0ucGVyc29uYWxfbWVzc2FnZVwiKX1cbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5wZXJzb25hbF9tZXNzYWdlfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgbXVsdGlsaW5lXG4gICAgICAgICAgbWluUm93cz17NH1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLnBlcnNvbmFsX21lc3NhZ2UgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLnBlcnNvbmFsX21lc3NhZ2UgJiYgZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICA8Rm9ybUZvb3RlclxuICAgICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5zYXZlXCIpfVxuICAgICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLmNhbmNlbFwiKX1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAgIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgPC8+XG4gICk7XG59O1xuXG5SZWFzc2lnbkZvcm0ucHJvcFR5cGVzID0ge1xuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVhc3NpZ25Gb3JtO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUNvbnRleHQsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBhc3NpZ25BdHRlbmRlZSxcbiAgZGVsZWdhdGVUaWNrZXQsXG4gIHJlYXNzaWduVGlja2V0LFxuICBzYXZlRXh0cmFRdWVzdGlvbnMsXG4gIHVuYXNzaWduVGlja2V0XG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgVGlja2V0Rm9ybSBmcm9tIFwiLi4vVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0Rm9ybVwiO1xuaW1wb3J0IEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQgZnJvbSBcIi4uL0N1c3RvbU5vdGlmaWNhdGlvbi9Db250ZXh0XCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHVzZUdldFRpY2tldCBmcm9tIFwiLi4vLi4vaG9va3MvdXNlR2V0VGlja2V0XCI7XG5pbXBvcnQgQXNzaWduSGVhZGVyIGZyb20gXCIuL2NvbXBvbmVudHMvSGVhZGVyL0Fzc2lnbkhlYWRlclwiO1xuaW1wb3J0IFJlYXNzaWduSGVhZGVyIGZyb20gXCIuL2NvbXBvbmVudHMvSGVhZGVyL1JlYXNzaWduSGVhZGVyXCI7XG5pbXBvcnQgQXNzaWduT3B0aW9ucyBmcm9tIFwiLi9jb21wb25lbnRzL0Fzc2lnbk9wdGlvbnNcIjtcbmltcG9ydCB7IFRJQ0tFVF9EUkFXRVJfSUQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldEFzc2lnbiA9ICh7IHRpY2tldElkLCBvcmRlcklkLCBvd25lcklkLCBvcGVuLCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHsgc3VjY2Vzc01lc3NhZ2UsIGVycm9yTWVzc2FnZSB9ID0gdXNlQ29udGV4dChcbiAgICBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0XG4gICk7XG4gIGNvbnN0IFthc3NpZ25PcHRpb24sIHNldEFzc2lnbk9wdGlvbl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW2Fzc2lnbmF0aW9uSW5Qcm9ncmVzcywgc2V0QXNzaWduYXRpb25JblByb2dyZXNzXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIHVzZXI6IHsgdXNlclByb2ZpbGUgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9ID0gdXNlR2V0VGlja2V0KFxuICAgIHRpY2tldElkLFxuICAgIG9yZGVySWQsXG4gICAgb3duZXJJZCxcbiAgICBvcGVuXG4gICk7XG4gIGNvbnN0IGlzVXNlck9yZGVyT3duZXIgPSB0aWNrZXQ/Lm9yZGVyPy5vd25lcl9pZCA9PT0gdXNlclByb2ZpbGU/LmlkO1xuICBjb25zdCBpc1VzZXJUaWNrZXRPd25lciA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyUHJvZmlsZT8uZW1haWw7XG4gIGNvbnN0IGNhbkVkaXRUaWNrZXREYXRhID1cbiAgICAoaXNVc2VyVGlja2V0T3duZXIgfHwgaXNVc2VyT3JkZXJPd25lcikgJiZcbiAgICBzdW1taXQuYWxsb3dfdXBkYXRlX2F0dGVuZGVlX2V4dHJhX3F1ZXN0aW9ucztcblxuICBjb25zdCBvbkNsb3NlRVFGb3JtID0gKCkgPT4ge1xuICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhcIlwiKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3Qgb25Bc3NpZ24gPSAoZW1haWwsIG1lc3NhZ2UgPSBcIlwiKSA9PiB7XG4gICAgaWYgKG93bmVySWQpIHtcbiAgICAgIGRpc3BhdGNoKHJlYXNzaWduVGlja2V0KG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkpLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoYCR7YXNzaWduT3B0aW9ufWApO1xuICAgICAgICBzZXRBc3NpZ25PcHRpb24obnVsbCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlzcGF0Y2goYXNzaWduQXR0ZW5kZWUob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsKSkudGhlbigoKSA9PiB7XG4gICAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBvblVuQXNzaWduID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHVuYXNzaWduVGlja2V0KG9yZGVySWQsIHRpY2tldElkKSkudGhlbigoKSA9PiB7XG4gICAgICBvbkNsb3NlRVFGb3JtKCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25EZWxlZ2F0ZSA9IChmaXJzdE5hbWUsIGxhc3ROYW1lLCBlbWFpbCkgPT4ge1xuICAgIGRpc3BhdGNoKFxuICAgICAgZGVsZWdhdGVUaWNrZXQob3JkZXJJZCwgdGlja2V0SWQsIGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsKVxuICAgICkudGhlbigoKSA9PiB7XG4gICAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoYCR7YXNzaWduT3B0aW9ufWApO1xuICAgICAgc2V0QXNzaWduT3B0aW9uKG51bGwpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uU2F2ZUVRID0gKHZhbCkgPT4ge1xuICAgIGNvbnN0IGFuc3dlcnMgPSB0cmFuc2Zvcm1BbndlcnNGb3JtYXQodmFsKTtcblxuICAgIHJldHVybiBkaXNwYXRjaChzYXZlRXh0cmFRdWVzdGlvbnModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgb25DbG9zZUVRRm9ybSgpO1xuICAgICAgICBzdWNjZXNzTWVzc2FnZSh0KFwidGlja2V0X2Fzc2lnbi5zYXZpbmdfc3VjY2Vzc1wiKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICBlcnJvck1lc3NhZ2UodChcInRpY2tldF9hc3NpZ24uc2F2aW5nX2Vycm9yXCIpKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9KTtcbiAgfTtcblxuICBjb25zdCB0aXRsZSA9IG93bmVySWRcbiAgICA/IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi50aXRsZVwiKVxuICAgIDogdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi50aXRsZVwiKTtcbiAgY29uc3QgSGVhZGVyID0gb3duZXJJZCA/IFJlYXNzaWduSGVhZGVyIDogQXNzaWduSGVhZGVyO1xuXG4gIHJldHVybiAoXG4gICAgPFJpZ2h0RHJhd2VyXG4gICAgICBpZD17VElDS0VUX0RSQVdFUl9JRH1cbiAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlRVFGb3JtfVxuICAgID5cbiAgICAgIHt0aWNrZXQgJiYgZXh0cmFRdWVzdGlvbnMgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFJlYXNzaWduQ29udGFpbmVyfT5cbiAgICAgICAgICA8SGVhZGVyXG4gICAgICAgICAgICBpblByb2dyZXNzPXthc3NpZ25hdGlvbkluUHJvZ3Jlc3N9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIHVzZXJFbWFpbD17dXNlclByb2ZpbGUuZW1haWx9XG4gICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlRVFGb3JtfVxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICB7YXNzaWduYXRpb25JblByb2dyZXNzID8gKFxuICAgICAgICAgICAgPFRpY2tldEZvcm1cbiAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9XG4gICAgICAgICAgICAgIGNhbkVkaXQ9e2NhbkVkaXRUaWNrZXREYXRhfVxuICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlRVF9XG4gICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VFUUZvcm19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8QXNzaWduT3B0aW9uc1xuICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgdXNlclByb2ZpbGU9e3VzZXJQcm9maWxlfVxuICAgICAgICAgICAgICBhc3NpZ25PcHRpb249e2Fzc2lnbk9wdGlvbn1cbiAgICAgICAgICAgICAgc2V0QXNzaWduT3B0aW9uPXtzZXRBc3NpZ25PcHRpb259XG4gICAgICAgICAgICAgIG9uQXNzaWduPXtvbkFzc2lnbn1cbiAgICAgICAgICAgICAgb25VbkFzc2lnbj17b25VbkFzc2lnbn1cbiAgICAgICAgICAgICAgb25EZWxlZ2F0ZT17b25EZWxlZ2F0ZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgIDwvUmlnaHREcmF3ZXI+XG4gICk7XG59O1xuXG5UaWNrZXRBc3NpZ24ucHJvcFR5cGVzID0ge1xuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRBc3NpZ247XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIEF1dG9jb21wbGV0ZSwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCBDb21wYW55RmllbGQgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBpc1JlcXVpcmVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW29wdGlvbnMsIHNldE9wdGlvbnNdID0gUmVhY3QudXNlU3RhdGUoW10pO1xuICBjb25zdCB7XG4gICAgZXJyb3JzLFxuICAgIHZhbHVlcyxcbiAgICB0b3VjaGVkLFxuICAgIHNldEZpZWxkVG91Y2hlZCxcbiAgICBzZXRGaWVsZFZhbHVlLFxuICAgIGluaXRpYWxWYWx1ZXNcbiAgfSA9IGZvcm1paztcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnk7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBkaXNhYmxlZCA9ICEhaW5pdGlhbFZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgPT09IFwiXCIpIHtcbiAgICAgIHNldE9wdGlvbnModmFsdWUgPyBbdmFsdWVdIDogW10pO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyhzdW1taXRJZCwgaW5wdXRWYWx1ZSwgKHJlc3VsdHMpID0+IHtcbiAgICAgIGxldCBuZXdPcHRpb25zID0gW107XG5cbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBuZXdPcHRpb25zID0gW3ZhbHVlXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdHMpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFsuLi5uZXdPcHRpb25zLCAuLi5yZXN1bHRzXTtcbiAgICAgIH1cblxuICAgICAgc2V0T3B0aW9ucyhuZXdPcHRpb25zKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9LCBbdmFsdWUsIGlucHV0VmFsdWVdKTtcblxuICByZXR1cm4gKFxuICAgIDxBdXRvY29tcGxldGVcbiAgICAgIG5hbWU9e25hbWV9XG4gICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgYXV0b0NvbXBsZXRlXG4gICAgICBmcmVlU29sb1xuICAgICAgaW5jbHVkZUlucHV0SW5MaXN0XG4gICAgICBmaWx0ZXJTZWxlY3RlZE9wdGlvbnNcbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgIG9uQmx1cj17KCkgPT4gc2V0RmllbGRUb3VjaGVkKG5hbWUsIHRydWUsIHRydWUpfVxuICAgICAgZ2V0T3B0aW9uTGFiZWw9eyhvcHRpb24pID0+IHtcbiAgICAgICAgLy8gVmFsdWUgc2VsZWN0ZWQgd2l0aCBlbnRlciwgcmlnaHQgZnJvbSB0aGUgaW5wdXRcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFkZCBcInh4eFwiIG9wdGlvbiBjcmVhdGVkIGR5bmFtaWNhbGx5XG4gICAgICAgIGlmIChvcHRpb24uaW5wdXRWYWx1ZSkge1xuICAgICAgICAgIHJldHVybiBvcHRpb24uaW5wdXRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWd1bGFyIG9wdGlvblxuICAgICAgICByZXR1cm4gb3B0aW9uLm5hbWU7XG4gICAgICB9fVxuICAgICAgb25DaGFuZ2U9eyhldmVudCwgbmV3VmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgdG1wVmFsdWUgPSBuZXdWYWx1ZT8uaW5wdXRWYWx1ZSB8fCBuZXdWYWx1ZTtcblxuICAgICAgICBzZXRPcHRpb25zKHRtcFZhbHVlID8gW3RtcFZhbHVlLCAuLi5vcHRpb25zXSA6IG9wdGlvbnMpO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKG5hbWUsIHRtcFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBvbklucHV0Q2hhbmdlPXsoZXZlbnQsIG5ld0lucHV0VmFsdWUpID0+IHtcbiAgICAgICAgc2V0SW5wdXRWYWx1ZShuZXdJbnB1dFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBmaWx0ZXJPcHRpb25zPXsob3B0aW9ucywgcGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaW5wdXRWYWx1ZSB9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IFsuLi5vcHRpb25zXTtcbiAgICAgICAgLy8gU3VnZ2VzdCB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmFsdWVcbiAgICAgICAgY29uc3QgaXNFeGlzdGluZyA9IG9wdGlvbnMuc29tZSgob3B0aW9uKSA9PiBpbnB1dFZhbHVlID09PSBvcHRpb24ubmFtZSk7XG4gICAgICAgIGlmIChpbnB1dFZhbHVlICE9PSBcIlwiICYmICFpc0V4aXN0aW5nKSB7XG4gICAgICAgICAgZmlsdGVyZWQucHVzaCh7XG4gICAgICAgICAgICBpbnB1dFZhbHVlLFxuICAgICAgICAgICAgbmFtZTogYFNlbGVjdCBcIiR7aW5wdXRWYWx1ZX1cImBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgIH19XG4gICAgICByZW5kZXJJbnB1dD17KHBhcmFtcykgPT4gKFxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucGFyYW1zfVxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5hdHRlbmRlZV9jb21wYW55XCIpfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGhlbHBlclRleHQ9e2hlbHBlclRleHR9XG4gICAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgcmVuZGVyT3B0aW9uPXsocHJvcHMsIG9wdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB7IGtleSwgLi4ub3B0aW9uUHJvcHMgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nXG4gICAgICAgICAgPGxpIGtleT17a2V5fSB7Li4ub3B0aW9uUHJvcHN9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkyXCJcbiAgICAgICAgICAgICAgc3g9e3sgZm9udFNpemU6IFwiMWVtXCIsIGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge29wdGlvbi5uYW1lfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59O1xuXG5Db21wYW55RmllbGQucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29tcGFueUZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmF3SFRNTCBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyID0gKHtcbiAgZGlzY2xhaW1lcixcbiAgZm9ybWlrLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGlzUmVxdWlyZWQgPSB0cnVlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZDtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFJhd0hUTUw+e2Rpc2NsYWltZXJ9PC9SYXdIVE1MPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5leHRyYV9xdWVzdGlvbnNfZm9ybS5kaXNjbGFpbWVyX2xhYmVsXCIpfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uZGlzY2xhaW1lcl9sYWJlbFwiKX1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5SZWdpc3RyYXRpb25EaXNjbGFpbWVyLnByb3BUeXBlcyA9IHtcbiAgZGlzY2xhaW1lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzUmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFFSQ29kZSBmcm9tIFwicmVhY3QtcXItY29kZVwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgRW1haWxPdXRsaW5lZCBhcyBFbWFpbEljb24sXG4gIEZpbGVEb3dubG9hZE91dGxpbmVkIGFzIERvd25sb2FkSWNvblxufSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi8uLi8uLi9Db3B5VGV4dFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi8uLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5pbXBvcnQgeyBnZXRUaWNrZXRQREYsIHJlc2VuZE5vdGlmaWNhdGlvbiB9IGZyb20gXCIuLi8uLi8uLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIFRXT19JVEVNIH0gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuLi8uLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0RGV0YWlsSGVhZGVyID0gKHsgdGlja2V0LCBpc1ZpcnR1YWxTdW1taXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFtzZW50Q29uZmlybWF0aW9uLCBzZXRTZW50Q29uZmlybWF0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBkb3dubG9hZFRpY2tldFBkZiA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChnZXRUaWNrZXRQREYodGlja2V0KSk7XG4gIH07XG5cbiAgY29uc3Qgb25TZW5kRW1haWwgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZW5kTm90aWZpY2F0aW9uKHRpY2tldCkpLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0U2VudENvbmZpcm1hdGlvbih0cnVlKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXRTZW50Q29uZmlybWF0aW9uKGZhbHNlKTtcbiAgICAgIH0sIE1JTExJU0VDX1RPX1NFQyAqIFRXT19JVEVNKTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNFwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgIHt0aWNrZXQ/LnRpY2tldF90eXBlPy5uYW1lfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnB1cmNoYXNlZF9ieVwiKX0ge3RpY2tldD8ub3JkZXI/Lm93bmVyX2VtYWlsfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuXG4gICAgICB7aXNDb21wbGV0ZSAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5xckNvZGV9PlxuICAgICAgICAgICAgPFFSQ29kZVxuICAgICAgICAgICAgICBzaXplPXsyNTZ9XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBcImF1dG9cIixcbiAgICAgICAgICAgICAgICBtYXhXaWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHZhbHVlPXt0aWNrZXQucXJfY29kZX1cbiAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNTYgMjU2XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPXtzdHlsZXMuc3RhdHVzfT57dChcInRpY2tldF9kZXRhaWwuc3RhdHVzXCIpfTwvcD5cbiAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMucXJOb3RlfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5xcl9ub3RlXCIpfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgPC8+XG4gICAgICApfVxuXG4gICAgICB7IWlzVmlydHVhbFN1bW1pdCAmJiBpc0NvbXBsZXRlICYmIChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zQ29udGFpbmVyfT5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kb3dubG9hZEJ0bn1cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e2Rvd25sb2FkVGlja2V0UGRmfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxEb3dubG9hZEljb24gZm9udFNpemU9XCJsYXJnZVwiIC8+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuZG93bmxvYWRcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuc2VuZEJ0bn0gJHtzZW50Q29uZmlybWF0aW9uICYmIHN0eWxlcy5zZW50fWB9XG4gICAgICAgICAgICBvbkNsaWNrPXtvblNlbmRFbWFpbH1cbiAgICAgICAgICAgIGRpc2FibGVkPXtzZW50Q29uZmlybWF0aW9ufVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxFbWFpbEljb24gZm9udFNpemU9XCJsYXJnZVwiIC8+XG4gICAgICAgICAgICB7c2VudENvbmZpcm1hdGlvblxuICAgICAgICAgICAgICA/IHQoXCJ0aWNrZXRfZGV0YWlsLnNlbnRcIilcbiAgICAgICAgICAgICAgOiB0KFwidGlja2V0X2RldGFpbC5zZW5kXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJOdW1iZXJ9PlxuICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICB0ZXh0PXt0aWNrZXQ/Lm9yZGVyPy5udW1iZXJ9XG4gICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICB3aWR0aD17MTUwfVxuICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0RGV0YWlsSGVhZGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBmcm9tIFwiLi4vLi4vLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHNcIjtcblxuaW1wb3J0IHtcbiAgZ2V0VHlwZVZhbHVlLFxuICB0b1NsdWdcbn0gZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcblxuaW1wb3J0IFRpY2tldE93bmVyRmllbGRzIGZyb20gXCIuLi9UaWNrZXRPd25lckZpZWxkc1wiO1xuaW1wb3J0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgZnJvbSBcIi4uL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lclwiO1xuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcbmltcG9ydCB1c2VTY3JvbGxUb0Vycm9yIGZyb20gXCIuLi8uLi8uLi8uLi9ob29rcy91c2VTY3JvbGxUb0Vycm9yXCI7XG5pbXBvcnQge1xuICBwYXJzZUFuc3dlcnMsXG4gIGJ1aWxkVmFsaWRhdGlvblNjaGVtYVxufSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuLi8uLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0Rm9ybSA9ICh7XG4gIHRpY2tldCxcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIHN1bW1pdCxcbiAgY2FuRWRpdCxcbiAgb25TdWJtaXQsXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhbnN3ZXJzID0gdGlja2V0Py5vd25lcj8uZXh0cmFfcXVlc3Rpb25zLnJlZHVjZSgocmVzLCBhbnMpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcoYW5zLnF1ZXN0aW9uLm5hbWUsIGFucy5xdWVzdGlvbi5pZCk7XG4gICAgcmVzW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsdWUoYW5zLnZhbHVlLCBhbnMucXVlc3Rpb24udHlwZSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfSwge30pO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczogcGFyc2VBbnN3ZXJzKFxuICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBhbnN3ZXJzLFxuICAgICAgdHJ1ZSxcbiAgICAgIHRydWVcbiAgICApLFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IGJ1aWxkVmFsaWRhdGlvblNjaGVtYShcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgdHJ1ZSxcbiAgICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnlcbiAgICApLFxuICAgIG9uU3VibWl0OiAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCByZWxldmFudEFuc3dlcnMgPSBwYXJzZUFuc3dlcnMoXG4gICAgICAgIHRpY2tldC5vd25lcixcbiAgICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIG9uU3VibWl0KHJlbGV2YW50QW5zd2Vycyk7XG4gICAgfSxcbiAgICBlbmFibGVSZWluaXRpYWxpemU6IHRydWVcbiAgfSk7XG5cbiAgLy8gY29uc29sZS5sb2coXCJTVU1NSVQ6IFwiLCBzdW1taXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRJQ0tFVDogXCIsIHRpY2tldCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiUVVFU1RJVU9OczogXCIsIGV4dHJhUXVlc3Rpb25zKTtcbiAgLy8gY29uc29sZS5sb2coXCJBTlNXRVJTOiBcIiwgYW5zd2Vycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiRVJST1JzOiBcIiwgZm9ybWlrLmVycm9ycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVkFMVUVTOiBcIiwgZm9ybWlrLnZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiSU5JVElBTDogXCIsIGZvcm1pay5pbml0aWFsVmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJUT1VDSEVEOiBcIiwgZm9ybWlrLnRvdWNoZWQpO1xuXG4gIC8vIFNDUk9MTCBUTyBFUlJPUlxuICB1c2VTY3JvbGxUb0Vycm9yKGZvcm1payk7XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgIDxUaWNrZXRPd25lckZpZWxkc1xuICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgaXNEZWxlZ2F0ZWQ9eyEhdGlja2V0Lm93bmVyPy5tYW5hZ2VyX2lkfVxuICAgICAgICBzdW1taXRJZD17c3VtbWl0LmlkfVxuICAgICAgICBkaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAvPlxuXG4gICAgICB7ZXh0cmFRdWVzdGlvbnM/Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8Qm94PlxuICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MlwiIGNsYXNzTmFtZT17c3R5bGVzLmFkZGl0aW9uYWxEZXRhaWxzfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5hZGl0aW9uYWxfZGV0YWlsc1wiKX1cbiAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPEV4dHJhUXVlc3Rpb25zRmllbGRzXG4gICAgICAgICAgICBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9XG4gICAgICAgICAgICBhbGxvd0VkaXQ9e2NhbkVkaXR9XG4gICAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICAvPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG5cbiAgICAgIHtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudCAmJiAoXG4gICAgICAgIDxSZWdpc3RyYXRpb25EaXNjbGFpbWVyXG4gICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgZGlzY2xhaW1lcj17c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnR9XG4gICAgICAgICAgaXNSZXF1aXJlZD17c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeX1cbiAgICAgICAgICBpc0Rpc2FibGVkPXshY2FuRWRpdH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8Rm9ybUZvb3RlclxuICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLnNhdmVcIil9XG4gICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X2RldGFpbC5jYW5jZWxcIil9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGRpc2FibGVkPXtmb3JtaWsuaXNTdWJtaXR0aW5nfVxuICAgICAgLz5cbiAgICA8L2Zvcm0+XG4gICk7XG59O1xuXG5UaWNrZXRGb3JtLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBjYW5FZGl0OiBQcm9wVHlwZXMuYm9vbCxcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldEZvcm07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIFRleHRGaWVsZCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IENvbXBhbnlGaWVsZCBmcm9tIFwiLi4vQ29tcGFueUZpZWxkXCI7XG5cbmNvbnN0IFRpY2tldE93bmVyRmllbGRzID0gKHsgZm9ybWlrLCBzdW1taXRJZCwgZGlzYWJsZWQsIGlzRGVsZWdhdGVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBoYW5kbGVDaGFuZ2UsIGhhbmRsZUJsdXIsIGluaXRpYWxWYWx1ZXMgfSA9XG4gICAgZm9ybWlrO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG5hbWU9e1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsfVxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuZW1haWxcIil9XG4gICAgICAgIGRpc2FibGVkXG4gICAgICAgIHZhbHVlPXt2YWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdfVxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgLz5cbiAgICAgIHtpc0RlbGVnYXRlZCAmJiAoXG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIHN4PXt7IGZvbnRXZWlnaHQ6IDUwMCwgbWFyZ2luOiBcIjEwcHggMFwiIH19PlxuICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5tYW5hZ2VfZm9yXCIpfVxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICApfVxuICAgICAge1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWUsIFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXS5tYXAoXG4gICAgICAgIChuYW1lKSA9PiAoXG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBrZXk9e25hbWV9XG4gICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgbGFiZWw9e3QoYHRpY2tldF9kZXRhaWwuJHtuYW1lfWApfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlc1tuYW1lXX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZCB8fCBpc0RlbGVnYXRlZCB8fCAhIWluaXRpYWxWYWx1ZXNbbmFtZV19XG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgICAgZXJyb3I9e3RvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pfVxuICAgICAgICAgICAgaGVscGVyVGV4dD17Zm9ybWlrLnRvdWNoZWRbbmFtZV0gJiYgZm9ybWlrLmVycm9yc1tuYW1lXX1cbiAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIC8+XG4gICAgICAgIClcbiAgICAgICl9XG4gICAgICA8Q29tcGFueUZpZWxkIGZvcm1paz17Zm9ybWlrfSBzdW1taXRJZD17c3VtbWl0SWR9IGlzUmVxdWlyZWQgLz5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaW5mb05vdGV9Pnt0KFwidGlja2V0X2RldGFpbC5pbmZvX25vdGVcIil9PC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5UaWNrZXRPd25lckZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzdW1taXRJZDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzRGVsZWdhdGVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0T3duZXJGaWVsZHM7XG4iLCJleHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIlxufTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgdXNlR2V0VGlja2V0IGZyb20gXCIuLi8uLi9ob29rcy91c2VHZXRUaWNrZXRcIjtcbmltcG9ydCB7IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCB9IGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQgeyBUSUNLRVRfRFJBV0VSX0lEIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRpY2tldEZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9UaWNrZXRGb3JtXCI7XG5pbXBvcnQgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dCBmcm9tIFwiLi4vQ3VzdG9tTm90aWZpY2F0aW9uL0NvbnRleHRcIjtcbmltcG9ydCB7IHNhdmVUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBUaWNrZXREZXRhaWxIZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9UaWNrZXREZXRhaWxIZWFkZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0RGV0YWlsID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRJZCxcbiAgb3JkZXJJZCxcbiAgb3duZXJJZCxcbiAgb3BlbixcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgc3VjY2Vzc01lc3NhZ2UsIGVycm9yTWVzc2FnZSB9ID0gdXNlQ29udGV4dChcbiAgICBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0XG4gICk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qge1xuICAgIHVzZXI6IHsgdXNlclByb2ZpbGUgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9ID0gdXNlR2V0VGlja2V0KFxuICAgIHRpY2tldElkLFxuICAgIG9yZGVySWQsXG4gICAgb3duZXJJZCxcbiAgICBvcGVuXG4gICk7XG4gIGNvbnN0IGlzVXNlck9yZGVyT3duZXIgPSB0aWNrZXQ/Lm9yZGVyPy5vd25lcl9pZCA9PT0gdXNlclByb2ZpbGU/LmlkO1xuICBjb25zdCBpc1VzZXJUaWNrZXRPd25lciA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyUHJvZmlsZT8uZW1haWw7XG4gIGNvbnN0IGNhbkVkaXRUaWNrZXREYXRhID1cbiAgICAoaXNVc2VyVGlja2V0T3duZXIgfHwgaXNVc2VyT3JkZXJPd25lcikgJiZcbiAgICBzdW1taXQuYWxsb3dfdXBkYXRlX2F0dGVuZGVlX2V4dHJhX3F1ZXN0aW9ucztcblxuICBjb25zdCBvblNhdmUgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVUaWNrZXREZXRhaWxzKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIG9uQ2xvc2UoKTtcbiAgICAgICAgc3VjY2Vzc01lc3NhZ2UodChcInRpY2tldF9kZXRhaWwuc2F2aW5nX3N1Y2Nlc3NcIikpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgZXJyb3JNZXNzYWdlKHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19lcnJvclwiKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8UmlnaHREcmF3ZXJcbiAgICAgIGlkPXtUSUNLRVRfRFJBV0VSX0lEfVxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXREZXRhaWxDb250YWluZXJ9XG4gICAgICBoZWFkZXJDaGlsZHJlbj17XG4gICAgICAgIDxUaWNrZXREZXRhaWxIZWFkZXJcbiAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICBpc1ZpcnR1YWxTdW1taXQ9e3N1bW1pdD8uaXNfdmlydHVhbH1cbiAgICAgICAgLz5cbiAgICAgIH1cbiAgICA+XG4gICAgICB7dGlja2V0ICYmIGV4dHJhUXVlc3Rpb25zICYmIChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUNvbnRhaW5lcn0+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICB2YXJpYW50PVwiaDRcIlxuICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvVGl0bGV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5hdHRlbmRlZV9pbmZvcm1hdGlvblwiKX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgIHt0aWNrZXQgJiYgKFxuICAgICAgICAgICAgICA8VGlja2V0Rm9ybVxuICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICBjYW5FZGl0PXtjYW5FZGl0VGlja2V0RGF0YX1cbiAgICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlfVxuICAgICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICA8L1JpZ2h0RHJhd2VyPlxuICApO1xufTtcblxuVGlja2V0RGV0YWlsLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZXRhaWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDb250YWluZXIsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRTdGF0dXMgPSAoeyB0aWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgcmVmdW5kUmVxdWVzdHMgPSB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5maW5kKFxuICAgIChyKSA9PiByLnN0YXR1cyA9PT0gXCJSZXF1ZXN0ZWRcIlxuICApO1xuICBjb25zdCB7IGlzSW5jb21wbGV0ZSwgaXNVbmFzc2lnbmVkLCBpc0NvbXBsZXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFN0YXR1c0NvbnRhaW5lcn0+XG4gICAgICB7aXNBY3RpdmUgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgeyEhcmVmdW5kUmVxdWVzdHMgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgcmVmdW5kIHJlcXVlc3RlZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvblJlZnVuZFJlcXVlc3RlZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3JlZnVuZF9yZXF1ZXN0ZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0luY29tcGxldGUgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgaW5jb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkluY29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19pbmNvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNVbmFzc2lnbmVkICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHVuYXNzaWduZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25VbmFzc2lnbmVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25Db21wbGV0ZX1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC8+XG4gICAgICApIDogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgY2FuY2VsbGVkXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25DYW5jZWxsZWR9YH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY2FuY2VsbGVkXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59O1xuXG5UaWNrZXRTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICByZWZ1bmRSZXF1ZXN0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0U3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBEaXZpZGVyLFxuICBUYWIsXG4gIFRhYnMsXG4gIHVzZU1lZGlhUXVlcnksXG4gIHVzZVRoZW1lXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdG9wTG9hZGluZyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gIEZJUlNUX1BBR0UsXG4gIFRBQlNcbn0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IE15T3JkZXJzVGlja2V0cyBmcm9tIFwiLi4vTXlPcmRlcnNUaWNrZXRzXCI7XG5pbXBvcnQgQXNzaWduZWRUb01lIGZyb20gXCIuLi9PcmRlcnNMaXN0L0Fzc2lnbmVkVG9NZVwiO1xuaW1wb3J0IHtcbiAgZ2V0VGlja2V0c0J5T3JkZXIsXG4gIGdldFVzZXJPcmRlcnMsXG4gIGdldFVzZXJUaWNrZXRzXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgVGFiV3JhcHBlciBmcm9tIFwiLi4vVGFiV3JhcHBlclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBXaWRnZXRUYWJzID0gKCkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFt0YWIsIHNldFRhYl0gPSB1c2VTdGF0ZShUQUJTLk9SREVSUyk7XG4gIGNvbnN0IFt0aWNrZXRzRnVsbHlMb2FkZWQsIHNldFRpY2tldHNGdWxseUxvYWRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qge1xuICAgIGZpbHRlcixcbiAgICBzb3J0LFxuICAgIG9yZGVyc19wZXJfcGFnZTogb3JkZXJzUGVyUGFnZSxcbiAgICB0aWNrZXRfcGVyX3BhZ2U6IHRpY2tldFBlclBhZ2UsXG4gICAgdXNlclRpY2tldHMsXG4gICAgbWVtYmVyT3JkZXJzXG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBpc01vYmlsZSA9IHVzZU1lZGlhUXVlcnkodGhlbWUuYnJlYWtwb2ludHMuZG93bihcImxnXCIpKTtcblxuICBjb25zdCBoYW5kbGVUYWJDaGFuZ2UgPSAoZXYsIG5ld1RhYikgPT4ge1xuICAgIHNldFRhYihuZXdUYWIpO1xuICB9O1xuXG4gIGNvbnN0IGZldGNoQXNzaWduZWRUaWNrZXRzID0gKHBhZ2UsIHNraXBMb2FkaW5nID0gZmFsc2UpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRVc2VyVGlja2V0cyhcbiAgICAgICAge1xuICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgcGVyUGFnZTogREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgc29ydFxuICAgICAgICB9LFxuICAgICAgICBza2lwTG9hZGluZ1xuICAgICAgKVxuICAgICk7XG5cbiAgY29uc3QgZmV0Y2hPcmRlclRpY2tldHMgPSAocGFnZSwgc2tpcExvYWRpbmcgPSBmYWxzZSkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFVzZXJPcmRlcnMoXG4gICAgICAgIHtcbiAgICAgICAgICBwYWdlLFxuICAgICAgICAgIHBlclBhZ2U6IG9yZGVyc1BlclBhZ2UsXG4gICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgIHNvcnRcbiAgICAgICAgfSxcbiAgICAgICAgc2tpcExvYWRpbmdcbiAgICAgIClcbiAgICApLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IG9yZGVyVGlja2V0c1Byb21pc2VzID0gZGF0YS5tYXAoKG9yZGVyKSA9PlxuICAgICAgICBkaXNwYXRjaChcbiAgICAgICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgICAgIGN1cnJlbnRfcGFnZTogRklSU1RfUEFHRSxcbiAgICAgICAgICAgIHBlclBhZ2U6IHRpY2tldFBlclBhZ2UsXG4gICAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgICBzb3J0XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIFByb21pc2UuYWxsKG9yZGVyVGlja2V0c1Byb21pc2VzKTtcbiAgICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGZldGNoUHJvbWlzZXMgPSBbXG4gICAgICBmZXRjaEFzc2lnbmVkVGlja2V0cyhGSVJTVF9QQUdFLCB0cnVlKSxcbiAgICAgIGZldGNoT3JkZXJUaWNrZXRzKEZJUlNUX1BBR0UsIHRydWUpXG4gICAgXTtcbiAgICBQcm9taXNlLmFsbChmZXRjaFByb21pc2VzKVxuICAgICAgLnRoZW4oKCkgPT4gc2V0VGlja2V0c0Z1bGx5TG9hZGVkKHRydWUpKVxuICAgICAgLmZpbmFsbHkoKCkgPT4gZGlzcGF0Y2goc3RvcExvYWRpbmcoKSkpO1xuICB9LCBbZmlsdGVyLCBzb3J0XSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGlja2V0c0Z1bGx5TG9hZGVkKSB7XG4gICAgICBpZiAobWVtYmVyT3JkZXJzPy5sZW5ndGggPT09IDAgJiYgdXNlclRpY2tldHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgc2V0VGFiKFRBQlMuVElDS0VUUyk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbdGlja2V0c0Z1bGx5TG9hZGVkXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRhYldyYXBwZXJ9PlxuICAgICAgPFRhYnNcbiAgICAgICAgdmFsdWU9e3RhYn1cbiAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRhYkNoYW5nZX1cbiAgICAgICAgdmFyaWFudD17aXNNb2JpbGUgPyBcImZ1bGxXaWR0aFwiIDogXCJzdGFuZGFyZFwifVxuICAgICAgPlxuICAgICAgICA8VGFiIGxhYmVsPXt0KFwib3JkZXJzLnRpdGxlXCIpfSB2YWx1ZT17VEFCUy5PUkRFUlN9IC8+XG4gICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuYXNzaWduZWRfdG9fbWVcIil9IHZhbHVlPXtUQUJTLlRJQ0tFVFN9IC8+XG4gICAgICA8L1RhYnM+XG4gICAgICA8RGl2aWRlciAvPlxuXG4gICAgICB7dGFiID09PSBUQUJTLk9SREVSUyAmJiAoXG4gICAgICAgIDxUYWJXcmFwcGVyIHRhYj17VEFCUy5PUkRFUlN9IHNldFRhYj17c2V0VGFifT5cbiAgICAgICAgICA8TXlPcmRlcnNUaWNrZXRzIGZldGNoRGF0YT17ZmV0Y2hPcmRlclRpY2tldHN9IC8+XG4gICAgICAgIDwvVGFiV3JhcHBlcj5cbiAgICAgICl9XG4gICAgICB7dGFiID09PSBUQUJTLlRJQ0tFVFMgJiYgKFxuICAgICAgICA8VGFiV3JhcHBlciB0YWI9e1RBQlMuVElDS0VUU30gc2V0VGFiPXtzZXRUYWJ9PlxuICAgICAgICAgIDxBc3NpZ25lZFRvTWUgZmV0Y2hEYXRhPXtmZXRjaEFzc2lnbmVkVGlja2V0c30gLz5cbiAgICAgICAgPC9UYWJXcmFwcGVyPlxuICAgICAgKX1cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFdpZGdldFRhYnM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCwgY29ubmVjdCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHJlc2V0RmlsdGVyLCBjaGFuZ2VTb3J0LCBjaGFuZ2VGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IEN1c3RvbVRoZW1lIGZyb20gXCIuLi9DdXN0b21UaGVtZVwiO1xuaW1wb3J0IExvYWRlciBmcm9tIFwiLi4vTG9hZGVyXCI7XG5pbXBvcnQgRmlsdGVycyBmcm9tIFwiLi4vRmlsdGVyc1wiO1xuaW1wb3J0IFdpZGdldFRhYnMgZnJvbSBcIi4uL1dpZGdldFRhYnNcIjtcbmltcG9ydCBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0IGZyb20gXCIuLi9DdXN0b21Ob3RpZmljYXRpb24vQ29udGV4dFwiO1xuaW1wb3J0IEN1c3RvbU5vdGlmaWNhdGlvbiBmcm9tIFwiLi4vQ3VzdG9tTm90aWZpY2F0aW9uXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFdpZGdldFdyYXBwZXIgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbbXNnRGF0YSwgc2V0TXNnRGF0YV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qge1xuICAgIGxvYWRpbmcsXG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBzdWNjZXNzTWVzc2FnZSA9IChtc2cpID0+XG4gICAgc2V0TXNnRGF0YSh7IG1lc3NhZ2U6IG1zZywgc2V2ZXJpdHk6IFwic3VjY2Vzc1wiIH0pO1xuICBjb25zdCBlcnJvck1lc3NhZ2UgPSAobXNnKSA9PiBzZXRNc2dEYXRhKHsgbWVzc2FnZTogbXNnLCBzZXZlcml0eTogXCJlcnJvclwiIH0pO1xuICBjb25zdCBtZXNzYWdlQ29udGV4dCA9IHVzZU1lbW8oKCkgPT4gKHsgc3VjY2Vzc01lc3NhZ2UsIGVycm9yTWVzc2FnZSB9KSwgW10pO1xuXG4gIGNvbnN0IG9uUmVzZXQgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRGaWx0ZXIoKSk7XG4gIH07XG5cbiAgY29uc3Qgb25GaWx0ZXIgPSAoZmlsdGVyVmFsdWUpID0+IHtcbiAgICBkaXNwYXRjaChjaGFuZ2VGaWx0ZXIoZmlsdGVyVmFsdWUpKTtcbiAgfTtcblxuICBjb25zdCBvblNvcnQgPSAoc29ydFZhbHVlKSA9PiB7XG4gICAgZGlzcGF0Y2goY2hhbmdlU29ydChzb3J0VmFsdWUpKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxDdXN0b21UaGVtZT5cbiAgICAgIDxMb2FkZXIgb3Blbj17bG9hZGluZ30gLz5cbiAgICAgIDxDdXN0b21Ob3RpZmljYXRpb25cbiAgICAgICAgb3Blbj17ISFtc2dEYXRhfVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRNc2dEYXRhKG51bGwpfVxuICAgICAgICBtZXNzYWdlPXttc2dEYXRhPy5tZXNzYWdlfVxuICAgICAgICBzZXZlcml0eT17bXNnRGF0YT8uc2V2ZXJpdHl9XG4gICAgICAvPlxuICAgICAgPEZpbHRlcnNcbiAgICAgICAgb25GaWx0ZXI9e29uRmlsdGVyfVxuICAgICAgICBvblNvcnQ9e29uU29ydH1cbiAgICAgICAgb25TZWFyY2g9e29uRmlsdGVyfVxuICAgICAgICBvblJlc2V0PXtvblJlc2V0fVxuICAgICAgLz5cbiAgICAgIDxCb3ggc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX0+XG4gICAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRzVGl0bGVUZXh0fT5cbiAgICAgICAgICB7ZmlsdGVyVmFsdWVzXG4gICAgICAgICAgICA/IHQoXCJsYWJlbHMuc2VhcmNoX3Jlc3VsdHNcIiwgeyBmaWx0ZXI6IGZpbHRlclZhbHVlcyB9KVxuICAgICAgICAgICAgOiB0KFwibGFiZWxzLnRpY2tldHNcIil9XG4gICAgICAgIDwvaDM+XG4gICAgICA8L0JveD5cbiAgICAgIDxDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXttZXNzYWdlQ29udGV4dH0+XG4gICAgICAgIDxXaWRnZXRUYWJzIC8+XG4gICAgICA8L0N1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQuUHJvdmlkZXI+XG4gICAgPC9DdXN0b21UaGVtZT5cbiAgKTtcbn07XG5cbmNvbnN0IG1hcFN0YXRlVG9Qcm9wcyA9ICh7IHdpZGdldFN0YXRlIH0pID0+ICh7XG4gIHNvcnQ6IHdpZGdldFN0YXRlLnNvcnQsXG4gIGZpbHRlcjogd2lkZ2V0U3RhdGUuZmlsdGVyXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdChtYXBTdGF0ZVRvUHJvcHMsIHt9KShXaWRnZXRXcmFwcGVyKTtcbiIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBnZXRFeHRyYVF1ZXN0aW9ucywgZ2V0VGlja2V0IH0gZnJvbSBcIi4uL2FjdGlvbnNcIjtcblxuY29uc3QgdXNlR2V0VGlja2V0ID0gKHRpY2tldElkLCBvcmRlcklkLCBvd25lcklkLCBydW4pID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJ1bikge1xuICAgICAgaWYgKHRpY2tldElkICYmIG9yZGVySWQpIHtcbiAgICAgICAgZGlzcGF0Y2goZ2V0VGlja2V0KHRpY2tldElkLCBvcmRlcklkKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvd25lcklkKSB7XG4gICAgICAgIGRpc3BhdGNoKGdldEV4dHJhUXVlc3Rpb25zKG93bmVySWQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFt0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgcnVuXSk7XG5cbiAgY29uc3QgeyBleHRyYVF1ZXN0aW9ucywgY3VycmVudFRpY2tldDogdGlja2V0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlXG4gICk7XG5cbiAgcmV0dXJuIHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXNlR2V0VGlja2V0O1xuIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBUSUNLRVRfRFJBV0VSX0lEIH0gZnJvbSBcIi4uL3V0aWxzL2NvbnN0YW50c1wiO1xuXG4vLyBTbW9vdGggc2Nyb2xsaW5nIGZ1bmN0aW9uIHVzaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZVxuZnVuY3Rpb24gc21vb3RoU2Nyb2xsVG8oY29udGFpbmVyLCB0YXJnZXRTY3JvbGxUb3AsIGR1cmF0aW9uKSB7XG4gIGNvbnN0IHN0YXJ0U2Nyb2xsVG9wID0gY29udGFpbmVyLnNjcm9sbFRvcDtcbiAgY29uc3QgZGlzdGFuY2UgPSB0YXJnZXRTY3JvbGxUb3AgLSBzdGFydFNjcm9sbFRvcDtcbiAgbGV0IHN0YXJ0VGltZSA9IG51bGw7XG5cbiAgZnVuY3Rpb24gYW5pbWF0aW9uU3RlcCh0aW1lc3RhbXApIHtcbiAgICBpZiAoIXN0YXJ0VGltZSkgc3RhcnRUaW1lID0gdGltZXN0YW1wO1xuICAgIGNvbnN0IGVsYXBzZWQgPSB0aW1lc3RhbXAgLSBzdGFydFRpbWU7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgIGNvbnN0IHByb2dyZXNzID0gTWF0aC5taW4oZWxhcHNlZCAvIGR1cmF0aW9uLCAxKTtcbiAgICBjb25zdCBlYXNlSW5PdXRRdWFkID1cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgICBwcm9ncmVzcyA8IDAuNSA/IDIgKiBwcm9ncmVzcyAqKiAyIDogMSAtICgtMiAqIHByb2dyZXNzICsgMikgKiogMiAvIDI7XG5cbiAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gc3RhcnRTY3JvbGxUb3AgKyBkaXN0YW5jZSAqIGVhc2VJbk91dFF1YWQ7XG5cbiAgICBpZiAoZWxhcHNlZCA8IGR1cmF0aW9uKSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uU3RlcCk7XG4gICAgfVxuICB9XG5cbiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblN0ZXApO1xufVxuXG5jb25zdCB1c2VTY3JvbGxUb0Vycm9yID0gKGZvcm1paykgPT4ge1xuICBjb25zdCB7IGVycm9ycywgaXNWYWxpZCwgaXNTdWJtaXR0aW5nIH0gPSBmb3JtaWs7XG4gIGNvbnN0IGVycm9yQXJyYXkgPSBPYmplY3Qua2V5cyhlcnJvcnMpO1xuICBjb25zdCBlcnJvckNvdW50ID0gZXJyb3JBcnJheS5sZW5ndGg7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNWYWxpZCB8fCBlcnJvckNvdW50ID09PSAwKSByZXR1cm47XG5cbiAgICAvLyBzb3J0IGVsZW1lbnRzIGJ5IHBvc2l0aW9uXG4gICAgY29uc3QgZWxlbWVudHNTb3J0ZWQgPSBlcnJvckFycmF5XG4gICAgICAucmVkdWNlKChyZXN1bHQsIGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbbmFtZT0nJHtlcnJvcn0nXWApO1xuICAgICAgICBpZiAoIWVsZW1lbnQpIHJldHVybiByZXN1bHQ7XG5cbiAgICAgICAgY29uc3QgZWxSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgcmVzdWx0LnB1c2goeyBlbGVtZW50LCBlcnJvciwgdG9wOiBlbFJlY3QudG9wIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9LCBbXSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLnRvcCAtIGIudG9wKTtcblxuICAgIGlmIChlbGVtZW50c1NvcnRlZC5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50XG4gICAgICAuZ2V0RWxlbWVudEJ5SWQoVElDS0VUX0RSQVdFUl9JRClcbiAgICAgIC5xdWVyeVNlbGVjdG9yKFwiLk11aURyYXdlci1wYXBlclwiKTtcbiAgICBjb25zdCB0YXJnZXQgPSBlbGVtZW50c1NvcnRlZFswXTtcblxuICAgIGlmIChjb250YWluZXI/LmNvbnRhaW5zKHRhcmdldC5lbGVtZW50KSkge1xuICAgICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBvZmZzZXQgb2YgdGhlIHRhcmdldCBlbGVtZW50IHJlbGF0aXZlIHRvIHRoZSBjb250YWluZXJcbiAgICAgIGNvbnN0IGVsZW1PZmZlc3QgPSAxMDA7XG4gICAgICBjb25zdCBhbmltYXRpb25EdXJhdGlvbiA9IDUwMDtcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9XG4gICAgICAgIHRhcmdldC50b3AgLSBjb250YWluZXJSZWN0LnRvcCArIGNvbnRhaW5lci5zY3JvbGxUb3AgLSBlbGVtT2ZmZXN0O1xuXG4gICAgICAvLyBTY3JvbGwgdGhlIGNvbnRhaW5lciB0byB0aGUgdGFyZ2V0IGVsZW1lbnQncyBwb3NpdGlvblxuICAgICAgc21vb3RoU2Nyb2xsVG8oY29udGFpbmVyLCBzY3JvbGxUb3AsIGFuaW1hdGlvbkR1cmF0aW9uKTsgLy8gNTAwbXMgZHVyYXRpb25cbiAgICB9XG4gIH0sIFtpc1N1Ym1pdHRpbmddKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVNjcm9sbFRvRXJyb3I7XG4iLCJpbXBvcnQgeyBpc1RpY2tldFJlZnVuZGFibGUgfSBmcm9tIFwiLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiQ29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfSU5DT01QTEVURSA9IFwiSW5jb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19DQU5DRUxMRUQgPSBcIkNhbmNlbGxlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19VTkFTU0lHTkVEID0gXCJVbmFzc2lnbmVkXCI7XG5cbmV4cG9ydCBjb25zdCB1c2VUaWNrZXREZXRhaWxzID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBnZXRTdGF0dXMgPSAoKSA9PiB7XG4gICAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcbiAgICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG4gICAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuICAgIHJldHVybiB0aWNrZXQub3duZXIuc3RhdHVzO1xuICB9O1xuXG4gIGlmICghdGlja2V0KSByZXR1cm4ge307XG5cbiAgY29uc3Qgc3RhdHVzID0gZ2V0U3RhdHVzKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZSAmJiBzdGF0dXMgIT09IFNUQVRVU19DQU5DRUxMRUQ7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpO1xuICBjb25zdCBhbGxvd3NEZWxlZ2F0ZSA9XG4gICAgdGlja2V0Py50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX2RlbGVnYXRlIHx8XG4gICAgdGlja2V0Py5wcm9tb19jb2RlPy5hbGxvd3NfdG9fZGVsZWdhdGU7XG4gIGNvbnN0IGlzQ29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19DT01QTEVURTtcbiAgY29uc3QgaXNVbmFzc2lnbmVkID0gc3RhdHVzID09PSBTVEFUVVNfVU5BU1NJR05FRDtcbiAgY29uc3QgaXNJbmNvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfSU5DT01QTEVURTtcbiAgY29uc3QgY2FuUmVhc3NpZ24gPVxuICAgICFpc1VuYXNzaWduZWQgJiZcbiAgICB0aWNrZXQudGlja2V0X3R5cGU/LmFsbG93c190b19yZWFzc2lnbiAmJlxuICAgICghdGlja2V0LnByb21vX2NvZGUgfHwgdGlja2V0LnByb21vX2NvZGU/LmFsbG93c190b19yZWFzc2lnbik7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGF0dXMsXG4gICAgaXNDb21wbGV0ZSxcbiAgICBpc1VuYXNzaWduZWQsXG4gICAgaXNJbmNvbXBsZXRlLFxuICAgIGlzQWN0aXZlLFxuICAgIGlzUmVmdW5kYWJsZSxcbiAgICBhbGxvd3NEZWxlZ2F0ZSxcbiAgICBjYW5SZWFzc2lnblxuICB9O1xufTtcbiIsImltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBpbml0UmVhY3RJMThuZXh0IH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBMYW5ndWFnZURldGVjdG9yIGZyb20gXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiO1xuaW1wb3J0IGVuIGZyb20gXCIuL2xvY2FsZXMvZW4uanNvblwiO1xuaW1wb3J0IGVzIGZyb20gXCIuL2xvY2FsZXMvZXMuanNvblwiO1xuXG4vLyBpbXBvcnQgQmFja2VuZCBmcm9tICdpMThuZXh0LWh0dHAtYmFja2VuZCc7XG4vLyBkb24ndCB3YW50IHRvIHVzZSB0aGlzP1xuLy8gaGF2ZSBhIGxvb2sgYXQgdGhlIFF1aWNrIHN0YXJ0IGd1aWRlXG4vLyBmb3IgcGFzc2luZyBpbiBsbmcgYW5kIHRyYW5zbGF0aW9ucyBvbiBpbml0XG5cbmkxOG5cbiAgLy8gbG9hZCB0cmFuc2xhdGlvbiB1c2luZyBodHRwIC0+IHNlZSAvcHVibGljL2xvY2FsZXMgKGkuZS4gaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvcmVhY3QtaTE4bmV4dC90cmVlL21hc3Rlci9leGFtcGxlL3JlYWN0L3B1YmxpYy9sb2NhbGVzKVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWh0dHAtYmFja2VuZFxuICAvLyB3YW50IHlvdXIgdHJhbnNsYXRpb25zIHRvIGJlIGxvYWRlZCBmcm9tIGEgcHJvZmVzc2lvbmFsIENETj8gPT4gaHR0cHM6Ly9naXRodWIuY29tL2xvY2l6ZS9yZWFjdC10dXRvcmlhbCNzdGVwLTItLS11c2UtdGhlLWxvY2l6ZS1jZG5cbiAgLy8gLnVzZShCYWNrZW5kKVxuICAvLyBkZXRlY3QgdXNlciBsYW5ndWFnZVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VEZXRlY3RvclxuICAudXNlKExhbmd1YWdlRGV0ZWN0b3IpXG4gIC8vIHBhc3MgdGhlIGkxOG4gaW5zdGFuY2UgdG8gcmVhY3QtaTE4bmV4dC5cbiAgLnVzZShpbml0UmVhY3RJMThuZXh0KVxuICAvLyBpbml0IGkxOG5leHRcbiAgLy8gZm9yIGFsbCBvcHRpb25zIHJlYWQ6IGh0dHBzOi8vd3d3LmkxOG5leHQuY29tL292ZXJ2aWV3L2NvbmZpZ3VyYXRpb24tb3B0aW9uc1xuICAuaW5pdCh7XG4gICAgZmFsbGJhY2tMbmc6IFwiZW5cIixcbiAgICBkZWJ1ZzogZmFsc2UsXG4gICAgcmVzb3VyY2VzOiB7XG4gICAgICBlbjogeyB0cmFuc2xhdGlvbjogZW4gfSxcbiAgICAgIGVzOiB7IHRyYW5zbGF0aW9uOiBlcyB9XG4gICAgfSxcbiAgICBpbnRlcnBvbGF0aW9uOiB7XG4gICAgICBlc2NhcGVWYWx1ZTogZmFsc2UgLy8gbm90IG5lZWRlZCBmb3IgcmVhY3QgYXMgaXQgZXNjYXBlcyBieSBkZWZhdWx0XG4gICAgfVxuICB9KTtcblxuZXhwb3J0IGRlZmF1bHQgaTE4bjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgeyBMT0dPVVRfVVNFUiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFNUQVJUX0xPQURJTkcsXG4gIFNUT1BfTE9BRElORyxcbiAgUkVTRVRfTE9BRElOR1xufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBSRVNFVF9TVEFURSxcbiAgUkVTRVRfRklMVEVSLFxuICBTRVRfU1RBVEUsXG4gIFNFVF9VU0VSLFxuICBHRVRfVVNFUl9PUkRFUlMsXG4gIEdFVF9NWV9BU1NJR05FRF9USUNLRVRTLFxuICBHRVRfVElDS0VUU19CWV9PUkRFUixcbiAgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCxcbiAgUkVDRUlWRV9USUNLRVQsXG4gIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TLFxuICBVUERBVEVfVElDS0VULFxuICBBU1NJR05fVElDS0VULFxuICBSRVNFVF9BUElfRVJST1IsXG4gIFNFVF9BUElfRVJST1IsXG4gIFJFU0VUX1RJQ0tFVCxcbiAgQ0hBTkdFX0ZJTFRFUixcbiAgQ0hBTkdFX1NPUlQsXG4gIEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSxcbiAgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIsXG4gIEZJTFRFUl9WQVJfREFURSxcbiAgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSxcbiAgRklMVEVSX1ZBUl9GUkVFX1BBSUQsXG4gIEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTLFxuICBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCxcbiAgRklMVEVSX1ZBUl9QUk9NT0NPREUsXG4gIERFTEVHQVRFX1RJQ0tFVCxcbiAgUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRVxufSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBGSVJTVF9QQUdFLCBUQUJTIH0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVBY3RpdmVGaWx0ZXJzLCBoYXNMb2FkZWRBbGxEYXRhIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24gfSBmcm9tIFwiLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5jb25zdCBERUZBVUxUX0ZJTFRFUl9TVEFURSA9IHtcbiAgW0ZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRV06IFtdLFxuICBbRklMVEVSX1ZBUl9USUNLRVRfVFlQRV06IFtdLFxuICBbRklMVEVSX1ZBUl9GUkVFX1BBSURdOiBcIlwiLFxuICBbRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNdOiBcIlwiLFxuICBbRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURdOiBcIlwiLFxuICBbRklMVEVSX1ZBUl9QUk9NT0NPREVdOiBcIlwiLFxuICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiBcIlwiLFxuICBbRklMVEVSX1ZBUl9EQVRFXTogbnVsbFxufTtcblxuY29uc3QgREVGQVVMVF9TVEFURSA9IHtcbiAgc3VtbWl0OiBudWxsLFxuICB1c2VyOiB7fSxcbiAgd2lkZ2V0TG9hZGluZzogZmFsc2UsXG4gIG1lbWJlck9yZGVyczogW10sXG4gIHVzZXJUaWNrZXRzOiBbXSxcbiAgZXh0cmFRdWVzdGlvbnM6IFtdLFxuICBjdXJyZW50VGlja2V0OiBudWxsLFxuICBlcnJvcnM6IHt9LFxuICBsb2FkaW5nOiBmYWxzZSxcbiAgY3VycmVudF90YWI6IFRBQlMuT1JERVJTLFxuICBzb3J0OiB7fSxcbiAgZmlsdGVyOiBERUZBVUxUX0ZJTFRFUl9TVEFURSxcbiAgYWN0aXZlRmlsdGVyc0NvdW50OiAwLFxuICBvcmRlcnNfY3VycmVudF9wYWdlOiAwLFxuICBvcmRlcnNfbGFzdF9wYWdlOiAwLFxuICBvcmRlcnNfcGVyX3BhZ2U6IDUsXG4gIG9yZGVyc190b3RhbDogMCxcbiAgdGlja2V0X2N1cnJlbnRfcGFnZTogMCxcbiAgdGlja2V0X2xhc3RfcGFnZTogMCxcbiAgdGlja2V0X3Blcl9wYWdlOiA1LFxuICB0aWNrZXRfdG90YWw6IDAsXG4gIHVzZXJfdGlja2V0c190b3RhbDogMCxcbiAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZTogMCxcbiAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZTogMCxcbiAgYXBpRXJyb3I6IG51bGxcbn07XG5cbmNvbnN0IFdpZGdldFJlZHVjZXIgPSAoc3RhdGUgPSBERUZBVUxUX1NUQVRFLCB7IHR5cGUsIHBheWxvYWQgfSA9IHt9KSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgTE9HT1VUX1VTRVI6XG4gICAgY2FzZSBSRVNFVF9TVEFURTpcbiAgICAgIHJldHVybiBERUZBVUxUX1NUQVRFO1xuICAgIGNhc2UgU1RBUlRfTE9BRElORzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBsb2FkaW5nOiB0cnVlIH07XG4gICAgY2FzZSBTVE9QX0xPQURJTkc6XG4gICAgY2FzZSBSRVNFVF9MT0FESU5HOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGxvYWRpbmc6IGZhbHNlIH07XG4gICAgY2FzZSBSRVNFVF9BUElfRVJST1I6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYXBpRXJyb3I6IG51bGwgfTtcbiAgICBjYXNlIFJFU0VUX0ZJTFRFUjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBmaWx0ZXI6IERFRkFVTFRfRklMVEVSX1NUQVRFLFxuICAgICAgICBhY3RpdmVGaWx0ZXJzQ291bnQ6IDAsXG4gICAgICAgIHNvcnQ6IHt9LFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiAxLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiAxLFxuICAgICAgICBsb2FkaW5nOiB0cnVlXG4gICAgICB9O1xuICAgIGNhc2UgU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIC4uLnBheWxvYWQgfTtcbiAgICBjYXNlIFNFVF9BUElfRVJST1I6IHtcbiAgICAgIGNvbnN0IHsgdGl0bGUsIGh0bWw6IGJvZHkgfSA9IHBheWxvYWQ7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYXBpRXJyb3I6IHsgdGl0bGUsIGJvZHkgfSB9O1xuICAgIH1cbiAgICBjYXNlIFNFVF9VU0VSOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHVzZXI6IHBheWxvYWQgfTtcbiAgICBjYXNlIENIQU5HRV9GSUxURVI6IHtcbiAgICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSB7IC4uLnN0YXRlLmZpbHRlciwgLi4ucGF5bG9hZCB9O1xuICAgICAgY29uc3QgbmV3QWN0aXZlQ291bnQgPSBjYWxjdWxhdGVBY3RpdmVGaWx0ZXJzKG5ld0ZpbHRlcnMpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGZpbHRlcjogeyAuLi5zdGF0ZS5maWx0ZXIsIC4uLnBheWxvYWQgfSxcbiAgICAgICAgYWN0aXZlRmlsdGVyc0NvdW50OiBuZXdBY3RpdmVDb3VudFxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBDSEFOR0VfU09SVDoge1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNvcnQ6IHsgLi4ucGF5bG9hZCB9IH07XG4gICAgfVxuICAgIGNhc2UgR0VUX1VTRVJfT1JERVJTOiB7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcblxuICAgICAgaWYgKGhhc0xvYWRlZEFsbERhdGEoY3VycmVudF9wYWdlLCBzdGF0ZS5tZW1iZXJPcmRlcnMsIHRvdGFsKSlcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuXG4gICAgICBjb25zdCBtZW1iZXJPcmRlcnMgPVxuICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLnN0YXRlLm1lbWJlck9yZGVycywgLi4uZGF0YV07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnMsXG4gICAgICAgIG9yZGVyc190b3RhbDogdG90YWwsXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogbGFzdF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9NWV9BU1NJR05FRF9USUNLRVRTOiB7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcblxuICAgICAgaWYgKGhhc0xvYWRlZEFsbERhdGEoY3VycmVudF9wYWdlLCBzdGF0ZS51c2VyVGlja2V0cywgdG90YWwpKVxuICAgICAgICByZXR1cm4gc3RhdGU7XG5cbiAgICAgIGNvbnN0IHVzZXJUaWNrZXRzID1cbiAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi5zdGF0ZS51c2VyVGlja2V0cywgLi4uZGF0YV07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB1c2VyVGlja2V0cyxcbiAgICAgICAgdXNlcl90aWNrZXRzX3RvdGFsOiB0b3RhbCxcbiAgICAgICAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZTogY3VycmVudF9wYWdlLFxuICAgICAgICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlOiBsYXN0X3BhZ2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgR0VUX1RJQ0tFVFNfQllfT1JERVI6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgZm9ybWVyT3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZCgobykgPT4gby5pZCA9PT0gZGF0YVswXT8ub3JkZXJfaWQpO1xuXG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBtZW1iZXJPcmRlcnMubWFwKChtbykgPT4ge1xuICAgICAgICBpZiAobW8uaWQgIT09IGRhdGFbMF0/Lm9yZGVyX2lkKSByZXR1cm4gbW87XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPVxuICAgICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRVxuICAgICAgICAgICAgPyBkYXRhXG4gICAgICAgICAgICA6IFsuLi5mb3JtZXJPcmRlci5tZW1iZXJUaWNrZXRzLCAuLi5kYXRhXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5tbyxcbiAgICAgICAgICBtZW1iZXJUaWNrZXRzOiBuZXdUaWNrZXRzLFxuICAgICAgICAgIHRpY2tldHNfcGFnZV9jdXJyZW50OiBjdXJyZW50X3BhZ2UsXG4gICAgICAgICAgdGlja2V0c19wYWdlX2xhc3Q6IGxhc3RfcGFnZSxcbiAgICAgICAgICB0aWNrZXRzX3RvdGFsOiB0b3RhbFxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6IG5ld09yZGVyc1xuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkID0gcGF5bG9hZDtcbiAgICAgIGNvbnN0IG9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoXG4gICAgICAgIChvKSA9PiBvLmlkID09PSB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkWzBdPy5vcmRlcl9pZFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHMubWFwKFxuICAgICAgICAodGlja2V0KSA9PlxuICAgICAgICAgIHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQuZmluZCgodHJyKSA9PiB0cnIuaWQgPT09IHRpY2tldC5pZCkgfHwgdGlja2V0XG4gICAgICApO1xuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5vcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czogdXBkYXRlZFRpY2tldHNcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBtZW1iZXJPcmRlcnMubWFwKChtbykgPT5cbiAgICAgICAgICBtby5pZCA9PT0gdXBkYXRlZE9yZGVyLmlkID8gdXBkYXRlZE9yZGVyIDogbW9cbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBSRVNFVF9USUNLRVQ6IHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiBudWxsIH07XG4gICAgfVxuICAgIGNhc2UgUkVDRUlWRV9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldCA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogdGlja2V0IH07XG4gICAgfVxuICAgIGNhc2UgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlM6IHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBleHRyYVF1ZXN0aW9uczogZGF0YSB9O1xuICAgIH1cbiAgICBjYXNlIFJFTU9WRV9USUNLRVRfQVRURU5ERUU6XG4gICAgY2FzZSBVUERBVEVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXREYXRhID0gcGF5bG9hZC5yZXNwb25zZTtcblxuICAgICAgY29uc3QgbmV3T3JkZXJzID0gc3RhdGUubWVtYmVyT3JkZXJzLm1hcCgob3JkZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV3VGlja2V0cyA9IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24oXG4gICAgICAgICAgb3JkZXIubWVtYmVyVGlja2V0cyxcbiAgICAgICAgICB0aWNrZXREYXRhXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7IC4uLm9yZGVyLCBtZW1iZXJUaWNrZXRzOiBuZXdUaWNrZXRzIH07XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbmV3VXNlclRpY2tldHMgPSB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uKFxuICAgICAgICBzdGF0ZS51c2VyVGlja2V0cyxcbiAgICAgICAgdGlja2V0RGF0YVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIG1lbWJlck9yZGVyczogbmV3T3JkZXJzLCB1c2VyVGlja2V0czogbmV3VXNlclRpY2tldHMgfTtcbiAgICB9XG4gICAgY2FzZSBERUxFR0FURV9USUNLRVQ6XG4gICAgY2FzZSBBU1NJR05fVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXREYXRhID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uKFxuICAgICAgICAgIG9yZGVyLm1lbWJlclRpY2tldHMsXG4gICAgICAgICAgdGlja2V0RGF0YVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IG5ld1VzZXJUaWNrZXRzID0gdXBkYXRlVGlja2V0Q29sbGVjdGlvbihcbiAgICAgICAgc3RhdGUudXNlclRpY2tldHMsXG4gICAgICAgIHRpY2tldERhdGFcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjdXJyZW50VGlja2V0OiB0aWNrZXREYXRhLFxuICAgICAgICBtZW1iZXJPcmRlcnM6IG5ld09yZGVycyxcbiAgICAgICAgdXNlclRpY2tldHM6IG5ld1VzZXJUaWNrZXRzXG4gICAgICB9O1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRSZWR1Y2VyO1xuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29uZmlndXJlU3RvcmUgfSBmcm9tIFwiQHJlZHV4anMvdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgcGVyc2lzdFN0b3JlLFxuICBwZXJzaXN0UmVkdWNlcixcbiAgRkxVU0gsXG4gIFJFSFlEUkFURSxcbiAgUEFVU0UsXG4gIFBFUlNJU1QsXG4gIFBVUkdFLFxuICBSRUdJU1RFUlxufSBmcm9tIFwicmVkdXgtcGVyc2lzdFwiO1xuaW1wb3J0IHN0b3JhZ2UgZnJvbSBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIjtcbmltcG9ydCB7IGNvbWJpbmVSZWR1Y2VycyB9IGZyb20gXCJyZWR1eFwiO1xuaW1wb3J0IFdpZGdldFJlZHVjZXIgZnJvbSBcIi4vcmVkdWNlclwiO1xuXG5leHBvcnQgY29uc3QgZ2V0U3RvcmUgPSAoe1xuICBjbGllbnRJZCxcbiAgbG9naW5VcmwsXG4gIHN1bW1pdCxcbiAgYXBpQmFzZVVybCxcbiAgdXBkYXRlUHJvZmlsZVxufSkgPT4ge1xuICAvLyB0byBhZGQgb3RoZXIgcmVkdWNlcnMgbGF0ZXJcbiAgY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICAgIHdpZGdldFN0YXRlOiBXaWRnZXRSZWR1Y2VyXG4gIH0pO1xuXG4gIGNvbnN0IHN0b3JlID0gY29uZmlndXJlU3RvcmUoe1xuICAgIHJlZHVjZXI6IHBlcnNpc3RSZWR1Y2VyKFxuICAgICAge1xuICAgICAgICBrZXk6IGByb290X215X29yZGVyc190aWNrZXRzXyR7Y2xpZW50SWR9YCxcbiAgICAgICAgc3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHJlZHVjZXJzXG4gICAgKSxcbiAgICBtaWRkbGV3YXJlOiAoZ2V0RGVmYXVsdE1pZGRsZXdhcmUpID0+XG4gICAgICBnZXREZWZhdWx0TWlkZGxld2FyZSh7XG4gICAgICAgIHRodW5rOiB7XG4gICAgICAgICAgZXh0cmFBcmd1bWVudDoge1xuICAgICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgc3VtbWl0LFxuICAgICAgICAgICAgbG9naW5VcmwsXG4gICAgICAgICAgICB1cGRhdGVQcm9maWxlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbW11dGFibGVDaGVjazogZmFsc2UsXG4gICAgICAgIHNlcmlhbGl6YWJsZUNoZWNrOiB7XG4gICAgICAgICAgaWdub3JlZEFjdGlvbnM6IFtGTFVTSCwgUkVIWURSQVRFLCBQQVVTRSwgUEVSU0lTVCwgUFVSR0UsIFJFR0lTVEVSXVxuICAgICAgICB9XG4gICAgICB9KVxuICB9KTtcblxuICByZXR1cm4gc3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlSW5pdFN0b3JlID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oKCkgPT4gZ2V0U3RvcmUoY29uZmlnKSwgW10pO1xuICBjb25zdCBwZXJzaXN0b3IgPSB1c2VNZW1vKCgpID0+IHBlcnNpc3RTdG9yZShzdG9yZSksIFtzdG9yZV0pO1xuXG4gIHJldHVybiB7XG4gICAgc3RvcmUsXG4gICAgcGVyc2lzdG9yXG4gIH07XG59O1xuIiwiaW1wb3J0IHtcbiAgaW5pdExvZ091dCxcbiAgZ2V0QWNjZXNzVG9rZW5cbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0ICogYXMgU2VudHJ5IGZyb20gXCJAc2VudHJ5L3JlYWN0XCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuY29uc3QgZ2V0QWNjZXNzVG9rZW5Nb2NrID0gKCkgPT4ge1xuICB0aHJvdyBuZXcgRXJyb3IoXCJBY2Nlc3MgdG9rZW4gZXJyb3JcIik7XG4gIC8vIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFjY2Vzc1Rva2VuU2FmZWx5ID0gYXN5bmMgKCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBnZXRBY2Nlc3NUb2tlbigpLmNhdGNoKChlKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldDo6Z2V0QWNjZXNzVG9rZW5TYWZlbHkgZXJyb3I6IFwiLCBlKTtcbiAgICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgICAgaW5pdExvZ091dCgpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldDo6Z2V0QWNjZXNzVG9rZW5TYWZlbHkgZXJyb3I6IFwiLCBlKTtcbiAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlKTtcbiAgICBpbml0TG9nT3V0KCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBhdXRoUHJvbWlzZVJlamVjdCA9IGFzeW5jICgpID0+XG4gIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkF1dGggVG9rZW4gZXJyb3JcIikpO1xuIiwiZXhwb3J0IGNvbnN0IExBU1RfSE9VUl9PRl8yNF9IT1VSID0gMjM7XG5leHBvcnQgY29uc3QgTEFTVF9NSU5VVEVfT0ZfSE9VUiA9IDU5O1xuZXhwb3J0IGNvbnN0IE9ORV9QQUdFX05FWFQgPSAxO1xuZXhwb3J0IGNvbnN0IE1JTExJU0VDX1RPX1NFQyA9IDEwMDA7XG5leHBvcnQgY29uc3QgT05FX0RBWSA9IDE7XG5leHBvcnQgY29uc3QgREVGQVVMVF9JVEVNU19QRVJfUEFHRSA9IDU7XG5leHBvcnQgY29uc3QgRklSU1RfUEFHRSA9IDE7XG5leHBvcnQgY29uc3QgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UID0gNTtcbmV4cG9ydCBjb25zdCBTVEVQX09ORSA9IDE7XG5leHBvcnQgY29uc3QgU1RFUF9UV08gPSAyO1xuZXhwb3J0IGNvbnN0IFNURVBfVEhSRUUgPSAzO1xuZXhwb3J0IGNvbnN0IE1JTl9SRVFVSVJFRCA9IDE7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfQ09NUExFVEUgPSBcIlNUQVRVU19DT01QTEVURVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJTVEFUVVNfSU5DT01QTEVURVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19QRU5ESU5HID0gXCJTVEFUVVNfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19DQU5DRUxMRUQgPSBcIlNUQVRVU19DQU5DRUxMRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfRVJST1IgPSBcIlNUQVRVU19FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19QUk9DRVNTSU5HID0gXCJTVEFUVVNfUFJPQ0VTU0lOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19VTkFTU0lHTkVEID0gXCJTVEFUVVNfVU5BU1NJR05FRFwiO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9QRU5ESU5HID0gXCJTVEFUVVNfUkVGVU5EX1BFTkRJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEID0gXCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRCA9IFwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUEVORElOR19MQyA9IFwiUmVxdWVzdGVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyA9IFwiQXBwcm92ZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDID0gXCJSZWplY3RlZFwiO1xuXG5leHBvcnQgY29uc3QgSkVTVF9USU1FT1VUX0lOX01JTExJU0VDID0gMTAwMDA7XG5cbmV4cG9ydCBjb25zdCBPTkVfSVRFTSA9IDE7XG5leHBvcnQgY29uc3QgVFdPX0lURU0gPSAyO1xuZXhwb3J0IGNvbnN0IEZJVkVfSVRFTSA9IDU7XG5leHBvcnQgY29uc3QgU0lYX0lURU0gPSA2O1xuXG5leHBvcnQgY29uc3QgUFJPTUlTRV9CQVRDSF9MSU1JVCA9IDEwO1xuZXhwb3J0IGNvbnN0IEZJRlRZX1BFUl9QQUdFID0gNTA7XG5cbmV4cG9ydCBjb25zdCBFUlJPUl9DT0RFUyA9IHtcbiAgNDAxOiA0MDEsXG4gIDQwMzogNDAxLFxuICA0MTI6IDQwMSxcbiAgNTAwOiA1MDBcbn07XG5cbmV4cG9ydCBjb25zdCBUQUJTID0ge1xuICBPUkRFUlM6IFwiT1JERVJTXCIsXG4gIFRJQ0tFVFM6IFwiVElDS0VUU1wiXG59O1xuXG5leHBvcnQgY29uc3QgT05FX1JFVFJZID0gMTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9BQ1RJT04gPSB7XG4gIE9SREVSUzogXCJPUkRFUlNcIixcbiAgRVhURVJOQUxfVElDS0VUUzogXCJFWFRFUk5BTF9USUNLRVRTXCIsXG4gIFRJQ0tFVFNfQllfT1JERVJTOiBcIlRJQ0tFVFNfQllfT1JERVJTXCJcbn07XG5cbmV4cG9ydCBjb25zdCBUSUNLRVRfRFJBV0VSX0lEID0gXCJ0aWNrZXREcmF3ZXJcIjtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIExBU1RfSE9VUl9PRl8yNF9IT1VSLFxuICBMQVNUX01JTlVURV9PRl9IT1VSLFxuICBNSUxMSVNFQ19UT19TRUMsXG4gIEZJUlNUX1BBR0Vcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDdXJyZW5jeSA9ICh2YWx1ZSwgeyBsb2NhbGUgPSBcImVuLVVTXCIsIC4uLm9wdGlvbnMgfSkgPT4ge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBjdXJyZW5jeTogXCJVU0RcIixcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyXG4gIH07XG5cbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xuICAgIHN0eWxlOiBcImN1cnJlbmN5XCIsXG4gICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgLi4ub3B0aW9uc1xuICB9KTtcblxuICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkRGF0ZSA9IChkYXRldGltZSwgdGltZVpvbmUpID0+IHtcbiAgaWYgKHRpbWVab25lKVxuICAgIHJldHVybiBtb21lbnRcbiAgICAgIC50eihkYXRldGltZSAqIE1JTExJU0VDX1RPX1NFQywgdGltZVpvbmUpXG4gICAgICAuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcblxuICByZXR1cm4gbW9tZW50LnVuaXgoZGF0ZXRpbWUpLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlT3JkZXJUb3RhbHMgPSAoeyBvcmRlciwgc3VtbWl0IH0pID0+IHtcbiAgaWYgKCFvcmRlciB8fCAhc3VtbWl0KSByZXR1cm4ge307XG4gIGNvbnN0IHRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cztcbiAgaWYgKCF0aWNrZXRzKSByZXR1cm4ge307XG5cbiAgY29uc3QgeyByZWZ1bmRlZF9hbW91bnQsIGRpc2NvdW50X2Ftb3VudCwgYW1vdW50LCByYXdfYW1vdW50IH0gPSBvcmRlcjtcbiAgY29uc3QgeyB0aWNrZXRfdHlwZXMgfSA9IHN1bW1pdDtcblxuICBjb25zdCBjdXJyZW5jeU9iamVjdCA9IHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH07XG5cbiAgY29uc3QgdGF4ZXNTdW1tYXJ5ID0gW107XG4gIGNvbnN0IHRpY2tldFN1bW1hcnkgPSBbXTtcbiAgbGV0IHB1cmNoYXNlVGlja2V0VG90YWwgPSAwO1xuXG4gIE9iamVjdC5rZXlzKG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSkubWFwKCh0aWNrZXQpID0+IHtcbiAgICBjb25zdCB0aWNrZXRUeXBlID0gdGlja2V0X3R5cGVzPy5maW5kKCh0dCkgPT4gdHQubmFtZSA9PT0gdGlja2V0KTtcbiAgICBpZiAoIXRpY2tldFR5cGUpIHJldHVybiBudWxsO1xuICAgIHRpY2tldFN1bW1hcnkucHVzaCh7XG4gICAgICB0aWNrZXRfdHlwZV9pZDogdGlja2V0VHlwZS5pZCxcbiAgICAgIHRpY2tldF90eXBlOiB0aWNrZXRUeXBlLFxuICAgICAgbmFtZTogdGlja2V0LFxuICAgICAgcXR5OiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XVxuICAgIH0pO1xuICAgIHB1cmNoYXNlVGlja2V0VG90YWwgKz1cbiAgICAgIHRpY2tldFR5cGUuY29zdCAqIG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdO1xuXG4gICAgcmV0dXJuIHRpY2tldFN1bW1hcnk7XG4gIH0pO1xuXG4gIG9yZGVyLmFwcGxpZWRfdGF4ZXMuZm9yRWFjaCgodGF4KSA9PiB7XG4gICAgY29uc3QgZm9ybWF0dGVkVGF4ID0ge1xuICAgICAgLi4udGF4LFxuICAgICAgYW1vdW50OiBmb3JtYXRDdXJyZW5jeSh0YXguYW1vdW50LCBjdXJyZW5jeU9iamVjdClcbiAgICB9O1xuICAgIHRheGVzU3VtbWFyeS5wdXNoKGZvcm1hdHRlZFRheCk7XG4gIH0pO1xuXG4gIGNvbnN0IHB1cmNoYXNlVG90YWwgPSBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRpY2tldFRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgY29uc3QgZGlzY291bnRUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KGRpc2NvdW50X2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCByZWZ1bmRUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHJlZnVuZGVkX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCBzdWJUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHJhd19hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgYW1vdW50VG90YWwgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3JkZXIsIFwiYW1vdW50XCIpXG4gICAgPyBmb3JtYXRDdXJyZW5jeShhbW91bnQsIGN1cnJlbmN5T2JqZWN0KVxuICAgIDogZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIHJldHVybiB7XG4gICAgZGlzY291bnRUb3RhbCxcbiAgICByZWZ1bmRUb3RhbCxcbiAgICBzdWJUb3RhbCxcbiAgICBhbW91bnRUb3RhbCxcbiAgICB0aWNrZXRTdW1tYXJ5LFxuICAgIHRheGVzU3VtbWFyeVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE9yZGVyVGlja2V0cyA9IChtZW1iZXJPcmRlcnMsIG9yZGVySWQpID0+IHtcbiAgY29uc3Qgb3JkZXJzID0gbWVtYmVyT3JkZXJzLmZpbHRlcigobykgPT4gby5pZCA9PT0gb3JkZXJJZCk7XG4gIHJldHVybiBvcmRlcnNbMF0/Lm1lbWJlclRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzID0gKHRzKSA9PiB7XG4gIGNvbnN0IGxvd2VyID0gdHMuc2V0SG91cnMoMCwgMCwgMCwgMCkgLyBNSUxMSVNFQ19UT19TRUM7XG4gIGNvbnN0IHVwcGVyID1cbiAgICB0cy5zZXRIb3VycyhMQVNUX0hPVVJfT0ZfMjRfSE9VUiwgTEFTVF9NSU5VVEVfT0ZfSE9VUiwgMCwgMCkgL1xuICAgIE1JTExJU0VDX1RPX1NFQztcbiAgcmV0dXJuIHtcbiAgICBsb3dlcixcbiAgICB1cHBlclxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDdXJyZW50VGltZSA9ICgpID0+XG4gIE1hdGgucm91bmQoK25ldyBEYXRlKCkgLyBNSUxMSVNFQ19UT19TRUMpO1xuXG5leHBvcnQgY29uc3QgZ2V0Tm93ID0gKCkgPT4gKGRpc3BhdGNoLCBnZXRTdGF0ZSkgPT4ge1xuICBjb25zdCB7IHRpbWVyU3RhdGUgfSA9IGdldFN0YXRlKCk7XG4gIHJldHVybiB0aW1lclN0YXRlPy5ub3dVdGMgPT0gbnVsbCA/IGRlZmF1bHRDdXJyZW50VGltZSgpIDogdGltZXJTdGF0ZT8ubm93VXRjO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZU5vdyA9ICgpID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHJldHVybiBkaXNwYXRjaChnZXROb3coKSk7XG59O1xuXG4vKipcbiAqIEBwYXJhbSBjdXJyZW50UGFnZVxuICogQHBhcmFtIGRhdGFcbiAqIEBwYXJhbSB0b3RhbFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBjb25zdCBoYXNMb2FkZWRBbGxEYXRhID0gKGN1cnJlbnRQYWdlLCBkYXRhLCB0b3RhbCkgPT4ge1xuICBsZXQgcmVzID0gZmFsc2U7XG4gIGNvbnN0IGRhdGFMZW5ndGggPSBBcnJheS5pc0FycmF5KGRhdGEpID8gZGF0YS5sZW5ndGggOiAwO1xuICAvLyB3ZSBhbHJlYWR5IGxvYWRlZCBhbGwgIGRhdGEgKCBmaXJzdCBwYWdlIGlzIGFsd2F5cyByZWxvYWRlZCBpdCApXG4gIGlmIChjdXJyZW50UGFnZSA+IEZJUlNUX1BBR0UgJiYgZGF0YUxlbmd0aCA+IDAgJiYgZGF0YUxlbmd0aCA9PT0gdG90YWwpXG4gICAgcmVzID0gdHJ1ZTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVBY3RpdmVGaWx0ZXJzID0gKGZpbHRlcnMpID0+IHtcbiAgbGV0IGNvdW50ID0gMDtcbiAgT2JqZWN0LmVudHJpZXMoZmlsdGVycykuZm9yRWFjaCgoWywgdmFsdWVdKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBjb3VudCArPSB2YWx1ZS5sZW5ndGg7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUudHJpbSgpICE9PSBcIlwiKSB7XG4gICAgICBjb3VudCsrO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiICYmIHZhbHVlID4gMCkge1xuICAgICAgY291bnQrKztcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY291bnQ7XG59O1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIE9ORV9EQVkgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFBhc3QgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHJlYXNzaWduX2RhdGUgPVxuICAgIHN1bW1pdD8ucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcblxuICByZXR1cm4gbm93ID4gcmVhc3NpZ25fZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFN0YXJ0ZWQgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQuc3RhcnRfZGF0ZSA8IG5vdztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXREYXlzRGlmZiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCBzdGFydERheSA9IG1vbWVudChzdW1taXQuc3RhcnRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBlbmREYXkgPSBtb21lbnQoc3VtbWl0LmVuZF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXMgPSBlbmREYXk/LmRpZmYoc3RhcnREYXksIFwiZGF5c1wiKTtcbiAgcmV0dXJuIHtcbiAgICBzdGFydERheSxcbiAgICBlbmREYXksXG4gICAgZGF5c1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgeyBzdGFydERheSwgZW5kRGF5LCBkYXlzIH0gPSBnZXRTdW1taXREYXlzRGlmZihzdW1taXQpO1xuICBpZiAoIXN0YXJ0RGF5IHx8ICFlbmREYXkpIHJldHVybiBudWxsO1xuICBsZXQgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGxldCBmb3JtYXRFbmREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGlmIChzdGFydERheS55ZWFyKCkgPT09IGVuZERheS55ZWFyKCkpIGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERFwiO1xuICBpZiAoc3RhcnREYXkubW9udGgoKSA9PT0gZW5kRGF5Lm1vbnRoKCkpIGZvcm1hdEVuZERhdGUgPSBcIkRELCBZWVlZXCI7XG5cbiAgY29uc3Qgc3RhcnREYXRlID0gc3RhcnREYXkuZm9ybWF0KGZvcm1hdFN0YXJ0RGF0ZSk7XG4gIGNvbnN0IGVuZERhdGUgPSBlbmREYXkuZm9ybWF0KGZvcm1hdEVuZERhdGUpO1xuXG4gIGlmIChkYXlzID4gT05FX0RBWSkgcmV0dXJuIGAke3N0YXJ0RGF0ZX0gLSAke2VuZERhdGV9YDtcblxuICByZXR1cm4gc3RhcnREYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdExvY2F0aW9uID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgbG9jYXRpb24gPSBzdW1taXQubG9jYXRpb25zPy5maW5kKFxuICAgIChsKSA9PiBsLmNsYXNzX25hbWUgPT09IFwiU3VtbWl0VmVudWVcIiAmJiBsLmlzX21haW4gPT09IHRydWVcbiAgKTtcblxuICBpZiAoIWxvY2F0aW9uKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gYCR7bG9jYXRpb24uY2l0eX0sICR7bG9jYXRpb24uY291bnRyeX1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdFJlYXNzaWduRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgIDogc3VtbWl0LmVuZF9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVN1bW1pdERldGFpbHMgPSAoeyBzdW1taXQgfSkgPT4ge1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcblxuICBpZiAoIXN1bW1pdCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gZ2V0U3VtbWl0TG9jYXRpb24oc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGdldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZFJlYXNzaWduRGF0ZSA9IG1vbWVudC50eihcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8udGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUgPSBnZXRTdW1taXREYXlzRGlmZihcbiAgICBub3csXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/Lm5hbWVcbiAgKTtcblxuICBjb25zdCBpc1Bhc3QgPSBjaGVja1N1bW1pdFBhc3Qoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1N0YXJ0ZWQgPSBjaGVja1N1bW1pdFN0YXJ0ZWQoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHN1bW1pdD8ubmFtZSxcbiAgICBub3csXG4gICAgbG9jYXRpb24sXG4gICAgZm9ybWF0dGVkRGF0ZSxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgZm9ybWF0dGVkUmVhc3NpZ25EYXRlLFxuICAgIGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUsXG4gICAgaXNQYXN0LFxuICAgIGlzU3RhcnRlZCxcbiAgICBpc1JlYXNzaWduYWJsZVxuICB9O1xufTtcbiIsImltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHtcbiAgTUlOX1JFUVVJUkVELFxuICBTVEFUVVNfQ0FOQ0VMTEVELFxuICBTVEFUVVNfQ09NUExFVEUsXG4gIFNUQVRVU19JTkNPTVBMRVRFLFxuICBTVEFUVVNfUkVGVU5EX0FQUFJPVkVELFxuICBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDLFxuICBTVEFUVVNfUkVGVU5EX1BFTkRJTkcsXG4gIFNUQVRVU19SRUZVTkRfUEVORElOR19MQyxcbiAgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRCxcbiAgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyxcbiAgU1RBVFVTX1VOQVNTSUdORURcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb25zdGFudHNcIjtcbmltcG9ydCB7XG4gIGNoZWNrSWZWYWx1ZU1hdGNoLFxuICBnZXRUeXBlSW5pdGlhbFZhbHVlLFxuICB0b1NsdWdcbn0gZnJvbSBcIi4uL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBzdGF0dXNEYXRhID0ge1xuICBbU1RBVFVTX1VOQVNTSUdORURdOiB7XG4gICAgdHlwZTogU1RBVFVTX1VOQVNTSUdORUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy51bmFzc2lnbmVkXCIpXG4gIH0sXG4gIFtTVEFUVVNfSU5DT01QTEVURV06IHtcbiAgICB0eXBlOiBTVEFUVVNfSU5DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmluY29tcGxldGVcIilcbiAgfSxcbiAgW1NUQVRVU19DT01QTEVURV06IHtcbiAgICB0eXBlOiBTVEFUVVNfQ09NUExFVEUsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NBTkNFTExFRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfQ0FOQ0VMTEVELFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuY2FuY2VsbGVkXCIpXG4gIH1cbn07XG5leHBvcnQgY29uc3QgZ2V0VGlja2V0U3RhdHVzS2V5ID0gKHRpY2tldCkgPT4ge1xuICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuXG4gIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcblxuICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiSW5jb21wbGV0ZVwiKVxuICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcblxuICBpZiAodGlja2V0Lm93bmVyICYmIHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19DT01QTEVURTtcblxuICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0U3RhdHVzRGF0YSA9ICh0aWNrZXQsIGlzU3VtbWl0UGFzdCkgPT5cbiAgc3RhdHVzRGF0YVtnZXRUaWNrZXRTdGF0dXNLZXkodGlja2V0LCBpc1N1bW1pdFBhc3QpXTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFJvbGUgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmJhZGdlKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCB7IGZlYXR1cmVzIH0gPSB0aWNrZXQuYmFkZ2U7XG5cbiAgaWYgKGZlYXR1cmVzLmxlbmd0aCA+IDApXG4gICAgcmV0dXJuIGZlYXR1cmVzLm1hcCgoZmVhdHVyZSkgPT4gZmVhdHVyZS5uYW1lKS5qb2luKFwiLCBcIik7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0VHlwZSA9ICh0aWNrZXQsIHN1bW1pdCkgPT5cbiAgc3VtbWl0LnRpY2tldF90eXBlcy5maW5kKCh0eXBlKSA9PiB0eXBlLmlkID09PSB0aWNrZXQudGlja2V0X3R5cGVfaWQpO1xuXG5leHBvcnQgY29uc3QgaXNUaWNrZXRSZWZ1bmRhYmxlID0gKHRpY2tldCkgPT5cbiAgdGlja2V0Py5maW5hbF9hbW91bnQgPiAwICYmXG4gIHRpY2tldD8ubmV0X3NlbGxpbmdfY29zdCA+IHRpY2tldC5yZWZ1bmRlZF9hbW91bnQgJiZcbiAgIXRpY2tldD8ucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTENcbiAgKTtcblxuZXhwb3J0IGNvbnN0IHRpY2tldHNSZWZ1bmRhYmxlID0gKHRpY2tldHMpID0+XG4gIHRpY2tldHM/LmZpbHRlcigodGlja2V0KSA9PiBpc1RpY2tldFJlZnVuZGFibGUodGlja2V0KSkubGVuZ3RoIHx8IDA7XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRlZFJlcXVlc3RlZFRpY2tldHMgPSAodGlja2V0cykgPT5cbiAgdGlja2V0cz8uZmlsdGVyKCh0aWNrZXQpID0+XG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZSgocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDKVxuICApO1xuZXhwb3J0IGNvbnN0IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMgPSAodGlja2V0cykgPT4ge1xuICBjb25zdCBhbGxUaWNrZXRzID0gW107XG4gIHRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiB7XG4gICAgaWYgKFxuICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQ1xuICAgICAgKSB8fFxuICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTENcbiAgICAgICkgfHxcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDXG4gICAgICApXG4gICAgKSB7XG4gICAgICBhbGxUaWNrZXRzLnB1c2godGlja2V0KTtcbiAgICB9XG4gICAgcmV0dXJuIHRpY2tldDtcbiAgfSk7XG4gIHJldHVybiBhbGxUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzID0gKHRpY2tldCkgPT4ge1xuICBpZiAoXG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZSgocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDKVxuICApXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUEVORElORztcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQ1xuICAgIClcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEO1xuICBpZiAoXG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDXG4gICAgKVxuICApXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUkVKRUNURUQ7XG4gIHJldHVybiBTVEFUVVNfUkVGVU5EX1BFTkRJTkc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IHN0YXR1cyA9IGdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzKHRpY2tldCk7XG4gIGxldCBzdGF0dXNDb2xvciA9IFwiXCI7XG4gIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX1BFTkRJTkc6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicGVuZGluZ1wiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcImFwcHJvdmVkXCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfUkVKRUNURUQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicmVqZWN0ZWRcIjtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicGVuZGluZ1wiO1xuICB9XG4gIHJldHVybiBzdGF0dXNDb2xvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlVmFsaWRhdGlvbiA9ICh0eXBlLCBuYW1lLCBpc1JlcXVpcmVkKSA9PiB7XG4gIGxldCBzY2hlbWE7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgc2NoZW1hID0geXVwLmJvb2woKS5vbmVPZihbdHJ1ZV0sIGkxOG4udChcInZhbGlkYXRpb24uY2hlY2tib3gucmVxdWlyZWRcIikpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgc2NoZW1hID0geXVwLmFycmF5KCkub2YoeXVwLnN0cmluZygpKTtcbiAgICAgIGlmIChpc1JlcXVpcmVkKSBzY2hlbWEgPSBzY2hlbWEubWluKE1JTl9SRVFVSVJFRCwgYCR7bmFtZX0gaXMgcmVxdWlyZWRgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKGAke25hbWV9IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufTtcblxuY29uc3QgcGFyc2VTdWJRdWVzdGlvbkFuc3dlciA9IChcbiAgcSxcbiAgYW5zd2VycyxcbiAgYW5zd2VyLFxuICBpbml0aWFsVmFsdWVzLFxuICBvbmx5UmVsZXZhbnRcbikgPT4ge1xuICBpZiAocS5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICBjb25zdCB7IHN1Yl9xdWVzdGlvbiwgYW5zd2VyX3ZhbHVlcyB9ID0gcnVsZTtcbiAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJfcXVlc3Rpb24ubmFtZSwgc3ViX3F1ZXN0aW9uLmlkKTtcbiAgICAgIGNvbnN0IHN1YkFuc3dlciA9IGFuc3dlcnNbc3ViUXVlc3Rpb25TbHVnXTtcbiAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2goYW5zd2VyLCBhbnN3ZXJfdmFsdWVzKTtcblxuICAgICAgaWYgKCFvbmx5UmVsZXZhbnQgfHwgbWF0Y2gpIHtcbiAgICAgICAgaW5pdGlhbFZhbHVlc1tzdWJRdWVzdGlvblNsdWddID1cbiAgICAgICAgICBzdWJBbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShzdWJfcXVlc3Rpb24pO1xuICAgICAgfVxuXG4gICAgICBwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyKFxuICAgICAgICBzdWJfcXVlc3Rpb24sXG4gICAgICAgIGFuc3dlcnMsXG4gICAgICAgIHN1YkFuc3dlcixcbiAgICAgICAgaW5pdGlhbFZhbHVlcyxcbiAgICAgICAgb25seVJlbGV2YW50XG4gICAgICApO1xuICAgIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VBbnN3ZXJzID0gKFxuICBvd25lcixcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGFuc3dlcnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGluY2x1ZGVEaXNjbGFpbWVyLFxuICBvbmx5UmVsZXZhbnQgPSBmYWxzZVxuKSA9PiB7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZXMgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdIHx8IG93bmVyLmVtYWlsIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSB8fCBvd25lci5maXJzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gfHwgb3duZXIubGFzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldIHx8IG93bmVyLmNvbXBhbnk7XG4gIH1cblxuICBpZiAoaW5jbHVkZURpc2NsYWltZXIpIHtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdIHx8XG4gICAgICBvd25lci5kaXNjbGFpbWVyX2FjY2VwdGVkO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIGNvbnN0IGFuc3dlciA9IGFuc3dlcnNbcXVlc3Rpb25TbHVnXTtcbiAgICBpbml0aWFsVmFsdWVzW3F1ZXN0aW9uU2x1Z10gPSBhbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShxKTtcblxuICAgIHBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIocSwgYW5zd2VycywgYW5zd2VyLCBpbml0aWFsVmFsdWVzLCBvbmx5UmVsZXZhbnQpO1xuICB9KTtcblxuICByZXR1cm4gaW5pdGlhbFZhbHVlcztcbn07XG5cbmNvbnN0IGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hID0gKHF1ZXN0aW9uU2x1ZywgcnVsZSwgc2NoZW1hKSA9PiB7XG4gIGNvbnN0IHN1YlF1ZXN0aW9uID0gcnVsZS5zdWJfcXVlc3Rpb247XG4gIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJRdWVzdGlvbi5uYW1lLCBzdWJRdWVzdGlvbi5pZCk7XG5cbiAgc2NoZW1hW3N1YlF1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihcbiAgICBzdWJRdWVzdGlvbi50eXBlLFxuICAgIHN1YlF1ZXN0aW9uLm5hbWUsXG4gICAgZmFsc2VcbiAgKVxuICAgIC5udWxsYWJsZSgpXG4gICAgLndoZW4ocXVlc3Rpb25TbHVnLCB7XG4gICAgICBpczogKHF1ZXN0aW9uQW5zKSA9PiB7XG4gICAgICAgIGNvbnN0IGFuc1ZhbHVlTWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChcbiAgICAgICAgICBxdWVzdGlvbkFucyxcbiAgICAgICAgICBydWxlLmFuc3dlcl92YWx1ZXNcbiAgICAgICAgKTtcbiAgICAgICAgLy8gY2hlY2sgaWYgcXVlc3Rpb24gaXMgdmlzaWJsZSB0byBhZGQgdmFsaWRhdGlvblxuICAgICAgICBjb25zdCBpc1Zpc2libGUgPSAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgIGAke3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gYW5zVmFsdWVNYXRjaCAmJiBpc1Zpc2libGU7XG4gICAgICB9LFxuICAgICAgdGhlbjogKHNjaCkgPT4ge1xuICAgICAgICBpZiAoc3ViUXVlc3Rpb24udHlwZSA9PT0gUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCkge1xuICAgICAgICAgIHJldHVybiBzY2hcbiAgICAgICAgICAgIC5taW4oTUlOX1JFUVVJUkVELCBpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX3F1ZXN0aW9uXCIpKVxuICAgICAgICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfcXVlc3Rpb25cIikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzY2gucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9xdWVzdGlvblwiKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgaWYgKHN1YlF1ZXN0aW9uLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgIHN1YlF1ZXN0aW9uLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChzdWJSdWxlKSA9PiB7XG4gICAgICBidWlsZFN1YlF1ZXN0aW9uVmFsaWRhdGlvblNjaGVtYShzdWJRdWVzdGlvblNsdWcsIHN1YlJ1bGUsIHNjaGVtYSk7XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFZhbGlkYXRpb25TY2hlbWEgPSAoXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBpbmNsdWRlQXR0ZW5kZWVJbmZvLFxuICBkaXNjbGFpbWVyTWFuZGF0b3J5XG4pID0+IHtcbiAgY29uc3Qgc2NoZW1hID0ge307XG5cbiAgaWYgKGluY2x1ZGVBdHRlbmRlZUluZm8pIHtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgLmVtYWlsKGkxOG4udChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uZW1haWwucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldID0geXVwLmxhenkoKHZhbHVlKSA9PlxuICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiXG4gICAgICAgID8geXVwXG4gICAgICAgICAgICAub2JqZWN0KClcbiAgICAgICAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmNvbXBhbnkucmVxdWlyZWRcIikpXG4gICAgICAgICAgICAudHlwZUVycm9yKGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfZmllbGRcIikpXG4gICAgICAgIDogeXVwLnN0cmluZygpLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uY29tcGFueS5yZXF1aXJlZFwiKSlcbiAgICApO1xuICB9XG5cbiAgaWYgKGRpc2NsYWltZXJNYW5kYXRvcnkpIHtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSA9IHl1cFxuICAgICAgLmJvb2woKVxuICAgICAgLm9uZU9mKFt0cnVlXSwgaTE4bi50KFwidmFsaWRhdGlvbi5jaGVja2JveC5yZXF1aXJlZFwiKSk7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgeyBpZCwgbmFtZSwgdHlwZSwgbWFuZGF0b3J5LCBzdWJfcXVlc3Rpb25fcnVsZXMgfSA9IHE7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKG5hbWUsIGlkKTtcbiAgICBzY2hlbWFbcXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWxpZGF0aW9uKHR5cGUsIG5hbWUsIG1hbmRhdG9yeSk7XG5cbiAgICBpZiAoc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBzdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICBidWlsZFN1YlF1ZXN0aW9uVmFsaWRhdGlvblNjaGVtYShxdWVzdGlvblNsdWcsIHJ1bGUsIHNjaGVtYSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB5dXAub2JqZWN0KHNjaGVtYSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlVGlja2V0Q29sbGVjdGlvbiA9ICh0aWNrZXRzLCB0aWNrZXQpID0+XG4gIHRpY2tldHMubWFwKCh0KSA9PiB7XG4gICAgY29uc3QgdG1wVGlja2V0ID0geyAuLi50IH07XG4gICAgLy8gdXBkYXRlIGF0dGVuZGVlXG4gICAgaWYgKFxuICAgICAgdC5vd25lcj8uaWQgPT09IHRpY2tldC5vd25lcj8uaWQgJiZcbiAgICAgIHQub3duZXI/LnN0YXR1cyAhPT0gdGlja2V0Lm93bmVyPy5zdGF0dXNcbiAgICApIHtcbiAgICAgIHRtcFRpY2tldC5vd25lciA9IHRpY2tldC5vd25lcjtcbiAgICB9XG4gICAgcmV0dXJuIHQuaWQgPT09IHRpY2tldC5pZCA/IHRpY2tldCA6IHRtcFRpY2tldDtcbiAgfSk7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY29weUljb25fX19sSTNlUVwiO1xudmFyIF8yID0gXCJyZXZlcnNlZF9fX3pKem1EXCI7XG52YXIgXzMgPSBcInRydW5jYXRlZF9fX2pXU25VXCI7XG52YXIgXzQgPSBcIndyYXBwZXJfX19tVlBpUlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJjb3B5SWNvblwiLCBfMiBhcyBcInJldmVyc2VkXCIsIF8zIGFzIFwidHJ1bmNhdGVkXCIsIF80IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lX19fbXhFS1dcIjtcbnZhciBfMiA9IFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyX19fTzRzU3NcIjtcbnZhciBfMyA9IFwiY2FsZW5kYXJEaXNwbGF5X19fRjNudUtcIjtcbnZhciBfNCA9IFwiY2xlYW5CdXR0b25fX19xcUR2VVwiO1xudmFyIF81ID0gXCJjb250YWluZXJfX19RZVFZX1wiO1xudmFyIF82ID0gXCJkYXRlUGlja2VyQ29udGFpbmVyX19fWjQybXdcIjtcbnZhciBfNyA9IFwiZGF0ZXBpY2tlckNsb3NlX19fVFo3a0pcIjtcbnZhciBfOCA9IFwiZmlsdGVyQ2hlY2tib3hDb250YWluZXJfX19rVW5XOVwiO1xudmFyIF85ID0gXCJmaWx0ZXJDb250YWluZXJfX19ycnFwOVwiO1xudmFyIF9hID0gXCJmaWx0ZXJEYXRlTGFiZWxfX19KZ2Jjc1wiO1xudmFyIF9iID0gXCJmaWx0ZXJJY29uX19faWlPem9cIjtcbnZhciBfYyA9IFwiZmlsdGVyTGFiZWxfX19za1pQN1wiO1xudmFyIF9kID0gXCJmaWx0ZXJMaXN0Q29udGFpbmVyX19fSURybFNcIjtcbnZhciBfZSA9IFwiZmlsdGVyTnVtQWN0aXZlX19fa21FRUtcIjtcbnZhciBfZiA9IFwiZmlsdGVyU29ydENvbnRhaW5lcl9fX25oTkpzXCI7XG52YXIgXzEwID0gXCJsYWJlbF9fX0xBbWVfXCI7XG52YXIgXzExID0gXCJzaG93RmlsdGVyTGlzdF9fX0lXNHhHXCI7XG52YXIgXzEyID0gXCJzb3J0Q29udGFpbmVyX19fc2I1QmRcIjtcbnZhciBfMTMgPSBcInNvcnRJY29uX19fY19YWmlcIjtcbnZhciBfMTQgPSBcInNvcnRMYWJlbF9fX2RYaU15XCI7XG52YXIgXzE1ID0gXCJzb3J0TGlzdENvbnRhaW5lcl9fX1BwMlhnXCI7XG52YXIgXzE2ID0gXCJ0aXRsZVdyYXBwZXJfX19QNm1QdVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lXCIsIF8yIGFzIFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyXCIsIF8zIGFzIFwiY2FsZW5kYXJEaXNwbGF5XCIsIF80IGFzIFwiY2xlYW5CdXR0b25cIiwgXzUgYXMgXCJjb250YWluZXJcIiwgXzYgYXMgXCJkYXRlUGlja2VyQ29udGFpbmVyXCIsIF83IGFzIFwiZGF0ZXBpY2tlckNsb3NlXCIsIF84IGFzIFwiZmlsdGVyQ2hlY2tib3hDb250YWluZXJcIiwgXzkgYXMgXCJmaWx0ZXJDb250YWluZXJcIiwgX2EgYXMgXCJmaWx0ZXJEYXRlTGFiZWxcIiwgX2IgYXMgXCJmaWx0ZXJJY29uXCIsIF9jIGFzIFwiZmlsdGVyTGFiZWxcIiwgX2QgYXMgXCJmaWx0ZXJMaXN0Q29udGFpbmVyXCIsIF9lIGFzIFwiZmlsdGVyTnVtQWN0aXZlXCIsIF9mIGFzIFwiZmlsdGVyU29ydENvbnRhaW5lclwiLCBfMTAgYXMgXCJsYWJlbFwiLCBfMTEgYXMgXCJzaG93RmlsdGVyTGlzdFwiLCBfMTIgYXMgXCJzb3J0Q29udGFpbmVyXCIsIF8xMyBhcyBcInNvcnRJY29uXCIsIF8xNCBhcyBcInNvcnRMYWJlbFwiLCBfMTUgYXMgXCJzb3J0TGlzdENvbnRhaW5lclwiLCBfMTYgYXMgXCJ0aXRsZVdyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY2FuY2VsQnRuX19fcURleGhcIjtcbnZhciBfMiA9IFwiZm9vdGVyX19fU043MHlcIjtcbnZhciBfMyA9IFwic2F2ZUJ0bl9fX25iVTZjXCI7XG5leHBvcnQgeyBfMSBhcyBcImNhbmNlbEJ0blwiLCBfMiBhcyBcImZvb3RlclwiLCBfMyBhcyBcInNhdmVCdG5cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiZXJyb3JMYWJlbF9fX25vY3lYXCI7XG5leHBvcnQgeyBfMSBhcyBcImVycm9yTGFiZWxcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwibXlPcmRlcnNXcmFwcGVyX19fSEpteXNcIjtcbnZhciBfMiA9IFwibm9PcmRlcnNGb3VuZF9fX0RSd2dvXCI7XG52YXIgXzMgPSBcIm5vT3JkZXJzSWNvbldyYXBwZXJfX190UFRtWVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJteU9yZGVyc1dyYXBwZXJcIiwgXzIgYXMgXCJub09yZGVyc0ZvdW5kXCIsIF8zIGFzIFwibm9PcmRlcnNJY29uV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJib2R5X19fQVdkaUxcIjtcbnZhciBfMiA9IFwiaWNvbldyYXBwZXJfX19temV2S1wiO1xudmFyIF8zID0gXCJ0aXRsZV9fX00yNDJtXCI7XG52YXIgXzQgPSBcIndyYXBwZXJfX19Rc3dDUFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJib2R5XCIsIF8yIGFzIFwiaWNvbldyYXBwZXJcIiwgXzMgYXMgXCJ0aXRsZVwiLCBfNCBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwib3JkZXJEZXRhaWxzTW1vdW50X19fcjNrUkFcIjtcbnZhciBfMiA9IFwib3JkZXJEZXRhaWxzVGlja2V0c19fX200SWpLXCI7XG52YXIgXzMgPSBcIm9yZGVyU3VtbWFyeUJ1dHRvbl9fX3V4amh0XCI7XG52YXIgXzQgPSBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9fX19fUkJYRVwiO1xudmFyIF81ID0gXCJvcmRlclN1bW1hcnlUYWJsZV9fX1lEbnhWXCI7XG52YXIgXzYgPSBcIm9yZGVyU3VtbWFyeVdyYXBwZXJfX19Sd0lFUlwiO1xudmFyIF83ID0gXCJyZWZ1bmREaXNhYmxlZF9fX2p2cmszXCI7XG5leHBvcnQgeyBfMSBhcyBcIm9yZGVyRGV0YWlsc01tb3VudFwiLCBfMiBhcyBcIm9yZGVyRGV0YWlsc1RpY2tldHNcIiwgXzMgYXMgXCJvcmRlclN1bW1hcnlCdXR0b25cIiwgXzQgYXMgXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvXCIsIF81IGFzIFwib3JkZXJTdW1tYXJ5VGFibGVcIiwgXzYgYXMgXCJvcmRlclN1bW1hcnlXcmFwcGVyXCIsIF83IGFzIFwicmVmdW5kRGlzYWJsZWRcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYXNzaWduVGlja2V0QnV0dG9uX19fenpMc2NcIjtcbnZhciBfMiA9IFwiYXNzaWduVG9NZVRleHRfX19aUGFleFwiO1xudmFyIF8zID0gXCJhc3NpZ25lZEJ5VGV4dF9fX2JOWjd6XCI7XG52YXIgXzQgPSBcImFzc2lnbmVkVG9NZURlc19fX0dqRmtWXCI7XG52YXIgXzUgPSBcImFzc2lnbmVkVG9NZVdyYXBwZXJfX19VeGMyeVwiO1xudmFyIF82ID0gXCJiZkZlYXR1cmVfX19lRWluRVwiO1xudmFyIF83ID0gXCJiZkZlYXR1cmVXcmFwcGVyX19fcVdrOVZcIjtcbnZhciBfOCA9IFwiY2hlY2tib3hfX19YWkpwYlwiO1xudmFyIF85ID0gXCJkaXNhYmxlZFJlZnVuZF9fX1NmZmw3XCI7XG52YXIgX2EgPSBcImRpc3BsYXlfbm9uZV9fX0NxcEwzXCI7XG52YXIgX2IgPSBcImxhYmVsX19felhEV3pcIjtcbnZhciBfYyA9IFwib3JkZXJUaWNrZXRDb250YWluZXJfX19aSkx6a1wiO1xudmFyIF9kID0gXCJvcmRlclRpY2tldEluZm9fX19nZW1xQlwiO1xudmFyIF9lID0gXCJvcmRlclRpY2tldEluZm9Db250YWluZXJfX19fcDY2VlwiO1xudmFyIF9mID0gXCJvcmRlcldyYXBwZXJfX195REJBb1wiO1xudmFyIF8xMCA9IFwicmVhc3NpZ25CdXR0b25fX19Sb2pNNVwiO1xudmFyIF8xMSA9IFwicmVmdW5kQnV0dG9uc19fX2pEbDRIXCI7XG52YXIgXzEyID0gXCJyZWZ1bmRNb2RhbF9fX0VxZ1BGXCI7XG52YXIgXzEzID0gXCJzZWxlY3RlZF9fX0hXR05jXCI7XG52YXIgXzE0ID0gXCJ0YWJCdXR0b25zX19feFR5SkFcIjtcbnZhciBfMTUgPSBcInRpY2tldEFjdGlvbkJ1dHRvbnNfX19ycFNNUVwiO1xudmFyIF8xNiA9IFwidGlja2V0Rm9vdGVyX19fajNiZGlcIjtcbnZhciBfMTcgPSBcInRpY2tldExpc3RDb250YWluZXJfX19jZm1yclwiO1xudmFyIF8xOCA9IFwidGlja2V0Tm9fX19hMmlNOVwiO1xudmFyIF8xOSA9IFwidGlja2V0T3duZXJFbWFpbF9fX1p0NE9FXCI7XG52YXIgXzFhID0gXCJ0aWNrZXRUaWNrZXRUeXBlX19fWnFfZjBcIjtcbnZhciBfMWIgPSBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25fX19IRjZJbVwiO1xudmFyIF8xYyA9IFwidmlld01vcmVCdXR0b25fX19LXzF6VFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhc3NpZ25UaWNrZXRCdXR0b25cIiwgXzIgYXMgXCJhc3NpZ25Ub01lVGV4dFwiLCBfMyBhcyBcImFzc2lnbmVkQnlUZXh0XCIsIF80IGFzIFwiYXNzaWduZWRUb01lRGVzXCIsIF81IGFzIFwiYXNzaWduZWRUb01lV3JhcHBlclwiLCBfNiBhcyBcImJmRmVhdHVyZVwiLCBfNyBhcyBcImJmRmVhdHVyZVdyYXBwZXJcIiwgXzggYXMgXCJjaGVja2JveFwiLCBfOSBhcyBcImRpc2FibGVkUmVmdW5kXCIsIF9hIGFzIFwiZGlzcGxheV9ub25lXCIsIF9iIGFzIFwibGFiZWxcIiwgX2MgYXMgXCJvcmRlclRpY2tldENvbnRhaW5lclwiLCBfZCBhcyBcIm9yZGVyVGlja2V0SW5mb1wiLCBfZSBhcyBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lclwiLCBfZiBhcyBcIm9yZGVyV3JhcHBlclwiLCBfMTAgYXMgXCJyZWFzc2lnbkJ1dHRvblwiLCBfMTEgYXMgXCJyZWZ1bmRCdXR0b25zXCIsIF8xMiBhcyBcInJlZnVuZE1vZGFsXCIsIF8xMyBhcyBcInNlbGVjdGVkXCIsIF8xNCBhcyBcInRhYkJ1dHRvbnNcIiwgXzE1IGFzIFwidGlja2V0QWN0aW9uQnV0dG9uc1wiLCBfMTYgYXMgXCJ0aWNrZXRGb290ZXJcIiwgXzE3IGFzIFwidGlja2V0TGlzdENvbnRhaW5lclwiLCBfMTggYXMgXCJ0aWNrZXROb1wiLCBfMTkgYXMgXCJ0aWNrZXRPd25lckVtYWlsXCIsIF8xYSBhcyBcInRpY2tldFRpY2tldFR5cGVcIiwgXzFiIGFzIFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvblwiLCBfMWMgYXMgXCJ2aWV3TW9yZUJ1dHRvblwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJDVEFCdXR0b25XcmFwcGVyX19fS2dxNmdcIjtcbnZhciBfMiA9IFwiYWN0aW9uQnV0dG9uc19fX3U3bVBTXCI7XG52YXIgXzMgPSBcImFwcHJvdmVkX19fc3hFSldcIjtcbnZhciBfNCA9IFwiYmFkZ2VGZWF0dXJlX19fdExoRXBcIjtcbnZhciBfNSA9IFwiYmFkZ2VGZWF0dXJlV3JhcHBlcl9fX185R2JEXCI7XG52YXIgXzYgPSBcImJ1dHRvblBpbGxfX19MZXNhelwiO1xudmFyIF83ID0gXCJjYW5jZWxCdXR0b25fX195ZmhZYlwiO1xudmFyIF84ID0gXCJjb250aW51ZUJ1dHRvbl9fX055WDNzXCI7XG52YXIgXzkgPSBcImRlbGV0ZUljb25fX19GU3d5ZVwiO1xudmFyIF9hID0gXCJwZW5kaW5nX19fYUViV3dcIjtcbnZhciBfYiA9IFwicmVmdW5kRGV0YWlsX19fY1EyOFZcIjtcbnZhciBfYyA9IFwicmVmdW5kRXJyb3JNc2dfX19BYWh6clwiO1xudmFyIF9kID0gXCJyZWZ1bmRTdWNjZXNzZnVsX19fenJEUVlcIjtcbnZhciBfZSA9IFwicmVmdW5kVGV4dF9fX2FFbkw5XCI7XG52YXIgX2YgPSBcInJlZnVuZFRpY2tldEF0dGVuZGVlX19fUVhDak1cIjtcbnZhciBfMTAgPSBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lcl9fX3lhNjEzXCI7XG52YXIgXzExID0gXCJyZWplY3RlZF9fX05KRTRaXCI7XG52YXIgXzEyID0gXCJzdWJ0aXRsZV9fX1B0RGUyXCI7XG52YXIgXzEzID0gXCJzdWNjZXNzTXNnX19fSHRNc2VcIjtcbnZhciBfMTQgPSBcInN1Y2Nlc3NNc2cyX19fUTZ6bmFcIjtcbnZhciBfMTUgPSBcInRpY2tldExpc3RfX19lRFFSM1wiO1xudmFyIF8xNiA9IFwidGlja2V0Tm9fX19fRUFENFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJDVEFCdXR0b25XcmFwcGVyXCIsIF8yIGFzIFwiYWN0aW9uQnV0dG9uc1wiLCBfMyBhcyBcImFwcHJvdmVkXCIsIF80IGFzIFwiYmFkZ2VGZWF0dXJlXCIsIF81IGFzIFwiYmFkZ2VGZWF0dXJlV3JhcHBlclwiLCBfNiBhcyBcImJ1dHRvblBpbGxcIiwgXzcgYXMgXCJjYW5jZWxCdXR0b25cIiwgXzggYXMgXCJjb250aW51ZUJ1dHRvblwiLCBfOSBhcyBcImRlbGV0ZUljb25cIiwgX2EgYXMgXCJwZW5kaW5nXCIsIF9iIGFzIFwicmVmdW5kRGV0YWlsXCIsIF9jIGFzIFwicmVmdW5kRXJyb3JNc2dcIiwgX2QgYXMgXCJyZWZ1bmRTdWNjZXNzZnVsXCIsIF9lIGFzIFwicmVmdW5kVGV4dFwiLCBfZiBhcyBcInJlZnVuZFRpY2tldEF0dGVuZGVlXCIsIF8xMCBhcyBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lclwiLCBfMTEgYXMgXCJyZWplY3RlZFwiLCBfMTIgYXMgXCJzdWJ0aXRsZVwiLCBfMTMgYXMgXCJzdWNjZXNzTXNnXCIsIF8xNCBhcyBcInN1Y2Nlc3NNc2cyXCIsIF8xNSBhcyBcInRpY2tldExpc3RcIiwgXzE2IGFzIFwidGlja2V0Tm9cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY2xvc2VCdG5fX195U1FDT1wiO1xudmFyIF8yID0gXCJoZWFkZXJfX19mQlhHOVwiO1xudmFyIF8zID0gXCJ0aXRsZV9fX3R5WmVRXCI7XG52YXIgXzQgPSBcIndyYXBwZXJfX19ST0pHc1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJjbG9zZUJ0blwiLCBfMiBhcyBcImhlYWRlclwiLCBfMyBhcyBcInRpdGxlXCIsIF80IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJzdW1taXRUaXRsZURhdGVfX19YbnJwRlwiO1xudmFyIF8yID0gXCJ3aWRnZXRIZWFkZXJfX19nZ0x0TVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJzdW1taXRUaXRsZURhdGVcIiwgXzIgYXMgXCJ3aWRnZXRIZWFkZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwidW5hc3NpZ25CdG5fX19pN21neVwiO1xudmFyIF8yID0gXCJ1bmFzc2lnbldyYXBwZXJfX19nM2UydVwiO1xudmFyIF8zID0gXCJ3cmFwcGVyX19fVzk0U0xcIjtcbmV4cG9ydCB7IF8xIGFzIFwidW5hc3NpZ25CdG5cIiwgXzIgYXMgXCJ1bmFzc2lnbldyYXBwZXJcIiwgXzMgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImhlYWRlck5vdGVfX19BZTVFQVwiO1xudmFyIF8yID0gXCJvcmRlck5vX19fVk9QUndcIjtcbnZhciBfMyA9IFwicHVyY2hhc2VkQnlfX19NTmlIVFwiO1xudmFyIF80ID0gXCJwdXJjaGFzZWRCeVdyYXBwZXJfX19EaDZIVVwiO1xudmFyIF81ID0gXCJ3cmFwcGVyX19fbVZ1aVpcIjtcbmV4cG9ydCB7IF8xIGFzIFwiaGVhZGVyTm90ZVwiLCBfMiBhcyBcIm9yZGVyTm9cIiwgXzMgYXMgXCJwdXJjaGFzZWRCeVwiLCBfNCBhcyBcInB1cmNoYXNlZEJ5V3JhcHBlclwiLCBfNSBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwidGlja2V0UmVhc3NpZ25Db250YWluZXJfX19nT3RhSlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ3cmFwcGVyX19fRXdPUnpcIjtcbmV4cG9ydCB7IF8xIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJpbmZvTm90ZV9fX2kxWFk5XCI7XG52YXIgXzIgPSBcIndyYXBwZXJfX19NQXVOU1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJpbmZvTm90ZVwiLCBfMiBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lcl9fX0F1dnJuXCI7XG52YXIgXzIgPSBcImFkZGl0aW9uYWxEZXRhaWxzX19fbVAxaUpcIjtcbnZhciBfMyA9IFwiYXR0ZW5kZWVDb250YWluZXJfX19RMFZVelwiO1xudmFyIF80ID0gXCJhdHRlbmRlZUluZm9UaXRsZV9fX0xtcm00XCI7XG52YXIgXzUgPSBcImNsb3NlQnRuX19fV05KbEVcIjtcbnZhciBfNiA9IFwiY29weUJ0bl9fX191dEE2XCI7XG52YXIgXzcgPSBcImRlbGVnYXRlZFRvX19fU0dWUUlcIjtcbnZhciBfOCA9IFwiZG93bmxvYWRCdG5fX19xalloelwiO1xudmFyIF85ID0gXCJoZWFkZXJfX19BdWduelwiO1xudmFyIF9hID0gXCJvcmRlck51bWJlcl9fX0w1UTVhXCI7XG52YXIgX2IgPSBcInFyQ29kZV9fX2Z3cVpxXCI7XG52YXIgX2MgPSBcInFyTm90ZV9fX0djN0tuXCI7XG52YXIgX2QgPSBcInNlbmRCdG5fX19rb1dNMlwiO1xudmFyIF9lID0gXCJzZW50X19fazZXS3hcIjtcbnZhciBfZiA9IFwic3RhdHVzX19fa3dDOHlcIjtcbnZhciBfMTAgPSBcInN1YnRpdGxlX19feV9OdU9cIjtcbnZhciBfMTEgPSBcInRpY2tldERldGFpbENvbnRhaW5lcl9fX2IyVExSXCI7XG52YXIgXzEyID0gXCJ0aXRsZV9fX3dRelVOXCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGlvbkJ1dHRvbnNDb250YWluZXJcIiwgXzIgYXMgXCJhZGRpdGlvbmFsRGV0YWlsc1wiLCBfMyBhcyBcImF0dGVuZGVlQ29udGFpbmVyXCIsIF80IGFzIFwiYXR0ZW5kZWVJbmZvVGl0bGVcIiwgXzUgYXMgXCJjbG9zZUJ0blwiLCBfNiBhcyBcImNvcHlCdG5cIiwgXzcgYXMgXCJkZWxlZ2F0ZWRUb1wiLCBfOCBhcyBcImRvd25sb2FkQnRuXCIsIF85IGFzIFwiaGVhZGVyXCIsIF9hIGFzIFwib3JkZXJOdW1iZXJcIiwgX2IgYXMgXCJxckNvZGVcIiwgX2MgYXMgXCJxck5vdGVcIiwgX2QgYXMgXCJzZW5kQnRuXCIsIF9lIGFzIFwic2VudFwiLCBfZiBhcyBcInN0YXR1c1wiLCBfMTAgYXMgXCJzdWJ0aXRsZVwiLCBfMTEgYXMgXCJ0aWNrZXREZXRhaWxDb250YWluZXJcIiwgXzEyIGFzIFwidGl0bGVcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYnV0dG9uQ2FuY2VsbGVkX19fRXJsRFpcIjtcbnZhciBfMiA9IFwiYnV0dG9uQ29tcGxldGVfX19sbFdrWlwiO1xudmFyIF8zID0gXCJidXR0b25JbmNvbXBsZXRlX19fVG9sSGdcIjtcbnZhciBfNCA9IFwiYnV0dG9uUGlsbF9fX3pxMnRjXCI7XG52YXIgXzUgPSBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZF9fX3BXdDMwXCI7XG52YXIgXzYgPSBcImJ1dHRvblVuYXNzaWduZWRfX19ZRGQ4WFwiO1xudmFyIF83ID0gXCJ0aWNrZXRTdGF0dXNDb250YWluZXJfX19xajZmYlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJidXR0b25DYW5jZWxsZWRcIiwgXzIgYXMgXCJidXR0b25Db21wbGV0ZVwiLCBfMyBhcyBcImJ1dHRvbkluY29tcGxldGVcIiwgXzQgYXMgXCJidXR0b25QaWxsXCIsIF81IGFzIFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkXCIsIF82IGFzIFwiYnV0dG9uVW5hc3NpZ25lZFwiLCBfNyBhcyBcInRpY2tldFN0YXR1c0NvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3RpdmVfX190THlXWlwiO1xudmFyIF8yID0gXCJ0YWJPcHRpb25fX19INEgxdVwiO1xudmFyIF8zID0gXCJ0YWJXcmFwcGVyX19fdTIxc0dcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aXZlXCIsIF8yIGFzIFwidGFiT3B0aW9uXCIsIF8zIGFzIFwidGFiV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ0aWNrZXRzVGl0bGVUZXh0X19fVERQbXBcIjtcbmV4cG9ydCB7IF8xIGFzIFwidGlja2V0c1RpdGxlVGV4dFwiIH1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0J1dHRvblwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0NvbnRlbnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50VGV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1RpdGxlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFiXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFic1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkByZWR1eGpzL3Rvb2xraXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHNlbnRyeS9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJmb3JtaWtcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bmV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpZHRva2VuLXZlcmlmaWVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1vbWVudC10aW1lem9uZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwLWxpbWl0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInByb3AtdHlwZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaTE4bmV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXFyLWNvZGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwieXVwXCIpOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IFBlcnNpc3RHYXRlIH0gZnJvbSBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIjtcbmltcG9ydCB7IFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUluaXRTdG9yZSB9IGZyb20gXCIuL3N0b3JlXCI7XG5pbXBvcnQgeyBSRVNFVF9TVEFURSwgc2V0UmVkdWNlclN0YXRlIH0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuXG5pbXBvcnQgV2lkZ2V0V3JhcHBlciBmcm9tIFwiLi9jb21wb25lbnRzL1dpZGdldFdyYXBwZXJcIjtcblxuY29uc3QgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQgPSAocHJvcHMpID0+IHtcbiAgY29uc3Qge1xuICAgIGxvZ2luVXJsLFxuICAgIHN1cHBvcnRFbWFpbCxcbiAgICBzdW1taXQsXG4gICAgYXBpQmFzZVVybCxcbiAgICB1c2VyLFxuICAgIGNsaWVudElkLFxuICAgIHVwZGF0ZVByb2ZpbGVcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHsgc3RvcmUsIHBlcnNpc3RvciB9ID0gdXNlSW5pdFN0b3JlKHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIHVzZXIsXG4gICAgYXBpQmFzZVVybCxcbiAgICBjbGllbnRJZCxcbiAgICB1cGRhdGVQcm9maWxlXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUJlZm9yZUxpZnQgPSAoKSA9PiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICBjb25zdCBmbHVzaCA9IHBhcmFtcy5oYXMoXCJmbHVzaFN0YXRlXCIpO1xuICAgIGlmIChmbHVzaCkgc3RvcmUuZGlzcGF0Y2goeyB0eXBlOiBSRVNFVF9TVEFURSwgcGF5bG9hZDogbnVsbCB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHN0b3JlLmRpc3BhdGNoKHNldFJlZHVjZXJTdGF0ZShzdW1taXQsIHVzZXIpKTtcbiAgfSwgW3N1bW1pdCwgdXNlcl0pO1xuXG4gIHJldHVybiAoXG4gICAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZX0+XG4gICAgICA8UGVyc2lzdEdhdGVcbiAgICAgICAgb25CZWZvcmVMaWZ0PXtoYW5kbGVCZWZvcmVMaWZ0fVxuICAgICAgICBsb2FkaW5nPXtudWxsfVxuICAgICAgICBwZXJzaXN0b3I9e3BlcnNpc3Rvcn1cbiAgICAgID5cbiAgICAgICAgPFN0eWxlZEVuZ2luZVByb3ZpZGVyIGluamVjdEZpcnN0PlxuICAgICAgICAgIDxXaWRnZXRXcmFwcGVyIC8+XG4gICAgICAgIDwvU3R5bGVkRW5naW5lUHJvdmlkZXI+XG4gICAgICA8L1BlcnNpc3RHYXRlPlxuICAgIDwvUHJvdmlkZXI+XG4gICk7XG59O1xuXG5NeU9yZGVyc015VGlja2V0c1dpZGdldC5wcm9wVHlwZXMgPSB7XG4gIGxvZ2luVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdXBwb3J0RW1haWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgYXBpQmFzZVVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdXNlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgY2xpZW50SWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHVwZGF0ZVByb2ZpbGU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc015VGlja2V0c1dpZGdldDtcbiJdLCJuYW1lcyI6WyJhdXRoRXJyb3JIYW5kbGVyIiwiY3JlYXRlQWN0aW9uIiwiZGVsZXRlUmVxdWVzdCIsImdldFJlcXVlc3QiLCJwdXRSZXF1ZXN0Iiwic3RhcnRMb2FkaW5nIiwic3RvcExvYWRpbmciLCJwTGltaXQiLCJnZXRJZFRva2VuIiwib2JqZWN0VG9RdWVyeVN0cmluZyIsIklkVG9rZW5WZXJpZmllciIsImkxOG4iLCJhdXRoUHJvbWlzZVJlamVjdCIsImdldEFjY2Vzc1Rva2VuU2FmZWx5IiwiREVGQVVMVF9JVEVNU19QRVJfUEFHRSIsIkVSUk9SX0NPREVTIiwiRklGVFlfUEVSX1BBR0UiLCJGSUxURVJfQUNUSU9OIiwiRklSU1RfUEFHRSIsIlBST01JU0VfQkFUQ0hfTElNSVQiLCJSRVNFVF9TVEFURSIsIlJFU0VUX0ZJTFRFUiIsIlJFU0VUX0FQSV9FUlJPUiIsIlNFVF9TVEFURSIsIlNFVF9BUElfRVJST1IiLCJDSEFOR0VfRklMVEVSIiwiQ0hBTkdFX1NPUlQiLCJHRVRfVVNFUl9PUkRFUlMiLCJSRUZVTkRfT1JERVIiLCJTRVRfQUNUSVZFX09SREVSX0lEIiwiRklMVEVSX1VTRVJfT1JERVJTIiwiR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMiLCJVUERBVEVfVElDS0VUIiwiUkVTRVRfVElDS0VUIiwiUkVDRUlWRV9USUNLRVQiLCJSRU1PVkVfVElDS0VUX0FUVEVOREVFIiwiQVNTSUdOX1RJQ0tFVCIsIkRFTEVHQVRFX1RJQ0tFVCIsIlJFRlVORF9USUNLRVQiLCJSRVNFTkRfTk9USUZJQ0FUSU9OIiwiR0VUX1RJQ0tFVFNfQllfT1JERVIiLCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiIsIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyIsIkdFVF9USUNLRVRfREVUQUlMUyIsIlJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TIiwiVElDS0VUX0FUVEVOREVFX0tFWVMiLCJlbWFpbCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY29tcGFueSIsImRpc2NsYWltZXJBY2NlcHRlZCIsImV4dHJhUXVlc3Rpb25zIiwiVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCIsIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUiLCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUiLCJVUERBVEVfSURQX1BST0ZJTEUiLCJTRVRfVVNFUiIsIlNFVF9TVU1NSVQiLCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMiLCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyIsIkNMRUFSX01BUktFVElOR19TRVRUSU5HUyIsInJlc2V0VGlja2V0IiwiZGlzcGF0Y2giLCJyZXNldFN0YXRlIiwicmVzZXRGaWx0ZXIiLCJyZXNldEVycm9yIiwic2V0UmVkdWNlclN0YXRlIiwic3VtbWl0IiwidXNlciIsIkZJTFRFUl9WQVJfREFURSIsIkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSIsIkZJTFRFUl9WQVJfVElDS0VUX1RZUEUiLCJGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCIsIkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTIiwiRklMVEVSX1ZBUl9QUk9NT0NPREUiLCJGSUxURVJfVkFSX0ZSRUVfUEFJRCIsIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIiwiY2hhbmdlRmlsdGVyIiwiZmlsdGVyIiwiY2hhbmdlU29ydCIsInNvcnQiLCJwYXJzZUZpbHRlciIsImZpbHRlck9iaiIsImZpbHRlckFjdGlvbiIsInB1c2giLCJjb25jYXQiLCJsb3dlciIsInVwcGVyIiwibGVuZ3RoIiwiZmlsdGVyTmFtZSIsIk9SREVSUyIsImpvaW4iLCJpbnB1dEZpbHRlcnMiLCJUSUNLRVRTX0JZX09SREVSUyIsIkVYVEVSTkFMX1RJQ0tFVFMiLCJnZXRTb3J0RGlyZWN0aW9uIiwiZGlyZWN0aW9uIiwiZXJyb3JIYW5kbGVyTm90aWZ5IiwicGF5bG9hZCIsImNhbGxiYWNrIiwiY3VzdG9tQXV0aEVycm9ySGFuZGxlciIsImVyciIsInJlcyIsImN1c3RvbUZldGNoRXJyb3JIYW5kbGVyIiwicmVzcG9uc2UiLCJjb2RlIiwic3RhdHVzIiwibXNnIiwidCIsIk9iamVjdCIsImVudHJpZXMiLCJlcnJvcnMiLCJmb3JFYWNoIiwiX3JlZiIsImtleSIsInZhbHVlIiwiTnVtYmVyIiwiaXNOYU4iLCJzdGF0dXNUZXh0IiwidGl0bGUiLCJodG1sIiwiZ2V0VXNlck9yZGVycyIsIl9yZWYyIiwic2tpcExvYWRpbmciLCJwYWdlIiwicGVyUGFnZSIsImdldFN0YXRlIiwiX3JlZjMiLCJhcGlCYXNlVXJsIiwid2lkZ2V0U3RhdGUiLCJhY2Nlc3NUb2tlbiIsInBhcmFtcyIsImFjY2Vzc190b2tlbiIsIm9yZGVyIiwicmVsYXRpb25zIiwiZmllbGRzIiwicGVyX3BhZ2UiLCJrZXlzIiwiZmlsdGVycyIsIm5hbWUiLCJpZCIsInRoZW4iLCJjYXRjaCIsImUiLCJmaW5hbGx5Iiwic2V0QWN0aXZlT3JkZXJJZCIsIm9yZGVySWQiLCJzZXRVc2VyIiwiZ2V0VXNlclRpY2tldHMiLCJfcmVmNCIsIl9yZWY1IiwidXNlclByb2ZpbGUiLCJQcm9taXNlIiwicmVqZWN0IiwiZXhwYW5kIiwiZ2V0VGlja2V0c0J5T3JkZXIiLCJfcmVmNiIsIl9yZWY3IiwicmVzZW5kTm90aWZpY2F0aW9uIiwidGlja2V0IiwiX3JlZjgiLCJtZXNzYWdlIiwib3JkZXJfaWQiLCJyZWZ1bmRUaWNrZXQiLCJfcmVmOSIsIl9yZWYxMCIsInJlZnVuZEJ1bGtUaWNrZXRzIiwiX3JlZjExIiwidGlja2V0cyIsImxpbWl0IiwiYWxsUmVmdW5kVGlja2V0Q2FsbHMiLCJtYXAiLCJhbGwiLCJzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQiLCJyIiwiX3IkcmVzcG9uc2UiLCJyZWZ1bmRfcmVxdWVzdHMiLCJ1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIiwidGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsImdldEV4dHJhUXVlc3Rpb25zIiwiYXR0ZW5kZWVJZCIsIl9yZWYxMiIsImVuZHBvaW50IiwiZ2V0VGlja2V0IiwidGlja2V0SWQiLCJfcmVmMTMiLCJub3JtYWxpemVUaWNrZXQiLCJlbnRpdHkiLCJub3JtYWxpemVkRW50aXR5IiwiX29iamVjdFNwcmVhZCIsImF0dGVuZGVlX2NvbXBhbnkiLCJhdHRlbmRlZV9jb21wYW55X2lkIiwicmVmcmVzaFByb2ZpbGUiLCJkYXRhIiwidGlja2V0T3duZXIiLCJfcmVmMTQiLCJfdGlja2V0T3duZXIkbWFuYWdlciIsInVwZGF0ZVByb2ZpbGUiLCJhdHRlbmRlZV9lbWFpbCIsImF0dGVuZGVlX2ZpcnN0X25hbWUiLCJhdHRlbmRlZV9sYXN0X25hbWUiLCJoYXNNYW5hZ2VyIiwibWFuYWdlciIsIm1hbmFnZXJfaWQiLCJpdHNNZSIsInByb2ZpbGVDaGFuZ2VkIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsIm5ld1Byb2ZpbGUiLCJzYXZlVGlja2V0RGV0YWlscyIsImFuc3dlcnMiLCJfcmVmMTUiLCJpZFRva2VuIiwidmVyaWZpZXIiLCJqd3QiLCJkZWNvZGUiLCJjb25zb2xlIiwibG9nIiwib3duZXIiLCJhc3NpZ25BdHRlbmRlZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9yZWYxNiIsInJlbW92ZVRpY2tldCIsIl9yZWYxNyIsInJlYXNzaWduVGlja2V0IiwidW5hc3NpZ25UaWNrZXQiLCJkZWxlZ2F0ZVRpY2tldCIsIl9yZWYxOCIsInNhdmVFeHRyYVF1ZXN0aW9ucyIsIl9yZWYxOSIsImdldFRpY2tldFBERiIsIl9yZWYyMCIsInF1ZXJ5U3RyaW5nIiwiYXBpVXJsIiwiZmV0Y2giLCJyZXNwb25zZVR5cGUiLCJoZWFkZXJzIiwib2siLCJibG9iIiwicGRmIiwibGluayIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInVybCIsIndpbmRvdyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImhyZWYiLCJkb3dubG9hZCIsImRpc3BhdGNoRXZlbnQiLCJNb3VzZUV2ZW50IiwiUmVhY3QiLCJCdXR0b24iLCJEaWFsb2ciLCJEaWFsb2dBY3Rpb25zIiwiRGlhbG9nQ29udGVudCIsIkRpYWxvZ0NvbnRlbnRUZXh0IiwiRGlhbG9nVGl0bGUiLCJ1c2VUcmFuc2xhdGlvbiIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJDb25maXJtRGlhbG9nIiwib3BlbiIsImJvZHkiLCJvbkNsb3NlIiwib25Db25maXJtIiwiY2hpbGRyZW4iLCJvbkNsaWNrIiwiYXV0b0ZvY3VzIiwiUHJvcFR5cGVzIiwiQ29udGVudENvcHlJY29uIiwiVG9vbHRpcCIsIk1JTExJU0VDX1RPX1NFQyIsInN0eWxlcyIsImRlZmF1bHRXaWR0aCIsIkNvcHlUZXh0IiwidGV4dCIsInRvb2x0aXBUZXh0IiwiaGlkZUNvcHkiLCJ0cnVuY2F0ZWQiLCJyZXZlcnNlZCIsIndpZHRoIiwidG9vbHRpcFRleHRUb1VzZSIsInRvb2x0aXAiLCJzZXRUb29sdGlwIiwidXNlU3RhdGUiLCJjbGFzc05hbWVzIiwiaGFuZGxlQ29weSIsIm5hdmlnYXRvciIsImNsaXBib2FyZCIsIndyaXRlVGV4dCIsInNldFRpbWVvdXQiLCJjbGFzc05hbWUiLCJ3cmFwcGVyIiwic3R5bGUiLCJjb3B5SWNvbiIsInByb3BUeXBlcyIsInN0cmluZyIsImJvb2wiLCJudW1iZXIiLCJjcmVhdGVDb250ZXh0IiwiQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dCIsIkFsZXJ0IiwiU25hY2tiYXIiLCJUeXBvZ3JhcGh5IiwiQ2hlY2tDaXJjbGVJY29uIiwiRXJyb3JJY29uIiwiQ3VzdG9tTm90aWZpY2F0aW9uIiwic2V2ZXJpdHkiLCJhbmNob3JPcmlnaW4iLCJ2ZXJ0aWNhbCIsImhvcml6b250YWwiLCJhdXRvSGlkZUR1cmF0aW9uIiwidmFyaWFudCIsInN4IiwiYmFja2dyb3VuZENvbG9yIiwiaWNvbk1hcHBpbmciLCJzdWNjZXNzIiwiZm9udFNpemUiLCJlcnJvciIsImZ1bmMiLCJUaGVtZVByb3ZpZGVyIiwiY3JlYXRlVGhlbWUiLCJkYXJrQ29sb3IiLCJyb290IiwiZG9jdW1lbnRFbGVtZW50IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImdldFByb3BlcnR5VmFsdWUiLCJ0aGVtZSIsInBhbGV0dGUiLCJwcmltYXJ5IiwibWFpbiIsInNlY29uZGFyeSIsInR5cG9ncmFwaHkiLCJib2R5MSIsImZvbnRXZWlnaHQiLCJoNSIsIm1hcmdpbkJvdHRvbSIsImg2IiwiY29tcG9uZW50cyIsIk11aUZvcm1IZWxwZXJUZXh0Iiwic3R5bGVPdmVycmlkZXMiLCJNdWlCdXR0b24iLCJsaW5lSGVpZ2h0IiwiTXVpVGFiIiwiY29sb3IiLCJNdWlUYWJzIiwiaW5kaWNhdG9yIiwiQ3VzdG9tVGhlbWUiLCJub2RlIiwiaXNSZXF1aXJlZCIsIkNoZWNrYm94IiwiRm9ybUNvbnRyb2wiLCJGb3JtQ29udHJvbExhYmVsIiwiRm9ybUdyb3VwIiwiRm9ybUhlbHBlclRleHQiLCJGb3JtTGFiZWwiLCJnZXRMYWJlbCIsInRvU2x1ZyIsIkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQiLCJfcXVlc3Rpb24kdmFsdWVzIiwicXVlc3Rpb24iLCJxdWVzdGlvbkNsYXNzTmFtZSIsImlzRGlzYWJsZWQiLCJvbkNoYW5nZSIsInNldEZpZWxkVmFsdWUiLCJoZWxwZXJUZXh0IiwicmVzdCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsInF1ZXN0aW9uU2x1ZyIsInF1ZXN0aW9uTGFiZWwiLCJtYW5kYXRvcnkiLCJxdWVzdGlvbk1heFZhbHVlcyIsIm1heF9zZWxlY3RlZF92YWx1ZXMiLCJxdWVzdGlvbk9wdGlvbnMiLCJ2YWx1ZXMiLCJ2YWwiLCJsYWJlbCIsInRvU3RyaW5nIiwiaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlIiwiY2hlY2tlZCIsImN1cnJlbnRBbnMiLCJtYXhTZWxlY3Rpb25SZWFjaGVkIiwibmV3VmFsdWUiLCJ2IiwiZGlzYWJsZWQiLCJyZXF1aXJlZCIsImZ1bGxXaWR0aCIsIm1hcmdpbiIsIm9wIiwiY29udHJvbCIsImluY2x1ZGVzIiwiZXYiLCJ0YXJnZXQiLCJvYmplY3QiLCJhcnJheSIsIlJhd0hUTUwiLCJDaGVja2JveFF1ZXN0aW9uRmllbGQiLCJhbGlnbkl0ZW1zIiwibWFyZ2luVG9wIiwiSW5wdXRMYWJlbCIsIk1lbnVJdGVtIiwiU2VsZWN0IiwiRHJvcGRvd25RdWVzdGlvbkZpZWxkIiwibGFiZWxJZCIsIlJhZGlvIiwiUmFkaW9Hcm91cCIsIlJhZGlvTGlzdFF1ZXN0aW9uRmllbGQiLCJUZXh0RmllbGQiLCJUZXh0UXVlc3Rpb25GaWVsZCIsIlF1ZXN0aW9uVHlwZV9DaGVja2JveCIsIlF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QiLCJRdWVzdGlvblR5cGVfQ29tYm9Cb3giLCJRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94IiwiUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCIsImNoZWNrUnVsZSIsInJ1bGUiLCJhbnN3ZXJfdmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwiYW5zd2VyX3ZhbHVlc19vcGVyYXRvciIsImNoZWNrVmlzaWJpbGl0eSIsInJ1bGVSZXN1bHQiLCJ2aXNpYmlsaXR5IiwidmlzaWJpbGl0eV9jb25kaXRpb24iLCJxdWVzdGlvbklkIiwidGV4dExDIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwicSIsIl9xJGxhYmVsIiwiaXNBbnN3ZXJlZCIsImFuc3dlciIsImNoZWNrSWZWYWx1ZU1hdGNoIiwiY29tcGFyZVZhbCIsImFuc3dlckFycmF5Iiwic29tZSIsImdldFR5cGVJbml0aWFsVmFsdWUiLCJ0eXBlIiwiZ2V0VHlwZVZhbHVlIiwiYW5zIiwic3BsaXQiLCJ0cmFuc2Zvcm1BbndlcnNGb3JtYXQiLCJkaXNjbGFpbWVyX2FjY2VwdGVkIiwiZXh0cmFfcXVlc3Rpb25zIiwiZm9ybWF0dGVkRVEiLCJxdWVzdGlvbl9pZCIsInBhcnNlSW50IiwicG9wIiwiUXVlc3Rpb25UeXBlX1RleHQiLCJRdWVzdGlvblR5cGVfVGV4dEFyZWEiLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24iLCJnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwicXVlc3Rpb25UeXBlIiwiRnJhZ21lbnQiLCJFeHRyYVF1ZXN0aW9uc0ZpZWxkcyIsInJlYWRPbmx5IiwiYWxsb3dFZGl0IiwiZm9ybWlrIiwicmVuZGVyUnVsZSIsImlzVmlzaWJsZSIsInJlbmRlclF1ZXN0aW9uIiwic3ViX3F1ZXN0aW9uIiwiX3Ekc3ViX3F1ZXN0aW9uX3J1bGVzIiwiUXVlc3Rpb25GaWVsZENvbXBvbmVudCIsImZvcm1pa1Byb3BzIiwiaGFuZGxlQ2hhbmdlIiwib25CbHVyIiwiaGFuZGxlQmx1ciIsInRvdWNoZWQiLCJCb29sZWFuIiwic3ViX3F1ZXN0aW9uX3J1bGVzIiwidXNlU2VsZWN0b3IiLCJzaGFsbG93RXF1YWwiLCJCb3giLCJDYXJkSGVhZGVyIiwiSWNvbkJ1dHRvbiIsIkNvbGxhcHNlIiwiQ2FyZENvbnRlbnQiLCJFeHBhbmRNb3JlSWNvbiIsIkFzc2lnbmVkRmlsdGVyIiwib25GaWx0ZXIiLCJmaWx0ZXJWYWx1ZXMiLCJzdGF0ZSIsImlzRXhwYW5kZWQiLCJzZXRJc0V4cGFuZGVkIiwiYXNzaWduZWRWYWx1ZXMiLCJoYW5kbGVGaWx0ZXJDaGFuZ2UiLCJuZXdGaWx0ZXIiLCJ0aXRsZVdyYXBwZXIiLCJhY3Rpb24iLCJkaXNhYmxlUmlwcGxlIiwidHJhbnNmb3JtIiwidHJhbnNpdGlvbiIsImluIiwidGltZW91dCIsInVubW91bnRPbkV4aXQiLCJweSIsInBiIiwiYXNzaWduZWQiLCJ1c2VFZmZlY3QiLCJCYWRnZUZlYXR1cmVGaWx0ZXIiLCJiYWRnZV9mZWF0dXJlc190eXBlcyIsIm5ld0ZpbHRlcnMiLCJmIiwiYmYiLCJ1c2VSZWYiLCJTdGFjayIsIkZpbHRlckxpc3RJY29uIiwiQmFkZ2UiLCJDYXJkIiwiRGl2aWRlciIsIlBhcGVyIiwiY29ubmVjdCIsIlRpY2tldFR5cGVGaWx0ZXIiLCJTdGF0dXNGaWx0ZXIiLCJGcmVlUGFpZEZpbHRlciIsIlByb21vQ29kZUZpbHRlciIsIkZpbHRlciIsIm9uUmVzZXQiLCJhY3RpdmVGaWx0ZXJzQ291bnQiLCJzaG93RmlsdGVyTGlzdCIsInNldFNob3dGaWx0ZXJMaXN0Iiwic2hvd0RhdGVwaWNrZXIiLCJzZXRTaG93RGF0ZXBpY2tlciIsImZpbHRlclJlZiIsImhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSIsImV2ZW50IiwiY3VycmVudCIsImNvbnRhaW5zIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ0b2dnbGUiLCJoYW5kbGVGaWx0ZXJSZXNldCIsImZpbHRlckNvbnRhaW5lciIsInJlZiIsInB0IiwiYmFkZ2VDb250ZW50IiwibXIiLCJmaWx0ZXJJY29uIiwiZmlsdGVyTGFiZWwiLCJmaWx0ZXJMaXN0Q29udGFpbmVyIiwiY29udGFpbmVyIiwiZWxldmF0aW9uIiwiZmlsdGVyQ2hlY2tib3hDb250YWluZXIiLCJjbGVhbkJ1dHRvbiIsIm1hcFN0YXRlVG9Qcm9wcyIsInByb21vQ29kZSIsInNldFByb21vQ29kZSIsImRlYm91bmNlVGltZXIiLCJERUJPVU5DRV9WQUxVRSIsIm5ld1Byb21vQ29kZSIsImNsZWFyVGltZW91dCIsInBsYWNlaG9sZGVyIiwic3R5bGVkIiwiU2VhcmNoSWNvbiIsIkNsb3NlSWNvbiIsIklucHV0QmFzZSIsIlNlYXJjaENvbnRhaW5lciIsInBvc2l0aW9uIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5MZWZ0IiwiZGlzcGxheSIsIlNlYXJjaEljb25XcmFwcGVyIiwiaGVpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJTdHlsZWRJbnB1dEJhc2UiLCJib3JkZXJCb3R0b20iLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsIkNsb3NlSWNvbldyYXBwZXIiLCJwYWRkaW5nIiwidG9wIiwicmlnaHQiLCJjdXJzb3IiLCJ6SW5kZXgiLCJTZWFyY2giLCJvblNlYXJjaCIsInNlYXJjaFZhbHVlIiwic2V0U2VhcmNoVmFsdWUiLCJzaG93Q2xvc2VCdG4iLCJvbktleURvd24iLCJuYXRpdmVFdmVudCIsInJlc2V0U2VhcmNoIiwiaW5wdXRQcm9wcyIsIkltcG9ydEV4cG9ydEljb24iLCJTb3J0Iiwib25Tb3J0Iiwic2hvd1NvcnQiLCJzZXRTaG93U29ydCIsInNvcnRSZWYiLCJoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlIiwic29ydENvbnRhaW5lciIsInNvcnRJY29uIiwic29ydExhYmVsIiwic29ydExpc3RDb250YWluZXIiLCJ0aWNrZXRfdHlwZXMiLCJHcmlkIiwiRmlsdGVycyIsImp1c3RpZnkiLCJpdGVtIiwieHMiLCJnYXAiLCJmaWx0ZXJTb3J0Q29udGFpbmVyIiwiRm9ybUZvb3RlciIsInNhdmVMYWJlbCIsImNhbmNlbExhYmVsIiwiZm9vdGVyIiwiY2FuY2VsQnRuIiwic2l6ZSIsInNhdmVCdG4iLCJFcnJvckxhYmVsIiwiZGF0YVRlc3RJZCIsImVycm9yTGFiZWwiLCJCYWNrZHJvcCIsIkNpcmN1bGFyUHJvZ3Jlc3MiLCJMb2FkZXIiLCJkcmF3ZXIiLCJJbmZpbml0ZVNjcm9sbCIsIk9yZGVyc0xpc3QiLCJPTkVfUEFHRV9ORVhUIiwiTXlPcmRlcnNUaWNrZXRzIiwiZmV0Y2hEYXRhIiwibWVtYmVyT3JkZXJzIiwib3JkZXJzX2N1cnJlbnRfcGFnZSIsIm9yZGVyc19sYXN0X3BhZ2UiLCJteU9yZGVyc1dyYXBwZXIiLCJkYXRhTGVuZ3RoIiwibmV4dCIsImhhc01vcmUiLCJzY3JvbGxUaHJlc2hvbGQiLCJUaWNrZXRzSWNvbiIsInZpZXdCb3giLCJmaWxsIiwieG1sbnMiLCJkIiwic3Ryb2tlIiwic3Ryb2tlV2lkdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlRGFzaGFycmF5IiwiVEFCUyIsIl9GcmFnbWVudCIsIk5vVGlja2V0c0ZvdW5kIiwicGFnZVZpZXciLCJsb2FkaW5nIiwiZ2V0Q29udGVudCIsIm1haWx0b1RhZyIsInN1cHBvcnRfZW1haWwiLCJidXR0b25MYWJlbCIsIlRJQ0tFVFMiLCJpY29uV3JhcHBlciIsImNhbGN1bGF0ZU9yZGVyVG90YWxzIiwiZm9ybWF0Q3VycmVuY3kiLCJPcmRlclN1bW1hcnlUYWJsZSIsImRpc2NvdW50VG90YWwiLCJyZWZ1bmRUb3RhbCIsImFtb3VudFRvdGFsIiwic3ViVG90YWwiLCJ0aWNrZXRTdW1tYXJ5IiwidGF4ZXNTdW1tYXJ5IiwiaHVuZHJlZCIsIm9yZGVyU3VtbWFyeVRhYmxlIiwidGlja2V0VG90YWwiLCJxdHkiLCJ0aWNrZXRfdHlwZSIsImNvc3QiLCJhbGlnbiIsImN1cnJlbmN5IiwiY3JlYXRlZCIsInRheGVzX2Ftb3VudCIsInRheCIsImFtb3VudCIsImRpc2NvdW50X2Ftb3VudCIsInNoYXBlIiwidXNlTm93IiwidGlja2V0c1JlZnVuZGFibGUiLCJ1c2VTdW1taXREZXRhaWxzIiwiUmVmdW5kRW1haWxTdXBwb3J0Iiwic3VibWl0UmVxdWVzdCIsIm9uUmVmdW5kQ2xpY2siLCJvblJlZnVuZERldGFpbENsaWNrIiwiaXNTdGFydGVkIiwibm93IiwiaXNJblJlZnVuZGFibGVQZXJpb2QiLCJyZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUiLCJhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCIsImlzUmVmdW5kYWJsZSIsImhhc1JlZnVuZFJlcXVlc3RzIiwicm9sZSIsIm9yZGVyU3VtbWFyeUJ1dHRvbiIsInJlZnVuZERpc2FibGVkIiwicmVsIiwiYXJyYXlPZiIsIk9yZGVyU3VtbWFyeSIsIm9yZGVyU3VtbWFyeVdyYXBwZXIiLCJweCIsIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm8iLCJtZW1iZXJUaWNrZXRzIiwiT3JkZXJMaXN0VGlja2V0cyIsIkFzc2lnblRvTWUiLCJ1c2VyVGlja2V0cyIsInVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UiLCJ1c2VyX3RpY2tldHNfbGFzdF9wYWdlIiwib3JkZXJUaWNrZXRDb250YWluZXIiLCJhc3NpZ25lZFRvTWVXcmFwcGVyIiwidGlja2V0TGlzdENvbnRhaW5lciIsImlzUmVmdW5kTW9kYWwiLCJpc1NlbGVjdGVkVG9SZWZ1bmQiLCJzZWxlY3RUb1JlZnVuZCIsImlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCIsIkFzc2lnbmVkVG8iLCJFeHRlcm5hbEFzc2lnbmVkVG8iLCJNYW5hZ2VGb3IiLCJBdHRlbmRlZVN0YXR1cyIsIl90aWNrZXQkb3duZXIiLCJfdGlja2V0JG93bmVyMiIsIl90aWNrZXQkb3duZXIzIiwiaXNVbmFzc2lnbmVkIiwiaXNfYWN0aXZlIiwiaXNEZWxlZ2F0ZWQiLCJ0aWNrZXRPd25lckVtYWlsIiwiX3RpY2tldCRvcmRlciIsIl90aWNrZXQkb3JkZXIyIiwiX3RpY2tldCRvd25lcjQiLCJfdGlja2V0JG93bmVyNSIsImFzc2lnbmVkQnlUZXh0Iiwib3duZXJfZmlyc3RfbmFtZSIsIm93bmVyX2xhc3RfbmFtZSIsIk9ORV9SRVRSWSIsIkJhZGdlRmVhdHVyZUltYWdlIiwic3JjIiwiYWx0IiwibWF4UmV0cmllcyIsImN1cnJlbnRTcmMiLCJzZXRDdXJyZW50U3JjIiwicmV0cnlDb3VudCIsInNldFJldHJ5Q291bnQiLCJoYXNFcnJvciIsInNldEhhc0Vycm9yIiwiaGFuZGxlRXJyb3IiLCJEYXRlIiwib25FcnJvciIsIlBBR0lOQVRJT05fRElTUExBWV9DT1VOVCIsIk9yZGVyTGlzdEl0ZW0iLCJfb3JkZXIkbWVtYmVyVGlja2V0cyIsIl9vcmRlciRtZW1iZXJUaWNrZXRzMiIsIm9uUGFnaW5hdGVDbGljayIsInRpY2tldHNUb1JlZnVuZCIsIml0ZW1zVG9EaXNwbGF5Iiwic2V0SXRlbXNUb0Rpc3BsYXkiLCJ0aWNrZXRzX3RvdGFsIiwic2xpY2VkVGlja2V0cyIsInNsaWNlIiwib25WaWV3TW9yZSIsIm9uVmlld0xlc3MiLCJmaW5kIiwidmlld01vcmVCdXR0b24iLCJ1c2VEaXNwYXRjaCIsIlRpY2tldFN0YXR1cyIsImdldFN1bW1pdFJlYXNzaWduRGF0ZSIsIlRpY2tldERldGFpbCIsInVzZVRpY2tldERldGFpbHMiLCJUaWNrZXRBc3NpZ24iLCJtb2RhbFZpZXdzIiwiZGV0YWlsIiwicmVhc3NpZ24iLCJhc3NpZ24iLCJUaWNrZXRDVEFzIiwiaXNJbmNvbXBsZXRlIiwiaXNSZWFzc2lnbmFibGUiLCJvbk9wZW5DbGljayIsImFzc2lnblRpY2tldEJ1dHRvbiIsInZpZXdGaW5pc2hUaWNrZXRCdXR0b24iLCJyZWFzc2lnbkJ1dHRvbiIsIl90aWNrZXQkdGlja2V0X3R5cGUiLCJfdGlja2V0JGJhZGdlIiwiY2FuUmVhc3NpZ24iLCJtb2RhbE9wZW4iLCJzZXRNb2RhbE9wZW4iLCJyZWFzc2lnbkRhdGUiLCJvblJlYXNzaWduYWJsZVBlcmlvZCIsImhhbmRsZUNsb3NlTW9kYWwiLCJoYW5kbGVPcGVuTW9kYWwiLCJ2aWV3Iiwib3JkZXJXcmFwcGVyIiwicmVmdW5kTW9kYWwiLCJkaXNhYmxlZFJlZnVuZCIsInNlbGVjdGVkIiwiY2hlY2tib3giLCJwbCIsInRpY2tldFRpY2tldFR5cGUiLCJiZkZlYXR1cmVXcmFwcGVyIiwicHIiLCJiYWRnZSIsImZlYXR1cmVzIiwiYmZGZWF0dXJlIiwiaW1hZ2UiLCJ0aWNrZXRObyIsInRpY2tldEZvb3RlciIsInRpY2tldEFjdGlvbkJ1dHRvbnMiLCJvd25lcklkIiwidG90YWxfcmVmdW5kZWRfYW1vdW50IiwiVGFicyIsIlRhYiIsIlJlZnVuZFJlcXVlc3RzTW9kYWwiLCJSZWZ1bmREZXRhaWxzIiwiVGFiUGFuZWwiLCJwcm9wcyIsImluZGV4IiwiaGlkZGVuIiwiT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUiLCJpc01vYmlsZSIsImRldGFpbHNSZXF1aXJlZCIsInNldFZhbHVlIiwiXyIsInNldFRpY2tldHNUb1JlZnVuZCIsInNldFN1Ym1pdFJlcXVlc3QiLCJyZWZ1bmREZXRhaWxzT3BlbiIsInNldFJlZnVuZERldGFpbHNPcGVuIiwidW5zZWxlY3RSZWZ1bmRUaWNrZXRzIiwiZmlsdGVyU2VsZWN0ZWQiLCJzZWxlY3RlZFRpY2tldCIsImNsb3NlU3VibWl0UmVxdWVzdCIsInJlc2V0QWxsUmVmdW5kU3RhdHVzZXMiLCJtb3JlRGV0YWlscyIsImJvcmRlckNvbG9yIiwidGFiQnV0dG9ucyIsIm9uUmVmdW5kU3VjY2Vzc0Nsb3NlIiwib25DbG9zZVNsaWRlciIsIm1kIiwidXNlVGhlbWUiLCJ1c2VNZWRpYVF1ZXJ5IiwiZ2V0Rm9ybWF0dGVkRGF0ZSIsInRpY2tldF9wZXJfcGFnZSIsImJyZWFrcG9pbnRzIiwiZG93biIsImlzTW9iaWxlVmlld2FibGUiLCJzZXRNb2JpbGVWaWV3YWJsZSIsInRpY2tldHNfcGFnZV9jdXJyZW50IiwibGciLCJvcmRlclRpY2tldEluZm9Db250YWluZXIiLCJvcmRlclRpY2tldEluZm8iLCJyb3dTcGFjaW5nIiwiY29sdW1uU3BhY2luZyIsInNtIiwiZGlzcGxheV9ub25lIiwiZmxleERpcmVjdGlvbiIsInVzZU1lbW8iLCJSaWdodERyYXdlciIsIlJlZnVuZFJlcXVlc3RlZFRpY2tldCIsImdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMiLCJyZXF1ZXN0ZWRUaWNrZXRzIiwiY2xvc2VTbGlkZXIiLCJyZWZ1bmREZXRhaWxzIiwidG9vbHRpcENsYXNzZXMiLCJJbmZvSWNvbiIsIm1vbWVudCIsIlJlZnVuZFN0YXR1cyIsIkdSSURfOCIsIkdSSURfMTIiLCJQQURESU5HXzIiLCJhcHByb3ZlZFJlZnVuZHMiLCJyZWZ1bmQiLCJyZWZ1bmRlZFRheGVzU3VtbWF0b3J5IiwicmVmdW5kZWRfdGF4ZXMiLCJydCIsInRheElkIiwidG90YWxSZWZ1bmRlZFRheEFtb3VudCIsInJlZnVuZGVkX2Ftb3VudCIsIkh0bWxUb29sdGlwIiwiY2xhc3NlcyIsInBvcHBlciIsIm1heFdpZHRoIiwiYm9yZGVyIiwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyIiwicmVmdW5kRGV0YWlsIiwiYmFkZ2VGZWF0dXJlV3JhcHBlciIsImJhZGdlRmVhdHVyZSIsInJlZnVuZFRpY2tldEF0dGVuZGVlIiwiYWN0aW9uX2RhdGUiLCJmb3JtYXQiLCJDaGlwIiwiZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IiLCJzdGF0dXNDb2xvciIsImJ1dHRvblBpbGwiLCJTdHlsZWRFbmdpbmVQcm92aWRlciIsIlNURVBfT05FIiwiU1RFUF9USFJFRSIsIlNURVBfVFdPIiwic3RlcCIsInNldFN0ZXAiLCJlcnJvck1zZyIsInNldEVycm9yTXNnIiwicmVmdW5kU3VjY2VzcyIsInNldFJlZnVuZFN1Y2Nlc3MiLCJjb25maXJtUmVmdW5kIiwiZ29CYWNrVG9SZWZ1bmQiLCJyZWZ1bmRUaWNrZXRzIiwicmVmdW5kU3RlcE9uZSIsInN1YnRpdGxlIiwidGlja2V0TGlzdCIsImFjdGlvbkJ1dHRvbnMiLCJjYW5jZWxCdXR0b24iLCJjb250aW51ZUJ1dHRvbiIsInJlZnVuZFN0ZXBUd28iLCJyZWZ1bmRFcnJvck1zZyIsIkNUQUJ1dHRvbldyYXBwZXIiLCJyZWZ1bmRTdGVwVGhyZWUiLCJyZWZ1bmRTdWNjZXNzZnVsIiwic3VjY2Vzc01zZyIsInN1Y2Nlc3NNc2cyIiwicmVuZGVyU3RlcHMiLCJpbmplY3RGaXJzdCIsIkRyYXdlciIsIkNsb3NlIiwiaGVhZGVyQ2hpbGRyZW4iLCJhbmNob3IiLCJNb2RhbFByb3BzIiwia2VlcE1vdW50ZWQiLCJoZWFkZXIiLCJjbG9zZUJ0biIsImZsb2F0IiwiZ3V0dGVyQm90dG9tIiwib25lT2ZUeXBlIiwiU3VtbWl0SGVhZGVyIiwid2lkZ2V0SGVhZGVyIiwic3VtbWl0VGl0bGVEYXRlIiwiZGF0ZXNfbGFiZWwiLCJUYWJXcmFwcGVyIiwidGFiIiwic2V0VGFiIiwiaGFzVGlja2V0cyIsImlzRmlsdGVyZWQiLCJjbGVhckZpbHRlcnMiLCJnZXRQYWdlVmlldyIsImdldE9uQ2xpY2siLCJ0YWJUb0xpbmsiLCJMaW5rIiwiUmVhc3NpZ25Gb3JtIiwiRGVsZWdhdGVGb3JtIiwiQXNzaWduT3B0aW9ucyIsImFzc2lnbk9wdGlvbiIsInNldEFzc2lnbk9wdGlvbiIsIm9uQXNzaWduIiwib25EZWxlZ2F0ZSIsIm9uVW5Bc3NpZ24iLCJvcGVuQ29uZmlybVVuYXNzaWduIiwic2V0T3BlbkNvbmZpcm1VbmFzc2lnbiIsImlzQXNzaWduZWRUb01lIiwiYWxsb3dzRGVsZWdhdGUiLCJoYW5kbGVVbkFzc2lnbiIsIm15Iiwib25TdWJtaXQiLCJuZXdfYXR0ZW5kZWVfZW1haWwiLCJwZXJzb25hbF9tZXNzYWdlIiwiZGVsZWdhdGVfZmlyc3RfbmFtZSIsImRlbGVnYXRlX2xhc3RfbmFtZSIsImRlbGVnYXRlX2VtYWlsIiwidW5hc3NpZ25XcmFwcGVyIiwiY29tcG9uZW50IiwidGV4dERlY29yYXRpb24iLCJ0ZXh0RGVjb3JhdGlvbkNvbG9yIiwidXNlRm9ybWlrIiwieXVwIiwiaW5pdGlhbFZhbHVlcyIsInZhbGlkYXRpb25TY2hlbWEiLCJyZXNldEZvcm0iLCJoYW5kbGVDYW5jZWwiLCJoYW5kbGVTdWJtaXQiLCJub1ZhbGlkYXRlIiwiaXNTdWJtaXR0aW5nIiwiQXNzaWduSGVhZGVyIiwiaW5Qcm9ncmVzcyIsInVzZXJFbWFpbCIsImFzc2lnbmVkVG9Zb3UiLCJnZXRTZWNvbmRhcnlUaXRsZSIsImdldEhlYWRlck5vdGUiLCJ0cmFuc0tleSIsInB1cmNoYXNlZEJ5V3JhcHBlciIsInB1cmNoYXNlZEJ5Iiwib3duZXJfZW1haWwiLCJvcmRlck5vIiwiaGVhZGVyTm90ZSIsIlJlYXNzaWduSGVhZGVyIiwibXVsdGlsaW5lIiwibWluUm93cyIsInVzZUNvbnRleHQiLCJUaWNrZXRGb3JtIiwidXNlR2V0VGlja2V0IiwiVElDS0VUX0RSQVdFUl9JRCIsInN1Y2Nlc3NNZXNzYWdlIiwiZXJyb3JNZXNzYWdlIiwiYXNzaWduYXRpb25JblByb2dyZXNzIiwic2V0QXNzaWduYXRpb25JblByb2dyZXNzIiwiaXNVc2VyT3JkZXJPd25lciIsIm93bmVyX2lkIiwiaXNVc2VyVGlja2V0T3duZXIiLCJjYW5FZGl0VGlja2V0RGF0YSIsImFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnMiLCJvbkNsb3NlRVFGb3JtIiwib25TYXZlRVEiLCJyZXNvbHZlIiwiSGVhZGVyIiwidGlja2V0UmVhc3NpZ25Db250YWluZXIiLCJjYW5FZGl0IiwiQXV0b2NvbXBsZXRlIiwicXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMiLCJDb21wYW55RmllbGQiLCJzdW1taXRJZCIsImlucHV0VmFsdWUiLCJzZXRJbnB1dFZhbHVlIiwib3B0aW9ucyIsInNldE9wdGlvbnMiLCJzZXRGaWVsZFRvdWNoZWQiLCJyZXN1bHRzIiwibmV3T3B0aW9ucyIsImF1dG9Db21wbGV0ZSIsImZyZWVTb2xvIiwiaW5jbHVkZUlucHV0SW5MaXN0IiwiZmlsdGVyU2VsZWN0ZWRPcHRpb25zIiwiZ2V0T3B0aW9uTGFiZWwiLCJvcHRpb24iLCJ0bXBWYWx1ZSIsIm9uSW5wdXRDaGFuZ2UiLCJuZXdJbnB1dFZhbHVlIiwiZmlsdGVyT3B0aW9ucyIsImZpbHRlcmVkIiwiaXNFeGlzdGluZyIsInJlbmRlcklucHV0IiwicmVuZGVyT3B0aW9uIiwib3B0aW9uUHJvcHMiLCJSZWdpc3RyYXRpb25EaXNjbGFpbWVyIiwiZGlzY2xhaW1lciIsIlFSQ29kZSIsIkVtYWlsT3V0bGluZWQiLCJFbWFpbEljb24iLCJGaWxlRG93bmxvYWRPdXRsaW5lZCIsIkRvd25sb2FkSWNvbiIsIlRXT19JVEVNIiwiVGlja2V0RGV0YWlsSGVhZGVyIiwiaXNWaXJ0dWFsU3VtbWl0IiwiaXNDb21wbGV0ZSIsInNlbnRDb25maXJtYXRpb24iLCJzZXRTZW50Q29uZmlybWF0aW9uIiwiZG93bmxvYWRUaWNrZXRQZGYiLCJvblNlbmRFbWFpbCIsInFyQ29kZSIsInFyX2NvZGUiLCJxck5vdGUiLCJhY3Rpb25CdXR0b25zQ29udGFpbmVyIiwiZG93bmxvYWRCdG4iLCJzZW5kQnRuIiwic2VudCIsIm9yZGVyTnVtYmVyIiwiVGlja2V0T3duZXJGaWVsZHMiLCJ1c2VTY3JvbGxUb0Vycm9yIiwicGFyc2VBbnN3ZXJzIiwiYnVpbGRWYWxpZGF0aW9uU2NoZW1hIiwicmVkdWNlIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5IiwicmVsZXZhbnRBbnN3ZXJzIiwiZW5hYmxlUmVpbml0aWFsaXplIiwiYWRkaXRpb25hbERldGFpbHMiLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50IiwiaW5mb05vdGUiLCJvblNhdmUiLCJ0aWNrZXREZXRhaWxDb250YWluZXIiLCJpc192aXJ0dWFsIiwiYXR0ZW5kZWVDb250YWluZXIiLCJhdHRlbmRlZUluZm9UaXRsZSIsIkNvbnRhaW5lciIsIl90aWNrZXQkcmVmdW5kX3JlcXVlcyIsImlzQWN0aXZlIiwicmVmdW5kUmVxdWVzdHMiLCJ0aWNrZXRTdGF0dXNDb250YWluZXIiLCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWQiLCJidXR0b25JbmNvbXBsZXRlIiwiYnV0dG9uVW5hc3NpZ25lZCIsImJ1dHRvbkNvbXBsZXRlIiwiYnV0dG9uQ2FuY2VsbGVkIiwiQXNzaWduZWRUb01lIiwiV2lkZ2V0VGFicyIsInRpY2tldHNGdWxseUxvYWRlZCIsInNldFRpY2tldHNGdWxseUxvYWRlZCIsIm9yZGVyc19wZXJfcGFnZSIsIm9yZGVyc1BlclBhZ2UiLCJ0aWNrZXRQZXJQYWdlIiwiaGFuZGxlVGFiQ2hhbmdlIiwibmV3VGFiIiwiZmV0Y2hBc3NpZ25lZFRpY2tldHMiLCJmZXRjaE9yZGVyVGlja2V0cyIsIm9yZGVyVGlja2V0c1Byb21pc2VzIiwiY3VycmVudF9wYWdlIiwiZmV0Y2hQcm9taXNlcyIsInRhYldyYXBwZXIiLCJXaWRnZXRXcmFwcGVyIiwibXNnRGF0YSIsInNldE1zZ0RhdGEiLCJtZXNzYWdlQ29udGV4dCIsImZpbHRlclZhbHVlIiwic29ydFZhbHVlIiwidGlja2V0c1RpdGxlVGV4dCIsIlByb3ZpZGVyIiwicnVuIiwiY3VycmVudFRpY2tldCIsInNtb290aFNjcm9sbFRvIiwidGFyZ2V0U2Nyb2xsVG9wIiwiZHVyYXRpb24iLCJzdGFydFNjcm9sbFRvcCIsInNjcm9sbFRvcCIsImRpc3RhbmNlIiwic3RhcnRUaW1lIiwiYW5pbWF0aW9uU3RlcCIsInRpbWVzdGFtcCIsImVsYXBzZWQiLCJwcm9ncmVzcyIsIk1hdGgiLCJtaW4iLCJlYXNlSW5PdXRRdWFkIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiaXNWYWxpZCIsImVycm9yQXJyYXkiLCJlcnJvckNvdW50IiwiZWxlbWVudHNTb3J0ZWQiLCJyZXN1bHQiLCJlbGVtZW50IiwicXVlcnlTZWxlY3RvciIsImVsUmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImEiLCJiIiwiZ2V0RWxlbWVudEJ5SWQiLCJjb250YWluZXJSZWN0IiwiZWxlbU9mZmVzdCIsImFuaW1hdGlvbkR1cmF0aW9uIiwiaXNUaWNrZXRSZWZ1bmRhYmxlIiwiU1RBVFVTX0NPTVBMRVRFIiwiU1RBVFVTX0lOQ09NUExFVEUiLCJTVEFUVVNfQ0FOQ0VMTEVEIiwiU1RBVFVTX1VOQVNTSUdORUQiLCJfdGlja2V0JHByb21vX2NvZGUiLCJfdGlja2V0JHRpY2tldF90eXBlMiIsIl90aWNrZXQkcHJvbW9fY29kZTIiLCJnZXRTdGF0dXMiLCJhbGxvd3NfdG9fZGVsZWdhdGUiLCJwcm9tb19jb2RlIiwiYWxsb3dzX3RvX3JlYXNzaWduIiwiaW5pdFJlYWN0STE4bmV4dCIsIkxhbmd1YWdlRGV0ZWN0b3IiLCJlbiIsImVzIiwidXNlIiwiaW5pdCIsImZhbGxiYWNrTG5nIiwiZGVidWciLCJyZXNvdXJjZXMiLCJ0cmFuc2xhdGlvbiIsImludGVycG9sYXRpb24iLCJlc2NhcGVWYWx1ZSIsIkxPR09VVF9VU0VSIiwiU1RBUlRfTE9BRElORyIsIlNUT1BfTE9BRElORyIsIlJFU0VUX0xPQURJTkciLCJjYWxjdWxhdGVBY3RpdmVGaWx0ZXJzIiwiaGFzTG9hZGVkQWxsRGF0YSIsInVwZGF0ZVRpY2tldENvbGxlY3Rpb24iLCJERUZBVUxUX0ZJTFRFUl9TVEFURSIsIkRFRkFVTFRfU1RBVEUiLCJ3aWRnZXRMb2FkaW5nIiwiY3VycmVudF90YWIiLCJvcmRlcnNfdG90YWwiLCJ0aWNrZXRfY3VycmVudF9wYWdlIiwidGlja2V0X2xhc3RfcGFnZSIsInRpY2tldF90b3RhbCIsInVzZXJfdGlja2V0c190b3RhbCIsImFwaUVycm9yIiwiV2lkZ2V0UmVkdWNlciIsIm5ld0FjdGl2ZUNvdW50IiwidG90YWwiLCJsYXN0X3BhZ2UiLCJmb3JtZXJPcmRlciIsIm8iLCJfZGF0YSQiLCJuZXdPcmRlcnMiLCJtbyIsIl9kYXRhJDIiLCJuZXdUaWNrZXRzIiwidGlja2V0c19wYWdlX2xhc3QiLCJfdGlja2V0c1JlZnVuZFJlcXVlc3QiLCJ1cGRhdGVkVGlja2V0cyIsInRyciIsInVwZGF0ZWRPcmRlciIsInRpY2tldERhdGEiLCJuZXdVc2VyVGlja2V0cyIsImNvbmZpZ3VyZVN0b3JlIiwicGVyc2lzdFN0b3JlIiwicGVyc2lzdFJlZHVjZXIiLCJGTFVTSCIsIlJFSFlEUkFURSIsIlBBVVNFIiwiUEVSU0lTVCIsIlBVUkdFIiwiUkVHSVNURVIiLCJzdG9yYWdlIiwiY29tYmluZVJlZHVjZXJzIiwiZ2V0U3RvcmUiLCJjbGllbnRJZCIsImxvZ2luVXJsIiwicmVkdWNlcnMiLCJzdG9yZSIsInJlZHVjZXIiLCJtaWRkbGV3YXJlIiwiZ2V0RGVmYXVsdE1pZGRsZXdhcmUiLCJ0aHVuayIsImV4dHJhQXJndW1lbnQiLCJpbW11dGFibGVDaGVjayIsInNlcmlhbGl6YWJsZUNoZWNrIiwiaWdub3JlZEFjdGlvbnMiLCJ1c2VJbml0U3RvcmUiLCJjb25maWciLCJwZXJzaXN0b3IiLCJpbml0TG9nT3V0IiwiZ2V0QWNjZXNzVG9rZW4iLCJTZW50cnkiLCJnZXRBY2Nlc3NUb2tlbk1vY2siLCJFcnJvciIsImNhcHR1cmVFeGNlcHRpb24iLCJMQVNUX0hPVVJfT0ZfMjRfSE9VUiIsIkxBU1RfTUlOVVRFX09GX0hPVVIiLCJPTkVfREFZIiwiTUlOX1JFUVVJUkVEIiwiU1RBVFVTX1BFTkRJTkciLCJTVEFUVVNfRVJST1IiLCJTVEFUVVNfUFJPQ0VTU0lORyIsIlNUQVRVU19SRUZVTkRfUEVORElORyIsIlNUQVRVU19SRUZVTkRfQVBQUk9WRUQiLCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEIiwiU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDIiwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyIsIlNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMiLCJKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMiLCJPTkVfSVRFTSIsIkZJVkVfSVRFTSIsIlNJWF9JVEVNIiwibG9jYWxlIiwiZGVmYXVsdE9wdGlvbnMiLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJmb3JtYXR0ZXIiLCJJbnRsIiwiTnVtYmVyRm9ybWF0IiwiZGF0ZXRpbWUiLCJ0aW1lWm9uZSIsInR6IiwidW5peCIsInJhd19hbW91bnQiLCJjdXJyZW5jeU9iamVjdCIsInB1cmNoYXNlVGlja2V0VG90YWwiLCJ0aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUiLCJ0aWNrZXRUeXBlIiwidHQiLCJ0aWNrZXRfdHlwZV9pZCIsImFwcGxpZWRfdGF4ZXMiLCJmb3JtYXR0ZWRUYXgiLCJwdXJjaGFzZVRvdGFsIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZ2V0T3JkZXJUaWNrZXRzIiwiX29yZGVycyQiLCJvcmRlcnMiLCJnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMiLCJ0cyIsInNldEhvdXJzIiwiZGVmYXVsdEN1cnJlbnRUaW1lIiwicm91bmQiLCJnZXROb3ciLCJ0aW1lclN0YXRlIiwibm93VXRjIiwiY3VycmVudFBhZ2UiLCJjb3VudCIsInRyaW0iLCJjaGVja1N1bW1pdFBhc3QiLCJyZWFzc2lnbl9kYXRlIiwicmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSIsImVuZF9kYXRlIiwiY2hlY2tTdW1taXRTdGFydGVkIiwic3RhcnRfZGF0ZSIsImdldFN1bW1pdERheXNEaWZmIiwic3RhcnREYXkiLCJ0aW1lX3pvbmVfaWQiLCJlbmREYXkiLCJkYXlzIiwiZGlmZiIsImdldFN1bW1pdEZvcm1hdHRlZERhdGUiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImdldFN1bW1pdExvY2F0aW9uIiwiX3N1bW1pdCRsb2NhdGlvbnMiLCJsb2NhdGlvbiIsImxvY2F0aW9ucyIsImwiLCJjbGFzc19uYW1lIiwiaXNfbWFpbiIsImNpdHkiLCJjb3VudHJ5IiwiX3N1bW1pdCR0aW1lX3pvbmUiLCJfc3VtbWl0JHRpbWVfem9uZTIiLCJmb3JtYXR0ZWREYXRlIiwiZm9ybWF0dGVkUmVhc3NpZ25EYXRlIiwidGltZV96b25lIiwiZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSIsImlzUGFzdCIsInN0YXR1c0RhdGEiLCJnZXRUaWNrZXRTdGF0dXNLZXkiLCJnZXRUaWNrZXRTdGF0dXNEYXRhIiwiaXNTdW1taXRQYXN0IiwiZ2V0VGlja2V0Um9sZSIsImZlYXR1cmUiLCJnZXRUaWNrZXRUeXBlIiwiZmluYWxfYW1vdW50IiwibmV0X3NlbGxpbmdfY29zdCIsInJyIiwiZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzMiIsImFsbFRpY2tldHMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNCIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczUiLCJnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczYiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM3IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzOCIsImdldFR5cGVWYWxpZGF0aW9uIiwic2NoZW1hIiwib25lT2YiLCJvZiIsInBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIiLCJvbmx5UmVsZXZhbnQiLCJzdWJRdWVzdGlvblNsdWciLCJzdWJBbnN3ZXIiLCJtYXRjaCIsImluY2x1ZGVBdHRlbmRlZUluZm8iLCJpbmNsdWRlRGlzY2xhaW1lciIsImJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hIiwiX3N1YlF1ZXN0aW9uJHN1Yl9xdWVzIiwic3ViUXVlc3Rpb24iLCJudWxsYWJsZSIsIndoZW4iLCJpcyIsInF1ZXN0aW9uQW5zIiwiYW5zVmFsdWVNYXRjaCIsInNjaCIsInN1YlJ1bGUiLCJkaXNjbGFpbWVyTWFuZGF0b3J5IiwibGF6eSIsInR5cGVFcnJvciIsIl90JG93bmVyIiwiX3Qkb3duZXIyIiwiX3RpY2tldCRvd25lcjYiLCJ0bXBUaWNrZXQiLCJQZXJzaXN0R2F0ZSIsIk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0Iiwic3VwcG9ydEVtYWlsIiwiaGFuZGxlQmVmb3JlTGlmdCIsIlVSTFNlYXJjaFBhcmFtcyIsInNlYXJjaCIsImZsdXNoIiwiaGFzIiwib25CZWZvcmVMaWZ0Il0sInNvdXJjZVJvb3QiOiIifQ==