bookingsync-calendar-widget 2.1.2 → 2.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,9 +10,9 @@
10
10
  "use strict";
11
11
  __webpack_require__.r(__webpack_exports__);
12
12
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
13
- /* harmony export */ "popperGenerator": () => (/* binding */ popperGenerator),
14
13
  /* harmony export */ "createPopper": () => (/* binding */ createPopper),
15
- /* harmony export */ "detectOverflow": () => (/* reexport safe */ _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_13__["default"])
14
+ /* harmony export */ "detectOverflow": () => (/* reexport safe */ _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_13__["default"]),
15
+ /* harmony export */ "popperGenerator": () => (/* binding */ popperGenerator)
16
16
  /* harmony export */ });
17
17
  /* harmony import */ var _dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./dom-utils/getCompositeRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js");
18
18
  /* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js");
@@ -341,40 +341,47 @@ __webpack_require__.r(__webpack_exports__);
341
341
  /* harmony export */ });
342
342
  /* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
343
343
  /* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js");
344
+ /* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
345
+ /* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isLayoutViewport.js */ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js");
344
346
 
345
347
 
346
- function getBoundingClientRect(element, includeScale) {
348
+
349
+
350
+ function getBoundingClientRect(element, includeScale, isFixedStrategy) {
347
351
  if (includeScale === void 0) {
348
352
  includeScale = false;
349
353
  }
350
354
 
351
- var rect = element.getBoundingClientRect();
355
+ if (isFixedStrategy === void 0) {
356
+ isFixedStrategy = false;
357
+ }
358
+
359
+ var clientRect = element.getBoundingClientRect();
352
360
  var scaleX = 1;
353
361
  var scaleY = 1;
354
362
 
355
- if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) && includeScale) {
356
- var offsetHeight = element.offsetHeight;
357
- var offsetWidth = element.offsetWidth; // Do not attempt to divide by 0, otherwise we get `Infinity` as scale
358
- // Fallback to 1 in case both values are `0`
359
-
360
- if (offsetWidth > 0) {
361
- scaleX = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(rect.width) / offsetWidth || 1;
362
- }
363
-
364
- if (offsetHeight > 0) {
365
- scaleY = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(rect.height) / offsetHeight || 1;
366
- }
363
+ if (includeScale && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) {
364
+ scaleX = element.offsetWidth > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.width) / element.offsetWidth || 1 : 1;
365
+ scaleY = element.offsetHeight > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.height) / element.offsetHeight || 1 : 1;
367
366
  }
368
367
 
368
+ var _ref = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element) : window,
369
+ visualViewport = _ref.visualViewport;
370
+
371
+ var addVisualOffsets = !(0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__["default"])() && isFixedStrategy;
372
+ var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
373
+ var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
374
+ var width = clientRect.width / scaleX;
375
+ var height = clientRect.height / scaleY;
369
376
  return {
370
- width: rect.width / scaleX,
371
- height: rect.height / scaleY,
372
- top: rect.top / scaleY,
373
- right: rect.right / scaleX,
374
- bottom: rect.bottom / scaleY,
375
- left: rect.left / scaleX,
376
- x: rect.left / scaleX,
377
- y: rect.top / scaleY
377
+ width: width,
378
+ height: height,
379
+ top: y,
380
+ right: x + width,
381
+ bottom: y + height,
382
+ left: x,
383
+ x: x,
384
+ y: y
378
385
  };
379
386
  }
380
387
 
@@ -420,8 +427,8 @@ __webpack_require__.r(__webpack_exports__);
420
427
 
421
428
 
422
429
 
423
- function getInnerBoundingClientRect(element) {
424
- var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element);
430
+ function getInnerBoundingClientRect(element, strategy) {
431
+ var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element, false, strategy === 'fixed');
425
432
  rect.top = rect.top + element.clientTop;
426
433
  rect.left = rect.left + element.clientLeft;
427
434
  rect.bottom = rect.top + element.clientHeight;
@@ -433,8 +440,8 @@ function getInnerBoundingClientRect(element) {
433
440
  return rect;
434
441
  }
435
442
 
436
- function getClientRectFromMixedType(element, clippingParent) {
437
- return clippingParent === _enums_js__WEBPACK_IMPORTED_MODULE_1__.viewport ? (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element)) : (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) ? getInnerBoundingClientRect(clippingParent) : (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__["default"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(element)));
443
+ function getClientRectFromMixedType(element, clippingParent, strategy) {
444
+ return clippingParent === _enums_js__WEBPACK_IMPORTED_MODULE_1__.viewport ? (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element, strategy)) : (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__["default"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(element)));
438
445
  } // A "clipping parent" is an overflowable container with the characteristic of
439
446
  // clipping (or hiding) overflowing elements with a position different from
440
447
  // `initial`
@@ -457,18 +464,18 @@ function getClippingParents(element) {
457
464
  // clipping parents
458
465
 
459
466
 
460
- function getClippingRect(element, boundary, rootBoundary) {
467
+ function getClippingRect(element, boundary, rootBoundary, strategy) {
461
468
  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
462
469
  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
463
470
  var firstClippingParent = clippingParents[0];
464
471
  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
465
- var rect = getClientRectFromMixedType(element, clippingParent);
472
+ var rect = getClientRectFromMixedType(element, clippingParent, strategy);
466
473
  accRect.top = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.top, accRect.top);
467
474
  accRect.right = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.right, accRect.right);
468
475
  accRect.bottom = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.bottom, accRect.bottom);
469
476
  accRect.left = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.left, accRect.left);
470
477
  return accRect;
471
- }, getClientRectFromMixedType(element, firstClippingParent));
478
+ }, getClientRectFromMixedType(element, firstClippingParent, strategy));
472
479
  clippingRect.width = clippingRect.right - clippingRect.left;
473
480
  clippingRect.height = clippingRect.bottom - clippingRect.top;
474
481
  clippingRect.x = clippingRect.left;
@@ -523,7 +530,7 @@ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
523
530
  var isOffsetParentAnElement = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent);
524
531
  var offsetParentIsScaled = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent) && isElementScaled(offsetParent);
525
532
  var documentElement = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(offsetParent);
526
- var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(elementOrVirtualElement, offsetParentIsScaled);
533
+ var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(elementOrVirtualElement, offsetParentIsScaled, isFixed);
527
534
  var scroll = {
528
535
  scrollLeft: 0,
529
536
  scrollTop: 0
@@ -763,12 +770,14 @@ __webpack_require__.r(__webpack_exports__);
763
770
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
764
771
  /* harmony export */ "default": () => (/* binding */ getOffsetParent)
765
772
  /* harmony export */ });
766
- /* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
767
- /* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js");
773
+ /* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
774
+ /* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js");
768
775
  /* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js");
769
776
  /* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");
770
- /* harmony import */ var _isTableElement_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isTableElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js");
771
- /* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js");
777
+ /* harmony import */ var _isTableElement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./isTableElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js");
778
+ /* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js");
779
+ /* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/userAgent.js */ "./node_modules/@popperjs/core/lib/utils/userAgent.js");
780
+
772
781
 
773
782
 
774
783
 
@@ -788,8 +797,8 @@ function getTrueOffsetParent(element) {
788
797
 
789
798
 
790
799
  function getContainingBlock(element) {
791
- var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;
792
- var isIE = navigator.userAgent.indexOf('Trident') !== -1;
800
+ var isFirefox = /firefox/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__["default"])());
801
+ var isIE = /Trident/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__["default"])());
793
802
 
794
803
  if (isIE && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) {
795
804
  // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport
@@ -800,9 +809,13 @@ function getContainingBlock(element) {
800
809
  }
801
810
  }
802
811
 
803
- var currentNode = (0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element);
812
+ var currentNode = (0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element);
804
813
 
805
- while ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(currentNode) && ['html', 'body'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_3__["default"])(currentNode)) < 0) {
814
+ if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isShadowRoot)(currentNode)) {
815
+ currentNode = currentNode.host;
816
+ }
817
+
818
+ while ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(currentNode) && ['html', 'body'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(currentNode)) < 0) {
806
819
  var css = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(currentNode); // This is non-exhaustive but covers the most common CSS properties that
807
820
  // create a containing block.
808
821
  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
@@ -820,14 +833,14 @@ function getContainingBlock(element) {
820
833
 
821
834
 
822
835
  function getOffsetParent(element) {
823
- var window = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_4__["default"])(element);
836
+ var window = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_5__["default"])(element);
824
837
  var offsetParent = getTrueOffsetParent(element);
825
838
 
826
- while (offsetParent && (0,_isTableElement_js__WEBPACK_IMPORTED_MODULE_5__["default"])(offsetParent) && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent).position === 'static') {
839
+ while (offsetParent && (0,_isTableElement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(offsetParent) && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent).position === 'static') {
827
840
  offsetParent = getTrueOffsetParent(offsetParent);
828
841
  }
829
842
 
830
- if (offsetParent && ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_3__["default"])(offsetParent) === 'html' || (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_3__["default"])(offsetParent) === 'body' && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent).position === 'static')) {
843
+ if (offsetParent && ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) === 'html' || (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) === 'body' && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent).position === 'static')) {
831
844
  return window;
832
845
  }
833
846
 
@@ -919,35 +932,27 @@ __webpack_require__.r(__webpack_exports__);
919
932
  /* harmony export */ });
920
933
  /* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");
921
934
  /* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");
922
- /* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js");
935
+ /* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js");
936
+ /* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isLayoutViewport.js */ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js");
937
+
923
938
 
924
939
 
925
940
 
926
- function getViewportRect(element) {
941
+ function getViewportRect(element, strategy) {
927
942
  var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element);
928
943
  var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element);
929
944
  var visualViewport = win.visualViewport;
930
945
  var width = html.clientWidth;
931
946
  var height = html.clientHeight;
932
947
  var x = 0;
933
- var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper
934
- // can be obscured underneath it.
935
- // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even
936
- // if it isn't open, so if this isn't available, the popper will be detected
937
- // to overflow the bottom of the screen too early.
948
+ var y = 0;
938
949
 
939
950
  if (visualViewport) {
940
951
  width = visualViewport.width;
941
- height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)
942
- // In Chrome, it returns a value very close to 0 (+/-) but contains rounding
943
- // errors due to floating point numbers, so we need to check precision.
944
- // Safari returns a number <= 0, usually < -1 when pinch-zoomed
945
- // Feature detection fails in mobile emulation mode in Chrome.
946
- // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <
947
- // 0.001
948
- // Fallback here: "Not Safari" userAgent
949
-
950
- if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
952
+ height = visualViewport.height;
953
+ var layoutViewport = (0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_2__["default"])();
954
+
955
+ if (layoutViewport || !layoutViewport && strategy === 'fixed') {
951
956
  x = visualViewport.offsetLeft;
952
957
  y = visualViewport.offsetTop;
953
958
  }
@@ -956,7 +961,7 @@ function getViewportRect(element) {
956
961
  return {
957
962
  width: width,
958
963
  height: height,
959
- x: x + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element),
964
+ x: x + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element),
960
965
  y: y
961
966
  };
962
967
  }
@@ -1082,6 +1087,25 @@ function isShadowRoot(node) {
1082
1087
 
1083
1088
 
1084
1089
 
1090
+ /***/ }),
1091
+
1092
+ /***/ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js":
1093
+ /*!***********************************************************************!*\
1094
+ !*** ./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js ***!
1095
+ \***********************************************************************/
1096
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1097
+
1098
+ "use strict";
1099
+ __webpack_require__.r(__webpack_exports__);
1100
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1101
+ /* harmony export */ "default": () => (/* binding */ isLayoutViewport)
1102
+ /* harmony export */ });
1103
+ /* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/userAgent.js */ "./node_modules/@popperjs/core/lib/utils/userAgent.js");
1104
+
1105
+ function isLayoutViewport() {
1106
+ return !/^((?!chrome|android).)*safari/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__["default"])());
1107
+ }
1108
+
1085
1109
  /***/ }),
1086
1110
 
1087
1111
  /***/ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js":
@@ -1181,30 +1205,30 @@ function listScrollParents(element, list) {
1181
1205
  "use strict";
1182
1206
  __webpack_require__.r(__webpack_exports__);
1183
1207
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1184
- /* harmony export */ "top": () => (/* binding */ top),
1185
- /* harmony export */ "bottom": () => (/* binding */ bottom),
1186
- /* harmony export */ "right": () => (/* binding */ right),
1187
- /* harmony export */ "left": () => (/* binding */ left),
1208
+ /* harmony export */ "afterMain": () => (/* binding */ afterMain),
1209
+ /* harmony export */ "afterRead": () => (/* binding */ afterRead),
1210
+ /* harmony export */ "afterWrite": () => (/* binding */ afterWrite),
1188
1211
  /* harmony export */ "auto": () => (/* binding */ auto),
1189
1212
  /* harmony export */ "basePlacements": () => (/* binding */ basePlacements),
1190
- /* harmony export */ "start": () => (/* binding */ start),
1191
- /* harmony export */ "end": () => (/* binding */ end),
1213
+ /* harmony export */ "beforeMain": () => (/* binding */ beforeMain),
1214
+ /* harmony export */ "beforeRead": () => (/* binding */ beforeRead),
1215
+ /* harmony export */ "beforeWrite": () => (/* binding */ beforeWrite),
1216
+ /* harmony export */ "bottom": () => (/* binding */ bottom),
1192
1217
  /* harmony export */ "clippingParents": () => (/* binding */ clippingParents),
1193
- /* harmony export */ "viewport": () => (/* binding */ viewport),
1218
+ /* harmony export */ "end": () => (/* binding */ end),
1219
+ /* harmony export */ "left": () => (/* binding */ left),
1220
+ /* harmony export */ "main": () => (/* binding */ main),
1221
+ /* harmony export */ "modifierPhases": () => (/* binding */ modifierPhases),
1222
+ /* harmony export */ "placements": () => (/* binding */ placements),
1194
1223
  /* harmony export */ "popper": () => (/* binding */ popper),
1224
+ /* harmony export */ "read": () => (/* binding */ read),
1195
1225
  /* harmony export */ "reference": () => (/* binding */ reference),
1226
+ /* harmony export */ "right": () => (/* binding */ right),
1227
+ /* harmony export */ "start": () => (/* binding */ start),
1228
+ /* harmony export */ "top": () => (/* binding */ top),
1196
1229
  /* harmony export */ "variationPlacements": () => (/* binding */ variationPlacements),
1197
- /* harmony export */ "placements": () => (/* binding */ placements),
1198
- /* harmony export */ "beforeRead": () => (/* binding */ beforeRead),
1199
- /* harmony export */ "read": () => (/* binding */ read),
1200
- /* harmony export */ "afterRead": () => (/* binding */ afterRead),
1201
- /* harmony export */ "beforeMain": () => (/* binding */ beforeMain),
1202
- /* harmony export */ "main": () => (/* binding */ main),
1203
- /* harmony export */ "afterMain": () => (/* binding */ afterMain),
1204
- /* harmony export */ "beforeWrite": () => (/* binding */ beforeWrite),
1205
- /* harmony export */ "write": () => (/* binding */ write),
1206
- /* harmony export */ "afterWrite": () => (/* binding */ afterWrite),
1207
- /* harmony export */ "modifierPhases": () => (/* binding */ modifierPhases)
1230
+ /* harmony export */ "viewport": () => (/* binding */ viewport),
1231
+ /* harmony export */ "write": () => (/* binding */ write)
1208
1232
  /* harmony export */ });
1209
1233
  var top = 'top';
1210
1234
  var bottom = 'bottom';
@@ -1252,6 +1276,8 @@ __webpack_require__.r(__webpack_exports__);
1252
1276
  /* harmony export */ "afterMain": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterMain),
1253
1277
  /* harmony export */ "afterRead": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterRead),
1254
1278
  /* harmony export */ "afterWrite": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterWrite),
1279
+ /* harmony export */ "applyStyles": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.applyStyles),
1280
+ /* harmony export */ "arrow": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.arrow),
1255
1281
  /* harmony export */ "auto": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.auto),
1256
1282
  /* harmony export */ "basePlacements": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements),
1257
1283
  /* harmony export */ "beforeMain": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeMain),
@@ -1259,12 +1285,24 @@ __webpack_require__.r(__webpack_exports__);
1259
1285
  /* harmony export */ "beforeWrite": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeWrite),
1260
1286
  /* harmony export */ "bottom": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom),
1261
1287
  /* harmony export */ "clippingParents": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.clippingParents),
1288
+ /* harmony export */ "computeStyles": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.computeStyles),
1289
+ /* harmony export */ "createPopper": () => (/* reexport safe */ _popper_js__WEBPACK_IMPORTED_MODULE_4__.createPopper),
1290
+ /* harmony export */ "createPopperBase": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.createPopper),
1291
+ /* harmony export */ "createPopperLite": () => (/* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_5__.createPopper),
1292
+ /* harmony export */ "detectOverflow": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_3__["default"]),
1262
1293
  /* harmony export */ "end": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.end),
1294
+ /* harmony export */ "eventListeners": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.eventListeners),
1295
+ /* harmony export */ "flip": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.flip),
1296
+ /* harmony export */ "hide": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.hide),
1263
1297
  /* harmony export */ "left": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.left),
1264
1298
  /* harmony export */ "main": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.main),
1265
1299
  /* harmony export */ "modifierPhases": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.modifierPhases),
1300
+ /* harmony export */ "offset": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.offset),
1266
1301
  /* harmony export */ "placements": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.placements),
1267
1302
  /* harmony export */ "popper": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper),
1303
+ /* harmony export */ "popperGenerator": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.popperGenerator),
1304
+ /* harmony export */ "popperOffsets": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.popperOffsets),
1305
+ /* harmony export */ "preventOverflow": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.preventOverflow),
1268
1306
  /* harmony export */ "read": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.read),
1269
1307
  /* harmony export */ "reference": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.reference),
1270
1308
  /* harmony export */ "right": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.right),
@@ -1272,21 +1310,7 @@ __webpack_require__.r(__webpack_exports__);
1272
1310
  /* harmony export */ "top": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.top),
1273
1311
  /* harmony export */ "variationPlacements": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements),
1274
1312
  /* harmony export */ "viewport": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.viewport),
1275
- /* harmony export */ "write": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.write),
1276
- /* harmony export */ "applyStyles": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.applyStyles),
1277
- /* harmony export */ "arrow": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.arrow),
1278
- /* harmony export */ "computeStyles": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.computeStyles),
1279
- /* harmony export */ "eventListeners": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.eventListeners),
1280
- /* harmony export */ "flip": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.flip),
1281
- /* harmony export */ "hide": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.hide),
1282
- /* harmony export */ "offset": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.offset),
1283
- /* harmony export */ "popperOffsets": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.popperOffsets),
1284
- /* harmony export */ "preventOverflow": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.preventOverflow),
1285
- /* harmony export */ "popperGenerator": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.popperGenerator),
1286
- /* harmony export */ "detectOverflow": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_3__["default"]),
1287
- /* harmony export */ "createPopperBase": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.createPopper),
1288
- /* harmony export */ "createPopper": () => (/* reexport safe */ _popper_js__WEBPACK_IMPORTED_MODULE_4__.createPopper),
1289
- /* harmony export */ "createPopperLite": () => (/* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_5__.createPopper)
1313
+ /* harmony export */ "write": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.write)
1290
1314
  /* harmony export */ });
1291
1315
  /* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
1292
1316
  /* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/index.js */ "./node_modules/@popperjs/core/lib/modifiers/index.js");
@@ -1539,8 +1563,8 @@ function effect(_ref2) {
1539
1563
  "use strict";
1540
1564
  __webpack_require__.r(__webpack_exports__);
1541
1565
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1542
- /* harmony export */ "mapToStyles": () => (/* binding */ mapToStyles),
1543
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1566
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
1567
+ /* harmony export */ "mapToStyles": () => (/* binding */ mapToStyles)
1544
1568
  /* harmony export */ });
1545
1569
  /* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
1546
1570
  /* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js");
@@ -1632,7 +1656,7 @@ function mapToStyles(_ref2) {
1632
1656
 
1633
1657
  if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.right) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) {
1634
1658
  sideY = _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom;
1635
- var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]
1659
+ var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]
1636
1660
  offsetParent[heightProp];
1637
1661
  y -= offsetY - popperRect.height;
1638
1662
  y *= gpuAcceleration ? 1 : -1;
@@ -1640,7 +1664,7 @@ function mapToStyles(_ref2) {
1640
1664
 
1641
1665
  if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) {
1642
1666
  sideX = _enums_js__WEBPACK_IMPORTED_MODULE_1__.right;
1643
- var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]
1667
+ var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]
1644
1668
  offsetParent[widthProp];
1645
1669
  x -= offsetX - popperRect.width;
1646
1670
  x *= gpuAcceleration ? 1 : -1;
@@ -2092,8 +2116,8 @@ __webpack_require__.r(__webpack_exports__);
2092
2116
  "use strict";
2093
2117
  __webpack_require__.r(__webpack_exports__);
2094
2118
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2095
- /* harmony export */ "distanceAndSkiddingToXY": () => (/* binding */ distanceAndSkiddingToXY),
2096
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
2119
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
2120
+ /* harmony export */ "distanceAndSkiddingToXY": () => (/* binding */ distanceAndSkiddingToXY)
2097
2121
  /* harmony export */ });
2098
2122
  /* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js");
2099
2123
  /* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");
@@ -2371,9 +2395,9 @@ function preventOverflow(_ref) {
2371
2395
  __webpack_require__.r(__webpack_exports__);
2372
2396
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2373
2397
  /* harmony export */ "createPopper": () => (/* binding */ createPopper),
2374
- /* harmony export */ "popperGenerator": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator),
2375
2398
  /* harmony export */ "defaultModifiers": () => (/* binding */ defaultModifiers),
2376
- /* harmony export */ "detectOverflow": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_5__["default"])
2399
+ /* harmony export */ "detectOverflow": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_5__["default"]),
2400
+ /* harmony export */ "popperGenerator": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator)
2377
2401
  /* harmony export */ });
2378
2402
  /* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js");
2379
2403
  /* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");
@@ -2404,18 +2428,18 @@ var createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_4__
2404
2428
  "use strict";
2405
2429
  __webpack_require__.r(__webpack_exports__);
2406
2430
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
2407
- /* harmony export */ "createPopper": () => (/* binding */ createPopper),
2408
- /* harmony export */ "popperGenerator": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator),
2409
- /* harmony export */ "defaultModifiers": () => (/* binding */ defaultModifiers),
2410
- /* harmony export */ "detectOverflow": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_10__["default"]),
2411
- /* harmony export */ "createPopperLite": () => (/* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__.createPopper),
2412
2431
  /* harmony export */ "applyStyles": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.applyStyles),
2413
2432
  /* harmony export */ "arrow": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.arrow),
2414
2433
  /* harmony export */ "computeStyles": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.computeStyles),
2434
+ /* harmony export */ "createPopper": () => (/* binding */ createPopper),
2435
+ /* harmony export */ "createPopperLite": () => (/* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__.createPopper),
2436
+ /* harmony export */ "defaultModifiers": () => (/* binding */ defaultModifiers),
2437
+ /* harmony export */ "detectOverflow": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_10__["default"]),
2415
2438
  /* harmony export */ "eventListeners": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.eventListeners),
2416
2439
  /* harmony export */ "flip": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.flip),
2417
2440
  /* harmony export */ "hide": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.hide),
2418
2441
  /* harmony export */ "offset": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.offset),
2442
+ /* harmony export */ "popperGenerator": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator),
2419
2443
  /* harmony export */ "popperOffsets": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.popperOffsets),
2420
2444
  /* harmony export */ "preventOverflow": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.preventOverflow)
2421
2445
  /* harmony export */ });
@@ -2675,6 +2699,8 @@ function detectOverflow(state, options) {
2675
2699
  var _options = options,
2676
2700
  _options$placement = _options.placement,
2677
2701
  placement = _options$placement === void 0 ? state.placement : _options$placement,
2702
+ _options$strategy = _options.strategy,
2703
+ strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,
2678
2704
  _options$boundary = _options.boundary,
2679
2705
  boundary = _options$boundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.clippingParents : _options$boundary,
2680
2706
  _options$rootBoundary = _options.rootBoundary,
@@ -2689,7 +2715,7 @@ function detectOverflow(state, options) {
2689
2715
  var altContext = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.reference : _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper;
2690
2716
  var popperRect = state.rects.popper;
2691
2717
  var element = state.elements[altBoundary ? altContext : elementContext];
2692
- var clippingClientRect = (0,_dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])((0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(element) ? element : element.contextElement || (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__["default"])(state.elements.popper), boundary, rootBoundary);
2718
+ var clippingClientRect = (0,_dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])((0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(element) ? element : element.contextElement || (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__["default"])(state.elements.popper), boundary, rootBoundary, strategy);
2693
2719
  var referenceClientRect = (0,_dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state.elements.reference);
2694
2720
  var popperOffsets = (0,_computeOffsets_js__WEBPACK_IMPORTED_MODULE_7__["default"])({
2695
2721
  reference: referenceClientRect,
@@ -3077,6 +3103,31 @@ function uniqueBy(arr, fn) {
3077
3103
 
3078
3104
  /***/ }),
3079
3105
 
3106
+ /***/ "./node_modules/@popperjs/core/lib/utils/userAgent.js":
3107
+ /*!************************************************************!*\
3108
+ !*** ./node_modules/@popperjs/core/lib/utils/userAgent.js ***!
3109
+ \************************************************************/
3110
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3111
+
3112
+ "use strict";
3113
+ __webpack_require__.r(__webpack_exports__);
3114
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3115
+ /* harmony export */ "default": () => (/* binding */ getUAString)
3116
+ /* harmony export */ });
3117
+ function getUAString() {
3118
+ var uaData = navigator.userAgentData;
3119
+
3120
+ if (uaData != null && uaData.brands) {
3121
+ return uaData.brands.map(function (item) {
3122
+ return item.brand + "/" + item.version;
3123
+ }).join(' ');
3124
+ }
3125
+
3126
+ return navigator.userAgent;
3127
+ }
3128
+
3129
+ /***/ }),
3130
+
3080
3131
  /***/ "./node_modules/@popperjs/core/lib/utils/validateModifiers.js":
3081
3132
  /*!********************************************************************!*\
3082
3133
  !*** ./node_modules/@popperjs/core/lib/utils/validateModifiers.js ***!
@@ -5895,38 +5946,38 @@ const isFunction = f => {
5895
5946
  "use strict";
5896
5947
  __webpack_require__.r(__webpack_exports__);
5897
5948
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
5898
- /* harmony export */ "isArray": () => (/* reexport safe */ _array__WEBPACK_IMPORTED_MODULE_0__.isArray),
5899
- /* harmony export */ "currencyFormatter": () => (/* reexport safe */ _currency__WEBPACK_IMPORTED_MODULE_1__.currencyFormatter),
5900
- /* harmony export */ "monthLength": () => (/* reexport safe */ _date__WEBPACK_IMPORTED_MODULE_2__.monthLength),
5949
+ /* harmony export */ "Emitter": () => (/* reexport safe */ _emitter__WEBPACK_IMPORTED_MODULE_11__["default"]),
5901
5950
  /* harmony export */ "addClass": () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_3__.addClass),
5951
+ /* harmony export */ "ajax": () => (/* reexport safe */ _ajax__WEBPACK_IMPORTED_MODULE_9__.ajax),
5952
+ /* harmony export */ "capitalizeObj": () => (/* reexport safe */ _object__WEBPACK_IMPORTED_MODULE_6__.capitalizeObj),
5902
5953
  /* harmony export */ "createElement": () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_3__.createElement),
5954
+ /* harmony export */ "currencyFormatter": () => (/* reexport safe */ _currency__WEBPACK_IMPORTED_MODULE_1__.currencyFormatter),
5955
+ /* harmony export */ "dashToCapital": () => (/* reexport safe */ _string__WEBPACK_IMPORTED_MODULE_7__.dashToCapital),
5903
5956
  /* harmony export */ "destroyElement": () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_3__.destroyElement),
5904
5957
  /* harmony export */ "elementFromString": () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_3__.elementFromString),
5905
5958
  /* harmony export */ "findByClassName": () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_3__.findByClassName),
5906
5959
  /* harmony export */ "getClassName": () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_3__.getClassName),
5907
5960
  /* harmony export */ "getParentAttribute": () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_3__.getParentAttribute),
5908
5961
  /* harmony export */ "hasClass": () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_3__.hasClass),
5909
- /* harmony export */ "isInside": () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_3__.isInside),
5910
- /* harmony export */ "removeClass": () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_3__.removeClass),
5911
- /* harmony export */ "setClassName": () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_3__.setClassName),
5912
- /* harmony export */ "traverseToParentWithAttr": () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_3__.traverseToParentWithAttr),
5962
+ /* harmony export */ "is": () => (/* reexport safe */ _is__WEBPACK_IMPORTED_MODULE_8__.is),
5963
+ /* harmony export */ "isArray": () => (/* reexport safe */ _array__WEBPACK_IMPORTED_MODULE_0__.isArray),
5913
5964
  /* harmony export */ "isFunction": () => (/* reexport safe */ _function__WEBPACK_IMPORTED_MODULE_4__.isFunction),
5965
+ /* harmony export */ "isInside": () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_3__.isInside),
5914
5966
  /* harmony export */ "isNaNPolyfill": () => (/* reexport safe */ _math__WEBPACK_IMPORTED_MODULE_5__.isNaNPolyfill),
5915
5967
  /* harmony export */ "isNumeric": () => (/* reexport safe */ _math__WEBPACK_IMPORTED_MODULE_5__.isNumeric),
5916
- /* harmony export */ "capitalizeObj": () => (/* reexport safe */ _object__WEBPACK_IMPORTED_MODULE_6__.capitalizeObj),
5917
5968
  /* harmony export */ "isObject": () => (/* reexport safe */ _object__WEBPACK_IMPORTED_MODULE_6__.isObject),
5969
+ /* harmony export */ "isString": () => (/* reexport safe */ _string__WEBPACK_IMPORTED_MODULE_7__.isString),
5918
5970
  /* harmony export */ "merge": () => (/* reexport safe */ _object__WEBPACK_IMPORTED_MODULE_6__.merge),
5971
+ /* harmony export */ "monthLength": () => (/* reexport safe */ _date__WEBPACK_IMPORTED_MODULE_2__.monthLength),
5919
5972
  /* harmony export */ "pick": () => (/* reexport safe */ _object__WEBPACK_IMPORTED_MODULE_6__.pick),
5973
+ /* harmony export */ "removeClass": () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_3__.removeClass),
5920
5974
  /* harmony export */ "serialize": () => (/* reexport safe */ _object__WEBPACK_IMPORTED_MODULE_6__.serialize),
5921
- /* harmony export */ "traverseObj": () => (/* reexport safe */ _object__WEBPACK_IMPORTED_MODULE_6__.traverseObj),
5922
- /* harmony export */ "dashToCapital": () => (/* reexport safe */ _string__WEBPACK_IMPORTED_MODULE_7__.dashToCapital),
5923
- /* harmony export */ "isString": () => (/* reexport safe */ _string__WEBPACK_IMPORTED_MODULE_7__.isString),
5975
+ /* harmony export */ "setClassName": () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_3__.setClassName),
5924
5976
  /* harmony export */ "toUnderscore": () => (/* reexport safe */ _string__WEBPACK_IMPORTED_MODULE_7__.toUnderscore),
5977
+ /* harmony export */ "traverseObj": () => (/* reexport safe */ _object__WEBPACK_IMPORTED_MODULE_6__.traverseObj),
5978
+ /* harmony export */ "traverseToParentWithAttr": () => (/* reexport safe */ _dom__WEBPACK_IMPORTED_MODULE_3__.traverseToParentWithAttr),
5925
5979
  /* harmony export */ "underscoreToCapital": () => (/* reexport safe */ _string__WEBPACK_IMPORTED_MODULE_7__.underscoreToCapital),
5926
- /* harmony export */ "is": () => (/* reexport safe */ _is__WEBPACK_IMPORTED_MODULE_8__.is),
5927
- /* harmony export */ "ajax": () => (/* reexport safe */ _ajax__WEBPACK_IMPORTED_MODULE_9__.ajax),
5928
- /* harmony export */ "validate": () => (/* reexport safe */ _validate__WEBPACK_IMPORTED_MODULE_10__.validate),
5929
- /* harmony export */ "Emitter": () => (/* reexport safe */ _emitter__WEBPACK_IMPORTED_MODULE_11__["default"])
5980
+ /* harmony export */ "validate": () => (/* reexport safe */ _validate__WEBPACK_IMPORTED_MODULE_10__.validate)
5930
5981
  /* harmony export */ });
5931
5982
  /* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./array */ "./node_modules/widget-utils/src/array/index.js");
5932
5983
  /* harmony import */ var _currency__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./currency */ "./node_modules/widget-utils/src/currency/index.js");
@@ -6451,7 +6502,7 @@ class CalendarTree {
6451
6502
  * start date is ALWAYS < then end date , as we are selecting time range in days.
6452
6503
  *
6453
6504
  * @param {Array} start e.g. [2016, 0, 1]
6454
- * @param {Array} end [2016, 1, 3]
6505
+ * @param {Array} end [2016, 1, 3]
6455
6506
  * @returns {{range: Array, isValid: {Boolean}}}
6456
6507
  */
6457
6508
 
@@ -6937,12 +6988,20 @@ class Calendar extends widget_utils__WEBPACK_IMPORTED_MODULE_1__["default"] {
6937
6988
  addBtnsEvents() {
6938
6989
  this.dom.forward.addEventListener('click', e => {
6939
6990
  this.destroyMonths();
6940
- this.renderMonths(this.yearEnd, this.monthEnd);
6991
+ let monthToRender = this.monthStart + (this.opts.monthsPaginationJump || this.opts.displayMonths);
6992
+ let yearToRender = this.yearStart;
6993
+
6994
+ if (monthToRender >= 12) {
6995
+ monthToRender -= 12;
6996
+ yearToRender += 1;
6997
+ }
6998
+
6999
+ this.renderMonths(yearToRender, monthToRender);
6941
7000
  e.preventDefault();
6942
7001
  });
6943
7002
  this.dom.back.addEventListener('click', e => {
6944
7003
  this.destroyMonths();
6945
- let monthToRender = this.monthStart - this.opts.displayMonths;
7004
+ let monthToRender = this.monthStart - (this.opts.monthsPaginationJump || this.opts.displayMonths);
6946
7005
  let yearToRender = this.yearStart;
6947
7006
 
6948
7007
  if (monthToRender < 0) {
@@ -7212,6 +7271,14 @@ class Calendar extends widget_utils__WEBPACK_IMPORTED_MODULE_1__["default"] {
7212
7271
  (0,widget_utils__WEBPACK_IMPORTED_MODULE_20__.destroyElement)(this.dom.tooltip);
7213
7272
  }
7214
7273
  }
7274
+ /**
7275
+ * Highlights the range of cells between the start and end dates.
7276
+ * @public
7277
+ * @param {Array} start e.g. [2016, 0, 1]
7278
+ * @param {Array} end [2016, 1, 3]
7279
+ * @returns {boolean} - Whether the range is valid or not.
7280
+ */
7281
+
7215
7282
 
7216
7283
  highLightRange(start, end) {
7217
7284
  const {
@@ -7229,18 +7296,18 @@ class Calendar extends widget_utils__WEBPACK_IMPORTED_MODULE_1__["default"] {
7229
7296
 
7230
7297
  if ((0,widget_utils__WEBPACK_IMPORTED_MODULE_21__.isArray)(range)) {
7231
7298
  if (opts.rentalId) {
7299
+ const rangeWithoutLast = range.slice(0, -1);
7300
+
7232
7301
  if (!opts.allowShorterMinStaySelection) {
7233
7302
  // get the biggest minStay value in the range
7234
- minStay = Math.max(...range.map(function (cell) {
7235
- return cell.dataset.minStay || minStay;
7236
- }));
7303
+ const cells = rangeWithoutLast.map(cell => cell.dataset.minStay || minStay);
7304
+ minStay = Math.max(...cells);
7237
7305
  }
7238
7306
 
7239
7307
  if (!opts.allowLongerMaxStaySelection) {
7240
7308
  // get the biggest maxStay value in the range
7241
- maxStay = Math.max(...range.map(function (cell) {
7242
- return cell.dataset.maxStay || maxStay;
7243
- }));
7309
+ const cells = rangeWithoutLast.map(cell => cell.dataset.maxStay || maxStay);
7310
+ maxStay = Math.max(...cells);
7244
7311
  }
7245
7312
  } // check that range is valid and longer than minStay and shorter than maxStay
7246
7313
 
@@ -7289,6 +7356,7 @@ class Calendar extends widget_utils__WEBPACK_IMPORTED_MODULE_1__["default"] {
7289
7356
  if (tooltipPosition && this.el.contains(cell) && !this.hasValidRange) {
7290
7357
  this.dom.tooltip = this.el.appendChild((0,widget_utils__WEBPACK_IMPORTED_MODULE_13__.elementFromString)(_templates__WEBPACK_IMPORTED_MODULE_14__.tooltip));
7291
7358
  this.dom.tooltip.querySelector('span').innerHTML = invalidRangeMessage;
7359
+ this.logger("invalidRangeMessage: ".concat(invalidRangeMessage, " (").concat(start, " - ").concat(end, ")"), 'warn');
7292
7360
  this.tooltipPopper = window.Popper.createPopper(cell, this.dom.tooltip, {
7293
7361
  placement: 'top',
7294
7362
  modifiers: [{
@@ -7347,6 +7415,14 @@ class Calendar extends widget_utils__WEBPACK_IMPORTED_MODULE_1__["default"] {
7347
7415
 
7348
7416
  return this;
7349
7417
  }
7418
+ /**
7419
+ * select range from the tree
7420
+ *
7421
+ * @param {Array} start e.g. [2016, 0, 1]
7422
+ * @param {Array} end [2016, 1, 3]
7423
+ * @returns {{range: Array, isValid: {Boolean}}}
7424
+ */
7425
+
7350
7426
 
7351
7427
  selectRange(start, end) {
7352
7428
  if ((0,_utils__WEBPACK_IMPORTED_MODULE_9__.isLater)(start, end)) {
@@ -7846,6 +7922,7 @@ const currentDate = new Date();
7846
7922
  daysPerWeek: 7,
7847
7923
  // FIXME support calendar rendering
7848
7924
  displayMonths: 2,
7925
+ monthsPaginationJump: 1,
7849
7926
  selectable: false,
7850
7927
  showRates: false,
7851
7928
  isReverseSelectable: false,
@@ -8053,13 +8130,13 @@ locales = Object.assign({
8053
8130
  "use strict";
8054
8131
  __webpack_require__.r(__webpack_exports__);
8055
8132
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
8133
+ /* harmony export */ "back": () => (/* binding */ back),
8134
+ /* harmony export */ "forward": () => (/* binding */ forward),
8056
8135
  /* harmony export */ "main": () => (/* binding */ main),
8057
- /* harmony export */ "tooltip": () => (/* binding */ tooltip),
8058
8136
  /* harmony export */ "month": () => (/* binding */ month),
8059
- /* harmony export */ "weekDayLabel": () => (/* binding */ weekDayLabel),
8137
+ /* harmony export */ "tooltip": () => (/* binding */ tooltip),
8060
8138
  /* harmony export */ "weekDay": () => (/* binding */ weekDay),
8061
- /* harmony export */ "forward": () => (/* binding */ forward),
8062
- /* harmony export */ "back": () => (/* binding */ back),
8139
+ /* harmony export */ "weekDayLabel": () => (/* binding */ weekDayLabel),
8063
8140
  /* harmony export */ "weekDayPlaceholder": () => (/* binding */ weekDayPlaceholder),
8064
8141
  /* harmony export */ "weekRow": () => (/* binding */ weekRow)
8065
8142
  /* harmony export */ });
@@ -8093,13 +8170,13 @@ const weekRow = num => {
8093
8170
  "use strict";
8094
8171
  __webpack_require__.r(__webpack_exports__);
8095
8172
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
8096
- /* harmony export */ "dateToIso": () => (/* binding */ dateToIso),
8097
8173
  /* harmony export */ "dateToArray": () => (/* binding */ dateToArray),
8098
- /* harmony export */ "isLater": () => (/* binding */ isLater),
8174
+ /* harmony export */ "dateToIso": () => (/* binding */ dateToIso),
8099
8175
  /* harmony export */ "isCurrent": () => (/* binding */ isCurrent),
8176
+ /* harmony export */ "isLater": () => (/* binding */ isLater),
8100
8177
  /* harmony export */ "monthDiff": () => (/* binding */ monthDiff),
8101
- /* harmony export */ "validationOfCell": () => (/* binding */ validationOfCell),
8102
- /* harmony export */ "tFormatter": () => (/* binding */ tFormatter)
8178
+ /* harmony export */ "tFormatter": () => (/* binding */ tFormatter),
8179
+ /* harmony export */ "validationOfCell": () => (/* binding */ validationOfCell)
8103
8180
  /* harmony export */ });
8104
8181
  /* harmony import */ var strtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! strtime */ "./node_modules/strtime/dist/strtime.js");
8105
8182
  /* harmony import */ var strtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(strtime__WEBPACK_IMPORTED_MODULE_0__);
@@ -8694,7 +8771,7 @@ module.exports = "data:image/svg+xml;charset=utf8,%3Csvg xmlns=%27http://www.w3.
8694
8771
  /***/ ((module) => {
8695
8772
 
8696
8773
  "use strict";
8697
- module.exports = JSON.parse('{"name":"bookingsync-calendar-widget","version":"2.1.2","description":"BookingSync Calendar Widget","main":"dist/bookingsync-calendar-widget.js","module":"src/index.js","sideEffects":false,"files":["/dist","/src"],"scripts":{"dev":"webpack --config webpack.dev.js","build":"webpack --config webpack.prod.js","start":"webpack serve --open --config webpack.dev.js","test":"karma start karma.config.js --colors","test-ci":"karma start karma.config.js --single-run true","lint:js":"eslint ./*.js src","mock-server":"node nodemon-start.js","preversion":"npm run lint:js && npm run test-ci","version":"npm run build && npm run dev && git add -A dist","postversion":"git push && git push --tags && rm -rf build/temp"},"dependencies":{"@popperjs/core":"^2.11.6","strtime":"^1.1.2","widget-utils":"0.5.0"},"devDependencies":{"@babel/cli":"^7.18.10","@babel/core":"^7.19.0","@babel/polyfill":"^7.12.1","@babel/preset-env":"^7.19.0","assert":"^2.0.0","babel-loader":"^8.2.5","chai":"^4.3.6","css-loader":"^6.7.1","eslint":"^8.23.0","eslint-webpack-plugin":"^3.2.0","json-server":"0.17.0","karma":"^6.4.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^3.1.1","karma-mocha":"^2.0.1","karma-webpack":"5.0.0","mocha":"10.0.0","node-sass":"^7.0.1","nodemon":"^2.0.19","sass-loader":"^13.0.2","sinon":"^14.0.0","style-loader":"^3.3.1","tether":"2.0.0","timezone-mock":"1.3.4","util":"^0.12.4","webpack":"^5.74.0","webpack-cli":"^4.10.0","webpack-dev-server":"4.10.1","webpack-merge":"^5.8.0","yargs":"17.5.1"},"repository":{"type":"git","url":"git+https://github.com/BookingSync/calendar-widget.git"},"author":"BookingSync.com","license":"MIT","bugs":{"url":"https://github.com/BookingSync/calendar-widget/issues"},"homepage":"https://github.com/BookingSync/calendar-widget#readme","engines":{"yarn":"YARN NO LONGER USED - use npm instead."}}');
8774
+ module.exports = JSON.parse('{"name":"bookingsync-calendar-widget","version":"2.1.4","description":"BookingSync Calendar Widget","main":"dist/bookingsync-calendar-widget.js","module":"src/index.js","sideEffects":false,"files":["/dist","/src"],"scripts":{"dev":"webpack --config webpack.dev.js","build":"webpack --config webpack.prod.js","start":"node json-server.js --quiet & webpack serve --open --config webpack.dev.js","test":"node json-server.js --quiet & karma start karma.config.js --colors","test-ci":"node json-server.js --quiet & sleep 2 && curl http://localhost:3000/api/v2/public/maps.json && karma start karma.config.js --single-run true","lint:js":"eslint ./*.js src","mock-server":"node nodemon-start.js","preversion":"npm run lint:js && npm run test-ci","version":"npm run build && npm run dev && git add -A dist","postversion":"git push && git push --tags && rm -rf build/temp"},"dependencies":{"@popperjs/core":"^2.11.6","strtime":"^1.1.2","widget-utils":"0.5.0"},"devDependencies":{"@babel/cli":"^7.18.10","@babel/core":"^7.19.0","@babel/polyfill":"^7.12.1","@babel/preset-env":"^7.19.0","assert":"^2.0.0","babel-loader":"^8.2.5","chai":"^4.3.6","css-loader":"^6.7.1","eslint":"^8.23.0","eslint-webpack-plugin":"^3.2.0","json-server":"0.17.1","karma":"^6.4.0","karma-chai":"^0.1.0","karma-chrome-launcher":"^3.1.1","karma-mocha":"^2.0.1","karma-webpack":"5.0.0","mocha":"10.0.0","node-sass":"^7.0.1","nodemon":"^2.0.19","sass-loader":"^13.0.2","style-loader":"^3.3.1","tether":"2.0.0","timezone-mock":"1.3.4","util":"^0.12.4","webpack":"^5.74.0","webpack-cli":"^4.10.0","webpack-dev-server":"4.10.1","webpack-merge":"^5.8.0","yargs":"17.5.1"},"repository":{"type":"git","url":"git+https://github.com/BookingSync/calendar-widget.git"},"author":"BookingSync.com","license":"MIT","bugs":{"url":"https://github.com/BookingSync/calendar-widget/issues"},"homepage":"https://github.com/BookingSync/calendar-widget#readme","engines":{"yarn":"YARN NO LONGER USED - use npm instead."}}');
8698
8775
 
8699
8776
  /***/ })
8700
8777
 
@@ -8794,6 +8871,11 @@ module.exports = JSON.parse('{"name":"bookingsync-calendar-widget","version":"2.
8794
8871
  /******/ // no jsonp function
8795
8872
  /******/ })();
8796
8873
  /******/
8874
+ /******/ /* webpack/runtime/nonce */
8875
+ /******/ (() => {
8876
+ /******/ __webpack_require__.nc = undefined;
8877
+ /******/ })();
8878
+ /******/
8797
8879
  /************************************************************************/
8798
8880
  var __webpack_exports__ = {};
8799
8881
  // This entry need to be wrapped in an IIFE because it need to be in strict mode.
@@ -8844,4 +8926,4 @@ window.BookingSyncCalendarWidget = Calendar;
8844
8926
 
8845
8927
  /******/ })()
8846
8928
  ;
8847
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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SUFBWixDQUFpQjByQyxHQUFqQjtBQUNELEdBTEQ7QUFPQTdPLEVBQUFBLFFBQVEsQ0FBQzhPLFNBQVQsR0FBcUJGLFdBQXJCO0FBQ0EsU0FBT0EsV0FBUDtBQUNELENBZEQ7O0FBZ0JBNU8sUUFBUSxDQUFDRSxPQUFULEdBQW1CM2lCLHNFQUFuQjs7QUFFQSxJQUFJM1YsUUFBUSxDQUFDaXZCLFVBQVQsS0FBd0IsU0FBNUIsRUFBdUM7QUFDckNtSixFQUFBQSxRQUFRLENBQUMwQixJQUFUO0FBQ0QsQ0FGRCxNQUVPO0FBQ0w5NUIsRUFBQUEsUUFBUSxDQUFDc0osZ0JBQVQsQ0FBMEIsa0JBQTFCLEVBQThDLE1BQU07QUFDbEQ4dUIsSUFBQUEsUUFBUSxDQUFDMEIsSUFBVDtBQUNELEdBRkQ7QUFHRDs7QUFFRDc1QixNQUFNLENBQUNrbkMseUJBQVAsR0FBbUMvTyxRQUFuQztBQUVBLGlFQUFlQSxRQUFmLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2NyZWF0ZVBvcHBlci5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9jb250YWlucy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q2xpcHBpbmdSZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRSZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldEhUTUxFbGVtZW50U2Nyb2xsLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldExheW91dFJlY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZU5hbWUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZVNjcm9sbC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0UGFyZW50Tm9kZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRTY3JvbGxQYXJlbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Vmlld3BvcnRSZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvdy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGwuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93U2Nyb2xsQmFyWC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzU2Nyb2xsUGFyZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzVGFibGVFbGVtZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2xpc3RTY3JvbGxQYXJlbnRzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZW51bXMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcHBseVN0eWxlcy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcnJvdy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9jb21wdXRlU3R5bGVzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2V2ZW50TGlzdGVuZXJzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2ZsaXAuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvaGlkZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9vZmZzZXQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvcG9wcGVyT2Zmc2V0cy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wcmV2ZW50T3ZlcmZsb3cuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9wb3BwZXItbGl0ZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3BvcHBlci5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2NvbXB1dGVBdXRvUGxhY2VtZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvY29tcHV0ZU9mZnNldHMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9kZWJvdW5jZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZXhwYW5kVG9IYXNoTWFwLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZm9ybWF0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0QWx0QXhpcy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRGcmVzaFNpZGVPYmplY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRPcHBvc2l0ZVBsYWNlbWVudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0VmFyaWF0aW9uLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWF0aC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlQnlOYW1lLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWVyZ2VQYWRkaW5nT2JqZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvb3JkZXJNb2RpZmllcnMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9yZWN0VG9DbGllbnRSZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvdW5pcXVlQnkuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy92YWxpZGF0ZU1vZGlmaWVycy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3dpdGhpbi5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9nZXRVcmwuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL2N1cnJlbmN5LXN5bWJvbC1tYXAvY3VycmVuY3ktc3ltYm9sLW1hcC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvY3VycmVuY3ktc3ltYm9sLW1hcC9tYXAuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3N0cnRpbWUvZGlzdC9zdHJ0aW1lLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2FqYXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvYXJyYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvYXJyYXkvaXNBcnJheS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9jdXJyZW5jeS9jdXJyZW5jeUZvcm1hdHRlci5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9jdXJyZW5jeS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kYXRlL2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RhdGUvbW9udGhMZW5ndGguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL2FkZENsYXNzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9jcmVhdGVFbGVtZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9kZXN0cm95RWxlbWVudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vZWxlbWVudEZyb21TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL2ZpbmRCeUNsYXNzTmFtZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vZ2V0Q2xhc3NOYW1lLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9nZXRQYXJlbnRBdHRyaWJ1dGUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL2hhc0NsYXNzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vaXNJbnNpZGUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL3JlbW92ZUNsYXNzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9zZXRDbGFzc05hbWUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL3RyYXZlcnNlVG9QYXJlbnRXaXRoQXR0ci5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9lbWl0dGVyLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2Z1bmN0aW9uL2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2Z1bmN0aW9uL2lzRnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvaXMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvbWF0aC9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9tYXRoL2lzTmFOUG9seWZpbGwuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvbWF0aC9pc051bWVyaWMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvb2JqZWN0L2NhcGl0YWxpemVPYmouanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvb2JqZWN0L2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL29iamVjdC9pc09iamVjdC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9vYmplY3QvbWVyZ2UuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvb2JqZWN0L3BpY2suanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvb2JqZWN0L3NlcmlhbGl6ZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9vYmplY3QvdHJhdmVyc2VPYmouanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvc3RyaW5nL2Rhc2hUb0NhcGl0YWwuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvc3RyaW5nL2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL3N0cmluZy9pc1N0cmluZy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9zdHJpbmcvdG9VbmRlcnNjb3JlLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL3N0cmluZy91bmRlcnNjb3JlVG9DYXBpdGFsLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL3ZhbGlkYXRlLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL3NyYy9jYWxlbmRhci10cmVlLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL3NyYy9jYWxlbmRhci5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9zcmMvY29uZmlnLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL3NyYy9sb2NhbGVzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL3NyYy90ZW1wbGF0ZXMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vc3JjL3V0aWxzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL3NyYy9zdHlsZXMvY2FsZW5kYXIuc2NzcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9zdHlsZXMvcmVzZXQuc2NzcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9zcmMvc3R5bGVzL2NhbGVuZGFyLnNjc3M/NjlkNyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9zdHlsZXMvcmVzZXQuc2Nzcz9iNzQwIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvanNvbnAgY2h1bmsgbG9hZGluZyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9zcmMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldENvbXBvc2l0ZVJlY3QgZnJvbSBcIi4vZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgbGlzdFNjcm9sbFBhcmVudHMgZnJvbSBcIi4vZG9tLXV0aWxzL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgb3JkZXJNb2RpZmllcnMgZnJvbSBcIi4vdXRpbHMvb3JkZXJNb2RpZmllcnMuanNcIjtcbmltcG9ydCBkZWJvdW5jZSBmcm9tIFwiLi91dGlscy9kZWJvdW5jZS5qc1wiO1xuaW1wb3J0IHZhbGlkYXRlTW9kaWZpZXJzIGZyb20gXCIuL3V0aWxzL3ZhbGlkYXRlTW9kaWZpZXJzLmpzXCI7XG5pbXBvcnQgdW5pcXVlQnkgZnJvbSBcIi4vdXRpbHMvdW5pcXVlQnkuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBtZXJnZUJ5TmFtZSBmcm9tIFwiLi91dGlscy9tZXJnZUJ5TmFtZS5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IHsgYXV0byB9IGZyb20gXCIuL2VudW1zLmpzXCI7XG52YXIgSU5WQUxJRF9FTEVNRU5UX0VSUk9SID0gJ1BvcHBlcjogSW52YWxpZCByZWZlcmVuY2Ugb3IgcG9wcGVyIGFyZ3VtZW50IHByb3ZpZGVkLiBUaGV5IG11c3QgYmUgZWl0aGVyIGEgRE9NIGVsZW1lbnQgb3IgdmlydHVhbCBlbGVtZW50Lic7XG52YXIgSU5GSU5JVEVfTE9PUF9FUlJPUiA9ICdQb3BwZXI6IEFuIGluZmluaXRlIGxvb3AgaW4gdGhlIG1vZGlmaWVycyBjeWNsZSBoYXMgYmVlbiBkZXRlY3RlZCEgVGhlIGN5Y2xlIGhhcyBiZWVuIGludGVycnVwdGVkIHRvIHByZXZlbnQgYSBicm93c2VyIGNyYXNoLic7XG52YXIgREVGQVVMVF9PUFRJT05TID0ge1xuICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICBtb2RpZmllcnM6IFtdLFxuICBzdHJhdGVneTogJ2Fic29sdXRlJ1xufTtcblxuZnVuY3Rpb24gYXJlVmFsaWRFbGVtZW50cygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiAhYXJncy5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgcmV0dXJuICEoZWxlbWVudCAmJiB0eXBlb2YgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QgPT09ICdmdW5jdGlvbicpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvcHBlckdlbmVyYXRvcihnZW5lcmF0b3JPcHRpb25zKSB7XG4gIGlmIChnZW5lcmF0b3JPcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBnZW5lcmF0b3JPcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX2dlbmVyYXRvck9wdGlvbnMgPSBnZW5lcmF0b3JPcHRpb25zLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmID0gX2dlbmVyYXRvck9wdGlvbnMuZGVmYXVsdE1vZGlmaWVycyxcbiAgICAgIGRlZmF1bHRNb2RpZmllcnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYgPT09IHZvaWQgMCA/IFtdIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRPcHRpb25zLFxuICAgICAgZGVmYXVsdE9wdGlvbnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyID09PSB2b2lkIDAgPyBERUZBVUxUX09QVElPTlMgOiBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyO1xuICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlUG9wcGVyKHJlZmVyZW5jZSwgcG9wcGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgb3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zO1xuICAgIH1cblxuICAgIHZhciBzdGF0ZSA9IHtcbiAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICBvcmRlcmVkTW9kaWZpZXJzOiBbXSxcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgZGVmYXVsdE9wdGlvbnMpLFxuICAgICAgbW9kaWZpZXJzRGF0YToge30sXG4gICAgICBlbGVtZW50czoge1xuICAgICAgICByZWZlcmVuY2U6IHJlZmVyZW5jZSxcbiAgICAgICAgcG9wcGVyOiBwb3BwZXJcbiAgICAgIH0sXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgIHN0eWxlczoge31cbiAgICB9O1xuICAgIHZhciBlZmZlY3RDbGVhbnVwRm5zID0gW107XG4gICAgdmFyIGlzRGVzdHJveWVkID0gZmFsc2U7XG4gICAgdmFyIGluc3RhbmNlID0ge1xuICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgc2V0T3B0aW9uczogZnVuY3Rpb24gc2V0T3B0aW9ucyhzZXRPcHRpb25zQWN0aW9uKSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gdHlwZW9mIHNldE9wdGlvbnNBY3Rpb24gPT09ICdmdW5jdGlvbicgPyBzZXRPcHRpb25zQWN0aW9uKHN0YXRlLm9wdGlvbnMpIDogc2V0T3B0aW9uc0FjdGlvbjtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBzdGF0ZS5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdE9wdGlvbnMsIHN0YXRlLm9wdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgICBzdGF0ZS5zY3JvbGxQYXJlbnRzID0ge1xuICAgICAgICAgIHJlZmVyZW5jZTogaXNFbGVtZW50KHJlZmVyZW5jZSkgPyBsaXN0U2Nyb2xsUGFyZW50cyhyZWZlcmVuY2UpIDogcmVmZXJlbmNlLmNvbnRleHRFbGVtZW50ID8gbGlzdFNjcm9sbFBhcmVudHMocmVmZXJlbmNlLmNvbnRleHRFbGVtZW50KSA6IFtdLFxuICAgICAgICAgIHBvcHBlcjogbGlzdFNjcm9sbFBhcmVudHMocG9wcGVyKVxuICAgICAgICB9OyAvLyBPcmRlcnMgdGhlIG1vZGlmaWVycyBiYXNlZCBvbiB0aGVpciBkZXBlbmRlbmNpZXMgYW5kIGBwaGFzZWBcbiAgICAgICAgLy8gcHJvcGVydGllc1xuXG4gICAgICAgIHZhciBvcmRlcmVkTW9kaWZpZXJzID0gb3JkZXJNb2RpZmllcnMobWVyZ2VCeU5hbWUoW10uY29uY2F0KGRlZmF1bHRNb2RpZmllcnMsIHN0YXRlLm9wdGlvbnMubW9kaWZpZXJzKSkpOyAvLyBTdHJpcCBvdXQgZGlzYWJsZWQgbW9kaWZpZXJzXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyZWRNb2RpZmllcnMuZmlsdGVyKGZ1bmN0aW9uIChtKSB7XG4gICAgICAgICAgcmV0dXJuIG0uZW5hYmxlZDtcbiAgICAgICAgfSk7IC8vIFZhbGlkYXRlIHRoZSBwcm92aWRlZCBtb2RpZmllcnMgc28gdGhhdCB0aGUgY29uc3VtZXIgd2lsbCBnZXQgd2FybmVkXG4gICAgICAgIC8vIGlmIG9uZSBvZiB0aGUgbW9kaWZpZXJzIGlzIGludmFsaWQgZm9yIGFueSByZWFzb25cblxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgdmFyIG1vZGlmaWVycyA9IHVuaXF1ZUJ5KFtdLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLCBzdGF0ZS5vcHRpb25zLm1vZGlmaWVycyksIGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICAgICAgICB2YXIgbmFtZSA9IF9yZWYubmFtZTtcbiAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHZhbGlkYXRlTW9kaWZpZXJzKG1vZGlmaWVycyk7XG5cbiAgICAgICAgICBpZiAoZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5vcHRpb25zLnBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICAgICAgICAgIHZhciBmbGlwTW9kaWZpZXIgPSBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZpbmQoZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgICAgICAgIHZhciBuYW1lID0gX3JlZjIubmFtZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5hbWUgPT09ICdmbGlwJztcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoIWZsaXBNb2RpZmllcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImF1dG9cIiBwbGFjZW1lbnRzIHJlcXVpcmUgdGhlIFwiZmxpcFwiIG1vZGlmaWVyIGJlJywgJ3ByZXNlbnQgYW5kIGVuYWJsZWQgdG8gd29yay4nXS5qb2luKCcgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBfZ2V0Q29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUocG9wcGVyKSxcbiAgICAgICAgICAgICAgbWFyZ2luVG9wID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luVG9wLFxuICAgICAgICAgICAgICBtYXJnaW5SaWdodCA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpblJpZ2h0LFxuICAgICAgICAgICAgICBtYXJnaW5Cb3R0b20gPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICAgIG1hcmdpbkxlZnQgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5MZWZ0OyAvLyBXZSBubyBsb25nZXIgdGFrZSBpbnRvIGFjY291bnQgYG1hcmdpbnNgIG9uIHRoZSBwb3BwZXIsIGFuZCBpdCBjYW5cbiAgICAgICAgICAvLyBjYXVzZSBidWdzIHdpdGggcG9zaXRpb25pbmcsIHNvIHdlJ2xsIHdhcm4gdGhlIGNvbnN1bWVyXG5cblxuICAgICAgICAgIGlmIChbbWFyZ2luVG9wLCBtYXJnaW5SaWdodCwgbWFyZ2luQm90dG9tLCBtYXJnaW5MZWZ0XS5zb21lKGZ1bmN0aW9uIChtYXJnaW4pIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG1hcmdpbik7XG4gICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihbJ1BvcHBlcjogQ1NTIFwibWFyZ2luXCIgc3R5bGVzIGNhbm5vdCBiZSB1c2VkIHRvIGFwcGx5IHBhZGRpbmcnLCAnYmV0d2VlbiB0aGUgcG9wcGVyIGFuZCBpdHMgcmVmZXJlbmNlIGVsZW1lbnQgb3IgYm91bmRhcnkuJywgJ1RvIHJlcGxpY2F0ZSBtYXJnaW4sIHVzZSB0aGUgYG9mZnNldGAgbW9kaWZpZXIsIGFzIHdlbGwgYXMnLCAndGhlIGBwYWRkaW5nYCBvcHRpb24gaW4gdGhlIGBwcmV2ZW50T3ZlcmZsb3dgIGFuZCBgZmxpcGAnLCAnbW9kaWZpZXJzLiddLmpvaW4oJyAnKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcnVuTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIHJldHVybiBpbnN0YW5jZS51cGRhdGUoKTtcbiAgICAgIH0sXG4gICAgICAvLyBTeW5jIHVwZGF0ZSDigJMgaXQgd2lsbCBhbHdheXMgYmUgZXhlY3V0ZWQsIGV2ZW4gaWYgbm90IG5lY2Vzc2FyeS4gVGhpc1xuICAgICAgLy8gaXMgdXNlZnVsIGZvciBsb3cgZnJlcXVlbmN5IHVwZGF0ZXMgd2hlcmUgc3luYyBiZWhhdmlvciBzaW1wbGlmaWVzIHRoZVxuICAgICAgLy8gbG9naWMuXG4gICAgICAvLyBGb3IgaGlnaCBmcmVxdWVuY3kgdXBkYXRlcyAoZS5nLiBgcmVzaXplYCBhbmQgYHNjcm9sbGAgZXZlbnRzKSwgYWx3YXlzXG4gICAgICAvLyBwcmVmZXIgdGhlIGFzeW5jIFBvcHBlciN1cGRhdGUgbWV0aG9kXG4gICAgICBmb3JjZVVwZGF0ZTogZnVuY3Rpb24gZm9yY2VVcGRhdGUoKSB7XG4gICAgICAgIGlmIChpc0Rlc3Ryb3llZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBfc3RhdGUkZWxlbWVudHMgPSBzdGF0ZS5lbGVtZW50cyxcbiAgICAgICAgICAgIHJlZmVyZW5jZSA9IF9zdGF0ZSRlbGVtZW50cy5yZWZlcmVuY2UsXG4gICAgICAgICAgICBwb3BwZXIgPSBfc3RhdGUkZWxlbWVudHMucG9wcGVyOyAvLyBEb24ndCBwcm9jZWVkIGlmIGByZWZlcmVuY2VgIG9yIGBwb3BwZXJgIGFyZSBub3QgdmFsaWQgZWxlbWVudHNcbiAgICAgICAgLy8gYW55bW9yZVxuXG4gICAgICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKElOVkFMSURfRUxFTUVOVF9FUlJPUik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIFN0b3JlIHRoZSByZWZlcmVuY2UgYW5kIHBvcHBlciByZWN0cyB0byBiZSByZWFkIGJ5IG1vZGlmaWVyc1xuXG5cbiAgICAgICAgc3RhdGUucmVjdHMgPSB7XG4gICAgICAgICAgcmVmZXJlbmNlOiBnZXRDb21wb3NpdGVSZWN0KHJlZmVyZW5jZSwgZ2V0T2Zmc2V0UGFyZW50KHBvcHBlciksIHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3kgPT09ICdmaXhlZCcpLFxuICAgICAgICAgIHBvcHBlcjogZ2V0TGF5b3V0UmVjdChwb3BwZXIpXG4gICAgICAgIH07IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIHJlc2V0IHRoZSBjdXJyZW50IHVwZGF0ZSBjeWNsZS4gVGhlXG4gICAgICAgIC8vIG1vc3QgY29tbW9uIHVzZSBjYXNlIGZvciB0aGlzIGlzIHRoZSBgZmxpcGAgbW9kaWZpZXIgY2hhbmdpbmcgdGhlXG4gICAgICAgIC8vIHBsYWNlbWVudCwgd2hpY2ggdGhlbiBuZWVkcyB0byByZS1ydW4gYWxsIHRoZSBtb2RpZmllcnMsIGJlY2F1c2UgdGhlXG4gICAgICAgIC8vIGxvZ2ljIHdhcyBwcmV2aW91c2x5IHJhbiBmb3IgdGhlIHByZXZpb3VzIHBsYWNlbWVudCBhbmQgaXMgdGhlcmVmb3JlXG4gICAgICAgIC8vIHN0YWxlL2luY29ycmVjdFxuXG4gICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgIHN0YXRlLnBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50OyAvLyBPbiBlYWNoIHVwZGF0ZSBjeWNsZSwgdGhlIGBtb2RpZmllcnNEYXRhYCBwcm9wZXJ0eSBmb3IgZWFjaCBtb2RpZmllclxuICAgICAgICAvLyBpcyBmaWxsZWQgd2l0aCB0aGUgaW5pdGlhbCBkYXRhIHNwZWNpZmllZCBieSB0aGUgbW9kaWZpZXIuIFRoaXMgbWVhbnNcbiAgICAgICAgLy8gaXQgZG9lc24ndCBwZXJzaXN0IGFuZCBpcyBmcmVzaCBvbiBlYWNoIHVwZGF0ZS5cbiAgICAgICAgLy8gVG8gZW5zdXJlIHBlcnNpc3RlbnQgZGF0YSwgdXNlIGAke25hbWV9I3BlcnNpc3RlbnRgXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgICAgICAgIHJldHVybiBzdGF0ZS5tb2RpZmllcnNEYXRhW21vZGlmaWVyLm5hbWVdID0gT2JqZWN0LmFzc2lnbih7fSwgbW9kaWZpZXIuZGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX19kZWJ1Z19sb29wc19fID0gMDtcblxuICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBfX2RlYnVnX2xvb3BzX18gKz0gMTtcblxuICAgICAgICAgICAgaWYgKF9fZGVidWdfbG9vcHNfXyA+IDEwMCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKElORklOSVRFX0xPT1BfRVJST1IpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3RhdGUucmVzZXQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgICAgICBpbmRleCA9IC0xO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIF9zdGF0ZSRvcmRlcmVkTW9kaWZpZSA9IHN0YXRlLm9yZGVyZWRNb2RpZmllcnNbaW5kZXhdLFxuICAgICAgICAgICAgICBmbiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5mbixcbiAgICAgICAgICAgICAgX3N0YXRlJG9yZGVyZWRNb2RpZmllMiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5vcHRpb25zLFxuICAgICAgICAgICAgICBfb3B0aW9ucyA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIgPT09IHZvaWQgMCA/IHt9IDogX3N0YXRlJG9yZGVyZWRNb2RpZmllMixcbiAgICAgICAgICAgICAgbmFtZSA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5uYW1lO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgc3RhdGUgPSBmbih7XG4gICAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgICAgb3B0aW9uczogX29wdGlvbnMsXG4gICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZVxuICAgICAgICAgICAgfSkgfHwgc3RhdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gQXN5bmMgYW5kIG9wdGltaXN0aWNhbGx5IG9wdGltaXplZCB1cGRhdGUg4oCTIGl0IHdpbGwgbm90IGJlIGV4ZWN1dGVkIGlmXG4gICAgICAvLyBub3QgbmVjZXNzYXJ5IChkZWJvdW5jZWQgdG8gcnVuIGF0IG1vc3Qgb25jZS1wZXItdGljaylcbiAgICAgIHVwZGF0ZTogZGVib3VuY2UoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICBpbnN0YW5jZS5mb3JjZVVwZGF0ZSgpO1xuICAgICAgICAgIHJlc29sdmUoc3RhdGUpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBpc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihJTlZBTElEX0VMRU1FTlRfRVJST1IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgaW5zdGFuY2Uuc2V0T3B0aW9ucyhvcHRpb25zKS50aGVuKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgaWYgKCFpc0Rlc3Ryb3llZCAmJiBvcHRpb25zLm9uRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKHN0YXRlKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gTW9kaWZpZXJzIGhhdmUgdGhlIGFiaWxpdHkgdG8gZXhlY3V0ZSBhcmJpdHJhcnkgY29kZSBiZWZvcmUgdGhlIGZpcnN0XG4gICAgLy8gdXBkYXRlIGN5Y2xlIHJ1bnMuIFRoZXkgd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgdXBkYXRlXG4gICAgLy8gY3ljbGUuIFRoaXMgaXMgdXNlZnVsIHdoZW4gYSBtb2RpZmllciBhZGRzIHNvbWUgcGVyc2lzdGVudCBkYXRhIHRoYXRcbiAgICAvLyBvdGhlciBtb2RpZmllcnMgbmVlZCB0byB1c2UsIGJ1dCB0aGUgbW9kaWZpZXIgaXMgcnVuIGFmdGVyIHRoZSBkZXBlbmRlbnRcbiAgICAvLyBvbmUuXG5cbiAgICBmdW5jdGlvbiBydW5Nb2RpZmllckVmZmVjdHMoKSB7XG4gICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICAgIHZhciBuYW1lID0gX3JlZjMubmFtZSxcbiAgICAgICAgICAgIF9yZWYzJG9wdGlvbnMgPSBfcmVmMy5vcHRpb25zLFxuICAgICAgICAgICAgb3B0aW9ucyA9IF9yZWYzJG9wdGlvbnMgPT09IHZvaWQgMCA/IHt9IDogX3JlZjMkb3B0aW9ucyxcbiAgICAgICAgICAgIGVmZmVjdCA9IF9yZWYzLmVmZmVjdDtcblxuICAgICAgICBpZiAodHlwZW9mIGVmZmVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHZhciBjbGVhbnVwRm4gPSBlZmZlY3Qoe1xuICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZSxcbiAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHZhciBub29wRm4gPSBmdW5jdGlvbiBub29wRm4oKSB7fTtcblxuICAgICAgICAgIGVmZmVjdENsZWFudXBGbnMucHVzaChjbGVhbnVwRm4gfHwgbm9vcEZuKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpIHtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMuZm9yRWFjaChmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgcmV0dXJuIGZuKCk7XG4gICAgICB9KTtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMgPSBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH07XG59XG5leHBvcnQgdmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3IoKTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBkZXRlY3RPdmVyZmxvdyB9OyIsImltcG9ydCB7IGlzU2hhZG93Um9vdCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbnRhaW5zKHBhcmVudCwgY2hpbGQpIHtcbiAgdmFyIHJvb3ROb2RlID0gY2hpbGQuZ2V0Um9vdE5vZGUgJiYgY2hpbGQuZ2V0Um9vdE5vZGUoKTsgLy8gRmlyc3QsIGF0dGVtcHQgd2l0aCBmYXN0ZXIgbmF0aXZlIG1ldGhvZFxuXG4gIGlmIChwYXJlbnQuY29udGFpbnMoY2hpbGQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gLy8gdGhlbiBmYWxsYmFjayB0byBjdXN0b20gaW1wbGVtZW50YXRpb24gd2l0aCBTaGFkb3cgRE9NIHN1cHBvcnRcbiAgZWxzZSBpZiAocm9vdE5vZGUgJiYgaXNTaGFkb3dSb290KHJvb3ROb2RlKSkge1xuICAgICAgdmFyIG5leHQgPSBjaGlsZDtcblxuICAgICAgZG8ge1xuICAgICAgICBpZiAobmV4dCAmJiBwYXJlbnQuaXNTYW1lTm9kZShuZXh0KSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXTogbmVlZCBhIGJldHRlciB3YXkgdG8gaGFuZGxlIHRoaXMuLi5cblxuXG4gICAgICAgIG5leHQgPSBuZXh0LnBhcmVudE5vZGUgfHwgbmV4dC5ob3N0O1xuICAgICAgfSB3aGlsZSAobmV4dCk7XG4gICAgfSAvLyBHaXZlIHVwLCB0aGUgcmVzdWx0IGlzIGZhbHNlXG5cblxuICByZXR1cm4gZmFsc2U7XG59IiwiaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUpIHtcbiAgaWYgKGluY2x1ZGVTY2FsZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZVNjYWxlID0gZmFsc2U7XG4gIH1cblxuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSAxO1xuICB2YXIgc2NhbGVZID0gMTtcblxuICBpZiAoaXNIVE1MRWxlbWVudChlbGVtZW50KSAmJiBpbmNsdWRlU2NhbGUpIHtcbiAgICB2YXIgb2Zmc2V0SGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgdmFyIG9mZnNldFdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDsgLy8gRG8gbm90IGF0dGVtcHQgdG8gZGl2aWRlIGJ5IDAsIG90aGVyd2lzZSB3ZSBnZXQgYEluZmluaXR5YCBhcyBzY2FsZVxuICAgIC8vIEZhbGxiYWNrIHRvIDEgaW4gY2FzZSBib3RoIHZhbHVlcyBhcmUgYDBgXG5cbiAgICBpZiAob2Zmc2V0V2lkdGggPiAwKSB7XG4gICAgICBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIG9mZnNldFdpZHRoIHx8IDE7XG4gICAgfVxuXG4gICAgaWYgKG9mZnNldEhlaWdodCA+IDApIHtcbiAgICAgIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIG9mZnNldEhlaWdodCB8fCAxO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggLyBzY2FsZVgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodCAvIHNjYWxlWSxcbiAgICB0b3A6IHJlY3QudG9wIC8gc2NhbGVZLFxuICAgIHJpZ2h0OiByZWN0LnJpZ2h0IC8gc2NhbGVYLFxuICAgIGJvdHRvbTogcmVjdC5ib3R0b20gLyBzY2FsZVksXG4gICAgbGVmdDogcmVjdC5sZWZ0IC8gc2NhbGVYLFxuICAgIHg6IHJlY3QubGVmdCAvIHNjYWxlWCxcbiAgICB5OiByZWN0LnRvcCAvIHNjYWxlWVxuICB9O1xufSIsImltcG9ydCB7IHZpZXdwb3J0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0Vmlld3BvcnRSZWN0IGZyb20gXCIuL2dldFZpZXdwb3J0UmVjdC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50UmVjdCBmcm9tIFwiLi9nZXREb2N1bWVudFJlY3QuanNcIjtcbmltcG9ydCBsaXN0U2Nyb2xsUGFyZW50cyBmcm9tIFwiLi9saXN0U2Nyb2xsUGFyZW50cy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGNvbnRhaW5zIGZyb20gXCIuL2NvbnRhaW5zLmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCByZWN0VG9DbGllbnRSZWN0IGZyb20gXCIuLi91dGlscy9yZWN0VG9DbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgeyBtYXgsIG1pbiB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCk7XG4gIHJlY3QudG9wID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudFRvcDtcbiAgcmVjdC5sZWZ0ID0gcmVjdC5sZWZ0ICsgZWxlbWVudC5jbGllbnRMZWZ0O1xuICByZWN0LmJvdHRvbSA9IHJlY3QudG9wICsgZWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gIHJlY3QucmlnaHQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LndpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aDtcbiAgcmVjdC5oZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC54ID0gcmVjdC5sZWZ0O1xuICByZWN0LnkgPSByZWN0LnRvcDtcbiAgcmV0dXJuIHJlY3Q7XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50KSB7XG4gIHJldHVybiBjbGlwcGluZ1BhcmVudCA9PT0gdmlld3BvcnQgPyByZWN0VG9DbGllbnRSZWN0KGdldFZpZXdwb3J0UmVjdChlbGVtZW50KSkgOiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpID8gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoY2xpcHBpbmdQYXJlbnQpIDogcmVjdFRvQ2xpZW50UmVjdChnZXREb2N1bWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKSk7XG59IC8vIEEgXCJjbGlwcGluZyBwYXJlbnRcIiBpcyBhbiBvdmVyZmxvd2FibGUgY29udGFpbmVyIHdpdGggdGhlIGNoYXJhY3RlcmlzdGljIG9mXG4vLyBjbGlwcGluZyAob3IgaGlkaW5nKSBvdmVyZmxvd2luZyBlbGVtZW50cyB3aXRoIGEgcG9zaXRpb24gZGlmZmVyZW50IGZyb21cbi8vIGBpbml0aWFsYFxuXG5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUGFyZW50cyhlbGVtZW50KSB7XG4gIHZhciBjbGlwcGluZ1BhcmVudHMgPSBsaXN0U2Nyb2xsUGFyZW50cyhnZXRQYXJlbnROb2RlKGVsZW1lbnQpKTtcbiAgdmFyIGNhbkVzY2FwZUNsaXBwaW5nID0gWydhYnNvbHV0ZScsICdmaXhlZCddLmluZGV4T2YoZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbikgPj0gMDtcbiAgdmFyIGNsaXBwZXJFbGVtZW50ID0gY2FuRXNjYXBlQ2xpcHBpbmcgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldE9mZnNldFBhcmVudChlbGVtZW50KSA6IGVsZW1lbnQ7XG5cbiAgaWYgKCFpc0VsZW1lbnQoY2xpcHBlckVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy8xNDE0XG5cblxuICByZXR1cm4gY2xpcHBpbmdQYXJlbnRzLmZpbHRlcihmdW5jdGlvbiAoY2xpcHBpbmdQYXJlbnQpIHtcbiAgICByZXR1cm4gaXNFbGVtZW50KGNsaXBwaW5nUGFyZW50KSAmJiBjb250YWlucyhjbGlwcGluZ1BhcmVudCwgY2xpcHBlckVsZW1lbnQpICYmIGdldE5vZGVOYW1lKGNsaXBwaW5nUGFyZW50KSAhPT0gJ2JvZHknO1xuICB9KTtcbn0gLy8gR2V0cyB0aGUgbWF4aW11bSBhcmVhIHRoYXQgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBkdWUgdG8gYW55IG51bWJlciBvZlxuLy8gY2xpcHBpbmcgcGFyZW50c1xuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChlbGVtZW50LCBib3VuZGFyeSwgcm9vdEJvdW5kYXJ5KSB7XG4gIHZhciBtYWluQ2xpcHBpbmdQYXJlbnRzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ1BhcmVudHMnID8gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IFtdLmNvbmNhdChtYWluQ2xpcHBpbmdQYXJlbnRzLCBbcm9vdEJvdW5kYXJ5XSk7XG4gIHZhciBmaXJzdENsaXBwaW5nUGFyZW50ID0gY2xpcHBpbmdQYXJlbnRzWzBdO1xuICB2YXIgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdQYXJlbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjUmVjdCwgY2xpcHBpbmdQYXJlbnQpIHtcbiAgICB2YXIgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50KTtcbiAgICBhY2NSZWN0LnRvcCA9IG1heChyZWN0LnRvcCwgYWNjUmVjdC50b3ApO1xuICAgIGFjY1JlY3QucmlnaHQgPSBtaW4ocmVjdC5yaWdodCwgYWNjUmVjdC5yaWdodCk7XG4gICAgYWNjUmVjdC5ib3R0b20gPSBtaW4ocmVjdC5ib3R0b20sIGFjY1JlY3QuYm90dG9tKTtcbiAgICBhY2NSZWN0LmxlZnQgPSBtYXgocmVjdC5sZWZ0LCBhY2NSZWN0LmxlZnQpO1xuICAgIHJldHVybiBhY2NSZWN0O1xuICB9LCBnZXRDbGllbnRSZWN0RnJvbU1peGVkVHlwZShlbGVtZW50LCBmaXJzdENsaXBwaW5nUGFyZW50KSk7XG4gIGNsaXBwaW5nUmVjdC53aWR0aCA9IGNsaXBwaW5nUmVjdC5yaWdodCAtIGNsaXBwaW5nUmVjdC5sZWZ0O1xuICBjbGlwcGluZ1JlY3QuaGVpZ2h0ID0gY2xpcHBpbmdSZWN0LmJvdHRvbSAtIGNsaXBwaW5nUmVjdC50b3A7XG4gIGNsaXBwaW5nUmVjdC54ID0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC55ID0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgcmV0dXJuIGNsaXBwaW5nUmVjdDtcbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldE5vZGVTY3JvbGwgZnJvbSBcIi4vZ2V0Tm9kZVNjcm9sbC5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnRTY2FsZWQoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMTtcbiAgdmFyIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDE7XG4gIHJldHVybiBzY2FsZVggIT09IDEgfHwgc2NhbGVZICE9PSAxO1xufSAvLyBSZXR1cm5zIHRoZSBjb21wb3NpdGUgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuXG4vLyBDb21wb3NpdGUgbWVhbnMgaXQgdGFrZXMgaW50byBhY2NvdW50IHRyYW5zZm9ybXMgYXMgd2VsbCBhcyBsYXlvdXQuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcG9zaXRlUmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50LCBpc0ZpeGVkKSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnRJc1NjYWxlZCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc0VsZW1lbnRTY2FsZWQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50SXNTY2FsZWQpO1xuICB2YXIgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIHZhciBvZmZzZXRzID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTA3OFxuICAgIGlzU2Nyb2xsUGFyZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBvZmZzZXRzID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSk7XG4gICAgICBvZmZzZXRzLnggKz0gb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgKz0gb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLngsXG4gICAgeTogcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn0iLCJpbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkge1xuICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dOiBhc3N1bWUgYm9keSBpcyBhbHdheXMgYXZhaWxhYmxlXG4gIHJldHVybiAoKGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQub3duZXJEb2N1bWVudCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICBlbGVtZW50LmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudDtcbn0iLCJpbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmltcG9ydCB7IG1heCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7IC8vIEdldHMgdGhlIGVudGlyZSBzaXplIG9mIHRoZSBzY3JvbGxhYmxlIGRvY3VtZW50IGFyZWEsIGV2ZW4gZXh0ZW5kaW5nIG91dHNpZGVcbi8vIG9mIHRoZSBgPGh0bWw+YCBhbmQgYDxib2R5PmAgcmVjdCBib3VuZHMgaWYgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGVcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICB2YXIgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgdmFyIHdpblNjcm9sbCA9IGdldFdpbmRvd1Njcm9sbChlbGVtZW50KTtcbiAgdmFyIGJvZHkgPSAoX2VsZW1lbnQkb3duZXJEb2N1bWVuID0gZWxlbWVudC5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2VsZW1lbnQkb3duZXJEb2N1bWVuLmJvZHk7XG4gIHZhciB3aWR0aCA9IG1heChodG1sLnNjcm9sbFdpZHRoLCBodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5zY3JvbGxXaWR0aCA6IDAsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCk7XG4gIHZhciBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5ID8gYm9keS5zY3JvbGxIZWlnaHQgOiAwLCBib2R5ID8gYm9keS5jbGllbnRIZWlnaHQgOiAwKTtcbiAgdmFyIHggPSAtd2luU2Nyb2xsLnNjcm9sbExlZnQgKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpO1xuICB2YXIgeSA9IC13aW5TY3JvbGwuc2Nyb2xsVG9wO1xuXG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKGJvZHkgfHwgaHRtbCkuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgIHggKz0gbWF4KGh0bWwuY2xpZW50V2lkdGgsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCkgLSB3aWR0aDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEhUTUxFbGVtZW50U2Nyb2xsKGVsZW1lbnQpIHtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbExlZnQsXG4gICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7IC8vIFJldHVybnMgdGhlIGxheW91dCByZWN0IG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gaXRzIG9mZnNldFBhcmVudC4gTGF5b3V0XG4vLyBtZWFucyBpdCBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHRyYW5zZm9ybXMuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldExheW91dFJlY3QoZWxlbWVudCkge1xuICB2YXIgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50KTsgLy8gVXNlIHRoZSBjbGllbnRSZWN0IHNpemVzIGlmIGl0J3Mgbm90IGJlZW4gdHJhbnNmb3JtZWQuXG4gIC8vIEZpeGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTIyM1xuXG4gIHZhciB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC53aWR0aCAtIHdpZHRoKSA8PSAxKSB7XG4gICAgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoO1xuICB9XG5cbiAgaWYgKE1hdGguYWJzKGNsaWVudFJlY3QuaGVpZ2h0IC0gaGVpZ2h0KSA8PSAxKSB7XG4gICAgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IGVsZW1lbnQub2Zmc2V0TGVmdCxcbiAgICB5OiBlbGVtZW50Lm9mZnNldFRvcCxcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHRcbiAgfTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXROb2RlTmFtZShlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50ID8gKGVsZW1lbnQubm9kZU5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgOiBudWxsO1xufSIsImltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRIVE1MRWxlbWVudFNjcm9sbCBmcm9tIFwiLi9nZXRIVE1MRWxlbWVudFNjcm9sbC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChub2RlKSB7XG4gIGlmIChub2RlID09PSBnZXRXaW5kb3cobm9kZSkgfHwgIWlzSFRNTEVsZW1lbnQobm9kZSkpIHtcbiAgICByZXR1cm4gZ2V0V2luZG93U2Nyb2xsKG5vZGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZXRIVE1MRWxlbWVudFNjcm9sbChub2RlKTtcbiAgfVxufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgaXNUYWJsZUVsZW1lbnQgZnJvbSBcIi4vaXNUYWJsZUVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcblxuZnVuY3Rpb24gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50KSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAvLyBodHRwczovL2dpdGh1Yi5jb20vcG9wcGVyanMvcG9wcGVyLWNvcmUvaXNzdWVzLzgzN1xuICBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudC5vZmZzZXRQYXJlbnQ7XG59IC8vIGAub2Zmc2V0UGFyZW50YCByZXBvcnRzIGBudWxsYCBmb3IgZml4ZWQgZWxlbWVudHMsIHdoaWxlIGFic29sdXRlIGVsZW1lbnRzXG4vLyByZXR1cm4gdGhlIGNvbnRhaW5pbmcgYmxvY2tcblxuXG5mdW5jdGlvbiBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkge1xuICB2YXIgaXNGaXJlZm94ID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2ZpcmVmb3gnKSAhPT0gLTE7XG4gIHZhciBpc0lFID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdUcmlkZW50JykgIT09IC0xO1xuXG4gIGlmIChpc0lFICYmIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICAvLyBJbiBJRSA5LCAxMCBhbmQgMTEgZml4ZWQgZWxlbWVudHMgY29udGFpbmluZyBibG9jayBpcyBhbHdheXMgZXN0YWJsaXNoZWQgYnkgdGhlIHZpZXdwb3J0XG4gICAgdmFyIGVsZW1lbnRDc3MgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuXG4gICAgaWYgKGVsZW1lbnRDc3MucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG5cbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmIFsnaHRtbCcsICdib2R5J10uaW5kZXhPZihnZXROb2RlTmFtZShjdXJyZW50Tm9kZSkpIDwgMCkge1xuICAgIHZhciBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnROb2RlKTsgLy8gVGhpcyBpcyBub24tZXhoYXVzdGl2ZSBidXQgY292ZXJzIHRoZSBtb3N0IGNvbW1vbiBDU1MgcHJvcGVydGllcyB0aGF0XG4gICAgLy8gY3JlYXRlIGEgY29udGFpbmluZyBibG9jay5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuXG4gICAgaWYgKGNzcy50cmFuc2Zvcm0gIT09ICdub25lJyB8fCBjc3MucGVyc3BlY3RpdmUgIT09ICdub25lJyB8fCBjc3MuY29udGFpbiA9PT0gJ3BhaW50JyB8fCBbJ3RyYW5zZm9ybScsICdwZXJzcGVjdGl2ZSddLmluZGV4T2YoY3NzLndpbGxDaGFuZ2UpICE9PSAtMSB8fCBpc0ZpcmVmb3ggJiYgY3NzLndpbGxDaGFuZ2UgPT09ICdmaWx0ZXInIHx8IGlzRmlyZWZveCAmJiBjc3MuZmlsdGVyICYmIGNzcy5maWx0ZXIgIT09ICdub25lJykge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59IC8vIEdldHMgdGhlIGNsb3Nlc3QgYW5jZXN0b3IgcG9zaXRpb25lZCBlbGVtZW50LiBIYW5kbGVzIHNvbWUgZWRnZSBjYXNlcyxcbi8vIHN1Y2ggYXMgdGFibGUgYW5jZXN0b3JzIGFuZCBjcm9zcyBicm93c2VyIGJ1Z3MuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgdmFyIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCk7XG5cbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcbiAgICBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KG9mZnNldFBhcmVudCk7XG4gIH1cblxuICBpZiAob2Zmc2V0UGFyZW50ICYmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnaHRtbCcgfHwgZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2JvZHknICYmIGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpKSB7XG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfVxuXG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbmRvdztcbn0iLCJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRQYXJlbnROb2RlKGVsZW1lbnQpIHtcbiAgaWYgKGdldE5vZGVOYW1lKGVsZW1lbnQpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiAoLy8gdGhpcyBpcyBhIHF1aWNrZXIgKGJ1dCBsZXNzIHR5cGUgc2FmZSkgd2F5IHRvIHNhdmUgcXVpdGUgc29tZSBieXRlcyBmcm9tIHRoZSBidW5kbGVcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dXG4gICAgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgZWxlbWVudC5hc3NpZ25lZFNsb3QgfHwgLy8gc3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGVcbiAgICBlbGVtZW50LnBhcmVudE5vZGUgfHwgKCAvLyBET00gRWxlbWVudCBkZXRlY3RlZFxuICAgIGlzU2hhZG93Um9vdChlbGVtZW50KSA/IGVsZW1lbnQuaG9zdCA6IG51bGwpIHx8IC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWRcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYWxsXTogSFRNTEVsZW1lbnQgaXMgYSBOb2RlXG4gICAgZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIC8vIGZhbGxiYWNrXG5cbiAgKTtcbn0iLCJpbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgaXNTY3JvbGxQYXJlbnQgZnJvbSBcIi4vaXNTY3JvbGxQYXJlbnQuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFNjcm9sbFBhcmVudChub2RlKSB7XG4gIGlmIChbJ2h0bWwnLCAnYm9keScsICcjZG9jdW1lbnQnXS5pbmRleE9mKGdldE5vZGVOYW1lKG5vZGUpKSA+PSAwKSB7XG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogYXNzdW1lIGJvZHkgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuXG4gIGlmIChpc0hUTUxFbGVtZW50KG5vZGUpICYmIGlzU2Nyb2xsUGFyZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gZ2V0U2Nyb2xsUGFyZW50KGdldFBhcmVudE5vZGUobm9kZSkpO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgdmFyIGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIHZhciB2aXN1YWxWaWV3cG9ydCA9IHdpbi52aXN1YWxWaWV3cG9ydDtcbiAgdmFyIHdpZHRoID0gaHRtbC5jbGllbnRXaWR0aDtcbiAgdmFyIGhlaWdodCA9IGh0bWwuY2xpZW50SGVpZ2h0O1xuICB2YXIgeCA9IDA7XG4gIHZhciB5ID0gMDsgLy8gTkI6IFRoaXMgaXNuJ3Qgc3VwcG9ydGVkIG9uIGlPUyA8PSAxMi4gSWYgdGhlIGtleWJvYXJkIGlzIG9wZW4sIHRoZSBwb3BwZXJcbiAgLy8gY2FuIGJlIG9ic2N1cmVkIHVuZGVybmVhdGggaXQuXG4gIC8vIEFsc28sIGBodG1sLmNsaWVudEhlaWdodGAgYWRkcyB0aGUgYm90dG9tIGJhciBoZWlnaHQgaW4gU2FmYXJpIGlPUywgZXZlblxuICAvLyBpZiBpdCBpc24ndCBvcGVuLCBzbyBpZiB0aGlzIGlzbid0IGF2YWlsYWJsZSwgdGhlIHBvcHBlciB3aWxsIGJlIGRldGVjdGVkXG4gIC8vIHRvIG92ZXJmbG93IHRoZSBib3R0b20gb2YgdGhlIHNjcmVlbiB0b28gZWFybHkuXG5cbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7IC8vIFVzZXMgTGF5b3V0IFZpZXdwb3J0IChsaWtlIENocm9tZTsgU2FmYXJpIGRvZXMgbm90IGN1cnJlbnRseSlcbiAgICAvLyBJbiBDaHJvbWUsIGl0IHJldHVybnMgYSB2YWx1ZSB2ZXJ5IGNsb3NlIHRvIDAgKCsvLSkgYnV0IGNvbnRhaW5zIHJvdW5kaW5nXG4gICAgLy8gZXJyb3JzIGR1ZSB0byBmbG9hdGluZyBwb2ludCBudW1iZXJzLCBzbyB3ZSBuZWVkIHRvIGNoZWNrIHByZWNpc2lvbi5cbiAgICAvLyBTYWZhcmkgcmV0dXJucyBhIG51bWJlciA8PSAwLCB1c3VhbGx5IDwgLTEgd2hlbiBwaW5jaC16b29tZWRcbiAgICAvLyBGZWF0dXJlIGRldGVjdGlvbiBmYWlscyBpbiBtb2JpbGUgZW11bGF0aW9uIG1vZGUgaW4gQ2hyb21lLlxuICAgIC8vIE1hdGguYWJzKHdpbi5pbm5lcldpZHRoIC8gdmlzdWFsVmlld3BvcnQuc2NhbGUgLSB2aXN1YWxWaWV3cG9ydC53aWR0aCkgPFxuICAgIC8vIDAuMDAxXG4gICAgLy8gRmFsbGJhY2sgaGVyZTogXCJOb3QgU2FmYXJpXCIgdXNlckFnZW50XG5cbiAgICBpZiAoIS9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSxcbiAgICB5OiB5XG4gIH07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICBpZiAobm9kZS50b1N0cmluZygpICE9PSAnW29iamVjdCBXaW5kb3ddJykge1xuICAgIHZhciBvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50O1xuICAgIHJldHVybiBvd25lckRvY3VtZW50ID8gb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3cgOiB3aW5kb3c7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsKG5vZGUpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhub2RlKTtcbiAgdmFyIHNjcm9sbExlZnQgPSB3aW4ucGFnZVhPZmZzZXQ7XG4gIHZhciBzY3JvbGxUb3AgPSB3aW4ucGFnZVlPZmZzZXQ7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogc2Nyb2xsTGVmdCxcbiAgICBzY3JvbGxUb3A6IHNjcm9sbFRvcFxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCkge1xuICAvLyBJZiA8aHRtbD4gaGFzIGEgQ1NTIHdpZHRoIGdyZWF0ZXIgdGhhbiB0aGUgdmlld3BvcnQsIHRoZW4gdGhpcyB3aWxsIGJlXG4gIC8vIGluY29ycmVjdCBmb3IgUlRMLlxuICAvLyBQb3BwZXIgMSBpcyBicm9rZW4gaW4gdGhpcyBjYXNlIGFuZCBuZXZlciBoYWQgYSBidWcgcmVwb3J0IHNvIGxldCdzIGFzc3VtZVxuICAvLyBpdCdzIG5vdCBhbiBpc3N1ZS4gSSBkb24ndCB0aGluayBhbnlvbmUgZXZlciBzcGVjaWZpZXMgd2lkdGggb24gPGh0bWw+XG4gIC8vIGFueXdheS5cbiAgLy8gQnJvd3NlcnMgd2hlcmUgdGhlIGxlZnQgc2Nyb2xsYmFyIGRvZXNuJ3QgY2F1c2UgYW4gaXNzdWUgcmVwb3J0IGAwYCBmb3JcbiAgLy8gdGhpcyAoZS5nLiBFZGdlIDIwMTksIElFMTEsIFNhZmFyaSlcbiAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBnZXRXaW5kb3dTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5FbGVtZW50O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQobm9kZSkge1xuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5IVE1MRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gaXNTaGFkb3dSb290KG5vZGUpIHtcbiAgLy8gSUUgMTEgaGFzIG5vIFNoYWRvd1Jvb3RcbiAgaWYgKHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLlNoYWRvd1Jvb3Q7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgU2hhZG93Um9vdDtcbn1cblxuZXhwb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc1NoYWRvd1Jvb3QgfTsiLCJpbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1Njcm9sbFBhcmVudChlbGVtZW50KSB7XG4gIC8vIEZpcmVmb3ggd2FudHMgdXMgdG8gY2hlY2sgYC14YCBhbmQgYC15YCB2YXJpYXRpb25zIGFzIHdlbGxcbiAgdmFyIF9nZXRDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSxcbiAgICAgIG92ZXJmbG93ID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3csXG4gICAgICBvdmVyZmxvd1ggPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1gsXG4gICAgICBvdmVyZmxvd1kgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1k7XG5cbiAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbi8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCk7XG59IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5kZXhPZihnZXROb2RlTmFtZShlbGVtZW50KSkgPj0gMDtcbn0iLCJpbXBvcnQgZ2V0U2Nyb2xsUGFyZW50IGZyb20gXCIuL2dldFNjcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuLypcbmdpdmVuIGEgRE9NIGVsZW1lbnQsIHJldHVybiB0aGUgbGlzdCBvZiBhbGwgc2Nyb2xsIHBhcmVudHMsIHVwIHRoZSBsaXN0IG9mIGFuY2Vzb3JzXG51bnRpbCB3ZSBnZXQgdG8gdGhlIHRvcCB3aW5kb3cgb2JqZWN0LiBUaGlzIGxpc3QgaXMgd2hhdCB3ZSBhdHRhY2ggc2Nyb2xsIGxpc3RlbmVyc1xudG8sIGJlY2F1c2UgaWYgYW55IG9mIHRoZXNlIHBhcmVudCBlbGVtZW50cyBzY3JvbGwsIHdlJ2xsIG5lZWQgdG8gcmUtY2FsY3VsYXRlIHRoZVxucmVmZXJlbmNlIGVsZW1lbnQncyBwb3NpdGlvbi5cbiovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpc3RTY3JvbGxQYXJlbnRzKGVsZW1lbnQsIGxpc3QpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG5cbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChlbGVtZW50KTtcbiAgdmFyIGlzQm9keSA9IHNjcm9sbFBhcmVudCA9PT0gKChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keSk7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsUGFyZW50KTtcbiAgdmFyIHRhcmdldCA9IGlzQm9keSA/IFt3aW5dLmNvbmNhdCh3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzU2Nyb2xsUGFyZW50KHNjcm9sbFBhcmVudCkgPyBzY3JvbGxQYXJlbnQgOiBbXSkgOiBzY3JvbGxQYXJlbnQ7XG4gIHZhciB1cGRhdGVkTGlzdCA9IGxpc3QuY29uY2F0KHRhcmdldCk7XG4gIHJldHVybiBpc0JvZHkgPyB1cGRhdGVkTGlzdCA6IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBpc0JvZHkgdGVsbHMgdXMgdGFyZ2V0IHdpbGwgYmUgYW4gSFRNTEVsZW1lbnQgaGVyZVxuICB1cGRhdGVkTGlzdC5jb25jYXQobGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZSh0YXJnZXQpKSk7XG59IiwiZXhwb3J0IHZhciB0b3AgPSAndG9wJztcbmV4cG9ydCB2YXIgYm90dG9tID0gJ2JvdHRvbSc7XG5leHBvcnQgdmFyIHJpZ2h0ID0gJ3JpZ2h0JztcbmV4cG9ydCB2YXIgbGVmdCA9ICdsZWZ0JztcbmV4cG9ydCB2YXIgYXV0byA9ICdhdXRvJztcbmV4cG9ydCB2YXIgYmFzZVBsYWNlbWVudHMgPSBbdG9wLCBib3R0b20sIHJpZ2h0LCBsZWZ0XTtcbmV4cG9ydCB2YXIgc3RhcnQgPSAnc3RhcnQnO1xuZXhwb3J0IHZhciBlbmQgPSAnZW5kJztcbmV4cG9ydCB2YXIgY2xpcHBpbmdQYXJlbnRzID0gJ2NsaXBwaW5nUGFyZW50cyc7XG5leHBvcnQgdmFyIHZpZXdwb3J0ID0gJ3ZpZXdwb3J0JztcbmV4cG9ydCB2YXIgcG9wcGVyID0gJ3BvcHBlcic7XG5leHBvcnQgdmFyIHJlZmVyZW5jZSA9ICdyZWZlcmVuY2UnO1xuZXhwb3J0IHZhciB2YXJpYXRpb25QbGFjZW1lbnRzID0gLyojX19QVVJFX18qL2Jhc2VQbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGFjYy5jb25jYXQoW3BsYWNlbWVudCArIFwiLVwiICsgc3RhcnQsIHBsYWNlbWVudCArIFwiLVwiICsgZW5kXSk7XG59LCBbXSk7XG5leHBvcnQgdmFyIHBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovW10uY29uY2F0KGJhc2VQbGFjZW1lbnRzLCBbYXV0b10pLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGFjYy5jb25jYXQoW3BsYWNlbWVudCwgcGxhY2VtZW50ICsgXCItXCIgKyBzdGFydCwgcGxhY2VtZW50ICsgXCItXCIgKyBlbmRdKTtcbn0sIFtdKTsgLy8gbW9kaWZpZXJzIHRoYXQgbmVlZCB0byByZWFkIHRoZSBET01cblxuZXhwb3J0IHZhciBiZWZvcmVSZWFkID0gJ2JlZm9yZVJlYWQnO1xuZXhwb3J0IHZhciByZWFkID0gJ3JlYWQnO1xuZXhwb3J0IHZhciBhZnRlclJlYWQgPSAnYWZ0ZXJSZWFkJzsgLy8gcHVyZS1sb2dpYyBtb2RpZmllcnNcblxuZXhwb3J0IHZhciBiZWZvcmVNYWluID0gJ2JlZm9yZU1haW4nO1xuZXhwb3J0IHZhciBtYWluID0gJ21haW4nO1xuZXhwb3J0IHZhciBhZnRlck1haW4gPSAnYWZ0ZXJNYWluJzsgLy8gbW9kaWZpZXIgd2l0aCB0aGUgcHVycG9zZSB0byB3cml0ZSB0byB0aGUgRE9NIChvciB3cml0ZSBpbnRvIGEgZnJhbWV3b3JrIHN0YXRlKVxuXG5leHBvcnQgdmFyIGJlZm9yZVdyaXRlID0gJ2JlZm9yZVdyaXRlJztcbmV4cG9ydCB2YXIgd3JpdGUgPSAnd3JpdGUnO1xuZXhwb3J0IHZhciBhZnRlcldyaXRlID0gJ2FmdGVyV3JpdGUnO1xuZXhwb3J0IHZhciBtb2RpZmllclBoYXNlcyA9IFtiZWZvcmVSZWFkLCByZWFkLCBhZnRlclJlYWQsIGJlZm9yZU1haW4sIG1haW4sIGFmdGVyTWFpbiwgYmVmb3JlV3JpdGUsIHdyaXRlLCBhZnRlcldyaXRlXTsiLCJleHBvcnQgKiBmcm9tIFwiLi9lbnVtcy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kaWZpZXJzL2luZGV4LmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgcG9wcGVyR2VuZXJhdG9yLCBkZXRlY3RPdmVyZmxvdywgY3JlYXRlUG9wcGVyIGFzIGNyZWF0ZVBvcHBlckJhc2UgfSBmcm9tIFwiLi9jcmVhdGVQb3BwZXIuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIgfSBmcm9tIFwiLi9wb3BwZXIuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIgYXMgY3JlYXRlUG9wcGVyTGl0ZSB9IGZyb20gXCIuL3BvcHBlci1saXRlLmpzXCI7IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjsgLy8gVGhpcyBtb2RpZmllciB0YWtlcyB0aGUgc3R5bGVzIHByZXBhcmVkIGJ5IHRoZSBgY29tcHV0ZVN0eWxlc2AgbW9kaWZpZXJcbi8vIGFuZCBhcHBsaWVzIHRoZW0gdG8gdGhlIEhUTUxFbGVtZW50cyBzdWNoIGFzIHBvcHBlciBhbmQgYXJyb3dcblxuZnVuY3Rpb24gYXBwbHlTdHlsZXMoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlO1xuICBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciBzdHlsZSA9IHN0YXRlLnN0eWxlc1tuYW1lXSB8fCB7fTtcbiAgICB2YXIgYXR0cmlidXRlcyA9IHN0YXRlLmF0dHJpYnV0ZXNbbmFtZV0gfHwge307XG4gICAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1tuYW1lXTsgLy8gYXJyb3cgaXMgb3B0aW9uYWwgKyB2aXJ0dWFsIGVsZW1lbnRzXG5cbiAgICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgIWdldE5vZGVOYW1lKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBGbG93IGRvZXNuJ3Qgc3VwcG9ydCB0byBleHRlbmQgdGhpcyBwcm9wZXJ0eSwgYnV0IGl0J3MgdGhlIG1vc3RcbiAgICAvLyBlZmZlY3RpdmUgd2F5IHRvIGFwcGx5IHN0eWxlcyB0byBhbiBIVE1MRWxlbWVudFxuICAgIC8vICRGbG93Rml4TWVbY2Fubm90LXdyaXRlXVxuXG5cbiAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQuc3R5bGUsIHN0eWxlKTtcbiAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhdHRyaWJ1dGVzW25hbWVdO1xuXG4gICAgICBpZiAodmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUgPT09IHRydWUgPyAnJyA6IHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZTtcbiAgdmFyIGluaXRpYWxTdHlsZXMgPSB7XG4gICAgcG9wcGVyOiB7XG4gICAgICBwb3NpdGlvbjogc3RhdGUub3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHRvcDogJzAnLFxuICAgICAgbWFyZ2luOiAnMCdcbiAgICB9LFxuICAgIGFycm93OiB7XG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJ1xuICAgIH0sXG4gICAgcmVmZXJlbmNlOiB7fVxuICB9O1xuICBPYmplY3QuYXNzaWduKHN0YXRlLmVsZW1lbnRzLnBvcHBlci5zdHlsZSwgaW5pdGlhbFN0eWxlcy5wb3BwZXIpO1xuICBzdGF0ZS5zdHlsZXMgPSBpbml0aWFsU3R5bGVzO1xuXG4gIGlmIChzdGF0ZS5lbGVtZW50cy5hcnJvdykge1xuICAgIE9iamVjdC5hc3NpZ24oc3RhdGUuZWxlbWVudHMuYXJyb3cuc3R5bGUsIGluaXRpYWxTdHlsZXMuYXJyb3cpO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1tuYW1lXTtcbiAgICAgIHZhciBhdHRyaWJ1dGVzID0gc3RhdGUuYXR0cmlidXRlc1tuYW1lXSB8fCB7fTtcbiAgICAgIHZhciBzdHlsZVByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhzdGF0ZS5zdHlsZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBzdGF0ZS5zdHlsZXNbbmFtZV0gOiBpbml0aWFsU3R5bGVzW25hbWVdKTsgLy8gU2V0IGFsbCB2YWx1ZXMgdG8gYW4gZW1wdHkgc3RyaW5nIHRvIHVuc2V0IHRoZW1cblxuICAgICAgdmFyIHN0eWxlID0gc3R5bGVQcm9wZXJ0aWVzLnJlZHVjZShmdW5jdGlvbiAoc3R5bGUsIHByb3BlcnR5KSB7XG4gICAgICAgIHN0eWxlW3Byb3BlcnR5XSA9ICcnO1xuICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICB9LCB7fSk7IC8vIGFycm93IGlzIG9wdGlvbmFsICsgdmlydHVhbCBlbGVtZW50c1xuXG4gICAgICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgIWdldE5vZGVOYW1lKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgT2JqZWN0LmFzc2lnbihlbGVtZW50LnN0eWxlLCBzdHlsZSk7XG4gICAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyaWJ1dGUpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnYXBwbHlTdHlsZXMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3dyaXRlJyxcbiAgZm46IGFwcGx5U3R5bGVzLFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgcmVxdWlyZXM6IFsnY29tcHV0ZVN0eWxlcyddXG59OyIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldExheW91dFJlY3QuanNcIjtcbmltcG9ydCBjb250YWlucyBmcm9tIFwiLi4vZG9tLXV0aWxzL2NvbnRhaW5zLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCB7IHdpdGhpbiB9IGZyb20gXCIuLi91dGlscy93aXRoaW4uanNcIjtcbmltcG9ydCBtZXJnZVBhZGRpbmdPYmplY3QgZnJvbSBcIi4uL3V0aWxzL21lcmdlUGFkZGluZ09iamVjdC5qc1wiO1xuaW1wb3J0IGV4cGFuZFRvSGFzaE1hcCBmcm9tIFwiLi4vdXRpbHMvZXhwYW5kVG9IYXNoTWFwLmpzXCI7XG5pbXBvcnQgeyBsZWZ0LCByaWdodCwgYmFzZVBsYWNlbWVudHMsIHRvcCwgYm90dG9tIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4uL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHRvUGFkZGluZ09iamVjdCA9IGZ1bmN0aW9uIHRvUGFkZGluZ09iamVjdChwYWRkaW5nLCBzdGF0ZSkge1xuICBwYWRkaW5nID0gdHlwZW9mIHBhZGRpbmcgPT09ICdmdW5jdGlvbicgPyBwYWRkaW5nKE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnJlY3RzLCB7XG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSkpIDogcGFkZGluZztcbiAgcmV0dXJuIG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG59O1xuXG5mdW5jdGlvbiBhcnJvdyhfcmVmKSB7XG4gIHZhciBfc3RhdGUkbW9kaWZpZXJzRGF0YSQ7XG5cbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWUsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zO1xuICB2YXIgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMuYXJyb3c7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgdmFyIGF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBpc1ZlcnRpY2FsID0gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDA7XG4gIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gIGlmICghYXJyb3dFbGVtZW50IHx8ICFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHBhZGRpbmdPYmplY3QgPSB0b1BhZGRpbmdPYmplY3Qob3B0aW9ucy5wYWRkaW5nLCBzdGF0ZSk7XG4gIHZhciBhcnJvd1JlY3QgPSBnZXRMYXlvdXRSZWN0KGFycm93RWxlbWVudCk7XG4gIHZhciBtaW5Qcm9wID0gYXhpcyA9PT0gJ3knID8gdG9wIDogbGVmdDtcbiAgdmFyIG1heFByb3AgPSBheGlzID09PSAneScgPyBib3R0b20gOiByaWdodDtcbiAgdmFyIGVuZERpZmYgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbbGVuXSArIHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtheGlzXSAtIHBvcHBlck9mZnNldHNbYXhpc10gLSBzdGF0ZS5yZWN0cy5wb3BwZXJbbGVuXTtcbiAgdmFyIHN0YXJ0RGlmZiA9IHBvcHBlck9mZnNldHNbYXhpc10gLSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gIHZhciBhcnJvd09mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChhcnJvd0VsZW1lbnQpO1xuICB2YXIgY2xpZW50U2l6ZSA9IGFycm93T2Zmc2V0UGFyZW50ID8gYXhpcyA9PT0gJ3knID8gYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50SGVpZ2h0IHx8IDAgOiBhcnJvd09mZnNldFBhcmVudC5jbGllbnRXaWR0aCB8fCAwIDogMDtcbiAgdmFyIGNlbnRlclRvUmVmZXJlbmNlID0gZW5kRGlmZiAvIDIgLSBzdGFydERpZmYgLyAyOyAvLyBNYWtlIHN1cmUgdGhlIGFycm93IGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIHBvcHBlciBpZiB0aGUgY2VudGVyIHBvaW50IGlzXG4gIC8vIG91dHNpZGUgb2YgdGhlIHBvcHBlciBib3VuZHNcblxuICB2YXIgbWluID0gcGFkZGluZ09iamVjdFttaW5Qcm9wXTtcbiAgdmFyIG1heCA9IGNsaWVudFNpemUgLSBhcnJvd1JlY3RbbGVuXSAtIHBhZGRpbmdPYmplY3RbbWF4UHJvcF07XG4gIHZhciBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93UmVjdFtsZW5dIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICB2YXIgb2Zmc2V0ID0gd2l0aGluKG1pbiwgY2VudGVyLCBtYXgpOyAvLyBQcmV2ZW50cyBicmVha2luZyBzeW50YXggaGlnaGxpZ2h0aW5nLi4uXG5cbiAgdmFyIGF4aXNQcm9wID0gYXhpcztcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IChfc3RhdGUkbW9kaWZpZXJzRGF0YSQgPSB7fSwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkW2F4aXNQcm9wXSA9IG9mZnNldCwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkLmNlbnRlck9mZnNldCA9IG9mZnNldCAtIGNlbnRlciwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkKTtcbn1cblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYyKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYyLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYyLm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRlbGVtZW50ID0gb3B0aW9ucy5lbGVtZW50LFxuICAgICAgYXJyb3dFbGVtZW50ID0gX29wdGlvbnMkZWxlbWVudCA9PT0gdm9pZCAwID8gJ1tkYXRhLXBvcHBlci1hcnJvd10nIDogX29wdGlvbnMkZWxlbWVudDtcblxuICBpZiAoYXJyb3dFbGVtZW50ID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gQ1NTIHNlbGVjdG9yXG5cblxuICBpZiAodHlwZW9mIGFycm93RWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5wb3BwZXIucXVlcnlTZWxlY3RvcihhcnJvd0VsZW1lbnQpO1xuXG4gICAgaWYgKCFhcnJvd0VsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgaWYgKCFpc0hUTUxFbGVtZW50KGFycm93RWxlbWVudCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFwiYXJyb3dcIiBlbGVtZW50IG11c3QgYmUgYW4gSFRNTEVsZW1lbnQgKG5vdCBhbiBTVkdFbGVtZW50KS4nLCAnVG8gdXNlIGFuIFNWRyBhcnJvdywgd3JhcCBpdCBpbiBhbiBIVE1MRWxlbWVudCB0aGF0IHdpbGwgYmUgdXNlZCBhcycsICd0aGUgYXJyb3cuJ10uam9pbignICcpKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWNvbnRhaW5zKHN0YXRlLmVsZW1lbnRzLnBvcHBlciwgYXJyb3dFbGVtZW50KSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFwiYXJyb3dcIiBtb2RpZmllclxcJ3MgYGVsZW1lbnRgIG11c3QgYmUgYSBjaGlsZCBvZiB0aGUgcG9wcGVyJywgJ2VsZW1lbnQuJ10uam9pbignICcpKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0ZS5lbGVtZW50cy5hcnJvdyA9IGFycm93RWxlbWVudDtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2Fycm93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IGFycm93LFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ3ByZXZlbnRPdmVyZmxvdyddXG59OyIsImltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgZW5kIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgdW5zZXRTaWRlcyA9IHtcbiAgdG9wOiAnYXV0bycsXG4gIHJpZ2h0OiAnYXV0bycsXG4gIGJvdHRvbTogJ2F1dG8nLFxuICBsZWZ0OiAnYXV0bydcbn07IC8vIFJvdW5kIHRoZSBvZmZzZXRzIHRvIHRoZSBuZWFyZXN0IHN1aXRhYmxlIHN1YnBpeGVsIGJhc2VkIG9uIHRoZSBEUFIuXG4vLyBab29taW5nIGNhbiBjaGFuZ2UgdGhlIERQUiwgYnV0IGl0IHNlZW1zIHRvIHJlcG9ydCBhIHZhbHVlIHRoYXQgd2lsbFxuLy8gY2xlYW5seSBkaXZpZGUgdGhlIHZhbHVlcyBpbnRvIHRoZSBhcHByb3ByaWF0ZSBzdWJwaXhlbHMuXG5cbmZ1bmN0aW9uIHJvdW5kT2Zmc2V0c0J5RFBSKF9yZWYpIHtcbiAgdmFyIHggPSBfcmVmLngsXG4gICAgICB5ID0gX3JlZi55O1xuICB2YXIgd2luID0gd2luZG93O1xuICB2YXIgZHByID0gd2luLmRldmljZVBpeGVsUmF0aW8gfHwgMTtcbiAgcmV0dXJuIHtcbiAgICB4OiByb3VuZCh4ICogZHByKSAvIGRwciB8fCAwLFxuICAgIHk6IHJvdW5kKHkgKiBkcHIpIC8gZHByIHx8IDBcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcFRvU3R5bGVzKF9yZWYyKSB7XG4gIHZhciBfT2JqZWN0JGFzc2lnbjI7XG5cbiAgdmFyIHBvcHBlciA9IF9yZWYyLnBvcHBlcixcbiAgICAgIHBvcHBlclJlY3QgPSBfcmVmMi5wb3BwZXJSZWN0LFxuICAgICAgcGxhY2VtZW50ID0gX3JlZjIucGxhY2VtZW50LFxuICAgICAgdmFyaWF0aW9uID0gX3JlZjIudmFyaWF0aW9uLFxuICAgICAgb2Zmc2V0cyA9IF9yZWYyLm9mZnNldHMsXG4gICAgICBwb3NpdGlvbiA9IF9yZWYyLnBvc2l0aW9uLFxuICAgICAgZ3B1QWNjZWxlcmF0aW9uID0gX3JlZjIuZ3B1QWNjZWxlcmF0aW9uLFxuICAgICAgYWRhcHRpdmUgPSBfcmVmMi5hZGFwdGl2ZSxcbiAgICAgIHJvdW5kT2Zmc2V0cyA9IF9yZWYyLnJvdW5kT2Zmc2V0cyxcbiAgICAgIGlzRml4ZWQgPSBfcmVmMi5pc0ZpeGVkO1xuICB2YXIgX29mZnNldHMkeCA9IG9mZnNldHMueCxcbiAgICAgIHggPSBfb2Zmc2V0cyR4ID09PSB2b2lkIDAgPyAwIDogX29mZnNldHMkeCxcbiAgICAgIF9vZmZzZXRzJHkgPSBvZmZzZXRzLnksXG4gICAgICB5ID0gX29mZnNldHMkeSA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHk7XG5cbiAgdmFyIF9yZWYzID0gdHlwZW9mIHJvdW5kT2Zmc2V0cyA9PT0gJ2Z1bmN0aW9uJyA/IHJvdW5kT2Zmc2V0cyh7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0pIDoge1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xuXG4gIHggPSBfcmVmMy54O1xuICB5ID0gX3JlZjMueTtcbiAgdmFyIGhhc1ggPSBvZmZzZXRzLmhhc093blByb3BlcnR5KCd4Jyk7XG4gIHZhciBoYXNZID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneScpO1xuICB2YXIgc2lkZVggPSBsZWZ0O1xuICB2YXIgc2lkZVkgPSB0b3A7XG4gIHZhciB3aW4gPSB3aW5kb3c7XG5cbiAgaWYgKGFkYXB0aXZlKSB7XG4gICAgdmFyIG9mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChwb3BwZXIpO1xuICAgIHZhciBoZWlnaHRQcm9wID0gJ2NsaWVudEhlaWdodCc7XG4gICAgdmFyIHdpZHRoUHJvcCA9ICdjbGllbnRXaWR0aCc7XG5cbiAgICBpZiAob2Zmc2V0UGFyZW50ID09PSBnZXRXaW5kb3cocG9wcGVyKSkge1xuICAgICAgb2Zmc2V0UGFyZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KHBvcHBlcik7XG5cbiAgICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gIT09ICdzdGF0aWMnICYmIHBvc2l0aW9uID09PSAnYWJzb2x1dGUnKSB7XG4gICAgICAgIGhlaWdodFByb3AgPSAnc2Nyb2xsSGVpZ2h0JztcbiAgICAgICAgd2lkdGhQcm9wID0gJ3Njcm9sbFdpZHRoJztcbiAgICAgIH1cbiAgICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhc3RdOiBmb3JjZSB0eXBlIHJlZmluZW1lbnQsIHdlIGNvbXBhcmUgb2Zmc2V0UGFyZW50IHdpdGggd2luZG93IGFib3ZlLCBidXQgRmxvdyBkb2Vzbid0IGRldGVjdCBpdFxuXG5cbiAgICBvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQ7XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSB0b3AgfHwgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCBwbGFjZW1lbnQgPT09IHJpZ2h0KSAmJiB2YXJpYXRpb24gPT09IGVuZCkge1xuICAgICAgc2lkZVkgPSBib3R0b207XG4gICAgICB2YXIgb2Zmc2V0WSA9IGlzRml4ZWQgJiYgd2luLnZpc3VhbFZpZXdwb3J0ID8gd2luLnZpc3VhbFZpZXdwb3J0LmhlaWdodCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W2hlaWdodFByb3BdO1xuICAgICAgeSAtPSBvZmZzZXRZIC0gcG9wcGVyUmVjdC5oZWlnaHQ7XG4gICAgICB5ICo9IGdwdUFjY2VsZXJhdGlvbiA/IDEgOiAtMTtcbiAgICB9XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSBsZWZ0IHx8IChwbGFjZW1lbnQgPT09IHRvcCB8fCBwbGFjZW1lbnQgPT09IGJvdHRvbSkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVYID0gcmlnaHQ7XG4gICAgICB2YXIgb2Zmc2V0WCA9IGlzRml4ZWQgJiYgd2luLnZpc3VhbFZpZXdwb3J0ID8gd2luLnZpc3VhbFZpZXdwb3J0LndpZHRoIDogLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgICBvZmZzZXRQYXJlbnRbd2lkdGhQcm9wXTtcbiAgICAgIHggLT0gb2Zmc2V0WCAtIHBvcHBlclJlY3Qud2lkdGg7XG4gICAgICB4ICo9IGdwdUFjY2VsZXJhdGlvbiA/IDEgOiAtMTtcbiAgICB9XG4gIH1cblxuICB2YXIgY29tbW9uU3R5bGVzID0gT2JqZWN0LmFzc2lnbih7XG4gICAgcG9zaXRpb246IHBvc2l0aW9uXG4gIH0sIGFkYXB0aXZlICYmIHVuc2V0U2lkZXMpO1xuXG4gIHZhciBfcmVmNCA9IHJvdW5kT2Zmc2V0cyA9PT0gdHJ1ZSA/IHJvdW5kT2Zmc2V0c0J5RFBSKHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfSkgOiB7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG5cbiAgeCA9IF9yZWY0Lng7XG4gIHkgPSBfcmVmNC55O1xuXG4gIGlmIChncHVBY2NlbGVyYXRpb24pIHtcbiAgICB2YXIgX09iamVjdCRhc3NpZ247XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCAoX09iamVjdCRhc3NpZ24gPSB7fSwgX09iamVjdCRhc3NpZ25bc2lkZVldID0gaGFzWSA/ICcwJyA6ICcnLCBfT2JqZWN0JGFzc2lnbltzaWRlWF0gPSBoYXNYID8gJzAnIDogJycsIF9PYmplY3QkYXNzaWduLnRyYW5zZm9ybSA9ICh3aW4uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxKSA8PSAxID8gXCJ0cmFuc2xhdGUoXCIgKyB4ICsgXCJweCwgXCIgKyB5ICsgXCJweClcIiA6IFwidHJhbnNsYXRlM2QoXCIgKyB4ICsgXCJweCwgXCIgKyB5ICsgXCJweCwgMClcIiwgX09iamVjdCRhc3NpZ24pKTtcbiAgfVxuXG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIChfT2JqZWN0JGFzc2lnbjIgPSB7fSwgX09iamVjdCRhc3NpZ24yW3NpZGVZXSA9IGhhc1kgPyB5ICsgXCJweFwiIDogJycsIF9PYmplY3QkYXNzaWduMltzaWRlWF0gPSBoYXNYID8geCArIFwicHhcIiA6ICcnLCBfT2JqZWN0JGFzc2lnbjIudHJhbnNmb3JtID0gJycsIF9PYmplY3QkYXNzaWduMikpO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlU3R5bGVzKF9yZWY1KSB7XG4gIHZhciBzdGF0ZSA9IF9yZWY1LnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWY1Lm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRncHVBY2NlbGVyYXQgPSBvcHRpb25zLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9vcHRpb25zJGdwdUFjY2VsZXJhdCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGdwdUFjY2VsZXJhdCxcbiAgICAgIF9vcHRpb25zJGFkYXB0aXZlID0gb3B0aW9ucy5hZGFwdGl2ZSxcbiAgICAgIGFkYXB0aXZlID0gX29wdGlvbnMkYWRhcHRpdmUgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRhZGFwdGl2ZSxcbiAgICAgIF9vcHRpb25zJHJvdW5kT2Zmc2V0cyA9IG9wdGlvbnMucm91bmRPZmZzZXRzLFxuICAgICAgcm91bmRPZmZzZXRzID0gX29wdGlvbnMkcm91bmRPZmZzZXRzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkcm91bmRPZmZzZXRzO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICB2YXIgdHJhbnNpdGlvblByb3BlcnR5ID0gZ2V0Q29tcHV0ZWRTdHlsZShzdGF0ZS5lbGVtZW50cy5wb3BwZXIpLnRyYW5zaXRpb25Qcm9wZXJ0eSB8fCAnJztcblxuICAgIGlmIChhZGFwdGl2ZSAmJiBbJ3RyYW5zZm9ybScsICd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXS5zb21lKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuICAgICAgcmV0dXJuIHRyYW5zaXRpb25Qcm9wZXJ0eS5pbmRleE9mKHByb3BlcnR5KSA+PSAwO1xuICAgIH0pKSB7XG4gICAgICBjb25zb2xlLndhcm4oWydQb3BwZXI6IERldGVjdGVkIENTUyB0cmFuc2l0aW9ucyBvbiBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZycsICdDU1MgcHJvcGVydGllczogXCJ0cmFuc2Zvcm1cIiwgXCJ0b3BcIiwgXCJyaWdodFwiLCBcImJvdHRvbVwiLCBcImxlZnRcIi4nLCAnXFxuXFxuJywgJ0Rpc2FibGUgdGhlIFwiY29tcHV0ZVN0eWxlc1wiIG1vZGlmaWVyXFwncyBgYWRhcHRpdmVgIG9wdGlvbiB0byBhbGxvdycsICdmb3Igc21vb3RoIHRyYW5zaXRpb25zLCBvciByZW1vdmUgdGhlc2UgcHJvcGVydGllcyBmcm9tIHRoZSBDU1MnLCAndHJhbnNpdGlvbiBkZWNsYXJhdGlvbiBvbiB0aGUgcG9wcGVyIGVsZW1lbnQgaWYgb25seSB0cmFuc2l0aW9uaW5nJywgJ29wYWNpdHkgb3IgYmFja2dyb3VuZC1jb2xvciBmb3IgZXhhbXBsZS4nLCAnXFxuXFxuJywgJ1dlIHJlY29tbWVuZCB1c2luZyB0aGUgcG9wcGVyIGVsZW1lbnQgYXMgYSB3cmFwcGVyIGFyb3VuZCBhbiBpbm5lcicsICdlbGVtZW50IHRoYXQgY2FuIGhhdmUgYW55IENTUyBwcm9wZXJ0eSB0cmFuc2l0aW9uZWQgZm9yIGFuaW1hdGlvbnMuJ10uam9pbignICcpKTtcbiAgICB9XG4gIH1cblxuICB2YXIgY29tbW9uU3R5bGVzID0ge1xuICAgIHBsYWNlbWVudDogZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpLFxuICAgIHZhcmlhdGlvbjogZ2V0VmFyaWF0aW9uKHN0YXRlLnBsYWNlbWVudCksXG4gICAgcG9wcGVyOiBzdGF0ZS5lbGVtZW50cy5wb3BwZXIsXG4gICAgcG9wcGVyUmVjdDogc3RhdGUucmVjdHMucG9wcGVyLFxuICAgIGdwdUFjY2VsZXJhdGlvbjogZ3B1QWNjZWxlcmF0aW9uLFxuICAgIGlzRml4ZWQ6IHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3kgPT09ICdmaXhlZCdcbiAgfTtcblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzICE9IG51bGwpIHtcbiAgICBzdGF0ZS5zdHlsZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuc3R5bGVzLnBvcHBlciwgbWFwVG9TdHlsZXMoT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCB7XG4gICAgICBvZmZzZXRzOiBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMsXG4gICAgICBwb3NpdGlvbjogc3RhdGUub3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIGFkYXB0aXZlOiBhZGFwdGl2ZSxcbiAgICAgIHJvdW5kT2Zmc2V0czogcm91bmRPZmZzZXRzXG4gICAgfSkpKTtcbiAgfVxuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLmFycm93ICE9IG51bGwpIHtcbiAgICBzdGF0ZS5zdHlsZXMuYXJyb3cgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5zdHlsZXMuYXJyb3csIG1hcFRvU3R5bGVzKE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywge1xuICAgICAgb2Zmc2V0czogc3RhdGUubW9kaWZpZXJzRGF0YS5hcnJvdyxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgYWRhcHRpdmU6IGZhbHNlLFxuICAgICAgcm91bmRPZmZzZXRzOiByb3VuZE9mZnNldHNcbiAgICB9KSkpO1xuICB9XG5cbiAgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciwge1xuICAgICdkYXRhLXBvcHBlci1wbGFjZW1lbnQnOiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdjb21wdXRlU3R5bGVzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdiZWZvcmVXcml0ZScsXG4gIGZuOiBjb21wdXRlU3R5bGVzLFxuICBkYXRhOiB7fVxufTsiLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0V2luZG93LmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHBhc3NpdmUgPSB7XG4gIHBhc3NpdmU6IHRydWVcbn07XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBpbnN0YW5jZSA9IF9yZWYuaW5zdGFuY2UsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkc2Nyb2xsID0gb3B0aW9ucy5zY3JvbGwsXG4gICAgICBzY3JvbGwgPSBfb3B0aW9ucyRzY3JvbGwgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRzY3JvbGwsXG4gICAgICBfb3B0aW9ucyRyZXNpemUgPSBvcHRpb25zLnJlc2l6ZSxcbiAgICAgIHJlc2l6ZSA9IF9vcHRpb25zJHJlc2l6ZSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHJlc2l6ZTtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdyhzdGF0ZS5lbGVtZW50cy5wb3BwZXIpO1xuICB2YXIgc2Nyb2xsUGFyZW50cyA9IFtdLmNvbmNhdChzdGF0ZS5zY3JvbGxQYXJlbnRzLnJlZmVyZW5jZSwgc3RhdGUuc2Nyb2xsUGFyZW50cy5wb3BwZXIpO1xuXG4gIGlmIChzY3JvbGwpIHtcbiAgICBzY3JvbGxQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24gKHNjcm9sbFBhcmVudCkge1xuICAgICAgc2Nyb2xsUGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgfSk7XG4gIH1cblxuICBpZiAocmVzaXplKSB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmIChzY3JvbGwpIHtcbiAgICAgIHNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbiAoc2Nyb2xsUGFyZW50KSB7XG4gICAgICAgIHNjcm9sbFBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHJlc2l6ZSkge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgfVxuICB9O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnZXZlbnRMaXN0ZW5lcnMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3dyaXRlJyxcbiAgZm46IGZ1bmN0aW9uIGZuKCkge30sXG4gIGVmZmVjdDogZWZmZWN0LFxuICBkYXRhOiB7fVxufTsiLCJpbXBvcnQgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVBdXRvUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgYm90dG9tLCB0b3AsIHN0YXJ0LCByaWdodCwgbGVmdCwgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGlmIChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgb3Bwb3NpdGVQbGFjZW1lbnQgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICByZXR1cm4gW2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCksIG9wcG9zaXRlUGxhY2VtZW50LCBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChvcHBvc2l0ZVBsYWNlbWVudCldO1xufVxuXG5mdW5jdGlvbiBmbGlwKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdLl9za2lwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJG1haW5BeGlzID0gb3B0aW9ucy5tYWluQXhpcyxcbiAgICAgIGNoZWNrTWFpbkF4aXMgPSBfb3B0aW9ucyRtYWluQXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJG1haW5BeGlzLFxuICAgICAgX29wdGlvbnMkYWx0QXhpcyA9IG9wdGlvbnMuYWx0QXhpcyxcbiAgICAgIGNoZWNrQWx0QXhpcyA9IF9vcHRpb25zJGFsdEF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzID0gb3B0aW9ucy5mYWxsYmFja1BsYWNlbWVudHMsXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPSBvcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRmbGlwVmFyaWF0aW8sXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBvcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cztcbiAgdmFyIHByZWZlcnJlZFBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocHJlZmVycmVkUGxhY2VtZW50KTtcbiAgdmFyIGlzQmFzZVBsYWNlbWVudCA9IGJhc2VQbGFjZW1lbnQgPT09IHByZWZlcnJlZFBsYWNlbWVudDtcbiAgdmFyIGZhbGxiYWNrUGxhY2VtZW50cyA9IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyB8fCAoaXNCYXNlUGxhY2VtZW50IHx8ICFmbGlwVmFyaWF0aW9ucyA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChwcmVmZXJyZWRQbGFjZW1lbnQpXSA6IGdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzKHByZWZlcnJlZFBsYWNlbWVudCkpO1xuICB2YXIgcGxhY2VtZW50cyA9IFtwcmVmZXJyZWRQbGFjZW1lbnRdLmNvbmNhdChmYWxsYmFja1BsYWNlbWVudHMpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8gPyBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9uczogZmxpcFZhcmlhdGlvbnMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHM6IGFsbG93ZWRBdXRvUGxhY2VtZW50c1xuICAgIH0pIDogcGxhY2VtZW50KTtcbiAgfSwgW10pO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBjaGVja3NNYXAgPSBuZXcgTWFwKCk7XG4gIHZhciBtYWtlRmFsbGJhY2tDaGVja3MgPSB0cnVlO1xuICB2YXIgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50c1swXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBsYWNlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcGxhY2VtZW50ID0gcGxhY2VtZW50c1tpXTtcblxuICAgIHZhciBfYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KTtcblxuICAgIHZhciBpc1N0YXJ0VmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHN0YXJ0O1xuICAgIHZhciBpc1ZlcnRpY2FsID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKF9iYXNlUGxhY2VtZW50KSA+PSAwO1xuICAgIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgIHZhciBvdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnk6IGFsdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pO1xuICAgIHZhciBtYWluVmFyaWF0aW9uU2lkZSA9IGlzVmVydGljYWwgPyBpc1N0YXJ0VmFyaWF0aW9uID8gcmlnaHQgOiBsZWZ0IDogaXNTdGFydFZhcmlhdGlvbiA/IGJvdHRvbSA6IHRvcDtcblxuICAgIGlmIChyZWZlcmVuY2VSZWN0W2xlbl0gPiBwb3BwZXJSZWN0W2xlbl0pIHtcbiAgICAgIG1haW5WYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIH1cblxuICAgIHZhciBhbHRWYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIHZhciBjaGVja3MgPSBbXTtcblxuICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICBjaGVja3MucHVzaChvdmVyZmxvd1tfYmFzZVBsYWNlbWVudF0gPD0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgICAgY2hlY2tzLnB1c2gob3ZlcmZsb3dbbWFpblZhcmlhdGlvblNpZGVdIDw9IDAsIG92ZXJmbG93W2FsdFZhcmlhdGlvblNpZGVdIDw9IDApO1xuICAgIH1cblxuICAgIGlmIChjaGVja3MuZXZlcnkoZnVuY3Rpb24gKGNoZWNrKSB7XG4gICAgICByZXR1cm4gY2hlY2s7XG4gICAgfSkpIHtcbiAgICAgIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgIG1ha2VGYWxsYmFja0NoZWNrcyA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2hlY2tzTWFwLnNldChwbGFjZW1lbnQsIGNoZWNrcyk7XG4gIH1cblxuICBpZiAobWFrZUZhbGxiYWNrQ2hlY2tzKSB7XG4gICAgLy8gYDJgIG1heSBiZSBkZXNpcmVkIGluIHNvbWUgY2FzZXMg4oCTIHJlc2VhcmNoIGxhdGVyXG4gICAgdmFyIG51bWJlck9mQ2hlY2tzID0gZmxpcFZhcmlhdGlvbnMgPyAzIDogMTtcblxuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKF9pKSB7XG4gICAgICB2YXIgZml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudHMuZmluZChmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgICAgIHZhciBjaGVja3MgPSBjaGVja3NNYXAuZ2V0KHBsYWNlbWVudCk7XG5cbiAgICAgICAgaWYgKGNoZWNrcykge1xuICAgICAgICAgIHJldHVybiBjaGVja3Muc2xpY2UoMCwgX2kpLmV2ZXJ5KGZ1bmN0aW9uIChjaGVjaykge1xuICAgICAgICAgICAgcmV0dXJuIGNoZWNrO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGZpdHRpbmdQbGFjZW1lbnQpIHtcbiAgICAgICAgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gZml0dGluZ1BsYWNlbWVudDtcbiAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgX2kgPSBudW1iZXJPZkNoZWNrczsgX2kgPiAwOyBfaS0tKSB7XG4gICAgICB2YXIgX3JldCA9IF9sb29wKF9pKTtcblxuICAgICAgaWYgKF9yZXQgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLnBsYWNlbWVudCAhPT0gZmlyc3RGaXR0aW5nUGxhY2VtZW50KSB7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXS5fc2tpcCA9IHRydWU7XG4gICAgc3RhdGUucGxhY2VtZW50ID0gZmlyc3RGaXR0aW5nUGxhY2VtZW50O1xuICAgIHN0YXRlLnJlc2V0ID0gdHJ1ZTtcbiAgfVxufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnZmxpcCcsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBmbGlwLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ29mZnNldCddLFxuICBkYXRhOiB7XG4gICAgX3NraXA6IGZhbHNlXG4gIH1cbn07IiwiaW1wb3J0IHsgdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5cbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0LCBwcmV2ZW50ZWRPZmZzZXRzKSB7XG4gIGlmIChwcmV2ZW50ZWRPZmZzZXRzID09PSB2b2lkIDApIHtcbiAgICBwcmV2ZW50ZWRPZmZzZXRzID0ge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0b3A6IG92ZXJmbG93LnRvcCAtIHJlY3QuaGVpZ2h0IC0gcHJldmVudGVkT2Zmc2V0cy55LFxuICAgIHJpZ2h0OiBvdmVyZmxvdy5yaWdodCAtIHJlY3Qud2lkdGggKyBwcmV2ZW50ZWRPZmZzZXRzLngsXG4gICAgYm90dG9tOiBvdmVyZmxvdy5ib3R0b20gLSByZWN0LmhlaWdodCArIHByZXZlbnRlZE9mZnNldHMueSxcbiAgICBsZWZ0OiBvdmVyZmxvdy5sZWZ0IC0gcmVjdC53aWR0aCAtIHByZXZlbnRlZE9mZnNldHMueFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIFt0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnRdLnNvbWUoZnVuY3Rpb24gKHNpZGUpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dbc2lkZV0gPj0gMDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGhpZGUoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgcHJldmVudGVkT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucHJldmVudE92ZXJmbG93O1xuICB2YXIgcmVmZXJlbmNlT3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGVsZW1lbnRDb250ZXh0OiAncmVmZXJlbmNlJ1xuICB9KTtcbiAgdmFyIHBvcHBlckFsdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBhbHRCb3VuZGFyeTogdHJ1ZVxuICB9KTtcbiAgdmFyIHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKHJlZmVyZW5jZU92ZXJmbG93LCByZWZlcmVuY2VSZWN0KTtcbiAgdmFyIHBvcHBlckVzY2FwZU9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhwb3BwZXJBbHRPdmVyZmxvdywgcG9wcGVyUmVjdCwgcHJldmVudGVkT2Zmc2V0cyk7XG4gIHZhciBpc1JlZmVyZW5jZUhpZGRlbiA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChyZWZlcmVuY2VDbGlwcGluZ09mZnNldHMpO1xuICB2YXIgaGFzUG9wcGVyRXNjYXBlZCA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChwb3BwZXJFc2NhcGVPZmZzZXRzKTtcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IHtcbiAgICByZWZlcmVuY2VDbGlwcGluZ09mZnNldHM6IHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyxcbiAgICBwb3BwZXJFc2NhcGVPZmZzZXRzOiBwb3BwZXJFc2NhcGVPZmZzZXRzLFxuICAgIGlzUmVmZXJlbmNlSGlkZGVuOiBpc1JlZmVyZW5jZUhpZGRlbixcbiAgICBoYXNQb3BwZXJFc2NhcGVkOiBoYXNQb3BwZXJFc2NhcGVkXG4gIH07XG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcmVmZXJlbmNlLWhpZGRlbic6IGlzUmVmZXJlbmNlSGlkZGVuLFxuICAgICdkYXRhLXBvcHBlci1lc2NhcGVkJzogaGFzUG9wcGVyRXNjYXBlZFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2hpZGUnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ3ByZXZlbnRPdmVyZmxvdyddLFxuICBmbjogaGlkZVxufTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIGFwcGx5U3R5bGVzIH0gZnJvbSBcIi4vYXBwbHlTdHlsZXMuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYXJyb3cgfSBmcm9tIFwiLi9hcnJvdy5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjb21wdXRlU3R5bGVzIH0gZnJvbSBcIi4vY29tcHV0ZVN0eWxlcy5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBldmVudExpc3RlbmVycyB9IGZyb20gXCIuL2V2ZW50TGlzdGVuZXJzLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZsaXAgfSBmcm9tIFwiLi9mbGlwLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGhpZGUgfSBmcm9tIFwiLi9oaWRlLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG9mZnNldCB9IGZyb20gXCIuL29mZnNldC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwb3BwZXJPZmZzZXRzIH0gZnJvbSBcIi4vcG9wcGVyT2Zmc2V0cy5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmV2ZW50T3ZlcmZsb3cgfSBmcm9tIFwiLi9wcmV2ZW50T3ZlcmZsb3cuanNcIjsiLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgcGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUFuZFNraWRkaW5nVG9YWShwbGFjZW1lbnQsIHJlY3RzLCBvZmZzZXQpIHtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHZhciBpbnZlcnREaXN0YW5jZSA9IFtsZWZ0LCB0b3BdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMCA/IC0xIDogMTtcblxuICB2YXIgX3JlZiA9IHR5cGVvZiBvZmZzZXQgPT09ICdmdW5jdGlvbicgPyBvZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgcmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICB9KSkgOiBvZmZzZXQsXG4gICAgICBza2lkZGluZyA9IF9yZWZbMF0sXG4gICAgICBkaXN0YW5jZSA9IF9yZWZbMV07XG5cbiAgc2tpZGRpbmcgPSBza2lkZGluZyB8fCAwO1xuICBkaXN0YW5jZSA9IChkaXN0YW5jZSB8fCAwKSAqIGludmVydERpc3RhbmNlO1xuICByZXR1cm4gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDAgPyB7XG4gICAgeDogZGlzdGFuY2UsXG4gICAgeTogc2tpZGRpbmdcbiAgfSA6IHtcbiAgICB4OiBza2lkZGluZyxcbiAgICB5OiBkaXN0YW5jZVxuICB9O1xufVxuXG5mdW5jdGlvbiBvZmZzZXQoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmMi5uYW1lO1xuICB2YXIgX29wdGlvbnMkb2Zmc2V0ID0gb3B0aW9ucy5vZmZzZXQsXG4gICAgICBvZmZzZXQgPSBfb3B0aW9ucyRvZmZzZXQgPT09IHZvaWQgMCA/IFswLCAwXSA6IF9vcHRpb25zJG9mZnNldDtcbiAgdmFyIGRhdGEgPSBwbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZKHBsYWNlbWVudCwgc3RhdGUucmVjdHMsIG9mZnNldCk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICB2YXIgX2RhdGEkc3RhdGUkcGxhY2VtZW50ID0gZGF0YVtzdGF0ZS5wbGFjZW1lbnRdLFxuICAgICAgeCA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC54LFxuICAgICAgeSA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC55O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy54ICs9IHg7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLnkgKz0geTtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnb2Zmc2V0JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICBmbjogb2Zmc2V0XG59OyIsImltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi4vdXRpbHMvY29tcHV0ZU9mZnNldHMuanNcIjtcblxuZnVuY3Rpb24gcG9wcGVyT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICAvLyBPZmZzZXRzIGFyZSB0aGUgYWN0dWFsIHBvc2l0aW9uIHRoZSBwb3BwZXIgbmVlZHMgdG8gaGF2ZSB0byBiZVxuICAvLyBwcm9wZXJseSBwb3NpdGlvbmVkIG5lYXIgaXRzIHJlZmVyZW5jZSBlbGVtZW50XG4gIC8vIFRoaXMgaXMgdGhlIG1vc3QgYmFzaWMgcGxhY2VtZW50LCBhbmQgd2lsbCBiZSBhZGp1c3RlZCBieVxuICAvLyB0aGUgbW9kaWZpZXJzIGluIHRoZSBuZXh0IHN0ZXBcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IGNvbXB1dGVPZmZzZXRzKHtcbiAgICByZWZlcmVuY2U6IHN0YXRlLnJlY3RzLnJlZmVyZW5jZSxcbiAgICBlbGVtZW50OiBzdGF0ZS5yZWN0cy5wb3BwZXIsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdwb3BwZXJPZmZzZXRzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdyZWFkJyxcbiAgZm46IHBvcHBlck9mZnNldHMsXG4gIGRhdGE6IHt9XG59OyIsImltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgc3RhcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRBbHRBeGlzIGZyb20gXCIuLi91dGlscy9nZXRBbHRBeGlzLmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4sIHdpdGhpbk1heENsYW1wIH0gZnJvbSBcIi4uL3V0aWxzL3dpdGhpbi5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4uL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qc1wiO1xuaW1wb3J0IHsgbWluIGFzIG1hdGhNaW4sIG1heCBhcyBtYXRoTWF4IH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gcHJldmVudE92ZXJmbG93KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICB2YXIgX29wdGlvbnMkbWFpbkF4aXMgPSBvcHRpb25zLm1haW5BeGlzLFxuICAgICAgY2hlY2tNYWluQXhpcyA9IF9vcHRpb25zJG1haW5BeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkbWFpbkF4aXMsXG4gICAgICBfb3B0aW9ucyRhbHRBeGlzID0gb3B0aW9ucy5hbHRBeGlzLFxuICAgICAgY2hlY2tBbHRBeGlzID0gX29wdGlvbnMkYWx0QXhpcyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgX29wdGlvbnMkdGV0aGVyID0gb3B0aW9ucy50ZXRoZXIsXG4gICAgICB0ZXRoZXIgPSBfb3B0aW9ucyR0ZXRoZXIgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyR0ZXRoZXIsXG4gICAgICBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQgPSBvcHRpb25zLnRldGhlck9mZnNldCxcbiAgICAgIHRldGhlck9mZnNldCA9IF9vcHRpb25zJHRldGhlck9mZnNldCA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHRldGhlck9mZnNldDtcbiAgdmFyIG92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgcGFkZGluZzogcGFkZGluZyxcbiAgICBhbHRCb3VuZGFyeTogYWx0Qm91bmRhcnlcbiAgfSk7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBpc0Jhc2VQbGFjZW1lbnQgPSAhdmFyaWF0aW9uO1xuICB2YXIgbWFpbkF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBhbHRBeGlzID0gZ2V0QWx0QXhpcyhtYWluQXhpcyk7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciB0ZXRoZXJPZmZzZXRWYWx1ZSA9IHR5cGVvZiB0ZXRoZXJPZmZzZXQgPT09ICdmdW5jdGlvbicgPyB0ZXRoZXJPZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUucmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KSkgOiB0ZXRoZXJPZmZzZXQ7XG4gIHZhciBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUgPSB0eXBlb2YgdGV0aGVyT2Zmc2V0VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZSxcbiAgICBhbHRBeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZVxuICB9IDogT2JqZWN0LmFzc2lnbih7XG4gICAgbWFpbkF4aXM6IDAsXG4gICAgYWx0QXhpczogMFxuICB9LCB0ZXRoZXJPZmZzZXRWYWx1ZSk7XG4gIHZhciBvZmZzZXRNb2RpZmllclN0YXRlID0gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXQgPyBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldFtzdGF0ZS5wbGFjZW1lbnRdIDogbnVsbDtcbiAgdmFyIGRhdGEgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG5cbiAgaWYgKCFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICB2YXIgX29mZnNldE1vZGlmaWVyU3RhdGUkO1xuXG4gICAgdmFyIG1haW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gICAgdmFyIGFsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gICAgdmFyIGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgdmFyIG9mZnNldCA9IHBvcHBlck9mZnNldHNbbWFpbkF4aXNdO1xuICAgIHZhciBtaW4gPSBvZmZzZXQgKyBvdmVyZmxvd1ttYWluU2lkZV07XG4gICAgdmFyIG1heCA9IG9mZnNldCAtIG92ZXJmbG93W2FsdFNpZGVdO1xuICAgIHZhciBhZGRpdGl2ZSA9IHRldGhlciA/IC1wb3BwZXJSZWN0W2xlbl0gLyAyIDogMDtcbiAgICB2YXIgbWluTGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IHJlZmVyZW5jZVJlY3RbbGVuXSA6IHBvcHBlclJlY3RbbGVuXTtcbiAgICB2YXIgbWF4TGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IC1wb3BwZXJSZWN0W2xlbl0gOiAtcmVmZXJlbmNlUmVjdFtsZW5dOyAvLyBXZSBuZWVkIHRvIGluY2x1ZGUgdGhlIGFycm93IGluIHRoZSBjYWxjdWxhdGlvbiBzbyB0aGUgYXJyb3cgZG9lc24ndCBnb1xuICAgIC8vIG91dHNpZGUgdGhlIHJlZmVyZW5jZSBib3VuZHNcblxuICAgIHZhciBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdztcbiAgICB2YXIgYXJyb3dSZWN0ID0gdGV0aGVyICYmIGFycm93RWxlbWVudCA/IGdldExheW91dFJlY3QoYXJyb3dFbGVtZW50KSA6IHtcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nT2JqZWN0ID0gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddID8gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddLnBhZGRpbmcgOiBnZXRGcmVzaFNpZGVPYmplY3QoKTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWluID0gYXJyb3dQYWRkaW5nT2JqZWN0W21haW5TaWRlXTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWF4ID0gYXJyb3dQYWRkaW5nT2JqZWN0W2FsdFNpZGVdOyAvLyBJZiB0aGUgcmVmZXJlbmNlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gdGhlIGFycm93IGxlbmd0aCwgd2UgZG9uJ3Qgd2FudFxuICAgIC8vIHRvIGluY2x1ZGUgaXRzIGZ1bGwgc2l6ZSBpbiB0aGUgY2FsY3VsYXRpb24uIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGxcbiAgICAvLyBhbmQgbmVhciB0aGUgZWRnZSBvZiBhIGJvdW5kYXJ5LCB0aGUgcG9wcGVyIGNhbiBvdmVyZmxvdyBldmVuIGlmIHRoZVxuICAgIC8vIHJlZmVyZW5jZSBpcyBub3Qgb3ZlcmZsb3dpbmcgYXMgd2VsbCAoZS5nLiB2aXJ0dWFsIGVsZW1lbnRzIHdpdGggbm9cbiAgICAvLyB3aWR0aCBvciBoZWlnaHQpXG5cbiAgICB2YXIgYXJyb3dMZW4gPSB3aXRoaW4oMCwgcmVmZXJlbmNlUmVjdFtsZW5dLCBhcnJvd1JlY3RbbGVuXSk7XG4gICAgdmFyIG1pbk9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IHJlZmVyZW5jZVJlY3RbbGVuXSAvIDIgLSBhZGRpdGl2ZSAtIGFycm93TGVuIC0gYXJyb3dQYWRkaW5nTWluIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzIDogbWluTGVuIC0gYXJyb3dMZW4gLSBhcnJvd1BhZGRpbmdNaW4gLSBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXM7XG4gICAgdmFyIG1heE9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IC1yZWZlcmVuY2VSZWN0W2xlbl0gLyAyICsgYWRkaXRpdmUgKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcyA6IG1heExlbiArIGFycm93TGVuICsgYXJyb3dQYWRkaW5nTWF4ICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzO1xuICAgIHZhciBhcnJvd09mZnNldFBhcmVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93ICYmIGdldE9mZnNldFBhcmVudChzdGF0ZS5lbGVtZW50cy5hcnJvdyk7XG4gICAgdmFyIGNsaWVudE9mZnNldCA9IGFycm93T2Zmc2V0UGFyZW50ID8gbWFpbkF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudFRvcCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50TGVmdCB8fCAwIDogMDtcbiAgICB2YXIgb2Zmc2V0TW9kaWZpZXJWYWx1ZSA9IChfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQgPSBvZmZzZXRNb2RpZmllclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBvZmZzZXRNb2RpZmllclN0YXRlW21haW5BeGlzXSkgIT0gbnVsbCA/IF9vZmZzZXRNb2RpZmllclN0YXRlJCA6IDA7XG4gICAgdmFyIHRldGhlck1pbiA9IG9mZnNldCArIG1pbk9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWUgLSBjbGllbnRPZmZzZXQ7XG4gICAgdmFyIHRldGhlck1heCA9IG9mZnNldCArIG1heE9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWU7XG4gICAgdmFyIHByZXZlbnRlZE9mZnNldCA9IHdpdGhpbih0ZXRoZXIgPyBtYXRoTWluKG1pbiwgdGV0aGVyTWluKSA6IG1pbiwgb2Zmc2V0LCB0ZXRoZXIgPyBtYXRoTWF4KG1heCwgdGV0aGVyTWF4KSA6IG1heCk7XG4gICAgcG9wcGVyT2Zmc2V0c1ttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQ7XG4gICAgZGF0YVttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQgLSBvZmZzZXQ7XG4gIH1cblxuICBpZiAoY2hlY2tBbHRBeGlzKSB7XG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclN0YXRlJDI7XG5cbiAgICB2YXIgX21haW5TaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IHRvcCA6IGxlZnQ7XG5cbiAgICB2YXIgX2FsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3gnID8gYm90dG9tIDogcmlnaHQ7XG5cbiAgICB2YXIgX29mZnNldCA9IHBvcHBlck9mZnNldHNbYWx0QXhpc107XG5cbiAgICB2YXIgX2xlbiA9IGFsdEF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHZhciBfbWluID0gX29mZnNldCArIG92ZXJmbG93W19tYWluU2lkZV07XG5cbiAgICB2YXIgX21heCA9IF9vZmZzZXQgLSBvdmVyZmxvd1tfYWx0U2lkZV07XG5cbiAgICB2YXIgaXNPcmlnaW5TaWRlID0gW3RvcCwgbGVmdF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSAhPT0gLTE7XG5cbiAgICB2YXIgX29mZnNldE1vZGlmaWVyVmFsdWUgPSAoX29mZnNldE1vZGlmaWVyU3RhdGUkMiA9IG9mZnNldE1vZGlmaWVyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9mZnNldE1vZGlmaWVyU3RhdGVbYWx0QXhpc10pICE9IG51bGwgPyBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIDogMDtcblxuICAgIHZhciBfdGV0aGVyTWluID0gaXNPcmlnaW5TaWRlID8gX21pbiA6IF9vZmZzZXQgLSByZWZlcmVuY2VSZWN0W19sZW5dIC0gcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXM7XG5cbiAgICB2YXIgX3RldGhlck1heCA9IGlzT3JpZ2luU2lkZSA/IF9vZmZzZXQgKyByZWZlcmVuY2VSZWN0W19sZW5dICsgcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXMgOiBfbWF4O1xuXG4gICAgdmFyIF9wcmV2ZW50ZWRPZmZzZXQgPSB0ZXRoZXIgJiYgaXNPcmlnaW5TaWRlID8gd2l0aGluTWF4Q2xhbXAoX3RldGhlck1pbiwgX29mZnNldCwgX3RldGhlck1heCkgOiB3aXRoaW4odGV0aGVyID8gX3RldGhlck1pbiA6IF9taW4sIF9vZmZzZXQsIHRldGhlciA/IF90ZXRoZXJNYXggOiBfbWF4KTtcblxuICAgIHBvcHBlck9mZnNldHNbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0O1xuICAgIGRhdGFbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0IC0gX29mZnNldDtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAncHJldmVudE92ZXJmbG93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IHByZXZlbnRPdmVyZmxvdyxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydvZmZzZXQnXVxufTsiLCJpbXBvcnQgeyBwb3BwZXJHZW5lcmF0b3IsIGRldGVjdE92ZXJmbG93IH0gZnJvbSBcIi4vY3JlYXRlUG9wcGVyLmpzXCI7XG5pbXBvcnQgZXZlbnRMaXN0ZW5lcnMgZnJvbSBcIi4vbW9kaWZpZXJzL2V2ZW50TGlzdGVuZXJzLmpzXCI7XG5pbXBvcnQgcG9wcGVyT2Zmc2V0cyBmcm9tIFwiLi9tb2RpZmllcnMvcG9wcGVyT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVTdHlsZXMgZnJvbSBcIi4vbW9kaWZpZXJzL2NvbXB1dGVTdHlsZXMuanNcIjtcbmltcG9ydCBhcHBseVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvYXBwbHlTdHlsZXMuanNcIjtcbnZhciBkZWZhdWx0TW9kaWZpZXJzID0gW2V2ZW50TGlzdGVuZXJzLCBwb3BwZXJPZmZzZXRzLCBjb21wdXRlU3R5bGVzLCBhcHBseVN0eWxlc107XG52YXIgY3JlYXRlUG9wcGVyID0gLyojX19QVVJFX18qL3BvcHBlckdlbmVyYXRvcih7XG4gIGRlZmF1bHRNb2RpZmllcnM6IGRlZmF1bHRNb2RpZmllcnNcbn0pOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCB7IGNyZWF0ZVBvcHBlciwgcG9wcGVyR2VuZXJhdG9yLCBkZWZhdWx0TW9kaWZpZXJzLCBkZXRlY3RPdmVyZmxvdyB9OyIsImltcG9ydCB7IHBvcHBlckdlbmVyYXRvciwgZGV0ZWN0T3ZlcmZsb3cgfSBmcm9tIFwiLi9jcmVhdGVQb3BwZXIuanNcIjtcbmltcG9ydCBldmVudExpc3RlbmVycyBmcm9tIFwiLi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanNcIjtcbmltcG9ydCBwb3BwZXJPZmZzZXRzIGZyb20gXCIuL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzXCI7XG5pbXBvcnQgY29tcHV0ZVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvY29tcHV0ZVN0eWxlcy5qc1wiO1xuaW1wb3J0IGFwcGx5U3R5bGVzIGZyb20gXCIuL21vZGlmaWVycy9hcHBseVN0eWxlcy5qc1wiO1xuaW1wb3J0IG9mZnNldCBmcm9tIFwiLi9tb2RpZmllcnMvb2Zmc2V0LmpzXCI7XG5pbXBvcnQgZmxpcCBmcm9tIFwiLi9tb2RpZmllcnMvZmxpcC5qc1wiO1xuaW1wb3J0IHByZXZlbnRPdmVyZmxvdyBmcm9tIFwiLi9tb2RpZmllcnMvcHJldmVudE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgYXJyb3cgZnJvbSBcIi4vbW9kaWZpZXJzL2Fycm93LmpzXCI7XG5pbXBvcnQgaGlkZSBmcm9tIFwiLi9tb2RpZmllcnMvaGlkZS5qc1wiO1xudmFyIGRlZmF1bHRNb2RpZmllcnMgPSBbZXZlbnRMaXN0ZW5lcnMsIHBvcHBlck9mZnNldHMsIGNvbXB1dGVTdHlsZXMsIGFwcGx5U3R5bGVzLCBvZmZzZXQsIGZsaXAsIHByZXZlbnRPdmVyZmxvdywgYXJyb3csIGhpZGVdO1xudmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3Ioe1xuICBkZWZhdWx0TW9kaWZpZXJzOiBkZWZhdWx0TW9kaWZpZXJzXG59KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIsIHBvcHBlckdlbmVyYXRvciwgZGVmYXVsdE1vZGlmaWVycywgZGV0ZWN0T3ZlcmZsb3cgfTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIgYXMgY3JlYXRlUG9wcGVyTGl0ZSB9IGZyb20gXCIuL3BvcHBlci1saXRlLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0ICogZnJvbSBcIi4vbW9kaWZpZXJzL2luZGV4LmpzXCI7IiwiaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCB7IHZhcmlhdGlvblBsYWNlbWVudHMsIGJhc2VQbGFjZW1lbnRzLCBwbGFjZW1lbnRzIGFzIGFsbFBsYWNlbWVudHMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4vZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tcHV0ZUF1dG9QbGFjZW1lbnQoc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeSA9IF9vcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZyA9IF9vcHRpb25zLnBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9ucyA9IF9vcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgX29wdGlvbnMkYWxsb3dlZEF1dG9QID0gX29wdGlvbnMuYWxsb3dlZEF1dG9QbGFjZW1lbnRzLFxuICAgICAgYWxsb3dlZEF1dG9QbGFjZW1lbnRzID0gX29wdGlvbnMkYWxsb3dlZEF1dG9QID09PSB2b2lkIDAgPyBhbGxQbGFjZW1lbnRzIDogX29wdGlvbnMkYWxsb3dlZEF1dG9QO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCk7XG4gIHZhciBwbGFjZW1lbnRzID0gdmFyaWF0aW9uID8gZmxpcFZhcmlhdGlvbnMgPyB2YXJpYXRpb25QbGFjZW1lbnRzIDogdmFyaWF0aW9uUGxhY2VtZW50cy5maWx0ZXIoZnVuY3Rpb24gKHBsYWNlbWVudCkge1xuICAgIHJldHVybiBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSA9PT0gdmFyaWF0aW9uO1xuICB9KSA6IGJhc2VQbGFjZW1lbnRzO1xuICB2YXIgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGFsbG93ZWRBdXRvUGxhY2VtZW50cy5pbmRleE9mKHBsYWNlbWVudCkgPj0gMDtcbiAgfSk7XG5cbiAgaWYgKGFsbG93ZWRQbGFjZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cztcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFRoZSBgYWxsb3dlZEF1dG9QbGFjZW1lbnRzYCBvcHRpb24gZGlkIG5vdCBhbGxvdyBhbnknLCAncGxhY2VtZW50cy4gRW5zdXJlIHRoZSBgcGxhY2VtZW50YCBvcHRpb24gbWF0Y2hlcyB0aGUgdmFyaWF0aW9uJywgJ29mIHRoZSBhbGxvd2VkIHBsYWNlbWVudHMuJywgJ0ZvciBleGFtcGxlLCBcImF1dG9cIiBjYW5ub3QgYmUgdXNlZCB0byBhbGxvdyBcImJvdHRvbS1zdGFydFwiLicsICdVc2UgXCJhdXRvLXN0YXJ0XCIgaW5zdGVhZC4nXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS10eXBlXTogRmxvdyBzZWVtcyB0byBoYXZlIHByb2JsZW1zIHdpdGggdHdvIGFycmF5IHVuaW9ucy4uLlxuXG5cbiAgdmFyIG92ZXJmbG93cyA9IGFsbG93ZWRQbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pW2dldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KV07XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICByZXR1cm4gT2JqZWN0LmtleXMob3ZlcmZsb3dzKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIG92ZXJmbG93c1thXSAtIG92ZXJmbG93c1tiXTtcbiAgfSk7XG59IiwiaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4vZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQgZnJvbSBcIi4vZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIHN0YXJ0LCBlbmQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbXB1dGVPZmZzZXRzKF9yZWYpIHtcbiAgdmFyIHJlZmVyZW5jZSA9IF9yZWYucmVmZXJlbmNlLFxuICAgICAgZWxlbWVudCA9IF9yZWYuZWxlbWVudCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IHBsYWNlbWVudCA/IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSA6IG51bGw7XG4gIHZhciB2YXJpYXRpb24gPSBwbGFjZW1lbnQgPyBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSA6IG51bGw7XG4gIHZhciBjb21tb25YID0gcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGggLyAyIC0gZWxlbWVudC53aWR0aCAvIDI7XG4gIHZhciBjb21tb25ZID0gcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0IC8gMiAtIGVsZW1lbnQuaGVpZ2h0IC8gMjtcbiAgdmFyIG9mZnNldHM7XG5cbiAgc3dpdGNoIChiYXNlUGxhY2VtZW50KSB7XG4gICAgY2FzZSB0b3A6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSAtIGVsZW1lbnQuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIGJvdHRvbTpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSByaWdodDpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIGxlZnQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGVsZW1lbnQud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnlcbiAgICAgIH07XG4gIH1cblxuICB2YXIgbWFpbkF4aXMgPSBiYXNlUGxhY2VtZW50ID8gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpIDogbnVsbDtcblxuICBpZiAobWFpbkF4aXMgIT0gbnVsbCkge1xuICAgIHZhciBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gICAgc3dpdGNoICh2YXJpYXRpb24pIHtcbiAgICAgIGNhc2Ugc3RhcnQ6XG4gICAgICAgIG9mZnNldHNbbWFpbkF4aXNdID0gb2Zmc2V0c1ttYWluQXhpc10gLSAocmVmZXJlbmNlW2xlbl0gLyAyIC0gZWxlbWVudFtsZW5dIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIGVuZDpcbiAgICAgICAgb2Zmc2V0c1ttYWluQXhpc10gPSBvZmZzZXRzW21haW5BeGlzXSArIChyZWZlcmVuY2VbbGVuXSAvIDIgLSBlbGVtZW50W2xlbl0gLyAyKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9mZnNldHM7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVib3VuY2UoZm4pIHtcbiAgdmFyIHBlbmRpbmc7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFwZW5kaW5nKSB7XG4gICAgICBwZW5kaW5nID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcGVuZGluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICByZXNvbHZlKGZuKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwZW5kaW5nO1xuICB9O1xufSIsImltcG9ydCBnZXRDbGlwcGluZ1JlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDbGlwcGluZ1JlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi9jb21wdXRlT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4vcmVjdFRvQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IHsgY2xpcHBpbmdQYXJlbnRzLCByZWZlcmVuY2UsIHBvcHBlciwgYm90dG9tLCB0b3AsIHJpZ2h0LCBiYXNlUGxhY2VtZW50cywgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IG1lcmdlUGFkZGluZ09iamVjdCBmcm9tIFwiLi9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4vZXhwYW5kVG9IYXNoTWFwLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBfb3B0aW9ucyRwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucyRwbGFjZW1lbnQgPT09IHZvaWQgMCA/IHN0YXRlLnBsYWNlbWVudCA6IF9vcHRpb25zJHBsYWNlbWVudCxcbiAgICAgIF9vcHRpb25zJGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICBib3VuZGFyeSA9IF9vcHRpb25zJGJvdW5kYXJ5ID09PSB2b2lkIDAgPyBjbGlwcGluZ1BhcmVudHMgOiBfb3B0aW9ucyRib3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9PT0gdm9pZCAwID8gdmlld3BvcnQgOiBfb3B0aW9ucyRyb290Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRlbGVtZW50Q29udGUgPSBfb3B0aW9ucy5lbGVtZW50Q29udGV4dCxcbiAgICAgIGVsZW1lbnRDb250ZXh0ID0gX29wdGlvbnMkZWxlbWVudENvbnRlID09PSB2b2lkIDAgPyBwb3BwZXIgOiBfb3B0aW9ucyRlbGVtZW50Q29udGUsXG4gICAgICBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9IF9vcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHBhZGRpbmcgPSBfb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgcGFkZGluZyA9IF9vcHRpb25zJHBhZGRpbmcgPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyRwYWRkaW5nO1xuICB2YXIgcGFkZGluZ09iamVjdCA9IG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG4gIHZhciBhbHRDb250ZXh0ID0gZWxlbWVudENvbnRleHQgPT09IHBvcHBlciA/IHJlZmVyZW5jZSA6IHBvcHBlcjtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBlbGVtZW50ID0gc3RhdGUuZWxlbWVudHNbYWx0Qm91bmRhcnkgPyBhbHRDb250ZXh0IDogZWxlbWVudENvbnRleHRdO1xuICB2YXIgY2xpcHBpbmdDbGllbnRSZWN0ID0gZ2V0Q2xpcHBpbmdSZWN0KGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQgOiBlbGVtZW50LmNvbnRleHRFbGVtZW50IHx8IGdldERvY3VtZW50RWxlbWVudChzdGF0ZS5lbGVtZW50cy5wb3BwZXIpLCBib3VuZGFyeSwgcm9vdEJvdW5kYXJ5KTtcbiAgdmFyIHJlZmVyZW5jZUNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qoc3RhdGUuZWxlbWVudHMucmVmZXJlbmNlKTtcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VDbGllbnRSZWN0LFxuICAgIGVsZW1lbnQ6IHBvcHBlclJlY3QsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgfSk7XG4gIHZhciBwb3BwZXJDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChPYmplY3QuYXNzaWduKHt9LCBwb3BwZXJSZWN0LCBwb3BwZXJPZmZzZXRzKSk7XG4gIHZhciBlbGVtZW50Q2xpZW50UmVjdCA9IGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgPyBwb3BwZXJDbGllbnRSZWN0IDogcmVmZXJlbmNlQ2xpZW50UmVjdDsgLy8gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgcmVjdFxuICAvLyAwIG9yIG5lZ2F0aXZlID0gd2l0aGluIHRoZSBjbGlwcGluZyByZWN0XG5cbiAgdmFyIG92ZXJmbG93T2Zmc2V0cyA9IHtcbiAgICB0b3A6IGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCxcbiAgICBib3R0b206IGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSxcbiAgICBsZWZ0OiBjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQsXG4gICAgcmlnaHQ6IGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodFxuICB9O1xuICB2YXIgb2Zmc2V0RGF0YSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0OyAvLyBPZmZzZXRzIGNhbiBiZSBhcHBsaWVkIG9ubHkgdG8gdGhlIHBvcHBlciBlbGVtZW50XG5cbiAgaWYgKGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgJiYgb2Zmc2V0RGF0YSkge1xuICAgIHZhciBvZmZzZXQgPSBvZmZzZXREYXRhW3BsYWNlbWVudF07XG4gICAgT2JqZWN0LmtleXMob3ZlcmZsb3dPZmZzZXRzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBtdWx0aXBseSA9IFtyaWdodCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/IDEgOiAtMTtcbiAgICAgIHZhciBheGlzID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/ICd5JyA6ICd4JztcbiAgICAgIG92ZXJmbG93T2Zmc2V0c1trZXldICs9IG9mZnNldFtheGlzXSAqIG11bHRpcGx5O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG92ZXJmbG93T2Zmc2V0cztcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBleHBhbmRUb0hhc2hNYXAodmFsdWUsIGtleXMpIHtcbiAgcmV0dXJuIGtleXMucmVkdWNlKGZ1bmN0aW9uIChoYXNoTWFwLCBrZXkpIHtcbiAgICBoYXNoTWFwW2tleV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gaGFzaE1hcDtcbiAgfSwge30pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdChzdHIpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIFtdLmNvbmNhdChhcmdzKS5yZWR1Y2UoZnVuY3Rpb24gKHAsIGMpIHtcbiAgICByZXR1cm4gcC5yZXBsYWNlKC8lcy8sIGMpO1xuICB9LCBzdHIpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEFsdEF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufSIsImltcG9ydCB7IGF1dG8gfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRGcmVzaFNpZGVPYmplY3QoKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwXG4gIH07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gWyd0b3AnLCAnYm90dG9tJ10uaW5kZXhPZihwbGFjZW1lbnQpID49IDAgPyAneCcgOiAneSc7XG59IiwidmFyIGhhc2ggPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgZnVuY3Rpb24gKG1hdGNoZWQpIHtcbiAgICByZXR1cm4gaGFzaFttYXRjaGVkXTtcbiAgfSk7XG59IiwidmFyIGhhc2ggPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvc3RhcnR8ZW5kL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFZhcmlhdGlvbihwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzFdO1xufSIsImV4cG9ydCB2YXIgbWF4ID0gTWF0aC5tYXg7XG5leHBvcnQgdmFyIG1pbiA9IE1hdGgubWluO1xuZXhwb3J0IHZhciByb3VuZCA9IE1hdGgucm91bmQ7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2VCeU5hbWUobW9kaWZpZXJzKSB7XG4gIHZhciBtZXJnZWQgPSBtb2RpZmllcnMucmVkdWNlKGZ1bmN0aW9uIChtZXJnZWQsIGN1cnJlbnQpIHtcbiAgICB2YXIgZXhpc3RpbmcgPSBtZXJnZWRbY3VycmVudC5uYW1lXTtcbiAgICBtZXJnZWRbY3VycmVudC5uYW1lXSA9IGV4aXN0aW5nID8gT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcsIGN1cnJlbnQsIHtcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLm9wdGlvbnMsIGN1cnJlbnQub3B0aW9ucyksXG4gICAgICBkYXRhOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5kYXRhLCBjdXJyZW50LmRhdGEpXG4gICAgfSkgOiBjdXJyZW50O1xuICAgIHJldHVybiBtZXJnZWQ7XG4gIH0sIHt9KTsgLy8gSUUxMSBkb2VzIG5vdCBzdXBwb3J0IE9iamVjdC52YWx1ZXNcblxuICByZXR1cm4gT2JqZWN0LmtleXMobWVyZ2VkKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBtZXJnZWRba2V5XTtcbiAgfSk7XG59IiwiaW1wb3J0IGdldEZyZXNoU2lkZU9iamVjdCBmcm9tIFwiLi9nZXRGcmVzaFNpZGVPYmplY3QuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlUGFkZGluZ09iamVjdChwYWRkaW5nT2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBnZXRGcmVzaFNpZGVPYmplY3QoKSwgcGFkZGluZ09iamVjdCk7XG59IiwiaW1wb3J0IHsgbW9kaWZpZXJQaGFzZXMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjsgLy8gc291cmNlOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80OTg3NTI1NVxuXG5mdW5jdGlvbiBvcmRlcihtb2RpZmllcnMpIHtcbiAgdmFyIG1hcCA9IG5ldyBNYXAoKTtcbiAgdmFyIHZpc2l0ZWQgPSBuZXcgU2V0KCk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgbW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgbWFwLnNldChtb2RpZmllci5uYW1lLCBtb2RpZmllcik7XG4gIH0pOyAvLyBPbiB2aXNpdGluZyBvYmplY3QsIGNoZWNrIGZvciBpdHMgZGVwZW5kZW5jaWVzIGFuZCB2aXNpdCB0aGVtIHJlY3Vyc2l2ZWx5XG5cbiAgZnVuY3Rpb24gc29ydChtb2RpZmllcikge1xuICAgIHZpc2l0ZWQuYWRkKG1vZGlmaWVyLm5hbWUpO1xuICAgIHZhciByZXF1aXJlcyA9IFtdLmNvbmNhdChtb2RpZmllci5yZXF1aXJlcyB8fCBbXSwgbW9kaWZpZXIucmVxdWlyZXNJZkV4aXN0cyB8fCBbXSk7XG4gICAgcmVxdWlyZXMuZm9yRWFjaChmdW5jdGlvbiAoZGVwKSB7XG4gICAgICBpZiAoIXZpc2l0ZWQuaGFzKGRlcCkpIHtcbiAgICAgICAgdmFyIGRlcE1vZGlmaWVyID0gbWFwLmdldChkZXApO1xuXG4gICAgICAgIGlmIChkZXBNb2RpZmllcikge1xuICAgICAgICAgIHNvcnQoZGVwTW9kaWZpZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmVzdWx0LnB1c2gobW9kaWZpZXIpO1xuICB9XG5cbiAgbW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgaWYgKCF2aXNpdGVkLmhhcyhtb2RpZmllci5uYW1lKSkge1xuICAgICAgLy8gY2hlY2sgZm9yIHZpc2l0ZWQgb2JqZWN0XG4gICAgICBzb3J0KG1vZGlmaWVyKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvcmRlck1vZGlmaWVycyhtb2RpZmllcnMpIHtcbiAgLy8gb3JkZXIgYmFzZWQgb24gZGVwZW5kZW5jaWVzXG4gIHZhciBvcmRlcmVkTW9kaWZpZXJzID0gb3JkZXIobW9kaWZpZXJzKTsgLy8gb3JkZXIgYmFzZWQgb24gcGhhc2VcblxuICByZXR1cm4gbW9kaWZpZXJQaGFzZXMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBoYXNlKSB7XG4gICAgcmV0dXJuIGFjYy5jb25jYXQob3JkZXJlZE1vZGlmaWVycy5maWx0ZXIoZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgICByZXR1cm4gbW9kaWZpZXIucGhhc2UgPT09IHBoYXNlO1xuICAgIH0pKTtcbiAgfSwgW10pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlY3RUb0NsaWVudFJlY3QocmVjdCkge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgcmVjdCwge1xuICAgIGxlZnQ6IHJlY3QueCxcbiAgICB0b3A6IHJlY3QueSxcbiAgICByaWdodDogcmVjdC54ICsgcmVjdC53aWR0aCxcbiAgICBib3R0b206IHJlY3QueSArIHJlY3QuaGVpZ2h0XG4gIH0pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVuaXF1ZUJ5KGFyciwgZm4pIHtcbiAgdmFyIGlkZW50aWZpZXJzID0gbmV3IFNldCgpO1xuICByZXR1cm4gYXJyLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBpZGVudGlmaWVyID0gZm4oaXRlbSk7XG5cbiAgICBpZiAoIWlkZW50aWZpZXJzLmhhcyhpZGVudGlmaWVyKSkge1xuICAgICAgaWRlbnRpZmllcnMuYWRkKGlkZW50aWZpZXIpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbn0iLCJpbXBvcnQgZm9ybWF0IGZyb20gXCIuL2Zvcm1hdC5qc1wiO1xuaW1wb3J0IHsgbW9kaWZpZXJQaGFzZXMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbnZhciBJTlZBTElEX01PRElGSUVSX0VSUk9SID0gJ1BvcHBlcjogbW9kaWZpZXIgXCIlc1wiIHByb3ZpZGVkIGFuIGludmFsaWQgJXMgcHJvcGVydHksIGV4cGVjdGVkICVzIGJ1dCBnb3QgJXMnO1xudmFyIE1JU1NJTkdfREVQRU5ERU5DWV9FUlJPUiA9ICdQb3BwZXI6IG1vZGlmaWVyIFwiJXNcIiByZXF1aXJlcyBcIiVzXCIsIGJ1dCBcIiVzXCIgbW9kaWZpZXIgaXMgbm90IGF2YWlsYWJsZSc7XG52YXIgVkFMSURfUFJPUEVSVElFUyA9IFsnbmFtZScsICdlbmFibGVkJywgJ3BoYXNlJywgJ2ZuJywgJ2VmZmVjdCcsICdyZXF1aXJlcycsICdvcHRpb25zJ107XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2YWxpZGF0ZU1vZGlmaWVycyhtb2RpZmllcnMpIHtcbiAgbW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgW10uY29uY2F0KE9iamVjdC5rZXlzKG1vZGlmaWVyKSwgVkFMSURfUFJPUEVSVElFUykgLy8gSUUxMS1jb21wYXRpYmxlIHJlcGxhY2VtZW50IGZvciBgbmV3IFNldChpdGVyYWJsZSlgXG4gICAgLmZpbHRlcihmdW5jdGlvbiAodmFsdWUsIGluZGV4LCBzZWxmKSB7XG4gICAgICByZXR1cm4gc2VsZi5pbmRleE9mKHZhbHVlKSA9PT0gaW5kZXg7XG4gICAgfSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICBjYXNlICduYW1lJzpcbiAgICAgICAgICBpZiAodHlwZW9mIG1vZGlmaWVyLm5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBTdHJpbmcobW9kaWZpZXIubmFtZSksICdcIm5hbWVcIicsICdcInN0cmluZ1wiJywgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIubmFtZSkgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2VuYWJsZWQnOlxuICAgICAgICAgIGlmICh0eXBlb2YgbW9kaWZpZXIuZW5hYmxlZCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBtb2RpZmllci5uYW1lLCAnXCJlbmFibGVkXCInLCAnXCJib29sZWFuXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5lbmFibGVkKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncGhhc2UnOlxuICAgICAgICAgIGlmIChtb2RpZmllclBoYXNlcy5pbmRleE9mKG1vZGlmaWVyLnBoYXNlKSA8IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcInBoYXNlXCInLCBcImVpdGhlciBcIiArIG1vZGlmaWVyUGhhc2VzLmpvaW4oJywgJyksIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLnBoYXNlKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZm4nOlxuICAgICAgICAgIGlmICh0eXBlb2YgbW9kaWZpZXIuZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcImZuXCInLCAnXCJmdW5jdGlvblwiJywgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIuZm4pICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdlZmZlY3QnOlxuICAgICAgICAgIGlmIChtb2RpZmllci5lZmZlY3QgIT0gbnVsbCAmJiB0eXBlb2YgbW9kaWZpZXIuZWZmZWN0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBtb2RpZmllci5uYW1lLCAnXCJlZmZlY3RcIicsICdcImZ1bmN0aW9uXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5mbikgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JlcXVpcmVzJzpcbiAgICAgICAgICBpZiAobW9kaWZpZXIucmVxdWlyZXMgIT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShtb2RpZmllci5yZXF1aXJlcykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcInJlcXVpcmVzXCInLCAnXCJhcnJheVwiJywgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIucmVxdWlyZXMpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdyZXF1aXJlc0lmRXhpc3RzJzpcbiAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobW9kaWZpZXIucmVxdWlyZXNJZkV4aXN0cykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcInJlcXVpcmVzSWZFeGlzdHNcIicsICdcImFycmF5XCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnb3B0aW9ucyc6XG4gICAgICAgIGNhc2UgJ2RhdGEnOlxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIlBvcHBlckpTOiBhbiBpbnZhbGlkIHByb3BlcnR5IGhhcyBiZWVuIHByb3ZpZGVkIHRvIHRoZSBcXFwiXCIgKyBtb2RpZmllci5uYW1lICsgXCJcXFwiIG1vZGlmaWVyLCB2YWxpZCBwcm9wZXJ0aWVzIGFyZSBcIiArIFZBTElEX1BST1BFUlRJRVMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcXFwiXCIgKyBzICsgXCJcXFwiXCI7XG4gICAgICAgICAgfSkuam9pbignLCAnKSArIFwiOyBidXQgXFxcIlwiICsga2V5ICsgXCJcXFwiIHdhcyBwcm92aWRlZC5cIik7XG4gICAgICB9XG5cbiAgICAgIG1vZGlmaWVyLnJlcXVpcmVzICYmIG1vZGlmaWVyLnJlcXVpcmVzLmZvckVhY2goZnVuY3Rpb24gKHJlcXVpcmVtZW50KSB7XG4gICAgICAgIGlmIChtb2RpZmllcnMuZmluZChmdW5jdGlvbiAobW9kKSB7XG4gICAgICAgICAgcmV0dXJuIG1vZC5uYW1lID09PSByZXF1aXJlbWVudDtcbiAgICAgICAgfSkgPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KE1JU1NJTkdfREVQRU5ERU5DWV9FUlJPUiwgU3RyaW5nKG1vZGlmaWVyLm5hbWUpLCByZXF1aXJlbWVudCwgcmVxdWlyZW1lbnQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSIsImltcG9ydCB7IG1heCBhcyBtYXRoTWF4LCBtaW4gYXMgbWF0aE1pbiB9IGZyb20gXCIuL21hdGguanNcIjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoaW4obWluLCB2YWx1ZSwgbWF4KSB7XG4gIHJldHVybiBtYXRoTWF4KG1pbiwgbWF0aE1pbih2YWx1ZSwgbWF4KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gd2l0aGluTWF4Q2xhbXAobWluLCB2YWx1ZSwgbWF4KSB7XG4gIHZhciB2ID0gd2l0aGluKG1pbiwgdmFsdWUsIG1heCk7XG4gIHJldHVybiB2ID4gbWF4ID8gbWF4IDogdjtcbn0iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTsgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICAgIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2YgaXRlbVs1XSAhPT0gXCJ1bmRlZmluZWRcIjtcblxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKTtcbiAgICAgIH1cblxuICAgICAgY29udGVudCArPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuXG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmpvaW4oXCJcIik7XG4gIH07IC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG5cblxuICBsaXN0LmkgPSBmdW5jdGlvbiBpKG1vZHVsZXMsIG1lZGlhLCBkZWR1cGUsIHN1cHBvcnRzLCBsYXllcikge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgdW5kZWZpbmVkXV07XG4gICAgfVxuXG4gICAgdmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcblxuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdGhpcy5sZW5ndGg7IGsrKykge1xuICAgICAgICB2YXIgaWQgPSB0aGlzW2tdWzBdO1xuXG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2sgPSAwOyBfayA8IG1vZHVsZXMubGVuZ3RoOyBfaysrKSB7XG4gICAgICB2YXIgaXRlbSA9IFtdLmNvbmNhdChtb2R1bGVzW19rXSk7XG5cbiAgICAgIGlmIChkZWR1cGUgJiYgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1bNV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG1lZGlhKSB7XG4gICAgICAgIGlmICghaXRlbVsyXSkge1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHN1cHBvcnRzKSB7XG4gICAgICAgIGlmICghaXRlbVs0XSkge1xuICAgICAgICAgIGl0ZW1bNF0gPSBcIlwiLmNvbmNhdChzdXBwb3J0cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzRdID0gc3VwcG9ydHM7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gbGlzdDtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHVybCwgb3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICBpZiAoIXVybCkge1xuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICB1cmwgPSBTdHJpbmcodXJsLl9fZXNNb2R1bGUgPyB1cmwuZGVmYXVsdCA6IHVybCk7IC8vIElmIHVybCBpcyBhbHJlYWR5IHdyYXBwZWQgaW4gcXVvdGVzLCByZW1vdmUgdGhlbVxuXG4gIGlmICgvXlsnXCJdLipbJ1wiXSQvLnRlc3QodXJsKSkge1xuICAgIHVybCA9IHVybC5zbGljZSgxLCAtMSk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5oYXNoKSB7XG4gICAgdXJsICs9IG9wdGlvbnMuaGFzaDtcbiAgfSAvLyBTaG91bGQgdXJsIGJlIHdyYXBwZWQ/XG4gIC8vIFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy0zLyN1cmxzXG5cblxuICBpZiAoL1tcIicoKSBcXHRcXG5dfCglMjApLy50ZXN0KHVybCkgfHwgb3B0aW9ucy5uZWVkUXVvdGVzKSB7XG4gICAgcmV0dXJuIFwiXFxcIlwiLmNvbmNhdCh1cmwucmVwbGFjZSgvXCIvZywgJ1xcXFxcIicpLnJlcGxhY2UoL1xcbi9nLCBcIlxcXFxuXCIpLCBcIlxcXCJcIik7XG4gIH1cblxuICByZXR1cm4gdXJsO1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcblxuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGNzc01hcHBpbmcpKSkpO1xuICAgIHZhciBkYXRhID0gXCJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIi5jb25jYXQoYmFzZTY0KTtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IFwiLyojIFwiLmNvbmNhdChkYXRhLCBcIiAqL1wiKTtcbiAgICB2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIFwiLyojIHNvdXJjZVVSTD1cIi5jb25jYXQoY3NzTWFwcGluZy5zb3VyY2VSb290IHx8IFwiXCIpLmNvbmNhdChzb3VyY2UsIFwiICovXCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oXCJcXG5cIik7XG4gIH1cblxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsImNvbnN0IGN1cnJlbmN5U3ltYm9sTWFwID0gcmVxdWlyZSgnLi9tYXAnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdldFN5bWJvbEZyb21DdXJyZW5jeSAoY3VycmVuY3lDb2RlKSB7XG4gIGlmICh0eXBlb2YgY3VycmVuY3lDb2RlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIGNvbnN0IGNvZGUgPSBjdXJyZW5jeUNvZGUudG9VcHBlckNhc2UoKVxuXG4gIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGN1cnJlbmN5U3ltYm9sTWFwLCBjb2RlKSkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIHJldHVybiBjdXJyZW5jeVN5bWJvbE1hcFtjb2RlXVxufVxuXG5tb2R1bGUuZXhwb3J0cy5jdXJyZW5jeVN5bWJvbE1hcCA9IGN1cnJlbmN5U3ltYm9sTWFwXG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgQUVEOiAn2K8u2KUnLFxuICBBRk46ICfYiycsXG4gIEFMTDogJ0wnLFxuICBBTUQ6ICfWjycsXG4gIEFORzogJ8aSJyxcbiAgQU9BOiAnS3onLFxuICBBUlM6ICckJyxcbiAgQVVEOiAnJCcsXG4gIEFXRzogJ8aSJyxcbiAgQVpOOiAn4oK8JyxcbiAgQkFNOiAnS00nLFxuICBCQkQ6ICckJyxcbiAgQkRUOiAn4KezJyxcbiAgQkdOOiAn0LvQsicsXG4gIEJIRDogJy7Yry7YqCcsXG4gIEJJRjogJ0ZCdScsXG4gIEJNRDogJyQnLFxuICBCTkQ6ICckJyxcbiAgQk9COiAnJGInLFxuICBCT1Y6ICdCT1YnLFxuICBCUkw6ICdSJCcsXG4gIEJTRDogJyQnLFxuICBCVEM6ICfigr8nLFxuICBCVE46ICdOdS4nLFxuICBCV1A6ICdQJyxcbiAgQllOOiAnQnInLFxuICBCWVI6ICdCcicsXG4gIEJaRDogJ0JaJCcsXG4gIENBRDogJyQnLFxuICBDREY6ICdGQycsXG4gIENIRTogJ0NIRScsXG4gIENIRjogJ0NIRicsXG4gIENIVzogJ0NIVycsXG4gIENMRjogJ0NMRicsXG4gIENMUDogJyQnLFxuICBDTlk6ICfCpScsXG4gIENPUDogJyQnLFxuICBDT1U6ICdDT1UnLFxuICBDUkM6ICfigqEnLFxuICBDVUM6ICckJyxcbiAgQ1VQOiAn4oKxJyxcbiAgQ1ZFOiAnJCcsXG4gIENaSzogJ0vEjScsXG4gIERKRjogJ0ZkaicsXG4gIERLSzogJ2tyJyxcbiAgRE9QOiAnUkQkJyxcbiAgRFpEOiAn2K/YrCcsXG4gIEVFSzogJ2tyJyxcbiAgRUdQOiAnwqMnLFxuICBFUk46ICdOZmsnLFxuICBFVEI6ICdCcicsXG4gIEVUSDogJ86eJyxcbiAgRVVSOiAn4oKsJyxcbiAgRkpEOiAnJCcsXG4gIEZLUDogJ8KjJyxcbiAgR0JQOiAnwqMnLFxuICBHRUw6ICfigr4nLFxuICBHR1A6ICfCoycsXG4gIEdIQzogJ+KCtScsXG4gIEdIUzogJ0dI4oK1JyxcbiAgR0lQOiAnwqMnLFxuICBHTUQ6ICdEJyxcbiAgR05GOiAnRkcnLFxuICBHVFE6ICdRJyxcbiAgR1lEOiAnJCcsXG4gIEhLRDogJyQnLFxuICBITkw6ICdMJyxcbiAgSFJLOiAna24nLFxuICBIVEc6ICdHJyxcbiAgSFVGOiAnRnQnLFxuICBJRFI6ICdScCcsXG4gIElMUzogJ+KCqicsXG4gIElNUDogJ8KjJyxcbiAgSU5SOiAn4oK5JyxcbiAgSVFEOiAn2Lku2K8nLFxuICBJUlI6ICfvt7wnLFxuICBJU0s6ICdrcicsXG4gIEpFUDogJ8KjJyxcbiAgSk1EOiAnSiQnLFxuICBKT0Q6ICdKRCcsXG4gIEpQWTogJ8KlJyxcbiAgS0VTOiAnS1NoJyxcbiAgS0dTOiAn0LvQsicsXG4gIEtIUjogJ+GfmycsXG4gIEtNRjogJ0NGJyxcbiAgS1BXOiAn4oKpJyxcbiAgS1JXOiAn4oKpJyxcbiAgS1dEOiAnS0QnLFxuICBLWUQ6ICckJyxcbiAgS1pUOiAn4oK4JyxcbiAgTEFLOiAn4oKtJyxcbiAgTEJQOiAnwqMnLFxuICBMS1I6ICfigqgnLFxuICBMUkQ6ICckJyxcbiAgTFNMOiAnTScsXG4gIExUQzogJ8WBJyxcbiAgTFRMOiAnTHQnLFxuICBMVkw6ICdMcycsXG4gIExZRDogJ0xEJyxcbiAgTUFEOiAnTUFEJyxcbiAgTURMOiAnbGVpJyxcbiAgTUdBOiAnQXInLFxuICBNS0Q6ICfQtNC10L0nLFxuICBNTUs6ICdLJyxcbiAgTU5UOiAn4oKuJyxcbiAgTU9QOiAnTU9QJCcsXG4gIE1STzogJ1VNJyxcbiAgTVJVOiAnVU0nLFxuICBNVVI6ICfigqgnLFxuICBNVlI6ICdSZicsXG4gIE1XSzogJ01LJyxcbiAgTVhOOiAnJCcsXG4gIE1YVjogJ01YVicsXG4gIE1ZUjogJ1JNJyxcbiAgTVpOOiAnTVQnLFxuICBOQUQ6ICckJyxcbiAgTkdOOiAn4oKmJyxcbiAgTklPOiAnQyQnLFxuICBOT0s6ICdrcicsXG4gIE5QUjogJ+KCqCcsXG4gIE5aRDogJyQnLFxuICBPTVI6ICfvt7wnLFxuICBQQUI6ICdCLy4nLFxuICBQRU46ICdTLy4nLFxuICBQR0s6ICdLJyxcbiAgUEhQOiAn4oKxJyxcbiAgUEtSOiAn4oKoJyxcbiAgUExOOiAnesWCJyxcbiAgUFlHOiAnR3MnLFxuICBRQVI6ICfvt7wnLFxuICBSTUI6ICfvv6UnLFxuICBST046ICdsZWknLFxuICBSU0Q6ICfQlNC40L0uJyxcbiAgUlVCOiAn4oK9JyxcbiAgUldGOiAnUuKCoycsXG4gIFNBUjogJ++3vCcsXG4gIFNCRDogJyQnLFxuICBTQ1I6ICfigqgnLFxuICBTREc6ICfYrC7Ysy4nLFxuICBTRUs6ICdrcicsXG4gIFNHRDogJ1MkJyxcbiAgU0hQOiAnwqMnLFxuICBTTEw6ICdMZScsXG4gIFNPUzogJ1MnLFxuICBTUkQ6ICckJyxcbiAgU1NQOiAnwqMnLFxuICBTVEQ6ICdEYicsXG4gIFNUTjogJ0RiJyxcbiAgU1ZDOiAnJCcsXG4gIFNZUDogJ8KjJyxcbiAgU1pMOiAnRScsXG4gIFRIQjogJ+C4vycsXG4gIFRKUzogJ1NNJyxcbiAgVE1UOiAnVCcsXG4gIFRORDogJ9ivLtiqJyxcbiAgVE9QOiAnVCQnLFxuICBUUkw6ICfigqQnLFxuICBUUlk6ICfigronLFxuICBUVEQ6ICdUVCQnLFxuICBUVkQ6ICckJyxcbiAgVFdEOiAnTlQkJyxcbiAgVFpTOiAnVFNoJyxcbiAgVUFIOiAn4oK0JyxcbiAgVUdYOiAnVVNoJyxcbiAgVVNEOiAnJCcsXG4gIFVZSTogJ1VZSScsXG4gIFVZVTogJyRVJyxcbiAgVVlXOiAnVVlXJyxcbiAgVVpTOiAn0LvQsicsXG4gIFZFRjogJ0JzJyxcbiAgVkVTOiAnQnMuUycsXG4gIFZORDogJ+KCqycsXG4gIFZVVjogJ1ZUJyxcbiAgV1NUOiAnV1MkJyxcbiAgWEFGOiAnRkNGQScsXG4gIFhCVDogJ8mDJyxcbiAgWENEOiAnJCcsXG4gIFhPRjogJ0NGQScsXG4gIFhQRjogJ+KCoycsXG4gIFhTVTogJ1N1Y3JlJyxcbiAgWFVBOiAnWFVBJyxcbiAgWUVSOiAn77e8JyxcbiAgWkFSOiAnUicsXG4gIFpNVzogJ1pLJyxcbiAgWldEOiAnWiQnLFxuICBaV0w6ICckJ1xufVxuIiwiLy8gZ2l0aHViLmNvbS9waW5lYXBwbGVtYWNoaW5lL3N0cnRpbWUtanNcbi8vIE1JVCBsaWNlbnNlLCBDb3B5cmlnaHQgKGMpIDIwMTggU29waGllIEtpcnNjaG5lciAoc29waGlla0BwaW5lYXBwbGVtYWNoaW5lLmNvbSlcbi8vIFJlZmVyZW5jZXM6XG4vLyBodHRwczovL3d3dy5pYm0uY29tL3N1cHBvcnQva25vd2xlZGdlY2VudGVyL2VuL3Nzd19pYm1faV83MS9ydHJlZi9zdHJwdGkuaHRtXG4vLyBodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmMvbWFudWFsL2h0bWxfbm9kZS9Gb3JtYXR0aW5nLUNhbGVuZGFyLVRpbWUuaHRtbFxuLy8gaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJjL21hbnVhbC9odG1sX25vZGUvTG93XzAwMmRMZXZlbC1UaW1lLVN0cmluZy1QYXJzaW5nLmh0bWxcbi8vIGh0dHA6Ly9tYW43Lm9yZy9saW51eC9tYW4tcGFnZXMvbWFuMy9zdHJwdGltZS4zLmh0bWxcbi8vIGh0dHBzOi8vYXBpZG9jay5jb20vcnVieS9EYXRlVGltZS9zdHJmdGltZVxuLy8gaHR0cDovL3N0cmZ0aW1lLm9yZy9cblxuXG5mdW5jdGlvbiBnZXRGb3JtYXRPcHRpb25zKHRpbWV6b25lLCBvcHRpb25zKXtcbiAgICBsZXQgdXNlT3B0aW9ucztcbiAgICBsZXQgdHogPSB1bmRlZmluZWQ7XG4gICAgaWYoXG4gICAgICAgIHRpbWV6b25lID09PSBudWxsIHx8IHRpbWV6b25lID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgTnVtYmVyLmlzRmluaXRlKHRpbWV6b25lKSB8fCB0eXBlb2YodGltZXpvbmUpID09PSBcInN0cmluZ1wiXG4gICAgKXtcbiAgICAgICAgdHogPSB0aW1lem9uZTtcbiAgICAgICAgdXNlT3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgfWVsc2UgaWYodGltZXpvbmUgJiYgIW9wdGlvbnMpe1xuICAgICAgICB1c2VPcHRpb25zID0gdGltZXpvbmU7XG4gICAgICAgIHR6ID0gdXNlT3B0aW9ucy50ejtcbiAgICB9ZWxzZXtcbiAgICAgICAgdXNlT3B0aW9ucyA9IHt9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICB0ejogdHosXG4gICAgICAgIG9wdGlvbnM6IHVzZU9wdGlvbnMsXG4gICAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0VGltZXpvbmVPZmZzZXRNaW51dGVzKGRhdGUsIHR6KXtcbiAgICBpZih0eiA9PT0gbnVsbCB8fCB0eiA9PT0gdW5kZWZpbmVkKXtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfWVsc2UgaWYodHogPj0gLTE2ICYmIHR6IDw9ICsxNil7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKDYwICogdHopO1xuICAgIH1lbHNlIGlmKE51bWJlci5pc0Zpbml0ZSh0eikpe1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih0eik7XG4gICAgfWVsc2UgaWYodHogPT09IFwibG9jYWxcIil7XG4gICAgICAgIHJldHVybiAtKGRhdGUgfHwgbmV3IERhdGUoKSkuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgICB9ZWxzZXtcbiAgICAgICAgY29uc3QgdHpVcHBlciA9IFN0cmluZyh0eikudG9VcHBlckNhc2UoKTtcbiAgICAgICAgaWYodHpVcHBlciBpbiBkZWZhdWx0VGltZXpvbmVOYW1lcyl7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSBNYXRoLmZsb29yKDYwICogZGVmYXVsdFRpbWV6b25lTmFtZXNbdHpVcHBlcl0pO1xuICAgICAgICAgICAgaWYoTnVtYmVyLmlzRmluaXRlKG9mZnNldCkpe1xuICAgICAgICAgICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgdGltZXpvbmUgb3B0aW9uIFwiJHt0en1cIi5gKTtcbn1cblxuZnVuY3Rpb24gc3RyZnRpbWUoZGF0ZSwgZm9ybWF0LCB0aW1lem9uZSwgb3B0aW9ucyl7XG4gICAgaWYoTnVtYmVyLmlzRmluaXRlKGRhdGUpKXtcbiAgICAgICAgLy8gQWNjZXB0IHVuaXggdGltZXN0YW1wcyAobWlsbGlzZWNvbmRzIHNpbmNlIGVwb2NoKVxuICAgICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgfWVsc2UgaWYoIWRhdGUpe1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBkYXRlIGlucHV0IHdhcyBwcm92aWRlZC5cIik7XG4gICAgfWVsc2UgaWYodHlwZW9mKGRhdGUudG9EYXRlKSA9PT0gXCJmdW5jdGlvblwiKXtcbiAgICAgICAgLy8gU3VwcG9ydCBkYXRlIG9iamVjdHMgZnJvbSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9tb21lbnRcbiAgICAgICAgLy8gU3VwcG9ydCBkYXRlIG9iamVjdHMgZnJvbSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9kYXlqc1xuICAgICAgICBkYXRlID0gZGF0ZS50b0RhdGUoKTtcbiAgICB9ZWxzZSBpZih0eXBlb2YoZGF0ZS50b0pTRGF0ZSkgPT09IFwiZnVuY3Rpb25cIil7XG4gICAgICAgIC8vIFN1cHBvcnQgZGF0ZSBvYmplY3RzIGZyb20gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbHV4b25cbiAgICAgICAgZGF0ZSA9IGRhdGUudG9KU0RhdGUoKTtcbiAgICB9XG4gICAgaWYoIShkYXRlIGluc3RhbmNlb2YgRGF0ZSkpe1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZ2V0IERhdGUgaW5zdGFuY2UgZnJvbSBkYXRlIGlucHV0LlwiKTtcbiAgICB9XG4gICAgY29uc3QgdG9rZW5zID0gVGltZXN0YW1wUGFyc2VyLnBhcnNlRm9ybWF0U3RyaW5nKGZvcm1hdCk7XG4gICAgY29uc3QgdXNlT3B0aW9ucyA9IGdldEZvcm1hdE9wdGlvbnModGltZXpvbmUsIG9wdGlvbnMpO1xuICAgIGNvbnN0IHRpbWV6b25lT2Zmc2V0TWludXRlcyA9IGdldFRpbWV6b25lT2Zmc2V0TWludXRlcyhkYXRlLCB1c2VPcHRpb25zLnR6KTtcbiAgICBjb25zdCB0ekRhdGUgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICBpZih0aW1lem9uZU9mZnNldE1pbnV0ZXMgIT09IHVuZGVmaW5lZCl7XG4gICAgICAgIHR6RGF0ZS5zZXRVVENNaW51dGVzKFxuICAgICAgICAgICAgZGF0ZS5nZXRVVENNaW51dGVzKCkgK1xuICAgICAgICAgICAgdGltZXpvbmVPZmZzZXRNaW51dGVzXG4gICAgICAgICk7XG4gICAgfVxuICAgIGxldCBvdXRwdXQgPSBcIlwiO1xuICAgIGZvcihsZXQgdG9rZW4gb2YgdG9rZW5zKXtcbiAgICAgICAgaWYodG9rZW4gaW5zdGFuY2VvZiBEaXJlY3RpdmUpe1xuICAgICAgICAgICAgb3V0cHV0ICs9IHRva2VuLndyaXRlKHR6RGF0ZSwgXCJcIiwgdXNlT3B0aW9ucy5vcHRpb25zLCB0aW1lem9uZU9mZnNldE1pbnV0ZXMpO1xuICAgICAgICB9ZWxzZSBpZih0b2tlbiBpbnN0YW5jZW9mIERpcmVjdGl2ZS5Ub2tlbil7XG4gICAgICAgICAgICBvdXRwdXQgKz0gdG9rZW4ud3JpdGUodHpEYXRlLCB1c2VPcHRpb25zLm9wdGlvbnMsIHRpbWV6b25lT2Zmc2V0TWludXRlcyk7XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgb3V0cHV0ICs9IHRva2VuO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG59XG5cbmZ1bmN0aW9uIHN0cnB0aW1lKHRpbWVzdGFtcCwgZm9ybWF0LCB0aW1lem9uZSwgb3B0aW9ucyl7XG4gICAgY29uc3QgdXNlT3B0aW9ucyA9IGdldEZvcm1hdE9wdGlvbnModGltZXpvbmUsIG9wdGlvbnMpO1xuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBUaW1lc3RhbXBQYXJzZXIodGltZXN0YW1wLCBmb3JtYXQpO1xuICAgIGNvbnN0IHRpbWV6b25lT2Zmc2V0TWludXRlcyA9IGdldFRpbWV6b25lT2Zmc2V0TWludXRlcyh1bmRlZmluZWQsIHVzZU9wdGlvbnMudHopO1xuICAgIGlmKHRpbWV6b25lT2Zmc2V0TWludXRlcyAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgcGFyc2VyLnRpbWV6b25lT2Zmc2V0TWludXRlcyA9IHRpbWV6b25lT2Zmc2V0TWludXRlcztcbiAgICB9XG4gICAgaWYodXNlT3B0aW9ucy5vcHRpb25zKXtcbiAgICAgICAgZm9yKGxldCBrZXkgaW4gdXNlT3B0aW9ucy5vcHRpb25zKXtcbiAgICAgICAgICAgIHBhcnNlcltrZXldID0gdXNlT3B0aW9ucy5vcHRpb25zW2tleV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gcGFyc2VyLnBhcnNlKCk7XG4gICAgcmV0dXJuIHJlc3VsdC5nZXREYXRlKCk7XG59XG5cbmNvbnN0IHN0cnRpbWUgPSB7XG4gICAgc3RyZnRpbWU6IHN0cmZ0aW1lLFxuICAgIHN0cnB0aW1lOiBzdHJwdGltZSxcbn07XG5cbmNvbnN0IGVuZ2xpc2ggPSB7XG4gICAgZXJhTmFtZXM6IFtcbiAgICAgICAgXCJDRVwiLCBcIkJDRVwiXG4gICAgXSxcbiAgICBtZXJpZGllbU5hbWVzOiBbXG4gICAgICAgIFwiQU1cIiwgXCJQTVwiXG4gICAgXSxcbiAgICBzaG9ydFdlZWtkYXlOYW1lczogW1xuICAgICAgICBcIlN1blwiLCBcIk1vblwiLCBcIlR1ZVwiLCBcIldlZFwiLCBcIlRodVwiLCBcIkZyaVwiLCBcIlNhdFwiXG4gICAgXSxcbiAgICBsb25nV2Vla2RheU5hbWVzOiBbXG4gICAgICAgIFwiU3VuZGF5XCIsIFwiTW9uZGF5XCIsIFwiVHVlc2RheVwiLCBcIldlZG5lc2RheVwiLFxuICAgICAgICBcIlRodXJzZGF5XCIsIFwiRnJpZGF5XCIsIFwiU2F0dXJkYXlcIlxuICAgIF0sXG4gICAgc2hvcnRNb250aE5hbWVzOiBbXG4gICAgICAgIFwiSmFuXCIsIFwiRmViXCIsIFwiTWFyXCIsIFwiQXByXCIsIFwiTWF5XCIsIFwiSnVuXCIsXG4gICAgICAgIFwiSnVsXCIsIFwiQXVnXCIsIFwiU2VwXCIsIFwiT2N0XCIsIFwiTm92XCIsIFwiRGVjXCJcbiAgICBdLFxuICAgIGxvbmdNb250aE5hbWVzOiBbXG4gICAgICAgIFwiSmFudWFyeVwiLCBcIkZlYnJ1YXJ5XCIsIFwiTWFyY2hcIiwgXCJBcHJpbFwiLCBcIk1heVwiLCBcIkp1bmVcIixcbiAgICAgICAgXCJKdWx5XCIsIFwiQXVndXN0XCIsIFwiU2VwdGVtYmVyXCIsIFwiT2N0b2JlclwiLCBcIk5vdmVtYmVyXCIsIFwiRGVjZW1iZXJcIlxuICAgIF0sXG4gICAgb3JkaW5hbFRyYW5zZm9ybTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgY29uc3QgZGlnaXQgPSBNYXRoLmZsb29yKG51bWJlciAlIDEwKTtcbiAgICAgICAgaWYobnVtYmVyID4gMyAmJiBudW1iZXIgPD0gMjApIHJldHVybiBgJHtudW1iZXJ9dGhgO1xuICAgICAgICBpZihkaWdpdCA9PT0gMSkgcmV0dXJuIGAke251bWJlcn1zdGA7XG4gICAgICAgIGVsc2UgaWYoZGlnaXQgPT09IDIpIHJldHVybiBgJHtudW1iZXJ9bmRgO1xuICAgICAgICBlbHNlIGlmKGRpZ2l0ID09PSAzKSByZXR1cm4gYCR7bnVtYmVyfXJkYDtcbiAgICAgICAgZWxzZSByZXR1cm4gYCR7bnVtYmVyfXRoYDtcbiAgICB9LFxufTtcblxuXG5mdW5jdGlvbiBsZWZ0UGFkKGNoYXIsIGxlbmd0aCwgdGV4dCl7XG4gICAgbGV0IHN0cmluZyA9IFN0cmluZyh0ZXh0KTtcbiAgICB3aGlsZShzdHJpbmcubGVuZ3RoIDwgbGVuZ3RoKXtcbiAgICAgICAgc3RyaW5nID0gY2hhciArIHN0cmluZztcbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZztcbn1cblxuZnVuY3Rpb24gd3JpdGVUaW1lem9uZU9mZnNldChvZmZzZXRNaW51dGVzLCBtb2RpZmllcil7XG4gICAgY29uc3QgYWJzT2Zmc2V0ID0gTWF0aC5hYnMob2Zmc2V0TWludXRlcyk7XG4gICAgY29uc3Qgc2lnbiA9IChvZmZzZXRNaW51dGVzID49IDAgPyBcIitcIiA6IFwiLVwiKTtcbiAgICBjb25zdCBob3VyID0gbGVmdFBhZChcIjBcIiwgMiwgTWF0aC5mbG9vcihhYnNPZmZzZXQgLyA2MCkpO1xuICAgIGNvbnN0IG1pbnV0ZSA9IGxlZnRQYWQoXCIwXCIsIDIsIGFic09mZnNldCAlIDYwKTtcbiAgICBpZihtb2RpZmllciA9PT0gXCI6OlwiKXtcbiAgICAgICAgcmV0dXJuIHNpZ24gKyBob3VyICsgXCI6XCIgKyBtaW51dGUgKyBcIjowMFwiO1xuICAgIH1lbHNlIGlmKG1vZGlmaWVyID09PSBcIjpcIil7XG4gICAgICAgIHJldHVybiBzaWduICsgaG91ciArIFwiOlwiICsgbWludXRlO1xuICAgIH1lbHNle1xuICAgICAgICByZXR1cm4gc2lnbiArIGhvdXIgKyBtaW51dGU7XG4gICAgfVxufVxuXG4vLyBHZXQgdGhlIGRheSBvZiB0aGUgd2VlayBnaXZlbiBhbiBpbnB1dCBEYXRlLlxuLy8gUmV0dXJucyAwIGZvciBTdW5kYXksIDEgZm9yIE1vbmRheSwgZXRjLlxuLy8gaHR0cHM6Ly93d3cucXVvcmEuY29tL0hvdy1kb2VzLVRvbW9oaWtvLVNha2Ftb3Rvcy1BbGdvcml0aG0td29yay9hbnN3ZXIvUmF6aW1hbi1ULVY/c3JpZD11MkhOWFxuZnVuY3Rpb24gZ2V0RGF5T2ZXZWVrKGRhdGUpe1xuICAgIGNvbnN0IG9mZnNldHMgPSBbMCwgMywgMiwgNSwgMCwgMywgNSwgMSwgNCwgNiwgMiwgNF07XG4gICAgbGV0IHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgbGV0IG1vbnRoID0gZGF0ZS5nZXRVVENNb250aCgpO1xuICAgIGxldCBkYXkgPSBkYXRlLmdldFVUQ0RhdGUoKTtcbiAgICBpZihtb250aCA8IDIpe1xuICAgICAgICB5ZWFyLS07XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICAgIG9mZnNldHNbbW9udGhdICsgeWVhciArIGRheSArXG4gICAgICAgIE1hdGguZmxvb3IoeWVhciAvIDQpIC1cbiAgICAgICAgTWF0aC5mbG9vcih5ZWFyIC8gMTAwKSArXG4gICAgICAgIE1hdGguZmxvb3IoeWVhciAvIDQwMClcbiAgICApICUgNztcbn1cblxuLy8gR2V0IHRoZSBkYXkgb2YgdGhlIHllYXIgYXMgYSBudW1iZXIgKDEtMzY2KVxuZnVuY3Rpb24gZ2V0RGF5T2ZZZWFyKGRhdGUpe1xuICAgIGNvbnN0IGxlbmd0aHMgPSBtb250aExlbmd0aHMuZm9yWWVhcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkpO1xuICAgIGNvbnN0IG1vbnRocyA9IGxlbmd0aHMuc2xpY2UoMCwgZGF0ZS5nZXRVVENNb250aCgpKTtcbiAgICByZXR1cm4gZGF0ZS5nZXRVVENEYXRlKCkgKyAoXG4gICAgICAgIChtb250aHMubGVuZ3RoICYmIG1vbnRocy5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiKSkgfHwgMFxuICAgICk7XG59XG5cbi8vIEdldCB0aGUgd2VlayBvZiB0aGUgeWVhciAoc3RhcnRpbmcgd2l0aCBTdW5kYXkpICgwLTUzKVxuZnVuY3Rpb24gZ2V0V2Vla09mWWVhckZyb21TdW5kYXkoZGF0ZSl7XG4gICAgY29uc3QgZGF5T2ZZZWFyID0gZ2V0RGF5T2ZZZWFyKGRhdGUpO1xuICAgIGNvbnN0IGZpcnN0RGF5T2ZXZWVrID0gZ2V0Rmlyc3RXZWVrZGF5SW5ZZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSk7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoKGRheU9mWWVhciArIChmaXJzdERheU9mV2VlayB8fCA3KSAtIDEpIC8gNyk7XG59XG5cbi8vIEdldCB0aGUgd2VlayBvZiB0aGUgeWVhciAoc3RhcnRpbmcgd2l0aCBNb25kYXkpICgwLTUzKVxuZnVuY3Rpb24gZ2V0V2Vla09mWWVhckZyb21Nb25kYXkoZGF0ZSl7XG4gICAgY29uc3QgZGF5T2ZZZWFyID0gZ2V0RGF5T2ZZZWFyKGRhdGUpO1xuICAgIGNvbnN0IGRheU9mV2VlayA9IGdldERheU9mV2VlayhkYXRlKTtcbiAgICBjb25zdCBmaXJzdERheU9mV2VlayA9IGdldEZpcnN0V2Vla2RheUluWWVhcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkpO1xuICAgIGNvbnN0IHN1bmRheVdlZWsgPSBNYXRoLmZsb29yKChkYXlPZlllYXIgKyAoZmlyc3REYXlPZldlZWsgfHwgNykgLSAxKSAvIDcpO1xuICAgIHJldHVybiBzdW5kYXlXZWVrIC0gKGRheU9mV2VlayA9PT0gMCA/IDEgOiAwKSArIChmaXJzdERheU9mV2VlayA9PT0gMSA/IDEgOiAwKTtcbn1cblxuZnVuY3Rpb24gZ2V0SVNPV2Vla3NJblllYXIoeWVhcil7XG4gICAgY29uc3QgcHJpb3JZZWFyID0geWVhciAtIDE7XG4gICAgY29uc3QgYSA9ICh5ZWFyICtcbiAgICAgICAgTWF0aC5mbG9vcih5ZWFyIC8gNCkgLVxuICAgICAgICBNYXRoLmZsb29yKHllYXIgLyAxMDApICtcbiAgICAgICAgTWF0aC5mbG9vcih5ZWFyIC8gNDAwKVxuICAgICkgJSA3O1xuICAgIGNvbnN0IGIgPSAocHJpb3JZZWFyICtcbiAgICAgICAgTWF0aC5mbG9vcihwcmlvclllYXIgLyA0KSAtXG4gICAgICAgIE1hdGguZmxvb3IocHJpb3JZZWFyIC8gMTAwKSArXG4gICAgICAgIE1hdGguZmxvb3IocHJpb3JZZWFyIC8gNDAwKVxuICAgICkgJSA3O1xuICAgIHJldHVybiBhID09PSA0IHx8IGIgPT09IDMgPyA1MyA6IDUyO1xufVxuXG4vLyBHZXQgdGhlIElTTyB3ZWVrIG9mIHRoZSB5ZWFyXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNXZWVrX2RhdGVzXG5mdW5jdGlvbiBnZXRJU09XZWVrT2ZZZWFyKGRhdGUpe1xuICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgY29uc3QgZGF5T2ZZZWFyID0gZ2V0RGF5T2ZZZWFyKGRhdGUpO1xuICAgIGNvbnN0IGRheU9mV2VlayA9IGdldERheU9mV2VlayhkYXRlKTtcbiAgICBjb25zdCB3ZWVrTnVtYmVyID0gTWF0aC5mbG9vcigoMTAgKyBkYXlPZlllYXIgLSAoZGF5T2ZXZWVrIHx8IDcpKSAvIDcpO1xuICAgIGlmKHdlZWtOdW1iZXIgPCAxKXtcbiAgICAgICAgcmV0dXJuIGdldElTT1dlZWtzSW5ZZWFyKHllYXIgLSAxKTtcbiAgICB9ZWxzZSBpZih3ZWVrTnVtYmVyID4gZ2V0SVNPV2Vla3NJblllYXIoeWVhcikpe1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9ZWxzZXtcbiAgICAgICAgcmV0dXJuIHdlZWtOdW1iZXI7XG4gICAgfVxufVxuXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5mdW5jdGlvbiBnZXRJU09XZWVrRGF0ZVllYXIoZGF0ZSl7XG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICBjb25zdCBkYXlPZlllYXIgPSBnZXREYXlPZlllYXIoZGF0ZSk7XG4gICAgY29uc3QgZGF5T2ZXZWVrID0gZ2V0RGF5T2ZXZWVrKGRhdGUpO1xuICAgIGNvbnN0IHdlZWtOdW1iZXIgPSBNYXRoLmZsb29yKCgxMCArIGRheU9mWWVhciAtIChkYXlPZldlZWsgfHwgNykpIC8gNyk7XG4gICAgaWYod2Vla051bWJlciA8IDEpe1xuICAgICAgICByZXR1cm4geWVhciAtIDE7XG4gICAgfWVsc2UgaWYod2Vla051bWJlciA+IGdldElTT1dlZWtzSW5ZZWFyKHllYXIpKXtcbiAgICAgICAgcmV0dXJuIHllYXIgKyAxO1xuICAgIH1lbHNle1xuICAgICAgICByZXR1cm4geWVhcjtcbiAgICB9XG59XG5cbmNsYXNzIERpcmVjdGl2ZXtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKXtcbiAgICAgICAgLy8gTGlzdCBvZiBwb3NzaWJsZSBuYW1lcyBmb3IgdGhpcyBkaXJlY3RpdmVcbiAgICAgICAgdGhpcy5uYW1lcyA9IG9wdGlvbnMubmFtZXM7XG4gICAgICAgIC8vIFBhZCBudW1iZXJzIHRvIHRoaXMgbGVuZ3RoIChub3JtYWxseSlcbiAgICAgICAgdGhpcy5wYWRMZW5ndGggPSBvcHRpb25zLnBhZExlbmd0aDtcbiAgICAgICAgLy8gQSBsaWtlbHkgKGJ1dCBub3Qgc3RyaWN0KSBsZW5ndGggdG8gYmUgdXNlZCB3aGVuIHJlc29sdmluZ1xuICAgICAgICAvLyBhbWJpZ3VvdXMgcGFyc2luZyBpbnB1dHNcbiAgICAgICAgdGhpcy5saWtlbHlMZW5ndGggPSBvcHRpb25zLmxpa2VseUxlbmd0aDtcbiAgICAgICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyBkaXJlY3RpdmUgdXNlcyB0ZXh0IChhcyBvcHBvc2VkIHRvIG51bWJlcnMpXG4gICAgICAgIHRoaXMudGV4dCA9IG9wdGlvbnMudGV4dDtcbiAgICAgICAgLy8gVGhlIG1pbmltdW0gcGVybWl0dGVkIG51bWVyaWMgdmFsdWUgZm9yIGEgZGlyZWN0aXZlXG4gICAgICAgIHRoaXMubWluaW11bSA9IG9wdGlvbnMubWluaW11bTtcbiAgICAgICAgLy8gVGhlIG1heGltdW0gcGVybWl0dGVkIG51bWVyaWMgdmFsdWUgZm9yIGEgZGlyZWN0aXZlXG4gICAgICAgIHRoaXMubWF4aW11bSA9IG9wdGlvbnMubWF4aW11bTtcbiAgICAgICAgLy8gV2hldGhlciB0aGlzIGRpcmVjdGl2ZSByZXByZXNlbnRzIGEgbnVtYmVyIHRoYXQgY2FuIGJlIG5lZ2F0aXZlXG4gICAgICAgIHRoaXMuY2FuQmVOZWdhdGl2ZSA9IG9wdGlvbnMuY2FuQmVOZWdhdGl2ZTtcbiAgICAgICAgLy8gVGhpcyBkaXJlY3RpdmUgc2hvdWxkIGFsd2F5cyBiZSByZXdyaXR0ZW4gdXNpbmcgYSBjb21iaW5hdGlvbiBvZlxuICAgICAgICAvLyBvdGhlciBkaXJlY3RpdmVzXG4gICAgICAgIHRoaXMucmV3cml0ZSA9IG9wdGlvbnMucmV3cml0ZTtcbiAgICAgICAgLy8gRnVuY3Rpb24gdG8gcGFyc2UgY29udGVudCBmcm9tIGEgc3RyaW5nXG4gICAgICAgIHRoaXMucGFyc2VGdW5jdGlvbiA9IG9wdGlvbnMucGFyc2U7XG4gICAgICAgIC8vIEZ1bmN0aW9uIHRvIHdyaXRlIGNvbnRlbnQgYXMgYSBzdHJpbmcsIGdpdmVuIGEgZGF0ZSB0byBmb3JtYXRcbiAgICAgICAgdGhpcy53cml0ZUZ1bmN0aW9uID0gb3B0aW9ucy53cml0ZTtcbiAgICAgICAgLy8gRnVuY3Rpb24gdG8gc3RvcmUgYSBwYXJzZWQgbnVtZXJpYyB2YWx1ZVxuICAgICAgICB0aGlzLnN0b3JlRnVuY3Rpb24gPSBvcHRpb25zLnN0b3JlO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0QnlOYW1lKG5hbWUpe1xuICAgICAgICBmb3IobGV0IGRpcmVjdGl2ZSBvZiBEaXJlY3RpdmUubGlzdCl7XG4gICAgICAgICAgICBpZihkaXJlY3RpdmUubmFtZXMuaW5kZXhPZihuYW1lKSA+PSAwKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlyZWN0aXZlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlzT3JkaW5hbCgpe1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGdldENhbkJlTmVnYXRpdmUoKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FuQmVOZWdhdGl2ZTtcbiAgICB9XG4gICAgZ2V0TGlrZWx5TGVuZ3RoKCl7XG4gICAgICAgIHJldHVybiB0aGlzLmxpa2VseUxlbmd0aDtcbiAgICB9XG4gICAgZ2V0UmV3cml0ZVBhcnNlZChwYXJzZUZvcm1hdFN0cmluZyl7XG4gICAgICAgIGlmKCF0aGlzLnJld3JpdGVQYXJzZWRWYWx1ZSl7XG4gICAgICAgICAgICB0aGlzLnJld3JpdGVQYXJzZWRWYWx1ZSA9IHBhcnNlRm9ybWF0U3RyaW5nKHRoaXMucmV3cml0ZSk7XG4gICAgICAgICAgICBmb3IobGV0IHRva2VuIG9mIHRoaXMucmV3cml0ZVBhcnNlZFZhbHVlKXtcbiAgICAgICAgICAgICAgICB0b2tlbi5leHBhbmRlZEZyb20gPSB0aGlzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJld3JpdGVQYXJzZWRWYWx1ZTtcbiAgICB9XG4gICAgaGFzUGFyc2VGdW5jdGlvbigpe1xuICAgICAgICByZXR1cm4gISF0aGlzLnBhcnNlRnVuY3Rpb247XG4gICAgfVxuICAgIGhhc1N0b3JlRnVuY3Rpb24oKXtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5zdG9yZUZ1bmN0aW9uO1xuICAgIH1cbiAgICBwYXJzZShwYXJzZXIpe1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUZ1bmN0aW9uLmNhbGwocGFyc2VyKTtcbiAgICB9XG4gICAgc3RvcmUocGFyc2VyLCBudW1iZXIpe1xuICAgICAgICB0aGlzLnN0b3JlRnVuY3Rpb24uY2FsbChwYXJzZXIsIG51bWJlcik7XG4gICAgfVxuICAgIHdyaXRlKGRhdGUsIG1vZGlmaWVyLCBvcHRpb25zLCB0aW1lem9uZU9mZnNldE1pbnV0ZXMpe1xuICAgICAgICByZXR1cm4gdGhpcy53cml0ZUZ1bmN0aW9uKGRhdGUsIG1vZGlmaWVyLCBvcHRpb25zLCB0aW1lem9uZU9mZnNldE1pbnV0ZXMpO1xuICAgIH1cbiAgICBudW1iZXJJbkJvdW5kcyh2YWx1ZSl7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoIU51bWJlci5pc0Zpbml0ZSh0aGlzLm1pbmltdW0pIHx8IHZhbHVlID49IHRoaXMubWluaW11bSkgJiZcbiAgICAgICAgICAgICghTnVtYmVyLmlzRmluaXRlKHRoaXMubWF4aW11bSkgfHwgdmFsdWUgPD0gdGhpcy5tYXhpbXVtKVxuICAgICAgICApO1xuICAgIH1cbiAgICBnZXRCb3VuZHNTdHJpbmcoKXtcbiAgICAgICAgaWYoTnVtYmVyLmlzRmluaXRlKHRoaXMubWluaW11bSkgJiYgTnVtYmVyLmlzRmluaXRlKHRoaXMubWF4aW11bSkpe1xuICAgICAgICAgICAgcmV0dXJuIGBbJHt0aGlzLm1pbmltdW19LCAke3RoaXMubWF4aW11bX1dYDtcbiAgICAgICAgfWVsc2UgaWYoTnVtYmVyLmlzRmluaXRlKHRoaXMubWluaW11bSkpe1xuICAgICAgICAgICAgcmV0dXJuIGBbJHt0aGlzLm1pbmltdW19LCAuLi5dYDtcbiAgICAgICAgfWVsc2UgaWYoTnVtYmVyLmlzRmluaXRlKHRoaXMubWF4aW11bSkpe1xuICAgICAgICAgICAgcmV0dXJuIGBbLi4uLCAke3RoaXMubWF4aW11bX1dYDtcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvU3RyaW5nKCl7XG4gICAgICAgIHJldHVybiBcIiVcIiArIHRoaXMubmFtZXNbMF07XG4gICAgfVxufVxuXG5EaXJlY3RpdmUuVG9rZW4gPSBjbGFzcyBEaXJlY3RpdmVUb2tlbntcbiAgICBjb25zdHJ1Y3Rvcihtb2RpZmllciwgZGlyZWN0aXZlKXtcbiAgICAgICAgdGhpcy5tb2RpZmllciA9IG1vZGlmaWVyO1xuICAgICAgICB0aGlzLmRpcmVjdGl2ZSA9IGRpcmVjdGl2ZTtcbiAgICAgICAgdGhpcy5leHBhbmRlZEZyb20gPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlzT3JkaW5hbCgpe1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RpZmllciA9PT0gXCI6XCI7XG4gICAgfVxuICAgIGdldENhbkJlTmVnYXRpdmUoKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlyZWN0aXZlLmNhbkJlTmVnYXRpdmU7XG4gICAgfVxuICAgIGdldExpa2VseUxlbmd0aCgpe1xuICAgICAgICByZXR1cm4gdGhpcy5kaXJlY3RpdmUubGlrZWx5TGVuZ3RoO1xuICAgIH1cbiAgICBoYXNQYXJzZUZ1bmN0aW9uKCl7XG4gICAgICAgIHJldHVybiB0aGlzLmRpcmVjdGl2ZS5oYXNQYXJzZUZ1bmN0aW9uKCk7XG4gICAgfVxuICAgIGhhc1N0b3JlRnVuY3Rpb24oKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlyZWN0aXZlLmhhc1N0b3JlRnVuY3Rpb24oKTtcbiAgICB9XG4gICAgcGFyc2UocGFyc2VyKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlyZWN0aXZlLnBhcnNlRnVuY3Rpb24uY2FsbChwYXJzZXIsIHRoaXMubW9kaWZpZXIpO1xuICAgIH1cbiAgICBzdG9yZShwYXJzZXIsIG51bWJlcil7XG4gICAgICAgIHRoaXMuZGlyZWN0aXZlLnN0b3JlRnVuY3Rpb24uY2FsbChwYXJzZXIsIG51bWJlcik7XG4gICAgfVxuICAgIHdyaXRlKGRhdGUsIG9wdGlvbnMsIHRpbWV6b25lT2Zmc2V0TWludXRlcyl7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZGlyZWN0aXZlLndyaXRlKGRhdGUsIHRoaXMubW9kaWZpZXIsIG9wdGlvbnMsIHRpbWV6b25lT2Zmc2V0TWludXRlcyk7XG4gICAgICAgIGlmKHRoaXMubW9kaWZpZXIgPT09IFwiXlwiKXtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQpO1xuICAgICAgICAgICAgaWYodHlwZW9mKHJlc3VsdCkgPT09IFwibnVtYmVyXCIpIHJldHVybiByZXN1bHRTdHJpbmc7XG4gICAgICAgICAgICBjb25zdCB1cHBlciA9IHJlc3VsdFN0cmluZy50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHVwcGVyICE9PSByZXN1bHRTdHJpbmcgPyB1cHBlciA6IHJlc3VsdFN0cmluZy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9ZWxzZSBpZih0aGlzLm1vZGlmaWVyID09PSBcIl9cIiAmJiB0aGlzLmRpcmVjdGl2ZS5wYWRMZW5ndGgpe1xuICAgICAgICAgICAgcmV0dXJuIGxlZnRQYWQoXCIgXCIsIHRoaXMuZGlyZWN0aXZlLnBhZExlbmd0aCwgcmVzdWx0KTtcbiAgICAgICAgfWVsc2UgaWYodGhpcy5tb2RpZmllciA9PT0gXCJfXCIgJiYgdGhpcy5kaXJlY3RpdmUudGV4dCl7XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKHJlc3VsdCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfWVsc2UgaWYodGhpcy5tb2RpZmllciA9PT0gXCItXCIgJiYgdGhpcy5kaXJlY3RpdmUucGFkTGVuZ3RoKXtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcocmVzdWx0KTtcbiAgICAgICAgfWVsc2UgaWYodGhpcy5tb2RpZmllciA9PT0gXCI6XCIgJiYgIXRoaXMuZGlyZWN0aXZlLnRleHQpe1xuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtID0gKChvcHRpb25zICYmIG9wdGlvbnMub3JkaW5hbFRyYW5zZm9ybSkgfHxcbiAgICAgICAgICAgICAgICBlbmdsaXNoLm9yZGluYWxUcmFuc2Zvcm1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNmb3JtKHJlc3VsdCk7XG4gICAgICAgIH1lbHNlIGlmKCF0aGlzLmRpcmVjdGl2ZS50ZXh0ICYmIHRoaXMuZGlyZWN0aXZlLnBhZExlbmd0aCl7XG4gICAgICAgICAgICByZXR1cm4gKHJlc3VsdCA+PSAwID9cbiAgICAgICAgICAgICAgICBsZWZ0UGFkKFwiMFwiLCB0aGlzLmRpcmVjdGl2ZS5wYWRMZW5ndGgsIHJlc3VsdCkgOlxuICAgICAgICAgICAgICAgIGAtJHtsZWZ0UGFkKFwiMFwiLCB0aGlzLmRpcmVjdGl2ZS5wYWRMZW5ndGgsIC1yZXN1bHQpfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhyZXN1bHQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG51bWJlckluQm91bmRzKHZhbHVlKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlyZWN0aXZlLm51bWJlckluQm91bmRzKHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0Qm91bmRzU3RyaW5nKCl7XG4gICAgICAgIHJldHVybiB0aGlzLmRpcmVjdGl2ZS5nZXRCb3VuZHNTdHJpbmcoKTtcbiAgICB9XG4gICAgdG9TdHJpbmcoKXtcbiAgICAgICAgcmV0dXJuIFwiJVwiICsgdGhpcy5tb2RpZmllciArIHRoaXMuZGlyZWN0aXZlLm5hbWVzWzBdO1xuICAgIH1cbn1cblxuRGlyZWN0aXZlLlN0cmluZ1Rva2VuID0gY2xhc3MgRGlyZWN0aXZlU3RyaW5nVG9rZW57XG4gICAgY29uc3RydWN0b3Ioc3RyaW5nKXtcbiAgICAgICAgdGhpcy5zdHJpbmcgPSBzdHJpbmcgfHwgXCJcIjtcbiAgICAgICAgdGhpcy5leHBhbmRlZEZyb20gPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGFkZENoYXJhY3RlcihjaCl7XG4gICAgICAgIHRoaXMuc3RyaW5nICs9IGNoO1xuICAgIH1cbiAgICB0b1N0cmluZygpe1xuICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmc7XG4gICAgfVxufVxuXG5EaXJlY3RpdmUubGlzdCA9IFtcbiAgICAvLyBBYmJyZXZpYXRlZCB3ZWVrZGF5IG5hbWVcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcImFcIl0sXG4gICAgICAgIHRleHQ6IHRydWUsXG4gICAgICAgIHBhcnNlOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgdGhpcy5kYXlPZldlZWsgPSB0aGlzLnBhcnNlV2Vla2RheU5hbWUodGhpcyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlLCBtb2RpZmllciwgb3B0aW9ucyl7XG4gICAgICAgICAgICBjb25zdCBuYW1lcyA9ICgob3B0aW9ucyAmJiBvcHRpb25zLnNob3J0V2Vla2RheU5hbWVzKSB8fFxuICAgICAgICAgICAgICAgIGVuZ2xpc2guc2hvcnRXZWVrZGF5TmFtZXNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gbmFtZXNbZGF0ZS5nZXRVVENEYXkoKSAlIDddO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIExvbmcgd2Vla2RheSBuYW1lXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJBXCJdLFxuICAgICAgICB0ZXh0OiB0cnVlLFxuICAgICAgICBwYXJzZTogZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHRoaXMuZGF5T2ZXZWVrID0gdGhpcy5wYXJzZVdlZWtkYXlOYW1lKHRoaXMpO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSwgbW9kaWZpZXIsIG9wdGlvbnMpe1xuICAgICAgICAgICAgY29uc3QgbmFtZXMgPSAoKG9wdGlvbnMgJiYgb3B0aW9ucy5sb25nV2Vla2RheU5hbWVzKSB8fFxuICAgICAgICAgICAgICAgIGVuZ2xpc2gubG9uZ1dlZWtkYXlOYW1lc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBuYW1lc1tkYXRlLmdldFVUQ0RheSgpICUgN107XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gQWJicmV2aWF0ZWQgbW9udGggbmFtZVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiYlwiLCBcImhcIl0sXG4gICAgICAgIHRleHQ6IHRydWUsXG4gICAgICAgIHBhcnNlOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgdGhpcy5tb250aCA9IDEgKyB0aGlzLnBhcnNlTW9udGhOYW1lKHRoaXMpO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSwgbW9kaWZpZXIsIG9wdGlvbnMpe1xuICAgICAgICAgICAgY29uc3QgbmFtZXMgPSAoKG9wdGlvbnMgJiYgb3B0aW9ucy5zaG9ydE1vbnRoTmFtZXMpIHx8XG4gICAgICAgICAgICAgICAgZW5nbGlzaC5zaG9ydE1vbnRoTmFtZXNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gbmFtZXNbZGF0ZS5nZXRVVENNb250aCgpICUgMTJdO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIExvbmcgbW9udGggbmFtZVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiQlwiXSxcbiAgICAgICAgdGV4dDogdHJ1ZSxcbiAgICAgICAgcGFyc2U6IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB0aGlzLm1vbnRoID0gMSArIHRoaXMucGFyc2VNb250aE5hbWUodGhpcyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlLCBtb2RpZmllciwgb3B0aW9ucyl7XG4gICAgICAgICAgICBjb25zdCBuYW1lcyA9ICgob3B0aW9ucyAmJiBvcHRpb25zLmxvbmdNb250aE5hbWVzKSB8fFxuICAgICAgICAgICAgICAgIGVuZ2xpc2gubG9uZ01vbnRoTmFtZXNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gbmFtZXNbZGF0ZS5nZXRVVENNb250aCgpICUgMTJdO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIENvbWJpbmF0aW9uIGRhdGUgYW5kIHRpbWUsIHNhbWUgYXMgXCIlYSAlYiAlZSAlSDolTTolUyAlWVwiXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJjXCJdLFxuICAgICAgICByZXdyaXRlOiBcIiVhICViICVlICVIOiVNOiVTICVZXCIsXG4gICAgfSksXG4gICAgLy8gQ2VudHVyeSAoY29tcGxlbWVudHMgJXkpXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJDXCJdLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIGNhbkJlTmVnYXRpdmU6IHRydWUsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5jZW50dXJ5ID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkgLyAxMDApO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFR3by1kaWdpdCBkYXkgb2YgbW9udGhcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcImRcIl0sXG4gICAgICAgIHBhZExlbmd0aDogMixcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAyLFxuICAgICAgICBtaW5pbXVtOiAxLFxuICAgICAgICBtYXhpbXVtOiAzMSxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLmRheU9mTW9udGggPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBkYXRlLmdldFVUQ0RhdGUoKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBTYW1lIGFzICVtLyVkLyV5XG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJEXCIsIFwieFwiXSxcbiAgICAgICAgcmV3cml0ZTogXCIlbS8lZC8leVwiLFxuICAgIH0pLFxuICAgIC8vIERheSBvZiBtb250aCBwYWRkZWQgd2l0aCBzcGFjZXMgKHNhbWUgYXMgXCIlX2RcIilcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcImVcIl0sXG4gICAgICAgIGxpa2VseUxlbmd0aDogMixcbiAgICAgICAgbWluaW11bTogMSxcbiAgICAgICAgbWF4aW11bTogMzEsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5kYXlPZk1vbnRoID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSwgbW9kaWZpZXIpe1xuICAgICAgICAgICAgaWYoIW1vZGlmaWVyKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGVmdFBhZChcIiBcIiwgMiwgZGF0ZS5nZXRVVENEYXRlKCkpO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGUuZ2V0VVRDRGF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFNpeC1kaWdpdCBtaWNyb3NlY29uZFxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiZlwiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiA2LFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDYsXG4gICAgICAgIG1pbmltdW06IDAsXG4gICAgICAgIG1heGltdW06IDk5OTk5OSxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLm1pY3Jvc2Vjb25kID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gMTAwMCAqIGRhdGUuZ2V0VVRDTWlsbGlzZWNvbmRzKCk7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gU2FtZSBhcyAlWS0lbS0lZFxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiRlwiXSxcbiAgICAgICAgcmV3cml0ZTogXCIlWS0lbS0lZFwiLFxuICAgIH0pLFxuICAgIC8vIFR3by1kaWdpdCBJU08gd2VlayB5ZWFyXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJnXCJdLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5pc29Ud29EaWdpdFllYXIgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBnZXRJU09XZWVrRGF0ZVllYXIoZGF0ZSkgJSAxMDA7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gRnVsbCBJU08gd2VlayB5ZWFyXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJHXCJdLFxuICAgICAgICBwYWRMZW5ndGg6IDQsXG4gICAgICAgIGxpa2VseUxlbmd0aDogNCxcbiAgICAgICAgY2FuQmVOZWdhdGl2ZTogdHJ1ZSxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLmlzb1llYXIgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBnZXRJU09XZWVrRGF0ZVllYXIoZGF0ZSk7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gVHdvLWRpZ2l0IGhvdXIgKDAtMjMpXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJIXCIsIFwia1wiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAyLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIG1pbmltdW06IDAsXG4gICAgICAgIG1heGltdW06IDIzLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMuaG91ciA9IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUuZ2V0VVRDSG91cnMoKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBUd28tZGlnaXQgaG91ciAoMS0xMikgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoICVwIChBTS9QTSlcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIklcIiwgXCJsXCJdLFxuICAgICAgICBwYWRMZW5ndGg6IDIsXG4gICAgICAgIGxpa2VseUxlbmd0aDogMixcbiAgICAgICAgbWluaW11bTogMSxcbiAgICAgICAgbWF4aW11bTogMTIsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5ob3VyID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gKGRhdGUuZ2V0VVRDSG91cnMoKSAlIDEyKSB8fCAxMjtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBEYXkgaW4geWVhclxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wialwiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAzLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDMsXG4gICAgICAgIG1pbmltdW06IDEsXG4gICAgICAgIG1heGltdW06IDM2NixcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLmRheU9mWWVhciA9IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIGdldERheU9mWWVhcihkYXRlKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBUaHJlZS1kaWdpdCBtaWxsaXNlY29uZFxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiTFwiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAzLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDMsXG4gICAgICAgIG1pbmltdW06IDAsXG4gICAgICAgIG1heGltdW06IDk5OSxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLm1pbGxpc2Vjb25kID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZS5nZXRVVENNaWxsaXNlY29uZHMoKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBUd28tZGlnaXQgbW9udGggbnVtYmVyICgxLTEyKVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wibVwiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAyLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIG1pbmltdW06IDEsXG4gICAgICAgIG1heGltdW06IDEyLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMubW9udGggPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiAxICsgZGF0ZS5nZXRVVENNb250aCgpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFR3by1kaWdpdCBtaW51dGUgKDAtNTkpXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJNXCJdLFxuICAgICAgICBwYWRMZW5ndGg6IDIsXG4gICAgICAgIGxpa2VseUxlbmd0aDogMixcbiAgICAgICAgbWluaW11bTogMCxcbiAgICAgICAgbWF4aW11bTogNTksXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5taW51dGUgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBkYXRlLmdldFVUQ01pbnV0ZXMoKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBBTSBvciBQTSAodXBwZXJjYXNlKVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wicFwiXSxcbiAgICAgICAgdGV4dDogdHJ1ZSxcbiAgICAgICAgcGFyc2U6IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB0aGlzLm1lcmlkaWVtID0gdGhpcy5wYXJzZU1lcmlkaWVtTmFtZSgpO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSwgbW9kaWZpZXIsIG9wdGlvbnMpe1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBkYXRlLmdldFVUQ0hvdXJzKCkgPCAxMiA/IDAgOiAxO1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAob3B0aW9ucyAmJiBvcHRpb25zLm1lcmlkaWVtTmFtZXMpIHx8IGVuZ2xpc2gubWVyaWRpZW1OYW1lc1xuICAgICAgICAgICAgKVtpbmRleF07XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gQU0gb3IgUE0gKGxvd2VyY2FzZSlcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIlBcIl0sXG4gICAgICAgIGxpa2VseUxlbmd0aDogMixcbiAgICAgICAgdGV4dDogdHJ1ZSxcbiAgICAgICAgcGFyc2U6IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB0aGlzLm1lcmlkaWVtID0gdGhpcy5wYXJzZU1lcmlkaWVtTmFtZSgpO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSwgbW9kaWZpZXIsIG9wdGlvbnMpe1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBkYXRlLmdldFVUQ0hvdXJzKCkgPCAxMiA/IDAgOiAxO1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAob3B0aW9ucyAmJiBvcHRpb25zLm1lcmlkaWVtTmFtZXMpIHx8IGVuZ2xpc2gubWVyaWRpZW1OYW1lc1xuICAgICAgICAgICAgKVtpbmRleF0udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBOdW1iZXIgb2YgbWlyY29zZWNvbmRzIHNpbmNlIGVwb2NoXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJRXCJdLFxuICAgICAgICBjYW5CZU5lZ2F0aXZlOiB0cnVlLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMubWljcm9zZWNvbmRzU2luY2VFcG9jaCA9IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoZGF0ZS5nZXRUaW1lKCkgKiAxMDAwKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBTYW1lIGFzIFwiJUk6JU06JVMgJXBcIlxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiclwiXSxcbiAgICAgICAgcmV3cml0ZTogXCIlSTolTTolUyAlcFwiLFxuICAgIH0pLFxuICAgIC8vIFNhbWUgYXMgXCIlSDolTVwiXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJSXCJdLFxuICAgICAgICByZXdyaXRlOiBcIiVIOiVNXCIsXG4gICAgfSksXG4gICAgLy8gTnVtYmVyIG9mIHNlY29uZHMgc2luY2UgZXBvY2hcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcInNcIl0sXG4gICAgICAgIGNhbkJlTmVnYXRpdmU6IHRydWUsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5zZWNvbmRzU2luY2VFcG9jaCA9IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoZGF0ZS5nZXRUaW1lKCkgLyAxMDAwKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBUd28tZGlnaXQgc2Vjb25kICgwLTYxKVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiU1wiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAyLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIG1pbmltdW06IDAsXG4gICAgICAgIG1heGltdW06IDYxLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5taW4oNTksIGRhdGUuZ2V0VVRDU2Vjb25kcygpKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBTYW1lIGFzICVIOiVNOiVTXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJUXCIsIFwiWFwiXSxcbiAgICAgICAgcmV3cml0ZTogXCIlSDolTTolU1wiLFxuICAgIH0pLFxuICAgIC8vIFdlZWtkYXkgbnVtYmVyLCBzdGFydGluZyB3aXRoIE1vbmRheSAoMS03KVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1widVwiXSxcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAxLFxuICAgICAgICBtaW5pbXVtOiAxLFxuICAgICAgICBtYXhpbXVtOiA3LFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMuZGF5T2ZXZWVrID0gbnVtYmVyICUgNztcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIGdldERheU9mV2VlayhkYXRlKSB8fCA3O1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFdlZWsgb2YgdGhlIHllYXIsIHN0YXJ0aW5nIHdpdGggU3VuZGF5ICgwLTUzKVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiVVwiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAyLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIG1pbmltdW06IDAsXG4gICAgICAgIG1heGltdW06IDUzLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMud2Vla09mWWVhckZyb21TdW5kYXkgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBnZXRXZWVrT2ZZZWFyRnJvbVN1bmRheShkYXRlKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBWTVMgZGF0ZSwgc2FtZSBhcyBcIiVlLSViLSVZXCJcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcInZcIl0sXG4gICAgICAgIHJld3JpdGU6IFwiJWUtJWItJVlcIixcbiAgICB9KSxcbiAgICAvLyBJU08gODYwMToxOTg4IHdlZWsgbnVtYmVyICgxLTUzKSwgY29tcGxlbWVudHMgJWcvJUdcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIlZcIl0sXG4gICAgICAgIHBhZExlbmd0aDogMixcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAyLFxuICAgICAgICBtaW5pbXVtOiAxLFxuICAgICAgICBtYXhpbXVtOiA1MyxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLmlzb1dlZWtPZlllYXIgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBnZXRJU09XZWVrT2ZZZWFyKGRhdGUpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFdlZWtkYXkgbnVtYmVyLCBzdGFydGluZyB3aXRoIFN1bmRheSAoMC02KVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wid1wiXSxcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAxLFxuICAgICAgICBtaW5pbXVtOiAwLFxuICAgICAgICBtYXhpbXVtOiA2LFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMuZGF5T2ZXZWVrID0gbnVtYmVyICUgNztcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIGdldERheU9mV2VlayhkYXRlKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBXZWVrIG9mIHRoZSB5ZWFyLCBzdGFydGluZyB3aXRoIE1vbmRheSAoMC01MylcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIldcIl0sXG4gICAgICAgIHBhZExlbmd0aDogMixcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAyLFxuICAgICAgICBtaW5pbXVtOiAwLFxuICAgICAgICBtYXhpbXVtOiA1MyxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLndlZWtPZlllYXJGcm9tTW9uZGF5ID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gZ2V0V2Vla09mWWVhckZyb21Nb25kYXkoZGF0ZSk7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gVHdvLWRpZ2l0IHllYXJcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcInlcIl0sXG4gICAgICAgIHBhZExlbmd0aDogMixcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAyLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMudHdvRGlnaXRZZWFyID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZS5nZXRVVENGdWxsWWVhcigpICUgMTAwO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIEZ1bGwgeWVhciAodXN1YWxseSBmb3VyLWRpZ2l0LCBidXQgbm90IHN0cmljdGx5IHNvKVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiWVwiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiA0LFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDQsXG4gICAgICAgIGNhbkJlTmVnYXRpdmU6IHRydWUsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy55ZWFyID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSwgbW9kaWZpZXIpe1xuICAgICAgICAgICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICAgICAgICAgIC8vIE1vZGlmaWVyIFwiXlwiIHByb2R1Y2VzIHVuc2lnbmVkIHllYXIsIGZvciBjb21iaW5hdGlvbiB3aXRoIGVyYSBcIiUjXCJcbiAgICAgICAgICAgIGlmKHllYXIgPD0gMCAmJiBtb2RpZmllciA9PT0gXCJeXCIpIHJldHVybiAxIC0geWVhcjtcbiAgICAgICAgICAgIGVsc2UgcmV0dXJuIHllYXI7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gVGltZXpvbmUgb2Zmc2V0IGUuZy4gKzA1MDAgb3IgLTEyMDBcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcInpcIl0sXG4gICAgICAgIHRleHQ6IHRydWUsXG4gICAgICAgIHBhcnNlOiBmdW5jdGlvbihtb2RpZmllcil7XG4gICAgICAgICAgICB0aGlzLnRpbWV6b25lT2Zmc2V0TWludXRlcyA9IHRoaXMucGFyc2VUaW1lem9uZU9mZnNldChtb2RpZmllcik7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlLCBtb2RpZmllciwgb3B0aW9ucywgdGltZXpvbmVPZmZzZXRNaW51dGVzKXtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IChOdW1iZXIuaXNGaW5pdGUodGltZXpvbmVPZmZzZXRNaW51dGVzKSA/XG4gICAgICAgICAgICAgICAgdGltZXpvbmVPZmZzZXRNaW51dGVzIDogLWRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiB3cml0ZVRpbWV6b25lT2Zmc2V0KG9mZnNldCwgbW9kaWZpZXIpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFRpbWV6b25lIG9mZnNldCBvciBuYW1lIGUuZy4gVVRDIG9yIEdNVCBvciBFU1Qgb3IgKzA1MDAgb3IgLTEyMDBcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIlpcIl0sXG4gICAgICAgIGxpa2VseUxlbmd0aDogNSxcbiAgICAgICAgdGV4dDogdHJ1ZSxcbiAgICAgICAgcGFyc2U6IGZ1bmN0aW9uKG1vZGlmaWVyKXtcbiAgICAgICAgICAgIGNvbnN0IHR6TGlzdCA9IHRoaXMuZ2V0VGltZXpvbmVOYW1lTGlzdCgpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnBhcnNlSW5kZXhJbkxpc3QodHpMaXN0KTtcbiAgICAgICAgICAgIGlmKGluZGV4ICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgICAgIHRoaXMudGltZXpvbmVPZmZzZXRNaW51dGVzID0gNjAgKiB0aGlzLnRpbWV6b25lTmFtZXNbdHpMaXN0W2luZGV4XV07XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWV6b25lT2Zmc2V0TWludXRlcyA9IHRoaXMucGFyc2VUaW1lem9uZU9mZnNldChtb2RpZmllcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlLCBtb2RpZmllciwgb3B0aW9ucywgdGltZXpvbmVPZmZzZXRNaW51dGVzKXtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IChOdW1iZXIuaXNGaW5pdGUodGltZXpvbmVPZmZzZXRNaW51dGVzKSA/XG4gICAgICAgICAgICAgICAgdGltZXpvbmVPZmZzZXRNaW51dGVzIDogLWRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmKG9mZnNldCA9PT0gMCkgcmV0dXJuIFwiVVRDXCI7XG4gICAgICAgICAgICBlbHNlIHJldHVybiB3cml0ZVRpbWV6b25lT2Zmc2V0KG9mZnNldCwgbW9kaWZpZXIpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFNhbWUgYXMgXCIlYSAlYiAlZSAlSDolTTolUyAlWiAlWVwiXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCIrXCJdLFxuICAgICAgICByZXdyaXRlOiBcIiVhICViICVlICVIOiVNOiVTICVaICVZXCIsXG4gICAgfSksXG4gICAgLy8gRXJhIChCQy9CQ0UpXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCIjXCJdLFxuICAgICAgICB0ZXh0OiB0cnVlLFxuICAgICAgICBwYXJzZTogZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHRoaXMuZXJhID0gdGhpcy5wYXJzZUVyYU5hbWUoKTtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUsIG1vZGlmaWVyLCBvcHRpb25zKXtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpIDw9IDAgPyAxIDogMDtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgKG9wdGlvbnMgJiYgb3B0aW9ucy5lcmFOYW1lcykgfHwgZW5nbGlzaC5lcmFOYW1lc1xuICAgICAgICAgICAgKVtpbmRleF07XG4gICAgICAgIH0sXG4gICAgfSksXG5dO1xuXG4vLyBUaGUgYXNzZXJ0aW9uLWVycm9yIHBhY2thZ2Ugd2FzIHVzZWQgYXMgYSBiYXNpcyBmb3IgdGhlIFRpbWVzdGFtcFBhcnNlRXJyb3IgdHlwZVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2NoYWlqcy9hc3NlcnRpb24tZXJyb3IvYmxvYi9tYXN0ZXIvaW5kZXguanNcblxuLy8gVGhlIGNvbnN0cnVjdG9yXG5mdW5jdGlvbiBUaW1lc3RhbXBQYXJzZUVycm9yKHJlYXNvbiwgcGFyc2VyKXtcbiAgICBFcnJvci5jYWxsKHRoaXMpO1xuICAgIHRoaXMucmVhc29uID0gcmVhc29uO1xuICAgIHRoaXMuZm9ybWF0ID0gcGFyc2VyLmZvcm1hdDtcbiAgICB0aGlzLnRpbWVzdGFtcCA9IHBhcnNlci5zdHJpbmc7XG4gICAgdGhpcy50b2tlbiA9IHBhcnNlci5jdXJyZW50VG9rZW47XG4gICAgdGhpcy5pbmRleCA9IHBhcnNlci5pbmRleDtcbiAgICBpZih0aGlzLnRva2VuICYmIHRoaXMudG9rZW4uZXhwYW5kZWRGcm9tICYmIHRoaXMuaW5kZXggIT09IHVuZGVmaW5lZCkgdGhpcy5tZXNzYWdlID0gKFxuICAgICAgICBgRmFpbGVkIHRvIHBhcnNlIHRva2VuIFwiJHt0aGlzLnRva2VufVwiIGAgK1xuICAgICAgICBgKGV4cGFuZGVkIGZyb20gXCIke3RoaXMudG9rZW4uZXhwYW5kZWRGcm9tfVwiKSBhdCBwb3NpdGlvbiBbJHt0aGlzLmluZGV4fV0gYCArXG4gICAgICAgIGBpbiB0aW1lc3RhbXAgXCIke3RoaXMudGltZXN0YW1wfVwiIHdpdGggZm9ybWF0IFwiJHt0aGlzLmZvcm1hdH1cIjogYCArXG4gICAgICAgIGAke3RoaXMucmVhc29ufWBcbiAgICApO1xuICAgIGVsc2UgaWYodGhpcy50b2tlbiAmJiB0aGlzLmluZGV4ICE9PSB1bmRlZmluZWQpIHRoaXMubWVzc2FnZSA9IChcbiAgICAgICAgYEZhaWxlZCB0byBwYXJzZSB0b2tlbiBcIiR7dGhpcy50b2tlbn1cIiBhdCBwb3NpdGlvbiBbJHt0aGlzLmluZGV4fV0gYCArXG4gICAgICAgIGBpbiB0aW1lc3RhbXAgXCIke3RoaXMudGltZXN0YW1wfVwiIHdpdGggZm9ybWF0IFwiJHt0aGlzLmZvcm1hdH1cIjogYCArXG4gICAgICAgIGAke3RoaXMucmVhc29ufWBcbiAgICApO1xuICAgIGVsc2UgaWYodGhpcy50b2tlbikgdGhpcy5tZXNzYWdlID0gKFxuICAgICAgICBgRmFpbGVkIHRvIHBhcnNlIHRva2VuIFwiJHt0aGlzLnRva2VufVwiIGAgK1xuICAgICAgICBgaW4gZm9ybWF0IFwiJHt0aGlzLmZvcm1hdH1cIjogJHt0aGlzLnJlYXNvbn1gXG4gICAgKTtcbiAgICBlbHNlIHRoaXMubWVzc2FnZSA9IChcbiAgICAgICAgYEZhaWxlZCB3aXRoIGZvcm1hdCBcIiR7dGhpcy5mb3JtYXR9XCI6ICR7dGhpcy5yZWFzb259YFxuICAgICk7XG4gICAgLy8gaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9lcnJvcnMuaHRtbCNlcnJvcnNfZXJyb3JfY2FwdHVyZXN0YWNrdHJhY2VfdGFyZ2V0b2JqZWN0X2NvbnN0cnVjdG9yb3B0XG4gICAgaWYoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2Upe1xuICAgICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgICB9ZWxzZXtcbiAgICAgICAgdHJ5e1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgICAgIH1jYXRjaChlcnJvcil7XG4gICAgICAgICAgICB0aGlzLnN0YWNrID0gZXJyb3Iuc3RhY2s7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFByb3RvdHlwZSB3cmFuZ2xpbmdcblRpbWVzdGFtcFBhcnNlRXJyb3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpO1xuVGltZXN0YW1wUGFyc2VFcnJvci5wcm90b3R5cGUubmFtZSA9IFwiVGltZXN0YW1wUGFyc2VFcnJvclwiO1xuVGltZXN0YW1wUGFyc2VFcnJvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUaW1lc3RhbXBQYXJzZUVycm9yO1xuXG5cbmZ1bmN0aW9uIGlzRGlnaXQoY2gpe1xuICAgIHJldHVybiAoXG4gICAgICAgIGNoID09PSBcIjBcIiB8fCBjaCA9PT0gXCIxXCIgfHwgY2ggPT09IFwiMlwiIHx8IGNoID09PSBcIjNcIiB8fCBjaCA9PT0gXCI0XCIgfHxcbiAgICAgICAgY2ggPT09IFwiNVwiIHx8IGNoID09PSBcIjZcIiB8fCBjaCA9PT0gXCI3XCIgfHwgY2ggPT09IFwiOFwiIHx8IGNoID09PSBcIjlcIlxuICAgICk7XG59XG5cbi8vIE1hdGNoZXMgR05VIEMgc3RycHRpbWUgYmVoYXZpb3Jcbi8vIGh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliYy9tYW51YWwvaHRtbF9ub2RlL0xvd18wMDJkTGV2ZWwtVGltZS1TdHJpbmctUGFyc2luZy5odG1sXG5mdW5jdGlvbiBnZXRZZWFyRnJvbVR3b0RpZ2l0cyh5ZWFyKXtcbiAgICByZXR1cm4geWVhciArICh5ZWFyIDw9IDY4ID8gMjAwMCA6IDE5MDApO1xufVxuXG5mdW5jdGlvbiBnZXRNb250aEZyb21EYXlPZlllYXIoeWVhciwgZGF5T2ZZZWFyKXtcbiAgICBjb25zdCBtb250aHMgPSBtb250aExlbmd0aHMuZm9yWWVhcih5ZWFyKTtcbiAgICBsZXQgZGF5cyA9IDA7XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IG1vbnRocy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGlmKGRheXMgPj0gZGF5T2ZZZWFyKSByZXR1cm4gaTtcbiAgICAgICAgZGF5cyArPSBtb250aHNbaV07XG4gICAgfVxuICAgIHJldHVybiAxMjtcbn1cblxuZnVuY3Rpb24gZ2V0RGF5T2ZNb250aEZyb21EYXlPZlllYXIoeWVhciwgZGF5T2ZZZWFyKXtcbiAgICBjb25zdCBtb250aHMgPSBtb250aExlbmd0aHMuZm9yWWVhcih5ZWFyKTtcbiAgICBsZXQgZGF5cyA9IDA7XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IG1vbnRocy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGlmKGRheU9mWWVhciAtIGRheXMgPD0gbW9udGhzW2ldKSByZXR1cm4gZGF5T2ZZZWFyIC0gZGF5cztcbiAgICAgICAgZGF5cyArPSBtb250aHNbaV07XG4gICAgfVxuICAgIHJldHVybiBkYXlPZlllYXIgLSBkYXlzO1xufVxuXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNXZWVrX2RhdGVzXG5mdW5jdGlvbiBnZXREYXRlRnJvbUlTT1dlZWtEYXRlKHBhcnNlciwgaXNvWWVhciwgaXNvV2Vla09mWWVhciwgZGF5T2ZXZWVrKXtcbiAgICBjb25zdCBmaXJzdERheU9mV2VlayA9IGdldEZpcnN0V2Vla2RheUluWWVhcihpc29ZZWFyKTtcbiAgICBjb25zdCB3ZWVrZGF5T2ZKYW40ID0gKCgzICsgZmlyc3REYXlPZldlZWspICUgNykgfHwgNztcbiAgICBjb25zdCBkYXlzSW5ZZWFyID0gaXNMZWFwWWVhcihpc29ZZWFyKSA/IDM2NiA6IDM2NTtcbiAgICBsZXQgZGF5T2ZZZWFyID0gNyAqIGlzb1dlZWtPZlllYXIgKyAoZGF5T2ZXZWVrIHx8IDcpIC0gd2Vla2RheU9mSmFuNCAtIDM7XG4gICAgaWYoZGF5T2ZZZWFyIDwgMSl7XG4gICAgICAgIHBhcnNlci55ZWFyID0gaXNvWWVhciAtIDE7XG4gICAgICAgIGRheU9mWWVhciArPSBkYXlzSW5ZZWFyO1xuICAgIH1lbHNlIGlmKGRheU9mWWVhciA+IGRheXNJblllYXIpe1xuICAgICAgICBwYXJzZXIueWVhciA9IDEgKyBpc29ZZWFyO1xuICAgICAgICBkYXlPZlllYXIgLT0gZGF5c0luWWVhcjtcbiAgICB9ZWxzZXtcbiAgICAgICAgcGFyc2VyLnllYXIgPSBpc29ZZWFyO1xuICAgIH1cbiAgICBwYXJzZXIubW9udGggPSBnZXRNb250aEZyb21EYXlPZlllYXIocGFyc2VyLnllYXIsIGRheU9mWWVhcik7XG4gICAgcGFyc2VyLmRheU9mTW9udGggPSBnZXREYXlPZk1vbnRoRnJvbURheU9mWWVhcihwYXJzZXIueWVhciwgZGF5T2ZZZWFyKTtcbn1cblxuZnVuY3Rpb24gZ2V0RGF0ZUZyb21TdW5kYXlXZWVrRGF0ZShwYXJzZXIsIHllYXIsIHdlZWtPZlllYXIsIGRheU9mV2Vlayl7XG4gICAgY29uc3QgZmlyc3REYXlPZldlZWsgPSBnZXRGaXJzdFdlZWtkYXlJblllYXIoeWVhcik7XG4gICAgY29uc3QgZGF5T2ZZZWFyID0gMSArIDcgKiB3ZWVrT2ZZZWFyIC0gKGZpcnN0RGF5T2ZXZWVrIHx8IDcpICsgZGF5T2ZXZWVrO1xuICAgIHBhcnNlci55ZWFyID0geWVhcjtcbiAgICBwYXJzZXIubW9udGggPSBnZXRNb250aEZyb21EYXlPZlllYXIoeWVhciwgZGF5T2ZZZWFyKTtcbiAgICBwYXJzZXIuZGF5T2ZNb250aCA9IGdldERheU9mTW9udGhGcm9tRGF5T2ZZZWFyKHllYXIsIGRheU9mWWVhcik7XG59XG5cbmZ1bmN0aW9uIGdldERhdGVGcm9tTW9uZGF5V2Vla0RhdGUocGFyc2VyLCB5ZWFyLCB3ZWVrT2ZZZWFyLCBkYXlPZldlZWspe1xuICAgIGNvbnN0IGZpcnN0RGF5T2ZXZWVrID0gZ2V0Rmlyc3RXZWVrZGF5SW5ZZWFyKHllYXIpO1xuICAgIGNvbnN0IHN1bmRheURheU9mWWVhciA9IDEgKyA3ICogd2Vla09mWWVhciAtIChmaXJzdERheU9mV2VlayB8fCA3KSArIGRheU9mV2VlaztcbiAgICBjb25zdCBkYXlPZlllYXIgPSBzdW5kYXlEYXlPZlllYXIgKyAoXG4gICAgICAgIChkYXlPZldlZWsgPT09IDAgPyA3IDogMCkgLSAoZmlyc3REYXlPZldlZWsgPT09IDEgPyA3IDogMClcbiAgICApO1xuICAgIHBhcnNlci55ZWFyID0geWVhcjtcbiAgICBwYXJzZXIubW9udGggPSBnZXRNb250aEZyb21EYXlPZlllYXIoeWVhciwgZGF5T2ZZZWFyKTtcbiAgICBwYXJzZXIuZGF5T2ZNb250aCA9IGdldERheU9mTW9udGhGcm9tRGF5T2ZZZWFyKHllYXIsIGRheU9mWWVhcik7XG59XG5cbmNsYXNzIFRpbWVzdGFtcFBhcnNlcntcbiAgICBjb25zdHJ1Y3Rvcih0aW1lc3RhbXAsIGZvcm1hdCwgdG9rZW5zKXtcbiAgICAgICAgLy8gUGFyc2VyIHN0YXRlXG4gICAgICAgIHRoaXMuaW5kZXggPSAwO1xuICAgICAgICB0aGlzLnN0cmluZyA9IFN0cmluZyh0aW1lc3RhbXApO1xuICAgICAgICB0aGlzLmZvcm1hdCA9IFN0cmluZyhmb3JtYXQpO1xuICAgICAgICB0aGlzLnRva2VucyA9IHRva2VucyB8fCBUaW1lc3RhbXBQYXJzZXIucGFyc2VGb3JtYXRTdHJpbmcodGhpcy5mb3JtYXQpO1xuICAgICAgICB0aGlzLmZvcmtMZW5ndGggPSAwO1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgLy8gUGFyc2VyIHNldHRpbmdzXG4gICAgICAgIHRoaXMuc2hvcnRXZWVrZGF5TmFtZXMgPSBlbmdsaXNoLnNob3J0V2Vla2RheU5hbWVzO1xuICAgICAgICB0aGlzLmxvbmdXZWVrZGF5TmFtZXMgPSBlbmdsaXNoLmxvbmdXZWVrZGF5TmFtZXM7XG4gICAgICAgIHRoaXMuc2hvcnRNb250aE5hbWVzID0gZW5nbGlzaC5zaG9ydE1vbnRoTmFtZXM7XG4gICAgICAgIHRoaXMubG9uZ01vbnRoTmFtZXMgPSBlbmdsaXNoLmxvbmdNb250aE5hbWVzO1xuICAgICAgICB0aGlzLmVyYU5hbWVzID0gZW5nbGlzaC5lcmFOYW1lcztcbiAgICAgICAgdGhpcy5tZXJpZGllbU5hbWVzID0gZW5nbGlzaC5tZXJpZGllbU5hbWVzO1xuICAgICAgICB0aGlzLm9yZGluYWxUcmFuc2Zvcm0gPSBlbmdsaXNoLm9yZGluYWxUcmFuc2Zvcm07XG4gICAgICAgIHRoaXMudGltZXpvbmVOYW1lcyA9IGRlZmF1bHRUaW1lem9uZU5hbWVzO1xuICAgICAgICAvLyBTdG9yYWdlIHZhbHVlcyBmcm9tIHBhcnNpbmcgdG9rZW5zXG4gICAgICAgIHRoaXMuZXJhID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNlbnR1cnkgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMueWVhciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy50d29EaWdpdFllYXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaXNvWWVhciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5pc29Ud29EaWdpdFllYXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubW9udGggPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaXNvV2Vla09mWWVhciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy53ZWVrT2ZZZWFyRnJvbVN1bmRheSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy53ZWVrT2ZZZWFyRnJvbU1vbmRheSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5kYXlPZlllYXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZGF5T2ZNb250aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5kYXlPZldlZWsgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaG91ciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5taW51dGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc2Vjb25kID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm1pbGxpc2Vjb25kID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm1pY3Jvc2Vjb25kID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm1lcmlkaWVtID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnRpbWV6b25lT2Zmc2V0TWludXRlcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5zZWNvbmRzU2luY2VFcG9jaCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5taWxsaXNlY29uZHNTaW5jZUVwb2NoID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm1pY3Jvc2Vjb25kc1NpbmNlRXBvY2ggPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGdldFRpbWV6b25lT2Zmc2V0T2ZEYXRlKGRhdGUpe1xuICAgICAgICBjb25zdCBvZmZzZXQgPSAodGhpcy50aW1lem9uZU9mZnNldE1pbnV0ZXMgPT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgICAtZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIDpcbiAgICAgICAgICAgIHRoaXMudGltZXpvbmVPZmZzZXRNaW51dGVzXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG9mZnNldFNpZ24gPSBvZmZzZXQgPj0gMCA/ICsxIDogLTE7XG4gICAgICAgIGNvbnN0IGFic09mZnNldCA9IE1hdGguYWJzKG9mZnNldCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBob3VyOiBvZmZzZXRTaWduICogTWF0aC5mbG9vcihhYnNPZmZzZXQgLyA2MCksXG4gICAgICAgICAgICBtaW51dGU6IG9mZnNldFNpZ24gKiBNYXRoLmZsb29yKGFic09mZnNldCAlIDYwKSxcbiAgICAgICAgICAgIHRvdGFsTWludXRlczogb2Zmc2V0LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXREYXRlKCl7XG4gICAgICAgIGlmKHRoaXMubWljcm9zZWNvbmRzU2luY2VFcG9jaCA9PT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGlmKHRoaXMubWlsbGlzZWNvbmRzU2luY2VFcG9jaCAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgICAgICB0aGlzLm1pY3Jvc2Vjb25kc1NpbmNlRXBvY2ggPSAxMDAwICogdGhpcy5taWxsaXNlY29uZHNTaW5jZUVwb2NoO1xuICAgICAgICAgICAgfWVsc2UgaWYodGhpcy5zZWNvbmRzU2luY2VFcG9jaCAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgICAgICB0aGlzLm1pY3Jvc2Vjb25kc1NpbmNlRXBvY2ggPSAxMDAwMDAwICogdGhpcy5zZWNvbmRzU2luY2VFcG9jaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLm1pY3Jvc2Vjb25kc1NpbmNlRXBvY2ggIT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGhpcy5taWNyb3NlY29uZHNTaW5jZUVwb2NoIC8gMTAwMCk7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmdldFRpbWV6b25lT2Zmc2V0T2ZEYXRlKGRhdGUpO1xuICAgICAgICAgICAgZGF0ZS5zZXRVVENNaW51dGVzKGRhdGUuZ2V0VVRDTWludXRlcygpIC0gb2Zmc2V0LnRvdGFsTWludXRlcyk7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgaWYodGhpcy55ZWFyID09PSB1bmRlZmluZWQgJiYgdGhpcy50d29EaWdpdFllYXIgIT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICBpZih0aGlzLmNlbnR1cnkgPT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICAgICAgdGhpcy55ZWFyID0gZ2V0WWVhckZyb21Ud29EaWdpdHModGhpcy50d29EaWdpdFllYXIpO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgdGhpcy55ZWFyID0gMTAwICogdGhpcy5jZW50dXJ5ICsgdGhpcy50d29EaWdpdFllYXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1lbHNlIGlmKHRoaXMuaXNvWWVhciA9PT0gdW5kZWZpbmVkICYmIHRoaXMuaXNvVHdvRGlnaXRZZWFyICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgdGhpcy5pc29ZZWFyID0gZ2V0WWVhckZyb21Ud29EaWdpdHModGhpcy5pc29Ud29EaWdpdFllYXIpO1xuICAgICAgICB9ZWxzZSBpZih0aGlzLnllYXIgPT09IHVuZGVmaW5lZCAmJiB0aGlzLmNlbnR1cnkgIT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICB0aGlzLnllYXIgPSAxMDAgKiB0aGlzLmNlbnR1cnk7XG4gICAgICAgIH1cbiAgICAgICAgaWYodGhpcy5lcmEgJiYgdGhpcy55ZWFyICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgdGhpcy55ZWFyID0gMSAtIHRoaXMueWVhcjtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLmhvdXIgIT09IHVuZGVmaW5lZCAmJiB0aGlzLm1lcmlkaWVtICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgdGhpcy5ob3VyID0gKHRoaXMuaG91ciAlIDEyKSArICh0aGlzLm1lcmlkaWVtID8gMTIgOiAwKTtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLm1pY3Jvc2Vjb25kID09PSB1bmRlZmluZWQgJiYgdGhpcy5taWxsaXNlY29uZCAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIHRoaXMubWljcm9zZWNvbmQgPSAxMDAwICogdGhpcy5taWxsaXNlY29uZDtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLmlzb1llYXIgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmlzb1dlZWtPZlllYXIgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgKHRoaXMubW9udGggPT09IHVuZGVmaW5lZCB8fCB0aGlzLmRheU9mTW9udGggPT09IHVuZGVmaW5lZClcbiAgICAgICAgKXtcbiAgICAgICAgICAgIGdldERhdGVGcm9tSVNPV2Vla0RhdGUodGhpcyxcbiAgICAgICAgICAgICAgICB0aGlzLmlzb1llYXIsIHRoaXMuaXNvV2Vla09mWWVhciwgdGhpcy5kYXlPZldlZWsgfHwgMFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfWVsc2UgaWYodGhpcy5kYXlPZlllYXIgIT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICBjb25zdCB5ZWFyID0gdGhpcy55ZWFyICE9PSB1bmRlZmluZWQgPyB0aGlzLnllYXIgOiBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICBpZih0aGlzLm1vbnRoID09PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgICAgIHRoaXMubW9udGggPSBnZXRNb250aEZyb21EYXlPZlllYXIoeWVhciwgdGhpcy5kYXlPZlllYXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYodGhpcy5kYXlPZk1vbnRoID09PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgICAgIHRoaXMuZGF5T2ZNb250aCA9IGdldERheU9mTW9udGhGcm9tRGF5T2ZZZWFyKHllYXIsIHRoaXMuZGF5T2ZZZWFyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfWVsc2UgaWYodGhpcy53ZWVrT2ZZZWFyRnJvbVN1bmRheSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAodGhpcy5tb250aCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuZGF5T2ZNb250aCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICApe1xuICAgICAgICAgICAgY29uc3QgeWVhciA9IHRoaXMueWVhciAhPT0gdW5kZWZpbmVkID8gdGhpcy55ZWFyIDogZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgZ2V0RGF0ZUZyb21TdW5kYXlXZWVrRGF0ZSh0aGlzLFxuICAgICAgICAgICAgICAgIHllYXIsIHRoaXMud2Vla09mWWVhckZyb21TdW5kYXksIHRoaXMuZGF5T2ZXZWVrIHx8IDBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1lbHNlIGlmKHRoaXMud2Vla09mWWVhckZyb21Nb25kYXkgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgKHRoaXMubW9udGggPT09IHVuZGVmaW5lZCB8fCB0aGlzLmRheU9mTW9udGggPT09IHVuZGVmaW5lZClcbiAgICAgICAgKXtcbiAgICAgICAgICAgIGNvbnN0IHllYXIgPSB0aGlzLnllYXIgIT09IHVuZGVmaW5lZCA/IHRoaXMueWVhciA6IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgIGdldERhdGVGcm9tTW9uZGF5V2Vla0RhdGUodGhpcyxcbiAgICAgICAgICAgICAgICB5ZWFyLCB0aGlzLndlZWtPZlllYXJGcm9tTW9uZGF5LCB0aGlzLmRheU9mV2VlayB8fCAwXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmKHRoaXMueWVhciAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIodGhpcy55ZWFyKTtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLm1vbnRoICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BpbmVhcHBsZW1hY2hpbmUvc3RydGltZS1qcy9pc3N1ZXMvNVxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjY2ODEzMTMvamF2YXNjcmlwdC1zZXR1dGNtb250aC1kb2VzLW5vdC13b3JrLWZvci1ub3ZlbWJlclxuICAgICAgICAgICAgZGF0ZS5zZXRVVENNb250aCgwLCAxKTtcbiAgICAgICAgICAgIGRhdGUuc2V0VVRDTW9udGgodGhpcy5tb250aCAtIDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmKHRoaXMuZGF5T2ZNb250aCAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGRhdGUuc2V0VVRDRGF0ZSh0aGlzLmRheU9mTW9udGgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuZ2V0VGltZXpvbmVPZmZzZXRPZkRhdGUoZGF0ZSk7XG4gICAgICAgIGlmKG9mZnNldC50b3RhbE1pbnV0ZXMpe1xuICAgICAgICAgICAgdGhpcy5ob3VyID0gKHRoaXMuaG91ciB8fCAwKSAtIG9mZnNldC5ob3VyO1xuICAgICAgICAgICAgdGhpcy5taW51dGUgPSAodGhpcy5taW51dGUgfHwgMCkgLSBvZmZzZXQubWludXRlO1xuICAgICAgICB9XG4gICAgICAgIGRhdGUuc2V0VVRDSG91cnModGhpcy5ob3VyIHx8IDApO1xuICAgICAgICBkYXRlLnNldFVUQ01pbnV0ZXModGhpcy5taW51dGUgfHwgMCk7XG4gICAgICAgIGRhdGUuc2V0VVRDU2Vjb25kcyh0aGlzLnNlY29uZCB8fCAwKTtcbiAgICAgICAgZGF0ZS5zZXRVVENNaWxsaXNlY29uZHModGhpcy5taWNyb3NlY29uZCA/IHRoaXMubWljcm9zZWNvbmQgLyAxMDAwIDogMCk7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgICBjb3B5KCl7XG4gICAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyBUaW1lc3RhbXBQYXJzZXIodGhpcy5zdHJpbmcsIHRoaXMuZm9ybWF0LCB0aGlzLnRva2Vucyk7XG4gICAgICAgIGZvcihsZXQga2V5IGluIHRoaXMpe1xuICAgICAgICAgICAgcGFyc2VyW2tleV0gPSB0aGlzW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnNlcjtcbiAgICB9XG4gICAgZm9yayhsZW5ndGgsIHN0YXJ0VG9rZW5JbmRleCl7XG4gICAgICAgIGNvbnN0IHBhcnNlciA9IHRoaXMuY29weSgpO1xuICAgICAgICBwYXJzZXIuZm9ya0xlbmd0aCA9IGxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZShzdGFydFRva2VuSW5kZXgpO1xuICAgIH1cbiAgICBwYXJzZShzdGFydFRva2VuSW5kZXgpe1xuICAgICAgICBmb3IobGV0IGkgPSBzdGFydFRva2VuSW5kZXggfHwgMDsgaSA8IHRoaXMudG9rZW5zLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy50b2tlbnNbaV07XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHRva2VuO1xuICAgICAgICAgICAgaWYodGhpcy5pbmRleCA+PSB0aGlzLnN0cmluZy5sZW5ndGgpIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKFxuICAgICAgICAgICAgICAgIFwiVGltZXN0YW1wIGlzIHRvbyBzaG9ydCB0byBtYXRjaCB0aGUgd2hvbGUgZm9ybWF0LlwiLCB0aGlzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYodG9rZW4gaW5zdGFuY2VvZiBEaXJlY3RpdmUuU3RyaW5nVG9rZW4pe1xuICAgICAgICAgICAgICAgIHRoaXMucGFyc2VTdHJpbmdUb2tlbih0b2tlbi5zdHJpbmcpO1xuICAgICAgICAgICAgfWVsc2UgaWYodG9rZW4uaGFzUGFyc2VGdW5jdGlvbigpKXtcbiAgICAgICAgICAgICAgICB0b2tlbi5wYXJzZSh0aGlzKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKHRva2VuLmhhc1N0b3JlRnVuY3Rpb24oKSAmJiAhdG9rZW4udGV4dCl7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IHRoaXMudG9rZW5zWzEgKyBpXTtcbiAgICAgICAgICAgICAgICBpZigobmV4dCBpbnN0YW5jZW9mIERpcmVjdGl2ZS5TdHJpbmdUb2tlbiAmJiBpc0RpZ2l0KG5leHQuc3RyaW5nWzBdKSkgfHwgKChcbiAgICAgICAgICAgICAgICAgICAgbmV4dCBpbnN0YW5jZW9mIERpcmVjdGl2ZSB8fFxuICAgICAgICAgICAgICAgICAgICBuZXh0IGluc3RhbmNlb2YgRGlyZWN0aXZlLlRva2VuXG4gICAgICAgICAgICAgICAgKSAmJiAhbmV4dC50ZXh0KSl7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucGFyc2VBbWJpZ3VvdXNOdW1iZXIodG9rZW4sIGkpO1xuICAgICAgICAgICAgICAgICAgICBpZihyZXN1bHQpIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuLnN0b3JlKHRoaXMsIHRoaXMucGFyc2VOdW1iZXIodG9rZW4pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVGltZXN0YW1wUGFyc2VFcnJvcihcIkludmFsaWQgZGlyZWN0aXZlLlwiLCB0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYoMSArIHRoaXMuaW5kZXggPCB0aGlzLnN0cmluZy5sZW5ndGgpIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKFxuICAgICAgICAgICAgYFRpbWVzdGFtcCBpcyB0b28gbG9uZyBmb3IgdGhlIGdpdmVuIGZvcm1hdC4gVGV4dCByZW1haW5pbmc6IFwiJHt0aGlzLnN0cmluZy5zbGljZSh0aGlzLmluZGV4KX1cIi5gLCB0aGlzXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBwYXJzZVN0cmluZ1Rva2VuKHRva2VuKXtcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRva2VuLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGlmKHRoaXMuc3RyaW5nW3RoaXMuaW5kZXhdICE9PSB0b2tlbltpXSl7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoYFN0cmluZyBsaXRlcmFsIFwiJHt0b2tlbn1cIiBub3QgbWF0Y2hlZC5gLCB0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW5kZXgrKztcbiAgICAgICAgfVxuICAgIH1cbiAgICBwYXJzZUFtYmlndW91c051bWJlcih0b2tlbiwgdG9rZW5JbmRleCl7XG4gICAgICAgIGlmKHRoaXMuZm9ya0xlbmd0aCA9PT0gMCl7XG4gICAgICAgICAgICBjb25zdCBsaWtlbHlMZW5ndGggPSB0b2tlbi5nZXRMaWtlbHlMZW5ndGgoKTtcbiAgICAgICAgICAgIGlmKGxpa2VseUxlbmd0aCl7XG4gICAgICAgICAgICAgICAgdHJ5e1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JrKGxpa2VseUxlbmd0aCwgdG9rZW5JbmRleCk7XG4gICAgICAgICAgICAgICAgfWNhdGNoKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgaWYoIShlcnJvciBpbnN0YW5jZW9mIFRpbWVzdGFtcFBhcnNlRXJyb3IpKSB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgbGFzdFdob2xlRXJyb3IgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBmb3IobGV0IGkgPSAxOyBpIDwgdGhpcy5zdHJpbmcubGVuZ3RoIC0gdGhpcy5pbmRleDsgaSsrKXtcbiAgICAgICAgICAgICAgICBpZihpID09PSB0b2tlbi5saWtlbHlMZW5ndGgpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIHRyeXtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9yayhpLCB0b2tlbkluZGV4KTtcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICBpZighKGVycm9yIGluc3RhbmNlb2YgVGltZXN0YW1wUGFyc2VFcnJvcikpIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICAgICAgICBpZihlcnJvci5tZXNzYWdlID0gXCJUaW1lc3RhbXAgaXMgdG9vIHNob3J0IHRvIG1hdGNoIHRoZSB3aG9sZSBmb3JtYXQuXCIpe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFdob2xlRXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKGxhc3RXaG9sZUVycm9yKXtcbiAgICAgICAgICAgICAgICB0aHJvdyBsYXN0V2hvbGVFcnJvcjtcbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKFwiRmFpbGVkIHRvIHBhcnNlIGFtYmlndW91cyBudW1iZXIuXCIsIHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIGNvbnN0IG51bWJlciA9IHRoaXMucGFyc2VOdW1iZXIodG9rZW4sIHRoaXMuZm9ya0xlbmd0aCk7XG4gICAgICAgICAgICB0b2tlbi5zdG9yZSh0aGlzLCBudW1iZXIpO1xuICAgICAgICAgICAgdGhpcy5mb3JrTGVuZ3RoID0gMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwYXJzZU51bWJlcihkaXJlY3RpdmUsIGxlbmd0aExpbWl0ID0gSW5maW5pdHkpe1xuICAgICAgICBjb25zdCBuZWdhdGl2ZSA9IHRoaXMuc3RyaW5nW3RoaXMuaW5kZXhdID09PSBcIi1cIjtcbiAgICAgICAgaWYobmVnYXRpdmUgJiYgIWRpcmVjdGl2ZS5nZXRDYW5CZU5lZ2F0aXZlKCkpe1xuICAgICAgICAgICAgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoXCJOdW1iZXIgY2Fubm90IGJlIG5lZ2F0aXZlLlwiLCB0aGlzKTtcbiAgICAgICAgfWVsc2UgaWYobmVnYXRpdmUpe1xuICAgICAgICAgICAgdGhpcy5pbmRleCsrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5pbmRleDtcbiAgICAgICAgd2hpbGUodGhpcy5pbmRleCA8IHRoaXMuc3RyaW5nLmxlbmd0aCAmJlxuICAgICAgICAgICAgdGhpcy5zdHJpbmdbdGhpcy5pbmRleF0gPT09IFwiIFwiXG4gICAgICAgICl7XG4gICAgICAgICAgICB0aGlzLmluZGV4Kys7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUodGhpcy5pbmRleCA8IHRoaXMuc3RyaW5nLmxlbmd0aCAmJlxuICAgICAgICAgICAgdGhpcy5pbmRleCAtIHN0YXJ0IDwgbGVuZ3RoTGltaXQgJiYgaXNEaWdpdCh0aGlzLnN0cmluZ1t0aGlzLmluZGV4XSlcbiAgICAgICAgKXtcbiAgICAgICAgICAgIHRoaXMuaW5kZXgrKztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZSA9ICt0aGlzLnN0cmluZy5zbGljZShzdGFydCwgdGhpcy5pbmRleCkudHJpbSgpO1xuICAgICAgICBpZighTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSkpe1xuICAgICAgICAgICAgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoXCJGYWlsZWQgdG8gcGFyc2UgbnVtYmVyLlwiLCB0aGlzKTtcbiAgICAgICAgfWVsc2UgaWYoIWRpcmVjdGl2ZS5udW1iZXJJbkJvdW5kcyh2YWx1ZSkpe1xuICAgICAgICAgICAgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoYE51bWJlciBbJHt2YWx1ZX1dIGlzIG91dCBvZiBib3VuZHMgJHtkaXJlY3RpdmUuZ2V0Qm91bmRzU3RyaW5nKCl9LmAsIHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5lZ2F0aXZlID8gLXZhbHVlIDogdmFsdWU7XG4gICAgICAgIGlmKGRpcmVjdGl2ZS5pc09yZGluYWwoKSl7XG4gICAgICAgICAgICBjb25zdCBvcmRpbmFsID0gdGhpcy5vcmRpbmFsVHJhbnNmb3JtKHJlc3VsdCk7XG4gICAgICAgICAgICB0aGlzLmluZGV4ICs9IG9yZGluYWwubGVuZ3RoIC0gKHRoaXMuaW5kZXggLSBzdGFydCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcGFyc2VNb250aE5hbWUoKXtcbiAgICAgICAgY29uc3QgbmFtZXMgPSB0aGlzLnNob3J0TW9udGhOYW1lcy5zbGljZSgpO1xuICAgICAgICBuYW1lcy5wdXNoKC4uLnRoaXMubG9uZ01vbnRoTmFtZXMpO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucGFyc2VJbmRleEluTGlzdChuYW1lcyk7XG4gICAgICAgIGlmKGluZGV4ID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKFxuICAgICAgICAgICAgXCJGYWlsZWQgdG8gcGFyc2UgbW9udGggbmFtZS5cIiwgdGhpc1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4gaW5kZXggJSAxMjtcbiAgICB9XG4gICAgcGFyc2VXZWVrZGF5TmFtZSgpe1xuICAgICAgICBjb25zdCBuYW1lcyA9IHRoaXMuc2hvcnRXZWVrZGF5TmFtZXMuc2xpY2UoKTtcbiAgICAgICAgbmFtZXMucHVzaCguLi50aGlzLmxvbmdXZWVrZGF5TmFtZXMpO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucGFyc2VJbmRleEluTGlzdChuYW1lcyk7XG4gICAgICAgIGlmKGluZGV4ID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKFxuICAgICAgICAgICAgXCJGYWlsZWQgdG8gcGFyc2Ugd2Vla2RheSBuYW1lLlwiLCB0aGlzXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBpbmRleCAlIDc7XG4gICAgfVxuICAgIHBhcnNlTWVyaWRpZW1OYW1lKCl7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wYXJzZUluZGV4SW5MaXN0KHRoaXMubWVyaWRpZW1OYW1lcyk7XG4gICAgICAgIGlmKGluZGV4ID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKFxuICAgICAgICAgICAgXCJGYWlsZWQgdG8gcGFyc2UgQU0vUE0uXCIsIHRoaXNcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ICUgMjtcbiAgICB9XG4gICAgcGFyc2VFcmFOYW1lKCl7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wYXJzZUluZGV4SW5MaXN0KHRoaXMuZXJhTmFtZXMpO1xuICAgICAgICBpZihpbmRleCA9PT0gdW5kZWZpbmVkKSB0aHJvdyBuZXcgVGltZXN0YW1wUGFyc2VFcnJvcihcbiAgICAgICAgICAgIFwiRmFpbGVkIHRvIHBhcnNlIGVyYSBuYW1lLlwiLCB0aGlzXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBpbmRleCAlIDI7XG4gICAgfVxuICAgIHBhcnNlSW5kZXhJbkxpc3QobGlzdCl7XG4gICAgICAgIGNvbnN0IHBvc3NpYmxlID0gbGlzdC5zbGljZSgpO1xuICAgICAgICBsZXQgcG9zc2libGVDb3VudCA9IHBvc3NpYmxlLmxlbmd0aDtcbiAgICAgICAgbGV0IG1hdGNoSW5kZXggPSB1bmRlZmluZWQ7XG4gICAgICAgIGxldCBtYXRjaExlbmd0aCA9IDA7XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IHBvc3NpYmxlQ291bnQgJiYgdGhpcy5pbmRleCArIGkgPCB0aGlzLnN0cmluZy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICBjb25zdCBjaCA9IHRoaXMuc3RyaW5nW3RoaXMuaW5kZXggKyBpXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgZm9yKGxldCBqID0gMDsgaiA8IHBvc3NpYmxlLmxlbmd0aDsgaisrKXtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gcG9zc2libGVbal07XG4gICAgICAgICAgICAgICAgaWYoIWl0ZW0pIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGlmKGkgPj0gaXRlbS5sZW5ndGggfHwgaXRlbVtpXS50b0xvd2VyQ2FzZSgpICE9PSBjaCl7XG4gICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlW2pdID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgcG9zc2libGVDb3VudC0tO1xuICAgICAgICAgICAgICAgIH1lbHNlIGlmKDEgKyBpID09PSBpdGVtLmxlbmd0aCl7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoSW5kZXggPSBqO1xuICAgICAgICAgICAgICAgICAgICBtYXRjaExlbmd0aCA9IDEgKyBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZihtYXRjaEluZGV4ID09PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICB0aGlzLmluZGV4ICs9IG1hdGNoTGVuZ3RoO1xuICAgICAgICAgICAgcmV0dXJuIG1hdGNoSW5kZXg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0VGltZXpvbmVOYW1lTGlzdCgpe1xuICAgICAgICBpZighdGhpcy50aW1lem9uZU5hbWVMaXN0KXtcbiAgICAgICAgICAgIHRoaXMudGltZXpvbmVOYW1lTGlzdCA9IFtdO1xuICAgICAgICAgICAgZm9yKGxldCBrZXkgaW4gdGhpcy50aW1lem9uZU5hbWVzKXtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWV6b25lTmFtZUxpc3QucHVzaChrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRpbWV6b25lTmFtZUxpc3Q7XG4gICAgfVxuICAgIHBhcnNlVGltZXpvbmVPZmZzZXQobW9kaWZpZXIpe1xuICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuaW5kZXg7XG4gICAgICAgIGNvbnN0IHNpZ24gPSB0aGlzLnN0cmluZ1t0aGlzLmluZGV4XTtcbiAgICAgICAgY29uc3QgaG91cnMgPSArdGhpcy5zdHJpbmcuc2xpY2UodGhpcy5pbmRleCArIDEsIHRoaXMuaW5kZXggKyAzKTtcbiAgICAgICAgbGV0IG1pbnV0ZXM7XG4gICAgICAgIGlmKHRoaXMuc3RyaW5nW3RoaXMuaW5kZXggKyAzXSA9PT0gXCI6XCIpe1xuICAgICAgICAgICAgbWludXRlcyA9ICt0aGlzLnN0cmluZy5zbGljZSh0aGlzLmluZGV4ICsgNCwgdGhpcy5pbmRleCArIDYpO1xuICAgICAgICAgICAgdGhpcy5pbmRleCArPSA2O1xuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIG1pbnV0ZXMgPSArdGhpcy5zdHJpbmcuc2xpY2UodGhpcy5pbmRleCArIDMsIHRoaXMuaW5kZXggKyA1KTtcbiAgICAgICAgICAgIHRoaXMuaW5kZXggKz0gNTtcbiAgICAgICAgfVxuICAgICAgICBpZighTnVtYmVyLmlzSW50ZWdlcihob3VycykgfHwgIU51bWJlci5pc0ludGVnZXIobWludXRlcykpe1xuICAgICAgICAgICAgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoXG4gICAgICAgICAgICAgICAgYEZhaWxlZCB0byBwYXJzZSB0aW1lem9uZSBvZmZzZXQgZnJvbSBzdHJpbmcgYCArXG4gICAgICAgICAgICAgICAgYFwiJHt0aGlzLnN0cmluZy5zbGljZShzdGFydCwgdGhpcy5pbmRleCl9XCIuYCwgdGhpc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvZmZzZXQgPSBtaW51dGVzICsgNjAgKiBob3VycztcbiAgICAgICAgaWYoc2lnbiA9PT0gXCIrXCIgfHwgc2lnbiA9PT0gXCLCsVwiKSByZXR1cm4gK29mZnNldDtcbiAgICAgICAgZWxzZSBpZihzaWduID09PSBcIi1cIikgcmV0dXJuIC1vZmZzZXQ7XG4gICAgICAgIGVsc2UgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoYFVua25vd24gdGltZXpvbmUgb2Zmc2V0IHNpZ24gXCIke3NpZ259XCIuYCwgdGhpcyk7XG4gICAgfVxufVxuXG5UaW1lc3RhbXBQYXJzZXIucGFyc2VGb3JtYXRTdHJpbmcgPSBmdW5jdGlvbiBwYXJzZUZvcm1hdFN0cmluZyhmb3JtYXQpe1xuICAgIGNvbnN0IHRva2VucyA9IFtdO1xuICAgIGxldCBkaXJlY3RpdmUgPSBmYWxzZTtcbiAgICBsZXQgbW9kaWZpZXIgPSB1bmRlZmluZWQ7XG4gICAgY29uc3QgZm9ybWF0U3RyaW5nID0gU3RyaW5nKGZvcm1hdCk7XG4gICAgaWYoIWZvcm1hdFN0cmluZyl7XG4gICAgICAgIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKGBFbXB0eSBmb3JtYXQgc3RyaW5nLmAsIHtcbiAgICAgICAgICAgIGZvcm1hdDogZm9ybWF0U3RyaW5nXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBhZGRDaGFyYWN0ZXIoY2gpe1xuICAgICAgICBpZih0b2tlbnMubGVuZ3RoICYmICh0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdIGluc3RhbmNlb2YgRGlyZWN0aXZlLlN0cmluZ1Rva2VuKSl7XG4gICAgICAgICAgICBpZihpc0RpZ2l0KGNoKSA9PT0gaXNEaWdpdCh0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdLnN0cmluZ1swXSkpe1xuICAgICAgICAgICAgICAgIHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV0uYWRkQ2hhcmFjdGVyKGNoKTtcbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIHRva2Vucy5wdXNoKG5ldyBEaXJlY3RpdmUuU3RyaW5nVG9rZW4oY2gpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICB0b2tlbnMucHVzaChuZXcgRGlyZWN0aXZlLlN0cmluZ1Rva2VuKGNoKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yKGxldCBjaCBvZiBmb3JtYXRTdHJpbmcpe1xuICAgICAgICBpZihkaXJlY3RpdmUgJiYgY2ggPT09IFwiJVwiKXtcbiAgICAgICAgICAgIGFkZENoYXJhY3RlcihcIiVcIik7XG4gICAgICAgICAgICBtb2RpZmllciA9IFwiXCI7XG4gICAgICAgICAgICBkaXJlY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfWVsc2UgaWYoZGlyZWN0aXZlICYmIGNoID09PSBcIm5cIil7XG4gICAgICAgICAgICBhZGRDaGFyYWN0ZXIoXCJcXG5cIik7XG4gICAgICAgICAgICBtb2RpZmllciA9IFwiXCI7XG4gICAgICAgICAgICBkaXJlY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfWVsc2UgaWYoZGlyZWN0aXZlICYmIGNoID09PSBcInRcIil7XG4gICAgICAgICAgICBhZGRDaGFyYWN0ZXIoXCJcXHRcIik7XG4gICAgICAgICAgICBtb2RpZmllciA9IFwiXCI7XG4gICAgICAgICAgICBkaXJlY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfWVsc2UgaWYoZGlyZWN0aXZlICYmICFtb2RpZmllciAmJiAoXG4gICAgICAgICAgICBjaCA9PT0gXCItXCIgfHwgY2ggPT09IFwiX1wiIHx8IGNoID09PSBcIl5cIiB8fCBjaCA9PT0gXCI6XCJcbiAgICAgICAgKSl7XG4gICAgICAgICAgICBtb2RpZmllciArPSBjaDtcbiAgICAgICAgfWVsc2UgaWYoZGlyZWN0aXZlKXtcbiAgICAgICAgICAgIGNvbnN0IGRpciA9IERpcmVjdGl2ZS5nZXRCeU5hbWUoY2gpO1xuICAgICAgICAgICAgaWYoIWRpcikgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoYFVua25vd24gZGlyZWN0aXZlIFwiJSR7bW9kaWZpZXJ9JHtjaH1cIi5gLCB7XG4gICAgICAgICAgICAgICAgZm9ybWF0OiBmb3JtYXRTdHJpbmdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZWxzZSBpZihkaXIucmV3cml0ZSkgdG9rZW5zLnB1c2goXG4gICAgICAgICAgICAgICAgLi4uZGlyLmdldFJld3JpdGVQYXJzZWQoVGltZXN0YW1wUGFyc2VyLnBhcnNlRm9ybWF0U3RyaW5nKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGVsc2UgdG9rZW5zLnB1c2goXG4gICAgICAgICAgICAgICAgbmV3IERpcmVjdGl2ZS5Ub2tlbihtb2RpZmllciwgZGlyKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG1vZGlmaWVyID0gXCJcIjtcbiAgICAgICAgICAgIGRpcmVjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB9ZWxzZSBpZihjaCA9PT0gXCIlXCIpe1xuICAgICAgICAgICAgbW9kaWZpZXIgPSBcIlwiO1xuICAgICAgICAgICAgZGlyZWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBhZGRDaGFyYWN0ZXIoY2gpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmKGRpcmVjdGl2ZSkgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoXG4gICAgICAgIFwiRm91bmQgdW50ZXJtaW5hdGVkIGRpcmVjdGl2ZSBhdCB0aGUgZW5kIG9mIHRoZSBmb3JtYXQgc3RyaW5nLlwiLCB7XG4gICAgICAgICAgICBmb3JtYXQ6IGZvcm1hdFN0cmluZ1xuICAgICAgICB9XG4gICAgKTtcbiAgICBpZih0b2tlbnMubGVuZ3RoICYmIHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV0uc3RyaW5nID09PSBcIlpcIil7XG4gICAgICAgIHRva2Vucy56dWx1VGltZXpvbmUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdG9rZW5zO1xufVxuXG5mdW5jdGlvbiBpc0xlYXBZZWFyKHllYXIpe1xuICAgIHJldHVybiB5ZWFyICUgNCA9PT0gMCAmJiAoeWVhciAlIDEwMCAhPT0gMCB8fCB5ZWFyICUgNDAwID09PSAwKTtcbn1cblxuXG5jb25zdCBtb250aExlbmd0aHMgPSB7XG4gICAgY29tbW9uOiBbMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV0sXG4gICAgbGVhcDogWzMxLCAyOSwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdLFxuICAgIGZvclllYXI6IGZ1bmN0aW9uKHllYXIpe1xuICAgICAgICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IG1vbnRoTGVuZ3Rocy5sZWFwIDogbW9udGhMZW5ndGhzLmNvbW1vbjtcbiAgICB9LFxufTtcblxuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzQ3ODk5Mi80MDk5MDIyXG5mdW5jdGlvbiBnZXRGaXJzdFdlZWtkYXlJblllYXIoeWVhcil7XG4gICAgY29uc3QgeSA9IHllYXIgLSAxO1xuICAgIHJldHVybiAoeWVhciAqIDM2NSArXG4gICAgICAgIE1hdGguZmxvb3IoeSAvIDQpIC0gTWF0aC5mbG9vcih5IC8gMTAwKSArIE1hdGguZmxvb3IoeSAvIDQwMClcbiAgICApICUgNztcbn1cblxuY29uc3QgZGVmYXVsdFRpbWV6b25lTmFtZXMgPSB7XG4gICAgXCJBQ0RUXCI6ICsxMC41LFxuICAgIFwiQUNTVFwiOiArOS41LFxuICAgIFwiQUNUXCI6IC01LFxuICAgIFwiQUNXU1RcIjogKzguNzUsXG4gICAgXCJBRFRcIjogLTMsXG4gICAgXCJBRURUXCI6ICsxMSxcbiAgICBcIkFFU1RcIjogKzEwLFxuICAgIFwiQUZUXCI6ICs0LjUsXG4gICAgXCJBS0RUXCI6IC04LFxuICAgIFwiQUtTVFwiOiAtOSxcbiAgICBcIkFNU1RcIjogLTMsXG4gICAgXCJBTVRcIjogLTQsXG4gICAgXCJBTVRcIjogKzQsXG4gICAgXCJBUlRcIjogLTMsXG4gICAgXCJBU1RcIjogKzMsXG4gICAgXCJBU1RcIjogLTQsXG4gICAgXCJBV1NUXCI6ICs4LFxuICAgIFwiQVpPU1RcIjogMCxcbiAgICBcIkFaT1RcIjogLTEsXG4gICAgXCJBWlRcIjogKzQsXG4gICAgXCJCRFRcIjogKzgsXG4gICAgXCJCSU9UXCI6ICs2LFxuICAgIFwiQklUXCI6IC0xMixcbiAgICBcIkJPVFwiOiAtNCxcbiAgICBcIkJSU1RcIjogLTIsXG4gICAgXCJCUlRcIjogLTMsXG4gICAgXCJCU1RcIjogKzYsXG4gICAgXCJCU1RcIjogKzExLFxuICAgIFwiQlNUXCI6ICsxLFxuICAgIFwiQlRUXCI6ICs2LFxuICAgIFwiQ0FUXCI6ICsyLFxuICAgIFwiQ0NUXCI6ICs2LjUsXG4gICAgXCJDRFRcIjogLTUsXG4gICAgXCJDRFRcIjogLTQsXG4gICAgXCJDRVNUXCI6ICsyLFxuICAgIFwiQ0VUXCI6ICsxLFxuICAgIFwiQ0hBRFRcIjogKzEzLjc1LFxuICAgIFwiQ0hBU1RcIjogKzEyLjc1LFxuICAgIFwiQ0hPVFwiOiArOCxcbiAgICBcIkNIT1NUXCI6ICs5LFxuICAgIFwiQ0hTVFwiOiArMTAsXG4gICAgXCJDSFVUXCI6ICsxMCxcbiAgICBcIkNJU1RcIjogLTgsXG4gICAgXCJDSVRcIjogKzgsXG4gICAgXCJDS1RcIjogLTEwLFxuICAgIFwiQ0xTVFwiOiAtMyxcbiAgICBcIkNMVFwiOiAtNCxcbiAgICBcIkNPU1RcIjogLTQsXG4gICAgXCJDT1RcIjogLTUsXG4gICAgXCJDU1RcIjogLTYsXG4gICAgXCJDU1RcIjogKzgsXG4gICAgXCJDU1RcIjogLTUsXG4gICAgXCJDVFwiOiArOCxcbiAgICBcIkNWVFwiOiAtMSxcbiAgICBcIkNXU1RcIjogKzguNzUsXG4gICAgXCJDWFRcIjogKzcsXG4gICAgXCJEQVZUXCI6ICs3LFxuICAgIFwiRERVVFwiOiArMTAsXG4gICAgXCJERlRcIjogKzEsXG4gICAgXCJFQVNTVFwiOiAtNSxcbiAgICBcIkVBU1RcIjogLTYsXG4gICAgXCJFQVRcIjogKzMsXG4gICAgXCJFQ1RcIjogLTQsXG4gICAgXCJFQ1RcIjogLTUsXG4gICAgXCJFRFRcIjogLTQsXG4gICAgXCJFRVNUXCI6ICszLFxuICAgIFwiRUVUXCI6ICsyLFxuICAgIFwiRUdTVFwiOiAwLFxuICAgIFwiRUdUXCI6IC0xLFxuICAgIFwiRUlUXCI6ICs5LFxuICAgIFwiRVNUXCI6IC01LFxuICAgIFwiRkVUXCI6ICszLFxuICAgIFwiRkpUXCI6ICsxMixcbiAgICBcIkZLU1RcIjogLTMsXG4gICAgXCJGS1RcIjogLTQsXG4gICAgXCJGTlRcIjogLTIsXG4gICAgXCJHQUxUXCI6IC02LFxuICAgIFwiR0FNVFwiOiAtOSxcbiAgICBcIkdFVFwiOiArNCxcbiAgICBcIkdGVFwiOiAtMyxcbiAgICBcIkdJTFRcIjogKzEyLFxuICAgIFwiR0lUXCI6IC05LFxuICAgIFwiR01UXCI6IDAsXG4gICAgXCJHU1RcIjogLTIsXG4gICAgXCJHU1RcIjogKzQsXG4gICAgXCJHWVRcIjogLTQsXG4gICAgXCJIRFRcIjogLTksXG4gICAgXCJIQUVDXCI6ICsyLFxuICAgIFwiSFNUXCI6IC0xMCxcbiAgICBcIkhLVFwiOiArOCxcbiAgICBcIkhNVFwiOiArNSxcbiAgICBcIkhPVlNUXCI6ICs4LFxuICAgIFwiSE9WVFwiOiArNyxcbiAgICBcIklDVFwiOiArNyxcbiAgICBcIklETFdcIjogLTEyLFxuICAgIFwiSURUXCI6ICszLFxuICAgIFwiSU9UXCI6ICszLFxuICAgIFwiSVJEVFwiOiArNC41LFxuICAgIFwiSVJLVFwiOiArOCxcbiAgICBcIklSU1RcIjogKzMuNSxcbiAgICBcIklTVFwiOiArNS41LFxuICAgIFwiSVNUXCI6ICsxLFxuICAgIFwiSVNUXCI6ICsyLFxuICAgIFwiSlNUXCI6ICs5LFxuICAgIFwiS0dUXCI6ICs2LFxuICAgIFwiS09TVFwiOiArMTEsXG4gICAgXCJLUkFUXCI6ICs3LFxuICAgIFwiS1NUXCI6ICs5LFxuICAgIFwiTEhTVFwiOiArMTAuNSxcbiAgICBcIkxIU1RcIjogKzExLFxuICAgIFwiTElOVFwiOiArMTQsXG4gICAgXCJNQUdUXCI6ICsxMixcbiAgICBcIk1BUlRcIjogLTkuNSxcbiAgICBcIk1BV1RcIjogKzUsXG4gICAgXCJNRFRcIjogLTYsXG4gICAgXCJNRVRcIjogKzEsXG4gICAgXCJNRVNUXCI6ICsyLFxuICAgIFwiTUhUXCI6ICsxMixcbiAgICBcIk1JU1RcIjogKzExLFxuICAgIFwiTUlUXCI6IC05LjUsXG4gICAgXCJNTVRcIjogKzYuNSxcbiAgICBcIk1TS1wiOiArMyxcbiAgICBcIk1TVFwiOiArOCxcbiAgICBcIk1TVFwiOiAtNyxcbiAgICBcIk1VVFwiOiArNCxcbiAgICBcIk1WVFwiOiArNSxcbiAgICBcIk1ZVFwiOiArOCxcbiAgICBcIk5DVFwiOiArMTEsXG4gICAgXCJORFRcIjogLTIuNSxcbiAgICBcIk5GVFwiOiArMTEsXG4gICAgXCJOUFRcIjogKzUuNzUsXG4gICAgXCJOU1RcIjogLTMuNSxcbiAgICBcIk5UXCI6IC0zLjUsXG4gICAgXCJOVVRcIjogLTExLFxuICAgIFwiTlpEVFwiOiArMTMsXG4gICAgXCJOWlNUXCI6ICsxMixcbiAgICBcIk9NU1RcIjogKzYsXG4gICAgXCJPUkFUXCI6ICs1LFxuICAgIFwiUERUXCI6IC03LFxuICAgIFwiUEVUXCI6IC01LFxuICAgIFwiUEVUVFwiOiArMTIsXG4gICAgXCJQR1RcIjogKzEwLFxuICAgIFwiUEhPVFwiOiArMTMsXG4gICAgXCJQSFRcIjogKzgsXG4gICAgXCJQS1RcIjogKzUsXG4gICAgXCJQTURUXCI6IC0yLFxuICAgIFwiUE1TVFwiOiAtMyxcbiAgICBcIlBPTlRcIjogKzExLFxuICAgIFwiUFNUXCI6IC04LFxuICAgIFwiUFNUXCI6ICs4LFxuICAgIFwiUFlTVFwiOiAtMyxcbiAgICBcIlBZVFwiOiAtNCxcbiAgICBcIlJFVFwiOiArNCxcbiAgICBcIlJPVFRcIjogLTMsXG4gICAgXCJTQUtUXCI6ICsxMSxcbiAgICBcIlNBTVRcIjogKzQsXG4gICAgXCJTQVNUXCI6ICsyLFxuICAgIFwiU0JUXCI6ICsxMSxcbiAgICBcIlNDVFwiOiArNCxcbiAgICBcIlNEVFwiOiAtMTAsXG4gICAgXCJTR1RcIjogKzgsXG4gICAgXCJTTFNUXCI6ICs1LjUsXG4gICAgXCJTUkVUXCI6ICsxMSxcbiAgICBcIlNSVFwiOiAtMyxcbiAgICBcIlNTVFwiOiAtMTEsXG4gICAgXCJTU1RcIjogKzgsXG4gICAgXCJTWU9UXCI6ICszLFxuICAgIFwiVEFIVFwiOiAtMTAsXG4gICAgXCJUSEFcIjogKzcsXG4gICAgXCJURlRcIjogKzUsXG4gICAgXCJUSlRcIjogKzUsXG4gICAgXCJUS1RcIjogKzEzLFxuICAgIFwiVExUXCI6ICs5LFxuICAgIFwiVE1UXCI6ICs1LFxuICAgIFwiVFJUXCI6ICszLFxuICAgIFwiVE9UXCI6ICsxMyxcbiAgICBcIlRWVFwiOiArMTIsXG4gICAgXCJVTEFTVFwiOiArOSxcbiAgICBcIlVMQVRcIjogKzgsXG4gICAgXCJVU1pcIjogKzIsXG4gICAgXCJVVENcIjogMCxcbiAgICBcIlVZU1RcIjogLTIsXG4gICAgXCJVWVRcIjogLTMsXG4gICAgXCJVWlRcIjogKzUsXG4gICAgXCJWRVRcIjogLTQsXG4gICAgXCJWTEFUXCI6ICsxMCxcbiAgICBcIlZPTFRcIjogKzQsXG4gICAgXCJWT1NUXCI6ICs2LFxuICAgIFwiVlVUXCI6ICsxMSxcbiAgICBcIldBS1RcIjogKzEyLFxuICAgIFwiV0FTVFwiOiArMixcbiAgICBcIldBVFwiOiArMSxcbiAgICBcIldFU1RcIjogKzEsXG4gICAgXCJXRVRcIjogMCxcbiAgICBcIldJVFwiOiArNyxcbiAgICBcIldTVFwiOiArOCxcbiAgICBcIllBS1RcIjogKzksXG4gICAgXCJZRUtUXCI6ICs1LFxuICAgIFwiWlwiOiAwLFxufTtcblxuXG5pZih0eXBlb2YobW9kdWxlKSAhPT0gXCJ1bmRlZmluZWRcIil7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBzdHJ0aW1lO1xufWVsc2UgaWYodHlwZW9mKHdpbmRvdykgIT09IFwidW5kZWZpbmVkXCIpe1xuICAgIHdpbmRvdy5zdHJ0aW1lID0gc3RydGltZTtcbn1cbiIsIi8qIGdsb2JhbCBYTUxIdHRwUmVxdWVzdCAqL1xyXG5cclxuaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tICcuL29iamVjdC9pc09iamVjdCc7XHJcbmltcG9ydCB7IHNlcmlhbGl6ZSB9IGZyb20gJy4vb2JqZWN0L3NlcmlhbGl6ZSc7XHJcbmltcG9ydCB7IHRvVW5kZXJzY29yZSB9IGZyb20gJy4vc3RyaW5nL3RvVW5kZXJzY29yZSc7XHJcblxyXG5jb25zdCB7IHBhcnNlLCBzdHJpbmdpZnkgfSA9IEpTT047XHJcblxyXG4vLyBhamF4IHdyYXBwZXJcclxuZXhwb3J0IGNvbnN0IGFqYXggPSAoYXBpVXJsLCBzdWNjZXNzLCBlcnJvciwgcGFyYW1zLCBtZXRob2QgPSAnR0VUJykgPT4ge1xyXG4gIGNvbnN0IHhtbEh0dHAgICA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xyXG4gIGNvbnN0IHVybCAgICAgICA9IChtZXRob2QgPT09ICdHRVQnICYmIHBhcmFtcykgPyBgJHthcGlVcmx9PyR7KHNlcmlhbGl6ZShwYXJhbXMsIHRvVW5kZXJzY29yZSkpfWAgOiBhcGlVcmw7XHJcbiAgY29uc3QgaXNTdWNjZXNzID0gKHN0YXR1cykgPT4gKChzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMCkgfHwgc3RhdHVzID09PSAzMDQpO1xyXG5cclxuICB4bWxIdHRwLm9wZW4obWV0aG9kLCB1cmwpO1xyXG4gIHhtbEh0dHAuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3ZuZC5hcGkranNvbicpO1xyXG5cclxuICB4bWxIdHRwLm9ucmVhZHlzdGF0ZWNoYW5nZSA9ICgpID0+IHtcclxuICAgIGxldCByZXNwb25zZTtcclxuXHJcbiAgICBpZiAoeG1sSHR0cC5yZWFkeVN0YXRlID09PSA0KSB7XHJcbiAgICAgIGlmIChpc1N1Y2Nlc3MoeG1sSHR0cC5zdGF0dXMpKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHJlc3BvbnNlID0gcGFyc2UoeG1sSHR0cC5yZXNwb25zZVRleHQpO1xyXG4gICAgICAgIH0gY2F0Y2goZSkge1xyXG4gICAgICAgICAgcmVzcG9uc2UgPSB4bWxIdHRwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3VjY2VzcyhyZXNwb25zZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZXJyb3IoeG1sSHR0cCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICBpZiAoaXNPYmplY3QocGFyYW1zKSAmJiBtZXRob2QgIT09ICdHRVQnKSB7XHJcbiAgICB4bWxIdHRwLnNlbmQoc3RyaW5naWZ5KHBhcmFtcykpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB4bWxIdHRwLnNlbmQoKTtcclxuICB9XHJcbn07XHJcbiIsImV4cG9ydCAqIGZyb20gJy4vaXNBcnJheSc7XHJcbiIsImNvbnN0IHsgcHJvdG90eXBlOiB7IHRvU3RyaW5nIH0gfSA9IE9iamVjdDtcclxuXHJcbmV4cG9ydCBjb25zdCBpc0FycmF5ID0gKGEpID0+IHtcclxuICByZXR1cm4gdG9TdHJpbmcuY2FsbChhKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcclxufTtcclxuIiwiLyogZ2xvYmFsIEludGwgKi9cclxuXHJcbmltcG9ydCB7IGdldFN5bWJvbEZyb21DdXJyZW5jeSB9IGZyb20gJ2N1cnJlbmN5LXN5bWJvbC1tYXAnO1xyXG5cclxuZnVuY3Rpb24gdG9Mb2NhbGVTdHJpbmdTdXBwb3J0c09wdGlvbnMoKSB7XHJcbiAgcmV0dXJuICEhKHR5cGVvZiBJbnRsID09PSAnb2JqZWN0JyAmJiBJbnRsICYmIHR5cGVvZiBJbnRsLk51bWJlckZvcm1hdCA9PT0gJ2Z1bmN0aW9uJyk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBjdXJyZW5jeUZvcm1hdHRlciA9ICh2YWx1ZSwgbGFuZywgY3VycmVuY3ksIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IDAsXHJcbiAgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gMykgPT4ge1xyXG4gIGlmICh0b0xvY2FsZVN0cmluZ1N1cHBvcnRzT3B0aW9ucygpICYmIGN1cnJlbmN5KSB7XHJcbiAgICBjb25zdCBpc0RvbGxhciAgICAgPSAoKSA9PiBnZXRTeW1ib2xGcm9tQ3VycmVuY3koY3VycmVuY3kpID09PSAnJCc7XHJcbiAgICBjb25zdCBvcHRpb25zICAgICAgPSB7XHJcbiAgICAgIHN0eWxlOiAnY3VycmVuY3knLFxyXG4gICAgICBjdXJyZW5jeSxcclxuICAgICAgY3VycmVuY3lEaXNwbGF5OiBpc0RvbGxhciA/ICdzeW1ib2wnIDogJ2NvZGUnLFxyXG4gICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHMsXHJcbiAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0c1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBudW1iZXJGb3JtYXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobGFuZywgb3B0aW9ucyk7XHJcbiAgICBjb25zdCBzdHIgICAgICAgICAgPSBudW1iZXJGb3JtYXQuZm9ybWF0KHZhbHVlKTtcclxuXHJcbiAgICBpZiAoaXNEb2xsYXIgfHwgIWdldFN5bWJvbEZyb21DdXJyZW5jeShjdXJyZW5jeSkpIHtcclxuICAgICAgcmV0dXJuIHN0cjtcclxuICAgIH1cclxuICAgIHJldHVybiBzdHIucmVwbGFjZShjdXJyZW5jeSwgZ2V0U3ltYm9sRnJvbUN1cnJlbmN5KGN1cnJlbmN5KSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdmFsdWU7XHJcbn07XHJcbiIsImV4cG9ydCAqIGZyb20gJy4vY3VycmVuY3lGb3JtYXR0ZXInO1xyXG4iLCJleHBvcnQgKiBmcm9tICcuL21vbnRoTGVuZ3RoJztcclxuIiwiLy8gRGF0ZSB1dGlsc1xyXG5jb25zdCBkYXlzSW5Nb250aCA9IFszMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXTtcclxuY29uc3QgaXNMZWFwWWVhciAgPSAoeWVhcikgPT4gKCh5ZWFyICUgNCA9PT0gMCkgJiYgKHllYXIgJSAxMDAgIT09IDApKSB8fCAoeWVhciAlIDQwMCA9PT0gMCk7XHJcblxyXG5leHBvcnQgY29uc3QgbW9udGhMZW5ndGggPSAoeWVhciwgbW9udGgpID0+IHtcclxuICBsZXQgZGF5cyA9IGRheXNJbk1vbnRoW21vbnRoXTtcclxuICBpZiAobW9udGggPT09IDEgJiYgaXNMZWFwWWVhcih5ZWFyKSkge1xyXG4gICAgZGF5cyA9IDI5O1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGRheXM7XHJcbn07XHJcbiIsImltcG9ydCB7IHJlbW92ZUNsYXNzIH0gZnJvbSAnLi9yZW1vdmVDbGFzcyc7XHJcbmltcG9ydCB7IHNldENsYXNzTmFtZSB9IGZyb20gJy4vc2V0Q2xhc3NOYW1lJztcclxuaW1wb3J0IHsgZ2V0Q2xhc3NOYW1lIH0gZnJvbSAnLi9nZXRDbGFzc05hbWUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGFkZENsYXNzID0gKGVsLCAuLi5jbGFzc05hbWVzKSA9PiB7XHJcbiAgY29uc3QgbmFtZSA9IGNsYXNzTmFtZXM7XHJcblxyXG4gIGlmICh0eXBlb2YgZWwuY2xhc3NMaXN0ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgbmFtZS5mb3JFYWNoKChjbHMpID0+IHtcclxuICAgICAgaWYgKGNscy50cmltKCkpIHtcclxuICAgICAgICBlbC5jbGFzc0xpc3QuYWRkKGNscyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZW1vdmVDbGFzcyhlbCwgbmFtZSk7XHJcbiAgICBjb25zdCBjbHMgPSBgJHtnZXRDbGFzc05hbWUoZWwpfSAke25hbWUuam9pbignICcpfWA7XHJcbiAgICBzZXRDbGFzc05hbWUoZWwsIGNscyk7XHJcbiAgfVxyXG59O1xyXG4iLCIvKiBnbG9iYWwgZG9jdW1lbnQgKi9cclxuXHJcbmNvbnN0IHsga2V5cyB9ID0gT2JqZWN0O1xyXG5cclxuLyoqXHJcbiAqIENyZWF0ZSBIVE1MRWxlbWVudCB3aXRoIGF0dHJpYnV0ZXNcclxuICogQHBhcmFtIG5hbWUge1N0cmluZ31cclxuICogQHBhcmFtIGF0dHJzIHtPYmplY3R9XHJcbiAqIEByZXR1cm5zIHtIVE1MRWxlbWVudH1cclxuICovXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVFbGVtZW50ID0gKG5hbWUsIGF0dHJzKSA9PiB7XHJcbiAgY29uc3QgcGFyYW1zICA9IGF0dHJzIHx8IHt9O1xyXG4gIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KG5hbWUpO1xyXG5cclxuICBrZXlzKHBhcmFtcykubWFwKChpKSA9PiBlbGVtZW50LnNldEF0dHJpYnV0ZShpLCBwYXJhbXNbaV0pKTtcclxuXHJcbiAgcmV0dXJuIGVsZW1lbnQ7XHJcbn07XHJcbiIsImV4cG9ydCBjb25zdCBkZXN0cm95RWxlbWVudCA9IChlbGVtZW50KSA9PiB7XHJcbiAgaWYgKGVsZW1lbnQucGFyZW50Tm9kZSAmJiBlbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQpIHtcclxuICAgIGVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtZW50KTtcclxuICB9XHJcbiAgcmV0dXJuIGVsZW1lbnQ7XHJcbn07XHJcbiIsImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQgfSBmcm9tICcuL2NyZWF0ZUVsZW1lbnQnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGVsZW1lbnRGcm9tU3RyaW5nID0gKHN0cmluZykgPT4ge1xyXG4gIGNvbnN0IGVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuXHJcbiAgZWxlbWVudC5pbm5lckhUTUwgPSBzdHJpbmc7XHJcblxyXG4gIHJldHVybiBlbGVtZW50LmNoaWxkcmVuWzBdO1xyXG59O1xyXG4iLCJleHBvcnQgY29uc3QgZmluZEJ5Q2xhc3NOYW1lID0gKGNvbnRleHQsIG5hbWUpID0+IGNvbnRleHQucXVlcnlTZWxlY3RvcihgLiR7bmFtZX1gKTtcclxuIiwiZXhwb3J0IGNvbnN0IGdldENsYXNzTmFtZSA9IChlbCkgPT4ge1xyXG4gIC8vIENhbid0IHVzZSBqdXN0IFNWR0FuaW1hdGVkU3RyaW5nIGhlcmUgc2luY2Ugbm9kZXMgd2l0aGluIGEgRnJhbWUgaW4gSUUgaGF2ZVxyXG4gIC8vIGNvbXBsZXRlbHkgc2VwYXJhdGVseSBTVkdBbmltYXRlZFN0cmluZyBiYXNlIGNsYXNzZXNcclxuICBpZiAoZWwuY2xhc3NOYW1lIGluc3RhbmNlb2YgZWwub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5TVkdBbmltYXRlZFN0cmluZykge1xyXG4gICAgcmV0dXJuIGVsLmNsYXNzTmFtZS5iYXNlVmFsO1xyXG4gIH1cclxuICByZXR1cm4gZWwuY2xhc3NOYW1lO1xyXG59O1xyXG4iLCJpbXBvcnQgeyB0cmF2ZXJzZVRvUGFyZW50V2l0aEF0dHIgfSBmcm9tICcuL3RyYXZlcnNlVG9QYXJlbnRXaXRoQXR0cic7XHJcblxyXG4vKipcclxuICogRmluZCBIVE1MRWxlbWVudCBhdHRyaWJ1dGUsIGluIHRoZSBkb20tdHJlZSwgYnViYmxlcyB1cFxyXG4gKiBAcGFyYW0gZWwge0hUTUxFbGVtZW50fVxyXG4gKiBAcGFyYW0gYXR0clxyXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGdldFBhcmVudEF0dHJpYnV0ZSA9IChlbCwgYXR0cikgPT4gdHJhdmVyc2VUb1BhcmVudFdpdGhBdHRyKGVsLCBhdHRyKS52YWx1ZTtcclxuIiwiaW1wb3J0IHsgZ2V0Q2xhc3NOYW1lIH0gZnJvbSAnLi9nZXRDbGFzc05hbWUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGhhc0NsYXNzID0gKGVsLCBuYW1lKSA9PiB7XHJcbiAgaWYgKHR5cGVvZiBlbC5jbGFzc0xpc3QgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICByZXR1cm4gZWwuY2xhc3NMaXN0LmNvbnRhaW5zKG5hbWUpO1xyXG4gIH1cclxuICBjb25zdCBjbGFzc05hbWUgPSBnZXRDbGFzc05hbWUoZWwpO1xyXG4gIHJldHVybiBuZXcgUmVnRXhwKGAoXnwgKSR7bmFtZX0oIHwkKWAsICdnaScpLnRlc3QoY2xhc3NOYW1lKTtcclxufTtcclxuIiwiZXhwb3J0ICogZnJvbSAnLi9hZGRDbGFzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRlRWxlbWVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGVzdHJveUVsZW1lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2VsZW1lbnRGcm9tU3RyaW5nJztcclxuZXhwb3J0ICogZnJvbSAnLi9maW5kQnlDbGFzc05hbWUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2dldENsYXNzTmFtZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZ2V0UGFyZW50QXR0cmlidXRlJztcclxuZXhwb3J0ICogZnJvbSAnLi9oYXNDbGFzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaXNJbnNpZGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3JlbW92ZUNsYXNzJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXRDbGFzc05hbWUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RyYXZlcnNlVG9QYXJlbnRXaXRoQXR0cic7XHJcbiIsImltcG9ydCB7IGlzIH0gZnJvbSAnLi4vaXMnO1xyXG5cclxuLyoqXHJcbiAqIENoZWNrIGlmIHNvbWUgSFRNTEVsZW1lbnQgaXMgaW5zaWRlIGFub3RoZXIgb25lXHJcbiAqIEBwYXJhbSBjaGlsZCB7SFRNTEVsZW1lbnR9XHJcbiAqIEBwYXJhbSBwYXJlbnQge0hUTUxFbGVtZW50fVxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICovXHJcbmV4cG9ydCBjb25zdCBpc0luc2lkZSA9IChjaGlsZCwgcGFyZW50KSA9PiB7XHJcbiAgbGV0IGN1cnJlbnQgPSBjaGlsZDtcclxuXHJcbiAgd2hpbGUgKGN1cnJlbnQgIT09IHBhcmVudCkge1xyXG4gICAgaWYgKCFpcyhjdXJyZW50KSB8fCBjdXJyZW50LnRhZ05hbWUgPT09ICdCT0RZJyB8fCBjdXJyZW50LnRhZ05hbWUgPT09ICdIVE1MJykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnROb2RlO1xyXG4gIH1cclxuICByZXR1cm4gdHJ1ZTtcclxufTtcclxuIiwiaW1wb3J0IHsgZ2V0Q2xhc3NOYW1lIH0gZnJvbSAnLi9nZXRDbGFzc05hbWUnO1xyXG5pbXBvcnQgeyBzZXRDbGFzc05hbWUgfSBmcm9tICcuL3NldENsYXNzTmFtZSc7XHJcblxyXG5leHBvcnQgY29uc3QgcmVtb3ZlQ2xhc3MgPSAoZWwsIC4uLmNsYXNzTmFtZXMpID0+IHtcclxuICBjb25zdCBuYW1lID0gY2xhc3NOYW1lcztcclxuXHJcbiAgaWYgKHR5cGVvZiBlbC5jbGFzc0xpc3QgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICBuYW1lLmZvckVhY2goKGNscykgPT4ge1xyXG4gICAgICBpZiAoY2xzLnRyaW0oKSkge1xyXG4gICAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoY2xzKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnN0IHJlZ2V4ICAgICA9IG5ldyBSZWdFeHAoYChefCApJHtuYW1lLmpvaW4oJ3wnKX0oIHwkKWAsICdnaScpO1xyXG4gICAgY29uc3QgY2xhc3NOYW1lID0gZ2V0Q2xhc3NOYW1lKGVsKS5yZXBsYWNlKHJlZ2V4LCAnICcpO1xyXG4gICAgc2V0Q2xhc3NOYW1lKGVsLCBjbGFzc05hbWUpO1xyXG4gIH1cclxufTtcclxuIiwiZXhwb3J0IGNvbnN0IHNldENsYXNzTmFtZSA9IChlbCwgY2xhc3NOYW1lKSA9PiB7XHJcbiAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIGNsYXNzTmFtZSk7XHJcbn07XHJcbiIsImltcG9ydCB7IGlzIH0gZnJvbSAnLi4vaXMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IHRyYXZlcnNlVG9QYXJlbnRXaXRoQXR0ciA9IChlbGVtZW50LCBhdHRyaWJ1dGUpID0+IHtcclxuICBsZXQgcGFyZW50ID0gZWxlbWVudDtcclxuICBsZXQgdmFsdWUgID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlKTtcclxuICB3aGlsZSAoIWlzKHZhbHVlKSkge1xyXG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudE5vZGU7XHJcbiAgICBpZiAocGFyZW50ICYmIHR5cGVvZiBwYXJlbnQuZ2V0QXR0cmlidXRlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHZhbHVlID0gcGFyZW50LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcGFyZW50ID0gbnVsbDtcclxuICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiB7XHJcbiAgICB2YWx1ZSxcclxuICAgIHBhcmVudFxyXG4gIH07XHJcbn07XHJcbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIEVtaXR0ZXIge1xuICBvbihldmVudCwgbGlzdGVuZXIpIHtcbiAgICB0aGlzLmV2ZW50cyAgICAgICAgPSB0aGlzLmV2ZW50cyB8fCB7fTtcbiAgICB0aGlzLmV2ZW50c1tldmVudF0gPSB0aGlzLmV2ZW50c1tldmVudF0gfHwgW107XG4gICAgdGhpcy5ldmVudHNbZXZlbnRdLnB1c2gobGlzdGVuZXIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgb25jZShldmVudCwgbGlzdGVuZXIpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgIGZ1bmN0aW9uIGZuKC4uLmFyZ3MpIHtcbiAgICAgIHNlbGYub2ZmKGV2ZW50LCBmbik7XG4gICAgICBsaXN0ZW5lci5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9XG5cbiAgICBmbi5saXN0ZW5lciA9IGxpc3RlbmVyO1xuICAgIHRoaXMub24oZXZlbnQsIGZuKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG9mZihldmVudCwgbGlzdGVuZXIpIHtcbiAgICBsZXQgbGlzdGVuZXJzO1xuXG4gICAgaWYgKHRoaXMuZXZlbnRzICYmIHRoaXMuZXZlbnRzW2V2ZW50XSkge1xuICAgICAgbGlzdGVuZXJzID0gdGhpcy5ldmVudHNbZXZlbnRdO1xuXG4gICAgICBsaXN0ZW5lcnMuZm9yRWFjaCgoZm4sIGkpID0+IHtcbiAgICAgICAgaWYgKGZuID09PSBsaXN0ZW5lciB8fCBmbi5saXN0ZW5lciA9PT0gbGlzdGVuZXIpIHtcbiAgICAgICAgICBsaXN0ZW5lcnMuc3BsaWNlKGksIDEpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGxpc3RlbmVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZGVsZXRlIHRoaXMuZXZlbnRzW2V2ZW50XTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBlbWl0KGV2ZW50LCAuLi5hcmdzKSB7XG4gICAgbGV0IGxpc3RlbmVycztcblxuICAgIGlmICh0aGlzLmV2ZW50cyAmJiB0aGlzLmV2ZW50c1tldmVudF0pIHtcbiAgICAgIGxpc3RlbmVycyA9IHRoaXMuZXZlbnRzW2V2ZW50XTtcblxuICAgICAgbGlzdGVuZXJzID0gbGlzdGVuZXJzLnNsaWNlKDApO1xuICAgICAgbGlzdGVuZXJzLmZvckVhY2goKGZuKSA9PiBmbi5hcHBseSh0aGlzLCBhcmdzKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG4iLCJleHBvcnQgKiBmcm9tICcuL2lzRnVuY3Rpb24nO1xyXG4iLCJleHBvcnQgY29uc3QgaXNGdW5jdGlvbiA9IChmKSA9PiB7XHJcbiAgcmV0dXJuIHR5cGVvZiBmID09PSAnZnVuY3Rpb24nO1xyXG59O1xyXG4iLCJleHBvcnQgKiBmcm9tICcuL2FycmF5JztcclxuZXhwb3J0ICogZnJvbSAnLi9jdXJyZW5jeSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZG9tJztcclxuZXhwb3J0ICogZnJvbSAnLi9mdW5jdGlvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbWF0aCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vb2JqZWN0JztcclxuZXhwb3J0ICogZnJvbSAnLi9zdHJpbmcnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9pcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYWpheCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdmFsaWRhdGUnO1xyXG5cclxuaW1wb3J0IEVtaXR0ZXIgZnJvbSAnLi9lbWl0dGVyJztcclxuZXhwb3J0IHsgRW1pdHRlciB9O1xyXG4iLCJpbXBvcnQgeyBpc05hTlBvbHlmaWxsIH0gZnJvbSAnLi9tYXRoL2lzTmFOUG9seWZpbGwnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzID0gKG8pID0+IHtcclxuICByZXR1cm4gdHlwZW9mIG8gIT09ICd1bmRlZmluZWQnICYmIG8gIT09IG51bGwgJiYgIWlzTmFOUG9seWZpbGwobyk7XHJcbn07XHJcbiIsImV4cG9ydCAqIGZyb20gJy4vaXNOYU5Qb2x5ZmlsbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaXNOdW1lcmljJztcclxuIiwiZXhwb3J0IGNvbnN0IGlzTmFOUG9seWZpbGwgPSAodmFsdWUpID0+IHtcclxuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNOYU4odmFsdWUpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBpc05hTlBvbHlmaWxsIH0gZnJvbSAnLi9pc05hTlBvbHlmaWxsJztcclxuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJy4uL2FycmF5L2lzQXJyYXknO1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzTnVtZXJpYyA9IChuKSA9PiB7XHJcbiAgcmV0dXJuICFpc0FycmF5KG4pICYmICFpc05hTlBvbHlmaWxsKHBhcnNlSW50KG4sIDEwKSk7XHJcbn07XHJcbiIsImltcG9ydCB7IHRyYXZlcnNlT2JqIH0gZnJvbSAnLi90cmF2ZXJzZU9iaic7XHJcbmltcG9ydCB7IGRhc2hUb0NhcGl0YWwgfSBmcm9tICcuLi9zdHJpbmcvZGFzaFRvQ2FwaXRhbCc7XHJcbmltcG9ydCB7IHVuZGVyc2NvcmVUb0NhcGl0YWwgfSBmcm9tICcuLi9zdHJpbmcvdW5kZXJzY29yZVRvQ2FwaXRhbCc7XHJcblxyXG5leHBvcnQgY29uc3QgY2FwaXRhbGl6ZU9iaiA9IChvYmplY3QpID0+IHtcclxuICBvYmplY3QgPSB0cmF2ZXJzZU9iaihvYmplY3QsIGRhc2hUb0NhcGl0YWwpO1xyXG4gIG9iamVjdCA9IHRyYXZlcnNlT2JqKG9iamVjdCwgdW5kZXJzY29yZVRvQ2FwaXRhbCk7XHJcblxyXG4gIHJldHVybiBvYmplY3Q7XHJcbn07XHJcbiIsImV4cG9ydCAqIGZyb20gJy4vY2FwaXRhbGl6ZU9iaic7XHJcbmV4cG9ydCAqIGZyb20gJy4vaXNPYmplY3QnO1xyXG5leHBvcnQgKiBmcm9tICcuL21lcmdlJztcclxuZXhwb3J0ICogZnJvbSAnLi9waWNrJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJpYWxpemUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RyYXZlcnNlT2JqJztcclxuIiwiY29uc3QgeyBwcm90b3R5cGU6IHsgdG9TdHJpbmcgfSB9ID0gT2JqZWN0O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzT2JqZWN0ID0gKG8pID0+IHtcclxuICByZXR1cm4gdG9TdHJpbmcuY2FsbChvKSA9PT0gJ1tvYmplY3QgT2JqZWN0XSc7XHJcbn07XHJcbiIsImltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSAnLi9pc09iamVjdCc7XHJcblxyXG5jb25zdCB7IGtleXMgfSA9IE9iamVjdDtcclxuXHJcbi8qKlxyXG4gKiBNZXJnZSB0d28gb2JqZWN0c1xyXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqMVxyXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqMlxyXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGlzRGVlcFxyXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IG1lcmdlID0gKG9iajEsIG9iajIsIGlzRGVlcCkgPT4ge1xyXG4gIGNvbnN0IG9iajMgPSB7fTtcclxuICBrZXlzKG9iajEpLmZvckVhY2goKGkpID0+IHtcclxuICAgIGlmIChpc0RlZXAgJiYgaXNPYmplY3Qob2JqMVtpXSkpIHtcclxuICAgICAgb2JqM1tpXSA9IG1lcmdlKG9iajFbaV0sIHt9LCB0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG9iajNbaV0gPSBvYmoxW2ldO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBrZXlzKG9iajIpLmZvckVhY2goKGkpID0+IHtcclxuICAgIGlmIChpc0RlZXAgJiYgaXNPYmplY3Qob2JqMltpXSkpIHtcclxuICAgICAgb2JqM1tpXSA9IG1lcmdlKG9iajNbaV0gfHwge30sIG9iajJbaV0sIHRydWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgb2JqM1tpXSA9IG9iajJbaV07XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIG9iajM7XHJcbn07XHJcbiIsIi8qKlxyXG4gKiBQaWNrIHByb3BlcnRpZXMgZnJvbSBvYmplY3RcclxuICogbGV0IGEgPSB7IG5hbWU6IFwiUm9tYW5cIiwgcGhvbmU6IDEyMywgY291bnRyeTogXCJhbnlcIiB9O1xyXG4gKiBwaWNrKGEsICduYW1lJywgJ2NvdW50cnknKVxyXG4gKiA9PiB7IG5hbWU6IFwiUm9tYW5cIiwgY291bnRyeTogXCJhbnlcIiB9XHJcbiAqXHJcbiAqIEBwYXJhbSBvYmoge09iamVjdH1cclxuICogQHBhcmFtIGFyZ3Mge1N0cmluZ31cclxuICogQHJldHVybnMge09iamVjdH1cclxuICovXHJcbmV4cG9ydCBjb25zdCBwaWNrID0gKG9iaiwgLi4uYXJncykgPT4gYXJncy5yZWR1Y2UoKGksIHQpID0+IHtcclxuICBjb25zdCBwaWNrZWRPYmogPSBpO1xyXG5cclxuICBwaWNrZWRPYmpbdF0gPSBvYmpbdF07XHJcblxyXG4gIHJldHVybiBwaWNrZWRPYmo7XHJcbn0sIHt9KTtcclxuIiwiY29uc3QgeyBrZXlzIH0gPSBPYmplY3Q7XHJcblxyXG4vLyBzZXJpYWxpemUgcXVlcnkgcGFyYW1zIHdpdGggYWRkaXRpb25hbCB0cmFuc2Zvcm0gZnVuY3Rpb25cclxuZXhwb3J0IGNvbnN0IHNlcmlhbGl6ZSA9IChvYmosIHRyYW5zZm9ybSkgPT4ge1xyXG4gIGNvbnN0IGNvbXBvbmVudCA9IGtleXMob2JqKS5tYXAoKHApID0+IGAke3RyYW5zZm9ybShlbmNvZGVVUklDb21wb25lbnQocCkpfT0ke2VuY29kZVVSSUNvbXBvbmVudChvYmpbcF0pfWApO1xyXG4gIHJldHVybiBjb21wb25lbnQuam9pbignJicpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi4vYXJyYXkvaXNBcnJheSc7XHJcbmltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSAnLi9pc09iamVjdCc7XHJcblxyXG5jb25zdCB7IGtleXMgfSA9IE9iamVjdDtcclxuXHJcbi8qKlxyXG4gKiBSZWN1cnNpdmVseSB0cmF2ZXJzZSBvYmplY3Qgb3duIHByb3BlcnRpZXMgYW5kIGFwcGx5IHRyYW5zZm9ybSBmdW5jdGlvbiBvbiBrZXlzIG9yIHZhbHVlc1xyXG4gKiBsZXQgYSA9IHsgbGFzdE5hbWU6IFwiUm9tYW5cIiwgZmlyc3ROYW1lOiBcIktodWR5YWtvdlwiIH1cclxuICogdHJhdmVyc2VPYmooYSwgdG9VbmRlcnNjb3JlKVxyXG4gKiA9PiB7IGxhc3RfbmFtZTogXCJSb21hblwiLCBmaXJzdF9uYW1lOiBcIktodWR5YWtvdlwiIH1cclxuICpcclxuICogQHBhcmFtIG9iaiB7T2JqZWN0fVxyXG4gKiBAcGFyYW0gZm5LZXkge0Z1bmN0aW9uIHwgQm9vbGVhbn1cclxuICogQHBhcmFtIGZuVmFsdWUge0Z1bmN0aW9uIHwgQm9vbGVhbn1cclxuICovXHJcbmV4cG9ydCBjb25zdCB0cmF2ZXJzZU9iaiA9IChvYmosIGZuS2V5ID0gZmFsc2UsIGZuVmFsdWUgPSBmYWxzZSkgPT4ge1xyXG4gIGlmICghaXNPYmplY3Qob2JqKSkge1xyXG4gICAgcmV0dXJuIG9iajtcclxuICB9XHJcblxyXG4gIHJldHVybiBrZXlzKG9iaikucmVkdWNlKChjdXJyLCBuZXh0KSA9PiB7XHJcbiAgICBsZXQgbmV4dFByb3BlcnR5ID0gb2JqW25leHRdO1xyXG4gICAgY29uc3QgbyAgICAgICAgICA9IGN1cnI7XHJcblxyXG4gICAgaWYgKGlzQXJyYXkobmV4dFByb3BlcnR5KSkge1xyXG4gICAgICBuZXh0UHJvcGVydHkgPSBuZXh0UHJvcGVydHkubWFwKChpKSA9PiB0cmF2ZXJzZU9iaihpLCBmbktleSwgZm5WYWx1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmblZhbHVlKSB7XHJcbiAgICAgIG9bZm5LZXkgPyBmbktleShuZXh0KSA6IG5leHRdID0gaXNPYmplY3QobmV4dFByb3BlcnR5KVxyXG4gICAgICAgID8gdHJhdmVyc2VPYmoobmV4dFByb3BlcnR5LCBmbktleSwgZm5WYWx1ZSkgOiBmblZhbHVlKG5leHRQcm9wZXJ0eSwgbmV4dCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBvW2ZuS2V5ID8gZm5LZXkobmV4dCkgOiBuZXh0XSA9IGlzT2JqZWN0KG5leHRQcm9wZXJ0eSlcclxuICAgICAgICA/IHRyYXZlcnNlT2JqKG5leHRQcm9wZXJ0eSwgZm5LZXkpIDogbmV4dFByb3BlcnR5O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvO1xyXG4gIH0sIHt9KTtcclxufTtcclxuIiwiZXhwb3J0IGNvbnN0IGRhc2hUb0NhcGl0YWwgPSAoc3RyKSA9PiBzdHIucmVwbGFjZSgvLShbYS16XSkvaWcsIChzLCBpKSA9PiBpLnRvVXBwZXJDYXNlKCkpO1xyXG4iLCJleHBvcnQgKiBmcm9tICcuL2Rhc2hUb0NhcGl0YWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2lzU3RyaW5nJztcclxuZXhwb3J0ICogZnJvbSAnLi90b1VuZGVyc2NvcmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3VuZGVyc2NvcmVUb0NhcGl0YWwnO1xyXG4iLCJleHBvcnQgY29uc3QgaXNTdHJpbmcgPSAoZikgPT4ge1xyXG4gIHJldHVybiB0eXBlb2YgZiA9PT0gJ3N0cmluZyc7XHJcbn07XHJcbiIsImV4cG9ydCBjb25zdCB0b1VuZGVyc2NvcmUgPSAoc3RyKSA9PiBzdHIucmVwbGFjZSgvKFtBLVpdKS9nLCAocykgPT4gYF8ke3MudG9Mb3dlckNhc2UoKX1gKTtcclxuIiwiZXhwb3J0IGNvbnN0IHVuZGVyc2NvcmVUb0NhcGl0YWwgPSAoc3RyKSA9PiBzdHIucmVwbGFjZSgvXyhbYS16XSkvaWcsIChzLCBpKSA9PiBpLnRvVXBwZXJDYXNlKCkpO1xyXG4iLCJpbXBvcnQgeyBpcyB9IGZyb20gJy4vaXMnO1xyXG5pbXBvcnQgeyBpc051bWVyaWMgfSBmcm9tICcuL21hdGgvaXNOdW1lcmljJztcclxuXHJcbi8vIFZhbGlkYXRpb25zXHJcbmV4cG9ydCBjb25zdCB2YWxpZGF0ZSA9IHtcclxuICBpc0JsYW5rKG8pIHtcclxuICAgIHJldHVybiBpcyhvKTtcclxuICB9LFxyXG4gIGlzTnVtZXJpYyhvKSB7XHJcbiAgICByZXR1cm4gaXNOdW1lcmljKG8pO1xyXG4gIH0sXHJcbiAgaXNFbWFpbChvKSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICdzdHJpbmcnICYmIGlzKG8ubWF0Y2goL15bXkBcXHNdK0AoW15AXFxzXStcXC4pK1teQFxcV10rJC8pKTtcclxuICB9LFxyXG4gIGlzQm91bmRlZEJ5KG8sIG1pbiwgbWF4KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICdudW1iZXInICYmIG8gPj0gbWluICYmIG8gPD0gbWF4O1xyXG4gIH1cclxufTtcclxuIiwiaW1wb3J0IHtcbiAgaXMsIG1lcmdlLCBtb250aExlbmd0aCwgaXNTdHJpbmdcbn0gZnJvbSAnd2lkZ2V0LXV0aWxzJztcblxuLyoqXG4gKiAgcGxlYXNlIHJlZmVyIHRvIC90ZXN0cy91bml0L2NhbGVuZGFyVHJlZS5zcGVjcy5qcyBmb3IgdXNhZ2VcbiAqICBUT0RPIGRvY3MsIG1lcmdlIGF2YWlsYWJpbGl0eSB3aXRoIGNhbGVuZGFyIHRyZWUsIHVzZSBvbmUgZGF0YS1zdHJ1Y3R1cmVcbiAqICBUT0RPIG1pblN0YXkgKyBhdmFpbGFiaWxpdHkgbWFwIGNvbnNpZGVyYXRpb25zIGZvIGRpc2FibGluZyBkYXRlc1xuICovXG5jb25zdCBnZW5BcnJheVJhbmdlID0gKGEsIGIpID0+IHtcbiAgY29uc3QgbGlzdCA9IFtdO1xuICBmb3IgKGxldCBpID0gYTsgaSA8PSBiOyBpICs9IDEpIHtcbiAgICBsaXN0LnB1c2goaSk7XG4gIH1cbiAgcmV0dXJuIGxpc3Q7XG59O1xuXG5jb25zdCBwYXJzZUlTT1N0cmluZyA9IChzdHIgLyogeXl5eS1tbS1kZCAqLykgPT4ge1xuICBjb25zdCBhcnJTdHIgPSBzdHIuc3BsaXQoJy0nKS5tYXAocGFyc2VGbG9hdCk7XG4gIHJldHVybiB7XG4gICAgeWVhcjogYXJyU3RyWzBdLFxuICAgIG1vbnRoOiBhcnJTdHJbMV0gLSAxLFxuICAgIGRhdGU6IGFyclN0clsyXVxuICB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2FsZW5kYXJUcmVlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHZhbGlkYXRlQ2VsbFxuICAgKiBAcGFyYW0ge09iamVjdH0gdHJlZVxuICAgKi9cbiAgY29uc3RydWN0b3IodmFsaWRhdGVDZWxsLCB0cmVlKSB7XG4gICAgdGhpcy52YWxpZGF0ZUNlbGwgPSB2YWxpZGF0ZUNlbGw7XG4gICAgdGhpcy50cmVlICAgICAgICAgPSB0cmVlO1xuICB9XG5cbiAgYWRkVHJlZShvYmopIHtcbiAgICBpZiAoIXRoaXMudHJlZSkge1xuICAgICAgdGhpcy50cmVlID0gb2JqO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyZWUgPSBtZXJnZSh0aGlzLnRyZWUgfHwge30sIG9iaiwgdHJ1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIHNlbGVjdCByYW5nZSBmcm9tIHRoZSB0cmVlLCByZXR1cm5zIGFycmF5IGl0ZW1zXG4gICAqIHN0YXJ0IGRhdGUgaXMgQUxXQVlTIDwgdGhlbiBlbmQgZGF0ZSAsIGFzIHdlIGFyZSBzZWxlY3RpbmcgdGltZSByYW5nZSBpbiBkYXlzLlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5fSBzdGFydCBlLmcuIFsyMDE2LCAwLCAxXVxuICAgKiBAcGFyYW0ge0FycmF5fSBlbmQgICAgICAgIFsyMDE2LCAxLCAzXVxuICAgKiBAcmV0dXJucyB7e3JhbmdlOiBBcnJheSwgaXNWYWxpZDoge0Jvb2xlYW59fX1cbiAgICovXG4gIHNlbGVjdFJhbmdlKHN0YXJ0LCBlbmQpIHtcbiAgICBsZXQgcmFuZ2UgPSBbXTtcblxuICAgIGNvbnN0IGEgPSBzdGFydC5zbGljZSgpO1xuXG4gICAgLy8gaWYgeWVhciBhbmQgbW9udGggdGhlIHNhbWUsIGp1c3Qgc2xpY2UgdGhlIGN1cnJlbnQgbW9udGhcbiAgICBpZiAoYVswXSA9PT0gZW5kWzBdICYmIGFbMV0gPT09IGVuZFsxXSkge1xuICAgICAgcmFuZ2UgPSB0aGlzLnNlbGVjdERheXNJbk1vbnRoKGFbMF0sIGFbMV0sIGFbMl0sIGVuZFsyXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1vbnRoRGF5cyA9IHRoaXMudHJlZVthWzBdXVthWzFdXTtcblxuICAgICAgLy8gc2xpY2UgdGhlIHBpZWNlIG9mIGN1cnJlbnQgbW9udGhEYXlzIGZyb20gc3RhcnQgb2YgcmFuZ2UgdGlsbCBlbmQgb2YgdGhlIG1vbnRoRGF5c1xuICAgICAgcmFuZ2UgPSByYW5nZS5jb25jYXQodGhpcy5zZWxlY3REYXlzSW5Nb250aChhWzBdLCBhWzFdLCBhWzJdLCBtb250aERheXMubGVuZ3RoKSk7XG5cbiAgICAgIC8vIHNoaWZ0IHN0YXJ0IG1vbnRoLCBiL2Mgd2UgYWxyZWFkeSBzZWxlY3RlZCBkYXlzIGluIGl0XG4gICAgICBhWzFdICs9IDE7XG5cbiAgICAgIC8vIGlmIGVuZCBkYXRlIHllYXIgPiBzdGFydCBkYXRlXG4gICAgICAvLyBzZWxlY3QgZXZlcnl0aGluZyBpbiBzdGFydCB5ZWFyIHRpbGwgdGhlIGVuZCBvZiBzdGFydCB5ZWFyXG4gICAgICAvLyBlLmcuIHN0YXJ0IGlzIDIwIE9jdG9iZXIsIHNvIHNlbGVjdCBOb3ZlbWJlciBhbmQgRGVjZW1iZXIsIE9jdG9iZXIgd2FzIHNlbGVjdGVkIGFib3ZlXG4gICAgICBpZiAoZW5kWzBdID4gc3RhcnRbMF0pIHtcbiAgICAgICAgcmFuZ2UgPSByYW5nZS5jb25jYXQodGhpcy5zZWxlY3RNb250aHNJblllYXIoYVswXSwgYVsxXSwgMTEpKTtcbiAgICAgICAgLy8gYW5kIHNldCBzdGFydCB5ZWFyIHRvIGVuZCB5ZWFyXG4gICAgICAgIC8vIG1vbnRoIHRvIDAgKEphbnVhcnkpXG4gICAgICAgIFthWzBdLCBhWzFdXSA9IFtlbmRbMF0sIDBdO1xuICAgICAgfVxuXG4gICAgICAvLyBub3cgd2UgYXJlIGF0IHRoZSBzYW1lIHllYXIgYW5kIGhhdmUgdGhlIGNhc2UgaWYgZW5kIG1vbnRoID4gc3RhcnQgbW9udGhcbiAgICAgIC8vIHRoZW4gc2VsZWN0IGV2ZXJ5dGhpbmcgYmV0d2VlbiB0aG9zZSBtb250aHNcbiAgICAgIGlmIChlbmRbMV0gPiBhWzFdKSB7XG4gICAgICAgIC8vIGUuZy4gc3RhcnQgMjAgT2N0b2JlciBlbmQgMjAgRGVjZW1iZXIsIHNlbGVjdCBmdWxsIE5vdmVtYmVyXG4gICAgICAgIHJhbmdlID0gcmFuZ2UuY29uY2F0KHRoaXMuc2VsZWN0TW9udGhzSW5ZZWFyKGFbMF0sIGFbMV0sIGVuZFsxXSAtIDEpKTtcbiAgICAgICAgYVsxXSA9IGVuZDtcbiAgICAgIH1cblxuICAgICAgLy8gdGhlIG1pc3NpbmcgcGFydCBpcyBkYXlzIGluIGVuZCBzZWxlY3Rpb24gbW9udGhcbiAgICAgIHJhbmdlID0gcmFuZ2UuY29uY2F0KHRoaXMuc2VsZWN0RGF5c0luTW9udGgoZW5kWzBdLCBlbmRbMV0sIDEsIGVuZFsyXSkpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByYW5nZSxcbiAgICAgIGlzVmFsaWQ6IHRoaXMuaXNSYW5nZVZhbGlkKHJhbmdlKVxuICAgIH07XG4gIH1cblxuICBzZWxlY3RNb250aHNJblllYXIoeWVhciwgc3RhcnQsIGVuZCkge1xuICAgIGxldCBzZWxlY3Rpb24gICAgPSBbXTtcbiAgICBjb25zdCBtb250aFJhbmdlID0gZ2VuQXJyYXlSYW5nZShzdGFydCwgZW5kKTtcblxuICAgIG1vbnRoUmFuZ2UuZm9yRWFjaCgobW9udGgpID0+IHtcbiAgICAgIGNvbnN0IHkgPSB0aGlzLnRyZWVbeWVhcl07XG4gICAgICBjb25zdCBtID0gaXMoeSkgPyB0aGlzLnRyZWVbeWVhcl1bbW9udGhdIDogbnVsbDtcblxuICAgICAgaWYgKHkgJiYgbSkge1xuICAgICAgICBzZWxlY3Rpb24gPSBzZWxlY3Rpb24uY29uY2F0KHRoaXMuc2VsZWN0RGF5c0luTW9udGgoeWVhciwgbW9udGgsIDEsIG0ubGVuZ3RoKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2VsZWN0aW9uO1xuICB9XG5cbiAgc2VsZWN0RGF5c0luTW9udGgoeWVhciwgbW9udGgsIHN0YXJ0RGF5LCBlbmREYXkpIHtcbiAgICBjb25zdCB5ID0gdGhpcy50cmVlW3llYXJdO1xuICAgIGNvbnN0IG0gPSBpcyh5KSA/IHRoaXMudHJlZVt5ZWFyXVttb250aF0gOiBudWxsO1xuXG4gICAgaWYgKHkgJiYgbSkge1xuICAgICAgcmV0dXJuIG0uc2xpY2UoKHN0YXJ0RGF5IC0gMSksIGVuZERheSk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHNlbGVjdERheSh5ZWFyLCBtb250aCwgZGF5KSB7XG4gICAgY29uc3QgeSA9IHRoaXMudHJlZVt5ZWFyXTtcbiAgICBjb25zdCBtID0gaXMoeSkgPyB0aGlzLnRyZWVbeWVhcl1bbW9udGhdIDogbnVsbDtcblxuICAgIGlmICh5ICYmIG0pIHtcbiAgICAgIHJldHVybiBtW2RheSAtIDFdO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlzUmFuZ2VWYWxpZChyYW5nZSwgZm4pIHtcbiAgICBjb25zdCB2YWxpZGF0ZUNlbGwgPSB0aGlzLnZhbGlkYXRlQ2VsbCB8fCBmbjtcbiAgICBsZXQgaXNWYWxpZCAgICAgICAgPSB0cnVlO1xuXG4gICAgaWYgKHR5cGVvZiB2YWxpZGF0ZUNlbGwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IGZpbHRlclZhbGlkcyA9IHJhbmdlLmZpbHRlcigoY2VsbCkgPT4gdGhpcy52YWxpZGF0ZUNlbGwoY2VsbCkpO1xuICAgICAgaXNWYWxpZCA9IGZpbHRlclZhbGlkcy5sZW5ndGggPT0gcmFuZ2UubGVuZ3RoO1xuICAgIH1cblxuICAgIHJldHVybiBpc1ZhbGlkO1xuICB9XG5cbiAgcmVwbGFjZU1hcHMobWFwLCB1cGRhdGVkQXQpIHtcbiAgICB0aGlzLm1hcCA9IENhbGVuZGFyVHJlZS5tYXBzVG9UcmVlKG1hcCwgdXBkYXRlZEF0KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlbW92ZU1hcCgpIHtcbiAgICB0aGlzLm1hcCA9IHt9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqICBDcmVhdGUgYSB0cmVlIHN0cnVjdHVyZSBmcm9tIG1hcHNcbiAgICogIGZvciBuLXRpbWUgZGF5IGFjY2VzcywgZS5nLiB0aGlzLm1hcFt5ZWFyXVttb250aF1bZGF5XS5pc0F2YWlsYWJsZTtcbiAgICoge1xuICAgKiAgIDIxMDY6IHtcbiAgICogICAgICAxOiB7XG4gICAqICAgICAgICAxOiAsXG4gICAqICAgICAgICAyOiAsXG4gICAqICAgICAgICAzOlxuICAgKiAgICAgICAgLi4uXG4gICAqICAgICAgfVxuICAgKiAgICAgIC4uLlxuICAgKiAgICAgIDEyOiB7XG4gICAqXG4gICAqICAgICAgfVxuICAgKiAgICB9XG4gICAqIH1cbiAgICogQHBhcmFtIHtPYmplY3R9IG1hcHNcbiAgICogQHBhcmFtIHtTdHJpbmcgfCBEYXRlfSBtYXBTdGFydEF0XG4gICAqIEByZXR1cm5zIHtPYmplY3R9XG4gICAqL1xuICBzdGF0aWMgbWFwc1RvVHJlZShtYXBzLCBtYXBTdGFydEF0KSB7XG4gICAgaWYgKCEoaXNTdHJpbmcobWFwcy5hdmFpbGFiaWxpdHkpXG4gICAgICB8fCBpc1N0cmluZyhtYXBzLm5pZ2h0bHlfcmF0ZXMpXG4gICAgICB8fCBpc1N0cmluZyhtYXBzLm1pbmltdW1fc3RheXMpKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgYXZhaWwgID0gbWFwcy5hdmFpbGFiaWxpdHkuc3BsaXQoJycpLm1hcChwYXJzZUZsb2F0KTtcbiAgICBjb25zdCByYXRlcyAgPSBtYXBzLm5pZ2h0bHlfcmF0ZXMuc3BsaXQoJywnKS5tYXAocGFyc2VGbG9hdCk7XG4gICAgY29uc3QgbWluTWFwID0gbWFwcy5taW5pbXVtX3N0YXlzLnNwbGl0KCcsJykubWFwKHBhcnNlRmxvYXQpO1xuICAgIGxldCBkYXkgICAgICA9IDE7XG5cbiAgICBsZXQge1xuICAgICAgeWVhcixcbiAgICAgIG1vbnRoLFxuICAgICAgZGF0ZTogZGF5U2hpZnRcbiAgICB9ID0gcGFyc2VJU09TdHJpbmcobWFwU3RhcnRBdCk7XG5cbiAgICAvLyB0cmljayB0byBhZGQgZXh0cmEgdW5hdmFpbGFibGUgZGF0ZSBmb3IgcHJvcGVyIGNhbGN1bGF0aW9ucyBvZiBjaGVjay1vdXQgZGF0ZXNcbiAgICBpZiAoYXZhaWxbYXZhaWwubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIGF2YWlsLnB1c2goMSk7XG4gICAgfVxuXG4gICAgbGV0IHByZXZpb3VzRGF0ZSA9IHt9O1xuXG4gICAgcmV0dXJuIGF2YWlsLnJlZHVjZSgoY3Vyciwgc3RhdGUsIGluZGV4LCBhcnIpID0+IHtcbiAgICAgIGNvbnN0IGxlbmd0aCAgICAgICAgICAgPSBtb250aExlbmd0aCh5ZWFyLCBtb250aCk7XG4gICAgICBjb25zdCB0cmVlICAgICAgICAgICAgID0gY3VycjtcbiAgICAgIGNvbnN0IG1pblN0YXkgICAgICAgICAgPSBtaW5NYXBbaW5kZXhdO1xuICAgICAgY29uc3QgcmF0ZSAgICAgICAgICAgICA9IHJhdGVzW2luZGV4XTtcbiAgICAgIGNvbnN0IGlzQXZhaWxhYmxlICAgICAgPSBzdGF0ZSA9PT0gMDtcbiAgICAgIGNvbnN0IHByZXZBdmFpbGFibGUgICAgPSBhcnJbaW5kZXggLSAxXSA9PT0gMDtcbiAgICAgIGNvbnN0IGlzTW9ybmluZ0Jsb2NrZWQgPSAoaXNBdmFpbGFibGUgJiYgIXByZXZBdmFpbGFibGUpID8gdHJ1ZSA6IG51bGw7XG4gICAgICBjb25zdCBpc0F2YWlsYWJsZU91dCAgID0gKGlzTW9ybmluZ0Jsb2NrZWQpID8gdHJ1ZSA6IG51bGw7XG5cbiAgICAgIGlmICghdHJlZVt5ZWFyXSkge1xuICAgICAgICB0cmVlW3llYXJdID0ge307XG4gICAgICB9XG5cbiAgICAgIGlmICghdHJlZVt5ZWFyXVttb250aF0pIHtcbiAgICAgICAgdHJlZVt5ZWFyXVttb250aF0gPSB7fTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRheVNoaWZ0KSB7XG4gICAgICAgIGRheSAgICAgID0gZGF5U2hpZnQ7XG4gICAgICAgIGRheVNoaWZ0ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gaWYgbWluU3RheSA+IGF2YWlsYWJsZSBkYXlzIGluIGZ1dHVyZVxuICAgICAgLy8gY29uc2lkZXIgY3VycmVudCBkYXkgYXMgdW5hdmFpbGFibGUgYXMgd2VsbFxuICAgICAgLy8gaWYgKGlzQXZhaWxhYmxlICYmIG1pblN0YXkgPiAxKSB7XG4gICAgICAvLyAgIGxldCBkYXlzQXZhaWxhYmxlID0gMTtcbiAgICAgIC8vICAgbGV0IGkgICAgICAgICAgICAgPSBpbmRleCArIDE7XG4gICAgICAvLyAgIHdoaWxlIChhcnJbaV0gPT09IDApIHtcbiAgICAgIC8vICAgICBkYXlzQXZhaWxhYmxlICs9IDE7XG4gICAgICAvLyAgICAgaSArPSAxO1xuICAgICAgLy8gICB9XG4gICAgICAvL1xuICAgICAgLy8gICBpZiAobWluU3RheSA+IGRheXNBdmFpbGFibGUpIHtcbiAgICAgIC8vICAgICBpc0F2YWlsYWJsZSA9IGZhbHNlO1xuICAgICAgLy8gICB9XG4gICAgICAvLyB9XG5cbiAgICAgIHRyZWVbeWVhcl1bbW9udGhdW2RheV0gPSB7XG4gICAgICAgIHJhdGUsXG4gICAgICAgIG1pblN0YXksXG4gICAgICAgIGlzQXZhaWxhYmxlLFxuICAgICAgICBpc01vcm5pbmdCbG9ja2VkLFxuICAgICAgICBpc0F2YWlsYWJsZU91dFxuICAgICAgfTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHByZXZBdmFpbGFibGUgJiYgIWlzQXZhaWxhYmxlKSB7XG4gICAgICAgICAgdHJlZVtwcmV2aW91c0RhdGUueWVhcl1bcHJldmlvdXNEYXRlLm1vbnRoXVtwcmV2aW91c0RhdGUuZGF5XS5pc0F2YWlsYWJsZU91dCA9IHRydWU7XG4gICAgICAgICAgdHJlZVt5ZWFyXVttb250aF1bZGF5XS5pc01vcm5pbmdCbG9ja2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICAvLyBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBwcmV2aW91c0RhdGUgPSB7XG4gICAgICAgIHllYXIsXG4gICAgICAgIG1vbnRoLFxuICAgICAgICBkYXlcbiAgICAgIH07XG5cbiAgICAgIGlmIChkYXkgPCBsZW5ndGgpIHtcbiAgICAgICAgZGF5ICs9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobW9udGggPiAxMCkge1xuICAgICAgICAgIG1vbnRoID0gMDtcbiAgICAgICAgICB5ZWFyICs9IDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbW9udGggKz0gMTtcbiAgICAgICAgfVxuICAgICAgICBkYXkgPSAxO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJlZTtcbiAgICB9LCB7fSk7XG4gIH1cblxuICBnZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5LCBwcm9wZXJ0eSkge1xuICAgIGxldCBwcm9wO1xuXG4gICAgaWYgKHRoaXMubWFwKSB7XG4gICAgICB0cnkge1xuICAgICAgICBwcm9wID0gdGhpcy5tYXBbeWVhcl1bbW9udGhdW2RheV1bcHJvcGVydHldO1xuICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgIC8vIGNvbnRpbnVlIHJlZ2FyZGxlc3Mgb2YgZXJyb3JcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcDtcbiAgfVxuXG4gIGlzRGF5RGlzYWJsZWQoeWVhciwgbW9udGgsIGRheSkge1xuICAgIHJldHVybiAhdGhpcy5nZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5LCAnaXNBdmFpbGFibGUnKTtcbiAgfVxufVxuIiwiLyogZ2xvYmFsIE5vZGUsIGRvY3VtZW50LCB3aW5kb3csIGNvbnNvbGUsIHJlcXVpcmUsIGZldGNoICovXG5pbXBvcnQge1xuICBhZGRDbGFzcywgcmVtb3ZlQ2xhc3MsIGhhc0NsYXNzLCBpc0FycmF5LCBpc09iamVjdCwgRW1pdHRlcixcbiAgbWVyZ2UsIGVsZW1lbnRGcm9tU3RyaW5nLCB0cmF2ZXJzZVRvUGFyZW50V2l0aEF0dHIsIGRlc3Ryb3lFbGVtZW50LCBtb250aExlbmd0aCwgaXMsIGlzRnVuY3Rpb24sXG4gIGlzTnVtZXJpYywgdHJhdmVyc2VPYmosIGlzSW5zaWRlLCBjdXJyZW5jeUZvcm1hdHRlclxufSBmcm9tICd3aWRnZXQtdXRpbHMnO1xuXG5pbXBvcnQgKiBhcyB0ZW1wbGF0ZXMgZnJvbSAnLi90ZW1wbGF0ZXMnO1xuaW1wb3J0IENhbGVuZGFyVHJlZSBmcm9tICcuL2NhbGVuZGFyLXRyZWUnO1xuaW1wb3J0IGNvbmZpZyBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgbG9jYWxlcyBmcm9tICcuL2xvY2FsZXMnO1xuXG5pbXBvcnQgeyBzdHJmdGltZSB9IGZyb20gJ3N0cnRpbWUnO1xuXG5pbXBvcnQge1xuICBkYXRlVG9Jc28sIGlzTGF0ZXIsIGlzQ3VycmVudCwgdmFsaWRhdGlvbk9mQ2VsbCwgdEZvcm1hdHRlciwgZGF0ZVRvQXJyYXksIG1vbnRoRGlmZlxufSBmcm9tICcuL3V0aWxzJztcblxuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy9jYWxlbmRhci5zY3NzJztcblxuaW1wb3J0IHV0aWxzU3R5bGVzIGZyb20gJ3dpZGdldC11dGlscy9zcmMvc3R5bGVzL3Jlc2V0LnNjc3MnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDYWxlbmRhciBleHRlbmRzIEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvcihvcHRzLCBtYXBzKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5hbWUgICAgPSBjb25maWcubmFtZTtcbiAgICB0aGlzLlZFUlNJT04gPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuICAgIHRoaXMuQ1NTX1BSRUZJWCA9IGNvbmZpZy5jc3NQcmVmaXg7XG5cbiAgICBpZiAoaXNPYmplY3Qob3B0cykpIHtcbiAgICAgIGlmICghb3B0cy5lbCkge1xuICAgICAgICB0aGlzLmxvZ2dlcignZWwgbXVzdCBiZSBIVE1MIGVsZW1lbnQnLCAnZXJyb3InKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb25maWdEYXRhc2V0ID0gbWVyZ2UoY29uZmlnLCBvcHRzLmVsLmRhdGFzZXQpO1xuICAgICAgdGhpcy5vcHRzICAgICAgICAgICA9IG1lcmdlKGNvbmZpZ0RhdGFzZXQsIG9wdHMpO1xuXG4gICAgICB0aGlzLm9wdHMgPSB0cmF2ZXJzZU9iaih0aGlzLm9wdHMsIChhKSA9PiBhLCAoYikgPT4ge1xuICAgICAgICBpZiAoYiA9PT0gJ3RydWUnIHx8IGIgPT09ICdmYWxzZScpIHtcbiAgICAgICAgICByZXR1cm4gKGIgPT09ICd0cnVlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTnVtZXJpYyhiKSkge1xuICAgICAgICAgIHJldHVybiBwYXJzZUludChiLCAxMCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGI7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMub3B0cy5pc0Ryb3BEb3duKSB7XG4gICAgICAgIHRoaXMuaW5pdENhbGVuZGFyRHJvcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lbCA9IG9wdHMuZWw7XG4gICAgICB9XG5cbiAgICAgIHRoaXMub3B0cy5sYW5nICAgICAgICA9ICh0aGlzLm9wdHMubGFuZyAmJiB0aGlzLm9wdHMubGFuZyBpbiBsb2NhbGVzKSA/IHRoaXMub3B0cy5sYW5nIDogJ2VuLVVTJztcbiAgICAgIHRoaXMubG9jYWxlICAgICAgICAgICA9IGxvY2FsZXNbdGhpcy5vcHRzLmxhbmddO1xuICAgICAgdGhpcy5mb3JtYXQgICAgICAgICAgID0gdGhpcy5vcHRzLmZvcm1hdERhdGUgfHwgdGhpcy5sb2NhbGUuZm9ybWF0RGF0ZSB8fCAnJW0vJWQvJVknO1xuICAgICAgdGhpcy5vcHRzLnN0YXJ0T2ZXZWVrID0gdGhpcy5vcHRzLnN0YXJ0T2ZXZWVrIHx8IHRoaXMubG9jYWxlLnN0YXJ0T2ZXZWVrO1xuXG4gICAgICBsZXQgeyBjdXJyZW50RGF0ZSB9ID0gdGhpcy5vcHRzO1xuICAgICAgY29uc3QgeWVhciAgPSBjdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgY29uc3QgbW9udGggPSBjdXJyZW50RGF0ZS5nZXRNb250aCgpO1xuICAgICAgY29uc3QgZGF5ICAgPSBjdXJyZW50RGF0ZS5nZXREYXRlKCk7XG5cbiAgICAgIHRoaXMub3B0cy5jdXJyZW50RGF0ZSA9IFt5ZWFyLCBtb250aCwgZGF5XTtcblxuICAgICAgaWYgKCF0aGlzLm9wdHMueWVhclN0YXJ0KSB7XG4gICAgICAgIHRoaXMub3B0cy55ZWFyU3RhcnQgPSB5ZWFyO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMub3B0cy5tb250aFN0YXJ0KSB7XG4gICAgICAgIHRoaXMub3B0cy5tb250aFN0YXJ0ID0gbW9udGg7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFRPRE86IHJlbmFtZSBkYXlzVHJlZVxuICAgIHRoaXMuZG9tICAgPSB7fTtcbiAgICAvLyBUT0RPOiByZW5hbWUgdG8gY2FsZW5kYXJUcmVlIG9yIGJvb2tpbmdzVHJlZVxuICAgIHRoaXMuY1RyZWUgPSBuZXcgQ2FsZW5kYXJUcmVlKHZhbGlkYXRpb25PZkNlbGwsIHt9KTtcbiAgICAvLyBUT0RPOiByZW5hbWUgdG8gYm9va2luZ3NEYXRhICYgYWRkRGF0YVxuICAgIGlmIChpc09iamVjdChtYXBzKSkge1xuICAgICAgdGhpcy5jVHJlZS5hZGRNYXBzKG1hcHMsIG1hcHMuc3RhcnRfZGF0ZSB8fCBkYXRlVG9Jc28odGhpcy5vcHRzLmN1cnJlbnREYXRlKSk7XG4gICAgfVxuXG4gICAgLy8gc2VsZWN0aW9uIGFuZCBoaWdobGlnaHRzXG4gICAgdGhpcy5pc1NlbGVjdGluZyAgICAgICA9IGZhbHNlO1xuICAgIHRoaXMuaGlnaGxpZ2h0ZWRCb3VuZHMgPSBbXTtcbiAgICB0aGlzLmhhc1ZhbGlkUmFuZ2UgICAgID0gdHJ1ZTtcblxuICAgIC8vIFRPRE86IHJlbmFtZSBpc1JldmVyc2VTZWxlY3RhYmxlIHRvIHNlbGVjdGlvbkRlZmF1bHREaXJlY3Rpb24gLSBzaG91bGQgYmUgTFRSIG9yIFJUTFxuICAgIC8vIHVzZXIgc2VsZWN0cyBlbmQgZGF0ZSBmaXJzdFxuICAgIHRoaXMuaXNSZXZlcnNlU2VsZWN0YWJsZSA9IHRoaXMub3B0cy5pc1JldmVyc2VTZWxlY3RhYmxlO1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgaW5pdCgpIHtcbiAgICBhZGRDbGFzcyh0aGlzLmVsLCBzdHlsZXMuY2FsZW5kYXIsIHV0aWxzU3R5bGVzLnJlc2V0KTtcblxuICAgIGlmICghdGhpcy5lbC5kYXRhc2V0LnRoZW1lKSB7XG4gICAgICB0aGlzLmVsLmRhdGFzZXQudGhlbWUgPSB0aGlzLm9wdHMudGhlbWU7XG4gICAgfVxuXG4gICAgdGhpcy5kb20ubW9udGhzV3JhcHBlciA9IHRoaXMuZWwuYXBwZW5kQ2hpbGQoZWxlbWVudEZyb21TdHJpbmcodGVtcGxhdGVzLm1haW4pKTtcbiAgICB0aGlzLmRvbS5mb3J3YXJkICAgICAgID0gdGhpcy5lbC5hcHBlbmRDaGlsZChlbGVtZW50RnJvbVN0cmluZyh0ZW1wbGF0ZXMuZm9yd2FyZCkpO1xuICAgIHRoaXMuZG9tLmJhY2sgICAgICAgICAgPSB0aGlzLmVsLmFwcGVuZENoaWxkKGVsZW1lbnRGcm9tU3RyaW5nKHRlbXBsYXRlcy5iYWNrKSk7XG4gICAgdGhpcy5yZW5kZXJNb250aHModGhpcy5vcHRzLnllYXJTdGFydCwgdGhpcy5vcHRzLm1vbnRoU3RhcnQpO1xuXG4gICAgdGhpcy5hZGRCdG5zRXZlbnRzKCk7XG5cbiAgICBpZiAodGhpcy5vcHRzLnNlbGVjdGFibGUgJiYgdGhpcy5vcHRzLmVsU3RhcnRBdCAmJiB0aGlzLm9wdHMuZWxFbmRBdCkge1xuICAgICAgaWYgKCF0aGlzLm9wdHMucmVudGFsSWQpIHtcbiAgICAgICAgdGhpcy5pbnB1dHNUb1ZhbHVlcygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm9uKCdtYXBzLWxvYWRlZCcsICgpID0+IHRoaXMuaW5wdXRzVG9WYWx1ZXMoKSk7XG4gICAgICB0aGlzLm9wdHMuZWxTdGFydEF0LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4gdGhpcy5pbnB1dHNUb1ZhbHVlcygpKTtcbiAgICAgIHRoaXMub3B0cy5lbEVuZEF0LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4gdGhpcy5pbnB1dHNUb1ZhbHVlcygpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRzLnJlbnRhbElkICYmICF0aGlzLm9wdHMuaXNEcm9wRG93bikge1xuICAgICAgdGhpcy5sb2FkTWFwcyh0aGlzLm9wdHMucmVudGFsSWQpO1xuICAgIH1cblxuICAgIHRoaXMuZWwuZGF0YXNldC5zZWxlY3RhYmxlID0gdGhpcy5vcHRzLnNlbGVjdGFibGU7XG5cbiAgICB0aGlzLmxvZ2dlcignaW5pdGVkJyk7XG4gICAgdGhpcy5lbWl0KCdpbml0Jyk7XG4gIH1cblxuICBjaGFuZ2VTZWxlY3Rpb25PcmRlcihpc1JldmVyc2UpIHtcbiAgICBpZiAoKGlzUmV2ZXJzZSAhPT0gdGhpcy5pc1JldmVyc2VTZWxlY3RhYmxlKSAmJiAhdGhpcy5pc1NlbGVjdGluZykge1xuICAgICAgdGhpcy5pc1JldmVyc2VTZWxlY3RhYmxlID0gaXNSZXZlcnNlO1xuICAgICAgdGhpcy5kZXN0cm95TW9udGhzKCk7XG4gICAgICB0aGlzLnJlbmRlck1vbnRocyh0aGlzLnllYXJTdGFydCwgdGhpcy5tb250aFN0YXJ0KTtcbiAgICB9XG4gIH1cblxuICByZW5kZXJNb250aHMoeWVhclN0YXJ0LCBtb250aFN0YXJ0KSB7XG4gICAgLy8gY29uc3RydWN0IGRvbSB0cmVlXG4gICAgY29uc3Qge1xuICAgICAgdHJlZSwgeWVhckVuZCwgbW9udGhFbmQsIG1vbnRoc1xuICAgIH0gPSB0aGlzLmNyZWF0ZVRyZWUoeWVhclN0YXJ0LCBtb250aFN0YXJ0LCB0aGlzLm9wdHMuZGlzcGxheU1vbnRocyk7XG5cbiAgICB0aGlzLmNUcmVlLmFkZFRyZWUodHJlZSk7XG5cbiAgICB0aGlzLm1vbnRoU3RhcnQgPSBtb250aFN0YXJ0O1xuICAgIHRoaXMueWVhclN0YXJ0ICA9IHllYXJTdGFydDtcblxuICAgIHRoaXMubW9udGhFbmQgPSBtb250aEVuZDtcbiAgICB0aGlzLnllYXJFbmQgID0geWVhckVuZDtcblxuICAgIGlmICh0aGlzLm9wdHMuc2VsZWN0YWJsZSkge1xuICAgICAgYWRkQ2xhc3ModGhpcy5lbCwgdGhpcy5pc1JldmVyc2VTZWxlY3RhYmxlID8gc3R5bGVzLnJldmVyc2VkIDogc3R5bGVzLmRpcmVjdCk7XG4gICAgICByZW1vdmVDbGFzcyh0aGlzLmVsLCB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUgPyBzdHlsZXMuZGlyZWN0IDogc3R5bGVzLnJldmVyc2VkKTtcbiAgICB9XG5cbiAgICB0aGlzLmRvbS5tb250aHMgPSBtb250aHM7XG4gICAgdGhpcy5kb20ubW9udGhzLmZvckVhY2goKG0pID0+IHtcbiAgICAgIHRoaXMuZG9tLm1vbnRoc1dyYXBwZXIuYXBwZW5kQ2hpbGQobSk7XG4gICAgICBpZiAodGhpcy5vcHRzLnNlbGVjdGFibGUpIHtcbiAgICAgICAgdGhpcy5hZGRNb250aEV2ZW50cyhtKTtcbiAgICAgICAgYWRkQ2xhc3ModGhpcy5lbCwgc3R5bGVzLmFjdGlvbnNFbmFibGVkKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICghdGhpcy5vcHRzLmVuYWJsZUFsbERheXMpIHtcbiAgICAgIHRoaXMuZGlzYWJsZUJhY2tCdG4oKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlY292ZXJTZWxlY3Rpb25zKCk7XG4gIH1cblxuICByZWNvdmVyU2VsZWN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25TdGFydCkge1xuICAgICAgdGhpcy5zZWxlY3RTdGFydCh0aGlzLnNlbGVjdGlvblN0YXJ0LCB0aGlzLmNUcmVlLnNlbGVjdERheSguLi50aGlzLnNlbGVjdGlvblN0YXJ0KSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uRW5kKSB7XG4gICAgICB0aGlzLnNlbGVjdEVuZCh0aGlzLnNlbGVjdGlvbkVuZCwgdGhpcy5jVHJlZS5zZWxlY3REYXkoLi4udGhpcy5zZWxlY3Rpb25FbmQpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25TdGFydCAmJiB0aGlzLnNlbGVjdGlvbkVuZCkge1xuICAgICAgaWYgKHRoaXMuaGlnaGxpZ2h0ZWRCb3VuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmhpZ2hMaWdodFJhbmdlKC4uLnRoaXMuaGlnaGxpZ2h0ZWRCb3VuZHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oaWdoTGlnaHRSYW5nZSh0aGlzLnNlbGVjdGlvblN0YXJ0LCB0aGlzLnNlbGVjdGlvbkVuZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZGlzYWJsZUJhY2tCdG4oKSB7XG4gICAgaWYgKHRoaXMub3B0cy5pc0JhY2tEaXNhYmxlZCkge1xuICAgICAgY29uc3Qgc3RhcnREYXRlICAgICAgICA9IGRhdGVUb0lzbyh0aGlzLnllYXJTdGFydCwgdGhpcy5tb250aFN0YXJ0LCAxKTtcbiAgICAgIGxldCB7IGN1cnJlbnREYXRlIH0gICAgPSB0aGlzLm9wdHM7XG4gICAgICBjdXJyZW50RGF0ZSAgICAgICAgICAgID0gZGF0ZVRvSXNvKGN1cnJlbnREYXRlWzBdLCBjdXJyZW50RGF0ZVsxXSwgMSk7XG4gICAgICB0aGlzLmRvbS5iYWNrLmRpc2FibGVkID0gc3RhcnREYXRlIDw9IGN1cnJlbnREYXRlO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUxvYWRpbmcoKSB7XG4gICAgaWYgKCFoYXNDbGFzcyh0aGlzLmVsLCBzdHlsZXMubG9hZGluZykpIHtcbiAgICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy5sb2FkaW5nKTtcbiAgICAgIHRoaXMuZW1pdCgnbG9hZGluZy1zaG93Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92ZUNsYXNzKHRoaXMuZWwsIHN0eWxlcy5sb2FkaW5nKTtcbiAgICAgIHRoaXMuZW1pdCgnbG9hZGluZy1oaWRlJyk7XG4gICAgfVxuICB9XG5cbiAgYWRkTWFwcyhtYXBzKSB7XG4gICAgdGhpcy5jVHJlZS5yZXBsYWNlTWFwcyhtYXBzLCBtYXBzLnN0YXJ0X2RhdGUpO1xuICAgIHRoaXMuZGVzdHJveU1vbnRocygpO1xuICAgIHRoaXMucmVuZGVyTW9udGhzKFxuICAgICAgdGhpcy5vcHRzLnllYXJTdGFydCB8fCB0aGlzLnllYXJTdGFydCxcbiAgICAgIHRoaXMub3B0cy5tb250aFN0YXJ0IHx8IHRoaXMubW9udGhTdGFydFxuICAgICk7XG4gIH1cblxuICBhZGRCdG5zRXZlbnRzKCkge1xuICAgIHRoaXMuZG9tLmZvcndhcmQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xuICAgICAgdGhpcy5kZXN0cm95TW9udGhzKCk7XG4gICAgICB0aGlzLnJlbmRlck1vbnRocyh0aGlzLnllYXJFbmQsIHRoaXMubW9udGhFbmQpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kb20uYmFjay5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICB0aGlzLmRlc3Ryb3lNb250aHMoKTtcbiAgICAgIGxldCBtb250aFRvUmVuZGVyID0gdGhpcy5tb250aFN0YXJ0IC0gdGhpcy5vcHRzLmRpc3BsYXlNb250aHM7XG4gICAgICBsZXQgeWVhclRvUmVuZGVyICA9IHRoaXMueWVhclN0YXJ0O1xuXG4gICAgICBpZiAobW9udGhUb1JlbmRlciA8IDApIHtcbiAgICAgICAgbW9udGhUb1JlbmRlciArPSAxMjtcbiAgICAgICAgeWVhclRvUmVuZGVyIC09IDE7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVuZGVyTW9udGhzKHllYXJUb1JlbmRlciwgbW9udGhUb1JlbmRlcik7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSk7XG4gIH1cblxuICBhZGRNb250aEV2ZW50cyhlbCkge1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcbiAgICAgIGNvbnN0IGlzRW5kRmlyc3QgPSB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBwYXJlbnQ6IGNlbGxcbiAgICAgIH0gPSB0cmF2ZXJzZVRvUGFyZW50V2l0aEF0dHIoZS50YXJnZXQsICdkYXRhLXZhbHVlJyk7XG5cbiAgICAgIGNvbnN0IHJlc2V0U2VsZWN0aW9uT25Fc2NhcGUgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5IHx8IGV2ZW50LmtleUNvZGU7XG5cbiAgICAgICAgaWYgKGtleSA9PT0gJ0VzY2FwZScgfHwga2V5ID09PSAnRXNjJyB8fCBrZXkgPT09IDI3KSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RpbmcpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgcmVzZXRTZWxlY3Rpb25PbkVzY2FwZSwgdHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHJlc2V0U2VsZWN0aW9uT25Fc2NhcGUsIHRydWUpO1xuXG4gICAgICBpZiAoaXModmFsdWUpICYmIGNlbGwpIHtcbiAgICAgICAgY29uc3QgZGF0ZVZhbHVlICAgICAgICAgID0gW2VsLnllYXIsIGVsLm1vbnRoLCBwYXJzZUludChjZWxsLmdldEF0dHJpYnV0ZSgnZGF0YS12YWx1ZScpLCAxMCldO1xuICAgICAgICBjb25zdCBkYXlBbHJlYWR5U2VsZWN0ZWQgPSB0aGlzLmlzU2VsZWN0aW5nICYmIGlzQ3VycmVudCgoaXNFbmRGaXJzdCkgPyB0aGlzLnNlbGVjdGlvbkVuZCA6IHRoaXMuc2VsZWN0aW9uU3RhcnQsIGRhdGVWYWx1ZSk7XG4gICAgICAgIGNvbnN0IHJhbmdlU2VsZWN0ZWQgICAgICA9ICF0aGlzLmlzU2VsZWN0aW5nICYmIHRoaXMuc2VsZWN0aW9uRW5kICYmIHRoaXMuc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgIGNvbnN0IGlzUGFzdFRvZGF5ICAgICAgICA9IGlzTGF0ZXIoZGF0ZVZhbHVlLCB0aGlzLm9wdHMuY3VycmVudERhdGUpO1xuXG4gICAgICAgIGlmIChkYXlBbHJlYWR5U2VsZWN0ZWQgfHwgcmFuZ2VTZWxlY3RlZCB8fCBpc1Bhc3RUb2RheSkge1xuICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgcmVzZXRTZWxlY3Rpb25PbkVzY2FwZSwgdHJ1ZSk7XG4gICAgICAgICAgdGhpcy5yZXNldFNlbGVjdGlvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFkYXlBbHJlYWR5U2VsZWN0ZWQgJiYgIWlzUGFzdFRvZGF5ICYmICF0aGlzLm9wdHMuZW5hYmxlQWxsRGF5cykge1xuICAgICAgICAgIGlmIChpc0VuZEZpcnN0KSB7XG4gICAgICAgICAgICB0aGlzLmVuZERhdGVGaXJzdEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZUZpcnN0QWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuZWwsIHN0eWxlcy5zZWxlY3RpbmdEaXJlY3QsIHN0eWxlcy5zZWxlY3RpbmdSZXZlcnNlZCk7XG4gICAgICAgICAgZGVsZXRlIGNlbGwuZGF0YXNldC5oaWdobGlnaHRlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkVuZCAmJiB0aGlzLnNlbGVjdGlvblN0YXJ0ICYmIHRoaXMuaGFzVmFsaWRSYW5nZSkge1xuICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgcmVzZXRTZWxlY3Rpb25PbkVzY2FwZSwgdHJ1ZSk7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZVNlbGVjdGlvbihpc0VuZEZpcnN0LCBkYXRlVmFsdWUsIGNlbGwpO1xuICAgICAgICAgIGlmICh0aGlzLm9wdHMuaXNEcm9wRG93biAmJiB0aGlzLmNhbERyb3ApIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wKG51bGwsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgKGUpID0+IHtcbiAgICAgIGNvbnN0IHsgdmFsdWUsIHBhcmVudDogY2VsbCB9ID0gdHJhdmVyc2VUb1BhcmVudFdpdGhBdHRyKGUudGFyZ2V0LCAnZGF0YS12YWx1ZScpO1xuXG4gICAgICBpZiAoaXModmFsdWUpICYmIGNlbGwpIHtcbiAgICAgICAgY29uc3QgY3VycmVudCAgICAgICAgICA9IFtlbC55ZWFyLCBlbC5tb250aCwgcGFyc2VJbnQoY2VsbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdmFsdWUnKSwgMTApXTtcbiAgICAgICAgY29uc3QgaXNQYXN0VG9kYXkgICAgICA9IGlzTGF0ZXIoY3VycmVudCwgdGhpcy5vcHRzLmN1cnJlbnREYXRlKTtcbiAgICAgICAgY29uc3QgaXNFbmRGaXJzdCAgICAgICA9IHRoaXMuaXNSZXZlcnNlU2VsZWN0YWJsZTtcblxuICAgICAgICBpZiAoaXNQYXN0VG9kYXkgJiYgIXRoaXMub3B0cy5lbmFibGVBbGxEYXlzKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RpbmcpIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZUhpZ2hsaWdodCgpO1xuXG4gICAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLmVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXZhbHVlXScpO1xuICAgICAgICAgIGNlbGxzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgICBkZWxldGUgZWwuZGF0YXNldC5ob3ZlcmVkO1xuICAgICAgICAgICAgZGVsZXRlIGVsLmRhdGFzZXQuaG92ZXJlZE9mZnNldDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIC8vIHJldmVyc2Ugc2VsZWN0aW9uIGRpcmVjdGlvblxuICAgICAgICAgIGlmIChpc0VuZEZpcnN0ICYmIHRoaXMuc2VsZWN0aW9uRW5kICYmICFpc0N1cnJlbnQoY3VycmVudCwgdGhpcy5zZWxlY3Rpb25FbmQpKSB7XG4gICAgICAgICAgICBpZiAoaXNMYXRlcih0aGlzLnNlbGVjdGlvbkVuZCwgY3VycmVudCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgY2VsbEEgPSB0aGlzLmNlbGxCO1xuICAgICAgICAgICAgICBjb25zdCB7IHNlbGVjdGlvbkVuZCB9ID0gdGhpcztcblxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZUhpZ2hsaWdodERpcmVjdGlvbihmYWxzZSwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgICAgdGhpcy5zdGFydERhdGVGaXJzdEFjdGlvbih0aGlzLnNlbGVjdGlvbkVuZCwgY2VsbEEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoIWlzRW5kRmlyc3QgJiYgdGhpcy5zZWxlY3Rpb25TdGFydCAmJiAhaXNDdXJyZW50KGN1cnJlbnQsIHRoaXMuc2VsZWN0aW9uU3RhcnQpKSB7XG4gICAgICAgICAgICBpZiAoaXNMYXRlcihjdXJyZW50LCB0aGlzLnNlbGVjdGlvblN0YXJ0KSkge1xuICAgICAgICAgICAgICBjb25zdCBjZWxsQiA9IHRoaXMuY2VsbEE7XG4gICAgICAgICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uU3RhcnQgfSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VIaWdobGlnaHREaXJlY3Rpb24odHJ1ZSwgc2VsZWN0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICB0aGlzLmVuZERhdGVGaXJzdEFjdGlvbih0aGlzLnNlbGVjdGlvblN0YXJ0LCBjZWxsQik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuaXNSZXZlcnNlU2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5oaWdoTGlnaHRSYW5nZShjdXJyZW50LCB0aGlzLnNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGlnaExpZ2h0UmFuZ2UodGhpcy5zZWxlY3Rpb25TdGFydCwgY3VycmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY2hhbmdlSGlnaGxpZ2h0RGlyZWN0aW9uKHRoaXMub3B0cy5pc1JldmVyc2VTZWxlY3RhYmxlKTtcblxuICAgICAgICAgIGNvbnN0IGlzRGlzYWJsZWRMZWZ0ICAgPSBjZWxsLmRhdGFzZXQuZGlzYWJsZWQgPT09ICdsZWZ0JztcbiAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkQ2VudGVyID0gY2VsbC5kYXRhc2V0LmRpc2FibGVkID09PSAnY2VudGVyJztcbiAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkUmlnaHQgID0gY2VsbC5kYXRhc2V0LmRpc2FibGVkID09PSAncmlnaHQnO1xuXG4gICAgICAgICAgbGV0IGlzSW52YWxpZCA9ICcnO1xuXG4gICAgICAgICAgaWYgKGlzRW5kRmlyc3QgJiYgaXNEaXNhYmxlZFJpZ2h0IHx8IGlzRGlzYWJsZWRDZW50ZXIgfHwgIWlzRW5kRmlyc3QgJiYgaXNEaXNhYmxlZExlZnQpIHtcbiAgICAgICAgICAgIGlzSW52YWxpZCA9ICdpbnZhbGlkJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBjZWxscyA9IHRoaXMuZWwucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdmFsdWVdJyk7XG4gICAgICAgICAgbGV0IG9mZnNldENlbGw7XG5cbiAgICAgICAgICBjZWxscy5mb3JFYWNoKChlbCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGRlbGV0ZSBlbC5kYXRhc2V0LmhvdmVyZWQ7XG4gICAgICAgICAgICBkZWxldGUgZWwuZGF0YXNldC5ob3ZlcmVkT2Zmc2V0O1xuXG4gICAgICAgICAgICBpZiAoZWwgPT09IGNlbGwpIHtcbiAgICAgICAgICAgICAgb2Zmc2V0Q2VsbCA9ICh0aGlzLm9wdHMuaXNSZXZlcnNlU2VsZWN0YWJsZSkgPyBjZWxsc1tpbmRleCAtIDFdIDogY2VsbHNbaW5kZXggKyAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChpcyhvZmZzZXRDZWxsKSkge1xuICAgICAgICAgICAgb2Zmc2V0Q2VsbC5kYXRhc2V0LmhvdmVyZWRPZmZzZXQgPSAnJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjZWxsLmRhdGFzZXQuaG92ZXJlZCA9IGlzSW52YWxpZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZWwuYm9keS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIChlKSA9PiB7XG4gICAgICBjb25zdCBjZWxscyA9IHRoaXMuZWwucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdmFsdWVdJyk7XG4gICAgICBjZWxscy5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICBkZWxldGUgZWwuZGF0YXNldC5ob3ZlcmVkO1xuICAgICAgICBkZWxldGUgZWwuZGF0YXNldC5ob3ZlcmVkT2Zmc2V0O1xuICAgICAgfSk7XG5cbiAgICAgIC8qIGVzbGludCBuby1iaXR3aXNlOiBbXCJlcnJvclwiLCB7IFwiYWxsb3dcIjogW1wiJlwiXSB9XSAqL1xuICAgICAgLy8gc2ltdWxhdGUgJ21vdXNlbGVhdmUnXG4gICAgICBpZiAoIWUucmVsYXRlZFRhcmdldFxuICAgICAgICB8fCAoZS5yZWxhdGVkVGFyZ2V0ICE9PSBlbC5ib2R5ICYmICEoZWwuYm9keS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlLnJlbGF0ZWRUYXJnZXQpXG4gICAgICAgICYgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpKSkge1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGluZykge1xuICAgICAgICAgIHRoaXMucmVtb3ZlSGlnaGxpZ2h0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNoYW5nZUhpZ2hsaWdodERpcmVjdGlvbihpc1JldmVyc2UsIGRhdGVBcnJheSA9IG51bGwpIHtcbiAgICB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUgPSBpc1JldmVyc2U7XG5cbiAgICBpZiAoZGF0ZUFycmF5KSB7XG4gICAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG4gICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ID0gKGlzUmV2ZXJzZSkgPyBkYXRlQXJyYXkgOiBudWxsO1xuICAgICAgdGhpcy5zZWxlY3Rpb25FbmQgICA9IChpc1JldmVyc2UpID8gbnVsbCA6IGRhdGVBcnJheTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IHRoaXMuc2VsZWN0aW9uRW5kO1xuICAgICAgdGhpcy5zZWxlY3Rpb25FbmQgPSB0aGlzLnNlbGVjdGlvblN0YXJ0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdHMuc2VsZWN0YWJsZSkge1xuICAgICAgYWRkQ2xhc3ModGhpcy5lbCwgaXNSZXZlcnNlID8gc3R5bGVzLnJldmVyc2VkIDogc3R5bGVzLmRpcmVjdCk7XG4gICAgICByZW1vdmVDbGFzcyh0aGlzLmVsLCBpc1JldmVyc2UgPyBzdHlsZXMuZGlyZWN0IDogc3R5bGVzLnJldmVyc2VkKTtcbiAgICB9XG4gIH1cblxuICBzdGFydERhdGVGaXJzdEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpIHtcbiAgICBpZiAodGhpcy5pc1NlbGVjdGluZyAmJiBpc0xhdGVyKHRoaXMuc2VsZWN0aW9uU3RhcnQsIGRhdGVWYWx1ZSkpIHtcbiAgICAgIHRoaXMuc2VsZWN0RW5kQWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG5cbiAgICAgIGNvbnN0IGZuID0gKCkgPT4ge1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLmVsLCBzdHlsZXMuc2VsZWN0aW5nRGlyZWN0KTtcbiAgICAgICAgY2VsbC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIGZuKTtcbiAgICAgIH07XG5cbiAgICAgIGNlbGwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdXQnLCBmbik7XG4gICAgICB0aGlzLmlzU2VsZWN0aW5nID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVtb3ZlSGlnaGxpZ2h0KCk7XG4gICAgICBhZGRDbGFzcyh0aGlzLmVsLCBzdHlsZXMuc2VsZWN0aW5nRGlyZWN0KTtcbiAgICAgIHRoaXMuaXNTZWxlY3RpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5zZWxlY3RTdGFydEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpO1xuICAgICAgY2VsbC5kYXRhc2V0LmhpZ2hsaWdodGVkID0gJ2xlZnQnO1xuICAgIH1cbiAgfVxuXG4gIGVuZERhdGVGaXJzdEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpIHtcbiAgICBpZiAodGhpcy5pc1NlbGVjdGluZyAmJiBpc0xhdGVyKGRhdGVWYWx1ZSwgdGhpcy5zZWxlY3Rpb25FbmQpKSB7XG4gICAgICB0aGlzLnNlbGVjdFN0YXJ0QWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG5cbiAgICAgIGNvbnN0IGZuID0gKCkgPT4ge1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLmVsLCBzdHlsZXMuc2VsZWN0aW5nUmV2ZXJzZWQpO1xuICAgICAgICBjZWxsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlb3V0JywgZm4pO1xuICAgICAgfTtcblxuICAgICAgY2VsbC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIGZuKTtcbiAgICAgIHRoaXMuaXNTZWxlY3RpbmcgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW1vdmVIaWdobGlnaHQoKTtcbiAgICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy5zZWxlY3RpbmdSZXZlcnNlZCk7XG4gICAgICB0aGlzLmlzU2VsZWN0aW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0RW5kQWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG4gICAgICBjZWxsLmRhdGFzZXQuaGlnaGxpZ2h0ZWQgPSAncmlnaHQnO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFN0YXJ0QWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCkge1xuICAgIHRoaXMuc2VsZWN0U3RhcnQoZGF0ZVZhbHVlLCBjZWxsKTtcbiAgICB0aGlzLnN3aXRjaElucHV0Rm9jdXMoJ2VuZCcpO1xuICAgIGlmICh0aGlzLmhhc1ZhbGlkUmFuZ2UpIHtcbiAgICAgIHRoaXMuZW1pdCgnc2VsZWN0aW9uLXN0YXJ0JywgZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSwgdHJ1ZSksIGRhdGVUb0lzbyguLi5kYXRlVmFsdWUpKTtcbiAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXMub3B0cy5vblNlbGVjdFN0YXJ0KSkge1xuICAgICAgICB0aGlzLm9wdHMub25TZWxlY3RTdGFydChkYXRlVG9Jc28oLi4uZGF0ZVZhbHVlLCB0cnVlKSwgZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEVuZEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpIHtcbiAgICB0aGlzLnNlbGVjdEVuZChkYXRlVmFsdWUsIGNlbGwpO1xuICAgIHRoaXMuc3dpdGNoSW5wdXRGb2N1cygnc3RhcnQnKTtcbiAgICBpZiAodGhpcy5oYXNWYWxpZFJhbmdlKSB7XG4gICAgICB0aGlzLmVtaXQoJ3NlbGVjdGlvbi1lbmQnLCBkYXRlVG9Jc28oLi4uZGF0ZVZhbHVlLCB0cnVlKSwgZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSkpO1xuICAgICAgaWYgKGlzRnVuY3Rpb24odGhpcy5vcHRzLm9uU2VsZWN0RW5kKSkge1xuICAgICAgICB0aGlzLm9wdHMub25TZWxlY3RFbmQoZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSwgdHJ1ZSksIGRhdGVUb0lzbyguLi5kYXRlVmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZW1vdmVIaWdobGlnaHQoKSB7XG4gICAgaWYgKHRoaXMuaGlnaGxpZ2h0ZWRCb3VuZHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgeyByYW5nZSB9ID0gdGhpcy5zZWxlY3RSYW5nZSguLi50aGlzLmhpZ2hsaWdodGVkQm91bmRzKTtcbiAgICAgIHJhbmdlLm1hcCgoY2VsbCkgPT4ge1xuICAgICAgICBkZWxldGUgY2VsbC5kYXRhc2V0LmhpZ2hsaWdodGVkO1xuICAgICAgICBkZWxldGUgY2VsbC5kYXRhc2V0LmludmFsaWQ7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5kZXN0cm95VG9vbHRpcCgpO1xuXG4gICAgICB0aGlzLmhhc1ZhbGlkUmFuZ2UgICAgID0gdHJ1ZTtcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRCb3VuZHMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95VG9vbHRpcCgpIHtcbiAgICBpZiAoaXModGhpcy50b29sdGlwUG9wcGVyKSkge1xuICAgICAgdGhpcy50b29sdGlwUG9wcGVyLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBpZiAoaXModGhpcy5kb20udG9vbHRpcCkpIHtcbiAgICAgIGRlc3Ryb3lFbGVtZW50KHRoaXMuZG9tLnRvb2x0aXApO1xuICAgIH1cbiAgfVxuXG4gIGhpZ2hMaWdodFJhbmdlKHN0YXJ0LCBlbmQpIHtcbiAgICBjb25zdCB7IHJhbmdlLCBpc1ZhbGlkIH0gPSB0aGlzLnNlbGVjdFJhbmdlKHN0YXJ0LCBlbmQpO1xuICAgIGNvbnN0IHsgb3B0cyB9ICAgICAgICAgICA9IHRoaXM7XG4gICAgbGV0IHsgbWluU3RheSwgbWF4U3RheSB9ID0gb3B0cztcbiAgICBsZXQgaW52YWxpZFJhbmdlTWVzc2FnZTtcblxuICAgIGlmIChpc0FycmF5KHJhbmdlKSkge1xuICAgICAgaWYgKG9wdHMucmVudGFsSWQpIHtcbiAgICAgICAgaWYgKCFvcHRzLmFsbG93U2hvcnRlck1pblN0YXlTZWxlY3Rpb24pIHtcbiAgICAgICAgICAvLyBnZXQgdGhlIGJpZ2dlc3QgbWluU3RheSB2YWx1ZSBpbiB0aGUgcmFuZ2VcbiAgICAgICAgICBtaW5TdGF5ID0gTWF0aC5tYXgoLi4ucmFuZ2UubWFwKGZ1bmN0aW9uKGNlbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBjZWxsLmRhdGFzZXQubWluU3RheSB8fCBtaW5TdGF5O1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghb3B0cy5hbGxvd0xvbmdlck1heFN0YXlTZWxlY3Rpb24pIHtcbiAgICAgICAgICAvLyBnZXQgdGhlIGJpZ2dlc3QgbWF4U3RheSB2YWx1ZSBpbiB0aGUgcmFuZ2VcbiAgICAgICAgICBtYXhTdGF5ID0gTWF0aC5tYXgoLi4ucmFuZ2UubWFwKGZ1bmN0aW9uKGNlbGwpIHtcbiAgICAgICAgICAgIHJldHVybiBjZWxsLmRhdGFzZXQubWF4U3RheSB8fCBtYXhTdGF5O1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBjaGVjayB0aGF0IHJhbmdlIGlzIHZhbGlkIGFuZCBsb25nZXIgdGhhbiBtaW5TdGF5IGFuZCBzaG9ydGVyIHRoYW4gbWF4U3RheVxuICAgICAgY29uc3QgaGFzVmFsaWREYXlzICAgID0gb3B0cy5yZW50YWxJZCA/IGlzVmFsaWQgOiB0cnVlO1xuICAgICAgY29uc3QgaGFzVmFsaWRNaW5TdGF5ID0gcmFuZ2UubGVuZ3RoID4gbWluU3RheTtcbiAgICAgIGNvbnN0IGhhc1ZhbGlkTWF4U3RheSA9IHJhbmdlLmxlbmd0aCA8IG1heFN0YXk7XG5cbiAgICAgIHRoaXMuaGFzVmFsaWRSYW5nZSA9IGhhc1ZhbGlkRGF5cyAmJiBoYXNWYWxpZE1pblN0YXkgJiYgaGFzVmFsaWRNYXhTdGF5O1xuXG4gICAgICBpZiAoIWhhc1ZhbGlkTWluU3RheSkge1xuICAgICAgICBpbnZhbGlkUmFuZ2VNZXNzYWdlID0gdEZvcm1hdHRlcihtaW5TdGF5LCB0aGlzLmxvY2FsZS5oYXNJbnZhbGlkTWluU3RheSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghaGFzVmFsaWRNYXhTdGF5KSB7XG4gICAgICAgIGludmFsaWRSYW5nZU1lc3NhZ2UgPSB0Rm9ybWF0dGVyKG1heFN0YXksIHRoaXMubG9jYWxlLmhhc0ludmFsaWRNYXhTdGF5KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNWYWxpZERheXMpIHtcbiAgICAgICAgaW52YWxpZFJhbmdlTWVzc2FnZSA9IHRoaXMubG9jYWxlLmhhc0ludmFsaWREYXlzO1xuICAgICAgfVxuXG4gICAgICByYW5nZS5tYXAoKGNlbGwsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGxlZnQgPSBpbmRleCA9PT0gMDtcbiAgICAgICAgY29uc3QgcmlnaHQgPSBpbmRleCArIDEgPT09IHJhbmdlLmxlbmd0aDtcblxuICAgICAgICBpZiAodGhpcy5oYXNWYWxpZFJhbmdlKSB7XG4gICAgICAgICAgaWYgKGxlZnQpIHtcbiAgICAgICAgICAgIGNlbGwuZGF0YXNldC5oaWdobGlnaHRlZCA9ICdsZWZ0JztcbiAgICAgICAgICB9IGVsc2UgaWYgKHJpZ2h0KSB7XG4gICAgICAgICAgICBjZWxsLmRhdGFzZXQuaGlnaGxpZ2h0ZWQgPSAncmlnaHQnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjZWxsLmRhdGFzZXQuaGlnaGxpZ2h0ZWQgPSAnY2VudGVyJztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGxlZnQpIHtcbiAgICAgICAgICAgIGNlbGwuZGF0YXNldC5pbnZhbGlkID0gJ2xlZnQnO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmlnaHQpIHtcbiAgICAgICAgICAgIGNlbGwuZGF0YXNldC5pbnZhbGlkID0gJ3JpZ2h0JztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2VsbC5kYXRhc2V0LmludmFsaWQgPSAnY2VudGVyJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0b29sdGlwUG9zaXRpb24gPSAodGhpcy5pc1JldmVyc2VTZWxlY3RhYmxlKSA/IGxlZnQgOiByaWdodDtcblxuICAgICAgICBpZiAodG9vbHRpcFBvc2l0aW9uICYmIHRoaXMuZWwuY29udGFpbnMoY2VsbCkgJiYgIXRoaXMuaGFzVmFsaWRSYW5nZSkge1xuICAgICAgICAgIHRoaXMuZG9tLnRvb2x0aXAgPSB0aGlzLmVsLmFwcGVuZENoaWxkKGVsZW1lbnRGcm9tU3RyaW5nKHRlbXBsYXRlcy50b29sdGlwKSk7XG4gICAgICAgICAgdGhpcy5kb20udG9vbHRpcC5xdWVyeVNlbGVjdG9yKCdzcGFuJykuaW5uZXJIVE1MID0gaW52YWxpZFJhbmdlTWVzc2FnZTtcblxuICAgICAgICAgIHRoaXMudG9vbHRpcFBvcHBlciA9IHdpbmRvdy5Qb3BwZXIuY3JlYXRlUG9wcGVyKGNlbGwsIHRoaXMuZG9tLnRvb2x0aXAsIHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgICAgICAgICBtb2RpZmllcnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdmbGlwJyxcbiAgICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ29mZnNldCcsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgb2Zmc2V0OiBbMCwgMF1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjZWxsO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRCb3VuZHMgPSBbc3RhcnQsIGVuZF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaGFzVmFsaWRSYW5nZTtcbiAgfVxuXG4gIC8qKiBSZXNldHMgc2VsZWN0aW9uLCByZW1vdmVzIGhpZ2hsaWdodHNcbiAgICogQHB1YmxpY1xuICAgKiBAcmV0dXJucyB7Q2FsZW5kYXJ9XG4gICAqL1xuICByZXNldFNlbGVjdGlvbigpIHtcbiAgICB0aGlzLnJlbW92ZUhpZ2hsaWdodCgpO1xuICAgIHRoaXMuaXNTZWxlY3RpbmcgPSBmYWxzZTtcblxuICAgIHRoaXMuZW1pdCgnc2VsZWN0aW9uLXJlc2V0JywgdGhpcy5zZWxlY3Rpb25TdGFydCwgdGhpcy5zZWxlY3Rpb25FbmQpO1xuICAgIGlmIChpc0Z1bmN0aW9uKHRoaXMub3B0cy5vbkNsZWFyU2VsZWN0aW9uKSkge1xuICAgICAgdGhpcy5vcHRzLm9uQ2xlYXJTZWxlY3Rpb24odGhpcy5zZWxlY3Rpb25TdGFydCwgdGhpcy5zZWxlY3Rpb25FbmQpO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0aW9uU3RhcnQgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0aW9uRW5kICAgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuY2VsbEEpIHtcbiAgICAgIHRoaXMuY2VsbEEgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNlbGxCKSB7XG4gICAgICB0aGlzLmNlbGxCID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRzLmlzRHJvcERvd24gJiYgdGhpcy5vcHRzLmVsU3RhcnRBdCAmJiB0aGlzLm9wdHMuZWxFbmRBdCkge1xuICAgICAgdGhpcy5vcHRzLmVsU3RhcnRBdC52YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLm9wdHMuZWxFbmRBdC52YWx1ZSAgID0gbnVsbDtcblxuICAgICAgaWYgKHRoaXMub3B0cy5pc1NpbmdsZUlucHV0KSB7XG4gICAgICAgIHRoaXMub3B0cy5lbFNpbmdsZUlucHV0LnZhbHVlID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNlbGVjdFJhbmdlKHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAoaXNMYXRlcihzdGFydCwgZW5kKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY1RyZWUuc2VsZWN0UmFuZ2Uoc3RhcnQsIGVuZCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICByYW5nZTogbnVsbCxcbiAgICAgIGlzVmFsaWQ6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIHNlbGVjdFN0YXJ0KGRhdGVWYWx1ZSwgY2VsbCkge1xuICAgIHRoaXMuc2VsZWN0aW9uU3RhcnQgPSBkYXRlVmFsdWU7XG5cbiAgICBpZiAoY2VsbCkge1xuICAgICAgdGhpcy5jZWxsQSA9IGNlbGw7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZVRvSW5wdXQoJ3N0YXJ0JywgZGF0ZVZhbHVlKTtcbiAgfVxuXG4gIHNlbGVjdEVuZChkYXRlVmFsdWUsIGNlbGwpIHtcbiAgICB0aGlzLnNlbGVjdGlvbkVuZCA9IGRhdGVWYWx1ZTtcblxuICAgIGlmIChjZWxsKSB7XG4gICAgICB0aGlzLmNlbGxCID0gY2VsbDtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlVG9JbnB1dCgnZW5kJywgZGF0ZVZhbHVlKTtcbiAgfVxuXG4gIGNyZWF0ZVRyZWUoeWVhclN0YXJ0LCBtb250aFN0YXJ0LCB0aW1lcykge1xuICAgIGNvbnN0IG1vbnRocyA9IFtdO1xuICAgIGNvbnN0IHRyZWUgICA9IHt9O1xuICAgIGxldCBtb250aEVuZCA9IG1vbnRoU3RhcnQ7XG4gICAgbGV0IHllYXJFbmQgID0geWVhclN0YXJ0O1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aW1lczsgaSArPSAxKSB7XG4gICAgICBjb25zdCBtRG9tID0gdGhpcy5kb21Nb250aCh5ZWFyRW5kLCBtb250aEVuZCk7XG5cbiAgICAgIG1vbnRocy5wdXNoKG1Eb20pO1xuXG4gICAgICBpZiAoIXRyZWVbeWVhckVuZF0pIHtcbiAgICAgICAgdHJlZVt5ZWFyRW5kXSA9IHt9O1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRyZWVbeWVhckVuZF1bbW9udGhFbmRdKSB7XG4gICAgICAgIHRyZWVbeWVhckVuZF1bbW9udGhFbmRdID0gbURvbS5kYXlFbGVtZW50cyB8fCBbXTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vbnRoRW5kID4gMTApIHtcbiAgICAgICAgbW9udGhFbmQgPSAwO1xuICAgICAgICB5ZWFyRW5kICs9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb250aEVuZCArPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0cmVlLFxuICAgICAgeWVhckVuZCxcbiAgICAgIG1vbnRoRW5kLFxuICAgICAgbW9udGhzXG4gICAgfTtcbiAgfVxuXG4gIGRvbU1vbnRoKHllYXIsIG1vbnRoKSB7XG4gICAgY29uc3QgbW9udGhEb20gPSBlbGVtZW50RnJvbVN0cmluZyh0ZW1wbGF0ZXMubW9udGgpO1xuXG4gICAgbW9udGhEb20ucXVlcnlTZWxlY3RvcihgLiR7c3R5bGVzLnRhYmxlSGVhZGVyfSB0cmApLmlubmVySFRNTCA9IHRoaXMuaGVhZGVyVGVtcGxhdGVTdHJpbmcoKTtcbiAgICBtb250aERvbS5xdWVyeVNlbGVjdG9yKGAuJHtzdHlsZXMuY2FwdGlvbn1gKS5pbm5lckhUTUwgICAgICAgID0gYCR7dGhpcy5sb2NhbGUubG9uZ01vbnRoTmFtZXNbbW9udGhdfSAke3llYXJ9YDtcblxuICAgIG1vbnRoRG9tLmJvZHkgICAgICAgICAgID0gbW9udGhEb20ucXVlcnlTZWxlY3RvcihgLiR7c3R5bGVzLmJvZHl9YCk7XG4gICAgbW9udGhEb20uYm9keS5pbm5lckhUTUwgPSB0aGlzLmRheXNUZW1wbGF0ZVN0cmluZyh5ZWFyLCBtb250aCk7XG5cbiAgICBtb250aERvbS5tb250aCAgICAgICA9IG1vbnRoO1xuICAgIG1vbnRoRG9tLnllYXIgICAgICAgID0geWVhcjtcbiAgICBtb250aERvbS5kYXlFbGVtZW50cyA9IFtdLnNsaWNlLmNhbGwobW9udGhEb20ucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdmFsdWVdJykpO1xuXG4gICAgcmV0dXJuIG1vbnRoRG9tO1xuICB9XG5cbiAgaGVhZGVyVGVtcGxhdGVTdHJpbmcoKSB7XG4gICAgLy8ganVzdCB0byBtYWtlIGxpZmUgZWFzaWVyIHdpdGggc3RhcnQgb2YgdGhlIHdlZWsgY2FsY3VsYXRpb25cbiAgICBjb25zdCBoZWFkZXIgICAgICAgICAgICAgICAgID0gW107XG4gICAgY29uc3Qgd2Vla2RheXNMYWJlbHNFeHRlbmRlZCA9IHRoaXMubG9jYWxlLnNob3J0V2Vla2RheU5hbWVzLmNvbmNhdCh0aGlzLmxvY2FsZS5zaG9ydFdlZWtkYXlOYW1lcyk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0cy5kYXlzUGVyV2VlazsgaSArPSAxKSB7XG4gICAgICBoZWFkZXIucHVzaCh0ZW1wbGF0ZXMud2Vla0RheUxhYmVsKHdlZWtkYXlzTGFiZWxzRXh0ZW5kZWRbaSArIHRoaXMub3B0cy5zdGFydE9mV2Vla10pKTtcbiAgICB9XG4gICAgcmV0dXJuIGhlYWRlci5qb2luKCcnKTtcbiAgfVxuXG4gIGRheXNUZW1wbGF0ZVN0cmluZyh5ZWFyLCBtb250aCkge1xuICAgIGNvbnN0IHN0YXJ0T2ZNb250aCAgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSkuZ2V0RGF5KCk7XG4gICAgY29uc3QgZGF5c0luTW9udGggICA9IG1vbnRoTGVuZ3RoKHllYXIsIG1vbnRoKTtcbiAgICBjb25zdCByb3dUZW1wbGF0ZSAgID0gdGVtcGxhdGVzLndlZWtSb3c7XG4gICAgY29uc3QgbW9udGhUZW1wbGF0ZSA9IFtdO1xuICAgIGNvbnN0IHdlZWtTaGlmdCAgICAgPSAodGhpcy5vcHRzLmRheXNQZXJXZWVrIC0gdGhpcy5vcHRzLnN0YXJ0T2ZXZWVrKTtcblxuICAgIGxldCByb3dzICAgICAgICAgICAgICAgPSA1O1xuICAgIGxldCB3ZWVrU2hpZnRDb3JyZWN0ZWQgPSBzdGFydE9mTW9udGggKyB3ZWVrU2hpZnQ7XG4gICAgbGV0IGRheUNvdW50ZXIgICAgICAgICA9IDA7XG4gICAgbGV0IGRheU9mTW9udGggICAgICAgICA9IDE7XG5cbiAgICAvLyBkb24ndCByZW5kZXIgZnVsbCBlbXB0eSB3ZWVrXG4gICAgaWYgKHdlZWtTaGlmdENvcnJlY3RlZCA+PSB0aGlzLm9wdHMuZGF5c1BlcldlZWspIHtcbiAgICAgIHdlZWtTaGlmdENvcnJlY3RlZCAtPSB0aGlzLm9wdHMuZGF5c1BlcldlZWs7XG4gICAgfVxuXG4gICAgLy8gdHJ5IHRvIGZpZ3VyZSBvdXQgaWYgNSByb3dzIGlzIGVub3VnaCBmb3IgdGhlIG1vbnRoXG4gICAgaWYgKHJvd3MgKiB0aGlzLm9wdHMuZGF5c1BlcldlZWsgPCB3ZWVrU2hpZnRDb3JyZWN0ZWQgKyBkYXlzSW5Nb250aCkge1xuICAgICAgcm93cyA9IDY7XG4gICAgfVxuXG4gICAgLy8gZm9yIGVhY2ggd2VlayAoNSBvciA2KVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSArPSAxKSB7XG4gICAgICBjb25zdCB3ZWVrID0gW107XG4gICAgICAvLyBvcGVuIHRhZyA8dHI+XG4gICAgICB3ZWVrLnB1c2gocm93VGVtcGxhdGUoaSkub3Blbik7XG5cbiAgICAgIC8vIHB1c2ggZGF5cyBpbiB3ZWVrXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMub3B0cy5kYXlzUGVyV2VlazsgaiArPSAxKSB7XG4gICAgICAgIC8vIHB1c2hpbmcgYWN0dWFsIGRheXMgMS4uLmRheXNJbk1vbnRoXG4gICAgICAgIGlmICgoZGF5Q291bnRlciA+PSB3ZWVrU2hpZnRDb3JyZWN0ZWQpICYmIGRheU9mTW9udGggPD0gZGF5c0luTW9udGgpIHtcbiAgICAgICAgICB3ZWVrLnB1c2godGhpcy5kYXlUZW1wbGF0ZVN0cmluZyh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCkpO1xuICAgICAgICAgIGRheU9mTW9udGggKz0gMTtcbiAgICAgICAgICAvLyBwdXNoaW5nIHBsYWNlaG9sZGVycyBpbnN0ZWFkIG9mIGRheXNcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3ZWVrLnB1c2godGVtcGxhdGVzLndlZWtEYXlQbGFjZWhvbGRlcik7XG4gICAgICAgIH1cblxuICAgICAgICBkYXlDb3VudGVyICs9IDE7XG4gICAgICB9XG4gICAgICAvLyBjbG9zZSB0YWcgPC90cj4gb2Ygd2Vla1xuICAgICAgd2Vlay5wdXNoKHJvd1RlbXBsYXRlKCkuY2xvc2UpO1xuICAgICAgLy8gcHVzaCBjb21wbGV0ZWQgd2VlayB0byBtb250aCB0ZW1wbGF0ZVxuICAgICAgbW9udGhUZW1wbGF0ZS5wdXNoKHdlZWsuam9pbignJykpO1xuICAgIH1cblxuICAgIHJldHVybiBtb250aFRlbXBsYXRlLmpvaW4oJycpO1xuICB9XG5cbiAgZGF5VGVtcGxhdGVTdHJpbmcoeWVhciwgbW9udGgsIGRheU9mTW9udGgpIHtcbiAgICBjb25zdCB7IGNUcmVlIH0gICAgICA9IHRoaXM7XG4gICAgY29uc3QgcmF0ZSAgICAgICAgICAgPSB0aGlzLm9wdHMuc2hvd1JhdGVzID8gY1RyZWUuZ2V0RGF5UHJvcGVydHkoeWVhciwgbW9udGgsIGRheU9mTW9udGgsICdyYXRlJykgOiAwO1xuICAgIGNvbnN0IG1pblN0YXkgICAgICAgID0gY1RyZWUuZ2V0RGF5UHJvcGVydHkoeWVhciwgbW9udGgsIGRheU9mTW9udGgsICdtaW5TdGF5Jyk7XG4gICAgY29uc3QgbWF4U3RheSAgICAgICAgPSBjVHJlZS5nZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCwgJ21heFN0YXknKTtcblxuICAgIGxldCBpc0Rpc2FibGVkICAgICAgID0gY1RyZWUuaXNEYXlEaXNhYmxlZCh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCk7XG4gICAgbGV0IGlzQXZhaWxhYmxlT3V0ICAgPSBjVHJlZS5nZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCwgJ2lzQXZhaWxhYmxlT3V0Jyk7XG4gICAgbGV0IGlzTW9ybmluZ0Jsb2NrZWQgPSBjVHJlZS5nZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCwgJ2lzTW9ybmluZ0Jsb2NrZWQnKTtcblxuICAgIGNvbnN0IHsgY3VycmVudERhdGUgfSA9IHRoaXMub3B0cztcbiAgICBjb25zdCBkYXRlQXJyYXkgICAgICAgPSBbeWVhciwgbW9udGgsIGRheU9mTW9udGhdO1xuICAgIGNvbnN0IGlzQ3VycmVudERheSAgICA9IGlzQ3VycmVudChkYXRlQXJyYXksIGN1cnJlbnREYXRlKTtcblxuICAgIC8vIGRpc2FibGUgcGFzdCBkYXRlc1xuICAgIGlmIChpc0xhdGVyKGRhdGVBcnJheSwgY3VycmVudERhdGUpKSB7XG4gICAgICBpc0Rpc2FibGVkICAgICAgICA9IHRydWU7XG4gICAgICBpc01vcm5pbmdCbG9ja2VkICA9IG51bGw7XG4gICAgICBpc0F2YWlsYWJsZU91dCAgICA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gZGlzYWJsZSBjdXJyZW50IGRheSBtb3JuaW5nXG4gICAgaWYgKGlzQ3VycmVudERheSkge1xuICAgICAgaWYgKCEoaXNEaXNhYmxlZCAmJiBpc0F2YWlsYWJsZU91dCA9PT0gbnVsbCAmJiBpc01vcm5pbmdCbG9ja2VkID09PSBudWxsKSkge1xuICAgICAgICBpc01vcm5pbmdCbG9ja2VkICA9IHRydWU7XG5cbiAgICAgICAgaWYgKGlzQXZhaWxhYmxlT3V0ID09PSBudWxsKSB7XG4gICAgICAgICAgaXNBdmFpbGFibGVPdXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlcmUgaXMgbm90IHJlbnRhbElkIGFuZCBubyBtYXBzLCBqdXN0IHJlbmRlciBwbGFpbiBjYWxlbmRhclxuICAgIGlmICghdGhpcy5vcHRzLnJlbnRhbElkIHx8IHRoaXMub3B0cy5lbmFibGVBbGxEYXlzKSB7XG4gICAgICBpZiAoaXNMYXRlcihjdXJyZW50RGF0ZSwgZGF0ZUFycmF5KSkge1xuICAgICAgICBpc0Rpc2FibGVkICAgICAgICA9IGZhbHNlO1xuICAgICAgICBpc0F2YWlsYWJsZU91dCAgICA9IHRydWU7XG4gICAgICAgIGlzTW9ybmluZ0Jsb2NrZWQgID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0N1cnJlbnREYXkpIHtcbiAgICAgICAgaXNEaXNhYmxlZCAgICAgICAgPSB0cnVlO1xuICAgICAgICBpc01vcm5pbmdCbG9ja2VkICA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaXNBdmFpbGFibGVJbiA9IGlzTW9ybmluZ0Jsb2NrZWQgPT0gZmFsc2U7XG5cbiAgICBpZiAoaXNEaXNhYmxlZCAmJiBpc0F2YWlsYWJsZUluKSB7XG4gICAgICBpc0Rpc2FibGVkID0gJ2xlZnQnO1xuICAgIH0gZWxzZSBpZiAoaXNNb3JuaW5nQmxvY2tlZCkge1xuICAgICAgaXNEaXNhYmxlZCA9ICdyaWdodCc7XG4gICAgfSBlbHNlIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICBpc0Rpc2FibGVkID0gJ2NlbnRlcic7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlbXBsYXRlcy53ZWVrRGF5KFxuICAgICAgZGF5T2ZNb250aCxcbiAgICAgIGlzRGlzYWJsZWQsXG4gICAgICBpc0F2YWlsYWJsZUluLFxuICAgICAgaXNBdmFpbGFibGVPdXQsXG4gICAgICBpc0N1cnJlbnREYXksXG4gICAgICBtaW5TdGF5LFxuICAgICAgdGhpcy5vcHRzLnNob3dNaW5TdGF5ID8gdEZvcm1hdHRlcihtaW5TdGF5LCB0aGlzLmxvY2FsZS5taW5TdGF5KSA6IGZhbHNlLFxuICAgICAgbWF4U3RheSxcbiAgICAgIHRoaXMub3B0cy5zaG93TWF4U3RheSA/IHRGb3JtYXR0ZXIobWF4U3RheSwgdGhpcy5sb2NhbGUubWF4U3RheSkgOiBmYWxzZSxcbiAgICAgIHJhdGUsXG4gICAgICBjdXJyZW5jeUZvcm1hdHRlcihNYXRoLnJvdW5kKHJhdGUpLCB0aGlzLm9wdHMubGFuZywgdGhpcy5vcHRzLmN1cnJlbmN5IHx8IHRoaXMubG9jYWxlLmN1cnJlbmN5KVxuICAgICk7XG4gIH1cblxuICBkZXN0cm95TW9udGhzKCkge1xuICAgIGlmICh0aGlzLmRvbSAmJiBpc0FycmF5KHRoaXMuZG9tLm1vbnRocykpIHtcbiAgICAgIHRoaXMuZG9tLm1vbnRocy5tYXAoKG0pID0+IGRlc3Ryb3lFbGVtZW50KG0pKTtcbiAgICAgIHRoaXMuZGVzdHJveVRvb2x0aXAoKTtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHJldHVybiBkZXN0cm95RWxlbWVudCh0aGlzLmVsKTtcbiAgfVxuXG4gIGxvYWRNYXBzKGlkKSB7XG4gICAgdGhpcy5sb2dnZXIoJ2xvYWRpbmcgbWFwcycpO1xuICAgIHRoaXMudG9nZ2xlTG9hZGluZygpO1xuXG4gICAgY29uc3Qgb25TdWNjZXNzID0gKG1hcHMpID0+IHtcbiAgICAgIGlmIChpc0FycmF5KG1hcHMuZGF0YSkgJiYgbWFwcy5kYXRhWzBdLmF0dHJpYnV0ZXMpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5kaXNhYmxlQXZhaWxhYml0eU1hcCkge1xuICAgICAgICAgIG1hcHMuZGF0YVswXS5hdHRyaWJ1dGVzLmF2YWlsYWJpbGl0eSA9IG1hcHMuZGF0YVswXS5hdHRyaWJ1dGVzLmF2YWlsYWJpbGl0eS5yZXBsYWNlKC9bMC05XS9nLCAnMCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3B0cy5jdXJyZW5jeSA9IHRoaXMub3B0cy5jdXJyZW5jeSB8fCBtYXBzLmRhdGFbMF0uYXR0cmlidXRlcy5jdXJyZW5jeTtcbiAgICAgICAgdGhpcy5hZGRNYXBzKG1hcHMuZGF0YVswXS5hdHRyaWJ1dGVzKTtcbiAgICAgICAgdGhpcy5tYXBzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50b2dnbGVMb2FkaW5nKCk7XG4gICAgICAgIHRoaXMuZW1pdCgnbWFwcy1sb2FkZWQnLCBtYXBzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9nZ2xlTG9hZGluZygpO1xuICAgICAgICB0aGlzLmxvZ2dlcignZXhwZWN0cyBqc29uLWFwaSBkYXRhIGZvcm1hdCcsICdlcnJvcicpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbkVycm9yID0gKCkgPT4ge1xuICAgICAgdGhpcy50b2dnbGVMb2FkaW5nKCk7XG4gICAgICB0aGlzLmVtaXQoJ21hcHMtZXJyb3InKTtcbiAgICAgIHRoaXMubG9nZ2VyKCdTZXJ2ZXIgZXJyb3IgaGFwcGVuZWQnLCAnZXJyb3InKTtcbiAgICB9O1xuXG4gICAgZmV0Y2godGhpcy5vcHRzLnJlbnRhbFVybChpZCkpXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSlcbiAgICAgIC50aGVuKG9uU3VjY2VzcylcbiAgICAgIC5jYXRjaChvbkVycm9yKTtcbiAgfVxuXG4gIGNvbXBsZXRlU2VsZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLm9wdHMuaXNTaW5nbGVJbnB1dCkge1xuICAgICAgY29uc3Qgc2luZ2xlSW5wdXREYXRlRm9ybWF0ID0gdGhpcy5zaW5nbGVJbnB1dERhdGVGb3JtYXQgfHwgdGhpcy5sb2NhbGUuZm9ybWF0RGF0ZTtcblxuICAgICAgY29uc3QgZGF0ZVN0YXJ0ID0gc3RyZnRpbWUoZGF0ZVRvSXNvKC4uLnRoaXMuc2VsZWN0aW9uU3RhcnQpLCBzaW5nbGVJbnB1dERhdGVGb3JtYXQsIHRoaXMubG9jYWxlKTtcbiAgICAgIGNvbnN0IGRhdGVFbmQgICA9IHN0cmZ0aW1lKGRhdGVUb0lzbyguLi50aGlzLnNlbGVjdGlvbkVuZCksIHNpbmdsZUlucHV0RGF0ZUZvcm1hdCwgdGhpcy5sb2NhbGUpO1xuXG4gICAgICB0aGlzLm9wdHMuZWxTaW5nbGVJbnB1dC52YWx1ZSA9IGAke2RhdGVTdGFydH0gJHt0aGlzLm9wdHMuc2luZ2xlSW5wdXRTZXBhcmF0b3J9ICR7ZGF0ZUVuZH1gO1xuICAgIH1cblxuICAgIHRoaXMuZW1pdCgnc2VsZWN0aW9uLWNvbXBsZXRlZCcsIHRoaXMuc2VsZWN0aW9uU3RhcnQsIHRoaXMuc2VsZWN0aW9uRW5kKTtcbiAgICBpZiAoaXNGdW5jdGlvbih0aGlzLm9wdHMub25TZWxlY3Rpb25Db21wbGV0ZWQpKSB7XG4gICAgICB0aGlzLm9wdHMub25TZWxlY3Rpb25Db21wbGV0ZWQoXG4gICAgICAgIGRhdGVUb0lzbyguLi50aGlzLnNlbGVjdGlvblN0YXJ0LCB0cnVlKSwgZGF0ZVRvSXNvKC4uLnRoaXMuc2VsZWN0aW9uRW5kLCB0cnVlKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpbml0Q2FsZW5kYXJEcm9wKCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50RnJvbVN0cmluZygnPGRpdj48L2Rpdj4nKTtcbiAgICB0aGlzLmVsVGFyZ2V0ID0gdGhpcy5vcHRzLmVsO1xuICAgIHRoaXMuZWwgICAgICAgPSBlbGVtZW50O1xuXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTtcblxuICAgIHRoaXMub3B0cy5lbFN0YXJ0QXQgICAgID0gdGhpcy5vcHRzLmVsU3RhcnRBdCB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHt0aGlzLkNTU19QUkVGSVh9X19zdGFydC1hdGApO1xuICAgIHRoaXMub3B0cy5lbEVuZEF0ICAgICAgID0gdGhpcy5vcHRzLmVsRW5kQXQgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7dGhpcy5DU1NfUFJFRklYfV9fZW5kLWF0YCk7XG4gICAgdGhpcy5vcHRzLmVsU2luZ2xlSW5wdXQgPSB0aGlzLm9wdHMuZWxTaW5nbGVJbnB1dCB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHt0aGlzLkNTU19QUkVGSVh9X19zaW5nbGUtaW5wdXRgKTtcblxuICAgIGlmICh0aGlzLm9wdHMuaGlkZGVuRWxGb3JtYXQpIHtcbiAgICAgIFt0aGlzLm9wdHMuZWxTdGFydEF0LCB0aGlzLm9wdHMuZWxFbmRBdF0uZm9yRWFjaCgoaW5wdXQsIGkpID0+IHtcbiAgICAgICAgY29uc3QgaGlkZGVuSW5wdXQgPSBpbnB1dC5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICAgIGlucHV0LnBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoaGlkZGVuSW5wdXQpO1xuICAgICAgICBpbnB1dC5yZW1vdmVBdHRyaWJ1dGUoJ25hbWUnKTtcbiAgICAgICAgaGlkZGVuSW5wdXQuY2xhc3NOYW1lID0gJyc7XG4gICAgICAgIGhpZGRlbklucHV0LmhpZGRlbiAgICA9IHRydWU7XG5cbiAgICAgICAgKGkpID8gdGhpcy5oaWRkZW5FbEVuZEF0ID0gaGlkZGVuSW5wdXQgOiB0aGlzLmhpZGRlbkVsU3RhcnRBdCA9IGhpZGRlbklucHV0O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0cy5pc1NpbmdsZUlucHV0KSB7XG4gICAgICB0aGlzLm9wdHMuZWxTaW5nbGVJbnB1dC5yZWFkT25seSA9IHRydWU7XG5cbiAgICAgIFt0aGlzLm9wdHMuZWxTdGFydEF0LCB0aGlzLm9wdHMuZWxFbmRBdF0uZm9yRWFjaCgoaW5wdXQpID0+IHtcbiAgICAgICAgaW5wdXQuaGlkZGVuID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy5kcm9wQmFzaWMpO1xuXG4gICAgY29uc3QgY2FsRHJvcCA9IHdpbmRvdy5Qb3BwZXIuY3JlYXRlUG9wcGVyKHRoaXMuZWxUYXJnZXQsIHRoaXMuZWwsIHtcbiAgICAgIHBsYWNlbWVudDogdGhpcy5vcHRzLmRyb3BQbGFjZW1lbnQsXG4gICAgICBoaWRlOiB0cnVlXG4gICAgfSk7XG5cbiAgICBjb25zdCBvcGVuRHJvcCA9IChpbnB1dCwgaXNSZXZlcnNlZCkgPT4ge1xuICAgICAgdGhpcy5zd2l0Y2hJbnB1dEZvY3VzKGlucHV0KTtcbiAgICAgIHRoaXMuY2hhbmdlU2VsZWN0aW9uT3JkZXIoaXNSZXZlcnNlZCk7XG5cbiAgICAgIGlmICghaGFzQ2xhc3ModGhpcy5lbCwgc3R5bGVzLnZpc2libGUpKSB7XG4gICAgICAgIGNhbERyb3AudXBkYXRlKCk7XG4gICAgICAgIHRoaXMuZW1pdCgnZHJvcC1vcGVuJyk7XG4gICAgICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy52aXNpYmxlKTtcblxuICAgICAgICBpZiAoIXRoaXMubWFwc0xvYWRlZCAmJiB0aGlzLm9wdHMucmVudGFsSWQpIHtcbiAgICAgICAgICB0aGlzLmxvYWRNYXBzKHRoaXMub3B0cy5yZW50YWxJZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKHRoaXMub3B0cy5pc1NpbmdsZUlucHV0KSB7XG4gICAgICB0aGlzLmZvY3VzVG91Y2hFdmVudHModGhpcy5vcHRzLmVsU2luZ2xlSW5wdXQsICgpID0+IHtcbiAgICAgICAgb3BlbkRyb3AoJ3N0YXJ0JywgZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNUb3VjaEV2ZW50cyh0aGlzLm9wdHMuZWxTdGFydEF0LCAoKSA9PiB7XG4gICAgICAgIG9wZW5Ecm9wKCdzdGFydCcsIGZhbHNlKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5mb2N1c1RvdWNoRXZlbnRzKHRoaXMub3B0cy5lbEVuZEF0LCAoKSA9PiB7XG4gICAgICAgIG9wZW5Ecm9wKCdlbmQnLCB0cnVlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5jbG9zZURyb3AuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5jYWxEcm9wID0gY2FsRHJvcDtcblxuICAgIGlmICh0aGlzLm9wdHMuZWxSZXNldCkge1xuICAgICAgdGhpcy5vcHRzLmVsUmVzZXQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVzZXRTZWxlY3Rpb24oKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHZhbHVlVG9JbnB1dChpbnB1dCwgZGF0ZVZhbHVlKSB7XG4gICAgY29uc3QgeyBlbFN0YXJ0QXQgfSA9IHRoaXMub3B0cztcbiAgICBjb25zdCB7IGVsRW5kQXQgfSAgID0gdGhpcy5vcHRzO1xuXG4gICAgY29uc3QgZGF0ZSAgPSBkYXRlVG9Jc28oLi4uZGF0ZVZhbHVlKTtcbiAgICBjb25zdCB2YWx1ZSA9IHN0cmZ0aW1lKGRhdGUsIHRoaXMuZm9ybWF0LCB0aGlzLmxvY2FsZSk7XG4gICAgY29uc3QgZXZ0ICAgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblxuICAgIGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIGZhbHNlLCB0cnVlKTtcblxuICAgIGlmICh0aGlzLm9wdHMuaGlkZGVuRWxGb3JtYXQpIHtcbiAgICAgIGNvbnN0IGhpZGRlblZhbHVlID0gc3RyZnRpbWUoZGF0ZSwgdGhpcy5vcHRzLmhpZGRlbkVsRm9ybWF0LCB0aGlzLmxvY2FsZSk7XG5cbiAgICAgIGlmIChpbnB1dCA9PT0gJ3N0YXJ0JyAmJiB0aGlzLmhpZGRlbkVsU3RhcnRBdCkge1xuICAgICAgICB0aGlzLmhpZGRlbkVsU3RhcnRBdC52YWx1ZSA9IGhpZGRlblZhbHVlO1xuICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PT0gJ2VuZCcgJiYgdGhpcy5oaWRkZW5FbEVuZEF0KSB7XG4gICAgICAgIHRoaXMuaGlkZGVuRWxFbmRBdC52YWx1ZSA9IGhpZGRlblZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbnB1dCA9PT0gJ3N0YXJ0JyAmJiBlbFN0YXJ0QXQpIHtcbiAgICAgIGVsU3RhcnRBdC52YWx1ZSA9IHZhbHVlO1xuICAgICAgZWxTdGFydEF0LmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgICB9IGVsc2UgaWYgKGlucHV0ID09PSAnZW5kJyAmJiBlbEVuZEF0KSB7XG4gICAgICBlbEVuZEF0LnZhbHVlID0gdmFsdWU7XG4gICAgICBlbEVuZEF0LmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgICB9XG4gIH1cblxuICBpbnB1dHNUb1ZhbHVlcygpIHtcbiAgICBpZiAodGhpcy5vcHRzLmVsU3RhcnRBdC52YWx1ZSA9PT0gJycgJiYgdGhpcy5vcHRzLmVsRW5kQXQudmFsdWUgPT09ICcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0aW9uU3RhcnQgID0gZGF0ZVRvQXJyYXkodGhpcy5vcHRzLmVsU3RhcnRBdC52YWx1ZSwgdGhpcy5mb3JtYXQsIHRoaXMubG9jYWxlKTtcbiAgICBjb25zdCBzZWxlY3Rpb25FbmQgICAgPSBkYXRlVG9BcnJheSh0aGlzLm9wdHMuZWxFbmRBdC52YWx1ZSwgdGhpcy5mb3JtYXQsIHRoaXMubG9jYWxlKTtcbiAgICBjb25zdCB7IGN1cnJlbnREYXRlIH0gPSB0aGlzLm9wdHM7XG5cbiAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoaXNBcnJheShzZWxlY3Rpb25TdGFydCkgJiYgaXNBcnJheShzZWxlY3Rpb25FbmQpKSB7XG4gICAgICBpZiAoKGlzTGF0ZXIoY3VycmVudERhdGUsIHNlbGVjdGlvblN0YXJ0KSB8fCBpc0N1cnJlbnQoY3VycmVudERhdGUsIHNlbGVjdGlvblN0YXJ0KSkgJiYgaXNMYXRlcihzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKSkge1xuICAgICAgICBjb25zdCBtb250aERpZmZlcmVuY2UgPSBtb250aERpZmYoXG4gICAgICAgICAgZGF0ZVRvSXNvKHRoaXMub3B0cy55ZWFyU3RhcnQsIHRoaXMub3B0cy5tb250aFN0YXJ0LCAxKSxcbiAgICAgICAgICBkYXRlVG9Jc28oLi4uc2VsZWN0aW9uRW5kKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHsgdHJlZSB9ID0gdGhpcy5jcmVhdGVUcmVlKHRoaXMub3B0cy55ZWFyU3RhcnQsIHRoaXMub3B0cy5tb250aFN0YXJ0LCBtb250aERpZmZlcmVuY2UpO1xuXG4gICAgICAgIHRoaXMuY1RyZWUuYWRkVHJlZSh0cmVlKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IHNlbGVjdGlvblN0YXJ0O1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkVuZCA9IHNlbGVjdGlvbkVuZDtcbiAgICAgICAgdGhpcy5yZWNvdmVyU2VsZWN0aW9ucygpO1xuICAgICAgICB0aGlzLmNvbXBsZXRlU2VsZWN0aW9uKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveU1vbnRocygpO1xuICAgICAgICB0aGlzLnJlbmRlck1vbnRocyhzZWxlY3Rpb25FbmRbMF0sIHNlbGVjdGlvbkVuZFsxXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZ2dlcihgaW52YWxpZCByYW5nZTogXCJbJHtzZWxlY3Rpb25TdGFydH1dXCIgXCJbJHtzZWxlY3Rpb25FbmR9XVwiYCwgJ3dhcm4nKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uU3RhcnQgJiYgc2VsZWN0aW9uRW5kKSB7XG4gICAgICB0aGlzLmxvZ2dlcihgaW52YWxpZCBkYXRlczogXCIke3NlbGVjdGlvblN0YXJ0fVwiIFwiJHtzZWxlY3Rpb25FbmR9XCJgLCAnd2FybicpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHN3aXRjaElucHV0Rm9jdXModHlwZSkge1xuICAgIGlmICh0aGlzLm9wdHMuZWxTdGFydEF0ICYmIHRoaXMub3B0cy5lbEVuZEF0KSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICBhZGRDbGFzcyh0aGlzLm9wdHMuZWxTdGFydEF0LCBzdHlsZXMuZm9jdXMpO1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm9wdHMuZWxFbmRBdCwgc3R5bGVzLmZvY3VzKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSAnZW5kJykge1xuICAgICAgICBhZGRDbGFzcyh0aGlzLm9wdHMuZWxFbmRBdCwgc3R5bGVzLmZvY3VzKTtcbiAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5vcHRzLmVsU3RhcnRBdCwgc3R5bGVzLmZvY3VzKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSAnYW55Jykge1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm9wdHMuZWxTdGFydEF0LCBzdHlsZXMuZm9jdXMpO1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm9wdHMuZWxFbmRBdCwgc3R5bGVzLmZvY3VzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjbG9zZURyb3AoZSwgZm9yY2UpIHtcbiAgICBpZiAoIWZvcmNlICYmIChpc0luc2lkZShlLnRhcmdldCwgdGhpcy5lbCkgfHwgaXNJbnNpZGUoZS50YXJnZXQsIHRoaXMuZWxUYXJnZXQpKSkge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5lbCwgc3R5bGVzLnZpc2libGUpO1xuICAgICAgdGhpcy5kZXN0cm95VG9vbHRpcCgpO1xuICAgICAgdGhpcy5lbWl0KCdkcm9wLWNsb3NlJyk7XG4gICAgICB0aGlzLnN3aXRjaElucHV0Rm9jdXMoJ2FueScpO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzVG91Y2hFdmVudHMoZWxlbWVudCwgX2NhbGxiYWNrKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24oX2NhbGxiYWNrKSkge1xuICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIF9jYWxsYmFjaygpO1xuICAgICAgfSk7XG5cbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgX2NhbGxiYWNrKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYFske3RoaXMubmFtZX0gJHt0aGlzLlZFUlNJT059XSBgO1xuICB9XG5cbiAgbG9nZ2VyKG1zZywgdHlwZSA9ICdsb2cnKSB7XG4gICAgaWYgKGNvbnNvbGUgJiYgY29uc29sZVt0eXBlXSkge1xuICAgICAgY29uc29sZVt0eXBlXSh0aGlzLnRvU3RyaW5nKCkgKyBtc2cpO1xuICAgIH1cbiAgfVxufVxuIiwiLyogZ2xvYmFsIHByb2Nlc3MsIHJlcXVpcmUgKi9cbmltcG9ydCB7IGRhc2hUb0NhcGl0YWwgfSBmcm9tICd3aWRnZXQtdXRpbHMnO1xuXG5jb25zdCB7IG5hbWUgfSA9IHJlcXVpcmUoJy4uL3BhY2thZ2UuanNvbicpO1xuY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWUsXG4gIGNzc1ByZWZpeDogZGFzaFRvQ2FwaXRhbChuYW1lKSxcbiAgYXBpSG9zdDogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgPyAnaHR0cDovL2xvY2FsaG9zdDozMDAwJyA6ICdodHRwczovL3NlY3VyZS5zbWlseS5jb20nLFxuICBhcGlOYW1lc3BhY2U6ICcvYXBpL3YyL3B1YmxpYycsXG4gIGFwaU1hcHNSb3V0ZTogJy9tYXBzLmpzb24/e2FwaVJlbnRhbElkfXthcGlDdXJyZW5jeX0nLFxuICBhcGlSZW50YWxJZDogJ3JlbnRhbF9pZD0nLFxuICBhcGlDdXJyZW5jeTogJyZleGNoYW5nZV90b19jdXJyZW5jeT0nLFxuXG4gIHJlbnRhbFVybChpZHMpIHtcbiAgICBsZXQgcm91dGUgPSB0aGlzLmFwaU1hcHNSb3V0ZS5yZXBsYWNlKCd7YXBpUmVudGFsSWR9JywgYCR7dGhpcy5hcGlSZW50YWxJZH0ke2lkc31gKTtcbiAgICByb3V0ZSA9IHJvdXRlLnJlcGxhY2UoJ3thcGlDdXJyZW5jeX0nLCAodGhpcy5jdXJyZW5jeSkgPyBgJHt0aGlzLmFwaUN1cnJlbmN5fSR7dGhpcy5jdXJyZW5jeX1gIDogJycpO1xuICAgIHJldHVybiBgJHt0aGlzLmFwaUhvc3R9JHt0aGlzLmFwaU5hbWVzcGFjZX0ke3JvdXRlfWA7XG4gIH0sXG5cbiAgc3RhcnRPZldlZWs6IDAsIC8vIDAgU3VuIDEgTW9uLi4uLjYgU2F0XG4gIG1pblN0YXk6IDEsIC8vIGNhbiBzZWxlY3Qgb25lIG5pZ2h0XG4gIG1heFN0YXk6IEluZmluaXR5LCAvLyBjYW4gc2VsZWN0IGluZmluaXRlIG5pZ2h0c1xuICBtb250aFN0YXJ0OiBudWxsLCAvLyBzdGFydCB3aXRoIGN1cnJlbnQgbW9udGggYnkgZGVmYXVsdCBNICcwLi4uMTEnXG4gIHllYXJTdGFydDogbnVsbCwgLy8gc3RhcnQgd2l0aCBjdXJyZW50IHllYXIgWVlZWVxuICBkYXlzUGVyV2VlazogNywgLy8gRklYTUUgc3VwcG9ydCBjYWxlbmRhciByZW5kZXJpbmdcbiAgZGlzcGxheU1vbnRoczogMixcbiAgc2VsZWN0YWJsZTogZmFsc2UsXG4gIHNob3dSYXRlczogZmFsc2UsXG4gIGlzUmV2ZXJzZVNlbGVjdGFibGU6IGZhbHNlLCAvLyBzZWxlY3QgZW5kIGRhdGUgZmlyc3RcbiAgaXNCYWNrRGlzYWJsZWQ6IHRydWUsXG4gIGlzRHJvcERvd246IGZhbHNlLFxuICBkcm9wUGxhY2VtZW50OiAnYm90dG9tLXN0YXJ0JyxcbiAgZWw6IG51bGwsXG4gIGVsU3RhcnRBdDogbnVsbCxcbiAgZWxFbmRBdDogbnVsbCxcbiAgZWxTaW5nbGVJbnB1dDogbnVsbCxcbiAgaXNTaW5nbGVJbnB1dDogbnVsbCxcbiAgc2luZ2xlSW5wdXREYXRlRm9ybWF0OiBudWxsLFxuICBzaW5nbGVJbnB1dFNlcGFyYXRvcjogJ+KGkicsXG4gIGVsUmVzZXQ6IG51bGwsXG4gIGZvcm1hdERhdGU6IG51bGwsXG4gIGhpZGRlbkVsRm9ybWF0OiBudWxsLFxuICByZW50YWxJZDogbnVsbCxcbiAgY3VycmVuY3k6IG51bGwsXG4gIGRpc2FibGVBdmFpbGFiaXR5TWFwOiBmYWxzZSxcbiAgYWxsb3dTaG9ydGVyTWluU3RheVNlbGVjdGlvbjogZmFsc2UsXG4gIGFsbG93TG9uZ2VyTWF4U3RheVNlbGVjdGlvbjogZmFsc2UsXG4gIGVuYWJsZUFsbERheXM6IGZhbHNlLFxuICBjdXJyZW50RGF0ZSxcbiAgdGhlbWU6ICdza2V3J1xufTtcbiIsImxldCBsb2NhbGVzID0ge1xuICAnZW4tR0InOiB7XG4gICAgc2hvcnRXZWVrZGF5TmFtZXM6ICdTdV9Nb19UdV9XZV9UaF9Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICBsb25nV2Vla2RheU5hbWVzOiAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KCdfJyksXG4gICAgbG9uZ01vbnRoTmFtZXM6ICdKYW51YXJ5X0ZlYnJ1YXJ5X01hcmNoX0FwcmlsX01heV9KdW5lX0p1bHlfQXVndXN0X1NlcHRlbWJlcl9PY3RvYmVyX05vdmVtYmVyX0RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgIHNob3J0TW9udGhOYW1lczogJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpLFxuICAgIGZvcm1hdERhdGU6ICclYiAlZCwgJVknLFxuICAgIGN1cnJlbmN5OiAnR0JQJyxcbiAgICBtaW5TdGF5OiAnJW51bWJlcisgbmlnaHRzJyxcbiAgICBtYXhTdGF5OiAnJW51bWJlci0gbmlnaHRzJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ21pbmltdW0gc3RheTogJW51bWJlciBuaWdodHMnLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAnbWF4aW11bSBzdGF5OiAlbnVtYmVyIG5pZ2h0cycsXG4gICAgaGFzSW52YWxpZERheXM6ICdib29rZWQgYWxyZWFkeScsXG4gICAgc3RhcnRPZldlZWs6IDBcbiAgfSxcbiAgJ2VuLVVTJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLFxuICAgIGxvbmdNb250aE5hbWVzOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICBmb3JtYXREYXRlOiAnJWIgJWQsICVZJyxcbiAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgbWluU3RheTogJyVudW1iZXIrIG5pZ2h0cycsXG4gICAgbWF4U3RheTogJyVudW1iZXItIG5pZ2h0cycsXG4gICAgaGFzSW52YWxpZE1pblN0YXk6ICdtaW5pbXVtIHN0YXk6ICVudW1iZXIgbmlnaHRzJyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ21heGltdW0gc3RheTogJW51bWJlciBuaWdodHMnLFxuICAgIGhhc0ludmFsaWREYXlzOiAnYm9va2VkIGFscmVhZHknLFxuICAgIHN0YXJ0T2ZXZWVrOiAxXG4gIH0sXG4gICdkZS1ERSc6IHtcbiAgICBzaG9ydFdlZWtkYXlOYW1lczogJ1NvX01vX0RpX01pX0RvX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgIGxvbmdXZWVrZGF5TmFtZXM6ICdTb25udGFnX01vbnRhZ19EaWVuc3RhZ19NaXR0d29jaF9Eb25uZXJzdGFnX0ZyZWl0YWdfU2Ftc3RhZycuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ0phbnVhcl9GZWJydWFyX03DpHJ6X0FwcmlsX01haV9KdW5pX0p1bGlfQXVndXN0X1NlcHRlbWJlcl9Pa3RvYmVyX05vdmVtYmVyX0RlemVtYmVyJy5zcGxpdCgnXycpLFxuICAgIHNob3J0TW9udGhOYW1lczogJ0phbl9GZWJfTcOkcl9BcHJfTWFpX0p1bl9KdWxfQXVnX1NlcF9Pa3RfTm92X0Rleicuc3BsaXQoJ18nKSxcbiAgICBmb3JtYXREYXRlOiAnJWIgJWQsICVZJyxcbiAgICBjdXJyZW5jeTogJ0VVUicsXG4gICAgbWluU3RheTogJyVudW1iZXIrIG7DpGNodGUnLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBuw6RjaHRlJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ21pbmRlc3RhdWZlbnRoYWx0OiAlbnVtYmVyIE7DpGNodGUnLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAnbWF4aW1hbGVyIEF1ZmVudGhhbHQ6ICVudW1iZXIgTsOkY2h0ZScsXG4gICAgaGFzSW52YWxpZERheXM6ICdzY2hvbiBnZWJ1Y2h0JyxcbiAgICBzdGFydE9mV2VlazogMVxuICB9LFxuICAnZXMtRVMnOiB7XG4gICAgc2hvcnRXZWVrZGF5TmFtZXM6ICdEb19MdV9NYV9NaV9KdV9WaV9Tw6EnLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ2RvbWluZ29fbHVuZXNfbWFydGVzX21pw6lyY29sZXNfanVldmVzX3ZpZXJuZXNfc8OhYmFkbycuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ2VuZXJvX2ZlYnJlcm9fbWFyem9fYWJyaWxfbWF5b19qdW5pb19qdWxpb19hZ29zdG9fc2VwdGllbWJyZV9vY3R1YnJlX25vdmllbWJyZV9kaWNpZW1icmUnLnNwbGl0KCdfJyksXG4gICAgc2hvcnRNb250aE5hbWVzOiAnZW5lX2ZlYl9tYXJfYWJyX21heV9qdW5fanVsX2Fnb19zZXBfb2N0X25vdl9kaWMnLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyViICVkLCAlWScsXG4gICAgY3VycmVuY3k6ICdFVVInLFxuICAgIG1pblN0YXk6ICclbnVtYmVyKyBub2NoZXMnLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBub2NoZXMnLFxuICAgIGhhc0ludmFsaWRNaW5TdGF5OiAnZXN0YW5jaWEgbcOtbmltYTogJW51bWJlciBub2NoZXMnLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAnZXN0YW5jaWEgbcOheGltYTogJW51bWJlciBub2NoZXMnLFxuICAgIGhhc0ludmFsaWREYXlzOiAneWEgcmVzZXJ2YWRvJyxcbiAgICBzdGFydE9mV2VlazogMVxuICB9LFxuICAnZnItRlInOiB7XG4gICAgc2hvcnRXZWVrZGF5TmFtZXM6ICdEaV9MdV9NYV9NZV9KZV9WZV9TYScuc3BsaXQoJ18nKSxcbiAgICBsb25nV2Vla2RheU5hbWVzOiAnZGltYW5jaGVfbHVuZGlfbWFyZGlfbWVyY3JlZGlfamV1ZGlfdmVuZHJlZGlfc2FtZWRpJy5zcGxpdCgnXycpLFxuICAgIGxvbmdNb250aE5hbWVzOiAnamFudmllcl9mw6l2cmllcl9tYXJzX2F2cmlsX21haV9qdWluX2p1aWxsZXRfYW/Du3Rfc2VwdGVtYnJlX29jdG9icmVfbm92ZW1icmVfZMOpY2VtYnJlJy5zcGxpdCgnXycpLFxuICAgIHNob3J0TW9udGhOYW1lczogJ2phbl9mw6l2X21hcl9hdnJfbWFpX2p1aW5fanVpbF9hb8O7X3NlcF9vY3Rfbm92X2TDqWMnLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyVkICViLCAlWScsXG4gICAgY3VycmVuY3k6ICdFVVInLFxuICAgIG1pblN0YXk6ICclbnVtYmVyKyBudWl0cycsXG4gICAgbWF4U3RheTogJyVudW1iZXItIG51aXRzJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ3PDqWpvdXIgbWluaW11bSA6ICVudW1iZXIgbnVpdHMnLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAnc8Opam91ciBtYXhpbXVtIDogJW51bWJlciBudWl0cycsXG4gICAgaGFzSW52YWxpZERheXM6ICdkw6lqw6AgcsOpc2VydsOpJyxcbiAgICBzdGFydE9mV2VlazogMVxuICB9LFxuICAnaXQtSVQnOiB7XG4gICAgc2hvcnRXZWVrZGF5TmFtZXM6ICdEb19MdV9NYV9NZV9HaV9WZV9TYScuc3BsaXQoJ18nKSxcbiAgICBsb25nV2Vla2RheU5hbWVzOiAnZG9tZW5pY2FfbHVuZWTDrF9tYXJ0ZWTDrF9tZXJjb2xlZMOsX2dpb3ZlZMOsX3ZlbmVyZMOsX3NhYmF0bycuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ2dlbm5haW9fZmViYnJhaW9fbWFyem9fYXByaWxlX21hZ2dpb19naXVnbm9fbHVnbGlvX2Fnb3N0b19zZXR0ZW1icmVfb3R0b2JyZV9ub3ZlbWJyZV9kaWNlbWJyZScuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdnZW5fZmViX21hcl9hcHJfbWFnX2dpdV9sdWdfYWdvX3NldF9vdHRfbm92X2RpYycuc3BsaXQoJ18nKSxcbiAgICBmb3JtYXREYXRlOiAnJWIgJWQsICVZJyxcbiAgICBjdXJyZW5jeTogJ0VVUicsXG4gICAgbWluU3RheTogJyVudW1iZXIrIG5vdHRpLicsXG4gICAgbWF4U3RheTogJyVudW1iZXItIG5vdHRpJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ3NvZ2dpb3JubyBtaW5pbTogJW51bWJlciBub3R0aScsXG4gICAgaGFzSW52YWxpZE1heFN0YXk6ICdzb2dnaW9ybm8gbWFzc2ltbzogJW51bWJlciBub3R0aScsXG4gICAgaGFzSW52YWxpZERheXM6ICdnacOgIHByZW5vdGF0bycsXG4gICAgc3RhcnRPZldlZWs6IDFcbiAgfSxcbiAgJ3N2LVNFJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnc8O2X23DpV90aV9vbl90b19mcl9sw7YnLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ3PDtm5kYWdfbcOlbmRhZ190aXNkYWdfb25zZGFnX3RvcnNkYWdfZnJlZGFnX2zDtnJkYWcnLnNwbGl0KCdfJyksXG4gICAgbG9uZ01vbnRoTmFtZXM6ICdqYW51YXJpX2ZlYnJ1YXJpX21hcnNfYXByaWxfbWFqX2p1bmlfanVsaV9hdWd1c3RpX3NlcHRlbWJlcl9va3RvYmVyX25vdmVtYmVyX2RlY2VtYmVyJy5zcGxpdCgnXycpLFxuICAgIHNob3J0TW9udGhOYW1lczogJ2phbl9mZWJfbWFyX2Fwcl9tYWpfanVuX2p1bF9hdWdfc2VwX29rdF9ub3ZfZGVjJy5zcGxpdCgnXycpLFxuICAgIGZvcm1hdERhdGU6ICclYiAlZCwgJVknLFxuICAgIGN1cnJlbmN5OiAnRVVSJyxcbiAgICBtaW5TdGF5OiAnJW51bWJlcisgbsOkdHRlcicsXG4gICAgbWF4U3RheTogJyVudW1iZXItIG7DpHR0ZXInLFxuICAgIGhhc0ludmFsaWRNaW5TdGF5OiAna29ydGFzdGUgdmlzdGVsc2U6ICVudW1iZXIgbsOkdHRlcicsXG4gICAgaGFzSW52YWxpZE1heFN0YXk6ICdtYXhpbcOhbG55IHBvYnl0OiAlbnVtYmVyIG7DpHR0ZXInLFxuICAgIGhhc0ludmFsaWREYXlzOiAncmVkYW4gYm9rYXQnLFxuICAgIHN0YXJ0T2ZXZWVrOiAxXG4gIH0sXG4gICdydS1SVSc6IHtcbiAgICBzaG9ydFdlZWtkYXlOYW1lczogJ9CS0YFf0J/QvV/QktGCX9Ch0YBf0KfRgl/Qn9GCX9Ch0LEnLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ9CS0L7RgdC60YDQtdGB0LXQvdGM0LVf0J/QvtC90LXQtNC10LvRjNC90LjQul/QktGC0L7RgNC90LjQul/QodGA0LXQtNCwX9Cn0LXRgtCy0LXRgNCzX9Cf0Y/RgtC90LjRhtCwX9Ch0YPQsdCx0L7RgtCwJy5zcGxpdCgnXycpLFxuICAgIGxvbmdNb250aE5hbWVzOiAn0K/QvdCy0LDRgNGMX9Ck0LXQstGA0LDQu9GMX9Cc0LDRgNGCX9CQ0L/RgNC10LvRjF/QnNCw0Llf0JjRjtC90Yxf0JjRjtC70Yxf0JDQstCz0YPRgdGCX9Ch0LXQvdGC0Y/QsdGA0Yxf0J7QutGC0Y/QsdGA0Yxf0J3QvtGP0LHRgNGMX9CU0LXQutCw0LHRgNGMJy5zcGxpdCgnXycpLFxuICAgIHNob3J0TW9udGhOYW1lczogJ9Cv0L3Qsl/QpNC10LJf0JzQsNGAX9CQ0L/RgF/QnNCw0Llf0JjRjtC9X9CY0Y7Qu1/QkNCy0LNf0KHQtdC9X9Ce0LrRgl/QndC+0Y9f0JTQtdC6Jy5zcGxpdCgnXycpLFxuICAgIGZvcm1hdERhdGU6ICclZC4lYi4lWScsXG4gICAgY3VycmVuY3k6ICfQoNGD0LEuJyxcbiAgICBtaW5TdGF5OiAnJW51bWJlcisg0L3QvtGHLicsXG4gICAgbWF4U3RheTogJyVudW1iZXItINC90L7Rhy4nLFxuICAgIGhhc0ludmFsaWRNaW5TdGF5OiAn0LzQuNC90LjQvNCw0LvRjNC90L7QtSDQv9GA0LXQsdGL0LLQsNC90Lg6ICVudW1iZXIg0L3QvtGH0LgnLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAn0LzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC/0YDQtdCx0YvQstCw0L3QuNC1OiAlbnVtYmVyINC90L7Rh9C4JyxcbiAgICBoYXNJbnZhbGlkRGF5czogJ9C30LDQsdGA0L7QvdC40YDQvtCy0LDQvdC+INGD0LbQtScsXG4gICAgc3RhcnRPZldlZWs6IDFcbiAgfSxcbiAgJ3BsLVBMJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnTmRfUG5fV3RfxZpyX0N6X1B0X1NvJy5zcGxpdCgnXycpLFxuICAgIGxvbmdXZWVrZGF5TmFtZXM6ICduaWVkemllbGFfcG9uaWVkemlhxYJla193dG9yZWtfxZtyb2RhX2N6d2FydGVrX3BpxIV0ZWtfc29ib3RhJy5zcGxpdCgnXycpLFxuICAgIGxvbmdNb250aE5hbWVzOiAnc3R5Y3plxYRfbHV0eV9tYXJ6ZWNfa3dpZWNpZcWEX21hal9jemVyd2llY19saXBpZWNfc2llcnBpZcWEX3dyemVzaWXFhF9wYcW6ZHppZXJuaWtfbGlzdG9wYWRfZ3J1ZHppZcWEJy5zcGxpdCgnXycpLFxuICAgIHNob3J0TW9udGhOYW1lczogJ3N0eV9sdXRfbWFyX2t3aV9tYWpfY3plX2xpcF9zaWVfd3J6X3BhxbpfbGlzX2dydScuc3BsaXQoJ18nKSxcbiAgICBmb3JtYXREYXRlOiAnJWQuJWIuJVknLFxuICAgIGN1cnJlbmN5OiAnUExOJyxcbiAgICBtaW5TdGF5OiAnJW51bWJlcisgbm9jZScsXG4gICAgbWF4U3RheTogJyVudW1iZXItIG5vY2UnLFxuICAgIGhhc0ludmFsaWRNaW5TdGF5OiAnbWluaW1hbG55IHBvYnk6ICVudW1iZXIgbm9jZScsXG4gICAgaGFzSW52YWxpZE1heFN0YXk6ICdtYWtzeW1hbG55IHBvYnl0OiAlbnVtYmVyIG5vY2UnLFxuICAgIGhhc0ludmFsaWREYXlzOiAnanXFvCB6YXJlemVyd293YW5lJyxcbiAgICBzdGFydE9mV2VlazogMVxuICB9LFxuICAnbmwtTkwnOiB7XG4gICAgc2hvcnRXZWVrZGF5TmFtZXM6ICdab19NYV9EaV9Xb19Eb19Wcl9aYScuc3BsaXQoJ18nKSxcbiAgICBsb25nV2Vla2RheU5hbWVzOiAnWm9uZGFnX01hYW5kYWdfRGluc2RhZ19Xb2Vuc2RhZ19Eb25kZXJkYWdfVnJpamRhZ19aYXRlcmRhZycuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ0phbnVhcmlfRmVicnVhcmlfTWFhcnRfQXByaWxfTWVpX0p1bmlfSnVsaV9BdWd1c3R1c19TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdKYW5fRmViX01hYV9BcHJfTWVpX0p1bl9KdWxfQXVnX1NlcF9Pa3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICBmb3JtYXREYXRlOiAnJWIgJWQsICVZJyxcbiAgICBjdXJyZW5jeTogJ0VVUicsXG4gICAgbWluU3RheTogJyVudW1iZXIrIG5hY2h0ZW4nLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBuYWNodGVuJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ21pbmltYWFsIHZlcmJsaWpmOiAlbnVtYmVyIG5hY2h0ZW4nLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAnbWF4aW1hYWwgdmVyYmxpamY6ICVudW1iZXIgbmFjaHRlbicsXG4gICAgaGFzSW52YWxpZERheXM6ICdhbCBnZWJvZWt0JyxcbiAgICBzdGFydE9mV2VlazogMVxuICB9XG59O1xuXG4vLyBBZGQgYWxpYXNlc1xubG9jYWxlcyA9IE9iamVjdC5hc3NpZ24oe1xuICBlbjogbG9jYWxlc1snZW4tVVMnXSxcbiAgZGU6IGxvY2FsZXNbJ2RlLURFJ10sXG4gIGVzOiBsb2NhbGVzWydlcy1FUyddLFxuICBmcjogbG9jYWxlc1snZnItRlInXSxcbiAgaXQ6IGxvY2FsZXNbJ2l0LUlUJ10sXG4gIHN2OiBsb2NhbGVzWydzdi1TViddLFxuICBydTogbG9jYWxlc1sncnUtUlUnXSxcbiAgcGw6IGxvY2FsZXNbJ3BsLVBMJ10sXG4gIG5sOiBsb2NhbGVzWydubC1OTCddXG59LCBsb2NhbGVzKTtcblxuZXhwb3J0IGRlZmF1bHQgbG9jYWxlcztcbiIsImltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMvY2FsZW5kYXIuc2Nzcyc7XG5cbmV4cG9ydCBjb25zdCBtYWluICA9IGA8ZGl2IGNsYXNzPVwiJHtzdHlsZXMubW9udGhzV3JhcHBlcn1cIj48L2Rpdj5gO1xuXG5leHBvcnQgY29uc3QgdG9vbHRpcCA9IGA8ZGl2IGNsYXNzPVwiJHtzdHlsZXMudG9vbHRpcH1cIiByb2xlPVwidG9vbHRpcFwiPjxzcGFuPjwvc3Bhbj48ZGl2IGNsYXNzPVwiJHtzdHlsZXMudG9vbHRpcEFycm93fVwiIGRhdGEtcG9wcGVyLWFycm93PVwidHJ1ZVwiPjwvZGl2PjwvZGl2PmA7XG5cbmV4cG9ydCBjb25zdCBtb250aCA9IGBcbiAgPGRpdiBjbGFzcz1cIiR7c3R5bGVzLm1DZWxsfSBqcy1tb250aFwiPlxuICAgIDx0YWJsZSBjbGFzcz1cIiR7c3R5bGVzLm1vbnRofVwiIHJvbGU9XCJtb250aFwiPlxuICAgICAgPGNhcHRpb24+PGRpdiBjbGFzcz1cIiR7c3R5bGVzLmNhcHRpb259XCI+PC9kaXY+PC9jYXB0aW9uPlxuICAgICAgPHRoZWFkIGNsYXNzPVwiJHtzdHlsZXMudGFibGVIZWFkZXJ9XCI+PHRyPjwvdHI+PC90aGVhZD5cbiAgICAgIDx0Ym9keSBjbGFzcz1cIiR7c3R5bGVzLmJvZHl9XCI+PC90Ym9keT5cbiAgICA8L3RhYmxlPlxuICA8L2Rpdj5cbmA7XG5cbmV4cG9ydCBjb25zdCB3ZWVrRGF5TGFiZWwgPSAobGFiZWwpID0+IGA8dGggY2xhc3M9XCIke3N0eWxlcy50aH1cIj4ke2xhYmVsfTwvdGg+YDtcblxuZXhwb3J0IGNvbnN0IHdlZWtEYXkgPSAoXG4gIGxhYmVsLFxuICBkaXNhYmxlZCxcbiAgaXNBdmFpbGFibGVJbixcbiAgaXNBdmFpbGFibGVPdXQsXG4gIGlzQ3VycmVudERheSxcbiAgbWluU3RheSxcbiAgbWluU3RheVQsXG4gIG1heFN0YXksXG4gIG1heFN0YXlULFxuICByYXRlLFxuICByYXRlVFxuKSA9PiBgXG4gIDx0ZCAke2Rpc2FibGVkID8gYGRhdGEtZGlzYWJsZWQ9JHtkaXNhYmxlZH1gIDogJ2RhdGEtZW5hYmxlZCd9XG4gICAgICAgJHtpc0F2YWlsYWJsZU91dCA/ICdkYXRhLWF2YWlsYWJsZS1vdXQnIDogJyd9XG4gICAgICAgJHtpc0F2YWlsYWJsZUluID8gJ2RhdGEtYXZhaWxhYmxlLWluJyA6ICcnfVxuICAgICAgICR7bWluU3RheSA/IGBkYXRhLW1pbi1zdGF5PSR7bWluU3RheX1gIDogJyd9XG4gICAgICAgJHttYXhTdGF5ID8gYGRhdGEtbWF4LXN0YXk9JHttYXhTdGF5fWAgOiAnJ31cbiAgICAgICBkYXRhLXZhbHVlPVwiJHtsYWJlbH1cIlxuICAgICAgIGNsYXNzPVwiJHtzdHlsZXMuY2VsbH0gJHtpc0N1cnJlbnREYXkgPyBzdHlsZXMudG9kYXkgOiAnJ31cIj5cbiAgICAgICA8ZGl2IGNsYXNzPVwiJHtzdHlsZXMuY250fVwiIHJvbGU9XCJkYXktdmFsdWVcIj5cbiAgICAgICAgJHtsYWJlbH1cbiAgICAgICAgPGRpdiBjbGFzcz1cIiR7c3R5bGVzLmluZm99XCI+XG4gICAgICAgICAgJHtyYXRlID8gYDxzcGFuIGRhdGEtcmF0ZT4ke3JhdGVUfTwvc3Bhbj5gIDogJyd9XG4gICAgICAgICAgJHttaW5TdGF5ICYmIG1pblN0YXlUID8gYDxzcGFuIGRhdGEtbWluLXN0YXktdD4ke21pblN0YXlUfTwvc3Bhbj5gIDogJyd9XG4gICAgICAgICAgJHttYXhTdGF5ICYmIG1heFN0YXlUID8gYDxzcGFuIGRhdGEtbWF4LXN0YXktdD4ke21heFN0YXlUfTwvc3Bhbj5gIDogJyd9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gIDwvdGQ+XG5gO1xuXG5leHBvcnQgY29uc3QgZm9yd2FyZCA9IGBcbiAgPGJ1dHRvbiBjbGFzcz1cIiR7c3R5bGVzLmZvcndhcmR9XCIgcm9sZT1cImJ1dHRvblwiPlxuICAgIDxzdmcgdmlld0JveD1cIjAgMCAxMDAwIDEwMDBcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIj5cbiAgICAgIDxwYXRoIGQ9XCJNNjk0LjQgMjQyLjRsMjQ5LjEgMjQ5LjFjMTEgMTEgMTEgMjEgMCAzMkw2OTQuNCA3NzIuN2MtNSA1LTEwIDctMTYgN3MtMTEtMi0xNi03Yy0xMS0xMS0xMS0yMSAwLTMybDIxMC4xLTIxMC4xSDY3LjFjLTEzIDAtMjMtMTAtMjMtMjNzMTAtMjMgMjMtMjNoODA1LjRMNjYyLjQgMjc0LjVjLTIxLTIxLjEgMTEtNTMuMSAzMi0zMi4xelwiPjwvcGF0aD5cbiAgICA8L3N2Zz5cbiAgPC9idXR0b24+XG5gO1xuXG5leHBvcnQgY29uc3QgYmFjayA9IGBcbiAgPGJ1dHRvbiBjbGFzcz1cIiR7c3R5bGVzLmJhY2t9XCIgcm9sZT1cImJ1dHRvblwiPlxuICAgIDxzdmcgdmlld0JveD1cIjAgMCAxMDAwIDEwMDBcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIj5cbiAgICAgIDxwYXRoIGQ9XCJNMzM2LjIgMjc0LjVsLTIxMC4xIDIxMGg4MDUuNGMxMyAwIDIzIDEwIDIzIDIzcy0xMCAyMy0yMyAyM0gxMjYuMWwyMTAuMSAyMTAuMWMxMSAxMSAxMSAyMSAwIDMyLTUgNS0xMCA3LTE2IDdzLTExLTItMTYtN2wtMjQ5LjEtMjQ5Yy0xMS0xMS0xMS0yMSAwLTMybDI0OS4xLTI0OS4xYzIxLTIxLjEgNTMgMTAuOSAzMiAzMnpcIj48L3BhdGg+XG4gICAgPC9zdmc+XG4gIDwvYnV0dG9uPlxuYDtcblxuZXhwb3J0IGNvbnN0IHdlZWtEYXlQbGFjZWhvbGRlciA9ICc8dGQ+PC90ZD4nO1xuXG4vKiBlc2xpbnQgYXJyb3ctYm9keS1zdHlsZTogMCAqL1xuZXhwb3J0IGNvbnN0IHdlZWtSb3cgPSAobnVtKSA9PiB7XG4gIHJldHVybiB7XG4gICAgb3BlbjogYDx0ciBjbGFzcz1cImpzLWJvZHktcm93LSR7bnVtfVwiPmAsXG4gICAgY2xvc2U6ICc8L3RyPidcbiAgfTtcbn07XG4iLCIvKiBnbG9iYWwgY29uc29sZSAqL1xuaW1wb3J0IHsgc3RyZnRpbWUsIHN0cnB0aW1lIH0gZnJvbSAnc3RydGltZSc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJ3dpZGdldC11dGlscyc7XG5cbmV4cG9ydCBjb25zdCBkYXRlVG9Jc28gPSAoeWVhciwgbW9udGgsIGRheSwgaXNTdHJpbmcgPSBmYWxzZSkgPT4ge1xuICBmdW5jdGlvbiBwYWQobnVtYmVyKSB7XG4gICAgaWYgKG51bWJlciA8IDEwKSB7XG4gICAgICByZXR1cm4gYDAke251bWJlcn1gO1xuICAgIH1cbiAgICByZXR1cm4gbnVtYmVyO1xuICB9XG5cbiAgaWYgKGlzU3RyaW5nKSB7XG4gICAgcmV0dXJuIGAke3llYXJ9LSR7cGFkKG1vbnRoICsgMSl9LSR7cGFkKGRheSl9YDtcbiAgfVxuXG4gIGxldCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGRheSwgMTIsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBkYXRlVG9BcnJheSA9ICh2YWwsIGZvcm1hdCwgbG9jYWxlKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0ZSA9IHN0cnB0aW1lKHZhbCwgZm9ybWF0LCBsb2NhbGUpO1xuICAgIGNvbnN0IGEgICAgPSBzdHJmdGltZShkYXRlLCAnJVktJW0tJWQnKS5zcGxpdCgnLScpO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIHBhcnNlSW50KGFbMF0pLCAvLyB5ZWFyXG4gICAgICBwYXJzZUludChhWzFdIC0gMSksIC8vIG1vbnRoIGluZGV4XG4gICAgICBwYXJzZUludChhWzJdKSAvLyBkYXlcbiAgICBdO1xuICB9IGNhdGNoKGUpIHtcbiAgICBpZiAoaXMoZS5tZXNzYWdlKSkge1xuICAgICAgY29uc29sZS5sb2coZS5tZXNzYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaXNMYXRlciA9IChzdGFydCwgZW5kKSA9PiBkYXRlVG9Jc28oLi4uc3RhcnQsIHRydWUpIDwgZGF0ZVRvSXNvKC4uLmVuZCwgdHJ1ZSk7XG5cbmV4cG9ydCBjb25zdCBpc0N1cnJlbnQgPSAoc3RhcnQsIGVuZCkgPT4gZGF0ZVRvSXNvKC4uLnN0YXJ0LCB0cnVlKSA9PSBkYXRlVG9Jc28oLi4uZW5kLCB0cnVlKTtcblxuZXhwb3J0IGNvbnN0IG1vbnRoRGlmZiA9IChzdGFydCwgZW5kKSA9PiB7XG4gIHJldHVybiBlbmQuZ2V0TW9udGgoKSAtIHN0YXJ0LmdldE1vbnRoKCkgKyAoMTIgKiAoZW5kLmdldEZ1bGxZZWFyKCkgLSBzdGFydC5nZXRGdWxsWWVhcigpKSk7XG59O1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGlvbk9mQ2VsbCA9IChjZWxsKSA9PiB7XG4gIGlmIChpcyhjZWxsLmRhdGFzZXQuZW5hYmxlZCkgfHwgaXMoY2VsbC5kYXRhc2V0LmF2YWlsYWJsZUluKSB8fCBpcyhjZWxsLmRhdGFzZXQuYXZhaWxhYmxlT3V0KSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IHRGb3JtYXR0ZXIgPSAodmFsdWUsIHN0cikgPT4gc3RyLnJlcGxhY2UoJyVudW1iZXInLCB2YWx1ZSk7XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvZ2V0VXJsLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18gPSBuZXcgVVJMKFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9JTI3aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmclMjcgdmlld0JveD0lMjcwIDAgMzIgMzAuOTclMjclM0UlM0NwYXRoIGQ9JTI3TTMyLDE1LjQ4YTE2LjUyLDE2LjUyLDAsMCwxLTEuMzcsNi4yOCwxNi4zNSwxNi4zNSwwLDAsMS05LDguNjMsMTUuODcsMTUuODcsMCwwLDEtMTcuMy0zLjc4QTE1LjQzLDE1LjQzLDAsMCwxLDQuNzIsNC43MiwxNSwxNSwwLDAsMSwxNS40OS41MmExNC43NiwxNC43NiwwLDAsMSwxMC40LDQuNTZBMTQuNzcsMTQuNzcsMCwwLDEsMjksOS45YTE0LjQ1LDE0LjQ1LDAsMCwxLC44NSwzLjM1aC4xM0EyLjA2LDIuMDYsMCwwLDEsMzIsMTUuMzFhLjkxLjkxLDAsMCwxLDAsLjE3Wk0yOC43MiwxMGExNC4yNywxNC4yNywwLDAsMC0zLjItNC41NSwxNCwxNCwwLDAsMC0xMC0zLjlBMTMuNzIsMTMuNzIsMCwwLDAsMywxMC4zYTEzLjQzLDEzLjQzLDAsMCwwLC4yNCwxMC4yNywxMy4wNSwxMy4wNSwwLDAsMCwxMi4yOCw3LjgyLDEyLjkyLDEyLjkyLDAsMCwwLDQuODgtMS4xLDEyLjY1LDEyLjY1LDAsMCwwLDQuMDYtMi44NywxMi40OCwxMi40OCwwLDAsMCwyLjYyLTQuMTUsMTIuMjQsMTIuMjQsMCwwLDAsLjgyLTQuNzloMGEuOTEuOTEsMCwwLDEsMC0uMTcsMi4wNywyLjA3LDAsMCwxLDEuODQtMi4wNSwxNC4yNywxNC4yNywwLDAsMC0xLTMuMjZaJTI3IHRyYW5zZm9ybT0lMjd0cmFuc2xhdGUlMjgwIC0wLjUxJTI5JTI3LyUzRSUzQy9zdmclM0VcIiwgaW1wb3J0Lm1ldGEudXJsKTtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19fID0gX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgbG9hZGVyXFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuQC13ZWJraXQta2V5ZnJhbWVzIEJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Jvb2tpbmdzeW5jLXNwaW4ge1xcbiAgZnJvbSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9XFxuICB0byB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfSB9XFxuXFxuQGtleWZyYW1lcyBCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19ib29raW5nc3luYy1zcGluIHtcXG4gIGZyb20ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxcbiAgdG8ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0gfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcjo6YmVmb3JlIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcXG4gIGNvbnRlbnQ6ICcnOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDUwJTtcXG4gIGxlZnQ6IDUwJTtcXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICBiYWNrZ3JvdW5kLXNpemU6IDEwMCU7XFxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19fICsgXCIpO1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgd2lkdGg6IDIwcHg7XFxuICBtYXJnaW46IC0xMHB4IDAgMCAtMTBweDtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgLXdlYmtpdC1hbmltYXRpb246IEJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Jvb2tpbmdzeW5jLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyO1xcbiAgYW5pbWF0aW9uOiBCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19ib29raW5nc3luYy1zcGluIDJzIGluZmluaXRlIGxpbmVhcjtcXG4gIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBwYXVzZWQ7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXI6OmJlZm9yZSwgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyOjphZnRlciB7XFxuICB6LWluZGV4OiAxMDAwO1xcbiAgb3BhY2l0eTogMDtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjI1cyBlYXNlLWluLW91dDtcXG4gIC1vLXRyYW5zaXRpb246IG9wYWNpdHkgMC4yNXMgZWFzZS1pbi1vdXQ7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMjVzIGVhc2UtaW4tb3V0OyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2xvYWRpbmc6OmJlZm9yZSwgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2xvYWRpbmc6OmFmdGVyIHtcXG4gIG9wYWNpdHk6IDE7XFxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgZHJvcGRvd25cXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZHJvcEJhc2ljIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGRpc3BsYXk6IG5vbmU7XFxuICBtYXgtd2lkdGg6IDEwMCU7XFxuICBib3gtc2hhZG93OiAxcHggNXB4IDlweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcXG4gIGJhY2tncm91bmQ6ICNmZmY7XFxuICBtYXJnaW46IDA7XFxuICBwYWRkaW5nOiAxZW07XFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjVlbTtcXG4gIHotaW5kZXg6IDEwOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZHJvcEJhc2ljLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Zpc2libGUge1xcbiAgICBkaXNwbGF5OiBibG9jazsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Ryb3BCYXNpYyAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FwdGlvbiB7XFxuICAgIG1hcmdpbi1ib3R0b206IC43ZW07IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhci5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kcm9wQmFzaWMgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvcndhcmQsXFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZHJvcEJhc2ljIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19iYWNrIHtcXG4gICAgdG9wOiAxZW07XFxuICAgIGxlZnQ6IDFlbTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Ryb3BCYXNpYyAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZCB7XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiAxZW07IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsOmZpcnN0LWNoaWxkIHtcXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDtcXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGw6bGFzdC1jaGlsZCB7XFxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4O1xcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGw6OmJlZm9yZSwgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2VsbDo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1hcmdpbjogMDtcXG4gIGNvbnRlbnQ6ICcnO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXcoLTMwZGVnKTtcXG4gIC1tcy10cmFuc2Zvcm06IHNrZXcoLTMwZGVnKTtcXG4gIHRyYW5zZm9ybTogc2tldygtMzBkZWcpO1xcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xcbiAgei1pbmRleDogMDtcXG4gIGhlaWdodDogY2FsYygxMDAlICsgMnB4KTtcXG4gIHRvcDogLTFweDsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGw6OmJlZm9yZSB7XFxuICBsZWZ0OiAtNTUlOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2VsbDo6YWZ0ZXIge1xcbiAgbGVmdDogNTUlOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIHNlbGVjdGlvbnMsIGxlZnQgLSBjZW50ZXIgLSByaWdodFxcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgZGlzYWJsZWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWRpc2FibGVkPVxcXCJsZWZ0XFxcIl06OmFmdGVyIHtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWRpc2FibGVkLWJnLWNvbG9yLCAjZjBmMGYwKTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtZGlzYWJsZWQ9XFxcImNlbnRlclxcXCJdIHtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWRpc2FibGVkLWJnLWNvbG9yLCAjZjBmMGYwKTtcXG4gIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1kaXNhYmxlZC1jb2xvciwgI2JmYmZiZik7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtZGlzYWJsZWQ9XFxcImNlbnRlclxcXCJdOjpiZWZvcmUsIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtZGlzYWJsZWQ9XFxcImNlbnRlclxcXCJdOjphZnRlciB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWRpc2FibGVkLWJnLWNvbG9yLCAjZjBmMGYwKTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtZGlzYWJsZWQ9XFxcInJpZ2h0XFxcIl06OmJlZm9yZSB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1kaXNhYmxlZC1iZy1jb2xvciwgI2YwZjBmMCk7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGhpZ2hsaWdodGVkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwibGVmdFxcXCJdOjphZnRlciB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImNlbnRlclxcXCJdIHtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTtcXG4gIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1jb2xvciwgIzM3MzczNyk7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImNlbnRlclxcXCJdOjpiZWZvcmUsIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImNlbnRlclxcXCJdOjphZnRlciB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcInJpZ2h0XFxcIl06OmJlZm9yZSB7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgaW52YWxpZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaW52YWxpZD1cXFwibGVmdFxcXCJdIHtcXG4gIGJhY2tncm91bmQ6IG5vbmU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaW52YWxpZD1cXFwibGVmdFxcXCJdOjpiZWZvcmUge1xcbiAgICBkaXNwbGF5OiBibG9jazsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJsZWZ0XFxcIl06OmFmdGVyIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtYmctY29sb3IsICNlM2UzZTMpOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCAjZTNlM2UzKTtcXG4gIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWNvbG9yLCAjYjJiMmIyKTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJjZW50ZXJcXFwiXTo6YmVmb3JlLCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImNlbnRlclxcXCJdOjphZnRlciB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtYmctY29sb3IsICNlM2UzZTMpOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJyaWdodFxcXCJdIHtcXG4gIGJhY2tncm91bmQ6IG5vbmU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaW52YWxpZD1cXFwicmlnaHRcXFwiXTo6YmVmb3JlIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtYmctY29sb3IsICNlM2UzZTMpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcInJpZ2h0XFxcIl06OmFmdGVyIHtcXG4gICAgZGlzcGxheTogYmxvY2s7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGwgaG92ZXIgZGlyZWN0XFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2RpcmVjdFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZF0ge1xcbiAgYmFja2dyb3VuZDogbm9uZTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2RpcmVjdFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZF06OmJlZm9yZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZGlyZWN0W2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkXTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2RpcmVjdFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZC1vZmZzZXRdIHtcXG4gIGJhY2tncm91bmQ6IG5vbmU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXJlY3RbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWQtb2Zmc2V0XTo6YmVmb3JlIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2RpcmVjdFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZC1vZmZzZXRdOjphZnRlciB7XFxuICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxsIGhvdmVyIHJldmVyc2VkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3JldmVyc2VkW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkXSB7XFxuICBiYWNrZ3JvdW5kOiBub25lOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fcmV2ZXJzZWRbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWRdOjpiZWZvcmUge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fcmV2ZXJzZWRbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWRdOjphZnRlciB7XFxuICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3JldmVyc2VkW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkLW9mZnNldF0ge1xcbiAgYmFja2dyb3VuZDogbm9uZTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3JldmVyc2VkW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkLW9mZnNldF06OmJlZm9yZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fcmV2ZXJzZWRbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWQtb2Zmc2V0XTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGw6OmJlZm9yZSwgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGw6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB0b3A6IDA7XFxuICBtYXJnaW46IDA7XFxuICBjb250ZW50OiAnJztcXG4gIHotaW5kZXg6IDA7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgc2VsZWN0aW9ucywgbGVmdCAtIGNlbnRlciAtIHJpZ2h0XFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBkaXNhYmxlZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcXG4gIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1kaXNhYmxlZC1jb2xvciwgI2JmYmZiZik7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGhpZ2hsaWdodGVkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImxlZnRcXFwiXSB7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtY29sb3IsICMzNzM3MzcpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwibGVmdFxcXCJdOjpiZWZvcmUge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7XFxuICAgIG9wYWNpdHk6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYmctb3BhY2l0eSwgMC41KTtcXG4gICAgd2lkdGg6IDUwJTtcXG4gICAgbGVmdDogNTAlOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwibGVmdFxcXCJdOjphZnRlciB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1ib3JkZXItcmFkaXVzLCA2cHgpOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImNlbnRlclxcXCJdIHtcXG4gIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1jb2xvciwgIzM3MzczNyk7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJjZW50ZXJcXFwiXTo6YmVmb3JlIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpO1xcbiAgICBvcGFjaXR5OiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJnLW9wYWNpdHksIDAuNSk7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwicmlnaHRcXFwiXSB7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtY29sb3IsICMzNzM3MzcpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwicmlnaHRcXFwiXTo6YmVmb3JlIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpO1xcbiAgICBvcGFjaXR5OiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJnLW9wYWNpdHksIDAuNSk7XFxuICAgIHdpZHRoOiA1MCU7XFxuICAgIHJpZ2h0OiA1MCU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJyaWdodFxcXCJdOjphZnRlciB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1ib3JkZXItcmFkaXVzLCA2cHgpOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBpbnZhbGlkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaW52YWxpZD1cXFwibGVmdFxcXCJdIHtcXG4gIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWNvbG9yLCAjYjJiMmIyKTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaW52YWxpZD1cXFwibGVmdFxcXCJdOjpiZWZvcmUge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCAjZTNlM2UzKTtcXG4gICAgb3BhY2l0eTogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1iZy1vcGFjaXR5LCAwLjUpO1xcbiAgICB3aWR0aDogNTAlO1xcbiAgICBsZWZ0OiA1MCU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImxlZnRcXFwiXTo6YWZ0ZXIge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCAjZTNlM2UzKTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1ib3JkZXItcmFkaXVzLCA2cHgpOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaW52YWxpZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtY29sb3IsICNiMmIyYjIpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJjZW50ZXJcXFwiXTo6YmVmb3JlIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1iZy1jb2xvciwgI2UzZTNlMyk7XFxuICAgIG9wYWNpdHk6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYmctb3BhY2l0eSwgMC41KTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcInJpZ2h0XFxcIl0ge1xcbiAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtY29sb3IsICNiMmIyYjIpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJyaWdodFxcXCJdOjpiZWZvcmUge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCAjZTNlM2UzKTtcXG4gICAgb3BhY2l0eTogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1iZy1vcGFjaXR5LCAwLjUpO1xcbiAgICB3aWR0aDogNTAlO1xcbiAgICByaWdodDogNTAlOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJyaWdodFxcXCJdOjphZnRlciB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtYmctY29sb3IsICNlM2UzZTMpO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJvcmRlci1yYWRpdXMsIDZweCk7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGwgaG92ZXJcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1ob3ZlcmVkXTpub3QoW2RhdGEtZGlzYWJsZWQ9XFxcImNlbnRlclxcXCJdKSB7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtY29sb3IsICMzNzM3MzcpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1ob3ZlcmVkXTpub3QoW2RhdGEtZGlzYWJsZWQ9XFxcImNlbnRlclxcXCJdKTo6YWZ0ZXIge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYm9yZGVyLXJhZGl1cywgNnB4KTsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBjb2xvcnNcXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZm9udDogMXJlbS8xLjQgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGJhY2tncm91bmQ6ICNmZmY7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FwdGlvbiB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBsaW5lLWhlaWdodDogMnJlbTtcXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcXG4gICAgbWFyZ2luLWJvdHRvbTogMi4zZW07XFxuICAgIHBhZGRpbmctdG9wOiAwO1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcCB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLXRvb2x0aXAtYmctY29sb3IsICMzMzMpO1xcbiAgICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItdG9vbHRpcC1jb2xvciwgI2ZmZik7XFxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgICBwYWRkaW5nOiA0cHggOHB4O1xcbiAgICBmb250LXNpemU6IDEzcHg7XFxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gICAgei1pbmRleDogNTAwO1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxcbiAgICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBBcnJvdyB7XFxuICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOyB9XFxuICAgICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwQXJyb3csIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcEFycm93OjpiZWZvcmUge1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgd2lkdGg6IDhweDtcXG4gICAgICAgIGhlaWdodDogOHB4O1xcbiAgICAgICAgYmFja2dyb3VuZDogaW5oZXJpdDsgfVxcbiAgICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcEFycm93OjpiZWZvcmUge1xcbiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOyB9XFxuICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcFtkYXRhLXBvcHBlci1wbGFjZW1lbnRePSd0b3AnXSA+IC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwQXJyb3cge1xcbiAgICAgIGJvdHRvbTogLTRweDsgfVxcbiAgICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj0nYm90dG9tJ10gPiAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcEFycm93IHtcXG4gICAgICB0b3A6IC00cHg7IH1cXG4gICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49J2xlZnQnXSA+IC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwQXJyb3cge1xcbiAgICAgIHJpZ2h0OiAtNHB4OyB9XFxuICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcFtkYXRhLXBvcHBlci1wbGFjZW1lbnRePSdyaWdodCddID4gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBBcnJvdyB7XFxuICAgICAgbGVmdDogLTRweDsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19tb250aHNXcmFwcGVyIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtbXMtZmxleC13cmFwOiB3cmFwO1xcbiAgICBmbGV4LXdyYXA6IHdyYXA7XFxuICAgIGdhcDogMmVtOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX21DZWxsIHtcXG4gICAgZm9udC1zaXplOiAwLjg3NWVtO1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAtbXMtZmxleDogMSAxIDI1JTtcXG4gICAgZmxleDogMSAxIDI1JTsgfVxcbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk5MHB4KSB7XFxuICAgICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19tQ2VsbCB7XFxuICAgICAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAgICAgLW1zLWZsZXg6IDEgMSAxMDAlO1xcbiAgICAgICAgZmxleDogMSAxIDEwMCU7IH0gfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19tb250aCB7XFxuICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XFxuICAgIGJvcmRlci1zcGFjaW5nOiAwIDAuMmVtO1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICBtYXJnaW46IDA7XFxuICAgIHdpZHRoOiAxMDAlOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3RhYmxlSGVhZGVyLFxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19ib2R5IHtcXG4gICAgbWFyZ2luOiAwOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3RoIHtcXG4gICAgZm9udC1zaXplOiAwLjg1ZW07XFxuICAgIGNvbG9yOiAjYWFhYWFhO1xcbiAgICBoZWlnaHQ6IDI1cHg7XFxuICAgIHdpZHRoOiAzMHB4O1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2VsbCB7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBib3JkZXI6IDA7XFxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxuICAgIGNvbG9yOiAjNDQ0NDQ0O1xcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgICB3aWR0aDogMzBweDsgfVxcbiAgICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGwuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9kYXkge1xcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NudCB7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIHotaW5kZXg6IDE7XFxuICAgIGZvbnQtc2l6ZTogMWVtO1xcbiAgICBmb250LXdlaWdodDogaW5oZXJpdDsgfVxcbiAgICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NudDo6YWZ0ZXIge1xcbiAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIG1hcmdpbi10b3A6IDEwMCU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9faW5mbyB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgYm90dG9tOiAwO1xcbiAgICBsZWZ0OiAwO1xcbiAgICBmb250LXNpemU6IDAuNjVlbTtcXG4gICAgcGFkZGluZzogMXB4IDNweDtcXG4gICAgY29sb3I6IHJnYmEoNjAsIDYwLCA2MCwgMC41KTtcXG4gICAgcmlnaHQ6IDA7IH1cXG4gICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19pbmZvID4gc3BhbiB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvY3VzLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXNhYmxlZCxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fc2VsZWN0ZWQsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3JldmVyc2VkLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXJlY3QsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3NlbGVjdGluZ1JldmVyc2VkLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19zZWxlY3RpbmdEaXJlY3QsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2FjdGlvbnNFbmFibGVkLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19oaWdobGlnaHRlZCxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9faW52YWxpZCB7XFxuICBjb2xvcjogaW5oZXJpdDsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbCBob3ZlciBjdXJzb3JzXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtc2VsZWN0YWJsZT1cXFwidHJ1ZVxcXCJdIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsICoge1xcbiAgY3Vyc29yOiBwb2ludGVyOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIGJ1dHRvbnNcXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvcndhcmQsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19iYWNrIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogMDtcXG4gIGxlZnQ6IDA7XFxuICBoZWlnaHQ6IDJyZW07XFxuICB3aWR0aDogMjNweDtcXG4gIGZpbGw6ICM0NDQ0NDQ7XFxuICBwYWRkaW5nOiAwO1xcbiAgYm9yZGVyLXJhZGl1czogMXB4O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgei1pbmRleDogMjsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkIHN2ZyxcXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYmFjayBzdmcge1xcbiAgICBoZWlnaHQ6IGluaGVyaXQ7XFxuICAgIHdpZHRoOiBpbmhlcml0OyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkIHtcXG4gIHJpZ2h0OiAwO1xcbiAgbGVmdDogYXV0bzsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZDphY3RpdmUsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkOmZvY3VzLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYmFjazphY3RpdmUsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19iYWNrOmZvY3VzIHtcXG4gIG91dGxpbmU6IG5vbmU7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvcndhcmQ6aG92ZXIsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19iYWNrOmhvdmVyIHtcXG4gIGZpbGw6ICMzODk1ZDk7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvcndhcmRbZGlzYWJsZWRdLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZFtkaXNhYmxlZF06aG92ZXIsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19iYWNrW2Rpc2FibGVkXSxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2JhY2tbZGlzYWJsZWRdOmhvdmVyIHtcXG4gIG9wYWNpdHk6IDAuNTtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIGZpbGw6ICM0NDQ0NDQ7IH1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9zcmMvc3R5bGVzL2xvYWRpbmcuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3N0eWxlcy9jYWxlbmRhci5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc3R5bGVzL3N2Zy11cmkuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3N0eWxlcy9fdmFyaWFibGVzLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zdHlsZXMvZHJvcC5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc3R5bGVzL3RoZW1lLXNrZXcuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3N0eWxlcy90aGVtZS1iYXNpYy5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBOzs7O3dEQ0l3RDtBREV4RDtFQUNFO0lBQ0UsK0JBQStC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O0FBSW5COzs7O3dEQW1Rd0Q7QUE5UHhEOztFQUlJLGtCQUFrQjtFQUNsQixNQUFNO0VBQ04sT0FBTztFQUNQLFlBQVk7RUFDWixXQUFXO0VBQ1gsYUVyTTJCO0VGc00zQixVQUFVO0VBQ1Ysa0JBQWtCO0VBQ2xCLGVBQWU7RUFDZixVQUFVLEVBQUE7RUFiZDs7SUFnQkksZUFBZTtJQUNmLGNBQWMsRUFBQTs7QUFqQmxCO0VBc0JJLFFBQVE7RUFDUixVQUFVLEVBQUE7O0FBdkJkOzs7O0VBOEJJLGFBQWEsRUFBQTs7QUE5QmpCOztFQW1DSSxhRXpNMkIsRUFBQTs7QUZzSy9COzs7O0VBMENJLFlBQVk7RUFDWixlQUFlO0VBQ2YsYUV4TzJCLEVBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIGxvYWRlclxcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbkAtd2Via2l0LWtleWZyYW1lcyBib29raW5nc3luYy1zcGluIHtcXG4gIGZyb20ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gIH1cXG5cXG4gIHRvIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIGJvb2tpbmdzeW5jLXNwaW4ge1xcbiAgZnJvbSB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgfVxcbiAgdG8ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICB9XFxufVxcblxcbi5jYWxlbmRhciB7XFxuICAmOjpiZWZvcmUge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHRvcDogMDtcXG4gICAgbGVmdDogMDtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgjZmZmLCAuNyk7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgfVxcblxcbiAgJjo6YWZ0ZXIge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHRvcDogNTAlO1xcbiAgICBsZWZ0OiA1MCU7XFxuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJTtcXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaWNvbi1zcGlubmVyLXN2ZztcXG4gICAgaGVpZ2h0OiAyMHB4O1xcbiAgICB3aWR0aDogMjBweDtcXG4gICAgbWFyZ2luOiAtMTBweCAwIDAgLTEwcHg7XFxuICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogYm9va2luZ3N5bmMtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXI7XFxuICAgIGFuaW1hdGlvbjogYm9va2luZ3N5bmMtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXI7XFxuICAgIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBwYXVzZWQ7XFxuICB9XFxuXFxuICAmOjpiZWZvcmUsXFxuICAmOjphZnRlciB7XFxuICAgIHotaW5kZXg6IDEwMDA7XFxuICAgIG9wYWNpdHk6IDA7XFxuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcXG4gICAgLW8tdHJhbnNpdGlvbjogJHRyYW5zaXRpb247XFxuICAgIHRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xcbiAgfVxcblxcbiAgJi5sb2FkaW5nIHtcXG4gICAgJjo6YmVmb3JlLFxcbiAgICAmOjphZnRlciB7XFxuICAgICAgb3BhY2l0eTogMTtcXG4gICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgICAgIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nO1xcbiAgICB9XFxuICB9XFxufVxcblwiLFwiQGltcG9ydCAnc3ZnLXVyaSc7XFxuQGltcG9ydCAndmFyaWFibGVzJztcXG5AaW1wb3J0ICdsb2FkaW5nJztcXG5AaW1wb3J0ICdkcm9wJztcXG5AaW1wb3J0ICd0aGVtZS1za2V3JztcXG5AaW1wb3J0ICd0aGVtZS1iYXNpYyc7XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIGNvbG9yc1xcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi5jYWxlbmRhciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBmb250OiAxcmVtLzEuNCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgYmFja2dyb3VuZDogJGNhbGVuZGFyLWJnLWNvbG9yO1xcblxcbiAgLmNhcHRpb24ge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcXG4gICAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgbGluZS1oZWlnaHQ6IDJyZW07XFxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAgIG1hcmdpbi1ib3R0b206IDIuM2VtO1xcbiAgICBwYWRkaW5nLXRvcDogMDtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgfVxcblxcbiAgLnRvb2x0aXAge1xcbiAgICBiYWNrZ3JvdW5kOiAkdG9vbHRpcC1iZy1jb2xvcjtcXG4gICAgY29sb3I6ICR0b29sdGlwLWNvbG9yO1xcbiAgICBmb250LXdlaWdodDogYm9sZDtcXG4gICAgcGFkZGluZzogNHB4IDhweDtcXG4gICAgZm9udC1zaXplOiAxM3B4O1xcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICAgIHotaW5kZXg6IDUwMDtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuXFxuICAgIC50b29sdGlwQXJyb3cge1xcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcXG5cXG4gICAgICAmLCAmOjpiZWZvcmUge1xcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgd2lkdGg6IDhweDtcXG4gICAgICAgIGhlaWdodDogOHB4O1xcbiAgICAgICAgYmFja2dyb3VuZDogaW5oZXJpdDtcXG4gICAgICB9XFxuXFxuICAgICAgJjo6YmVmb3JlIHtcXG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICAgICAgICBjb250ZW50OiAnJztcXG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcXG4gICAgICB9XFxuICAgIH1cXG5cXG4gICAgJltkYXRhLXBvcHBlci1wbGFjZW1lbnRePSd0b3AnXSA+IC50b29sdGlwQXJyb3cge1xcbiAgICAgIGJvdHRvbTogLTRweDtcXG4gICAgfVxcbiAgICBcXG4gICAgJltkYXRhLXBvcHBlci1wbGFjZW1lbnRePSdib3R0b20nXSA+IC50b29sdGlwQXJyb3cge1xcbiAgICAgIHRvcDogLTRweDtcXG4gICAgfVxcbiAgICBcXG4gICAgJltkYXRhLXBvcHBlci1wbGFjZW1lbnRePSdsZWZ0J10gPiAudG9vbHRpcEFycm93IHtcXG4gICAgICByaWdodDogLTRweDtcXG4gICAgfVxcbiAgICBcXG4gICAgJltkYXRhLXBvcHBlci1wbGFjZW1lbnRePSdyaWdodCddID4gLnRvb2x0aXBBcnJvdyB7XFxuICAgICAgbGVmdDogLTRweDtcXG4gICAgfVxcbiAgfVxcblxcbiAgLm1vbnRoc1dyYXBwZXIge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7XFxuICAgIGZsZXgtd3JhcDogd3JhcDtcXG4gICAgZ2FwOiAyZW07XFxuICB9XFxuXFxuICAubUNlbGwge1xcbiAgICBmb250LXNpemU6IDAuODc1ZW07XFxuICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgIC1tcy1mbGV4OiAxIDEgMjUlO1xcbiAgICBmbGV4OiAxIDEgMjUlO1xcblxcbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk5MHB4KSB7XFxuICAgICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAtbXMtZmxleDogMSAxIDEwMCU7XFxuICAgICAgZmxleDogMSAxIDEwMCU7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5tb250aCB7XFxuICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XFxuICAgIGJvcmRlci1zcGFjaW5nOiAwIDAuMmVtO1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICBtYXJnaW46IDA7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBcXG4gIH1cXG5cXG4gIC50YWJsZUhlYWRlcixcXG4gIC5ib2R5IHtcXG4gICAgbWFyZ2luOiAwO1xcbiAgfVxcblxcbiAgLnRoIHtcXG4gICAgZm9udC1zaXplOiAwLjg1ZW07XFxuICAgIGNvbG9yOiAkdGgtY29sb3I7XFxuICAgIGhlaWdodDogMjVweDtcXG4gICAgd2lkdGg6ICRjZWxsLXdpZHRoO1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICB9XFxuXFxuICAuY2VsbCB7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBib3JkZXI6IDA7XFxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxuICAgIGNvbG9yOiAkY2VsbC1jb2xvcjtcXG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgd2lkdGg6ICRjZWxsLXdpZHRoO1xcblxcbiAgICAmLnRvZGF5IHtcXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmNudCB7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIHotaW5kZXg6IDE7XFxuICAgIGZvbnQtc2l6ZTogMWVtO1xcbiAgICBmb250LXdlaWdodDogaW5oZXJpdDtcXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIG1hcmdpbi10b3A6IDEwMCU7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5pbmZvIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBib3R0b206IDA7XFxuICAgIGxlZnQ6IDA7XFxuICAgIGZvbnQtc2l6ZTogMC42NWVtO1xcbiAgICBwYWRkaW5nOiAxcHggM3B4O1xcbiAgICBjb2xvcjogJGluZm8tY29sb3I7XFxuICAgIHJpZ2h0OiAwO1xcblxcbiAgICA+IHNwYW4ge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4uZm9jdXMsXFxuLmRpc2FibGVkLFxcbi5zZWxlY3RlZCxcXG4ucmV2ZXJzZWQsXFxuLmRpcmVjdCxcXG4uc2VsZWN0aW5nUmV2ZXJzZWQsXFxuLnNlbGVjdGluZ0RpcmVjdCxcXG4uYWN0aW9uc0VuYWJsZWQsXFxuLmhpZ2hsaWdodGVkLFxcbi5pbnZhbGlkIHtcXG4gIGNvbG9yOiBpbmhlcml0O1xcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGwgaG92ZXIgY3Vyc29yc1xcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi5jYWxlbmRhciB7XFxuICAvLyBjdXJzb3IgcG9pbnRlciBpZiBjYWxlbmRhciBpcyBzZWxlY3RhYmxlXFxuICAmW2RhdGEtc2VsZWN0YWJsZT1cXFwidHJ1ZVxcXCJdIC5jZWxsICoge1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICB9XFxufVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBidXR0b25zXFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLmNhbGVuZGFyIHtcXG5cXG4gIC5mb3J3YXJkLFxcbiAgLmJhY2sge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIHRvcDogMDtcXG4gICAgbGVmdDogMDtcXG4gICAgaGVpZ2h0OiAycmVtO1xcbiAgICB3aWR0aDogMjNweDtcXG4gICAgZmlsbDogJGJ0bi1maWxsO1xcbiAgICBwYWRkaW5nOiAwO1xcbiAgICBib3JkZXItcmFkaXVzOiAxcHg7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgei1pbmRleDogMjtcXG5cXG4gICAgc3ZnIHtcXG4gICAgaGVpZ2h0OiBpbmhlcml0O1xcbiAgICB3aWR0aDogaW5oZXJpdDtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmZvcndhcmQge1xcbiAgICByaWdodDogMDtcXG4gICAgbGVmdDogYXV0bztcXG4gIH1cXG5cXG4gIC5mb3J3YXJkOmFjdGl2ZSxcXG4gIC5mb3J3YXJkOmZvY3VzLFxcbiAgLmJhY2s6YWN0aXZlLFxcbiAgLmJhY2s6Zm9jdXMge1xcbiAgICBvdXRsaW5lOiBub25lO1xcbiAgfVxcblxcbiAgLmZvcndhcmQ6aG92ZXIsXFxuICAuYmFjazpob3ZlciB7XFxuICAgIGZpbGw6ICRidG4tZmlsbC1ob3ZlcjtcXG4gIH1cXG5cXG4gIC5mb3J3YXJkW2Rpc2FibGVkXSxcXG4gIC5mb3J3YXJkW2Rpc2FibGVkXTpob3ZlcixcXG4gIC5iYWNrW2Rpc2FibGVkXSxcXG4gIC5iYWNrW2Rpc2FibGVkXTpob3ZlciB7XFxuICAgIG9wYWNpdHk6IDAuNTtcXG4gICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICBmaWxsOiAkYnRuLWZpbGw7XFxuICB9XFxufVxcblwiLFwiLy8vL1xcbi8vLyBIZWxwZXIgZnVuY3Rpb24gdG8gZWFzaWx5IHVzZSBhbiBTVkcgaW5saW5lIGluIENTU1xcbi8vLyB3aXRob3V0IGVuY29kaW5nIGl0IHRvIGJhc2U2NCwgc2F2aW5nIGJ5dGVzLlxcbi8vLyBJdCBhbHNvIGhlbHBzIHdpdGggYnJvd3NlciBzdXBwb3J0Llxcbi8vLy9cXG5cXG4vLy8gQSBzbWFsbCBmdW5jdGlvbiBhbGxvd2luZyBza2lwcGluZyBiYXNlNjQgZW5jb2RpbmdcXG4vLy8gYW5kIHNpbXBseSBwYXN0aW5nIHRoZSBTVkcgbWFya3VwIHJpZ2h0IGluIHRoZSBDU1MuXFxuLy8vIEBhdXRob3IgSmFrb2IgRXJpa3Nlblxcbi8vLyBAbGluayBodHRwOi8vY29kZXBlbi5pby9qYWtvYi1lL3Blbi9kb01vTUxcXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdmcgLSBTVkcgaW1hZ2UgdG8gZW5jb2RlXFxuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBFbmNvZGVkIFNWRyBkYXRhIHVyaVxcbkBmdW5jdGlvbiBzdmctdXJpKCRzdmcpIHtcXG4gICAgJGVuY29kZWQ6ICcnO1xcbiAgICAkc2xpY2U6IDIwMDA7XFxuICAgICRpbmRleDogMDtcXG4gICAgJGxvb3BzOiBjZWlsKHN0ci1sZW5ndGgoJHN2ZykgLyAkc2xpY2UpO1xcblxcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsb29wcyB7XFxuICAgICAgICAkY2h1bms6IHN0ci1zbGljZSgkc3ZnLCAkaW5kZXgsICRpbmRleCArICRzbGljZSAtIDEpO1xcbiAgICAgICAgJGNodW5rOiBzdHItcmVwbGFjZSgkY2h1bmssICdcXFwiJywgXFxcIidcXFwiKTtcXG4gICAgICAgICRjaHVuazogc3RyLXJlcGxhY2UoJGNodW5rLCAnPCcsICclM0MnKTtcXG4gICAgICAgICRjaHVuazogc3RyLXJlcGxhY2UoJGNodW5rLCAnPicsICclM0UnKTtcXG4gICAgICAgICRjaHVuazogc3RyLXJlcGxhY2UoJGNodW5rLCAnJicsICclMjYnKTtcXG4gICAgICAgICRjaHVuazogc3RyLXJlcGxhY2UoJGNodW5rLCAnIycsICclMjMnKTtcXG4gICAgICAgICRlbmNvZGVkOiAjeyRlbmNvZGVkfSN7JGNodW5rfTtcXG4gICAgICAgICRpbmRleDogJGluZGV4ICsgJHNsaWNlO1xcbiAgICB9XFxuXFxuICAgIEByZXR1cm4gdXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCN7JGVuY29kZWR9XFxcIik7XFxufVxcblxcbi8vLyBSZXBsYWNlIGAkc2VhcmNoYCB3aXRoIGAkcmVwbGFjZWAgaW4gYCRzdHJpbmdgXFxuLy8vIEBhdXRob3IgSHVnbyBHaXJhdWRlbFxcbi8vLyBAbGluayBodHRwOi8vc2Fzc21laXN0ZXIuY29tL2dpc3QvMWI0ZjJkYTU1Mjc4MzAwODhlNGRcXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzdHJpbmcgLSBJbml0aWFsIHN0cmluZ1xcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlYXJjaCAtIFN1YnN0cmluZyB0byByZXBsYWNlXFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkcmVwbGFjZSAoJycpIC0gTmV3IHZhbHVlXFxuLy8vIEByZXR1cm4ge1N0cmluZ30gLSBVcGRhdGVkIHN0cmluZ1xcbkBmdW5jdGlvbiBzdHItcmVwbGFjZSgkc3RyaW5nLCAkc2VhcmNoLCAkcmVwbGFjZTogJycpIHtcXG4gICAgJGluZGV4OiBzdHItaW5kZXgoJHN0cmluZywgJHNlYXJjaCk7XFxuXFxuICAgIEBpZiAkaW5kZXgge1xcbiAgICAgICAgQHJldHVybiBzdHItc2xpY2UoJHN0cmluZywgMSwgJGluZGV4IC0gMSkgKyAkcmVwbGFjZSArIHN0ci1yZXBsYWNlKHN0ci1zbGljZSgkc3RyaW5nLCAkaW5kZXggKyBzdHItbGVuZ3RoKCRzZWFyY2gpKSwgJHNlYXJjaCwgJHJlcGxhY2UpO1xcbiAgICB9XFxuXFxuICAgIEByZXR1cm4gJHN0cmluZztcXG59XFxuXCIsXCIkaWNvbi1zcGlubmVyLXN2ZzogICAgICBzdmctdXJpKFxcXCI8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDMyIDMwLjk3Jz48cGF0aCBkPSdNMzIsMTUuNDhhMTYuNTIsMTYuNTIsMCwwLDEtMS4zNyw2LjI4LDE2LjM1LDE2LjM1LDAsMCwxLTksOC42MywxNS44NywxNS44NywwLDAsMS0xNy4zLTMuNzhBMTUuNDMsMTUuNDMsMCwwLDEsNC43Miw0LjcyLDE1LDE1LDAsMCwxLDE1LjQ5LjUyYTE0Ljc2LDE0Ljc2LDAsMCwxLDEwLjQsNC41NkExNC43NywxNC43NywwLDAsMSwyOSw5LjlhMTQuNDUsMTQuNDUsMCwwLDEsLjg1LDMuMzVoLjEzQTIuMDYsMi4wNiwwLDAsMSwzMiwxNS4zMWEuOTEuOTEsMCwwLDEsMCwuMTdaTTI4LjcyLDEwYTE0LjI3LDE0LjI3LDAsMCwwLTMuMi00LjU1LDE0LDE0LDAsMCwwLTEwLTMuOUExMy43MiwxMy43MiwwLDAsMCwzLDEwLjNhMTMuNDMsMTMuNDMsMCwwLDAsLjI0LDEwLjI3LDEzLjA1LDEzLjA1LDAsMCwwLDEyLjI4LDcuODIsMTIuOTIsMTIuOTIsMCwwLDAsNC44OC0xLjEsMTIuNjUsMTIuNjUsMCwwLDAsNC4wNi0yLjg3LDEyLjQ4LDEyLjQ4LDAsMCwwLDIuNjItNC4xNSwxMi4yNCwxMi4yNCwwLDAsMCwuODItNC43OWgwYS45MS45MSwwLDAsMSwwLS4xNywyLjA3LDIuMDcsMCwwLDEsMS44NC0yLjA1LDE0LjI3LDE0LjI3LDAsMCwwLTEtMy4yNlonIHRyYW5zZm9ybT0ndHJhbnNsYXRlKDAgLTAuNTEpJy8+PC9zdmc+XFxcIik7XFxuXFxuJGJyZWFrcG9pbnQteHM6ICAgICAgICAgOTAwcHg7XFxuXFxuJHRyYW5zaXRpb246ICAgICAgICAgICAgb3BhY2l0eSAwLjI1cyBlYXNlLWluLW91dDtcXG5cXG4vLyB0b29sdGlwXFxuXFxuJHRvb2x0aXAtYmctY29sb3I6ICAgICAgdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItdG9vbHRpcC1iZy1jb2xvciwgIzMzMyk7XFxuJHRvb2x0aXAtY29sb3I6ICAgICAgICAgdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItdG9vbHRpcC1jb2xvciwgI2ZmZik7XFxuXFxuLy8gY2FsZW5kYXJcXG5cXG4kY2FsZW5kYXItYmctY29sb3I6ICAgICAjZmZmO1xcblxcbi8vIGNhbGVuZGFyIGNlbGxzXFxuXFxuJGNlbGwtd2lkdGg6ICAgICAgICAgICAgMzBweDtcXG5cXG4kY2VsbC1jb2xvcjogICAgICAgICAgICAjNDQ0NDQ0O1xcblxcbiRkaXNhYmxlZC1iZy1jb2xvcjogICAgIHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWRpc2FibGVkLWJnLWNvbG9yLCAjZjBmMGYwKTtcXG4kZGlzYWJsZWQtY29sb3I6ICAgICAgICB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1kaXNhYmxlZC1jb2xvciwgI2JmYmZiZik7XFxuXFxuJGhpZ2hsaWdodGVkLWJnLWNvbG9yOiAgdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsIGxpZ2h0ZW4oIzU3ODRGNSwgMjAlKSk7XFxuJGhpZ2hsaWdodGVkLWNvbG9yOiAgICAgdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtY29sb3IsIGRhcmtlbigkY2VsbC1jb2xvciwgNSUpKTtcXG5cXG4kaW52YWxpZC1iZy1jb2xvcjogICAgICB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCBkYXJrZW4oI2YwZjBmMCwgIDUlKSk7XFxuJGludmFsaWQtY29sb3I6ICAgICAgICAgdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1jb2xvciwgZGFya2VuKCNiZmJmYmYsIDUlKSk7XFxuXFxuLy8gY2FsZW5kYXIgdGFibGVcXG5cXG4kaW5mby1jb2xvcjogICAgICAgICAgICByZ2JhKDYwLCA2MCwgNjAsIDAuNSk7XFxuXFxuJHRoLWJvcmRlci1ib3R0b206ICAgICAgI2NiY2JjYjtcXG4kdGgtY29sb3I6ICAgICAgICAgICAgICAjYWFhYWFhO1xcblxcbi8vIGZvcm1cXG5cXG4kYnRuLWZpbGw6ICAgICAgICAgICAgICAkY2VsbC1jb2xvcjtcXG4kYnRuLWJvcmRlcjogICAgICAgICAgICAkdGgtYm9yZGVyLWJvdHRvbTtcXG4kYnRuLWZpbGwtaG92ZXI6ICAgICAgICAjMzg5NWQ5O1xcblwiLFwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIGRyb3Bkb3duXFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLmNhbGVuZGFyLmRyb3BCYXNpYyB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBkaXNwbGF5OiBub25lO1xcbiAgbWF4LXdpZHRoOiAxMDAlO1xcbiAgYm94LXNoYWRvdzogMXB4IDVweCA5cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNlMGUwZTA7XFxuICBiYWNrZ3JvdW5kOiAjZmZmO1xcbiAgbWFyZ2luOiAwO1xcbiAgcGFkZGluZzogMWVtO1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICBsaW5lLWhlaWdodDogMS41ZW07XFxuICB6LWluZGV4OiAxMDtcXG5cXG4gICYudmlzaWJsZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgfVxcblxcbiAgLmNhcHRpb24ge1xcbiAgICBtYXJnaW4tYm90dG9tOiAuN2VtO1xcbiAgfVxcblxcbiAgLmZvcndhcmQsXFxuICAuYmFjayB7XFxuICAgIHRvcDogMWVtO1xcbiAgICBsZWZ0OiAxZW07XFxuICB9XFxuXFxuICAuZm9yd2FyZCB7XFxuICAgIGxlZnQ6IGF1dG87XFxuICAgIHJpZ2h0OiAxZW07XFxuICB9XFxufVxcblwiLFwiLmNhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSB7XFxuICAuY2VsbCB7XFxuICAgICY6Zmlyc3QtY2hpbGQge1xcbiAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDtcXG4gICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7XFxuICAgIH1cXG5cXG4gICAgJjpsYXN0LWNoaWxkIHtcXG4gICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4O1xcbiAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7XFxuICAgIH1cXG5cXG4gICAgJjo6YmVmb3JlLFxcbiAgICAmOjphZnRlciB7XFxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICAgIG1hcmdpbjogMDtcXG4gICAgICBjb250ZW50OiAnJztcXG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2tldygtMzBkZWcpO1xcbiAgICAgIC1tcy10cmFuc2Zvcm06IHNrZXcoLTMwZGVnKTtcXG4gICAgICB0cmFuc2Zvcm06IHNrZXcoLTMwZGVnKTtcXG4gICAgICBib3JkZXItcmFkaXVzOiA2cHg7XFxuICAgICAgei1pbmRleDogMDtcXG5cXG4gICAgICAvLyBmaXggYmx1cnJ5IHNrZXdcXG4gICAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDJweCk7XFxuICAgICAgdG9wOiAtMXB4O1xcbiAgICB9XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgbGVmdDogLTU1JTtcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgbGVmdDogNTUlO1xcbiAgICB9XFxuICB9XFxufVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBzZWxlY3Rpb25zLCBsZWZ0IC0gY2VudGVyIC0gcmlnaHRcXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGRpc2FibGVkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLmNhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSB7XFxuICBbZGF0YS1kaXNhYmxlZD1cXFwibGVmdFxcXCJdOjphZnRlciB7XFxuICAgIGJhY2tncm91bmQ6ICRkaXNhYmxlZC1iZy1jb2xvcjtcXG4gIH1cXG5cXG4gIFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICAgIGJhY2tncm91bmQ6ICRkaXNhYmxlZC1iZy1jb2xvcjtcXG4gICAgY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcXG5cXG4gICAgJjo6YmVmb3JlLFxcbiAgICAmOjphZnRlciB7XFxuICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgICBiYWNrZ3JvdW5kOiAkZGlzYWJsZWQtYmctY29sb3I7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFtkYXRhLWRpc2FibGVkPVxcXCJyaWdodFxcXCJdOjpiZWZvcmUge1xcbiAgICBiYWNrZ3JvdW5kOiAkZGlzYWJsZWQtYmctY29sb3I7XFxuICB9XFxufVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgaGlnaGxpZ2h0ZWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIHtcXG4gIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJsZWZ0XFxcIl06OmFmdGVyIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gIH1cXG5cXG4gIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gICAgY29sb3I6ICRoaWdobGlnaHRlZC1jb2xvcjtcXG5cXG4gICAgJjo6YmVmb3JlLFxcbiAgICAmOjphZnRlciB7XFxuICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJyaWdodFxcXCJdOjpiZWZvcmUge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGludmFsaWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIHtcXG4gIFtkYXRhLWludmFsaWQ9XFxcImxlZnRcXFwiXSB7XFxuICAgIGJhY2tncm91bmQ6IG5vbmU7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgIH1cXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIGJhY2tncm91bmQ6ICRpbnZhbGlkLWJnLWNvbG9yO1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1pbnZhbGlkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICAgIGJhY2tncm91bmQ6ICRpbnZhbGlkLWJnLWNvbG9yO1xcbiAgICBjb2xvcjogJGludmFsaWQtY29sb3I7XFxuICBcXG4gICAgJjo6YmVmb3JlLFxcbiAgICAmOjphZnRlciB7XFxuICAgICAgZGlzcGxheTogbm9uZTtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaW52YWxpZC1iZy1jb2xvcjtcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtaW52YWxpZD1cXFwicmlnaHRcXFwiXSB7XFxuICAgIGJhY2tncm91bmQ6IG5vbmU7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgYmFja2dyb3VuZDogJGludmFsaWQtYmctY29sb3I7XFxuICAgIH1cXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICB9XFxuICB9XFxufVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbCBob3ZlciBkaXJlY3RcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uZGlyZWN0W2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSB7XFxuICAvLyBjZWxsIGhvdmVyZWQgd2hlbiBzZWxlY3RpbmcgbGVmdCB0byByaWdodFxcbiAgW2RhdGEtaG92ZXJlZF0ge1xcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFtkYXRhLWhvdmVyZWQtb2Zmc2V0XSB7XFxuICAgIGJhY2tncm91bmQ6IG5vbmU7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGwgaG92ZXIgcmV2ZXJzZWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4ucmV2ZXJzZWRbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIHtcXG4gIC8vIHdoZW4gc2VsZWN0aW5nIHJpZ2h0IHRvIGxlZnRcXG4gIFtkYXRhLWhvdmVyZWRdIHtcXG4gICAgYmFja2dyb3VuZDogbm9uZTtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgIH1cXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1ob3ZlcmVkLW9mZnNldF0ge1xcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgIH1cXG4gIH1cXG59XFxuXCIsXCIkY2VsbC1ib3JkZXItcmFkaXVzOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJvcmRlci1yYWRpdXMsIDZweCk7XFxuJGNlbGwtYmctb3BhY2l0eTogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1iZy1vcGFjaXR5LCAuNSk7XFxuXFxuLmNhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0ge1xcbiAgLmNlbGwge1xcbiAgICAmOjpiZWZvcmUsXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgd2lkdGg6IDEwMCU7XFxuICAgICAgaGVpZ2h0OiAxMDAlO1xcbiAgICAgIHRvcDogMDtcXG4gICAgICBtYXJnaW46IDA7XFxuICAgICAgY29udGVudDogJyc7XFxuICAgICAgei1pbmRleDogMDtcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgc2VsZWN0aW9ucywgbGVmdCAtIGNlbnRlciAtIHJpZ2h0XFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBkaXNhYmxlZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi5jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIHtcXG4gIC8vIFtkYXRhLWRpc2FibGVkPVxcXCJsZWZ0XFxcIl0ge1xcbiAgLy8gICBjb2xvcjogJGRpc2FibGVkLWNvbG9yO1xcbiAgLy8gfVxcblxcbiAgW2RhdGEtZGlzYWJsZWQ9XFxcImNlbnRlclxcXCJdIHtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XFxuICAgIGNvbG9yOiAkZGlzYWJsZWQtY29sb3I7XFxuICB9XFxufVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgaGlnaGxpZ2h0ZWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSB7XFxuICBbZGF0YS1oaWdobGlnaHRlZD1cXFwibGVmdFxcXCJdIHtcXG4gICAgY29sb3I6ICRoaWdobGlnaHRlZC1jb2xvcjtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgICAgb3BhY2l0eTogJGNlbGwtYmctb3BhY2l0eTtcXG4gICAgICB3aWR0aDogNTAlO1xcbiAgICAgIGxlZnQ6IDUwJTtcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICAgIGJvcmRlci1yYWRpdXM6ICRjZWxsLWJvcmRlci1yYWRpdXM7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICAgIGNvbG9yOiAkaGlnaGxpZ2h0ZWQtY29sb3I7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICAgIG9wYWNpdHk6ICRjZWxsLWJnLW9wYWNpdHk7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJyaWdodFxcXCJdIHtcXG4gICAgY29sb3I6ICRoaWdobGlnaHRlZC1jb2xvcjtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgICAgb3BhY2l0eTogJGNlbGwtYmctb3BhY2l0eTtcXG4gICAgICB3aWR0aDogNTAlO1xcbiAgICAgIHJpZ2h0OiA1MCU7XFxuICAgIH1cXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gICAgICBib3JkZXItcmFkaXVzOiAkY2VsbC1ib3JkZXItcmFkaXVzO1xcbiAgICB9XFxuICB9XFxufVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgaW52YWxpZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi5jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIHtcXG4gIFtkYXRhLWludmFsaWQ9XFxcImxlZnRcXFwiXSB7XFxuICAgIGNvbG9yOiAkaW52YWxpZC1jb2xvcjtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaW52YWxpZC1iZy1jb2xvcjtcXG4gICAgICBvcGFjaXR5OiAkY2VsbC1iZy1vcGFjaXR5O1xcbiAgICAgIHdpZHRoOiA1MCU7XFxuICAgICAgbGVmdDogNTAlO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaW52YWxpZC1iZy1jb2xvcjtcXG4gICAgICBib3JkZXItcmFkaXVzOiAkY2VsbC1ib3JkZXItcmFkaXVzO1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1pbnZhbGlkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICAgIGNvbG9yOiAkaW52YWxpZC1jb2xvcjtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaW52YWxpZC1iZy1jb2xvcjtcXG4gICAgICBvcGFjaXR5OiAkY2VsbC1iZy1vcGFjaXR5O1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1pbnZhbGlkPVxcXCJyaWdodFxcXCJdIHtcXG4gICAgY29sb3I6ICRpbnZhbGlkLWNvbG9yO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGJhY2tncm91bmQ6ICRpbnZhbGlkLWJnLWNvbG9yO1xcbiAgICAgIG9wYWNpdHk6ICRjZWxsLWJnLW9wYWNpdHk7XFxuICAgICAgd2lkdGg6IDUwJTtcXG4gICAgICByaWdodDogNTAlO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaW52YWxpZC1iZy1jb2xvcjtcXG4gICAgICBib3JkZXItcmFkaXVzOiAkY2VsbC1ib3JkZXItcmFkaXVzO1xcbiAgICB9XFxuICB9XFxufVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbCBob3Zlclxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi5jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIHtcXG4gIFtkYXRhLWhvdmVyZWRdOm5vdChbZGF0YS1kaXNhYmxlZD1cXFwiY2VudGVyXFxcIl0pIHtcXG4gICAgY29sb3I6ICRoaWdobGlnaHRlZC1jb2xvcjtcXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gICAgICBib3JkZXItcmFkaXVzOiAkY2VsbC1ib3JkZXItcmFkaXVzO1xcbiAgICB9XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ubG9jYWxzID0ge1xuXHRcImNhbGVuZGFyXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJcIixcblx0XCJib29raW5nc3luYy1zcGluXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYm9va2luZ3N5bmMtc3BpblwiLFxuXHRcImxvYWRpbmdcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19sb2FkaW5nXCIsXG5cdFwiZHJvcEJhc2ljXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZHJvcEJhc2ljXCIsXG5cdFwidmlzaWJsZVwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Zpc2libGVcIixcblx0XCJjYXB0aW9uXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FwdGlvblwiLFxuXHRcImZvcndhcmRcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkXCIsXG5cdFwiYmFja1wiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2JhY2tcIixcblx0XCJjZWxsXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2VsbFwiLFxuXHRcImRpcmVjdFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2RpcmVjdFwiLFxuXHRcInJldmVyc2VkXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fcmV2ZXJzZWRcIixcblx0XCJ0b29sdGlwXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcFwiLFxuXHRcInRvb2x0aXBBcnJvd1wiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBBcnJvd1wiLFxuXHRcIm1vbnRoc1dyYXBwZXJcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19tb250aHNXcmFwcGVyXCIsXG5cdFwibUNlbGxcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19tQ2VsbFwiLFxuXHRcIm1vbnRoXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbW9udGhcIixcblx0XCJ0YWJsZUhlYWRlclwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3RhYmxlSGVhZGVyXCIsXG5cdFwiYm9keVwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2JvZHlcIixcblx0XCJ0aFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3RoXCIsXG5cdFwidG9kYXlcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b2RheVwiLFxuXHRcImNudFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NudFwiLFxuXHRcImluZm9cIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19pbmZvXCIsXG5cdFwiZm9jdXNcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb2N1c1wiLFxuXHRcImRpc2FibGVkXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZGlzYWJsZWRcIixcblx0XCJzZWxlY3RlZFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3NlbGVjdGVkXCIsXG5cdFwic2VsZWN0aW5nUmV2ZXJzZWRcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19zZWxlY3RpbmdSZXZlcnNlZFwiLFxuXHRcInNlbGVjdGluZ0RpcmVjdFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3NlbGVjdGluZ0RpcmVjdFwiLFxuXHRcImFjdGlvbnNFbmFibGVkXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYWN0aW9uc0VuYWJsZWRcIixcblx0XCJoaWdobGlnaHRlZFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2hpZ2hsaWdodGVkXCIsXG5cdFwiaW52YWxpZFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ludmFsaWRcIlxufTtcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRpdiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHNwYW4sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhcHBsZXQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBvYmplY3QsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBpZnJhbWUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoMSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGgyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDMsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoNCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGg1LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDYsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBwLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYmxvY2txdW90ZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHByZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGEsXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGFiYnIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhY3JvbnltLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYWRkcmVzcywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGJpZywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGNpdGUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjb2RlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGVsLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGZuLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZW0sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBpbWcsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBpbnMsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBrYmQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBxLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgcywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHNhbXAsXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHNtYWxsLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc3RyaWtlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc3Ryb25nLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc3ViLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc3VwLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdHQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB2YXIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBiLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGksIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjZW50ZXIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkbCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGR0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBvbCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHVsLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbGksXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZpZWxkc2V0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZm9ybSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRpdi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19mb3JtLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbGFiZWwsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBsZWdlbmQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0YWJsZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGNhcHRpb24sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0Ym9keSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRmb290LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGhlYWQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0cixcXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGgsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0ZCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGFydGljbGUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhc2lkZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGNhbnZhcywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRldGFpbHMsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBmaWdjYXB0aW9uLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZmlndXJlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZm9vdGVyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaGVhZGVyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaGdyb3VwLFxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBtZW51LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbmF2LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc2VjdGlvbiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHN1bW1hcnksIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0aW1lLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbWFyaywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGF1ZGlvLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdmlkZW8sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBidXR0b24sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0ZXh0YXJlYSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGlucHV0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX2J1dHRvbiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19sZWdlbmQge1xcbiAgZm9udC1mYW1pbHk6IFxcXCJPcGVuIHNhbnNcXFwiLCBcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xcbiAgZm9udC1zaXplLWFkanVzdDogbm9uZTtcXG4gIGZvbnQtc2l6ZTogMTAwJTtcXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gIGxldHRlci1zcGFjaW5nOiBub3JtYWw7XFxuICBmb250LXN0cmV0Y2g6IG5vcm1hbDtcXG4gIGZvbnQtdmFyaWFudDogbm9ybWFsO1xcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcXG4gIGZvbnQ6IG5vcm1hbCBub3JtYWwgMTAwJSBcXFwiT3BlbiBzYW5zXFxcIiwgXFxcIkhlbHZldGljYSBOZXVlXFxcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcXG4gIHRleHQtYWxpZ246IGxlZnQ7XFxuICAtbW96LXRleHQtYWxpZ24tbGFzdDogaW5pdGlhbDtcXG4gIHRleHQtYWxpZ24tbGFzdDogaW5pdGlhbDtcXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gIC13ZWJraXQtdGV4dC1lbXBoYXNpczogbm9uZTtcXG4gIHRleHQtZW1waGFzaXM6IG5vbmU7XFxuICB0ZXh0LWhlaWdodDogYXV0bztcXG4gIHRleHQtaW5kZW50OiAwO1xcbiAgdGV4dC1qdXN0aWZ5OiBhdXRvO1xcbiAgdGV4dC1vdXRsaW5lOiBub25lO1xcbiAgdGV4dC1zaGFkb3c6IG5vbmU7XFxuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcXG4gIHRleHQtd3JhcDogbm9ybWFsO1xcbiAgYWxpZ25tZW50LWFkanVzdDogYXV0bztcXG4gIGFsaWdubWVudC1iYXNlbGluZTogYmFzZWxpbmU7XFxuICAtd2Via2l0LWFuaW1hdGlvbjogbm9uZSAwIGVhc2UgMCAxIG5vcm1hbDtcXG4gIGFuaW1hdGlvbjogbm9uZSAwIGVhc2UgMCAxIG5vcm1hbDtcXG4gIC13ZWJraXQtYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7XFxuICBhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZztcXG4gIGFwcGVhcmFuY2U6IG5vcm1hbDtcXG4gIGF6aW11dGg6IGNlbnRlcjtcXG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IHZpc2libGU7XFxuICBiYWNrZ3JvdW5kOiBub25lIDAgMCBhdXRvIHJlcGVhdCBzY3JvbGwgcGFkZGluZy1ib3ggdHJhbnNwYXJlbnQ7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XFxuICBiYXNlbGluZS1zaGlmdDogYmFzZWxpbmU7XFxuICBiaW5kaW5nOiBub25lO1xcbiAgYmxlZWQ6IDZwdDtcXG4gIGJvb2ttYXJrLWxhYmVsOiBjb250ZW50KCk7XFxuICBib29rbWFyay1sZXZlbDogbm9uZTtcXG4gIGJvb2ttYXJrLXN0YXRlOiBvcGVuO1xcbiAgYm9va21hcmstdGFyZ2V0OiBub25lO1xcbiAgYm9yZGVyOiAwIG5vbmUgdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItcmFkaXVzOiAwO1xcbiAgYm90dG9tOiBhdXRvO1xcbiAgYm94LWFsaWduOiBzdHJldGNoO1xcbiAgLXdlYmtpdC1ib3gtZGVjb3JhdGlvbi1icmVhazogc2xpY2U7XFxuICBib3gtZGVjb3JhdGlvbi1icmVhazogc2xpY2U7XFxuICBib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxuICBmbGV4OiAwLjA7XFxuICBmbGV4LWdyb3VwOiAxO1xcbiAgYm94LWxpbmVzOiBzaW5nbGU7XFxuICBib3gtb3JkaW5hbC1ncm91cDogMTtcXG4gIGJveC1vcmllbnQ6IGlubGluZS1heGlzO1xcbiAgYm94LXBhY2s6IHN0YXJ0O1xcbiAgYm94LXNoYWRvdzogbm9uZTtcXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xcbiAgLXdlYmtpdC1icmVhay1hZnRlcjogYXV0bztcXG4gIC1tb3otYnJlYWstYWZ0ZXI6IGF1dG87XFxuICBicmVhay1hZnRlcjogYXV0bztcXG4gIC13ZWJraXQtYnJlYWstYmVmb3JlOiBhdXRvO1xcbiAgLW1vei1icmVhay1iZWZvcmU6IGF1dG87XFxuICBicmVhay1iZWZvcmU6IGF1dG87XFxuICAtd2Via2l0LWNvbHVtbi1icmVhay1pbnNpZGU6IGF1dG87XFxuICBwYWdlLWJyZWFrLWluc2lkZTogYXV0bztcXG4gIGJyZWFrLWluc2lkZTogYXV0bztcXG4gIGNhcHRpb24tc2lkZTogdG9wO1xcbiAgY2xlYXI6IG5vbmU7XFxuICBjbGlwOiBhdXRvO1xcbiAgY29sb3I6IGluaGVyaXQ7XFxuICBjb2xvci1wcm9maWxlOiBhdXRvO1xcbiAgLXdlYmtpdC1jb2x1bW4tY291bnQ6IGF1dG87XFxuICAtbW96LWNvbHVtbi1jb3VudDogYXV0bztcXG4gIGNvbHVtbi1jb3VudDogYXV0bztcXG4gIC13ZWJraXQtY29sdW1uLWZpbGw6IGJhbGFuY2U7XFxuICAtbW96LWNvbHVtbi1maWxsOiBiYWxhbmNlO1xcbiAgY29sdW1uLWZpbGw6IGJhbGFuY2U7XFxuICAtd2Via2l0LWNvbHVtbi1nYXA6IG5vcm1hbDtcXG4gIC1tb3otY29sdW1uLWdhcDogbm9ybWFsO1xcbiAgY29sdW1uLWdhcDogbm9ybWFsO1xcbiAgLXdlYmtpdC1jb2x1bW4tcnVsZTogbWVkaXVtIG1lZGl1bSAjMWYxZjFmO1xcbiAgLW1vei1jb2x1bW4tcnVsZTogbWVkaXVtIG1lZGl1bSAjMWYxZjFmO1xcbiAgY29sdW1uLXJ1bGU6IG1lZGl1bSBtZWRpdW0gIzFmMWYxZjtcXG4gIC13ZWJraXQtY29sdW1uLXNwYW46IDE7XFxuICAtbW96LWNvbHVtbi1zcGFuOiAxO1xcbiAgY29sdW1uLXNwYW46IDE7XFxuICAtd2Via2l0LWNvbHVtbi13aWR0aDogYXV0bztcXG4gIC1tb3otY29sdW1uLXdpZHRoOiBhdXRvO1xcbiAgY29sdW1uLXdpZHRoOiBhdXRvO1xcbiAgLXdlYmtpdC1jb2x1bW5zOiBhdXRvIGF1dG87XFxuICAtbW96LWNvbHVtbnM6IGF1dG8gYXV0bztcXG4gIGNvbHVtbnM6IGF1dG8gYXV0bztcXG4gIGNvbnRlbnQ6IG5vcm1hbDtcXG4gIGNvdW50ZXItaW5jcmVtZW50OiBub25lO1xcbiAgY291bnRlci1yZXNldDogbm9uZTtcXG4gIGNyb3A6IGF1dG87XFxuICBjdXJzb3I6IGF1dG87XFxuICBkaXJlY3Rpb246IGx0cjtcXG4gIGRpc3BsYXk6IGlubGluZTtcXG4gIGRvbWluYW50LWJhc2VsaW5lOiBhdXRvO1xcbiAgZHJvcC1pbml0aWFsLWFmdGVyLWFkanVzdDogdGV4dC1hZnRlci1lZGdlO1xcbiAgZHJvcC1pbml0aWFsLWFmdGVyLWFsaWduOiBiYXNlbGluZTtcXG4gIGRyb3AtaW5pdGlhbC1iZWZvcmUtYWRqdXN0OiB0ZXh0LWJlZm9yZS1lZGdlO1xcbiAgZHJvcC1pbml0aWFsLWJlZm9yZS1hbGlnbjogY2Fwcy1oZWlnaHQ7XFxuICBkcm9wLWluaXRpYWwtc2l6ZTogYXV0bztcXG4gIGRyb3AtaW5pdGlhbC12YWx1ZTogaW5pdGlhbDtcXG4gIGVsZXZhdGlvbjogbGV2ZWw7XFxuICBlbXB0eS1jZWxsczogc2hvdztcXG4gIGZpdDogZmlsbDtcXG4gIGZpdC1wb3NpdGlvbjogMCUgMCU7XFxuICBmbG9hdDogbm9uZTtcXG4gIGZsb2F0LW9mZnNldDogMCAwO1xcbiAgZ3JpZC1jb2x1bW5zOiBub25lO1xcbiAgZ3JpZC1yb3dzOiBub25lO1xcbiAgaGFuZ2luZy1wdW5jdHVhdGlvbjogbm9uZTtcXG4gIGhlaWdodDogYXV0bztcXG4gIGh5cGhlbmF0ZS1hZnRlcjogYXV0bztcXG4gIGh5cGhlbmF0ZS1iZWZvcmU6IGF1dG87XFxuICBoeXBoZW5hdGUtY2hhcmFjdGVyOiBhdXRvO1xcbiAgaHlwaGVuYXRlLWxpbmVzOiBuby1saW1pdDtcXG4gIGh5cGhlbmF0ZS1yZXNvdXJjZTogbm9uZTtcXG4gIC13ZWJraXQtaHlwaGVuczogbWFudWFsO1xcbiAgLW1vei1oeXBoZW5zOiBtYW51YWw7XFxuICAtbXMtaHlwaGVuczogbWFudWFsO1xcbiAgaHlwaGVuczogbWFudWFsO1xcbiAgaWNvbjogYXV0bztcXG4gIGltYWdlLW9yaWVudGF0aW9uOiBhdXRvO1xcbiAgaW1hZ2UtcmVuZGVyaW5nOiBhdXRvO1xcbiAgaW1hZ2UtcmVzb2x1dGlvbjogbm9ybWFsO1xcbiAgaW5saW5lLWJveC1hbGlnbjogbGFzdDtcXG4gIGxlZnQ6IGF1dG87XFxuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcXG4gIGxpbmUtc3RhY2tpbmc6IGlubGluZS1saW5lLWhlaWdodCBleGNsdWRlLXJ1YnkgY29uc2lkZXItc2hpZnRzO1xcbiAgbGlzdC1zdHlsZTogZGlzYyBvdXRzaWRlIG5vbmU7XFxuICBtYXJnaW46IDA7XFxuICBtYXJrczogbm9uZTtcXG4gIG1hcnF1ZWUtZGlyZWN0aW9uOiBmb3J3YXJkO1xcbiAgbWFycXVlZS1sb29wOiAxO1xcbiAgbWFycXVlZS1wbGF5LWNvdW50OiAxO1xcbiAgbWFycXVlZS1zcGVlZDogbm9ybWFsO1xcbiAgbWFycXVlZS1zdHlsZTogc2Nyb2xsO1xcbiAgbWF4LWhlaWdodDogbm9uZTtcXG4gIG1heC13aWR0aDogbm9uZTtcXG4gIG1pbi1oZWlnaHQ6IDA7XFxuICBtaW4td2lkdGg6IDA7XFxuICBtb3ZlLXRvOiBub3JtYWw7XFxuICBuYXYtZG93bjogYXV0bztcXG4gIG5hdi1pbmRleDogYXV0bztcXG4gIG5hdi1sZWZ0OiBhdXRvO1xcbiAgbmF2LXJpZ2h0OiBhdXRvO1xcbiAgbmF2LXVwOiBhdXRvO1xcbiAgb3BhY2l0eTogMTtcXG4gIG9ycGhhbnM6IDI7XFxuICBvdXRsaW5lOiBpbnZlcnQgbm9uZSBtZWRpdW07XFxuICBvdXRsaW5lLW9mZnNldDogMDtcXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xcbiAgb3ZlcmZsb3ctc3R5bGU6IGF1dG87XFxuICBwYWRkaW5nOiAwO1xcbiAgcGFnZTogYXV0bztcXG4gIHBhZ2UtYnJlYWstYWZ0ZXI6IGF1dG87XFxuICBwYWdlLWJyZWFrLWJlZm9yZTogYXV0bztcXG4gIHBhZ2UtYnJlYWstaW5zaWRlOiBhdXRvO1xcbiAgcGFnZS1wb2xpY3k6IHN0YXJ0O1xcbiAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogbm9uZTtcXG4gIHBlcnNwZWN0aXZlOiBub25lO1xcbiAgLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW46IDUwJSA1MCU7XFxuICBwZXJzcGVjdGl2ZS1vcmlnaW46IDUwJSA1MCU7XFxuICBwb3NpdGlvbjogc3RhdGljO1xcbiAgcHJlc2VudGF0aW9uLWxldmVsOiAwO1xcbiAgcHVuY3R1YXRpb24tdHJpbTogbm9uZTtcXG4gIHF1b3Rlczogbm9uZTtcXG4gIHJlbmRlcmluZy1pbnRlbnQ6IGF1dG87XFxuICByZXNpemU6IG5vbmU7XFxuICByaWdodDogYXV0bztcXG4gIHJvdGF0aW9uOiAwO1xcbiAgcm90YXRpb24tcG9pbnQ6IDUwJSA1MCU7XFxuICBydWJ5LWFsaWduOiBhdXRvO1xcbiAgcnVieS1vdmVyaGFuZzogbm9uZTtcXG4gIHJ1YnktcG9zaXRpb246IGJlZm9yZTtcXG4gIHJ1Ynktc3Bhbjogbm9uZTtcXG4gIHNpemU6IGF1dG87XFxuICBzdHJpbmctc2V0OiBub25lO1xcbiAgdGFibGUtbGF5b3V0OiBhdXRvO1xcbiAgdG9wOiBhdXRvO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7XFxuICAtbXMtdHJhbnNmb3JtOiBub25lO1xcbiAgdHJhbnNmb3JtOiBub25lO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlIDA7XFxuICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJSAwO1xcbiAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJSAwO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IGZsYXQ7XFxuICB0cmFuc2Zvcm0tc3R5bGU6IGZsYXQ7XFxuICB0cmFuc2l0aW9uOiBhbGwgMCBlYXNlIDA7XFxuICB1bmljb2RlLWJpZGk6IG5vcm1hbDtcXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XFxuICB3aGl0ZS1zcGFjZS1jb2xsYXBzZTogY29sbGFwc2U7XFxuICB3aWRvd3M6IDI7XFxuICB3aWR0aDogYXV0bztcXG4gIHdvcmQtYnJlYWs6IG5vcm1hbDtcXG4gIHdvcmQtc3BhY2luZzogbm9ybWFsO1xcbiAgd29yZC13cmFwOiBub3JtYWw7XFxuICB6LWluZGV4OiBhdXRvO1xcbiAgdGV4dC1hbGlnbjogc3RhcnQ7XFxuICAvKiBBbmQgZGlzYWJsZSBNUyBncmFkaWVudHMgKi9cXG4gIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGVuYWJsZWQ9ZmFsc2UpO1xcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XFxuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGFkZHJlc3MsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBibG9ja3F1b3RlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkaXYsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkbCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGR0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZmllbGRzZXQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBmb3JtLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGl2LkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX2Zvcm0sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBmcmFtZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZyYW1lc2V0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDEsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoMiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGgzLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoNSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGg2LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbm9mcmFtZXMsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBvbCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHAsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB1bCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGNlbnRlciwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRpciwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGhyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbWVudSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHByZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGFydGljbGUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhc2lkZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGNhbnZhcywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRldGFpbHMsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBmaWdjYXB0aW9uLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZmlndXJlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZm9vdGVyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaGVhZGVyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaGdyb3VwLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbWVudSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IG5hdiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHNlY3Rpb24sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzdW1tYXJ5IHtcXG4gIGRpc3BsYXk6IGJsb2NrOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGxpIHtcXG4gIGRpc3BsYXk6IGxpc3QtaXRlbTsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0YWJsZSB7XFxuICBkaXNwbGF5OiB0YWJsZTsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0ciB7XFxuICBkaXNwbGF5OiB0YWJsZS1yb3c7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGhlYWQge1xcbiAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRib2R5IHtcXG4gIGRpc3BsYXk6IHRhYmxlLXJvdy1ncm91cDsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0Zm9vdCB7XFxuICBkaXNwbGF5OiB0YWJsZS1mb290ZXItZ3JvdXA7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgY29sIHtcXG4gIGRpc3BsYXk6IHRhYmxlLWNvbHVtbjsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjb2xncm91cCB7XFxuICBkaXNwbGF5OiB0YWJsZS1jb2x1bW4tZ3JvdXA7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0aCB7XFxuICBkaXNwbGF5OiB0YWJsZS1jZWxsOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGNhcHRpb24ge1xcbiAgZGlzcGxheTogdGFibGUtY2FwdGlvbjsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBpbnB1dCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHNlbGVjdCB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHN0cm9uZyB7XFxuICBmb250LXdlaWdodDogYm9sZDsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBiID4gaSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHN0cm9uZyA+IGksIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBiID4gZW0sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzdHJvbmcgPiBlbSB7XFxuICBmb250LXdlaWdodDogYm9sZDtcXG4gIGZvbnQtc3R5bGU6IGl0YWxpYzsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBpID4gYiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGkgPiBzdHJvbmcge1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICBmb250LXN0eWxlOiBpdGFsaWM7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZW0gPiBiLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZW0gPiBzdHJvbmcge1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICBmb250LXN0eWxlOiBpdGFsaWM7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGV4dGFyZWEsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBpbnB1dCB7XFxuICBjdXJzb3I6IHRleHQ7IH1cXG5cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9zdHlsZXMvcmVzZXQuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTs7Ozs7O0VBT0ksd0VBQXdFO0VBQ3hFLHNCQUFzQjtFQUN0QixlQUFlO0VBQ2Ysa0JBQWtCO0VBQ2xCLHNCQUFzQjtFQUN0QixvQkFBb0I7RUFDcEIsb0JBQW9CO0VBQ3BCLG1CQUFtQjtFQUNuQixvRkFBb0Y7RUFDcEYsZ0JBQWdCO0VBQ2hCLDZCQUE2QjtFQUM3Qix3QkFBd0I7RUFDeEIscUJBQXFCO0VBQ3JCLDJCQUEyQjtFQUMzQixtQkFBbUI7RUFDbkIsaUJBQWlCO0VBQ2pCLGNBQWM7RUFDZCxrQkFBa0I7RUFDbEIsa0JBQWtCO0VBQ2xCLGlCQUFpQjtFQUNqQixvQkFBb0I7RUFDcEIsaUJBQWlCO0VBQ2pCLHNCQUFzQjtFQUN0Qiw0QkFBNEI7RUFDNUIseUNBQXlDO0VBQ3pDLGlDQUFpQztFQUNqQyxxQ0FBcUM7RUFDckMsNkJBQTZCO0VBQzdCLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2Ysb0NBQW9DO0VBQ3BDLDRCQUE0QjtFQUM1QiwrREFBK0Q7RUFDL0QsNkJBQTZCO0VBQzdCLHNCQUFzQjtFQUN0Qix3QkFBd0I7RUFDeEIsYUFBYTtFQUNiLFVBQVU7RUFDVix5QkFBeUI7RUFDekIsb0JBQW9CO0VBQ3BCLG9CQUFvQjtFQUNwQixxQkFBcUI7RUFDckIsMEJBQTBCO0VBQzFCLGdCQUFnQjtFQUNoQixZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLG1DQUFtQztFQUNuQywyQkFBMkI7RUFDM0IscUJBQXFCO0VBQ3JCLFNBQVM7RUFDVCxhQUFhO0VBQ2IsaUJBQWlCO0VBQ2pCLG9CQUFvQjtFQUNwQix1QkFBdUI7RUFDdkIsZUFBZTtFQUNmLGdCQUFnQjtFQUNoQix1QkFBdUI7RUFDdkIseUJBQXlCO0VBQ3pCLHNCQUFzQjtFQUN0QixpQkFBaUI7RUFDakIsMEJBQTBCO0VBQzFCLHVCQUF1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QXpObEI7RUE0Tkksa0JBQWtCLEVBQUE7O0FBNU50QjtFQStOSSxjQUFjLEVBQUE7O0FBL05sQjtFQWtPSSxrQkFBa0IsRUFBQTs7QUFsT3RCO0VBcU9JLDJCQUEyQixFQUFBOztBQXJPL0I7RUF3T0ksd0JBQXdCLEVBQUE7O0FBeE81QjtFQTJPSSwyQkFBMkIsRUFBQTs7QUEzTy9CO0VBOE9JLHFCQUFxQixFQUFBOztBQTlPekI7RUFpUEksMkJBQTJCLEVBQUE7O0FBalAvQjtFQW9QSSxtQkFBbUIsRUFBQTs7QUFwUHZCO0VBdVBJLHNCQUFzQixFQUFBOztBQXZQMUI7RUEwUEkscUJBQXFCLEVBQUE7O0FBMVB6QjtFQTZQSSxpQkFBaUIsRUFBQTs7QUE3UHJCO0VBZ1FJLGlCQUFpQjtFQUNqQixrQkFBa0IsRUFBQTs7QUFqUXRCO0VBcVFNLGlCQUFpQjtFQUNqQixrQkFBa0IsRUFBQTs7QUF0UXhCO0VBMlFNLGlCQUFpQjtFQUNqQixrQkFBa0IsRUFBQTs7QUE1UXhCO0VBZ1JJLFlBQVksRUFBQVwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIucmVzZXQge1xcclxcblxcdGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLCBhLFxcclxcblxcdGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSwgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxcclxcblxcdHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsIGIsIHUsIGksIGNlbnRlciwgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcXHJcXG5cXHRmaWVsZHNldCwgZm9ybSwgZGl2LmZvcm0sIGxhYmVsLCBsZWdlbmQsIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0cixcXHJcXG5cXHR0aCwgdGQsIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCxcXHJcXG5cXHRtZW51LCBuYXYsIHNlY3Rpb24sIHN1bW1hcnksIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbywgYnV0dG9uLCB0ZXh0YXJlYSwgaW5wdXQsIC5idXR0b24sIC5sZWdlbmQge1xcclxcbiAgICBmb250LWZhbWlseTogXFxcIk9wZW4gc2Fuc1xcXCIsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XFxyXFxuICAgIGZvbnQtc2l6ZS1hZGp1c3Q6IG5vbmU7XFxyXFxuICAgIGZvbnQtc2l6ZTogMTAwJTtcXHJcXG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xcclxcbiAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xcclxcbiAgICBmb250LXN0cmV0Y2g6IG5vcm1hbDtcXHJcXG4gICAgZm9udC12YXJpYW50OiBub3JtYWw7XFxyXFxuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxyXFxuICAgIGZvbnQ6IG5vcm1hbCBub3JtYWwgMTAwJSBcXFwiT3BlbiBzYW5zXFxcIiwgXFxcIkhlbHZldGljYSBOZXVlXFxcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcXHJcXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcXHJcXG4gICAgLW1vei10ZXh0LWFsaWduLWxhc3Q6IGluaXRpYWw7XFxyXFxuICAgIHRleHQtYWxpZ24tbGFzdDogaW5pdGlhbDtcXHJcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcclxcbiAgICAtd2Via2l0LXRleHQtZW1waGFzaXM6IG5vbmU7XFxyXFxuICAgIHRleHQtZW1waGFzaXM6IG5vbmU7XFxyXFxuICAgIHRleHQtaGVpZ2h0OiBhdXRvO1xcclxcbiAgICB0ZXh0LWluZGVudDogMDtcXHJcXG4gICAgdGV4dC1qdXN0aWZ5OiBhdXRvO1xcclxcbiAgICB0ZXh0LW91dGxpbmU6IG5vbmU7XFxyXFxuICAgIHRleHQtc2hhZG93OiBub25lO1xcclxcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcXHJcXG4gICAgdGV4dC13cmFwOiBub3JtYWw7XFxyXFxuICAgIGFsaWdubWVudC1hZGp1c3Q6IGF1dG87XFxyXFxuICAgIGFsaWdubWVudC1iYXNlbGluZTogYmFzZWxpbmU7XFxyXFxuICAgIC13ZWJraXQtYW5pbWF0aW9uOiBub25lIDAgZWFzZSAwIDEgbm9ybWFsO1xcclxcbiAgICBhbmltYXRpb246IG5vbmUgMCBlYXNlIDAgMSBub3JtYWw7XFxyXFxuICAgIC13ZWJraXQtYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7XFxyXFxuICAgIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nO1xcclxcbiAgICBhcHBlYXJhbmNlOiBub3JtYWw7XFxyXFxuICAgIGF6aW11dGg6IGNlbnRlcjtcXHJcXG4gICAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlO1xcclxcbiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlO1xcclxcbiAgICBiYWNrZ3JvdW5kOiBub25lIDAgMCBhdXRvIHJlcGVhdCBzY3JvbGwgcGFkZGluZy1ib3ggdHJhbnNwYXJlbnQ7XFxyXFxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xcclxcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xcclxcbiAgICBiYXNlbGluZS1zaGlmdDogYmFzZWxpbmU7XFxyXFxuICAgIGJpbmRpbmc6IG5vbmU7XFxyXFxuICAgIGJsZWVkOiA2cHQ7XFxyXFxuICAgIGJvb2ttYXJrLWxhYmVsOiBjb250ZW50KCk7XFxyXFxuICAgIGJvb2ttYXJrLWxldmVsOiBub25lO1xcclxcbiAgICBib29rbWFyay1zdGF0ZTogb3BlbjtcXHJcXG4gICAgYm9va21hcmstdGFyZ2V0OiBub25lO1xcclxcbiAgICBib3JkZXI6IDAgbm9uZSB0cmFuc3BhcmVudDtcXHJcXG4gICAgYm9yZGVyLXJhZGl1czogMDtcXHJcXG4gICAgYm90dG9tOiBhdXRvO1xcclxcbiAgICBib3gtYWxpZ246IHN0cmV0Y2g7XFxyXFxuICAgIC13ZWJraXQtYm94LWRlY29yYXRpb24tYnJlYWs6IHNsaWNlO1xcclxcbiAgICBib3gtZGVjb3JhdGlvbi1icmVhazogc2xpY2U7XFxyXFxuICAgIGJveC1kaXJlY3Rpb246IG5vcm1hbDtcXHJcXG4gICAgZmxleDogMC4wO1xcclxcbiAgICBmbGV4LWdyb3VwOiAxO1xcclxcbiAgICBib3gtbGluZXM6IHNpbmdsZTtcXHJcXG4gICAgYm94LW9yZGluYWwtZ3JvdXA6IDE7XFxyXFxuICAgIGJveC1vcmllbnQ6IGlubGluZS1heGlzO1xcclxcbiAgICBib3gtcGFjazogc3RhcnQ7XFxyXFxuICAgIGJveC1zaGFkb3c6IG5vbmU7XFxyXFxuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xcclxcbiAgICAtd2Via2l0LWJyZWFrLWFmdGVyOiBhdXRvO1xcclxcbiAgICAtbW96LWJyZWFrLWFmdGVyOiBhdXRvO1xcclxcbiAgICBicmVhay1hZnRlcjogYXV0bztcXHJcXG4gICAgLXdlYmtpdC1icmVhay1iZWZvcmU6IGF1dG87XFxyXFxuICAgIC1tb3otYnJlYWstYmVmb3JlOiBhdXRvO1xcclxcbiAgICBicmVhay1iZWZvcmU6IGF1dG87XFxyXFxuICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWluc2lkZTogYXV0bztcXHJcXG4gICAgcGFnZS1icmVhay1pbnNpZGU6IGF1dG87XFxyXFxuICAgIGJyZWFrLWluc2lkZTogYXV0bztcXHJcXG4gICAgY2FwdGlvbi1zaWRlOiB0b3A7XFxyXFxuICAgIGNsZWFyOiBub25lO1xcclxcbiAgICBjbGlwOiBhdXRvO1xcclxcbiAgICBjb2xvcjogaW5oZXJpdDtcXHJcXG4gICAgY29sb3ItcHJvZmlsZTogYXV0bztcXHJcXG4gICAgLXdlYmtpdC1jb2x1bW4tY291bnQ6IGF1dG87XFxyXFxuICAgIC1tb3otY29sdW1uLWNvdW50OiBhdXRvO1xcclxcbiAgICBjb2x1bW4tY291bnQ6IGF1dG87XFxyXFxuICAgIC13ZWJraXQtY29sdW1uLWZpbGw6IGJhbGFuY2U7XFxyXFxuICAgIC1tb3otY29sdW1uLWZpbGw6IGJhbGFuY2U7XFxyXFxuICAgIGNvbHVtbi1maWxsOiBiYWxhbmNlO1xcclxcbiAgICAtd2Via2l0LWNvbHVtbi1nYXA6IG5vcm1hbDtcXHJcXG4gICAgLW1vei1jb2x1bW4tZ2FwOiBub3JtYWw7XFxyXFxuICAgIGNvbHVtbi1nYXA6IG5vcm1hbDtcXHJcXG4gICAgLXdlYmtpdC1jb2x1bW4tcnVsZTogbWVkaXVtIG1lZGl1bSAjMWYxZjFmO1xcclxcbiAgICAtbW96LWNvbHVtbi1ydWxlOiBtZWRpdW0gbWVkaXVtICMxZjFmMWY7XFxyXFxuICAgIGNvbHVtbi1ydWxlOiBtZWRpdW0gbWVkaXVtICMxZjFmMWY7XFxyXFxuICAgIC13ZWJraXQtY29sdW1uLXNwYW46IDE7XFxyXFxuICAgIC1tb3otY29sdW1uLXNwYW46IDE7XFxyXFxuICAgIGNvbHVtbi1zcGFuOiAxO1xcclxcbiAgICAtd2Via2l0LWNvbHVtbi13aWR0aDogYXV0bztcXHJcXG4gICAgLW1vei1jb2x1bW4td2lkdGg6IGF1dG87XFxyXFxuICAgIGNvbHVtbi13aWR0aDogYXV0bztcXHJcXG4gICAgLXdlYmtpdC1jb2x1bW5zOiBhdXRvIGF1dG87XFxyXFxuICAgIC1tb3otY29sdW1uczogYXV0byBhdXRvO1xcclxcbiAgICBjb2x1bW5zOiBhdXRvIGF1dG87XFxyXFxuICAgIGNvbnRlbnQ6IG5vcm1hbDtcXHJcXG4gICAgY291bnRlci1pbmNyZW1lbnQ6IG5vbmU7XFxyXFxuICAgIGNvdW50ZXItcmVzZXQ6IG5vbmU7XFxyXFxuICAgIGNyb3A6IGF1dG87XFxyXFxuICAgIGN1cnNvcjogYXV0bztcXHJcXG4gICAgZGlyZWN0aW9uOiBsdHI7XFxyXFxuICAgIGRpc3BsYXk6IGlubGluZTtcXHJcXG4gICAgZG9taW5hbnQtYmFzZWxpbmU6IGF1dG87XFxyXFxuICAgIGRyb3AtaW5pdGlhbC1hZnRlci1hZGp1c3Q6IHRleHQtYWZ0ZXItZWRnZTtcXHJcXG4gICAgZHJvcC1pbml0aWFsLWFmdGVyLWFsaWduOiBiYXNlbGluZTtcXHJcXG4gICAgZHJvcC1pbml0aWFsLWJlZm9yZS1hZGp1c3Q6IHRleHQtYmVmb3JlLWVkZ2U7XFxyXFxuICAgIGRyb3AtaW5pdGlhbC1iZWZvcmUtYWxpZ246IGNhcHMtaGVpZ2h0O1xcclxcbiAgICBkcm9wLWluaXRpYWwtc2l6ZTogYXV0bztcXHJcXG4gICAgZHJvcC1pbml0aWFsLXZhbHVlOiBpbml0aWFsO1xcclxcbiAgICBlbGV2YXRpb246IGxldmVsO1xcclxcbiAgICBlbXB0eS1jZWxsczogc2hvdztcXHJcXG4gICAgZml0OiBmaWxsO1xcclxcbiAgICBmaXQtcG9zaXRpb246IDAlIDAlO1xcclxcbiAgICBmbG9hdDogbm9uZTtcXHJcXG4gICAgZmxvYXQtb2Zmc2V0OiAwIDA7XFxyXFxuICAgIGdyaWQtY29sdW1uczogbm9uZTtcXHJcXG4gICAgZ3JpZC1yb3dzOiBub25lO1xcclxcbiAgICBoYW5naW5nLXB1bmN0dWF0aW9uOiBub25lO1xcclxcbiAgICBoZWlnaHQ6IGF1dG87XFxyXFxuICAgIGh5cGhlbmF0ZS1hZnRlcjogYXV0bztcXHJcXG4gICAgaHlwaGVuYXRlLWJlZm9yZTogYXV0bztcXHJcXG4gICAgaHlwaGVuYXRlLWNoYXJhY3RlcjogYXV0bztcXHJcXG4gICAgaHlwaGVuYXRlLWxpbmVzOiBuby1saW1pdDtcXHJcXG4gICAgaHlwaGVuYXRlLXJlc291cmNlOiBub25lO1xcclxcbiAgICAtd2Via2l0LWh5cGhlbnM6IG1hbnVhbDtcXHJcXG4gICAgLW1vei1oeXBoZW5zOiBtYW51YWw7XFxyXFxuICAgIC1tcy1oeXBoZW5zOiBtYW51YWw7XFxyXFxuICAgIGh5cGhlbnM6IG1hbnVhbDtcXHJcXG4gICAgaWNvbjogYXV0bztcXHJcXG4gICAgaW1hZ2Utb3JpZW50YXRpb246IGF1dG87XFxyXFxuICAgIGltYWdlLXJlbmRlcmluZzogYXV0bztcXHJcXG4gICAgaW1hZ2UtcmVzb2x1dGlvbjogbm9ybWFsO1xcclxcbiAgICBpbmxpbmUtYm94LWFsaWduOiBsYXN0O1xcclxcbiAgICBsZWZ0OiBhdXRvO1xcclxcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcXHJcXG4gICAgbGluZS1zdGFja2luZzogaW5saW5lLWxpbmUtaGVpZ2h0IGV4Y2x1ZGUtcnVieSBjb25zaWRlci1zaGlmdHM7XFxyXFxuICAgIGxpc3Qtc3R5bGU6IGRpc2Mgb3V0c2lkZSBub25lO1xcclxcbiAgICBtYXJnaW46IDA7XFxyXFxuICAgIG1hcmtzOiBub25lO1xcclxcbiAgICBtYXJxdWVlLWRpcmVjdGlvbjogZm9yd2FyZDtcXHJcXG4gICAgbWFycXVlZS1sb29wOiAxO1xcclxcbiAgICBtYXJxdWVlLXBsYXktY291bnQ6IDE7XFxyXFxuICAgIG1hcnF1ZWUtc3BlZWQ6IG5vcm1hbDtcXHJcXG4gICAgbWFycXVlZS1zdHlsZTogc2Nyb2xsO1xcclxcbiAgICBtYXgtaGVpZ2h0OiBub25lO1xcclxcbiAgICBtYXgtd2lkdGg6IG5vbmU7XFxyXFxuICAgIG1pbi1oZWlnaHQ6IDA7XFxyXFxuICAgIG1pbi13aWR0aDogMDtcXHJcXG4gICAgbW92ZS10bzogbm9ybWFsO1xcclxcbiAgICBuYXYtZG93bjogYXV0bztcXHJcXG4gICAgbmF2LWluZGV4OiBhdXRvO1xcclxcbiAgICBuYXYtbGVmdDogYXV0bztcXHJcXG4gICAgbmF2LXJpZ2h0OiBhdXRvO1xcclxcbiAgICBuYXYtdXA6IGF1dG87XFxyXFxuICAgIG9wYWNpdHk6IDE7XFxyXFxuICAgIG9ycGhhbnM6IDI7XFxyXFxuICAgIG91dGxpbmU6IGludmVydCBub25lIG1lZGl1bTtcXHJcXG4gICAgb3V0bGluZS1vZmZzZXQ6IDA7XFxyXFxuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xcclxcbiAgICBvdmVyZmxvdy1zdHlsZTogYXV0bztcXHJcXG4gICAgcGFkZGluZzogMDtcXHJcXG4gICAgcGFnZTogYXV0bztcXHJcXG4gICAgcGFnZS1icmVhay1hZnRlcjogYXV0bztcXHJcXG4gICAgcGFnZS1icmVhay1iZWZvcmU6IGF1dG87XFxyXFxuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdXRvO1xcclxcbiAgICBwYWdlLXBvbGljeTogc3RhcnQ7XFxyXFxuICAgIC13ZWJraXQtcGVyc3BlY3RpdmU6IG5vbmU7XFxyXFxuICAgIHBlcnNwZWN0aXZlOiBub25lO1xcclxcbiAgICAtd2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbjogNTAlIDUwJTtcXHJcXG4gICAgcGVyc3BlY3RpdmUtb3JpZ2luOiA1MCUgNTAlO1xcclxcbiAgICBwb3NpdGlvbjogc3RhdGljO1xcclxcbiAgICBwcmVzZW50YXRpb24tbGV2ZWw6IDA7XFxyXFxuICAgIHB1bmN0dWF0aW9uLXRyaW06IG5vbmU7XFxyXFxuICAgIHF1b3Rlczogbm9uZTtcXHJcXG4gICAgcmVuZGVyaW5nLWludGVudDogYXV0bztcXHJcXG4gICAgcmVzaXplOiBub25lO1xcclxcbiAgICByaWdodDogYXV0bztcXHJcXG4gICAgcm90YXRpb246IDA7XFxyXFxuICAgIHJvdGF0aW9uLXBvaW50OiA1MCUgNTAlO1xcclxcbiAgICBydWJ5LWFsaWduOiBhdXRvO1xcclxcbiAgICBydWJ5LW92ZXJoYW5nOiBub25lO1xcclxcbiAgICBydWJ5LXBvc2l0aW9uOiBiZWZvcmU7XFxyXFxuICAgIHJ1Ynktc3Bhbjogbm9uZTtcXHJcXG4gICAgc2l6ZTogYXV0bztcXHJcXG4gICAgc3RyaW5nLXNldDogbm9uZTtcXHJcXG4gICAgdGFibGUtbGF5b3V0OiBhdXRvO1xcclxcbiAgICB0b3A6IGF1dG87XFxyXFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBub25lO1xcclxcbiAgICAtbXMtdHJhbnNmb3JtOiBub25lO1xcclxcbiAgICB0cmFuc2Zvcm06IG5vbmU7XFxyXFxuICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJSAwO1xcclxcbiAgICAtbXMtdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJSAwO1xcclxcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlIDA7XFxyXFxuICAgIC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBmbGF0O1xcclxcbiAgICB0cmFuc2Zvcm0tc3R5bGU6IGZsYXQ7XFxyXFxuICAgIHRyYW5zaXRpb246IGFsbCAwIGVhc2UgMDtcXHJcXG4gICAgdW5pY29kZS1iaWRpOiBub3JtYWw7XFxyXFxuICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcXHJcXG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcXHJcXG4gICAgd2hpdGUtc3BhY2UtY29sbGFwc2U6IGNvbGxhcHNlO1xcclxcbiAgICB3aWRvd3M6IDI7XFxyXFxuICAgIHdpZHRoOiBhdXRvO1xcclxcbiAgICB3b3JkLWJyZWFrOiBub3JtYWw7XFxyXFxuICAgIHdvcmQtc3BhY2luZzogbm9ybWFsO1xcclxcbiAgICB3b3JkLXdyYXA6IG5vcm1hbDtcXHJcXG4gICAgei1pbmRleDogYXV0bztcXHJcXG4gICAgdGV4dC1hbGlnbjogc3RhcnQ7XFxyXFxuICAgIC8qIEFuZCBkaXNhYmxlIE1TIGdyYWRpZW50cyAqL1xcclxcbiAgICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkPWZhbHNlKTtcXHJcXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XFxyXFxuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XFxyXFxuICB9XFxyXFxuICBhZGRyZXNzLCBibG9ja3F1b3RlLCBkZCwgZGl2LCBkbCwgZHQsIGZpZWxkc2V0LCBmb3JtLCBkaXYuZm9ybSwgZnJhbWUsIGZyYW1lc2V0LCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBub2ZyYW1lcywgb2wsIHAsIHVsLCBjZW50ZXIsIGRpciwgaHIsIG1lbnUsIHByZSwgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBtZW51LCBuYXYsIHNlY3Rpb24sIHN1bW1hcnkge1xcclxcbiAgICBkaXNwbGF5OiBibG9jaztcXHJcXG4gIH1cXHJcXG4gIGxpIHtcXHJcXG4gICAgZGlzcGxheTogbGlzdC1pdGVtO1xcclxcbiAgfVxcclxcbiAgdGFibGUge1xcclxcbiAgICBkaXNwbGF5OiB0YWJsZTtcXHJcXG4gIH1cXHJcXG4gIHRyIHtcXHJcXG4gICAgZGlzcGxheTogdGFibGUtcm93O1xcclxcbiAgfVxcclxcbiAgdGhlYWQge1xcclxcbiAgICBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7XFxyXFxuICB9XFxyXFxuICB0Ym9keSB7XFxyXFxuICAgIGRpc3BsYXk6IHRhYmxlLXJvdy1ncm91cDtcXHJcXG4gIH1cXHJcXG4gIHRmb290IHtcXHJcXG4gICAgZGlzcGxheTogdGFibGUtZm9vdGVyLWdyb3VwO1xcclxcbiAgfVxcclxcbiAgY29sIHtcXHJcXG4gICAgZGlzcGxheTogdGFibGUtY29sdW1uO1xcclxcbiAgfVxcclxcbiAgY29sZ3JvdXAge1xcclxcbiAgICBkaXNwbGF5OiB0YWJsZS1jb2x1bW4tZ3JvdXA7XFxyXFxuICB9XFxyXFxuICB0ZCwgdGgge1xcclxcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xcclxcbiAgfVxcclxcbiAgY2FwdGlvbiB7XFxyXFxuICAgIGRpc3BsYXk6IHRhYmxlLWNhcHRpb247XFxyXFxuICB9XFxyXFxuICBpbnB1dCwgc2VsZWN0IHtcXHJcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcclxcbiAgfVxcclxcbiAgYiwgc3Ryb25nIHtcXHJcXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxyXFxuICB9XFxyXFxuICBiID4gaSwgc3Ryb25nID4gaSwgYiA+IGVtLCBzdHJvbmcgPiBlbSB7XFxyXFxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcclxcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XFxyXFxuICB9XFxyXFxuICBpID4ge1xcclxcbiAgICBiLCBzdHJvbmcge1xcclxcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcclxcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcbiAgZW0gPiB7XFxyXFxuICAgIGIsIHN0cm9uZyB7XFxyXFxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxyXFxuICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xcclxcbiAgICB9XFxyXFxuICB9XFxyXFxuICB0ZXh0YXJlYSwgaW5wdXQge1xcclxcbiAgICBjdXJzb3I6IHRleHQ7XFxyXFxuICB9XFxyXFxufVxcclxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ubG9jYWxzID0ge1xuXHRcInJlc2V0XCI6IFwiQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXRcIixcblx0XCJmb3JtXCI6IFwiQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fZm9ybVwiLFxuXHRcImJ1dHRvblwiOiBcIkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX2J1dHRvblwiLFxuXHRcImxlZ2VuZFwiOiBcIkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX2xlZ2VuZFwiXG59O1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZVsxXSEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMV0udXNlWzJdIS4vY2FsZW5kYXIuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZVsxXSEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMV0udXNlWzJdIS4vY2FsZW5kYXIuc2Nzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vLi4vc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vLi4vY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1syXS51c2VbMV0hLi4vLi4vLi4vc2Fzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzJdIS4vcmVzZXQuc2Nzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xuXG4gICAgICBvcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xuICAgIFxub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzFdIS4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdLnVzZVsyXSEuL3Jlc2V0LnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIHN0eWxlc0luRE9NID0gW107XG5cbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzSW5ET00ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3R5bGVzSW5ET01baV0uaWRlbnRpZmllciA9PT0gaWRlbnRpZmllcikge1xuICAgICAgcmVzdWx0ID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBpdGVtID0gbGlzdFtpXTtcbiAgICB2YXIgaWQgPSBvcHRpb25zLmJhc2UgPyBpdGVtWzBdICsgb3B0aW9ucy5iYXNlIDogaXRlbVswXTtcbiAgICB2YXIgY291bnQgPSBpZENvdW50TWFwW2lkXSB8fCAwO1xuICAgIHZhciBpZGVudGlmaWVyID0gXCJcIi5jb25jYXQoaWQsIFwiIFwiKS5jb25jYXQoY291bnQpO1xuICAgIGlkQ291bnRNYXBbaWRdID0gY291bnQgKyAxO1xuICAgIHZhciBpbmRleEJ5SWRlbnRpZmllciA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgIHZhciBvYmogPSB7XG4gICAgICBjc3M6IGl0ZW1bMV0sXG4gICAgICBtZWRpYTogaXRlbVsyXSxcbiAgICAgIHNvdXJjZU1hcDogaXRlbVszXSxcbiAgICAgIHN1cHBvcnRzOiBpdGVtWzRdLFxuICAgICAgbGF5ZXI6IGl0ZW1bNV1cbiAgICB9O1xuXG4gICAgaWYgKGluZGV4QnlJZGVudGlmaWVyICE9PSAtMSkge1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnJlZmVyZW5jZXMrKztcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS51cGRhdGVyKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB1cGRhdGVyID0gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLmJ5SW5kZXggPSBpO1xuICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKGksIDAsIHtcbiAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgdXBkYXRlcjogdXBkYXRlcixcbiAgICAgICAgcmVmZXJlbmNlczogMVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuXG4gIHJldHVybiBpZGVudGlmaWVycztcbn1cblxuZnVuY3Rpb24gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucykge1xuICB2YXIgYXBpID0gb3B0aW9ucy5kb21BUEkob3B0aW9ucyk7XG4gIGFwaS51cGRhdGUob2JqKTtcblxuICB2YXIgdXBkYXRlciA9IGZ1bmN0aW9uIHVwZGF0ZXIobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCAmJiBuZXdPYmouc3VwcG9ydHMgPT09IG9iai5zdXBwb3J0cyAmJiBuZXdPYmoubGF5ZXIgPT09IG9iai5sYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGFwaS51cGRhdGUob2JqID0gbmV3T2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXBpLnJlbW92ZSgpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gdXBkYXRlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW2ldO1xuICAgICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleF0ucmVmZXJlbmNlcy0tO1xuICAgIH1cblxuICAgIHZhciBuZXdMYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obmV3TGlzdCwgb3B0aW9ucyk7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcblxuICAgICAgdmFyIF9pbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKF9pZGVudGlmaWVyKTtcblxuICAgICAgaWYgKHN0eWxlc0luRE9NW19pbmRleF0ucmVmZXJlbmNlcyA9PT0gMCkge1xuICAgICAgICBzdHlsZXNJbkRPTVtfaW5kZXhdLnVwZGF0ZXIoKTtcblxuICAgICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsYXN0SWRlbnRpZmllcnMgPSBuZXdMYXN0SWRlbnRpZmllcnM7XG4gIH07XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgbWVtbyA9IHt9O1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cbmZ1bmN0aW9uIGdldFRhcmdldCh0YXJnZXQpIHtcbiAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB2YXIgc3R5bGVUYXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7IC8vIFNwZWNpYWwgY2FzZSB0byByZXR1cm4gaGVhZCBvZiBpZnJhbWUgaW5zdGVhZCBvZiBpZnJhbWUgaXRzZWxmXG5cbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbWVtb1t0YXJnZXRdID0gc3R5bGVUYXJnZXQ7XG4gIH1cblxuICByZXR1cm4gbWVtb1t0YXJnZXRdO1xufVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cblxuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcblxuICBpZiAoIXRhcmdldCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0JyBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cIik7XG4gIH1cblxuICB0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIG9wdGlvbnMuc2V0QXR0cmlidXRlcyhlbGVtZW50LCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICBvcHRpb25zLmluc2VydChlbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xuICByZXR1cm4gZWxlbWVudDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzKHN0eWxlRWxlbWVudCkge1xuICB2YXIgbm9uY2UgPSB0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09IFwidW5kZWZpbmVkXCIgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG5cbiAgaWYgKG5vbmNlKSB7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIG5vbmNlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlczsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gXCJcIjtcblxuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQob2JqLnN1cHBvcnRzLCBcIikge1wiKTtcbiAgfVxuXG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJAbWVkaWEgXCIuY29uY2F0KG9iai5tZWRpYSwgXCIge1wiKTtcbiAgfVxuXG4gIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2Ygb2JqLmxheWVyICE9PSBcInVuZGVmaW5lZFwiO1xuXG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJAbGF5ZXJcIi5jb25jYXQob2JqLmxheWVyLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQob2JqLmxheWVyKSA6IFwiXCIsIFwiIHtcIik7XG4gIH1cblxuICBjc3MgKz0gb2JqLmNzcztcblxuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG5cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuXG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cblxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcblxuICBpZiAoc291cmNlTWFwICYmIHR5cGVvZiBidG9hICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgY3NzICs9IFwiXFxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxcIi5jb25jYXQoYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKSwgXCIgKi9cIik7XG4gIH0gLy8gRm9yIG9sZCBJRVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuXG4gIG9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpIHtcbiAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gIGlmIChzdHlsZUVsZW1lbnQucGFyZW50Tm9kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudCk7XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuXG5mdW5jdGlvbiBkb21BUEkob3B0aW9ucykge1xuICB2YXIgc3R5bGVFbGVtZW50ID0gb3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gIHJldHVybiB7XG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUob2JqKSB7XG4gICAgICBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaik7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkb21BUEk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQpIHtcbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgfSBlbHNlIHtcbiAgICB3aGlsZSAoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCk7XG4gICAgfVxuXG4gICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R5bGVUYWdUcmFuc2Zvcm07IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHRpZDogbW9kdWxlSWQsXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmIgPSBkb2N1bWVudC5iYXNlVVJJIHx8IHNlbGYubG9jYXRpb24uaHJlZjtcblxuLy8gb2JqZWN0IHRvIHN0b3JlIGxvYWRlZCBhbmQgbG9hZGluZyBjaHVua3Ncbi8vIHVuZGVmaW5lZCA9IGNodW5rIG5vdCBsb2FkZWQsIG51bGwgPSBjaHVuayBwcmVsb2FkZWQvcHJlZmV0Y2hlZFxuLy8gW3Jlc29sdmUsIHJlamVjdCwgUHJvbWlzZV0gPSBjaHVuayBsb2FkaW5nLCAwID0gY2h1bmsgbG9hZGVkXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHRcImFwcFwiOiAwXG59O1xuXG4vLyBubyBjaHVuayBvbiBkZW1hbmQgbG9hZGluZ1xuXG4vLyBubyBwcmVmZXRjaGluZ1xuXG4vLyBubyBwcmVsb2FkZWRcblxuLy8gbm8gSE1SXG5cbi8vIG5vIEhNUiBtYW5pZmVzdFxuXG4vLyBubyBvbiBjaHVua3MgbG9hZGVkXG5cbi8vIG5vIGpzb25wIGZ1bmN0aW9uIiwiLyogZ2xvYmFsIGRvY3VtZW50LCByZXF1aXJlLCB3aW5kb3cgKi9cbmxldCBDYWxlbmRhciA9IHJlcXVpcmUoJy4vY2FsZW5kYXInKTtcblxuQ2FsZW5kYXIgPSBDYWxlbmRhci5kZWZhdWx0O1xuXG4vLyBFeHBvcnQgV2lkZ2V0VXRpbHNcbndpbmRvdy5Cb29raW5nU3luY1dpZGdldFV0aWxzID0gcmVxdWlyZSgnd2lkZ2V0LXV0aWxzJyk7XG5cbi8vIEV4cG9ydCBQb3BwZXJcbndpbmRvdy5Qb3BwZXIgPSByZXF1aXJlKCdAcG9wcGVyanMvY29yZScpO1xuXG5DYWxlbmRhci5pbml0ID0gKG9wdHMpID0+IHtcbiAgY29uc3QgaW5pdGlhbGl6ZWQgPSBbXTtcbiAgY29uc3Qgb3B0aW9ucyAgICAgPSBvcHRzIHx8IHt9O1xuICBjb25zdCBlbGVtZW50cyAgICA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWJvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldF0nKTtcblxuICBlbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgb3B0aW9ucy5lbCA9IGVsZW1lbnQ7XG4gICAgY29uc3QgY2FsICA9IG5ldyBDYWxlbmRhcihvcHRpb25zKTtcblxuICAgIGluaXRpYWxpemVkLnB1c2goY2FsKTtcbiAgfSk7XG5cbiAgQ2FsZW5kYXIuaW5zdGFuY2VzID0gaW5pdGlhbGl6ZWQ7XG4gIHJldHVybiBpbml0aWFsaXplZDtcbn07XG5cbkNhbGVuZGFyLlZFUlNJT04gPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuXG5pZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gJ2xvYWRpbmcnKSB7XG4gIENhbGVuZGFyLmluaXQoKTtcbn0gZWxzZSB7XG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKSA9PiB7XG4gICAgQ2FsZW5kYXIuaW5pdCgpO1xuICB9KTtcbn1cblxud2luZG93LkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXQgPSBDYWxlbmRhcjtcblxuZXhwb3J0IGRlZmF1bHQgQ2FsZW5kYXI7XG4iXSwibmFtZXMiOlsiZ2V0Q29tcG9zaXRlUmVjdCIsImdldExheW91dFJlY3QiLCJsaXN0U2Nyb2xsUGFyZW50cyIsImdldE9mZnNldFBhcmVudCIsImdldENvbXB1dGVkU3R5bGUiLCJvcmRlck1vZGlmaWVycyIsImRlYm91bmNlIiwidmFsaWRhdGVNb2RpZmllcnMiLCJ1bmlxdWVCeSIsImdldEJhc2VQbGFjZW1lbnQiLCJtZXJnZUJ5TmFtZSIsImRldGVjdE92ZXJmbG93IiwiaXNFbGVtZW50IiwiYXV0byIsIklOVkFMSURfRUxFTUVOVF9FUlJPUiIsIklORklOSVRFX0xPT1BfRVJST1IiLCJERUZBVUxUX09QVElPTlMiLCJwbGFjZW1lbnQiLCJtb2RpZmllcnMiLCJzdHJhdGVneSIsImFyZVZhbGlkRWxlbWVudHMiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsInNvbWUiLCJlbGVtZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicG9wcGVyR2VuZXJhdG9yIiwiZ2VuZXJhdG9yT3B0aW9ucyIsIl9nZW5lcmF0b3JPcHRpb25zIiwiX2dlbmVyYXRvck9wdGlvbnMkZGVmIiwiZGVmYXVsdE1vZGlmaWVycyIsIl9nZW5lcmF0b3JPcHRpb25zJGRlZjIiLCJkZWZhdWx0T3B0aW9ucyIsImNyZWF0ZVBvcHBlciIsInJlZmVyZW5jZSIsInBvcHBlciIsIm9wdGlvbnMiLCJzdGF0ZSIsIm9yZGVyZWRNb2RpZmllcnMiLCJPYmplY3QiLCJhc3NpZ24iLCJtb2RpZmllcnNEYXRhIiwiZWxlbWVudHMiLCJhdHRyaWJ1dGVzIiwic3R5bGVzIiwiZWZmZWN0Q2xlYW51cEZucyIsImlzRGVzdHJveWVkIiwiaW5zdGFuY2UiLCJzZXRPcHRpb25zIiwic2V0T3B0aW9uc0FjdGlvbiIsImNsZWFudXBNb2RpZmllckVmZmVjdHMiLCJzY3JvbGxQYXJlbnRzIiwiY29udGV4dEVsZW1lbnQiLCJjb25jYXQiLCJmaWx0ZXIiLCJtIiwiZW5hYmxlZCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIl9yZWYiLCJuYW1lIiwiZmxpcE1vZGlmaWVyIiwiZmluZCIsIl9yZWYyIiwiY29uc29sZSIsImVycm9yIiwiam9pbiIsIl9nZXRDb21wdXRlZFN0eWxlIiwibWFyZ2luVG9wIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5Cb3R0b20iLCJtYXJnaW5MZWZ0IiwibWFyZ2luIiwicGFyc2VGbG9hdCIsIndhcm4iLCJydW5Nb2RpZmllckVmZmVjdHMiLCJ1cGRhdGUiLCJmb3JjZVVwZGF0ZSIsIl9zdGF0ZSRlbGVtZW50cyIsInJlY3RzIiwicmVzZXQiLCJmb3JFYWNoIiwibW9kaWZpZXIiLCJkYXRhIiwiX19kZWJ1Z19sb29wc19fIiwiaW5kZXgiLCJfc3RhdGUkb3JkZXJlZE1vZGlmaWUiLCJmbiIsIl9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIiLCJfb3B0aW9ucyIsIlByb21pc2UiLCJyZXNvbHZlIiwiZGVzdHJveSIsInRoZW4iLCJvbkZpcnN0VXBkYXRlIiwiX3JlZjMiLCJfcmVmMyRvcHRpb25zIiwiZWZmZWN0IiwiY2xlYW51cEZuIiwibm9vcEZuIiwicHVzaCIsImlzU2hhZG93Um9vdCIsImNvbnRhaW5zIiwicGFyZW50IiwiY2hpbGQiLCJyb290Tm9kZSIsImdldFJvb3ROb2RlIiwibmV4dCIsImlzU2FtZU5vZGUiLCJwYXJlbnROb2RlIiwiaG9zdCIsImlzSFRNTEVsZW1lbnQiLCJyb3VuZCIsImluY2x1ZGVTY2FsZSIsInJlY3QiLCJzY2FsZVgiLCJzY2FsZVkiLCJvZmZzZXRIZWlnaHQiLCJvZmZzZXRXaWR0aCIsIndpZHRoIiwiaGVpZ2h0IiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwieCIsInkiLCJ2aWV3cG9ydCIsImdldFZpZXdwb3J0UmVjdCIsImdldERvY3VtZW50UmVjdCIsImdldERvY3VtZW50RWxlbWVudCIsImdldFBhcmVudE5vZGUiLCJnZXROb2RlTmFtZSIsInJlY3RUb0NsaWVudFJlY3QiLCJtYXgiLCJtaW4iLCJnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdCIsImNsaWVudFRvcCIsImNsaWVudExlZnQiLCJjbGllbnRIZWlnaHQiLCJjbGllbnRXaWR0aCIsImdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlIiwiY2xpcHBpbmdQYXJlbnQiLCJnZXRDbGlwcGluZ1BhcmVudHMiLCJjbGlwcGluZ1BhcmVudHMiLCJjYW5Fc2NhcGVDbGlwcGluZyIsImluZGV4T2YiLCJwb3NpdGlvbiIsImNsaXBwZXJFbGVtZW50IiwiZ2V0Q2xpcHBpbmdSZWN0IiwiYm91bmRhcnkiLCJyb290Qm91bmRhcnkiLCJtYWluQ2xpcHBpbmdQYXJlbnRzIiwiZmlyc3RDbGlwcGluZ1BhcmVudCIsImNsaXBwaW5nUmVjdCIsInJlZHVjZSIsImFjY1JlY3QiLCJnZXROb2RlU2Nyb2xsIiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImlzU2Nyb2xsUGFyZW50IiwiaXNFbGVtZW50U2NhbGVkIiwiZWxlbWVudE9yVmlydHVhbEVsZW1lbnQiLCJvZmZzZXRQYXJlbnQiLCJpc0ZpeGVkIiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRQYXJlbnRJc1NjYWxlZCIsImRvY3VtZW50RWxlbWVudCIsInNjcm9sbCIsInNjcm9sbExlZnQiLCJzY3JvbGxUb3AiLCJvZmZzZXRzIiwiZ2V0V2luZG93Iiwib3duZXJEb2N1bWVudCIsImRvY3VtZW50Iiwid2luZG93IiwiZ2V0V2luZG93U2Nyb2xsIiwiX2VsZW1lbnQkb3duZXJEb2N1bWVuIiwiaHRtbCIsIndpblNjcm9sbCIsImJvZHkiLCJzY3JvbGxXaWR0aCIsInNjcm9sbEhlaWdodCIsImRpcmVjdGlvbiIsImdldEhUTUxFbGVtZW50U2Nyb2xsIiwiY2xpZW50UmVjdCIsIk1hdGgiLCJhYnMiLCJvZmZzZXRMZWZ0Iiwib2Zmc2V0VG9wIiwibm9kZU5hbWUiLCJ0b0xvd2VyQ2FzZSIsIm5vZGUiLCJpc1RhYmxlRWxlbWVudCIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJnZXRDb250YWluaW5nQmxvY2siLCJpc0ZpcmVmb3giLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJpc0lFIiwiZWxlbWVudENzcyIsImN1cnJlbnROb2RlIiwiY3NzIiwidHJhbnNmb3JtIiwicGVyc3BlY3RpdmUiLCJjb250YWluIiwid2lsbENoYW5nZSIsImFzc2lnbmVkU2xvdCIsImdldFNjcm9sbFBhcmVudCIsIndpbiIsInZpc3VhbFZpZXdwb3J0IiwidGVzdCIsInRvU3RyaW5nIiwiZGVmYXVsdFZpZXciLCJwYWdlWE9mZnNldCIsInBhZ2VZT2Zmc2V0IiwiT3duRWxlbWVudCIsIkVsZW1lbnQiLCJIVE1MRWxlbWVudCIsIlNoYWRvd1Jvb3QiLCJvdmVyZmxvdyIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsImxpc3QiLCJzY3JvbGxQYXJlbnQiLCJpc0JvZHkiLCJ0YXJnZXQiLCJ1cGRhdGVkTGlzdCIsImJhc2VQbGFjZW1lbnRzIiwic3RhcnQiLCJlbmQiLCJ2YXJpYXRpb25QbGFjZW1lbnRzIiwiYWNjIiwicGxhY2VtZW50cyIsImJlZm9yZVJlYWQiLCJyZWFkIiwiYWZ0ZXJSZWFkIiwiYmVmb3JlTWFpbiIsIm1haW4iLCJhZnRlck1haW4iLCJiZWZvcmVXcml0ZSIsIndyaXRlIiwiYWZ0ZXJXcml0ZSIsIm1vZGlmaWVyUGhhc2VzIiwiY3JlYXRlUG9wcGVyQmFzZSIsImNyZWF0ZVBvcHBlckxpdGUiLCJhcHBseVN0eWxlcyIsImtleXMiLCJzdHlsZSIsInZhbHVlIiwicmVtb3ZlQXR0cmlidXRlIiwic2V0QXR0cmlidXRlIiwiaW5pdGlhbFN0eWxlcyIsImFycm93Iiwic3R5bGVQcm9wZXJ0aWVzIiwiaGFzT3duUHJvcGVydHkiLCJwcm9wZXJ0eSIsImF0dHJpYnV0ZSIsInBoYXNlIiwicmVxdWlyZXMiLCJnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQiLCJ3aXRoaW4iLCJtZXJnZVBhZGRpbmdPYmplY3QiLCJleHBhbmRUb0hhc2hNYXAiLCJ0b1BhZGRpbmdPYmplY3QiLCJwYWRkaW5nIiwiX3N0YXRlJG1vZGlmaWVyc0RhdGEkIiwiYXJyb3dFbGVtZW50IiwicG9wcGVyT2Zmc2V0cyIsImJhc2VQbGFjZW1lbnQiLCJheGlzIiwiaXNWZXJ0aWNhbCIsImxlbiIsInBhZGRpbmdPYmplY3QiLCJhcnJvd1JlY3QiLCJtaW5Qcm9wIiwibWF4UHJvcCIsImVuZERpZmYiLCJzdGFydERpZmYiLCJhcnJvd09mZnNldFBhcmVudCIsImNsaWVudFNpemUiLCJjZW50ZXJUb1JlZmVyZW5jZSIsImNlbnRlciIsIm9mZnNldCIsImF4aXNQcm9wIiwiY2VudGVyT2Zmc2V0IiwiX29wdGlvbnMkZWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJyZXF1aXJlc0lmRXhpc3RzIiwiZ2V0VmFyaWF0aW9uIiwidW5zZXRTaWRlcyIsInJvdW5kT2Zmc2V0c0J5RFBSIiwiZHByIiwiZGV2aWNlUGl4ZWxSYXRpbyIsIm1hcFRvU3R5bGVzIiwiX09iamVjdCRhc3NpZ24yIiwicG9wcGVyUmVjdCIsInZhcmlhdGlvbiIsImdwdUFjY2VsZXJhdGlvbiIsImFkYXB0aXZlIiwicm91bmRPZmZzZXRzIiwiX29mZnNldHMkeCIsIl9vZmZzZXRzJHkiLCJoYXNYIiwiaGFzWSIsInNpZGVYIiwic2lkZVkiLCJoZWlnaHRQcm9wIiwid2lkdGhQcm9wIiwib2Zmc2V0WSIsIm9mZnNldFgiLCJjb21tb25TdHlsZXMiLCJfcmVmNCIsIl9PYmplY3QkYXNzaWduIiwiY29tcHV0ZVN0eWxlcyIsIl9yZWY1IiwiX29wdGlvbnMkZ3B1QWNjZWxlcmF0IiwiX29wdGlvbnMkYWRhcHRpdmUiLCJfb3B0aW9ucyRyb3VuZE9mZnNldHMiLCJ0cmFuc2l0aW9uUHJvcGVydHkiLCJwYXNzaXZlIiwiX29wdGlvbnMkc2Nyb2xsIiwiX29wdGlvbnMkcmVzaXplIiwicmVzaXplIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJnZXRPcHBvc2l0ZVBsYWNlbWVudCIsImdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50IiwiY29tcHV0ZUF1dG9QbGFjZW1lbnQiLCJnZXRFeHBhbmRlZEZhbGxiYWNrUGxhY2VtZW50cyIsIm9wcG9zaXRlUGxhY2VtZW50IiwiZmxpcCIsIl9za2lwIiwiX29wdGlvbnMkbWFpbkF4aXMiLCJtYWluQXhpcyIsImNoZWNrTWFpbkF4aXMiLCJfb3B0aW9ucyRhbHRBeGlzIiwiYWx0QXhpcyIsImNoZWNrQWx0QXhpcyIsInNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyIsImZhbGxiYWNrUGxhY2VtZW50cyIsImFsdEJvdW5kYXJ5IiwiX29wdGlvbnMkZmxpcFZhcmlhdGlvIiwiZmxpcFZhcmlhdGlvbnMiLCJhbGxvd2VkQXV0b1BsYWNlbWVudHMiLCJwcmVmZXJyZWRQbGFjZW1lbnQiLCJpc0Jhc2VQbGFjZW1lbnQiLCJyZWZlcmVuY2VSZWN0IiwiY2hlY2tzTWFwIiwiTWFwIiwibWFrZUZhbGxiYWNrQ2hlY2tzIiwiZmlyc3RGaXR0aW5nUGxhY2VtZW50IiwiaSIsIl9iYXNlUGxhY2VtZW50IiwiaXNTdGFydFZhcmlhdGlvbiIsIm1haW5WYXJpYXRpb25TaWRlIiwiYWx0VmFyaWF0aW9uU2lkZSIsImNoZWNrcyIsImV2ZXJ5IiwiY2hlY2siLCJzZXQiLCJudW1iZXJPZkNoZWNrcyIsIl9sb29wIiwiX2kiLCJmaXR0aW5nUGxhY2VtZW50IiwiZ2V0Iiwic2xpY2UiLCJfcmV0IiwiZ2V0U2lkZU9mZnNldHMiLCJwcmV2ZW50ZWRPZmZzZXRzIiwiaXNBbnlTaWRlRnVsbHlDbGlwcGVkIiwic2lkZSIsImhpZGUiLCJwcmV2ZW50T3ZlcmZsb3ciLCJyZWZlcmVuY2VPdmVyZmxvdyIsImVsZW1lbnRDb250ZXh0IiwicG9wcGVyQWx0T3ZlcmZsb3ciLCJyZWZlcmVuY2VDbGlwcGluZ09mZnNldHMiLCJwb3BwZXJFc2NhcGVPZmZzZXRzIiwiaXNSZWZlcmVuY2VIaWRkZW4iLCJoYXNQb3BwZXJFc2NhcGVkIiwiZGVmYXVsdCIsImV2ZW50TGlzdGVuZXJzIiwiZGlzdGFuY2VBbmRTa2lkZGluZ1RvWFkiLCJpbnZlcnREaXN0YW5jZSIsInNraWRkaW5nIiwiZGlzdGFuY2UiLCJfb3B0aW9ucyRvZmZzZXQiLCJfZGF0YSRzdGF0ZSRwbGFjZW1lbnQiLCJjb21wdXRlT2Zmc2V0cyIsImdldEFsdEF4aXMiLCJ3aXRoaW5NYXhDbGFtcCIsImdldEZyZXNoU2lkZU9iamVjdCIsIm1hdGhNaW4iLCJtYXRoTWF4IiwiX29wdGlvbnMkdGV0aGVyIiwidGV0aGVyIiwiX29wdGlvbnMkdGV0aGVyT2Zmc2V0IiwidGV0aGVyT2Zmc2V0IiwidGV0aGVyT2Zmc2V0VmFsdWUiLCJub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUiLCJvZmZzZXRNb2RpZmllclN0YXRlIiwiX29mZnNldE1vZGlmaWVyU3RhdGUkIiwibWFpblNpZGUiLCJhbHRTaWRlIiwiYWRkaXRpdmUiLCJtaW5MZW4iLCJtYXhMZW4iLCJhcnJvd1BhZGRpbmdPYmplY3QiLCJhcnJvd1BhZGRpbmdNaW4iLCJhcnJvd1BhZGRpbmdNYXgiLCJhcnJvd0xlbiIsIm1pbk9mZnNldCIsIm1heE9mZnNldCIsImNsaWVudE9mZnNldCIsIm9mZnNldE1vZGlmaWVyVmFsdWUiLCJ0ZXRoZXJNaW4iLCJ0ZXRoZXJNYXgiLCJwcmV2ZW50ZWRPZmZzZXQiLCJfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIiwiX21haW5TaWRlIiwiX2FsdFNpZGUiLCJfb2Zmc2V0IiwiX21pbiIsIl9tYXgiLCJpc09yaWdpblNpZGUiLCJfb2Zmc2V0TW9kaWZpZXJWYWx1ZSIsIl90ZXRoZXJNaW4iLCJfdGV0aGVyTWF4IiwiX3ByZXZlbnRlZE9mZnNldCIsImFsbFBsYWNlbWVudHMiLCJfb3B0aW9ucyRhbGxvd2VkQXV0b1AiLCJhbGxvd2VkUGxhY2VtZW50cyIsIm92ZXJmbG93cyIsInNvcnQiLCJhIiwiYiIsImNvbW1vblgiLCJjb21tb25ZIiwicGVuZGluZyIsInVuZGVmaW5lZCIsIl9vcHRpb25zJHBsYWNlbWVudCIsIl9vcHRpb25zJGJvdW5kYXJ5IiwiX29wdGlvbnMkcm9vdEJvdW5kYXJ5IiwiX29wdGlvbnMkZWxlbWVudENvbnRlIiwiX29wdGlvbnMkYWx0Qm91bmRhcnkiLCJfb3B0aW9ucyRwYWRkaW5nIiwiYWx0Q29udGV4dCIsImNsaXBwaW5nQ2xpZW50UmVjdCIsInJlZmVyZW5jZUNsaWVudFJlY3QiLCJwb3BwZXJDbGllbnRSZWN0IiwiZWxlbWVudENsaWVudFJlY3QiLCJvdmVyZmxvd09mZnNldHMiLCJvZmZzZXREYXRhIiwia2V5IiwibXVsdGlwbHkiLCJoYXNoTWFwIiwiZm9ybWF0Iiwic3RyIiwicCIsImMiLCJyZXBsYWNlIiwic3BsaXQiLCJoYXNoIiwibWF0Y2hlZCIsIm1lcmdlZCIsImN1cnJlbnQiLCJleGlzdGluZyIsIm1hcCIsIm9yZGVyIiwidmlzaXRlZCIsIlNldCIsInJlc3VsdCIsImFkZCIsImRlcCIsImhhcyIsImRlcE1vZGlmaWVyIiwiYXJyIiwiaWRlbnRpZmllcnMiLCJpdGVtIiwiaWRlbnRpZmllciIsIklOVkFMSURfTU9ESUZJRVJfRVJST1IiLCJNSVNTSU5HX0RFUEVOREVOQ1lfRVJST1IiLCJWQUxJRF9QUk9QRVJUSUVTIiwic2VsZiIsIlN0cmluZyIsImlzQXJyYXkiLCJzIiwicmVxdWlyZW1lbnQiLCJtb2QiLCJ2IiwibW9kdWxlIiwiZXhwb3J0cyIsImNzc1dpdGhNYXBwaW5nVG9TdHJpbmciLCJjb250ZW50IiwibmVlZExheWVyIiwibW9kdWxlcyIsIm1lZGlhIiwiZGVkdXBlIiwic3VwcG9ydHMiLCJsYXllciIsImFscmVhZHlJbXBvcnRlZE1vZHVsZXMiLCJrIiwiaWQiLCJfayIsInVybCIsIl9fZXNNb2R1bGUiLCJuZWVkUXVvdGVzIiwiY3NzTWFwcGluZyIsImJ0b2EiLCJiYXNlNjQiLCJ1bmVzY2FwZSIsImVuY29kZVVSSUNvbXBvbmVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzb3VyY2VNYXBwaW5nIiwic291cmNlVVJMcyIsInNvdXJjZXMiLCJzb3VyY2UiLCJzb3VyY2VSb290IiwiY3VycmVuY3lTeW1ib2xNYXAiLCJyZXF1aXJlIiwiZ2V0U3ltYm9sRnJvbUN1cnJlbmN5IiwiY3VycmVuY3lDb2RlIiwiY29kZSIsInRvVXBwZXJDYXNlIiwicHJvdG90eXBlIiwiY2FsbCIsIkFFRCIsIkFGTiIsIkFMTCIsIkFNRCIsIkFORyIsIkFPQSIsIkFSUyIsIkFVRCIsIkFXRyIsIkFaTiIsIkJBTSIsIkJCRCIsIkJEVCIsIkJHTiIsIkJIRCIsIkJJRiIsIkJNRCIsIkJORCIsIkJPQiIsIkJPViIsIkJSTCIsIkJTRCIsIkJUQyIsIkJUTiIsIkJXUCIsIkJZTiIsIkJZUiIsIkJaRCIsIkNBRCIsIkNERiIsIkNIRSIsIkNIRiIsIkNIVyIsIkNMRiIsIkNMUCIsIkNOWSIsIkNPUCIsIkNPVSIsIkNSQyIsIkNVQyIsIkNVUCIsIkNWRSIsIkNaSyIsIkRKRiIsIkRLSyIsIkRPUCIsIkRaRCIsIkVFSyIsIkVHUCIsIkVSTiIsIkVUQiIsIkVUSCIsIkVVUiIsIkZKRCIsIkZLUCIsIkdCUCIsIkdFTCIsIkdHUCIsIkdIQyIsIkdIUyIsIkdJUCIsIkdNRCIsIkdORiIsIkdUUSIsIkdZRCIsIkhLRCIsIkhOTCIsIkhSSyIsIkhURyIsIkhVRiIsIklEUiIsIklMUyIsIklNUCIsIklOUiIsIklRRCIsIklSUiIsIklTSyIsIkpFUCIsIkpNRCIsIkpPRCIsIkpQWSIsIktFUyIsIktHUyIsIktIUiIsIktNRiIsIktQVyIsIktSVyIsIktXRCIsIktZRCIsIktaVCIsIkxBSyIsIkxCUCIsIkxLUiIsIkxSRCIsIkxTTCIsIkxUQyIsIkxUTCIsIkxWTCIsIkxZRCIsIk1BRCIsIk1ETCIsIk1HQSIsIk1LRCIsIk1NSyIsIk1OVCIsIk1PUCIsIk1STyIsIk1SVSIsIk1VUiIsIk1WUiIsIk1XSyIsIk1YTiIsIk1YViIsIk1ZUiIsIk1aTiIsIk5BRCIsIk5HTiIsIk5JTyIsIk5PSyIsIk5QUiIsIk5aRCIsIk9NUiIsIlBBQiIsIlBFTiIsIlBHSyIsIlBIUCIsIlBLUiIsIlBMTiIsIlBZRyIsIlFBUiIsIlJNQiIsIlJPTiIsIlJTRCIsIlJVQiIsIlJXRiIsIlNBUiIsIlNCRCIsIlNDUiIsIlNERyIsIlNFSyIsIlNHRCIsIlNIUCIsIlNMTCIsIlNPUyIsIlNSRCIsIlNTUCIsIlNURCIsIlNUTiIsIlNWQyIsIlNZUCIsIlNaTCIsIlRIQiIsIlRKUyIsIlRNVCIsIlRORCIsIlRPUCIsIlRSTCIsIlRSWSIsIlRURCIsIlRWRCIsIlRXRCIsIlRaUyIsIlVBSCIsIlVHWCIsIlVTRCIsIlVZSSIsIlVZVSIsIlVZVyIsIlVaUyIsIlZFRiIsIlZFUyIsIlZORCIsIlZVViIsIldTVCIsIlhBRiIsIlhCVCIsIlhDRCIsIlhPRiIsIlhQRiIsIlhTVSIsIlhVQSIsIllFUiIsIlpBUiIsIlpNVyIsIlpXRCIsIlpXTCIsImdldEZvcm1hdE9wdGlvbnMiLCJ0aW1lem9uZSIsInVzZU9wdGlvbnMiLCJ0eiIsIk51bWJlciIsImlzRmluaXRlIiwiZ2V0VGltZXpvbmVPZmZzZXRNaW51dGVzIiwiZGF0ZSIsImZsb29yIiwiRGF0ZSIsImdldFRpbWV6b25lT2Zmc2V0IiwidHpVcHBlciIsImRlZmF1bHRUaW1lem9uZU5hbWVzIiwiRXJyb3IiLCJzdHJmdGltZSIsInRvRGF0ZSIsInRvSlNEYXRlIiwidG9rZW5zIiwiVGltZXN0YW1wUGFyc2VyIiwicGFyc2VGb3JtYXRTdHJpbmciLCJ0aW1lem9uZU9mZnNldE1pbnV0ZXMiLCJ0ekRhdGUiLCJzZXRVVENNaW51dGVzIiwiZ2V0VVRDTWludXRlcyIsIm91dHB1dCIsInRva2VuIiwiRGlyZWN0aXZlIiwiVG9rZW4iLCJzdHJwdGltZSIsInRpbWVzdGFtcCIsInBhcnNlciIsInBhcnNlIiwiZ2V0RGF0ZSIsInN0cnRpbWUiLCJlbmdsaXNoIiwiZXJhTmFtZXMiLCJtZXJpZGllbU5hbWVzIiwic2hvcnRXZWVrZGF5TmFtZXMiLCJsb25nV2Vla2RheU5hbWVzIiwic2hvcnRNb250aE5hbWVzIiwibG9uZ01vbnRoTmFtZXMiLCJvcmRpbmFsVHJhbnNmb3JtIiwibnVtYmVyIiwiZGlnaXQiLCJsZWZ0UGFkIiwiY2hhciIsInRleHQiLCJzdHJpbmciLCJ3cml0ZVRpbWV6b25lT2Zmc2V0Iiwib2Zmc2V0TWludXRlcyIsImFic09mZnNldCIsInNpZ24iLCJob3VyIiwibWludXRlIiwiZ2V0RGF5T2ZXZWVrIiwieWVhciIsImdldFVUQ0Z1bGxZZWFyIiwibW9udGgiLCJnZXRVVENNb250aCIsImRheSIsImdldFVUQ0RhdGUiLCJnZXREYXlPZlllYXIiLCJsZW5ndGhzIiwibW9udGhMZW5ndGhzIiwiZm9yWWVhciIsIm1vbnRocyIsImdldFdlZWtPZlllYXJGcm9tU3VuZGF5IiwiZGF5T2ZZZWFyIiwiZmlyc3REYXlPZldlZWsiLCJnZXRGaXJzdFdlZWtkYXlJblllYXIiLCJnZXRXZWVrT2ZZZWFyRnJvbU1vbmRheSIsImRheU9mV2VlayIsInN1bmRheVdlZWsiLCJnZXRJU09XZWVrc0luWWVhciIsInByaW9yWWVhciIsImdldElTT1dlZWtPZlllYXIiLCJ3ZWVrTnVtYmVyIiwiZ2V0SVNPV2Vla0RhdGVZZWFyIiwiY29uc3RydWN0b3IiLCJuYW1lcyIsInBhZExlbmd0aCIsImxpa2VseUxlbmd0aCIsIm1pbmltdW0iLCJtYXhpbXVtIiwiY2FuQmVOZWdhdGl2ZSIsInJld3JpdGUiLCJwYXJzZUZ1bmN0aW9uIiwid3JpdGVGdW5jdGlvbiIsInN0b3JlRnVuY3Rpb24iLCJzdG9yZSIsImdldEJ5TmFtZSIsImRpcmVjdGl2ZSIsImlzT3JkaW5hbCIsImdldENhbkJlTmVnYXRpdmUiLCJnZXRMaWtlbHlMZW5ndGgiLCJnZXRSZXdyaXRlUGFyc2VkIiwicmV3cml0ZVBhcnNlZFZhbHVlIiwiZXhwYW5kZWRGcm9tIiwiaGFzUGFyc2VGdW5jdGlvbiIsImhhc1N0b3JlRnVuY3Rpb24iLCJudW1iZXJJbkJvdW5kcyIsImdldEJvdW5kc1N0cmluZyIsIkRpcmVjdGl2ZVRva2VuIiwicmVzdWx0U3RyaW5nIiwidXBwZXIiLCJTdHJpbmdUb2tlbiIsIkRpcmVjdGl2ZVN0cmluZ1Rva2VuIiwiYWRkQ2hhcmFjdGVyIiwiY2giLCJwYXJzZVdlZWtkYXlOYW1lIiwiZ2V0VVRDRGF5IiwicGFyc2VNb250aE5hbWUiLCJjZW50dXJ5IiwiZGF5T2ZNb250aCIsIm1pY3Jvc2Vjb25kIiwiZ2V0VVRDTWlsbGlzZWNvbmRzIiwiaXNvVHdvRGlnaXRZZWFyIiwiaXNvWWVhciIsImdldFVUQ0hvdXJzIiwibWlsbGlzZWNvbmQiLCJtZXJpZGllbSIsInBhcnNlTWVyaWRpZW1OYW1lIiwibWljcm9zZWNvbmRzU2luY2VFcG9jaCIsImdldFRpbWUiLCJzZWNvbmRzU2luY2VFcG9jaCIsInNlY29uZCIsImdldFVUQ1NlY29uZHMiLCJ3ZWVrT2ZZZWFyRnJvbVN1bmRheSIsImlzb1dlZWtPZlllYXIiLCJ3ZWVrT2ZZZWFyRnJvbU1vbmRheSIsInR3b0RpZ2l0WWVhciIsInBhcnNlVGltZXpvbmVPZmZzZXQiLCJ0ekxpc3QiLCJnZXRUaW1lem9uZU5hbWVMaXN0IiwicGFyc2VJbmRleEluTGlzdCIsInRpbWV6b25lTmFtZXMiLCJlcmEiLCJwYXJzZUVyYU5hbWUiLCJUaW1lc3RhbXBQYXJzZUVycm9yIiwicmVhc29uIiwiY3VycmVudFRva2VuIiwibWVzc2FnZSIsImNhcHR1cmVTdGFja1RyYWNlIiwic3RhY2siLCJjcmVhdGUiLCJpc0RpZ2l0IiwiZ2V0WWVhckZyb21Ud29EaWdpdHMiLCJnZXRNb250aEZyb21EYXlPZlllYXIiLCJkYXlzIiwiZ2V0RGF5T2ZNb250aEZyb21EYXlPZlllYXIiLCJnZXREYXRlRnJvbUlTT1dlZWtEYXRlIiwid2Vla2RheU9mSmFuNCIsImRheXNJblllYXIiLCJpc0xlYXBZZWFyIiwiZ2V0RGF0ZUZyb21TdW5kYXlXZWVrRGF0ZSIsIndlZWtPZlllYXIiLCJnZXREYXRlRnJvbU1vbmRheVdlZWtEYXRlIiwic3VuZGF5RGF5T2ZZZWFyIiwiZm9ya0xlbmd0aCIsIm1pbGxpc2Vjb25kc1NpbmNlRXBvY2giLCJnZXRUaW1lem9uZU9mZnNldE9mRGF0ZSIsIm9mZnNldFNpZ24iLCJ0b3RhbE1pbnV0ZXMiLCJnZXRGdWxsWWVhciIsInNldFVUQ0Z1bGxZZWFyIiwic2V0VVRDTW9udGgiLCJzZXRVVENEYXRlIiwic2V0VVRDSG91cnMiLCJzZXRVVENTZWNvbmRzIiwic2V0VVRDTWlsbGlzZWNvbmRzIiwiY29weSIsImZvcmsiLCJzdGFydFRva2VuSW5kZXgiLCJwYXJzZVN0cmluZ1Rva2VuIiwicGFyc2VBbWJpZ3VvdXNOdW1iZXIiLCJwYXJzZU51bWJlciIsInRva2VuSW5kZXgiLCJsYXN0V2hvbGVFcnJvciIsImxlbmd0aExpbWl0IiwiSW5maW5pdHkiLCJuZWdhdGl2ZSIsInRyaW0iLCJpc0ludGVnZXIiLCJvcmRpbmFsIiwicG9zc2libGUiLCJwb3NzaWJsZUNvdW50IiwibWF0Y2hJbmRleCIsIm1hdGNoTGVuZ3RoIiwiaiIsInRpbWV6b25lTmFtZUxpc3QiLCJob3VycyIsIm1pbnV0ZXMiLCJmb3JtYXRTdHJpbmciLCJkaXIiLCJ6dWx1VGltZXpvbmUiLCJjb21tb24iLCJsZWFwIiwiaXNPYmplY3QiLCJzZXJpYWxpemUiLCJ0b1VuZGVyc2NvcmUiLCJhamF4IiwiYXBpVXJsIiwic3VjY2VzcyIsInBhcmFtcyIsIm1ldGhvZCIsInhtbEh0dHAiLCJYTUxIdHRwUmVxdWVzdCIsImlzU3VjY2VzcyIsInN0YXR1cyIsIm9wZW4iLCJzZXRSZXF1ZXN0SGVhZGVyIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVzcG9uc2UiLCJyZWFkeVN0YXRlIiwicmVzcG9uc2VUZXh0IiwiZSIsInNlbmQiLCJ0b0xvY2FsZVN0cmluZ1N1cHBvcnRzT3B0aW9ucyIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJjdXJyZW5jeUZvcm1hdHRlciIsImxhbmciLCJjdXJyZW5jeSIsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsImlzRG9sbGFyIiwiY3VycmVuY3lEaXNwbGF5IiwibnVtYmVyRm9ybWF0IiwiZGF5c0luTW9udGgiLCJtb250aExlbmd0aCIsInJlbW92ZUNsYXNzIiwic2V0Q2xhc3NOYW1lIiwiZ2V0Q2xhc3NOYW1lIiwiYWRkQ2xhc3MiLCJlbCIsImNsYXNzTmFtZXMiLCJjbGFzc0xpc3QiLCJjbHMiLCJjcmVhdGVFbGVtZW50IiwiYXR0cnMiLCJkZXN0cm95RWxlbWVudCIsInJlbW92ZUNoaWxkIiwiZWxlbWVudEZyb21TdHJpbmciLCJpbm5lckhUTUwiLCJjaGlsZHJlbiIsImZpbmRCeUNsYXNzTmFtZSIsImNvbnRleHQiLCJjbGFzc05hbWUiLCJTVkdBbmltYXRlZFN0cmluZyIsImJhc2VWYWwiLCJ0cmF2ZXJzZVRvUGFyZW50V2l0aEF0dHIiLCJnZXRQYXJlbnRBdHRyaWJ1dGUiLCJhdHRyIiwiaGFzQ2xhc3MiLCJSZWdFeHAiLCJpcyIsImlzSW5zaWRlIiwidGFnTmFtZSIsInJlbW92ZSIsInJlZ2V4IiwiZ2V0QXR0cmlidXRlIiwiRW1pdHRlciIsIm9uIiwiZXZlbnQiLCJsaXN0ZW5lciIsImV2ZW50cyIsIm9uY2UiLCJvZmYiLCJhcHBseSIsImxpc3RlbmVycyIsInNwbGljZSIsImVtaXQiLCJpc0Z1bmN0aW9uIiwiZiIsImlzTmFOUG9seWZpbGwiLCJvIiwiaXNOYU4iLCJpc051bWVyaWMiLCJuIiwicGFyc2VJbnQiLCJ0cmF2ZXJzZU9iaiIsImRhc2hUb0NhcGl0YWwiLCJ1bmRlcnNjb3JlVG9DYXBpdGFsIiwiY2FwaXRhbGl6ZU9iaiIsIm9iamVjdCIsIm1lcmdlIiwib2JqMSIsIm9iajIiLCJpc0RlZXAiLCJvYmozIiwicGljayIsIm9iaiIsInQiLCJwaWNrZWRPYmoiLCJjb21wb25lbnQiLCJmbktleSIsImZuVmFsdWUiLCJjdXJyIiwibmV4dFByb3BlcnR5IiwiaXNTdHJpbmciLCJ2YWxpZGF0ZSIsImlzQmxhbmsiLCJpc0VtYWlsIiwibWF0Y2giLCJpc0JvdW5kZWRCeSIsImdlbkFycmF5UmFuZ2UiLCJwYXJzZUlTT1N0cmluZyIsImFyclN0ciIsIkNhbGVuZGFyVHJlZSIsInZhbGlkYXRlQ2VsbCIsInRyZWUiLCJhZGRUcmVlIiwic2VsZWN0UmFuZ2UiLCJyYW5nZSIsInNlbGVjdERheXNJbk1vbnRoIiwibW9udGhEYXlzIiwic2VsZWN0TW9udGhzSW5ZZWFyIiwiaXNWYWxpZCIsImlzUmFuZ2VWYWxpZCIsInNlbGVjdGlvbiIsIm1vbnRoUmFuZ2UiLCJzdGFydERheSIsImVuZERheSIsInNlbGVjdERheSIsImZpbHRlclZhbGlkcyIsImNlbGwiLCJyZXBsYWNlTWFwcyIsInVwZGF0ZWRBdCIsIm1hcHNUb1RyZWUiLCJyZW1vdmVNYXAiLCJtYXBzIiwibWFwU3RhcnRBdCIsImF2YWlsYWJpbGl0eSIsIm5pZ2h0bHlfcmF0ZXMiLCJtaW5pbXVtX3N0YXlzIiwiYXZhaWwiLCJyYXRlcyIsIm1pbk1hcCIsImRheVNoaWZ0IiwicHJldmlvdXNEYXRlIiwibWluU3RheSIsInJhdGUiLCJpc0F2YWlsYWJsZSIsInByZXZBdmFpbGFibGUiLCJpc01vcm5pbmdCbG9ja2VkIiwiaXNBdmFpbGFibGVPdXQiLCJnZXREYXlQcm9wZXJ0eSIsInByb3AiLCJpc0RheURpc2FibGVkIiwidGVtcGxhdGVzIiwiY29uZmlnIiwibG9jYWxlcyIsImRhdGVUb0lzbyIsImlzTGF0ZXIiLCJpc0N1cnJlbnQiLCJ2YWxpZGF0aW9uT2ZDZWxsIiwidEZvcm1hdHRlciIsImRhdGVUb0FycmF5IiwibW9udGhEaWZmIiwidXRpbHNTdHlsZXMiLCJDYWxlbmRhciIsIm9wdHMiLCJWRVJTSU9OIiwidmVyc2lvbiIsIkNTU19QUkVGSVgiLCJjc3NQcmVmaXgiLCJsb2dnZXIiLCJjb25maWdEYXRhc2V0IiwiZGF0YXNldCIsImlzRHJvcERvd24iLCJpbml0Q2FsZW5kYXJEcm9wIiwibG9jYWxlIiwiZm9ybWF0RGF0ZSIsInN0YXJ0T2ZXZWVrIiwiY3VycmVudERhdGUiLCJnZXRNb250aCIsInllYXJTdGFydCIsIm1vbnRoU3RhcnQiLCJkb20iLCJjVHJlZSIsImFkZE1hcHMiLCJzdGFydF9kYXRlIiwiaXNTZWxlY3RpbmciLCJoaWdobGlnaHRlZEJvdW5kcyIsImhhc1ZhbGlkUmFuZ2UiLCJpc1JldmVyc2VTZWxlY3RhYmxlIiwiaW5pdCIsImNhbGVuZGFyIiwidGhlbWUiLCJtb250aHNXcmFwcGVyIiwiYXBwZW5kQ2hpbGQiLCJmb3J3YXJkIiwiYmFjayIsInJlbmRlck1vbnRocyIsImFkZEJ0bnNFdmVudHMiLCJzZWxlY3RhYmxlIiwiZWxTdGFydEF0IiwiZWxFbmRBdCIsInJlbnRhbElkIiwiaW5wdXRzVG9WYWx1ZXMiLCJsb2FkTWFwcyIsImNoYW5nZVNlbGVjdGlvbk9yZGVyIiwiaXNSZXZlcnNlIiwiZGVzdHJveU1vbnRocyIsInllYXJFbmQiLCJtb250aEVuZCIsImNyZWF0ZVRyZWUiLCJkaXNwbGF5TW9udGhzIiwicmV2ZXJzZWQiLCJkaXJlY3QiLCJhZGRNb250aEV2ZW50cyIsImFjdGlvbnNFbmFibGVkIiwiZW5hYmxlQWxsRGF5cyIsImRpc2FibGVCYWNrQnRuIiwicmVjb3ZlclNlbGVjdGlvbnMiLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdFN0YXJ0Iiwic2VsZWN0aW9uRW5kIiwic2VsZWN0RW5kIiwiaGlnaExpZ2h0UmFuZ2UiLCJpc0JhY2tEaXNhYmxlZCIsInN0YXJ0RGF0ZSIsImRpc2FibGVkIiwidG9nZ2xlTG9hZGluZyIsImxvYWRpbmciLCJwcmV2ZW50RGVmYXVsdCIsIm1vbnRoVG9SZW5kZXIiLCJ5ZWFyVG9SZW5kZXIiLCJpc0VuZEZpcnN0IiwicmVzZXRTZWxlY3Rpb25PbkVzY2FwZSIsImtleUNvZGUiLCJyZXNldFNlbGVjdGlvbiIsImRhdGVWYWx1ZSIsImRheUFscmVhZHlTZWxlY3RlZCIsInJhbmdlU2VsZWN0ZWQiLCJpc1Bhc3RUb2RheSIsImVuZERhdGVGaXJzdEFjdGlvbiIsInN0YXJ0RGF0ZUZpcnN0QWN0aW9uIiwic2VsZWN0aW5nRGlyZWN0Iiwic2VsZWN0aW5nUmV2ZXJzZWQiLCJoaWdobGlnaHRlZCIsImNvbXBsZXRlU2VsZWN0aW9uIiwiY2FsRHJvcCIsImNsb3NlRHJvcCIsInJlbW92ZUhpZ2hsaWdodCIsImNlbGxzIiwicXVlcnlTZWxlY3RvckFsbCIsImhvdmVyZWQiLCJob3ZlcmVkT2Zmc2V0IiwiY2VsbEEiLCJjZWxsQiIsImNoYW5nZUhpZ2hsaWdodERpcmVjdGlvbiIsImlzRGlzYWJsZWRMZWZ0IiwiaXNEaXNhYmxlZENlbnRlciIsImlzRGlzYWJsZWRSaWdodCIsImlzSW52YWxpZCIsIm9mZnNldENlbGwiLCJyZWxhdGVkVGFyZ2V0IiwiY29tcGFyZURvY3VtZW50UG9zaXRpb24iLCJOb2RlIiwiRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZIiwiZGF0ZUFycmF5Iiwic2VsZWN0RW5kQWN0aW9uIiwic2VsZWN0U3RhcnRBY3Rpb24iLCJzd2l0Y2hJbnB1dEZvY3VzIiwib25TZWxlY3RTdGFydCIsIm9uU2VsZWN0RW5kIiwiaW52YWxpZCIsImRlc3Ryb3lUb29sdGlwIiwidG9vbHRpcFBvcHBlciIsInRvb2x0aXAiLCJtYXhTdGF5IiwiaW52YWxpZFJhbmdlTWVzc2FnZSIsImFsbG93U2hvcnRlck1pblN0YXlTZWxlY3Rpb24iLCJhbGxvd0xvbmdlck1heFN0YXlTZWxlY3Rpb24iLCJoYXNWYWxpZERheXMiLCJoYXNWYWxpZE1pblN0YXkiLCJoYXNWYWxpZE1heFN0YXkiLCJoYXNJbnZhbGlkTWluU3RheSIsImhhc0ludmFsaWRNYXhTdGF5IiwiaGFzSW52YWxpZERheXMiLCJ0b29sdGlwUG9zaXRpb24iLCJQb3BwZXIiLCJvbkNsZWFyU2VsZWN0aW9uIiwiaXNTaW5nbGVJbnB1dCIsImVsU2luZ2xlSW5wdXQiLCJ2YWx1ZVRvSW5wdXQiLCJ0aW1lcyIsIm1Eb20iLCJkb21Nb250aCIsImRheUVsZW1lbnRzIiwibW9udGhEb20iLCJ0YWJsZUhlYWRlciIsImhlYWRlclRlbXBsYXRlU3RyaW5nIiwiY2FwdGlvbiIsImRheXNUZW1wbGF0ZVN0cmluZyIsImhlYWRlciIsIndlZWtkYXlzTGFiZWxzRXh0ZW5kZWQiLCJkYXlzUGVyV2VlayIsIndlZWtEYXlMYWJlbCIsInN0YXJ0T2ZNb250aCIsImdldERheSIsInJvd1RlbXBsYXRlIiwid2Vla1JvdyIsIm1vbnRoVGVtcGxhdGUiLCJ3ZWVrU2hpZnQiLCJyb3dzIiwid2Vla1NoaWZ0Q29ycmVjdGVkIiwiZGF5Q291bnRlciIsIndlZWsiLCJkYXlUZW1wbGF0ZVN0cmluZyIsIndlZWtEYXlQbGFjZWhvbGRlciIsImNsb3NlIiwic2hvd1JhdGVzIiwiaXNEaXNhYmxlZCIsImlzQ3VycmVudERheSIsImlzQXZhaWxhYmxlSW4iLCJ3ZWVrRGF5Iiwic2hvd01pblN0YXkiLCJzaG93TWF4U3RheSIsIm9uU3VjY2VzcyIsImRpc2FibGVBdmFpbGFiaXR5TWFwIiwibWFwc0xvYWRlZCIsIm9uRXJyb3IiLCJmZXRjaCIsInJlbnRhbFVybCIsImpzb24iLCJjYXRjaCIsInNpbmdsZUlucHV0RGF0ZUZvcm1hdCIsImRhdGVTdGFydCIsImRhdGVFbmQiLCJzaW5nbGVJbnB1dFNlcGFyYXRvciIsIm9uU2VsZWN0aW9uQ29tcGxldGVkIiwiZWxUYXJnZXQiLCJoaWRkZW5FbEZvcm1hdCIsImlucHV0IiwiaGlkZGVuSW5wdXQiLCJjbG9uZU5vZGUiLCJwYXJlbnRFbGVtZW50IiwiaGlkZGVuIiwiaGlkZGVuRWxFbmRBdCIsImhpZGRlbkVsU3RhcnRBdCIsInJlYWRPbmx5IiwiZHJvcEJhc2ljIiwiZHJvcFBsYWNlbWVudCIsIm9wZW5Ecm9wIiwiaXNSZXZlcnNlZCIsInZpc2libGUiLCJmb2N1c1RvdWNoRXZlbnRzIiwiYmluZCIsImVsUmVzZXQiLCJldnQiLCJjcmVhdGVFdmVudCIsImluaXRFdmVudCIsImhpZGRlblZhbHVlIiwiZGlzcGF0Y2hFdmVudCIsIm1vbnRoRGlmZmVyZW5jZSIsInR5cGUiLCJmb2N1cyIsImZvcmNlIiwic3RvcFByb3BhZ2F0aW9uIiwiX2NhbGxiYWNrIiwibXNnIiwiYXBpSG9zdCIsImFwaU5hbWVzcGFjZSIsImFwaU1hcHNSb3V0ZSIsImFwaVJlbnRhbElkIiwiYXBpQ3VycmVuY3kiLCJpZHMiLCJyb3V0ZSIsImVuIiwiZGUiLCJlcyIsImZyIiwiaXQiLCJzdiIsInJ1IiwicGwiLCJubCIsInRvb2x0aXBBcnJvdyIsIm1DZWxsIiwibGFiZWwiLCJ0aCIsIm1pblN0YXlUIiwibWF4U3RheVQiLCJyYXRlVCIsInRvZGF5IiwiY250IiwiaW5mbyIsIm51bSIsInBhZCIsInZhbCIsImxvZyIsImF2YWlsYWJsZUluIiwiYXZhaWxhYmxlT3V0IiwiQm9va2luZ1N5bmNXaWRnZXRVdGlscyIsImluaXRpYWxpemVkIiwiY2FsIiwiaW5zdGFuY2VzIiwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldCJdLCJzb3VyY2VSb290IjoiIn0=
8929
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0EsTUFBTW14QyxHQUFHLEdBQUksSUFBSTlPLFFBQUosQ0FBYXpoQyxPQUFiLENBQWI7SUFFQXN3QyxXQUFXLENBQUNyc0MsSUFBWixDQUFpQnNzQyxHQUFqQjtFQUNELENBTEQ7RUFPQTlPLFFBQVEsQ0FBQytPLFNBQVQsR0FBcUJGLFdBQXJCO0VBQ0EsT0FBT0EsV0FBUDtBQUNELENBZEQ7O0FBZ0JBN08sUUFBUSxDQUFDRSxPQUFULEdBQW1CM2lCLHNFQUFuQjs7QUFFQSxJQUFJOVYsUUFBUSxDQUFDb3ZCLFVBQVQsS0FBd0IsU0FBNUIsRUFBdUM7RUFDckNtSixRQUFRLENBQUN5QixJQUFUO0FBQ0QsQ0FGRCxNQUVPO0VBQ0xoNkIsUUFBUSxDQUFDaUosZ0JBQVQsQ0FBMEIsa0JBQTFCLEVBQThDLE1BQU07SUFDbERzdkIsUUFBUSxDQUFDeUIsSUFBVDtFQUNELENBRkQ7QUFHRDs7QUFFRHo5QixNQUFNLENBQUNnckMseUJBQVAsR0FBbUNoUCxRQUFuQztBQUVBLGlFQUFlQSxRQUFmLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2NyZWF0ZVBvcHBlci5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9jb250YWlucy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q2xpcHBpbmdSZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRSZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldEhUTUxFbGVtZW50U2Nyb2xsLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldExheW91dFJlY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZU5hbWUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZVNjcm9sbC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0UGFyZW50Tm9kZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRTY3JvbGxQYXJlbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Vmlld3BvcnRSZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvdy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGwuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93U2Nyb2xsQmFyWC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzTGF5b3V0Vmlld3BvcnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNTY3JvbGxQYXJlbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNUYWJsZUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvbGlzdFNjcm9sbFBhcmVudHMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9lbnVtcy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2FwcGx5U3R5bGVzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2Fycm93LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2NvbXB1dGVTdHlsZXMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvZmxpcC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9oaWRlLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL29mZnNldC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL3ByZXZlbnRPdmVyZmxvdy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3BvcHBlci1saXRlLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvcG9wcGVyLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvY29tcHV0ZUF1dG9QbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9jb21wdXRlT2Zmc2V0cy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2RlYm91bmNlLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9leHBhbmRUb0hhc2hNYXAuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9mb3JtYXQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRBbHRBeGlzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRWYXJpYXRpb24uanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tYXRoLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWVyZ2VCeU5hbWUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tZXJnZVBhZGRpbmdPYmplY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9vcmRlck1vZGlmaWVycy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy91bmlxdWVCeS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3VzZXJBZ2VudC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3ZhbGlkYXRlTW9kaWZpZXJzLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvd2l0aGluLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvY3VycmVuY3ktc3ltYm9sLW1hcC9jdXJyZW5jeS1zeW1ib2wtbWFwLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9jdXJyZW5jeS1zeW1ib2wtbWFwL21hcC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvc3RydGltZS9kaXN0L3N0cnRpbWUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvYWpheC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9hcnJheS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9hcnJheS9pc0FycmF5LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2N1cnJlbmN5L2N1cnJlbmN5Rm9ybWF0dGVyLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2N1cnJlbmN5L2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RhdGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZGF0ZS9tb250aExlbmd0aC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vYWRkQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL2NyZWF0ZUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL2Rlc3Ryb3lFbGVtZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9lbGVtZW50RnJvbVN0cmluZy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vZmluZEJ5Q2xhc3NOYW1lLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9nZXRDbGFzc05hbWUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL2dldFBhcmVudEF0dHJpYnV0ZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vaGFzQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2RvbS9pc0luc2lkZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vcmVtb3ZlQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZG9tL3NldENsYXNzTmFtZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9kb20vdHJhdmVyc2VUb1BhcmVudFdpdGhBdHRyLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL2VtaXR0ZXIuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZnVuY3Rpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvZnVuY3Rpb24vaXNGdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9pcy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9tYXRoL2luZGV4LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL21hdGgvaXNOYU5Qb2x5ZmlsbC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9tYXRoL2lzTnVtZXJpYy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9vYmplY3QvY2FwaXRhbGl6ZU9iai5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9vYmplY3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvb2JqZWN0L2lzT2JqZWN0LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL29iamVjdC9tZXJnZS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9vYmplY3QvcGljay5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9vYmplY3Qvc2VyaWFsaXplLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL29iamVjdC90cmF2ZXJzZU9iai5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9zdHJpbmcvZGFzaFRvQ2FwaXRhbC5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvd2lkZ2V0LXV0aWxzL3NyYy9zdHJpbmcvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvc3RyaW5nL2lzU3RyaW5nLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL3N0cmluZy90b1VuZGVyc2NvcmUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvc3RyaW5nL3VuZGVyc2NvcmVUb0NhcGl0YWwuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvdmFsaWRhdGUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vc3JjL2NhbGVuZGFyLXRyZWUuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vc3JjL2NhbGVuZGFyLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL3NyYy9jb25maWcuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vc3JjL2xvY2FsZXMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vc3JjL3RlbXBsYXRlcy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9zcmMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vc3JjL3N0eWxlcy9jYWxlbmRhci5zY3NzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL3N0eWxlcy9yZXNldC5zY3NzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL3NyYy9zdHlsZXMvY2FsZW5kYXIuc2Nzcz82OWQ3Iiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy93aWRnZXQtdXRpbHMvc3JjL3N0eWxlcy9yZXNldC5zY3NzP2I3NDAiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qcyIsIndlYnBhY2s6Ly9ib29raW5nc3luYy1jYWxlbmRhci13aWRnZXQvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0L3dlYnBhY2svcnVudGltZS9qc29ucCBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL2Jvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvbm9uY2UiLCJ3ZWJwYWNrOi8vYm9va2luZ3N5bmMtY2FsZW5kYXItd2lkZ2V0Ly4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXRDb21wb3NpdGVSZWN0IGZyb20gXCIuL2RvbS11dGlscy9nZXRDb21wb3NpdGVSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2RvbS11dGlscy9saXN0U2Nyb2xsUGFyZW50cy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IG9yZGVyTW9kaWZpZXJzIGZyb20gXCIuL3V0aWxzL29yZGVyTW9kaWZpZXJzLmpzXCI7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSBcIi4vdXRpbHMvZGVib3VuY2UuanNcIjtcbmltcG9ydCB2YWxpZGF0ZU1vZGlmaWVycyBmcm9tIFwiLi91dGlscy92YWxpZGF0ZU1vZGlmaWVycy5qc1wiO1xuaW1wb3J0IHVuaXF1ZUJ5IGZyb20gXCIuL3V0aWxzL3VuaXF1ZUJ5LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgbWVyZ2VCeU5hbWUgZnJvbSBcIi4vdXRpbHMvbWVyZ2VCeU5hbWUuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCB7IGF1dG8gfSBmcm9tIFwiLi9lbnVtcy5qc1wiO1xudmFyIElOVkFMSURfRUxFTUVOVF9FUlJPUiA9ICdQb3BwZXI6IEludmFsaWQgcmVmZXJlbmNlIG9yIHBvcHBlciBhcmd1bWVudCBwcm92aWRlZC4gVGhleSBtdXN0IGJlIGVpdGhlciBhIERPTSBlbGVtZW50IG9yIHZpcnR1YWwgZWxlbWVudC4nO1xudmFyIElORklOSVRFX0xPT1BfRVJST1IgPSAnUG9wcGVyOiBBbiBpbmZpbml0ZSBsb29wIGluIHRoZSBtb2RpZmllcnMgY3ljbGUgaGFzIGJlZW4gZGV0ZWN0ZWQhIFRoZSBjeWNsZSBoYXMgYmVlbiBpbnRlcnJ1cHRlZCB0byBwcmV2ZW50IGEgYnJvd3NlciBjcmFzaC4nO1xudmFyIERFRkFVTFRfT1BUSU9OUyA9IHtcbiAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgbW9kaWZpZXJzOiBbXSxcbiAgc3RyYXRlZ3k6ICdhYnNvbHV0ZSdcbn07XG5cbmZ1bmN0aW9uIGFyZVZhbGlkRWxlbWVudHMoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gIWFyZ3Muc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiAhKGVsZW1lbnQgJiYgdHlwZW9mIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID09PSAnZnVuY3Rpb24nKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3BwZXJHZW5lcmF0b3IoZ2VuZXJhdG9yT3B0aW9ucykge1xuICBpZiAoZ2VuZXJhdG9yT3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgZ2VuZXJhdG9yT3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9nZW5lcmF0b3JPcHRpb25zID0gZ2VuZXJhdG9yT3B0aW9ucyxcbiAgICAgIF9nZW5lcmF0b3JPcHRpb25zJGRlZiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRNb2RpZmllcnMsXG4gICAgICBkZWZhdWx0TW9kaWZpZXJzID0gX2dlbmVyYXRvck9wdGlvbnMkZGVmID09PSB2b2lkIDAgPyBbXSA6IF9nZW5lcmF0b3JPcHRpb25zJGRlZixcbiAgICAgIF9nZW5lcmF0b3JPcHRpb25zJGRlZjIgPSBfZ2VuZXJhdG9yT3B0aW9ucy5kZWZhdWx0T3B0aW9ucyxcbiAgICAgIGRlZmF1bHRPcHRpb25zID0gX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9PT0gdm9pZCAwID8gREVGQVVMVF9PUFRJT05TIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmMjtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNyZWF0ZVBvcHBlcihyZWZlcmVuY2UsIHBvcHBlciwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICAgIG9wdGlvbnMgPSBkZWZhdWx0T3B0aW9ucztcbiAgICB9XG5cbiAgICB2YXIgc3RhdGUgPSB7XG4gICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgb3JkZXJlZE1vZGlmaWVyczogW10sXG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX09QVElPTlMsIGRlZmF1bHRPcHRpb25zKSxcbiAgICAgIG1vZGlmaWVyc0RhdGE6IHt9LFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlOiByZWZlcmVuY2UsXG4gICAgICAgIHBvcHBlcjogcG9wcGVyXG4gICAgICB9LFxuICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICBzdHlsZXM6IHt9XG4gICAgfTtcbiAgICB2YXIgZWZmZWN0Q2xlYW51cEZucyA9IFtdO1xuICAgIHZhciBpc0Rlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHZhciBpbnN0YW5jZSA9IHtcbiAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgIHNldE9wdGlvbnM6IGZ1bmN0aW9uIHNldE9wdGlvbnMoc2V0T3B0aW9uc0FjdGlvbikge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IHR5cGVvZiBzZXRPcHRpb25zQWN0aW9uID09PSAnZnVuY3Rpb24nID8gc2V0T3B0aW9uc0FjdGlvbihzdGF0ZS5vcHRpb25zKSA6IHNldE9wdGlvbnNBY3Rpb247XG4gICAgICAgIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgc3RhdGUub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRPcHRpb25zLCBzdGF0ZS5vcHRpb25zLCBvcHRpb25zKTtcbiAgICAgICAgc3RhdGUuc2Nyb2xsUGFyZW50cyA9IHtcbiAgICAgICAgICByZWZlcmVuY2U6IGlzRWxlbWVudChyZWZlcmVuY2UpID8gbGlzdFNjcm9sbFBhcmVudHMocmVmZXJlbmNlKSA6IHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCA/IGxpc3RTY3JvbGxQYXJlbnRzKHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCkgOiBbXSxcbiAgICAgICAgICBwb3BwZXI6IGxpc3RTY3JvbGxQYXJlbnRzKHBvcHBlcilcbiAgICAgICAgfTsgLy8gT3JkZXJzIHRoZSBtb2RpZmllcnMgYmFzZWQgb24gdGhlaXIgZGVwZW5kZW5jaWVzIGFuZCBgcGhhc2VgXG4gICAgICAgIC8vIHByb3BlcnRpZXNcblxuICAgICAgICB2YXIgb3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyTW9kaWZpZXJzKG1lcmdlQnlOYW1lKFtdLmNvbmNhdChkZWZhdWx0TW9kaWZpZXJzLCBzdGF0ZS5vcHRpb25zLm1vZGlmaWVycykpKTsgLy8gU3RyaXAgb3V0IGRpc2FibGVkIG1vZGlmaWVyc1xuXG4gICAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobSkge1xuICAgICAgICAgIHJldHVybiBtLmVuYWJsZWQ7XG4gICAgICAgIH0pOyAvLyBWYWxpZGF0ZSB0aGUgcHJvdmlkZWQgbW9kaWZpZXJzIHNvIHRoYXQgdGhlIGNvbnN1bWVyIHdpbGwgZ2V0IHdhcm5lZFxuICAgICAgICAvLyBpZiBvbmUgb2YgdGhlIG1vZGlmaWVycyBpcyBpbnZhbGlkIGZvciBhbnkgcmVhc29uXG5cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgIHZhciBtb2RpZmllcnMgPSB1bmlxdWVCeShbXS5jb25jYXQob3JkZXJlZE1vZGlmaWVycywgc3RhdGUub3B0aW9ucy5tb2RpZmllcnMpLCBmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWU7XG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB2YWxpZGF0ZU1vZGlmaWVycyhtb2RpZmllcnMpO1xuXG4gICAgICAgICAgaWYgKGdldEJhc2VQbGFjZW1lbnQoc3RhdGUub3B0aW9ucy5wbGFjZW1lbnQpID09PSBhdXRvKSB7XG4gICAgICAgICAgICB2YXIgZmxpcE1vZGlmaWVyID0gc3RhdGUub3JkZXJlZE1vZGlmaWVycy5maW5kKGZ1bmN0aW9uIChfcmVmMikge1xuICAgICAgICAgICAgICB2YXIgbmFtZSA9IF9yZWYyLm5hbWU7XG4gICAgICAgICAgICAgIHJldHVybiBuYW1lID09PSAnZmxpcCc7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKCFmbGlwTW9kaWZpZXIpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihbJ1BvcHBlcjogXCJhdXRvXCIgcGxhY2VtZW50cyByZXF1aXJlIHRoZSBcImZsaXBcIiBtb2RpZmllciBiZScsICdwcmVzZW50IGFuZCBlbmFibGVkIHRvIHdvcmsuJ10uam9pbignICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX2dldENvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHBvcHBlciksXG4gICAgICAgICAgICAgIG1hcmdpblRvcCA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpblRvcCxcbiAgICAgICAgICAgICAgbWFyZ2luUmlnaHQgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5SaWdodCxcbiAgICAgICAgICAgICAgbWFyZ2luQm90dG9tID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luQm90dG9tLFxuICAgICAgICAgICAgICBtYXJnaW5MZWZ0ID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luTGVmdDsgLy8gV2Ugbm8gbG9uZ2VyIHRha2UgaW50byBhY2NvdW50IGBtYXJnaW5zYCBvbiB0aGUgcG9wcGVyLCBhbmQgaXQgY2FuXG4gICAgICAgICAgLy8gY2F1c2UgYnVncyB3aXRoIHBvc2l0aW9uaW5nLCBzbyB3ZSdsbCB3YXJuIHRoZSBjb25zdW1lclxuXG5cbiAgICAgICAgICBpZiAoW21hcmdpblRvcCwgbWFyZ2luUmlnaHQsIG1hcmdpbkJvdHRvbSwgbWFyZ2luTGVmdF0uc29tZShmdW5jdGlvbiAobWFyZ2luKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChtYXJnaW4pO1xuICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oWydQb3BwZXI6IENTUyBcIm1hcmdpblwiIHN0eWxlcyBjYW5ub3QgYmUgdXNlZCB0byBhcHBseSBwYWRkaW5nJywgJ2JldHdlZW4gdGhlIHBvcHBlciBhbmQgaXRzIHJlZmVyZW5jZSBlbGVtZW50IG9yIGJvdW5kYXJ5LicsICdUbyByZXBsaWNhdGUgbWFyZ2luLCB1c2UgdGhlIGBvZmZzZXRgIG1vZGlmaWVyLCBhcyB3ZWxsIGFzJywgJ3RoZSBgcGFkZGluZ2Agb3B0aW9uIGluIHRoZSBgcHJldmVudE92ZXJmbG93YCBhbmQgYGZsaXBgJywgJ21vZGlmaWVycy4nXS5qb2luKCcgJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJ1bk1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICByZXR1cm4gaW5zdGFuY2UudXBkYXRlKCk7XG4gICAgICB9LFxuICAgICAgLy8gU3luYyB1cGRhdGUg4oCTIGl0IHdpbGwgYWx3YXlzIGJlIGV4ZWN1dGVkLCBldmVuIGlmIG5vdCBuZWNlc3NhcnkuIFRoaXNcbiAgICAgIC8vIGlzIHVzZWZ1bCBmb3IgbG93IGZyZXF1ZW5jeSB1cGRhdGVzIHdoZXJlIHN5bmMgYmVoYXZpb3Igc2ltcGxpZmllcyB0aGVcbiAgICAgIC8vIGxvZ2ljLlxuICAgICAgLy8gRm9yIGhpZ2ggZnJlcXVlbmN5IHVwZGF0ZXMgKGUuZy4gYHJlc2l6ZWAgYW5kIGBzY3JvbGxgIGV2ZW50cyksIGFsd2F5c1xuICAgICAgLy8gcHJlZmVyIHRoZSBhc3luYyBQb3BwZXIjdXBkYXRlIG1ldGhvZFxuICAgICAgZm9yY2VVcGRhdGU6IGZ1bmN0aW9uIGZvcmNlVXBkYXRlKCkge1xuICAgICAgICBpZiAoaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX3N0YXRlJGVsZW1lbnRzID0gc3RhdGUuZWxlbWVudHMsXG4gICAgICAgICAgICByZWZlcmVuY2UgPSBfc3RhdGUkZWxlbWVudHMucmVmZXJlbmNlLFxuICAgICAgICAgICAgcG9wcGVyID0gX3N0YXRlJGVsZW1lbnRzLnBvcHBlcjsgLy8gRG9uJ3QgcHJvY2VlZCBpZiBgcmVmZXJlbmNlYCBvciBgcG9wcGVyYCBhcmUgbm90IHZhbGlkIGVsZW1lbnRzXG4gICAgICAgIC8vIGFueW1vcmVcblxuICAgICAgICBpZiAoIWFyZVZhbGlkRWxlbWVudHMocmVmZXJlbmNlLCBwb3BwZXIpKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihJTlZBTElEX0VMRU1FTlRfRVJST1IpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSAvLyBTdG9yZSB0aGUgcmVmZXJlbmNlIGFuZCBwb3BwZXIgcmVjdHMgdG8gYmUgcmVhZCBieSBtb2RpZmllcnNcblxuXG4gICAgICAgIHN0YXRlLnJlY3RzID0ge1xuICAgICAgICAgIHJlZmVyZW5jZTogZ2V0Q29tcG9zaXRlUmVjdChyZWZlcmVuY2UsIGdldE9mZnNldFBhcmVudChwb3BwZXIpLCBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5ID09PSAnZml4ZWQnKSxcbiAgICAgICAgICBwb3BwZXI6IGdldExheW91dFJlY3QocG9wcGVyKVxuICAgICAgICB9OyAvLyBNb2RpZmllcnMgaGF2ZSB0aGUgYWJpbGl0eSB0byByZXNldCB0aGUgY3VycmVudCB1cGRhdGUgY3ljbGUuIFRoZVxuICAgICAgICAvLyBtb3N0IGNvbW1vbiB1c2UgY2FzZSBmb3IgdGhpcyBpcyB0aGUgYGZsaXBgIG1vZGlmaWVyIGNoYW5naW5nIHRoZVxuICAgICAgICAvLyBwbGFjZW1lbnQsIHdoaWNoIHRoZW4gbmVlZHMgdG8gcmUtcnVuIGFsbCB0aGUgbW9kaWZpZXJzLCBiZWNhdXNlIHRoZVxuICAgICAgICAvLyBsb2dpYyB3YXMgcHJldmlvdXNseSByYW4gZm9yIHRoZSBwcmV2aW91cyBwbGFjZW1lbnQgYW5kIGlzIHRoZXJlZm9yZVxuICAgICAgICAvLyBzdGFsZS9pbmNvcnJlY3RcblxuICAgICAgICBzdGF0ZS5yZXNldCA9IGZhbHNlO1xuICAgICAgICBzdGF0ZS5wbGFjZW1lbnQgPSBzdGF0ZS5vcHRpb25zLnBsYWNlbWVudDsgLy8gT24gZWFjaCB1cGRhdGUgY3ljbGUsIHRoZSBgbW9kaWZpZXJzRGF0YWAgcHJvcGVydHkgZm9yIGVhY2ggbW9kaWZpZXJcbiAgICAgICAgLy8gaXMgZmlsbGVkIHdpdGggdGhlIGluaXRpYWwgZGF0YSBzcGVjaWZpZWQgYnkgdGhlIG1vZGlmaWVyLiBUaGlzIG1lYW5zXG4gICAgICAgIC8vIGl0IGRvZXNuJ3QgcGVyc2lzdCBhbmQgaXMgZnJlc2ggb24gZWFjaCB1cGRhdGUuXG4gICAgICAgIC8vIFRvIGVuc3VyZSBwZXJzaXN0ZW50IGRhdGEsIHVzZSBgJHtuYW1lfSNwZXJzaXN0ZW50YFxuXG4gICAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgICAgICByZXR1cm4gc3RhdGUubW9kaWZpZXJzRGF0YVttb2RpZmllci5uYW1lXSA9IE9iamVjdC5hc3NpZ24oe30sIG1vZGlmaWVyLmRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fZGVidWdfbG9vcHNfXyA9IDA7XG5cbiAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHN0YXRlLm9yZGVyZWRNb2RpZmllcnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgX19kZWJ1Z19sb29wc19fICs9IDE7XG5cbiAgICAgICAgICAgIGlmIChfX2RlYnVnX2xvb3BzX18gPiAxMDApIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihJTkZJTklURV9MT09QX0VSUk9SKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHN0YXRlLnJlc2V0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBzdGF0ZS5yZXNldCA9IGZhbHNlO1xuICAgICAgICAgICAgaW5kZXggPSAtMTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBfc3RhdGUkb3JkZXJlZE1vZGlmaWUgPSBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzW2luZGV4XSxcbiAgICAgICAgICAgICAgZm4gPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUuZm4sXG4gICAgICAgICAgICAgIF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUub3B0aW9ucyxcbiAgICAgICAgICAgICAgX29wdGlvbnMgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyID09PSB2b2lkIDAgPyB7fSA6IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIsXG4gICAgICAgICAgICAgIG5hbWUgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUubmFtZTtcblxuICAgICAgICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHN0YXRlID0gZm4oe1xuICAgICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICAgIG9wdGlvbnM6IF9vcHRpb25zLFxuICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2VcbiAgICAgICAgICAgIH0pIHx8IHN0YXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIEFzeW5jIGFuZCBvcHRpbWlzdGljYWxseSBvcHRpbWl6ZWQgdXBkYXRlIOKAkyBpdCB3aWxsIG5vdCBiZSBleGVjdXRlZCBpZlxuICAgICAgLy8gbm90IG5lY2Vzc2FyeSAoZGVib3VuY2VkIHRvIHJ1biBhdCBtb3N0IG9uY2UtcGVyLXRpY2spXG4gICAgICB1cGRhdGU6IGRlYm91bmNlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgICAgaW5zdGFuY2UuZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgICByZXNvbHZlKHN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICAgIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgaXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoIWFyZVZhbGlkRWxlbWVudHMocmVmZXJlbmNlLCBwb3BwZXIpKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoSU5WQUxJRF9FTEVNRU5UX0VSUk9SKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgIH1cblxuICAgIGluc3RhbmNlLnNldE9wdGlvbnMob3B0aW9ucykudGhlbihmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgIGlmICghaXNEZXN0cm95ZWQgJiYgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKSB7XG4gICAgICAgIG9wdGlvbnMub25GaXJzdFVwZGF0ZShzdGF0ZSk7XG4gICAgICB9XG4gICAgfSk7IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIGV4ZWN1dGUgYXJiaXRyYXJ5IGNvZGUgYmVmb3JlIHRoZSBmaXJzdFxuICAgIC8vIHVwZGF0ZSBjeWNsZSBydW5zLiBUaGV5IHdpbGwgYmUgZXhlY3V0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHVwZGF0ZVxuICAgIC8vIGN5Y2xlLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGEgbW9kaWZpZXIgYWRkcyBzb21lIHBlcnNpc3RlbnQgZGF0YSB0aGF0XG4gICAgLy8gb3RoZXIgbW9kaWZpZXJzIG5lZWQgdG8gdXNlLCBidXQgdGhlIG1vZGlmaWVyIGlzIHJ1biBhZnRlciB0aGUgZGVwZW5kZW50XG4gICAgLy8gb25lLlxuXG4gICAgZnVuY3Rpb24gcnVuTW9kaWZpZXJFZmZlY3RzKCkge1xuICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmMykge1xuICAgICAgICB2YXIgbmFtZSA9IF9yZWYzLm5hbWUsXG4gICAgICAgICAgICBfcmVmMyRvcHRpb25zID0gX3JlZjMub3B0aW9ucyxcbiAgICAgICAgICAgIG9wdGlvbnMgPSBfcmVmMyRvcHRpb25zID09PSB2b2lkIDAgPyB7fSA6IF9yZWYzJG9wdGlvbnMsXG4gICAgICAgICAgICBlZmZlY3QgPSBfcmVmMy5lZmZlY3Q7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBlZmZlY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICB2YXIgY2xlYW51cEZuID0gZWZmZWN0KHtcbiAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2UsXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB2YXIgbm9vcEZuID0gZnVuY3Rpb24gbm9vcEZuKCkge307XG5cbiAgICAgICAgICBlZmZlY3RDbGVhbnVwRm5zLnB1c2goY2xlYW51cEZuIHx8IG5vb3BGbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKSB7XG4gICAgICBlZmZlY3RDbGVhbnVwRm5zLmZvckVhY2goZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHJldHVybiBmbigpO1xuICAgICAgfSk7XG4gICAgICBlZmZlY3RDbGVhbnVwRm5zID0gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9O1xufVxuZXhwb3J0IHZhciBjcmVhdGVQb3BwZXIgPSAvKiNfX1BVUkVfXyovcG9wcGVyR2VuZXJhdG9yKCk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgZGV0ZWN0T3ZlcmZsb3cgfTsiLCJpbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb250YWlucyhwYXJlbnQsIGNoaWxkKSB7XG4gIHZhciByb290Tm9kZSA9IGNoaWxkLmdldFJvb3ROb2RlICYmIGNoaWxkLmdldFJvb3ROb2RlKCk7IC8vIEZpcnN0LCBhdHRlbXB0IHdpdGggZmFzdGVyIG5hdGl2ZSBtZXRob2RcblxuICBpZiAocGFyZW50LmNvbnRhaW5zKGNoaWxkKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIHRoZW4gZmFsbGJhY2sgdG8gY3VzdG9tIGltcGxlbWVudGF0aW9uIHdpdGggU2hhZG93IERPTSBzdXBwb3J0XG4gIGVsc2UgaWYgKHJvb3ROb2RlICYmIGlzU2hhZG93Um9vdChyb290Tm9kZSkpIHtcbiAgICAgIHZhciBuZXh0ID0gY2hpbGQ7XG5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKG5leHQgJiYgcGFyZW50LmlzU2FtZU5vZGUobmV4dCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ106IG5lZWQgYSBiZXR0ZXIgd2F5IHRvIGhhbmRsZSB0aGlzLi4uXG5cblxuICAgICAgICBuZXh0ID0gbmV4dC5wYXJlbnROb2RlIHx8IG5leHQuaG9zdDtcbiAgICAgIH0gd2hpbGUgKG5leHQpO1xuICAgIH0gLy8gR2l2ZSB1cCwgdGhlIHJlc3VsdCBpcyBmYWxzZVxuXG5cbiAgcmV0dXJuIGZhbHNlO1xufSIsImltcG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgaXNMYXlvdXRWaWV3cG9ydCBmcm9tIFwiLi9pc0xheW91dFZpZXdwb3J0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3kpIHtcbiAgaWYgKGluY2x1ZGVTY2FsZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZVNjYWxlID0gZmFsc2U7XG4gIH1cblxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuXG4gIHZhciBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIHNjYWxlWCA9IDE7XG4gIHZhciBzY2FsZVkgPSAxO1xuXG4gIGlmIChpbmNsdWRlU2NhbGUgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIHNjYWxlWCA9IGVsZW1lbnQub2Zmc2V0V2lkdGggPiAwID8gcm91bmQoY2xpZW50UmVjdC53aWR0aCkgLyBlbGVtZW50Lm9mZnNldFdpZHRoIHx8IDEgOiAxO1xuICAgIHNjYWxlWSA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0ID4gMCA/IHJvdW5kKGNsaWVudFJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDEgOiAxO1xuICB9XG5cbiAgdmFyIF9yZWYgPSBpc0VsZW1lbnQoZWxlbWVudCkgPyBnZXRXaW5kb3coZWxlbWVudCkgOiB3aW5kb3csXG4gICAgICB2aXN1YWxWaWV3cG9ydCA9IF9yZWYudmlzdWFsVmlld3BvcnQ7XG5cbiAgdmFyIGFkZFZpc3VhbE9mZnNldHMgPSAhaXNMYXlvdXRWaWV3cG9ydCgpICYmIGlzRml4ZWRTdHJhdGVneTtcbiAgdmFyIHggPSAoY2xpZW50UmVjdC5sZWZ0ICsgKGFkZFZpc3VhbE9mZnNldHMgJiYgdmlzdWFsVmlld3BvcnQgPyB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0IDogMCkpIC8gc2NhbGVYO1xuICB2YXIgeSA9IChjbGllbnRSZWN0LnRvcCArIChhZGRWaXN1YWxPZmZzZXRzICYmIHZpc3VhbFZpZXdwb3J0ID8gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wIDogMCkpIC8gc2NhbGVZO1xuICB2YXIgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGVYO1xuICB2YXIgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQgLyBzY2FsZVk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHRvcDogeSxcbiAgICByaWdodDogeCArIHdpZHRoLFxuICAgIGJvdHRvbTogeSArIGhlaWdodCxcbiAgICBsZWZ0OiB4LFxuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xufSIsImltcG9ydCB7IHZpZXdwb3J0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0Vmlld3BvcnRSZWN0IGZyb20gXCIuL2dldFZpZXdwb3J0UmVjdC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50UmVjdCBmcm9tIFwiLi9nZXREb2N1bWVudFJlY3QuanNcIjtcbmltcG9ydCBsaXN0U2Nyb2xsUGFyZW50cyBmcm9tIFwiLi9saXN0U2Nyb2xsUGFyZW50cy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGNvbnRhaW5zIGZyb20gXCIuL2NvbnRhaW5zLmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCByZWN0VG9DbGllbnRSZWN0IGZyb20gXCIuLi91dGlscy9yZWN0VG9DbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgeyBtYXgsIG1pbiB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIHZhciByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIGZhbHNlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIHJlY3QudG9wID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudFRvcDtcbiAgcmVjdC5sZWZ0ID0gcmVjdC5sZWZ0ICsgZWxlbWVudC5jbGllbnRMZWZ0O1xuICByZWN0LmJvdHRvbSA9IHJlY3QudG9wICsgZWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gIHJlY3QucmlnaHQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LndpZHRoID0gZWxlbWVudC5jbGllbnRXaWR0aDtcbiAgcmVjdC5oZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC54ID0gcmVjdC5sZWZ0O1xuICByZWN0LnkgPSByZWN0LnRvcDtcbiAgcmV0dXJuIHJlY3Q7XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSkge1xuICByZXR1cm4gY2xpcHBpbmdQYXJlbnQgPT09IHZpZXdwb3J0ID8gcmVjdFRvQ2xpZW50UmVjdChnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpKSA6IGlzRWxlbWVudChjbGlwcGluZ1BhcmVudCkgPyBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChjbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpIDogcmVjdFRvQ2xpZW50UmVjdChnZXREb2N1bWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKSk7XG59IC8vIEEgXCJjbGlwcGluZyBwYXJlbnRcIiBpcyBhbiBvdmVyZmxvd2FibGUgY29udGFpbmVyIHdpdGggdGhlIGNoYXJhY3RlcmlzdGljIG9mXG4vLyBjbGlwcGluZyAob3IgaGlkaW5nKSBvdmVyZmxvd2luZyBlbGVtZW50cyB3aXRoIGEgcG9zaXRpb24gZGlmZmVyZW50IGZyb21cbi8vIGBpbml0aWFsYFxuXG5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUGFyZW50cyhlbGVtZW50KSB7XG4gIHZhciBjbGlwcGluZ1BhcmVudHMgPSBsaXN0U2Nyb2xsUGFyZW50cyhnZXRQYXJlbnROb2RlKGVsZW1lbnQpKTtcbiAgdmFyIGNhbkVzY2FwZUNsaXBwaW5nID0gWydhYnNvbHV0ZScsICdmaXhlZCddLmluZGV4T2YoZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbikgPj0gMDtcbiAgdmFyIGNsaXBwZXJFbGVtZW50ID0gY2FuRXNjYXBlQ2xpcHBpbmcgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldE9mZnNldFBhcmVudChlbGVtZW50KSA6IGVsZW1lbnQ7XG5cbiAgaWYgKCFpc0VsZW1lbnQoY2xpcHBlckVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy8xNDE0XG5cblxuICByZXR1cm4gY2xpcHBpbmdQYXJlbnRzLmZpbHRlcihmdW5jdGlvbiAoY2xpcHBpbmdQYXJlbnQpIHtcbiAgICByZXR1cm4gaXNFbGVtZW50KGNsaXBwaW5nUGFyZW50KSAmJiBjb250YWlucyhjbGlwcGluZ1BhcmVudCwgY2xpcHBlckVsZW1lbnQpICYmIGdldE5vZGVOYW1lKGNsaXBwaW5nUGFyZW50KSAhPT0gJ2JvZHknO1xuICB9KTtcbn0gLy8gR2V0cyB0aGUgbWF4aW11bSBhcmVhIHRoYXQgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBkdWUgdG8gYW55IG51bWJlciBvZlxuLy8gY2xpcHBpbmcgcGFyZW50c1xuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChlbGVtZW50LCBib3VuZGFyeSwgcm9vdEJvdW5kYXJ5LCBzdHJhdGVneSkge1xuICB2YXIgbWFpbkNsaXBwaW5nUGFyZW50cyA9IGJvdW5kYXJ5ID09PSAnY2xpcHBpbmdQYXJlbnRzJyA/IGdldENsaXBwaW5nUGFyZW50cyhlbGVtZW50KSA6IFtdLmNvbmNhdChib3VuZGFyeSk7XG4gIHZhciBjbGlwcGluZ1BhcmVudHMgPSBbXS5jb25jYXQobWFpbkNsaXBwaW5nUGFyZW50cywgW3Jvb3RCb3VuZGFyeV0pO1xuICB2YXIgZmlyc3RDbGlwcGluZ1BhcmVudCA9IGNsaXBwaW5nUGFyZW50c1swXTtcbiAgdmFyIGNsaXBwaW5nUmVjdCA9IGNsaXBwaW5nUGFyZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjY1JlY3QsIGNsaXBwaW5nUGFyZW50KSB7XG4gICAgdmFyIHJlY3QgPSBnZXRDbGllbnRSZWN0RnJvbU1peGVkVHlwZShlbGVtZW50LCBjbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpO1xuICAgIGFjY1JlY3QudG9wID0gbWF4KHJlY3QudG9wLCBhY2NSZWN0LnRvcCk7XG4gICAgYWNjUmVjdC5yaWdodCA9IG1pbihyZWN0LnJpZ2h0LCBhY2NSZWN0LnJpZ2h0KTtcbiAgICBhY2NSZWN0LmJvdHRvbSA9IG1pbihyZWN0LmJvdHRvbSwgYWNjUmVjdC5ib3R0b20pO1xuICAgIGFjY1JlY3QubGVmdCA9IG1heChyZWN0LmxlZnQsIGFjY1JlY3QubGVmdCk7XG4gICAgcmV0dXJuIGFjY1JlY3Q7XG4gIH0sIGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KSk7XG4gIGNsaXBwaW5nUmVjdC53aWR0aCA9IGNsaXBwaW5nUmVjdC5yaWdodCAtIGNsaXBwaW5nUmVjdC5sZWZ0O1xuICBjbGlwcGluZ1JlY3QuaGVpZ2h0ID0gY2xpcHBpbmdSZWN0LmJvdHRvbSAtIGNsaXBwaW5nUmVjdC50b3A7XG4gIGNsaXBwaW5nUmVjdC54ID0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC55ID0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgcmV0dXJuIGNsaXBwaW5nUmVjdDtcbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldE5vZGVTY3JvbGwgZnJvbSBcIi4vZ2V0Tm9kZVNjcm9sbC5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnRTY2FsZWQoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMTtcbiAgdmFyIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDE7XG4gIHJldHVybiBzY2FsZVggIT09IDEgfHwgc2NhbGVZICE9PSAxO1xufSAvLyBSZXR1cm5zIHRoZSBjb21wb3NpdGUgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuXG4vLyBDb21wb3NpdGUgbWVhbnMgaXQgdGFrZXMgaW50byBhY2NvdW50IHRyYW5zZm9ybXMgYXMgd2VsbCBhcyBsYXlvdXQuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcG9zaXRlUmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50LCBpc0ZpeGVkKSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnRJc1NjYWxlZCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc0VsZW1lbnRTY2FsZWQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50SXNTY2FsZWQsIGlzRml4ZWQpO1xuICB2YXIgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIHZhciBvZmZzZXRzID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTA3OFxuICAgIGlzU2Nyb2xsUGFyZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBvZmZzZXRzID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSk7XG4gICAgICBvZmZzZXRzLnggKz0gb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgKz0gb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLngsXG4gICAgeTogcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn0iLCJpbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkge1xuICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dOiBhc3N1bWUgYm9keSBpcyBhbHdheXMgYXZhaWxhYmxlXG4gIHJldHVybiAoKGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQub3duZXJEb2N1bWVudCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICBlbGVtZW50LmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudDtcbn0iLCJpbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmltcG9ydCB7IG1heCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7IC8vIEdldHMgdGhlIGVudGlyZSBzaXplIG9mIHRoZSBzY3JvbGxhYmxlIGRvY3VtZW50IGFyZWEsIGV2ZW4gZXh0ZW5kaW5nIG91dHNpZGVcbi8vIG9mIHRoZSBgPGh0bWw+YCBhbmQgYDxib2R5PmAgcmVjdCBib3VuZHMgaWYgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGVcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICB2YXIgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgdmFyIHdpblNjcm9sbCA9IGdldFdpbmRvd1Njcm9sbChlbGVtZW50KTtcbiAgdmFyIGJvZHkgPSAoX2VsZW1lbnQkb3duZXJEb2N1bWVuID0gZWxlbWVudC5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2VsZW1lbnQkb3duZXJEb2N1bWVuLmJvZHk7XG4gIHZhciB3aWR0aCA9IG1heChodG1sLnNjcm9sbFdpZHRoLCBodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5zY3JvbGxXaWR0aCA6IDAsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCk7XG4gIHZhciBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5ID8gYm9keS5zY3JvbGxIZWlnaHQgOiAwLCBib2R5ID8gYm9keS5jbGllbnRIZWlnaHQgOiAwKTtcbiAgdmFyIHggPSAtd2luU2Nyb2xsLnNjcm9sbExlZnQgKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpO1xuICB2YXIgeSA9IC13aW5TY3JvbGwuc2Nyb2xsVG9wO1xuXG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKGJvZHkgfHwgaHRtbCkuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgIHggKz0gbWF4KGh0bWwuY2xpZW50V2lkdGgsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCkgLSB3aWR0aDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEhUTUxFbGVtZW50U2Nyb2xsKGVsZW1lbnQpIHtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbExlZnQsXG4gICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7IC8vIFJldHVybnMgdGhlIGxheW91dCByZWN0IG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gaXRzIG9mZnNldFBhcmVudC4gTGF5b3V0XG4vLyBtZWFucyBpdCBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IHRyYW5zZm9ybXMuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldExheW91dFJlY3QoZWxlbWVudCkge1xuICB2YXIgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50KTsgLy8gVXNlIHRoZSBjbGllbnRSZWN0IHNpemVzIGlmIGl0J3Mgbm90IGJlZW4gdHJhbnNmb3JtZWQuXG4gIC8vIEZpeGVzIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTIyM1xuXG4gIHZhciB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC53aWR0aCAtIHdpZHRoKSA8PSAxKSB7XG4gICAgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoO1xuICB9XG5cbiAgaWYgKE1hdGguYWJzKGNsaWVudFJlY3QuaGVpZ2h0IC0gaGVpZ2h0KSA8PSAxKSB7XG4gICAgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IGVsZW1lbnQub2Zmc2V0TGVmdCxcbiAgICB5OiBlbGVtZW50Lm9mZnNldFRvcCxcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHRcbiAgfTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXROb2RlTmFtZShlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50ID8gKGVsZW1lbnQubm9kZU5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgOiBudWxsO1xufSIsImltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRIVE1MRWxlbWVudFNjcm9sbCBmcm9tIFwiLi9nZXRIVE1MRWxlbWVudFNjcm9sbC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChub2RlKSB7XG4gIGlmIChub2RlID09PSBnZXRXaW5kb3cobm9kZSkgfHwgIWlzSFRNTEVsZW1lbnQobm9kZSkpIHtcbiAgICByZXR1cm4gZ2V0V2luZG93U2Nyb2xsKG5vZGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZXRIVE1MRWxlbWVudFNjcm9sbChub2RlKTtcbiAgfVxufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQsIGlzU2hhZG93Um9vdCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBpc1RhYmxlRWxlbWVudCBmcm9tIFwiLi9pc1RhYmxlRWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFVBU3RyaW5nIGZyb20gXCIuLi91dGlscy91c2VyQWdlbnQuanNcIjtcblxuZnVuY3Rpb24gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50KSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAvLyBodHRwczovL2dpdGh1Yi5jb20vcG9wcGVyanMvcG9wcGVyLWNvcmUvaXNzdWVzLzgzN1xuICBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudC5vZmZzZXRQYXJlbnQ7XG59IC8vIGAub2Zmc2V0UGFyZW50YCByZXBvcnRzIGBudWxsYCBmb3IgZml4ZWQgZWxlbWVudHMsIHdoaWxlIGFic29sdXRlIGVsZW1lbnRzXG4vLyByZXR1cm4gdGhlIGNvbnRhaW5pbmcgYmxvY2tcblxuXG5mdW5jdGlvbiBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkge1xuICB2YXIgaXNGaXJlZm94ID0gL2ZpcmVmb3gvaS50ZXN0KGdldFVBU3RyaW5nKCkpO1xuICB2YXIgaXNJRSA9IC9UcmlkZW50L2kudGVzdChnZXRVQVN0cmluZygpKTtcblxuICBpZiAoaXNJRSAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgLy8gSW4gSUUgOSwgMTAgYW5kIDExIGZpeGVkIGVsZW1lbnRzIGNvbnRhaW5pbmcgYmxvY2sgaXMgYWx3YXlzIGVzdGFibGlzaGVkIGJ5IHRoZSB2aWV3cG9ydFxuICAgIHZhciBlbGVtZW50Q3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcblxuICAgIGlmIChlbGVtZW50Q3NzLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICB2YXIgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuXG4gIGlmIChpc1NoYWRvd1Jvb3QoY3VycmVudE5vZGUpKSB7XG4gICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5ob3N0O1xuICB9XG5cbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmIFsnaHRtbCcsICdib2R5J10uaW5kZXhPZihnZXROb2RlTmFtZShjdXJyZW50Tm9kZSkpIDwgMCkge1xuICAgIHZhciBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnROb2RlKTsgLy8gVGhpcyBpcyBub24tZXhoYXVzdGl2ZSBidXQgY292ZXJzIHRoZSBtb3N0IGNvbW1vbiBDU1MgcHJvcGVydGllcyB0aGF0XG4gICAgLy8gY3JlYXRlIGEgY29udGFpbmluZyBibG9jay5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuXG4gICAgaWYgKGNzcy50cmFuc2Zvcm0gIT09ICdub25lJyB8fCBjc3MucGVyc3BlY3RpdmUgIT09ICdub25lJyB8fCBjc3MuY29udGFpbiA9PT0gJ3BhaW50JyB8fCBbJ3RyYW5zZm9ybScsICdwZXJzcGVjdGl2ZSddLmluZGV4T2YoY3NzLndpbGxDaGFuZ2UpICE9PSAtMSB8fCBpc0ZpcmVmb3ggJiYgY3NzLndpbGxDaGFuZ2UgPT09ICdmaWx0ZXInIHx8IGlzRmlyZWZveCAmJiBjc3MuZmlsdGVyICYmIGNzcy5maWx0ZXIgIT09ICdub25lJykge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59IC8vIEdldHMgdGhlIGNsb3Nlc3QgYW5jZXN0b3IgcG9zaXRpb25lZCBlbGVtZW50LiBIYW5kbGVzIHNvbWUgZWRnZSBjYXNlcyxcbi8vIHN1Y2ggYXMgdGFibGUgYW5jZXN0b3JzIGFuZCBjcm9zcyBicm93c2VyIGJ1Z3MuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgdmFyIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCk7XG5cbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcbiAgICBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KG9mZnNldFBhcmVudCk7XG4gIH1cblxuICBpZiAob2Zmc2V0UGFyZW50ICYmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnaHRtbCcgfHwgZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2JvZHknICYmIGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpKSB7XG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfVxuXG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbmRvdztcbn0iLCJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgeyBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRQYXJlbnROb2RlKGVsZW1lbnQpIHtcbiAgaWYgKGdldE5vZGVOYW1lKGVsZW1lbnQpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuXG4gIHJldHVybiAoLy8gdGhpcyBpcyBhIHF1aWNrZXIgKGJ1dCBsZXNzIHR5cGUgc2FmZSkgd2F5IHRvIHNhdmUgcXVpdGUgc29tZSBieXRlcyBmcm9tIHRoZSBidW5kbGVcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dXG4gICAgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgZWxlbWVudC5hc3NpZ25lZFNsb3QgfHwgLy8gc3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGVcbiAgICBlbGVtZW50LnBhcmVudE5vZGUgfHwgKCAvLyBET00gRWxlbWVudCBkZXRlY3RlZFxuICAgIGlzU2hhZG93Um9vdChlbGVtZW50KSA/IGVsZW1lbnQuaG9zdCA6IG51bGwpIHx8IC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWRcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYWxsXTogSFRNTEVsZW1lbnQgaXMgYSBOb2RlXG4gICAgZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIC8vIGZhbGxiYWNrXG5cbiAgKTtcbn0iLCJpbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgaXNTY3JvbGxQYXJlbnQgZnJvbSBcIi4vaXNTY3JvbGxQYXJlbnQuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFNjcm9sbFBhcmVudChub2RlKSB7XG4gIGlmIChbJ2h0bWwnLCAnYm9keScsICcjZG9jdW1lbnQnXS5pbmRleE9mKGdldE5vZGVOYW1lKG5vZGUpKSA+PSAwKSB7XG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogYXNzdW1lIGJvZHkgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuXG4gIGlmIChpc0hUTUxFbGVtZW50KG5vZGUpICYmIGlzU2Nyb2xsUGFyZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gZ2V0U2Nyb2xsUGFyZW50KGdldFBhcmVudE5vZGUobm9kZSkpO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGlzTGF5b3V0Vmlld3BvcnQgZnJvbSBcIi4vaXNMYXlvdXRWaWV3cG9ydC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIHZhciBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICB2YXIgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIHZhciB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgdmFyIHggPSAwO1xuICB2YXIgeSA9IDA7XG5cbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7XG4gICAgdmFyIGxheW91dFZpZXdwb3J0ID0gaXNMYXlvdXRWaWV3cG9ydCgpO1xuXG4gICAgaWYgKGxheW91dFZpZXdwb3J0IHx8ICFsYXlvdXRWaWV3cG9ydCAmJiBzdHJhdGVneSA9PT0gJ2ZpeGVkJykge1xuICAgICAgeCA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQ7XG4gICAgICB5ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IHggKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpLFxuICAgIHk6IHlcbiAgfTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXaW5kb3cobm9kZSkge1xuICBpZiAobm9kZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfVxuXG4gIGlmIChub2RlLnRvU3RyaW5nKCkgIT09ICdbb2JqZWN0IFdpbmRvd10nKSB7XG4gICAgdmFyIG93bmVyRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQ7XG4gICAgcmV0dXJuIG93bmVyRG9jdW1lbnQgPyBvd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IHx8IHdpbmRvdyA6IHdpbmRvdztcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGwobm9kZSkge1xuICB2YXIgd2luID0gZ2V0V2luZG93KG5vZGUpO1xuICB2YXIgc2Nyb2xsTGVmdCA9IHdpbi5wYWdlWE9mZnNldDtcbiAgdmFyIHNjcm9sbFRvcCA9IHdpbi5wYWdlWU9mZnNldDtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBzY3JvbGxMZWZ0LFxuICAgIHNjcm9sbFRvcDogc2Nyb2xsVG9wXG4gIH07XG59IiwiaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSB7XG4gIC8vIElmIDxodG1sPiBoYXMgYSBDU1Mgd2lkdGggZ3JlYXRlciB0aGFuIHRoZSB2aWV3cG9ydCwgdGhlbiB0aGlzIHdpbGwgYmVcbiAgLy8gaW5jb3JyZWN0IGZvciBSVEwuXG4gIC8vIFBvcHBlciAxIGlzIGJyb2tlbiBpbiB0aGlzIGNhc2UgYW5kIG5ldmVyIGhhZCBhIGJ1ZyByZXBvcnQgc28gbGV0J3MgYXNzdW1lXG4gIC8vIGl0J3Mgbm90IGFuIGlzc3VlLiBJIGRvbid0IHRoaW5rIGFueW9uZSBldmVyIHNwZWNpZmllcyB3aWR0aCBvbiA8aHRtbD5cbiAgLy8gYW55d2F5LlxuICAvLyBCcm93c2VycyB3aGVyZSB0aGUgbGVmdCBzY3JvbGxiYXIgZG9lc24ndCBjYXVzZSBhbiBpc3N1ZSByZXBvcnQgYDBgIGZvclxuICAvLyB0aGlzIChlLmcuIEVkZ2UgMjAxOSwgSUUxMSwgU2FmYXJpKVxuICByZXR1cm4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkubGVmdCArIGdldFdpbmRvd1Njcm9sbChlbGVtZW50KS5zY3JvbGxMZWZ0O1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5cbmZ1bmN0aW9uIGlzRWxlbWVudChub2RlKSB7XG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLkVsZW1lbnQ7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gaXNIVE1MRWxlbWVudChub2RlKSB7XG4gIHZhciBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLkhUTUxFbGVtZW50O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50O1xufVxuXG5mdW5jdGlvbiBpc1NoYWRvd1Jvb3Qobm9kZSkge1xuICAvLyBJRSAxMSBoYXMgbm8gU2hhZG93Um9vdFxuICBpZiAodHlwZW9mIFNoYWRvd1Jvb3QgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIE93bkVsZW1lbnQgPSBnZXRXaW5kb3cobm9kZSkuU2hhZG93Um9vdDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBTaGFkb3dSb290O1xufVxuXG5leHBvcnQgeyBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQsIGlzU2hhZG93Um9vdCB9OyIsImltcG9ydCBnZXRVQVN0cmluZyBmcm9tIFwiLi4vdXRpbHMvdXNlckFnZW50LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0xheW91dFZpZXdwb3J0KCkge1xuICByZXR1cm4gIS9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QoZ2V0VUFTdHJpbmcoKSk7XG59IiwiaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNTY3JvbGxQYXJlbnQoZWxlbWVudCkge1xuICAvLyBGaXJlZm94IHdhbnRzIHVzIHRvIGNoZWNrIGAteGAgYW5kIGAteWAgdmFyaWF0aW9ucyBhcyB3ZWxsXG4gIHZhciBfZ2V0Q29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCksXG4gICAgICBvdmVyZmxvdyA9IF9nZXRDb21wdXRlZFN0eWxlLm92ZXJmbG93LFxuICAgICAgb3ZlcmZsb3dYID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3dYLFxuICAgICAgb3ZlcmZsb3dZID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3dZO1xuXG4gIHJldHVybiAvYXV0b3xzY3JvbGx8b3ZlcmxheXxoaWRkZW4vLnRlc3Qob3ZlcmZsb3cgKyBvdmVyZmxvd1kgKyBvdmVyZmxvd1gpO1xufSIsImltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNUYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gWyd0YWJsZScsICd0ZCcsICd0aCddLmluZGV4T2YoZ2V0Tm9kZU5hbWUoZWxlbWVudCkpID49IDA7XG59IiwiaW1wb3J0IGdldFNjcm9sbFBhcmVudCBmcm9tIFwiLi9nZXRTY3JvbGxQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgaXNTY3JvbGxQYXJlbnQgZnJvbSBcIi4vaXNTY3JvbGxQYXJlbnQuanNcIjtcbi8qXG5naXZlbiBhIERPTSBlbGVtZW50LCByZXR1cm4gdGhlIGxpc3Qgb2YgYWxsIHNjcm9sbCBwYXJlbnRzLCB1cCB0aGUgbGlzdCBvZiBhbmNlc29yc1xudW50aWwgd2UgZ2V0IHRvIHRoZSB0b3Agd2luZG93IG9iamVjdC4gVGhpcyBsaXN0IGlzIHdoYXQgd2UgYXR0YWNoIHNjcm9sbCBsaXN0ZW5lcnNcbnRvLCBiZWNhdXNlIGlmIGFueSBvZiB0aGVzZSBwYXJlbnQgZWxlbWVudHMgc2Nyb2xsLCB3ZSdsbCBuZWVkIHRvIHJlLWNhbGN1bGF0ZSB0aGVcbnJlZmVyZW5jZSBlbGVtZW50J3MgcG9zaXRpb24uXG4qL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsaXN0U2Nyb2xsUGFyZW50cyhlbGVtZW50LCBsaXN0KSB7XG4gIHZhciBfZWxlbWVudCRvd25lckRvY3VtZW47XG5cbiAgaWYgKGxpc3QgPT09IHZvaWQgMCkge1xuICAgIGxpc3QgPSBbXTtcbiAgfVxuXG4gIHZhciBzY3JvbGxQYXJlbnQgPSBnZXRTY3JvbGxQYXJlbnQoZWxlbWVudCk7XG4gIHZhciBpc0JvZHkgPSBzY3JvbGxQYXJlbnQgPT09ICgoX2VsZW1lbnQkb3duZXJEb2N1bWVuID0gZWxlbWVudC5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2VsZW1lbnQkb3duZXJEb2N1bWVuLmJvZHkpO1xuICB2YXIgd2luID0gZ2V0V2luZG93KHNjcm9sbFBhcmVudCk7XG4gIHZhciB0YXJnZXQgPSBpc0JvZHkgPyBbd2luXS5jb25jYXQod2luLnZpc3VhbFZpZXdwb3J0IHx8IFtdLCBpc1Njcm9sbFBhcmVudChzY3JvbGxQYXJlbnQpID8gc2Nyb2xsUGFyZW50IDogW10pIDogc2Nyb2xsUGFyZW50O1xuICB2YXIgdXBkYXRlZExpc3QgPSBsaXN0LmNvbmNhdCh0YXJnZXQpO1xuICByZXR1cm4gaXNCb2R5ID8gdXBkYXRlZExpc3QgOiAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYWxsXTogaXNCb2R5IHRlbGxzIHVzIHRhcmdldCB3aWxsIGJlIGFuIEhUTUxFbGVtZW50IGhlcmVcbiAgdXBkYXRlZExpc3QuY29uY2F0KGxpc3RTY3JvbGxQYXJlbnRzKGdldFBhcmVudE5vZGUodGFyZ2V0KSkpO1xufSIsImV4cG9ydCB2YXIgdG9wID0gJ3RvcCc7XG5leHBvcnQgdmFyIGJvdHRvbSA9ICdib3R0b20nO1xuZXhwb3J0IHZhciByaWdodCA9ICdyaWdodCc7XG5leHBvcnQgdmFyIGxlZnQgPSAnbGVmdCc7XG5leHBvcnQgdmFyIGF1dG8gPSAnYXV0byc7XG5leHBvcnQgdmFyIGJhc2VQbGFjZW1lbnRzID0gW3RvcCwgYm90dG9tLCByaWdodCwgbGVmdF07XG5leHBvcnQgdmFyIHN0YXJ0ID0gJ3N0YXJ0JztcbmV4cG9ydCB2YXIgZW5kID0gJ2VuZCc7XG5leHBvcnQgdmFyIGNsaXBwaW5nUGFyZW50cyA9ICdjbGlwcGluZ1BhcmVudHMnO1xuZXhwb3J0IHZhciB2aWV3cG9ydCA9ICd2aWV3cG9ydCc7XG5leHBvcnQgdmFyIHBvcHBlciA9ICdwb3BwZXInO1xuZXhwb3J0IHZhciByZWZlcmVuY2UgPSAncmVmZXJlbmNlJztcbmV4cG9ydCB2YXIgdmFyaWF0aW9uUGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9iYXNlUGxhY2VtZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gIHJldHVybiBhY2MuY29uY2F0KFtwbGFjZW1lbnQgKyBcIi1cIiArIHN0YXJ0LCBwbGFjZW1lbnQgKyBcIi1cIiArIGVuZF0pO1xufSwgW10pO1xuZXhwb3J0IHZhciBwbGFjZW1lbnRzID0gLyojX19QVVJFX18qL1tdLmNvbmNhdChiYXNlUGxhY2VtZW50cywgW2F1dG9dKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gIHJldHVybiBhY2MuY29uY2F0KFtwbGFjZW1lbnQsIHBsYWNlbWVudCArIFwiLVwiICsgc3RhcnQsIHBsYWNlbWVudCArIFwiLVwiICsgZW5kXSk7XG59LCBbXSk7IC8vIG1vZGlmaWVycyB0aGF0IG5lZWQgdG8gcmVhZCB0aGUgRE9NXG5cbmV4cG9ydCB2YXIgYmVmb3JlUmVhZCA9ICdiZWZvcmVSZWFkJztcbmV4cG9ydCB2YXIgcmVhZCA9ICdyZWFkJztcbmV4cG9ydCB2YXIgYWZ0ZXJSZWFkID0gJ2FmdGVyUmVhZCc7IC8vIHB1cmUtbG9naWMgbW9kaWZpZXJzXG5cbmV4cG9ydCB2YXIgYmVmb3JlTWFpbiA9ICdiZWZvcmVNYWluJztcbmV4cG9ydCB2YXIgbWFpbiA9ICdtYWluJztcbmV4cG9ydCB2YXIgYWZ0ZXJNYWluID0gJ2FmdGVyTWFpbic7IC8vIG1vZGlmaWVyIHdpdGggdGhlIHB1cnBvc2UgdG8gd3JpdGUgdG8gdGhlIERPTSAob3Igd3JpdGUgaW50byBhIGZyYW1ld29yayBzdGF0ZSlcblxuZXhwb3J0IHZhciBiZWZvcmVXcml0ZSA9ICdiZWZvcmVXcml0ZSc7XG5leHBvcnQgdmFyIHdyaXRlID0gJ3dyaXRlJztcbmV4cG9ydCB2YXIgYWZ0ZXJXcml0ZSA9ICdhZnRlcldyaXRlJztcbmV4cG9ydCB2YXIgbW9kaWZpZXJQaGFzZXMgPSBbYmVmb3JlUmVhZCwgcmVhZCwgYWZ0ZXJSZWFkLCBiZWZvcmVNYWluLCBtYWluLCBhZnRlck1haW4sIGJlZm9yZVdyaXRlLCB3cml0ZSwgYWZ0ZXJXcml0ZV07IiwiZXhwb3J0ICogZnJvbSBcIi4vZW51bXMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21vZGlmaWVycy9pbmRleC5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCB7IHBvcHBlckdlbmVyYXRvciwgZGV0ZWN0T3ZlcmZsb3csIGNyZWF0ZVBvcHBlciBhcyBjcmVhdGVQb3BwZXJCYXNlIH0gZnJvbSBcIi4vY3JlYXRlUG9wcGVyLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgY3JlYXRlUG9wcGVyIH0gZnJvbSBcIi4vcG9wcGVyLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgY3JlYXRlUG9wcGVyIGFzIGNyZWF0ZVBvcHBlckxpdGUgfSBmcm9tIFwiLi9wb3BwZXItbGl0ZS5qc1wiOyIsImltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4uL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzXCI7IC8vIFRoaXMgbW9kaWZpZXIgdGFrZXMgdGhlIHN0eWxlcyBwcmVwYXJlZCBieSB0aGUgYGNvbXB1dGVTdHlsZXNgIG1vZGlmaWVyXG4vLyBhbmQgYXBwbGllcyB0aGVtIHRvIHRoZSBIVE1MRWxlbWVudHMgc3VjaCBhcyBwb3BwZXIgYW5kIGFycm93XG5cbmZ1bmN0aW9uIGFwcGx5U3R5bGVzKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZTtcbiAgT2JqZWN0LmtleXMoc3RhdGUuZWxlbWVudHMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB2YXIgc3R5bGUgPSBzdGF0ZS5zdHlsZXNbbmFtZV0gfHwge307XG4gICAgdmFyIGF0dHJpYnV0ZXMgPSBzdGF0ZS5hdHRyaWJ1dGVzW25hbWVdIHx8IHt9O1xuICAgIHZhciBlbGVtZW50ID0gc3RhdGUuZWxlbWVudHNbbmFtZV07IC8vIGFycm93IGlzIG9wdGlvbmFsICsgdmlydHVhbCBlbGVtZW50c1xuXG4gICAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8ICFnZXROb2RlTmFtZShlbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gRmxvdyBkb2Vzbid0IHN1cHBvcnQgdG8gZXh0ZW5kIHRoaXMgcHJvcGVydHksIGJ1dCBpdCdzIHRoZSBtb3N0XG4gICAgLy8gZWZmZWN0aXZlIHdheSB0byBhcHBseSBzdHlsZXMgdG8gYW4gSFRNTEVsZW1lbnRcbiAgICAvLyAkRmxvd0ZpeE1lW2Nhbm5vdC13cml0ZV1cblxuXG4gICAgT2JqZWN0LmFzc2lnbihlbGVtZW50LnN0eWxlLCBzdHlsZSk7XG4gICAgT2JqZWN0LmtleXMoYXR0cmlidXRlcykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIHZhbHVlID0gYXR0cmlidXRlc1tuYW1lXTtcblxuICAgICAgaWYgKHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlID09PSB0cnVlID8gJycgOiB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBlZmZlY3QoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGU7XG4gIHZhciBpbml0aWFsU3R5bGVzID0ge1xuICAgIHBvcHBlcjoge1xuICAgICAgcG9zaXRpb246IHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBsZWZ0OiAnMCcsXG4gICAgICB0b3A6ICcwJyxcbiAgICAgIG1hcmdpbjogJzAnXG4gICAgfSxcbiAgICBhcnJvdzoge1xuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZSdcbiAgICB9LFxuICAgIHJlZmVyZW5jZToge31cbiAgfTtcbiAgT2JqZWN0LmFzc2lnbihzdGF0ZS5lbGVtZW50cy5wb3BwZXIuc3R5bGUsIGluaXRpYWxTdHlsZXMucG9wcGVyKTtcbiAgc3RhdGUuc3R5bGVzID0gaW5pdGlhbFN0eWxlcztcblxuICBpZiAoc3RhdGUuZWxlbWVudHMuYXJyb3cpIHtcbiAgICBPYmplY3QuYXNzaWduKHN0YXRlLmVsZW1lbnRzLmFycm93LnN0eWxlLCBpbml0aWFsU3R5bGVzLmFycm93KTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgT2JqZWN0LmtleXMoc3RhdGUuZWxlbWVudHMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHZhciBlbGVtZW50ID0gc3RhdGUuZWxlbWVudHNbbmFtZV07XG4gICAgICB2YXIgYXR0cmlidXRlcyA9IHN0YXRlLmF0dHJpYnV0ZXNbbmFtZV0gfHwge307XG4gICAgICB2YXIgc3R5bGVQcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMoc3RhdGUuc3R5bGVzLmhhc093blByb3BlcnR5KG5hbWUpID8gc3RhdGUuc3R5bGVzW25hbWVdIDogaW5pdGlhbFN0eWxlc1tuYW1lXSk7IC8vIFNldCBhbGwgdmFsdWVzIHRvIGFuIGVtcHR5IHN0cmluZyB0byB1bnNldCB0aGVtXG5cbiAgICAgIHZhciBzdHlsZSA9IHN0eWxlUHJvcGVydGllcy5yZWR1Y2UoZnVuY3Rpb24gKHN0eWxlLCBwcm9wZXJ0eSkge1xuICAgICAgICBzdHlsZVtwcm9wZXJ0eV0gPSAnJztcbiAgICAgICAgcmV0dXJuIHN0eWxlO1xuICAgICAgfSwge30pOyAvLyBhcnJvdyBpcyBvcHRpb25hbCArIHZpcnR1YWwgZWxlbWVudHNcblxuICAgICAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8ICFnZXROb2RlTmFtZShlbGVtZW50KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIE9iamVjdC5hc3NpZ24oZWxlbWVudC5zdHlsZSwgc3R5bGUpO1xuICAgICAgT2JqZWN0LmtleXMoYXR0cmlidXRlcykuZm9yRWFjaChmdW5jdGlvbiAoYXR0cmlidXRlKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2FwcGx5U3R5bGVzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICd3cml0ZScsXG4gIGZuOiBhcHBseVN0eWxlcyxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIHJlcXVpcmVzOiBbJ2NvbXB1dGVTdHlsZXMnXVxufTsiLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4uL2RvbS11dGlscy9jb250YWlucy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4gfSBmcm9tIFwiLi4vdXRpbHMvd2l0aGluLmpzXCI7XG5pbXBvcnQgbWVyZ2VQYWRkaW5nT2JqZWN0IGZyb20gXCIuLi91dGlscy9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4uL3V0aWxzL2V4cGFuZFRvSGFzaE1hcC5qc1wiO1xuaW1wb3J0IHsgbGVmdCwgcmlnaHQsIGJhc2VQbGFjZW1lbnRzLCB0b3AsIGJvdHRvbSB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciB0b1BhZGRpbmdPYmplY3QgPSBmdW5jdGlvbiB0b1BhZGRpbmdPYmplY3QocGFkZGluZywgc3RhdGUpIHtcbiAgcGFkZGluZyA9IHR5cGVvZiBwYWRkaW5nID09PSAnZnVuY3Rpb24nID8gcGFkZGluZyhPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5yZWN0cywge1xuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pKSA6IHBhZGRpbmc7XG4gIHJldHVybiBtZXJnZVBhZGRpbmdPYmplY3QodHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gcGFkZGluZyA6IGV4cGFuZFRvSGFzaE1hcChwYWRkaW5nLCBiYXNlUGxhY2VtZW50cykpO1xufTtcblxuZnVuY3Rpb24gYXJyb3coX3JlZikge1xuICB2YXIgX3N0YXRlJG1vZGlmaWVyc0RhdGEkO1xuXG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucztcbiAgdmFyIGFycm93RWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93O1xuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cztcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBheGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpO1xuICB2YXIgaXNWZXJ0aWNhbCA9IFtsZWZ0LCByaWdodF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSA+PSAwO1xuICB2YXIgbGVuID0gaXNWZXJ0aWNhbCA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICBpZiAoIWFycm93RWxlbWVudCB8fCAhcG9wcGVyT2Zmc2V0cykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBwYWRkaW5nT2JqZWN0ID0gdG9QYWRkaW5nT2JqZWN0KG9wdGlvbnMucGFkZGluZywgc3RhdGUpO1xuICB2YXIgYXJyb3dSZWN0ID0gZ2V0TGF5b3V0UmVjdChhcnJvd0VsZW1lbnQpO1xuICB2YXIgbWluUHJvcCA9IGF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gIHZhciBtYXhQcm9wID0gYXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gIHZhciBlbmREaWZmID0gc3RhdGUucmVjdHMucmVmZXJlbmNlW2xlbl0gKyBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbYXhpc10gLSBwb3BwZXJPZmZzZXRzW2F4aXNdIC0gc3RhdGUucmVjdHMucG9wcGVyW2xlbl07XG4gIHZhciBzdGFydERpZmYgPSBwb3BwZXJPZmZzZXRzW2F4aXNdIC0gc3RhdGUucmVjdHMucmVmZXJlbmNlW2F4aXNdO1xuICB2YXIgYXJyb3dPZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQoYXJyb3dFbGVtZW50KTtcbiAgdmFyIGNsaWVudFNpemUgPSBhcnJvd09mZnNldFBhcmVudCA/IGF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudEhlaWdodCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50V2lkdGggfHwgMCA6IDA7XG4gIHZhciBjZW50ZXJUb1JlZmVyZW5jZSA9IGVuZERpZmYgLyAyIC0gc3RhcnREaWZmIC8gMjsgLy8gTWFrZSBzdXJlIHRoZSBhcnJvdyBkb2Vzbid0IG92ZXJmbG93IHRoZSBwb3BwZXIgaWYgdGhlIGNlbnRlciBwb2ludCBpc1xuICAvLyBvdXRzaWRlIG9mIHRoZSBwb3BwZXIgYm91bmRzXG5cbiAgdmFyIG1pbiA9IHBhZGRpbmdPYmplY3RbbWluUHJvcF07XG4gIHZhciBtYXggPSBjbGllbnRTaXplIC0gYXJyb3dSZWN0W2xlbl0gLSBwYWRkaW5nT2JqZWN0W21heFByb3BdO1xuICB2YXIgY2VudGVyID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd1JlY3RbbGVuXSAvIDIgKyBjZW50ZXJUb1JlZmVyZW5jZTtcbiAgdmFyIG9mZnNldCA9IHdpdGhpbihtaW4sIGNlbnRlciwgbWF4KTsgLy8gUHJldmVudHMgYnJlYWtpbmcgc3ludGF4IGhpZ2hsaWdodGluZy4uLlxuXG4gIHZhciBheGlzUHJvcCA9IGF4aXM7XG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSAoX3N0YXRlJG1vZGlmaWVyc0RhdGEkID0ge30sIF9zdGF0ZSRtb2RpZmllcnNEYXRhJFtheGlzUHJvcF0gPSBvZmZzZXQsIF9zdGF0ZSRtb2RpZmllcnNEYXRhJC5jZW50ZXJPZmZzZXQgPSBvZmZzZXQgLSBjZW50ZXIsIF9zdGF0ZSRtb2RpZmllcnNEYXRhJCk7XG59XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmMi5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkZWxlbWVudCA9IG9wdGlvbnMuZWxlbWVudCxcbiAgICAgIGFycm93RWxlbWVudCA9IF9vcHRpb25zJGVsZW1lbnQgPT09IHZvaWQgMCA/ICdbZGF0YS1wb3BwZXItYXJyb3ddJyA6IF9vcHRpb25zJGVsZW1lbnQ7XG5cbiAgaWYgKGFycm93RWxlbWVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIENTUyBzZWxlY3RvclxuXG5cbiAgaWYgKHR5cGVvZiBhcnJvd0VsZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMucG9wcGVyLnF1ZXJ5U2VsZWN0b3IoYXJyb3dFbGVtZW50KTtcblxuICAgIGlmICghYXJyb3dFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIGlmICghaXNIVE1MRWxlbWVudChhcnJvd0VsZW1lbnQpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImFycm93XCIgZWxlbWVudCBtdXN0IGJlIGFuIEhUTUxFbGVtZW50IChub3QgYW4gU1ZHRWxlbWVudCkuJywgJ1RvIHVzZSBhbiBTVkcgYXJyb3csIHdyYXAgaXQgaW4gYW4gSFRNTEVsZW1lbnQgdGhhdCB3aWxsIGJlIHVzZWQgYXMnLCAndGhlIGFycm93LiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFjb250YWlucyhzdGF0ZS5lbGVtZW50cy5wb3BwZXIsIGFycm93RWxlbWVudCkpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImFycm93XCIgbW9kaWZpZXJcXCdzIGBlbGVtZW50YCBtdXN0IGJlIGEgY2hpbGQgb2YgdGhlIHBvcHBlcicsICdlbGVtZW50LiddLmpvaW4oJyAnKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGUuZWxlbWVudHMuYXJyb3cgPSBhcnJvd0VsZW1lbnQ7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdhcnJvdycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBhcnJvdyxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIHJlcXVpcmVzOiBbJ3BvcHBlck9mZnNldHMnXSxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydwcmV2ZW50T3ZlcmZsb3cnXVxufTsiLCJpbXBvcnQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBib3R0b20sIGVuZCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHVuc2V0U2lkZXMgPSB7XG4gIHRvcDogJ2F1dG8nLFxuICByaWdodDogJ2F1dG8nLFxuICBib3R0b206ICdhdXRvJyxcbiAgbGVmdDogJ2F1dG8nXG59OyAvLyBSb3VuZCB0aGUgb2Zmc2V0cyB0byB0aGUgbmVhcmVzdCBzdWl0YWJsZSBzdWJwaXhlbCBiYXNlZCBvbiB0aGUgRFBSLlxuLy8gWm9vbWluZyBjYW4gY2hhbmdlIHRoZSBEUFIsIGJ1dCBpdCBzZWVtcyB0byByZXBvcnQgYSB2YWx1ZSB0aGF0IHdpbGxcbi8vIGNsZWFubHkgZGl2aWRlIHRoZSB2YWx1ZXMgaW50byB0aGUgYXBwcm9wcmlhdGUgc3VicGl4ZWxzLlxuXG5mdW5jdGlvbiByb3VuZE9mZnNldHNCeURQUihfcmVmKSB7XG4gIHZhciB4ID0gX3JlZi54LFxuICAgICAgeSA9IF9yZWYueTtcbiAgdmFyIHdpbiA9IHdpbmRvdztcbiAgdmFyIGRwciA9IHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG4gIHJldHVybiB7XG4gICAgeDogcm91bmQoeCAqIGRwcikgLyBkcHIgfHwgMCxcbiAgICB5OiByb3VuZCh5ICogZHByKSAvIGRwciB8fCAwXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb1N0eWxlcyhfcmVmMikge1xuICB2YXIgX09iamVjdCRhc3NpZ24yO1xuXG4gIHZhciBwb3BwZXIgPSBfcmVmMi5wb3BwZXIsXG4gICAgICBwb3BwZXJSZWN0ID0gX3JlZjIucG9wcGVyUmVjdCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYyLnBsYWNlbWVudCxcbiAgICAgIHZhcmlhdGlvbiA9IF9yZWYyLnZhcmlhdGlvbixcbiAgICAgIG9mZnNldHMgPSBfcmVmMi5vZmZzZXRzLFxuICAgICAgcG9zaXRpb24gPSBfcmVmMi5wb3NpdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9yZWYyLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGFkYXB0aXZlID0gX3JlZjIuYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHMgPSBfcmVmMi5yb3VuZE9mZnNldHMsXG4gICAgICBpc0ZpeGVkID0gX3JlZjIuaXNGaXhlZDtcbiAgdmFyIF9vZmZzZXRzJHggPSBvZmZzZXRzLngsXG4gICAgICB4ID0gX29mZnNldHMkeCA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHgsXG4gICAgICBfb2Zmc2V0cyR5ID0gb2Zmc2V0cy55LFxuICAgICAgeSA9IF9vZmZzZXRzJHkgPT09IHZvaWQgMCA/IDAgOiBfb2Zmc2V0cyR5O1xuXG4gIHZhciBfcmVmMyA9IHR5cGVvZiByb3VuZE9mZnNldHMgPT09ICdmdW5jdGlvbicgPyByb3VuZE9mZnNldHMoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9KSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjMueDtcbiAgeSA9IF9yZWYzLnk7XG4gIHZhciBoYXNYID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneCcpO1xuICB2YXIgaGFzWSA9IG9mZnNldHMuaGFzT3duUHJvcGVydHkoJ3knKTtcbiAgdmFyIHNpZGVYID0gbGVmdDtcbiAgdmFyIHNpZGVZID0gdG9wO1xuICB2YXIgd2luID0gd2luZG93O1xuXG4gIGlmIChhZGFwdGl2ZSkge1xuICAgIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRPZmZzZXRQYXJlbnQocG9wcGVyKTtcbiAgICB2YXIgaGVpZ2h0UHJvcCA9ICdjbGllbnRIZWlnaHQnO1xuICAgIHZhciB3aWR0aFByb3AgPSAnY2xpZW50V2lkdGgnO1xuXG4gICAgaWYgKG9mZnNldFBhcmVudCA9PT0gZ2V0V2luZG93KHBvcHBlcikpIHtcbiAgICAgIG9mZnNldFBhcmVudCA9IGdldERvY3VtZW50RWxlbWVudChwb3BwZXIpO1xuXG4gICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uICE9PSAnc3RhdGljJyAmJiBwb3NpdGlvbiA9PT0gJ2Fic29sdXRlJykge1xuICAgICAgICBoZWlnaHRQcm9wID0gJ3Njcm9sbEhlaWdodCc7XG4gICAgICAgIHdpZHRoUHJvcCA9ICdzY3JvbGxXaWR0aCc7XG4gICAgICB9XG4gICAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1jYXN0XTogZm9yY2UgdHlwZSByZWZpbmVtZW50LCB3ZSBjb21wYXJlIG9mZnNldFBhcmVudCB3aXRoIHdpbmRvdyBhYm92ZSwgYnV0IEZsb3cgZG9lc24ndCBkZXRlY3QgaXRcblxuXG4gICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50O1xuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gdG9wIHx8IChwbGFjZW1lbnQgPT09IGxlZnQgfHwgcGxhY2VtZW50ID09PSByaWdodCkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVZID0gYm90dG9tO1xuICAgICAgdmFyIG9mZnNldFkgPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC5oZWlnaHQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICAgIG9mZnNldFBhcmVudFtoZWlnaHRQcm9wXTtcbiAgICAgIHkgLT0gb2Zmc2V0WSAtIHBvcHBlclJlY3QuaGVpZ2h0O1xuICAgICAgeSAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuXG4gICAgaWYgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCAocGxhY2VtZW50ID09PSB0b3AgfHwgcGxhY2VtZW50ID09PSBib3R0b20pICYmIHZhcmlhdGlvbiA9PT0gZW5kKSB7XG4gICAgICBzaWRlWCA9IHJpZ2h0O1xuICAgICAgdmFyIG9mZnNldFggPSBpc0ZpeGVkICYmIG9mZnNldFBhcmVudCA9PT0gd2luICYmIHdpbi52aXN1YWxWaWV3cG9ydCA/IHdpbi52aXN1YWxWaWV3cG9ydC53aWR0aCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W3dpZHRoUHJvcF07XG4gICAgICB4IC09IG9mZnNldFggLSBwb3BwZXJSZWN0LndpZHRoO1xuICAgICAgeCAqPSBncHVBY2NlbGVyYXRpb24gPyAxIDogLTE7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHBvc2l0aW9uOiBwb3NpdGlvblxuICB9LCBhZGFwdGl2ZSAmJiB1bnNldFNpZGVzKTtcblxuICB2YXIgX3JlZjQgPSByb3VuZE9mZnNldHMgPT09IHRydWUgPyByb3VuZE9mZnNldHNCeURQUih7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0pIDoge1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xuXG4gIHggPSBfcmVmNC54O1xuICB5ID0gX3JlZjQueTtcblxuICBpZiAoZ3B1QWNjZWxlcmF0aW9uKSB7XG4gICAgdmFyIF9PYmplY3QkYXNzaWduO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywgKF9PYmplY3QkYXNzaWduID0ge30sIF9PYmplY3QkYXNzaWduW3NpZGVZXSA9IGhhc1kgPyAnMCcgOiAnJywgX09iamVjdCRhc3NpZ25bc2lkZVhdID0gaGFzWCA/ICcwJyA6ICcnLCBfT2JqZWN0JGFzc2lnbi50cmFuc2Zvcm0gPSAod2luLmRldmljZVBpeGVsUmF0aW8gfHwgMSkgPD0gMSA/IFwidHJhbnNsYXRlKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgpXCIgOiBcInRyYW5zbGF0ZTNkKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgsIDApXCIsIF9PYmplY3QkYXNzaWduKSk7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCAoX09iamVjdCRhc3NpZ24yID0ge30sIF9PYmplY3QkYXNzaWduMltzaWRlWV0gPSBoYXNZID8geSArIFwicHhcIiA6ICcnLCBfT2JqZWN0JGFzc2lnbjJbc2lkZVhdID0gaGFzWCA/IHggKyBcInB4XCIgOiAnJywgX09iamVjdCRhc3NpZ24yLnRyYW5zZm9ybSA9ICcnLCBfT2JqZWN0JGFzc2lnbjIpKTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVN0eWxlcyhfcmVmNSkge1xuICB2YXIgc3RhdGUgPSBfcmVmNS5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmNS5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkZ3B1QWNjZWxlcmF0ID0gb3B0aW9ucy5ncHVBY2NlbGVyYXRpb24sXG4gICAgICBncHVBY2NlbGVyYXRpb24gPSBfb3B0aW9ucyRncHVBY2NlbGVyYXQgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRncHVBY2NlbGVyYXQsXG4gICAgICBfb3B0aW9ucyRhZGFwdGl2ZSA9IG9wdGlvbnMuYWRhcHRpdmUsXG4gICAgICBhZGFwdGl2ZSA9IF9vcHRpb25zJGFkYXB0aXZlID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkYWRhcHRpdmUsXG4gICAgICBfb3B0aW9ucyRyb3VuZE9mZnNldHMgPSBvcHRpb25zLnJvdW5kT2Zmc2V0cyxcbiAgICAgIHJvdW5kT2Zmc2V0cyA9IF9vcHRpb25zJHJvdW5kT2Zmc2V0cyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHJvdW5kT2Zmc2V0cztcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgdmFyIHRyYW5zaXRpb25Qcm9wZXJ0eSA9IGdldENvbXB1dGVkU3R5bGUoc3RhdGUuZWxlbWVudHMucG9wcGVyKS50cmFuc2l0aW9uUHJvcGVydHkgfHwgJyc7XG5cbiAgICBpZiAoYWRhcHRpdmUgJiYgWyd0cmFuc2Zvcm0nLCAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J10uc29tZShmdW5jdGlvbiAocHJvcGVydHkpIHtcbiAgICAgIHJldHVybiB0cmFuc2l0aW9uUHJvcGVydHkuaW5kZXhPZihwcm9wZXJ0eSkgPj0gMDtcbiAgICB9KSkge1xuICAgICAgY29uc29sZS53YXJuKFsnUG9wcGVyOiBEZXRlY3RlZCBDU1MgdHJhbnNpdGlvbnMgb24gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcnLCAnQ1NTIHByb3BlcnRpZXM6IFwidHJhbnNmb3JtXCIsIFwidG9wXCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiwgXCJsZWZ0XCIuJywgJ1xcblxcbicsICdEaXNhYmxlIHRoZSBcImNvbXB1dGVTdHlsZXNcIiBtb2RpZmllclxcJ3MgYGFkYXB0aXZlYCBvcHRpb24gdG8gYWxsb3cnLCAnZm9yIHNtb290aCB0cmFuc2l0aW9ucywgb3IgcmVtb3ZlIHRoZXNlIHByb3BlcnRpZXMgZnJvbSB0aGUgQ1NTJywgJ3RyYW5zaXRpb24gZGVjbGFyYXRpb24gb24gdGhlIHBvcHBlciBlbGVtZW50IGlmIG9ubHkgdHJhbnNpdGlvbmluZycsICdvcGFjaXR5IG9yIGJhY2tncm91bmQtY29sb3IgZm9yIGV4YW1wbGUuJywgJ1xcblxcbicsICdXZSByZWNvbW1lbmQgdXNpbmcgdGhlIHBvcHBlciBlbGVtZW50IGFzIGEgd3JhcHBlciBhcm91bmQgYW4gaW5uZXInLCAnZWxlbWVudCB0aGF0IGNhbiBoYXZlIGFueSBDU1MgcHJvcGVydHkgdHJhbnNpdGlvbmVkIGZvciBhbmltYXRpb25zLiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IHtcbiAgICBwbGFjZW1lbnQ6IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KSxcbiAgICB2YXJpYXRpb246IGdldFZhcmlhdGlvbihzdGF0ZS5wbGFjZW1lbnQpLFxuICAgIHBvcHBlcjogc3RhdGUuZWxlbWVudHMucG9wcGVyLFxuICAgIHBvcHBlclJlY3Q6IHN0YXRlLnJlY3RzLnBvcHBlcixcbiAgICBncHVBY2NlbGVyYXRpb246IGdwdUFjY2VsZXJhdGlvbixcbiAgICBpc0ZpeGVkOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5ID09PSAnZml4ZWQnXG4gIH07XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyAhPSBudWxsKSB7XG4gICAgc3RhdGUuc3R5bGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnN0eWxlcy5wb3BwZXIsIG1hcFRvU3R5bGVzKE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywge1xuICAgICAgb2Zmc2V0czogc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLFxuICAgICAgcG9zaXRpb246IHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBhZGFwdGl2ZTogYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHM6IHJvdW5kT2Zmc2V0c1xuICAgIH0pKSk7XG4gIH1cblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YS5hcnJvdyAhPSBudWxsKSB7XG4gICAgc3RhdGUuc3R5bGVzLmFycm93ID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuc3R5bGVzLmFycm93LCBtYXBUb1N0eWxlcyhPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIHtcbiAgICAgIG9mZnNldHM6IHN0YXRlLm1vZGlmaWVyc0RhdGEuYXJyb3csXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIGFkYXB0aXZlOiBmYWxzZSxcbiAgICAgIHJvdW5kT2Zmc2V0czogcm91bmRPZmZzZXRzXG4gICAgfSkpKTtcbiAgfVxuXG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcGxhY2VtZW50Jzogc3RhdGUucGxhY2VtZW50XG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnY29tcHV0ZVN0eWxlcycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnYmVmb3JlV3JpdGUnLFxuICBmbjogY29tcHV0ZVN0eWxlcyxcbiAgZGF0YToge31cbn07IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldFdpbmRvdy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciBwYXNzaXZlID0ge1xuICBwYXNzaXZlOiB0cnVlXG59O1xuXG5mdW5jdGlvbiBlZmZlY3QoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgaW5zdGFuY2UgPSBfcmVmLmluc3RhbmNlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJHNjcm9sbCA9IG9wdGlvbnMuc2Nyb2xsLFxuICAgICAgc2Nyb2xsID0gX29wdGlvbnMkc2Nyb2xsID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkc2Nyb2xsLFxuICAgICAgX29wdGlvbnMkcmVzaXplID0gb3B0aW9ucy5yZXNpemUsXG4gICAgICByZXNpemUgPSBfb3B0aW9ucyRyZXNpemUgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRyZXNpemU7XG4gIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coc3RhdGUuZWxlbWVudHMucG9wcGVyKTtcbiAgdmFyIHNjcm9sbFBhcmVudHMgPSBbXS5jb25jYXQoc3RhdGUuc2Nyb2xsUGFyZW50cy5yZWZlcmVuY2UsIHN0YXRlLnNjcm9sbFBhcmVudHMucG9wcGVyKTtcblxuICBpZiAoc2Nyb2xsKSB7XG4gICAgc2Nyb2xsUGFyZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzY3JvbGxQYXJlbnQpIHtcbiAgICAgIHNjcm9sbFBhcmVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgIH0pO1xuICB9XG5cbiAgaWYgKHJlc2l6ZSkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoc2Nyb2xsKSB7XG4gICAgICBzY3JvbGxQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24gKHNjcm9sbFBhcmVudCkge1xuICAgICAgICBzY3JvbGxQYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChyZXNpemUpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgIH1cbiAgfTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2V2ZW50TGlzdGVuZXJzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICd3cml0ZScsXG4gIGZuOiBmdW5jdGlvbiBmbigpIHt9LFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgZGF0YToge31cbn07IiwiaW1wb3J0IGdldE9wcG9zaXRlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRPcHBvc2l0ZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi4vdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanNcIjtcbmltcG9ydCBjb21wdXRlQXV0b1BsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvY29tcHV0ZUF1dG9QbGFjZW1lbnQuanNcIjtcbmltcG9ydCB7IGJvdHRvbSwgdG9wLCBzdGFydCwgcmlnaHQsIGxlZnQsIGF1dG8gfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4uL3V0aWxzL2dldFZhcmlhdGlvbi5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmZ1bmN0aW9uIGdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzKHBsYWNlbWVudCkge1xuICBpZiAoZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpID09PSBhdXRvKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgdmFyIG9wcG9zaXRlUGxhY2VtZW50ID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgcmV0dXJuIFtnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChwbGFjZW1lbnQpLCBvcHBvc2l0ZVBsYWNlbWVudCwgZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQob3Bwb3NpdGVQbGFjZW1lbnQpXTtcbn1cblxuZnVuY3Rpb24gZmxpcChfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXS5fc2tpcCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyRtYWluQXhpcyA9IG9wdGlvbnMubWFpbkF4aXMsXG4gICAgICBjaGVja01haW5BeGlzID0gX29wdGlvbnMkbWFpbkF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRtYWluQXhpcyxcbiAgICAgIF9vcHRpb25zJGFsdEF4aXMgPSBvcHRpb25zLmFsdEF4aXMsXG4gICAgICBjaGVja0FsdEF4aXMgPSBfb3B0aW9ucyRhbHRBeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkYWx0QXhpcyxcbiAgICAgIHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyA9IG9wdGlvbnMuZmFsbGJhY2tQbGFjZW1lbnRzLFxuICAgICAgcGFkZGluZyA9IG9wdGlvbnMucGFkZGluZyxcbiAgICAgIGJvdW5kYXJ5ID0gb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IG9wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBvcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkZmxpcFZhcmlhdGlvID0gb3B0aW9ucy5mbGlwVmFyaWF0aW9ucyxcbiAgICAgIGZsaXBWYXJpYXRpb25zID0gX29wdGlvbnMkZmxpcFZhcmlhdGlvID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkZmxpcFZhcmlhdGlvLFxuICAgICAgYWxsb3dlZEF1dG9QbGFjZW1lbnRzID0gb3B0aW9ucy5hbGxvd2VkQXV0b1BsYWNlbWVudHM7XG4gIHZhciBwcmVmZXJyZWRQbGFjZW1lbnQgPSBzdGF0ZS5vcHRpb25zLnBsYWNlbWVudDtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHByZWZlcnJlZFBsYWNlbWVudCk7XG4gIHZhciBpc0Jhc2VQbGFjZW1lbnQgPSBiYXNlUGxhY2VtZW50ID09PSBwcmVmZXJyZWRQbGFjZW1lbnQ7XG4gIHZhciBmYWxsYmFja1BsYWNlbWVudHMgPSBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgfHwgKGlzQmFzZVBsYWNlbWVudCB8fCAhZmxpcFZhcmlhdGlvbnMgPyBbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocHJlZmVycmVkUGxhY2VtZW50KV0gOiBnZXRFeHBhbmRlZEZhbGxiYWNrUGxhY2VtZW50cyhwcmVmZXJyZWRQbGFjZW1lbnQpKTtcbiAgdmFyIHBsYWNlbWVudHMgPSBbcHJlZmVycmVkUGxhY2VtZW50XS5jb25jYXQoZmFsbGJhY2tQbGFjZW1lbnRzKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGFjYy5jb25jYXQoZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpID09PSBhdXRvID8gY29tcHV0ZUF1dG9QbGFjZW1lbnQoc3RhdGUsIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nOiBwYWRkaW5nLFxuICAgICAgZmxpcFZhcmlhdGlvbnM6IGZsaXBWYXJpYXRpb25zLFxuICAgICAgYWxsb3dlZEF1dG9QbGFjZW1lbnRzOiBhbGxvd2VkQXV0b1BsYWNlbWVudHNcbiAgICB9KSA6IHBsYWNlbWVudCk7XG4gIH0sIFtdKTtcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgY2hlY2tzTWFwID0gbmV3IE1hcCgpO1xuICB2YXIgbWFrZUZhbGxiYWNrQ2hlY2tzID0gdHJ1ZTtcbiAgdmFyIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudHNbMF07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbGFjZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHBsYWNlbWVudCA9IHBsYWNlbWVudHNbaV07XG5cbiAgICB2YXIgX2Jhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCk7XG5cbiAgICB2YXIgaXNTdGFydFZhcmlhdGlvbiA9IGdldFZhcmlhdGlvbihwbGFjZW1lbnQpID09PSBzdGFydDtcbiAgICB2YXIgaXNWZXJ0aWNhbCA9IFt0b3AsIGJvdHRvbV0uaW5kZXhPZihfYmFzZVBsYWNlbWVudCkgPj0gMDtcbiAgICB2YXIgbGVuID0gaXNWZXJ0aWNhbCA/ICd3aWR0aCcgOiAnaGVpZ2h0JztcbiAgICB2YXIgb3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIGFsdEJvdW5kYXJ5OiBhbHRCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmdcbiAgICB9KTtcbiAgICB2YXIgbWFpblZhcmlhdGlvblNpZGUgPSBpc1ZlcnRpY2FsID8gaXNTdGFydFZhcmlhdGlvbiA/IHJpZ2h0IDogbGVmdCA6IGlzU3RhcnRWYXJpYXRpb24gPyBib3R0b20gOiB0b3A7XG5cbiAgICBpZiAocmVmZXJlbmNlUmVjdFtsZW5dID4gcG9wcGVyUmVjdFtsZW5dKSB7XG4gICAgICBtYWluVmFyaWF0aW9uU2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5WYXJpYXRpb25TaWRlKTtcbiAgICB9XG5cbiAgICB2YXIgYWx0VmFyaWF0aW9uU2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5WYXJpYXRpb25TaWRlKTtcbiAgICB2YXIgY2hlY2tzID0gW107XG5cbiAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgY2hlY2tzLnB1c2gob3ZlcmZsb3dbX2Jhc2VQbGFjZW1lbnRdIDw9IDApO1xuICAgIH1cblxuICAgIGlmIChjaGVja0FsdEF4aXMpIHtcbiAgICAgIGNoZWNrcy5wdXNoKG92ZXJmbG93W21haW5WYXJpYXRpb25TaWRlXSA8PSAwLCBvdmVyZmxvd1thbHRWYXJpYXRpb25TaWRlXSA8PSAwKTtcbiAgICB9XG5cbiAgICBpZiAoY2hlY2tzLmV2ZXJ5KGZ1bmN0aW9uIChjaGVjaykge1xuICAgICAgcmV0dXJuIGNoZWNrO1xuICAgIH0pKSB7XG4gICAgICBmaXJzdEZpdHRpbmdQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgICBtYWtlRmFsbGJhY2tDaGVja3MgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNoZWNrc01hcC5zZXQocGxhY2VtZW50LCBjaGVja3MpO1xuICB9XG5cbiAgaWYgKG1ha2VGYWxsYmFja0NoZWNrcykge1xuICAgIC8vIGAyYCBtYXkgYmUgZGVzaXJlZCBpbiBzb21lIGNhc2VzIOKAkyByZXNlYXJjaCBsYXRlclxuICAgIHZhciBudW1iZXJPZkNoZWNrcyA9IGZsaXBWYXJpYXRpb25zID8gMyA6IDE7XG5cbiAgICB2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcChfaSkge1xuICAgICAgdmFyIGZpdHRpbmdQbGFjZW1lbnQgPSBwbGFjZW1lbnRzLmZpbmQoZnVuY3Rpb24gKHBsYWNlbWVudCkge1xuICAgICAgICB2YXIgY2hlY2tzID0gY2hlY2tzTWFwLmdldChwbGFjZW1lbnQpO1xuXG4gICAgICAgIGlmIChjaGVja3MpIHtcbiAgICAgICAgICByZXR1cm4gY2hlY2tzLnNsaWNlKDAsIF9pKS5ldmVyeShmdW5jdGlvbiAoY2hlY2spIHtcbiAgICAgICAgICAgIHJldHVybiBjaGVjaztcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChmaXR0aW5nUGxhY2VtZW50KSB7XG4gICAgICAgIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IGZpdHRpbmdQbGFjZW1lbnQ7XG4gICAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvciAodmFyIF9pID0gbnVtYmVyT2ZDaGVja3M7IF9pID4gMDsgX2ktLSkge1xuICAgICAgdmFyIF9yZXQgPSBfbG9vcChfaSk7XG5cbiAgICAgIGlmIChfcmV0ID09PSBcImJyZWFrXCIpIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzdGF0ZS5wbGFjZW1lbnQgIT09IGZpcnN0Rml0dGluZ1BsYWNlbWVudCkge1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0uX3NraXAgPSB0cnVlO1xuICAgIHN0YXRlLnBsYWNlbWVudCA9IGZpcnN0Rml0dGluZ1BsYWNlbWVudDtcbiAgICBzdGF0ZS5yZXNldCA9IHRydWU7XG4gIH1cbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2ZsaXAnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICBmbjogZmxpcCxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydvZmZzZXQnXSxcbiAgZGF0YToge1xuICAgIF9za2lwOiBmYWxzZVxuICB9XG59OyIsImltcG9ydCB7IHRvcCwgYm90dG9tLCBsZWZ0LCByaWdodCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuXG5mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdCwgcHJldmVudGVkT2Zmc2V0cykge1xuICBpZiAocHJldmVudGVkT2Zmc2V0cyA9PT0gdm9pZCAwKSB7XG4gICAgcHJldmVudGVkT2Zmc2V0cyA9IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdG9wOiBvdmVyZmxvdy50b3AgLSByZWN0LmhlaWdodCAtIHByZXZlbnRlZE9mZnNldHMueSxcbiAgICByaWdodDogb3ZlcmZsb3cucmlnaHQgLSByZWN0LndpZHRoICsgcHJldmVudGVkT2Zmc2V0cy54LFxuICAgIGJvdHRvbTogb3ZlcmZsb3cuYm90dG9tIC0gcmVjdC5oZWlnaHQgKyBwcmV2ZW50ZWRPZmZzZXRzLnksXG4gICAgbGVmdDogb3ZlcmZsb3cubGVmdCAtIHJlY3Qud2lkdGggLSBwcmV2ZW50ZWRPZmZzZXRzLnhcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG92ZXJmbG93KSB7XG4gIHJldHVybiBbdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0XS5zb21lKGZ1bmN0aW9uIChzaWRlKSB7XG4gICAgcmV0dXJuIG92ZXJmbG93W3NpZGVdID49IDA7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBoaWRlKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWU7XG4gIHZhciByZWZlcmVuY2VSZWN0ID0gc3RhdGUucmVjdHMucmVmZXJlbmNlO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIHByZXZlbnRlZE9mZnNldHMgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLnByZXZlbnRPdmVyZmxvdztcbiAgdmFyIHJlZmVyZW5jZU92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBlbGVtZW50Q29udGV4dDogJ3JlZmVyZW5jZSdcbiAgfSk7XG4gIHZhciBwb3BwZXJBbHRPdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgYWx0Qm91bmRhcnk6IHRydWVcbiAgfSk7XG4gIHZhciByZWZlcmVuY2VDbGlwcGluZ09mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhyZWZlcmVuY2VPdmVyZmxvdywgcmVmZXJlbmNlUmVjdCk7XG4gIHZhciBwb3BwZXJFc2NhcGVPZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMocG9wcGVyQWx0T3ZlcmZsb3csIHBvcHBlclJlY3QsIHByZXZlbnRlZE9mZnNldHMpO1xuICB2YXIgaXNSZWZlcmVuY2VIaWRkZW4gPSBpc0FueVNpZGVGdWxseUNsaXBwZWQocmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzKTtcbiAgdmFyIGhhc1BvcHBlckVzY2FwZWQgPSBpc0FueVNpZGVGdWxseUNsaXBwZWQocG9wcGVyRXNjYXBlT2Zmc2V0cyk7XG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSB7XG4gICAgcmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzOiByZWZlcmVuY2VDbGlwcGluZ09mZnNldHMsXG4gICAgcG9wcGVyRXNjYXBlT2Zmc2V0czogcG9wcGVyRXNjYXBlT2Zmc2V0cyxcbiAgICBpc1JlZmVyZW5jZUhpZGRlbjogaXNSZWZlcmVuY2VIaWRkZW4sXG4gICAgaGFzUG9wcGVyRXNjYXBlZDogaGFzUG9wcGVyRXNjYXBlZFxuICB9O1xuICBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyLCB7XG4gICAgJ2RhdGEtcG9wcGVyLXJlZmVyZW5jZS1oaWRkZW4nOiBpc1JlZmVyZW5jZUhpZGRlbixcbiAgICAnZGF0YS1wb3BwZXItZXNjYXBlZCc6IGhhc1BvcHBlckVzY2FwZWRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdoaWRlJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydwcmV2ZW50T3ZlcmZsb3cnXSxcbiAgZm46IGhpZGVcbn07IiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBhcHBseVN0eWxlcyB9IGZyb20gXCIuL2FwcGx5U3R5bGVzLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFycm93IH0gZnJvbSBcIi4vYXJyb3cuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY29tcHV0ZVN0eWxlcyB9IGZyb20gXCIuL2NvbXB1dGVTdHlsZXMuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZXZlbnRMaXN0ZW5lcnMgfSBmcm9tIFwiLi9ldmVudExpc3RlbmVycy5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmbGlwIH0gZnJvbSBcIi4vZmxpcC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBoaWRlIH0gZnJvbSBcIi4vaGlkZS5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBvZmZzZXQgfSBmcm9tIFwiLi9vZmZzZXQuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcG9wcGVyT2Zmc2V0cyB9IGZyb20gXCIuL3BvcHBlck9mZnNldHMuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcHJldmVudE92ZXJmbG93IH0gZnJvbSBcIi4vcHJldmVudE92ZXJmbG93LmpzXCI7IiwiaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIHBsYWNlbWVudHMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgZnVuY3Rpb24gZGlzdGFuY2VBbmRTa2lkZGluZ1RvWFkocGxhY2VtZW50LCByZWN0cywgb2Zmc2V0KSB7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICB2YXIgaW52ZXJ0RGlzdGFuY2UgPSBbbGVmdCwgdG9wXS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDAgPyAtMSA6IDE7XG5cbiAgdmFyIF9yZWYgPSB0eXBlb2Ygb2Zmc2V0ID09PSAnZnVuY3Rpb24nID8gb2Zmc2V0KE9iamVjdC5hc3NpZ24oe30sIHJlY3RzLCB7XG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgfSkpIDogb2Zmc2V0LFxuICAgICAgc2tpZGRpbmcgPSBfcmVmWzBdLFxuICAgICAgZGlzdGFuY2UgPSBfcmVmWzFdO1xuXG4gIHNraWRkaW5nID0gc2tpZGRpbmcgfHwgMDtcbiAgZGlzdGFuY2UgPSAoZGlzdGFuY2UgfHwgMCkgKiBpbnZlcnREaXN0YW5jZTtcbiAgcmV0dXJuIFtsZWZ0LCByaWdodF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSA+PSAwID8ge1xuICAgIHg6IGRpc3RhbmNlLFxuICAgIHk6IHNraWRkaW5nXG4gIH0gOiB7XG4gICAgeDogc2tpZGRpbmcsXG4gICAgeTogZGlzdGFuY2VcbiAgfTtcbn1cblxuZnVuY3Rpb24gb2Zmc2V0KF9yZWYyKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYyLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYyLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZjIubmFtZTtcbiAgdmFyIF9vcHRpb25zJG9mZnNldCA9IG9wdGlvbnMub2Zmc2V0LFxuICAgICAgb2Zmc2V0ID0gX29wdGlvbnMkb2Zmc2V0ID09PSB2b2lkIDAgPyBbMCwgMF0gOiBfb3B0aW9ucyRvZmZzZXQ7XG4gIHZhciBkYXRhID0gcGxhY2VtZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gICAgYWNjW3BsYWNlbWVudF0gPSBkaXN0YW5jZUFuZFNraWRkaW5nVG9YWShwbGFjZW1lbnQsIHN0YXRlLnJlY3RzLCBvZmZzZXQpO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbiAgdmFyIF9kYXRhJHN0YXRlJHBsYWNlbWVudCA9IGRhdGFbc3RhdGUucGxhY2VtZW50XSxcbiAgICAgIHggPSBfZGF0YSRzdGF0ZSRwbGFjZW1lbnQueCxcbiAgICAgIHkgPSBfZGF0YSRzdGF0ZSRwbGFjZW1lbnQueTtcblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzICE9IG51bGwpIHtcbiAgICBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMueCArPSB4O1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy55ICs9IHk7XG4gIH1cblxuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gZGF0YTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ29mZnNldCcsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIHJlcXVpcmVzOiBbJ3BvcHBlck9mZnNldHMnXSxcbiAgZm46IG9mZnNldFxufTsiLCJpbXBvcnQgY29tcHV0ZU9mZnNldHMgZnJvbSBcIi4uL3V0aWxzL2NvbXB1dGVPZmZzZXRzLmpzXCI7XG5cbmZ1bmN0aW9uIHBvcHBlck9mZnNldHMoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgLy8gT2Zmc2V0cyBhcmUgdGhlIGFjdHVhbCBwb3NpdGlvbiB0aGUgcG9wcGVyIG5lZWRzIHRvIGhhdmUgdG8gYmVcbiAgLy8gcHJvcGVybHkgcG9zaXRpb25lZCBuZWFyIGl0cyByZWZlcmVuY2UgZWxlbWVudFxuICAvLyBUaGlzIGlzIHRoZSBtb3N0IGJhc2ljIHBsYWNlbWVudCwgYW5kIHdpbGwgYmUgYWRqdXN0ZWQgYnlcbiAgLy8gdGhlIG1vZGlmaWVycyBpbiB0aGUgbmV4dCBzdGVwXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiBzdGF0ZS5yZWN0cy5yZWZlcmVuY2UsXG4gICAgZWxlbWVudDogc3RhdGUucmVjdHMucG9wcGVyLFxuICAgIHN0cmF0ZWd5OiAnYWJzb2x1dGUnLFxuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAncG9wcGVyT2Zmc2V0cycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAncmVhZCcsXG4gIGZuOiBwb3BwZXJPZmZzZXRzLFxuICBkYXRhOiB7fVxufTsiLCJpbXBvcnQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBib3R0b20sIHN0YXJ0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0QWx0QXhpcyBmcm9tIFwiLi4vdXRpbHMvZ2V0QWx0QXhpcy5qc1wiO1xuaW1wb3J0IHsgd2l0aGluLCB3aXRoaW5NYXhDbGFtcCB9IGZyb20gXCIuLi91dGlscy93aXRoaW4uanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgZ2V0RnJlc2hTaWRlT2JqZWN0IGZyb20gXCIuLi91dGlscy9nZXRGcmVzaFNpZGVPYmplY3QuanNcIjtcbmltcG9ydCB7IG1pbiBhcyBtYXRoTWluLCBtYXggYXMgbWF0aE1heCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIHByZXZlbnRPdmVyZmxvdyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgdmFyIF9vcHRpb25zJG1haW5BeGlzID0gb3B0aW9ucy5tYWluQXhpcyxcbiAgICAgIGNoZWNrTWFpbkF4aXMgPSBfb3B0aW9ucyRtYWluQXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJG1haW5BeGlzLFxuICAgICAgX29wdGlvbnMkYWx0QXhpcyA9IG9wdGlvbnMuYWx0QXhpcyxcbiAgICAgIGNoZWNrQWx0QXhpcyA9IF9vcHRpb25zJGFsdEF4aXMgPT09IHZvaWQgMCA/IGZhbHNlIDogX29wdGlvbnMkYWx0QXhpcyxcbiAgICAgIGJvdW5kYXJ5ID0gb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IG9wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBvcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZyA9IG9wdGlvbnMucGFkZGluZyxcbiAgICAgIF9vcHRpb25zJHRldGhlciA9IG9wdGlvbnMudGV0aGVyLFxuICAgICAgdGV0aGVyID0gX29wdGlvbnMkdGV0aGVyID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkdGV0aGVyLFxuICAgICAgX29wdGlvbnMkdGV0aGVyT2Zmc2V0ID0gb3B0aW9ucy50ZXRoZXJPZmZzZXQsXG4gICAgICB0ZXRoZXJPZmZzZXQgPSBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQgPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQ7XG4gIHZhciBvdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgYWx0Qm91bmRhcnk6IGFsdEJvdW5kYXJ5XG4gIH0pO1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgdmFyIHZhcmlhdGlvbiA9IGdldFZhcmlhdGlvbihzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgaXNCYXNlUGxhY2VtZW50ID0gIXZhcmlhdGlvbjtcbiAgdmFyIG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpO1xuICB2YXIgYWx0QXhpcyA9IGdldEFsdEF4aXMobWFpbkF4aXMpO1xuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cztcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgdGV0aGVyT2Zmc2V0VmFsdWUgPSB0eXBlb2YgdGV0aGVyT2Zmc2V0ID09PSAnZnVuY3Rpb24nID8gdGV0aGVyT2Zmc2V0KE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnJlY3RzLCB7XG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSkpIDogdGV0aGVyT2Zmc2V0O1xuICB2YXIgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlID0gdHlwZW9mIHRldGhlck9mZnNldFZhbHVlID09PSAnbnVtYmVyJyA/IHtcbiAgICBtYWluQXhpczogdGV0aGVyT2Zmc2V0VmFsdWUsXG4gICAgYWx0QXhpczogdGV0aGVyT2Zmc2V0VmFsdWVcbiAgfSA6IE9iamVjdC5hc3NpZ24oe1xuICAgIG1haW5BeGlzOiAwLFxuICAgIGFsdEF4aXM6IDBcbiAgfSwgdGV0aGVyT2Zmc2V0VmFsdWUpO1xuICB2YXIgb2Zmc2V0TW9kaWZpZXJTdGF0ZSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0ID8gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXRbc3RhdGUucGxhY2VtZW50XSA6IG51bGw7XG4gIHZhciBkYXRhID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmICghcG9wcGVyT2Zmc2V0cykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclN0YXRlJDtcblxuICAgIHZhciBtYWluU2lkZSA9IG1haW5BeGlzID09PSAneScgPyB0b3AgOiBsZWZ0O1xuICAgIHZhciBhbHRTaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/IGJvdHRvbSA6IHJpZ2h0O1xuICAgIHZhciBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgIHZhciBvZmZzZXQgPSBwb3BwZXJPZmZzZXRzW21haW5BeGlzXTtcbiAgICB2YXIgbWluID0gb2Zmc2V0ICsgb3ZlcmZsb3dbbWFpblNpZGVdO1xuICAgIHZhciBtYXggPSBvZmZzZXQgLSBvdmVyZmxvd1thbHRTaWRlXTtcbiAgICB2YXIgYWRkaXRpdmUgPSB0ZXRoZXIgPyAtcG9wcGVyUmVjdFtsZW5dIC8gMiA6IDA7XG4gICAgdmFyIG1pbkxlbiA9IHZhcmlhdGlvbiA9PT0gc3RhcnQgPyByZWZlcmVuY2VSZWN0W2xlbl0gOiBwb3BwZXJSZWN0W2xlbl07XG4gICAgdmFyIG1heExlbiA9IHZhcmlhdGlvbiA9PT0gc3RhcnQgPyAtcG9wcGVyUmVjdFtsZW5dIDogLXJlZmVyZW5jZVJlY3RbbGVuXTsgLy8gV2UgbmVlZCB0byBpbmNsdWRlIHRoZSBhcnJvdyBpbiB0aGUgY2FsY3VsYXRpb24gc28gdGhlIGFycm93IGRvZXNuJ3QgZ29cbiAgICAvLyBvdXRzaWRlIHRoZSByZWZlcmVuY2UgYm91bmRzXG5cbiAgICB2YXIgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMuYXJyb3c7XG4gICAgdmFyIGFycm93UmVjdCA9IHRldGhlciAmJiBhcnJvd0VsZW1lbnQgPyBnZXRMYXlvdXRSZWN0KGFycm93RWxlbWVudCkgOiB7XG4gICAgICB3aWR0aDogMCxcbiAgICAgIGhlaWdodDogMFxuICAgIH07XG4gICAgdmFyIGFycm93UGFkZGluZ09iamVjdCA9IHN0YXRlLm1vZGlmaWVyc0RhdGFbJ2Fycm93I3BlcnNpc3RlbnQnXSA/IHN0YXRlLm1vZGlmaWVyc0RhdGFbJ2Fycm93I3BlcnNpc3RlbnQnXS5wYWRkaW5nIDogZ2V0RnJlc2hTaWRlT2JqZWN0KCk7XG4gICAgdmFyIGFycm93UGFkZGluZ01pbiA9IGFycm93UGFkZGluZ09iamVjdFttYWluU2lkZV07XG4gICAgdmFyIGFycm93UGFkZGluZ01heCA9IGFycm93UGFkZGluZ09iamVjdFthbHRTaWRlXTsgLy8gSWYgdGhlIHJlZmVyZW5jZSBsZW5ndGggaXMgc21hbGxlciB0aGFuIHRoZSBhcnJvdyBsZW5ndGgsIHdlIGRvbid0IHdhbnRcbiAgICAvLyB0byBpbmNsdWRlIGl0cyBmdWxsIHNpemUgaW4gdGhlIGNhbGN1bGF0aW9uLiBJZiB0aGUgcmVmZXJlbmNlIGlzIHNtYWxsXG4gICAgLy8gYW5kIG5lYXIgdGhlIGVkZ2Ugb2YgYSBib3VuZGFyeSwgdGhlIHBvcHBlciBjYW4gb3ZlcmZsb3cgZXZlbiBpZiB0aGVcbiAgICAvLyByZWZlcmVuY2UgaXMgbm90IG92ZXJmbG93aW5nIGFzIHdlbGwgKGUuZy4gdmlydHVhbCBlbGVtZW50cyB3aXRoIG5vXG4gICAgLy8gd2lkdGggb3IgaGVpZ2h0KVxuXG4gICAgdmFyIGFycm93TGVuID0gd2l0aGluKDAsIHJlZmVyZW5jZVJlY3RbbGVuXSwgYXJyb3dSZWN0W2xlbl0pO1xuICAgIHZhciBtaW5PZmZzZXQgPSBpc0Jhc2VQbGFjZW1lbnQgPyByZWZlcmVuY2VSZWN0W2xlbl0gLyAyIC0gYWRkaXRpdmUgLSBhcnJvd0xlbiAtIGFycm93UGFkZGluZ01pbiAtIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcyA6IG1pbkxlbiAtIGFycm93TGVuIC0gYXJyb3dQYWRkaW5nTWluIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzO1xuICAgIHZhciBtYXhPZmZzZXQgPSBpc0Jhc2VQbGFjZW1lbnQgPyAtcmVmZXJlbmNlUmVjdFtsZW5dIC8gMiArIGFkZGl0aXZlICsgYXJyb3dMZW4gKyBhcnJvd1BhZGRpbmdNYXggKyBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXMgOiBtYXhMZW4gKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcztcbiAgICB2YXIgYXJyb3dPZmZzZXRQYXJlbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdyAmJiBnZXRPZmZzZXRQYXJlbnQoc3RhdGUuZWxlbWVudHMuYXJyb3cpO1xuICAgIHZhciBjbGllbnRPZmZzZXQgPSBhcnJvd09mZnNldFBhcmVudCA/IG1haW5BeGlzID09PSAneScgPyBhcnJvd09mZnNldFBhcmVudC5jbGllbnRUb3AgfHwgMCA6IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudExlZnQgfHwgMCA6IDA7XG4gICAgdmFyIG9mZnNldE1vZGlmaWVyVmFsdWUgPSAoX29mZnNldE1vZGlmaWVyU3RhdGUkID0gb2Zmc2V0TW9kaWZpZXJTdGF0ZSA9PSBudWxsID8gdm9pZCAwIDogb2Zmc2V0TW9kaWZpZXJTdGF0ZVttYWluQXhpc10pICE9IG51bGwgPyBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQgOiAwO1xuICAgIHZhciB0ZXRoZXJNaW4gPSBvZmZzZXQgKyBtaW5PZmZzZXQgLSBvZmZzZXRNb2RpZmllclZhbHVlIC0gY2xpZW50T2Zmc2V0O1xuICAgIHZhciB0ZXRoZXJNYXggPSBvZmZzZXQgKyBtYXhPZmZzZXQgLSBvZmZzZXRNb2RpZmllclZhbHVlO1xuICAgIHZhciBwcmV2ZW50ZWRPZmZzZXQgPSB3aXRoaW4odGV0aGVyID8gbWF0aE1pbihtaW4sIHRldGhlck1pbikgOiBtaW4sIG9mZnNldCwgdGV0aGVyID8gbWF0aE1heChtYXgsIHRldGhlck1heCkgOiBtYXgpO1xuICAgIHBvcHBlck9mZnNldHNbbWFpbkF4aXNdID0gcHJldmVudGVkT2Zmc2V0O1xuICAgIGRhdGFbbWFpbkF4aXNdID0gcHJldmVudGVkT2Zmc2V0IC0gb2Zmc2V0O1xuICB9XG5cbiAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgIHZhciBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyO1xuXG4gICAgdmFyIF9tYWluU2lkZSA9IG1haW5BeGlzID09PSAneCcgPyB0b3AgOiBsZWZ0O1xuXG4gICAgdmFyIF9hbHRTaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IGJvdHRvbSA6IHJpZ2h0O1xuXG4gICAgdmFyIF9vZmZzZXQgPSBwb3BwZXJPZmZzZXRzW2FsdEF4aXNdO1xuXG4gICAgdmFyIF9sZW4gPSBhbHRBeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgICB2YXIgX21pbiA9IF9vZmZzZXQgKyBvdmVyZmxvd1tfbWFpblNpZGVdO1xuXG4gICAgdmFyIF9tYXggPSBfb2Zmc2V0IC0gb3ZlcmZsb3dbX2FsdFNpZGVdO1xuXG4gICAgdmFyIGlzT3JpZ2luU2lkZSA9IFt0b3AsIGxlZnRdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgIT09IC0xO1xuXG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclZhbHVlID0gKF9vZmZzZXRNb2RpZmllclN0YXRlJDIgPSBvZmZzZXRNb2RpZmllclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBvZmZzZXRNb2RpZmllclN0YXRlW2FsdEF4aXNdKSAhPSBudWxsID8gX29mZnNldE1vZGlmaWVyU3RhdGUkMiA6IDA7XG5cbiAgICB2YXIgX3RldGhlck1pbiA9IGlzT3JpZ2luU2lkZSA/IF9taW4gOiBfb2Zmc2V0IC0gcmVmZXJlbmNlUmVjdFtfbGVuXSAtIHBvcHBlclJlY3RbX2xlbl0gLSBfb2Zmc2V0TW9kaWZpZXJWYWx1ZSArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5hbHRBeGlzO1xuXG4gICAgdmFyIF90ZXRoZXJNYXggPSBpc09yaWdpblNpZGUgPyBfb2Zmc2V0ICsgcmVmZXJlbmNlUmVjdFtfbGVuXSArIHBvcHBlclJlY3RbX2xlbl0gLSBfb2Zmc2V0TW9kaWZpZXJWYWx1ZSAtIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5hbHRBeGlzIDogX21heDtcblxuICAgIHZhciBfcHJldmVudGVkT2Zmc2V0ID0gdGV0aGVyICYmIGlzT3JpZ2luU2lkZSA/IHdpdGhpbk1heENsYW1wKF90ZXRoZXJNaW4sIF9vZmZzZXQsIF90ZXRoZXJNYXgpIDogd2l0aGluKHRldGhlciA/IF90ZXRoZXJNaW4gOiBfbWluLCBfb2Zmc2V0LCB0ZXRoZXIgPyBfdGV0aGVyTWF4IDogX21heCk7XG5cbiAgICBwb3BwZXJPZmZzZXRzW2FsdEF4aXNdID0gX3ByZXZlbnRlZE9mZnNldDtcbiAgICBkYXRhW2FsdEF4aXNdID0gX3ByZXZlbnRlZE9mZnNldCAtIF9vZmZzZXQ7XG4gIH1cblxuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gZGF0YTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ3ByZXZlbnRPdmVyZmxvdycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBwcmV2ZW50T3ZlcmZsb3csXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsnb2Zmc2V0J11cbn07IiwiaW1wb3J0IHsgcG9wcGVyR2VuZXJhdG9yLCBkZXRlY3RPdmVyZmxvdyB9IGZyb20gXCIuL2NyZWF0ZVBvcHBlci5qc1wiO1xuaW1wb3J0IGV2ZW50TGlzdGVuZXJzIGZyb20gXCIuL21vZGlmaWVycy9ldmVudExpc3RlbmVycy5qc1wiO1xuaW1wb3J0IHBvcHBlck9mZnNldHMgZnJvbSBcIi4vbW9kaWZpZXJzL3BvcHBlck9mZnNldHMuanNcIjtcbmltcG9ydCBjb21wdXRlU3R5bGVzIGZyb20gXCIuL21vZGlmaWVycy9jb21wdXRlU3R5bGVzLmpzXCI7XG5pbXBvcnQgYXBwbHlTdHlsZXMgZnJvbSBcIi4vbW9kaWZpZXJzL2FwcGx5U3R5bGVzLmpzXCI7XG52YXIgZGVmYXVsdE1vZGlmaWVycyA9IFtldmVudExpc3RlbmVycywgcG9wcGVyT2Zmc2V0cywgY29tcHV0ZVN0eWxlcywgYXBwbHlTdHlsZXNdO1xudmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3Ioe1xuICBkZWZhdWx0TW9kaWZpZXJzOiBkZWZhdWx0TW9kaWZpZXJzXG59KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIsIHBvcHBlckdlbmVyYXRvciwgZGVmYXVsdE1vZGlmaWVycywgZGV0ZWN0T3ZlcmZsb3cgfTsiLCJpbXBvcnQgeyBwb3BwZXJHZW5lcmF0b3IsIGRldGVjdE92ZXJmbG93IH0gZnJvbSBcIi4vY3JlYXRlUG9wcGVyLmpzXCI7XG5pbXBvcnQgZXZlbnRMaXN0ZW5lcnMgZnJvbSBcIi4vbW9kaWZpZXJzL2V2ZW50TGlzdGVuZXJzLmpzXCI7XG5pbXBvcnQgcG9wcGVyT2Zmc2V0cyBmcm9tIFwiLi9tb2RpZmllcnMvcG9wcGVyT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVTdHlsZXMgZnJvbSBcIi4vbW9kaWZpZXJzL2NvbXB1dGVTdHlsZXMuanNcIjtcbmltcG9ydCBhcHBseVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvYXBwbHlTdHlsZXMuanNcIjtcbmltcG9ydCBvZmZzZXQgZnJvbSBcIi4vbW9kaWZpZXJzL29mZnNldC5qc1wiO1xuaW1wb3J0IGZsaXAgZnJvbSBcIi4vbW9kaWZpZXJzL2ZsaXAuanNcIjtcbmltcG9ydCBwcmV2ZW50T3ZlcmZsb3cgZnJvbSBcIi4vbW9kaWZpZXJzL3ByZXZlbnRPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGFycm93IGZyb20gXCIuL21vZGlmaWVycy9hcnJvdy5qc1wiO1xuaW1wb3J0IGhpZGUgZnJvbSBcIi4vbW9kaWZpZXJzL2hpZGUuanNcIjtcbnZhciBkZWZhdWx0TW9kaWZpZXJzID0gW2V2ZW50TGlzdGVuZXJzLCBwb3BwZXJPZmZzZXRzLCBjb21wdXRlU3R5bGVzLCBhcHBseVN0eWxlcywgb2Zmc2V0LCBmbGlwLCBwcmV2ZW50T3ZlcmZsb3csIGFycm93LCBoaWRlXTtcbnZhciBjcmVhdGVQb3BwZXIgPSAvKiNfX1BVUkVfXyovcG9wcGVyR2VuZXJhdG9yKHtcbiAgZGVmYXVsdE1vZGlmaWVyczogZGVmYXVsdE1vZGlmaWVyc1xufSk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgY3JlYXRlUG9wcGVyLCBwb3BwZXJHZW5lcmF0b3IsIGRlZmF1bHRNb2RpZmllcnMsIGRldGVjdE92ZXJmbG93IH07IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgY3JlYXRlUG9wcGVyIGFzIGNyZWF0ZVBvcHBlckxpdGUgfSBmcm9tIFwiLi9wb3BwZXItbGl0ZS5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCAqIGZyb20gXCIuL21vZGlmaWVycy9pbmRleC5qc1wiOyIsImltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4vZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgeyB2YXJpYXRpb25QbGFjZW1lbnRzLCBiYXNlUGxhY2VtZW50cywgcGxhY2VtZW50cyBhcyBhbGxQbGFjZW1lbnRzIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4vZGV0ZWN0T3ZlcmZsb3cuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbXB1dGVBdXRvUGxhY2VtZW50KHN0YXRlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgcGxhY2VtZW50ID0gX29wdGlvbnMucGxhY2VtZW50LFxuICAgICAgYm91bmRhcnkgPSBfb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmcgPSBfb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucy5mbGlwVmFyaWF0aW9ucyxcbiAgICAgIF9vcHRpb25zJGFsbG93ZWRBdXRvUCA9IF9vcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cyxcbiAgICAgIGFsbG93ZWRBdXRvUGxhY2VtZW50cyA9IF9vcHRpb25zJGFsbG93ZWRBdXRvUCA9PT0gdm9pZCAwID8gYWxsUGxhY2VtZW50cyA6IF9vcHRpb25zJGFsbG93ZWRBdXRvUDtcbiAgdmFyIHZhcmlhdGlvbiA9IGdldFZhcmlhdGlvbihwbGFjZW1lbnQpO1xuICB2YXIgcGxhY2VtZW50cyA9IHZhcmlhdGlvbiA/IGZsaXBWYXJpYXRpb25zID8gdmFyaWF0aW9uUGxhY2VtZW50cyA6IHZhcmlhdGlvblBsYWNlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHZhcmlhdGlvbjtcbiAgfSkgOiBiYXNlUGxhY2VtZW50cztcbiAgdmFyIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cy5maWx0ZXIoZnVuY3Rpb24gKHBsYWNlbWVudCkge1xuICAgIHJldHVybiBhbGxvd2VkQXV0b1BsYWNlbWVudHMuaW5kZXhPZihwbGFjZW1lbnQpID49IDA7XG4gIH0pO1xuXG4gIGlmIChhbGxvd2VkUGxhY2VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHM7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBUaGUgYGFsbG93ZWRBdXRvUGxhY2VtZW50c2Agb3B0aW9uIGRpZCBub3QgYWxsb3cgYW55JywgJ3BsYWNlbWVudHMuIEVuc3VyZSB0aGUgYHBsYWNlbWVudGAgb3B0aW9uIG1hdGNoZXMgdGhlIHZhcmlhdGlvbicsICdvZiB0aGUgYWxsb3dlZCBwbGFjZW1lbnRzLicsICdGb3IgZXhhbXBsZSwgXCJhdXRvXCIgY2Fubm90IGJlIHVzZWQgdG8gYWxsb3cgXCJib3R0b20tc3RhcnRcIi4nLCAnVXNlIFwiYXV0by1zdGFydFwiIGluc3RlYWQuJ10uam9pbignICcpKTtcbiAgICB9XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtdHlwZV06IEZsb3cgc2VlbXMgdG8gaGF2ZSBwcm9ibGVtcyB3aXRoIHR3byBhcnJheSB1bmlvbnMuLi5cblxuXG4gIHZhciBvdmVyZmxvd3MgPSBhbGxvd2VkUGxhY2VtZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gICAgYWNjW3BsYWNlbWVudF0gPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmdcbiAgICB9KVtnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCldO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG92ZXJmbG93cykuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiBvdmVyZmxvd3NbYV0gLSBvdmVyZmxvd3NbYl07XG4gIH0pO1xufSIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4vZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBzdGFydCwgZW5kIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciByZWZlcmVuY2UgPSBfcmVmLnJlZmVyZW5jZSxcbiAgICAgIGVsZW1lbnQgPSBfcmVmLmVsZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfcmVmLnBsYWNlbWVudDtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBwbGFjZW1lbnQgPyBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgdmFyaWF0aW9uID0gcGxhY2VtZW50ID8gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGVsZW1lbnQud2lkdGggLyAyO1xuICB2YXIgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBlbGVtZW50LmhlaWdodCAvIDI7XG4gIHZhciBvZmZzZXRzO1xuXG4gIHN3aXRjaCAoYmFzZVBsYWNlbWVudCkge1xuICAgIGNhc2UgdG9wOlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBlbGVtZW50LmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBib3R0b206XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgcmlnaHQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBsZWZ0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggLSBlbGVtZW50LndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG5cbiAgdmFyIG1haW5BeGlzID0gYmFzZVBsYWNlbWVudCA/IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KSA6IG51bGw7XG5cbiAgaWYgKG1haW5BeGlzICE9IG51bGwpIHtcbiAgICB2YXIgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHN3aXRjaCAodmFyaWF0aW9uKSB7XG4gICAgICBjYXNlIHN0YXJ0OlxuICAgICAgICBvZmZzZXRzW21haW5BeGlzXSA9IG9mZnNldHNbbWFpbkF4aXNdIC0gKHJlZmVyZW5jZVtsZW5dIC8gMiAtIGVsZW1lbnRbbGVuXSAvIDIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBlbmQ6XG4gICAgICAgIG9mZnNldHNbbWFpbkF4aXNdID0gb2Zmc2V0c1ttYWluQXhpc10gKyAocmVmZXJlbmNlW2xlbl0gLyAyIC0gZWxlbWVudFtsZW5dIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvZmZzZXRzO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlYm91bmNlKGZuKSB7XG4gIHZhciBwZW5kaW5nO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmICghcGVuZGluZykge1xuICAgICAgcGVuZGluZyA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHBlbmRpbmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgcmVzb2x2ZShmbigpKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGVuZGluZztcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0Q2xpcHBpbmdSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Q2xpcHBpbmdSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgY29tcHV0ZU9mZnNldHMgZnJvbSBcIi4vY29tcHV0ZU9mZnNldHMuanNcIjtcbmltcG9ydCByZWN0VG9DbGllbnRSZWN0IGZyb20gXCIuL3JlY3RUb0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCB7IGNsaXBwaW5nUGFyZW50cywgcmVmZXJlbmNlLCBwb3BwZXIsIGJvdHRvbSwgdG9wLCByaWdodCwgYmFzZVBsYWNlbWVudHMsIHZpZXdwb3J0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBtZXJnZVBhZGRpbmdPYmplY3QgZnJvbSBcIi4vbWVyZ2VQYWRkaW5nT2JqZWN0LmpzXCI7XG5pbXBvcnQgZXhwYW5kVG9IYXNoTWFwIGZyb20gXCIuL2V4cGFuZFRvSGFzaE1hcC5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRldGVjdE92ZXJmbG93KHN0YXRlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgX29wdGlvbnMkcGxhY2VtZW50ID0gX29wdGlvbnMucGxhY2VtZW50LFxuICAgICAgcGxhY2VtZW50ID0gX29wdGlvbnMkcGxhY2VtZW50ID09PSB2b2lkIDAgPyBzdGF0ZS5wbGFjZW1lbnQgOiBfb3B0aW9ucyRwbGFjZW1lbnQsXG4gICAgICBfb3B0aW9ucyRzdHJhdGVneSA9IF9vcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgc3RyYXRlZ3kgPSBfb3B0aW9ucyRzdHJhdGVneSA9PT0gdm9pZCAwID8gc3RhdGUuc3RyYXRlZ3kgOiBfb3B0aW9ucyRzdHJhdGVneSxcbiAgICAgIF9vcHRpb25zJGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICBib3VuZGFyeSA9IF9vcHRpb25zJGJvdW5kYXJ5ID09PSB2b2lkIDAgPyBjbGlwcGluZ1BhcmVudHMgOiBfb3B0aW9ucyRib3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9PT0gdm9pZCAwID8gdmlld3BvcnQgOiBfb3B0aW9ucyRyb290Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRlbGVtZW50Q29udGUgPSBfb3B0aW9ucy5lbGVtZW50Q29udGV4dCxcbiAgICAgIGVsZW1lbnRDb250ZXh0ID0gX29wdGlvbnMkZWxlbWVudENvbnRlID09PSB2b2lkIDAgPyBwb3BwZXIgOiBfb3B0aW9ucyRlbGVtZW50Q29udGUsXG4gICAgICBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9IF9vcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHBhZGRpbmcgPSBfb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgcGFkZGluZyA9IF9vcHRpb25zJHBhZGRpbmcgPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyRwYWRkaW5nO1xuICB2YXIgcGFkZGluZ09iamVjdCA9IG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG4gIHZhciBhbHRDb250ZXh0ID0gZWxlbWVudENvbnRleHQgPT09IHBvcHBlciA/IHJlZmVyZW5jZSA6IHBvcHBlcjtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBlbGVtZW50ID0gc3RhdGUuZWxlbWVudHNbYWx0Qm91bmRhcnkgPyBhbHRDb250ZXh0IDogZWxlbWVudENvbnRleHRdO1xuICB2YXIgY2xpcHBpbmdDbGllbnRSZWN0ID0gZ2V0Q2xpcHBpbmdSZWN0KGlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQgOiBlbGVtZW50LmNvbnRleHRFbGVtZW50IHx8IGdldERvY3VtZW50RWxlbWVudChzdGF0ZS5lbGVtZW50cy5wb3BwZXIpLCBib3VuZGFyeSwgcm9vdEJvdW5kYXJ5LCBzdHJhdGVneSk7XG4gIHZhciByZWZlcmVuY2VDbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHN0YXRlLmVsZW1lbnRzLnJlZmVyZW5jZSk7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gY29tcHV0ZU9mZnNldHMoe1xuICAgIHJlZmVyZW5jZTogcmVmZXJlbmNlQ2xpZW50UmVjdCxcbiAgICBlbGVtZW50OiBwb3BwZXJSZWN0LFxuICAgIHN0cmF0ZWd5OiAnYWJzb2x1dGUnLFxuICAgIHBsYWNlbWVudDogcGxhY2VtZW50XG4gIH0pO1xuICB2YXIgcG9wcGVyQ2xpZW50UmVjdCA9IHJlY3RUb0NsaWVudFJlY3QoT2JqZWN0LmFzc2lnbih7fSwgcG9wcGVyUmVjdCwgcG9wcGVyT2Zmc2V0cykpO1xuICB2YXIgZWxlbWVudENsaWVudFJlY3QgPSBlbGVtZW50Q29udGV4dCA9PT0gcG9wcGVyID8gcG9wcGVyQ2xpZW50UmVjdCA6IHJlZmVyZW5jZUNsaWVudFJlY3Q7IC8vIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGNsaXBwaW5nIHJlY3RcbiAgLy8gMCBvciBuZWdhdGl2ZSA9IHdpdGhpbiB0aGUgY2xpcHBpbmcgcmVjdFxuXG4gIHZhciBvdmVyZmxvd09mZnNldHMgPSB7XG4gICAgdG9wOiBjbGlwcGluZ0NsaWVudFJlY3QudG9wIC0gZWxlbWVudENsaWVudFJlY3QudG9wICsgcGFkZGluZ09iamVjdC50b3AsXG4gICAgYm90dG9tOiBlbGVtZW50Q2xpZW50UmVjdC5ib3R0b20gLSBjbGlwcGluZ0NsaWVudFJlY3QuYm90dG9tICsgcGFkZGluZ09iamVjdC5ib3R0b20sXG4gICAgbGVmdDogY2xpcHBpbmdDbGllbnRSZWN0LmxlZnQgLSBlbGVtZW50Q2xpZW50UmVjdC5sZWZ0ICsgcGFkZGluZ09iamVjdC5sZWZ0LFxuICAgIHJpZ2h0OiBlbGVtZW50Q2xpZW50UmVjdC5yaWdodCAtIGNsaXBwaW5nQ2xpZW50UmVjdC5yaWdodCArIHBhZGRpbmdPYmplY3QucmlnaHRcbiAgfTtcbiAgdmFyIG9mZnNldERhdGEgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldDsgLy8gT2Zmc2V0cyBjYW4gYmUgYXBwbGllZCBvbmx5IHRvIHRoZSBwb3BwZXIgZWxlbWVudFxuXG4gIGlmIChlbGVtZW50Q29udGV4dCA9PT0gcG9wcGVyICYmIG9mZnNldERhdGEpIHtcbiAgICB2YXIgb2Zmc2V0ID0gb2Zmc2V0RGF0YVtwbGFjZW1lbnRdO1xuICAgIE9iamVjdC5rZXlzKG92ZXJmbG93T2Zmc2V0cykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgbXVsdGlwbHkgPSBbcmlnaHQsIGJvdHRvbV0uaW5kZXhPZihrZXkpID49IDAgPyAxIDogLTE7XG4gICAgICB2YXIgYXhpcyA9IFt0b3AsIGJvdHRvbV0uaW5kZXhPZihrZXkpID49IDAgPyAneScgOiAneCc7XG4gICAgICBvdmVyZmxvd09mZnNldHNba2V5XSArPSBvZmZzZXRbYXhpc10gKiBtdWx0aXBseTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBvdmVyZmxvd09mZnNldHM7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZXhwYW5kVG9IYXNoTWFwKHZhbHVlLCBrZXlzKSB7XG4gIHJldHVybiBrZXlzLnJlZHVjZShmdW5jdGlvbiAoaGFzaE1hcCwga2V5KSB7XG4gICAgaGFzaE1hcFtrZXldID0gdmFsdWU7XG4gICAgcmV0dXJuIGhhc2hNYXA7XG4gIH0sIHt9KTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXQoc3RyKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiBbXS5jb25jYXQoYXJncykucmVkdWNlKGZ1bmN0aW9uIChwLCBjKSB7XG4gICAgcmV0dXJuIHAucmVwbGFjZSgvJXMvLCBjKTtcbiAgfSwgc3RyKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRBbHRBeGlzKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd4JyA/ICd5JyA6ICd4Jztcbn0iLCJpbXBvcnQgeyBhdXRvIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RnJlc2hTaWRlT2JqZWN0KCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMFxuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluZGV4T2YocGxhY2VtZW50KSA+PSAwID8gJ3gnIDogJ3knO1xufSIsInZhciBoYXNoID0ge1xuICBsZWZ0OiAncmlnaHQnLFxuICByaWdodDogJ2xlZnQnLFxuICBib3R0b206ICd0b3AnLFxuICB0b3A6ICdib3R0b20nXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufSIsInZhciBoYXNoID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL3N0YXJ0fGVuZC9nLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xuICAgIHJldHVybiBoYXNoW21hdGNoZWRdO1xuICB9KTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn0iLCJleHBvcnQgdmFyIG1heCA9IE1hdGgubWF4O1xuZXhwb3J0IHZhciBtaW4gPSBNYXRoLm1pbjtcbmV4cG9ydCB2YXIgcm91bmQgPSBNYXRoLnJvdW5kOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlQnlOYW1lKG1vZGlmaWVycykge1xuICB2YXIgbWVyZ2VkID0gbW9kaWZpZXJzLnJlZHVjZShmdW5jdGlvbiAobWVyZ2VkLCBjdXJyZW50KSB7XG4gICAgdmFyIGV4aXN0aW5nID0gbWVyZ2VkW2N1cnJlbnQubmFtZV07XG4gICAgbWVyZ2VkW2N1cnJlbnQubmFtZV0gPSBleGlzdGluZyA/IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLCBjdXJyZW50LCB7XG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5vcHRpb25zLCBjdXJyZW50Lm9wdGlvbnMpLFxuICAgICAgZGF0YTogT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcuZGF0YSwgY3VycmVudC5kYXRhKVxuICAgIH0pIDogY3VycmVudDtcbiAgICByZXR1cm4gbWVyZ2VkO1xuICB9LCB7fSk7IC8vIElFMTEgZG9lcyBub3Qgc3VwcG9ydCBPYmplY3QudmFsdWVzXG5cbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1lcmdlZCkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gbWVyZ2VkW2tleV07XG4gIH0pO1xufSIsImltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4vZ2V0RnJlc2hTaWRlT2JqZWN0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZVBhZGRpbmdPYmplY3QocGFkZGluZ09iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgZ2V0RnJlc2hTaWRlT2JqZWN0KCksIHBhZGRpbmdPYmplY3QpO1xufSIsImltcG9ydCB7IG1vZGlmaWVyUGhhc2VzIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7IC8vIHNvdXJjZTogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNDk4NzUyNTVcblxuZnVuY3Rpb24gb3JkZXIobW9kaWZpZXJzKSB7XG4gIHZhciBtYXAgPSBuZXcgTWFwKCk7XG4gIHZhciB2aXNpdGVkID0gbmV3IFNldCgpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIG1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgIG1hcC5zZXQobW9kaWZpZXIubmFtZSwgbW9kaWZpZXIpO1xuICB9KTsgLy8gT24gdmlzaXRpbmcgb2JqZWN0LCBjaGVjayBmb3IgaXRzIGRlcGVuZGVuY2llcyBhbmQgdmlzaXQgdGhlbSByZWN1cnNpdmVseVxuXG4gIGZ1bmN0aW9uIHNvcnQobW9kaWZpZXIpIHtcbiAgICB2aXNpdGVkLmFkZChtb2RpZmllci5uYW1lKTtcbiAgICB2YXIgcmVxdWlyZXMgPSBbXS5jb25jYXQobW9kaWZpZXIucmVxdWlyZXMgfHwgW10sIG1vZGlmaWVyLnJlcXVpcmVzSWZFeGlzdHMgfHwgW10pO1xuICAgIHJlcXVpcmVzLmZvckVhY2goZnVuY3Rpb24gKGRlcCkge1xuICAgICAgaWYgKCF2aXNpdGVkLmhhcyhkZXApKSB7XG4gICAgICAgIHZhciBkZXBNb2RpZmllciA9IG1hcC5nZXQoZGVwKTtcblxuICAgICAgICBpZiAoZGVwTW9kaWZpZXIpIHtcbiAgICAgICAgICBzb3J0KGRlcE1vZGlmaWVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJlc3VsdC5wdXNoKG1vZGlmaWVyKTtcbiAgfVxuXG4gIG1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgIGlmICghdmlzaXRlZC5oYXMobW9kaWZpZXIubmFtZSkpIHtcbiAgICAgIC8vIGNoZWNrIGZvciB2aXNpdGVkIG9iamVjdFxuICAgICAgc29ydChtb2RpZmllcik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3JkZXJNb2RpZmllcnMobW9kaWZpZXJzKSB7XG4gIC8vIG9yZGVyIGJhc2VkIG9uIGRlcGVuZGVuY2llc1xuICB2YXIgb3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyKG1vZGlmaWVycyk7IC8vIG9yZGVyIGJhc2VkIG9uIHBoYXNlXG5cbiAgcmV0dXJuIG1vZGlmaWVyUGhhc2VzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwaGFzZSkge1xuICAgIHJldHVybiBhY2MuY29uY2F0KG9yZGVyZWRNb2RpZmllcnMuZmlsdGVyKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgICAgcmV0dXJuIG1vZGlmaWVyLnBoYXNlID09PSBwaGFzZTtcbiAgICB9KSk7XG4gIH0sIFtdKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KHJlY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHJlY3QsIHtcbiAgICBsZWZ0OiByZWN0LngsXG4gICAgdG9wOiByZWN0LnksXG4gICAgcmlnaHQ6IHJlY3QueCArIHJlY3Qud2lkdGgsXG4gICAgYm90dG9tOiByZWN0LnkgKyByZWN0LmhlaWdodFxuICB9KTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1bmlxdWVCeShhcnIsIGZuKSB7XG4gIHZhciBpZGVudGlmaWVycyA9IG5ldyBTZXQoKTtcbiAgcmV0dXJuIGFyci5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB2YXIgaWRlbnRpZmllciA9IGZuKGl0ZW0pO1xuXG4gICAgaWYgKCFpZGVudGlmaWVycy5oYXMoaWRlbnRpZmllcikpIHtcbiAgICAgIGlkZW50aWZpZXJzLmFkZChpZGVudGlmaWVyKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VUFTdHJpbmcoKSB7XG4gIHZhciB1YURhdGEgPSBuYXZpZ2F0b3IudXNlckFnZW50RGF0YTtcblxuICBpZiAodWFEYXRhICE9IG51bGwgJiYgdWFEYXRhLmJyYW5kcykge1xuICAgIHJldHVybiB1YURhdGEuYnJhbmRzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGl0ZW0uYnJhbmQgKyBcIi9cIiArIGl0ZW0udmVyc2lvbjtcbiAgICB9KS5qb2luKCcgJyk7XG4gIH1cblxuICByZXR1cm4gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbn0iLCJpbXBvcnQgZm9ybWF0IGZyb20gXCIuL2Zvcm1hdC5qc1wiO1xuaW1wb3J0IHsgbW9kaWZpZXJQaGFzZXMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbnZhciBJTlZBTElEX01PRElGSUVSX0VSUk9SID0gJ1BvcHBlcjogbW9kaWZpZXIgXCIlc1wiIHByb3ZpZGVkIGFuIGludmFsaWQgJXMgcHJvcGVydHksIGV4cGVjdGVkICVzIGJ1dCBnb3QgJXMnO1xudmFyIE1JU1NJTkdfREVQRU5ERU5DWV9FUlJPUiA9ICdQb3BwZXI6IG1vZGlmaWVyIFwiJXNcIiByZXF1aXJlcyBcIiVzXCIsIGJ1dCBcIiVzXCIgbW9kaWZpZXIgaXMgbm90IGF2YWlsYWJsZSc7XG52YXIgVkFMSURfUFJPUEVSVElFUyA9IFsnbmFtZScsICdlbmFibGVkJywgJ3BoYXNlJywgJ2ZuJywgJ2VmZmVjdCcsICdyZXF1aXJlcycsICdvcHRpb25zJ107XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2YWxpZGF0ZU1vZGlmaWVycyhtb2RpZmllcnMpIHtcbiAgbW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgW10uY29uY2F0KE9iamVjdC5rZXlzKG1vZGlmaWVyKSwgVkFMSURfUFJPUEVSVElFUykgLy8gSUUxMS1jb21wYXRpYmxlIHJlcGxhY2VtZW50IGZvciBgbmV3IFNldChpdGVyYWJsZSlgXG4gICAgLmZpbHRlcihmdW5jdGlvbiAodmFsdWUsIGluZGV4LCBzZWxmKSB7XG4gICAgICByZXR1cm4gc2VsZi5pbmRleE9mKHZhbHVlKSA9PT0gaW5kZXg7XG4gICAgfSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICBjYXNlICduYW1lJzpcbiAgICAgICAgICBpZiAodHlwZW9mIG1vZGlmaWVyLm5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBTdHJpbmcobW9kaWZpZXIubmFtZSksICdcIm5hbWVcIicsICdcInN0cmluZ1wiJywgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIubmFtZSkgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2VuYWJsZWQnOlxuICAgICAgICAgIGlmICh0eXBlb2YgbW9kaWZpZXIuZW5hYmxlZCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBtb2RpZmllci5uYW1lLCAnXCJlbmFibGVkXCInLCAnXCJib29sZWFuXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5lbmFibGVkKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncGhhc2UnOlxuICAgICAgICAgIGlmIChtb2RpZmllclBoYXNlcy5pbmRleE9mKG1vZGlmaWVyLnBoYXNlKSA8IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcInBoYXNlXCInLCBcImVpdGhlciBcIiArIG1vZGlmaWVyUGhhc2VzLmpvaW4oJywgJyksIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLnBoYXNlKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZm4nOlxuICAgICAgICAgIGlmICh0eXBlb2YgbW9kaWZpZXIuZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcImZuXCInLCAnXCJmdW5jdGlvblwiJywgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIuZm4pICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdlZmZlY3QnOlxuICAgICAgICAgIGlmIChtb2RpZmllci5lZmZlY3QgIT0gbnVsbCAmJiB0eXBlb2YgbW9kaWZpZXIuZWZmZWN0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBtb2RpZmllci5uYW1lLCAnXCJlZmZlY3RcIicsICdcImZ1bmN0aW9uXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5mbikgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JlcXVpcmVzJzpcbiAgICAgICAgICBpZiAobW9kaWZpZXIucmVxdWlyZXMgIT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShtb2RpZmllci5yZXF1aXJlcykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcInJlcXVpcmVzXCInLCAnXCJhcnJheVwiJywgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIucmVxdWlyZXMpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdyZXF1aXJlc0lmRXhpc3RzJzpcbiAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkobW9kaWZpZXIucmVxdWlyZXNJZkV4aXN0cykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcInJlcXVpcmVzSWZFeGlzdHNcIicsICdcImFycmF5XCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnb3B0aW9ucyc6XG4gICAgICAgIGNhc2UgJ2RhdGEnOlxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIlBvcHBlckpTOiBhbiBpbnZhbGlkIHByb3BlcnR5IGhhcyBiZWVuIHByb3ZpZGVkIHRvIHRoZSBcXFwiXCIgKyBtb2RpZmllci5uYW1lICsgXCJcXFwiIG1vZGlmaWVyLCB2YWxpZCBwcm9wZXJ0aWVzIGFyZSBcIiArIFZBTElEX1BST1BFUlRJRVMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcXFwiXCIgKyBzICsgXCJcXFwiXCI7XG4gICAgICAgICAgfSkuam9pbignLCAnKSArIFwiOyBidXQgXFxcIlwiICsga2V5ICsgXCJcXFwiIHdhcyBwcm92aWRlZC5cIik7XG4gICAgICB9XG5cbiAgICAgIG1vZGlmaWVyLnJlcXVpcmVzICYmIG1vZGlmaWVyLnJlcXVpcmVzLmZvckVhY2goZnVuY3Rpb24gKHJlcXVpcmVtZW50KSB7XG4gICAgICAgIGlmIChtb2RpZmllcnMuZmluZChmdW5jdGlvbiAobW9kKSB7XG4gICAgICAgICAgcmV0dXJuIG1vZC5uYW1lID09PSByZXF1aXJlbWVudDtcbiAgICAgICAgfSkgPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KE1JU1NJTkdfREVQRU5ERU5DWV9FUlJPUiwgU3RyaW5nKG1vZGlmaWVyLm5hbWUpLCByZXF1aXJlbWVudCwgcmVxdWlyZW1lbnQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSIsImltcG9ydCB7IG1heCBhcyBtYXRoTWF4LCBtaW4gYXMgbWF0aE1pbiB9IGZyb20gXCIuL21hdGguanNcIjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoaW4obWluLCB2YWx1ZSwgbWF4KSB7XG4gIHJldHVybiBtYXRoTWF4KG1pbiwgbWF0aE1pbih2YWx1ZSwgbWF4KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gd2l0aGluTWF4Q2xhbXAobWluLCB2YWx1ZSwgbWF4KSB7XG4gIHZhciB2ID0gd2l0aGluKG1pbiwgdmFsdWUsIG1heCk7XG4gIHJldHVybiB2ID4gbWF4ID8gbWF4IDogdjtcbn0iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTsgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcbiAgICAgIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2YgaXRlbVs1XSAhPT0gXCJ1bmRlZmluZWRcIjtcblxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKTtcbiAgICAgIH1cblxuICAgICAgY29udGVudCArPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuXG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzJdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmpvaW4oXCJcIik7XG4gIH07IC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG5cblxuICBsaXN0LmkgPSBmdW5jdGlvbiBpKG1vZHVsZXMsIG1lZGlhLCBkZWR1cGUsIHN1cHBvcnRzLCBsYXllcikge1xuICAgIGlmICh0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgdW5kZWZpbmVkXV07XG4gICAgfVxuXG4gICAgdmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcblxuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdGhpcy5sZW5ndGg7IGsrKykge1xuICAgICAgICB2YXIgaWQgPSB0aGlzW2tdWzBdO1xuXG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2sgPSAwOyBfayA8IG1vZHVsZXMubGVuZ3RoOyBfaysrKSB7XG4gICAgICB2YXIgaXRlbSA9IFtdLmNvbmNhdChtb2R1bGVzW19rXSk7XG5cbiAgICAgIGlmIChkZWR1cGUgJiYgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1bNV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG1lZGlhKSB7XG4gICAgICAgIGlmICghaXRlbVsyXSkge1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHN1cHBvcnRzKSB7XG4gICAgICAgIGlmICghaXRlbVs0XSkge1xuICAgICAgICAgIGl0ZW1bNF0gPSBcIlwiLmNvbmNhdChzdXBwb3J0cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzRdID0gc3VwcG9ydHM7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gbGlzdDtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHVybCwgb3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICBpZiAoIXVybCkge1xuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICB1cmwgPSBTdHJpbmcodXJsLl9fZXNNb2R1bGUgPyB1cmwuZGVmYXVsdCA6IHVybCk7IC8vIElmIHVybCBpcyBhbHJlYWR5IHdyYXBwZWQgaW4gcXVvdGVzLCByZW1vdmUgdGhlbVxuXG4gIGlmICgvXlsnXCJdLipbJ1wiXSQvLnRlc3QodXJsKSkge1xuICAgIHVybCA9IHVybC5zbGljZSgxLCAtMSk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5oYXNoKSB7XG4gICAgdXJsICs9IG9wdGlvbnMuaGFzaDtcbiAgfSAvLyBTaG91bGQgdXJsIGJlIHdyYXBwZWQ/XG4gIC8vIFNlZSBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy0zLyN1cmxzXG5cblxuICBpZiAoL1tcIicoKSBcXHRcXG5dfCglMjApLy50ZXN0KHVybCkgfHwgb3B0aW9ucy5uZWVkUXVvdGVzKSB7XG4gICAgcmV0dXJuIFwiXFxcIlwiLmNvbmNhdCh1cmwucmVwbGFjZSgvXCIvZywgJ1xcXFxcIicpLnJlcGxhY2UoL1xcbi9nLCBcIlxcXFxuXCIpLCBcIlxcXCJcIik7XG4gIH1cblxuICByZXR1cm4gdXJsO1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcblxuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGNzc01hcHBpbmcpKSkpO1xuICAgIHZhciBkYXRhID0gXCJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIi5jb25jYXQoYmFzZTY0KTtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IFwiLyojIFwiLmNvbmNhdChkYXRhLCBcIiAqL1wiKTtcbiAgICB2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIFwiLyojIHNvdXJjZVVSTD1cIi5jb25jYXQoY3NzTWFwcGluZy5zb3VyY2VSb290IHx8IFwiXCIpLmNvbmNhdChzb3VyY2UsIFwiICovXCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KHNvdXJjZVVSTHMpLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oXCJcXG5cIik7XG4gIH1cblxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsImNvbnN0IGN1cnJlbmN5U3ltYm9sTWFwID0gcmVxdWlyZSgnLi9tYXAnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdldFN5bWJvbEZyb21DdXJyZW5jeSAoY3VycmVuY3lDb2RlKSB7XG4gIGlmICh0eXBlb2YgY3VycmVuY3lDb2RlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIGNvbnN0IGNvZGUgPSBjdXJyZW5jeUNvZGUudG9VcHBlckNhc2UoKVxuXG4gIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGN1cnJlbmN5U3ltYm9sTWFwLCBjb2RlKSkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIHJldHVybiBjdXJyZW5jeVN5bWJvbE1hcFtjb2RlXVxufVxuXG5tb2R1bGUuZXhwb3J0cy5jdXJyZW5jeVN5bWJvbE1hcCA9IGN1cnJlbmN5U3ltYm9sTWFwXG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgQUVEOiAn2K8u2KUnLFxuICBBRk46ICfYiycsXG4gIEFMTDogJ0wnLFxuICBBTUQ6ICfWjycsXG4gIEFORzogJ8aSJyxcbiAgQU9BOiAnS3onLFxuICBBUlM6ICckJyxcbiAgQVVEOiAnJCcsXG4gIEFXRzogJ8aSJyxcbiAgQVpOOiAn4oK8JyxcbiAgQkFNOiAnS00nLFxuICBCQkQ6ICckJyxcbiAgQkRUOiAn4KezJyxcbiAgQkdOOiAn0LvQsicsXG4gIEJIRDogJy7Yry7YqCcsXG4gIEJJRjogJ0ZCdScsXG4gIEJNRDogJyQnLFxuICBCTkQ6ICckJyxcbiAgQk9COiAnJGInLFxuICBCT1Y6ICdCT1YnLFxuICBCUkw6ICdSJCcsXG4gIEJTRDogJyQnLFxuICBCVEM6ICfigr8nLFxuICBCVE46ICdOdS4nLFxuICBCV1A6ICdQJyxcbiAgQllOOiAnQnInLFxuICBCWVI6ICdCcicsXG4gIEJaRDogJ0JaJCcsXG4gIENBRDogJyQnLFxuICBDREY6ICdGQycsXG4gIENIRTogJ0NIRScsXG4gIENIRjogJ0NIRicsXG4gIENIVzogJ0NIVycsXG4gIENMRjogJ0NMRicsXG4gIENMUDogJyQnLFxuICBDTlk6ICfCpScsXG4gIENPUDogJyQnLFxuICBDT1U6ICdDT1UnLFxuICBDUkM6ICfigqEnLFxuICBDVUM6ICckJyxcbiAgQ1VQOiAn4oKxJyxcbiAgQ1ZFOiAnJCcsXG4gIENaSzogJ0vEjScsXG4gIERKRjogJ0ZkaicsXG4gIERLSzogJ2tyJyxcbiAgRE9QOiAnUkQkJyxcbiAgRFpEOiAn2K/YrCcsXG4gIEVFSzogJ2tyJyxcbiAgRUdQOiAnwqMnLFxuICBFUk46ICdOZmsnLFxuICBFVEI6ICdCcicsXG4gIEVUSDogJ86eJyxcbiAgRVVSOiAn4oKsJyxcbiAgRkpEOiAnJCcsXG4gIEZLUDogJ8KjJyxcbiAgR0JQOiAnwqMnLFxuICBHRUw6ICfigr4nLFxuICBHR1A6ICfCoycsXG4gIEdIQzogJ+KCtScsXG4gIEdIUzogJ0dI4oK1JyxcbiAgR0lQOiAnwqMnLFxuICBHTUQ6ICdEJyxcbiAgR05GOiAnRkcnLFxuICBHVFE6ICdRJyxcbiAgR1lEOiAnJCcsXG4gIEhLRDogJyQnLFxuICBITkw6ICdMJyxcbiAgSFJLOiAna24nLFxuICBIVEc6ICdHJyxcbiAgSFVGOiAnRnQnLFxuICBJRFI6ICdScCcsXG4gIElMUzogJ+KCqicsXG4gIElNUDogJ8KjJyxcbiAgSU5SOiAn4oK5JyxcbiAgSVFEOiAn2Lku2K8nLFxuICBJUlI6ICfvt7wnLFxuICBJU0s6ICdrcicsXG4gIEpFUDogJ8KjJyxcbiAgSk1EOiAnSiQnLFxuICBKT0Q6ICdKRCcsXG4gIEpQWTogJ8KlJyxcbiAgS0VTOiAnS1NoJyxcbiAgS0dTOiAn0LvQsicsXG4gIEtIUjogJ+GfmycsXG4gIEtNRjogJ0NGJyxcbiAgS1BXOiAn4oKpJyxcbiAgS1JXOiAn4oKpJyxcbiAgS1dEOiAnS0QnLFxuICBLWUQ6ICckJyxcbiAgS1pUOiAn4oK4JyxcbiAgTEFLOiAn4oKtJyxcbiAgTEJQOiAnwqMnLFxuICBMS1I6ICfigqgnLFxuICBMUkQ6ICckJyxcbiAgTFNMOiAnTScsXG4gIExUQzogJ8WBJyxcbiAgTFRMOiAnTHQnLFxuICBMVkw6ICdMcycsXG4gIExZRDogJ0xEJyxcbiAgTUFEOiAnTUFEJyxcbiAgTURMOiAnbGVpJyxcbiAgTUdBOiAnQXInLFxuICBNS0Q6ICfQtNC10L0nLFxuICBNTUs6ICdLJyxcbiAgTU5UOiAn4oKuJyxcbiAgTU9QOiAnTU9QJCcsXG4gIE1STzogJ1VNJyxcbiAgTVJVOiAnVU0nLFxuICBNVVI6ICfigqgnLFxuICBNVlI6ICdSZicsXG4gIE1XSzogJ01LJyxcbiAgTVhOOiAnJCcsXG4gIE1YVjogJ01YVicsXG4gIE1ZUjogJ1JNJyxcbiAgTVpOOiAnTVQnLFxuICBOQUQ6ICckJyxcbiAgTkdOOiAn4oKmJyxcbiAgTklPOiAnQyQnLFxuICBOT0s6ICdrcicsXG4gIE5QUjogJ+KCqCcsXG4gIE5aRDogJyQnLFxuICBPTVI6ICfvt7wnLFxuICBQQUI6ICdCLy4nLFxuICBQRU46ICdTLy4nLFxuICBQR0s6ICdLJyxcbiAgUEhQOiAn4oKxJyxcbiAgUEtSOiAn4oKoJyxcbiAgUExOOiAnesWCJyxcbiAgUFlHOiAnR3MnLFxuICBRQVI6ICfvt7wnLFxuICBSTUI6ICfvv6UnLFxuICBST046ICdsZWknLFxuICBSU0Q6ICfQlNC40L0uJyxcbiAgUlVCOiAn4oK9JyxcbiAgUldGOiAnUuKCoycsXG4gIFNBUjogJ++3vCcsXG4gIFNCRDogJyQnLFxuICBTQ1I6ICfigqgnLFxuICBTREc6ICfYrC7Ysy4nLFxuICBTRUs6ICdrcicsXG4gIFNHRDogJ1MkJyxcbiAgU0hQOiAnwqMnLFxuICBTTEw6ICdMZScsXG4gIFNPUzogJ1MnLFxuICBTUkQ6ICckJyxcbiAgU1NQOiAnwqMnLFxuICBTVEQ6ICdEYicsXG4gIFNUTjogJ0RiJyxcbiAgU1ZDOiAnJCcsXG4gIFNZUDogJ8KjJyxcbiAgU1pMOiAnRScsXG4gIFRIQjogJ+C4vycsXG4gIFRKUzogJ1NNJyxcbiAgVE1UOiAnVCcsXG4gIFRORDogJ9ivLtiqJyxcbiAgVE9QOiAnVCQnLFxuICBUUkw6ICfigqQnLFxuICBUUlk6ICfigronLFxuICBUVEQ6ICdUVCQnLFxuICBUVkQ6ICckJyxcbiAgVFdEOiAnTlQkJyxcbiAgVFpTOiAnVFNoJyxcbiAgVUFIOiAn4oK0JyxcbiAgVUdYOiAnVVNoJyxcbiAgVVNEOiAnJCcsXG4gIFVZSTogJ1VZSScsXG4gIFVZVTogJyRVJyxcbiAgVVlXOiAnVVlXJyxcbiAgVVpTOiAn0LvQsicsXG4gIFZFRjogJ0JzJyxcbiAgVkVTOiAnQnMuUycsXG4gIFZORDogJ+KCqycsXG4gIFZVVjogJ1ZUJyxcbiAgV1NUOiAnV1MkJyxcbiAgWEFGOiAnRkNGQScsXG4gIFhCVDogJ8mDJyxcbiAgWENEOiAnJCcsXG4gIFhPRjogJ0NGQScsXG4gIFhQRjogJ+KCoycsXG4gIFhTVTogJ1N1Y3JlJyxcbiAgWFVBOiAnWFVBJyxcbiAgWUVSOiAn77e8JyxcbiAgWkFSOiAnUicsXG4gIFpNVzogJ1pLJyxcbiAgWldEOiAnWiQnLFxuICBaV0w6ICckJ1xufVxuIiwiLy8gZ2l0aHViLmNvbS9waW5lYXBwbGVtYWNoaW5lL3N0cnRpbWUtanNcbi8vIE1JVCBsaWNlbnNlLCBDb3B5cmlnaHQgKGMpIDIwMTggU29waGllIEtpcnNjaG5lciAoc29waGlla0BwaW5lYXBwbGVtYWNoaW5lLmNvbSlcbi8vIFJlZmVyZW5jZXM6XG4vLyBodHRwczovL3d3dy5pYm0uY29tL3N1cHBvcnQva25vd2xlZGdlY2VudGVyL2VuL3Nzd19pYm1faV83MS9ydHJlZi9zdHJwdGkuaHRtXG4vLyBodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmMvbWFudWFsL2h0bWxfbm9kZS9Gb3JtYXR0aW5nLUNhbGVuZGFyLVRpbWUuaHRtbFxuLy8gaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJjL21hbnVhbC9odG1sX25vZGUvTG93XzAwMmRMZXZlbC1UaW1lLVN0cmluZy1QYXJzaW5nLmh0bWxcbi8vIGh0dHA6Ly9tYW43Lm9yZy9saW51eC9tYW4tcGFnZXMvbWFuMy9zdHJwdGltZS4zLmh0bWxcbi8vIGh0dHBzOi8vYXBpZG9jay5jb20vcnVieS9EYXRlVGltZS9zdHJmdGltZVxuLy8gaHR0cDovL3N0cmZ0aW1lLm9yZy9cblxuXG5mdW5jdGlvbiBnZXRGb3JtYXRPcHRpb25zKHRpbWV6b25lLCBvcHRpb25zKXtcbiAgICBsZXQgdXNlT3B0aW9ucztcbiAgICBsZXQgdHogPSB1bmRlZmluZWQ7XG4gICAgaWYoXG4gICAgICAgIHRpbWV6b25lID09PSBudWxsIHx8IHRpbWV6b25lID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgTnVtYmVyLmlzRmluaXRlKHRpbWV6b25lKSB8fCB0eXBlb2YodGltZXpvbmUpID09PSBcInN0cmluZ1wiXG4gICAgKXtcbiAgICAgICAgdHogPSB0aW1lem9uZTtcbiAgICAgICAgdXNlT3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgfWVsc2UgaWYodGltZXpvbmUgJiYgIW9wdGlvbnMpe1xuICAgICAgICB1c2VPcHRpb25zID0gdGltZXpvbmU7XG4gICAgICAgIHR6ID0gdXNlT3B0aW9ucy50ejtcbiAgICB9ZWxzZXtcbiAgICAgICAgdXNlT3B0aW9ucyA9IHt9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICB0ejogdHosXG4gICAgICAgIG9wdGlvbnM6IHVzZU9wdGlvbnMsXG4gICAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0VGltZXpvbmVPZmZzZXRNaW51dGVzKGRhdGUsIHR6KXtcbiAgICBpZih0eiA9PT0gbnVsbCB8fCB0eiA9PT0gdW5kZWZpbmVkKXtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfWVsc2UgaWYodHogPj0gLTE2ICYmIHR6IDw9ICsxNil7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKDYwICogdHopO1xuICAgIH1lbHNlIGlmKE51bWJlci5pc0Zpbml0ZSh0eikpe1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih0eik7XG4gICAgfWVsc2UgaWYodHogPT09IFwibG9jYWxcIil7XG4gICAgICAgIHJldHVybiAtKGRhdGUgfHwgbmV3IERhdGUoKSkuZ2V0VGltZXpvbmVPZmZzZXQoKTtcbiAgICB9ZWxzZXtcbiAgICAgICAgY29uc3QgdHpVcHBlciA9IFN0cmluZyh0eikudG9VcHBlckNhc2UoKTtcbiAgICAgICAgaWYodHpVcHBlciBpbiBkZWZhdWx0VGltZXpvbmVOYW1lcyl7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSBNYXRoLmZsb29yKDYwICogZGVmYXVsdFRpbWV6b25lTmFtZXNbdHpVcHBlcl0pO1xuICAgICAgICAgICAgaWYoTnVtYmVyLmlzRmluaXRlKG9mZnNldCkpe1xuICAgICAgICAgICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgdGltZXpvbmUgb3B0aW9uIFwiJHt0en1cIi5gKTtcbn1cblxuZnVuY3Rpb24gc3RyZnRpbWUoZGF0ZSwgZm9ybWF0LCB0aW1lem9uZSwgb3B0aW9ucyl7XG4gICAgaWYoTnVtYmVyLmlzRmluaXRlKGRhdGUpKXtcbiAgICAgICAgLy8gQWNjZXB0IHVuaXggdGltZXN0YW1wcyAobWlsbGlzZWNvbmRzIHNpbmNlIGVwb2NoKVxuICAgICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgfWVsc2UgaWYoIWRhdGUpe1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBkYXRlIGlucHV0IHdhcyBwcm92aWRlZC5cIik7XG4gICAgfWVsc2UgaWYodHlwZW9mKGRhdGUudG9EYXRlKSA9PT0gXCJmdW5jdGlvblwiKXtcbiAgICAgICAgLy8gU3VwcG9ydCBkYXRlIG9iamVjdHMgZnJvbSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9tb21lbnRcbiAgICAgICAgLy8gU3VwcG9ydCBkYXRlIG9iamVjdHMgZnJvbSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9kYXlqc1xuICAgICAgICBkYXRlID0gZGF0ZS50b0RhdGUoKTtcbiAgICB9ZWxzZSBpZih0eXBlb2YoZGF0ZS50b0pTRGF0ZSkgPT09IFwiZnVuY3Rpb25cIil7XG4gICAgICAgIC8vIFN1cHBvcnQgZGF0ZSBvYmplY3RzIGZyb20gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbHV4b25cbiAgICAgICAgZGF0ZSA9IGRhdGUudG9KU0RhdGUoKTtcbiAgICB9XG4gICAgaWYoIShkYXRlIGluc3RhbmNlb2YgRGF0ZSkpe1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZ2V0IERhdGUgaW5zdGFuY2UgZnJvbSBkYXRlIGlucHV0LlwiKTtcbiAgICB9XG4gICAgY29uc3QgdG9rZW5zID0gVGltZXN0YW1wUGFyc2VyLnBhcnNlRm9ybWF0U3RyaW5nKGZvcm1hdCk7XG4gICAgY29uc3QgdXNlT3B0aW9ucyA9IGdldEZvcm1hdE9wdGlvbnModGltZXpvbmUsIG9wdGlvbnMpO1xuICAgIGNvbnN0IHRpbWV6b25lT2Zmc2V0TWludXRlcyA9IGdldFRpbWV6b25lT2Zmc2V0TWludXRlcyhkYXRlLCB1c2VPcHRpb25zLnR6KTtcbiAgICBjb25zdCB0ekRhdGUgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICBpZih0aW1lem9uZU9mZnNldE1pbnV0ZXMgIT09IHVuZGVmaW5lZCl7XG4gICAgICAgIHR6RGF0ZS5zZXRVVENNaW51dGVzKFxuICAgICAgICAgICAgZGF0ZS5nZXRVVENNaW51dGVzKCkgK1xuICAgICAgICAgICAgdGltZXpvbmVPZmZzZXRNaW51dGVzXG4gICAgICAgICk7XG4gICAgfVxuICAgIGxldCBvdXRwdXQgPSBcIlwiO1xuICAgIGZvcihsZXQgdG9rZW4gb2YgdG9rZW5zKXtcbiAgICAgICAgaWYodG9rZW4gaW5zdGFuY2VvZiBEaXJlY3RpdmUpe1xuICAgICAgICAgICAgb3V0cHV0ICs9IHRva2VuLndyaXRlKHR6RGF0ZSwgXCJcIiwgdXNlT3B0aW9ucy5vcHRpb25zLCB0aW1lem9uZU9mZnNldE1pbnV0ZXMpO1xuICAgICAgICB9ZWxzZSBpZih0b2tlbiBpbnN0YW5jZW9mIERpcmVjdGl2ZS5Ub2tlbil7XG4gICAgICAgICAgICBvdXRwdXQgKz0gdG9rZW4ud3JpdGUodHpEYXRlLCB1c2VPcHRpb25zLm9wdGlvbnMsIHRpbWV6b25lT2Zmc2V0TWludXRlcyk7XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgb3V0cHV0ICs9IHRva2VuO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG59XG5cbmZ1bmN0aW9uIHN0cnB0aW1lKHRpbWVzdGFtcCwgZm9ybWF0LCB0aW1lem9uZSwgb3B0aW9ucyl7XG4gICAgY29uc3QgdXNlT3B0aW9ucyA9IGdldEZvcm1hdE9wdGlvbnModGltZXpvbmUsIG9wdGlvbnMpO1xuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBUaW1lc3RhbXBQYXJzZXIodGltZXN0YW1wLCBmb3JtYXQpO1xuICAgIGNvbnN0IHRpbWV6b25lT2Zmc2V0TWludXRlcyA9IGdldFRpbWV6b25lT2Zmc2V0TWludXRlcyh1bmRlZmluZWQsIHVzZU9wdGlvbnMudHopO1xuICAgIGlmKHRpbWV6b25lT2Zmc2V0TWludXRlcyAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgcGFyc2VyLnRpbWV6b25lT2Zmc2V0TWludXRlcyA9IHRpbWV6b25lT2Zmc2V0TWludXRlcztcbiAgICB9XG4gICAgaWYodXNlT3B0aW9ucy5vcHRpb25zKXtcbiAgICAgICAgZm9yKGxldCBrZXkgaW4gdXNlT3B0aW9ucy5vcHRpb25zKXtcbiAgICAgICAgICAgIHBhcnNlcltrZXldID0gdXNlT3B0aW9ucy5vcHRpb25zW2tleV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gcGFyc2VyLnBhcnNlKCk7XG4gICAgcmV0dXJuIHJlc3VsdC5nZXREYXRlKCk7XG59XG5cbmNvbnN0IHN0cnRpbWUgPSB7XG4gICAgc3RyZnRpbWU6IHN0cmZ0aW1lLFxuICAgIHN0cnB0aW1lOiBzdHJwdGltZSxcbn07XG5cbmNvbnN0IGVuZ2xpc2ggPSB7XG4gICAgZXJhTmFtZXM6IFtcbiAgICAgICAgXCJDRVwiLCBcIkJDRVwiXG4gICAgXSxcbiAgICBtZXJpZGllbU5hbWVzOiBbXG4gICAgICAgIFwiQU1cIiwgXCJQTVwiXG4gICAgXSxcbiAgICBzaG9ydFdlZWtkYXlOYW1lczogW1xuICAgICAgICBcIlN1blwiLCBcIk1vblwiLCBcIlR1ZVwiLCBcIldlZFwiLCBcIlRodVwiLCBcIkZyaVwiLCBcIlNhdFwiXG4gICAgXSxcbiAgICBsb25nV2Vla2RheU5hbWVzOiBbXG4gICAgICAgIFwiU3VuZGF5XCIsIFwiTW9uZGF5XCIsIFwiVHVlc2RheVwiLCBcIldlZG5lc2RheVwiLFxuICAgICAgICBcIlRodXJzZGF5XCIsIFwiRnJpZGF5XCIsIFwiU2F0dXJkYXlcIlxuICAgIF0sXG4gICAgc2hvcnRNb250aE5hbWVzOiBbXG4gICAgICAgIFwiSmFuXCIsIFwiRmViXCIsIFwiTWFyXCIsIFwiQXByXCIsIFwiTWF5XCIsIFwiSnVuXCIsXG4gICAgICAgIFwiSnVsXCIsIFwiQXVnXCIsIFwiU2VwXCIsIFwiT2N0XCIsIFwiTm92XCIsIFwiRGVjXCJcbiAgICBdLFxuICAgIGxvbmdNb250aE5hbWVzOiBbXG4gICAgICAgIFwiSmFudWFyeVwiLCBcIkZlYnJ1YXJ5XCIsIFwiTWFyY2hcIiwgXCJBcHJpbFwiLCBcIk1heVwiLCBcIkp1bmVcIixcbiAgICAgICAgXCJKdWx5XCIsIFwiQXVndXN0XCIsIFwiU2VwdGVtYmVyXCIsIFwiT2N0b2JlclwiLCBcIk5vdmVtYmVyXCIsIFwiRGVjZW1iZXJcIlxuICAgIF0sXG4gICAgb3JkaW5hbFRyYW5zZm9ybTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgY29uc3QgZGlnaXQgPSBNYXRoLmZsb29yKG51bWJlciAlIDEwKTtcbiAgICAgICAgaWYobnVtYmVyID4gMyAmJiBudW1iZXIgPD0gMjApIHJldHVybiBgJHtudW1iZXJ9dGhgO1xuICAgICAgICBpZihkaWdpdCA9PT0gMSkgcmV0dXJuIGAke251bWJlcn1zdGA7XG4gICAgICAgIGVsc2UgaWYoZGlnaXQgPT09IDIpIHJldHVybiBgJHtudW1iZXJ9bmRgO1xuICAgICAgICBlbHNlIGlmKGRpZ2l0ID09PSAzKSByZXR1cm4gYCR7bnVtYmVyfXJkYDtcbiAgICAgICAgZWxzZSByZXR1cm4gYCR7bnVtYmVyfXRoYDtcbiAgICB9LFxufTtcblxuXG5mdW5jdGlvbiBsZWZ0UGFkKGNoYXIsIGxlbmd0aCwgdGV4dCl7XG4gICAgbGV0IHN0cmluZyA9IFN0cmluZyh0ZXh0KTtcbiAgICB3aGlsZShzdHJpbmcubGVuZ3RoIDwgbGVuZ3RoKXtcbiAgICAgICAgc3RyaW5nID0gY2hhciArIHN0cmluZztcbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZztcbn1cblxuZnVuY3Rpb24gd3JpdGVUaW1lem9uZU9mZnNldChvZmZzZXRNaW51dGVzLCBtb2RpZmllcil7XG4gICAgY29uc3QgYWJzT2Zmc2V0ID0gTWF0aC5hYnMob2Zmc2V0TWludXRlcyk7XG4gICAgY29uc3Qgc2lnbiA9IChvZmZzZXRNaW51dGVzID49IDAgPyBcIitcIiA6IFwiLVwiKTtcbiAgICBjb25zdCBob3VyID0gbGVmdFBhZChcIjBcIiwgMiwgTWF0aC5mbG9vcihhYnNPZmZzZXQgLyA2MCkpO1xuICAgIGNvbnN0IG1pbnV0ZSA9IGxlZnRQYWQoXCIwXCIsIDIsIGFic09mZnNldCAlIDYwKTtcbiAgICBpZihtb2RpZmllciA9PT0gXCI6OlwiKXtcbiAgICAgICAgcmV0dXJuIHNpZ24gKyBob3VyICsgXCI6XCIgKyBtaW51dGUgKyBcIjowMFwiO1xuICAgIH1lbHNlIGlmKG1vZGlmaWVyID09PSBcIjpcIil7XG4gICAgICAgIHJldHVybiBzaWduICsgaG91ciArIFwiOlwiICsgbWludXRlO1xuICAgIH1lbHNle1xuICAgICAgICByZXR1cm4gc2lnbiArIGhvdXIgKyBtaW51dGU7XG4gICAgfVxufVxuXG4vLyBHZXQgdGhlIGRheSBvZiB0aGUgd2VlayBnaXZlbiBhbiBpbnB1dCBEYXRlLlxuLy8gUmV0dXJucyAwIGZvciBTdW5kYXksIDEgZm9yIE1vbmRheSwgZXRjLlxuLy8gaHR0cHM6Ly93d3cucXVvcmEuY29tL0hvdy1kb2VzLVRvbW9oaWtvLVNha2Ftb3Rvcy1BbGdvcml0aG0td29yay9hbnN3ZXIvUmF6aW1hbi1ULVY/c3JpZD11MkhOWFxuZnVuY3Rpb24gZ2V0RGF5T2ZXZWVrKGRhdGUpe1xuICAgIGNvbnN0IG9mZnNldHMgPSBbMCwgMywgMiwgNSwgMCwgMywgNSwgMSwgNCwgNiwgMiwgNF07XG4gICAgbGV0IHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgbGV0IG1vbnRoID0gZGF0ZS5nZXRVVENNb250aCgpO1xuICAgIGxldCBkYXkgPSBkYXRlLmdldFVUQ0RhdGUoKTtcbiAgICBpZihtb250aCA8IDIpe1xuICAgICAgICB5ZWFyLS07XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICAgIG9mZnNldHNbbW9udGhdICsgeWVhciArIGRheSArXG4gICAgICAgIE1hdGguZmxvb3IoeWVhciAvIDQpIC1cbiAgICAgICAgTWF0aC5mbG9vcih5ZWFyIC8gMTAwKSArXG4gICAgICAgIE1hdGguZmxvb3IoeWVhciAvIDQwMClcbiAgICApICUgNztcbn1cblxuLy8gR2V0IHRoZSBkYXkgb2YgdGhlIHllYXIgYXMgYSBudW1iZXIgKDEtMzY2KVxuZnVuY3Rpb24gZ2V0RGF5T2ZZZWFyKGRhdGUpe1xuICAgIGNvbnN0IGxlbmd0aHMgPSBtb250aExlbmd0aHMuZm9yWWVhcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkpO1xuICAgIGNvbnN0IG1vbnRocyA9IGxlbmd0aHMuc2xpY2UoMCwgZGF0ZS5nZXRVVENNb250aCgpKTtcbiAgICByZXR1cm4gZGF0ZS5nZXRVVENEYXRlKCkgKyAoXG4gICAgICAgIChtb250aHMubGVuZ3RoICYmIG1vbnRocy5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiKSkgfHwgMFxuICAgICk7XG59XG5cbi8vIEdldCB0aGUgd2VlayBvZiB0aGUgeWVhciAoc3RhcnRpbmcgd2l0aCBTdW5kYXkpICgwLTUzKVxuZnVuY3Rpb24gZ2V0V2Vla09mWWVhckZyb21TdW5kYXkoZGF0ZSl7XG4gICAgY29uc3QgZGF5T2ZZZWFyID0gZ2V0RGF5T2ZZZWFyKGRhdGUpO1xuICAgIGNvbnN0IGZpcnN0RGF5T2ZXZWVrID0gZ2V0Rmlyc3RXZWVrZGF5SW5ZZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSk7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IoKGRheU9mWWVhciArIChmaXJzdERheU9mV2VlayB8fCA3KSAtIDEpIC8gNyk7XG59XG5cbi8vIEdldCB0aGUgd2VlayBvZiB0aGUgeWVhciAoc3RhcnRpbmcgd2l0aCBNb25kYXkpICgwLTUzKVxuZnVuY3Rpb24gZ2V0V2Vla09mWWVhckZyb21Nb25kYXkoZGF0ZSl7XG4gICAgY29uc3QgZGF5T2ZZZWFyID0gZ2V0RGF5T2ZZZWFyKGRhdGUpO1xuICAgIGNvbnN0IGRheU9mV2VlayA9IGdldERheU9mV2VlayhkYXRlKTtcbiAgICBjb25zdCBmaXJzdERheU9mV2VlayA9IGdldEZpcnN0V2Vla2RheUluWWVhcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkpO1xuICAgIGNvbnN0IHN1bmRheVdlZWsgPSBNYXRoLmZsb29yKChkYXlPZlllYXIgKyAoZmlyc3REYXlPZldlZWsgfHwgNykgLSAxKSAvIDcpO1xuICAgIHJldHVybiBzdW5kYXlXZWVrIC0gKGRheU9mV2VlayA9PT0gMCA/IDEgOiAwKSArIChmaXJzdERheU9mV2VlayA9PT0gMSA/IDEgOiAwKTtcbn1cblxuZnVuY3Rpb24gZ2V0SVNPV2Vla3NJblllYXIoeWVhcil7XG4gICAgY29uc3QgcHJpb3JZZWFyID0geWVhciAtIDE7XG4gICAgY29uc3QgYSA9ICh5ZWFyICtcbiAgICAgICAgTWF0aC5mbG9vcih5ZWFyIC8gNCkgLVxuICAgICAgICBNYXRoLmZsb29yKHllYXIgLyAxMDApICtcbiAgICAgICAgTWF0aC5mbG9vcih5ZWFyIC8gNDAwKVxuICAgICkgJSA3O1xuICAgIGNvbnN0IGIgPSAocHJpb3JZZWFyICtcbiAgICAgICAgTWF0aC5mbG9vcihwcmlvclllYXIgLyA0KSAtXG4gICAgICAgIE1hdGguZmxvb3IocHJpb3JZZWFyIC8gMTAwKSArXG4gICAgICAgIE1hdGguZmxvb3IocHJpb3JZZWFyIC8gNDAwKVxuICAgICkgJSA3O1xuICAgIHJldHVybiBhID09PSA0IHx8IGIgPT09IDMgPyA1MyA6IDUyO1xufVxuXG4vLyBHZXQgdGhlIElTTyB3ZWVrIG9mIHRoZSB5ZWFyXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNXZWVrX2RhdGVzXG5mdW5jdGlvbiBnZXRJU09XZWVrT2ZZZWFyKGRhdGUpe1xuICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgY29uc3QgZGF5T2ZZZWFyID0gZ2V0RGF5T2ZZZWFyKGRhdGUpO1xuICAgIGNvbnN0IGRheU9mV2VlayA9IGdldERheU9mV2VlayhkYXRlKTtcbiAgICBjb25zdCB3ZWVrTnVtYmVyID0gTWF0aC5mbG9vcigoMTAgKyBkYXlPZlllYXIgLSAoZGF5T2ZXZWVrIHx8IDcpKSAvIDcpO1xuICAgIGlmKHdlZWtOdW1iZXIgPCAxKXtcbiAgICAgICAgcmV0dXJuIGdldElTT1dlZWtzSW5ZZWFyKHllYXIgLSAxKTtcbiAgICB9ZWxzZSBpZih3ZWVrTnVtYmVyID4gZ2V0SVNPV2Vla3NJblllYXIoeWVhcikpe1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9ZWxzZXtcbiAgICAgICAgcmV0dXJuIHdlZWtOdW1iZXI7XG4gICAgfVxufVxuXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG5mdW5jdGlvbiBnZXRJU09XZWVrRGF0ZVllYXIoZGF0ZSl7XG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICBjb25zdCBkYXlPZlllYXIgPSBnZXREYXlPZlllYXIoZGF0ZSk7XG4gICAgY29uc3QgZGF5T2ZXZWVrID0gZ2V0RGF5T2ZXZWVrKGRhdGUpO1xuICAgIGNvbnN0IHdlZWtOdW1iZXIgPSBNYXRoLmZsb29yKCgxMCArIGRheU9mWWVhciAtIChkYXlPZldlZWsgfHwgNykpIC8gNyk7XG4gICAgaWYod2Vla051bWJlciA8IDEpe1xuICAgICAgICByZXR1cm4geWVhciAtIDE7XG4gICAgfWVsc2UgaWYod2Vla051bWJlciA+IGdldElTT1dlZWtzSW5ZZWFyKHllYXIpKXtcbiAgICAgICAgcmV0dXJuIHllYXIgKyAxO1xuICAgIH1lbHNle1xuICAgICAgICByZXR1cm4geWVhcjtcbiAgICB9XG59XG5cbmNsYXNzIERpcmVjdGl2ZXtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKXtcbiAgICAgICAgLy8gTGlzdCBvZiBwb3NzaWJsZSBuYW1lcyBmb3IgdGhpcyBkaXJlY3RpdmVcbiAgICAgICAgdGhpcy5uYW1lcyA9IG9wdGlvbnMubmFtZXM7XG4gICAgICAgIC8vIFBhZCBudW1iZXJzIHRvIHRoaXMgbGVuZ3RoIChub3JtYWxseSlcbiAgICAgICAgdGhpcy5wYWRMZW5ndGggPSBvcHRpb25zLnBhZExlbmd0aDtcbiAgICAgICAgLy8gQSBsaWtlbHkgKGJ1dCBub3Qgc3RyaWN0KSBsZW5ndGggdG8gYmUgdXNlZCB3aGVuIHJlc29sdmluZ1xuICAgICAgICAvLyBhbWJpZ3VvdXMgcGFyc2luZyBpbnB1dHNcbiAgICAgICAgdGhpcy5saWtlbHlMZW5ndGggPSBvcHRpb25zLmxpa2VseUxlbmd0aDtcbiAgICAgICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhpcyBkaXJlY3RpdmUgdXNlcyB0ZXh0IChhcyBvcHBvc2VkIHRvIG51bWJlcnMpXG4gICAgICAgIHRoaXMudGV4dCA9IG9wdGlvbnMudGV4dDtcbiAgICAgICAgLy8gVGhlIG1pbmltdW0gcGVybWl0dGVkIG51bWVyaWMgdmFsdWUgZm9yIGEgZGlyZWN0aXZlXG4gICAgICAgIHRoaXMubWluaW11bSA9IG9wdGlvbnMubWluaW11bTtcbiAgICAgICAgLy8gVGhlIG1heGltdW0gcGVybWl0dGVkIG51bWVyaWMgdmFsdWUgZm9yIGEgZGlyZWN0aXZlXG4gICAgICAgIHRoaXMubWF4aW11bSA9IG9wdGlvbnMubWF4aW11bTtcbiAgICAgICAgLy8gV2hldGhlciB0aGlzIGRpcmVjdGl2ZSByZXByZXNlbnRzIGEgbnVtYmVyIHRoYXQgY2FuIGJlIG5lZ2F0aXZlXG4gICAgICAgIHRoaXMuY2FuQmVOZWdhdGl2ZSA9IG9wdGlvbnMuY2FuQmVOZWdhdGl2ZTtcbiAgICAgICAgLy8gVGhpcyBkaXJlY3RpdmUgc2hvdWxkIGFsd2F5cyBiZSByZXdyaXR0ZW4gdXNpbmcgYSBjb21iaW5hdGlvbiBvZlxuICAgICAgICAvLyBvdGhlciBkaXJlY3RpdmVzXG4gICAgICAgIHRoaXMucmV3cml0ZSA9IG9wdGlvbnMucmV3cml0ZTtcbiAgICAgICAgLy8gRnVuY3Rpb24gdG8gcGFyc2UgY29udGVudCBmcm9tIGEgc3RyaW5nXG4gICAgICAgIHRoaXMucGFyc2VGdW5jdGlvbiA9IG9wdGlvbnMucGFyc2U7XG4gICAgICAgIC8vIEZ1bmN0aW9uIHRvIHdyaXRlIGNvbnRlbnQgYXMgYSBzdHJpbmcsIGdpdmVuIGEgZGF0ZSB0byBmb3JtYXRcbiAgICAgICAgdGhpcy53cml0ZUZ1bmN0aW9uID0gb3B0aW9ucy53cml0ZTtcbiAgICAgICAgLy8gRnVuY3Rpb24gdG8gc3RvcmUgYSBwYXJzZWQgbnVtZXJpYyB2YWx1ZVxuICAgICAgICB0aGlzLnN0b3JlRnVuY3Rpb24gPSBvcHRpb25zLnN0b3JlO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0QnlOYW1lKG5hbWUpe1xuICAgICAgICBmb3IobGV0IGRpcmVjdGl2ZSBvZiBEaXJlY3RpdmUubGlzdCl7XG4gICAgICAgICAgICBpZihkaXJlY3RpdmUubmFtZXMuaW5kZXhPZihuYW1lKSA+PSAwKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlyZWN0aXZlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlzT3JkaW5hbCgpe1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGdldENhbkJlTmVnYXRpdmUoKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FuQmVOZWdhdGl2ZTtcbiAgICB9XG4gICAgZ2V0TGlrZWx5TGVuZ3RoKCl7XG4gICAgICAgIHJldHVybiB0aGlzLmxpa2VseUxlbmd0aDtcbiAgICB9XG4gICAgZ2V0UmV3cml0ZVBhcnNlZChwYXJzZUZvcm1hdFN0cmluZyl7XG4gICAgICAgIGlmKCF0aGlzLnJld3JpdGVQYXJzZWRWYWx1ZSl7XG4gICAgICAgICAgICB0aGlzLnJld3JpdGVQYXJzZWRWYWx1ZSA9IHBhcnNlRm9ybWF0U3RyaW5nKHRoaXMucmV3cml0ZSk7XG4gICAgICAgICAgICBmb3IobGV0IHRva2VuIG9mIHRoaXMucmV3cml0ZVBhcnNlZFZhbHVlKXtcbiAgICAgICAgICAgICAgICB0b2tlbi5leHBhbmRlZEZyb20gPSB0aGlzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJld3JpdGVQYXJzZWRWYWx1ZTtcbiAgICB9XG4gICAgaGFzUGFyc2VGdW5jdGlvbigpe1xuICAgICAgICByZXR1cm4gISF0aGlzLnBhcnNlRnVuY3Rpb247XG4gICAgfVxuICAgIGhhc1N0b3JlRnVuY3Rpb24oKXtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5zdG9yZUZ1bmN0aW9uO1xuICAgIH1cbiAgICBwYXJzZShwYXJzZXIpe1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUZ1bmN0aW9uLmNhbGwocGFyc2VyKTtcbiAgICB9XG4gICAgc3RvcmUocGFyc2VyLCBudW1iZXIpe1xuICAgICAgICB0aGlzLnN0b3JlRnVuY3Rpb24uY2FsbChwYXJzZXIsIG51bWJlcik7XG4gICAgfVxuICAgIHdyaXRlKGRhdGUsIG1vZGlmaWVyLCBvcHRpb25zLCB0aW1lem9uZU9mZnNldE1pbnV0ZXMpe1xuICAgICAgICByZXR1cm4gdGhpcy53cml0ZUZ1bmN0aW9uKGRhdGUsIG1vZGlmaWVyLCBvcHRpb25zLCB0aW1lem9uZU9mZnNldE1pbnV0ZXMpO1xuICAgIH1cbiAgICBudW1iZXJJbkJvdW5kcyh2YWx1ZSl7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoIU51bWJlci5pc0Zpbml0ZSh0aGlzLm1pbmltdW0pIHx8IHZhbHVlID49IHRoaXMubWluaW11bSkgJiZcbiAgICAgICAgICAgICghTnVtYmVyLmlzRmluaXRlKHRoaXMubWF4aW11bSkgfHwgdmFsdWUgPD0gdGhpcy5tYXhpbXVtKVxuICAgICAgICApO1xuICAgIH1cbiAgICBnZXRCb3VuZHNTdHJpbmcoKXtcbiAgICAgICAgaWYoTnVtYmVyLmlzRmluaXRlKHRoaXMubWluaW11bSkgJiYgTnVtYmVyLmlzRmluaXRlKHRoaXMubWF4aW11bSkpe1xuICAgICAgICAgICAgcmV0dXJuIGBbJHt0aGlzLm1pbmltdW19LCAke3RoaXMubWF4aW11bX1dYDtcbiAgICAgICAgfWVsc2UgaWYoTnVtYmVyLmlzRmluaXRlKHRoaXMubWluaW11bSkpe1xuICAgICAgICAgICAgcmV0dXJuIGBbJHt0aGlzLm1pbmltdW19LCAuLi5dYDtcbiAgICAgICAgfWVsc2UgaWYoTnVtYmVyLmlzRmluaXRlKHRoaXMubWF4aW11bSkpe1xuICAgICAgICAgICAgcmV0dXJuIGBbLi4uLCAke3RoaXMubWF4aW11bX1dYDtcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRvU3RyaW5nKCl7XG4gICAgICAgIHJldHVybiBcIiVcIiArIHRoaXMubmFtZXNbMF07XG4gICAgfVxufVxuXG5EaXJlY3RpdmUuVG9rZW4gPSBjbGFzcyBEaXJlY3RpdmVUb2tlbntcbiAgICBjb25zdHJ1Y3Rvcihtb2RpZmllciwgZGlyZWN0aXZlKXtcbiAgICAgICAgdGhpcy5tb2RpZmllciA9IG1vZGlmaWVyO1xuICAgICAgICB0aGlzLmRpcmVjdGl2ZSA9IGRpcmVjdGl2ZTtcbiAgICAgICAgdGhpcy5leHBhbmRlZEZyb20gPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlzT3JkaW5hbCgpe1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RpZmllciA9PT0gXCI6XCI7XG4gICAgfVxuICAgIGdldENhbkJlTmVnYXRpdmUoKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlyZWN0aXZlLmNhbkJlTmVnYXRpdmU7XG4gICAgfVxuICAgIGdldExpa2VseUxlbmd0aCgpe1xuICAgICAgICByZXR1cm4gdGhpcy5kaXJlY3RpdmUubGlrZWx5TGVuZ3RoO1xuICAgIH1cbiAgICBoYXNQYXJzZUZ1bmN0aW9uKCl7XG4gICAgICAgIHJldHVybiB0aGlzLmRpcmVjdGl2ZS5oYXNQYXJzZUZ1bmN0aW9uKCk7XG4gICAgfVxuICAgIGhhc1N0b3JlRnVuY3Rpb24oKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlyZWN0aXZlLmhhc1N0b3JlRnVuY3Rpb24oKTtcbiAgICB9XG4gICAgcGFyc2UocGFyc2VyKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlyZWN0aXZlLnBhcnNlRnVuY3Rpb24uY2FsbChwYXJzZXIsIHRoaXMubW9kaWZpZXIpO1xuICAgIH1cbiAgICBzdG9yZShwYXJzZXIsIG51bWJlcil7XG4gICAgICAgIHRoaXMuZGlyZWN0aXZlLnN0b3JlRnVuY3Rpb24uY2FsbChwYXJzZXIsIG51bWJlcik7XG4gICAgfVxuICAgIHdyaXRlKGRhdGUsIG9wdGlvbnMsIHRpbWV6b25lT2Zmc2V0TWludXRlcyl7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZGlyZWN0aXZlLndyaXRlKGRhdGUsIHRoaXMubW9kaWZpZXIsIG9wdGlvbnMsIHRpbWV6b25lT2Zmc2V0TWludXRlcyk7XG4gICAgICAgIGlmKHRoaXMubW9kaWZpZXIgPT09IFwiXlwiKXtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQpO1xuICAgICAgICAgICAgaWYodHlwZW9mKHJlc3VsdCkgPT09IFwibnVtYmVyXCIpIHJldHVybiByZXN1bHRTdHJpbmc7XG4gICAgICAgICAgICBjb25zdCB1cHBlciA9IHJlc3VsdFN0cmluZy50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHVwcGVyICE9PSByZXN1bHRTdHJpbmcgPyB1cHBlciA6IHJlc3VsdFN0cmluZy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9ZWxzZSBpZih0aGlzLm1vZGlmaWVyID09PSBcIl9cIiAmJiB0aGlzLmRpcmVjdGl2ZS5wYWRMZW5ndGgpe1xuICAgICAgICAgICAgcmV0dXJuIGxlZnRQYWQoXCIgXCIsIHRoaXMuZGlyZWN0aXZlLnBhZExlbmd0aCwgcmVzdWx0KTtcbiAgICAgICAgfWVsc2UgaWYodGhpcy5tb2RpZmllciA9PT0gXCJfXCIgJiYgdGhpcy5kaXJlY3RpdmUudGV4dCl7XG4gICAgICAgICAgICByZXR1cm4gU3RyaW5nKHJlc3VsdCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfWVsc2UgaWYodGhpcy5tb2RpZmllciA9PT0gXCItXCIgJiYgdGhpcy5kaXJlY3RpdmUucGFkTGVuZ3RoKXtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcocmVzdWx0KTtcbiAgICAgICAgfWVsc2UgaWYodGhpcy5tb2RpZmllciA9PT0gXCI6XCIgJiYgIXRoaXMuZGlyZWN0aXZlLnRleHQpe1xuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtID0gKChvcHRpb25zICYmIG9wdGlvbnMub3JkaW5hbFRyYW5zZm9ybSkgfHxcbiAgICAgICAgICAgICAgICBlbmdsaXNoLm9yZGluYWxUcmFuc2Zvcm1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNmb3JtKHJlc3VsdCk7XG4gICAgICAgIH1lbHNlIGlmKCF0aGlzLmRpcmVjdGl2ZS50ZXh0ICYmIHRoaXMuZGlyZWN0aXZlLnBhZExlbmd0aCl7XG4gICAgICAgICAgICByZXR1cm4gKHJlc3VsdCA+PSAwID9cbiAgICAgICAgICAgICAgICBsZWZ0UGFkKFwiMFwiLCB0aGlzLmRpcmVjdGl2ZS5wYWRMZW5ndGgsIHJlc3VsdCkgOlxuICAgICAgICAgICAgICAgIGAtJHtsZWZ0UGFkKFwiMFwiLCB0aGlzLmRpcmVjdGl2ZS5wYWRMZW5ndGgsIC1yZXN1bHQpfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhyZXN1bHQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG51bWJlckluQm91bmRzKHZhbHVlKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlyZWN0aXZlLm51bWJlckluQm91bmRzKHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0Qm91bmRzU3RyaW5nKCl7XG4gICAgICAgIHJldHVybiB0aGlzLmRpcmVjdGl2ZS5nZXRCb3VuZHNTdHJpbmcoKTtcbiAgICB9XG4gICAgdG9TdHJpbmcoKXtcbiAgICAgICAgcmV0dXJuIFwiJVwiICsgdGhpcy5tb2RpZmllciArIHRoaXMuZGlyZWN0aXZlLm5hbWVzWzBdO1xuICAgIH1cbn1cblxuRGlyZWN0aXZlLlN0cmluZ1Rva2VuID0gY2xhc3MgRGlyZWN0aXZlU3RyaW5nVG9rZW57XG4gICAgY29uc3RydWN0b3Ioc3RyaW5nKXtcbiAgICAgICAgdGhpcy5zdHJpbmcgPSBzdHJpbmcgfHwgXCJcIjtcbiAgICAgICAgdGhpcy5leHBhbmRlZEZyb20gPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGFkZENoYXJhY3RlcihjaCl7XG4gICAgICAgIHRoaXMuc3RyaW5nICs9IGNoO1xuICAgIH1cbiAgICB0b1N0cmluZygpe1xuICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmc7XG4gICAgfVxufVxuXG5EaXJlY3RpdmUubGlzdCA9IFtcbiAgICAvLyBBYmJyZXZpYXRlZCB3ZWVrZGF5IG5hbWVcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcImFcIl0sXG4gICAgICAgIHRleHQ6IHRydWUsXG4gICAgICAgIHBhcnNlOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgdGhpcy5kYXlPZldlZWsgPSB0aGlzLnBhcnNlV2Vla2RheU5hbWUodGhpcyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlLCBtb2RpZmllciwgb3B0aW9ucyl7XG4gICAgICAgICAgICBjb25zdCBuYW1lcyA9ICgob3B0aW9ucyAmJiBvcHRpb25zLnNob3J0V2Vla2RheU5hbWVzKSB8fFxuICAgICAgICAgICAgICAgIGVuZ2xpc2guc2hvcnRXZWVrZGF5TmFtZXNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gbmFtZXNbZGF0ZS5nZXRVVENEYXkoKSAlIDddO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIExvbmcgd2Vla2RheSBuYW1lXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJBXCJdLFxuICAgICAgICB0ZXh0OiB0cnVlLFxuICAgICAgICBwYXJzZTogZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHRoaXMuZGF5T2ZXZWVrID0gdGhpcy5wYXJzZVdlZWtkYXlOYW1lKHRoaXMpO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSwgbW9kaWZpZXIsIG9wdGlvbnMpe1xuICAgICAgICAgICAgY29uc3QgbmFtZXMgPSAoKG9wdGlvbnMgJiYgb3B0aW9ucy5sb25nV2Vla2RheU5hbWVzKSB8fFxuICAgICAgICAgICAgICAgIGVuZ2xpc2gubG9uZ1dlZWtkYXlOYW1lc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBuYW1lc1tkYXRlLmdldFVUQ0RheSgpICUgN107XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gQWJicmV2aWF0ZWQgbW9udGggbmFtZVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiYlwiLCBcImhcIl0sXG4gICAgICAgIHRleHQ6IHRydWUsXG4gICAgICAgIHBhcnNlOiBmdW5jdGlvbigpe1xuICAgICAgICAgICAgdGhpcy5tb250aCA9IDEgKyB0aGlzLnBhcnNlTW9udGhOYW1lKHRoaXMpO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSwgbW9kaWZpZXIsIG9wdGlvbnMpe1xuICAgICAgICAgICAgY29uc3QgbmFtZXMgPSAoKG9wdGlvbnMgJiYgb3B0aW9ucy5zaG9ydE1vbnRoTmFtZXMpIHx8XG4gICAgICAgICAgICAgICAgZW5nbGlzaC5zaG9ydE1vbnRoTmFtZXNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gbmFtZXNbZGF0ZS5nZXRVVENNb250aCgpICUgMTJdO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIExvbmcgbW9udGggbmFtZVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiQlwiXSxcbiAgICAgICAgdGV4dDogdHJ1ZSxcbiAgICAgICAgcGFyc2U6IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB0aGlzLm1vbnRoID0gMSArIHRoaXMucGFyc2VNb250aE5hbWUodGhpcyk7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlLCBtb2RpZmllciwgb3B0aW9ucyl7XG4gICAgICAgICAgICBjb25zdCBuYW1lcyA9ICgob3B0aW9ucyAmJiBvcHRpb25zLmxvbmdNb250aE5hbWVzKSB8fFxuICAgICAgICAgICAgICAgIGVuZ2xpc2gubG9uZ01vbnRoTmFtZXNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gbmFtZXNbZGF0ZS5nZXRVVENNb250aCgpICUgMTJdO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIENvbWJpbmF0aW9uIGRhdGUgYW5kIHRpbWUsIHNhbWUgYXMgXCIlYSAlYiAlZSAlSDolTTolUyAlWVwiXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJjXCJdLFxuICAgICAgICByZXdyaXRlOiBcIiVhICViICVlICVIOiVNOiVTICVZXCIsXG4gICAgfSksXG4gICAgLy8gQ2VudHVyeSAoY29tcGxlbWVudHMgJXkpXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJDXCJdLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIGNhbkJlTmVnYXRpdmU6IHRydWUsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5jZW50dXJ5ID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkgLyAxMDApO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFR3by1kaWdpdCBkYXkgb2YgbW9udGhcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcImRcIl0sXG4gICAgICAgIHBhZExlbmd0aDogMixcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAyLFxuICAgICAgICBtaW5pbXVtOiAxLFxuICAgICAgICBtYXhpbXVtOiAzMSxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLmRheU9mTW9udGggPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBkYXRlLmdldFVUQ0RhdGUoKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBTYW1lIGFzICVtLyVkLyV5XG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJEXCIsIFwieFwiXSxcbiAgICAgICAgcmV3cml0ZTogXCIlbS8lZC8leVwiLFxuICAgIH0pLFxuICAgIC8vIERheSBvZiBtb250aCBwYWRkZWQgd2l0aCBzcGFjZXMgKHNhbWUgYXMgXCIlX2RcIilcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcImVcIl0sXG4gICAgICAgIGxpa2VseUxlbmd0aDogMixcbiAgICAgICAgbWluaW11bTogMSxcbiAgICAgICAgbWF4aW11bTogMzEsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5kYXlPZk1vbnRoID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSwgbW9kaWZpZXIpe1xuICAgICAgICAgICAgaWYoIW1vZGlmaWVyKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGVmdFBhZChcIiBcIiwgMiwgZGF0ZS5nZXRVVENEYXRlKCkpO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGUuZ2V0VVRDRGF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFNpeC1kaWdpdCBtaWNyb3NlY29uZFxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiZlwiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiA2LFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDYsXG4gICAgICAgIG1pbmltdW06IDAsXG4gICAgICAgIG1heGltdW06IDk5OTk5OSxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLm1pY3Jvc2Vjb25kID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gMTAwMCAqIGRhdGUuZ2V0VVRDTWlsbGlzZWNvbmRzKCk7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gU2FtZSBhcyAlWS0lbS0lZFxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiRlwiXSxcbiAgICAgICAgcmV3cml0ZTogXCIlWS0lbS0lZFwiLFxuICAgIH0pLFxuICAgIC8vIFR3by1kaWdpdCBJU08gd2VlayB5ZWFyXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJnXCJdLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5pc29Ud29EaWdpdFllYXIgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBnZXRJU09XZWVrRGF0ZVllYXIoZGF0ZSkgJSAxMDA7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gRnVsbCBJU08gd2VlayB5ZWFyXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJHXCJdLFxuICAgICAgICBwYWRMZW5ndGg6IDQsXG4gICAgICAgIGxpa2VseUxlbmd0aDogNCxcbiAgICAgICAgY2FuQmVOZWdhdGl2ZTogdHJ1ZSxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLmlzb1llYXIgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBnZXRJU09XZWVrRGF0ZVllYXIoZGF0ZSk7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gVHdvLWRpZ2l0IGhvdXIgKDAtMjMpXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJIXCIsIFwia1wiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAyLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIG1pbmltdW06IDAsXG4gICAgICAgIG1heGltdW06IDIzLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMuaG91ciA9IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIGRhdGUuZ2V0VVRDSG91cnMoKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBUd28tZGlnaXQgaG91ciAoMS0xMikgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoICVwIChBTS9QTSlcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIklcIiwgXCJsXCJdLFxuICAgICAgICBwYWRMZW5ndGg6IDIsXG4gICAgICAgIGxpa2VseUxlbmd0aDogMixcbiAgICAgICAgbWluaW11bTogMSxcbiAgICAgICAgbWF4aW11bTogMTIsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5ob3VyID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gKGRhdGUuZ2V0VVRDSG91cnMoKSAlIDEyKSB8fCAxMjtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBEYXkgaW4geWVhclxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wialwiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAzLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDMsXG4gICAgICAgIG1pbmltdW06IDEsXG4gICAgICAgIG1heGltdW06IDM2NixcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLmRheU9mWWVhciA9IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIGdldERheU9mWWVhcihkYXRlKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBUaHJlZS1kaWdpdCBtaWxsaXNlY29uZFxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiTFwiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAzLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDMsXG4gICAgICAgIG1pbmltdW06IDAsXG4gICAgICAgIG1heGltdW06IDk5OSxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLm1pbGxpc2Vjb25kID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZS5nZXRVVENNaWxsaXNlY29uZHMoKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBUd28tZGlnaXQgbW9udGggbnVtYmVyICgxLTEyKVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wibVwiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAyLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIG1pbmltdW06IDEsXG4gICAgICAgIG1heGltdW06IDEyLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMubW9udGggPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiAxICsgZGF0ZS5nZXRVVENNb250aCgpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFR3by1kaWdpdCBtaW51dGUgKDAtNTkpXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJNXCJdLFxuICAgICAgICBwYWRMZW5ndGg6IDIsXG4gICAgICAgIGxpa2VseUxlbmd0aDogMixcbiAgICAgICAgbWluaW11bTogMCxcbiAgICAgICAgbWF4aW11bTogNTksXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5taW51dGUgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBkYXRlLmdldFVUQ01pbnV0ZXMoKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBBTSBvciBQTSAodXBwZXJjYXNlKVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wicFwiXSxcbiAgICAgICAgdGV4dDogdHJ1ZSxcbiAgICAgICAgcGFyc2U6IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB0aGlzLm1lcmlkaWVtID0gdGhpcy5wYXJzZU1lcmlkaWVtTmFtZSgpO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSwgbW9kaWZpZXIsIG9wdGlvbnMpe1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBkYXRlLmdldFVUQ0hvdXJzKCkgPCAxMiA/IDAgOiAxO1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAob3B0aW9ucyAmJiBvcHRpb25zLm1lcmlkaWVtTmFtZXMpIHx8IGVuZ2xpc2gubWVyaWRpZW1OYW1lc1xuICAgICAgICAgICAgKVtpbmRleF07XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gQU0gb3IgUE0gKGxvd2VyY2FzZSlcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIlBcIl0sXG4gICAgICAgIGxpa2VseUxlbmd0aDogMixcbiAgICAgICAgdGV4dDogdHJ1ZSxcbiAgICAgICAgcGFyc2U6IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB0aGlzLm1lcmlkaWVtID0gdGhpcy5wYXJzZU1lcmlkaWVtTmFtZSgpO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSwgbW9kaWZpZXIsIG9wdGlvbnMpe1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBkYXRlLmdldFVUQ0hvdXJzKCkgPCAxMiA/IDAgOiAxO1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAob3B0aW9ucyAmJiBvcHRpb25zLm1lcmlkaWVtTmFtZXMpIHx8IGVuZ2xpc2gubWVyaWRpZW1OYW1lc1xuICAgICAgICAgICAgKVtpbmRleF0udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBOdW1iZXIgb2YgbWlyY29zZWNvbmRzIHNpbmNlIGVwb2NoXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJRXCJdLFxuICAgICAgICBjYW5CZU5lZ2F0aXZlOiB0cnVlLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMubWljcm9zZWNvbmRzU2luY2VFcG9jaCA9IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoZGF0ZS5nZXRUaW1lKCkgKiAxMDAwKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBTYW1lIGFzIFwiJUk6JU06JVMgJXBcIlxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiclwiXSxcbiAgICAgICAgcmV3cml0ZTogXCIlSTolTTolUyAlcFwiLFxuICAgIH0pLFxuICAgIC8vIFNhbWUgYXMgXCIlSDolTVwiXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJSXCJdLFxuICAgICAgICByZXdyaXRlOiBcIiVIOiVNXCIsXG4gICAgfSksXG4gICAgLy8gTnVtYmVyIG9mIHNlY29uZHMgc2luY2UgZXBvY2hcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcInNcIl0sXG4gICAgICAgIGNhbkJlTmVnYXRpdmU6IHRydWUsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy5zZWNvbmRzU2luY2VFcG9jaCA9IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoZGF0ZS5nZXRUaW1lKCkgLyAxMDAwKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBUd28tZGlnaXQgc2Vjb25kICgwLTYxKVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiU1wiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAyLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIG1pbmltdW06IDAsXG4gICAgICAgIG1heGltdW06IDYxLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5taW4oNTksIGRhdGUuZ2V0VVRDU2Vjb25kcygpKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBTYW1lIGFzICVIOiVNOiVTXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCJUXCIsIFwiWFwiXSxcbiAgICAgICAgcmV3cml0ZTogXCIlSDolTTolU1wiLFxuICAgIH0pLFxuICAgIC8vIFdlZWtkYXkgbnVtYmVyLCBzdGFydGluZyB3aXRoIE1vbmRheSAoMS03KVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1widVwiXSxcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAxLFxuICAgICAgICBtaW5pbXVtOiAxLFxuICAgICAgICBtYXhpbXVtOiA3LFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMuZGF5T2ZXZWVrID0gbnVtYmVyICUgNztcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIGdldERheU9mV2VlayhkYXRlKSB8fCA3O1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFdlZWsgb2YgdGhlIHllYXIsIHN0YXJ0aW5nIHdpdGggU3VuZGF5ICgwLTUzKVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiVVwiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiAyLFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDIsXG4gICAgICAgIG1pbmltdW06IDAsXG4gICAgICAgIG1heGltdW06IDUzLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMud2Vla09mWWVhckZyb21TdW5kYXkgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBnZXRXZWVrT2ZZZWFyRnJvbVN1bmRheShkYXRlKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBWTVMgZGF0ZSwgc2FtZSBhcyBcIiVlLSViLSVZXCJcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcInZcIl0sXG4gICAgICAgIHJld3JpdGU6IFwiJWUtJWItJVlcIixcbiAgICB9KSxcbiAgICAvLyBJU08gODYwMToxOTg4IHdlZWsgbnVtYmVyICgxLTUzKSwgY29tcGxlbWVudHMgJWcvJUdcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIlZcIl0sXG4gICAgICAgIHBhZExlbmd0aDogMixcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAyLFxuICAgICAgICBtaW5pbXVtOiAxLFxuICAgICAgICBtYXhpbXVtOiA1MyxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLmlzb1dlZWtPZlllYXIgPSBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlKXtcbiAgICAgICAgICAgIHJldHVybiBnZXRJU09XZWVrT2ZZZWFyKGRhdGUpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFdlZWtkYXkgbnVtYmVyLCBzdGFydGluZyB3aXRoIFN1bmRheSAoMC02KVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wid1wiXSxcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAxLFxuICAgICAgICBtaW5pbXVtOiAwLFxuICAgICAgICBtYXhpbXVtOiA2LFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMuZGF5T2ZXZWVrID0gbnVtYmVyICUgNztcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUpe1xuICAgICAgICAgICAgcmV0dXJuIGdldERheU9mV2VlayhkYXRlKTtcbiAgICAgICAgfSxcbiAgICB9KSxcbiAgICAvLyBXZWVrIG9mIHRoZSB5ZWFyLCBzdGFydGluZyB3aXRoIE1vbmRheSAoMC01MylcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIldcIl0sXG4gICAgICAgIHBhZExlbmd0aDogMixcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAyLFxuICAgICAgICBtaW5pbXVtOiAwLFxuICAgICAgICBtYXhpbXVtOiA1MyxcbiAgICAgICAgc3RvcmU6IGZ1bmN0aW9uKG51bWJlcil7XG4gICAgICAgICAgICB0aGlzLndlZWtPZlllYXJGcm9tTW9uZGF5ID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gZ2V0V2Vla09mWWVhckZyb21Nb25kYXkoZGF0ZSk7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gVHdvLWRpZ2l0IHllYXJcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcInlcIl0sXG4gICAgICAgIHBhZExlbmd0aDogMixcbiAgICAgICAgbGlrZWx5TGVuZ3RoOiAyLFxuICAgICAgICBzdG9yZTogZnVuY3Rpb24obnVtYmVyKXtcbiAgICAgICAgICAgIHRoaXMudHdvRGlnaXRZZWFyID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSl7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZS5nZXRVVENGdWxsWWVhcigpICUgMTAwO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIEZ1bGwgeWVhciAodXN1YWxseSBmb3VyLWRpZ2l0LCBidXQgbm90IHN0cmljdGx5IHNvKVxuICAgIG5ldyBEaXJlY3RpdmUoe1xuICAgICAgICBuYW1lczogW1wiWVwiXSxcbiAgICAgICAgcGFkTGVuZ3RoOiA0LFxuICAgICAgICBsaWtlbHlMZW5ndGg6IDQsXG4gICAgICAgIGNhbkJlTmVnYXRpdmU6IHRydWUsXG4gICAgICAgIHN0b3JlOiBmdW5jdGlvbihudW1iZXIpe1xuICAgICAgICAgICAgdGhpcy55ZWFyID0gbnVtYmVyO1xuICAgICAgICB9LFxuICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0ZSwgbW9kaWZpZXIpe1xuICAgICAgICAgICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgICAgICAgICAgIC8vIE1vZGlmaWVyIFwiXlwiIHByb2R1Y2VzIHVuc2lnbmVkIHllYXIsIGZvciBjb21iaW5hdGlvbiB3aXRoIGVyYSBcIiUjXCJcbiAgICAgICAgICAgIGlmKHllYXIgPD0gMCAmJiBtb2RpZmllciA9PT0gXCJeXCIpIHJldHVybiAxIC0geWVhcjtcbiAgICAgICAgICAgIGVsc2UgcmV0dXJuIHllYXI7XG4gICAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gVGltZXpvbmUgb2Zmc2V0IGUuZy4gKzA1MDAgb3IgLTEyMDBcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcInpcIl0sXG4gICAgICAgIHRleHQ6IHRydWUsXG4gICAgICAgIHBhcnNlOiBmdW5jdGlvbihtb2RpZmllcil7XG4gICAgICAgICAgICB0aGlzLnRpbWV6b25lT2Zmc2V0TWludXRlcyA9IHRoaXMucGFyc2VUaW1lem9uZU9mZnNldChtb2RpZmllcik7XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlLCBtb2RpZmllciwgb3B0aW9ucywgdGltZXpvbmVPZmZzZXRNaW51dGVzKXtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IChOdW1iZXIuaXNGaW5pdGUodGltZXpvbmVPZmZzZXRNaW51dGVzKSA/XG4gICAgICAgICAgICAgICAgdGltZXpvbmVPZmZzZXRNaW51dGVzIDogLWRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiB3cml0ZVRpbWV6b25lT2Zmc2V0KG9mZnNldCwgbW9kaWZpZXIpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFRpbWV6b25lIG9mZnNldCBvciBuYW1lIGUuZy4gVVRDIG9yIEdNVCBvciBFU1Qgb3IgKzA1MDAgb3IgLTEyMDBcbiAgICBuZXcgRGlyZWN0aXZlKHtcbiAgICAgICAgbmFtZXM6IFtcIlpcIl0sXG4gICAgICAgIGxpa2VseUxlbmd0aDogNSxcbiAgICAgICAgdGV4dDogdHJ1ZSxcbiAgICAgICAgcGFyc2U6IGZ1bmN0aW9uKG1vZGlmaWVyKXtcbiAgICAgICAgICAgIGNvbnN0IHR6TGlzdCA9IHRoaXMuZ2V0VGltZXpvbmVOYW1lTGlzdCgpO1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnBhcnNlSW5kZXhJbkxpc3QodHpMaXN0KTtcbiAgICAgICAgICAgIGlmKGluZGV4ICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgICAgIHRoaXMudGltZXpvbmVPZmZzZXRNaW51dGVzID0gNjAgKiB0aGlzLnRpbWV6b25lTmFtZXNbdHpMaXN0W2luZGV4XV07XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWV6b25lT2Zmc2V0TWludXRlcyA9IHRoaXMucGFyc2VUaW1lem9uZU9mZnNldChtb2RpZmllcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbihkYXRlLCBtb2RpZmllciwgb3B0aW9ucywgdGltZXpvbmVPZmZzZXRNaW51dGVzKXtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IChOdW1iZXIuaXNGaW5pdGUodGltZXpvbmVPZmZzZXRNaW51dGVzKSA/XG4gICAgICAgICAgICAgICAgdGltZXpvbmVPZmZzZXRNaW51dGVzIDogLWRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmKG9mZnNldCA9PT0gMCkgcmV0dXJuIFwiVVRDXCI7XG4gICAgICAgICAgICBlbHNlIHJldHVybiB3cml0ZVRpbWV6b25lT2Zmc2V0KG9mZnNldCwgbW9kaWZpZXIpO1xuICAgICAgICB9LFxuICAgIH0pLFxuICAgIC8vIFNhbWUgYXMgXCIlYSAlYiAlZSAlSDolTTolUyAlWiAlWVwiXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCIrXCJdLFxuICAgICAgICByZXdyaXRlOiBcIiVhICViICVlICVIOiVNOiVTICVaICVZXCIsXG4gICAgfSksXG4gICAgLy8gRXJhIChCQy9CQ0UpXG4gICAgbmV3IERpcmVjdGl2ZSh7XG4gICAgICAgIG5hbWVzOiBbXCIjXCJdLFxuICAgICAgICB0ZXh0OiB0cnVlLFxuICAgICAgICBwYXJzZTogZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIHRoaXMuZXJhID0gdGhpcy5wYXJzZUVyYU5hbWUoKTtcbiAgICAgICAgfSxcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKGRhdGUsIG1vZGlmaWVyLCBvcHRpb25zKXtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpIDw9IDAgPyAxIDogMDtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgKG9wdGlvbnMgJiYgb3B0aW9ucy5lcmFOYW1lcykgfHwgZW5nbGlzaC5lcmFOYW1lc1xuICAgICAgICAgICAgKVtpbmRleF07XG4gICAgICAgIH0sXG4gICAgfSksXG5dO1xuXG4vLyBUaGUgYXNzZXJ0aW9uLWVycm9yIHBhY2thZ2Ugd2FzIHVzZWQgYXMgYSBiYXNpcyBmb3IgdGhlIFRpbWVzdGFtcFBhcnNlRXJyb3IgdHlwZVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2NoYWlqcy9hc3NlcnRpb24tZXJyb3IvYmxvYi9tYXN0ZXIvaW5kZXguanNcblxuLy8gVGhlIGNvbnN0cnVjdG9yXG5mdW5jdGlvbiBUaW1lc3RhbXBQYXJzZUVycm9yKHJlYXNvbiwgcGFyc2VyKXtcbiAgICBFcnJvci5jYWxsKHRoaXMpO1xuICAgIHRoaXMucmVhc29uID0gcmVhc29uO1xuICAgIHRoaXMuZm9ybWF0ID0gcGFyc2VyLmZvcm1hdDtcbiAgICB0aGlzLnRpbWVzdGFtcCA9IHBhcnNlci5zdHJpbmc7XG4gICAgdGhpcy50b2tlbiA9IHBhcnNlci5jdXJyZW50VG9rZW47XG4gICAgdGhpcy5pbmRleCA9IHBhcnNlci5pbmRleDtcbiAgICBpZih0aGlzLnRva2VuICYmIHRoaXMudG9rZW4uZXhwYW5kZWRGcm9tICYmIHRoaXMuaW5kZXggIT09IHVuZGVmaW5lZCkgdGhpcy5tZXNzYWdlID0gKFxuICAgICAgICBgRmFpbGVkIHRvIHBhcnNlIHRva2VuIFwiJHt0aGlzLnRva2VufVwiIGAgK1xuICAgICAgICBgKGV4cGFuZGVkIGZyb20gXCIke3RoaXMudG9rZW4uZXhwYW5kZWRGcm9tfVwiKSBhdCBwb3NpdGlvbiBbJHt0aGlzLmluZGV4fV0gYCArXG4gICAgICAgIGBpbiB0aW1lc3RhbXAgXCIke3RoaXMudGltZXN0YW1wfVwiIHdpdGggZm9ybWF0IFwiJHt0aGlzLmZvcm1hdH1cIjogYCArXG4gICAgICAgIGAke3RoaXMucmVhc29ufWBcbiAgICApO1xuICAgIGVsc2UgaWYodGhpcy50b2tlbiAmJiB0aGlzLmluZGV4ICE9PSB1bmRlZmluZWQpIHRoaXMubWVzc2FnZSA9IChcbiAgICAgICAgYEZhaWxlZCB0byBwYXJzZSB0b2tlbiBcIiR7dGhpcy50b2tlbn1cIiBhdCBwb3NpdGlvbiBbJHt0aGlzLmluZGV4fV0gYCArXG4gICAgICAgIGBpbiB0aW1lc3RhbXAgXCIke3RoaXMudGltZXN0YW1wfVwiIHdpdGggZm9ybWF0IFwiJHt0aGlzLmZvcm1hdH1cIjogYCArXG4gICAgICAgIGAke3RoaXMucmVhc29ufWBcbiAgICApO1xuICAgIGVsc2UgaWYodGhpcy50b2tlbikgdGhpcy5tZXNzYWdlID0gKFxuICAgICAgICBgRmFpbGVkIHRvIHBhcnNlIHRva2VuIFwiJHt0aGlzLnRva2VufVwiIGAgK1xuICAgICAgICBgaW4gZm9ybWF0IFwiJHt0aGlzLmZvcm1hdH1cIjogJHt0aGlzLnJlYXNvbn1gXG4gICAgKTtcbiAgICBlbHNlIHRoaXMubWVzc2FnZSA9IChcbiAgICAgICAgYEZhaWxlZCB3aXRoIGZvcm1hdCBcIiR7dGhpcy5mb3JtYXR9XCI6ICR7dGhpcy5yZWFzb259YFxuICAgICk7XG4gICAgLy8gaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9lcnJvcnMuaHRtbCNlcnJvcnNfZXJyb3JfY2FwdHVyZXN0YWNrdHJhY2VfdGFyZ2V0b2JqZWN0X2NvbnN0cnVjdG9yb3B0XG4gICAgaWYoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2Upe1xuICAgICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgICB9ZWxzZXtcbiAgICAgICAgdHJ5e1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgICAgIH1jYXRjaChlcnJvcil7XG4gICAgICAgICAgICB0aGlzLnN0YWNrID0gZXJyb3Iuc3RhY2s7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFByb3RvdHlwZSB3cmFuZ2xpbmdcblRpbWVzdGFtcFBhcnNlRXJyb3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpO1xuVGltZXN0YW1wUGFyc2VFcnJvci5wcm90b3R5cGUubmFtZSA9IFwiVGltZXN0YW1wUGFyc2VFcnJvclwiO1xuVGltZXN0YW1wUGFyc2VFcnJvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBUaW1lc3RhbXBQYXJzZUVycm9yO1xuXG5cbmZ1bmN0aW9uIGlzRGlnaXQoY2gpe1xuICAgIHJldHVybiAoXG4gICAgICAgIGNoID09PSBcIjBcIiB8fCBjaCA9PT0gXCIxXCIgfHwgY2ggPT09IFwiMlwiIHx8IGNoID09PSBcIjNcIiB8fCBjaCA9PT0gXCI0XCIgfHxcbiAgICAgICAgY2ggPT09IFwiNVwiIHx8IGNoID09PSBcIjZcIiB8fCBjaCA9PT0gXCI3XCIgfHwgY2ggPT09IFwiOFwiIHx8IGNoID09PSBcIjlcIlxuICAgICk7XG59XG5cbi8vIE1hdGNoZXMgR05VIEMgc3RycHRpbWUgYmVoYXZpb3Jcbi8vIGh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliYy9tYW51YWwvaHRtbF9ub2RlL0xvd18wMDJkTGV2ZWwtVGltZS1TdHJpbmctUGFyc2luZy5odG1sXG5mdW5jdGlvbiBnZXRZZWFyRnJvbVR3b0RpZ2l0cyh5ZWFyKXtcbiAgICByZXR1cm4geWVhciArICh5ZWFyIDw9IDY4ID8gMjAwMCA6IDE5MDApO1xufVxuXG5mdW5jdGlvbiBnZXRNb250aEZyb21EYXlPZlllYXIoeWVhciwgZGF5T2ZZZWFyKXtcbiAgICBjb25zdCBtb250aHMgPSBtb250aExlbmd0aHMuZm9yWWVhcih5ZWFyKTtcbiAgICBsZXQgZGF5cyA9IDA7XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IG1vbnRocy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGlmKGRheXMgPj0gZGF5T2ZZZWFyKSByZXR1cm4gaTtcbiAgICAgICAgZGF5cyArPSBtb250aHNbaV07XG4gICAgfVxuICAgIHJldHVybiAxMjtcbn1cblxuZnVuY3Rpb24gZ2V0RGF5T2ZNb250aEZyb21EYXlPZlllYXIoeWVhciwgZGF5T2ZZZWFyKXtcbiAgICBjb25zdCBtb250aHMgPSBtb250aExlbmd0aHMuZm9yWWVhcih5ZWFyKTtcbiAgICBsZXQgZGF5cyA9IDA7XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IG1vbnRocy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGlmKGRheU9mWWVhciAtIGRheXMgPD0gbW9udGhzW2ldKSByZXR1cm4gZGF5T2ZZZWFyIC0gZGF5cztcbiAgICAgICAgZGF5cyArPSBtb250aHNbaV07XG4gICAgfVxuICAgIHJldHVybiBkYXlPZlllYXIgLSBkYXlzO1xufVxuXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fODYwMSNXZWVrX2RhdGVzXG5mdW5jdGlvbiBnZXREYXRlRnJvbUlTT1dlZWtEYXRlKHBhcnNlciwgaXNvWWVhciwgaXNvV2Vla09mWWVhciwgZGF5T2ZXZWVrKXtcbiAgICBjb25zdCBmaXJzdERheU9mV2VlayA9IGdldEZpcnN0V2Vla2RheUluWWVhcihpc29ZZWFyKTtcbiAgICBjb25zdCB3ZWVrZGF5T2ZKYW40ID0gKCgzICsgZmlyc3REYXlPZldlZWspICUgNykgfHwgNztcbiAgICBjb25zdCBkYXlzSW5ZZWFyID0gaXNMZWFwWWVhcihpc29ZZWFyKSA/IDM2NiA6IDM2NTtcbiAgICBsZXQgZGF5T2ZZZWFyID0gNyAqIGlzb1dlZWtPZlllYXIgKyAoZGF5T2ZXZWVrIHx8IDcpIC0gd2Vla2RheU9mSmFuNCAtIDM7XG4gICAgaWYoZGF5T2ZZZWFyIDwgMSl7XG4gICAgICAgIHBhcnNlci55ZWFyID0gaXNvWWVhciAtIDE7XG4gICAgICAgIGRheU9mWWVhciArPSBkYXlzSW5ZZWFyO1xuICAgIH1lbHNlIGlmKGRheU9mWWVhciA+IGRheXNJblllYXIpe1xuICAgICAgICBwYXJzZXIueWVhciA9IDEgKyBpc29ZZWFyO1xuICAgICAgICBkYXlPZlllYXIgLT0gZGF5c0luWWVhcjtcbiAgICB9ZWxzZXtcbiAgICAgICAgcGFyc2VyLnllYXIgPSBpc29ZZWFyO1xuICAgIH1cbiAgICBwYXJzZXIubW9udGggPSBnZXRNb250aEZyb21EYXlPZlllYXIocGFyc2VyLnllYXIsIGRheU9mWWVhcik7XG4gICAgcGFyc2VyLmRheU9mTW9udGggPSBnZXREYXlPZk1vbnRoRnJvbURheU9mWWVhcihwYXJzZXIueWVhciwgZGF5T2ZZZWFyKTtcbn1cblxuZnVuY3Rpb24gZ2V0RGF0ZUZyb21TdW5kYXlXZWVrRGF0ZShwYXJzZXIsIHllYXIsIHdlZWtPZlllYXIsIGRheU9mV2Vlayl7XG4gICAgY29uc3QgZmlyc3REYXlPZldlZWsgPSBnZXRGaXJzdFdlZWtkYXlJblllYXIoeWVhcik7XG4gICAgY29uc3QgZGF5T2ZZZWFyID0gMSArIDcgKiB3ZWVrT2ZZZWFyIC0gKGZpcnN0RGF5T2ZXZWVrIHx8IDcpICsgZGF5T2ZXZWVrO1xuICAgIHBhcnNlci55ZWFyID0geWVhcjtcbiAgICBwYXJzZXIubW9udGggPSBnZXRNb250aEZyb21EYXlPZlllYXIoeWVhciwgZGF5T2ZZZWFyKTtcbiAgICBwYXJzZXIuZGF5T2ZNb250aCA9IGdldERheU9mTW9udGhGcm9tRGF5T2ZZZWFyKHllYXIsIGRheU9mWWVhcik7XG59XG5cbmZ1bmN0aW9uIGdldERhdGVGcm9tTW9uZGF5V2Vla0RhdGUocGFyc2VyLCB5ZWFyLCB3ZWVrT2ZZZWFyLCBkYXlPZldlZWspe1xuICAgIGNvbnN0IGZpcnN0RGF5T2ZXZWVrID0gZ2V0Rmlyc3RXZWVrZGF5SW5ZZWFyKHllYXIpO1xuICAgIGNvbnN0IHN1bmRheURheU9mWWVhciA9IDEgKyA3ICogd2Vla09mWWVhciAtIChmaXJzdERheU9mV2VlayB8fCA3KSArIGRheU9mV2VlaztcbiAgICBjb25zdCBkYXlPZlllYXIgPSBzdW5kYXlEYXlPZlllYXIgKyAoXG4gICAgICAgIChkYXlPZldlZWsgPT09IDAgPyA3IDogMCkgLSAoZmlyc3REYXlPZldlZWsgPT09IDEgPyA3IDogMClcbiAgICApO1xuICAgIHBhcnNlci55ZWFyID0geWVhcjtcbiAgICBwYXJzZXIubW9udGggPSBnZXRNb250aEZyb21EYXlPZlllYXIoeWVhciwgZGF5T2ZZZWFyKTtcbiAgICBwYXJzZXIuZGF5T2ZNb250aCA9IGdldERheU9mTW9udGhGcm9tRGF5T2ZZZWFyKHllYXIsIGRheU9mWWVhcik7XG59XG5cbmNsYXNzIFRpbWVzdGFtcFBhcnNlcntcbiAgICBjb25zdHJ1Y3Rvcih0aW1lc3RhbXAsIGZvcm1hdCwgdG9rZW5zKXtcbiAgICAgICAgLy8gUGFyc2VyIHN0YXRlXG4gICAgICAgIHRoaXMuaW5kZXggPSAwO1xuICAgICAgICB0aGlzLnN0cmluZyA9IFN0cmluZyh0aW1lc3RhbXApO1xuICAgICAgICB0aGlzLmZvcm1hdCA9IFN0cmluZyhmb3JtYXQpO1xuICAgICAgICB0aGlzLnRva2VucyA9IHRva2VucyB8fCBUaW1lc3RhbXBQYXJzZXIucGFyc2VGb3JtYXRTdHJpbmcodGhpcy5mb3JtYXQpO1xuICAgICAgICB0aGlzLmZvcmtMZW5ndGggPSAwO1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgLy8gUGFyc2VyIHNldHRpbmdzXG4gICAgICAgIHRoaXMuc2hvcnRXZWVrZGF5TmFtZXMgPSBlbmdsaXNoLnNob3J0V2Vla2RheU5hbWVzO1xuICAgICAgICB0aGlzLmxvbmdXZWVrZGF5TmFtZXMgPSBlbmdsaXNoLmxvbmdXZWVrZGF5TmFtZXM7XG4gICAgICAgIHRoaXMuc2hvcnRNb250aE5hbWVzID0gZW5nbGlzaC5zaG9ydE1vbnRoTmFtZXM7XG4gICAgICAgIHRoaXMubG9uZ01vbnRoTmFtZXMgPSBlbmdsaXNoLmxvbmdNb250aE5hbWVzO1xuICAgICAgICB0aGlzLmVyYU5hbWVzID0gZW5nbGlzaC5lcmFOYW1lcztcbiAgICAgICAgdGhpcy5tZXJpZGllbU5hbWVzID0gZW5nbGlzaC5tZXJpZGllbU5hbWVzO1xuICAgICAgICB0aGlzLm9yZGluYWxUcmFuc2Zvcm0gPSBlbmdsaXNoLm9yZGluYWxUcmFuc2Zvcm07XG4gICAgICAgIHRoaXMudGltZXpvbmVOYW1lcyA9IGRlZmF1bHRUaW1lem9uZU5hbWVzO1xuICAgICAgICAvLyBTdG9yYWdlIHZhbHVlcyBmcm9tIHBhcnNpbmcgdG9rZW5zXG4gICAgICAgIHRoaXMuZXJhID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNlbnR1cnkgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMueWVhciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy50d29EaWdpdFllYXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaXNvWWVhciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5pc29Ud29EaWdpdFllYXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubW9udGggPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaXNvV2Vla09mWWVhciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy53ZWVrT2ZZZWFyRnJvbVN1bmRheSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy53ZWVrT2ZZZWFyRnJvbU1vbmRheSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5kYXlPZlllYXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZGF5T2ZNb250aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5kYXlPZldlZWsgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaG91ciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5taW51dGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc2Vjb25kID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm1pbGxpc2Vjb25kID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm1pY3Jvc2Vjb25kID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm1lcmlkaWVtID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnRpbWV6b25lT2Zmc2V0TWludXRlcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5zZWNvbmRzU2luY2VFcG9jaCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5taWxsaXNlY29uZHNTaW5jZUVwb2NoID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm1pY3Jvc2Vjb25kc1NpbmNlRXBvY2ggPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGdldFRpbWV6b25lT2Zmc2V0T2ZEYXRlKGRhdGUpe1xuICAgICAgICBjb25zdCBvZmZzZXQgPSAodGhpcy50aW1lem9uZU9mZnNldE1pbnV0ZXMgPT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgICAtZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIDpcbiAgICAgICAgICAgIHRoaXMudGltZXpvbmVPZmZzZXRNaW51dGVzXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG9mZnNldFNpZ24gPSBvZmZzZXQgPj0gMCA/ICsxIDogLTE7XG4gICAgICAgIGNvbnN0IGFic09mZnNldCA9IE1hdGguYWJzKG9mZnNldCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBob3VyOiBvZmZzZXRTaWduICogTWF0aC5mbG9vcihhYnNPZmZzZXQgLyA2MCksXG4gICAgICAgICAgICBtaW51dGU6IG9mZnNldFNpZ24gKiBNYXRoLmZsb29yKGFic09mZnNldCAlIDYwKSxcbiAgICAgICAgICAgIHRvdGFsTWludXRlczogb2Zmc2V0LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBnZXREYXRlKCl7XG4gICAgICAgIGlmKHRoaXMubWljcm9zZWNvbmRzU2luY2VFcG9jaCA9PT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGlmKHRoaXMubWlsbGlzZWNvbmRzU2luY2VFcG9jaCAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgICAgICB0aGlzLm1pY3Jvc2Vjb25kc1NpbmNlRXBvY2ggPSAxMDAwICogdGhpcy5taWxsaXNlY29uZHNTaW5jZUVwb2NoO1xuICAgICAgICAgICAgfWVsc2UgaWYodGhpcy5zZWNvbmRzU2luY2VFcG9jaCAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgICAgICB0aGlzLm1pY3Jvc2Vjb25kc1NpbmNlRXBvY2ggPSAxMDAwMDAwICogdGhpcy5zZWNvbmRzU2luY2VFcG9jaDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLm1pY3Jvc2Vjb25kc1NpbmNlRXBvY2ggIT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGhpcy5taWNyb3NlY29uZHNTaW5jZUVwb2NoIC8gMTAwMCk7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmdldFRpbWV6b25lT2Zmc2V0T2ZEYXRlKGRhdGUpO1xuICAgICAgICAgICAgZGF0ZS5zZXRVVENNaW51dGVzKGRhdGUuZ2V0VVRDTWludXRlcygpIC0gb2Zmc2V0LnRvdGFsTWludXRlcyk7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgaWYodGhpcy55ZWFyID09PSB1bmRlZmluZWQgJiYgdGhpcy50d29EaWdpdFllYXIgIT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICBpZih0aGlzLmNlbnR1cnkgPT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICAgICAgdGhpcy55ZWFyID0gZ2V0WWVhckZyb21Ud29EaWdpdHModGhpcy50d29EaWdpdFllYXIpO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgdGhpcy55ZWFyID0gMTAwICogdGhpcy5jZW50dXJ5ICsgdGhpcy50d29EaWdpdFllYXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1lbHNlIGlmKHRoaXMuaXNvWWVhciA9PT0gdW5kZWZpbmVkICYmIHRoaXMuaXNvVHdvRGlnaXRZZWFyICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgdGhpcy5pc29ZZWFyID0gZ2V0WWVhckZyb21Ud29EaWdpdHModGhpcy5pc29Ud29EaWdpdFllYXIpO1xuICAgICAgICB9ZWxzZSBpZih0aGlzLnllYXIgPT09IHVuZGVmaW5lZCAmJiB0aGlzLmNlbnR1cnkgIT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICB0aGlzLnllYXIgPSAxMDAgKiB0aGlzLmNlbnR1cnk7XG4gICAgICAgIH1cbiAgICAgICAgaWYodGhpcy5lcmEgJiYgdGhpcy55ZWFyICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgdGhpcy55ZWFyID0gMSAtIHRoaXMueWVhcjtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLmhvdXIgIT09IHVuZGVmaW5lZCAmJiB0aGlzLm1lcmlkaWVtICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgdGhpcy5ob3VyID0gKHRoaXMuaG91ciAlIDEyKSArICh0aGlzLm1lcmlkaWVtID8gMTIgOiAwKTtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLm1pY3Jvc2Vjb25kID09PSB1bmRlZmluZWQgJiYgdGhpcy5taWxsaXNlY29uZCAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIHRoaXMubWljcm9zZWNvbmQgPSAxMDAwICogdGhpcy5taWxsaXNlY29uZDtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLmlzb1llYXIgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmlzb1dlZWtPZlllYXIgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgKHRoaXMubW9udGggPT09IHVuZGVmaW5lZCB8fCB0aGlzLmRheU9mTW9udGggPT09IHVuZGVmaW5lZClcbiAgICAgICAgKXtcbiAgICAgICAgICAgIGdldERhdGVGcm9tSVNPV2Vla0RhdGUodGhpcyxcbiAgICAgICAgICAgICAgICB0aGlzLmlzb1llYXIsIHRoaXMuaXNvV2Vla09mWWVhciwgdGhpcy5kYXlPZldlZWsgfHwgMFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfWVsc2UgaWYodGhpcy5kYXlPZlllYXIgIT09IHVuZGVmaW5lZCl7XG4gICAgICAgICAgICBjb25zdCB5ZWFyID0gdGhpcy55ZWFyICE9PSB1bmRlZmluZWQgPyB0aGlzLnllYXIgOiBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICBpZih0aGlzLm1vbnRoID09PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgICAgIHRoaXMubW9udGggPSBnZXRNb250aEZyb21EYXlPZlllYXIoeWVhciwgdGhpcy5kYXlPZlllYXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYodGhpcy5kYXlPZk1vbnRoID09PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgICAgIHRoaXMuZGF5T2ZNb250aCA9IGdldERheU9mTW9udGhGcm9tRGF5T2ZZZWFyKHllYXIsIHRoaXMuZGF5T2ZZZWFyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfWVsc2UgaWYodGhpcy53ZWVrT2ZZZWFyRnJvbVN1bmRheSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAodGhpcy5tb250aCA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuZGF5T2ZNb250aCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICApe1xuICAgICAgICAgICAgY29uc3QgeWVhciA9IHRoaXMueWVhciAhPT0gdW5kZWZpbmVkID8gdGhpcy55ZWFyIDogZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgICAgZ2V0RGF0ZUZyb21TdW5kYXlXZWVrRGF0ZSh0aGlzLFxuICAgICAgICAgICAgICAgIHllYXIsIHRoaXMud2Vla09mWWVhckZyb21TdW5kYXksIHRoaXMuZGF5T2ZXZWVrIHx8IDBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1lbHNlIGlmKHRoaXMud2Vla09mWWVhckZyb21Nb25kYXkgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgKHRoaXMubW9udGggPT09IHVuZGVmaW5lZCB8fCB0aGlzLmRheU9mTW9udGggPT09IHVuZGVmaW5lZClcbiAgICAgICAgKXtcbiAgICAgICAgICAgIGNvbnN0IHllYXIgPSB0aGlzLnllYXIgIT09IHVuZGVmaW5lZCA/IHRoaXMueWVhciA6IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgIGdldERhdGVGcm9tTW9uZGF5V2Vla0RhdGUodGhpcyxcbiAgICAgICAgICAgICAgICB5ZWFyLCB0aGlzLndlZWtPZlllYXJGcm9tTW9uZGF5LCB0aGlzLmRheU9mV2VlayB8fCAwXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmKHRoaXMueWVhciAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIodGhpcy55ZWFyKTtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLm1vbnRoICE9PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BpbmVhcHBsZW1hY2hpbmUvc3RydGltZS1qcy9pc3N1ZXMvNVxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjY2ODEzMTMvamF2YXNjcmlwdC1zZXR1dGNtb250aC1kb2VzLW5vdC13b3JrLWZvci1ub3ZlbWJlclxuICAgICAgICAgICAgZGF0ZS5zZXRVVENNb250aCgwLCAxKTtcbiAgICAgICAgICAgIGRhdGUuc2V0VVRDTW9udGgodGhpcy5tb250aCAtIDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmKHRoaXMuZGF5T2ZNb250aCAhPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGRhdGUuc2V0VVRDRGF0ZSh0aGlzLmRheU9mTW9udGgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuZ2V0VGltZXpvbmVPZmZzZXRPZkRhdGUoZGF0ZSk7XG4gICAgICAgIGlmKG9mZnNldC50b3RhbE1pbnV0ZXMpe1xuICAgICAgICAgICAgdGhpcy5ob3VyID0gKHRoaXMuaG91ciB8fCAwKSAtIG9mZnNldC5ob3VyO1xuICAgICAgICAgICAgdGhpcy5taW51dGUgPSAodGhpcy5taW51dGUgfHwgMCkgLSBvZmZzZXQubWludXRlO1xuICAgICAgICB9XG4gICAgICAgIGRhdGUuc2V0VVRDSG91cnModGhpcy5ob3VyIHx8IDApO1xuICAgICAgICBkYXRlLnNldFVUQ01pbnV0ZXModGhpcy5taW51dGUgfHwgMCk7XG4gICAgICAgIGRhdGUuc2V0VVRDU2Vjb25kcyh0aGlzLnNlY29uZCB8fCAwKTtcbiAgICAgICAgZGF0ZS5zZXRVVENNaWxsaXNlY29uZHModGhpcy5taWNyb3NlY29uZCA/IHRoaXMubWljcm9zZWNvbmQgLyAxMDAwIDogMCk7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgICBjb3B5KCl7XG4gICAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyBUaW1lc3RhbXBQYXJzZXIodGhpcy5zdHJpbmcsIHRoaXMuZm9ybWF0LCB0aGlzLnRva2Vucyk7XG4gICAgICAgIGZvcihsZXQga2V5IGluIHRoaXMpe1xuICAgICAgICAgICAgcGFyc2VyW2tleV0gPSB0aGlzW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnNlcjtcbiAgICB9XG4gICAgZm9yayhsZW5ndGgsIHN0YXJ0VG9rZW5JbmRleCl7XG4gICAgICAgIGNvbnN0IHBhcnNlciA9IHRoaXMuY29weSgpO1xuICAgICAgICBwYXJzZXIuZm9ya0xlbmd0aCA9IGxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZShzdGFydFRva2VuSW5kZXgpO1xuICAgIH1cbiAgICBwYXJzZShzdGFydFRva2VuSW5kZXgpe1xuICAgICAgICBmb3IobGV0IGkgPSBzdGFydFRva2VuSW5kZXggfHwgMDsgaSA8IHRoaXMudG9rZW5zLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy50b2tlbnNbaV07XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHRva2VuO1xuICAgICAgICAgICAgaWYodGhpcy5pbmRleCA+PSB0aGlzLnN0cmluZy5sZW5ndGgpIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKFxuICAgICAgICAgICAgICAgIFwiVGltZXN0YW1wIGlzIHRvbyBzaG9ydCB0byBtYXRjaCB0aGUgd2hvbGUgZm9ybWF0LlwiLCB0aGlzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYodG9rZW4gaW5zdGFuY2VvZiBEaXJlY3RpdmUuU3RyaW5nVG9rZW4pe1xuICAgICAgICAgICAgICAgIHRoaXMucGFyc2VTdHJpbmdUb2tlbih0b2tlbi5zdHJpbmcpO1xuICAgICAgICAgICAgfWVsc2UgaWYodG9rZW4uaGFzUGFyc2VGdW5jdGlvbigpKXtcbiAgICAgICAgICAgICAgICB0b2tlbi5wYXJzZSh0aGlzKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKHRva2VuLmhhc1N0b3JlRnVuY3Rpb24oKSAmJiAhdG9rZW4udGV4dCl7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IHRoaXMudG9rZW5zWzEgKyBpXTtcbiAgICAgICAgICAgICAgICBpZigobmV4dCBpbnN0YW5jZW9mIERpcmVjdGl2ZS5TdHJpbmdUb2tlbiAmJiBpc0RpZ2l0KG5leHQuc3RyaW5nWzBdKSkgfHwgKChcbiAgICAgICAgICAgICAgICAgICAgbmV4dCBpbnN0YW5jZW9mIERpcmVjdGl2ZSB8fFxuICAgICAgICAgICAgICAgICAgICBuZXh0IGluc3RhbmNlb2YgRGlyZWN0aXZlLlRva2VuXG4gICAgICAgICAgICAgICAgKSAmJiAhbmV4dC50ZXh0KSl7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucGFyc2VBbWJpZ3VvdXNOdW1iZXIodG9rZW4sIGkpO1xuICAgICAgICAgICAgICAgICAgICBpZihyZXN1bHQpIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuLnN0b3JlKHRoaXMsIHRoaXMucGFyc2VOdW1iZXIodG9rZW4pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVGltZXN0YW1wUGFyc2VFcnJvcihcIkludmFsaWQgZGlyZWN0aXZlLlwiLCB0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYoMSArIHRoaXMuaW5kZXggPCB0aGlzLnN0cmluZy5sZW5ndGgpIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKFxuICAgICAgICAgICAgYFRpbWVzdGFtcCBpcyB0b28gbG9uZyBmb3IgdGhlIGdpdmVuIGZvcm1hdC4gVGV4dCByZW1haW5pbmc6IFwiJHt0aGlzLnN0cmluZy5zbGljZSh0aGlzLmluZGV4KX1cIi5gLCB0aGlzXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBwYXJzZVN0cmluZ1Rva2VuKHRva2VuKXtcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRva2VuLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGlmKHRoaXMuc3RyaW5nW3RoaXMuaW5kZXhdICE9PSB0b2tlbltpXSl7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoYFN0cmluZyBsaXRlcmFsIFwiJHt0b2tlbn1cIiBub3QgbWF0Y2hlZC5gLCB0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW5kZXgrKztcbiAgICAgICAgfVxuICAgIH1cbiAgICBwYXJzZUFtYmlndW91c051bWJlcih0b2tlbiwgdG9rZW5JbmRleCl7XG4gICAgICAgIGlmKHRoaXMuZm9ya0xlbmd0aCA9PT0gMCl7XG4gICAgICAgICAgICBjb25zdCBsaWtlbHlMZW5ndGggPSB0b2tlbi5nZXRMaWtlbHlMZW5ndGgoKTtcbiAgICAgICAgICAgIGlmKGxpa2VseUxlbmd0aCl7XG4gICAgICAgICAgICAgICAgdHJ5e1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JrKGxpa2VseUxlbmd0aCwgdG9rZW5JbmRleCk7XG4gICAgICAgICAgICAgICAgfWNhdGNoKGVycm9yKXtcbiAgICAgICAgICAgICAgICAgICAgaWYoIShlcnJvciBpbnN0YW5jZW9mIFRpbWVzdGFtcFBhcnNlRXJyb3IpKSB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgbGFzdFdob2xlRXJyb3IgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBmb3IobGV0IGkgPSAxOyBpIDwgdGhpcy5zdHJpbmcubGVuZ3RoIC0gdGhpcy5pbmRleDsgaSsrKXtcbiAgICAgICAgICAgICAgICBpZihpID09PSB0b2tlbi5saWtlbHlMZW5ndGgpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIHRyeXtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9yayhpLCB0b2tlbkluZGV4KTtcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZXJyb3Ipe1xuICAgICAgICAgICAgICAgICAgICBpZighKGVycm9yIGluc3RhbmNlb2YgVGltZXN0YW1wUGFyc2VFcnJvcikpIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICAgICAgICBpZihlcnJvci5tZXNzYWdlID0gXCJUaW1lc3RhbXAgaXMgdG9vIHNob3J0IHRvIG1hdGNoIHRoZSB3aG9sZSBmb3JtYXQuXCIpe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFdob2xlRXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKGxhc3RXaG9sZUVycm9yKXtcbiAgICAgICAgICAgICAgICB0aHJvdyBsYXN0V2hvbGVFcnJvcjtcbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKFwiRmFpbGVkIHRvIHBhcnNlIGFtYmlndW91cyBudW1iZXIuXCIsIHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIGNvbnN0IG51bWJlciA9IHRoaXMucGFyc2VOdW1iZXIodG9rZW4sIHRoaXMuZm9ya0xlbmd0aCk7XG4gICAgICAgICAgICB0b2tlbi5zdG9yZSh0aGlzLCBudW1iZXIpO1xuICAgICAgICAgICAgdGhpcy5mb3JrTGVuZ3RoID0gMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwYXJzZU51bWJlcihkaXJlY3RpdmUsIGxlbmd0aExpbWl0ID0gSW5maW5pdHkpe1xuICAgICAgICBjb25zdCBuZWdhdGl2ZSA9IHRoaXMuc3RyaW5nW3RoaXMuaW5kZXhdID09PSBcIi1cIjtcbiAgICAgICAgaWYobmVnYXRpdmUgJiYgIWRpcmVjdGl2ZS5nZXRDYW5CZU5lZ2F0aXZlKCkpe1xuICAgICAgICAgICAgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoXCJOdW1iZXIgY2Fubm90IGJlIG5lZ2F0aXZlLlwiLCB0aGlzKTtcbiAgICAgICAgfWVsc2UgaWYobmVnYXRpdmUpe1xuICAgICAgICAgICAgdGhpcy5pbmRleCsrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5pbmRleDtcbiAgICAgICAgd2hpbGUodGhpcy5pbmRleCA8IHRoaXMuc3RyaW5nLmxlbmd0aCAmJlxuICAgICAgICAgICAgdGhpcy5zdHJpbmdbdGhpcy5pbmRleF0gPT09IFwiIFwiXG4gICAgICAgICl7XG4gICAgICAgICAgICB0aGlzLmluZGV4Kys7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUodGhpcy5pbmRleCA8IHRoaXMuc3RyaW5nLmxlbmd0aCAmJlxuICAgICAgICAgICAgdGhpcy5pbmRleCAtIHN0YXJ0IDwgbGVuZ3RoTGltaXQgJiYgaXNEaWdpdCh0aGlzLnN0cmluZ1t0aGlzLmluZGV4XSlcbiAgICAgICAgKXtcbiAgICAgICAgICAgIHRoaXMuaW5kZXgrKztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZSA9ICt0aGlzLnN0cmluZy5zbGljZShzdGFydCwgdGhpcy5pbmRleCkudHJpbSgpO1xuICAgICAgICBpZighTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSkpe1xuICAgICAgICAgICAgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoXCJGYWlsZWQgdG8gcGFyc2UgbnVtYmVyLlwiLCB0aGlzKTtcbiAgICAgICAgfWVsc2UgaWYoIWRpcmVjdGl2ZS5udW1iZXJJbkJvdW5kcyh2YWx1ZSkpe1xuICAgICAgICAgICAgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoYE51bWJlciBbJHt2YWx1ZX1dIGlzIG91dCBvZiBib3VuZHMgJHtkaXJlY3RpdmUuZ2V0Qm91bmRzU3RyaW5nKCl9LmAsIHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5lZ2F0aXZlID8gLXZhbHVlIDogdmFsdWU7XG4gICAgICAgIGlmKGRpcmVjdGl2ZS5pc09yZGluYWwoKSl7XG4gICAgICAgICAgICBjb25zdCBvcmRpbmFsID0gdGhpcy5vcmRpbmFsVHJhbnNmb3JtKHJlc3VsdCk7XG4gICAgICAgICAgICB0aGlzLmluZGV4ICs9IG9yZGluYWwubGVuZ3RoIC0gKHRoaXMuaW5kZXggLSBzdGFydCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcGFyc2VNb250aE5hbWUoKXtcbiAgICAgICAgY29uc3QgbmFtZXMgPSB0aGlzLnNob3J0TW9udGhOYW1lcy5zbGljZSgpO1xuICAgICAgICBuYW1lcy5wdXNoKC4uLnRoaXMubG9uZ01vbnRoTmFtZXMpO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucGFyc2VJbmRleEluTGlzdChuYW1lcyk7XG4gICAgICAgIGlmKGluZGV4ID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKFxuICAgICAgICAgICAgXCJGYWlsZWQgdG8gcGFyc2UgbW9udGggbmFtZS5cIiwgdGhpc1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4gaW5kZXggJSAxMjtcbiAgICB9XG4gICAgcGFyc2VXZWVrZGF5TmFtZSgpe1xuICAgICAgICBjb25zdCBuYW1lcyA9IHRoaXMuc2hvcnRXZWVrZGF5TmFtZXMuc2xpY2UoKTtcbiAgICAgICAgbmFtZXMucHVzaCguLi50aGlzLmxvbmdXZWVrZGF5TmFtZXMpO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucGFyc2VJbmRleEluTGlzdChuYW1lcyk7XG4gICAgICAgIGlmKGluZGV4ID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKFxuICAgICAgICAgICAgXCJGYWlsZWQgdG8gcGFyc2Ugd2Vla2RheSBuYW1lLlwiLCB0aGlzXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBpbmRleCAlIDc7XG4gICAgfVxuICAgIHBhcnNlTWVyaWRpZW1OYW1lKCl7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wYXJzZUluZGV4SW5MaXN0KHRoaXMubWVyaWRpZW1OYW1lcyk7XG4gICAgICAgIGlmKGluZGV4ID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKFxuICAgICAgICAgICAgXCJGYWlsZWQgdG8gcGFyc2UgQU0vUE0uXCIsIHRoaXNcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGluZGV4ICUgMjtcbiAgICB9XG4gICAgcGFyc2VFcmFOYW1lKCl7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wYXJzZUluZGV4SW5MaXN0KHRoaXMuZXJhTmFtZXMpO1xuICAgICAgICBpZihpbmRleCA9PT0gdW5kZWZpbmVkKSB0aHJvdyBuZXcgVGltZXN0YW1wUGFyc2VFcnJvcihcbiAgICAgICAgICAgIFwiRmFpbGVkIHRvIHBhcnNlIGVyYSBuYW1lLlwiLCB0aGlzXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBpbmRleCAlIDI7XG4gICAgfVxuICAgIHBhcnNlSW5kZXhJbkxpc3QobGlzdCl7XG4gICAgICAgIGNvbnN0IHBvc3NpYmxlID0gbGlzdC5zbGljZSgpO1xuICAgICAgICBsZXQgcG9zc2libGVDb3VudCA9IHBvc3NpYmxlLmxlbmd0aDtcbiAgICAgICAgbGV0IG1hdGNoSW5kZXggPSB1bmRlZmluZWQ7XG4gICAgICAgIGxldCBtYXRjaExlbmd0aCA9IDA7XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IHBvc3NpYmxlQ291bnQgJiYgdGhpcy5pbmRleCArIGkgPCB0aGlzLnN0cmluZy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICBjb25zdCBjaCA9IHRoaXMuc3RyaW5nW3RoaXMuaW5kZXggKyBpXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgZm9yKGxldCBqID0gMDsgaiA8IHBvc3NpYmxlLmxlbmd0aDsgaisrKXtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gcG9zc2libGVbal07XG4gICAgICAgICAgICAgICAgaWYoIWl0ZW0pIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGlmKGkgPj0gaXRlbS5sZW5ndGggfHwgaXRlbVtpXS50b0xvd2VyQ2FzZSgpICE9PSBjaCl7XG4gICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlW2pdID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgcG9zc2libGVDb3VudC0tO1xuICAgICAgICAgICAgICAgIH1lbHNlIGlmKDEgKyBpID09PSBpdGVtLmxlbmd0aCl7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoSW5kZXggPSBqO1xuICAgICAgICAgICAgICAgICAgICBtYXRjaExlbmd0aCA9IDEgKyBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZihtYXRjaEluZGV4ID09PSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICB0aGlzLmluZGV4ICs9IG1hdGNoTGVuZ3RoO1xuICAgICAgICAgICAgcmV0dXJuIG1hdGNoSW5kZXg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0VGltZXpvbmVOYW1lTGlzdCgpe1xuICAgICAgICBpZighdGhpcy50aW1lem9uZU5hbWVMaXN0KXtcbiAgICAgICAgICAgIHRoaXMudGltZXpvbmVOYW1lTGlzdCA9IFtdO1xuICAgICAgICAgICAgZm9yKGxldCBrZXkgaW4gdGhpcy50aW1lem9uZU5hbWVzKXtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWV6b25lTmFtZUxpc3QucHVzaChrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRpbWV6b25lTmFtZUxpc3Q7XG4gICAgfVxuICAgIHBhcnNlVGltZXpvbmVPZmZzZXQobW9kaWZpZXIpe1xuICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuaW5kZXg7XG4gICAgICAgIGNvbnN0IHNpZ24gPSB0aGlzLnN0cmluZ1t0aGlzLmluZGV4XTtcbiAgICAgICAgY29uc3QgaG91cnMgPSArdGhpcy5zdHJpbmcuc2xpY2UodGhpcy5pbmRleCArIDEsIHRoaXMuaW5kZXggKyAzKTtcbiAgICAgICAgbGV0IG1pbnV0ZXM7XG4gICAgICAgIGlmKHRoaXMuc3RyaW5nW3RoaXMuaW5kZXggKyAzXSA9PT0gXCI6XCIpe1xuICAgICAgICAgICAgbWludXRlcyA9ICt0aGlzLnN0cmluZy5zbGljZSh0aGlzLmluZGV4ICsgNCwgdGhpcy5pbmRleCArIDYpO1xuICAgICAgICAgICAgdGhpcy5pbmRleCArPSA2O1xuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIG1pbnV0ZXMgPSArdGhpcy5zdHJpbmcuc2xpY2UodGhpcy5pbmRleCArIDMsIHRoaXMuaW5kZXggKyA1KTtcbiAgICAgICAgICAgIHRoaXMuaW5kZXggKz0gNTtcbiAgICAgICAgfVxuICAgICAgICBpZighTnVtYmVyLmlzSW50ZWdlcihob3VycykgfHwgIU51bWJlci5pc0ludGVnZXIobWludXRlcykpe1xuICAgICAgICAgICAgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoXG4gICAgICAgICAgICAgICAgYEZhaWxlZCB0byBwYXJzZSB0aW1lem9uZSBvZmZzZXQgZnJvbSBzdHJpbmcgYCArXG4gICAgICAgICAgICAgICAgYFwiJHt0aGlzLnN0cmluZy5zbGljZShzdGFydCwgdGhpcy5pbmRleCl9XCIuYCwgdGhpc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvZmZzZXQgPSBtaW51dGVzICsgNjAgKiBob3VycztcbiAgICAgICAgaWYoc2lnbiA9PT0gXCIrXCIgfHwgc2lnbiA9PT0gXCLCsVwiKSByZXR1cm4gK29mZnNldDtcbiAgICAgICAgZWxzZSBpZihzaWduID09PSBcIi1cIikgcmV0dXJuIC1vZmZzZXQ7XG4gICAgICAgIGVsc2UgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoYFVua25vd24gdGltZXpvbmUgb2Zmc2V0IHNpZ24gXCIke3NpZ259XCIuYCwgdGhpcyk7XG4gICAgfVxufVxuXG5UaW1lc3RhbXBQYXJzZXIucGFyc2VGb3JtYXRTdHJpbmcgPSBmdW5jdGlvbiBwYXJzZUZvcm1hdFN0cmluZyhmb3JtYXQpe1xuICAgIGNvbnN0IHRva2VucyA9IFtdO1xuICAgIGxldCBkaXJlY3RpdmUgPSBmYWxzZTtcbiAgICBsZXQgbW9kaWZpZXIgPSB1bmRlZmluZWQ7XG4gICAgY29uc3QgZm9ybWF0U3RyaW5nID0gU3RyaW5nKGZvcm1hdCk7XG4gICAgaWYoIWZvcm1hdFN0cmluZyl7XG4gICAgICAgIHRocm93IG5ldyBUaW1lc3RhbXBQYXJzZUVycm9yKGBFbXB0eSBmb3JtYXQgc3RyaW5nLmAsIHtcbiAgICAgICAgICAgIGZvcm1hdDogZm9ybWF0U3RyaW5nXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBhZGRDaGFyYWN0ZXIoY2gpe1xuICAgICAgICBpZih0b2tlbnMubGVuZ3RoICYmICh0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdIGluc3RhbmNlb2YgRGlyZWN0aXZlLlN0cmluZ1Rva2VuKSl7XG4gICAgICAgICAgICBpZihpc0RpZ2l0KGNoKSA9PT0gaXNEaWdpdCh0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdLnN0cmluZ1swXSkpe1xuICAgICAgICAgICAgICAgIHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV0uYWRkQ2hhcmFjdGVyKGNoKTtcbiAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgIHRva2Vucy5wdXNoKG5ldyBEaXJlY3RpdmUuU3RyaW5nVG9rZW4oY2gpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICB0b2tlbnMucHVzaChuZXcgRGlyZWN0aXZlLlN0cmluZ1Rva2VuKGNoKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yKGxldCBjaCBvZiBmb3JtYXRTdHJpbmcpe1xuICAgICAgICBpZihkaXJlY3RpdmUgJiYgY2ggPT09IFwiJVwiKXtcbiAgICAgICAgICAgIGFkZENoYXJhY3RlcihcIiVcIik7XG4gICAgICAgICAgICBtb2RpZmllciA9IFwiXCI7XG4gICAgICAgICAgICBkaXJlY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfWVsc2UgaWYoZGlyZWN0aXZlICYmIGNoID09PSBcIm5cIil7XG4gICAgICAgICAgICBhZGRDaGFyYWN0ZXIoXCJcXG5cIik7XG4gICAgICAgICAgICBtb2RpZmllciA9IFwiXCI7XG4gICAgICAgICAgICBkaXJlY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfWVsc2UgaWYoZGlyZWN0aXZlICYmIGNoID09PSBcInRcIil7XG4gICAgICAgICAgICBhZGRDaGFyYWN0ZXIoXCJcXHRcIik7XG4gICAgICAgICAgICBtb2RpZmllciA9IFwiXCI7XG4gICAgICAgICAgICBkaXJlY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfWVsc2UgaWYoZGlyZWN0aXZlICYmICFtb2RpZmllciAmJiAoXG4gICAgICAgICAgICBjaCA9PT0gXCItXCIgfHwgY2ggPT09IFwiX1wiIHx8IGNoID09PSBcIl5cIiB8fCBjaCA9PT0gXCI6XCJcbiAgICAgICAgKSl7XG4gICAgICAgICAgICBtb2RpZmllciArPSBjaDtcbiAgICAgICAgfWVsc2UgaWYoZGlyZWN0aXZlKXtcbiAgICAgICAgICAgIGNvbnN0IGRpciA9IERpcmVjdGl2ZS5nZXRCeU5hbWUoY2gpO1xuICAgICAgICAgICAgaWYoIWRpcikgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoYFVua25vd24gZGlyZWN0aXZlIFwiJSR7bW9kaWZpZXJ9JHtjaH1cIi5gLCB7XG4gICAgICAgICAgICAgICAgZm9ybWF0OiBmb3JtYXRTdHJpbmdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZWxzZSBpZihkaXIucmV3cml0ZSkgdG9rZW5zLnB1c2goXG4gICAgICAgICAgICAgICAgLi4uZGlyLmdldFJld3JpdGVQYXJzZWQoVGltZXN0YW1wUGFyc2VyLnBhcnNlRm9ybWF0U3RyaW5nKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGVsc2UgdG9rZW5zLnB1c2goXG4gICAgICAgICAgICAgICAgbmV3IERpcmVjdGl2ZS5Ub2tlbihtb2RpZmllciwgZGlyKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG1vZGlmaWVyID0gXCJcIjtcbiAgICAgICAgICAgIGRpcmVjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB9ZWxzZSBpZihjaCA9PT0gXCIlXCIpe1xuICAgICAgICAgICAgbW9kaWZpZXIgPSBcIlwiO1xuICAgICAgICAgICAgZGlyZWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBhZGRDaGFyYWN0ZXIoY2gpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmKGRpcmVjdGl2ZSkgdGhyb3cgbmV3IFRpbWVzdGFtcFBhcnNlRXJyb3IoXG4gICAgICAgIFwiRm91bmQgdW50ZXJtaW5hdGVkIGRpcmVjdGl2ZSBhdCB0aGUgZW5kIG9mIHRoZSBmb3JtYXQgc3RyaW5nLlwiLCB7XG4gICAgICAgICAgICBmb3JtYXQ6IGZvcm1hdFN0cmluZ1xuICAgICAgICB9XG4gICAgKTtcbiAgICBpZih0b2tlbnMubGVuZ3RoICYmIHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV0uc3RyaW5nID09PSBcIlpcIil7XG4gICAgICAgIHRva2Vucy56dWx1VGltZXpvbmUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdG9rZW5zO1xufVxuXG5mdW5jdGlvbiBpc0xlYXBZZWFyKHllYXIpe1xuICAgIHJldHVybiB5ZWFyICUgNCA9PT0gMCAmJiAoeWVhciAlIDEwMCAhPT0gMCB8fCB5ZWFyICUgNDAwID09PSAwKTtcbn1cblxuXG5jb25zdCBtb250aExlbmd0aHMgPSB7XG4gICAgY29tbW9uOiBbMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV0sXG4gICAgbGVhcDogWzMxLCAyOSwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdLFxuICAgIGZvclllYXI6IGZ1bmN0aW9uKHllYXIpe1xuICAgICAgICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IG1vbnRoTGVuZ3Rocy5sZWFwIDogbW9udGhMZW5ndGhzLmNvbW1vbjtcbiAgICB9LFxufTtcblxuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzQ3ODk5Mi80MDk5MDIyXG5mdW5jdGlvbiBnZXRGaXJzdFdlZWtkYXlJblllYXIoeWVhcil7XG4gICAgY29uc3QgeSA9IHllYXIgLSAxO1xuICAgIHJldHVybiAoeWVhciAqIDM2NSArXG4gICAgICAgIE1hdGguZmxvb3IoeSAvIDQpIC0gTWF0aC5mbG9vcih5IC8gMTAwKSArIE1hdGguZmxvb3IoeSAvIDQwMClcbiAgICApICUgNztcbn1cblxuY29uc3QgZGVmYXVsdFRpbWV6b25lTmFtZXMgPSB7XG4gICAgXCJBQ0RUXCI6ICsxMC41LFxuICAgIFwiQUNTVFwiOiArOS41LFxuICAgIFwiQUNUXCI6IC01LFxuICAgIFwiQUNXU1RcIjogKzguNzUsXG4gICAgXCJBRFRcIjogLTMsXG4gICAgXCJBRURUXCI6ICsxMSxcbiAgICBcIkFFU1RcIjogKzEwLFxuICAgIFwiQUZUXCI6ICs0LjUsXG4gICAgXCJBS0RUXCI6IC04LFxuICAgIFwiQUtTVFwiOiAtOSxcbiAgICBcIkFNU1RcIjogLTMsXG4gICAgXCJBTVRcIjogLTQsXG4gICAgXCJBTVRcIjogKzQsXG4gICAgXCJBUlRcIjogLTMsXG4gICAgXCJBU1RcIjogKzMsXG4gICAgXCJBU1RcIjogLTQsXG4gICAgXCJBV1NUXCI6ICs4LFxuICAgIFwiQVpPU1RcIjogMCxcbiAgICBcIkFaT1RcIjogLTEsXG4gICAgXCJBWlRcIjogKzQsXG4gICAgXCJCRFRcIjogKzgsXG4gICAgXCJCSU9UXCI6ICs2LFxuICAgIFwiQklUXCI6IC0xMixcbiAgICBcIkJPVFwiOiAtNCxcbiAgICBcIkJSU1RcIjogLTIsXG4gICAgXCJCUlRcIjogLTMsXG4gICAgXCJCU1RcIjogKzYsXG4gICAgXCJCU1RcIjogKzExLFxuICAgIFwiQlNUXCI6ICsxLFxuICAgIFwiQlRUXCI6ICs2LFxuICAgIFwiQ0FUXCI6ICsyLFxuICAgIFwiQ0NUXCI6ICs2LjUsXG4gICAgXCJDRFRcIjogLTUsXG4gICAgXCJDRFRcIjogLTQsXG4gICAgXCJDRVNUXCI6ICsyLFxuICAgIFwiQ0VUXCI6ICsxLFxuICAgIFwiQ0hBRFRcIjogKzEzLjc1LFxuICAgIFwiQ0hBU1RcIjogKzEyLjc1LFxuICAgIFwiQ0hPVFwiOiArOCxcbiAgICBcIkNIT1NUXCI6ICs5LFxuICAgIFwiQ0hTVFwiOiArMTAsXG4gICAgXCJDSFVUXCI6ICsxMCxcbiAgICBcIkNJU1RcIjogLTgsXG4gICAgXCJDSVRcIjogKzgsXG4gICAgXCJDS1RcIjogLTEwLFxuICAgIFwiQ0xTVFwiOiAtMyxcbiAgICBcIkNMVFwiOiAtNCxcbiAgICBcIkNPU1RcIjogLTQsXG4gICAgXCJDT1RcIjogLTUsXG4gICAgXCJDU1RcIjogLTYsXG4gICAgXCJDU1RcIjogKzgsXG4gICAgXCJDU1RcIjogLTUsXG4gICAgXCJDVFwiOiArOCxcbiAgICBcIkNWVFwiOiAtMSxcbiAgICBcIkNXU1RcIjogKzguNzUsXG4gICAgXCJDWFRcIjogKzcsXG4gICAgXCJEQVZUXCI6ICs3LFxuICAgIFwiRERVVFwiOiArMTAsXG4gICAgXCJERlRcIjogKzEsXG4gICAgXCJFQVNTVFwiOiAtNSxcbiAgICBcIkVBU1RcIjogLTYsXG4gICAgXCJFQVRcIjogKzMsXG4gICAgXCJFQ1RcIjogLTQsXG4gICAgXCJFQ1RcIjogLTUsXG4gICAgXCJFRFRcIjogLTQsXG4gICAgXCJFRVNUXCI6ICszLFxuICAgIFwiRUVUXCI6ICsyLFxuICAgIFwiRUdTVFwiOiAwLFxuICAgIFwiRUdUXCI6IC0xLFxuICAgIFwiRUlUXCI6ICs5LFxuICAgIFwiRVNUXCI6IC01LFxuICAgIFwiRkVUXCI6ICszLFxuICAgIFwiRkpUXCI6ICsxMixcbiAgICBcIkZLU1RcIjogLTMsXG4gICAgXCJGS1RcIjogLTQsXG4gICAgXCJGTlRcIjogLTIsXG4gICAgXCJHQUxUXCI6IC02LFxuICAgIFwiR0FNVFwiOiAtOSxcbiAgICBcIkdFVFwiOiArNCxcbiAgICBcIkdGVFwiOiAtMyxcbiAgICBcIkdJTFRcIjogKzEyLFxuICAgIFwiR0lUXCI6IC05LFxuICAgIFwiR01UXCI6IDAsXG4gICAgXCJHU1RcIjogLTIsXG4gICAgXCJHU1RcIjogKzQsXG4gICAgXCJHWVRcIjogLTQsXG4gICAgXCJIRFRcIjogLTksXG4gICAgXCJIQUVDXCI6ICsyLFxuICAgIFwiSFNUXCI6IC0xMCxcbiAgICBcIkhLVFwiOiArOCxcbiAgICBcIkhNVFwiOiArNSxcbiAgICBcIkhPVlNUXCI6ICs4LFxuICAgIFwiSE9WVFwiOiArNyxcbiAgICBcIklDVFwiOiArNyxcbiAgICBcIklETFdcIjogLTEyLFxuICAgIFwiSURUXCI6ICszLFxuICAgIFwiSU9UXCI6ICszLFxuICAgIFwiSVJEVFwiOiArNC41LFxuICAgIFwiSVJLVFwiOiArOCxcbiAgICBcIklSU1RcIjogKzMuNSxcbiAgICBcIklTVFwiOiArNS41LFxuICAgIFwiSVNUXCI6ICsxLFxuICAgIFwiSVNUXCI6ICsyLFxuICAgIFwiSlNUXCI6ICs5LFxuICAgIFwiS0dUXCI6ICs2LFxuICAgIFwiS09TVFwiOiArMTEsXG4gICAgXCJLUkFUXCI6ICs3LFxuICAgIFwiS1NUXCI6ICs5LFxuICAgIFwiTEhTVFwiOiArMTAuNSxcbiAgICBcIkxIU1RcIjogKzExLFxuICAgIFwiTElOVFwiOiArMTQsXG4gICAgXCJNQUdUXCI6ICsxMixcbiAgICBcIk1BUlRcIjogLTkuNSxcbiAgICBcIk1BV1RcIjogKzUsXG4gICAgXCJNRFRcIjogLTYsXG4gICAgXCJNRVRcIjogKzEsXG4gICAgXCJNRVNUXCI6ICsyLFxuICAgIFwiTUhUXCI6ICsxMixcbiAgICBcIk1JU1RcIjogKzExLFxuICAgIFwiTUlUXCI6IC05LjUsXG4gICAgXCJNTVRcIjogKzYuNSxcbiAgICBcIk1TS1wiOiArMyxcbiAgICBcIk1TVFwiOiArOCxcbiAgICBcIk1TVFwiOiAtNyxcbiAgICBcIk1VVFwiOiArNCxcbiAgICBcIk1WVFwiOiArNSxcbiAgICBcIk1ZVFwiOiArOCxcbiAgICBcIk5DVFwiOiArMTEsXG4gICAgXCJORFRcIjogLTIuNSxcbiAgICBcIk5GVFwiOiArMTEsXG4gICAgXCJOUFRcIjogKzUuNzUsXG4gICAgXCJOU1RcIjogLTMuNSxcbiAgICBcIk5UXCI6IC0zLjUsXG4gICAgXCJOVVRcIjogLTExLFxuICAgIFwiTlpEVFwiOiArMTMsXG4gICAgXCJOWlNUXCI6ICsxMixcbiAgICBcIk9NU1RcIjogKzYsXG4gICAgXCJPUkFUXCI6ICs1LFxuICAgIFwiUERUXCI6IC03LFxuICAgIFwiUEVUXCI6IC01LFxuICAgIFwiUEVUVFwiOiArMTIsXG4gICAgXCJQR1RcIjogKzEwLFxuICAgIFwiUEhPVFwiOiArMTMsXG4gICAgXCJQSFRcIjogKzgsXG4gICAgXCJQS1RcIjogKzUsXG4gICAgXCJQTURUXCI6IC0yLFxuICAgIFwiUE1TVFwiOiAtMyxcbiAgICBcIlBPTlRcIjogKzExLFxuICAgIFwiUFNUXCI6IC04LFxuICAgIFwiUFNUXCI6ICs4LFxuICAgIFwiUFlTVFwiOiAtMyxcbiAgICBcIlBZVFwiOiAtNCxcbiAgICBcIlJFVFwiOiArNCxcbiAgICBcIlJPVFRcIjogLTMsXG4gICAgXCJTQUtUXCI6ICsxMSxcbiAgICBcIlNBTVRcIjogKzQsXG4gICAgXCJTQVNUXCI6ICsyLFxuICAgIFwiU0JUXCI6ICsxMSxcbiAgICBcIlNDVFwiOiArNCxcbiAgICBcIlNEVFwiOiAtMTAsXG4gICAgXCJTR1RcIjogKzgsXG4gICAgXCJTTFNUXCI6ICs1LjUsXG4gICAgXCJTUkVUXCI6ICsxMSxcbiAgICBcIlNSVFwiOiAtMyxcbiAgICBcIlNTVFwiOiAtMTEsXG4gICAgXCJTU1RcIjogKzgsXG4gICAgXCJTWU9UXCI6ICszLFxuICAgIFwiVEFIVFwiOiAtMTAsXG4gICAgXCJUSEFcIjogKzcsXG4gICAgXCJURlRcIjogKzUsXG4gICAgXCJUSlRcIjogKzUsXG4gICAgXCJUS1RcIjogKzEzLFxuICAgIFwiVExUXCI6ICs5LFxuICAgIFwiVE1UXCI6ICs1LFxuICAgIFwiVFJUXCI6ICszLFxuICAgIFwiVE9UXCI6ICsxMyxcbiAgICBcIlRWVFwiOiArMTIsXG4gICAgXCJVTEFTVFwiOiArOSxcbiAgICBcIlVMQVRcIjogKzgsXG4gICAgXCJVU1pcIjogKzIsXG4gICAgXCJVVENcIjogMCxcbiAgICBcIlVZU1RcIjogLTIsXG4gICAgXCJVWVRcIjogLTMsXG4gICAgXCJVWlRcIjogKzUsXG4gICAgXCJWRVRcIjogLTQsXG4gICAgXCJWTEFUXCI6ICsxMCxcbiAgICBcIlZPTFRcIjogKzQsXG4gICAgXCJWT1NUXCI6ICs2LFxuICAgIFwiVlVUXCI6ICsxMSxcbiAgICBcIldBS1RcIjogKzEyLFxuICAgIFwiV0FTVFwiOiArMixcbiAgICBcIldBVFwiOiArMSxcbiAgICBcIldFU1RcIjogKzEsXG4gICAgXCJXRVRcIjogMCxcbiAgICBcIldJVFwiOiArNyxcbiAgICBcIldTVFwiOiArOCxcbiAgICBcIllBS1RcIjogKzksXG4gICAgXCJZRUtUXCI6ICs1LFxuICAgIFwiWlwiOiAwLFxufTtcblxuXG5pZih0eXBlb2YobW9kdWxlKSAhPT0gXCJ1bmRlZmluZWRcIil7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBzdHJ0aW1lO1xufWVsc2UgaWYodHlwZW9mKHdpbmRvdykgIT09IFwidW5kZWZpbmVkXCIpe1xuICAgIHdpbmRvdy5zdHJ0aW1lID0gc3RydGltZTtcbn1cbiIsIi8qIGdsb2JhbCBYTUxIdHRwUmVxdWVzdCAqL1xyXG5cclxuaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tICcuL29iamVjdC9pc09iamVjdCc7XHJcbmltcG9ydCB7IHNlcmlhbGl6ZSB9IGZyb20gJy4vb2JqZWN0L3NlcmlhbGl6ZSc7XHJcbmltcG9ydCB7IHRvVW5kZXJzY29yZSB9IGZyb20gJy4vc3RyaW5nL3RvVW5kZXJzY29yZSc7XHJcblxyXG5jb25zdCB7IHBhcnNlLCBzdHJpbmdpZnkgfSA9IEpTT047XHJcblxyXG4vLyBhamF4IHdyYXBwZXJcclxuZXhwb3J0IGNvbnN0IGFqYXggPSAoYXBpVXJsLCBzdWNjZXNzLCBlcnJvciwgcGFyYW1zLCBtZXRob2QgPSAnR0VUJykgPT4ge1xyXG4gIGNvbnN0IHhtbEh0dHAgICA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xyXG4gIGNvbnN0IHVybCAgICAgICA9IChtZXRob2QgPT09ICdHRVQnICYmIHBhcmFtcykgPyBgJHthcGlVcmx9PyR7KHNlcmlhbGl6ZShwYXJhbXMsIHRvVW5kZXJzY29yZSkpfWAgOiBhcGlVcmw7XHJcbiAgY29uc3QgaXNTdWNjZXNzID0gKHN0YXR1cykgPT4gKChzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMCkgfHwgc3RhdHVzID09PSAzMDQpO1xyXG5cclxuICB4bWxIdHRwLm9wZW4obWV0aG9kLCB1cmwpO1xyXG4gIHhtbEh0dHAuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3ZuZC5hcGkranNvbicpO1xyXG5cclxuICB4bWxIdHRwLm9ucmVhZHlzdGF0ZWNoYW5nZSA9ICgpID0+IHtcclxuICAgIGxldCByZXNwb25zZTtcclxuXHJcbiAgICBpZiAoeG1sSHR0cC5yZWFkeVN0YXRlID09PSA0KSB7XHJcbiAgICAgIGlmIChpc1N1Y2Nlc3MoeG1sSHR0cC5zdGF0dXMpKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHJlc3BvbnNlID0gcGFyc2UoeG1sSHR0cC5yZXNwb25zZVRleHQpO1xyXG4gICAgICAgIH0gY2F0Y2goZSkge1xyXG4gICAgICAgICAgcmVzcG9uc2UgPSB4bWxIdHRwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3VjY2VzcyhyZXNwb25zZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZXJyb3IoeG1sSHR0cCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICBpZiAoaXNPYmplY3QocGFyYW1zKSAmJiBtZXRob2QgIT09ICdHRVQnKSB7XHJcbiAgICB4bWxIdHRwLnNlbmQoc3RyaW5naWZ5KHBhcmFtcykpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB4bWxIdHRwLnNlbmQoKTtcclxuICB9XHJcbn07XHJcbiIsImV4cG9ydCAqIGZyb20gJy4vaXNBcnJheSc7XHJcbiIsImNvbnN0IHsgcHJvdG90eXBlOiB7IHRvU3RyaW5nIH0gfSA9IE9iamVjdDtcclxuXHJcbmV4cG9ydCBjb25zdCBpc0FycmF5ID0gKGEpID0+IHtcclxuICByZXR1cm4gdG9TdHJpbmcuY2FsbChhKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcclxufTtcclxuIiwiLyogZ2xvYmFsIEludGwgKi9cclxuXHJcbmltcG9ydCB7IGdldFN5bWJvbEZyb21DdXJyZW5jeSB9IGZyb20gJ2N1cnJlbmN5LXN5bWJvbC1tYXAnO1xyXG5cclxuZnVuY3Rpb24gdG9Mb2NhbGVTdHJpbmdTdXBwb3J0c09wdGlvbnMoKSB7XHJcbiAgcmV0dXJuICEhKHR5cGVvZiBJbnRsID09PSAnb2JqZWN0JyAmJiBJbnRsICYmIHR5cGVvZiBJbnRsLk51bWJlckZvcm1hdCA9PT0gJ2Z1bmN0aW9uJyk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBjdXJyZW5jeUZvcm1hdHRlciA9ICh2YWx1ZSwgbGFuZywgY3VycmVuY3ksIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IDAsXHJcbiAgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gMykgPT4ge1xyXG4gIGlmICh0b0xvY2FsZVN0cmluZ1N1cHBvcnRzT3B0aW9ucygpICYmIGN1cnJlbmN5KSB7XHJcbiAgICBjb25zdCBpc0RvbGxhciAgICAgPSAoKSA9PiBnZXRTeW1ib2xGcm9tQ3VycmVuY3koY3VycmVuY3kpID09PSAnJCc7XHJcbiAgICBjb25zdCBvcHRpb25zICAgICAgPSB7XHJcbiAgICAgIHN0eWxlOiAnY3VycmVuY3knLFxyXG4gICAgICBjdXJyZW5jeSxcclxuICAgICAgY3VycmVuY3lEaXNwbGF5OiBpc0RvbGxhciA/ICdzeW1ib2wnIDogJ2NvZGUnLFxyXG4gICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHMsXHJcbiAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0c1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBudW1iZXJGb3JtYXQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobGFuZywgb3B0aW9ucyk7XHJcbiAgICBjb25zdCBzdHIgICAgICAgICAgPSBudW1iZXJGb3JtYXQuZm9ybWF0KHZhbHVlKTtcclxuXHJcbiAgICBpZiAoaXNEb2xsYXIgfHwgIWdldFN5bWJvbEZyb21DdXJyZW5jeShjdXJyZW5jeSkpIHtcclxuICAgICAgcmV0dXJuIHN0cjtcclxuICAgIH1cclxuICAgIHJldHVybiBzdHIucmVwbGFjZShjdXJyZW5jeSwgZ2V0U3ltYm9sRnJvbUN1cnJlbmN5KGN1cnJlbmN5KSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdmFsdWU7XHJcbn07XHJcbiIsImV4cG9ydCAqIGZyb20gJy4vY3VycmVuY3lGb3JtYXR0ZXInO1xyXG4iLCJleHBvcnQgKiBmcm9tICcuL21vbnRoTGVuZ3RoJztcclxuIiwiLy8gRGF0ZSB1dGlsc1xyXG5jb25zdCBkYXlzSW5Nb250aCA9IFszMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXTtcclxuY29uc3QgaXNMZWFwWWVhciAgPSAoeWVhcikgPT4gKCh5ZWFyICUgNCA9PT0gMCkgJiYgKHllYXIgJSAxMDAgIT09IDApKSB8fCAoeWVhciAlIDQwMCA9PT0gMCk7XHJcblxyXG5leHBvcnQgY29uc3QgbW9udGhMZW5ndGggPSAoeWVhciwgbW9udGgpID0+IHtcclxuICBsZXQgZGF5cyA9IGRheXNJbk1vbnRoW21vbnRoXTtcclxuICBpZiAobW9udGggPT09IDEgJiYgaXNMZWFwWWVhcih5ZWFyKSkge1xyXG4gICAgZGF5cyA9IDI5O1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGRheXM7XHJcbn07XHJcbiIsImltcG9ydCB7IHJlbW92ZUNsYXNzIH0gZnJvbSAnLi9yZW1vdmVDbGFzcyc7XHJcbmltcG9ydCB7IHNldENsYXNzTmFtZSB9IGZyb20gJy4vc2V0Q2xhc3NOYW1lJztcclxuaW1wb3J0IHsgZ2V0Q2xhc3NOYW1lIH0gZnJvbSAnLi9nZXRDbGFzc05hbWUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGFkZENsYXNzID0gKGVsLCAuLi5jbGFzc05hbWVzKSA9PiB7XHJcbiAgY29uc3QgbmFtZSA9IGNsYXNzTmFtZXM7XHJcblxyXG4gIGlmICh0eXBlb2YgZWwuY2xhc3NMaXN0ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgbmFtZS5mb3JFYWNoKChjbHMpID0+IHtcclxuICAgICAgaWYgKGNscy50cmltKCkpIHtcclxuICAgICAgICBlbC5jbGFzc0xpc3QuYWRkKGNscyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZW1vdmVDbGFzcyhlbCwgbmFtZSk7XHJcbiAgICBjb25zdCBjbHMgPSBgJHtnZXRDbGFzc05hbWUoZWwpfSAke25hbWUuam9pbignICcpfWA7XHJcbiAgICBzZXRDbGFzc05hbWUoZWwsIGNscyk7XHJcbiAgfVxyXG59O1xyXG4iLCIvKiBnbG9iYWwgZG9jdW1lbnQgKi9cclxuXHJcbmNvbnN0IHsga2V5cyB9ID0gT2JqZWN0O1xyXG5cclxuLyoqXHJcbiAqIENyZWF0ZSBIVE1MRWxlbWVudCB3aXRoIGF0dHJpYnV0ZXNcclxuICogQHBhcmFtIG5hbWUge1N0cmluZ31cclxuICogQHBhcmFtIGF0dHJzIHtPYmplY3R9XHJcbiAqIEByZXR1cm5zIHtIVE1MRWxlbWVudH1cclxuICovXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVFbGVtZW50ID0gKG5hbWUsIGF0dHJzKSA9PiB7XHJcbiAgY29uc3QgcGFyYW1zICA9IGF0dHJzIHx8IHt9O1xyXG4gIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KG5hbWUpO1xyXG5cclxuICBrZXlzKHBhcmFtcykubWFwKChpKSA9PiBlbGVtZW50LnNldEF0dHJpYnV0ZShpLCBwYXJhbXNbaV0pKTtcclxuXHJcbiAgcmV0dXJuIGVsZW1lbnQ7XHJcbn07XHJcbiIsImV4cG9ydCBjb25zdCBkZXN0cm95RWxlbWVudCA9IChlbGVtZW50KSA9PiB7XHJcbiAgaWYgKGVsZW1lbnQucGFyZW50Tm9kZSAmJiBlbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQpIHtcclxuICAgIGVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtZW50KTtcclxuICB9XHJcbiAgcmV0dXJuIGVsZW1lbnQ7XHJcbn07XHJcbiIsImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQgfSBmcm9tICcuL2NyZWF0ZUVsZW1lbnQnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGVsZW1lbnRGcm9tU3RyaW5nID0gKHN0cmluZykgPT4ge1xyXG4gIGNvbnN0IGVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuXHJcbiAgZWxlbWVudC5pbm5lckhUTUwgPSBzdHJpbmc7XHJcblxyXG4gIHJldHVybiBlbGVtZW50LmNoaWxkcmVuWzBdO1xyXG59O1xyXG4iLCJleHBvcnQgY29uc3QgZmluZEJ5Q2xhc3NOYW1lID0gKGNvbnRleHQsIG5hbWUpID0+IGNvbnRleHQucXVlcnlTZWxlY3RvcihgLiR7bmFtZX1gKTtcclxuIiwiZXhwb3J0IGNvbnN0IGdldENsYXNzTmFtZSA9IChlbCkgPT4ge1xyXG4gIC8vIENhbid0IHVzZSBqdXN0IFNWR0FuaW1hdGVkU3RyaW5nIGhlcmUgc2luY2Ugbm9kZXMgd2l0aGluIGEgRnJhbWUgaW4gSUUgaGF2ZVxyXG4gIC8vIGNvbXBsZXRlbHkgc2VwYXJhdGVseSBTVkdBbmltYXRlZFN0cmluZyBiYXNlIGNsYXNzZXNcclxuICBpZiAoZWwuY2xhc3NOYW1lIGluc3RhbmNlb2YgZWwub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5TVkdBbmltYXRlZFN0cmluZykge1xyXG4gICAgcmV0dXJuIGVsLmNsYXNzTmFtZS5iYXNlVmFsO1xyXG4gIH1cclxuICByZXR1cm4gZWwuY2xhc3NOYW1lO1xyXG59O1xyXG4iLCJpbXBvcnQgeyB0cmF2ZXJzZVRvUGFyZW50V2l0aEF0dHIgfSBmcm9tICcuL3RyYXZlcnNlVG9QYXJlbnRXaXRoQXR0cic7XHJcblxyXG4vKipcclxuICogRmluZCBIVE1MRWxlbWVudCBhdHRyaWJ1dGUsIGluIHRoZSBkb20tdHJlZSwgYnViYmxlcyB1cFxyXG4gKiBAcGFyYW0gZWwge0hUTUxFbGVtZW50fVxyXG4gKiBAcGFyYW0gYXR0clxyXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGdldFBhcmVudEF0dHJpYnV0ZSA9IChlbCwgYXR0cikgPT4gdHJhdmVyc2VUb1BhcmVudFdpdGhBdHRyKGVsLCBhdHRyKS52YWx1ZTtcclxuIiwiaW1wb3J0IHsgZ2V0Q2xhc3NOYW1lIH0gZnJvbSAnLi9nZXRDbGFzc05hbWUnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGhhc0NsYXNzID0gKGVsLCBuYW1lKSA9PiB7XHJcbiAgaWYgKHR5cGVvZiBlbC5jbGFzc0xpc3QgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICByZXR1cm4gZWwuY2xhc3NMaXN0LmNvbnRhaW5zKG5hbWUpO1xyXG4gIH1cclxuICBjb25zdCBjbGFzc05hbWUgPSBnZXRDbGFzc05hbWUoZWwpO1xyXG4gIHJldHVybiBuZXcgUmVnRXhwKGAoXnwgKSR7bmFtZX0oIHwkKWAsICdnaScpLnRlc3QoY2xhc3NOYW1lKTtcclxufTtcclxuIiwiZXhwb3J0ICogZnJvbSAnLi9hZGRDbGFzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRlRWxlbWVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGVzdHJveUVsZW1lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2VsZW1lbnRGcm9tU3RyaW5nJztcclxuZXhwb3J0ICogZnJvbSAnLi9maW5kQnlDbGFzc05hbWUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2dldENsYXNzTmFtZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZ2V0UGFyZW50QXR0cmlidXRlJztcclxuZXhwb3J0ICogZnJvbSAnLi9oYXNDbGFzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaXNJbnNpZGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3JlbW92ZUNsYXNzJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXRDbGFzc05hbWUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RyYXZlcnNlVG9QYXJlbnRXaXRoQXR0cic7XHJcbiIsImltcG9ydCB7IGlzIH0gZnJvbSAnLi4vaXMnO1xyXG5cclxuLyoqXHJcbiAqIENoZWNrIGlmIHNvbWUgSFRNTEVsZW1lbnQgaXMgaW5zaWRlIGFub3RoZXIgb25lXHJcbiAqIEBwYXJhbSBjaGlsZCB7SFRNTEVsZW1lbnR9XHJcbiAqIEBwYXJhbSBwYXJlbnQge0hUTUxFbGVtZW50fVxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICovXHJcbmV4cG9ydCBjb25zdCBpc0luc2lkZSA9IChjaGlsZCwgcGFyZW50KSA9PiB7XHJcbiAgbGV0IGN1cnJlbnQgPSBjaGlsZDtcclxuXHJcbiAgd2hpbGUgKGN1cnJlbnQgIT09IHBhcmVudCkge1xyXG4gICAgaWYgKCFpcyhjdXJyZW50KSB8fCBjdXJyZW50LnRhZ05hbWUgPT09ICdCT0RZJyB8fCBjdXJyZW50LnRhZ05hbWUgPT09ICdIVE1MJykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnROb2RlO1xyXG4gIH1cclxuICByZXR1cm4gdHJ1ZTtcclxufTtcclxuIiwiaW1wb3J0IHsgZ2V0Q2xhc3NOYW1lIH0gZnJvbSAnLi9nZXRDbGFzc05hbWUnO1xyXG5pbXBvcnQgeyBzZXRDbGFzc05hbWUgfSBmcm9tICcuL3NldENsYXNzTmFtZSc7XHJcblxyXG5leHBvcnQgY29uc3QgcmVtb3ZlQ2xhc3MgPSAoZWwsIC4uLmNsYXNzTmFtZXMpID0+IHtcclxuICBjb25zdCBuYW1lID0gY2xhc3NOYW1lcztcclxuXHJcbiAgaWYgKHR5cGVvZiBlbC5jbGFzc0xpc3QgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICBuYW1lLmZvckVhY2goKGNscykgPT4ge1xyXG4gICAgICBpZiAoY2xzLnRyaW0oKSkge1xyXG4gICAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoY2xzKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnN0IHJlZ2V4ICAgICA9IG5ldyBSZWdFeHAoYChefCApJHtuYW1lLmpvaW4oJ3wnKX0oIHwkKWAsICdnaScpO1xyXG4gICAgY29uc3QgY2xhc3NOYW1lID0gZ2V0Q2xhc3NOYW1lKGVsKS5yZXBsYWNlKHJlZ2V4LCAnICcpO1xyXG4gICAgc2V0Q2xhc3NOYW1lKGVsLCBjbGFzc05hbWUpO1xyXG4gIH1cclxufTtcclxuIiwiZXhwb3J0IGNvbnN0IHNldENsYXNzTmFtZSA9IChlbCwgY2xhc3NOYW1lKSA9PiB7XHJcbiAgZWwuc2V0QXR0cmlidXRlKCdjbGFzcycsIGNsYXNzTmFtZSk7XHJcbn07XHJcbiIsImltcG9ydCB7IGlzIH0gZnJvbSAnLi4vaXMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IHRyYXZlcnNlVG9QYXJlbnRXaXRoQXR0ciA9IChlbGVtZW50LCBhdHRyaWJ1dGUpID0+IHtcclxuICBsZXQgcGFyZW50ID0gZWxlbWVudDtcclxuICBsZXQgdmFsdWUgID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlKTtcclxuICB3aGlsZSAoIWlzKHZhbHVlKSkge1xyXG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudE5vZGU7XHJcbiAgICBpZiAocGFyZW50ICYmIHR5cGVvZiBwYXJlbnQuZ2V0QXR0cmlidXRlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHZhbHVlID0gcGFyZW50LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcGFyZW50ID0gbnVsbDtcclxuICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiB7XHJcbiAgICB2YWx1ZSxcclxuICAgIHBhcmVudFxyXG4gIH07XHJcbn07XHJcbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIEVtaXR0ZXIge1xuICBvbihldmVudCwgbGlzdGVuZXIpIHtcbiAgICB0aGlzLmV2ZW50cyAgICAgICAgPSB0aGlzLmV2ZW50cyB8fCB7fTtcbiAgICB0aGlzLmV2ZW50c1tldmVudF0gPSB0aGlzLmV2ZW50c1tldmVudF0gfHwgW107XG4gICAgdGhpcy5ldmVudHNbZXZlbnRdLnB1c2gobGlzdGVuZXIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgb25jZShldmVudCwgbGlzdGVuZXIpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgIGZ1bmN0aW9uIGZuKC4uLmFyZ3MpIHtcbiAgICAgIHNlbGYub2ZmKGV2ZW50LCBmbik7XG4gICAgICBsaXN0ZW5lci5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9XG5cbiAgICBmbi5saXN0ZW5lciA9IGxpc3RlbmVyO1xuICAgIHRoaXMub24oZXZlbnQsIGZuKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG9mZihldmVudCwgbGlzdGVuZXIpIHtcbiAgICBsZXQgbGlzdGVuZXJzO1xuXG4gICAgaWYgKHRoaXMuZXZlbnRzICYmIHRoaXMuZXZlbnRzW2V2ZW50XSkge1xuICAgICAgbGlzdGVuZXJzID0gdGhpcy5ldmVudHNbZXZlbnRdO1xuXG4gICAgICBsaXN0ZW5lcnMuZm9yRWFjaCgoZm4sIGkpID0+IHtcbiAgICAgICAgaWYgKGZuID09PSBsaXN0ZW5lciB8fCBmbi5saXN0ZW5lciA9PT0gbGlzdGVuZXIpIHtcbiAgICAgICAgICBsaXN0ZW5lcnMuc3BsaWNlKGksIDEpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGxpc3RlbmVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZGVsZXRlIHRoaXMuZXZlbnRzW2V2ZW50XTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBlbWl0KGV2ZW50LCAuLi5hcmdzKSB7XG4gICAgbGV0IGxpc3RlbmVycztcblxuICAgIGlmICh0aGlzLmV2ZW50cyAmJiB0aGlzLmV2ZW50c1tldmVudF0pIHtcbiAgICAgIGxpc3RlbmVycyA9IHRoaXMuZXZlbnRzW2V2ZW50XTtcblxuICAgICAgbGlzdGVuZXJzID0gbGlzdGVuZXJzLnNsaWNlKDApO1xuICAgICAgbGlzdGVuZXJzLmZvckVhY2goKGZuKSA9PiBmbi5hcHBseSh0aGlzLCBhcmdzKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG4iLCJleHBvcnQgKiBmcm9tICcuL2lzRnVuY3Rpb24nO1xyXG4iLCJleHBvcnQgY29uc3QgaXNGdW5jdGlvbiA9IChmKSA9PiB7XHJcbiAgcmV0dXJuIHR5cGVvZiBmID09PSAnZnVuY3Rpb24nO1xyXG59O1xyXG4iLCJleHBvcnQgKiBmcm9tICcuL2FycmF5JztcclxuZXhwb3J0ICogZnJvbSAnLi9jdXJyZW5jeSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZG9tJztcclxuZXhwb3J0ICogZnJvbSAnLi9mdW5jdGlvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbWF0aCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vb2JqZWN0JztcclxuZXhwb3J0ICogZnJvbSAnLi9zdHJpbmcnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9pcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYWpheCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdmFsaWRhdGUnO1xyXG5cclxuaW1wb3J0IEVtaXR0ZXIgZnJvbSAnLi9lbWl0dGVyJztcclxuZXhwb3J0IHsgRW1pdHRlciB9O1xyXG4iLCJpbXBvcnQgeyBpc05hTlBvbHlmaWxsIH0gZnJvbSAnLi9tYXRoL2lzTmFOUG9seWZpbGwnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzID0gKG8pID0+IHtcclxuICByZXR1cm4gdHlwZW9mIG8gIT09ICd1bmRlZmluZWQnICYmIG8gIT09IG51bGwgJiYgIWlzTmFOUG9seWZpbGwobyk7XHJcbn07XHJcbiIsImV4cG9ydCAqIGZyb20gJy4vaXNOYU5Qb2x5ZmlsbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaXNOdW1lcmljJztcclxuIiwiZXhwb3J0IGNvbnN0IGlzTmFOUG9seWZpbGwgPSAodmFsdWUpID0+IHtcclxuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBOdW1iZXIuaXNOYU4odmFsdWUpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBpc05hTlBvbHlmaWxsIH0gZnJvbSAnLi9pc05hTlBvbHlmaWxsJztcclxuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJy4uL2FycmF5L2lzQXJyYXknO1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzTnVtZXJpYyA9IChuKSA9PiB7XHJcbiAgcmV0dXJuICFpc0FycmF5KG4pICYmICFpc05hTlBvbHlmaWxsKHBhcnNlSW50KG4sIDEwKSk7XHJcbn07XHJcbiIsImltcG9ydCB7IHRyYXZlcnNlT2JqIH0gZnJvbSAnLi90cmF2ZXJzZU9iaic7XHJcbmltcG9ydCB7IGRhc2hUb0NhcGl0YWwgfSBmcm9tICcuLi9zdHJpbmcvZGFzaFRvQ2FwaXRhbCc7XHJcbmltcG9ydCB7IHVuZGVyc2NvcmVUb0NhcGl0YWwgfSBmcm9tICcuLi9zdHJpbmcvdW5kZXJzY29yZVRvQ2FwaXRhbCc7XHJcblxyXG5leHBvcnQgY29uc3QgY2FwaXRhbGl6ZU9iaiA9IChvYmplY3QpID0+IHtcclxuICBvYmplY3QgPSB0cmF2ZXJzZU9iaihvYmplY3QsIGRhc2hUb0NhcGl0YWwpO1xyXG4gIG9iamVjdCA9IHRyYXZlcnNlT2JqKG9iamVjdCwgdW5kZXJzY29yZVRvQ2FwaXRhbCk7XHJcblxyXG4gIHJldHVybiBvYmplY3Q7XHJcbn07XHJcbiIsImV4cG9ydCAqIGZyb20gJy4vY2FwaXRhbGl6ZU9iaic7XHJcbmV4cG9ydCAqIGZyb20gJy4vaXNPYmplY3QnO1xyXG5leHBvcnQgKiBmcm9tICcuL21lcmdlJztcclxuZXhwb3J0ICogZnJvbSAnLi9waWNrJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJpYWxpemUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RyYXZlcnNlT2JqJztcclxuIiwiY29uc3QgeyBwcm90b3R5cGU6IHsgdG9TdHJpbmcgfSB9ID0gT2JqZWN0O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzT2JqZWN0ID0gKG8pID0+IHtcclxuICByZXR1cm4gdG9TdHJpbmcuY2FsbChvKSA9PT0gJ1tvYmplY3QgT2JqZWN0XSc7XHJcbn07XHJcbiIsImltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSAnLi9pc09iamVjdCc7XHJcblxyXG5jb25zdCB7IGtleXMgfSA9IE9iamVjdDtcclxuXHJcbi8qKlxyXG4gKiBNZXJnZSB0d28gb2JqZWN0c1xyXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqMVxyXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqMlxyXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGlzRGVlcFxyXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IG1lcmdlID0gKG9iajEsIG9iajIsIGlzRGVlcCkgPT4ge1xyXG4gIGNvbnN0IG9iajMgPSB7fTtcclxuICBrZXlzKG9iajEpLmZvckVhY2goKGkpID0+IHtcclxuICAgIGlmIChpc0RlZXAgJiYgaXNPYmplY3Qob2JqMVtpXSkpIHtcclxuICAgICAgb2JqM1tpXSA9IG1lcmdlKG9iajFbaV0sIHt9LCB0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG9iajNbaV0gPSBvYmoxW2ldO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBrZXlzKG9iajIpLmZvckVhY2goKGkpID0+IHtcclxuICAgIGlmIChpc0RlZXAgJiYgaXNPYmplY3Qob2JqMltpXSkpIHtcclxuICAgICAgb2JqM1tpXSA9IG1lcmdlKG9iajNbaV0gfHwge30sIG9iajJbaV0sIHRydWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgb2JqM1tpXSA9IG9iajJbaV07XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIG9iajM7XHJcbn07XHJcbiIsIi8qKlxyXG4gKiBQaWNrIHByb3BlcnRpZXMgZnJvbSBvYmplY3RcclxuICogbGV0IGEgPSB7IG5hbWU6IFwiUm9tYW5cIiwgcGhvbmU6IDEyMywgY291bnRyeTogXCJhbnlcIiB9O1xyXG4gKiBwaWNrKGEsICduYW1lJywgJ2NvdW50cnknKVxyXG4gKiA9PiB7IG5hbWU6IFwiUm9tYW5cIiwgY291bnRyeTogXCJhbnlcIiB9XHJcbiAqXHJcbiAqIEBwYXJhbSBvYmoge09iamVjdH1cclxuICogQHBhcmFtIGFyZ3Mge1N0cmluZ31cclxuICogQHJldHVybnMge09iamVjdH1cclxuICovXHJcbmV4cG9ydCBjb25zdCBwaWNrID0gKG9iaiwgLi4uYXJncykgPT4gYXJncy5yZWR1Y2UoKGksIHQpID0+IHtcclxuICBjb25zdCBwaWNrZWRPYmogPSBpO1xyXG5cclxuICBwaWNrZWRPYmpbdF0gPSBvYmpbdF07XHJcblxyXG4gIHJldHVybiBwaWNrZWRPYmo7XHJcbn0sIHt9KTtcclxuIiwiY29uc3QgeyBrZXlzIH0gPSBPYmplY3Q7XHJcblxyXG4vLyBzZXJpYWxpemUgcXVlcnkgcGFyYW1zIHdpdGggYWRkaXRpb25hbCB0cmFuc2Zvcm0gZnVuY3Rpb25cclxuZXhwb3J0IGNvbnN0IHNlcmlhbGl6ZSA9IChvYmosIHRyYW5zZm9ybSkgPT4ge1xyXG4gIGNvbnN0IGNvbXBvbmVudCA9IGtleXMob2JqKS5tYXAoKHApID0+IGAke3RyYW5zZm9ybShlbmNvZGVVUklDb21wb25lbnQocCkpfT0ke2VuY29kZVVSSUNvbXBvbmVudChvYmpbcF0pfWApO1xyXG4gIHJldHVybiBjb21wb25lbnQuam9pbignJicpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi4vYXJyYXkvaXNBcnJheSc7XHJcbmltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSAnLi9pc09iamVjdCc7XHJcblxyXG5jb25zdCB7IGtleXMgfSA9IE9iamVjdDtcclxuXHJcbi8qKlxyXG4gKiBSZWN1cnNpdmVseSB0cmF2ZXJzZSBvYmplY3Qgb3duIHByb3BlcnRpZXMgYW5kIGFwcGx5IHRyYW5zZm9ybSBmdW5jdGlvbiBvbiBrZXlzIG9yIHZhbHVlc1xyXG4gKiBsZXQgYSA9IHsgbGFzdE5hbWU6IFwiUm9tYW5cIiwgZmlyc3ROYW1lOiBcIktodWR5YWtvdlwiIH1cclxuICogdHJhdmVyc2VPYmooYSwgdG9VbmRlcnNjb3JlKVxyXG4gKiA9PiB7IGxhc3RfbmFtZTogXCJSb21hblwiLCBmaXJzdF9uYW1lOiBcIktodWR5YWtvdlwiIH1cclxuICpcclxuICogQHBhcmFtIG9iaiB7T2JqZWN0fVxyXG4gKiBAcGFyYW0gZm5LZXkge0Z1bmN0aW9uIHwgQm9vbGVhbn1cclxuICogQHBhcmFtIGZuVmFsdWUge0Z1bmN0aW9uIHwgQm9vbGVhbn1cclxuICovXHJcbmV4cG9ydCBjb25zdCB0cmF2ZXJzZU9iaiA9IChvYmosIGZuS2V5ID0gZmFsc2UsIGZuVmFsdWUgPSBmYWxzZSkgPT4ge1xyXG4gIGlmICghaXNPYmplY3Qob2JqKSkge1xyXG4gICAgcmV0dXJuIG9iajtcclxuICB9XHJcblxyXG4gIHJldHVybiBrZXlzKG9iaikucmVkdWNlKChjdXJyLCBuZXh0KSA9PiB7XHJcbiAgICBsZXQgbmV4dFByb3BlcnR5ID0gb2JqW25leHRdO1xyXG4gICAgY29uc3QgbyAgICAgICAgICA9IGN1cnI7XHJcblxyXG4gICAgaWYgKGlzQXJyYXkobmV4dFByb3BlcnR5KSkge1xyXG4gICAgICBuZXh0UHJvcGVydHkgPSBuZXh0UHJvcGVydHkubWFwKChpKSA9PiB0cmF2ZXJzZU9iaihpLCBmbktleSwgZm5WYWx1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmblZhbHVlKSB7XHJcbiAgICAgIG9bZm5LZXkgPyBmbktleShuZXh0KSA6IG5leHRdID0gaXNPYmplY3QobmV4dFByb3BlcnR5KVxyXG4gICAgICAgID8gdHJhdmVyc2VPYmoobmV4dFByb3BlcnR5LCBmbktleSwgZm5WYWx1ZSkgOiBmblZhbHVlKG5leHRQcm9wZXJ0eSwgbmV4dCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBvW2ZuS2V5ID8gZm5LZXkobmV4dCkgOiBuZXh0XSA9IGlzT2JqZWN0KG5leHRQcm9wZXJ0eSlcclxuICAgICAgICA/IHRyYXZlcnNlT2JqKG5leHRQcm9wZXJ0eSwgZm5LZXkpIDogbmV4dFByb3BlcnR5O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvO1xyXG4gIH0sIHt9KTtcclxufTtcclxuIiwiZXhwb3J0IGNvbnN0IGRhc2hUb0NhcGl0YWwgPSAoc3RyKSA9PiBzdHIucmVwbGFjZSgvLShbYS16XSkvaWcsIChzLCBpKSA9PiBpLnRvVXBwZXJDYXNlKCkpO1xyXG4iLCJleHBvcnQgKiBmcm9tICcuL2Rhc2hUb0NhcGl0YWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2lzU3RyaW5nJztcclxuZXhwb3J0ICogZnJvbSAnLi90b1VuZGVyc2NvcmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3VuZGVyc2NvcmVUb0NhcGl0YWwnO1xyXG4iLCJleHBvcnQgY29uc3QgaXNTdHJpbmcgPSAoZikgPT4ge1xyXG4gIHJldHVybiB0eXBlb2YgZiA9PT0gJ3N0cmluZyc7XHJcbn07XHJcbiIsImV4cG9ydCBjb25zdCB0b1VuZGVyc2NvcmUgPSAoc3RyKSA9PiBzdHIucmVwbGFjZSgvKFtBLVpdKS9nLCAocykgPT4gYF8ke3MudG9Mb3dlckNhc2UoKX1gKTtcclxuIiwiZXhwb3J0IGNvbnN0IHVuZGVyc2NvcmVUb0NhcGl0YWwgPSAoc3RyKSA9PiBzdHIucmVwbGFjZSgvXyhbYS16XSkvaWcsIChzLCBpKSA9PiBpLnRvVXBwZXJDYXNlKCkpO1xyXG4iLCJpbXBvcnQgeyBpcyB9IGZyb20gJy4vaXMnO1xyXG5pbXBvcnQgeyBpc051bWVyaWMgfSBmcm9tICcuL21hdGgvaXNOdW1lcmljJztcclxuXHJcbi8vIFZhbGlkYXRpb25zXHJcbmV4cG9ydCBjb25zdCB2YWxpZGF0ZSA9IHtcclxuICBpc0JsYW5rKG8pIHtcclxuICAgIHJldHVybiBpcyhvKTtcclxuICB9LFxyXG4gIGlzTnVtZXJpYyhvKSB7XHJcbiAgICByZXR1cm4gaXNOdW1lcmljKG8pO1xyXG4gIH0sXHJcbiAgaXNFbWFpbChvKSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICdzdHJpbmcnICYmIGlzKG8ubWF0Y2goL15bXkBcXHNdK0AoW15AXFxzXStcXC4pK1teQFxcV10rJC8pKTtcclxuICB9LFxyXG4gIGlzQm91bmRlZEJ5KG8sIG1pbiwgbWF4KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIG8gPT09ICdudW1iZXInICYmIG8gPj0gbWluICYmIG8gPD0gbWF4O1xyXG4gIH1cclxufTtcclxuIiwiaW1wb3J0IHtcbiAgaXMsIG1lcmdlLCBtb250aExlbmd0aCwgaXNTdHJpbmdcbn0gZnJvbSAnd2lkZ2V0LXV0aWxzJztcblxuLyoqXG4gKiAgcGxlYXNlIHJlZmVyIHRvIC90ZXN0cy91bml0L2NhbGVuZGFyVHJlZS5zcGVjcy5qcyBmb3IgdXNhZ2VcbiAqICBUT0RPIGRvY3MsIG1lcmdlIGF2YWlsYWJpbGl0eSB3aXRoIGNhbGVuZGFyIHRyZWUsIHVzZSBvbmUgZGF0YS1zdHJ1Y3R1cmVcbiAqICBUT0RPIG1pblN0YXkgKyBhdmFpbGFiaWxpdHkgbWFwIGNvbnNpZGVyYXRpb25zIGZvIGRpc2FibGluZyBkYXRlc1xuICovXG5jb25zdCBnZW5BcnJheVJhbmdlID0gKGEsIGIpID0+IHtcbiAgY29uc3QgbGlzdCA9IFtdO1xuICBmb3IgKGxldCBpID0gYTsgaSA8PSBiOyBpICs9IDEpIHtcbiAgICBsaXN0LnB1c2goaSk7XG4gIH1cbiAgcmV0dXJuIGxpc3Q7XG59O1xuXG5jb25zdCBwYXJzZUlTT1N0cmluZyA9IChzdHIgLyogeXl5eS1tbS1kZCAqLykgPT4ge1xuICBjb25zdCBhcnJTdHIgPSBzdHIuc3BsaXQoJy0nKS5tYXAocGFyc2VGbG9hdCk7XG4gIHJldHVybiB7XG4gICAgeWVhcjogYXJyU3RyWzBdLFxuICAgIG1vbnRoOiBhcnJTdHJbMV0gLSAxLFxuICAgIGRhdGU6IGFyclN0clsyXVxuICB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2FsZW5kYXJUcmVlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHZhbGlkYXRlQ2VsbFxuICAgKiBAcGFyYW0ge09iamVjdH0gdHJlZVxuICAgKi9cbiAgY29uc3RydWN0b3IodmFsaWRhdGVDZWxsLCB0cmVlKSB7XG4gICAgdGhpcy52YWxpZGF0ZUNlbGwgPSB2YWxpZGF0ZUNlbGw7XG4gICAgdGhpcy50cmVlICAgICAgICAgPSB0cmVlO1xuICB9XG5cbiAgYWRkVHJlZShvYmopIHtcbiAgICBpZiAoIXRoaXMudHJlZSkge1xuICAgICAgdGhpcy50cmVlID0gb2JqO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyZWUgPSBtZXJnZSh0aGlzLnRyZWUgfHwge30sIG9iaiwgdHJ1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIHNlbGVjdCByYW5nZSBmcm9tIHRoZSB0cmVlLCByZXR1cm5zIGFycmF5IGl0ZW1zXG4gICAqIHN0YXJ0IGRhdGUgaXMgQUxXQVlTIDwgdGhlbiBlbmQgZGF0ZSAsIGFzIHdlIGFyZSBzZWxlY3RpbmcgdGltZSByYW5nZSBpbiBkYXlzLlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5fSBzdGFydCBlLmcuIFsyMDE2LCAwLCAxXVxuICAgKiBAcGFyYW0ge0FycmF5fSBlbmQgWzIwMTYsIDEsIDNdXG4gICAqIEByZXR1cm5zIHt7cmFuZ2U6IEFycmF5LCBpc1ZhbGlkOiB7Qm9vbGVhbn19fVxuICAgKi9cbiAgc2VsZWN0UmFuZ2Uoc3RhcnQsIGVuZCkge1xuICAgIGxldCByYW5nZSA9IFtdO1xuXG4gICAgY29uc3QgYSA9IHN0YXJ0LnNsaWNlKCk7XG5cbiAgICAvLyBpZiB5ZWFyIGFuZCBtb250aCB0aGUgc2FtZSwganVzdCBzbGljZSB0aGUgY3VycmVudCBtb250aFxuICAgIGlmIChhWzBdID09PSBlbmRbMF0gJiYgYVsxXSA9PT0gZW5kWzFdKSB7XG4gICAgICByYW5nZSA9IHRoaXMuc2VsZWN0RGF5c0luTW9udGgoYVswXSwgYVsxXSwgYVsyXSwgZW5kWzJdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbW9udGhEYXlzID0gdGhpcy50cmVlW2FbMF1dW2FbMV1dO1xuXG4gICAgICAvLyBzbGljZSB0aGUgcGllY2Ugb2YgY3VycmVudCBtb250aERheXMgZnJvbSBzdGFydCBvZiByYW5nZSB0aWxsIGVuZCBvZiB0aGUgbW9udGhEYXlzXG4gICAgICByYW5nZSA9IHJhbmdlLmNvbmNhdCh0aGlzLnNlbGVjdERheXNJbk1vbnRoKGFbMF0sIGFbMV0sIGFbMl0sIG1vbnRoRGF5cy5sZW5ndGgpKTtcblxuICAgICAgLy8gc2hpZnQgc3RhcnQgbW9udGgsIGIvYyB3ZSBhbHJlYWR5IHNlbGVjdGVkIGRheXMgaW4gaXRcbiAgICAgIGFbMV0gKz0gMTtcblxuICAgICAgLy8gaWYgZW5kIGRhdGUgeWVhciA+IHN0YXJ0IGRhdGVcbiAgICAgIC8vIHNlbGVjdCBldmVyeXRoaW5nIGluIHN0YXJ0IHllYXIgdGlsbCB0aGUgZW5kIG9mIHN0YXJ0IHllYXJcbiAgICAgIC8vIGUuZy4gc3RhcnQgaXMgMjAgT2N0b2Jlciwgc28gc2VsZWN0IE5vdmVtYmVyIGFuZCBEZWNlbWJlciwgT2N0b2JlciB3YXMgc2VsZWN0ZWQgYWJvdmVcbiAgICAgIGlmIChlbmRbMF0gPiBzdGFydFswXSkge1xuICAgICAgICByYW5nZSA9IHJhbmdlLmNvbmNhdCh0aGlzLnNlbGVjdE1vbnRoc0luWWVhcihhWzBdLCBhWzFdLCAxMSkpO1xuICAgICAgICAvLyBhbmQgc2V0IHN0YXJ0IHllYXIgdG8gZW5kIHllYXJcbiAgICAgICAgLy8gbW9udGggdG8gMCAoSmFudWFyeSlcbiAgICAgICAgW2FbMF0sIGFbMV1dID0gW2VuZFswXSwgMF07XG4gICAgICB9XG5cbiAgICAgIC8vIG5vdyB3ZSBhcmUgYXQgdGhlIHNhbWUgeWVhciBhbmQgaGF2ZSB0aGUgY2FzZSBpZiBlbmQgbW9udGggPiBzdGFydCBtb250aFxuICAgICAgLy8gdGhlbiBzZWxlY3QgZXZlcnl0aGluZyBiZXR3ZWVuIHRob3NlIG1vbnRoc1xuICAgICAgaWYgKGVuZFsxXSA+IGFbMV0pIHtcbiAgICAgICAgLy8gZS5nLiBzdGFydCAyMCBPY3RvYmVyIGVuZCAyMCBEZWNlbWJlciwgc2VsZWN0IGZ1bGwgTm92ZW1iZXJcbiAgICAgICAgcmFuZ2UgPSByYW5nZS5jb25jYXQodGhpcy5zZWxlY3RNb250aHNJblllYXIoYVswXSwgYVsxXSwgZW5kWzFdIC0gMSkpO1xuICAgICAgICBhWzFdID0gZW5kO1xuICAgICAgfVxuXG4gICAgICAvLyB0aGUgbWlzc2luZyBwYXJ0IGlzIGRheXMgaW4gZW5kIHNlbGVjdGlvbiBtb250aFxuICAgICAgcmFuZ2UgPSByYW5nZS5jb25jYXQodGhpcy5zZWxlY3REYXlzSW5Nb250aChlbmRbMF0sIGVuZFsxXSwgMSwgZW5kWzJdKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJhbmdlLFxuICAgICAgaXNWYWxpZDogdGhpcy5pc1JhbmdlVmFsaWQocmFuZ2UpXG4gICAgfTtcbiAgfVxuXG4gIHNlbGVjdE1vbnRoc0luWWVhcih5ZWFyLCBzdGFydCwgZW5kKSB7XG4gICAgbGV0IHNlbGVjdGlvbiAgICA9IFtdO1xuICAgIGNvbnN0IG1vbnRoUmFuZ2UgPSBnZW5BcnJheVJhbmdlKHN0YXJ0LCBlbmQpO1xuXG4gICAgbW9udGhSYW5nZS5mb3JFYWNoKChtb250aCkgPT4ge1xuICAgICAgY29uc3QgeSA9IHRoaXMudHJlZVt5ZWFyXTtcbiAgICAgIGNvbnN0IG0gPSBpcyh5KSA/IHRoaXMudHJlZVt5ZWFyXVttb250aF0gOiBudWxsO1xuXG4gICAgICBpZiAoeSAmJiBtKSB7XG4gICAgICAgIHNlbGVjdGlvbiA9IHNlbGVjdGlvbi5jb25jYXQodGhpcy5zZWxlY3REYXlzSW5Nb250aCh5ZWFyLCBtb250aCwgMSwgbS5sZW5ndGgpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzZWxlY3Rpb247XG4gIH1cblxuICBzZWxlY3REYXlzSW5Nb250aCh5ZWFyLCBtb250aCwgc3RhcnREYXksIGVuZERheSkge1xuICAgIGNvbnN0IHkgPSB0aGlzLnRyZWVbeWVhcl07XG4gICAgY29uc3QgbSA9IGlzKHkpID8gdGhpcy50cmVlW3llYXJdW21vbnRoXSA6IG51bGw7XG5cbiAgICBpZiAoeSAmJiBtKSB7XG4gICAgICByZXR1cm4gbS5zbGljZSgoc3RhcnREYXkgLSAxKSwgZW5kRGF5KTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgc2VsZWN0RGF5KHllYXIsIG1vbnRoLCBkYXkpIHtcbiAgICBjb25zdCB5ID0gdGhpcy50cmVlW3llYXJdO1xuICAgIGNvbnN0IG0gPSBpcyh5KSA/IHRoaXMudHJlZVt5ZWFyXVttb250aF0gOiBudWxsO1xuXG4gICAgaWYgKHkgJiYgbSkge1xuICAgICAgcmV0dXJuIG1bZGF5IC0gMV07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaXNSYW5nZVZhbGlkKHJhbmdlLCBmbikge1xuICAgIGNvbnN0IHZhbGlkYXRlQ2VsbCA9IHRoaXMudmFsaWRhdGVDZWxsIHx8IGZuO1xuICAgIGxldCBpc1ZhbGlkICAgICAgICA9IHRydWU7XG5cbiAgICBpZiAodHlwZW9mIHZhbGlkYXRlQ2VsbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgZmlsdGVyVmFsaWRzID0gcmFuZ2UuZmlsdGVyKChjZWxsKSA9PiB0aGlzLnZhbGlkYXRlQ2VsbChjZWxsKSk7XG4gICAgICBpc1ZhbGlkID0gZmlsdGVyVmFsaWRzLmxlbmd0aCA9PSByYW5nZS5sZW5ndGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH1cblxuICByZXBsYWNlTWFwcyhtYXAsIHVwZGF0ZWRBdCkge1xuICAgIHRoaXMubWFwID0gQ2FsZW5kYXJUcmVlLm1hcHNUb1RyZWUobWFwLCB1cGRhdGVkQXQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcmVtb3ZlTWFwKCkge1xuICAgIHRoaXMubWFwID0ge307XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogIENyZWF0ZSBhIHRyZWUgc3RydWN0dXJlIGZyb20gbWFwc1xuICAgKiAgZm9yIG4tdGltZSBkYXkgYWNjZXNzLCBlLmcuIHRoaXMubWFwW3llYXJdW21vbnRoXVtkYXldLmlzQXZhaWxhYmxlO1xuICAgKiB7XG4gICAqICAgMjEwNjoge1xuICAgKiAgICAgIDE6IHtcbiAgICogICAgICAgIDE6ICxcbiAgICogICAgICAgIDI6ICxcbiAgICogICAgICAgIDM6XG4gICAqICAgICAgICAuLi5cbiAgICogICAgICB9XG4gICAqICAgICAgLi4uXG4gICAqICAgICAgMTI6IHtcbiAgICpcbiAgICogICAgICB9XG4gICAqICAgIH1cbiAgICogfVxuICAgKiBAcGFyYW0ge09iamVjdH0gbWFwc1xuICAgKiBAcGFyYW0ge1N0cmluZyB8IERhdGV9IG1hcFN0YXJ0QXRcbiAgICogQHJldHVybnMge09iamVjdH1cbiAgICovXG4gIHN0YXRpYyBtYXBzVG9UcmVlKG1hcHMsIG1hcFN0YXJ0QXQpIHtcbiAgICBpZiAoIShpc1N0cmluZyhtYXBzLmF2YWlsYWJpbGl0eSlcbiAgICAgIHx8IGlzU3RyaW5nKG1hcHMubmlnaHRseV9yYXRlcylcbiAgICAgIHx8IGlzU3RyaW5nKG1hcHMubWluaW11bV9zdGF5cykpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBhdmFpbCAgPSBtYXBzLmF2YWlsYWJpbGl0eS5zcGxpdCgnJykubWFwKHBhcnNlRmxvYXQpO1xuICAgIGNvbnN0IHJhdGVzICA9IG1hcHMubmlnaHRseV9yYXRlcy5zcGxpdCgnLCcpLm1hcChwYXJzZUZsb2F0KTtcbiAgICBjb25zdCBtaW5NYXAgPSBtYXBzLm1pbmltdW1fc3RheXMuc3BsaXQoJywnKS5tYXAocGFyc2VGbG9hdCk7XG4gICAgbGV0IGRheSAgICAgID0gMTtcblxuICAgIGxldCB7XG4gICAgICB5ZWFyLFxuICAgICAgbW9udGgsXG4gICAgICBkYXRlOiBkYXlTaGlmdFxuICAgIH0gPSBwYXJzZUlTT1N0cmluZyhtYXBTdGFydEF0KTtcblxuICAgIC8vIHRyaWNrIHRvIGFkZCBleHRyYSB1bmF2YWlsYWJsZSBkYXRlIGZvciBwcm9wZXIgY2FsY3VsYXRpb25zIG9mIGNoZWNrLW91dCBkYXRlc1xuICAgIGlmIChhdmFpbFthdmFpbC5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgYXZhaWwucHVzaCgxKTtcbiAgICB9XG5cbiAgICBsZXQgcHJldmlvdXNEYXRlID0ge307XG5cbiAgICByZXR1cm4gYXZhaWwucmVkdWNlKChjdXJyLCBzdGF0ZSwgaW5kZXgsIGFycikgPT4ge1xuICAgICAgY29uc3QgbGVuZ3RoICAgICAgICAgICA9IG1vbnRoTGVuZ3RoKHllYXIsIG1vbnRoKTtcbiAgICAgIGNvbnN0IHRyZWUgICAgICAgICAgICAgPSBjdXJyO1xuICAgICAgY29uc3QgbWluU3RheSAgICAgICAgICA9IG1pbk1hcFtpbmRleF07XG4gICAgICBjb25zdCByYXRlICAgICAgICAgICAgID0gcmF0ZXNbaW5kZXhdO1xuICAgICAgY29uc3QgaXNBdmFpbGFibGUgICAgICA9IHN0YXRlID09PSAwO1xuICAgICAgY29uc3QgcHJldkF2YWlsYWJsZSAgICA9IGFycltpbmRleCAtIDFdID09PSAwO1xuICAgICAgY29uc3QgaXNNb3JuaW5nQmxvY2tlZCA9IChpc0F2YWlsYWJsZSAmJiAhcHJldkF2YWlsYWJsZSkgPyB0cnVlIDogbnVsbDtcbiAgICAgIGNvbnN0IGlzQXZhaWxhYmxlT3V0ICAgPSAoaXNNb3JuaW5nQmxvY2tlZCkgPyB0cnVlIDogbnVsbDtcblxuICAgICAgaWYgKCF0cmVlW3llYXJdKSB7XG4gICAgICAgIHRyZWVbeWVhcl0gPSB7fTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0cmVlW3llYXJdW21vbnRoXSkge1xuICAgICAgICB0cmVlW3llYXJdW21vbnRoXSA9IHt9O1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF5U2hpZnQpIHtcbiAgICAgICAgZGF5ICAgICAgPSBkYXlTaGlmdDtcbiAgICAgICAgZGF5U2hpZnQgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBpZiBtaW5TdGF5ID4gYXZhaWxhYmxlIGRheXMgaW4gZnV0dXJlXG4gICAgICAvLyBjb25zaWRlciBjdXJyZW50IGRheSBhcyB1bmF2YWlsYWJsZSBhcyB3ZWxsXG4gICAgICAvLyBpZiAoaXNBdmFpbGFibGUgJiYgbWluU3RheSA+IDEpIHtcbiAgICAgIC8vICAgbGV0IGRheXNBdmFpbGFibGUgPSAxO1xuICAgICAgLy8gICBsZXQgaSAgICAgICAgICAgICA9IGluZGV4ICsgMTtcbiAgICAgIC8vICAgd2hpbGUgKGFycltpXSA9PT0gMCkge1xuICAgICAgLy8gICAgIGRheXNBdmFpbGFibGUgKz0gMTtcbiAgICAgIC8vICAgICBpICs9IDE7XG4gICAgICAvLyAgIH1cbiAgICAgIC8vXG4gICAgICAvLyAgIGlmIChtaW5TdGF5ID4gZGF5c0F2YWlsYWJsZSkge1xuICAgICAgLy8gICAgIGlzQXZhaWxhYmxlID0gZmFsc2U7XG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH1cblxuICAgICAgdHJlZVt5ZWFyXVttb250aF1bZGF5XSA9IHtcbiAgICAgICAgcmF0ZSxcbiAgICAgICAgbWluU3RheSxcbiAgICAgICAgaXNBdmFpbGFibGUsXG4gICAgICAgIGlzTW9ybmluZ0Jsb2NrZWQsXG4gICAgICAgIGlzQXZhaWxhYmxlT3V0XG4gICAgICB9O1xuXG4gICAgICB0cnkge1xuICAgICAgICBpZiAocHJldkF2YWlsYWJsZSAmJiAhaXNBdmFpbGFibGUpIHtcbiAgICAgICAgICB0cmVlW3ByZXZpb3VzRGF0ZS55ZWFyXVtwcmV2aW91c0RhdGUubW9udGhdW3ByZXZpb3VzRGF0ZS5kYXldLmlzQXZhaWxhYmxlT3V0ID0gdHJ1ZTtcbiAgICAgICAgICB0cmVlW3llYXJdW21vbnRoXVtkYXldLmlzTW9ybmluZ0Jsb2NrZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgIC8vIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIHByZXZpb3VzRGF0ZSA9IHtcbiAgICAgICAgeWVhcixcbiAgICAgICAgbW9udGgsXG4gICAgICAgIGRheVxuICAgICAgfTtcblxuICAgICAgaWYgKGRheSA8IGxlbmd0aCkge1xuICAgICAgICBkYXkgKz0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChtb250aCA+IDEwKSB7XG4gICAgICAgICAgbW9udGggPSAwO1xuICAgICAgICAgIHllYXIgKz0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtb250aCArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGRheSA9IDE7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cmVlO1xuICAgIH0sIHt9KTtcbiAgfVxuXG4gIGdldERheVByb3BlcnR5KHllYXIsIG1vbnRoLCBkYXksIHByb3BlcnR5KSB7XG4gICAgbGV0IHByb3A7XG5cbiAgICBpZiAodGhpcy5tYXApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHByb3AgPSB0aGlzLm1hcFt5ZWFyXVttb250aF1bZGF5XVtwcm9wZXJ0eV07XG4gICAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgLy8gY29udGludWUgcmVnYXJkbGVzcyBvZiBlcnJvclxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwcm9wO1xuICB9XG5cbiAgaXNEYXlEaXNhYmxlZCh5ZWFyLCBtb250aCwgZGF5KSB7XG4gICAgcmV0dXJuICF0aGlzLmdldERheVByb3BlcnR5KHllYXIsIG1vbnRoLCBkYXksICdpc0F2YWlsYWJsZScpO1xuICB9XG59XG4iLCIvKiBnbG9iYWwgTm9kZSwgZG9jdW1lbnQsIHdpbmRvdywgY29uc29sZSwgcmVxdWlyZSwgZmV0Y2ggKi9cbmltcG9ydCB7XG4gIGFkZENsYXNzLCByZW1vdmVDbGFzcywgaGFzQ2xhc3MsIGlzQXJyYXksIGlzT2JqZWN0LCBFbWl0dGVyLFxuICBtZXJnZSwgZWxlbWVudEZyb21TdHJpbmcsIHRyYXZlcnNlVG9QYXJlbnRXaXRoQXR0ciwgZGVzdHJveUVsZW1lbnQsIG1vbnRoTGVuZ3RoLCBpcywgaXNGdW5jdGlvbixcbiAgaXNOdW1lcmljLCB0cmF2ZXJzZU9iaiwgaXNJbnNpZGUsIGN1cnJlbmN5Rm9ybWF0dGVyXG59IGZyb20gJ3dpZGdldC11dGlscyc7XG5cbmltcG9ydCAqIGFzIHRlbXBsYXRlcyBmcm9tICcuL3RlbXBsYXRlcyc7XG5pbXBvcnQgQ2FsZW5kYXJUcmVlIGZyb20gJy4vY2FsZW5kYXItdHJlZSc7XG5pbXBvcnQgY29uZmlnIGZyb20gJy4vY29uZmlnJztcbmltcG9ydCBsb2NhbGVzIGZyb20gJy4vbG9jYWxlcyc7XG5cbmltcG9ydCB7IHN0cmZ0aW1lIH0gZnJvbSAnc3RydGltZSc7XG5cbmltcG9ydCB7XG4gIGRhdGVUb0lzbywgaXNMYXRlciwgaXNDdXJyZW50LCB2YWxpZGF0aW9uT2ZDZWxsLCB0Rm9ybWF0dGVyLCBkYXRlVG9BcnJheSwgbW9udGhEaWZmXG59IGZyb20gJy4vdXRpbHMnO1xuXG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzL2NhbGVuZGFyLnNjc3MnO1xuXG5pbXBvcnQgdXRpbHNTdHlsZXMgZnJvbSAnd2lkZ2V0LXV0aWxzL3NyYy9zdHlsZXMvcmVzZXQuc2Nzcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENhbGVuZGFyIGV4dGVuZHMgRW1pdHRlciB7XG4gIGNvbnN0cnVjdG9yKG9wdHMsIG1hcHMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubmFtZSAgICA9IGNvbmZpZy5uYW1lO1xuICAgIHRoaXMuVkVSU0lPTiA9IHJlcXVpcmUoJy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb247XG4gICAgdGhpcy5DU1NfUFJFRklYID0gY29uZmlnLmNzc1ByZWZpeDtcblxuICAgIGlmIChpc09iamVjdChvcHRzKSkge1xuICAgICAgaWYgKCFvcHRzLmVsKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyKCdlbCBtdXN0IGJlIEhUTUwgZWxlbWVudCcsICdlcnJvcicpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbmZpZ0RhdGFzZXQgPSBtZXJnZShjb25maWcsIG9wdHMuZWwuZGF0YXNldCk7XG4gICAgICB0aGlzLm9wdHMgICAgICAgICAgID0gbWVyZ2UoY29uZmlnRGF0YXNldCwgb3B0cyk7XG5cbiAgICAgIHRoaXMub3B0cyA9IHRyYXZlcnNlT2JqKHRoaXMub3B0cywgKGEpID0+IGEsIChiKSA9PiB7XG4gICAgICAgIGlmIChiID09PSAndHJ1ZScgfHwgYiA9PT0gJ2ZhbHNlJykge1xuICAgICAgICAgIHJldHVybiAoYiA9PT0gJ3RydWUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOdW1lcmljKGIpKSB7XG4gICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGIsIDEwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYjtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5vcHRzLmlzRHJvcERvd24pIHtcbiAgICAgICAgdGhpcy5pbml0Q2FsZW5kYXJEcm9wKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmVsID0gb3B0cy5lbDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5vcHRzLmxhbmcgICAgICAgID0gKHRoaXMub3B0cy5sYW5nICYmIHRoaXMub3B0cy5sYW5nIGluIGxvY2FsZXMpID8gdGhpcy5vcHRzLmxhbmcgOiAnZW4tVVMnO1xuICAgICAgdGhpcy5sb2NhbGUgICAgICAgICAgID0gbG9jYWxlc1t0aGlzLm9wdHMubGFuZ107XG4gICAgICB0aGlzLmZvcm1hdCAgICAgICAgICAgPSB0aGlzLm9wdHMuZm9ybWF0RGF0ZSB8fCB0aGlzLmxvY2FsZS5mb3JtYXREYXRlIHx8ICclbS8lZC8lWSc7XG4gICAgICB0aGlzLm9wdHMuc3RhcnRPZldlZWsgPSB0aGlzLm9wdHMuc3RhcnRPZldlZWsgfHwgdGhpcy5sb2NhbGUuc3RhcnRPZldlZWs7XG5cbiAgICAgIGxldCB7IGN1cnJlbnREYXRlIH0gPSB0aGlzLm9wdHM7XG4gICAgICBjb25zdCB5ZWFyICA9IGN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICBjb25zdCBtb250aCA9IGN1cnJlbnREYXRlLmdldE1vbnRoKCk7XG4gICAgICBjb25zdCBkYXkgICA9IGN1cnJlbnREYXRlLmdldERhdGUoKTtcblxuICAgICAgdGhpcy5vcHRzLmN1cnJlbnREYXRlID0gW3llYXIsIG1vbnRoLCBkYXldO1xuXG4gICAgICBpZiAoIXRoaXMub3B0cy55ZWFyU3RhcnQpIHtcbiAgICAgICAgdGhpcy5vcHRzLnllYXJTdGFydCA9IHllYXI7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5vcHRzLm1vbnRoU3RhcnQpIHtcbiAgICAgICAgdGhpcy5vcHRzLm1vbnRoU3RhcnQgPSBtb250aDtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gVE9ETzogcmVuYW1lIGRheXNUcmVlXG4gICAgdGhpcy5kb20gICA9IHt9O1xuICAgIC8vIFRPRE86IHJlbmFtZSB0byBjYWxlbmRhclRyZWUgb3IgYm9va2luZ3NUcmVlXG4gICAgdGhpcy5jVHJlZSA9IG5ldyBDYWxlbmRhclRyZWUodmFsaWRhdGlvbk9mQ2VsbCwge30pO1xuICAgIC8vIFRPRE86IHJlbmFtZSB0byBib29raW5nc0RhdGEgJiBhZGREYXRhXG4gICAgaWYgKGlzT2JqZWN0KG1hcHMpKSB7XG4gICAgICB0aGlzLmNUcmVlLmFkZE1hcHMobWFwcywgbWFwcy5zdGFydF9kYXRlIHx8IGRhdGVUb0lzbyh0aGlzLm9wdHMuY3VycmVudERhdGUpKTtcbiAgICB9XG5cbiAgICAvLyBzZWxlY3Rpb24gYW5kIGhpZ2hsaWdodHNcbiAgICB0aGlzLmlzU2VsZWN0aW5nICAgICAgID0gZmFsc2U7XG4gICAgdGhpcy5oaWdobGlnaHRlZEJvdW5kcyA9IFtdO1xuICAgIHRoaXMuaGFzVmFsaWRSYW5nZSAgICAgPSB0cnVlO1xuXG4gICAgLy8gVE9ETzogcmVuYW1lIGlzUmV2ZXJzZVNlbGVjdGFibGUgdG8gc2VsZWN0aW9uRGVmYXVsdERpcmVjdGlvbiAtIHNob3VsZCBiZSBMVFIgb3IgUlRMXG4gICAgLy8gdXNlciBzZWxlY3RzIGVuZCBkYXRlIGZpcnN0XG4gICAgdGhpcy5pc1JldmVyc2VTZWxlY3RhYmxlID0gdGhpcy5vcHRzLmlzUmV2ZXJzZVNlbGVjdGFibGU7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBpbml0KCkge1xuICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy5jYWxlbmRhciwgdXRpbHNTdHlsZXMucmVzZXQpO1xuXG4gICAgaWYgKCF0aGlzLmVsLmRhdGFzZXQudGhlbWUpIHtcbiAgICAgIHRoaXMuZWwuZGF0YXNldC50aGVtZSA9IHRoaXMub3B0cy50aGVtZTtcbiAgICB9XG5cbiAgICB0aGlzLmRvbS5tb250aHNXcmFwcGVyID0gdGhpcy5lbC5hcHBlbmRDaGlsZChlbGVtZW50RnJvbVN0cmluZyh0ZW1wbGF0ZXMubWFpbikpO1xuICAgIHRoaXMuZG9tLmZvcndhcmQgICAgICAgPSB0aGlzLmVsLmFwcGVuZENoaWxkKGVsZW1lbnRGcm9tU3RyaW5nKHRlbXBsYXRlcy5mb3J3YXJkKSk7XG4gICAgdGhpcy5kb20uYmFjayAgICAgICAgICA9IHRoaXMuZWwuYXBwZW5kQ2hpbGQoZWxlbWVudEZyb21TdHJpbmcodGVtcGxhdGVzLmJhY2spKTtcbiAgICB0aGlzLnJlbmRlck1vbnRocyh0aGlzLm9wdHMueWVhclN0YXJ0LCB0aGlzLm9wdHMubW9udGhTdGFydCk7XG5cbiAgICB0aGlzLmFkZEJ0bnNFdmVudHMoKTtcblxuICAgIGlmICh0aGlzLm9wdHMuc2VsZWN0YWJsZSAmJiB0aGlzLm9wdHMuZWxTdGFydEF0ICYmIHRoaXMub3B0cy5lbEVuZEF0KSB7XG4gICAgICBpZiAoIXRoaXMub3B0cy5yZW50YWxJZCkge1xuICAgICAgICB0aGlzLmlucHV0c1RvVmFsdWVzKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMub24oJ21hcHMtbG9hZGVkJywgKCkgPT4gdGhpcy5pbnB1dHNUb1ZhbHVlcygpKTtcbiAgICAgIHRoaXMub3B0cy5lbFN0YXJ0QXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB0aGlzLmlucHV0c1RvVmFsdWVzKCkpO1xuICAgICAgdGhpcy5vcHRzLmVsRW5kQXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB0aGlzLmlucHV0c1RvVmFsdWVzKCkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdHMucmVudGFsSWQgJiYgIXRoaXMub3B0cy5pc0Ryb3BEb3duKSB7XG4gICAgICB0aGlzLmxvYWRNYXBzKHRoaXMub3B0cy5yZW50YWxJZCk7XG4gICAgfVxuXG4gICAgdGhpcy5lbC5kYXRhc2V0LnNlbGVjdGFibGUgPSB0aGlzLm9wdHMuc2VsZWN0YWJsZTtcblxuICAgIHRoaXMubG9nZ2VyKCdpbml0ZWQnKTtcbiAgICB0aGlzLmVtaXQoJ2luaXQnKTtcbiAgfVxuXG4gIGNoYW5nZVNlbGVjdGlvbk9yZGVyKGlzUmV2ZXJzZSkge1xuICAgIGlmICgoaXNSZXZlcnNlICE9PSB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUpICYmICF0aGlzLmlzU2VsZWN0aW5nKSB7XG4gICAgICB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUgPSBpc1JldmVyc2U7XG4gICAgICB0aGlzLmRlc3Ryb3lNb250aHMoKTtcbiAgICAgIHRoaXMucmVuZGVyTW9udGhzKHRoaXMueWVhclN0YXJ0LCB0aGlzLm1vbnRoU3RhcnQpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlck1vbnRocyh5ZWFyU3RhcnQsIG1vbnRoU3RhcnQpIHtcbiAgICAvLyBjb25zdHJ1Y3QgZG9tIHRyZWVcbiAgICBjb25zdCB7XG4gICAgICB0cmVlLCB5ZWFyRW5kLCBtb250aEVuZCwgbW9udGhzXG4gICAgfSA9IHRoaXMuY3JlYXRlVHJlZSh5ZWFyU3RhcnQsIG1vbnRoU3RhcnQsIHRoaXMub3B0cy5kaXNwbGF5TW9udGhzKTtcblxuICAgIHRoaXMuY1RyZWUuYWRkVHJlZSh0cmVlKTtcblxuICAgIHRoaXMubW9udGhTdGFydCA9IG1vbnRoU3RhcnQ7XG4gICAgdGhpcy55ZWFyU3RhcnQgID0geWVhclN0YXJ0O1xuXG4gICAgdGhpcy5tb250aEVuZCA9IG1vbnRoRW5kO1xuICAgIHRoaXMueWVhckVuZCAgPSB5ZWFyRW5kO1xuXG4gICAgaWYgKHRoaXMub3B0cy5zZWxlY3RhYmxlKSB7XG4gICAgICBhZGRDbGFzcyh0aGlzLmVsLCB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUgPyBzdHlsZXMucmV2ZXJzZWQgOiBzdHlsZXMuZGlyZWN0KTtcbiAgICAgIHJlbW92ZUNsYXNzKHRoaXMuZWwsIHRoaXMuaXNSZXZlcnNlU2VsZWN0YWJsZSA/IHN0eWxlcy5kaXJlY3QgOiBzdHlsZXMucmV2ZXJzZWQpO1xuICAgIH1cblxuICAgIHRoaXMuZG9tLm1vbnRocyA9IG1vbnRocztcbiAgICB0aGlzLmRvbS5tb250aHMuZm9yRWFjaCgobSkgPT4ge1xuICAgICAgdGhpcy5kb20ubW9udGhzV3JhcHBlci5hcHBlbmRDaGlsZChtKTtcbiAgICAgIGlmICh0aGlzLm9wdHMuc2VsZWN0YWJsZSkge1xuICAgICAgICB0aGlzLmFkZE1vbnRoRXZlbnRzKG0pO1xuICAgICAgICBhZGRDbGFzcyh0aGlzLmVsLCBzdHlsZXMuYWN0aW9uc0VuYWJsZWQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCF0aGlzLm9wdHMuZW5hYmxlQWxsRGF5cykge1xuICAgICAgdGhpcy5kaXNhYmxlQmFja0J0bigpO1xuICAgIH1cblxuICAgIHRoaXMucmVjb3ZlclNlbGVjdGlvbnMoKTtcbiAgfVxuXG4gIHJlY292ZXJTZWxlY3Rpb25zKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvblN0YXJ0KSB7XG4gICAgICB0aGlzLnNlbGVjdFN0YXJ0KHRoaXMuc2VsZWN0aW9uU3RhcnQsIHRoaXMuY1RyZWUuc2VsZWN0RGF5KC4uLnRoaXMuc2VsZWN0aW9uU3RhcnQpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25FbmQpIHtcbiAgICAgIHRoaXMuc2VsZWN0RW5kKHRoaXMuc2VsZWN0aW9uRW5kLCB0aGlzLmNUcmVlLnNlbGVjdERheSguLi50aGlzLnNlbGVjdGlvbkVuZCkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGlvblN0YXJ0ICYmIHRoaXMuc2VsZWN0aW9uRW5kKSB7XG4gICAgICBpZiAodGhpcy5oaWdobGlnaHRlZEJvdW5kcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuaGlnaExpZ2h0UmFuZ2UoLi4udGhpcy5oaWdobGlnaHRlZEJvdW5kcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhpZ2hMaWdodFJhbmdlKHRoaXMuc2VsZWN0aW9uU3RhcnQsIHRoaXMuc2VsZWN0aW9uRW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkaXNhYmxlQmFja0J0bigpIHtcbiAgICBpZiAodGhpcy5vcHRzLmlzQmFja0Rpc2FibGVkKSB7XG4gICAgICBjb25zdCBzdGFydERhdGUgICAgICAgID0gZGF0ZVRvSXNvKHRoaXMueWVhclN0YXJ0LCB0aGlzLm1vbnRoU3RhcnQsIDEpO1xuICAgICAgbGV0IHsgY3VycmVudERhdGUgfSAgICA9IHRoaXMub3B0cztcbiAgICAgIGN1cnJlbnREYXRlICAgICAgICAgICAgPSBkYXRlVG9Jc28oY3VycmVudERhdGVbMF0sIGN1cnJlbnREYXRlWzFdLCAxKTtcbiAgICAgIHRoaXMuZG9tLmJhY2suZGlzYWJsZWQgPSBzdGFydERhdGUgPD0gY3VycmVudERhdGU7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlTG9hZGluZygpIHtcbiAgICBpZiAoIWhhc0NsYXNzKHRoaXMuZWwsIHN0eWxlcy5sb2FkaW5nKSkge1xuICAgICAgYWRkQ2xhc3ModGhpcy5lbCwgc3R5bGVzLmxvYWRpbmcpO1xuICAgICAgdGhpcy5lbWl0KCdsb2FkaW5nLXNob3cnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5lbCwgc3R5bGVzLmxvYWRpbmcpO1xuICAgICAgdGhpcy5lbWl0KCdsb2FkaW5nLWhpZGUnKTtcbiAgICB9XG4gIH1cblxuICBhZGRNYXBzKG1hcHMpIHtcbiAgICB0aGlzLmNUcmVlLnJlcGxhY2VNYXBzKG1hcHMsIG1hcHMuc3RhcnRfZGF0ZSk7XG4gICAgdGhpcy5kZXN0cm95TW9udGhzKCk7XG4gICAgdGhpcy5yZW5kZXJNb250aHMoXG4gICAgICB0aGlzLm9wdHMueWVhclN0YXJ0IHx8IHRoaXMueWVhclN0YXJ0LFxuICAgICAgdGhpcy5vcHRzLm1vbnRoU3RhcnQgfHwgdGhpcy5tb250aFN0YXJ0XG4gICAgKTtcbiAgfVxuXG4gIGFkZEJ0bnNFdmVudHMoKSB7XG4gICAgdGhpcy5kb20uZm9yd2FyZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICB0aGlzLmRlc3Ryb3lNb250aHMoKTtcbiAgICAgIGxldCBtb250aFRvUmVuZGVyID0gdGhpcy5tb250aFN0YXJ0ICsgKHRoaXMub3B0cy5tb250aHNQYWdpbmF0aW9uSnVtcCB8fCB0aGlzLm9wdHMuZGlzcGxheU1vbnRocyk7XG4gICAgICBsZXQgeWVhclRvUmVuZGVyID0gdGhpcy55ZWFyU3RhcnQ7XG5cbiAgICAgIGlmIChtb250aFRvUmVuZGVyID49IDEyKSB7XG4gICAgICAgIG1vbnRoVG9SZW5kZXIgLT0gMTI7XG4gICAgICAgIHllYXJUb1JlbmRlciArPSAxO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlbmRlck1vbnRocyh5ZWFyVG9SZW5kZXIsIG1vbnRoVG9SZW5kZXIpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kb20uYmFjay5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICB0aGlzLmRlc3Ryb3lNb250aHMoKTtcbiAgICAgIGxldCBtb250aFRvUmVuZGVyID0gdGhpcy5tb250aFN0YXJ0IC0gKHRoaXMub3B0cy5tb250aHNQYWdpbmF0aW9uSnVtcCB8fCB0aGlzLm9wdHMuZGlzcGxheU1vbnRocyk7XG4gICAgICBsZXQgeWVhclRvUmVuZGVyICA9IHRoaXMueWVhclN0YXJ0O1xuXG4gICAgICBpZiAobW9udGhUb1JlbmRlciA8IDApIHtcbiAgICAgICAgbW9udGhUb1JlbmRlciArPSAxMjtcbiAgICAgICAgeWVhclRvUmVuZGVyIC09IDE7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVuZGVyTW9udGhzKHllYXJUb1JlbmRlciwgbW9udGhUb1JlbmRlcik7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSk7XG4gIH1cblxuICBhZGRNb250aEV2ZW50cyhlbCkge1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcbiAgICAgIGNvbnN0IGlzRW5kRmlyc3QgPSB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBwYXJlbnQ6IGNlbGxcbiAgICAgIH0gPSB0cmF2ZXJzZVRvUGFyZW50V2l0aEF0dHIoZS50YXJnZXQsICdkYXRhLXZhbHVlJyk7XG5cbiAgICAgIGNvbnN0IHJlc2V0U2VsZWN0aW9uT25Fc2NhcGUgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5IHx8IGV2ZW50LmtleUNvZGU7XG5cbiAgICAgICAgaWYgKGtleSA9PT0gJ0VzY2FwZScgfHwga2V5ID09PSAnRXNjJyB8fCBrZXkgPT09IDI3KSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RpbmcpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgcmVzZXRTZWxlY3Rpb25PbkVzY2FwZSwgdHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHJlc2V0U2VsZWN0aW9uT25Fc2NhcGUsIHRydWUpO1xuXG4gICAgICBpZiAoaXModmFsdWUpICYmIGNlbGwpIHtcbiAgICAgICAgY29uc3QgZGF0ZVZhbHVlICAgICAgICAgID0gW2VsLnllYXIsIGVsLm1vbnRoLCBwYXJzZUludChjZWxsLmdldEF0dHJpYnV0ZSgnZGF0YS12YWx1ZScpLCAxMCldO1xuICAgICAgICBjb25zdCBkYXlBbHJlYWR5U2VsZWN0ZWQgPSB0aGlzLmlzU2VsZWN0aW5nICYmIGlzQ3VycmVudCgoaXNFbmRGaXJzdCkgPyB0aGlzLnNlbGVjdGlvbkVuZCA6IHRoaXMuc2VsZWN0aW9uU3RhcnQsIGRhdGVWYWx1ZSk7XG4gICAgICAgIGNvbnN0IHJhbmdlU2VsZWN0ZWQgICAgICA9ICF0aGlzLmlzU2VsZWN0aW5nICYmIHRoaXMuc2VsZWN0aW9uRW5kICYmIHRoaXMuc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgIGNvbnN0IGlzUGFzdFRvZGF5ICAgICAgICA9IGlzTGF0ZXIoZGF0ZVZhbHVlLCB0aGlzLm9wdHMuY3VycmVudERhdGUpO1xuXG4gICAgICAgIGlmIChkYXlBbHJlYWR5U2VsZWN0ZWQgfHwgcmFuZ2VTZWxlY3RlZCB8fCBpc1Bhc3RUb2RheSkge1xuICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgcmVzZXRTZWxlY3Rpb25PbkVzY2FwZSwgdHJ1ZSk7XG4gICAgICAgICAgdGhpcy5yZXNldFNlbGVjdGlvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFkYXlBbHJlYWR5U2VsZWN0ZWQgJiYgIWlzUGFzdFRvZGF5ICYmICF0aGlzLm9wdHMuZW5hYmxlQWxsRGF5cykge1xuICAgICAgICAgIGlmIChpc0VuZEZpcnN0KSB7XG4gICAgICAgICAgICB0aGlzLmVuZERhdGVGaXJzdEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZUZpcnN0QWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuZWwsIHN0eWxlcy5zZWxlY3RpbmdEaXJlY3QsIHN0eWxlcy5zZWxlY3RpbmdSZXZlcnNlZCk7XG4gICAgICAgICAgZGVsZXRlIGNlbGwuZGF0YXNldC5oaWdobGlnaHRlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkVuZCAmJiB0aGlzLnNlbGVjdGlvblN0YXJ0ICYmIHRoaXMuaGFzVmFsaWRSYW5nZSkge1xuICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgcmVzZXRTZWxlY3Rpb25PbkVzY2FwZSwgdHJ1ZSk7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZVNlbGVjdGlvbihpc0VuZEZpcnN0LCBkYXRlVmFsdWUsIGNlbGwpO1xuICAgICAgICAgIGlmICh0aGlzLm9wdHMuaXNEcm9wRG93biAmJiB0aGlzLmNhbERyb3ApIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wKG51bGwsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgKGUpID0+IHtcbiAgICAgIGNvbnN0IHsgdmFsdWUsIHBhcmVudDogY2VsbCB9ID0gdHJhdmVyc2VUb1BhcmVudFdpdGhBdHRyKGUudGFyZ2V0LCAnZGF0YS12YWx1ZScpO1xuXG4gICAgICBpZiAoaXModmFsdWUpICYmIGNlbGwpIHtcbiAgICAgICAgY29uc3QgY3VycmVudCAgICAgICAgICA9IFtlbC55ZWFyLCBlbC5tb250aCwgcGFyc2VJbnQoY2VsbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdmFsdWUnKSwgMTApXTtcbiAgICAgICAgY29uc3QgaXNQYXN0VG9kYXkgICAgICA9IGlzTGF0ZXIoY3VycmVudCwgdGhpcy5vcHRzLmN1cnJlbnREYXRlKTtcbiAgICAgICAgY29uc3QgaXNFbmRGaXJzdCAgICAgICA9IHRoaXMuaXNSZXZlcnNlU2VsZWN0YWJsZTtcblxuICAgICAgICBpZiAoaXNQYXN0VG9kYXkgJiYgIXRoaXMub3B0cy5lbmFibGVBbGxEYXlzKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RpbmcpIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZUhpZ2hsaWdodCgpO1xuXG4gICAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLmVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXZhbHVlXScpO1xuICAgICAgICAgIGNlbGxzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgICAgICBkZWxldGUgZWwuZGF0YXNldC5ob3ZlcmVkO1xuICAgICAgICAgICAgZGVsZXRlIGVsLmRhdGFzZXQuaG92ZXJlZE9mZnNldDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIC8vIHJldmVyc2Ugc2VsZWN0aW9uIGRpcmVjdGlvblxuICAgICAgICAgIGlmIChpc0VuZEZpcnN0ICYmIHRoaXMuc2VsZWN0aW9uRW5kICYmICFpc0N1cnJlbnQoY3VycmVudCwgdGhpcy5zZWxlY3Rpb25FbmQpKSB7XG4gICAgICAgICAgICBpZiAoaXNMYXRlcih0aGlzLnNlbGVjdGlvbkVuZCwgY3VycmVudCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgY2VsbEEgPSB0aGlzLmNlbGxCO1xuICAgICAgICAgICAgICBjb25zdCB7IHNlbGVjdGlvbkVuZCB9ID0gdGhpcztcblxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZUhpZ2hsaWdodERpcmVjdGlvbihmYWxzZSwgc2VsZWN0aW9uRW5kKTtcbiAgICAgICAgICAgICAgdGhpcy5zdGFydERhdGVGaXJzdEFjdGlvbih0aGlzLnNlbGVjdGlvbkVuZCwgY2VsbEEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoIWlzRW5kRmlyc3QgJiYgdGhpcy5zZWxlY3Rpb25TdGFydCAmJiAhaXNDdXJyZW50KGN1cnJlbnQsIHRoaXMuc2VsZWN0aW9uU3RhcnQpKSB7XG4gICAgICAgICAgICBpZiAoaXNMYXRlcihjdXJyZW50LCB0aGlzLnNlbGVjdGlvblN0YXJ0KSkge1xuICAgICAgICAgICAgICBjb25zdCBjZWxsQiA9IHRoaXMuY2VsbEE7XG4gICAgICAgICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uU3RhcnQgfSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VIaWdobGlnaHREaXJlY3Rpb24odHJ1ZSwgc2VsZWN0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICB0aGlzLmVuZERhdGVGaXJzdEFjdGlvbih0aGlzLnNlbGVjdGlvblN0YXJ0LCBjZWxsQik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuaXNSZXZlcnNlU2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5oaWdoTGlnaHRSYW5nZShjdXJyZW50LCB0aGlzLnNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGlnaExpZ2h0UmFuZ2UodGhpcy5zZWxlY3Rpb25TdGFydCwgY3VycmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY2hhbmdlSGlnaGxpZ2h0RGlyZWN0aW9uKHRoaXMub3B0cy5pc1JldmVyc2VTZWxlY3RhYmxlKTtcblxuICAgICAgICAgIGNvbnN0IGlzRGlzYWJsZWRMZWZ0ICAgPSBjZWxsLmRhdGFzZXQuZGlzYWJsZWQgPT09ICdsZWZ0JztcbiAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkQ2VudGVyID0gY2VsbC5kYXRhc2V0LmRpc2FibGVkID09PSAnY2VudGVyJztcbiAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkUmlnaHQgID0gY2VsbC5kYXRhc2V0LmRpc2FibGVkID09PSAncmlnaHQnO1xuXG4gICAgICAgICAgbGV0IGlzSW52YWxpZCA9ICcnO1xuXG4gICAgICAgICAgaWYgKGlzRW5kRmlyc3QgJiYgaXNEaXNhYmxlZFJpZ2h0IHx8IGlzRGlzYWJsZWRDZW50ZXIgfHwgIWlzRW5kRmlyc3QgJiYgaXNEaXNhYmxlZExlZnQpIHtcbiAgICAgICAgICAgIGlzSW52YWxpZCA9ICdpbnZhbGlkJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBjZWxscyA9IHRoaXMuZWwucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdmFsdWVdJyk7XG4gICAgICAgICAgbGV0IG9mZnNldENlbGw7XG5cbiAgICAgICAgICBjZWxscy5mb3JFYWNoKChlbCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGRlbGV0ZSBlbC5kYXRhc2V0LmhvdmVyZWQ7XG4gICAgICAgICAgICBkZWxldGUgZWwuZGF0YXNldC5ob3ZlcmVkT2Zmc2V0O1xuXG4gICAgICAgICAgICBpZiAoZWwgPT09IGNlbGwpIHtcbiAgICAgICAgICAgICAgb2Zmc2V0Q2VsbCA9ICh0aGlzLm9wdHMuaXNSZXZlcnNlU2VsZWN0YWJsZSkgPyBjZWxsc1tpbmRleCAtIDFdIDogY2VsbHNbaW5kZXggKyAxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChpcyhvZmZzZXRDZWxsKSkge1xuICAgICAgICAgICAgb2Zmc2V0Q2VsbC5kYXRhc2V0LmhvdmVyZWRPZmZzZXQgPSAnJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjZWxsLmRhdGFzZXQuaG92ZXJlZCA9IGlzSW52YWxpZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZWwuYm9keS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIChlKSA9PiB7XG4gICAgICBjb25zdCBjZWxscyA9IHRoaXMuZWwucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdmFsdWVdJyk7XG4gICAgICBjZWxscy5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICBkZWxldGUgZWwuZGF0YXNldC5ob3ZlcmVkO1xuICAgICAgICBkZWxldGUgZWwuZGF0YXNldC5ob3ZlcmVkT2Zmc2V0O1xuICAgICAgfSk7XG5cbiAgICAgIC8qIGVzbGludCBuby1iaXR3aXNlOiBbXCJlcnJvclwiLCB7IFwiYWxsb3dcIjogW1wiJlwiXSB9XSAqL1xuICAgICAgLy8gc2ltdWxhdGUgJ21vdXNlbGVhdmUnXG4gICAgICBpZiAoIWUucmVsYXRlZFRhcmdldFxuICAgICAgICB8fCAoZS5yZWxhdGVkVGFyZ2V0ICE9PSBlbC5ib2R5ICYmICEoZWwuYm9keS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlLnJlbGF0ZWRUYXJnZXQpXG4gICAgICAgICYgTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpKSkge1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGluZykge1xuICAgICAgICAgIHRoaXMucmVtb3ZlSGlnaGxpZ2h0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNoYW5nZUhpZ2hsaWdodERpcmVjdGlvbihpc1JldmVyc2UsIGRhdGVBcnJheSA9IG51bGwpIHtcbiAgICB0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUgPSBpc1JldmVyc2U7XG5cbiAgICBpZiAoZGF0ZUFycmF5KSB7XG4gICAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG4gICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ID0gKGlzUmV2ZXJzZSkgPyBkYXRlQXJyYXkgOiBudWxsO1xuICAgICAgdGhpcy5zZWxlY3Rpb25FbmQgICA9IChpc1JldmVyc2UpID8gbnVsbCA6IGRhdGVBcnJheTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IHRoaXMuc2VsZWN0aW9uRW5kO1xuICAgICAgdGhpcy5zZWxlY3Rpb25FbmQgPSB0aGlzLnNlbGVjdGlvblN0YXJ0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdHMuc2VsZWN0YWJsZSkge1xuICAgICAgYWRkQ2xhc3ModGhpcy5lbCwgaXNSZXZlcnNlID8gc3R5bGVzLnJldmVyc2VkIDogc3R5bGVzLmRpcmVjdCk7XG4gICAgICByZW1vdmVDbGFzcyh0aGlzLmVsLCBpc1JldmVyc2UgPyBzdHlsZXMuZGlyZWN0IDogc3R5bGVzLnJldmVyc2VkKTtcbiAgICB9XG4gIH1cblxuICBzdGFydERhdGVGaXJzdEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpIHtcbiAgICBpZiAodGhpcy5pc1NlbGVjdGluZyAmJiBpc0xhdGVyKHRoaXMuc2VsZWN0aW9uU3RhcnQsIGRhdGVWYWx1ZSkpIHtcbiAgICAgIHRoaXMuc2VsZWN0RW5kQWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG5cbiAgICAgIGNvbnN0IGZuID0gKCkgPT4ge1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLmVsLCBzdHlsZXMuc2VsZWN0aW5nRGlyZWN0KTtcbiAgICAgICAgY2VsbC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIGZuKTtcbiAgICAgIH07XG5cbiAgICAgIGNlbGwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdXQnLCBmbik7XG4gICAgICB0aGlzLmlzU2VsZWN0aW5nID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVtb3ZlSGlnaGxpZ2h0KCk7XG4gICAgICBhZGRDbGFzcyh0aGlzLmVsLCBzdHlsZXMuc2VsZWN0aW5nRGlyZWN0KTtcbiAgICAgIHRoaXMuaXNTZWxlY3RpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5zZWxlY3RTdGFydEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpO1xuICAgICAgY2VsbC5kYXRhc2V0LmhpZ2hsaWdodGVkID0gJ2xlZnQnO1xuICAgIH1cbiAgfVxuXG4gIGVuZERhdGVGaXJzdEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpIHtcbiAgICBpZiAodGhpcy5pc1NlbGVjdGluZyAmJiBpc0xhdGVyKGRhdGVWYWx1ZSwgdGhpcy5zZWxlY3Rpb25FbmQpKSB7XG4gICAgICB0aGlzLnNlbGVjdFN0YXJ0QWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG5cbiAgICAgIGNvbnN0IGZuID0gKCkgPT4ge1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLmVsLCBzdHlsZXMuc2VsZWN0aW5nUmV2ZXJzZWQpO1xuICAgICAgICBjZWxsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlb3V0JywgZm4pO1xuICAgICAgfTtcblxuICAgICAgY2VsbC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIGZuKTtcbiAgICAgIHRoaXMuaXNTZWxlY3RpbmcgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW1vdmVIaWdobGlnaHQoKTtcbiAgICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy5zZWxlY3RpbmdSZXZlcnNlZCk7XG4gICAgICB0aGlzLmlzU2VsZWN0aW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0RW5kQWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCk7XG4gICAgICBjZWxsLmRhdGFzZXQuaGlnaGxpZ2h0ZWQgPSAncmlnaHQnO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFN0YXJ0QWN0aW9uKGRhdGVWYWx1ZSwgY2VsbCkge1xuICAgIHRoaXMuc2VsZWN0U3RhcnQoZGF0ZVZhbHVlLCBjZWxsKTtcbiAgICB0aGlzLnN3aXRjaElucHV0Rm9jdXMoJ2VuZCcpO1xuICAgIGlmICh0aGlzLmhhc1ZhbGlkUmFuZ2UpIHtcbiAgICAgIHRoaXMuZW1pdCgnc2VsZWN0aW9uLXN0YXJ0JywgZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSwgdHJ1ZSksIGRhdGVUb0lzbyguLi5kYXRlVmFsdWUpKTtcbiAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXMub3B0cy5vblNlbGVjdFN0YXJ0KSkge1xuICAgICAgICB0aGlzLm9wdHMub25TZWxlY3RTdGFydChkYXRlVG9Jc28oLi4uZGF0ZVZhbHVlLCB0cnVlKSwgZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEVuZEFjdGlvbihkYXRlVmFsdWUsIGNlbGwpIHtcbiAgICB0aGlzLnNlbGVjdEVuZChkYXRlVmFsdWUsIGNlbGwpO1xuICAgIHRoaXMuc3dpdGNoSW5wdXRGb2N1cygnc3RhcnQnKTtcbiAgICBpZiAodGhpcy5oYXNWYWxpZFJhbmdlKSB7XG4gICAgICB0aGlzLmVtaXQoJ3NlbGVjdGlvbi1lbmQnLCBkYXRlVG9Jc28oLi4uZGF0ZVZhbHVlLCB0cnVlKSwgZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSkpO1xuICAgICAgaWYgKGlzRnVuY3Rpb24odGhpcy5vcHRzLm9uU2VsZWN0RW5kKSkge1xuICAgICAgICB0aGlzLm9wdHMub25TZWxlY3RFbmQoZGF0ZVRvSXNvKC4uLmRhdGVWYWx1ZSwgdHJ1ZSksIGRhdGVUb0lzbyguLi5kYXRlVmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZW1vdmVIaWdobGlnaHQoKSB7XG4gICAgaWYgKHRoaXMuaGlnaGxpZ2h0ZWRCb3VuZHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgeyByYW5nZSB9ID0gdGhpcy5zZWxlY3RSYW5nZSguLi50aGlzLmhpZ2hsaWdodGVkQm91bmRzKTtcbiAgICAgIHJhbmdlLm1hcCgoY2VsbCkgPT4ge1xuICAgICAgICBkZWxldGUgY2VsbC5kYXRhc2V0LmhpZ2hsaWdodGVkO1xuICAgICAgICBkZWxldGUgY2VsbC5kYXRhc2V0LmludmFsaWQ7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5kZXN0cm95VG9vbHRpcCgpO1xuXG4gICAgICB0aGlzLmhhc1ZhbGlkUmFuZ2UgICAgID0gdHJ1ZTtcbiAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRCb3VuZHMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95VG9vbHRpcCgpIHtcbiAgICBpZiAoaXModGhpcy50b29sdGlwUG9wcGVyKSkge1xuICAgICAgdGhpcy50b29sdGlwUG9wcGVyLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBpZiAoaXModGhpcy5kb20udG9vbHRpcCkpIHtcbiAgICAgIGRlc3Ryb3lFbGVtZW50KHRoaXMuZG9tLnRvb2x0aXApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIaWdobGlnaHRzIHRoZSByYW5nZSBvZiBjZWxscyBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgZW5kIGRhdGVzLlxuICAgKiBAcHVibGljXG4gICAqIEBwYXJhbSB7QXJyYXl9IHN0YXJ0IGUuZy4gWzIwMTYsIDAsIDFdXG4gICAqIEBwYXJhbSB7QXJyYXl9IGVuZCBbMjAxNiwgMSwgM11cbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gV2hldGhlciB0aGUgcmFuZ2UgaXMgdmFsaWQgb3Igbm90LlxuICAgKi9cbiAgaGlnaExpZ2h0UmFuZ2Uoc3RhcnQsIGVuZCkge1xuICAgIGNvbnN0IHsgcmFuZ2UsIGlzVmFsaWQgfSA9IHRoaXMuc2VsZWN0UmFuZ2Uoc3RhcnQsIGVuZCk7XG4gICAgY29uc3QgeyBvcHRzIH0gICAgICAgICAgID0gdGhpcztcbiAgICBsZXQgeyBtaW5TdGF5LCBtYXhTdGF5IH0gPSBvcHRzO1xuICAgIGxldCBpbnZhbGlkUmFuZ2VNZXNzYWdlO1xuXG4gICAgaWYgKGlzQXJyYXkocmFuZ2UpKSB7XG4gICAgICBpZiAob3B0cy5yZW50YWxJZCkge1xuICAgICAgICBjb25zdCByYW5nZVdpdGhvdXRMYXN0ID0gcmFuZ2Uuc2xpY2UoMCwgLTEpO1xuXG4gICAgICAgIGlmICghb3B0cy5hbGxvd1Nob3J0ZXJNaW5TdGF5U2VsZWN0aW9uKSB7XG4gICAgICAgICAgLy8gZ2V0IHRoZSBiaWdnZXN0IG1pblN0YXkgdmFsdWUgaW4gdGhlIHJhbmdlXG4gICAgICAgICAgY29uc3QgY2VsbHMgPSByYW5nZVdpdGhvdXRMYXN0Lm1hcCgoY2VsbCkgPT4gY2VsbC5kYXRhc2V0Lm1pblN0YXkgfHwgbWluU3RheSk7XG4gICAgICAgICAgbWluU3RheSA9IE1hdGgubWF4KC4uLmNlbGxzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghb3B0cy5hbGxvd0xvbmdlck1heFN0YXlTZWxlY3Rpb24pIHtcbiAgICAgICAgICAvLyBnZXQgdGhlIGJpZ2dlc3QgbWF4U3RheSB2YWx1ZSBpbiB0aGUgcmFuZ2VcbiAgICAgICAgICBjb25zdCBjZWxscyA9IHJhbmdlV2l0aG91dExhc3QubWFwKChjZWxsKSA9PiBjZWxsLmRhdGFzZXQubWF4U3RheSB8fCBtYXhTdGF5KTtcbiAgICAgICAgICBtYXhTdGF5ID0gTWF0aC5tYXgoLi4uY2VsbHMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGNoZWNrIHRoYXQgcmFuZ2UgaXMgdmFsaWQgYW5kIGxvbmdlciB0aGFuIG1pblN0YXkgYW5kIHNob3J0ZXIgdGhhbiBtYXhTdGF5XG4gICAgICBjb25zdCBoYXNWYWxpZERheXMgICAgPSBvcHRzLnJlbnRhbElkID8gaXNWYWxpZCA6IHRydWU7XG4gICAgICBjb25zdCBoYXNWYWxpZE1pblN0YXkgPSByYW5nZS5sZW5ndGggPiBtaW5TdGF5O1xuICAgICAgY29uc3QgaGFzVmFsaWRNYXhTdGF5ID0gcmFuZ2UubGVuZ3RoIDwgbWF4U3RheTtcblxuICAgICAgdGhpcy5oYXNWYWxpZFJhbmdlID0gaGFzVmFsaWREYXlzICYmIGhhc1ZhbGlkTWluU3RheSAmJiBoYXNWYWxpZE1heFN0YXk7XG5cbiAgICAgIGlmICghaGFzVmFsaWRNaW5TdGF5KSB7XG4gICAgICAgIGludmFsaWRSYW5nZU1lc3NhZ2UgPSB0Rm9ybWF0dGVyKG1pblN0YXksIHRoaXMubG9jYWxlLmhhc0ludmFsaWRNaW5TdGF5KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNWYWxpZE1heFN0YXkpIHtcbiAgICAgICAgaW52YWxpZFJhbmdlTWVzc2FnZSA9IHRGb3JtYXR0ZXIobWF4U3RheSwgdGhpcy5sb2NhbGUuaGFzSW52YWxpZE1heFN0YXkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWhhc1ZhbGlkRGF5cykge1xuICAgICAgICBpbnZhbGlkUmFuZ2VNZXNzYWdlID0gdGhpcy5sb2NhbGUuaGFzSW52YWxpZERheXM7XG4gICAgICB9XG5cbiAgICAgIHJhbmdlLm1hcCgoY2VsbCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgbGVmdCA9IGluZGV4ID09PSAwO1xuICAgICAgICBjb25zdCByaWdodCA9IGluZGV4ICsgMSA9PT0gcmFuZ2UubGVuZ3RoO1xuXG4gICAgICAgIGlmICh0aGlzLmhhc1ZhbGlkUmFuZ2UpIHtcbiAgICAgICAgICBpZiAobGVmdCkge1xuICAgICAgICAgICAgY2VsbC5kYXRhc2V0LmhpZ2hsaWdodGVkID0gJ2xlZnQnO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmlnaHQpIHtcbiAgICAgICAgICAgIGNlbGwuZGF0YXNldC5oaWdobGlnaHRlZCA9ICdyaWdodCc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNlbGwuZGF0YXNldC5oaWdobGlnaHRlZCA9ICdjZW50ZXInO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAobGVmdCkge1xuICAgICAgICAgICAgY2VsbC5kYXRhc2V0LmludmFsaWQgPSAnbGVmdCc7XG4gICAgICAgICAgfSBlbHNlIGlmIChyaWdodCkge1xuICAgICAgICAgICAgY2VsbC5kYXRhc2V0LmludmFsaWQgPSAncmlnaHQnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjZWxsLmRhdGFzZXQuaW52YWxpZCA9ICdjZW50ZXInO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRvb2x0aXBQb3NpdGlvbiA9ICh0aGlzLmlzUmV2ZXJzZVNlbGVjdGFibGUpID8gbGVmdCA6IHJpZ2h0O1xuXG4gICAgICAgIGlmICh0b29sdGlwUG9zaXRpb24gJiYgdGhpcy5lbC5jb250YWlucyhjZWxsKSAmJiAhdGhpcy5oYXNWYWxpZFJhbmdlKSB7XG4gICAgICAgICAgdGhpcy5kb20udG9vbHRpcCA9IHRoaXMuZWwuYXBwZW5kQ2hpbGQoZWxlbWVudEZyb21TdHJpbmcodGVtcGxhdGVzLnRvb2x0aXApKTtcbiAgICAgICAgICB0aGlzLmRvbS50b29sdGlwLnF1ZXJ5U2VsZWN0b3IoJ3NwYW4nKS5pbm5lckhUTUwgPSBpbnZhbGlkUmFuZ2VNZXNzYWdlO1xuXG4gICAgICAgICAgdGhpcy5sb2dnZXIoYGludmFsaWRSYW5nZU1lc3NhZ2U6ICR7aW52YWxpZFJhbmdlTWVzc2FnZX0gKCR7c3RhcnR9IC0gJHtlbmR9KWAsICd3YXJuJyk7XG5cbiAgICAgICAgICB0aGlzLnRvb2x0aXBQb3BwZXIgPSB3aW5kb3cuUG9wcGVyLmNyZWF0ZVBvcHBlcihjZWxsLCB0aGlzLmRvbS50b29sdGlwLCB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6ICd0b3AnLFxuICAgICAgICAgICAgbW9kaWZpZXJzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnZmxpcCcsXG4gICAgICAgICAgICAgICAgZW5hYmxlZDogZmFsc2VcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdvZmZzZXQnLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIG9mZnNldDogWzAsIDBdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2VsbDtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmhpZ2hsaWdodGVkQm91bmRzID0gW3N0YXJ0LCBlbmRdO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmhhc1ZhbGlkUmFuZ2U7XG4gIH1cblxuICAvKiogUmVzZXRzIHNlbGVjdGlvbiwgcmVtb3ZlcyBoaWdobGlnaHRzXG4gICAqIEBwdWJsaWNcbiAgICogQHJldHVybnMge0NhbGVuZGFyfVxuICAgKi9cbiAgcmVzZXRTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5yZW1vdmVIaWdobGlnaHQoKTtcbiAgICB0aGlzLmlzU2VsZWN0aW5nID0gZmFsc2U7XG5cbiAgICB0aGlzLmVtaXQoJ3NlbGVjdGlvbi1yZXNldCcsIHRoaXMuc2VsZWN0aW9uU3RhcnQsIHRoaXMuc2VsZWN0aW9uRW5kKTtcbiAgICBpZiAoaXNGdW5jdGlvbih0aGlzLm9wdHMub25DbGVhclNlbGVjdGlvbikpIHtcbiAgICAgIHRoaXMub3B0cy5vbkNsZWFyU2VsZWN0aW9uKHRoaXMuc2VsZWN0aW9uU3RhcnQsIHRoaXMuc2VsZWN0aW9uRW5kKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdGlvbkVuZCAgID0gbnVsbDtcblxuICAgIGlmICh0aGlzLmNlbGxBKSB7XG4gICAgICB0aGlzLmNlbGxBID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jZWxsQikge1xuICAgICAgdGhpcy5jZWxsQiA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0cy5pc0Ryb3BEb3duICYmIHRoaXMub3B0cy5lbFN0YXJ0QXQgJiYgdGhpcy5vcHRzLmVsRW5kQXQpIHtcbiAgICAgIHRoaXMub3B0cy5lbFN0YXJ0QXQudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5vcHRzLmVsRW5kQXQudmFsdWUgICA9IG51bGw7XG5cbiAgICAgIGlmICh0aGlzLm9wdHMuaXNTaW5nbGVJbnB1dCkge1xuICAgICAgICB0aGlzLm9wdHMuZWxTaW5nbGVJbnB1dC52YWx1ZSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogc2VsZWN0IHJhbmdlIGZyb20gdGhlIHRyZWVcbiAgICpcbiAgICogQHBhcmFtIHtBcnJheX0gc3RhcnQgZS5nLiBbMjAxNiwgMCwgMV1cbiAgICogQHBhcmFtIHtBcnJheX0gZW5kIFsyMDE2LCAxLCAzXVxuICAgKiBAcmV0dXJucyB7e3JhbmdlOiBBcnJheSwgaXNWYWxpZDoge0Jvb2xlYW59fX1cbiAgICovXG4gIHNlbGVjdFJhbmdlKHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAoaXNMYXRlcihzdGFydCwgZW5kKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY1RyZWUuc2VsZWN0UmFuZ2Uoc3RhcnQsIGVuZCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICByYW5nZTogbnVsbCxcbiAgICAgIGlzVmFsaWQ6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIHNlbGVjdFN0YXJ0KGRhdGVWYWx1ZSwgY2VsbCkge1xuICAgIHRoaXMuc2VsZWN0aW9uU3RhcnQgPSBkYXRlVmFsdWU7XG5cbiAgICBpZiAoY2VsbCkge1xuICAgICAgdGhpcy5jZWxsQSA9IGNlbGw7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZVRvSW5wdXQoJ3N0YXJ0JywgZGF0ZVZhbHVlKTtcbiAgfVxuXG4gIHNlbGVjdEVuZChkYXRlVmFsdWUsIGNlbGwpIHtcbiAgICB0aGlzLnNlbGVjdGlvbkVuZCA9IGRhdGVWYWx1ZTtcblxuICAgIGlmIChjZWxsKSB7XG4gICAgICB0aGlzLmNlbGxCID0gY2VsbDtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlVG9JbnB1dCgnZW5kJywgZGF0ZVZhbHVlKTtcbiAgfVxuXG4gIGNyZWF0ZVRyZWUoeWVhclN0YXJ0LCBtb250aFN0YXJ0LCB0aW1lcykge1xuICAgIGNvbnN0IG1vbnRocyA9IFtdO1xuICAgIGNvbnN0IHRyZWUgICA9IHt9O1xuICAgIGxldCBtb250aEVuZCA9IG1vbnRoU3RhcnQ7XG4gICAgbGV0IHllYXJFbmQgID0geWVhclN0YXJ0O1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aW1lczsgaSArPSAxKSB7XG4gICAgICBjb25zdCBtRG9tID0gdGhpcy5kb21Nb250aCh5ZWFyRW5kLCBtb250aEVuZCk7XG5cbiAgICAgIG1vbnRocy5wdXNoKG1Eb20pO1xuXG4gICAgICBpZiAoIXRyZWVbeWVhckVuZF0pIHtcbiAgICAgICAgdHJlZVt5ZWFyRW5kXSA9IHt9O1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRyZWVbeWVhckVuZF1bbW9udGhFbmRdKSB7XG4gICAgICAgIHRyZWVbeWVhckVuZF1bbW9udGhFbmRdID0gbURvbS5kYXlFbGVtZW50cyB8fCBbXTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vbnRoRW5kID4gMTApIHtcbiAgICAgICAgbW9udGhFbmQgPSAwO1xuICAgICAgICB5ZWFyRW5kICs9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb250aEVuZCArPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0cmVlLFxuICAgICAgeWVhckVuZCxcbiAgICAgIG1vbnRoRW5kLFxuICAgICAgbW9udGhzXG4gICAgfTtcbiAgfVxuXG4gIGRvbU1vbnRoKHllYXIsIG1vbnRoKSB7XG4gICAgY29uc3QgbW9udGhEb20gPSBlbGVtZW50RnJvbVN0cmluZyh0ZW1wbGF0ZXMubW9udGgpO1xuXG4gICAgbW9udGhEb20ucXVlcnlTZWxlY3RvcihgLiR7c3R5bGVzLnRhYmxlSGVhZGVyfSB0cmApLmlubmVySFRNTCA9IHRoaXMuaGVhZGVyVGVtcGxhdGVTdHJpbmcoKTtcbiAgICBtb250aERvbS5xdWVyeVNlbGVjdG9yKGAuJHtzdHlsZXMuY2FwdGlvbn1gKS5pbm5lckhUTUwgICAgICAgID0gYCR7dGhpcy5sb2NhbGUubG9uZ01vbnRoTmFtZXNbbW9udGhdfSAke3llYXJ9YDtcblxuICAgIG1vbnRoRG9tLmJvZHkgICAgICAgICAgID0gbW9udGhEb20ucXVlcnlTZWxlY3RvcihgLiR7c3R5bGVzLmJvZHl9YCk7XG4gICAgbW9udGhEb20uYm9keS5pbm5lckhUTUwgPSB0aGlzLmRheXNUZW1wbGF0ZVN0cmluZyh5ZWFyLCBtb250aCk7XG5cbiAgICBtb250aERvbS5tb250aCAgICAgICA9IG1vbnRoO1xuICAgIG1vbnRoRG9tLnllYXIgICAgICAgID0geWVhcjtcbiAgICBtb250aERvbS5kYXlFbGVtZW50cyA9IFtdLnNsaWNlLmNhbGwobW9udGhEb20ucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdmFsdWVdJykpO1xuXG4gICAgcmV0dXJuIG1vbnRoRG9tO1xuICB9XG5cbiAgaGVhZGVyVGVtcGxhdGVTdHJpbmcoKSB7XG4gICAgLy8ganVzdCB0byBtYWtlIGxpZmUgZWFzaWVyIHdpdGggc3RhcnQgb2YgdGhlIHdlZWsgY2FsY3VsYXRpb25cbiAgICBjb25zdCBoZWFkZXIgICAgICAgICAgICAgICAgID0gW107XG4gICAgY29uc3Qgd2Vla2RheXNMYWJlbHNFeHRlbmRlZCA9IHRoaXMubG9jYWxlLnNob3J0V2Vla2RheU5hbWVzLmNvbmNhdCh0aGlzLmxvY2FsZS5zaG9ydFdlZWtkYXlOYW1lcyk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3B0cy5kYXlzUGVyV2VlazsgaSArPSAxKSB7XG4gICAgICBoZWFkZXIucHVzaCh0ZW1wbGF0ZXMud2Vla0RheUxhYmVsKHdlZWtkYXlzTGFiZWxzRXh0ZW5kZWRbaSArIHRoaXMub3B0cy5zdGFydE9mV2Vla10pKTtcbiAgICB9XG4gICAgcmV0dXJuIGhlYWRlci5qb2luKCcnKTtcbiAgfVxuXG4gIGRheXNUZW1wbGF0ZVN0cmluZyh5ZWFyLCBtb250aCkge1xuICAgIGNvbnN0IHN0YXJ0T2ZNb250aCAgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSkuZ2V0RGF5KCk7XG4gICAgY29uc3QgZGF5c0luTW9udGggICA9IG1vbnRoTGVuZ3RoKHllYXIsIG1vbnRoKTtcbiAgICBjb25zdCByb3dUZW1wbGF0ZSAgID0gdGVtcGxhdGVzLndlZWtSb3c7XG4gICAgY29uc3QgbW9udGhUZW1wbGF0ZSA9IFtdO1xuICAgIGNvbnN0IHdlZWtTaGlmdCAgICAgPSAodGhpcy5vcHRzLmRheXNQZXJXZWVrIC0gdGhpcy5vcHRzLnN0YXJ0T2ZXZWVrKTtcblxuICAgIGxldCByb3dzICAgICAgICAgICAgICAgPSA1O1xuICAgIGxldCB3ZWVrU2hpZnRDb3JyZWN0ZWQgPSBzdGFydE9mTW9udGggKyB3ZWVrU2hpZnQ7XG4gICAgbGV0IGRheUNvdW50ZXIgICAgICAgICA9IDA7XG4gICAgbGV0IGRheU9mTW9udGggICAgICAgICA9IDE7XG5cbiAgICAvLyBkb24ndCByZW5kZXIgZnVsbCBlbXB0eSB3ZWVrXG4gICAgaWYgKHdlZWtTaGlmdENvcnJlY3RlZCA+PSB0aGlzLm9wdHMuZGF5c1BlcldlZWspIHtcbiAgICAgIHdlZWtTaGlmdENvcnJlY3RlZCAtPSB0aGlzLm9wdHMuZGF5c1BlcldlZWs7XG4gICAgfVxuXG4gICAgLy8gdHJ5IHRvIGZpZ3VyZSBvdXQgaWYgNSByb3dzIGlzIGVub3VnaCBmb3IgdGhlIG1vbnRoXG4gICAgaWYgKHJvd3MgKiB0aGlzLm9wdHMuZGF5c1BlcldlZWsgPCB3ZWVrU2hpZnRDb3JyZWN0ZWQgKyBkYXlzSW5Nb250aCkge1xuICAgICAgcm93cyA9IDY7XG4gICAgfVxuXG4gICAgLy8gZm9yIGVhY2ggd2VlayAoNSBvciA2KVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSArPSAxKSB7XG4gICAgICBjb25zdCB3ZWVrID0gW107XG4gICAgICAvLyBvcGVuIHRhZyA8dHI+XG4gICAgICB3ZWVrLnB1c2gocm93VGVtcGxhdGUoaSkub3Blbik7XG5cbiAgICAgIC8vIHB1c2ggZGF5cyBpbiB3ZWVrXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMub3B0cy5kYXlzUGVyV2VlazsgaiArPSAxKSB7XG4gICAgICAgIC8vIHB1c2hpbmcgYWN0dWFsIGRheXMgMS4uLmRheXNJbk1vbnRoXG4gICAgICAgIGlmICgoZGF5Q291bnRlciA+PSB3ZWVrU2hpZnRDb3JyZWN0ZWQpICYmIGRheU9mTW9udGggPD0gZGF5c0luTW9udGgpIHtcbiAgICAgICAgICB3ZWVrLnB1c2godGhpcy5kYXlUZW1wbGF0ZVN0cmluZyh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCkpO1xuICAgICAgICAgIGRheU9mTW9udGggKz0gMTtcbiAgICAgICAgICAvLyBwdXNoaW5nIHBsYWNlaG9sZGVycyBpbnN0ZWFkIG9mIGRheXNcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3ZWVrLnB1c2godGVtcGxhdGVzLndlZWtEYXlQbGFjZWhvbGRlcik7XG4gICAgICAgIH1cblxuICAgICAgICBkYXlDb3VudGVyICs9IDE7XG4gICAgICB9XG4gICAgICAvLyBjbG9zZSB0YWcgPC90cj4gb2Ygd2Vla1xuICAgICAgd2Vlay5wdXNoKHJvd1RlbXBsYXRlKCkuY2xvc2UpO1xuICAgICAgLy8gcHVzaCBjb21wbGV0ZWQgd2VlayB0byBtb250aCB0ZW1wbGF0ZVxuICAgICAgbW9udGhUZW1wbGF0ZS5wdXNoKHdlZWsuam9pbignJykpO1xuICAgIH1cblxuICAgIHJldHVybiBtb250aFRlbXBsYXRlLmpvaW4oJycpO1xuICB9XG5cbiAgZGF5VGVtcGxhdGVTdHJpbmcoeWVhciwgbW9udGgsIGRheU9mTW9udGgpIHtcbiAgICBjb25zdCB7IGNUcmVlIH0gICAgICA9IHRoaXM7XG4gICAgY29uc3QgcmF0ZSAgICAgICAgICAgPSB0aGlzLm9wdHMuc2hvd1JhdGVzID8gY1RyZWUuZ2V0RGF5UHJvcGVydHkoeWVhciwgbW9udGgsIGRheU9mTW9udGgsICdyYXRlJykgOiAwO1xuICAgIGNvbnN0IG1pblN0YXkgICAgICAgID0gY1RyZWUuZ2V0RGF5UHJvcGVydHkoeWVhciwgbW9udGgsIGRheU9mTW9udGgsICdtaW5TdGF5Jyk7XG4gICAgY29uc3QgbWF4U3RheSAgICAgICAgPSBjVHJlZS5nZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCwgJ21heFN0YXknKTtcblxuICAgIGxldCBpc0Rpc2FibGVkICAgICAgID0gY1RyZWUuaXNEYXlEaXNhYmxlZCh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCk7XG4gICAgbGV0IGlzQXZhaWxhYmxlT3V0ICAgPSBjVHJlZS5nZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCwgJ2lzQXZhaWxhYmxlT3V0Jyk7XG4gICAgbGV0IGlzTW9ybmluZ0Jsb2NrZWQgPSBjVHJlZS5nZXREYXlQcm9wZXJ0eSh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCwgJ2lzTW9ybmluZ0Jsb2NrZWQnKTtcblxuICAgIGNvbnN0IHsgY3VycmVudERhdGUgfSA9IHRoaXMub3B0cztcbiAgICBjb25zdCBkYXRlQXJyYXkgICAgICAgPSBbeWVhciwgbW9udGgsIGRheU9mTW9udGhdO1xuICAgIGNvbnN0IGlzQ3VycmVudERheSAgICA9IGlzQ3VycmVudChkYXRlQXJyYXksIGN1cnJlbnREYXRlKTtcblxuICAgIC8vIGRpc2FibGUgcGFzdCBkYXRlc1xuICAgIGlmIChpc0xhdGVyKGRhdGVBcnJheSwgY3VycmVudERhdGUpKSB7XG4gICAgICBpc0Rpc2FibGVkICAgICAgICA9IHRydWU7XG4gICAgICBpc01vcm5pbmdCbG9ja2VkICA9IG51bGw7XG4gICAgICBpc0F2YWlsYWJsZU91dCAgICA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gZGlzYWJsZSBjdXJyZW50IGRheSBtb3JuaW5nXG4gICAgaWYgKGlzQ3VycmVudERheSkge1xuICAgICAgaWYgKCEoaXNEaXNhYmxlZCAmJiBpc0F2YWlsYWJsZU91dCA9PT0gbnVsbCAmJiBpc01vcm5pbmdCbG9ja2VkID09PSBudWxsKSkge1xuICAgICAgICBpc01vcm5pbmdCbG9ja2VkICA9IHRydWU7XG5cbiAgICAgICAgaWYgKGlzQXZhaWxhYmxlT3V0ID09PSBudWxsKSB7XG4gICAgICAgICAgaXNBdmFpbGFibGVPdXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaWYgdGhlcmUgaXMgbm90IHJlbnRhbElkIGFuZCBubyBtYXBzLCBqdXN0IHJlbmRlciBwbGFpbiBjYWxlbmRhclxuICAgIGlmICghdGhpcy5vcHRzLnJlbnRhbElkIHx8IHRoaXMub3B0cy5lbmFibGVBbGxEYXlzKSB7XG4gICAgICBpZiAoaXNMYXRlcihjdXJyZW50RGF0ZSwgZGF0ZUFycmF5KSkge1xuICAgICAgICBpc0Rpc2FibGVkICAgICAgICA9IGZhbHNlO1xuICAgICAgICBpc0F2YWlsYWJsZU91dCAgICA9IHRydWU7XG4gICAgICAgIGlzTW9ybmluZ0Jsb2NrZWQgID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0N1cnJlbnREYXkpIHtcbiAgICAgICAgaXNEaXNhYmxlZCAgICAgICAgPSB0cnVlO1xuICAgICAgICBpc01vcm5pbmdCbG9ja2VkICA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaXNBdmFpbGFibGVJbiA9IGlzTW9ybmluZ0Jsb2NrZWQgPT0gZmFsc2U7XG5cbiAgICBpZiAoaXNEaXNhYmxlZCAmJiBpc0F2YWlsYWJsZUluKSB7XG4gICAgICBpc0Rpc2FibGVkID0gJ2xlZnQnO1xuICAgIH0gZWxzZSBpZiAoaXNNb3JuaW5nQmxvY2tlZCkge1xuICAgICAgaXNEaXNhYmxlZCA9ICdyaWdodCc7XG4gICAgfSBlbHNlIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICBpc0Rpc2FibGVkID0gJ2NlbnRlcic7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlbXBsYXRlcy53ZWVrRGF5KFxuICAgICAgZGF5T2ZNb250aCxcbiAgICAgIGlzRGlzYWJsZWQsXG4gICAgICBpc0F2YWlsYWJsZUluLFxuICAgICAgaXNBdmFpbGFibGVPdXQsXG4gICAgICBpc0N1cnJlbnREYXksXG4gICAgICBtaW5TdGF5LFxuICAgICAgdGhpcy5vcHRzLnNob3dNaW5TdGF5ID8gdEZvcm1hdHRlcihtaW5TdGF5LCB0aGlzLmxvY2FsZS5taW5TdGF5KSA6IGZhbHNlLFxuICAgICAgbWF4U3RheSxcbiAgICAgIHRoaXMub3B0cy5zaG93TWF4U3RheSA/IHRGb3JtYXR0ZXIobWF4U3RheSwgdGhpcy5sb2NhbGUubWF4U3RheSkgOiBmYWxzZSxcbiAgICAgIHJhdGUsXG4gICAgICBjdXJyZW5jeUZvcm1hdHRlcihNYXRoLnJvdW5kKHJhdGUpLCB0aGlzLm9wdHMubGFuZywgdGhpcy5vcHRzLmN1cnJlbmN5IHx8IHRoaXMubG9jYWxlLmN1cnJlbmN5KVxuICAgICk7XG4gIH1cblxuICBkZXN0cm95TW9udGhzKCkge1xuICAgIGlmICh0aGlzLmRvbSAmJiBpc0FycmF5KHRoaXMuZG9tLm1vbnRocykpIHtcbiAgICAgIHRoaXMuZG9tLm1vbnRocy5tYXAoKG0pID0+IGRlc3Ryb3lFbGVtZW50KG0pKTtcbiAgICAgIHRoaXMuZGVzdHJveVRvb2x0aXAoKTtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHJldHVybiBkZXN0cm95RWxlbWVudCh0aGlzLmVsKTtcbiAgfVxuXG4gIGxvYWRNYXBzKGlkKSB7XG4gICAgdGhpcy5sb2dnZXIoJ2xvYWRpbmcgbWFwcycpO1xuICAgIHRoaXMudG9nZ2xlTG9hZGluZygpO1xuXG4gICAgY29uc3Qgb25TdWNjZXNzID0gKG1hcHMpID0+IHtcbiAgICAgIGlmIChpc0FycmF5KG1hcHMuZGF0YSkgJiYgbWFwcy5kYXRhWzBdLmF0dHJpYnV0ZXMpIHtcbiAgICAgICAgaWYgKHRoaXMub3B0cy5kaXNhYmxlQXZhaWxhYml0eU1hcCkge1xuICAgICAgICAgIG1hcHMuZGF0YVswXS5hdHRyaWJ1dGVzLmF2YWlsYWJpbGl0eSA9IG1hcHMuZGF0YVswXS5hdHRyaWJ1dGVzLmF2YWlsYWJpbGl0eS5yZXBsYWNlKC9bMC05XS9nLCAnMCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3B0cy5jdXJyZW5jeSA9IHRoaXMub3B0cy5jdXJyZW5jeSB8fCBtYXBzLmRhdGFbMF0uYXR0cmlidXRlcy5jdXJyZW5jeTtcbiAgICAgICAgdGhpcy5hZGRNYXBzKG1hcHMuZGF0YVswXS5hdHRyaWJ1dGVzKTtcbiAgICAgICAgdGhpcy5tYXBzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50b2dnbGVMb2FkaW5nKCk7XG4gICAgICAgIHRoaXMuZW1pdCgnbWFwcy1sb2FkZWQnLCBtYXBzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9nZ2xlTG9hZGluZygpO1xuICAgICAgICB0aGlzLmxvZ2dlcignZXhwZWN0cyBqc29uLWFwaSBkYXRhIGZvcm1hdCcsICdlcnJvcicpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbkVycm9yID0gKCkgPT4ge1xuICAgICAgdGhpcy50b2dnbGVMb2FkaW5nKCk7XG4gICAgICB0aGlzLmVtaXQoJ21hcHMtZXJyb3InKTtcbiAgICAgIHRoaXMubG9nZ2VyKCdTZXJ2ZXIgZXJyb3IgaGFwcGVuZWQnLCAnZXJyb3InKTtcbiAgICB9O1xuXG4gICAgZmV0Y2godGhpcy5vcHRzLnJlbnRhbFVybChpZCkpXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmpzb24oKSlcbiAgICAgIC50aGVuKG9uU3VjY2VzcylcbiAgICAgIC5jYXRjaChvbkVycm9yKTtcbiAgfVxuXG4gIGNvbXBsZXRlU2VsZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLm9wdHMuaXNTaW5nbGVJbnB1dCkge1xuICAgICAgY29uc3Qgc2luZ2xlSW5wdXREYXRlRm9ybWF0ID0gdGhpcy5zaW5nbGVJbnB1dERhdGVGb3JtYXQgfHwgdGhpcy5sb2NhbGUuZm9ybWF0RGF0ZTtcblxuICAgICAgY29uc3QgZGF0ZVN0YXJ0ID0gc3RyZnRpbWUoZGF0ZVRvSXNvKC4uLnRoaXMuc2VsZWN0aW9uU3RhcnQpLCBzaW5nbGVJbnB1dERhdGVGb3JtYXQsIHRoaXMubG9jYWxlKTtcbiAgICAgIGNvbnN0IGRhdGVFbmQgICA9IHN0cmZ0aW1lKGRhdGVUb0lzbyguLi50aGlzLnNlbGVjdGlvbkVuZCksIHNpbmdsZUlucHV0RGF0ZUZvcm1hdCwgdGhpcy5sb2NhbGUpO1xuXG4gICAgICB0aGlzLm9wdHMuZWxTaW5nbGVJbnB1dC52YWx1ZSA9IGAke2RhdGVTdGFydH0gJHt0aGlzLm9wdHMuc2luZ2xlSW5wdXRTZXBhcmF0b3J9ICR7ZGF0ZUVuZH1gO1xuICAgIH1cblxuICAgIHRoaXMuZW1pdCgnc2VsZWN0aW9uLWNvbXBsZXRlZCcsIHRoaXMuc2VsZWN0aW9uU3RhcnQsIHRoaXMuc2VsZWN0aW9uRW5kKTtcbiAgICBpZiAoaXNGdW5jdGlvbih0aGlzLm9wdHMub25TZWxlY3Rpb25Db21wbGV0ZWQpKSB7XG4gICAgICB0aGlzLm9wdHMub25TZWxlY3Rpb25Db21wbGV0ZWQoXG4gICAgICAgIGRhdGVUb0lzbyguLi50aGlzLnNlbGVjdGlvblN0YXJ0LCB0cnVlKSwgZGF0ZVRvSXNvKC4uLnRoaXMuc2VsZWN0aW9uRW5kLCB0cnVlKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpbml0Q2FsZW5kYXJEcm9wKCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50RnJvbVN0cmluZygnPGRpdj48L2Rpdj4nKTtcbiAgICB0aGlzLmVsVGFyZ2V0ID0gdGhpcy5vcHRzLmVsO1xuICAgIHRoaXMuZWwgICAgICAgPSBlbGVtZW50O1xuXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTtcblxuICAgIHRoaXMub3B0cy5lbFN0YXJ0QXQgICAgID0gdGhpcy5vcHRzLmVsU3RhcnRBdCB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHt0aGlzLkNTU19QUkVGSVh9X19zdGFydC1hdGApO1xuICAgIHRoaXMub3B0cy5lbEVuZEF0ICAgICAgID0gdGhpcy5vcHRzLmVsRW5kQXQgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7dGhpcy5DU1NfUFJFRklYfV9fZW5kLWF0YCk7XG4gICAgdGhpcy5vcHRzLmVsU2luZ2xlSW5wdXQgPSB0aGlzLm9wdHMuZWxTaW5nbGVJbnB1dCB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHt0aGlzLkNTU19QUkVGSVh9X19zaW5nbGUtaW5wdXRgKTtcblxuICAgIGlmICh0aGlzLm9wdHMuaGlkZGVuRWxGb3JtYXQpIHtcbiAgICAgIFt0aGlzLm9wdHMuZWxTdGFydEF0LCB0aGlzLm9wdHMuZWxFbmRBdF0uZm9yRWFjaCgoaW5wdXQsIGkpID0+IHtcbiAgICAgICAgY29uc3QgaGlkZGVuSW5wdXQgPSBpbnB1dC5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICAgIGlucHV0LnBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoaGlkZGVuSW5wdXQpO1xuICAgICAgICBpbnB1dC5yZW1vdmVBdHRyaWJ1dGUoJ25hbWUnKTtcbiAgICAgICAgaGlkZGVuSW5wdXQuY2xhc3NOYW1lID0gJyc7XG4gICAgICAgIGhpZGRlbklucHV0LmhpZGRlbiAgICA9IHRydWU7XG5cbiAgICAgICAgKGkpID8gdGhpcy5oaWRkZW5FbEVuZEF0ID0gaGlkZGVuSW5wdXQgOiB0aGlzLmhpZGRlbkVsU3RhcnRBdCA9IGhpZGRlbklucHV0O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0cy5pc1NpbmdsZUlucHV0KSB7XG4gICAgICB0aGlzLm9wdHMuZWxTaW5nbGVJbnB1dC5yZWFkT25seSA9IHRydWU7XG5cbiAgICAgIFt0aGlzLm9wdHMuZWxTdGFydEF0LCB0aGlzLm9wdHMuZWxFbmRBdF0uZm9yRWFjaCgoaW5wdXQpID0+IHtcbiAgICAgICAgaW5wdXQuaGlkZGVuID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy5kcm9wQmFzaWMpO1xuXG4gICAgY29uc3QgY2FsRHJvcCA9IHdpbmRvdy5Qb3BwZXIuY3JlYXRlUG9wcGVyKHRoaXMuZWxUYXJnZXQsIHRoaXMuZWwsIHtcbiAgICAgIHBsYWNlbWVudDogdGhpcy5vcHRzLmRyb3BQbGFjZW1lbnQsXG4gICAgICBoaWRlOiB0cnVlXG4gICAgfSk7XG5cbiAgICBjb25zdCBvcGVuRHJvcCA9IChpbnB1dCwgaXNSZXZlcnNlZCkgPT4ge1xuICAgICAgdGhpcy5zd2l0Y2hJbnB1dEZvY3VzKGlucHV0KTtcbiAgICAgIHRoaXMuY2hhbmdlU2VsZWN0aW9uT3JkZXIoaXNSZXZlcnNlZCk7XG5cbiAgICAgIGlmICghaGFzQ2xhc3ModGhpcy5lbCwgc3R5bGVzLnZpc2libGUpKSB7XG4gICAgICAgIGNhbERyb3AudXBkYXRlKCk7XG4gICAgICAgIHRoaXMuZW1pdCgnZHJvcC1vcGVuJyk7XG4gICAgICAgIGFkZENsYXNzKHRoaXMuZWwsIHN0eWxlcy52aXNpYmxlKTtcblxuICAgICAgICBpZiAoIXRoaXMubWFwc0xvYWRlZCAmJiB0aGlzLm9wdHMucmVudGFsSWQpIHtcbiAgICAgICAgICB0aGlzLmxvYWRNYXBzKHRoaXMub3B0cy5yZW50YWxJZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKHRoaXMub3B0cy5pc1NpbmdsZUlucHV0KSB7XG4gICAgICB0aGlzLmZvY3VzVG91Y2hFdmVudHModGhpcy5vcHRzLmVsU2luZ2xlSW5wdXQsICgpID0+IHtcbiAgICAgICAgb3BlbkRyb3AoJ3N0YXJ0JywgZmFsc2UpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNUb3VjaEV2ZW50cyh0aGlzLm9wdHMuZWxTdGFydEF0LCAoKSA9PiB7XG4gICAgICAgIG9wZW5Ecm9wKCdzdGFydCcsIGZhbHNlKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5mb2N1c1RvdWNoRXZlbnRzKHRoaXMub3B0cy5lbEVuZEF0LCAoKSA9PiB7XG4gICAgICAgIG9wZW5Ecm9wKCdlbmQnLCB0cnVlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5jbG9zZURyb3AuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5jYWxEcm9wID0gY2FsRHJvcDtcblxuICAgIGlmICh0aGlzLm9wdHMuZWxSZXNldCkge1xuICAgICAgdGhpcy5vcHRzLmVsUmVzZXQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVzZXRTZWxlY3Rpb24oKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHZhbHVlVG9JbnB1dChpbnB1dCwgZGF0ZVZhbHVlKSB7XG4gICAgY29uc3QgeyBlbFN0YXJ0QXQgfSA9IHRoaXMub3B0cztcbiAgICBjb25zdCB7IGVsRW5kQXQgfSAgID0gdGhpcy5vcHRzO1xuXG4gICAgY29uc3QgZGF0ZSAgPSBkYXRlVG9Jc28oLi4uZGF0ZVZhbHVlKTtcbiAgICBjb25zdCB2YWx1ZSA9IHN0cmZ0aW1lKGRhdGUsIHRoaXMuZm9ybWF0LCB0aGlzLmxvY2FsZSk7XG4gICAgY29uc3QgZXZ0ICAgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcblxuICAgIGV2dC5pbml0RXZlbnQoJ2NoYW5nZScsIGZhbHNlLCB0cnVlKTtcblxuICAgIGlmICh0aGlzLm9wdHMuaGlkZGVuRWxGb3JtYXQpIHtcbiAgICAgIGNvbnN0IGhpZGRlblZhbHVlID0gc3RyZnRpbWUoZGF0ZSwgdGhpcy5vcHRzLmhpZGRlbkVsRm9ybWF0LCB0aGlzLmxvY2FsZSk7XG5cbiAgICAgIGlmIChpbnB1dCA9PT0gJ3N0YXJ0JyAmJiB0aGlzLmhpZGRlbkVsU3RhcnRBdCkge1xuICAgICAgICB0aGlzLmhpZGRlbkVsU3RhcnRBdC52YWx1ZSA9IGhpZGRlblZhbHVlO1xuICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PT0gJ2VuZCcgJiYgdGhpcy5oaWRkZW5FbEVuZEF0KSB7XG4gICAgICAgIHRoaXMuaGlkZGVuRWxFbmRBdC52YWx1ZSA9IGhpZGRlblZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbnB1dCA9PT0gJ3N0YXJ0JyAmJiBlbFN0YXJ0QXQpIHtcbiAgICAgIGVsU3RhcnRBdC52YWx1ZSA9IHZhbHVlO1xuICAgICAgZWxTdGFydEF0LmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgICB9IGVsc2UgaWYgKGlucHV0ID09PSAnZW5kJyAmJiBlbEVuZEF0KSB7XG4gICAgICBlbEVuZEF0LnZhbHVlID0gdmFsdWU7XG4gICAgICBlbEVuZEF0LmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgICB9XG4gIH1cblxuICBpbnB1dHNUb1ZhbHVlcygpIHtcbiAgICBpZiAodGhpcy5vcHRzLmVsU3RhcnRBdC52YWx1ZSA9PT0gJycgJiYgdGhpcy5vcHRzLmVsRW5kQXQudmFsdWUgPT09ICcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0aW9uU3RhcnQgID0gZGF0ZVRvQXJyYXkodGhpcy5vcHRzLmVsU3RhcnRBdC52YWx1ZSwgdGhpcy5mb3JtYXQsIHRoaXMubG9jYWxlKTtcbiAgICBjb25zdCBzZWxlY3Rpb25FbmQgICAgPSBkYXRlVG9BcnJheSh0aGlzLm9wdHMuZWxFbmRBdC52YWx1ZSwgdGhpcy5mb3JtYXQsIHRoaXMubG9jYWxlKTtcbiAgICBjb25zdCB7IGN1cnJlbnREYXRlIH0gPSB0aGlzLm9wdHM7XG5cbiAgICB0aGlzLnJlc2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoaXNBcnJheShzZWxlY3Rpb25TdGFydCkgJiYgaXNBcnJheShzZWxlY3Rpb25FbmQpKSB7XG4gICAgICBpZiAoKGlzTGF0ZXIoY3VycmVudERhdGUsIHNlbGVjdGlvblN0YXJ0KSB8fCBpc0N1cnJlbnQoY3VycmVudERhdGUsIHNlbGVjdGlvblN0YXJ0KSkgJiYgaXNMYXRlcihzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kKSkge1xuICAgICAgICBjb25zdCBtb250aERpZmZlcmVuY2UgPSBtb250aERpZmYoXG4gICAgICAgICAgZGF0ZVRvSXNvKHRoaXMub3B0cy55ZWFyU3RhcnQsIHRoaXMub3B0cy5tb250aFN0YXJ0LCAxKSxcbiAgICAgICAgICBkYXRlVG9Jc28oLi4uc2VsZWN0aW9uRW5kKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHsgdHJlZSB9ID0gdGhpcy5jcmVhdGVUcmVlKHRoaXMub3B0cy55ZWFyU3RhcnQsIHRoaXMub3B0cy5tb250aFN0YXJ0LCBtb250aERpZmZlcmVuY2UpO1xuXG4gICAgICAgIHRoaXMuY1RyZWUuYWRkVHJlZSh0cmVlKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IHNlbGVjdGlvblN0YXJ0O1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkVuZCA9IHNlbGVjdGlvbkVuZDtcbiAgICAgICAgdGhpcy5yZWNvdmVyU2VsZWN0aW9ucygpO1xuICAgICAgICB0aGlzLmNvbXBsZXRlU2VsZWN0aW9uKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveU1vbnRocygpO1xuICAgICAgICB0aGlzLnJlbmRlck1vbnRocyhzZWxlY3Rpb25FbmRbMF0sIHNlbGVjdGlvbkVuZFsxXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZ2dlcihgaW52YWxpZCByYW5nZTogXCJbJHtzZWxlY3Rpb25TdGFydH1dXCIgXCJbJHtzZWxlY3Rpb25FbmR9XVwiYCwgJ3dhcm4nKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uU3RhcnQgJiYgc2VsZWN0aW9uRW5kKSB7XG4gICAgICB0aGlzLmxvZ2dlcihgaW52YWxpZCBkYXRlczogXCIke3NlbGVjdGlvblN0YXJ0fVwiIFwiJHtzZWxlY3Rpb25FbmR9XCJgLCAnd2FybicpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHN3aXRjaElucHV0Rm9jdXModHlwZSkge1xuICAgIGlmICh0aGlzLm9wdHMuZWxTdGFydEF0ICYmIHRoaXMub3B0cy5lbEVuZEF0KSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICBhZGRDbGFzcyh0aGlzLm9wdHMuZWxTdGFydEF0LCBzdHlsZXMuZm9jdXMpO1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm9wdHMuZWxFbmRBdCwgc3R5bGVzLmZvY3VzKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSAnZW5kJykge1xuICAgICAgICBhZGRDbGFzcyh0aGlzLm9wdHMuZWxFbmRBdCwgc3R5bGVzLmZvY3VzKTtcbiAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5vcHRzLmVsU3RhcnRBdCwgc3R5bGVzLmZvY3VzKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlID09PSAnYW55Jykge1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm9wdHMuZWxTdGFydEF0LCBzdHlsZXMuZm9jdXMpO1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm9wdHMuZWxFbmRBdCwgc3R5bGVzLmZvY3VzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjbG9zZURyb3AoZSwgZm9yY2UpIHtcbiAgICBpZiAoIWZvcmNlICYmIChpc0luc2lkZShlLnRhcmdldCwgdGhpcy5lbCkgfHwgaXNJbnNpZGUoZS50YXJnZXQsIHRoaXMuZWxUYXJnZXQpKSkge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5lbCwgc3R5bGVzLnZpc2libGUpO1xuICAgICAgdGhpcy5kZXN0cm95VG9vbHRpcCgpO1xuICAgICAgdGhpcy5lbWl0KCdkcm9wLWNsb3NlJyk7XG4gICAgICB0aGlzLnN3aXRjaElucHV0Rm9jdXMoJ2FueScpO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzVG91Y2hFdmVudHMoZWxlbWVudCwgX2NhbGxiYWNrKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24oX2NhbGxiYWNrKSkge1xuICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIF9jYWxsYmFjaygpO1xuICAgICAgfSk7XG5cbiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgX2NhbGxiYWNrKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYFske3RoaXMubmFtZX0gJHt0aGlzLlZFUlNJT059XSBgO1xuICB9XG5cbiAgbG9nZ2VyKG1zZywgdHlwZSA9ICdsb2cnKSB7XG4gICAgaWYgKGNvbnNvbGUgJiYgY29uc29sZVt0eXBlXSkge1xuICAgICAgY29uc29sZVt0eXBlXSh0aGlzLnRvU3RyaW5nKCkgKyBtc2cpO1xuICAgIH1cbiAgfVxufVxuIiwiLyogZ2xvYmFsIHByb2Nlc3MsIHJlcXVpcmUgKi9cbmltcG9ydCB7IGRhc2hUb0NhcGl0YWwgfSBmcm9tICd3aWRnZXQtdXRpbHMnO1xuXG5jb25zdCB7IG5hbWUgfSA9IHJlcXVpcmUoJy4uL3BhY2thZ2UuanNvbicpO1xuY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWUsXG4gIGNzc1ByZWZpeDogZGFzaFRvQ2FwaXRhbChuYW1lKSxcbiAgYXBpSG9zdDogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgPyAnaHR0cDovL2xvY2FsaG9zdDozMDAwJyA6ICdodHRwczovL3NlY3VyZS5zbWlseS5jb20nLFxuICBhcGlOYW1lc3BhY2U6ICcvYXBpL3YyL3B1YmxpYycsXG4gIGFwaU1hcHNSb3V0ZTogJy9tYXBzLmpzb24/e2FwaVJlbnRhbElkfXthcGlDdXJyZW5jeX0nLFxuICBhcGlSZW50YWxJZDogJ3JlbnRhbF9pZD0nLFxuICBhcGlDdXJyZW5jeTogJyZleGNoYW5nZV90b19jdXJyZW5jeT0nLFxuXG4gIHJlbnRhbFVybChpZHMpIHtcbiAgICBsZXQgcm91dGUgPSB0aGlzLmFwaU1hcHNSb3V0ZS5yZXBsYWNlKCd7YXBpUmVudGFsSWR9JywgYCR7dGhpcy5hcGlSZW50YWxJZH0ke2lkc31gKTtcbiAgICByb3V0ZSA9IHJvdXRlLnJlcGxhY2UoJ3thcGlDdXJyZW5jeX0nLCAodGhpcy5jdXJyZW5jeSkgPyBgJHt0aGlzLmFwaUN1cnJlbmN5fSR7dGhpcy5jdXJyZW5jeX1gIDogJycpO1xuICAgIHJldHVybiBgJHt0aGlzLmFwaUhvc3R9JHt0aGlzLmFwaU5hbWVzcGFjZX0ke3JvdXRlfWA7XG4gIH0sXG5cbiAgc3RhcnRPZldlZWs6IDAsIC8vIDAgU3VuIDEgTW9uLi4uLjYgU2F0XG4gIG1pblN0YXk6IDEsIC8vIGNhbiBzZWxlY3Qgb25lIG5pZ2h0XG4gIG1heFN0YXk6IEluZmluaXR5LCAvLyBjYW4gc2VsZWN0IGluZmluaXRlIG5pZ2h0c1xuICBtb250aFN0YXJ0OiBudWxsLCAvLyBzdGFydCB3aXRoIGN1cnJlbnQgbW9udGggYnkgZGVmYXVsdCBNICcwLi4uMTEnXG4gIHllYXJTdGFydDogbnVsbCwgLy8gc3RhcnQgd2l0aCBjdXJyZW50IHllYXIgWVlZWVxuICBkYXlzUGVyV2VlazogNywgLy8gRklYTUUgc3VwcG9ydCBjYWxlbmRhciByZW5kZXJpbmdcbiAgZGlzcGxheU1vbnRoczogMixcbiAgbW9udGhzUGFnaW5hdGlvbkp1bXA6IDEsXG4gIHNlbGVjdGFibGU6IGZhbHNlLFxuICBzaG93UmF0ZXM6IGZhbHNlLFxuICBpc1JldmVyc2VTZWxlY3RhYmxlOiBmYWxzZSwgLy8gc2VsZWN0IGVuZCBkYXRlIGZpcnN0XG4gIGlzQmFja0Rpc2FibGVkOiB0cnVlLFxuICBpc0Ryb3BEb3duOiBmYWxzZSxcbiAgZHJvcFBsYWNlbWVudDogJ2JvdHRvbS1zdGFydCcsXG4gIGVsOiBudWxsLFxuICBlbFN0YXJ0QXQ6IG51bGwsXG4gIGVsRW5kQXQ6IG51bGwsXG4gIGVsU2luZ2xlSW5wdXQ6IG51bGwsXG4gIGlzU2luZ2xlSW5wdXQ6IG51bGwsXG4gIHNpbmdsZUlucHV0RGF0ZUZvcm1hdDogbnVsbCxcbiAgc2luZ2xlSW5wdXRTZXBhcmF0b3I6ICfihpInLFxuICBlbFJlc2V0OiBudWxsLFxuICBmb3JtYXREYXRlOiBudWxsLFxuICBoaWRkZW5FbEZvcm1hdDogbnVsbCxcbiAgcmVudGFsSWQ6IG51bGwsXG4gIGN1cnJlbmN5OiBudWxsLFxuICBkaXNhYmxlQXZhaWxhYml0eU1hcDogZmFsc2UsXG4gIGFsbG93U2hvcnRlck1pblN0YXlTZWxlY3Rpb246IGZhbHNlLFxuICBhbGxvd0xvbmdlck1heFN0YXlTZWxlY3Rpb246IGZhbHNlLFxuICBlbmFibGVBbGxEYXlzOiBmYWxzZSxcbiAgY3VycmVudERhdGUsXG4gIHRoZW1lOiAnc2tldydcbn07XG4iLCJsZXQgbG9jYWxlcyA9IHtcbiAgJ2VuLUdCJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ1N1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Jy5zcGxpdCgnXycpLFxuICAgIGxvbmdNb250aE5hbWVzOiAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdKYW5fRmViX01hcl9BcHJfTWF5X0p1bl9KdWxfQXVnX1NlcF9PY3RfTm92X0RlYycuc3BsaXQoJ18nKSxcbiAgICBmb3JtYXREYXRlOiAnJWIgJWQsICVZJyxcbiAgICBjdXJyZW5jeTogJ0dCUCcsXG4gICAgbWluU3RheTogJyVudW1iZXIrIG5pZ2h0cycsXG4gICAgbWF4U3RheTogJyVudW1iZXItIG5pZ2h0cycsXG4gICAgaGFzSW52YWxpZE1pblN0YXk6ICdtaW5pbXVtIHN0YXk6ICVudW1iZXIgbmlnaHRzJyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ21heGltdW0gc3RheTogJW51bWJlciBuaWdodHMnLFxuICAgIGhhc0ludmFsaWREYXlzOiAnYm9va2VkIGFscmVhZHknLFxuICAgIHN0YXJ0T2ZXZWVrOiAwXG4gIH0sXG4gICdlbi1VUyc6IHtcbiAgICBzaG9ydFdlZWtkYXlOYW1lczogJ1N1X01vX1R1X1dlX1RoX0ZyX1NhJy5zcGxpdCgnXycpLFxuICAgIGxvbmdXZWVrZGF5TmFtZXM6ICdTdW5kYXlfTW9uZGF5X1R1ZXNkYXlfV2VkbmVzZGF5X1RodXJzZGF5X0ZyaWRheV9TYXR1cmRheScuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ0phbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgc2hvcnRNb250aE5hbWVzOiAnSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyViICVkLCAlWScsXG4gICAgY3VycmVuY3k6ICdVU0QnLFxuICAgIG1pblN0YXk6ICclbnVtYmVyKyBuaWdodHMnLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBuaWdodHMnLFxuICAgIGhhc0ludmFsaWRNaW5TdGF5OiAnbWluaW11bSBzdGF5OiAlbnVtYmVyIG5pZ2h0cycsXG4gICAgaGFzSW52YWxpZE1heFN0YXk6ICdtYXhpbXVtIHN0YXk6ICVudW1iZXIgbmlnaHRzJyxcbiAgICBoYXNJbnZhbGlkRGF5czogJ2Jvb2tlZCBhbHJlYWR5JyxcbiAgICBzdGFydE9mV2VlazogMVxuICB9LFxuICAnZGUtREUnOiB7XG4gICAgc2hvcnRXZWVrZGF5TmFtZXM6ICdTb19Nb19EaV9NaV9Eb19Gcl9TYScuc3BsaXQoJ18nKSxcbiAgICBsb25nV2Vla2RheU5hbWVzOiAnU29ubnRhZ19Nb250YWdfRGllbnN0YWdfTWl0dHdvY2hfRG9ubmVyc3RhZ19GcmVpdGFnX1NhbXN0YWcnLnNwbGl0KCdfJyksXG4gICAgbG9uZ01vbnRoTmFtZXM6ICdKYW51YXJfRmVicnVhcl9Nw6Ryel9BcHJpbF9NYWlfSnVuaV9KdWxpX0F1Z3VzdF9TZXB0ZW1iZXJfT2t0b2Jlcl9Ob3ZlbWJlcl9EZXplbWJlcicuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdKYW5fRmViX03DpHJfQXByX01haV9KdW5fSnVsX0F1Z19TZXBfT2t0X05vdl9EZXonLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyViICVkLCAlWScsXG4gICAgY3VycmVuY3k6ICdFVVInLFxuICAgIG1pblN0YXk6ICclbnVtYmVyKyBuw6RjaHRlJyxcbiAgICBtYXhTdGF5OiAnJW51bWJlci0gbsOkY2h0ZScsXG4gICAgaGFzSW52YWxpZE1pblN0YXk6ICdtaW5kZXN0YXVmZW50aGFsdDogJW51bWJlciBOw6RjaHRlJyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ21heGltYWxlciBBdWZlbnRoYWx0OiAlbnVtYmVyIE7DpGNodGUnLFxuICAgIGhhc0ludmFsaWREYXlzOiAnc2Nob24gZ2VidWNodCcsXG4gICAgc3RhcnRPZldlZWs6IDFcbiAgfSxcbiAgJ2VzLUVTJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnRG9fTHVfTWFfTWlfSnVfVmlfU8OhJy5zcGxpdCgnXycpLFxuICAgIGxvbmdXZWVrZGF5TmFtZXM6ICdkb21pbmdvX2x1bmVzX21hcnRlc19tacOpcmNvbGVzX2p1ZXZlc192aWVybmVzX3PDoWJhZG8nLnNwbGl0KCdfJyksXG4gICAgbG9uZ01vbnRoTmFtZXM6ICdlbmVyb19mZWJyZXJvX21hcnpvX2FicmlsX21heW9fanVuaW9fanVsaW9fYWdvc3RvX3NlcHRpZW1icmVfb2N0dWJyZV9ub3ZpZW1icmVfZGljaWVtYnJlJy5zcGxpdCgnXycpLFxuICAgIHNob3J0TW9udGhOYW1lczogJ2VuZV9mZWJfbWFyX2Ficl9tYXlfanVuX2p1bF9hZ29fc2VwX29jdF9ub3ZfZGljJy5zcGxpdCgnXycpLFxuICAgIGZvcm1hdERhdGU6ICclYiAlZCwgJVknLFxuICAgIGN1cnJlbmN5OiAnRVVSJyxcbiAgICBtaW5TdGF5OiAnJW51bWJlcisgbm9jaGVzJyxcbiAgICBtYXhTdGF5OiAnJW51bWJlci0gbm9jaGVzJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ2VzdGFuY2lhIG3DrW5pbWE6ICVudW1iZXIgbm9jaGVzJyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ2VzdGFuY2lhIG3DoXhpbWE6ICVudW1iZXIgbm9jaGVzJyxcbiAgICBoYXNJbnZhbGlkRGF5czogJ3lhIHJlc2VydmFkbycsXG4gICAgc3RhcnRPZldlZWs6IDFcbiAgfSxcbiAgJ2ZyLUZSJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnRGlfTHVfTWFfTWVfSmVfVmVfU2EnLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ2RpbWFuY2hlX2x1bmRpX21hcmRpX21lcmNyZWRpX2pldWRpX3ZlbmRyZWRpX3NhbWVkaScuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ2phbnZpZXJfZsOpdnJpZXJfbWFyc19hdnJpbF9tYWlfanVpbl9qdWlsbGV0X2Fvw7t0X3NlcHRlbWJyZV9vY3RvYnJlX25vdmVtYnJlX2TDqWNlbWJyZScuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdqYW5fZsOpdl9tYXJfYXZyX21haV9qdWluX2p1aWxfYW/Du19zZXBfb2N0X25vdl9kw6ljJy5zcGxpdCgnXycpLFxuICAgIGZvcm1hdERhdGU6ICclZCAlYiwgJVknLFxuICAgIGN1cnJlbmN5OiAnRVVSJyxcbiAgICBtaW5TdGF5OiAnJW51bWJlcisgbnVpdHMnLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBudWl0cycsXG4gICAgaGFzSW52YWxpZE1pblN0YXk6ICdzw6lqb3VyIG1pbmltdW0gOiAlbnVtYmVyIG51aXRzJyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ3PDqWpvdXIgbWF4aW11bSA6ICVudW1iZXIgbnVpdHMnLFxuICAgIGhhc0ludmFsaWREYXlzOiAnZMOpasOgIHLDqXNlcnbDqScsXG4gICAgc3RhcnRPZldlZWs6IDFcbiAgfSxcbiAgJ2l0LUlUJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnRG9fTHVfTWFfTWVfR2lfVmVfU2EnLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ2RvbWVuaWNhX2x1bmVkw6xfbWFydGVkw6xfbWVyY29sZWTDrF9naW92ZWTDrF92ZW5lcmTDrF9zYWJhdG8nLnNwbGl0KCdfJyksXG4gICAgbG9uZ01vbnRoTmFtZXM6ICdnZW5uYWlvX2ZlYmJyYWlvX21hcnpvX2FwcmlsZV9tYWdnaW9fZ2l1Z25vX2x1Z2xpb19hZ29zdG9fc2V0dGVtYnJlX290dG9icmVfbm92ZW1icmVfZGljZW1icmUnLnNwbGl0KCdfJyksXG4gICAgc2hvcnRNb250aE5hbWVzOiAnZ2VuX2ZlYl9tYXJfYXByX21hZ19naXVfbHVnX2Fnb19zZXRfb3R0X25vdl9kaWMnLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyViICVkLCAlWScsXG4gICAgY3VycmVuY3k6ICdFVVInLFxuICAgIG1pblN0YXk6ICclbnVtYmVyKyBub3R0aS4nLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBub3R0aScsXG4gICAgaGFzSW52YWxpZE1pblN0YXk6ICdzb2dnaW9ybm8gbWluaW06ICVudW1iZXIgbm90dGknLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAnc29nZ2lvcm5vIG1hc3NpbW86ICVudW1iZXIgbm90dGknLFxuICAgIGhhc0ludmFsaWREYXlzOiAnZ2nDoCBwcmVub3RhdG8nLFxuICAgIHN0YXJ0T2ZXZWVrOiAxXG4gIH0sXG4gICdzdi1TRSc6IHtcbiAgICBzaG9ydFdlZWtkYXlOYW1lczogJ3PDtl9tw6VfdGlfb25fdG9fZnJfbMO2Jy5zcGxpdCgnXycpLFxuICAgIGxvbmdXZWVrZGF5TmFtZXM6ICdzw7ZuZGFnX23DpW5kYWdfdGlzZGFnX29uc2RhZ190b3JzZGFnX2ZyZWRhZ19sw7ZyZGFnJy5zcGxpdCgnXycpLFxuICAgIGxvbmdNb250aE5hbWVzOiAnamFudWFyaV9mZWJydWFyaV9tYXJzX2FwcmlsX21hal9qdW5pX2p1bGlfYXVndXN0aV9zZXB0ZW1iZXJfb2t0b2Jlcl9ub3ZlbWJlcl9kZWNlbWJlcicuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdqYW5fZmViX21hcl9hcHJfbWFqX2p1bl9qdWxfYXVnX3NlcF9va3Rfbm92X2RlYycuc3BsaXQoJ18nKSxcbiAgICBmb3JtYXREYXRlOiAnJWIgJWQsICVZJyxcbiAgICBjdXJyZW5jeTogJ0VVUicsXG4gICAgbWluU3RheTogJyVudW1iZXIrIG7DpHR0ZXInLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBuw6R0dGVyJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ2tvcnRhc3RlIHZpc3RlbHNlOiAlbnVtYmVyIG7DpHR0ZXInLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAnbWF4aW3DoWxueSBwb2J5dDogJW51bWJlciBuw6R0dGVyJyxcbiAgICBoYXNJbnZhbGlkRGF5czogJ3JlZGFuIGJva2F0JyxcbiAgICBzdGFydE9mV2VlazogMVxuICB9LFxuICAncnUtUlUnOiB7XG4gICAgc2hvcnRXZWVrZGF5TmFtZXM6ICfQktGBX9Cf0L1f0JLRgl/QodGAX9Cn0YJf0J/Rgl/QodCxJy5zcGxpdCgnXycpLFxuICAgIGxvbmdXZWVrZGF5TmFtZXM6ICfQktC+0YHQutGA0LXRgdC10L3RjNC1X9Cf0L7QvdC10LTQtdC70YzQvdC40Lpf0JLRgtC+0YDQvdC40Lpf0KHRgNC10LTQsF/Qp9C10YLQstC10YDQs1/Qn9GP0YLQvdC40YbQsF/QodGD0LHQsdC+0YLQsCcuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ9Cv0L3QstCw0YDRjF/QpNC10LLRgNCw0LvRjF/QnNCw0YDRgl/QkNC/0YDQtdC70Yxf0JzQsNC5X9CY0Y7QvdGMX9CY0Y7Qu9GMX9CQ0LLQs9GD0YHRgl/QodC10L3RgtGP0LHRgNGMX9Ce0LrRgtGP0LHRgNGMX9Cd0L7Rj9Cx0YDRjF/QlNC10LrQsNCx0YDRjCcuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICfQr9C90LJf0KTQtdCyX9Cc0LDRgF/QkNC/0YBf0JzQsNC5X9CY0Y7QvV/QmNGO0Ltf0JDQstCzX9Ch0LXQvV/QntC60YJf0J3QvtGPX9CU0LXQuicuc3BsaXQoJ18nKSxcbiAgICBmb3JtYXREYXRlOiAnJWQuJWIuJVknLFxuICAgIGN1cnJlbmN5OiAn0KDRg9CxLicsXG4gICAgbWluU3RheTogJyVudW1iZXIrINC90L7Rhy4nLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSDQvdC+0YcuJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ9C80LjQvdC40LzQsNC70YzQvdC+0LUg0L/RgNC10LHRi9Cy0LDQvdC4OiAlbnVtYmVyINC90L7Rh9C4JyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ9C80LDQutGB0LjQvNCw0LvRjNC90L7QtSDQv9GA0LXQsdGL0LLQsNC90LjQtTogJW51bWJlciDQvdC+0YfQuCcsXG4gICAgaGFzSW52YWxpZERheXM6ICfQt9Cw0LHRgNC+0L3QuNGA0L7QstCw0L3QviDRg9C20LUnLFxuICAgIHN0YXJ0T2ZXZWVrOiAxXG4gIH0sXG4gICdwbC1QTCc6IHtcbiAgICBzaG9ydFdlZWtkYXlOYW1lczogJ05kX1BuX1d0X8Wacl9Del9QdF9Tbycuc3BsaXQoJ18nKSxcbiAgICBsb25nV2Vla2RheU5hbWVzOiAnbmllZHppZWxhX3BvbmllZHppYcWCZWtfd3RvcmVrX8Wbcm9kYV9jendhcnRla19wacSFdGVrX3NvYm90YScuc3BsaXQoJ18nKSxcbiAgICBsb25nTW9udGhOYW1lczogJ3N0eWN6ZcWEX2x1dHlfbWFyemVjX2t3aWVjaWXFhF9tYWpfY3plcndpZWNfbGlwaWVjX3NpZXJwaWXFhF93cnplc2llxYRfcGHFumR6aWVybmlrX2xpc3RvcGFkX2dydWR6aWXFhCcuc3BsaXQoJ18nKSxcbiAgICBzaG9ydE1vbnRoTmFtZXM6ICdzdHlfbHV0X21hcl9rd2lfbWFqX2N6ZV9saXBfc2llX3dyel9wYcW6X2xpc19ncnUnLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyVkLiViLiVZJyxcbiAgICBjdXJyZW5jeTogJ1BMTicsXG4gICAgbWluU3RheTogJyVudW1iZXIrIG5vY2UnLFxuICAgIG1heFN0YXk6ICclbnVtYmVyLSBub2NlJyxcbiAgICBoYXNJbnZhbGlkTWluU3RheTogJ21pbmltYWxueSBwb2J5OiAlbnVtYmVyIG5vY2UnLFxuICAgIGhhc0ludmFsaWRNYXhTdGF5OiAnbWFrc3ltYWxueSBwb2J5dDogJW51bWJlciBub2NlJyxcbiAgICBoYXNJbnZhbGlkRGF5czogJ2p1xbwgemFyZXplcndvd2FuZScsXG4gICAgc3RhcnRPZldlZWs6IDFcbiAgfSxcbiAgJ25sLU5MJzoge1xuICAgIHNob3J0V2Vla2RheU5hbWVzOiAnWm9fTWFfRGlfV29fRG9fVnJfWmEnLnNwbGl0KCdfJyksXG4gICAgbG9uZ1dlZWtkYXlOYW1lczogJ1pvbmRhZ19NYWFuZGFnX0RpbnNkYWdfV29lbnNkYWdfRG9uZGVyZGFnX1ZyaWpkYWdfWmF0ZXJkYWcnLnNwbGl0KCdfJyksXG4gICAgbG9uZ01vbnRoTmFtZXM6ICdKYW51YXJpX0ZlYnJ1YXJpX01hYXJ0X0FwcmlsX01laV9KdW5pX0p1bGlfQXVndXN0dXNfU2VwdGVtYmVyX09rdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXInLnNwbGl0KCdfJyksXG4gICAgc2hvcnRNb250aE5hbWVzOiAnSmFuX0ZlYl9NYWFfQXByX01laV9KdW5fSnVsX0F1Z19TZXBfT2t0X05vdl9EZWMnLnNwbGl0KCdfJyksXG4gICAgZm9ybWF0RGF0ZTogJyViICVkLCAlWScsXG4gICAgY3VycmVuY3k6ICdFVVInLFxuICAgIG1pblN0YXk6ICclbnVtYmVyKyBuYWNodGVuJyxcbiAgICBtYXhTdGF5OiAnJW51bWJlci0gbmFjaHRlbicsXG4gICAgaGFzSW52YWxpZE1pblN0YXk6ICdtaW5pbWFhbCB2ZXJibGlqZjogJW51bWJlciBuYWNodGVuJyxcbiAgICBoYXNJbnZhbGlkTWF4U3RheTogJ21heGltYWFsIHZlcmJsaWpmOiAlbnVtYmVyIG5hY2h0ZW4nLFxuICAgIGhhc0ludmFsaWREYXlzOiAnYWwgZ2Vib2VrdCcsXG4gICAgc3RhcnRPZldlZWs6IDFcbiAgfVxufTtcblxuLy8gQWRkIGFsaWFzZXNcbmxvY2FsZXMgPSBPYmplY3QuYXNzaWduKHtcbiAgZW46IGxvY2FsZXNbJ2VuLVVTJ10sXG4gIGRlOiBsb2NhbGVzWydkZS1ERSddLFxuICBlczogbG9jYWxlc1snZXMtRVMnXSxcbiAgZnI6IGxvY2FsZXNbJ2ZyLUZSJ10sXG4gIGl0OiBsb2NhbGVzWydpdC1JVCddLFxuICBzdjogbG9jYWxlc1snc3YtU1YnXSxcbiAgcnU6IGxvY2FsZXNbJ3J1LVJVJ10sXG4gIHBsOiBsb2NhbGVzWydwbC1QTCddLFxuICBubDogbG9jYWxlc1snbmwtTkwnXVxufSwgbG9jYWxlcyk7XG5cbmV4cG9ydCBkZWZhdWx0IGxvY2FsZXM7XG4iLCJpbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzL2NhbGVuZGFyLnNjc3MnO1xuXG5leHBvcnQgY29uc3QgbWFpbiAgPSBgPGRpdiBjbGFzcz1cIiR7c3R5bGVzLm1vbnRoc1dyYXBwZXJ9XCI+PC9kaXY+YDtcblxuZXhwb3J0IGNvbnN0IHRvb2x0aXAgPSBgPGRpdiBjbGFzcz1cIiR7c3R5bGVzLnRvb2x0aXB9XCIgcm9sZT1cInRvb2x0aXBcIj48c3Bhbj48L3NwYW4+PGRpdiBjbGFzcz1cIiR7c3R5bGVzLnRvb2x0aXBBcnJvd31cIiBkYXRhLXBvcHBlci1hcnJvdz1cInRydWVcIj48L2Rpdj48L2Rpdj5gO1xuXG5leHBvcnQgY29uc3QgbW9udGggPSBgXG4gIDxkaXYgY2xhc3M9XCIke3N0eWxlcy5tQ2VsbH0ganMtbW9udGhcIj5cbiAgICA8dGFibGUgY2xhc3M9XCIke3N0eWxlcy5tb250aH1cIiByb2xlPVwibW9udGhcIj5cbiAgICAgIDxjYXB0aW9uPjxkaXYgY2xhc3M9XCIke3N0eWxlcy5jYXB0aW9ufVwiPjwvZGl2PjwvY2FwdGlvbj5cbiAgICAgIDx0aGVhZCBjbGFzcz1cIiR7c3R5bGVzLnRhYmxlSGVhZGVyfVwiPjx0cj48L3RyPjwvdGhlYWQ+XG4gICAgICA8dGJvZHkgY2xhc3M9XCIke3N0eWxlcy5ib2R5fVwiPjwvdGJvZHk+XG4gICAgPC90YWJsZT5cbiAgPC9kaXY+XG5gO1xuXG5leHBvcnQgY29uc3Qgd2Vla0RheUxhYmVsID0gKGxhYmVsKSA9PiBgPHRoIGNsYXNzPVwiJHtzdHlsZXMudGh9XCI+JHtsYWJlbH08L3RoPmA7XG5cbmV4cG9ydCBjb25zdCB3ZWVrRGF5ID0gKFxuICBsYWJlbCxcbiAgZGlzYWJsZWQsXG4gIGlzQXZhaWxhYmxlSW4sXG4gIGlzQXZhaWxhYmxlT3V0LFxuICBpc0N1cnJlbnREYXksXG4gIG1pblN0YXksXG4gIG1pblN0YXlULFxuICBtYXhTdGF5LFxuICBtYXhTdGF5VCxcbiAgcmF0ZSxcbiAgcmF0ZVRcbikgPT4gYFxuICA8dGQgJHtkaXNhYmxlZCA/IGBkYXRhLWRpc2FibGVkPSR7ZGlzYWJsZWR9YCA6ICdkYXRhLWVuYWJsZWQnfVxuICAgICAgICR7aXNBdmFpbGFibGVPdXQgPyAnZGF0YS1hdmFpbGFibGUtb3V0JyA6ICcnfVxuICAgICAgICR7aXNBdmFpbGFibGVJbiA/ICdkYXRhLWF2YWlsYWJsZS1pbicgOiAnJ31cbiAgICAgICAke21pblN0YXkgPyBgZGF0YS1taW4tc3RheT0ke21pblN0YXl9YCA6ICcnfVxuICAgICAgICR7bWF4U3RheSA/IGBkYXRhLW1heC1zdGF5PSR7bWF4U3RheX1gIDogJyd9XG4gICAgICAgZGF0YS12YWx1ZT1cIiR7bGFiZWx9XCJcbiAgICAgICBjbGFzcz1cIiR7c3R5bGVzLmNlbGx9ICR7aXNDdXJyZW50RGF5ID8gc3R5bGVzLnRvZGF5IDogJyd9XCI+XG4gICAgICAgPGRpdiBjbGFzcz1cIiR7c3R5bGVzLmNudH1cIiByb2xlPVwiZGF5LXZhbHVlXCI+XG4gICAgICAgICR7bGFiZWx9XG4gICAgICAgIDxkaXYgY2xhc3M9XCIke3N0eWxlcy5pbmZvfVwiPlxuICAgICAgICAgICR7cmF0ZSA/IGA8c3BhbiBkYXRhLXJhdGU+JHtyYXRlVH08L3NwYW4+YCA6ICcnfVxuICAgICAgICAgICR7bWluU3RheSAmJiBtaW5TdGF5VCA/IGA8c3BhbiBkYXRhLW1pbi1zdGF5LXQ+JHttaW5TdGF5VH08L3NwYW4+YCA6ICcnfVxuICAgICAgICAgICR7bWF4U3RheSAmJiBtYXhTdGF5VCA/IGA8c3BhbiBkYXRhLW1heC1zdGF5LXQ+JHttYXhTdGF5VH08L3NwYW4+YCA6ICcnfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICA8L3RkPlxuYDtcblxuZXhwb3J0IGNvbnN0IGZvcndhcmQgPSBgXG4gIDxidXR0b24gY2xhc3M9XCIke3N0eWxlcy5mb3J3YXJkfVwiIHJvbGU9XCJidXR0b25cIj5cbiAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMTAwMCAxMDAwXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCI+XG4gICAgICA8cGF0aCBkPVwiTTY5NC40IDI0Mi40bDI0OS4xIDI0OS4xYzExIDExIDExIDIxIDAgMzJMNjk0LjQgNzcyLjdjLTUgNS0xMCA3LTE2IDdzLTExLTItMTYtN2MtMTEtMTEtMTEtMjEgMC0zMmwyMTAuMS0yMTAuMUg2Ny4xYy0xMyAwLTIzLTEwLTIzLTIzczEwLTIzIDIzLTIzaDgwNS40TDY2Mi40IDI3NC41Yy0yMS0yMS4xIDExLTUzLjEgMzItMzIuMXpcIj48L3BhdGg+XG4gICAgPC9zdmc+XG4gIDwvYnV0dG9uPlxuYDtcblxuZXhwb3J0IGNvbnN0IGJhY2sgPSBgXG4gIDxidXR0b24gY2xhc3M9XCIke3N0eWxlcy5iYWNrfVwiIHJvbGU9XCJidXR0b25cIj5cbiAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMTAwMCAxMDAwXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCI+XG4gICAgICA8cGF0aCBkPVwiTTMzNi4yIDI3NC41bC0yMTAuMSAyMTBoODA1LjRjMTMgMCAyMyAxMCAyMyAyM3MtMTAgMjMtMjMgMjNIMTI2LjFsMjEwLjEgMjEwLjFjMTEgMTEgMTEgMjEgMCAzMi01IDUtMTAgNy0xNiA3cy0xMS0yLTE2LTdsLTI0OS4xLTI0OWMtMTEtMTEtMTEtMjEgMC0zMmwyNDkuMS0yNDkuMWMyMS0yMS4xIDUzIDEwLjkgMzIgMzJ6XCI+PC9wYXRoPlxuICAgIDwvc3ZnPlxuICA8L2J1dHRvbj5cbmA7XG5cbmV4cG9ydCBjb25zdCB3ZWVrRGF5UGxhY2Vob2xkZXIgPSAnPHRkPjwvdGQ+JztcblxuLyogZXNsaW50IGFycm93LWJvZHktc3R5bGU6IDAgKi9cbmV4cG9ydCBjb25zdCB3ZWVrUm93ID0gKG51bSkgPT4ge1xuICByZXR1cm4ge1xuICAgIG9wZW46IGA8dHIgY2xhc3M9XCJqcy1ib2R5LXJvdy0ke251bX1cIj5gLFxuICAgIGNsb3NlOiAnPC90cj4nXG4gIH07XG59O1xuIiwiLyogZ2xvYmFsIGNvbnNvbGUgKi9cbmltcG9ydCB7IHN0cmZ0aW1lLCBzdHJwdGltZSB9IGZyb20gJ3N0cnRpbWUnO1xuaW1wb3J0IHsgaXMgfSBmcm9tICd3aWRnZXQtdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgZGF0ZVRvSXNvID0gKHllYXIsIG1vbnRoLCBkYXksIGlzU3RyaW5nID0gZmFsc2UpID0+IHtcbiAgZnVuY3Rpb24gcGFkKG51bWJlcikge1xuICAgIGlmIChudW1iZXIgPCAxMCkge1xuICAgICAgcmV0dXJuIGAwJHtudW1iZXJ9YDtcbiAgICB9XG4gICAgcmV0dXJuIG51bWJlcjtcbiAgfVxuXG4gIGlmIChpc1N0cmluZykge1xuICAgIHJldHVybiBgJHt5ZWFyfS0ke3BhZChtb250aCArIDEpfS0ke3BhZChkYXkpfWA7XG4gIH1cblxuICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXksIDEyLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgZGF0ZVRvQXJyYXkgPSAodmFsLCBmb3JtYXQsIGxvY2FsZSkgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRhdGUgPSBzdHJwdGltZSh2YWwsIGZvcm1hdCwgbG9jYWxlKTtcbiAgICBjb25zdCBhICAgID0gc3RyZnRpbWUoZGF0ZSwgJyVZLSVtLSVkJykuc3BsaXQoJy0nKTtcblxuICAgIHJldHVybiBbXG4gICAgICBwYXJzZUludChhWzBdKSwgLy8geWVhclxuICAgICAgcGFyc2VJbnQoYVsxXSAtIDEpLCAvLyBtb250aCBpbmRleFxuICAgICAgcGFyc2VJbnQoYVsyXSkgLy8gZGF5XG4gICAgXTtcbiAgfSBjYXRjaChlKSB7XG4gICAgaWYgKGlzKGUubWVzc2FnZSkpIHtcbiAgICAgIGNvbnNvbGUubG9nKGUubWVzc2FnZSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGlzTGF0ZXIgPSAoc3RhcnQsIGVuZCkgPT4gZGF0ZVRvSXNvKC4uLnN0YXJ0LCB0cnVlKSA8IGRhdGVUb0lzbyguLi5lbmQsIHRydWUpO1xuXG5leHBvcnQgY29uc3QgaXNDdXJyZW50ID0gKHN0YXJ0LCBlbmQpID0+IGRhdGVUb0lzbyguLi5zdGFydCwgdHJ1ZSkgPT0gZGF0ZVRvSXNvKC4uLmVuZCwgdHJ1ZSk7XG5cbmV4cG9ydCBjb25zdCBtb250aERpZmYgPSAoc3RhcnQsIGVuZCkgPT4ge1xuICByZXR1cm4gZW5kLmdldE1vbnRoKCkgLSBzdGFydC5nZXRNb250aCgpICsgKDEyICogKGVuZC5nZXRGdWxsWWVhcigpIC0gc3RhcnQuZ2V0RnVsbFllYXIoKSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRpb25PZkNlbGwgPSAoY2VsbCkgPT4ge1xuICBpZiAoaXMoY2VsbC5kYXRhc2V0LmVuYWJsZWQpIHx8IGlzKGNlbGwuZGF0YXNldC5hdmFpbGFibGVJbikgfHwgaXMoY2VsbC5kYXRhc2V0LmF2YWlsYWJsZU91dCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCB0Rm9ybWF0dGVyID0gKHZhbHVlLCBzdHIpID0+IHN0ci5yZXBsYWNlKCclbnVtYmVyJywgdmFsdWUpO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2dldFVybC5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8wX19fID0gbmV3IFVSTChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSUyN2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJTI3IHZpZXdCb3g9JTI3MCAwIDMyIDMwLjk3JTI3JTNFJTNDcGF0aCBkPSUyN00zMiwxNS40OGExNi41MiwxNi41MiwwLDAsMS0xLjM3LDYuMjgsMTYuMzUsMTYuMzUsMCwwLDEtOSw4LjYzLDE1Ljg3LDE1Ljg3LDAsMCwxLTE3LjMtMy43OEExNS40MywxNS40MywwLDAsMSw0LjcyLDQuNzIsMTUsMTUsMCwwLDEsMTUuNDkuNTJhMTQuNzYsMTQuNzYsMCwwLDEsMTAuNCw0LjU2QTE0Ljc3LDE0Ljc3LDAsMCwxLDI5LDkuOWExNC40NSwxNC40NSwwLDAsMSwuODUsMy4zNWguMTNBMi4wNiwyLjA2LDAsMCwxLDMyLDE1LjMxYS45MS45MSwwLDAsMSwwLC4xN1pNMjguNzIsMTBhMTQuMjcsMTQuMjcsMCwwLDAtMy4yLTQuNTUsMTQsMTQsMCwwLDAtMTAtMy45QTEzLjcyLDEzLjcyLDAsMCwwLDMsMTAuM2ExMy40MywxMy40MywwLDAsMCwuMjQsMTAuMjcsMTMuMDUsMTMuMDUsMCwwLDAsMTIuMjgsNy44MiwxMi45MiwxMi45MiwwLDAsMCw0Ljg4LTEuMSwxMi42NSwxMi42NSwwLDAsMCw0LjA2LTIuODcsMTIuNDgsMTIuNDgsMCwwLDAsMi42Mi00LjE1LDEyLjI0LDEyLjI0LDAsMCwwLC44Mi00Ljc5aDBhLjkxLjkxLDAsMCwxLDAtLjE3LDIuMDcsMi4wNywwLDAsMSwxLjg0LTIuMDUsMTQuMjcsMTQuMjcsMCwwLDAtMS0zLjI2WiUyNyB0cmFuc2Zvcm09JTI3dHJhbnNsYXRlJTI4MCAtMC41MSUyOSUyNy8lM0UlM0Mvc3ZnJTNFXCIsIGltcG9ydC5tZXRhLnVybCk7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzBfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIGxvYWRlclxcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbkAtd2Via2l0LWtleWZyYW1lcyBCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19ib29raW5nc3luYy1zcGluIHtcXG4gIGZyb20ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxcbiAgdG8ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0gfVxcblxcbkBrZXlmcmFtZXMgQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYm9va2luZ3N5bmMtc3BpbiB7XFxuICBmcm9tIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cXG4gIHRvIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXI6OmJlZm9yZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XFxuICBjb250ZW50OiAnJzsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcjo6YWZ0ZXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiA1MCU7XFxuICBsZWZ0OiA1MCU7XFxuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcbiAgYmFja2dyb3VuZC1zaXplOiAxMDAlO1xcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiICsgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMF9fXyArIFwiKTtcXG4gIGhlaWdodDogMjBweDtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgbWFyZ2luOiAtMTBweCAwIDAgLTEwcHg7XFxuICBjb250ZW50OiAnJztcXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19ib29raW5nc3luYy1zcGluIDJzIGluZmluaXRlIGxpbmVhcjtcXG4gIGFuaW1hdGlvbjogQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYm9va2luZ3N5bmMtc3BpbiAycyBpbmZpbml0ZSBsaW5lYXI7XFxuICBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyOjpiZWZvcmUsIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcjo6YWZ0ZXIge1xcbiAgei1pbmRleDogMTAwMDtcXG4gIG9wYWNpdHk6IDA7XFxuICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC4yNXMgZWFzZS1pbi1vdXQ7XFxuICAtby10cmFuc2l0aW9uOiBvcGFjaXR5IDAuMjVzIGVhc2UtaW4tb3V0O1xcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjI1cyBlYXNlLWluLW91dDsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhci5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19sb2FkaW5nOjpiZWZvcmUsIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhci5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19sb2FkaW5nOjphZnRlciB7XFxuICBvcGFjaXR5OiAxO1xcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gIGFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIGRyb3Bkb3duXFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Ryb3BCYXNpYyB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBkaXNwbGF5OiBub25lO1xcbiAgbWF4LXdpZHRoOiAxMDAlO1xcbiAgYm94LXNoYWRvdzogMXB4IDVweCA5cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkICNlMGUwZTA7XFxuICBiYWNrZ3JvdW5kOiAjZmZmO1xcbiAgbWFyZ2luOiAwO1xcbiAgcGFkZGluZzogMWVtO1xcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XFxuICBsaW5lLWhlaWdodDogMS41ZW07XFxuICB6LWluZGV4OiAxMDsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Ryb3BCYXNpYy5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X192aXNpYmxlIHtcXG4gICAgZGlzcGxheTogYmxvY2s7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhci5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kcm9wQmFzaWMgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhcHRpb24ge1xcbiAgICBtYXJnaW4tYm90dG9tOiAuN2VtOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZHJvcEJhc2ljIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkLFxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Ryb3BCYXNpYyAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYmFjayB7XFxuICAgIHRvcDogMWVtO1xcbiAgICBsZWZ0OiAxZW07IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhci5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kcm9wQmFzaWMgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvcndhcmQge1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogMWVtOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2VsbDpmaXJzdC1jaGlsZCB7XFxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XFxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsOmxhc3QtY2hpbGQge1xcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsOjpiZWZvcmUsIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGw6OmFmdGVyIHtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXJnaW46IDA7XFxuICBjb250ZW50OiAnJztcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiBza2V3KC0zMGRlZyk7XFxuICAtbXMtdHJhbnNmb3JtOiBza2V3KC0zMGRlZyk7XFxuICB0cmFuc2Zvcm06IHNrZXcoLTMwZGVnKTtcXG4gIGJvcmRlci1yYWRpdXM6IDZweDtcXG4gIHotaW5kZXg6IDA7XFxuICBoZWlnaHQ6IGNhbGMoMTAwJSArIDJweCk7XFxuICB0b3A6IC0xcHg7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsOjpiZWZvcmUge1xcbiAgbGVmdDogLTU1JTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGw6OmFmdGVyIHtcXG4gIGxlZnQ6IDU1JTsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBzZWxlY3Rpb25zLCBsZWZ0IC0gY2VudGVyIC0gcmlnaHRcXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGRpc2FibGVkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1kaXNhYmxlZD1cXFwibGVmdFxcXCJdOjphZnRlciB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1kaXNhYmxlZC1iZy1jb2xvciwgI2YwZjBmMCk7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1kaXNhYmxlZC1iZy1jb2xvciwgI2YwZjBmMCk7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItZGlzYWJsZWQtY29sb3IsICNiZmJmYmYpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXTo6YmVmb3JlLCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1kaXNhYmxlZC1iZy1jb2xvciwgI2YwZjBmMCk7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWRpc2FibGVkPVxcXCJyaWdodFxcXCJdOjpiZWZvcmUge1xcbiAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItZGlzYWJsZWQtYmctY29sb3IsICNmMGYwZjApOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBoaWdobGlnaHRlZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImxlZnRcXFwiXTo6YWZ0ZXIge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtY29sb3IsICMzNzM3MzcpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJjZW50ZXJcXFwiXTo6YmVmb3JlLCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJjZW50ZXJcXFwiXTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJyaWdodFxcXCJdOjpiZWZvcmUge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGludmFsaWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImxlZnRcXFwiXSB7XFxuICBiYWNrZ3JvdW5kOiBub25lOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImxlZnRcXFwiXTo6YmVmb3JlIHtcXG4gICAgZGlzcGxheTogYmxvY2s7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaW52YWxpZD1cXFwibGVmdFxcXCJdOjphZnRlciB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCAjZTNlM2UzKTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaW52YWxpZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1iZy1jb2xvciwgI2UzZTNlMyk7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1jb2xvciwgI2IyYjJiMik7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaW52YWxpZD1cXFwiY2VudGVyXFxcIl06OmJlZm9yZSwgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJjZW50ZXJcXFwiXTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCAjZTNlM2UzKTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaW52YWxpZD1cXFwicmlnaHRcXFwiXSB7XFxuICBiYWNrZ3JvdW5kOiBub25lOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcInJpZ2h0XFxcIl06OmJlZm9yZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCAjZTNlM2UzKTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJyaWdodFxcXCJdOjphZnRlciB7XFxuICAgIGRpc3BsYXk6IGJsb2NrOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxsIGhvdmVyIGRpcmVjdFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXJlY3RbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWRdIHtcXG4gIGJhY2tncm91bmQ6IG5vbmU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXJlY3RbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWRdOjpiZWZvcmUge1xcbiAgICBkaXNwbGF5OiBibG9jazsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2RpcmVjdFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZF06OmFmdGVyIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXJlY3RbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWQtb2Zmc2V0XSB7XFxuICBiYWNrZ3JvdW5kOiBub25lOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZGlyZWN0W2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkLW9mZnNldF06OmJlZm9yZSB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXJlY3RbZGF0YS10aGVtZT1cXFwic2tld1xcXCJdIFtkYXRhLWhvdmVyZWQtb2Zmc2V0XTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBibG9jazsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbCBob3ZlciByZXZlcnNlZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19yZXZlcnNlZFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZF0ge1xcbiAgYmFja2dyb3VuZDogbm9uZTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3JldmVyc2VkW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkXTo6YmVmb3JlIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3JldmVyc2VkW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkXTo6YWZ0ZXIge1xcbiAgICBkaXNwbGF5OiBibG9jazsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19yZXZlcnNlZFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZC1vZmZzZXRdIHtcXG4gIGJhY2tncm91bmQ6IG5vbmU7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19yZXZlcnNlZFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0gW2RhdGEtaG92ZXJlZC1vZmZzZXRdOjpiZWZvcmUge1xcbiAgICBkaXNwbGF5OiBibG9jazsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3JldmVyc2VkW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSBbZGF0YS1ob3ZlcmVkLW9mZnNldF06OmFmdGVyIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsOjpiZWZvcmUsIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsOjphZnRlciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgdG9wOiAwO1xcbiAgbWFyZ2luOiAwO1xcbiAgY29udGVudDogJyc7XFxuICB6LWluZGV4OiAwOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIHNlbGVjdGlvbnMsIGxlZnQgLSBjZW50ZXIgLSByaWdodFxcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgZGlzYWJsZWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1kaXNhYmxlZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItZGlzYWJsZWQtY29sb3IsICNiZmJmYmYpOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBoaWdobGlnaHRlZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJsZWZ0XFxcIl0ge1xcbiAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWNvbG9yLCAjMzczNzM3KTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImxlZnRcXFwiXTo6YmVmb3JlIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpO1xcbiAgICBvcGFjaXR5OiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJnLW9wYWNpdHksIDAuNSk7XFxuICAgIHdpZHRoOiA1MCU7XFxuICAgIGxlZnQ6IDUwJTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImxlZnRcXFwiXTo6YWZ0ZXIge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYm9yZGVyLXJhZGl1cywgNnB4KTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWhpZ2hsaWdodGVkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtY29sb3IsICMzNzM3MzcpOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwiY2VudGVyXFxcIl06OmJlZm9yZSB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTtcXG4gICAgb3BhY2l0eTogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1iZy1vcGFjaXR5LCAwLjUpOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcInJpZ2h0XFxcIl0ge1xcbiAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWNvbG9yLCAjMzczNzM3KTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcInJpZ2h0XFxcIl06OmJlZm9yZSB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCAjYjdjYWZiKTtcXG4gICAgb3BhY2l0eTogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1iZy1vcGFjaXR5LCAwLjUpO1xcbiAgICB3aWR0aDogNTAlO1xcbiAgICByaWdodDogNTAlOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1oaWdobGlnaHRlZD1cXFwicmlnaHRcXFwiXTo6YWZ0ZXIge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1oaWdobGlnaHRlZC1iZy1jb2xvciwgI2I3Y2FmYik7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYm9yZGVyLXJhZGl1cywgNnB4KTsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgaW52YWxpZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImxlZnRcXFwiXSB7XFxuICBjb2xvcjogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1jb2xvciwgI2IyYjJiMik7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImxlZnRcXFwiXTo6YmVmb3JlIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1iZy1jb2xvciwgI2UzZTNlMyk7XFxuICAgIG9wYWNpdHk6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYmctb3BhY2l0eSwgMC41KTtcXG4gICAgd2lkdGg6IDUwJTtcXG4gICAgbGVmdDogNTAlOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJsZWZ0XFxcIl06OmFmdGVyIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1iZy1jb2xvciwgI2UzZTNlMyk7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYm9yZGVyLXJhZGl1cywgNnB4KTsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIFtkYXRhLWludmFsaWQ9XFxcImNlbnRlclxcXCJdIHtcXG4gIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWNvbG9yLCAjYjJiMmIyKTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaW52YWxpZD1cXFwiY2VudGVyXFxcIl06OmJlZm9yZSB7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtYmctY29sb3IsICNlM2UzZTMpO1xcbiAgICBvcGFjaXR5OiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJnLW9wYWNpdHksIDAuNSk7IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSBbZGF0YS1pbnZhbGlkPVxcXCJyaWdodFxcXCJdIHtcXG4gIGNvbG9yOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWNvbG9yLCAjYjJiMmIyKTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaW52YWxpZD1cXFwicmlnaHRcXFwiXTo6YmVmb3JlIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1iZy1jb2xvciwgI2UzZTNlMyk7XFxuICAgIG9wYWNpdHk6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYmctb3BhY2l0eSwgMC41KTtcXG4gICAgd2lkdGg6IDUwJTtcXG4gICAgcmlnaHQ6IDUwJTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaW52YWxpZD1cXFwicmlnaHRcXFwiXTo6YWZ0ZXIge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1pbnZhbGlkLWJnLWNvbG9yLCAjZTNlM2UzKTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1ib3JkZXItcmFkaXVzLCA2cHgpOyB9XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxsIGhvdmVyXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaG92ZXJlZF06bm90KFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXSkge1xcbiAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWNvbG9yLCAjMzczNzM3KTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0gW2RhdGEtaG92ZXJlZF06bm90KFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXSk6OmFmdGVyIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaGlnaGxpZ2h0ZWQtYmctY29sb3IsICNiN2NhZmIpO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1jZWxsLWJvcmRlci1yYWRpdXMsIDZweCk7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgY29sb3JzXFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGZvbnQ6IDFyZW0vMS40IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBiYWNrZ3JvdW5kOiAjZmZmOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhcHRpb24ge1xcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcXG4gICAgZGlzcGxheTogLW1zLWZsZXhib3g7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjtcXG4gICAgLW1zLWZsZXgtcGFjazogY2VudGVyO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjtcXG4gICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgbGluZS1oZWlnaHQ6IDJyZW07XFxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XFxuICAgIG1hcmdpbi1ib3R0b206IDIuM2VtO1xcbiAgICBwYWRkaW5nLXRvcDogMDtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXAge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci10b29sdGlwLWJnLWNvbG9yLCAjMzMzKTtcXG4gICAgY29sb3I6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLXRvb2x0aXAtY29sb3IsICNmZmYpO1xcbiAgICBmb250LXdlaWdodDogYm9sZDtcXG4gICAgcGFkZGluZzogNHB4IDhweDtcXG4gICAgZm9udC1zaXplOiAxM3B4O1xcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICAgIHotaW5kZXg6IDUwMDtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7IH1cXG4gICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwQXJyb3cge1xcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxcbiAgICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcEFycm93LCAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBBcnJvdzo6YmVmb3JlIHtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIHdpZHRoOiA4cHg7XFxuICAgICAgICBoZWlnaHQ6IDhweDtcXG4gICAgICAgIGJhY2tncm91bmQ6IGluaGVyaXQ7IH1cXG4gICAgICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBBcnJvdzo6YmVmb3JlIHtcXG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XFxuICAgICAgICBjb250ZW50OiAnJztcXG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsgfVxcbiAgICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj0ndG9wJ10gPiAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcEFycm93IHtcXG4gICAgICBib3R0b206IC00cHg7IH1cXG4gICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwW2RhdGEtcG9wcGVyLXBsYWNlbWVudF49J2JvdHRvbSddID4gLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBBcnJvdyB7XFxuICAgICAgdG9wOiAtNHB4OyB9XFxuICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcFtkYXRhLXBvcHBlci1wbGFjZW1lbnRePSdsZWZ0J10gPiAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9vbHRpcEFycm93IHtcXG4gICAgICByaWdodDogLTRweDsgfVxcbiAgICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj0ncmlnaHQnXSA+IC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwQXJyb3cge1xcbiAgICAgIGxlZnQ6IC00cHg7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbW9udGhzV3JhcHBlciB7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLW1zLWZsZXgtd3JhcDogd3JhcDtcXG4gICAgZmxleC13cmFwOiB3cmFwO1xcbiAgICBnYXA6IDJlbTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19tQ2VsbCB7XFxuICAgIGZvbnQtc2l6ZTogMC44NzVlbTtcXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgLW1zLWZsZXg6IDEgMSAyNSU7XFxuICAgIGZsZXg6IDEgMSAyNSU7IH1cXG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTBweCkge1xcbiAgICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbUNlbGwge1xcbiAgICAgICAgLXdlYmtpdC1ib3gtZmxleDogMTtcXG4gICAgICAgIC1tcy1mbGV4OiAxIDEgMTAwJTtcXG4gICAgICAgIGZsZXg6IDEgMSAxMDAlOyB9IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbW9udGgge1xcbiAgICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xcbiAgICBib3JkZXItc3BhY2luZzogMCAwLjJlbTtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICB3aWR0aDogMTAwJTsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190YWJsZUhlYWRlcixcXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYm9keSB7XFxuICAgIG1hcmdpbjogMDsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190aCB7XFxuICAgIGZvbnQtc2l6ZTogMC44NWVtO1xcbiAgICBjb2xvcjogI2FhYWFhYTtcXG4gICAgaGVpZ2h0OiAyNXB4O1xcbiAgICB3aWR0aDogMzBweDtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGwge1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgYm9yZGVyOiAwO1xcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbiAgICBjb2xvcjogIzQ0NDQ0NDtcXG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgd2lkdGg6IDMwcHg7IH1cXG4gICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jZWxsLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3RvZGF5IHtcXG4gICAgICBmb250LXdlaWdodDogYm9sZDsgfVxcbiAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jbnQge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICB6LWluZGV4OiAxO1xcbiAgICBmb250LXNpemU6IDFlbTtcXG4gICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7IH1cXG4gICAgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jbnQ6OmFmdGVyIHtcXG4gICAgICBjb250ZW50OiAnJztcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICBtYXJnaW4tdG9wOiAxMDAlOyB9XFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2luZm8ge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGJvdHRvbTogMDtcXG4gICAgbGVmdDogMDtcXG4gICAgZm9udC1zaXplOiAwLjY1ZW07XFxuICAgIHBhZGRpbmc6IDFweCAzcHg7XFxuICAgIGNvbG9yOiByZ2JhKDYwLCA2MCwgNjAsIDAuNSk7XFxuICAgIHJpZ2h0OiAwOyB9XFxuICAgIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9faW5mbyA+IHNwYW4ge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb2N1cyxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZGlzYWJsZWQsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3NlbGVjdGVkLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19yZXZlcnNlZCxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZGlyZWN0LFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19zZWxlY3RpbmdSZXZlcnNlZCxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fc2VsZWN0aW5nRGlyZWN0LFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19hY3Rpb25zRW5hYmxlZCxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9faGlnaGxpZ2h0ZWQsXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ludmFsaWQge1xcbiAgY29sb3I6IGluaGVyaXQ7IH1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGwgaG92ZXIgY3Vyc29yc1xcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhcltkYXRhLXNlbGVjdGFibGU9XFxcInRydWVcXFwiXSAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2VsbCAqIHtcXG4gIGN1cnNvcjogcG9pbnRlcjsgfVxcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBidXR0b25zXFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYmFjayB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgaGVpZ2h0OiAycmVtO1xcbiAgd2lkdGg6IDIzcHg7XFxuICBmaWxsOiAjNDQ0NDQ0O1xcbiAgcGFkZGluZzogMDtcXG4gIGJvcmRlci1yYWRpdXM6IDFweDtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG4gIHotaW5kZXg6IDI7IH1cXG4gIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZCBzdmcsXFxuICAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2JhY2sgc3ZnIHtcXG4gICAgaGVpZ2h0OiBpbmhlcml0O1xcbiAgICB3aWR0aDogaW5oZXJpdDsgfVxcblxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZCB7XFxuICByaWdodDogMDtcXG4gIGxlZnQ6IGF1dG87IH1cXG5cXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvcndhcmQ6YWN0aXZlLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZDpmb2N1cyxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2JhY2s6YWN0aXZlLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYmFjazpmb2N1cyB7XFxuICBvdXRsaW5lOiBub25lOyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkOmhvdmVyLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYmFjazpob3ZlciB7XFxuICBmaWxsOiAjMzg5NWQ5OyB9XFxuXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19mb3J3YXJkW2Rpc2FibGVkXSxcXG4uQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fY2FsZW5kYXIgLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2ZvcndhcmRbZGlzYWJsZWRdOmhvdmVyLFxcbi5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jYWxlbmRhciAuQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fYmFja1tkaXNhYmxlZF0sXFxuLkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyIC5Cb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19iYWNrW2Rpc2FibGVkXTpob3ZlciB7XFxuICBvcGFjaXR5OiAwLjU7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxuICBmaWxsOiAjNDQ0NDQ0OyB9XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vc3JjL3N0eWxlcy9sb2FkaW5nLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zdHlsZXMvY2FsZW5kYXIuc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3N0eWxlcy9zdmctdXJpLnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zdHlsZXMvX3ZhcmlhYmxlcy5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi9zcmMvc3R5bGVzL2Ryb3Auc2Nzc1wiLFwid2VicGFjazovLy4vc3JjL3N0eWxlcy90aGVtZS1za2V3LnNjc3NcIixcIndlYnBhY2s6Ly8uL3NyYy9zdHlsZXMvdGhlbWUtYmFzaWMuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTs7Ozt3RENJd0Q7QURFeEQ7RUFDRTtJQUNFLCtCQUErQjtJQUMvQix1QkFBdUIsRUFBQTtFQUd6QjtJQUNFLGlDQUFpQztJQUNqQyx5QkFBeUIsRUFBQSxFQUFBOztBQUk3QjtFQUNFO0lBQ0UsK0JBQStCO0lBQy9C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QjtFRnNNM0IsVUFBVTtFQUNWLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2YsVUFBVSxFQUFBO0VBYmQ7O0lBZ0JJLGVBQWU7SUFDZixjQUFjLEVBQUE7O0FBakJsQjtFQXNCSSxRQUFRO0VBQ1IsVUFBVSxFQUFBOztBQXZCZDs7OztFQThCSSxhQUFhLEVBQUE7O0FBOUJqQjs7RUFtQ0ksYUV6TTJCLEVBQUE7O0FGc0svQjs7OztFQTBDSSxZQUFZO0VBQ1osZUFBZTtFQUNmLGFFeE8yQixFQUFBXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBsb2FkZXJcXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG5ALXdlYmtpdC1rZXlmcmFtZXMgYm9va2luZ3N5bmMtc3BpbiB7XFxuICBmcm9tIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICB9XFxuXFxuICB0byB7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gIH1cXG59XFxuXFxuQGtleWZyYW1lcyBib29raW5nc3luYy1zcGluIHtcXG4gIGZyb20ge1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG4gIH1cXG4gIHRvIHtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xcbiAgfVxcbn1cXG5cXG4uY2FsZW5kYXIge1xcbiAgJjo6YmVmb3JlIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDA7XFxuICAgIGxlZnQ6IDA7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoI2ZmZiwgLjcpO1xcbiAgICBjb250ZW50OiAnJztcXG4gIH1cXG5cXG4gICY6OmFmdGVyIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDUwJTtcXG4gICAgbGVmdDogNTAlO1xcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCU7XFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcXG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGljb24tc3Bpbm5lci1zdmc7XFxuICAgIGhlaWdodDogMjBweDtcXG4gICAgd2lkdGg6IDIwcHg7XFxuICAgIG1hcmdpbjogLTEwcHggMCAwIC0xMHB4O1xcbiAgICBjb250ZW50OiAnJztcXG4gICAgLXdlYmtpdC1hbmltYXRpb246IGJvb2tpbmdzeW5jLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyO1xcbiAgICBhbmltYXRpb246IGJvb2tpbmdzeW5jLXNwaW4gMnMgaW5maW5pdGUgbGluZWFyO1xcbiAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcGF1c2VkO1xcbiAgfVxcblxcbiAgJjo6YmVmb3JlLFxcbiAgJjo6YWZ0ZXIge1xcbiAgICB6LWluZGV4OiAxMDAwO1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogJHRyYW5zaXRpb247XFxuICAgIC1vLXRyYW5zaXRpb246ICR0cmFuc2l0aW9uO1xcbiAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbjtcXG4gIH1cXG5cXG4gICYubG9hZGluZyB7XFxuICAgICY6OmJlZm9yZSxcXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIG9wYWNpdHk6IDE7XFxuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gICAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZztcXG4gICAgfVxcbiAgfVxcbn1cXG5cIixcIkBpbXBvcnQgJ3N2Zy11cmknO1xcbkBpbXBvcnQgJ3ZhcmlhYmxlcyc7XFxuQGltcG9ydCAnbG9hZGluZyc7XFxuQGltcG9ydCAnZHJvcCc7XFxuQGltcG9ydCAndGhlbWUtc2tldyc7XFxuQGltcG9ydCAndGhlbWUtYmFzaWMnO1xcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBjb2xvcnNcXG5cXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZm9udDogMXJlbS8xLjQgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGJhY2tncm91bmQ6ICRjYWxlbmRhci1iZy1jb2xvcjtcXG5cXG4gIC5jYXB0aW9uIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7XFxuICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGxpbmUtaGVpZ2h0OiAycmVtO1xcbiAgICBmb250LXdlaWdodDogNzAwO1xcbiAgICBtYXJnaW4tYm90dG9tOiAyLjNlbTtcXG4gICAgcGFkZGluZy10b3A6IDA7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIH1cXG5cXG4gIC50b29sdGlwIHtcXG4gICAgYmFja2dyb3VuZDogJHRvb2x0aXAtYmctY29sb3I7XFxuICAgIGNvbG9yOiAkdG9vbHRpcC1jb2xvcjtcXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICAgIHBhZGRpbmc6IDRweCA4cHg7XFxuICAgIGZvbnQtc2l6ZTogMTNweDtcXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgICB6LWluZGV4OiA1MDA7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcblxcbiAgICAudG9vbHRpcEFycm93IHtcXG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XFxuXFxuICAgICAgJiwgJjo6YmVmb3JlIHtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIHdpZHRoOiA4cHg7XFxuICAgICAgICBoZWlnaHQ6IDhweDtcXG4gICAgICAgIGJhY2tncm91bmQ6IGluaGVyaXQ7XFxuICAgICAgfVxcblxcbiAgICAgICY6OmJlZm9yZSB7XFxuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgICAgICAgY29udGVudDogJyc7XFxuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj0ndG9wJ10gPiAudG9vbHRpcEFycm93IHtcXG4gICAgICBib3R0b206IC00cHg7XFxuICAgIH1cXG4gICAgXFxuICAgICZbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj0nYm90dG9tJ10gPiAudG9vbHRpcEFycm93IHtcXG4gICAgICB0b3A6IC00cHg7XFxuICAgIH1cXG4gICAgXFxuICAgICZbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj0nbGVmdCddID4gLnRvb2x0aXBBcnJvdyB7XFxuICAgICAgcmlnaHQ6IC00cHg7XFxuICAgIH1cXG4gICAgXFxuICAgICZbZGF0YS1wb3BwZXItcGxhY2VtZW50Xj0ncmlnaHQnXSA+IC50b29sdGlwQXJyb3cge1xcbiAgICAgIGxlZnQ6IC00cHg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5tb250aHNXcmFwcGVyIHtcXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XFxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAtbXMtZmxleC13cmFwOiB3cmFwO1xcbiAgICBmbGV4LXdyYXA6IHdyYXA7XFxuICAgIGdhcDogMmVtO1xcbiAgfVxcblxcbiAgLm1DZWxsIHtcXG4gICAgZm9udC1zaXplOiAwLjg3NWVtO1xcbiAgICAtd2Via2l0LWJveC1mbGV4OiAxO1xcbiAgICAtbXMtZmxleDogMSAxIDI1JTtcXG4gICAgZmxleDogMSAxIDI1JTtcXG5cXG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTBweCkge1xcbiAgICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XFxuICAgICAgLW1zLWZsZXg6IDEgMSAxMDAlO1xcbiAgICAgIGZsZXg6IDEgMSAxMDAlO1xcbiAgICB9XFxuICB9XFxuXFxuICAubW9udGgge1xcbiAgICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xcbiAgICBib3JkZXItc3BhY2luZzogMCAwLjJlbTtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgXFxuICB9XFxuXFxuICAudGFibGVIZWFkZXIsXFxuICAuYm9keSB7XFxuICAgIG1hcmdpbjogMDtcXG4gIH1cXG5cXG4gIC50aCB7XFxuICAgIGZvbnQtc2l6ZTogMC44NWVtO1xcbiAgICBjb2xvcjogJHRoLWNvbG9yO1xcbiAgICBoZWlnaHQ6IDI1cHg7XFxuICAgIHdpZHRoOiAkY2VsbC13aWR0aDtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgfVxcblxcbiAgLmNlbGwge1xcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgYm9yZGVyOiAwO1xcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbiAgICBjb2xvcjogJGNlbGwtY29sb3I7XFxuICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIHdpZHRoOiAkY2VsbC13aWR0aDtcXG5cXG4gICAgJi50b2RheSB7XFxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5jbnQge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyO1xcbiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyO1xcbiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICB6LWluZGV4OiAxO1xcbiAgICBmb250LXNpemU6IDFlbTtcXG4gICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgY29udGVudDogJyc7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBtYXJnaW4tdG9wOiAxMDAlO1xcbiAgICB9XFxuICB9XFxuXFxuICAuaW5mbyB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgYm90dG9tOiAwO1xcbiAgICBsZWZ0OiAwO1xcbiAgICBmb250LXNpemU6IDAuNjVlbTtcXG4gICAgcGFkZGluZzogMXB4IDNweDtcXG4gICAgY29sb3I6ICRpbmZvLWNvbG9yO1xcbiAgICByaWdodDogMDtcXG5cXG4gICAgPiBzcGFuIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLmZvY3VzLFxcbi5kaXNhYmxlZCxcXG4uc2VsZWN0ZWQsXFxuLnJldmVyc2VkLFxcbi5kaXJlY3QsXFxuLnNlbGVjdGluZ1JldmVyc2VkLFxcbi5zZWxlY3RpbmdEaXJlY3QsXFxuLmFjdGlvbnNFbmFibGVkLFxcbi5oaWdobGlnaHRlZCxcXG4uaW52YWxpZCB7XFxuICBjb2xvcjogaW5oZXJpdDtcXG59XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxsIGhvdmVyIGN1cnNvcnNcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXIge1xcbiAgLy8gY3Vyc29yIHBvaW50ZXIgaWYgY2FsZW5kYXIgaXMgc2VsZWN0YWJsZVxcbiAgJltkYXRhLXNlbGVjdGFibGU9XFxcInRydWVcXFwiXSAuY2VsbCAqIHtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgYnV0dG9uc1xcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi5jYWxlbmRhciB7XFxuXFxuICAuZm9yd2FyZCxcXG4gIC5iYWNrIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDA7XFxuICAgIGxlZnQ6IDA7XFxuICAgIGhlaWdodDogMnJlbTtcXG4gICAgd2lkdGg6IDIzcHg7XFxuICAgIGZpbGw6ICRidG4tZmlsbDtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgYm9yZGVyLXJhZGl1czogMXB4O1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgIHotaW5kZXg6IDI7XFxuXFxuICAgIHN2ZyB7XFxuICAgIGhlaWdodDogaW5oZXJpdDtcXG4gICAgd2lkdGg6IGluaGVyaXQ7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5mb3J3YXJkIHtcXG4gICAgcmlnaHQ6IDA7XFxuICAgIGxlZnQ6IGF1dG87XFxuICB9XFxuXFxuICAuZm9yd2FyZDphY3RpdmUsXFxuICAuZm9yd2FyZDpmb2N1cyxcXG4gIC5iYWNrOmFjdGl2ZSxcXG4gIC5iYWNrOmZvY3VzIHtcXG4gICAgb3V0bGluZTogbm9uZTtcXG4gIH1cXG5cXG4gIC5mb3J3YXJkOmhvdmVyLFxcbiAgLmJhY2s6aG92ZXIge1xcbiAgICBmaWxsOiAkYnRuLWZpbGwtaG92ZXI7XFxuICB9XFxuXFxuICAuZm9yd2FyZFtkaXNhYmxlZF0sXFxuICAuZm9yd2FyZFtkaXNhYmxlZF06aG92ZXIsXFxuICAuYmFja1tkaXNhYmxlZF0sXFxuICAuYmFja1tkaXNhYmxlZF06aG92ZXIge1xcbiAgICBvcGFjaXR5OiAwLjU7XFxuICAgIGN1cnNvcjogZGVmYXVsdDtcXG4gICAgZmlsbDogJGJ0bi1maWxsO1xcbiAgfVxcbn1cXG5cIixcIi8vLy9cXG4vLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGVhc2lseSB1c2UgYW4gU1ZHIGlubGluZSBpbiBDU1NcXG4vLy8gd2l0aG91dCBlbmNvZGluZyBpdCB0byBiYXNlNjQsIHNhdmluZyBieXRlcy5cXG4vLy8gSXQgYWxzbyBoZWxwcyB3aXRoIGJyb3dzZXIgc3VwcG9ydC5cXG4vLy8vXFxuXFxuLy8vIEEgc21hbGwgZnVuY3Rpb24gYWxsb3dpbmcgc2tpcHBpbmcgYmFzZTY0IGVuY29kaW5nXFxuLy8vIGFuZCBzaW1wbHkgcGFzdGluZyB0aGUgU1ZHIG1hcmt1cCByaWdodCBpbiB0aGUgQ1NTLlxcbi8vLyBAYXV0aG9yIEpha29iIEVyaWtzZW5cXG4vLy8gQGxpbmsgaHR0cDovL2NvZGVwZW4uaW8vamFrb2ItZS9wZW4vZG9Nb01MXFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3ZnIC0gU1ZHIGltYWdlIHRvIGVuY29kZVxcbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gRW5jb2RlZCBTVkcgZGF0YSB1cmlcXG5AZnVuY3Rpb24gc3ZnLXVyaSgkc3ZnKSB7XFxuICAgICRlbmNvZGVkOiAnJztcXG4gICAgJHNsaWNlOiAyMDAwO1xcbiAgICAkaW5kZXg6IDA7XFxuICAgICRsb29wczogY2VpbChzdHItbGVuZ3RoKCRzdmcpIC8gJHNsaWNlKTtcXG5cXG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbG9vcHMge1xcbiAgICAgICAgJGNodW5rOiBzdHItc2xpY2UoJHN2ZywgJGluZGV4LCAkaW5kZXggKyAkc2xpY2UgLSAxKTtcXG4gICAgICAgICRjaHVuazogc3RyLXJlcGxhY2UoJGNodW5rLCAnXFxcIicsIFxcXCInXFxcIik7XFxuICAgICAgICAkY2h1bms6IHN0ci1yZXBsYWNlKCRjaHVuaywgJzwnLCAnJTNDJyk7XFxuICAgICAgICAkY2h1bms6IHN0ci1yZXBsYWNlKCRjaHVuaywgJz4nLCAnJTNFJyk7XFxuICAgICAgICAkY2h1bms6IHN0ci1yZXBsYWNlKCRjaHVuaywgJyYnLCAnJTI2Jyk7XFxuICAgICAgICAkY2h1bms6IHN0ci1yZXBsYWNlKCRjaHVuaywgJyMnLCAnJTIzJyk7XFxuICAgICAgICAkZW5jb2RlZDogI3skZW5jb2RlZH0jeyRjaHVua307XFxuICAgICAgICAkaW5kZXg6ICRpbmRleCArICRzbGljZTtcXG4gICAgfVxcblxcbiAgICBAcmV0dXJuIHVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwjeyRlbmNvZGVkfVxcXCIpO1xcbn1cXG5cXG4vLy8gUmVwbGFjZSBgJHNlYXJjaGAgd2l0aCBgJHJlcGxhY2VgIGluIGAkc3RyaW5nYFxcbi8vLyBAYXV0aG9yIEh1Z28gR2lyYXVkZWxcXG4vLy8gQGxpbmsgaHR0cDovL3Nhc3NtZWlzdGVyLmNvbS9naXN0LzFiNGYyZGE1NTI3ODMwMDg4ZTRkXFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkc3RyaW5nIC0gSW5pdGlhbCBzdHJpbmdcXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWFyY2ggLSBTdWJzdHJpbmcgdG8gcmVwbGFjZVxcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHJlcGxhY2UgKCcnKSAtIE5ldyB2YWx1ZVxcbi8vLyBAcmV0dXJuIHtTdHJpbmd9IC0gVXBkYXRlZCBzdHJpbmdcXG5AZnVuY3Rpb24gc3RyLXJlcGxhY2UoJHN0cmluZywgJHNlYXJjaCwgJHJlcGxhY2U6ICcnKSB7XFxuICAgICRpbmRleDogc3RyLWluZGV4KCRzdHJpbmcsICRzZWFyY2gpO1xcblxcbiAgICBAaWYgJGluZGV4IHtcXG4gICAgICAgIEByZXR1cm4gc3RyLXNsaWNlKCRzdHJpbmcsIDEsICRpbmRleCAtIDEpICsgJHJlcGxhY2UgKyBzdHItcmVwbGFjZShzdHItc2xpY2UoJHN0cmluZywgJGluZGV4ICsgc3RyLWxlbmd0aCgkc2VhcmNoKSksICRzZWFyY2gsICRyZXBsYWNlKTtcXG4gICAgfVxcblxcbiAgICBAcmV0dXJuICRzdHJpbmc7XFxufVxcblwiLFwiJGljb24tc3Bpbm5lci1zdmc6ICAgICAgc3ZnLXVyaShcXFwiPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAzMiAzMC45Nyc+PHBhdGggZD0nTTMyLDE1LjQ4YTE2LjUyLDE2LjUyLDAsMCwxLTEuMzcsNi4yOCwxNi4zNSwxNi4zNSwwLDAsMS05LDguNjMsMTUuODcsMTUuODcsMCwwLDEtMTcuMy0zLjc4QTE1LjQzLDE1LjQzLDAsMCwxLDQuNzIsNC43MiwxNSwxNSwwLDAsMSwxNS40OS41MmExNC43NiwxNC43NiwwLDAsMSwxMC40LDQuNTZBMTQuNzcsMTQuNzcsMCwwLDEsMjksOS45YTE0LjQ1LDE0LjQ1LDAsMCwxLC44NSwzLjM1aC4xM0EyLjA2LDIuMDYsMCwwLDEsMzIsMTUuMzFhLjkxLjkxLDAsMCwxLDAsLjE3Wk0yOC43MiwxMGExNC4yNywxNC4yNywwLDAsMC0zLjItNC41NSwxNCwxNCwwLDAsMC0xMC0zLjlBMTMuNzIsMTMuNzIsMCwwLDAsMywxMC4zYTEzLjQzLDEzLjQzLDAsMCwwLC4yNCwxMC4yNywxMy4wNSwxMy4wNSwwLDAsMCwxMi4yOCw3LjgyLDEyLjkyLDEyLjkyLDAsMCwwLDQuODgtMS4xLDEyLjY1LDEyLjY1LDAsMCwwLDQuMDYtMi44NywxMi40OCwxMi40OCwwLDAsMCwyLjYyLTQuMTUsMTIuMjQsMTIuMjQsMCwwLDAsLjgyLTQuNzloMGEuOTEuOTEsMCwwLDEsMC0uMTcsMi4wNywyLjA3LDAsMCwxLDEuODQtMi4wNSwxNC4yNywxNC4yNywwLDAsMC0xLTMuMjZaJyB0cmFuc2Zvcm09J3RyYW5zbGF0ZSgwIC0wLjUxKScvPjwvc3ZnPlxcXCIpO1xcblxcbiRicmVha3BvaW50LXhzOiAgICAgICAgIDkwMHB4O1xcblxcbiR0cmFuc2l0aW9uOiAgICAgICAgICAgIG9wYWNpdHkgMC4yNXMgZWFzZS1pbi1vdXQ7XFxuXFxuLy8gdG9vbHRpcFxcblxcbiR0b29sdGlwLWJnLWNvbG9yOiAgICAgIHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLXRvb2x0aXAtYmctY29sb3IsICMzMzMpO1xcbiR0b29sdGlwLWNvbG9yOiAgICAgICAgIHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLXRvb2x0aXAtY29sb3IsICNmZmYpO1xcblxcbi8vIGNhbGVuZGFyXFxuXFxuJGNhbGVuZGFyLWJnLWNvbG9yOiAgICAgI2ZmZjtcXG5cXG4vLyBjYWxlbmRhciBjZWxsc1xcblxcbiRjZWxsLXdpZHRoOiAgICAgICAgICAgIDMwcHg7XFxuXFxuJGNlbGwtY29sb3I6ICAgICAgICAgICAgIzQ0NDQ0NDtcXG5cXG4kZGlzYWJsZWQtYmctY29sb3I6ICAgICB2YXIoLS1ib29raW5nc3luYy1jYWxlbmRhci1kaXNhYmxlZC1iZy1jb2xvciwgI2YwZjBmMCk7XFxuJGRpc2FibGVkLWNvbG9yOiAgICAgICAgdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItZGlzYWJsZWQtY29sb3IsICNiZmJmYmYpO1xcblxcbiRoaWdobGlnaHRlZC1iZy1jb2xvcjogIHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWJnLWNvbG9yLCBsaWdodGVuKCM1Nzg0RjUsIDIwJSkpO1xcbiRoaWdobGlnaHRlZC1jb2xvcjogICAgIHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWhpZ2hsaWdodGVkLWNvbG9yLCBkYXJrZW4oJGNlbGwtY29sb3IsIDUlKSk7XFxuXFxuJGludmFsaWQtYmctY29sb3I6ICAgICAgdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItaW52YWxpZC1iZy1jb2xvciwgZGFya2VuKCNmMGYwZjAsICA1JSkpO1xcbiRpbnZhbGlkLWNvbG9yOiAgICAgICAgIHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWludmFsaWQtY29sb3IsIGRhcmtlbigjYmZiZmJmLCA1JSkpO1xcblxcbi8vIGNhbGVuZGFyIHRhYmxlXFxuXFxuJGluZm8tY29sb3I6ICAgICAgICAgICAgcmdiYSg2MCwgNjAsIDYwLCAwLjUpO1xcblxcbiR0aC1ib3JkZXItYm90dG9tOiAgICAgICNjYmNiY2I7XFxuJHRoLWNvbG9yOiAgICAgICAgICAgICAgI2FhYWFhYTtcXG5cXG4vLyBmb3JtXFxuXFxuJGJ0bi1maWxsOiAgICAgICAgICAgICAgJGNlbGwtY29sb3I7XFxuJGJ0bi1ib3JkZXI6ICAgICAgICAgICAgJHRoLWJvcmRlci1ib3R0b207XFxuJGJ0bi1maWxsLWhvdmVyOiAgICAgICAgIzM4OTVkOTtcXG5cIixcIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcblxcbiAgICBkcm9wZG93blxcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi5jYWxlbmRhci5kcm9wQmFzaWMge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgZGlzcGxheTogbm9uZTtcXG4gIG1heC13aWR0aDogMTAwJTtcXG4gIGJveC1zaGFkb3c6IDFweCA1cHggOXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMik7XFxuICBib3JkZXI6IDFweCBzb2xpZCAjZTBlMGUwO1xcbiAgYmFja2dyb3VuZDogI2ZmZjtcXG4gIG1hcmdpbjogMDtcXG4gIHBhZGRpbmc6IDFlbTtcXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xcbiAgbGluZS1oZWlnaHQ6IDEuNWVtO1xcbiAgei1pbmRleDogMTA7XFxuXFxuICAmLnZpc2libGUge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gIH1cXG5cXG4gIC5jYXB0aW9uIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogLjdlbTtcXG4gIH1cXG5cXG4gIC5mb3J3YXJkLFxcbiAgLmJhY2sge1xcbiAgICB0b3A6IDFlbTtcXG4gICAgbGVmdDogMWVtO1xcbiAgfVxcblxcbiAgLmZvcndhcmQge1xcbiAgICBsZWZ0OiBhdXRvO1xcbiAgICByaWdodDogMWVtO1xcbiAgfVxcbn1cXG5cIixcIi5jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0ge1xcbiAgLmNlbGwge1xcbiAgICAmOmZpcnN0LWNoaWxkIHtcXG4gICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XFxuICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4O1xcbiAgICB9XFxuXFxuICAgICY6bGFzdC1jaGlsZCB7XFxuICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcXG4gICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xcbiAgICB9XFxuXFxuICAgICY6OmJlZm9yZSxcXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICB3aWR0aDogMTAwJTtcXG4gICAgICBtYXJnaW46IDA7XFxuICAgICAgY29udGVudDogJyc7XFxuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNrZXcoLTMwZGVnKTtcXG4gICAgICAtbXMtdHJhbnNmb3JtOiBza2V3KC0zMGRlZyk7XFxuICAgICAgdHJhbnNmb3JtOiBza2V3KC0zMGRlZyk7XFxuICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xcbiAgICAgIHotaW5kZXg6IDA7XFxuXFxuICAgICAgLy8gZml4IGJsdXJyeSBza2V3XFxuICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyAycHgpO1xcbiAgICAgIHRvcDogLTFweDtcXG4gICAgfVxcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGxlZnQ6IC01NSU7XFxuICAgIH1cXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGxlZnQ6IDU1JTtcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG5cXG4gICAgc2VsZWN0aW9ucywgbGVmdCAtIGNlbnRlciAtIHJpZ2h0XFxuXFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBkaXNhYmxlZFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi5jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0ge1xcbiAgW2RhdGEtZGlzYWJsZWQ9XFxcImxlZnRcXFwiXTo6YWZ0ZXIge1xcbiAgICBiYWNrZ3JvdW5kOiAkZGlzYWJsZWQtYmctY29sb3I7XFxuICB9XFxuXFxuICBbZGF0YS1kaXNhYmxlZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgICBiYWNrZ3JvdW5kOiAkZGlzYWJsZWQtYmctY29sb3I7XFxuICAgIGNvbG9yOiAkZGlzYWJsZWQtY29sb3I7XFxuXFxuICAgICY6OmJlZm9yZSxcXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgYmFja2dyb3VuZDogJGRpc2FibGVkLWJnLWNvbG9yO1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1kaXNhYmxlZD1cXFwicmlnaHRcXFwiXTo6YmVmb3JlIHtcXG4gICAgYmFja2dyb3VuZDogJGRpc2FibGVkLWJnLWNvbG9yO1xcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGhpZ2hsaWdodGVkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLmNhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSB7XFxuICBbZGF0YS1oaWdobGlnaHRlZD1cXFwibGVmdFxcXCJdOjphZnRlciB7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICB9XFxuXFxuICBbZGF0YS1oaWdobGlnaHRlZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgIGNvbG9yOiAkaGlnaGxpZ2h0ZWQtY29sb3I7XFxuXFxuICAgICY6OmJlZm9yZSxcXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1oaWdobGlnaHRlZD1cXFwicmlnaHRcXFwiXTo6YmVmb3JlIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gIH1cXG59XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxscyBpbnZhbGlkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLmNhbGVuZGFyW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSB7XFxuICBbZGF0YS1pbnZhbGlkPVxcXCJsZWZ0XFxcIl0ge1xcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgICBiYWNrZ3JvdW5kOiAkaW52YWxpZC1iZy1jb2xvcjtcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtaW52YWxpZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgICBiYWNrZ3JvdW5kOiAkaW52YWxpZC1iZy1jb2xvcjtcXG4gICAgY29sb3I6ICRpbnZhbGlkLWNvbG9yO1xcbiAgXFxuICAgICY6OmJlZm9yZSxcXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgYmFja2dyb3VuZDogJGludmFsaWQtYmctY29sb3I7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFtkYXRhLWludmFsaWQ9XFxcInJpZ2h0XFxcIl0ge1xcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIGJhY2tncm91bmQ6ICRpbnZhbGlkLWJnLWNvbG9yO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGwgaG92ZXIgZGlyZWN0XFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLmRpcmVjdFtkYXRhLXRoZW1lPVxcXCJza2V3XFxcIl0ge1xcbiAgLy8gY2VsbCBob3ZlcmVkIHdoZW4gc2VsZWN0aW5nIGxlZnQgdG8gcmlnaHRcXG4gIFtkYXRhLWhvdmVyZWRdIHtcXG4gICAgYmFja2dyb3VuZDogbm9uZTtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1ob3ZlcmVkLW9mZnNldF0ge1xcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICBjZWxsIGhvdmVyIHJldmVyc2VkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLnJldmVyc2VkW2RhdGEtdGhlbWU9XFxcInNrZXdcXFwiXSB7XFxuICAvLyB3aGVuIHNlbGVjdGluZyByaWdodCB0byBsZWZ0XFxuICBbZGF0YS1ob3ZlcmVkXSB7XFxuICAgIGJhY2tncm91bmQ6IG5vbmU7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtaG92ZXJlZC1vZmZzZXRdIHtcXG4gICAgYmFja2dyb3VuZDogbm9uZTtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICB9XFxuICB9XFxufVxcblwiLFwiJGNlbGwtYm9yZGVyLXJhZGl1czogdmFyKC0tYm9va2luZ3N5bmMtY2FsZW5kYXItY2VsbC1ib3JkZXItcmFkaXVzLCA2cHgpO1xcbiRjZWxsLWJnLW9wYWNpdHk6IHZhcigtLWJvb2tpbmdzeW5jLWNhbGVuZGFyLWNlbGwtYmctb3BhY2l0eSwgLjUpO1xcblxcbi5jYWxlbmRhcltkYXRhLXRoZW1lPVxcXCJiYXNpY1xcXCJdIHtcXG4gIC5jZWxsIHtcXG4gICAgJjo6YmVmb3JlLFxcbiAgICAmOjphZnRlciB7XFxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICAgIGhlaWdodDogMTAwJTtcXG4gICAgICB0b3A6IDA7XFxuICAgICAgbWFyZ2luOiAwO1xcbiAgICAgIGNvbnRlbnQ6ICcnO1xcbiAgICAgIHotaW5kZXg6IDA7XFxuICAgIH1cXG4gIH1cXG59XFxuXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuXFxuICAgIHNlbGVjdGlvbnMsIGxlZnQgLSBjZW50ZXIgLSByaWdodFxcblxcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcblxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgY2VsbHMgZGlzYWJsZWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSB7XFxuICAvLyBbZGF0YS1kaXNhYmxlZD1cXFwibGVmdFxcXCJdIHtcXG4gIC8vICAgY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcXG4gIC8vIH1cXG5cXG4gIFtkYXRhLWRpc2FibGVkPVxcXCJjZW50ZXJcXFwiXSB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xcbiAgICBjb2xvcjogJGRpc2FibGVkLWNvbG9yO1xcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGhpZ2hsaWdodGVkXFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuXFxuLmNhbGVuZGFyW2RhdGEtdGhlbWU9XFxcImJhc2ljXFxcIl0ge1xcbiAgW2RhdGEtaGlnaGxpZ2h0ZWQ9XFxcImxlZnRcXFwiXSB7XFxuICAgIGNvbG9yOiAkaGlnaGxpZ2h0ZWQtY29sb3I7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICAgIG9wYWNpdHk6ICRjZWxsLWJnLW9wYWNpdHk7XFxuICAgICAgd2lkdGg6IDUwJTtcXG4gICAgICBsZWZ0OiA1MCU7XFxuICAgIH1cXG5cXG4gICAgJjo6YWZ0ZXIge1xcbiAgICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gICAgICBib3JkZXItcmFkaXVzOiAkY2VsbC1ib3JkZXItcmFkaXVzO1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1oaWdobGlnaHRlZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgICBjb2xvcjogJGhpZ2hsaWdodGVkLWNvbG9yO1xcblxcbiAgICAmOjpiZWZvcmUge1xcbiAgICAgIGJhY2tncm91bmQ6ICRoaWdobGlnaHRlZC1iZy1jb2xvcjtcXG4gICAgICBvcGFjaXR5OiAkY2VsbC1iZy1vcGFjaXR5O1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1oaWdobGlnaHRlZD1cXFwicmlnaHRcXFwiXSB7XFxuICAgIGNvbG9yOiAkaGlnaGxpZ2h0ZWQtY29sb3I7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgYmFja2dyb3VuZDogJGhpZ2hsaWdodGVkLWJnLWNvbG9yO1xcbiAgICAgIG9wYWNpdHk6ICRjZWxsLWJnLW9wYWNpdHk7XFxuICAgICAgd2lkdGg6IDUwJTtcXG4gICAgICByaWdodDogNTAlO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgICAgYm9yZGVyLXJhZGl1czogJGNlbGwtYm9yZGVyLXJhZGl1cztcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGxzIGludmFsaWRcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSB7XFxuICBbZGF0YS1pbnZhbGlkPVxcXCJsZWZ0XFxcIl0ge1xcbiAgICBjb2xvcjogJGludmFsaWQtY29sb3I7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgYmFja2dyb3VuZDogJGludmFsaWQtYmctY29sb3I7XFxuICAgICAgb3BhY2l0eTogJGNlbGwtYmctb3BhY2l0eTtcXG4gICAgICB3aWR0aDogNTAlO1xcbiAgICAgIGxlZnQ6IDUwJTtcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgYmFja2dyb3VuZDogJGludmFsaWQtYmctY29sb3I7XFxuICAgICAgYm9yZGVyLXJhZGl1czogJGNlbGwtYm9yZGVyLXJhZGl1cztcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtaW52YWxpZD1cXFwiY2VudGVyXFxcIl0ge1xcbiAgICBjb2xvcjogJGludmFsaWQtY29sb3I7XFxuXFxuICAgICY6OmJlZm9yZSB7XFxuICAgICAgYmFja2dyb3VuZDogJGludmFsaWQtYmctY29sb3I7XFxuICAgICAgb3BhY2l0eTogJGNlbGwtYmctb3BhY2l0eTtcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtaW52YWxpZD1cXFwicmlnaHRcXFwiXSB7XFxuICAgIGNvbG9yOiAkaW52YWxpZC1jb2xvcjtcXG5cXG4gICAgJjo6YmVmb3JlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaW52YWxpZC1iZy1jb2xvcjtcXG4gICAgICBvcGFjaXR5OiAkY2VsbC1iZy1vcGFjaXR5O1xcbiAgICAgIHdpZHRoOiA1MCU7XFxuICAgICAgcmlnaHQ6IDUwJTtcXG4gICAgfVxcblxcbiAgICAmOjphZnRlciB7XFxuICAgICAgYmFja2dyb3VuZDogJGludmFsaWQtYmctY29sb3I7XFxuICAgICAgYm9yZGVyLXJhZGl1czogJGNlbGwtYm9yZGVyLXJhZGl1cztcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gIGNlbGwgaG92ZXJcXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG5cXG4uY2FsZW5kYXJbZGF0YS10aGVtZT1cXFwiYmFzaWNcXFwiXSB7XFxuICBbZGF0YS1ob3ZlcmVkXTpub3QoW2RhdGEtZGlzYWJsZWQ9XFxcImNlbnRlclxcXCJdKSB7XFxuICAgIGNvbG9yOiAkaGlnaGxpZ2h0ZWQtY29sb3I7XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBiYWNrZ3JvdW5kOiAkaGlnaGxpZ2h0ZWQtYmctY29sb3I7XFxuICAgICAgYm9yZGVyLXJhZGl1czogJGNlbGwtYm9yZGVyLXJhZGl1cztcXG4gICAgfVxcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLmxvY2FscyA9IHtcblx0XCJjYWxlbmRhclwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhbGVuZGFyXCIsXG5cdFwiYm9va2luZ3N5bmMtc3BpblwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Jvb2tpbmdzeW5jLXNwaW5cIixcblx0XCJsb2FkaW5nXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbG9hZGluZ1wiLFxuXHRcImRyb3BCYXNpY1wiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Ryb3BCYXNpY1wiLFxuXHRcInZpc2libGVcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X192aXNpYmxlXCIsXG5cdFwiY2FwdGlvblwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NhcHRpb25cIixcblx0XCJmb3J3YXJkXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9yd2FyZFwiLFxuXHRcImJhY2tcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19iYWNrXCIsXG5cdFwiY2VsbFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2NlbGxcIixcblx0XCJkaXJlY3RcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19kaXJlY3RcIixcblx0XCJyZXZlcnNlZFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3JldmVyc2VkXCIsXG5cdFwidG9vbHRpcFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX3Rvb2x0aXBcIixcblx0XCJ0b29sdGlwQXJyb3dcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190b29sdGlwQXJyb3dcIixcblx0XCJtb250aHNXcmFwcGVyXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbW9udGhzV3JhcHBlclwiLFxuXHRcIm1DZWxsXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fbUNlbGxcIixcblx0XCJtb250aFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX21vbnRoXCIsXG5cdFwidGFibGVIZWFkZXJcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190YWJsZUhlYWRlclwiLFxuXHRcImJvZHlcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19ib2R5XCIsXG5cdFwidGhcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X190aFwiLFxuXHRcInRvZGF5XCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fdG9kYXlcIixcblx0XCJjbnRcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19jbnRcIixcblx0XCJpbmZvXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9faW5mb1wiLFxuXHRcImZvY3VzXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fZm9jdXNcIixcblx0XCJkaXNhYmxlZFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2Rpc2FibGVkXCIsXG5cdFwic2VsZWN0ZWRcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19zZWxlY3RlZFwiLFxuXHRcInNlbGVjdGluZ1JldmVyc2VkXCI6IFwiQm9va2luZ1N5bmNDYWxlbmRhcldpZGdldF9fc2VsZWN0aW5nUmV2ZXJzZWRcIixcblx0XCJzZWxlY3RpbmdEaXJlY3RcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19zZWxlY3RpbmdEaXJlY3RcIixcblx0XCJhY3Rpb25zRW5hYmxlZFwiOiBcIkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXRfX2FjdGlvbnNFbmFibGVkXCIsXG5cdFwiaGlnaGxpZ2h0ZWRcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19oaWdobGlnaHRlZFwiLFxuXHRcImludmFsaWRcIjogXCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0X19pbnZhbGlkXCJcbn07XG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkaXYsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzcGFuLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYXBwbGV0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgb2JqZWN0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaWZyYW1lLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDEsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoMiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGgzLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoNSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGg2LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgcCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGJsb2NrcXVvdGUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBwcmUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhLFxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhYmJyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYWNyb255bSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGFkZHJlc3MsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBiaWcsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjaXRlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgY29kZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRlbCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRmbiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGVtLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaW1nLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaW5zLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQga2JkLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgcSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHMsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzYW1wLFxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzbWFsbCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHN0cmlrZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHN0cm9uZywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHN1YiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHN1cCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHR0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdmFyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBpLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgY2VudGVyLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGwsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkdCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRkLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgb2wsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB1bCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGxpLFxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBmaWVsZHNldCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZvcm0sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkaXYuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fZm9ybSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGxhYmVsLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbGVnZW5kLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGFibGUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjYXB0aW9uLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGJvZHksIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0Zm9vdCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRoZWFkLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdHIsXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRoLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhcnRpY2xlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYXNpZGUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjYW52YXMsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkZXRhaWxzLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZmlnY2FwdGlvbiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZpZ3VyZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZvb3RlciwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGhlYWRlciwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGhncm91cCxcXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgbWVudSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IG5hdiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHNlY3Rpb24sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzdW1tYXJ5LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGltZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IG1hcmssIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhdWRpbywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHZpZGVvLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYnV0dG9uLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGV4dGFyZWEsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBpbnB1dCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19idXR0b24sIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fbGVnZW5kIHtcXG4gIGZvbnQtZmFtaWx5OiBcXFwiT3BlbiBzYW5zXFxcIiwgXFxcIkhlbHZldGljYSBOZXVlXFxcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcXG4gIGZvbnQtc2l6ZS1hZGp1c3Q6IG5vbmU7XFxuICBmb250LXNpemU6IDEwMCU7XFxuICBmb250LXN0eWxlOiBub3JtYWw7XFxuICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xcbiAgZm9udC1zdHJldGNoOiBub3JtYWw7XFxuICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcXG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XFxuICBmb250OiBub3JtYWwgbm9ybWFsIDEwMCUgXFxcIk9wZW4gc2Fuc1xcXCIsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XFxuICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgLW1vei10ZXh0LWFsaWduLWxhc3Q6IGluaXRpYWw7XFxuICB0ZXh0LWFsaWduLWxhc3Q6IGluaXRpYWw7XFxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuICAtd2Via2l0LXRleHQtZW1waGFzaXM6IG5vbmU7XFxuICB0ZXh0LWVtcGhhc2lzOiBub25lO1xcbiAgdGV4dC1oZWlnaHQ6IGF1dG87XFxuICB0ZXh0LWluZGVudDogMDtcXG4gIHRleHQtanVzdGlmeTogYXV0bztcXG4gIHRleHQtb3V0bGluZTogbm9uZTtcXG4gIHRleHQtc2hhZG93OiBub25lO1xcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XFxuICB0ZXh0LXdyYXA6IG5vcm1hbDtcXG4gIGFsaWdubWVudC1hZGp1c3Q6IGF1dG87XFxuICBhbGlnbm1lbnQtYmFzZWxpbmU6IGJhc2VsaW5lO1xcbiAgLXdlYmtpdC1hbmltYXRpb246IG5vbmUgMCBlYXNlIDAgMSBub3JtYWw7XFxuICBhbmltYXRpb246IG5vbmUgMCBlYXNlIDAgMSBub3JtYWw7XFxuICAtd2Via2l0LWFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nO1xcbiAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHJ1bm5pbmc7XFxuICBhcHBlYXJhbmNlOiBub3JtYWw7XFxuICBhemltdXRoOiBjZW50ZXI7XFxuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IHZpc2libGU7XFxuICBiYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlO1xcbiAgYmFja2dyb3VuZDogbm9uZSAwIDAgYXV0byByZXBlYXQgc2Nyb2xsIHBhZGRpbmctYm94IHRyYW5zcGFyZW50O1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xcbiAgYmFzZWxpbmUtc2hpZnQ6IGJhc2VsaW5lO1xcbiAgYmluZGluZzogbm9uZTtcXG4gIGJsZWVkOiA2cHQ7XFxuICBib29rbWFyay1sYWJlbDogY29udGVudCgpO1xcbiAgYm9va21hcmstbGV2ZWw6IG5vbmU7XFxuICBib29rbWFyay1zdGF0ZTogb3BlbjtcXG4gIGJvb2ttYXJrLXRhcmdldDogbm9uZTtcXG4gIGJvcmRlcjogMCBub25lIHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLXJhZGl1czogMDtcXG4gIGJvdHRvbTogYXV0bztcXG4gIGJveC1hbGlnbjogc3RyZXRjaDtcXG4gIC13ZWJraXQtYm94LWRlY29yYXRpb24tYnJlYWs6IHNsaWNlO1xcbiAgYm94LWRlY29yYXRpb24tYnJlYWs6IHNsaWNlO1xcbiAgYm94LWRpcmVjdGlvbjogbm9ybWFsO1xcbiAgZmxleDogMC4wO1xcbiAgZmxleC1ncm91cDogMTtcXG4gIGJveC1saW5lczogc2luZ2xlO1xcbiAgYm94LW9yZGluYWwtZ3JvdXA6IDE7XFxuICBib3gtb3JpZW50OiBpbmxpbmUtYXhpcztcXG4gIGJveC1wYWNrOiBzdGFydDtcXG4gIGJveC1zaGFkb3c6IG5vbmU7XFxuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcXG4gIC13ZWJraXQtYnJlYWstYWZ0ZXI6IGF1dG87XFxuICAtbW96LWJyZWFrLWFmdGVyOiBhdXRvO1xcbiAgYnJlYWstYWZ0ZXI6IGF1dG87XFxuICAtd2Via2l0LWJyZWFrLWJlZm9yZTogYXV0bztcXG4gIC1tb3otYnJlYWstYmVmb3JlOiBhdXRvO1xcbiAgYnJlYWstYmVmb3JlOiBhdXRvO1xcbiAgLXdlYmtpdC1jb2x1bW4tYnJlYWstaW5zaWRlOiBhdXRvO1xcbiAgcGFnZS1icmVhay1pbnNpZGU6IGF1dG87XFxuICBicmVhay1pbnNpZGU6IGF1dG87XFxuICBjYXB0aW9uLXNpZGU6IHRvcDtcXG4gIGNsZWFyOiBub25lO1xcbiAgY2xpcDogYXV0bztcXG4gIGNvbG9yOiBpbmhlcml0O1xcbiAgY29sb3ItcHJvZmlsZTogYXV0bztcXG4gIC13ZWJraXQtY29sdW1uLWNvdW50OiBhdXRvO1xcbiAgLW1vei1jb2x1bW4tY291bnQ6IGF1dG87XFxuICBjb2x1bW4tY291bnQ6IGF1dG87XFxuICAtd2Via2l0LWNvbHVtbi1maWxsOiBiYWxhbmNlO1xcbiAgLW1vei1jb2x1bW4tZmlsbDogYmFsYW5jZTtcXG4gIGNvbHVtbi1maWxsOiBiYWxhbmNlO1xcbiAgLXdlYmtpdC1jb2x1bW4tZ2FwOiBub3JtYWw7XFxuICAtbW96LWNvbHVtbi1nYXA6IG5vcm1hbDtcXG4gIGNvbHVtbi1nYXA6IG5vcm1hbDtcXG4gIC13ZWJraXQtY29sdW1uLXJ1bGU6IG1lZGl1bSBtZWRpdW0gIzFmMWYxZjtcXG4gIC1tb3otY29sdW1uLXJ1bGU6IG1lZGl1bSBtZWRpdW0gIzFmMWYxZjtcXG4gIGNvbHVtbi1ydWxlOiBtZWRpdW0gbWVkaXVtICMxZjFmMWY7XFxuICAtd2Via2l0LWNvbHVtbi1zcGFuOiAxO1xcbiAgLW1vei1jb2x1bW4tc3BhbjogMTtcXG4gIGNvbHVtbi1zcGFuOiAxO1xcbiAgLXdlYmtpdC1jb2x1bW4td2lkdGg6IGF1dG87XFxuICAtbW96LWNvbHVtbi13aWR0aDogYXV0bztcXG4gIGNvbHVtbi13aWR0aDogYXV0bztcXG4gIC13ZWJraXQtY29sdW1uczogYXV0byBhdXRvO1xcbiAgLW1vei1jb2x1bW5zOiBhdXRvIGF1dG87XFxuICBjb2x1bW5zOiBhdXRvIGF1dG87XFxuICBjb250ZW50OiBub3JtYWw7XFxuICBjb3VudGVyLWluY3JlbWVudDogbm9uZTtcXG4gIGNvdW50ZXItcmVzZXQ6IG5vbmU7XFxuICBjcm9wOiBhdXRvO1xcbiAgY3Vyc29yOiBhdXRvO1xcbiAgZGlyZWN0aW9uOiBsdHI7XFxuICBkaXNwbGF5OiBpbmxpbmU7XFxuICBkb21pbmFudC1iYXNlbGluZTogYXV0bztcXG4gIGRyb3AtaW5pdGlhbC1hZnRlci1hZGp1c3Q6IHRleHQtYWZ0ZXItZWRnZTtcXG4gIGRyb3AtaW5pdGlhbC1hZnRlci1hbGlnbjogYmFzZWxpbmU7XFxuICBkcm9wLWluaXRpYWwtYmVmb3JlLWFkanVzdDogdGV4dC1iZWZvcmUtZWRnZTtcXG4gIGRyb3AtaW5pdGlhbC1iZWZvcmUtYWxpZ246IGNhcHMtaGVpZ2h0O1xcbiAgZHJvcC1pbml0aWFsLXNpemU6IGF1dG87XFxuICBkcm9wLWluaXRpYWwtdmFsdWU6IGluaXRpYWw7XFxuICBlbGV2YXRpb246IGxldmVsO1xcbiAgZW1wdHktY2VsbHM6IHNob3c7XFxuICBmaXQ6IGZpbGw7XFxuICBmaXQtcG9zaXRpb246IDAlIDAlO1xcbiAgZmxvYXQ6IG5vbmU7XFxuICBmbG9hdC1vZmZzZXQ6IDAgMDtcXG4gIGdyaWQtY29sdW1uczogbm9uZTtcXG4gIGdyaWQtcm93czogbm9uZTtcXG4gIGhhbmdpbmctcHVuY3R1YXRpb246IG5vbmU7XFxuICBoZWlnaHQ6IGF1dG87XFxuICBoeXBoZW5hdGUtYWZ0ZXI6IGF1dG87XFxuICBoeXBoZW5hdGUtYmVmb3JlOiBhdXRvO1xcbiAgaHlwaGVuYXRlLWNoYXJhY3RlcjogYXV0bztcXG4gIGh5cGhlbmF0ZS1saW5lczogbm8tbGltaXQ7XFxuICBoeXBoZW5hdGUtcmVzb3VyY2U6IG5vbmU7XFxuICAtd2Via2l0LWh5cGhlbnM6IG1hbnVhbDtcXG4gIC1tb3otaHlwaGVuczogbWFudWFsO1xcbiAgLW1zLWh5cGhlbnM6IG1hbnVhbDtcXG4gIGh5cGhlbnM6IG1hbnVhbDtcXG4gIGljb246IGF1dG87XFxuICBpbWFnZS1vcmllbnRhdGlvbjogYXV0bztcXG4gIGltYWdlLXJlbmRlcmluZzogYXV0bztcXG4gIGltYWdlLXJlc29sdXRpb246IG5vcm1hbDtcXG4gIGlubGluZS1ib3gtYWxpZ246IGxhc3Q7XFxuICBsZWZ0OiBhdXRvO1xcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxuICBsaW5lLXN0YWNraW5nOiBpbmxpbmUtbGluZS1oZWlnaHQgZXhjbHVkZS1ydWJ5IGNvbnNpZGVyLXNoaWZ0cztcXG4gIGxpc3Qtc3R5bGU6IGRpc2Mgb3V0c2lkZSBub25lO1xcbiAgbWFyZ2luOiAwO1xcbiAgbWFya3M6IG5vbmU7XFxuICBtYXJxdWVlLWRpcmVjdGlvbjogZm9yd2FyZDtcXG4gIG1hcnF1ZWUtbG9vcDogMTtcXG4gIG1hcnF1ZWUtcGxheS1jb3VudDogMTtcXG4gIG1hcnF1ZWUtc3BlZWQ6IG5vcm1hbDtcXG4gIG1hcnF1ZWUtc3R5bGU6IHNjcm9sbDtcXG4gIG1heC1oZWlnaHQ6IG5vbmU7XFxuICBtYXgtd2lkdGg6IG5vbmU7XFxuICBtaW4taGVpZ2h0OiAwO1xcbiAgbWluLXdpZHRoOiAwO1xcbiAgbW92ZS10bzogbm9ybWFsO1xcbiAgbmF2LWRvd246IGF1dG87XFxuICBuYXYtaW5kZXg6IGF1dG87XFxuICBuYXYtbGVmdDogYXV0bztcXG4gIG5hdi1yaWdodDogYXV0bztcXG4gIG5hdi11cDogYXV0bztcXG4gIG9wYWNpdHk6IDE7XFxuICBvcnBoYW5zOiAyO1xcbiAgb3V0bGluZTogaW52ZXJ0IG5vbmUgbWVkaXVtO1xcbiAgb3V0bGluZS1vZmZzZXQ6IDA7XFxuICBvdmVyZmxvdzogdmlzaWJsZTtcXG4gIG92ZXJmbG93LXN0eWxlOiBhdXRvO1xcbiAgcGFkZGluZzogMDtcXG4gIHBhZ2U6IGF1dG87XFxuICBwYWdlLWJyZWFrLWFmdGVyOiBhdXRvO1xcbiAgcGFnZS1icmVhay1iZWZvcmU6IGF1dG87XFxuICBwYWdlLWJyZWFrLWluc2lkZTogYXV0bztcXG4gIHBhZ2UtcG9saWN5OiBzdGFydDtcXG4gIC13ZWJraXQtcGVyc3BlY3RpdmU6IG5vbmU7XFxuICBwZXJzcGVjdGl2ZTogbm9uZTtcXG4gIC13ZWJraXQtcGVyc3BlY3RpdmUtb3JpZ2luOiA1MCUgNTAlO1xcbiAgcGVyc3BlY3RpdmUtb3JpZ2luOiA1MCUgNTAlO1xcbiAgcG9zaXRpb246IHN0YXRpYztcXG4gIHByZXNlbnRhdGlvbi1sZXZlbDogMDtcXG4gIHB1bmN0dWF0aW9uLXRyaW06IG5vbmU7XFxuICBxdW90ZXM6IG5vbmU7XFxuICByZW5kZXJpbmctaW50ZW50OiBhdXRvO1xcbiAgcmVzaXplOiBub25lO1xcbiAgcmlnaHQ6IGF1dG87XFxuICByb3RhdGlvbjogMDtcXG4gIHJvdGF0aW9uLXBvaW50OiA1MCUgNTAlO1xcbiAgcnVieS1hbGlnbjogYXV0bztcXG4gIHJ1Ynktb3Zlcmhhbmc6IG5vbmU7XFxuICBydWJ5LXBvc2l0aW9uOiBiZWZvcmU7XFxuICBydWJ5LXNwYW46IG5vbmU7XFxuICBzaXplOiBhdXRvO1xcbiAgc3RyaW5nLXNldDogbm9uZTtcXG4gIHRhYmxlLWxheW91dDogYXV0bztcXG4gIHRvcDogYXV0bztcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiBub25lO1xcbiAgLW1zLXRyYW5zZm9ybTogbm9uZTtcXG4gIHRyYW5zZm9ybTogbm9uZTtcXG4gIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJSAwO1xcbiAgLW1zLXRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCUgMDtcXG4gIHRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCUgMDtcXG4gIC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBmbGF0O1xcbiAgdHJhbnNmb3JtLXN0eWxlOiBmbGF0O1xcbiAgdHJhbnNpdGlvbjogYWxsIDAgZWFzZSAwO1xcbiAgdW5pY29kZS1iaWRpOiBub3JtYWw7XFxuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XFxuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xcbiAgd2hpdGUtc3BhY2UtY29sbGFwc2U6IGNvbGxhcHNlO1xcbiAgd2lkb3dzOiAyO1xcbiAgd2lkdGg6IGF1dG87XFxuICB3b3JkLWJyZWFrOiBub3JtYWw7XFxuICB3b3JkLXNwYWNpbmc6IG5vcm1hbDtcXG4gIHdvcmQtd3JhcDogbm9ybWFsO1xcbiAgei1pbmRleDogYXV0bztcXG4gIHRleHQtYWxpZ246IHN0YXJ0O1xcbiAgLyogQW5kIGRpc2FibGUgTVMgZ3JhZGllbnRzICovXFxuICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkPWZhbHNlKTtcXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhZGRyZXNzLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYmxvY2txdW90ZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRkLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGl2LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZGwsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkdCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZpZWxkc2V0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZm9ybSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGRpdi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19mb3JtLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZnJhbWUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBmcmFtZXNldCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGgxLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoMywgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGg0LCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaDUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBoNiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IG5vZnJhbWVzLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgb2wsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBwLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdWwsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjZW50ZXIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkaXIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBociwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IG1lbnUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBwcmUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBhcnRpY2xlLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYXNpZGUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjYW52YXMsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBkZXRhaWxzLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgZmlnY2FwdGlvbiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZpZ3VyZSwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGZvb3RlciwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGhlYWRlciwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGhncm91cCwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IG1lbnUsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBuYXYsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzZWN0aW9uLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc3VtbWFyeSB7XFxuICBkaXNwbGF5OiBibG9jazsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBsaSB7XFxuICBkaXNwbGF5OiBsaXN0LWl0ZW07IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGFibGUge1xcbiAgZGlzcGxheTogdGFibGU7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdHIge1xcbiAgZGlzcGxheTogdGFibGUtcm93OyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRoZWFkIHtcXG4gIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCB0Ym9keSB7XFxuICBkaXNwbGF5OiB0YWJsZS1yb3ctZ3JvdXA7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGZvb3Qge1xcbiAgZGlzcGxheTogdGFibGUtZm9vdGVyLWdyb3VwOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGNvbCB7XFxuICBkaXNwbGF5OiB0YWJsZS1jb2x1bW47IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgY29sZ3JvdXAge1xcbiAgZGlzcGxheTogdGFibGUtY29sdW1uLWdyb3VwOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRkLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgdGgge1xcbiAgZGlzcGxheTogdGFibGUtY2VsbDsgfVxcblxcbi5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBjYXB0aW9uIHtcXG4gIGRpc3BsYXk6IHRhYmxlLWNhcHRpb247IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaW5wdXQsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzZWxlY3Qge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzdHJvbmcge1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYiA+IGksIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBzdHJvbmcgPiBpLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgYiA+IGVtLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgc3Ryb25nID4gZW0ge1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICBmb250LXN0eWxlOiBpdGFsaWM7IH1cXG5cXG4uQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaSA+IGIsIC5Cb29raW5nU3luY1dpZGdldFV0aWxzX19yZXNldCBpID4gc3Ryb25nIHtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgZm9udC1zdHlsZTogaXRhbGljOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGVtID4gYiwgLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IGVtID4gc3Ryb25nIHtcXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgZm9udC1zdHlsZTogaXRhbGljOyB9XFxuXFxuLkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0IHRleHRhcmVhLCAuQm9va2luZ1N5bmNXaWRnZXRVdGlsc19fcmVzZXQgaW5wdXQge1xcbiAgY3Vyc29yOiB0ZXh0OyB9XFxuXCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL3dpZGdldC11dGlscy9zcmMvc3R5bGVzL3Jlc2V0LnNjc3NcIl0sXCJu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QkFBMkIsRUFBQTs7QUFyTy9CO0VBd09JLHdCQUF3QixFQUFBOztBQXhPNUI7RUEyT0ksMkJBQTJCLEVBQUE7O0FBM08vQjtFQThPSSxxQkFBcUIsRUFBQTs7QUE5T3pCO0VBaVBJLDJCQUEyQixFQUFBOztBQWpQL0I7RUFvUEksbUJBQW1CLEVBQUE7O0FBcFB2QjtFQXVQSSxzQkFBc0IsRUFBQTs7QUF2UDFCO0VBMFBJLHFCQUFxQixFQUFBOztBQTFQekI7RUE2UEksaUJBQWlCLEVBQUE7O0FBN1ByQjtFQWdRSSxpQkFBaUI7RUFDakIsa0JBQWtCLEVBQUE7O0FBalF0QjtFQXFRTSxpQkFBaUI7RUFDakIsa0JBQWtCLEVBQUE7O0FBdFF4QjtFQTJRTSxpQkFBaUI7RUFDakIsa0JBQWtCLEVBQUE7O0FBNVF4QjtFQWdSSSxZQUFZLEVBQUFcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLnJlc2V0IHtcXHJcXG5cXHRkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSwgYSxcXHJcXG5cXHRhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcXHJcXG5cXHRzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLCBiLCB1LCBpLCBjZW50ZXIsIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXFxyXFxuXFx0ZmllbGRzZXQsIGZvcm0sIGRpdi5mb3JtLCBsYWJlbCwgbGVnZW5kLCB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsXFxyXFxuXFx0dGgsIHRkLCBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsXFxyXFxuXFx0bWVudSwgbmF2LCBzZWN0aW9uLCBzdW1tYXJ5LCB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8sIGJ1dHRvbiwgdGV4dGFyZWEsIGlucHV0LCAuYnV0dG9uLCAubGVnZW5kIHtcXHJcXG4gICAgZm9udC1mYW1pbHk6IFxcXCJPcGVuIHNhbnNcXFwiLCBcXFwiSGVsdmV0aWNhIE5ldWVcXFwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xcclxcbiAgICBmb250LXNpemUtYWRqdXN0OiBub25lO1xcclxcbiAgICBmb250LXNpemU6IDEwMCU7XFxyXFxuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcXHJcXG4gICAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDtcXHJcXG4gICAgZm9udC1zdHJldGNoOiBub3JtYWw7XFxyXFxuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xcclxcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xcclxcbiAgICBmb250OiBub3JtYWwgbm9ybWFsIDEwMCUgXFxcIk9wZW4gc2Fuc1xcXCIsIFxcXCJIZWx2ZXRpY2EgTmV1ZVxcXCIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XFxyXFxuICAgIHRleHQtYWxpZ246IGxlZnQ7XFxyXFxuICAgIC1tb3otdGV4dC1hbGlnbi1sYXN0OiBpbml0aWFsO1xcclxcbiAgICB0ZXh0LWFsaWduLWxhc3Q6IGluaXRpYWw7XFxyXFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXHJcXG4gICAgLXdlYmtpdC10ZXh0LWVtcGhhc2lzOiBub25lO1xcclxcbiAgICB0ZXh0LWVtcGhhc2lzOiBub25lO1xcclxcbiAgICB0ZXh0LWhlaWdodDogYXV0bztcXHJcXG4gICAgdGV4dC1pbmRlbnQ6IDA7XFxyXFxuICAgIHRleHQtanVzdGlmeTogYXV0bztcXHJcXG4gICAgdGV4dC1vdXRsaW5lOiBub25lO1xcclxcbiAgICB0ZXh0LXNoYWRvdzogbm9uZTtcXHJcXG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XFxyXFxuICAgIHRleHQtd3JhcDogbm9ybWFsO1xcclxcbiAgICBhbGlnbm1lbnQtYWRqdXN0OiBhdXRvO1xcclxcbiAgICBhbGlnbm1lbnQtYmFzZWxpbmU6IGJhc2VsaW5lO1xcclxcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogbm9uZSAwIGVhc2UgMCAxIG5vcm1hbDtcXHJcXG4gICAgYW5pbWF0aW9uOiBub25lIDAgZWFzZSAwIDEgbm9ybWFsO1xcclxcbiAgICAtd2Via2l0LWFuaW1hdGlvbi1wbGF5LXN0YXRlOiBydW5uaW5nO1xcclxcbiAgICBhbmltYXRpb24tcGxheS1zdGF0ZTogcnVubmluZztcXHJcXG4gICAgYXBwZWFyYW5jZTogbm9ybWFsO1xcclxcbiAgICBhemltdXRoOiBjZW50ZXI7XFxyXFxuICAgIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZTtcXHJcXG4gICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZTtcXHJcXG4gICAgYmFja2dyb3VuZDogbm9uZSAwIDAgYXV0byByZXBlYXQgc2Nyb2xsIHBhZGRpbmctYm94IHRyYW5zcGFyZW50O1xcclxcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXHJcXG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcXHJcXG4gICAgYmFzZWxpbmUtc2hpZnQ6IGJhc2VsaW5lO1xcclxcbiAgICBiaW5kaW5nOiBub25lO1xcclxcbiAgICBibGVlZDogNnB0O1xcclxcbiAgICBib29rbWFyay1sYWJlbDogY29udGVudCgpO1xcclxcbiAgICBib29rbWFyay1sZXZlbDogbm9uZTtcXHJcXG4gICAgYm9va21hcmstc3RhdGU6IG9wZW47XFxyXFxuICAgIGJvb2ttYXJrLXRhcmdldDogbm9uZTtcXHJcXG4gICAgYm9yZGVyOiAwIG5vbmUgdHJhbnNwYXJlbnQ7XFxyXFxuICAgIGJvcmRlci1yYWRpdXM6IDA7XFxyXFxuICAgIGJvdHRvbTogYXV0bztcXHJcXG4gICAgYm94LWFsaWduOiBzdHJldGNoO1xcclxcbiAgICAtd2Via2l0LWJveC1kZWNvcmF0aW9uLWJyZWFrOiBzbGljZTtcXHJcXG4gICAgYm94LWRlY29yYXRpb24tYnJlYWs6IHNsaWNlO1xcclxcbiAgICBib3gtZGlyZWN0aW9uOiBub3JtYWw7XFxyXFxuICAgIGZsZXg6IDAuMDtcXHJcXG4gICAgZmxleC1ncm91cDogMTtcXHJcXG4gICAgYm94LWxpbmVzOiBzaW5nbGU7XFxyXFxuICAgIGJveC1vcmRpbmFsLWdyb3VwOiAxO1xcclxcbiAgICBib3gtb3JpZW50OiBpbmxpbmUtYXhpcztcXHJcXG4gICAgYm94LXBhY2s6IHN0YXJ0O1xcclxcbiAgICBib3gtc2hhZG93OiBub25lO1xcclxcbiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcXHJcXG4gICAgLXdlYmtpdC1icmVhay1hZnRlcjogYXV0bztcXHJcXG4gICAgLW1vei1icmVhay1hZnRlcjogYXV0bztcXHJcXG4gICAgYnJlYWstYWZ0ZXI6IGF1dG87XFxyXFxuICAgIC13ZWJraXQtYnJlYWstYmVmb3JlOiBhdXRvO1xcclxcbiAgICAtbW96LWJyZWFrLWJlZm9yZTogYXV0bztcXHJcXG4gICAgYnJlYWstYmVmb3JlOiBhdXRvO1xcclxcbiAgICAtd2Via2l0LWNvbHVtbi1icmVhay1pbnNpZGU6IGF1dG87XFxyXFxuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdXRvO1xcclxcbiAgICBicmVhay1pbnNpZGU6IGF1dG87XFxyXFxuICAgIGNhcHRpb24tc2lkZTogdG9wO1xcclxcbiAgICBjbGVhcjogbm9uZTtcXHJcXG4gICAgY2xpcDogYXV0bztcXHJcXG4gICAgY29sb3I6IGluaGVyaXQ7XFxyXFxuICAgIGNvbG9yLXByb2ZpbGU6IGF1dG87XFxyXFxuICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiBhdXRvO1xcclxcbiAgICAtbW96LWNvbHVtbi1jb3VudDogYXV0bztcXHJcXG4gICAgY29sdW1uLWNvdW50OiBhdXRvO1xcclxcbiAgICAtd2Via2l0LWNvbHVtbi1maWxsOiBiYWxhbmNlO1xcclxcbiAgICAtbW96LWNvbHVtbi1maWxsOiBiYWxhbmNlO1xcclxcbiAgICBjb2x1bW4tZmlsbDogYmFsYW5jZTtcXHJcXG4gICAgLXdlYmtpdC1jb2x1bW4tZ2FwOiBub3JtYWw7XFxyXFxuICAgIC1tb3otY29sdW1uLWdhcDogbm9ybWFsO1xcclxcbiAgICBjb2x1bW4tZ2FwOiBub3JtYWw7XFxyXFxuICAgIC13ZWJraXQtY29sdW1uLXJ1bGU6IG1lZGl1bSBtZWRpdW0gIzFmMWYxZjtcXHJcXG4gICAgLW1vei1jb2x1bW4tcnVsZTogbWVkaXVtIG1lZGl1bSAjMWYxZjFmO1xcclxcbiAgICBjb2x1bW4tcnVsZTogbWVkaXVtIG1lZGl1bSAjMWYxZjFmO1xcclxcbiAgICAtd2Via2l0LWNvbHVtbi1zcGFuOiAxO1xcclxcbiAgICAtbW96LWNvbHVtbi1zcGFuOiAxO1xcclxcbiAgICBjb2x1bW4tc3BhbjogMTtcXHJcXG4gICAgLXdlYmtpdC1jb2x1bW4td2lkdGg6IGF1dG87XFxyXFxuICAgIC1tb3otY29sdW1uLXdpZHRoOiBhdXRvO1xcclxcbiAgICBjb2x1bW4td2lkdGg6IGF1dG87XFxyXFxuICAgIC13ZWJraXQtY29sdW1uczogYXV0byBhdXRvO1xcclxcbiAgICAtbW96LWNvbHVtbnM6IGF1dG8gYXV0bztcXHJcXG4gICAgY29sdW1uczogYXV0byBhdXRvO1xcclxcbiAgICBjb250ZW50OiBub3JtYWw7XFxyXFxuICAgIGNvdW50ZXItaW5jcmVtZW50OiBub25lO1xcclxcbiAgICBjb3VudGVyLXJlc2V0OiBub25lO1xcclxcbiAgICBjcm9wOiBhdXRvO1xcclxcbiAgICBjdXJzb3I6IGF1dG87XFxyXFxuICAgIGRpcmVjdGlvbjogbHRyO1xcclxcbiAgICBkaXNwbGF5OiBpbmxpbmU7XFxyXFxuICAgIGRvbWluYW50LWJhc2VsaW5lOiBhdXRvO1xcclxcbiAgICBkcm9wLWluaXRpYWwtYWZ0ZXItYWRqdXN0OiB0ZXh0LWFmdGVyLWVkZ2U7XFxyXFxuICAgIGRyb3AtaW5pdGlhbC1hZnRlci1hbGlnbjogYmFzZWxpbmU7XFxyXFxuICAgIGRyb3AtaW5pdGlhbC1iZWZvcmUtYWRqdXN0OiB0ZXh0LWJlZm9yZS1lZGdlO1xcclxcbiAgICBkcm9wLWluaXRpYWwtYmVmb3JlLWFsaWduOiBjYXBzLWhlaWdodDtcXHJcXG4gICAgZHJvcC1pbml0aWFsLXNpemU6IGF1dG87XFxyXFxuICAgIGRyb3AtaW5pdGlhbC12YWx1ZTogaW5pdGlhbDtcXHJcXG4gICAgZWxldmF0aW9uOiBsZXZlbDtcXHJcXG4gICAgZW1wdHktY2VsbHM6IHNob3c7XFxyXFxuICAgIGZpdDogZmlsbDtcXHJcXG4gICAgZml0LXBvc2l0aW9uOiAwJSAwJTtcXHJcXG4gICAgZmxvYXQ6IG5vbmU7XFxyXFxuICAgIGZsb2F0LW9mZnNldDogMCAwO1xcclxcbiAgICBncmlkLWNvbHVtbnM6IG5vbmU7XFxyXFxuICAgIGdyaWQtcm93czogbm9uZTtcXHJcXG4gICAgaGFuZ2luZy1wdW5jdHVhdGlvbjogbm9uZTtcXHJcXG4gICAgaGVpZ2h0OiBhdXRvO1xcclxcbiAgICBoeXBoZW5hdGUtYWZ0ZXI6IGF1dG87XFxyXFxuICAgIGh5cGhlbmF0ZS1iZWZvcmU6IGF1dG87XFxyXFxuICAgIGh5cGhlbmF0ZS1jaGFyYWN0ZXI6IGF1dG87XFxyXFxuICAgIGh5cGhlbmF0ZS1saW5lczogbm8tbGltaXQ7XFxyXFxuICAgIGh5cGhlbmF0ZS1yZXNvdXJjZTogbm9uZTtcXHJcXG4gICAgLXdlYmtpdC1oeXBoZW5zOiBtYW51YWw7XFxyXFxuICAgIC1tb3otaHlwaGVuczogbWFudWFsO1xcclxcbiAgICAtbXMtaHlwaGVuczogbWFudWFsO1xcclxcbiAgICBoeXBoZW5zOiBtYW51YWw7XFxyXFxuICAgIGljb246IGF1dG87XFxyXFxuICAgIGltYWdlLW9yaWVudGF0aW9uOiBhdXRvO1xcclxcbiAgICBpbWFnZS1yZW5kZXJpbmc6IGF1dG87XFxyXFxuICAgIGltYWdlLXJlc29sdXRpb246IG5vcm1hbDtcXHJcXG4gICAgaW5saW5lLWJveC1hbGlnbjogbGFzdDtcXHJcXG4gICAgbGVmdDogYXV0bztcXHJcXG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxyXFxuICAgIGxpbmUtc3RhY2tpbmc6IGlubGluZS1saW5lLWhlaWdodCBleGNsdWRlLXJ1YnkgY29uc2lkZXItc2hpZnRzO1xcclxcbiAgICBsaXN0LXN0eWxlOiBkaXNjIG91dHNpZGUgbm9uZTtcXHJcXG4gICAgbWFyZ2luOiAwO1xcclxcbiAgICBtYXJrczogbm9uZTtcXHJcXG4gICAgbWFycXVlZS1kaXJlY3Rpb246IGZvcndhcmQ7XFxyXFxuICAgIG1hcnF1ZWUtbG9vcDogMTtcXHJcXG4gICAgbWFycXVlZS1wbGF5LWNvdW50OiAxO1xcclxcbiAgICBtYXJxdWVlLXNwZWVkOiBub3JtYWw7XFxyXFxuICAgIG1hcnF1ZWUtc3R5bGU6IHNjcm9sbDtcXHJcXG4gICAgbWF4LWhlaWdodDogbm9uZTtcXHJcXG4gICAgbWF4LXdpZHRoOiBub25lO1xcclxcbiAgICBtaW4taGVpZ2h0OiAwO1xcclxcbiAgICBtaW4td2lkdGg6IDA7XFxyXFxuICAgIG1vdmUtdG86IG5vcm1hbDtcXHJcXG4gICAgbmF2LWRvd246IGF1dG87XFxyXFxuICAgIG5hdi1pbmRleDogYXV0bztcXHJcXG4gICAgbmF2LWxlZnQ6IGF1dG87XFxyXFxuICAgIG5hdi1yaWdodDogYXV0bztcXHJcXG4gICAgbmF2LXVwOiBhdXRvO1xcclxcbiAgICBvcGFjaXR5OiAxO1xcclxcbiAgICBvcnBoYW5zOiAyO1xcclxcbiAgICBvdXRsaW5lOiBpbnZlcnQgbm9uZSBtZWRpdW07XFxyXFxuICAgIG91dGxpbmUtb2Zmc2V0OiAwO1xcclxcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcXHJcXG4gICAgb3ZlcmZsb3ctc3R5bGU6IGF1dG87XFxyXFxuICAgIHBhZGRpbmc6IDA7XFxyXFxuICAgIHBhZ2U6IGF1dG87XFxyXFxuICAgIHBhZ2UtYnJlYWstYWZ0ZXI6IGF1dG87XFxyXFxuICAgIHBhZ2UtYnJlYWstYmVmb3JlOiBhdXRvO1xcclxcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXV0bztcXHJcXG4gICAgcGFnZS1wb2xpY3k6IHN0YXJ0O1xcclxcbiAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiBub25lO1xcclxcbiAgICBwZXJzcGVjdGl2ZTogbm9uZTtcXHJcXG4gICAgLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW46IDUwJSA1MCU7XFxyXFxuICAgIHBlcnNwZWN0aXZlLW9yaWdpbjogNTAlIDUwJTtcXHJcXG4gICAgcG9zaXRpb246IHN0YXRpYztcXHJcXG4gICAgcHJlc2VudGF0aW9uLWxldmVsOiAwO1xcclxcbiAgICBwdW5jdHVhdGlvbi10cmltOiBub25lO1xcclxcbiAgICBxdW90ZXM6IG5vbmU7XFxyXFxuICAgIHJlbmRlcmluZy1pbnRlbnQ6IGF1dG87XFxyXFxuICAgIHJlc2l6ZTogbm9uZTtcXHJcXG4gICAgcmlnaHQ6IGF1dG87XFxyXFxuICAgIHJvdGF0aW9uOiAwO1xcclxcbiAgICByb3RhdGlvbi1wb2ludDogNTAlIDUwJTtcXHJcXG4gICAgcnVieS1hbGlnbjogYXV0bztcXHJcXG4gICAgcnVieS1vdmVyaGFuZzogbm9uZTtcXHJcXG4gICAgcnVieS1wb3NpdGlvbjogYmVmb3JlO1xcclxcbiAgICBydWJ5LXNwYW46IG5vbmU7XFxyXFxuICAgIHNpemU6IGF1dG87XFxyXFxuICAgIHN0cmluZy1zZXQ6IG5vbmU7XFxyXFxuICAgIHRhYmxlLWxheW91dDogYXV0bztcXHJcXG4gICAgdG9wOiBhdXRvO1xcclxcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZTtcXHJcXG4gICAgLW1zLXRyYW5zZm9ybTogbm9uZTtcXHJcXG4gICAgdHJhbnNmb3JtOiBub25lO1xcclxcbiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCUgMDtcXHJcXG4gICAgLW1zLXRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCUgMDtcXHJcXG4gICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJSAwO1xcclxcbiAgICAtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogZmxhdDtcXHJcXG4gICAgdHJhbnNmb3JtLXN0eWxlOiBmbGF0O1xcclxcbiAgICB0cmFuc2l0aW9uOiBhbGwgMCBlYXNlIDA7XFxyXFxuICAgIHVuaWNvZGUtYmlkaTogbm9ybWFsO1xcclxcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XFxyXFxuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XFxyXFxuICAgIHdoaXRlLXNwYWNlLWNvbGxhcHNlOiBjb2xsYXBzZTtcXHJcXG4gICAgd2lkb3dzOiAyO1xcclxcbiAgICB3aWR0aDogYXV0bztcXHJcXG4gICAgd29yZC1icmVhazogbm9ybWFsO1xcclxcbiAgICB3b3JkLXNwYWNpbmc6IG5vcm1hbDtcXHJcXG4gICAgd29yZC13cmFwOiBub3JtYWw7XFxyXFxuICAgIHotaW5kZXg6IGF1dG87XFxyXFxuICAgIHRleHQtYWxpZ246IHN0YXJ0O1xcclxcbiAgICAvKiBBbmQgZGlzYWJsZSBNUyBncmFkaWVudHMgKi9cXHJcXG4gICAgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoZW5hYmxlZD1mYWxzZSk7XFxyXFxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xcclxcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xcclxcbiAgfVxcclxcbiAgYWRkcmVzcywgYmxvY2txdW90ZSwgZGQsIGRpdiwgZGwsIGR0LCBmaWVsZHNldCwgZm9ybSwgZGl2LmZvcm0sIGZyYW1lLCBmcmFtZXNldCwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgbm9mcmFtZXMsIG9sLCBwLCB1bCwgY2VudGVyLCBkaXIsIGhyLCBtZW51LCBwcmUsIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWVudSwgbmF2LCBzZWN0aW9uLCBzdW1tYXJ5IHtcXHJcXG4gICAgZGlzcGxheTogYmxvY2s7XFxyXFxuICB9XFxyXFxuICBsaSB7XFxyXFxuICAgIGRpc3BsYXk6IGxpc3QtaXRlbTtcXHJcXG4gIH1cXHJcXG4gIHRhYmxlIHtcXHJcXG4gICAgZGlzcGxheTogdGFibGU7XFxyXFxuICB9XFxyXFxuICB0ciB7XFxyXFxuICAgIGRpc3BsYXk6IHRhYmxlLXJvdztcXHJcXG4gIH1cXHJcXG4gIHRoZWFkIHtcXHJcXG4gICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwO1xcclxcbiAgfVxcclxcbiAgdGJvZHkge1xcclxcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3ctZ3JvdXA7XFxyXFxuICB9XFxyXFxuICB0Zm9vdCB7XFxyXFxuICAgIGRpc3BsYXk6IHRhYmxlLWZvb3Rlci1ncm91cDtcXHJcXG4gIH1cXHJcXG4gIGNvbCB7XFxyXFxuICAgIGRpc3BsYXk6IHRhYmxlLWNvbHVtbjtcXHJcXG4gIH1cXHJcXG4gIGNvbGdyb3VwIHtcXHJcXG4gICAgZGlzcGxheTogdGFibGUtY29sdW1uLWdyb3VwO1xcclxcbiAgfVxcclxcbiAgdGQsIHRoIHtcXHJcXG4gICAgZGlzcGxheTogdGFibGUtY2VsbDtcXHJcXG4gIH1cXHJcXG4gIGNhcHRpb24ge1xcclxcbiAgICBkaXNwbGF5OiB0YWJsZS1jYXB0aW9uO1xcclxcbiAgfVxcclxcbiAgaW5wdXQsIHNlbGVjdCB7XFxyXFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXHJcXG4gIH1cXHJcXG4gIGIsIHN0cm9uZyB7XFxyXFxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcclxcbiAgfVxcclxcbiAgYiA+IGksIHN0cm9uZyA+IGksIGIgPiBlbSwgc3Ryb25nID4gZW0ge1xcclxcbiAgICBmb250LXdlaWdodDogYm9sZDtcXHJcXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xcclxcbiAgfVxcclxcbiAgaSA+IHtcXHJcXG4gICAgYiwgc3Ryb25nIHtcXHJcXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcXHJcXG4gICAgICBmb250LXN0eWxlOiBpdGFsaWM7XFxyXFxuICAgIH1cXHJcXG4gIH1cXHJcXG4gIGVtID4ge1xcclxcbiAgICBiLCBzdHJvbmcge1xcclxcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcclxcbiAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcXHJcXG4gICAgfVxcclxcbiAgfVxcclxcbiAgdGV4dGFyZWEsIGlucHV0IHtcXHJcXG4gICAgY3Vyc29yOiB0ZXh0O1xcclxcbiAgfVxcclxcbn1cXHJcXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLmxvY2FscyA9IHtcblx0XCJyZXNldFwiOiBcIkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX3Jlc2V0XCIsXG5cdFwiZm9ybVwiOiBcIkJvb2tpbmdTeW5jV2lkZ2V0VXRpbHNfX2Zvcm1cIixcblx0XCJidXR0b25cIjogXCJCb29raW5nU3luY1dpZGdldFV0aWxzX19idXR0b25cIixcblx0XCJsZWdlbmRcIjogXCJCb29raW5nU3luY1dpZGdldFV0aWxzX19sZWdlbmRcIlxufTtcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1sxXS51c2VbMV0hLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZVsyXSEuL2NhbGVuZGFyLnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1sxXS51c2VbMV0hLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZVsyXSEuL2NhbGVuZGFyLnNjc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi8uLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uLy4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzFdIS4uLy4uLy4uL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdLnVzZVsyXSEuL3Jlc2V0LnNjc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcblxuICAgICAgb3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbiAgICBcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi8uLi9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzJdLnVzZVsxXSEuLi8uLi8uLi9zYXNzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1syXS51c2VbMl0hLi9yZXNldC5zY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBzdHlsZXNJbkRPTSA9IFtdO1xuXG5mdW5jdGlvbiBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSB7XG4gIHZhciByZXN1bHQgPSAtMTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRE9NLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRE9NW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucykge1xuICB2YXIgaWRDb3VudE1hcCA9IHt9O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXhCeUlkZW50aWZpZXIgPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM10sXG4gICAgICBzdXBwb3J0czogaXRlbVs0XSxcbiAgICAgIGxheWVyOiBpdGVtWzVdXG4gICAgfTtcblxuICAgIGlmIChpbmRleEJ5SWRlbnRpZmllciAhPT0gLTEpIHtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS5yZWZlcmVuY2VzKys7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0udXBkYXRlcihvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgdXBkYXRlciA9IGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpO1xuICAgICAgb3B0aW9ucy5ieUluZGV4ID0gaTtcbiAgICAgIHN0eWxlc0luRE9NLnNwbGljZShpLCAwLCB7XG4gICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIHVwZGF0ZXI6IHVwZGF0ZXIsXG4gICAgICAgIHJlZmVyZW5jZXM6IDFcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnRpZmllcik7XG4gIH1cblxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5cbmZ1bmN0aW9uIGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpIHtcbiAgdmFyIGFwaSA9IG9wdGlvbnMuZG9tQVBJKG9wdGlvbnMpO1xuICBhcGkudXBkYXRlKG9iaik7XG5cbiAgdmFyIHVwZGF0ZXIgPSBmdW5jdGlvbiB1cGRhdGVyKG5ld09iaikge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXAgJiYgbmV3T2JqLnN1cHBvcnRzID09PSBvYmouc3VwcG9ydHMgJiYgbmV3T2JqLmxheWVyID09PSBvYmoubGF5ZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBhcGkudXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHVwZGF0ZXI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGxpc3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGxpc3QgPSBsaXN0IHx8IFtdO1xuICB2YXIgbGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlKG5ld0xpc3QpIHtcbiAgICBuZXdMaXN0ID0gbmV3TGlzdCB8fCBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG5cbiAgICB2YXIgbmV3TGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKG5ld0xpc3QsIG9wdGlvbnMpO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tfaV07XG5cbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG5cbiAgICAgIGlmIChzdHlsZXNJbkRPTVtfaW5kZXhdLnJlZmVyZW5jZXMgPT09IDApIHtcbiAgICAgICAgc3R5bGVzSW5ET01bX2luZGV4XS51cGRhdGVyKCk7XG5cbiAgICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKF9pbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpOyAvLyBTcGVjaWFsIGNhc2UgdG8gcmV0dXJuIGhlYWQgb2YgaWZyYW1lIGluc3RlYWQgb2YgaWZyYW1lIGl0c2VsZlxuXG4gICAgaWYgKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCAmJiBzdHlsZVRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhY2Nlc3MgdG8gaWZyYW1lIGlzIGJsb2NrZWRcbiAgICAgICAgLy8gZHVlIHRvIGNyb3NzLW9yaWdpbiByZXN0cmljdGlvbnNcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG5cbiAgcmV0dXJuIG1lbW9bdGFyZ2V0XTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5cbmZ1bmN0aW9uIGluc2VydEJ5U2VsZWN0b3IoaW5zZXJ0LCBzdHlsZSkge1xuICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGluc2VydCk7XG5cbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG5cbiAgdGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRCeVNlbGVjdG9yOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICBvcHRpb25zLnNldEF0dHJpYnV0ZXMoZWxlbWVudCwgb3B0aW9ucy5hdHRyaWJ1dGVzKTtcbiAgb3B0aW9ucy5pbnNlcnQoZWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0U3R5bGVFbGVtZW50OyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyhzdHlsZUVsZW1lbnQpIHtcbiAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSBcInVuZGVmaW5lZFwiID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuXG4gIGlmIChub25jZSkge1xuICAgIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBub25jZSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXM7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopIHtcbiAgdmFyIGNzcyA9IFwiXCI7XG5cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KG9iai5zdXBwb3J0cywgXCIpIHtcIik7XG4gIH1cblxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwiQG1lZGlhIFwiLmNvbmNhdChvYmoubWVkaWEsIFwiIHtcIik7XG4gIH1cblxuICB2YXIgbmVlZExheWVyID0gdHlwZW9mIG9iai5sYXllciAhPT0gXCJ1bmRlZmluZWRcIjtcblxuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwiQGxheWVyXCIuY29uY2F0KG9iai5sYXllci5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KG9iai5sYXllcikgOiBcIlwiLCBcIiB7XCIpO1xuICB9XG5cbiAgY3NzICs9IG9iai5jc3M7XG5cbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuXG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cblxuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG5cbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG5cbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9IC8vIEZvciBvbGQgSUVcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG5cblxuICBvcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGVFbGVtZW50LnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpO1xufVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cblxuZnVuY3Rpb24gZG9tQVBJKG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlRWxlbWVudCA9IG9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICByZXR1cm4ge1xuICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKG9iaikge1xuICAgICAgYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopO1xuICAgIH0sXG4gICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZG9tQVBJOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50KSB7XG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuICAgIH1cblxuICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0eWxlVGFnVHJhbnNmb3JtOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4vLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuX193ZWJwYWNrX3JlcXVpcmVfXy5tID0gX193ZWJwYWNrX21vZHVsZXNfXztcblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5iID0gZG9jdW1lbnQuYmFzZVVSSSB8fCBzZWxmLmxvY2F0aW9uLmhyZWY7XG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgYW5kIGxvYWRpbmcgY2h1bmtzXG4vLyB1bmRlZmluZWQgPSBjaHVuayBub3QgbG9hZGVkLCBudWxsID0gY2h1bmsgcHJlbG9hZGVkL3ByZWZldGNoZWRcbi8vIFtyZXNvbHZlLCByZWplY3QsIFByb21pc2VdID0gY2h1bmsgbG9hZGluZywgMCA9IGNodW5rIGxvYWRlZFxudmFyIGluc3RhbGxlZENodW5rcyA9IHtcblx0XCJhcHBcIjogMFxufTtcblxuLy8gbm8gY2h1bmsgb24gZGVtYW5kIGxvYWRpbmdcblxuLy8gbm8gcHJlZmV0Y2hpbmdcblxuLy8gbm8gcHJlbG9hZGVkXG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3RcblxuLy8gbm8gb24gY2h1bmtzIGxvYWRlZFxuXG4vLyBubyBqc29ucCBmdW5jdGlvbiIsIl9fd2VicGFja19yZXF1aXJlX18ubmMgPSB1bmRlZmluZWQ7IiwiLyogZ2xvYmFsIGRvY3VtZW50LCByZXF1aXJlLCB3aW5kb3cgKi9cbmxldCBDYWxlbmRhciA9IHJlcXVpcmUoJy4vY2FsZW5kYXInKTtcblxuQ2FsZW5kYXIgPSBDYWxlbmRhci5kZWZhdWx0O1xuXG4vLyBFeHBvcnQgV2lkZ2V0VXRpbHNcbndpbmRvdy5Cb29raW5nU3luY1dpZGdldFV0aWxzID0gcmVxdWlyZSgnd2lkZ2V0LXV0aWxzJyk7XG5cbi8vIEV4cG9ydCBQb3BwZXJcbndpbmRvdy5Qb3BwZXIgPSByZXF1aXJlKCdAcG9wcGVyanMvY29yZScpO1xuXG5DYWxlbmRhci5pbml0ID0gKG9wdHMpID0+IHtcbiAgY29uc3QgaW5pdGlhbGl6ZWQgPSBbXTtcbiAgY29uc3Qgb3B0aW9ucyAgICAgPSBvcHRzIHx8IHt9O1xuICBjb25zdCBlbGVtZW50cyAgICA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWJvb2tpbmdzeW5jLWNhbGVuZGFyLXdpZGdldF0nKTtcblxuICBlbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgb3B0aW9ucy5lbCA9IGVsZW1lbnQ7XG4gICAgY29uc3QgY2FsICA9IG5ldyBDYWxlbmRhcihvcHRpb25zKTtcblxuICAgIGluaXRpYWxpemVkLnB1c2goY2FsKTtcbiAgfSk7XG5cbiAgQ2FsZW5kYXIuaW5zdGFuY2VzID0gaW5pdGlhbGl6ZWQ7XG4gIHJldHVybiBpbml0aWFsaXplZDtcbn07XG5cbkNhbGVuZGFyLlZFUlNJT04gPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uO1xuXG5pZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gJ2xvYWRpbmcnKSB7XG4gIENhbGVuZGFyLmluaXQoKTtcbn0gZWxzZSB7XG4gIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoKSA9PiB7XG4gICAgQ2FsZW5kYXIuaW5pdCgpO1xuICB9KTtcbn1cblxud2luZG93LkJvb2tpbmdTeW5jQ2FsZW5kYXJXaWRnZXQgPSBDYWxlbmRhcjtcblxuZXhwb3J0IGRlZmF1bHQgQ2FsZW5kYXI7XG4iXSwibmFtZXMiOlsiZ2V0Q29tcG9zaXRlUmVjdCIsImdldExheW91dFJlY3QiLCJsaXN0U2Nyb2xsUGFyZW50cyIsImdldE9mZnNldFBhcmVudCIsImdldENvbXB1dGVkU3R5bGUiLCJvcmRlck1vZGlmaWVycyIsImRlYm91bmNlIiwidmFsaWRhdGVNb2RpZmllcnMiLCJ1bmlxdWVCeSIsImdldEJhc2VQbGFjZW1lbnQiLCJtZXJnZUJ5TmFtZSIsImRldGVjdE92ZXJmbG93IiwiaXNFbGVtZW50IiwiYXV0byIsIklOVkFMSURfRUxFTUVOVF9FUlJPUiIsIklORklOSVRFX0xPT1BfRVJST1IiLCJERUZBVUxUX09QVElPTlMiLCJwbGFjZW1lbnQiLCJtb2RpZmllcnMiLCJzdHJhdGVneSIsImFyZVZhbGlkRWxlbWVudHMiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsInNvbWUiLCJlbGVtZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwicG9wcGVyR2VuZXJhdG9yIiwiZ2VuZXJhdG9yT3B0aW9ucyIsIl9nZW5lcmF0b3JPcHRpb25zIiwiX2dlbmVyYXRvck9wdGlvbnMkZGVmIiwiZGVmYXVsdE1vZGlmaWVycyIsIl9nZW5lcmF0b3JPcHRpb25zJGRlZjIiLCJkZWZhdWx0T3B0aW9ucyIsImNyZWF0ZVBvcHBlciIsInJlZmVyZW5jZSIsInBvcHBlciIsIm9wdGlvbnMiLCJzdGF0ZSIsIm9yZGVyZWRNb2RpZmllcnMiLCJPYmplY3QiLCJhc3NpZ24iLCJtb2RpZmllcnNEYXRhIiwiZWxlbWVudHMiLCJhdHRyaWJ1dGVzIiwic3R5bGVzIiwiZWZmZWN0Q2xlYW51cEZucyIsImlzRGVzdHJveWVkIiwiaW5zdGFuY2UiLCJzZXRPcHRpb25zIiwic2V0T3B0aW9uc0FjdGlvbiIsImNsZWFudXBNb2RpZmllckVmZmVjdHMiLCJzY3JvbGxQYXJlbnRzIiwiY29udGV4dEVsZW1lbnQiLCJjb25jYXQiLCJmaWx0ZXIiLCJtIiwiZW5hYmxlZCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIl9yZWYiLCJuYW1lIiwiZmxpcE1vZGlmaWVyIiwiZmluZCIsIl9yZWYyIiwiY29uc29sZSIsImVycm9yIiwiam9pbiIsIl9nZXRDb21wdXRlZFN0eWxlIiwibWFyZ2luVG9wIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5Cb3R0b20iLCJtYXJnaW5MZWZ0IiwibWFyZ2luIiwicGFyc2VGbG9hdCIsIndhcm4iLCJydW5Nb2RpZmllckVmZmVjdHMiLCJ1cGRhdGUiLCJmb3JjZVVwZGF0ZSIsIl9zdGF0ZSRlbGVtZW50cyIsInJlY3RzIiwicmVzZXQiLCJmb3JFYWNoIiwibW9kaWZpZXIiLCJkYXRhIiwiX19kZWJ1Z19sb29wc19fIiwiaW5kZXgiLCJfc3RhdGUkb3JkZXJlZE1vZGlmaWUiLCJmbiIsIl9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIiLCJfb3B0aW9ucyIsIlByb21pc2UiLCJyZXNvbHZlIiwiZGVzdHJveSIsInRoZW4iLCJvbkZpcnN0VXBkYXRlIiwiX3JlZjMiLCJfcmVmMyRvcHRpb25zIiwiZWZmZWN0IiwiY2xlYW51cEZuIiwibm9vcEZuIiwicHVzaCIsImlzU2hhZG93Um9vdCIsImNvbnRhaW5zIiwicGFyZW50IiwiY2hpbGQiLCJyb290Tm9kZSIsImdldFJvb3ROb2RlIiwibmV4dCIsImlzU2FtZU5vZGUiLCJwYXJlbnROb2RlIiwiaG9zdCIsImlzSFRNTEVsZW1lbnQiLCJyb3VuZCIsImdldFdpbmRvdyIsImlzTGF5b3V0Vmlld3BvcnQiLCJpbmNsdWRlU2NhbGUiLCJpc0ZpeGVkU3RyYXRlZ3kiLCJjbGllbnRSZWN0Iiwic2NhbGVYIiwic2NhbGVZIiwib2Zmc2V0V2lkdGgiLCJ3aWR0aCIsIm9mZnNldEhlaWdodCIsImhlaWdodCIsIndpbmRvdyIsInZpc3VhbFZpZXdwb3J0IiwiYWRkVmlzdWFsT2Zmc2V0cyIsIngiLCJsZWZ0Iiwib2Zmc2V0TGVmdCIsInkiLCJ0b3AiLCJvZmZzZXRUb3AiLCJyaWdodCIsImJvdHRvbSIsInZpZXdwb3J0IiwiZ2V0Vmlld3BvcnRSZWN0IiwiZ2V0RG9jdW1lbnRSZWN0IiwiZ2V0RG9jdW1lbnRFbGVtZW50IiwiZ2V0UGFyZW50Tm9kZSIsImdldE5vZGVOYW1lIiwicmVjdFRvQ2xpZW50UmVjdCIsIm1heCIsIm1pbiIsImdldElubmVyQm91bmRpbmdDbGllbnRSZWN0IiwicmVjdCIsImNsaWVudFRvcCIsImNsaWVudExlZnQiLCJjbGllbnRIZWlnaHQiLCJjbGllbnRXaWR0aCIsImdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlIiwiY2xpcHBpbmdQYXJlbnQiLCJnZXRDbGlwcGluZ1BhcmVudHMiLCJjbGlwcGluZ1BhcmVudHMiLCJjYW5Fc2NhcGVDbGlwcGluZyIsImluZGV4T2YiLCJwb3NpdGlvbiIsImNsaXBwZXJFbGVtZW50IiwiZ2V0Q2xpcHBpbmdSZWN0IiwiYm91bmRhcnkiLCJyb290Qm91bmRhcnkiLCJtYWluQ2xpcHBpbmdQYXJlbnRzIiwiZmlyc3RDbGlwcGluZ1BhcmVudCIsImNsaXBwaW5nUmVjdCIsInJlZHVjZSIsImFjY1JlY3QiLCJnZXROb2RlU2Nyb2xsIiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImlzU2Nyb2xsUGFyZW50IiwiaXNFbGVtZW50U2NhbGVkIiwiZWxlbWVudE9yVmlydHVhbEVsZW1lbnQiLCJvZmZzZXRQYXJlbnQiLCJpc0ZpeGVkIiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRQYXJlbnRJc1NjYWxlZCIsImRvY3VtZW50RWxlbWVudCIsInNjcm9sbCIsInNjcm9sbExlZnQiLCJzY3JvbGxUb3AiLCJvZmZzZXRzIiwib3duZXJEb2N1bWVudCIsImRvY3VtZW50IiwiZ2V0V2luZG93U2Nyb2xsIiwiX2VsZW1lbnQkb3duZXJEb2N1bWVuIiwiaHRtbCIsIndpblNjcm9sbCIsImJvZHkiLCJzY3JvbGxXaWR0aCIsInNjcm9sbEhlaWdodCIsImRpcmVjdGlvbiIsImdldEhUTUxFbGVtZW50U2Nyb2xsIiwiTWF0aCIsImFicyIsIm5vZGVOYW1lIiwidG9Mb3dlckNhc2UiLCJub2RlIiwiaXNUYWJsZUVsZW1lbnQiLCJnZXRVQVN0cmluZyIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJnZXRDb250YWluaW5nQmxvY2siLCJpc0ZpcmVmb3giLCJ0ZXN0IiwiaXNJRSIsImVsZW1lbnRDc3MiLCJjdXJyZW50Tm9kZSIsImNzcyIsInRyYW5zZm9ybSIsInBlcnNwZWN0aXZlIiwiY29udGFpbiIsIndpbGxDaGFuZ2UiLCJhc3NpZ25lZFNsb3QiLCJnZXRTY3JvbGxQYXJlbnQiLCJ3aW4iLCJsYXlvdXRWaWV3cG9ydCIsInRvU3RyaW5nIiwiZGVmYXVsdFZpZXciLCJwYWdlWE9mZnNldCIsInBhZ2VZT2Zmc2V0IiwiT3duRWxlbWVudCIsIkVsZW1lbnQiLCJIVE1MRWxlbWVudCIsIlNoYWRvd1Jvb3QiLCJvdmVyZmxvdyIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsImxpc3QiLCJzY3JvbGxQYXJlbnQiLCJpc0JvZHkiLCJ0YXJnZXQiLCJ1cGRhdGVkTGlzdCIsImJhc2VQbGFjZW1lbnRzIiwic3RhcnQiLCJlbmQiLCJ2YXJpYXRpb25QbGFjZW1lbnRzIiwiYWNjIiwicGxhY2VtZW50cyIsImJlZm9yZVJlYWQiLCJyZWFkIiwiYWZ0ZXJSZWFkIiwiYmVmb3JlTWFpbiIsIm1haW4iLCJhZnRlck1haW4iLCJiZWZvcmVXcml0ZSIsIndyaXRlIiwiYWZ0ZXJXcml0ZSIsIm1vZGlmaWVyUGhhc2VzIiwiY3JlYXRlUG9wcGVyQmFzZSIsImNyZWF0ZVBvcHBlckxpdGUiLCJhcHBseVN0eWxlcyIsImtleXMiLCJzdHlsZSIsInZhbHVlIiwicmVtb3ZlQXR0cmlidXRlIiwic2V0QXR0cmlidXRlIiwiaW5pdGlhbFN0eWxlcyIsImFycm93Iiwic3R5bGVQcm9wZXJ0aWVzIiwiaGFzT3duUHJvcGVydHkiLCJwcm9wZXJ0eSIsImF0dHJpYnV0ZSIsInBoYXNlIiwicmVxdWlyZXMiLCJnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQiLCJ3aXRoaW4iLCJtZXJnZVBhZGRpbmdPYmplY3QiLCJleHBhbmRUb0hhc2hNYXAiLCJ0b1BhZGRpbmdPYmplY3QiLCJwYWRkaW5nIiwiX3N0YXRlJG1vZGlmaWVyc0RhdGEkIiwiYXJyb3dFbGVtZW50IiwicG9wcGVyT2Zmc2V0cyIsImJhc2VQbGFjZW1lbnQiLCJheGlzIiwiaXNWZXJ0aWNhbCIsImxlbiIsInBhZGRpbmdPYmplY3QiLCJhcnJvd1JlY3QiLCJtaW5Qcm9wIiwibWF4UHJvcCIsImVuZERpZmYiLCJzdGFydERpZmYiLCJhcnJvd09mZnNldFBhcmVudCIsImNsaWVudFNpemUiLCJjZW50ZXJUb1JlZmVyZW5jZSIsImNlbnRlciIsIm9mZnNldCIsImF4aXNQcm9wIiwiY2VudGVyT2Zmc2V0IiwiX29wdGlvbnMkZWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJyZXF1aXJlc0lmRXhpc3RzIiwiZ2V0VmFyaWF0aW9uIiwidW5zZXRTaWRlcyIsInJvdW5kT2Zmc2V0c0J5RFBSIiwiZHByIiwiZGV2aWNlUGl4ZWxSYXRpbyIsIm1hcFRvU3R5bGVzIiwiX09iamVjdCRhc3NpZ24yIiwicG9wcGVyUmVjdCIsInZhcmlhdGlvbiIsImdwdUFjY2VsZXJhdGlvbiIsImFkYXB0aXZlIiwicm91bmRPZmZzZXRzIiwiX29mZnNldHMkeCIsIl9vZmZzZXRzJHkiLCJoYXNYIiwiaGFzWSIsInNpZGVYIiwic2lkZVkiLCJoZWlnaHRQcm9wIiwid2lkdGhQcm9wIiwib2Zmc2V0WSIsIm9mZnNldFgiLCJjb21tb25TdHlsZXMiLCJfcmVmNCIsIl9PYmplY3QkYXNzaWduIiwiY29tcHV0ZVN0eWxlcyIsIl9yZWY1IiwiX29wdGlvbnMkZ3B1QWNjZWxlcmF0IiwiX29wdGlvbnMkYWRhcHRpdmUiLCJfb3B0aW9ucyRyb3VuZE9mZnNldHMiLCJ0cmFuc2l0aW9uUHJvcGVydHkiLCJwYXNzaXZlIiwiX29wdGlvbnMkc2Nyb2xsIiwiX29wdGlvbnMkcmVzaXplIiwicmVzaXplIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJnZXRPcHBvc2l0ZVBsYWNlbWVudCIsImdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50IiwiY29tcHV0ZUF1dG9QbGFjZW1lbnQiLCJnZXRFeHBhbmRlZEZhbGxiYWNrUGxhY2VtZW50cyIsIm9wcG9zaXRlUGxhY2VtZW50IiwiZmxpcCIsIl9za2lwIiwiX29wdGlvbnMkbWFpbkF4aXMiLCJtYWluQXhpcyIsImNoZWNrTWFpbkF4aXMiLCJfb3B0aW9ucyRhbHRBeGlzIiwiYWx0QXhpcyIsImNoZWNrQWx0QXhpcyIsInNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyIsImZhbGxiYWNrUGxhY2VtZW50cyIsImFsdEJvdW5kYXJ5IiwiX29wdGlvbnMkZmxpcFZhcmlhdGlvIiwiZmxpcFZhcmlhdGlvbnMiLCJhbGxvd2VkQXV0b1BsYWNlbWVudHMiLCJwcmVmZXJyZWRQbGFjZW1lbnQiLCJpc0Jhc2VQbGFjZW1lbnQiLCJyZWZlcmVuY2VSZWN0IiwiY2hlY2tzTWFwIiwiTWFwIiwibWFrZUZhbGxiYWNrQ2hlY2tzIiwiZmlyc3RGaXR0aW5nUGxhY2VtZW50IiwiaSIsIl9iYXNlUGxhY2VtZW50IiwiaXNTdGFydFZhcmlhdGlvbiIsIm1haW5WYXJpYXRpb25TaWRlIiwiYWx0VmFyaWF0aW9uU2lkZSIsImNoZWNrcyIsImV2ZXJ5IiwiY2hlY2siLCJzZXQiLCJudW1iZXJPZkNoZWNrcyIsIl9sb29wIiwiX2kiLCJmaXR0aW5nUGxhY2VtZW50IiwiZ2V0Iiwic2xpY2UiLCJfcmV0IiwiZ2V0U2lkZU9mZnNldHMiLCJwcmV2ZW50ZWRPZmZzZXRzIiwiaXNBbnlTaWRlRnVsbHlDbGlwcGVkIiwic2lkZSIsImhpZGUiLCJwcmV2ZW50T3ZlcmZsb3ciLCJyZWZlcmVuY2VPdmVyZmxvdyIsImVsZW1lbnRDb250ZXh0IiwicG9wcGVyQWx0T3ZlcmZsb3ciLCJyZWZlcmVuY2VDbGlwcGluZ09mZnNldHMiLCJwb3BwZXJFc2NhcGVPZmZzZXRzIiwiaXNSZWZlcmVuY2VIaWRkZW4iLCJoYXNQb3BwZXJFc2NhcGVkIiwiZGVmYXVsdCIsImV2ZW50TGlzdGVuZXJzIiwiZGlzdGFuY2VBbmRTa2lkZGluZ1RvWFkiLCJpbnZlcnREaXN0YW5jZSIsInNraWRkaW5nIiwiZGlzdGFuY2UiLCJfb3B0aW9ucyRvZmZzZXQiLCJfZGF0YSRzdGF0ZSRwbGFjZW1lbnQiLCJjb21wdXRlT2Zmc2V0cyIsImdldEFsdEF4aXMiLCJ3aXRoaW5NYXhDbGFtcCIsImdldEZyZXNoU2lkZU9iamVjdCIsIm1hdGhNaW4iLCJtYXRoTWF4IiwiX29wdGlvbnMkdGV0aGVyIiwidGV0aGVyIiwiX29wdGlvbnMkdGV0aGVyT2Zmc2V0IiwidGV0aGVyT2Zmc2V0IiwidGV0aGVyT2Zmc2V0VmFsdWUiLCJub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUiLCJvZmZzZXRNb2RpZmllclN0YXRlIiwiX29mZnNldE1vZGlmaWVyU3RhdGUkIiwibWFpblNpZGUiLCJhbHRTaWRlIiwiYWRkaXRpdmUiLCJtaW5MZW4iLCJtYXhMZW4iLCJhcnJvd1BhZGRpbmdPYmplY3QiLCJhcnJvd1BhZGRpbmdNaW4iLCJhcnJvd1BhZGRpbmdNYXgiLCJhcnJvd0xlbiIsIm1pbk9mZnNldCIsIm1heE9mZnNldCIsImNsaWVudE9mZnNldCIsIm9mZnNldE1vZGlmaWVyVmFsdWUiLCJ0ZXRoZXJNaW4iLCJ0ZXRoZXJNYXgiLCJwcmV2ZW50ZWRPZmZzZXQiLCJfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIiwiX21haW5TaWRlIiwiX2FsdFNpZGUiLCJfb2Zmc2V0IiwiX21pbiIsIl9tYXgiLCJpc09yaWdpblNpZGUiLCJfb2Zmc2V0TW9kaWZpZXJWYWx1ZSIsIl90ZXRoZXJNaW4iLCJfdGV0aGVyTWF4IiwiX3ByZXZlbnRlZE9mZnNldCIsImFsbFBsYWNlbWVudHMiLCJfb3B0aW9ucyRhbGxvd2VkQXV0b1AiLCJhbGxvd2VkUGxhY2VtZW50cyIsIm92ZXJmbG93cyIsInNvcnQiLCJhIiwiYiIsImNvbW1vblgiLCJjb21tb25ZIiwicGVuZGluZyIsInVuZGVmaW5lZCIsIl9vcHRpb25zJHBsYWNlbWVudCIsIl9vcHRpb25zJHN0cmF0ZWd5IiwiX29wdGlvbnMkYm91bmRhcnkiLCJfb3B0aW9ucyRyb290Qm91bmRhcnkiLCJfb3B0aW9ucyRlbGVtZW50Q29udGUiLCJfb3B0aW9ucyRhbHRCb3VuZGFyeSIsIl9vcHRpb25zJHBhZGRpbmciLCJhbHRDb250ZXh0IiwiY2xpcHBpbmdDbGllbnRSZWN0IiwicmVmZXJlbmNlQ2xpZW50UmVjdCIsInBvcHBlckNsaWVudFJlY3QiLCJlbGVtZW50Q2xpZW50UmVjdCIsIm92ZXJmbG93T2Zmc2V0cyIsIm9mZnNldERhdGEiLCJrZXkiLCJtdWx0aXBseSIsImhhc2hNYXAiLCJmb3JtYXQiLCJzdHIiLCJwIiwiYyIsInJlcGxhY2UiLCJzcGxpdCIsImhhc2giLCJtYXRjaGVkIiwibWVyZ2VkIiwiY3VycmVudCIsImV4aXN0aW5nIiwibWFwIiwib3JkZXIiLCJ2aXNpdGVkIiwiU2V0IiwicmVzdWx0IiwiYWRkIiwiZGVwIiwiaGFzIiwiZGVwTW9kaWZpZXIiLCJhcnIiLCJpZGVudGlmaWVycyIsIml0ZW0iLCJpZGVudGlmaWVyIiwidWFEYXRhIiwibmF2aWdhdG9yIiwidXNlckFnZW50RGF0YSIsImJyYW5kcyIsImJyYW5kIiwidmVyc2lvbiIsInVzZXJBZ2VudCIsIklOVkFMSURfTU9ESUZJRVJfRVJST1IiLCJNSVNTSU5HX0RFUEVOREVOQ1lfRVJST1IiLCJWQUxJRF9QUk9QRVJUSUVTIiwic2VsZiIsIlN0cmluZyIsImlzQXJyYXkiLCJzIiwicmVxdWlyZW1lbnQiLCJtb2QiLCJ2IiwibW9kdWxlIiwiZXhwb3J0cyIsImNzc1dpdGhNYXBwaW5nVG9TdHJpbmciLCJjb250ZW50IiwibmVlZExheWVyIiwibW9kdWxlcyIsIm1lZGlhIiwiZGVkdXBlIiwic3VwcG9ydHMiLCJsYXllciIsImFscmVhZHlJbXBvcnRlZE1vZHVsZXMiLCJrIiwiaWQiLCJfayIsInVybCIsIl9fZXNNb2R1bGUiLCJuZWVkUXVvdGVzIiwiY3NzTWFwcGluZyIsImJ0b2EiLCJiYXNlNjQiLCJ1bmVzY2FwZSIsImVuY29kZVVSSUNvbXBvbmVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzb3VyY2VNYXBwaW5nIiwic291cmNlVVJMcyIsInNvdXJjZXMiLCJzb3VyY2UiLCJzb3VyY2VSb290IiwiY3VycmVuY3lTeW1ib2xNYXAiLCJyZXF1aXJlIiwiZ2V0U3ltYm9sRnJvbUN1cnJlbmN5IiwiY3VycmVuY3lDb2RlIiwiY29kZSIsInRvVXBwZXJDYXNlIiwicHJvdG90eXBlIiwiY2FsbCIsIkFFRCIsIkFGTiIsIkFMTCIsIkFNRCIsIkFORyIsIkFPQSIsIkFSUyIsIkFVRCIsIkFXRyIsIkFaTiIsIkJBTSIsIkJCRCIsIkJEVCIsIkJHTiIsIkJIRCIsIkJJRiIsIkJNRCIsIkJORCIsIkJPQiIsIkJPViIsIkJSTCIsIkJTRCIsIkJUQyIsIkJUTiIsIkJXUCIsIkJZTiIsIkJZUiIsIkJaRCIsIkNBRCIsIkNERiIsIkNIRSIsIkNIRiIsIkNIVyIsIkNMRiIsIkNMUCIsIkNOWSIsIkNPUCIsIkNPVSIsIkNSQyIsIkNVQyIsIkNVUCIsIkNWRSIsIkNaSyIsIkRKRiIsIkRLSyIsIkRPUCIsIkRaRCIsIkVFSyIsIkVHUCIsIkVSTiIsIkVUQiIsIkVUSCIsIkVVUiIsIkZKRCIsIkZLUCIsIkdCUCIsIkdFTCIsIkdHUCIsIkdIQyIsIkdIUyIsIkdJUCIsIkdNRCIsIkdORiIsIkdUUSIsIkdZRCIsIkhLRCIsIkhOTCIsIkhSSyIsIkhURyIsIkhVRiIsIklEUiIsIklMUyIsIklNUCIsIklOUiIsIklRRCIsIklSUiIsIklTSyIsIkpFUCIsIkpNRCIsIkpPRCIsIkpQWSIsIktFUyIsIktHUyIsIktIUiIsIktNRiIsIktQVyIsIktSVyIsIktXRCIsIktZRCIsIktaVCIsIkxBSyIsIkxCUCIsIkxLUiIsIkxSRCIsIkxTTCIsIkxUQyIsIkxUTCIsIkxWTCIsIkxZRCIsIk1BRCIsIk1ETCIsIk1HQSIsIk1LRCIsIk1NSyIsIk1OVCIsIk1PUCIsIk1STyIsIk1SVSIsIk1VUiIsIk1WUiIsIk1XSyIsIk1YTiIsIk1YViIsIk1ZUiIsIk1aTiIsIk5BRCIsIk5HTiIsIk5JTyIsIk5PSyIsIk5QUiIsIk5aRCIsIk9NUiIsIlBBQiIsIlBFTiIsIlBHSyIsIlBIUCIsIlBLUiIsIlBMTiIsIlBZRyIsIlFBUiIsIlJNQiIsIlJPTiIsIlJTRCIsIlJVQiIsIlJXRiIsIlNBUiIsIlNCRCIsIlNDUiIsIlNERyIsIlNFSyIsIlNHRCIsIlNIUCIsIlNMTCIsIlNPUyIsIlNSRCIsIlNTUCIsIlNURCIsIlNUTiIsIlNWQyIsIlNZUCIsIlNaTCIsIlRIQiIsIlRKUyIsIlRNVCIsIlRORCIsIlRPUCIsIlRSTCIsIlRSWSIsIlRURCIsIlRWRCIsIlRXRCIsIlRaUyIsIlVBSCIsIlVHWCIsIlVTRCIsIlVZSSIsIlVZVSIsIlVZVyIsIlVaUyIsIlZFRiIsIlZFUyIsIlZORCIsIlZVViIsIldTVCIsIlhBRiIsIlhCVCIsIlhDRCIsIlhPRiIsIlhQRiIsIlhTVSIsIlhVQSIsIllFUiIsIlpBUiIsIlpNVyIsIlpXRCIsIlpXTCIsImdldEZvcm1hdE9wdGlvbnMiLCJ0aW1lem9uZSIsInVzZU9wdGlvbnMiLCJ0eiIsIk51bWJlciIsImlzRmluaXRlIiwiZ2V0VGltZXpvbmVPZmZzZXRNaW51dGVzIiwiZGF0ZSIsImZsb29yIiwiRGF0ZSIsImdldFRpbWV6b25lT2Zmc2V0IiwidHpVcHBlciIsImRlZmF1bHRUaW1lem9uZU5hbWVzIiwiRXJyb3IiLCJzdHJmdGltZSIsInRvRGF0ZSIsInRvSlNEYXRlIiwidG9rZW5zIiwiVGltZXN0YW1wUGFyc2VyIiwicGFyc2VGb3JtYXRTdHJpbmciLCJ0aW1lem9uZU9mZnNldE1pbnV0ZXMiLCJ0ekRhdGUiLCJzZXRVVENNaW51dGVzIiwiZ2V0VVRDTWludXRlcyIsIm91dHB1dCIsInRva2VuIiwiRGlyZWN0aXZlIiwiVG9rZW4iLCJzdHJwdGltZSIsInRpbWVzdGFtcCIsInBhcnNlciIsInBhcnNlIiwiZ2V0RGF0ZSIsInN0cnRpbWUiLCJlbmdsaXNoIiwiZXJhTmFtZXMiLCJtZXJpZGllbU5hbWVzIiwic2hvcnRXZWVrZGF5TmFtZXMiLCJsb25nV2Vla2RheU5hbWVzIiwic2hvcnRNb250aE5hbWVzIiwibG9uZ01vbnRoTmFtZXMiLCJvcmRpbmFsVHJhbnNmb3JtIiwibnVtYmVyIiwiZGlnaXQiLCJsZWZ0UGFkIiwiY2hhciIsInRleHQiLCJzdHJpbmciLCJ3cml0ZVRpbWV6b25lT2Zmc2V0Iiwib2Zmc2V0TWludXRlcyIsImFic09mZnNldCIsInNpZ24iLCJob3VyIiwibWludXRlIiwiZ2V0RGF5T2ZXZWVrIiwieWVhciIsImdldFVUQ0Z1bGxZZWFyIiwibW9udGgiLCJnZXRVVENNb250aCIsImRheSIsImdldFVUQ0RhdGUiLCJnZXREYXlPZlllYXIiLCJsZW5ndGhzIiwibW9udGhMZW5ndGhzIiwiZm9yWWVhciIsIm1vbnRocyIsImdldFdlZWtPZlllYXJGcm9tU3VuZGF5IiwiZGF5T2ZZZWFyIiwiZmlyc3REYXlPZldlZWsiLCJnZXRGaXJzdFdlZWtkYXlJblllYXIiLCJnZXRXZWVrT2ZZZWFyRnJvbU1vbmRheSIsImRheU9mV2VlayIsInN1bmRheVdlZWsiLCJnZXRJU09XZWVrc0luWWVhciIsInByaW9yWWVhciIsImdldElTT1dlZWtPZlllYXIiLCJ3ZWVrTnVtYmVyIiwiZ2V0SVNPV2Vla0RhdGVZZWFyIiwiY29uc3RydWN0b3IiLCJuYW1lcyIsInBhZExlbmd0aCIsImxpa2VseUxlbmd0aCIsIm1pbmltdW0iLCJtYXhpbXVtIiwiY2FuQmVOZWdhdGl2ZSIsInJld3JpdGUiLCJwYXJzZUZ1bmN0aW9uIiwid3JpdGVGdW5jdGlvbiIsInN0b3JlRnVuY3Rpb24iLCJzdG9yZSIsImdldEJ5TmFtZSIsImRpcmVjdGl2ZSIsImlzT3JkaW5hbCIsImdldENhbkJlTmVnYXRpdmUiLCJnZXRMaWtlbHlMZW5ndGgiLCJnZXRSZXdyaXRlUGFyc2VkIiwicmV3cml0ZVBhcnNlZFZhbHVlIiwiZXhwYW5kZWRGcm9tIiwiaGFzUGFyc2VGdW5jdGlvbiIsImhhc1N0b3JlRnVuY3Rpb24iLCJudW1iZXJJbkJvdW5kcyIsImdldEJvdW5kc1N0cmluZyIsIkRpcmVjdGl2ZVRva2VuIiwicmVzdWx0U3RyaW5nIiwidXBwZXIiLCJTdHJpbmdUb2tlbiIsIkRpcmVjdGl2ZVN0cmluZ1Rva2VuIiwiYWRkQ2hhcmFjdGVyIiwiY2giLCJwYXJzZVdlZWtkYXlOYW1lIiwiZ2V0VVRDRGF5IiwicGFyc2VNb250aE5hbWUiLCJjZW50dXJ5IiwiZGF5T2ZNb250aCIsIm1pY3Jvc2Vjb25kIiwiZ2V0VVRDTWlsbGlzZWNvbmRzIiwiaXNvVHdvRGlnaXRZZWFyIiwiaXNvWWVhciIsImdldFVUQ0hvdXJzIiwibWlsbGlzZWNvbmQiLCJtZXJpZGllbSIsInBhcnNlTWVyaWRpZW1OYW1lIiwibWljcm9zZWNvbmRzU2luY2VFcG9jaCIsImdldFRpbWUiLCJzZWNvbmRzU2luY2VFcG9jaCIsInNlY29uZCIsImdldFVUQ1NlY29uZHMiLCJ3ZWVrT2ZZZWFyRnJvbVN1bmRheSIsImlzb1dlZWtPZlllYXIiLCJ3ZWVrT2ZZZWFyRnJvbU1vbmRheSIsInR3b0RpZ2l0WWVhciIsInBhcnNlVGltZXpvbmVPZmZzZXQiLCJ0ekxpc3QiLCJnZXRUaW1lem9uZU5hbWVMaXN0IiwicGFyc2VJbmRleEluTGlzdCIsInRpbWV6b25lTmFtZXMiLCJlcmEiLCJwYXJzZUVyYU5hbWUiLCJUaW1lc3RhbXBQYXJzZUVycm9yIiwicmVhc29uIiwiY3VycmVudFRva2VuIiwibWVzc2FnZSIsImNhcHR1cmVTdGFja1RyYWNlIiwic3RhY2siLCJjcmVhdGUiLCJpc0RpZ2l0IiwiZ2V0WWVhckZyb21Ud29EaWdpdHMiLCJnZXRNb250aEZyb21EYXlPZlllYXIiLCJkYXlzIiwiZ2V0RGF5T2ZNb250aEZyb21EYXlPZlllYXIiLCJnZXREYXRlRnJvbUlTT1dlZWtEYXRlIiwid2Vla2RheU9mSmFuNCIsImRheXNJblllYXIiLCJpc0xlYXBZZWFyIiwiZ2V0RGF0ZUZyb21TdW5kYXlXZWVrRGF0ZSIsIndlZWtPZlllYXIiLCJnZXREYXRlRnJvbU1vbmRheVdlZWtEYXRlIiwic3VuZGF5RGF5T2ZZZWFyIiwiZm9ya0xlbmd0aCIsIm1pbGxpc2Vjb25kc1NpbmNlRXBvY2giLCJnZXRUaW1lem9uZU9mZnNldE9mRGF0ZSIsIm9mZnNldFNpZ24iLCJ0b3RhbE1pbnV0ZXMiLCJnZXRGdWxsWWVhciIsInNldFVUQ0Z1bGxZZWFyIiwic2V0VVRDTW9udGgiLCJzZXRVVENEYXRlIiwic2V0VVRDSG91cnMiLCJzZXRVVENTZWNvbmRzIiwic2V0VVRDTWlsbGlzZWNvbmRzIiwiY29weSIsImZvcmsiLCJzdGFydFRva2VuSW5kZXgiLCJwYXJzZVN0cmluZ1Rva2VuIiwicGFyc2VBbWJpZ3VvdXNOdW1iZXIiLCJwYXJzZU51bWJlciIsInRva2VuSW5kZXgiLCJsYXN0V2hvbGVFcnJvciIsImxlbmd0aExpbWl0IiwiSW5maW5pdHkiLCJuZWdhdGl2ZSIsInRyaW0iLCJpc0ludGVnZXIiLCJvcmRpbmFsIiwicG9zc2libGUiLCJwb3NzaWJsZUNvdW50IiwibWF0Y2hJbmRleCIsIm1hdGNoTGVuZ3RoIiwiaiIsInRpbWV6b25lTmFtZUxpc3QiLCJob3VycyIsIm1pbnV0ZXMiLCJmb3JtYXRTdHJpbmciLCJkaXIiLCJ6dWx1VGltZXpvbmUiLCJjb21tb24iLCJsZWFwIiwiaXNPYmplY3QiLCJzZXJpYWxpemUiLCJ0b1VuZGVyc2NvcmUiLCJhamF4IiwiYXBpVXJsIiwic3VjY2VzcyIsInBhcmFtcyIsIm1ldGhvZCIsInhtbEh0dHAiLCJYTUxIdHRwUmVxdWVzdCIsImlzU3VjY2VzcyIsInN0YXR1cyIsIm9wZW4iLCJzZXRSZXF1ZXN0SGVhZGVyIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVzcG9uc2UiLCJyZWFkeVN0YXRlIiwicmVzcG9uc2VUZXh0IiwiZSIsInNlbmQiLCJ0b0xvY2FsZVN0cmluZ1N1cHBvcnRzT3B0aW9ucyIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJjdXJyZW5jeUZvcm1hdHRlciIsImxhbmciLCJjdXJyZW5jeSIsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsImlzRG9sbGFyIiwiY3VycmVuY3lEaXNwbGF5IiwibnVtYmVyRm9ybWF0IiwiZGF5c0luTW9udGgiLCJtb250aExlbmd0aCIsInJlbW92ZUNsYXNzIiwic2V0Q2xhc3NOYW1lIiwiZ2V0Q2xhc3NOYW1lIiwiYWRkQ2xhc3MiLCJlbCIsImNsYXNzTmFtZXMiLCJjbGFzc0xpc3QiLCJjbHMiLCJjcmVhdGVFbGVtZW50IiwiYXR0cnMiLCJkZXN0cm95RWxlbWVudCIsInJlbW92ZUNoaWxkIiwiZWxlbWVudEZyb21TdHJpbmciLCJpbm5lckhUTUwiLCJjaGlsZHJlbiIsImZpbmRCeUNsYXNzTmFtZSIsImNvbnRleHQiLCJjbGFzc05hbWUiLCJTVkdBbmltYXRlZFN0cmluZyIsImJhc2VWYWwiLCJ0cmF2ZXJzZVRvUGFyZW50V2l0aEF0dHIiLCJnZXRQYXJlbnRBdHRyaWJ1dGUiLCJhdHRyIiwiaGFzQ2xhc3MiLCJSZWdFeHAiLCJpcyIsImlzSW5zaWRlIiwidGFnTmFtZSIsInJlbW92ZSIsInJlZ2V4IiwiZ2V0QXR0cmlidXRlIiwiRW1pdHRlciIsIm9uIiwiZXZlbnQiLCJsaXN0ZW5lciIsImV2ZW50cyIsIm9uY2UiLCJvZmYiLCJhcHBseSIsImxpc3RlbmVycyIsInNwbGljZSIsImVtaXQiLCJpc0Z1bmN0aW9uIiwiZiIsImlzTmFOUG9seWZpbGwiLCJvIiwiaXNOYU4iLCJpc051bWVyaWMiLCJuIiwicGFyc2VJbnQiLCJ0cmF2ZXJzZU9iaiIsImRhc2hUb0NhcGl0YWwiLCJ1bmRlcnNjb3JlVG9DYXBpdGFsIiwiY2FwaXRhbGl6ZU9iaiIsIm9iamVjdCIsIm1lcmdlIiwib2JqMSIsIm9iajIiLCJpc0RlZXAiLCJvYmozIiwicGljayIsIm9iaiIsInQiLCJwaWNrZWRPYmoiLCJjb21wb25lbnQiLCJmbktleSIsImZuVmFsdWUiLCJjdXJyIiwibmV4dFByb3BlcnR5IiwiaXNTdHJpbmciLCJ2YWxpZGF0ZSIsImlzQmxhbmsiLCJpc0VtYWlsIiwibWF0Y2giLCJpc0JvdW5kZWRCeSIsImdlbkFycmF5UmFuZ2UiLCJwYXJzZUlTT1N0cmluZyIsImFyclN0ciIsIkNhbGVuZGFyVHJlZSIsInZhbGlkYXRlQ2VsbCIsInRyZWUiLCJhZGRUcmVlIiwic2VsZWN0UmFuZ2UiLCJyYW5nZSIsInNlbGVjdERheXNJbk1vbnRoIiwibW9udGhEYXlzIiwic2VsZWN0TW9udGhzSW5ZZWFyIiwiaXNWYWxpZCIsImlzUmFuZ2VWYWxpZCIsInNlbGVjdGlvbiIsIm1vbnRoUmFuZ2UiLCJzdGFydERheSIsImVuZERheSIsInNlbGVjdERheSIsImZpbHRlclZhbGlkcyIsImNlbGwiLCJyZXBsYWNlTWFwcyIsInVwZGF0ZWRBdCIsIm1hcHNUb1RyZWUiLCJyZW1vdmVNYXAiLCJtYXBzIiwibWFwU3RhcnRBdCIsImF2YWlsYWJpbGl0eSIsIm5pZ2h0bHlfcmF0ZXMiLCJtaW5pbXVtX3N0YXlzIiwiYXZhaWwiLCJyYXRlcyIsIm1pbk1hcCIsImRheVNoaWZ0IiwicHJldmlvdXNEYXRlIiwibWluU3RheSIsInJhdGUiLCJpc0F2YWlsYWJsZSIsInByZXZBdmFpbGFibGUiLCJpc01vcm5pbmdCbG9ja2VkIiwiaXNBdmFpbGFibGVPdXQiLCJnZXREYXlQcm9wZXJ0eSIsInByb3AiLCJpc0RheURpc2FibGVkIiwidGVtcGxhdGVzIiwiY29uZmlnIiwibG9jYWxlcyIsImRhdGVUb0lzbyIsImlzTGF0ZXIiLCJpc0N1cnJlbnQiLCJ2YWxpZGF0aW9uT2ZDZWxsIiwidEZvcm1hdHRlciIsImRhdGVUb0FycmF5IiwibW9udGhEaWZmIiwidXRpbHNTdHlsZXMiLCJDYWxlbmRhciIsIm9wdHMiLCJWRVJTSU9OIiwiQ1NTX1BSRUZJWCIsImNzc1ByZWZpeCIsImxvZ2dlciIsImNvbmZpZ0RhdGFzZXQiLCJkYXRhc2V0IiwiaXNEcm9wRG93biIsImluaXRDYWxlbmRhckRyb3AiLCJsb2NhbGUiLCJmb3JtYXREYXRlIiwic3RhcnRPZldlZWsiLCJjdXJyZW50RGF0ZSIsImdldE1vbnRoIiwieWVhclN0YXJ0IiwibW9udGhTdGFydCIsImRvbSIsImNUcmVlIiwiYWRkTWFwcyIsInN0YXJ0X2RhdGUiLCJpc1NlbGVjdGluZyIsImhpZ2hsaWdodGVkQm91bmRzIiwiaGFzVmFsaWRSYW5nZSIsImlzUmV2ZXJzZVNlbGVjdGFibGUiLCJpbml0IiwiY2FsZW5kYXIiLCJ0aGVtZSIsIm1vbnRoc1dyYXBwZXIiLCJhcHBlbmRDaGlsZCIsImZvcndhcmQiLCJiYWNrIiwicmVuZGVyTW9udGhzIiwiYWRkQnRuc0V2ZW50cyIsInNlbGVjdGFibGUiLCJlbFN0YXJ0QXQiLCJlbEVuZEF0IiwicmVudGFsSWQiLCJpbnB1dHNUb1ZhbHVlcyIsImxvYWRNYXBzIiwiY2hhbmdlU2VsZWN0aW9uT3JkZXIiLCJpc1JldmVyc2UiLCJkZXN0cm95TW9udGhzIiwieWVhckVuZCIsIm1vbnRoRW5kIiwiY3JlYXRlVHJlZSIsImRpc3BsYXlNb250aHMiLCJyZXZlcnNlZCIsImRpcmVjdCIsImFkZE1vbnRoRXZlbnRzIiwiYWN0aW9uc0VuYWJsZWQiLCJlbmFibGVBbGxEYXlzIiwiZGlzYWJsZUJhY2tCdG4iLCJyZWNvdmVyU2VsZWN0aW9ucyIsInNlbGVjdGlvblN0YXJ0Iiwic2VsZWN0U3RhcnQiLCJzZWxlY3Rpb25FbmQiLCJzZWxlY3RFbmQiLCJoaWdoTGlnaHRSYW5nZSIsImlzQmFja0Rpc2FibGVkIiwic3RhcnREYXRlIiwiZGlzYWJsZWQiLCJ0b2dnbGVMb2FkaW5nIiwibG9hZGluZyIsIm1vbnRoVG9SZW5kZXIiLCJtb250aHNQYWdpbmF0aW9uSnVtcCIsInllYXJUb1JlbmRlciIsInByZXZlbnREZWZhdWx0IiwiaXNFbmRGaXJzdCIsInJlc2V0U2VsZWN0aW9uT25Fc2NhcGUiLCJrZXlDb2RlIiwicmVzZXRTZWxlY3Rpb24iLCJkYXRlVmFsdWUiLCJkYXlBbHJlYWR5U2VsZWN0ZWQiLCJyYW5nZVNlbGVjdGVkIiwiaXNQYXN0VG9kYXkiLCJlbmREYXRlRmlyc3RBY3Rpb24iLCJzdGFydERhdGVGaXJzdEFjdGlvbiIsInNlbGVjdGluZ0RpcmVjdCIsInNlbGVjdGluZ1JldmVyc2VkIiwiaGlnaGxpZ2h0ZWQiLCJjb21wbGV0ZVNlbGVjdGlvbiIsImNhbERyb3AiLCJjbG9zZURyb3AiLCJyZW1vdmVIaWdobGlnaHQiLCJjZWxscyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJob3ZlcmVkIiwiaG92ZXJlZE9mZnNldCIsImNlbGxBIiwiY2VsbEIiLCJjaGFuZ2VIaWdobGlnaHREaXJlY3Rpb24iLCJpc0Rpc2FibGVkTGVmdCIsImlzRGlzYWJsZWRDZW50ZXIiLCJpc0Rpc2FibGVkUmlnaHQiLCJpc0ludmFsaWQiLCJvZmZzZXRDZWxsIiwicmVsYXRlZFRhcmdldCIsImNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIiwiTm9kZSIsIkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSIsImRhdGVBcnJheSIsInNlbGVjdEVuZEFjdGlvbiIsInNlbGVjdFN0YXJ0QWN0aW9uIiwic3dpdGNoSW5wdXRGb2N1cyIsIm9uU2VsZWN0U3RhcnQiLCJvblNlbGVjdEVuZCIsImludmFsaWQiLCJkZXN0cm95VG9vbHRpcCIsInRvb2x0aXBQb3BwZXIiLCJ0b29sdGlwIiwibWF4U3RheSIsImludmFsaWRSYW5nZU1lc3NhZ2UiLCJyYW5nZVdpdGhvdXRMYXN0IiwiYWxsb3dTaG9ydGVyTWluU3RheVNlbGVjdGlvbiIsImFsbG93TG9uZ2VyTWF4U3RheVNlbGVjdGlvbiIsImhhc1ZhbGlkRGF5cyIsImhhc1ZhbGlkTWluU3RheSIsImhhc1ZhbGlkTWF4U3RheSIsImhhc0ludmFsaWRNaW5TdGF5IiwiaGFzSW52YWxpZE1heFN0YXkiLCJoYXNJbnZhbGlkRGF5cyIsInRvb2x0aXBQb3NpdGlvbiIsIlBvcHBlciIsIm9uQ2xlYXJTZWxlY3Rpb24iLCJpc1NpbmdsZUlucHV0IiwiZWxTaW5nbGVJbnB1dCIsInZhbHVlVG9JbnB1dCIsInRpbWVzIiwibURvbSIsImRvbU1vbnRoIiwiZGF5RWxlbWVudHMiLCJtb250aERvbSIsInRhYmxlSGVhZGVyIiwiaGVhZGVyVGVtcGxhdGVTdHJpbmciLCJjYXB0aW9uIiwiZGF5c1RlbXBsYXRlU3RyaW5nIiwiaGVhZGVyIiwid2Vla2RheXNMYWJlbHNFeHRlbmRlZCIsImRheXNQZXJXZWVrIiwid2Vla0RheUxhYmVsIiwic3RhcnRPZk1vbnRoIiwiZ2V0RGF5Iiwicm93VGVtcGxhdGUiLCJ3ZWVrUm93IiwibW9udGhUZW1wbGF0ZSIsIndlZWtTaGlmdCIsInJvd3MiLCJ3ZWVrU2hpZnRDb3JyZWN0ZWQiLCJkYXlDb3VudGVyIiwid2VlayIsImRheVRlbXBsYXRlU3RyaW5nIiwid2Vla0RheVBsYWNlaG9sZGVyIiwiY2xvc2UiLCJzaG93UmF0ZXMiLCJpc0Rpc2FibGVkIiwiaXNDdXJyZW50RGF5IiwiaXNBdmFpbGFibGVJbiIsIndlZWtEYXkiLCJzaG93TWluU3RheSIsInNob3dNYXhTdGF5Iiwib25TdWNjZXNzIiwiZGlzYWJsZUF2YWlsYWJpdHlNYXAiLCJtYXBzTG9hZGVkIiwib25FcnJvciIsImZldGNoIiwicmVudGFsVXJsIiwianNvbiIsImNhdGNoIiwic2luZ2xlSW5wdXREYXRlRm9ybWF0IiwiZGF0ZVN0YXJ0IiwiZGF0ZUVuZCIsInNpbmdsZUlucHV0U2VwYXJhdG9yIiwib25TZWxlY3Rpb25Db21wbGV0ZWQiLCJlbFRhcmdldCIsImhpZGRlbkVsRm9ybWF0IiwiaW5wdXQiLCJoaWRkZW5JbnB1dCIsImNsb25lTm9kZSIsInBhcmVudEVsZW1lbnQiLCJoaWRkZW4iLCJoaWRkZW5FbEVuZEF0IiwiaGlkZGVuRWxTdGFydEF0IiwicmVhZE9ubHkiLCJkcm9wQmFzaWMiLCJkcm9wUGxhY2VtZW50Iiwib3BlbkRyb3AiLCJpc1JldmVyc2VkIiwidmlzaWJsZSIsImZvY3VzVG91Y2hFdmVudHMiLCJiaW5kIiwiZWxSZXNldCIsImV2dCIsImNyZWF0ZUV2ZW50IiwiaW5pdEV2ZW50IiwiaGlkZGVuVmFsdWUiLCJkaXNwYXRjaEV2ZW50IiwibW9udGhEaWZmZXJlbmNlIiwidHlwZSIsImZvY3VzIiwiZm9yY2UiLCJzdG9wUHJvcGFnYXRpb24iLCJfY2FsbGJhY2siLCJtc2ciLCJhcGlIb3N0IiwiYXBpTmFtZXNwYWNlIiwiYXBpTWFwc1JvdXRlIiwiYXBpUmVudGFsSWQiLCJhcGlDdXJyZW5jeSIsImlkcyIsInJvdXRlIiwiZW4iLCJkZSIsImVzIiwiZnIiLCJpdCIsInN2IiwicnUiLCJwbCIsIm5sIiwidG9vbHRpcEFycm93IiwibUNlbGwiLCJsYWJlbCIsInRoIiwibWluU3RheVQiLCJtYXhTdGF5VCIsInJhdGVUIiwidG9kYXkiLCJjbnQiLCJpbmZvIiwibnVtIiwicGFkIiwidmFsIiwibG9nIiwiYXZhaWxhYmxlSW4iLCJhdmFpbGFibGVPdXQiLCJCb29raW5nU3luY1dpZGdldFV0aWxzIiwiaW5pdGlhbGl6ZWQiLCJjYWwiLCJpbnN0YW5jZXMiLCJCb29raW5nU3luY0NhbGVuZGFyV2lkZ2V0Il0sInNvdXJjZVJvb3QiOiIifQ==