@kepler.gl/components 3.3.0-alpha.6 → 3.3.0-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/dist/cjs/common/data-table/cell-size.js +40 -23
  2. package/dist/cjs/common/data-table/column-statistics-categoric.js +40 -0
  3. package/dist/cjs/common/data-table/column-statistics-components.js +65 -0
  4. package/dist/cjs/common/data-table/column-statistics-numeric.js +87 -0
  5. package/dist/cjs/common/data-table/column-statistics-time.js +69 -0
  6. package/dist/cjs/common/data-table/header-cell.js +123 -44
  7. package/dist/cjs/common/data-table/index.js +102 -29
  8. package/dist/cjs/common/histogram-plot.js +1 -1
  9. package/dist/cjs/common/icons/{arrow-down-solid.js → draw-point.js} +21 -11
  10. package/dist/cjs/common/icons/index.js +15 -1
  11. package/dist/cjs/common/icons/line-string.js +60 -0
  12. package/dist/cjs/common/toolbar-item.js +24 -3
  13. package/dist/cjs/editor/editor.js +26 -8
  14. package/dist/cjs/editor/feature-action-panel.js +34 -12
  15. package/dist/cjs/editor/feature-properties-editor.js +215 -0
  16. package/dist/cjs/editor/filter-feature-badges.js +92 -0
  17. package/dist/cjs/index.js +33 -1
  18. package/dist/cjs/kepler-gl.js +20 -3
  19. package/dist/cjs/map/map-control-toolbar.js +2 -2
  20. package/dist/cjs/map/map-control.js +13 -7
  21. package/dist/cjs/map/map-draw-panel.js +65 -15
  22. package/dist/cjs/map/theme-toggle-button.js +64 -0
  23. package/dist/cjs/map-container.js +16 -5
  24. package/dist/cjs/modal-container.js +2 -1
  25. package/dist/cjs/modals/cloud-components/cloud-item.js +55 -7
  26. package/dist/cjs/modals/cloud-components/cloud-item.spec.js +75 -3
  27. package/dist/cjs/modals/cloud-components/cloud-maps.js +2 -1
  28. package/dist/cjs/modals/cloud-tile.js +52 -38
  29. package/dist/cjs/modals/data-table-modal.js +37 -25
  30. package/dist/cjs/modals/export-video-modal.js +28 -1
  31. package/dist/cjs/modals/export-video-modal.spec.js +56 -10
  32. package/dist/cjs/modals/globe-export-video-container.js +19 -3
  33. package/dist/cjs/modals/globe-export-video-preview.js +25 -7
  34. package/dist/cjs/modals/hubble-utils.js +8 -3
  35. package/dist/cjs/modals/swipe-composite-utils.js +9 -1
  36. package/dist/cjs/modals/swipe-composite-utils.spec.js +69 -0
  37. package/dist/cjs/modals/swipe-export-video-preview.js +9 -5
  38. package/dist/cjs/side-panel/layer-manager.js +11 -3
  39. package/dist/cjs/side-panel/layer-panel/dataset-layer-section.js +11 -3
  40. package/dist/cjs/side-panel/layer-panel/layer-configurator.js +74 -31
  41. package/dist/cjs/side-panel/map-style-panel/globe-config-panel.js +90 -25
  42. package/dist/common/data-table/column-statistics-categoric.d.ts +9 -0
  43. package/dist/common/data-table/column-statistics-components.d.ts +31 -0
  44. package/dist/common/data-table/column-statistics-numeric.d.ts +18 -0
  45. package/dist/common/data-table/column-statistics-time.d.ts +19 -0
  46. package/dist/common/data-table/header-cell.d.ts +7 -5
  47. package/dist/common/data-table/index.d.ts +7 -24
  48. package/dist/common/histogram-plot.d.ts +24 -1
  49. package/dist/common/icons/{arrow-down-solid.d.ts → draw-point.d.ts} +2 -1
  50. package/dist/common/icons/index.d.ts +2 -0
  51. package/dist/common/icons/line-string.d.ts +10 -0
  52. package/dist/common/toolbar-item.d.ts +2 -0
  53. package/dist/editor/editor.d.ts +1 -0
  54. package/dist/editor/feature-action-panel.d.ts +1 -0
  55. package/dist/editor/feature-properties-editor.d.ts +8 -0
  56. package/dist/editor/filter-feature-badges.d.ts +12 -0
  57. package/dist/esm/common/data-table/cell-size.js +40 -23
  58. package/dist/esm/common/data-table/column-statistics-categoric.js +33 -0
  59. package/dist/esm/common/data-table/column-statistics-components.js +59 -0
  60. package/dist/esm/common/data-table/column-statistics-numeric.js +78 -0
  61. package/dist/esm/common/data-table/column-statistics-time.js +60 -0
  62. package/dist/esm/common/data-table/header-cell.js +125 -46
  63. package/dist/esm/common/data-table/index.js +102 -29
  64. package/dist/esm/common/histogram-plot.js +1 -1
  65. package/dist/esm/common/icons/draw-point.js +44 -0
  66. package/dist/esm/common/icons/index.js +3 -1
  67. package/dist/esm/common/icons/line-string.js +54 -0
  68. package/dist/esm/common/toolbar-item.js +24 -3
  69. package/dist/esm/editor/editor.js +26 -8
  70. package/dist/esm/editor/feature-action-panel.js +37 -15
  71. package/dist/esm/editor/feature-properties-editor.js +208 -0
  72. package/dist/esm/editor/filter-feature-badges.js +85 -0
  73. package/dist/esm/index.js +5 -1
  74. package/dist/esm/kepler-gl.js +20 -3
  75. package/dist/esm/map/map-control-toolbar.js +2 -2
  76. package/dist/esm/map/map-control.js +13 -7
  77. package/dist/esm/map/map-draw-panel.js +63 -11
  78. package/dist/esm/map/theme-toggle-button.js +55 -0
  79. package/dist/esm/map-container.js +16 -5
  80. package/dist/esm/modal-container.js +2 -1
  81. package/dist/esm/modals/cloud-components/cloud-item.js +53 -7
  82. package/dist/esm/modals/cloud-components/cloud-item.spec.js +76 -4
  83. package/dist/esm/modals/cloud-components/cloud-maps.js +2 -1
  84. package/dist/esm/modals/cloud-tile.js +52 -38
  85. package/dist/esm/modals/data-table-modal.js +38 -26
  86. package/dist/esm/modals/export-video-modal.js +29 -2
  87. package/dist/esm/modals/export-video-modal.spec.js +56 -10
  88. package/dist/esm/modals/globe-export-video-container.js +20 -4
  89. package/dist/esm/modals/globe-export-video-preview.js +26 -8
  90. package/dist/esm/modals/hubble-utils.js +8 -3
  91. package/dist/esm/modals/swipe-composite-utils.js +9 -1
  92. package/dist/esm/modals/swipe-composite-utils.spec.js +67 -0
  93. package/dist/esm/modals/swipe-export-video-preview.js +8 -4
  94. package/dist/esm/side-panel/layer-manager.js +11 -3
  95. package/dist/esm/side-panel/layer-panel/dataset-layer-section.js +11 -3
  96. package/dist/esm/side-panel/layer-panel/layer-configurator.js +74 -31
  97. package/dist/esm/side-panel/map-style-panel/globe-config-panel.js +90 -25
  98. package/dist/index.d.ts +8 -0
  99. package/dist/kepler-gl.d.ts +3 -0
  100. package/dist/map/map-control.d.ts +6 -2
  101. package/dist/map/map-draw-panel.d.ts +1 -0
  102. package/dist/map/theme-toggle-button.d.ts +18 -0
  103. package/dist/map-container.d.ts +1 -0
  104. package/dist/modals/cloud-components/cloud-item.d.ts +2 -1
  105. package/dist/modals/data-table-modal.d.ts +1 -0
  106. package/dist/modals/globe-export-video-container.d.ts +2 -0
  107. package/dist/modals/globe-export-video-preview.d.ts +3 -0
  108. package/dist/modals/hubble-utils.d.ts +2 -1
  109. package/dist/modals/swipe-composite-utils.d.ts +1 -1
  110. package/dist/modals/swipe-composite-utils.spec.d.ts +1 -0
  111. package/package.json +20 -20
  112. package/dist/cjs/modals/cloud-components/provider-loading.js +0 -20
  113. package/dist/cjs/modals/storage-map-viewer.js +0 -98
  114. package/dist/cjs/side-panel/cloud-storage-dropdown.js +0 -40
  115. package/dist/esm/common/icons/arrow-down-solid.js +0 -34
  116. package/dist/esm/modals/cloud-components/provider-loading.js +0 -15
  117. package/dist/esm/modals/storage-map-viewer.js +0 -93
  118. package/dist/esm/side-panel/cloud-storage-dropdown.js +0 -33
  119. package/dist/modals/cloud-components/provider-loading.d.ts +0 -2
  120. package/dist/modals/storage-map-viewer.d.ts +0 -21
  121. package/dist/side-panel/cloud-storage-dropdown.d.ts +0 -6
@@ -4,6 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
5
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
6
6
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
7
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
7
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
8
9
  var _react = _interopRequireDefault(require("react"));
9
10
  var _styledComponents = require("styled-components");
@@ -83,6 +84,18 @@ jest.mock('./hubble-utils', function () {
83
84
  getTimeRangeFilterKeyframes: jest.fn(),
84
85
  getAnimatableFilters: jest.fn(function () {
85
86
  return [];
87
+ }),
88
+ getResolutionSetting: jest.fn(function (value) {
89
+ var _String$split$map = String(value || '1280x720').split('x').map(Number),
90
+ _String$split$map2 = (0, _slicedToArray2["default"])(_String$split$map, 2),
91
+ width = _String$split$map2[0],
92
+ height = _String$split$map2[1];
93
+ return {
94
+ value: value,
95
+ width: width,
96
+ height: height,
97
+ label: value
98
+ };
86
99
  })
87
100
  };
88
101
  });
@@ -142,26 +155,26 @@ function renderAndWaitForPanel() {
142
155
  return _renderAndWaitForPanel.apply(this, arguments);
143
156
  }
144
157
  function _renderAndWaitForPanel() {
145
- _renderAndWaitForPanel = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee18() {
158
+ _renderAndWaitForPanel = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee19() {
146
159
  var props,
147
160
  result,
148
- _args18 = arguments;
149
- return _regenerator["default"].wrap(function _callee18$(_context18) {
150
- while (1) switch (_context18.prev = _context18.next) {
161
+ _args19 = arguments;
162
+ return _regenerator["default"].wrap(function _callee19$(_context19) {
163
+ while (1) switch (_context19.prev = _context19.next) {
151
164
  case 0:
152
- props = _args18.length > 0 && _args18[0] !== undefined ? _args18[0] : DEFAULT_PROPS;
165
+ props = _args19.length > 0 && _args19[0] !== undefined ? _args19[0] : DEFAULT_PROPS;
153
166
  result = renderWithThemeLocal(/*#__PURE__*/_react["default"].createElement(ExportVideoModal, props));
154
- _context18.next = 4;
167
+ _context19.next = 4;
155
168
  return (0, _react2.waitFor)(function () {
156
169
  expect(mockExportVideoPanelContainer).toHaveBeenCalled();
157
170
  });
158
171
  case 4:
159
- return _context18.abrupt("return", result);
172
+ return _context19.abrupt("return", result);
160
173
  case 5:
161
174
  case "end":
162
- return _context18.stop();
175
+ return _context19.stop();
163
176
  }
164
- }, _callee18);
177
+ }, _callee19);
165
178
  }));
166
179
  return _renderAndWaitForPanel.apply(this, arguments);
167
180
  }
@@ -682,5 +695,38 @@ describe('ExportVideoModal', function () {
682
695
  }, _callee17);
683
696
  })));
684
697
  });
698
+ describe('devicePixelRatio freeze', function () {
699
+ var originalDpr = window.devicePixelRatio;
700
+ afterEach(function () {
701
+ Object.defineProperty(window, 'devicePixelRatio', {
702
+ configurable: true,
703
+ enumerable: true,
704
+ writable: true,
705
+ value: originalDpr
706
+ });
707
+ });
708
+ test('pins devicePixelRatio to export scale and restores it on unmount', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee18() {
709
+ var _yield$renderAndWaitF4, unmount, exportVideoWidth;
710
+ return _regenerator["default"].wrap(function _callee18$(_context18) {
711
+ while (1) switch (_context18.prev = _context18.next) {
712
+ case 0:
713
+ _context18.next = 2;
714
+ return renderAndWaitForPanel();
715
+ case 2:
716
+ _yield$renderAndWaitF4 = _context18.sent;
717
+ unmount = _yield$renderAndWaitF4.unmount;
718
+ exportVideoWidth = mockExportVideoPanelContainer.mock.calls[0][0].exportVideoWidth;
719
+ expect(window.devicePixelRatio).toBe(1280 / exportVideoWidth);
720
+ window.devicePixelRatio = 1;
721
+ expect(window.devicePixelRatio).toBe(1280 / exportVideoWidth);
722
+ unmount();
723
+ expect(window.devicePixelRatio).toBe(originalDpr);
724
+ case 10:
725
+ case "end":
726
+ return _context18.stop();
727
+ }
728
+ }, _callee18);
729
+ })));
730
+ });
685
731
  });
686
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHlsZWRDb21wb25lbnRzIiwiX3JlYWN0SW50bCIsIl9yZWFjdDIiLCJfc3R5bGVzIiwiX2xvY2FsaXphdGlvbiIsIl9leHBvcnRWaWRlb01vZGFsIiwiX2VmZmVjdHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyIiwiamVzdCIsImZuIiwiY3JlYXRlRWxlbWVudCIsIk1vY2tLZXBsZXJVSUNvbnRleHQiLCJSZWFjdCIsImNyZWF0ZUNvbnRleHQiLCJtb2NrIiwiRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lciIsInByb3BzIiwiS2VwbGVyVUlDb250ZXh0IiwibW9ja0NvbXB1dGVEZWNrRWZmZWN0cyIsImFjdHVhbCIsInJlcXVpcmVBY3R1YWwiLCJjb21wdXRlRGVja0VmZmVjdHMiLCJwYXRjaERlY2tSZW5kZXJlckZvclBvc3RQcm9jZXNzaW5nIiwiRGVja1NoYWRvd0NvbXBvc2l0aW5nRWZmZWN0IiwibW9ja0ltcGxlbWVudGF0aW9uIiwiaWQiLCJwb3N0UmVuZGVyIiwiY2xlYW51cCIsImdldFN0YXRpY01hcFByb3BzIiwiX3N0YXRlIiwiX29uQ2hhbmdlIiwiX3Rva2VuIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXIiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcFN0eWxlIiwibWFwTGliIiwiUHJvbWlzZSIsInJlc29sdmUiLCJnZXRCZWZvcmVMYXllcklkIiwiZ2V0SHViYmxlRGVja0dsUHJvcHMiLCJwYXJhbWV0ZXJzIiwiYmxlbmQiLCJjb250cm9sbGVyIiwidmlld3MiLCJnZXRUaW1lUmFuZ2VGaWx0ZXJLZXlmcmFtZXMiLCJnZXRBbmltYXRhYmxlRmlsdGVycyIsInJlbmRlcldpdGhUaGVtZUxvY2FsIiwiY29tcG9uZW50IiwicmVuZGVyIiwiVGhlbWVQcm92aWRlciIsInRoZW1lIiwiSW50bFByb3ZpZGVyIiwibG9jYWxlIiwibWVzc2FnZXMiLCJFeHBvcnRWaWRlb01vZGFsIiwiRXhwb3J0VmlkZW9Nb2RhbEZhY3RvcnkiLCJERUZBVUxUX1BST1BTIiwibWFwYm94QXBpVXJsIiwibWFwU3RhdGUiLCJ6b29tIiwic3R5bGVUeXBlIiwibWFwU3R5bGVzIiwiZGFyayIsImFjY2Vzc1Rva2VuIiwiYm90dG9tTWFwU3R5bGUiLCJ0b3BNYXBTdHlsZSIsInZpc1N0YXRlIiwiZmlsdGVycyIsImxheWVycyIsImxheWVyQmxlbmRpbmciLCJsYXllck9yZGVyIiwiZXhwb3J0VmlkZW8iLCJtZWRpYVR5cGUiLCJjYW1lcmFQcmVzZXQiLCJmaWxlTmFtZSIsInJlc29sdXRpb24iLCJkdXJhdGlvbk1zIiwiY29udGFpbmVyVyIsInZpc1N0YXRlQWN0aW9ucyIsInNldEZpbHRlckFuaW1hdGlvblRpbWUiLCJzZXRMYXllckFuaW1hdGlvblRpbWUiLCJ1aVN0YXRlQWN0aW9ucyIsInNldEV4cG9ydFZpZGVvU2V0dGluZyIsIm9uQ2xvc2UiLCJyZW5kZXJBbmRXYWl0Rm9yUGFuZWwiLCJfcmVuZGVyQW5kV2FpdEZvclBhbmVsIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUxOCIsInJlc3VsdCIsIl9hcmdzMTgiLCJ3cmFwIiwiX2NhbGxlZTE4JCIsIl9jb250ZXh0MTgiLCJwcmV2IiwibmV4dCIsInVuZGVmaW5lZCIsIndhaXRGb3IiLCJleHBlY3QiLCJ0b0hhdmVCZWVuQ2FsbGVkIiwiYWJydXB0Iiwic3RvcCIsImRlc2NyaWJlIiwiYmVmb3JlRWFjaCIsImNsZWFyQWxsTW9ja3MiLCJtb2NrUmV0dXJuVmFsdWUiLCJ0ZXN0IiwiX2NhbGxlZSIsIl95aWVsZCRyZW5kZXJBbmRXYWl0RiIsImNvbnRhaW5lciIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJzZW50IiwicXVlcnlTZWxlY3RvciIsInRvQmVJblRoZURvY3VtZW50IiwiX2NhbGxlZTIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJ0b0hhdmVCZWVuQ2FsbGVkVGltZXMiLCJfY2FsbGVlMyIsInBhbmVsUHJvcHMiLCJfY2FsbGVlMyQiLCJfY29udGV4dDMiLCJjYWxscyIsImhlYWRlciIsInRvQmUiLCJkaXNhYmxlQmFzZU1hcCIsImRlZmF1bHRGaWxlTmFtZSIsImV4cG9ydFZpZGVvV2lkdGgiLCJ0b0JlTGVzc1RoYW5PckVxdWFsIiwidG9CZUdyZWF0ZXJUaGFuT3JFcXVhbCIsImhhbmRsZUNsb3NlIiwiaW5pdGlhbFN0YXRlIiwidG9FcXVhbCIsIm1hcERhdGEiLCJfY2FsbGVlNCIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsImRlY2tQcm9wcyIsIl9pc0V4cG9ydCIsImVmZmVjdHMiLCJfY2FsbGVlNSIsIl9jYWxsZWU1JCIsIl9jb250ZXh0NSIsIm1hcFByb3BzIiwidG9CZURlZmluZWQiLCJfY2FsbGVlNiIsIl9jYWxsZWU2JCIsIl9jb250ZXh0NiIsImFuaW1hdGFibGVGaWx0ZXJzIiwiX2NhbGxlZTciLCJfY2FsbGVlNyQiLCJfY29udGV4dDciLCJfdHlwZW9mMiIsIl9jYWxsZWU4IiwiX2NhbGxlZTgkIiwiX2NvbnRleHQ4Iiwib25GaWx0ZXJGcmFtZVVwZGF0ZSIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwiX2NhbGxlZTkiLCJfY2FsbGVlOSQiLCJfY29udGV4dDkiLCJvblRyaXBGcmFtZVVwZGF0ZSIsIk5PX01BUF9QUk9QUyIsIm5vX21hcCIsImxhYmVsIiwiaWNvbiIsImxheWVyR3JvdXBzIiwiY29sb3JNb2RlIiwic3R5bGUiLCJ2ZXJzaW9uIiwic291cmNlcyIsIl9jYWxsZWUwIiwiX3lpZWxkJHJlbmRlckFuZFdhaXRGMiIsIl9jYWxsZWUwJCIsIl9jb250ZXh0MCIsIl9jYWxsZWUxIiwibm9NYXBFbnRyeSIsImVuY29kZWQiLCJkZWNvZGVkIiwiX2NhbGxlZTEkIiwiX2NvbnRleHQxIiwidXJsIiwidG9NYXRjaCIsInJlcGxhY2UiLCJKU09OIiwicGFyc2UiLCJkZWNvZGVVUklDb21wb25lbnQiLCJfY2FsbGVlMTAiLCJwcm9wc1dpdGhVcmwiLCJfY2FsbGVlMTAkIiwiX2NvbnRleHQxMCIsIm1ha2VGb2dEZWNrRWZmZWN0IiwiZWZmZWN0IiwiaGVpZ2h0Iiwic2V0UHJvcHMiLCJuZXdQcm9wcyIsImFzc2lnbiIsIm1ha2VTdXJmYWNlRm9nRWZmZWN0IiwiZGVja0VmZmVjdCIsIm92ZXJyaWRlcyIsInR5cGUiLCJpc0VuYWJsZWQiLCJhbmltYXRlSGVpZ2h0IiwiaGVpZ2h0RW5kIiwibGluZWFyRWFzaW5nIiwiY2xvbmUiLCJwcm9wc1dpdGhGb2dFZmZlY3QiLCJmb2dFZmZlY3QiLCJlZmZlY3RPcmRlciIsIl9jYWxsZWUxMSIsIm9yaWdpbmFsUG9zdFJlbmRlciIsIl9jYWxsZWUxMSQiLCJfY29udGV4dDExIiwibm90IiwiX2NhbGxlZTEyIiwiX2NhbGxlZTEyJCIsIl9jb250ZXh0MTIiLCJjYWxsIiwiX2NhbGxlZTEzIiwiX2NhbGxlZTEzJCIsIl9jb250ZXh0MTMiLCJfY2FsbGVlMTQiLCJfeWllbGQkcmVuZGVyQW5kV2FpdEYzIiwidW5tb3VudCIsInBhdGNoZWRQb3N0UmVuZGVyIiwiX2NhbGxlZTE0JCIsIl9jb250ZXh0MTQiLCJiaW5kIiwibW9ja0VmZmVjdCIsInByb3BzV2l0aEVmZmVjdHMiLCJtYXAiLCJfY2FsbGVlMTUiLCJzaGFkb3dEZWNrRWZmZWN0IiwiX2NhbGxlZTE1JCIsIl9jb250ZXh0MTUiLCJzaGFkb3ciLCJfY2FsbGVlMTYiLCJwb3N0UHJvY2Vzc0VmZmVjdCIsIl9jYWxsZWUxNiQiLCJfY29udGV4dDE2IiwiZXZlcnkiLCJfY2FsbGVlMTciLCJub25TaGFkb3dFZmZlY3QiLCJfY2FsbGVlMTckIiwiX2NvbnRleHQxNyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RhbHMvZXhwb3J0LXZpZGVvLW1vZGFsLnNwZWMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbi8vIEB0cy1ub2NoZWNrXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtUaGVtZVByb3ZpZGVyfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQge3JlbmRlciwgd2FpdEZvcn0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQge3RoZW1lfSBmcm9tICdAa2VwbGVyLmdsL3N0eWxlcyc7XG5pbXBvcnQge21lc3NhZ2VzfSBmcm9tICdAa2VwbGVyLmdsL2xvY2FsaXphdGlvbic7XG5cbmNvbnN0IG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyID0gamVzdC5mbigoKSA9PiAoXG4gIDxkaXYgZGF0YS10ZXN0aWQ9XCJleHBvcnQtdmlkZW8tcGFuZWxcIj5Nb2NrIFBhbmVsPC9kaXY+XG4pKTtcbmNvbnN0IE1vY2tLZXBsZXJVSUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuXG5qZXN0Lm1vY2soJ0BodWJibGUuZ2wvcmVhY3QnLCAoKSA9PiAoe1xuICBFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyOiBwcm9wcyA9PiBtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lcihwcm9wcyksXG4gIEtlcGxlclVJQ29udGV4dDogTW9ja0tlcGxlclVJQ29udGV4dFxufSkpO1xuXG5jb25zdCBtb2NrQ29tcHV0ZURlY2tFZmZlY3RzID0gamVzdC5mbigoKSA9PiBbXSk7XG5cbmplc3QubW9jaygnQGtlcGxlci5nbC91dGlscycsICgpID0+IHtcbiAgY29uc3QgYWN0dWFsID0gamVzdC5yZXF1aXJlQWN0dWFsKCdAa2VwbGVyLmdsL3V0aWxzJyk7XG4gIHJldHVybiB7XG4gICAgLi4uYWN0dWFsLFxuICAgIGNvbXB1dGVEZWNrRWZmZWN0czogKC4uLmFyZ3MpID0+IG1vY2tDb21wdXRlRGVja0VmZmVjdHMoLi4uYXJncyksXG4gICAgcGF0Y2hEZWNrUmVuZGVyZXJGb3JQb3N0UHJvY2Vzc2luZzogamVzdC5mbigpXG4gIH07XG59KTtcblxuamVzdC5tb2NrKCdAa2VwbGVyLmdsL2VmZmVjdHMnLCAoKSA9PiAoe1xuICBEZWNrU2hhZG93Q29tcG9zaXRpbmdFZmZlY3Q6IGplc3QuZm4oKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gKHtcbiAgICBpZDogJ3NoYWRvdy1jb21wb3NpdGluZy1lZmZlY3QnLFxuICAgIHBvc3RSZW5kZXI6IGplc3QuZm4oKSxcbiAgICBjbGVhbnVwOiBqZXN0LmZuKClcbiAgfSkpXG59KSk7XG5cbmplc3QubW9jaygnLi9odWJibGUtdXRpbHMnLCAoKSA9PiAoe1xuICBnZXRTdGF0aWNNYXBQcm9wczogamVzdC5mbigoX3N0YXRlLCBfb25DaGFuZ2UsIF90b2tlbikgPT4gKHtcbiAgICBsYXRpdHVkZTogMzcuNyxcbiAgICBsb25naXR1ZGU6IC0xMjIuNCxcbiAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWUsXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW46ICdzdHlsZS10b2tlbicsXG4gICAgbWFwU3R5bGU6IHtpZDogJ2Rhcmstc3R5bGUnfSxcbiAgICBtYXBMaWI6IFByb21pc2UucmVzb2x2ZSh7fSlcbiAgfSkpLFxuICBnZXRCZWZvcmVMYXllcklkOiBqZXN0LmZuKCgpID0+IG51bGwpLFxuICBnZXRIdWJibGVEZWNrR2xQcm9wczogamVzdC5mbigoKSA9PiAoe1xuICAgIHBhcmFtZXRlcnM6IHtibGVuZDogdHJ1ZX0sXG4gICAgY29udHJvbGxlcjogdHJ1ZSxcbiAgICB2aWV3czoge31cbiAgfSkpLFxuICBnZXRUaW1lUmFuZ2VGaWx0ZXJLZXlmcmFtZXM6IGplc3QuZm4oKSxcbiAgZ2V0QW5pbWF0YWJsZUZpbHRlcnM6IGplc3QuZm4oKCkgPT4gW10pXG59KSk7XG5cbmltcG9ydCBFeHBvcnRWaWRlb01vZGFsRmFjdG9yeSBmcm9tICcuL2V4cG9ydC12aWRlby1tb2RhbCc7XG5pbXBvcnQge0RlY2tTaGFkb3dDb21wb3NpdGluZ0VmZmVjdH0gZnJvbSAnQGtlcGxlci5nbC9lZmZlY3RzJztcblxuZnVuY3Rpb24gcmVuZGVyV2l0aFRoZW1lTG9jYWwoY29tcG9uZW50KSB7XG4gIHJldHVybiByZW5kZXIoXG4gICAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT5cbiAgICAgIDxJbnRsUHJvdmlkZXIgbG9jYWxlPVwiZW5cIiBtZXNzYWdlcz17bWVzc2FnZXN9PlxuICAgICAgICB7Y29tcG9uZW50fVxuICAgICAgPC9JbnRsUHJvdmlkZXI+XG4gICAgPC9UaGVtZVByb3ZpZGVyPlxuICApO1xufVxuXG5jb25zdCBFeHBvcnRWaWRlb01vZGFsID0gRXhwb3J0VmlkZW9Nb2RhbEZhY3RvcnkoKTtcblxuY29uc3QgREVGQVVMVF9QUk9QUyA9IHtcbiAgbWFwYm94QXBpQWNjZXNzVG9rZW46ICd0ZXN0LXRva2VuJyxcbiAgbWFwYm94QXBpVXJsOiAnaHR0cHM6Ly9hcGkubWFwYm94LmNvbScsXG4gIG1hcFN0YXRlOiB7bGF0aXR1ZGU6IDM3LjcsIGxvbmdpdHVkZTogLTEyMi40LCB6b29tOiAxMH0sXG4gIG1hcFN0eWxlOiB7XG4gICAgc3R5bGVUeXBlOiAnZGFyaycsXG4gICAgbWFwU3R5bGVzOiB7ZGFyazoge2FjY2Vzc1Rva2VuOiAnc3R5bGUtdG9rZW4nfX0sXG4gICAgYm90dG9tTWFwU3R5bGU6IHtpZDogJ2Rhcmstc3R5bGUnfSxcbiAgICB0b3BNYXBTdHlsZTogbnVsbFxuICB9LFxuICB2aXNTdGF0ZToge1xuICAgIGZpbHRlcnM6IFtdLFxuICAgIGxheWVyczogW10sXG4gICAgbGF5ZXJCbGVuZGluZzogJ25vcm1hbCcsXG4gICAgbGF5ZXJPcmRlcjogW11cbiAgfSxcbiAgZXhwb3J0VmlkZW86IHtcbiAgICBtZWRpYVR5cGU6ICd3ZWJtJyxcbiAgICBjYW1lcmFQcmVzZXQ6ICdOb25lJyxcbiAgICBmaWxlTmFtZTogJ2tlcGxlci5nbCcsXG4gICAgcmVzb2x1dGlvbjogJzEyODB4NzIwJyxcbiAgICBkdXJhdGlvbk1zOiAxMDAwXG4gIH0sXG4gIGNvbnRhaW5lclc6IDgwMCxcbiAgdmlzU3RhdGVBY3Rpb25zOiB7XG4gICAgc2V0RmlsdGVyQW5pbWF0aW9uVGltZTogamVzdC5mbigpLFxuICAgIHNldExheWVyQW5pbWF0aW9uVGltZTogamVzdC5mbigpXG4gIH0sXG4gIHVpU3RhdGVBY3Rpb25zOiB7XG4gICAgc2V0RXhwb3J0VmlkZW9TZXR0aW5nOiBqZXN0LmZuKClcbiAgfSxcbiAgb25DbG9zZTogamVzdC5mbigpXG59O1xuXG5hc3luYyBmdW5jdGlvbiByZW5kZXJBbmRXYWl0Rm9yUGFuZWwocHJvcHMgPSBERUZBVUxUX1BST1BTKSB7XG4gIGNvbnN0IHJlc3VsdCA9IHJlbmRlcldpdGhUaGVtZUxvY2FsKDxFeHBvcnRWaWRlb01vZGFsIHsuLi5wcm9wc30gLz4pO1xuICBhd2FpdCB3YWl0Rm9yKCgpID0+IHtcbiAgICBleHBlY3QobW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmRlc2NyaWJlKCdFeHBvcnRWaWRlb01vZGFsJywgKCkgPT4ge1xuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBqZXN0LmNsZWFyQWxsTW9ja3MoKTtcbiAgICBtb2NrQ29tcHV0ZURlY2tFZmZlY3RzLm1vY2tSZXR1cm5WYWx1ZShbXSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3JlbmRlcnMgd2l0aG91dCBjcmFzaGluZycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB7Y29udGFpbmVyfSA9IGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbCgpO1xuICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3RvcignLmV4cG9ydC12aWRlby1tb2RhbCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICB9KTtcblxuICB0ZXN0KCdwcm92aWRlcyBLZXBsZXJVSSBjb250ZXh0IHdpdGggZXhwZWN0ZWQgY29tcG9uZW50cycsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwoKTtcbiAgICBleHBlY3QobW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgfSk7XG5cbiAgdGVzdCgncGFzc2VzIGNvcnJlY3QgcHJvcHMgdG8gRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lcicsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwoKTtcblxuICAgIGV4cGVjdChtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lcikudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgIGNvbnN0IHBhbmVsUHJvcHMgPSBtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lci5tb2NrLmNhbGxzWzBdWzBdO1xuXG4gICAgZXhwZWN0KHBhbmVsUHJvcHMuaGVhZGVyKS50b0JlKGZhbHNlKTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5kaXNhYmxlQmFzZU1hcCkudG9CZShmYWxzZSk7XG4gICAgZXhwZWN0KHBhbmVsUHJvcHMuZGVmYXVsdEZpbGVOYW1lKS50b0JlKCdrZXBsZXIuZ2wnKTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5leHBvcnRWaWRlb1dpZHRoKS50b0JlTGVzc1RoYW5PckVxdWFsKDU0MCk7XG4gICAgZXhwZWN0KHBhbmVsUHJvcHMuZXhwb3J0VmlkZW9XaWR0aCkudG9CZUdyZWF0ZXJUaGFuT3JFcXVhbCgzMjApO1xuICAgIGV4cGVjdChwYW5lbFByb3BzLmhhbmRsZUNsb3NlKS50b0JlKERFRkFVTFRfUFJPUFMub25DbG9zZSk7XG4gICAgZXhwZWN0KHBhbmVsUHJvcHMuaW5pdGlhbFN0YXRlKS50b0VxdWFsKERFRkFVTFRfUFJPUFMuZXhwb3J0VmlkZW8pO1xuICAgIGV4cGVjdChwYW5lbFByb3BzLm1hcERhdGEpLnRvRXF1YWwoe1xuICAgICAgdmlzU3RhdGU6IERFRkFVTFRfUFJPUFMudmlzU3RhdGUsXG4gICAgICBtYXBTdGF0ZTogREVGQVVMVF9QUk9QUy5tYXBTdGF0ZSxcbiAgICAgIG1hcFN0eWxlOiBERUZBVUxUX1BST1BTLm1hcFN0eWxlXG4gICAgfSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3Bhc3NlcyBkZWNrUHJvcHMgZnJvbSBnZXRIdWJibGVEZWNrR2xQcm9wcycsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwoKTtcblxuICAgIGNvbnN0IHBhbmVsUHJvcHMgPSBtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lci5tb2NrLmNhbGxzWzBdWzBdO1xuICAgIGV4cGVjdChwYW5lbFByb3BzLmRlY2tQcm9wcykudG9FcXVhbCh7XG4gICAgICBwYXJhbWV0ZXJzOiB7YmxlbmQ6IHRydWV9LFxuICAgICAgY29udHJvbGxlcjogdHJ1ZSxcbiAgICAgIHZpZXdzOiB7fSxcbiAgICAgIF9pc0V4cG9ydDogdHJ1ZSxcbiAgICAgIGVmZmVjdHM6IFtdXG4gICAgfSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3Bhc3NlcyBtYXBQcm9wcyBmcm9tIGdldFN0YXRpY01hcFByb3BzJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbCgpO1xuXG4gICAgY29uc3QgcGFuZWxQcm9wcyA9IG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyLm1vY2suY2FsbHNbMF1bMF07XG4gICAgZXhwZWN0KHBhbmVsUHJvcHMubWFwUHJvcHMubGF0aXR1ZGUpLnRvQmUoMzcuNyk7XG4gICAgZXhwZWN0KHBhbmVsUHJvcHMubWFwUHJvcHMubG9uZ2l0dWRlKS50b0JlKC0xMjIuNCk7XG4gICAgZXhwZWN0KHBhbmVsUHJvcHMubWFwUHJvcHMucHJlc2VydmVEcmF3aW5nQnVmZmVyKS50b0JlKHRydWUpO1xuICAgIGV4cGVjdChwYW5lbFByb3BzLm1hcFByb3BzLm1hcGJveEFwaUFjY2Vzc1Rva2VuKS50b0JlKCdzdHlsZS10b2tlbicpO1xuICAgIGV4cGVjdChwYW5lbFByb3BzLm1hcFByb3BzLm1hcFN0eWxlKS50b0VxdWFsKHtpZDogJ2Rhcmstc3R5bGUnfSk7XG4gICAgZXhwZWN0KHBhbmVsUHJvcHMubWFwUHJvcHMubWFwTGliKS50b0JlRGVmaW5lZCgpO1xuICB9KTtcblxuICB0ZXN0KCdwYXNzZXMgZW1wdHkgYW5pbWF0YWJsZUZpbHRlcnMgd2hlbiBubyBtYXRjaGluZyBmaWx0ZXJzJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbCgpO1xuXG4gICAgY29uc3QgcGFuZWxQcm9wcyA9IG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyLm1vY2suY2FsbHNbMF1bMF07XG4gICAgZXhwZWN0KHBhbmVsUHJvcHMuYW5pbWF0YWJsZUZpbHRlcnMpLnRvRXF1YWwoW10pO1xuICB9KTtcblxuICB0ZXN0KCdwcm92aWRlcyBnZXRUaW1lUmFuZ2VGaWx0ZXJLZXlmcmFtZXMgY2FsbGJhY2snLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKCk7XG5cbiAgICBjb25zdCBwYW5lbFByb3BzID0gbW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIubW9jay5jYWxsc1swXVswXTtcbiAgICBleHBlY3QodHlwZW9mIHBhbmVsUHJvcHMuZ2V0VGltZVJhbmdlRmlsdGVyS2V5ZnJhbWVzKS50b0JlKCdmdW5jdGlvbicpO1xuICB9KTtcblxuICB0ZXN0KCdwcm92aWRlcyBvbkZpbHRlckZyYW1lVXBkYXRlIHRoYXQgY2FsbHMgdmlzU3RhdGVBY3Rpb25zJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbCgpO1xuXG4gICAgY29uc3QgcGFuZWxQcm9wcyA9IG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyLm1vY2suY2FsbHNbMF1bMF07XG4gICAgcGFuZWxQcm9wcy5vbkZpbHRlckZyYW1lVXBkYXRlKDAsICd2YWx1ZScsIFsxMDAsIDIwMF0pO1xuICAgIGV4cGVjdChERUZBVUxUX1BST1BTLnZpc1N0YXRlQWN0aW9ucy5zZXRGaWx0ZXJBbmltYXRpb25UaW1lKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgIDAsXG4gICAgICAndmFsdWUnLFxuICAgICAgWzEwMCwgMjAwXVxuICAgICk7XG4gIH0pO1xuXG4gIHRlc3QoJ3Byb3ZpZGVzIG9uVHJpcEZyYW1lVXBkYXRlIHRoYXQgY2FsbHMgdmlzU3RhdGVBY3Rpb25zJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbCgpO1xuXG4gICAgY29uc3QgcGFuZWxQcm9wcyA9IG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyLm1vY2suY2FsbHNbMF1bMF07XG4gICAgcGFuZWxQcm9wcy5vblRyaXBGcmFtZVVwZGF0ZSg0Mik7XG4gICAgZXhwZWN0KERFRkFVTFRfUFJPUFMudmlzU3RhdGVBY3Rpb25zLnNldExheWVyQW5pbWF0aW9uVGltZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoNDIpO1xuICB9KTtcblxuICBkZXNjcmliZSgnTk9fTUFQX0lEIGhhbmRsaW5nJywgKCkgPT4ge1xuICAgIGNvbnN0IE5PX01BUF9QUk9QUyA9IHtcbiAgICAgIC4uLkRFRkFVTFRfUFJPUFMsXG4gICAgICBtYXBTdHlsZToge1xuICAgICAgICBzdHlsZVR5cGU6ICdub19tYXAnLFxuICAgICAgICBtYXBTdHlsZXM6IHtcbiAgICAgICAgICBub19tYXA6IHtcbiAgICAgICAgICAgIGlkOiAnbm9fbWFwJyxcbiAgICAgICAgICAgIGxhYmVsOiAnTm8gQmFzZW1hcCcsXG4gICAgICAgICAgICAvLyB1cmwgaXMgaW50ZW50aW9uYWxseSBtaXNzaW5nIHRvIGV4ZXJjaXNlIHRoZSBkYXRhLVVSSSBwYXRjaFxuICAgICAgICAgICAgaWNvbjogJycsXG4gICAgICAgICAgICBsYXllckdyb3VwczogW10sXG4gICAgICAgICAgICBjb2xvck1vZGU6ICdOT05FJyxcbiAgICAgICAgICAgIHN0eWxlOiB7dmVyc2lvbjogOCwgc291cmNlczoge30sIGxheWVyczogW119XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBib3R0b21NYXBTdHlsZTogbnVsbCxcbiAgICAgICAgdG9wTWFwU3R5bGU6IG51bGxcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGVzdCgncmVuZGVycyB3aXRob3V0IGNyYXNoaW5nIHdoZW4gc3R5bGVUeXBlIGlzIE5PX01BUF9JRCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHtjb250YWluZXJ9ID0gYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKE5PX01BUF9QUk9QUyk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy5leHBvcnQtdmlkZW8tbW9kYWwnKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2luamVjdHMgZGF0YS1VUkkgZW1wdHkgc3R5bGUgVVJMIGludG8gbWFwRGF0YSB3aGVuIE5PX01BUF9JRCBlbnRyeSBoYXMgbm8gdXJsJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKE5PX01BUF9QUk9QUyk7XG5cbiAgICAgIGNvbnN0IHBhbmVsUHJvcHMgPSBtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lci5tb2NrLmNhbGxzWzBdWzBdO1xuICAgICAgY29uc3Qgbm9NYXBFbnRyeSA9IHBhbmVsUHJvcHMubWFwRGF0YS5tYXBTdHlsZS5tYXBTdHlsZXMubm9fbWFwO1xuXG4gICAgICBleHBlY3Qobm9NYXBFbnRyeS51cmwpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qobm9NYXBFbnRyeS51cmwpLnRvTWF0Y2goL15kYXRhOmFwcGxpY2F0aW9uXFwvanNvbiwvKTtcblxuICAgICAgY29uc3QgZW5jb2RlZCA9IG5vTWFwRW50cnkudXJsLnJlcGxhY2UoJ2RhdGE6YXBwbGljYXRpb24vanNvbiwnLCAnJyk7XG4gICAgICBjb25zdCBkZWNvZGVkID0gSlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQoZW5jb2RlZCkpO1xuICAgICAgZXhwZWN0KGRlY29kZWQpLnRvRXF1YWwoe3ZlcnNpb246IDgsIHNvdXJjZXM6IHt9LCBsYXllcnM6IFtdfSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdwcmVzZXJ2ZXMgb3JpZ2luYWwgbWFwU3R5bGUgd2hlbiBOT19NQVBfSUQgZW50cnkgYWxyZWFkeSBoYXMgYSB1cmwnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wc1dpdGhVcmwgPSB7XG4gICAgICAgIC4uLkRFRkFVTFRfUFJPUFMsXG4gICAgICAgIG1hcFN0eWxlOiB7XG4gICAgICAgICAgc3R5bGVUeXBlOiAnbm9fbWFwJyxcbiAgICAgICAgICBtYXBTdHlsZXM6IHtcbiAgICAgICAgICAgIG5vX21hcDoge1xuICAgICAgICAgICAgICBpZDogJ25vX21hcCcsXG4gICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vZXhpc3Rpbmctc3R5bGUuanNvbidcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGJvdHRvbU1hcFN0eWxlOiBudWxsLFxuICAgICAgICAgIHRvcE1hcFN0eWxlOiBudWxsXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbChwcm9wc1dpdGhVcmwpO1xuXG4gICAgICBjb25zdCBwYW5lbFByb3BzID0gbW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIubW9jay5jYWxsc1swXVswXTtcbiAgICAgIGV4cGVjdChwYW5lbFByb3BzLm1hcERhdGEubWFwU3R5bGUpLnRvQmUocHJvcHNXaXRoVXJsLm1hcFN0eWxlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3N1cmZhY2UgZm9nIGhlaWdodCBhbmltYXRpb24nLCAoKSA9PiB7XG4gICAgZnVuY3Rpb24gbWFrZUZvZ0RlY2tFZmZlY3QoKSB7XG4gICAgICBjb25zdCBlZmZlY3QgPSB7XG4gICAgICAgIGlkOiAnc3VyZmFjZS1mb2ctZGVjaycsXG4gICAgICAgIHByb3BzOiB7aGVpZ2h0OiA1MH0sXG4gICAgICAgIHBvc3RSZW5kZXI6IGplc3QuZm4oKSxcbiAgICAgICAgc2V0UHJvcHM6IGplc3QuZm4oZnVuY3Rpb24gKG5ld1Byb3BzKSB7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihlZmZlY3QucHJvcHMsIG5ld1Byb3BzKTtcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgICByZXR1cm4gZWZmZWN0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VTdXJmYWNlRm9nRWZmZWN0KGRlY2tFZmZlY3QsIG92ZXJyaWRlcyA9IHt9KSB7XG4gICAgICBjb25zdCBlZmZlY3QgPSB7XG4gICAgICAgIGlkOiAnZm9nLTEnLFxuICAgICAgICB0eXBlOiAnc3VyZmFjZUZvZycsXG4gICAgICAgIGlzRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIGhlaWdodDogNTAsXG4gICAgICAgICAgYW5pbWF0ZUhlaWdodDogdHJ1ZSxcbiAgICAgICAgICBoZWlnaHRFbmQ6IDIwMCxcbiAgICAgICAgICBsaW5lYXJFYXNpbmc6IGZhbHNlLFxuICAgICAgICAgIC4uLm92ZXJyaWRlc1xuICAgICAgICB9LFxuICAgICAgICBkZWNrRWZmZWN0LFxuICAgICAgICBjbG9uZTogamVzdC5mbigpXG4gICAgICB9O1xuICAgICAgLy8gY2xvbmUgcmV0dXJucyBhIGZyZXNoIHJlZmVyZW5jZSB0aGF0IHN0aWxsIHBvaW50cyB0byB0aGUgc2FtZSBkZWNrRWZmZWN0XG4gICAgICBlZmZlY3QuY2xvbmUubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+ICh7Li4uZWZmZWN0LCBjbG9uZTogZWZmZWN0LmNsb25lfSkpO1xuICAgICAgcmV0dXJuIGVmZmVjdDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcm9wc1dpdGhGb2dFZmZlY3QoZm9nRWZmZWN0KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5ERUZBVUxUX1BST1BTLFxuICAgICAgICB2aXNTdGF0ZToge1xuICAgICAgICAgIC4uLkRFRkFVTFRfUFJPUFMudmlzU3RhdGUsXG4gICAgICAgICAgZWZmZWN0czogW2ZvZ0VmZmVjdF0sXG4gICAgICAgICAgZWZmZWN0T3JkZXI6IFtmb2dFZmZlY3QuaWRdXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGVzdCgncGF0Y2hlcyBkZWNrRWZmZWN0LnBvc3RSZW5kZXIgd2hlbiBhbmltYXRlSGVpZ2h0IGlzIGVuYWJsZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBkZWNrRWZmZWN0ID0gbWFrZUZvZ0RlY2tFZmZlY3QoKTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsUG9zdFJlbmRlciA9IGRlY2tFZmZlY3QucG9zdFJlbmRlcjtcbiAgICAgIGNvbnN0IGZvZ0VmZmVjdCA9IG1ha2VTdXJmYWNlRm9nRWZmZWN0KGRlY2tFZmZlY3QpO1xuICAgICAgbW9ja0NvbXB1dGVEZWNrRWZmZWN0cy5tb2NrUmV0dXJuVmFsdWUoW2RlY2tFZmZlY3RdKTtcblxuICAgICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKHByb3BzV2l0aEZvZ0VmZmVjdChmb2dFZmZlY3QpKTtcblxuICAgICAgZXhwZWN0KGRlY2tFZmZlY3QucG9zdFJlbmRlcikubm90LnRvQmUob3JpZ2luYWxQb3N0UmVuZGVyKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3Jlc3RvcmVzIG9yaWdpbmFsIGhlaWdodCB3aGVuIGh1YmJsZSBpcyBub3QgcGxheWluZycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGRlY2tFZmZlY3QgPSBtYWtlRm9nRGVja0VmZmVjdCgpO1xuICAgICAgZGVja0VmZmVjdC5wcm9wcy5oZWlnaHQgPSA3NTtcbiAgICAgIGNvbnN0IGZvZ0VmZmVjdCA9IG1ha2VTdXJmYWNlRm9nRWZmZWN0KGRlY2tFZmZlY3QsIHtoZWlnaHQ6IDc1fSk7XG4gICAgICBtb2NrQ29tcHV0ZURlY2tFZmZlY3RzLm1vY2tSZXR1cm5WYWx1ZShbZGVja0VmZmVjdF0pO1xuXG4gICAgICBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwocHJvcHNXaXRoRm9nRWZmZWN0KGZvZ0VmZmVjdCkpO1xuXG4gICAgICAvLyBDYWxsIHRoZSBwYXRjaGVkIHBvc3RSZW5kZXIgd2l0aG91dCBodWJibGUgcGxheWluZ1xuICAgICAgZGVja0VmZmVjdC5wb3N0UmVuZGVyLmNhbGwoZGVja0VmZmVjdCwge30pO1xuXG4gICAgICAvLyBOb3QgcGxheWluZyDihpIgaGVpZ2h0IHJlc2V0cyB0byBvcmlnaW5hbEhlaWdodFxuICAgICAgZXhwZWN0KGRlY2tFZmZlY3QucHJvcHMuaGVpZ2h0KS50b0JlKDc1KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2RvZXMgbm90IG11dGF0ZSBoZWlnaHQgd2hlbiBhbmltYXRlSGVpZ2h0IGlzIGRpc2FibGVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZGVja0VmZmVjdCA9IG1ha2VGb2dEZWNrRWZmZWN0KCk7XG4gICAgICBjb25zdCBmb2dFZmZlY3QgPSBtYWtlU3VyZmFjZUZvZ0VmZmVjdChkZWNrRWZmZWN0LCB7YW5pbWF0ZUhlaWdodDogZmFsc2V9KTtcbiAgICAgIG1vY2tDb21wdXRlRGVja0VmZmVjdHMubW9ja1JldHVyblZhbHVlKFtkZWNrRWZmZWN0XSk7XG5cbiAgICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbChwcm9wc1dpdGhGb2dFZmZlY3QoZm9nRWZmZWN0KSk7XG5cbiAgICAgIGRlY2tFZmZlY3QucHJvcHMuaGVpZ2h0ID0gNDI7XG4gICAgICBkZWNrRWZmZWN0LnBvc3RSZW5kZXIuY2FsbChkZWNrRWZmZWN0LCB7fSk7XG5cbiAgICAgIC8vIHJlZi5hY3RpdmUgaXMgZmFsc2Ugc28gaGVpZ2h0IHNob3VsZCBub3QgYmUgdG91Y2hlZFxuICAgICAgZXhwZWN0KGRlY2tFZmZlY3QucHJvcHMuaGVpZ2h0KS50b0JlKDQyKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3Jlc3RvcmVzIG9yaWdpbmFsIHBvc3RSZW5kZXIgb24gdW5tb3VudCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGRlY2tFZmZlY3QgPSBtYWtlRm9nRGVja0VmZmVjdCgpO1xuICAgICAgY29uc3QgZm9nRWZmZWN0ID0gbWFrZVN1cmZhY2VGb2dFZmZlY3QoZGVja0VmZmVjdCk7XG4gICAgICBtb2NrQ29tcHV0ZURlY2tFZmZlY3RzLm1vY2tSZXR1cm5WYWx1ZShbZGVja0VmZmVjdF0pO1xuXG4gICAgICBjb25zdCB7dW5tb3VudH0gPSBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwocHJvcHNXaXRoRm9nRWZmZWN0KGZvZ0VmZmVjdCkpO1xuXG4gICAgICAvLyBwb3N0UmVuZGVyIHdhcyBwYXRjaGVkICh0aGUgd3JhcHBlciBmdW5jdGlvbiBkcml2ZXMgYW5pbWF0aW9uKVxuICAgICAgY29uc3QgcGF0Y2hlZFBvc3RSZW5kZXIgPSBkZWNrRWZmZWN0LnBvc3RSZW5kZXI7XG4gICAgICAvLyBWZXJpZnkgaXQncyBub3QgdGhlIG9yaWdpbmFsIG1vY2sgKGNvbXBvbmVudCBiaW5kcyBhbmQgd3JhcHMgaXQpXG4gICAgICBleHBlY3QocGF0Y2hlZFBvc3RSZW5kZXIpLm5vdC50b0JlKGRlY2tFZmZlY3QucG9zdFJlbmRlci5iaW5kKGRlY2tFZmZlY3QpKTtcblxuICAgICAgdW5tb3VudCgpO1xuXG4gICAgICAvLyBBZnRlciB1bm1vdW50LCBwb3N0UmVuZGVyIG5vIGxvbmdlciBkcml2ZXMgYW5pbWF0aW9uLlxuICAgICAgLy8gVGhlIHJlc3RvcmVkIGZ1bmN0aW9uIGlzIGEgYm91bmQgY29weSBvZiB0aGUgb3JpZ2luYWwgbW9jay5cbiAgICAgIGRlY2tFZmZlY3QucHJvcHMuaGVpZ2h0ID0gOTk7XG4gICAgICBkZWNrRWZmZWN0LnBvc3RSZW5kZXIuY2FsbChkZWNrRWZmZWN0LCB7fSk7XG4gICAgICAvLyBIZWlnaHQgc2hvdWxkIE5PVCBiZSBtdXRhdGVkIGJ5IGFuaW1hdGlvbiBsb2dpYyBhbnltb3JlXG4gICAgICBleHBlY3QoZGVja0VmZmVjdC5wcm9wcy5oZWlnaHQpLnRvQmUoOTkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2hhZG93IGNvbXBvc2l0aW5nIGZhbGxiYWNrJywgKCkgPT4ge1xuICAgIGNvbnN0IG1vY2tFZmZlY3QgPSB7XG4gICAgICBpZDogJ2xpZ2h0LXNoYWRvdy0xJyxcbiAgICAgIHR5cGU6ICdsaWdodC1hbmQtc2hhZG93JyxcbiAgICAgIGlzRW5hYmxlZDogdHJ1ZSxcbiAgICAgIGNsb25lOiBqZXN0LmZuKCgpID0+ICh7Li4ubW9ja0VmZmVjdCwgY2xvbmU6IG1vY2tFZmZlY3QuY2xvbmV9KSlcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcHJvcHNXaXRoRWZmZWN0cyhlZmZlY3RzKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5ERUZBVUxUX1BST1BTLFxuICAgICAgICB2aXNTdGF0ZToge1xuICAgICAgICAgIC4uLkRFRkFVTFRfUFJPUFMudmlzU3RhdGUsXG4gICAgICAgICAgZWZmZWN0cyxcbiAgICAgICAgICBlZmZlY3RPcmRlcjogZWZmZWN0cy5tYXAoZSA9PiBlLmlkKVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIHRlc3QoJ2FkZHMgRGVja1NoYWRvd0NvbXBvc2l0aW5nRWZmZWN0IHdoZW4gc2hhZG93cyBleGlzdCBidXQgbm8gcG9zdFJlbmRlciBlZmZlY3QnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzaGFkb3dEZWNrRWZmZWN0ID0ge2lkOiAnbGlnaHRpbmcnLCBzaGFkb3c6IHRydWV9O1xuICAgICAgbW9ja0NvbXB1dGVEZWNrRWZmZWN0cy5tb2NrUmV0dXJuVmFsdWUoW3NoYWRvd0RlY2tFZmZlY3RdKTtcblxuICAgICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKHByb3BzV2l0aEVmZmVjdHMoW21vY2tFZmZlY3RdKSk7XG5cbiAgICAgIGNvbnN0IHBhbmVsUHJvcHMgPSBtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lci5tb2NrLmNhbGxzWzBdWzBdO1xuICAgICAgY29uc3QgZWZmZWN0cyA9IHBhbmVsUHJvcHMuZGVja1Byb3BzLmVmZmVjdHM7XG5cbiAgICAgIGV4cGVjdChlZmZlY3RzLmxlbmd0aCkudG9CZSgyKTtcbiAgICAgIGV4cGVjdChlZmZlY3RzWzBdKS50b0JlKHNoYWRvd0RlY2tFZmZlY3QpO1xuICAgICAgZXhwZWN0KGVmZmVjdHNbMV0uaWQpLnRvQmUoJ3NoYWRvdy1jb21wb3NpdGluZy1lZmZlY3QnKTtcbiAgICAgIGV4cGVjdChEZWNrU2hhZG93Q29tcG9zaXRpbmdFZmZlY3QpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2RvZXMgbm90IGFkZCBEZWNrU2hhZG93Q29tcG9zaXRpbmdFZmZlY3Qgd2hlbiBhIHBvc3RSZW5kZXIgZWZmZWN0IGFscmVhZHkgZXhpc3RzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgc2hhZG93RGVja0VmZmVjdCA9IHtpZDogJ2xpZ2h0aW5nJywgc2hhZG93OiB0cnVlfTtcbiAgICAgIGNvbnN0IHBvc3RQcm9jZXNzRWZmZWN0ID0ge2lkOiAnZm9nJywgcG9zdFJlbmRlcjogamVzdC5mbigpfTtcbiAgICAgIG1vY2tDb21wdXRlRGVja0VmZmVjdHMubW9ja1JldHVyblZhbHVlKFtzaGFkb3dEZWNrRWZmZWN0LCBwb3N0UHJvY2Vzc0VmZmVjdF0pO1xuXG4gICAgICBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwocHJvcHNXaXRoRWZmZWN0cyhbbW9ja0VmZmVjdF0pKTtcblxuICAgICAgY29uc3QgcGFuZWxQcm9wcyA9IG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyLm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBjb25zdCBlZmZlY3RzID0gcGFuZWxQcm9wcy5kZWNrUHJvcHMuZWZmZWN0cztcblxuICAgICAgZXhwZWN0KGVmZmVjdHMubGVuZ3RoKS50b0JlKDIpO1xuICAgICAgZXhwZWN0KGVmZmVjdHNbMF0pLnRvQmUoc2hhZG93RGVja0VmZmVjdCk7XG4gICAgICBleHBlY3QoZWZmZWN0c1sxXSkudG9CZShwb3N0UHJvY2Vzc0VmZmVjdCk7XG4gICAgICBleHBlY3QoZWZmZWN0cy5ldmVyeShlID0+IGUuaWQgIT09ICdzaGFkb3ctY29tcG9zaXRpbmctZWZmZWN0JykpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdkb2VzIG5vdCBhZGQgRGVja1NoYWRvd0NvbXBvc2l0aW5nRWZmZWN0IHdoZW4gbm8gc2hhZG93IGVmZmVjdCBleGlzdHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBub25TaGFkb3dFZmZlY3QgPSB7aWQ6ICdsaWdodGluZycsIHNoYWRvdzogZmFsc2V9O1xuICAgICAgbW9ja0NvbXB1dGVEZWNrRWZmZWN0cy5tb2NrUmV0dXJuVmFsdWUoW25vblNoYWRvd0VmZmVjdF0pO1xuXG4gICAgICBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwocHJvcHNXaXRoRWZmZWN0cyhbbW9ja0VmZmVjdF0pKTtcblxuICAgICAgY29uc3QgcGFuZWxQcm9wcyA9IG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyLm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBjb25zdCBlZmZlY3RzID0gcGFuZWxQcm9wcy5kZWNrUHJvcHMuZWZmZWN0cztcblxuICAgICAgZXhwZWN0KGVmZmVjdHMubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgZXhwZWN0KGVmZmVjdHNbMF0pLnRvQmUobm9uU2hhZG93RWZmZWN0KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUlBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxPQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxhQUFBLEdBQUFMLE9BQUE7QUFrREEsSUFBQU0saUJBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFPLFFBQUEsR0FBQVAsT0FBQTtBQUErRCxTQUFBUSxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFBSixDQUFBO0FBQUEsU0FBQVUsY0FBQVosQ0FBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEsVUFBQUMsQ0FBQSxXQUFBVyxTQUFBLENBQUFaLENBQUEsSUFBQVksU0FBQSxDQUFBWixDQUFBLFFBQUFBLENBQUEsT0FBQUYsT0FBQSxDQUFBSSxNQUFBLENBQUFELENBQUEsT0FBQWEsT0FBQSxXQUFB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
732
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHlsZWRDb21wb25lbnRzIiwiX3JlYWN0SW50bCIsIl9yZWFjdDIiLCJfc3R5bGVzIiwiX2xvY2FsaXphdGlvbiIsIl9leHBvcnRWaWRlb01vZGFsIiwiX2VmZmVjdHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIm1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyIiwiamVzdCIsImZuIiwiY3JlYXRlRWxlbWVudCIsIk1vY2tLZXBsZXJVSUNvbnRleHQiLCJSZWFjdCIsImNyZWF0ZUNvbnRleHQiLCJtb2NrIiwiRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lciIsInByb3BzIiwiS2VwbGVyVUlDb250ZXh0IiwibW9ja0NvbXB1dGVEZWNrRWZmZWN0cyIsImFjdHVhbCIsInJlcXVpcmVBY3R1YWwiLCJjb21wdXRlRGVja0VmZmVjdHMiLCJwYXRjaERlY2tSZW5kZXJlckZvclBvc3RQcm9jZXNzaW5nIiwiRGVja1NoYWRvd0NvbXBvc2l0aW5nRWZmZWN0IiwibW9ja0ltcGxlbWVudGF0aW9uIiwiaWQiLCJwb3N0UmVuZGVyIiwiY2xlYW51cCIsImdldFN0YXRpY01hcFByb3BzIiwiX3N0YXRlIiwiX29uQ2hhbmdlIiwiX3Rva2VuIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJwcmVzZXJ2ZURyYXdpbmdCdWZmZXIiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcFN0eWxlIiwibWFwTGliIiwiUHJvbWlzZSIsInJlc29sdmUiLCJnZXRCZWZvcmVMYXllcklkIiwiZ2V0SHViYmxlRGVja0dsUHJvcHMiLCJwYXJhbWV0ZXJzIiwiYmxlbmQiLCJjb250cm9sbGVyIiwidmlld3MiLCJnZXRUaW1lUmFuZ2VGaWx0ZXJLZXlmcmFtZXMiLCJnZXRBbmltYXRhYmxlRmlsdGVycyIsImdldFJlc29sdXRpb25TZXR0aW5nIiwidmFsdWUiLCJfU3RyaW5nJHNwbGl0JG1hcCIsIlN0cmluZyIsInNwbGl0IiwibWFwIiwiTnVtYmVyIiwiX1N0cmluZyRzcGxpdCRtYXAyIiwiX3NsaWNlZFRvQXJyYXkyIiwid2lkdGgiLCJoZWlnaHQiLCJsYWJlbCIsInJlbmRlcldpdGhUaGVtZUxvY2FsIiwiY29tcG9uZW50IiwicmVuZGVyIiwiVGhlbWVQcm92aWRlciIsInRoZW1lIiwiSW50bFByb3ZpZGVyIiwibG9jYWxlIiwibWVzc2FnZXMiLCJFeHBvcnRWaWRlb01vZGFsIiwiRXhwb3J0VmlkZW9Nb2RhbEZhY3RvcnkiLCJERUZBVUxUX1BST1BTIiwibWFwYm94QXBpVXJsIiwibWFwU3RhdGUiLCJ6b29tIiwic3R5bGVUeXBlIiwibWFwU3R5bGVzIiwiZGFyayIsImFjY2Vzc1Rva2VuIiwiYm90dG9tTWFwU3R5bGUiLCJ0b3BNYXBTdHlsZSIsInZpc1N0YXRlIiwiZmlsdGVycyIsImxheWVycyIsImxheWVyQmxlbmRpbmciLCJsYXllck9yZGVyIiwiZXhwb3J0VmlkZW8iLCJtZWRpYVR5cGUiLCJjYW1lcmFQcmVzZXQiLCJmaWxlTmFtZSIsInJlc29sdXRpb24iLCJkdXJhdGlvbk1zIiwiY29udGFpbmVyVyIsInZpc1N0YXRlQWN0aW9ucyIsInNldEZpbHRlckFuaW1hdGlvblRpbWUiLCJzZXRMYXllckFuaW1hdGlvblRpbWUiLCJ1aVN0YXRlQWN0aW9ucyIsInNldEV4cG9ydFZpZGVvU2V0dGluZyIsIm9uQ2xvc2UiLCJyZW5kZXJBbmRXYWl0Rm9yUGFuZWwiLCJfcmVuZGVyQW5kV2FpdEZvclBhbmVsIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUxOSIsInJlc3VsdCIsIl9hcmdzMTkiLCJ3cmFwIiwiX2NhbGxlZTE5JCIsIl9jb250ZXh0MTkiLCJwcmV2IiwibmV4dCIsInVuZGVmaW5lZCIsIndhaXRGb3IiLCJleHBlY3QiLCJ0b0hhdmVCZWVuQ2FsbGVkIiwiYWJydXB0Iiwic3RvcCIsImRlc2NyaWJlIiwiYmVmb3JlRWFjaCIsImNsZWFyQWxsTW9ja3MiLCJtb2NrUmV0dXJuVmFsdWUiLCJ0ZXN0IiwiX2NhbGxlZSIsIl95aWVsZCRyZW5kZXJBbmRXYWl0RiIsImNvbnRhaW5lciIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJzZW50IiwicXVlcnlTZWxlY3RvciIsInRvQmVJblRoZURvY3VtZW50IiwiX2NhbGxlZTIiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJ0b0hhdmVCZWVuQ2FsbGVkVGltZXMiLCJfY2FsbGVlMyIsInBhbmVsUHJvcHMiLCJfY2FsbGVlMyQiLCJfY29udGV4dDMiLCJjYWxscyIsImhlYWRlciIsInRvQmUiLCJkaXNhYmxlQmFzZU1hcCIsImRlZmF1bHRGaWxlTmFtZSIsImV4cG9ydFZpZGVvV2lkdGgiLCJ0b0JlTGVzc1RoYW5PckVxdWFsIiwidG9CZUdyZWF0ZXJUaGFuT3JFcXVhbCIsImhhbmRsZUNsb3NlIiwiaW5pdGlhbFN0YXRlIiwidG9FcXVhbCIsIm1hcERhdGEiLCJfY2FsbGVlNCIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsImRlY2tQcm9wcyIsIl9pc0V4cG9ydCIsImVmZmVjdHMiLCJfY2FsbGVlNSIsIl9jYWxsZWU1JCIsIl9jb250ZXh0NSIsIm1hcFByb3BzIiwidG9CZURlZmluZWQiLCJfY2FsbGVlNiIsIl9jYWxsZWU2JCIsIl9jb250ZXh0NiIsImFuaW1hdGFibGVGaWx0ZXJzIiwiX2NhbGxlZTciLCJfY2FsbGVlNyQiLCJfY29udGV4dDciLCJfdHlwZW9mMiIsIl9jYWxsZWU4IiwiX2NhbGxlZTgkIiwiX2NvbnRleHQ4Iiwib25GaWx0ZXJGcmFtZVVwZGF0ZSIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwiX2NhbGxlZTkiLCJfY2FsbGVlOSQiLCJfY29udGV4dDkiLCJvblRyaXBGcmFtZVVwZGF0ZSIsIk5PX01BUF9QUk9QUyIsIm5vX21hcCIsImljb24iLCJsYXllckdyb3VwcyIsImNvbG9yTW9kZSIsInN0eWxlIiwidmVyc2lvbiIsInNvdXJjZXMiLCJfY2FsbGVlMCIsIl95aWVsZCRyZW5kZXJBbmRXYWl0RjIiLCJfY2FsbGVlMCQiLCJfY29udGV4dDAiLCJfY2FsbGVlMSIsIm5vTWFwRW50cnkiLCJlbmNvZGVkIiwiZGVjb2RlZCIsIl9jYWxsZWUxJCIsIl9jb250ZXh0MSIsInVybCIsInRvTWF0Y2giLCJyZXBsYWNlIiwiSlNPTiIsInBhcnNlIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiX2NhbGxlZTEwIiwicHJvcHNXaXRoVXJsIiwiX2NhbGxlZTEwJCIsIl9jb250ZXh0MTAiLCJtYWtlRm9nRGVja0VmZmVjdCIsImVmZmVjdCIsInNldFByb3BzIiwibmV3UHJvcHMiLCJhc3NpZ24iLCJtYWtlU3VyZmFjZUZvZ0VmZmVjdCIsImRlY2tFZmZlY3QiLCJvdmVycmlkZXMiLCJ0eXBlIiwiaXNFbmFibGVkIiwiYW5pbWF0ZUhlaWdodCIsImhlaWdodEVuZCIsImxpbmVhckVhc2luZyIsImNsb25lIiwicHJvcHNXaXRoRm9nRWZmZWN0IiwiZm9nRWZmZWN0IiwiZWZmZWN0T3JkZXIiLCJfY2FsbGVlMTEiLCJvcmlnaW5hbFBvc3RSZW5kZXIiLCJfY2FsbGVlMTEkIiwiX2NvbnRleHQxMSIsIm5vdCIsIl9jYWxsZWUxMiIsIl9jYWxsZWUxMiQiLCJfY29udGV4dDEyIiwiY2FsbCIsIl9jYWxsZWUxMyIsIl9jYWxsZWUxMyQiLCJfY29udGV4dDEzIiwiX2NhbGxlZTE0IiwiX3lpZWxkJHJlbmRlckFuZFdhaXRGMyIsInVubW91bnQiLCJwYXRjaGVkUG9zdFJlbmRlciIsIl9jYWxsZWUxNCQiLCJfY29udGV4dDE0IiwiYmluZCIsIm1vY2tFZmZlY3QiLCJwcm9wc1dpdGhFZmZlY3RzIiwiX2NhbGxlZTE1Iiwic2hhZG93RGVja0VmZmVjdCIsIl9jYWxsZWUxNSQiLCJfY29udGV4dDE1Iiwic2hhZG93IiwiX2NhbGxlZTE2IiwicG9zdFByb2Nlc3NFZmZlY3QiLCJfY2FsbGVlMTYkIiwiX2NvbnRleHQxNiIsImV2ZXJ5IiwiX2NhbGxlZTE3Iiwibm9uU2hhZG93RWZmZWN0IiwiX2NhbGxlZTE3JCIsIl9jb250ZXh0MTciLCJvcmlnaW5hbERwciIsIndpbmRvdyIsImRldmljZVBpeGVsUmF0aW8iLCJhZnRlckVhY2giLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl9jYWxsZWUxOCIsIl95aWVsZCRyZW5kZXJBbmRXYWl0RjQiLCJfY2FsbGVlMTgkIiwiX2NvbnRleHQxOCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RhbHMvZXhwb3J0LXZpZGVvLW1vZGFsLnNwZWMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbi8vIEB0cy1ub2NoZWNrXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtUaGVtZVByb3ZpZGVyfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQge3JlbmRlciwgd2FpdEZvcn0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQge3RoZW1lfSBmcm9tICdAa2VwbGVyLmdsL3N0eWxlcyc7XG5pbXBvcnQge21lc3NhZ2VzfSBmcm9tICdAa2VwbGVyLmdsL2xvY2FsaXphdGlvbic7XG5cbmNvbnN0IG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyID0gamVzdC5mbigoKSA9PiAoXG4gIDxkaXYgZGF0YS10ZXN0aWQ9XCJleHBvcnQtdmlkZW8tcGFuZWxcIj5Nb2NrIFBhbmVsPC9kaXY+XG4pKTtcbmNvbnN0IE1vY2tLZXBsZXJVSUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuXG5qZXN0Lm1vY2soJ0BodWJibGUuZ2wvcmVhY3QnLCAoKSA9PiAoe1xuICBFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyOiBwcm9wcyA9PiBtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lcihwcm9wcyksXG4gIEtlcGxlclVJQ29udGV4dDogTW9ja0tlcGxlclVJQ29udGV4dFxufSkpO1xuXG5jb25zdCBtb2NrQ29tcHV0ZURlY2tFZmZlY3RzID0gamVzdC5mbigoKSA9PiBbXSk7XG5cbmplc3QubW9jaygnQGtlcGxlci5nbC91dGlscycsICgpID0+IHtcbiAgY29uc3QgYWN0dWFsID0gamVzdC5yZXF1aXJlQWN0dWFsKCdAa2VwbGVyLmdsL3V0aWxzJyk7XG4gIHJldHVybiB7XG4gICAgLi4uYWN0dWFsLFxuICAgIGNvbXB1dGVEZWNrRWZmZWN0czogKC4uLmFyZ3MpID0+IG1vY2tDb21wdXRlRGVja0VmZmVjdHMoLi4uYXJncyksXG4gICAgcGF0Y2hEZWNrUmVuZGVyZXJGb3JQb3N0UHJvY2Vzc2luZzogamVzdC5mbigpXG4gIH07XG59KTtcblxuamVzdC5tb2NrKCdAa2VwbGVyLmdsL2VmZmVjdHMnLCAoKSA9PiAoe1xuICBEZWNrU2hhZG93Q29tcG9zaXRpbmdFZmZlY3Q6IGplc3QuZm4oKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gKHtcbiAgICBpZDogJ3NoYWRvdy1jb21wb3NpdGluZy1lZmZlY3QnLFxuICAgIHBvc3RSZW5kZXI6IGplc3QuZm4oKSxcbiAgICBjbGVhbnVwOiBqZXN0LmZuKClcbiAgfSkpXG59KSk7XG5cbmplc3QubW9jaygnLi9odWJibGUtdXRpbHMnLCAoKSA9PiAoe1xuICBnZXRTdGF0aWNNYXBQcm9wczogamVzdC5mbigoX3N0YXRlLCBfb25DaGFuZ2UsIF90b2tlbikgPT4gKHtcbiAgICBsYXRpdHVkZTogMzcuNyxcbiAgICBsb25naXR1ZGU6IC0xMjIuNCxcbiAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWUsXG4gICAgbWFwYm94QXBpQWNjZXNzVG9rZW46ICdzdHlsZS10b2tlbicsXG4gICAgbWFwU3R5bGU6IHtpZDogJ2Rhcmstc3R5bGUnfSxcbiAgICBtYXBMaWI6IFByb21pc2UucmVzb2x2ZSh7fSlcbiAgfSkpLFxuICBnZXRCZWZvcmVMYXllcklkOiBqZXN0LmZuKCgpID0+IG51bGwpLFxuICBnZXRIdWJibGVEZWNrR2xQcm9wczogamVzdC5mbigoKSA9PiAoe1xuICAgIHBhcmFtZXRlcnM6IHtibGVuZDogdHJ1ZX0sXG4gICAgY29udHJvbGxlcjogdHJ1ZSxcbiAgICB2aWV3czoge31cbiAgfSkpLFxuICBnZXRUaW1lUmFuZ2VGaWx0ZXJLZXlmcmFtZXM6IGplc3QuZm4oKSxcbiAgZ2V0QW5pbWF0YWJsZUZpbHRlcnM6IGplc3QuZm4oKCkgPT4gW10pLFxuICBnZXRSZXNvbHV0aW9uU2V0dGluZzogamVzdC5mbih2YWx1ZSA9PiB7XG4gICAgY29uc3QgW3dpZHRoLCBoZWlnaHRdID0gU3RyaW5nKHZhbHVlIHx8ICcxMjgweDcyMCcpLnNwbGl0KCd4JykubWFwKE51bWJlcik7XG4gICAgcmV0dXJuIHt2YWx1ZSwgd2lkdGgsIGhlaWdodCwgbGFiZWw6IHZhbHVlfTtcbiAgfSlcbn0pKTtcblxuaW1wb3J0IEV4cG9ydFZpZGVvTW9kYWxGYWN0b3J5IGZyb20gJy4vZXhwb3J0LXZpZGVvLW1vZGFsJztcbmltcG9ydCB7RGVja1NoYWRvd0NvbXBvc2l0aW5nRWZmZWN0fSBmcm9tICdAa2VwbGVyLmdsL2VmZmVjdHMnO1xuXG5mdW5jdGlvbiByZW5kZXJXaXRoVGhlbWVMb2NhbChjb21wb25lbnQpIHtcbiAgcmV0dXJuIHJlbmRlcihcbiAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgPEludGxQcm92aWRlciBsb2NhbGU9XCJlblwiIG1lc3NhZ2VzPXttZXNzYWdlc30+XG4gICAgICAgIHtjb21wb25lbnR9XG4gICAgICA8L0ludGxQcm92aWRlcj5cbiAgICA8L1RoZW1lUHJvdmlkZXI+XG4gICk7XG59XG5cbmNvbnN0IEV4cG9ydFZpZGVvTW9kYWwgPSBFeHBvcnRWaWRlb01vZGFsRmFjdG9yeSgpO1xuXG5jb25zdCBERUZBVUxUX1BST1BTID0ge1xuICBtYXBib3hBcGlBY2Nlc3NUb2tlbjogJ3Rlc3QtdG9rZW4nLFxuICBtYXBib3hBcGlVcmw6ICdodHRwczovL2FwaS5tYXBib3guY29tJyxcbiAgbWFwU3RhdGU6IHtsYXRpdHVkZTogMzcuNywgbG9uZ2l0dWRlOiAtMTIyLjQsIHpvb206IDEwfSxcbiAgbWFwU3R5bGU6IHtcbiAgICBzdHlsZVR5cGU6ICdkYXJrJyxcbiAgICBtYXBTdHlsZXM6IHtkYXJrOiB7YWNjZXNzVG9rZW46ICdzdHlsZS10b2tlbid9fSxcbiAgICBib3R0b21NYXBTdHlsZToge2lkOiAnZGFyay1zdHlsZSd9LFxuICAgIHRvcE1hcFN0eWxlOiBudWxsXG4gIH0sXG4gIHZpc1N0YXRlOiB7XG4gICAgZmlsdGVyczogW10sXG4gICAgbGF5ZXJzOiBbXSxcbiAgICBsYXllckJsZW5kaW5nOiAnbm9ybWFsJyxcbiAgICBsYXllck9yZGVyOiBbXVxuICB9LFxuICBleHBvcnRWaWRlbzoge1xuICAgIG1lZGlhVHlwZTogJ3dlYm0nLFxuICAgIGNhbWVyYVByZXNldDogJ05vbmUnLFxuICAgIGZpbGVOYW1lOiAna2VwbGVyLmdsJyxcbiAgICByZXNvbHV0aW9uOiAnMTI4MHg3MjAnLFxuICAgIGR1cmF0aW9uTXM6IDEwMDBcbiAgfSxcbiAgY29udGFpbmVyVzogODAwLFxuICB2aXNTdGF0ZUFjdGlvbnM6IHtcbiAgICBzZXRGaWx0ZXJBbmltYXRpb25UaW1lOiBqZXN0LmZuKCksXG4gICAgc2V0TGF5ZXJBbmltYXRpb25UaW1lOiBqZXN0LmZuKClcbiAgfSxcbiAgdWlTdGF0ZUFjdGlvbnM6IHtcbiAgICBzZXRFeHBvcnRWaWRlb1NldHRpbmc6IGplc3QuZm4oKVxuICB9LFxuICBvbkNsb3NlOiBqZXN0LmZuKClcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIHJlbmRlckFuZFdhaXRGb3JQYW5lbChwcm9wcyA9IERFRkFVTFRfUFJPUFMpIHtcbiAgY29uc3QgcmVzdWx0ID0gcmVuZGVyV2l0aFRoZW1lTG9jYWwoPEV4cG9ydFZpZGVvTW9kYWwgey4uLnByb3BzfSAvPik7XG4gIGF3YWl0IHdhaXRGb3IoKCkgPT4ge1xuICAgIGV4cGVjdChtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lcikudG9IYXZlQmVlbkNhbGxlZCgpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZGVzY3JpYmUoJ0V4cG9ydFZpZGVvTW9kYWwnLCAoKSA9PiB7XG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGplc3QuY2xlYXJBbGxNb2NrcygpO1xuICAgIG1vY2tDb21wdXRlRGVja0VmZmVjdHMubW9ja1JldHVyblZhbHVlKFtdKTtcbiAgfSk7XG5cbiAgdGVzdCgncmVuZGVycyB3aXRob3V0IGNyYXNoaW5nJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHtjb250YWluZXJ9ID0gYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKCk7XG4gICAgZXhwZWN0KGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuZXhwb3J0LXZpZGVvLW1vZGFsJykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIHRlc3QoJ3Byb3ZpZGVzIEtlcGxlclVJIGNvbnRleHQgd2l0aCBleHBlY3RlZCBjb21wb25lbnRzJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbCgpO1xuICAgIGV4cGVjdChtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lcikudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICB9KTtcblxuICB0ZXN0KCdwYXNzZXMgY29ycmVjdCBwcm9wcyB0byBFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbCgpO1xuXG4gICAgZXhwZWN0KG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMSk7XG4gICAgY29uc3QgcGFuZWxQcm9wcyA9IG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyLm1vY2suY2FsbHNbMF1bMF07XG5cbiAgICBleHBlY3QocGFuZWxQcm9wcy5oZWFkZXIpLnRvQmUoZmFsc2UpO1xuICAgIGV4cGVjdChwYW5lbFByb3BzLmRpc2FibGVCYXNlTWFwKS50b0JlKGZhbHNlKTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5kZWZhdWx0RmlsZU5hbWUpLnRvQmUoJ2tlcGxlci5nbCcpO1xuICAgIGV4cGVjdChwYW5lbFByb3BzLmV4cG9ydFZpZGVvV2lkdGgpLnRvQmVMZXNzVGhhbk9yRXF1YWwoNTQwKTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5leHBvcnRWaWRlb1dpZHRoKS50b0JlR3JlYXRlclRoYW5PckVxdWFsKDMyMCk7XG4gICAgZXhwZWN0KHBhbmVsUHJvcHMuaGFuZGxlQ2xvc2UpLnRvQmUoREVGQVVMVF9QUk9QUy5vbkNsb3NlKTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5pbml0aWFsU3RhdGUpLnRvRXF1YWwoREVGQVVMVF9QUk9QUy5leHBvcnRWaWRlbyk7XG4gICAgZXhwZWN0KHBhbmVsUHJvcHMubWFwRGF0YSkudG9FcXVhbCh7XG4gICAgICB2aXNTdGF0ZTogREVGQVVMVF9QUk9QUy52aXNTdGF0ZSxcbiAgICAgIG1hcFN0YXRlOiBERUZBVUxUX1BST1BTLm1hcFN0YXRlLFxuICAgICAgbWFwU3R5bGU6IERFRkFVTFRfUFJPUFMubWFwU3R5bGVcbiAgICB9KTtcbiAgfSk7XG5cbiAgdGVzdCgncGFzc2VzIGRlY2tQcm9wcyBmcm9tIGdldEh1YmJsZURlY2tHbFByb3BzJywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbCgpO1xuXG4gICAgY29uc3QgcGFuZWxQcm9wcyA9IG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyLm1vY2suY2FsbHNbMF1bMF07XG4gICAgZXhwZWN0KHBhbmVsUHJvcHMuZGVja1Byb3BzKS50b0VxdWFsKHtcbiAgICAgIHBhcmFtZXRlcnM6IHtibGVuZDogdHJ1ZX0sXG4gICAgICBjb250cm9sbGVyOiB0cnVlLFxuICAgICAgdmlld3M6IHt9LFxuICAgICAgX2lzRXhwb3J0OiB0cnVlLFxuICAgICAgZWZmZWN0czogW11cbiAgICB9KTtcbiAgfSk7XG5cbiAgdGVzdCgncGFzc2VzIG1hcFByb3BzIGZyb20gZ2V0U3RhdGljTWFwUHJvcHMnLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKCk7XG5cbiAgICBjb25zdCBwYW5lbFByb3BzID0gbW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIubW9jay5jYWxsc1swXVswXTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5tYXBQcm9wcy5sYXRpdHVkZSkudG9CZSgzNy43KTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5tYXBQcm9wcy5sb25naXR1ZGUpLnRvQmUoLTEyMi40KTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5tYXBQcm9wcy5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIpLnRvQmUodHJ1ZSk7XG4gICAgZXhwZWN0KHBhbmVsUHJvcHMubWFwUHJvcHMubWFwYm94QXBpQWNjZXNzVG9rZW4pLnRvQmUoJ3N0eWxlLXRva2VuJyk7XG4gICAgZXhwZWN0KHBhbmVsUHJvcHMubWFwUHJvcHMubWFwU3R5bGUpLnRvRXF1YWwoe2lkOiAnZGFyay1zdHlsZSd9KTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5tYXBQcm9wcy5tYXBMaWIpLnRvQmVEZWZpbmVkKCk7XG4gIH0pO1xuXG4gIHRlc3QoJ3Bhc3NlcyBlbXB0eSBhbmltYXRhYmxlRmlsdGVycyB3aGVuIG5vIG1hdGNoaW5nIGZpbHRlcnMnLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKCk7XG5cbiAgICBjb25zdCBwYW5lbFByb3BzID0gbW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIubW9jay5jYWxsc1swXVswXTtcbiAgICBleHBlY3QocGFuZWxQcm9wcy5hbmltYXRhYmxlRmlsdGVycykudG9FcXVhbChbXSk7XG4gIH0pO1xuXG4gIHRlc3QoJ3Byb3ZpZGVzIGdldFRpbWVSYW5nZUZpbHRlcktleWZyYW1lcyBjYWxsYmFjaycsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwoKTtcblxuICAgIGNvbnN0IHBhbmVsUHJvcHMgPSBtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lci5tb2NrLmNhbGxzWzBdWzBdO1xuICAgIGV4cGVjdCh0eXBlb2YgcGFuZWxQcm9wcy5nZXRUaW1lUmFuZ2VGaWx0ZXJLZXlmcmFtZXMpLnRvQmUoJ2Z1bmN0aW9uJyk7XG4gIH0pO1xuXG4gIHRlc3QoJ3Byb3ZpZGVzIG9uRmlsdGVyRnJhbWVVcGRhdGUgdGhhdCBjYWxscyB2aXNTdGF0ZUFjdGlvbnMnLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKCk7XG5cbiAgICBjb25zdCBwYW5lbFByb3BzID0gbW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIubW9jay5jYWxsc1swXVswXTtcbiAgICBwYW5lbFByb3BzLm9uRmlsdGVyRnJhbWVVcGRhdGUoMCwgJ3ZhbHVlJywgWzEwMCwgMjAwXSk7XG4gICAgZXhwZWN0KERFRkFVTFRfUFJPUFMudmlzU3RhdGVBY3Rpb25zLnNldEZpbHRlckFuaW1hdGlvblRpbWUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgMCxcbiAgICAgICd2YWx1ZScsXG4gICAgICBbMTAwLCAyMDBdXG4gICAgKTtcbiAgfSk7XG5cbiAgdGVzdCgncHJvdmlkZXMgb25UcmlwRnJhbWVVcGRhdGUgdGhhdCBjYWxscyB2aXNTdGF0ZUFjdGlvbnMnLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKCk7XG5cbiAgICBjb25zdCBwYW5lbFByb3BzID0gbW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIubW9jay5jYWxsc1swXVswXTtcbiAgICBwYW5lbFByb3BzLm9uVHJpcEZyYW1lVXBkYXRlKDQyKTtcbiAgICBleHBlY3QoREVGQVVMVF9QUk9QUy52aXNTdGF0ZUFjdGlvbnMuc2V0TGF5ZXJBbmltYXRpb25UaW1lKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCg0Mik7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdOT19NQVBfSUQgaGFuZGxpbmcnLCAoKSA9PiB7XG4gICAgY29uc3QgTk9fTUFQX1BST1BTID0ge1xuICAgICAgLi4uREVGQVVMVF9QUk9QUyxcbiAgICAgIG1hcFN0eWxlOiB7XG4gICAgICAgIHN0eWxlVHlwZTogJ25vX21hcCcsXG4gICAgICAgIG1hcFN0eWxlczoge1xuICAgICAgICAgIG5vX21hcDoge1xuICAgICAgICAgICAgaWQ6ICdub19tYXAnLFxuICAgICAgICAgICAgbGFiZWw6ICdObyBCYXNlbWFwJyxcbiAgICAgICAgICAgIC8vIHVybCBpcyBpbnRlbnRpb25hbGx5IG1pc3NpbmcgdG8gZXhlcmNpc2UgdGhlIGRhdGEtVVJJIHBhdGNoXG4gICAgICAgICAgICBpY29uOiAnJyxcbiAgICAgICAgICAgIGxheWVyR3JvdXBzOiBbXSxcbiAgICAgICAgICAgIGNvbG9yTW9kZTogJ05PTkUnLFxuICAgICAgICAgICAgc3R5bGU6IHt2ZXJzaW9uOiA4LCBzb3VyY2VzOiB7fSwgbGF5ZXJzOiBbXX1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGJvdHRvbU1hcFN0eWxlOiBudWxsLFxuICAgICAgICB0b3BNYXBTdHlsZTogbnVsbFxuICAgICAgfVxuICAgIH07XG5cbiAgICB0ZXN0KCdyZW5kZXJzIHdpdGhvdXQgY3Jhc2hpbmcgd2hlbiBzdHlsZVR5cGUgaXMgTk9fTUFQX0lEJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qge2NvbnRhaW5lcn0gPSBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwoTk9fTUFQX1BST1BTKTtcbiAgICAgIGV4cGVjdChjb250YWluZXIucXVlcnlTZWxlY3RvcignLmV4cG9ydC12aWRlby1tb2RhbCcpKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnaW5qZWN0cyBkYXRhLVVSSSBlbXB0eSBzdHlsZSBVUkwgaW50byBtYXBEYXRhIHdoZW4gTk9fTUFQX0lEIGVudHJ5IGhhcyBubyB1cmwnLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwoTk9fTUFQX1BST1BTKTtcblxuICAgICAgY29uc3QgcGFuZWxQcm9wcyA9IG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyLm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBjb25zdCBub01hcEVudHJ5ID0gcGFuZWxQcm9wcy5tYXBEYXRhLm1hcFN0eWxlLm1hcFN0eWxlcy5ub19tYXA7XG5cbiAgICAgIGV4cGVjdChub01hcEVudHJ5LnVybCkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChub01hcEVudHJ5LnVybCkudG9NYXRjaCgvXmRhdGE6YXBwbGljYXRpb25cXC9qc29uLC8pO1xuXG4gICAgICBjb25zdCBlbmNvZGVkID0gbm9NYXBFbnRyeS51cmwucmVwbGFjZSgnZGF0YTphcHBsaWNhdGlvbi9qc29uLCcsICcnKTtcbiAgICAgIGNvbnN0IGRlY29kZWQgPSBKU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVkKSk7XG4gICAgICBleHBlY3QoZGVjb2RlZCkudG9FcXVhbCh7dmVyc2lvbjogOCwgc291cmNlczoge30sIGxheWVyczogW119KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3ByZXNlcnZlcyBvcmlnaW5hbCBtYXBTdHlsZSB3aGVuIE5PX01BUF9JRCBlbnRyeSBhbHJlYWR5IGhhcyBhIHVybCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzV2l0aFVybCA9IHtcbiAgICAgICAgLi4uREVGQVVMVF9QUk9QUyxcbiAgICAgICAgbWFwU3R5bGU6IHtcbiAgICAgICAgICBzdHlsZVR5cGU6ICdub19tYXAnLFxuICAgICAgICAgIG1hcFN0eWxlczoge1xuICAgICAgICAgICAgbm9fbWFwOiB7XG4gICAgICAgICAgICAgIGlkOiAnbm9fbWFwJyxcbiAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9leGlzdGluZy1zdHlsZS5qc29uJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgYm90dG9tTWFwU3R5bGU6IG51bGwsXG4gICAgICAgICAgdG9wTWFwU3R5bGU6IG51bGxcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKHByb3BzV2l0aFVybCk7XG5cbiAgICAgIGNvbnN0IHBhbmVsUHJvcHMgPSBtb2NrRXhwb3J0VmlkZW9QYW5lbENvbnRhaW5lci5tb2NrLmNhbGxzWzBdWzBdO1xuICAgICAgZXhwZWN0KHBhbmVsUHJvcHMubWFwRGF0YS5tYXBTdHlsZSkudG9CZShwcm9wc1dpdGhVcmwubWFwU3R5bGUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc3VyZmFjZSBmb2cgaGVpZ2h0IGFuaW1hdGlvbicsICgpID0+IHtcbiAgICBmdW5jdGlvbiBtYWtlRm9nRGVja0VmZmVjdCgpIHtcbiAgICAgIGNvbnN0IGVmZmVjdCA9IHtcbiAgICAgICAgaWQ6ICdzdXJmYWNlLWZvZy1kZWNrJyxcbiAgICAgICAgcHJvcHM6IHtoZWlnaHQ6IDUwfSxcbiAgICAgICAgcG9zdFJlbmRlcjogamVzdC5mbigpLFxuICAgICAgICBzZXRQcm9wczogamVzdC5mbihmdW5jdGlvbiAobmV3UHJvcHMpIHtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKGVmZmVjdC5wcm9wcywgbmV3UHJvcHMpO1xuICAgICAgICB9KVxuICAgICAgfTtcbiAgICAgIHJldHVybiBlZmZlY3Q7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZVN1cmZhY2VGb2dFZmZlY3QoZGVja0VmZmVjdCwgb3ZlcnJpZGVzID0ge30pIHtcbiAgICAgIGNvbnN0IGVmZmVjdCA9IHtcbiAgICAgICAgaWQ6ICdmb2ctMScsXG4gICAgICAgIHR5cGU6ICdzdXJmYWNlRm9nJyxcbiAgICAgICAgaXNFbmFibGVkOiB0cnVlLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgaGVpZ2h0OiA1MCxcbiAgICAgICAgICBhbmltYXRlSGVpZ2h0OiB0cnVlLFxuICAgICAgICAgIGhlaWdodEVuZDogMjAwLFxuICAgICAgICAgIGxpbmVhckVhc2luZzogZmFsc2UsXG4gICAgICAgICAgLi4ub3ZlcnJpZGVzXG4gICAgICAgIH0sXG4gICAgICAgIGRlY2tFZmZlY3QsXG4gICAgICAgIGNsb25lOiBqZXN0LmZuKClcbiAgICAgIH07XG4gICAgICAvLyBjbG9uZSByZXR1cm5zIGEgZnJlc2ggcmVmZXJlbmNlIHRoYXQgc3RpbGwgcG9pbnRzIHRvIHRoZSBzYW1lIGRlY2tFZmZlY3RcbiAgICAgIGVmZmVjdC5jbG9uZS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gKHsuLi5lZmZlY3QsIGNsb25lOiBlZmZlY3QuY2xvbmV9KSk7XG4gICAgICByZXR1cm4gZWZmZWN0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByb3BzV2l0aEZvZ0VmZmVjdChmb2dFZmZlY3QpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLkRFRkFVTFRfUFJPUFMsXG4gICAgICAgIHZpc1N0YXRlOiB7XG4gICAgICAgICAgLi4uREVGQVVMVF9QUk9QUy52aXNTdGF0ZSxcbiAgICAgICAgICBlZmZlY3RzOiBbZm9nRWZmZWN0XSxcbiAgICAgICAgICBlZmZlY3RPcmRlcjogW2ZvZ0VmZmVjdC5pZF1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0ZXN0KCdwYXRjaGVzIGRlY2tFZmZlY3QucG9zdFJlbmRlciB3aGVuIGFuaW1hdGVIZWlnaHQgaXMgZW5hYmxlZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGRlY2tFZmZlY3QgPSBtYWtlRm9nRGVja0VmZmVjdCgpO1xuICAgICAgY29uc3Qgb3JpZ2luYWxQb3N0UmVuZGVyID0gZGVja0VmZmVjdC5wb3N0UmVuZGVyO1xuICAgICAgY29uc3QgZm9nRWZmZWN0ID0gbWFrZVN1cmZhY2VGb2dFZmZlY3QoZGVja0VmZmVjdCk7XG4gICAgICBtb2NrQ29tcHV0ZURlY2tFZmZlY3RzLm1vY2tSZXR1cm5WYWx1ZShbZGVja0VmZmVjdF0pO1xuXG4gICAgICBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwocHJvcHNXaXRoRm9nRWZmZWN0KGZvZ0VmZmVjdCkpO1xuXG4gICAgICBleHBlY3QoZGVja0VmZmVjdC5wb3N0UmVuZGVyKS5ub3QudG9CZShvcmlnaW5hbFBvc3RSZW5kZXIpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgncmVzdG9yZXMgb3JpZ2luYWwgaGVpZ2h0IHdoZW4gaHViYmxlIGlzIG5vdCBwbGF5aW5nJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZGVja0VmZmVjdCA9IG1ha2VGb2dEZWNrRWZmZWN0KCk7XG4gICAgICBkZWNrRWZmZWN0LnByb3BzLmhlaWdodCA9IDc1O1xuICAgICAgY29uc3QgZm9nRWZmZWN0ID0gbWFrZVN1cmZhY2VGb2dFZmZlY3QoZGVja0VmZmVjdCwge2hlaWdodDogNzV9KTtcbiAgICAgIG1vY2tDb21wdXRlRGVja0VmZmVjdHMubW9ja1JldHVyblZhbHVlKFtkZWNrRWZmZWN0XSk7XG5cbiAgICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbChwcm9wc1dpdGhGb2dFZmZlY3QoZm9nRWZmZWN0KSk7XG5cbiAgICAgIC8vIENhbGwgdGhlIHBhdGNoZWQgcG9zdFJlbmRlciB3aXRob3V0IGh1YmJsZSBwbGF5aW5nXG4gICAgICBkZWNrRWZmZWN0LnBvc3RSZW5kZXIuY2FsbChkZWNrRWZmZWN0LCB7fSk7XG5cbiAgICAgIC8vIE5vdCBwbGF5aW5nIOKGkiBoZWlnaHQgcmVzZXRzIHRvIG9yaWdpbmFsSGVpZ2h0XG4gICAgICBleHBlY3QoZGVja0VmZmVjdC5wcm9wcy5oZWlnaHQpLnRvQmUoNzUpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZG9lcyBub3QgbXV0YXRlIGhlaWdodCB3aGVuIGFuaW1hdGVIZWlnaHQgaXMgZGlzYWJsZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBkZWNrRWZmZWN0ID0gbWFrZUZvZ0RlY2tFZmZlY3QoKTtcbiAgICAgIGNvbnN0IGZvZ0VmZmVjdCA9IG1ha2VTdXJmYWNlRm9nRWZmZWN0KGRlY2tFZmZlY3QsIHthbmltYXRlSGVpZ2h0OiBmYWxzZX0pO1xuICAgICAgbW9ja0NvbXB1dGVEZWNrRWZmZWN0cy5tb2NrUmV0dXJuVmFsdWUoW2RlY2tFZmZlY3RdKTtcblxuICAgICAgYXdhaXQgcmVuZGVyQW5kV2FpdEZvclBhbmVsKHByb3BzV2l0aEZvZ0VmZmVjdChmb2dFZmZlY3QpKTtcblxuICAgICAgZGVja0VmZmVjdC5wcm9wcy5oZWlnaHQgPSA0MjtcbiAgICAgIGRlY2tFZmZlY3QucG9zdFJlbmRlci5jYWxsKGRlY2tFZmZlY3QsIHt9KTtcblxuICAgICAgLy8gcmVmLmFjdGl2ZSBpcyBmYWxzZSBzbyBoZWlnaHQgc2hvdWxkIG5vdCBiZSB0b3VjaGVkXG4gICAgICBleHBlY3QoZGVja0VmZmVjdC5wcm9wcy5oZWlnaHQpLnRvQmUoNDIpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgncmVzdG9yZXMgb3JpZ2luYWwgcG9zdFJlbmRlciBvbiB1bm1vdW50JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZGVja0VmZmVjdCA9IG1ha2VGb2dEZWNrRWZmZWN0KCk7XG4gICAgICBjb25zdCBmb2dFZmZlY3QgPSBtYWtlU3VyZmFjZUZvZ0VmZmVjdChkZWNrRWZmZWN0KTtcbiAgICAgIG1vY2tDb21wdXRlRGVja0VmZmVjdHMubW9ja1JldHVyblZhbHVlKFtkZWNrRWZmZWN0XSk7XG5cbiAgICAgIGNvbnN0IHt1bm1vdW50fSA9IGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbChwcm9wc1dpdGhGb2dFZmZlY3QoZm9nRWZmZWN0KSk7XG5cbiAgICAgIC8vIHBvc3RSZW5kZXIgd2FzIHBhdGNoZWQgKHRoZSB3cmFwcGVyIGZ1bmN0aW9uIGRyaXZlcyBhbmltYXRpb24pXG4gICAgICBjb25zdCBwYXRjaGVkUG9zdFJlbmRlciA9IGRlY2tFZmZlY3QucG9zdFJlbmRlcjtcbiAgICAgIC8vIFZlcmlmeSBpdCdzIG5vdCB0aGUgb3JpZ2luYWwgbW9jayAoY29tcG9uZW50IGJpbmRzIGFuZCB3cmFwcyBpdClcbiAgICAgIGV4cGVjdChwYXRjaGVkUG9zdFJlbmRlcikubm90LnRvQmUoZGVja0VmZmVjdC5wb3N0UmVuZGVyLmJpbmQoZGVja0VmZmVjdCkpO1xuXG4gICAgICB1bm1vdW50KCk7XG5cbiAgICAgIC8vIEFmdGVyIHVubW91bnQsIHBvc3RSZW5kZXIgbm8gbG9uZ2VyIGRyaXZlcyBhbmltYXRpb24uXG4gICAgICAvLyBUaGUgcmVzdG9yZWQgZnVuY3Rpb24gaXMgYSBib3VuZCBjb3B5IG9mIHRoZSBvcmlnaW5hbCBtb2NrLlxuICAgICAgZGVja0VmZmVjdC5wcm9wcy5oZWlnaHQgPSA5OTtcbiAgICAgIGRlY2tFZmZlY3QucG9zdFJlbmRlci5jYWxsKGRlY2tFZmZlY3QsIHt9KTtcbiAgICAgIC8vIEhlaWdodCBzaG91bGQgTk9UIGJlIG11dGF0ZWQgYnkgYW5pbWF0aW9uIGxvZ2ljIGFueW1vcmVcbiAgICAgIGV4cGVjdChkZWNrRWZmZWN0LnByb3BzLmhlaWdodCkudG9CZSg5OSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzaGFkb3cgY29tcG9zaXRpbmcgZmFsbGJhY2snLCAoKSA9PiB7XG4gICAgY29uc3QgbW9ja0VmZmVjdCA9IHtcbiAgICAgIGlkOiAnbGlnaHQtc2hhZG93LTEnLFxuICAgICAgdHlwZTogJ2xpZ2h0LWFuZC1zaGFkb3cnLFxuICAgICAgaXNFbmFibGVkOiB0cnVlLFxuICAgICAgY2xvbmU6IGplc3QuZm4oKCkgPT4gKHsuLi5tb2NrRWZmZWN0LCBjbG9uZTogbW9ja0VmZmVjdC5jbG9uZX0pKVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBwcm9wc1dpdGhFZmZlY3RzKGVmZmVjdHMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLkRFRkFVTFRfUFJPUFMsXG4gICAgICAgIHZpc1N0YXRlOiB7XG4gICAgICAgICAgLi4uREVGQVVMVF9QUk9QUy52aXNTdGF0ZSxcbiAgICAgICAgICBlZmZlY3RzLFxuICAgICAgICAgIGVmZmVjdE9yZGVyOiBlZmZlY3RzLm1hcChlID0+IGUuaWQpXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGVzdCgnYWRkcyBEZWNrU2hhZG93Q29tcG9zaXRpbmdFZmZlY3Qgd2hlbiBzaGFkb3dzIGV4aXN0IGJ1dCBubyBwb3N0UmVuZGVyIGVmZmVjdCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHNoYWRvd0RlY2tFZmZlY3QgPSB7aWQ6ICdsaWdodGluZycsIHNoYWRvdzogdHJ1ZX07XG4gICAgICBtb2NrQ29tcHV0ZURlY2tFZmZlY3RzLm1vY2tSZXR1cm5WYWx1ZShbc2hhZG93RGVja0VmZmVjdF0pO1xuXG4gICAgICBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwocHJvcHNXaXRoRWZmZWN0cyhbbW9ja0VmZmVjdF0pKTtcblxuICAgICAgY29uc3QgcGFuZWxQcm9wcyA9IG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyLm1vY2suY2FsbHNbMF1bMF07XG4gICAgICBjb25zdCBlZmZlY3RzID0gcGFuZWxQcm9wcy5kZWNrUHJvcHMuZWZmZWN0cztcblxuICAgICAgZXhwZWN0KGVmZmVjdHMubGVuZ3RoKS50b0JlKDIpO1xuICAgICAgZXhwZWN0KGVmZmVjdHNbMF0pLnRvQmUoc2hhZG93RGVja0VmZmVjdCk7XG4gICAgICBleHBlY3QoZWZmZWN0c1sxXS5pZCkudG9CZSgnc2hhZG93LWNvbXBvc2l0aW5nLWVmZmVjdCcpO1xuICAgICAgZXhwZWN0KERlY2tTaGFkb3dDb21wb3NpdGluZ0VmZmVjdCkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZG9lcyBub3QgYWRkIERlY2tTaGFkb3dDb21wb3NpdGluZ0VmZmVjdCB3aGVuIGEgcG9zdFJlbmRlciBlZmZlY3QgYWxyZWFkeSBleGlzdHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBzaGFkb3dEZWNrRWZmZWN0ID0ge2lkOiAnbGlnaHRpbmcnLCBzaGFkb3c6IHRydWV9O1xuICAgICAgY29uc3QgcG9zdFByb2Nlc3NFZmZlY3QgPSB7aWQ6ICdmb2cnLCBwb3N0UmVuZGVyOiBqZXN0LmZuKCl9O1xuICAgICAgbW9ja0NvbXB1dGVEZWNrRWZmZWN0cy5tb2NrUmV0dXJuVmFsdWUoW3NoYWRvd0RlY2tFZmZlY3QsIHBvc3RQcm9jZXNzRWZmZWN0XSk7XG5cbiAgICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbChwcm9wc1dpdGhFZmZlY3RzKFttb2NrRWZmZWN0XSkpO1xuXG4gICAgICBjb25zdCBwYW5lbFByb3BzID0gbW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIubW9jay5jYWxsc1swXVswXTtcbiAgICAgIGNvbnN0IGVmZmVjdHMgPSBwYW5lbFByb3BzLmRlY2tQcm9wcy5lZmZlY3RzO1xuXG4gICAgICBleHBlY3QoZWZmZWN0cy5sZW5ndGgpLnRvQmUoMik7XG4gICAgICBleHBlY3QoZWZmZWN0c1swXSkudG9CZShzaGFkb3dEZWNrRWZmZWN0KTtcbiAgICAgIGV4cGVjdChlZmZlY3RzWzFdKS50b0JlKHBvc3RQcm9jZXNzRWZmZWN0KTtcbiAgICAgIGV4cGVjdChlZmZlY3RzLmV2ZXJ5KGUgPT4gZS5pZCAhPT0gJ3NoYWRvdy1jb21wb3NpdGluZy1lZmZlY3QnKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2RvZXMgbm90IGFkZCBEZWNrU2hhZG93Q29tcG9zaXRpbmdFZmZlY3Qgd2hlbiBubyBzaGFkb3cgZWZmZWN0IGV4aXN0cycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG5vblNoYWRvd0VmZmVjdCA9IHtpZDogJ2xpZ2h0aW5nJywgc2hhZG93OiBmYWxzZX07XG4gICAgICBtb2NrQ29tcHV0ZURlY2tFZmZlY3RzLm1vY2tSZXR1cm5WYWx1ZShbbm9uU2hhZG93RWZmZWN0XSk7XG5cbiAgICAgIGF3YWl0IHJlbmRlckFuZFdhaXRGb3JQYW5lbChwcm9wc1dpdGhFZmZlY3RzKFttb2NrRWZmZWN0XSkpO1xuXG4gICAgICBjb25zdCBwYW5lbFByb3BzID0gbW9ja0V4cG9ydFZpZGVvUGFuZWxDb250YWluZXIubW9jay5jYWxsc1swXVswXTtcbiAgICAgIGNvbnN0IGVmZmVjdHMgPSBwYW5lbFByb3BzLmRlY2tQcm9wcy5lZmZlY3RzO1xuXG4gICAgICBleHBlY3QoZWZmZWN0cy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICBleHBlY3QoZWZmZWN0c1swXSkudG9CZShub25TaGFkb3dFZmZlY3QpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZGV2aWNlUGl4ZWxSYXRpbyBmcmVlemUnLCAoKSA9PiB7XG4gICAgY29uc3Qgb3JpZ2luYWxEcHIgPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbztcblxuICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAnZGV2aWNlUGl4ZWxSYXRpbycsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IG9yaWdpbmFsRHByXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ3BpbnMgZGV2aWNlUGl4ZWxSYXRpbyB0byBleHBvcnQgc2NhbGUgYW5kIHJlc3RvcmVzIGl0IG9uIHVubW91bnQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB7dW5tb3VudH0gPSBhd2FpdCByZW5kZXJBbmRXYWl0Rm9yUGFuZWwoKTtcbiAgICAgIGNvbnN0IHtleHBvcnRWaWRlb1dpZHRofSA9IG1vY2tFeHBvcnRWaWRlb1BhbmVsQ29udGFpbmVyLm1vY2suY2FsbHNbMF1bMF07XG5cbiAgICAgIGV4cGVjdCh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbykudG9CZSgxMjgwIC8gZXhwb3J0VmlkZW9XaWR0aCk7XG5cbiAgICAgIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvID0gMTtcbiAgICAgIGV4cGVjdCh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbykudG9CZSgxMjgwIC8gZXhwb3J0VmlkZW9XaWR0aCk7XG5cbiAgICAgIHVubW91bnQoKTtcbiAgICAgIGV4cGVjdCh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbykudG9CZShvcmlnaW5hbERwcik7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBSUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLE9BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGFBQUEsR0FBQUwsT0FBQTtBQXNEQSxJQUFBTSxpQkFBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8sUUFBQSxHQUFBUCxPQUFBO0FBQStELFNBQUFRLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxjQUFBWixDQUFBLGFBQUFDLENBQUEsTUFBQUEsQ0FBQSxHQUFBWSxTQUFBLENBQUFDLE1BQUEsRUFBQWIsQ0FBQSxVQUFBQyxDQUFBLFdBQUFXLFNBQUEsQ0FBQVosQ0FBQSxJQUFBWSxTQUFBLENBQUFaLENBQUEsUUFBQUEsQ0FBQSxPQUFBRixPQUFBLENBQUFJLE1BQUEsQ0FBQUQsQ0FBQSxPQUFBYSxPQUFBLFdBQUFkLENBQUEsUUFBQWUsZ0JBQUEsYUFBQWhCLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLENBQUFELENBQUEsU0FBQUUsTUFBQSxDQUFBYyx5QkFBQSxHQUFBZCxNQUFBLENBQUFlLGdCQUFBLENBQUFsQixDQUFBLEVBQUFHLE1BQUEsQ0FBQWMseUJBQUEsQ0FBQWYsQ0FBQSxLQUFBSCxPQUFBLENBQUFJLE1BQUEsQ0FBQUQsQ0FBQSxHQUFBYSxPQUFBLFdBQUFkLENBQUEsSUFBQUUsTUFBQSxDQUFBZ0IsY0FBQSxDQUFBbkIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQU4sQ0FBQSxFQUFBRCxDQUFBLGlCQUFBRCxDQUFBLElBaEUvRDtBQUNBO0FBRUE7QUFRQSxJQUFNb0IsNkJBQTZCLEdBQUdDLElBQUksQ0FBQ0MsRUFBRSxDQUFDO0VBQUEsb0JBQzVDakMsTUFBQSxZQUFBa0MsYUFBQTtJQUFLLGVBQVk7RUFBb0IsR0FBQyxZQUFlLENBQUM7QUFBQSxDQUN2RCxDQUFDO0FBQ0YsSUFBTUMsbUJBQW1CLGdCQUFHQyxpQkFBSyxDQUFDQyxhQUFhLENBQUMsSUFBSSxDQUFDO0FBRXJETCxJQUFJLENBQUNNLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtFQUFBLE9BQU87SUFDbkNDLHlCQUF5QixFQUFFLFNBQTNCQSx5QkFBeUJBLENBQUVDLEtBQUs7TUFBQSxPQUFJVCw2QkFBNkIsQ0FBQ1MsS0FBSyxDQUFDO0lBQUE7SUFDeEVDLGVBQWUsRUFBRU47RUFDbkIsQ0FBQztBQUFBLENBQUMsQ0FBQztBQUVILElBQU1PLHNCQUFzQixHQUFHVixJQUFJLENBQUNDLEVBQUUsQ0FBQztFQUFBLE9BQU0sRUFBRTtBQUFBLEVBQUM7QUFFaERELElBQUksQ0FBQ00sSUFBSSxDQUFDLGtCQUFrQixFQUFFLFlBQU07RUFDbEMsSUFBTUssTUFBTSxHQUFHWCxJQUFJLENBQUNZLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQztFQUNyRCxPQUFBckIsYUFBQSxDQUFBQSxhQUFBLEtBQ0tvQixNQUFNO0lBQ1RFLGtCQUFrQixFQUFFLFNBQXBCQSxrQkFBa0JBLENBQUE7TUFBQSxPQUFlSCxzQkFBc0IsQ0FBQXBCLEtBQUEsU0FBQUUsU0FBUSxDQUFDO0lBQUE7SUFDaEVzQixrQ0FBa0MsRUFBRWQsSUFBSSxDQUFDQyxFQUFFLENBQUM7RUFBQztBQUVqRCxDQUFDLENBQUM7QUFFRkQsSUFBSSxDQUFDTSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7RUFBQSxPQUFPO0lBQ3JDUywyQkFBMkIsRUFBRWYsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQyxDQUFDZSxrQkFBa0IsQ0FBQztNQUFBLE9BQU87UUFDL0RDLEVBQUUsRUFBRSwyQkFBMkI7UUFDL0JDLFVBQVUsRUFBRWxCLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7UUFDckJrQixPQUFPLEVBQUVuQixJQUFJLENBQUNDLEVBQUUsQ0FBQztNQUNuQixDQUFDO0lBQUEsQ0FBQztFQUNKLENBQUM7QUFBQSxDQUFDLENBQUM7QUFFSEQsSUFBSSxDQUFDTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7RUFBQSxPQUFPO0lBQ2pDYyxpQkFBaUIsRUFBRXBCLElBQUksQ0FBQ0MsRUFBRSxDQUFDLFVBQUNvQixNQUFNLEVBQUVDLFNBQVMsRUFBRUMsTUFBTTtNQUFBLE9BQU07UUFDekRDLFFBQVEsRUFBRSxJQUFJO1FBQ2RDLFNBQVMsRUFBRSxDQUFDLEtBQUs7UUFDakJDLHFCQUFxQixFQUFFLElBQUk7UUFDM0JDLG9CQUFvQixFQUFFLGFBQWE7UUFDbkNDLFFBQVEsRUFBRTtVQUFDWCxFQUFFLEVBQUU7UUFBWSxDQUFDO1FBQzVCWSxNQUFNLEVBQUVDLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQztNQUM1QixDQUFDO0lBQUEsQ0FBQyxDQUFDO0lBQ0hDLGdCQUFnQixFQUFFaEMsSUFBSSxDQUFDQyxFQUFFLENBQUM7TUFBQSxPQUFNLElBQUk7SUFBQSxFQUFDO0lBQ3JDZ0Msb0JBQW9CLEVBQUVqQyxJQUFJLENBQUNDLEVBQUUsQ0FBQztNQUFBLE9BQU87UUFDbkNpQyxVQUFVLEVBQUU7VUFBQ0MsS0FBSyxFQUFFO1FBQUksQ0FBQztRQUN6QkMsVUFBVSxFQUFFLElBQUk7UUFDaEJDLEtBQUssRUFBRSxDQUFDO01BQ1YsQ0FBQztJQUFBLENBQUMsQ0FBQztJQUNIQywyQkFBMkIsRUFBRXRDLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7SUFDdENzQyxvQkFBb0IsRUFBRXZDLElBQUksQ0FBQ0MsRUFBRSxDQUFDO01BQUEsT0FBTSxFQUFFO0lBQUEsRUFBQztJQUN2Q3VDLG9CQUFvQixFQUFFeEMsSUFBSSxDQUFDQyxFQUFFLENBQUMsVUFBQXdDLEtBQUssRUFBSTtNQUNyQyxJQUFBQyxpQkFBQSxHQUF3QkMsTUFBTSxDQUFDRixLQUFLLElBQUksVUFBVSxDQUFDLENBQUNHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsR0FBRyxDQUFDQyxNQUFNLENBQUM7UUFBQUMsa0JBQUEsT0FBQUMsZUFBQSxhQUFBTixpQkFBQTtRQUFuRU8sS0FBSyxHQUFBRixrQkFBQTtRQUFFRyxNQUFNLEdBQUFILGtCQUFBO01BQ3BCLE9BQU87UUFBQ04sS0FBSyxFQUFMQSxLQUFLO1FBQUVRLEtBQUssRUFBTEEsS0FBSztRQUFFQyxNQUFNLEVBQU5BLE1BQU07UUFBRUMsS0FBSyxFQUFFVjtNQUFLLENBQUM7SUFDN0MsQ0FBQztFQUNILENBQUM7QUFBQSxDQUFDLENBQUM7QUFLSCxTQUFTVyxvQkFBb0JBLENBQUNDLFNBQVMsRUFBRTtFQUN2QyxPQUFPLElBQUFDLGNBQU0sZUFDWHRGLE1BQUEsWUFBQWtDLGFBQUEsQ0FBQy9CLGlCQUFBLENBQUFvRixhQUFhO0lBQUNDLEtBQUssRUFBRUE7RUFBTSxnQkFDMUJ4RixNQUFBLFlBQUFrQyxhQUFBLENBQUM5QixVQUFBLENBQUFxRixZQUFZO0lBQUNDLE1BQU0sRUFBQyxJQUFJO0lBQUNDLFFBQVEsRUFBRUE7RUFBUyxHQUMxQ04sU0FDVyxDQUNELENBQ2pCLENBQUM7QUFDSDtBQUVBLElBQU1PLGdCQUFnQixHQUFHLElBQUFDLDRCQUF1QixFQUFDLENBQUM7QUFFbEQsSUFBTUMsYUFBYSxHQUFHO0VBQ3BCbkMsb0JBQW9CLEVBQUUsWUFBWTtFQUNsQ29DLFlBQVksRUFBRSx3QkFBd0I7RUFDdENDLFFBQVEsRUFBRTtJQUFDeEMsUUFBUSxFQUFFLElBQUk7SUFBRUMsU0FBUyxFQUFFLENBQUMsS0FBSztJQUFFd0MsSUFBSSxFQUFFO0VBQUUsQ0FBQztFQUN2RHJDLFFBQVEsRUFBRTtJQUNSc0MsU0FBUyxFQUFFLE1BQU07SUFDakJDLFNBQVMsRUFBRTtNQUFDQyxJQUFJLEVBQUU7UUFBQ0MsV0FBVyxFQUFFO01BQWE7SUFBQyxDQUFDO0lBQy9DQyxjQUFjLEVBQUU7TUFBQ3JELEVBQUUsRUFBRTtJQUFZLENBQUM7SUFDbENzRCxXQUFXLEVBQUU7RUFDZixDQUFDO0VBQ0RDLFFBQVEsRUFBRTtJQUNSQyxPQUFPLEVBQUUsRUFBRTtJQUNYQyxNQUFNLEVBQUUsRUFBRTtJQUNWQyxhQUFhLEVBQUUsUUFBUTtJQUN2QkMsVUFBVSxFQUFFO0VBQ2QsQ0FBQztFQUNEQyxXQUFXLEVBQUU7SUFDWEMsU0FBUyxFQUFFLE1BQU07SUFDakJDLFlBQVksRUFBRSxNQUFNO0lBQ3BCQyxRQUFRLEVBQUUsV0FBVztJQUNyQkMsVUFBVSxFQUFFLFVBQVU7SUFDdEJDLFVBQVUsRUFBRTtFQUNkLENBQUM7RUFDREMsVUFBVSxFQUFFLEdBQUc7RUFDZkMsZUFBZSxFQUFFO0lBQ2ZDLHNCQUFzQixFQUFFckYsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztJQUNqQ3FGLHFCQUFxQixFQUFFdEYsSUFBSSxDQUFDQyxFQUFFLENBQUM7RUFDakMsQ0FBQztFQUNEc0YsY0FBYyxFQUFFO0lBQ2RDLHFCQUFxQixFQUFFeEYsSUFBSSxDQUFDQyxFQUFFLENBQUM7RUFDakMsQ0FBQztFQUNEd0YsT0FBTyxFQUFFekYsSUFBSSxDQUFDQyxFQUFFLENBQUM7QUFDbkIsQ0FBQztBQUFDLFNBRWF5RixxQkFBcUJBLENBQUE7RUFBQSxPQUFBQyxzQkFBQSxDQUFBckcsS0FBQSxPQUFBRSxTQUFBO0FBQUE7QUFBQSxTQUFBbUcsdUJBQUE7RUFBQUEsc0JBQUEsT0FBQUMsa0JBQUEsMEJBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQUFwQyxTQUFBQyxVQUFBO0lBQUEsSUFBQXZGLEtBQUE7TUFBQXdGLE1BQUE7TUFBQUMsT0FBQSxHQUFBekcsU0FBQTtJQUFBLE9BQUFxRyxZQUFBLFlBQUFLLElBQUEsVUFBQUMsV0FBQUMsVUFBQTtNQUFBLGtCQUFBQSxVQUFBLENBQUFDLElBQUEsR0FBQUQsVUFBQSxDQUFBRSxJQUFBO1FBQUE7VUFBcUM5RixLQUFLLEdBQUF5RixPQUFBLENBQUF4RyxNQUFBLFFBQUF3RyxPQUFBLFFBQUFNLFNBQUEsR0FBQU4sT0FBQSxNQUFHbkMsYUFBYTtVQUNsRGtDLE1BQU0sR0FBRzVDLG9CQUFvQixjQUFDcEYsTUFBQSxZQUFBa0MsYUFBQSxDQUFDMEQsZ0JBQWdCLEVBQUtwRCxLQUFRLENBQUMsQ0FBQztVQUFBNEYsVUFBQSxDQUFBRSxJQUFBO1VBQUEsT0FDOUQsSUFBQUUsZUFBTyxFQUFDLFlBQU07WUFDbEJDLE1BQU0sQ0FBQzFHLDZCQUE2QixDQUFDLENBQUMyRyxnQkFBZ0IsQ0FBQyxDQUFDO1VBQzFELENBQUMsQ0FBQztRQUFBO1VBQUEsT0FBQU4sVUFBQSxDQUFBTyxNQUFBLFdBQ0tYLE1BQU07UUFBQTtRQUFBO1VBQUEsT0FBQUksVUFBQSxDQUFBUSxJQUFBO01BQUE7SUFBQSxHQUFBYixTQUFBO0VBQUEsQ0FDZDtFQUFBLE9BQUFKLHNCQUFBLENBQUFyRyxLQUFBLE9BQUFFLFNBQUE7QUFBQTtBQUVEcUgsUUFBUSxDQUFDLGtCQUFrQixFQUFFLFlBQU07RUFDakNDLFVBQVUsQ0FBQyxZQUFNO0lBQ2Y5RyxJQUFJLENBQUMrRyxhQUFhLENBQUMsQ0FBQztJQUNwQnJHLHNCQUFzQixDQUFDc0csZUFBZSxDQUFDLEVBQUUsQ0FBQztFQUM1QyxDQUFDLENBQUM7RUFFRkMsSUFBSSxDQUFDLDBCQUEwQixtQkFBQXJCLGtCQUFBLDBCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0FBRSxTQUFBb0IsUUFBQTtJQUFBLElBQUFDLHFCQUFBLEVBQUFDLFNBQUE7SUFBQSxPQUFBdkIsWUFBQSxZQUFBSyxJQUFBLFVBQUFtQixTQUFBQyxRQUFBO01BQUEsa0JBQUFBLFFBQUEsQ0FBQWpCLElBQUEsR0FBQWlCLFFBQUEsQ0FBQWhCLElBQUE7UUFBQTtVQUFBZ0IsUUFBQSxDQUFBaEIsSUFBQTtVQUFBLE9BQ0xaLHFCQUFxQixDQUFDLENBQUM7UUFBQTtVQUFBeUIscUJBQUEsR0FBQUcsUUFBQSxDQUFBQyxJQUFBO1VBQTFDSCxTQUFTLEdBQUFELHFCQUFBLENBQVRDLFNBQVM7VUFDaEJYLE1BQU0sQ0FBQ1csU0FBUyxDQUFDSSxhQUFhLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQUM7UUFBQTtVQUFBLE9BQUFILFFBQUEsQ0FBQVYsSUFBQTtNQUFBO0lBQUEsR0FBQU0sT0FBQTtFQUFBLENBQzVFLEdBQUM7RUFFRkQsSUFBSSxDQUFDLG9EQUFvRCxtQkFBQXJCLGtCQUFBLDBCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0FBRSxTQUFBNEIsU0FBQTtJQUFBLE9BQUE3QixZQUFBLFlBQUFLLElBQUEsVUFBQXlCLFVBQUFDLFNBQUE7TUFBQSxrQkFBQUEsU0FBQSxDQUFBdkIsSUFBQSxHQUFBdUIsU0FBQSxDQUFBdEIsSUFBQTtRQUFBO1VBQUFzQixTQUFBLENBQUF0QixJQUFBO1VBQUEsT0FDbkRaLHFCQUFxQixDQUFDLENBQUM7UUFBQTtVQUM3QmUsTUFBTSxDQUFDMUcsNkJBQTZCLENBQUMsQ0FBQzhILHFCQUFxQixDQUFDLENBQUMsQ0FBQztRQUFDO1FBQUE7VUFBQSxPQUFBRCxTQUFBLENBQUFoQixJQUFBO01BQUE7SUFBQSxHQUFBYyxRQUFBO0VBQUEsQ0FDaEUsR0FBQztFQUVGVCxJQUFJLENBQUMsbURBQW1ELG1CQUFBckIsa0JBQUEsMEJBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQUFFLFNBQUFnQyxTQUFBO0lBQUEsSUFBQUMsVUFBQTtJQUFBLE9BQUFsQyxZQUFBLFlBQUFLLElBQUEsVUFBQThCLFVBQUFDLFNBQUE7TUFBQSxrQkFBQUEsU0FBQSxDQUFBNUIsSUFBQSxHQUFBNEIsU0FBQSxDQUFBM0IsSUFBQTtRQUFBO1VBQUEyQixTQUFBLENBQUEzQixJQUFBO1VBQUEsT0FDbERaLHFCQUFxQixDQUFDLENBQUM7UUFBQTtVQUU3QmUsTUFBTSxDQUFDMUcsNkJBQTZCLENBQUMsQ0FBQzhILHFCQUFxQixDQUFDLENBQUMsQ0FBQztVQUN4REUsVUFBVSxHQUFHaEksNkJBQTZCLENBQUNPLElBQUksQ0FBQzRILEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFFakV6QixNQUFNLENBQUNzQixVQUFVLENBQUNJLE1BQU0sQ0FBQyxDQUFDQyxJQUFJLENBQUMsS0FBSyxDQUFDO1VBQ3JDM0IsTUFBTSxDQUFDc0IsVUFBVSxDQUFDTSxjQUFjLENBQUMsQ0FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQztVQUM3QzNCLE1BQU0sQ0FBQ3NCLFVBQVUsQ0FBQ08sZUFBZSxDQUFDLENBQUNGLElBQUksQ0FBQyxXQUFXLENBQUM7VUFDcEQzQixNQUFNLENBQUNzQixVQUFVLENBQUNRLGdCQUFnQixDQUFDLENBQUNDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQztVQUM1RC9CLE1BQU0sQ0FBQ3NCLFVBQVUsQ0FBQ1EsZ0JBQWdCLENBQUMsQ0FBQ0Usc0JBQXNCLENBQUMsR0FBRyxDQUFDO1VBQy9EaEMsTUFBTSxDQUFDc0IsVUFBVSxDQUFDVyxXQUFXLENBQUMsQ0FBQ04sSUFBSSxDQUFDdEUsYUFBYSxDQUFDMkIsT0FBTyxDQUFDO1VBQzFEZ0IsTUFBTSxDQUFDc0IsVUFBVSxDQUFDWSxZQUFZLENBQUMsQ0FBQ0MsT0FBTyxDQUFDOUUsYUFBYSxDQUFDZSxXQUFXLENBQUM7VUFDbEU0QixNQUFNLENBQUNzQixVQUFVLENBQUNjLE9BQU8sQ0FBQyxDQUFDRCxPQUFPLENBQUM7WUFDakNwRSxRQUFRLEVBQUVWLGFBQWEsQ0FBQ1UsUUFBUTtZQUNoQ1IsUUFBUSxFQUFFRixhQUFhLENBQUNFLFFBQVE7WUFDaENwQyxRQUFRLEVBQUVrQyxhQUFhLENBQUNsQztVQUMxQixDQUFDLENBQUM7UUFBQztRQUFBO1VBQUEsT0FBQXFHLFNBQUEsQ0FBQXJCLElBQUE7TUFBQTtJQUFBLEdBQUFrQixRQUFBO0VBQUEsQ0FDSixHQUFDO0VBRUZiLElBQUksQ0FBQyw0Q0FBNEMsbUJBQUFyQixrQkFBQSwwQkFBQUMsWUFBQSxZQUFBQyxJQUFBLENBQUUsU0FBQWdELFNBQUE7SUFBQSxJQUFBZixVQUFBO0lBQUEsT0FBQWxDLFlBQUEsWUFBQUssSUFBQSxVQUFBNkMsVUFBQUMsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUEzQyxJQUFBLEdBQUEyQyxTQUFBLENBQUExQyxJQUFBO1FBQUE7VUFBQTBDLFNBQUEsQ0FBQTFDLElBQUE7VUFBQSxPQUMzQ1oscUJBQXFCLENBQUMsQ0FBQztRQUFBO1VBRXZCcUMsVUFBVSxHQUFHaEksNkJBQTZCLENBQUNPLElBQUksQ0FBQzRILEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFDakV6QixNQUFNLENBQUNzQixVQUFVLENBQUNrQixTQUFTLENBQUMsQ0FBQ0wsT0FBTyxDQUFDO1lBQ25DMUcsVUFBVSxFQUFFO2NBQUNDLEtBQUssRUFBRTtZQUFJLENBQUM7WUFDekJDLFVBQVUsRUFBRSxJQUFJO1lBQ2hCQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ1Q2RyxTQUFTLEVBQUUsSUFBSTtZQUNmQyxPQUFPLEVBQUU7VUFDWCxDQUFDLENBQUM7UUFBQztRQUFBO1VBQUEsT0FBQUgsU0FBQSxDQUFBcEMsSUFBQTtNQUFBO0lBQUEsR0FBQWtDLFFBQUE7RUFBQSxDQUNKLEdBQUM7RUFFRjdCLElBQUksQ0FBQyx3Q0FBd0MsbUJBQUFyQixrQkFBQSwwQkFBQUMsWUFBQSxZQUFBQyxJQUFBLENBQUUsU0FBQXNELFNBQUE7SUFBQSxJQUFBckIsVUFBQTtJQUFBLE9BQUFsQyxZQUFBLFlBQUFLLElBQUEsVUFBQW1ELFVBQUFDLFNBQUE7TUFBQSxrQkFBQUEsU0FBQSxDQUFBakQsSUFBQSxHQUFBaUQsU0FBQSxDQUFBaEQsSUFBQTtRQUFBO1VBQUFnRCxTQUFBLENBQUFoRCxJQUFBO1VBQUEsT0FDdkNaLHFCQUFxQixDQUFDLENBQUM7UUFBQTtVQUV2QnFDLFVBQVUsR0FBR2hJLDZCQUE2QixDQUFDTyxJQUFJLENBQUM0SCxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1VBQ2pFekIsTUFBTSxDQUFDc0IsVUFBVSxDQUFDd0IsUUFBUSxDQUFDL0gsUUFBUSxDQUFDLENBQUM0RyxJQUFJLENBQUMsSUFBSSxDQUFDO1VBQy9DM0IsTUFBTSxDQUFDc0IsVUFBVSxDQUFDd0IsUUFBUSxDQUFDOUgsU0FBUyxDQUFDLENBQUMyRyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUM7VUFDbEQzQixNQUFNLENBQUNzQixVQUFVLENBQUN3QixRQUFRLENBQUM3SCxxQkFBcUIsQ0FBQyxDQUFDMEcsSUFBSSxDQUFDLElBQUksQ0FBQztVQUM1RDNCLE1BQU0sQ0FBQ3NCLFVBQVUsQ0FBQ3dCLFFBQVEsQ0FBQzVILG9CQUFvQixDQUFDLENBQUN5RyxJQUFJLENBQUMsYUFBYSxDQUFDO1VBQ3BFM0IsTUFBTSxDQUFDc0IsVUFBVSxDQUFDd0IsUUFBUSxDQUFDM0gsUUFBUSxDQUFDLENBQUNnSCxPQUFPLENBQUM7WUFBQzNILEVBQUUsRUFBRTtVQUFZLENBQUMsQ0FBQztVQUNoRXdGLE1BQU0sQ0FBQ3NCLFVBQVUsQ0FBQ3dCLFFBQVEsQ0FBQzFILE1BQU0sQ0FBQyxDQUFDMkgsV0FBVyxDQUFDLENBQUM7UUFBQztRQUFBO1VBQUEsT0FBQUYsU0FBQSxDQUFBMUMsSUFBQTtNQUFBO0lBQUEsR0FBQXdDLFFBQUE7RUFBQSxDQUNsRCxHQUFDO0VBRUZuQyxJQUFJLENBQUMseURBQXlELG1CQUFBckIsa0JBQUEsMEJBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQUFFLFNBQUEyRCxTQUFBO0lBQUEsSUFBQTFCLFVBQUE7SUFBQSxPQUFBbEMsWUFBQSxZQUFBSyxJQUFBLFVBQUF3RCxVQUFBQyxTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQXRELElBQUEsR0FBQXNELFNBQUEsQ0FBQXJELElBQUE7UUFBQTtVQUFBcUQsU0FBQSxDQUFBckQsSUFBQTtVQUFBLE9BQ3hEWixxQkFBcUIsQ0FBQyxDQUFDO1FBQUE7VUFFdkJxQyxVQUFVLEdBQUdoSSw2QkFBNkIsQ0FBQ08sSUFBSSxDQUFDNEgsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUNqRXpCLE1BQU0sQ0FBQ3NCLFVBQVUsQ0FBQzZCLGlCQUFpQixDQUFDLENBQUNoQixPQUFPLENBQUMsRUFBRSxDQUFDO1FBQUM7UUFBQTtVQUFBLE9BQUFlLFNBQUEsQ0FBQS9DLElBQUE7TUFBQTtJQUFBLEdBQUE2QyxRQUFBO0VBQUEsQ0FDbEQsR0FBQztFQUVGeEMsSUFBSSxDQUFDLCtDQUErQyxtQkFBQXJCLGtCQUFBLDBCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0FBRSxTQUFBK0QsU0FBQTtJQUFBLElBQUE5QixVQUFBO0lBQUEsT0FBQWxDLFlBQUEsWUFBQUssSUFBQSxVQUFBNEQsVUFBQUMsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUExRCxJQUFBLEdBQUEwRCxTQUFBLENBQUF6RCxJQUFBO1FBQUE7VUFBQXlELFNBQUEsQ0FBQXpELElBQUE7VUFBQSxPQUM5Q1oscUJBQXFCLENBQUMsQ0FBQztRQUFBO1VBRXZCcUMsVUFBVSxHQUFHaEksNkJBQTZCLENBQUNPLElBQUksQ0FBQzRILEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFDakV6QixNQUFNLEtBQUF1RCxRQUFBLGFBQVFqQyxVQUFVLENBQUN6RiwyQkFBMkIsRUFBQyxDQUFDOEYsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUFDO1FBQUE7VUFBQSxPQUFBMkIsU0FBQSxDQUFBbkQsSUFBQTtNQUFBO0lBQUEsR0FBQWlELFFBQUE7RUFBQSxDQUN4RSxHQUFDO0VBRUY1QyxJQUFJLENBQUMseURBQXlELG1CQUFBckIsa0JBQUEsMEJBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQUFFLFNBQUFtRSxTQUFBO0lBQUEsSUFBQWxDLFVBQUE7SUFBQSxPQUFBbEMsWUFBQSxZQUFBSyxJQUFBLFVBQUFnRSxVQUFBQyxTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQTlELElBQUEsR0FBQThELFNBQUEsQ0FBQTdELElBQUE7UUFBQTtVQUFBNkQsU0FBQSxDQUFBN0QsSUFBQTtVQUFBLE9BQ3hEWixxQkFBcUIsQ0FBQyxDQUFDO1FBQUE7VUFFdkJxQyxVQUFVLEdBQUdoSSw2QkFBNkIsQ0FBQ08sSUFBSSxDQUFDNEgsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUNqRUgsVUFBVSxDQUFDcUMsbUJBQW1CLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztVQUN0RDNELE1BQU0sQ0FBQzNDLGFBQWEsQ0FBQ3NCLGVBQWUsQ0FBQ0Msc0JBQXNCLENBQUMsQ0FBQ2dGLG9CQUFvQixDQUMvRSxDQUFDLEVBQ0QsT0FBTyxFQUNQLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FDWCxDQUFDO1FBQUM7UUFBQTtVQUFBLE9BQUFGLFNBQUEsQ0FBQXZELElBQUE7TUFBQTtJQUFBLEdBQUFxRCxRQUFBO0VBQUEsQ0FDSCxHQUFDO0VBRUZoRCxJQUFJLENBQUMsdURBQXVELG1CQUFBckIsa0JBQUEsMEJBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQUFFLFNBQUF3RSxTQUFBO0lBQUEsSUFBQXZDLFVBQUE7SUFBQSxPQUFBbEMsWUFBQSxZQUFBSyxJQUFBLFVBQUFxRSxVQUFBQyxTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQW5FLElBQUEsR0FBQW1FLFNBQUEsQ0FBQWxFLElBQUE7UUFBQTtVQUFBa0UsU0FBQSxDQUFBbEUsSUFBQTtVQUFBLE9BQ3REWixxQkFBcUIsQ0FBQyxDQUFDO1FBQUE7VUFFdkJxQyxVQUFVLEdBQUdoSSw2QkFBNkIsQ0FBQ08sSUFBSSxDQUFDNEgsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUNqRUgsVUFBVSxDQUFDMEMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1VBQ2hDaEUsTUFBTSxDQUFDM0MsYUFBYSxDQUFDc0IsZUFBZSxDQUFDRSxxQkFBcUIsQ0FBQyxDQUFDK0Usb0JBQW9CLENBQUMsRUFBRSxDQUFDO1FBQUM7UUFBQTtVQUFBLE9BQUFHLFNBQUEsQ0FBQTVELElBQUE7TUFBQTtJQUFBLEdBQUEwRCxRQUFBO0VBQUEsQ0FDdEYsR0FBQztFQUVGekQsUUFBUSxDQUFDLG9CQUFvQixFQUFFLFlBQU07SUFDbkMsSUFBTTZELFlBQVksR0FBQW5MLGFBQUEsQ0FBQUEsYUFBQSxLQUNidUUsYUFBYTtNQUNoQmxDLFFBQVEsRUFBRTtRQUNSc0MsU0FBUyxFQUFFLFFBQVE7UUFDbkJDLFNBQVMsRUFBRTtVQUNUd0csTUFBTSxFQUFFO1lBQ04xSixFQUFFLEVBQUUsUUFBUTtZQUNaa0MsS0FBSyxFQUFFLFlBQVk7WUFDbkI7WUFDQXlILElBQUksRUFBRSxFQUFFO1lBQ1JDLFdBQVcsRUFBRSxFQUFFO1lBQ2ZDLFNBQVMsRUFBRSxNQUFNO1lBQ2pCQyxLQUFLLEVBQUU7Y0FBQ0MsT0FBTyxFQUFFLENBQUM7Y0FBRUMsT0FBTyxFQUFFLENBQUMsQ0FBQztjQUFFdkcsTUFBTSxFQUFFO1lBQUU7VUFDN0M7UUFDRixDQUFDO1FBQ0RKLGNBQWMsRUFBRSxJQUFJO1FBQ3BCQyxXQUFXLEVBQUU7TUFDZjtJQUFDLEVBQ0Y7SUFFRDBDLElBQUksQ0FBQyxzREFBc0QsbUJBQUFyQixrQkFBQSwwQkFBQUMsWUFBQSxZQUFBQyxJQUFBLENBQUUsU0FBQW9GLFNBQUE7TUFBQSxJQUFBQyxzQkFBQSxFQUFBL0QsU0FBQTtNQUFBLE9BQUF2QixZQUFBLFlBQUFLLElBQUEsVUFBQWtGLFVBQUFDLFNBQUE7UUFBQSxrQkFBQUEsU0FBQSxDQUFBaEYsSUFBQSxHQUFBZ0YsU0FBQSxDQUFBL0UsSUFBQTtVQUFBO1lBQUErRSxTQUFBLENBQUEvRSxJQUFBO1lBQUEsT0FDakNaLHFCQUFxQixDQUFDZ0YsWUFBWSxDQUFDO1VBQUE7WUFBQVMsc0JBQUEsR0FBQUUsU0FBQSxDQUFBOUQsSUFBQTtZQUF0REgsU0FBUyxHQUFBK0Qsc0JBQUEsQ0FBVC9ELFNBQVM7WUFDaEJYLE1BQU0sQ0FBQ1csU0FBUyxDQUFDSSxhQUFhLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDQyxpQkFBaUIsQ0FBQyxDQUFDO1VBQUM7VUFBQTtZQUFBLE9BQUE0RCxTQUFBLENBQUF6RSxJQUFBO1FBQUE7TUFBQSxHQUFBc0UsUUFBQTtJQUFBLENBQzVFLEdBQUM7SUFFRmpFLElBQUksQ0FBQywrRUFBK0UsbUJBQUFyQixrQkFBQSwwQkFBQUMsWUFBQSxZQUFBQyxJQUFBLENBQUUsU0FBQXdGLFNBQUE7TUFBQSxJQUFBdkQsVUFBQSxFQUFBd0QsVUFBQSxFQUFBQyxPQUFBLEVBQUFDLE9BQUE7TUFBQSxPQUFBNUYsWUFBQSxZQUFBSyxJQUFBLFVBQUF3RixVQUFBQyxTQUFBO1FBQUEsa0JBQUFBLFNBQUEsQ0FBQXRGLElBQUEsR0FBQXNGLFNBQUEsQ0FBQXJGLElBQUE7VUFBQTtZQUFBcUYsU0FBQSxDQUFBckYsSUFBQTtZQUFBLE9BQzlFWixxQkFBcUIsQ0FBQ2dGLFlBQVksQ0FBQztVQUFBO1lBRW5DM0MsVUFBVSxHQUFHaEksNkJBQTZCLENBQUNPLElBQUksQ0FBQzRILEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0RxRCxVQUFVLEdBQUd4RCxVQUFVLENBQUNjLE9BQU8sQ0FBQ2pILFFBQVEsQ0FBQ3VDLFNBQVMsQ0FBQ3dHLE1BQU07WUFFL0RsRSxNQUFNLENBQUM4RSxVQUFVLENBQUNLLEdBQUcsQ0FBQyxDQUFDcEMsV0FBVyxDQUFDLENBQUM7WUFDcEMvQyxNQUFNLENBQUM4RSxVQUFVLENBQUNLLEdBQUcsQ0FBQyxDQUFDQyxPQUFPLENBQUMsMEJBQTBCLENBQUM7WUFFcERMLE9BQU8sR0FBR0QsVUFBVSxDQUFDSyxHQUFHLENBQUNFLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUM7WUFDOURMLE9BQU8sR0FBR00sSUFBSSxDQUFDQyxLQUFLLENBQUNDLGtCQUFrQixDQUFDVCxPQUFPLENBQUMsQ0FBQztZQUN2RC9FLE1BQU0sQ0FBQ2dGLE9BQU8sQ0FBQyxDQUFDN0MsT0FBTyxDQUFDO2NBQUNvQyxPQUFPLEVBQUUsQ0FBQztjQUFFQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2NBQUV2RyxNQUFNLEVBQUU7WUFBRSxDQUFDLENBQUM7VUFBQztVQUFBO1lBQUEsT0FBQWlILFNBQUEsQ0FBQS9FLElBQUE7UUFBQTtNQUFBLEdBQUEwRSxRQUFBO0lBQUEsQ0FDaEUsR0FBQztJQUVGckUsSUFBSSxDQUFDLG9FQUFvRSxtQkFBQXJCLGtCQUFBLDBCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0FBRSxTQUFBb0csVUFBQTtNQUFBLElBQUFDLFlBQUEsRUFBQXBFLFVBQUE7TUFBQSxPQUFBbEMsWUFBQSxZQUFBSyxJQUFBLFVBQUFrRyxXQUFBQyxVQUFBO1FBQUEsa0JBQUFBLFVBQUEsQ0FBQWhHLElBQUEsR0FBQWdHLFVBQUEsQ0FBQS9GLElBQUE7VUFBQTtZQUNuRTZGLFlBQVksR0FBQTVNLGFBQUEsQ0FBQUEsYUFBQSxLQUNidUUsYUFBYTtjQUNoQmxDLFFBQVEsRUFBRTtnQkFDUnNDLFNBQVMsRUFBRSxRQUFRO2dCQUNuQkMsU0FBUyxFQUFFO2tCQUNUd0csTUFBTSxFQUFFO29CQUNOMUosRUFBRSxFQUFFLFFBQVE7b0JBQ1oySyxHQUFHLEVBQUU7a0JBQ1A7Z0JBQ0YsQ0FBQztnQkFDRHRILGNBQWMsRUFBRSxJQUFJO2dCQUNwQkMsV0FBVyxFQUFFO2NBQ2Y7WUFBQztZQUFBOEgsVUFBQSxDQUFBL0YsSUFBQTtZQUFBLE9BR0daLHFCQUFxQixDQUFDeUcsWUFBWSxDQUFDO1VBQUE7WUFFbkNwRSxVQUFVLEdBQUdoSSw2QkFBNkIsQ0FBQ08sSUFBSSxDQUFDNEgsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRXpCLE1BQU0sQ0FBQ3NCLFVBQVUsQ0FBQ2MsT0FBTyxDQUFDakgsUUFBUSxDQUFDLENBQUN3RyxJQUFJLENBQUMrRCxZQUFZLENBQUN2SyxRQUFRLENBQUM7VUFBQztVQUFBO1lBQUEsT0FBQXlLLFVBQUEsQ0FBQXpGLElBQUE7UUFBQTtNQUFBLEdBQUFzRixTQUFBO0lBQUEsQ0FDakUsR0FBQztFQUNKLENBQUMsQ0FBQztFQUVGckYsUUFBUSxDQUFDLDhCQUE4QixFQUFFLFlBQU07SUFDN0MsU0FBU3lGLGlCQUFpQkEsQ0FBQSxFQUFHO01BQzNCLElBQU1DLE1BQU0sR0FBRztRQUNidEwsRUFBRSxFQUFFLGtCQUFrQjtRQUN0QlQsS0FBSyxFQUFFO1VBQUMwQyxNQUFNLEVBQUU7UUFBRSxDQUFDO1FBQ25CaEMsVUFBVSxFQUFFbEIsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztRQUNyQnVNLFFBQVEsRUFBRXhNLElBQUksQ0FBQ0MsRUFBRSxDQUFDLFVBQVV3TSxRQUFRLEVBQUU7VUFDcEMzTixNQUFNLENBQUM0TixNQUFNLENBQUNILE1BQU0sQ0FBQy9MLEtBQUssRUFBRWlNLFFBQVEsQ0FBQztRQUN2QyxDQUFDO01BQ0gsQ0FBQztNQUNELE9BQU9GLE1BQU07SUFDZjtJQUVBLFNBQVNJLG9CQUFvQkEsQ0FBQ0MsVUFBVSxFQUFrQjtNQUFBLElBQWhCQyxTQUFTLEdBQUFyTixTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBK0csU0FBQSxHQUFBL0csU0FBQSxNQUFHLENBQUMsQ0FBQztNQUN0RCxJQUFNK00sTUFBTSxHQUFHO1FBQ2J0TCxFQUFFLEVBQUUsT0FBTztRQUNYNkwsSUFBSSxFQUFFLFlBQVk7UUFDbEJDLFNBQVMsRUFBRSxJQUFJO1FBQ2Y3SyxVQUFVLEVBQUEzQyxhQUFBO1VBQ1IyRCxNQUFNLEVBQUUsRUFBRTtVQUNWOEosYUFBYSxFQUFFLElBQUk7VUFDbkJDLFNBQVMsRUFBRSxHQUFHO1VBQ2RDLFlBQVksRUFBRTtRQUFLLEdBQ2hCTCxTQUFTLENBQ2I7UUFDREQsVUFBVSxFQUFWQSxVQUFVO1FBQ1ZPLEtBQUssRUFBRW5OLElBQUksQ0FBQ0MsRUFBRSxDQUFDO01BQ2pCLENBQUM7TUFDRDtNQUNBc00sTUFBTSxDQUFDWSxLQUFLLENBQUNuTSxrQkFBa0IsQ0FBQztRQUFBLE9BQUF6QixhQUFBLENBQUFBLGFBQUEsS0FBV2dOLE1BQU07VUFBRVksS0FBSyxFQUFFWixNQUFNLENBQUNZO1FBQUs7TUFBQSxDQUFFLENBQUM7TUFDekUsT0FBT1osTUFBTTtJQUNmO0lBRUEsU0FBU2Esa0JBQWtCQSxDQUFDQyxTQUFTLEVBQUU7TUFDckMsT0FBQTlOLGFBQUEsQ0FBQUEsYUFBQSxLQUNLdUUsYUFBYTtRQUNoQlUsUUFBUSxFQUFBakYsYUFBQSxDQUFBQSxhQUFBLEtBQ0h1RSxhQUFhLENBQUNVLFFBQVE7VUFDekIyRSxPQUFPLEVBQUUsQ0FBQ2tFLFNBQVMsQ0FBQztVQUNwQkMsV0FBVyxFQUFFLENBQUNELFNBQVMsQ0FBQ3BNLEVBQUU7UUFBQztNQUM1QjtJQUVMO0lBRUFnRyxJQUFJLENBQUMsNkRBQTZELG1CQUFBckIsa0JBQUEsMEJBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQUFFLFNBQUF5SCxVQUFBO01BQUEsSUFBQVgsVUFBQSxFQUFBWSxrQkFBQSxFQUFBSCxTQUFBO01BQUEsT0FBQXhILFlBQUEsWUFBQUssSUFBQSxVQUFBdUgsV0FBQUMsVUFBQTtRQUFBLGtCQUFBQSxVQUFBLENBQUFySCxJQUFBLEdBQUFxSCxVQUFBLENBQUFwSCxJQUFBO1VBQUE7WUFDNURzRyxVQUFVLEdBQUdOLGlCQUFpQixDQUFDLENBQUM7WUFDaENrQixrQkFBa0IsR0FBR1osVUFBVSxDQUFDMUwsVUFBVTtZQUMxQ21NLFNBQVMsR0FBR1Ysb0JBQW9CLENBQUNDLFVBQVUsQ0FBQztZQUNsRGxNLHNCQUFzQixDQUFDc0csZUFBZSxDQUFDLENBQUM0RixVQUFVLENBQUMsQ0FBQztZQUFDYyxVQUFBLENBQUFwSCxJQUFBO1lBQUEsT0FFL0NaLHFCQUFxQixDQUFDMEgsa0JBQWtCLENBQUNDLFNBQVMsQ0FBQyxDQUFDO1VBQUE7WUFFMUQ1RyxNQUFNLENBQUNtRyxVQUFVLENBQUMxTCxVQUFVLENBQUMsQ0FBQ3lNLEdBQUcsQ0FBQ3ZGLElBQUksQ0FBQ29GLGtCQUFrQixDQUFDO1VBQUM7VUFBQTtZQUFBLE9BQUFFLFVBQUEsQ0FBQTlHLElBQUE7UUFBQTtNQUFBLEdBQUEyRyxTQUFBO0lBQUEsQ0FDNUQsR0FBQztJQUVGdEcsSUFBSSxDQUFDLHFEQUFxRCxtQkFBQXJCLGtCQUFBLDBCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0FBRSxTQUFBOEgsVUFBQTtNQUFBLElBQUFoQixVQUFBLEVBQUFTLFNBQUE7TUFBQSxPQUFBeEgsWUFBQSxZQUFBSyxJQUFBLFVBQUEySCxXQUFBQyxVQUFBO1FBQUEsa0JBQUFBLFVBQUEsQ0FBQXpILElBQUEsR0FBQXlILFVBQUEsQ0FBQXhILElBQUE7VUFBQTtZQUNwRHNHLFVBQVUsR0FBR04saUJBQWlCLENBQUMsQ0FBQztZQUN0Q00sVUFBVSxDQUFDcE0sS0FBSyxDQUFDMEMsTUFBTSxHQUFHLEVBQUU7WUFDdEJtSyxTQUFTLEdBQUdWLG9CQUFvQixDQUFDQyxVQUFVLEVBQUU7Y0FBQzFKLE1BQU0sRUFBRTtZQUFFLENBQUMsQ0FBQztZQUNoRXhDLHNCQUFzQixDQUFDc0csZUFBZSxDQUFDLENBQUM0RixVQUFVLENBQUMsQ0FBQztZQUFDa0IsVUFBQSxDQUFBeEgsSUFBQTtZQUFBLE9BRS9DWixxQkFBcUIsQ0FBQzBILGtCQUFrQixDQUFDQyxTQUFTLENBQUMsQ0FBQztVQUFBO1lBRTFEO1lBQ0FULFVBQVUsQ0FBQzFMLFVBQVUsQ0FBQzZNLElBQUksQ0FBQ25CLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQzs7WUFFMUM7WUFDQW5HLE1BQU0sQ0FBQ21HLFVBQVUsQ0FBQ3BNLEtBQUssQ0FBQzBDLE1BQU0sQ0FBQyxDQUFDa0YsSUFBSSxDQUFDLEVBQUUsQ0FBQztVQUFDO1VBQUE7WUFBQSxPQUFBMEYsVUFBQSxDQUFBbEgsSUFBQTtRQUFBO01BQUEsR0FBQWdILFNBQUE7SUFBQSxDQUMxQyxHQUFDO0lBRUYzRyxJQUFJLENBQUMsdURBQXVELG1CQUFBckIsa0JBQUEsMEJBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQUFFLFNBQUFrSSxVQUFBO01BQUEsSUFBQXBCLFVBQUEsRUFBQVMsU0FBQTtNQUFBLE9BQUF4SCxZQUFBLFlBQUFLLElBQUEsVUFBQStILFdBQUFDLFVBQUE7UUFBQSxrQkFBQUEsVUFBQSxDQUFBN0gsSUFBQSxHQUFBNkgsVUFBQSxDQUFBNUgsSUFBQTtVQUFBO1lBQ3REc0csVUFBVSxHQUFHTixpQkFBaUIsQ0FBQyxDQUFDO1lBQ2hDZSxTQUFTLEdBQUdWLG9CQUFvQixDQUFDQyxVQUFVLEVBQUU7Y0FBQ0ksYUFBYSxFQUFFO1lBQUssQ0FBQyxDQUFDO1lBQzFFdE0sc0JBQXNCLENBQUNzRyxlQUFlLENBQUMsQ0FBQzRGLFVBQVUsQ0FBQyxDQUFDO1lBQUNzQixVQUFBLENBQUE1SCxJQUFBO1lBQUEsT0FFL0NaLHFCQUFxQixDQUFDMEgsa0JBQWtCLENBQUNDLFNBQVMsQ0FBQyxDQUFDO1VBQUE7WUFFMURULFVBQVUsQ0FBQ3BNLEtBQUssQ0FBQzBDLE1BQU0sR0FBRyxFQUFFO1lBQzVCMEosVUFBVSxDQUFDMUwsVUFBVSxDQUFDNk0sSUFBSSxDQUFDbkIsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDOztZQUUxQztZQUNBbkcsTUFBTSxDQUFDbUcsVUFBVSxDQUFDcE0sS0FBSyxDQUFDMEMsTUFBTSxDQUFDLENBQUNrRixJQUFJLENBQUMsRUFBRSxDQUFDO1VBQUM7VUFBQTtZQUFBLE9BQUE4RixVQUFBLENBQUF0SCxJQUFBO1FBQUE7TUFBQSxHQUFBb0gsU0FBQTtJQUFBLENBQzFDLEdBQUM7SUFFRi9HLElBQUksQ0FBQyx5Q0FBeUMsbUJBQUFyQixrQkFBQSwwQkFBQUMsWUFBQSxZQUFBQyxJQUFBLENBQUUsU0FBQXFJLFVBQUE7TUFBQSxJQUFBdkIsVUFBQSxFQUFBUyxTQUFBLEVBQUFlLHNCQUFBLEVBQUFDLE9BQUEsRUFBQUMsaUJBQUE7TUFBQSxPQUFBekksWUFBQSxZQUFBSyxJQUFBLFVBQUFxSSxXQUFBQyxVQUFBO1FBQUEsa0JBQUFBLFVBQUEsQ0FBQW5JLElBQUEsR0FBQW1JLFVBQUEsQ0FBQWxJLElBQUE7VUFBQTtZQUN4Q3NHLFVBQVUsR0FBR04saUJBQWlCLENBQUMsQ0FBQztZQUNoQ2UsU0FBUyxHQUFHVixvQkFBb0IsQ0FBQ0MsVUFBVSxDQUFDO1lBQ2xEbE0sc0JBQXNCLENBQUNzRyxlQUFlLENBQUMsQ0FBQzRGLFVBQVUsQ0FBQyxDQUFDO1lBQUM0QixVQUFBLENBQUFsSSxJQUFBO1lBQUEsT0FFN0JaLHFCQUFxQixDQUFDMEgsa0JBQWtCLENBQUNDLFNBQVMsQ0FBQyxDQUFDO1VBQUE7WUFBQWUsc0JBQUEsR0FBQUksVUFBQSxDQUFBakgsSUFBQTtZQUFyRThHLE9BQU8sR0FBQUQsc0JBQUEsQ0FBUEMsT0FBTztZQUVkO1lBQ01DLGlCQUFpQixHQUFHMUIsVUFBVSxDQUFDMUwsVUFBVSxFQUMvQztZQUNBdUYsTUFBTSxDQUFDNkgsaUJBQWlCLENBQUMsQ0FBQ1gsR0FBRyxDQUFDdkYsSUFBSSxDQUFDd0UsVUFBVSxDQUFDMUwsVUFBVSxDQUFDdU4sSUFBSSxDQUFDN0IsVUFBVSxDQUFDLENBQUM7WUFFMUV5QixPQUFPLENBQUMsQ0FBQzs7WUFFVDtZQUNBO1lBQ0F6QixVQUFVLENBQUNwTSxLQUFLLENBQUMwQyxNQUFNLEdBQUcsRUFBRTtZQUM1QjBKLFVBQVUsQ0FBQzFMLFVBQVUsQ0FBQzZNLElBQUksQ0FBQ25CLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxQztZQUNBbkcsTUFBTSxDQUFDbUcsVUFBVSxDQUFDcE0sS0FBSyxDQUFDMEMsTUFBTSxDQUFDLENBQUNrRixJQUFJLENBQUMsRUFBRSxDQUFDO1VBQUM7VUFBQTtZQUFBLE9BQUFvRyxVQUFBLENBQUE1SCxJQUFBO1FBQUE7TUFBQSxHQUFBdUgsU0FBQTtJQUFBLENBQzFDLEdBQUM7RUFDSixDQUFDLENBQUM7RUFFRnRILFFBQVEsQ0FBQyw2QkFBNkIsRUFBRSxZQUFNO0lBQzVDLElBQU02SCxVQUFVLEdBQUc7TUFDakJ6TixFQUFFLEVBQUUsZ0JBQWdCO01BQ3BCNkwsSUFBSSxFQUFFLGtCQUFrQjtNQUN4QkMsU0FBUyxFQUFFLElBQUk7TUFDZkksS0FBSyxFQUFFbk4sSUFBSSxDQUFDQyxFQUFFLENBQUM7UUFBQSxPQUFBVixhQUFBLENBQUFBLGFBQUEsS0FBV21QLFVBQVU7VUFBRXZCLEtBQUssRUFBRXVCLFVBQVUsQ0FBQ3ZCO1FBQUs7TUFBQSxDQUFFO0lBQ2pFLENBQUM7SUFFRCxTQUFTd0IsZ0JBQWdCQSxDQUFDeEYsT0FBTyxFQUFFO01BQ2pDLE9BQUE1SixhQUFBLENBQUFBLGFBQUEsS0FDS3VFLGFBQWE7UUFDaEJVLFFBQVEsRUFBQWpGLGFBQUEsQ0FBQUEsYUFBQSxLQUNIdUUsYUFBYSxDQUFDVSxRQUFRO1VBQ3pCMkUsT0FBTyxFQUFQQSxPQUFPO1VBQ1BtRSxXQUFXLEVBQUVuRSxPQUFPLENBQUN0RyxHQUFHLENBQUMsVUFBQWxFLENBQUM7WUFBQSxPQUFJQSxDQUFDLENBQUNzQyxFQUFFO1VBQUE7UUFBQztNQUNwQztJQUVMO0lBRUFnRyxJQUFJLENBQUMsOEVBQThFLG1CQUFBckIsa0JBQUEsMEJBQUFDLFlBQUEsWUFBQUMsSUFBQSxDQUFFLFNBQUE4SSxVQUFBO01BQUEsSUFBQUMsZ0JBQUEsRUFBQTlHLFVBQUEsRUFBQW9CLE9BQUE7TUFBQSxPQUFBdEQsWUFBQSxZQUFBSyxJQUFBLFVBQUE0SSxXQUFBQyxVQUFBO1FBQUEsa0JBQUFBLFVBQUEsQ0FBQTFJLElBQUEsR0FBQTBJLFVBQUEsQ0FBQXpJLElBQUE7VUFBQTtZQUM3RXVJLGdCQUFnQixHQUFHO2NBQUM1TixFQUFFLEVBQUUsVUFBVTtjQUFFK04sTUFBTSxFQUFFO1lBQUksQ0FBQztZQUN2RHRPLHNCQUFzQixDQUFDc0csZUFBZSxDQUFDLENBQUM2SCxnQkFBZ0IsQ0FBQyxDQUFDO1lBQUNFLFVBQUEsQ0FBQXpJLElBQUE7WUFBQSxPQUVyRFoscUJBQXFCLENBQUNpSixnQkFBZ0IsQ0FBQyxDQUFDRCxVQUFVLENBQUMsQ0FBQyxDQUFDO1VBQUE7WUFFckQzRyxVQUFVLEdBQUdoSSw2QkFBNkIsQ0FBQ08sSUFBSSxDQUFDNEgsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRGlCLE9BQU8sR0FBR3BCLFVBQVUsQ0FBQ2tCLFNBQVMsQ0FBQ0UsT0FBTztZQUU1QzFDLE1BQU0sQ0FBQzBDLE9BQU8sQ0FBQzFKLE1BQU0sQ0FBQyxDQUFDMkksSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM5QjNCLE1BQU0sQ0FBQzBDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDZixJQUFJLENBQUN5RyxnQkFBZ0IsQ0FBQztZQUN6Q3BJLE1BQU0sQ0FBQzBDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQ2xJLEVBQUUsQ0FBQyxDQUFDbUgsSUFBSSxDQUFDLDJCQUEyQixDQUFDO1lBQ3ZEM0IsTUFBTSxDQUFDMUYsb0NBQTJCLENBQUMsQ0FBQzJGLGdCQUFnQixDQUFDLENBQUM7VUFBQztVQUFBO1lBQUEsT0FBQXFJLFVBQUEsQ0FBQW5JLElBQUE7UUFBQTtNQUFBLEdBQUFnSSxTQUFBO0lBQUEsQ0FDeEQsR0FBQztJQUVGM0gsSUFBSSxDQUFDLGtGQUFrRixtQkFBQXJCLGtCQUFBLDBCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0FBRSxTQUFBbUosVUFBQTtNQUFBLElBQUFKLGdCQUFBLEVBQUFLLGlCQUFBLEVBQUFuSCxVQUFBLEVBQUFvQixPQUFBO01BQUEsT0FBQXRELFlBQUEsWUFBQUssSUFBQSxVQUFBaUosV0FBQUMsVUFBQTtRQUFBLGtCQUFBQSxVQUFBLENBQUEvSSxJQUFBLEdBQUErSSxVQUFBLENBQUE5SSxJQUFBO1VBQUE7WUFDakZ1SSxnQkFBZ0IsR0FBRztjQUFDNU4sRUFBRSxFQUFFLFVBQVU7Y0FBRStOLE1BQU0sRUFBRTtZQUFJLENBQUM7WUFDakRFLGlCQUFpQixHQUFHO2NBQUNqTyxFQUFFLEVBQUUsS0FBSztjQUFFQyxVQUFVLEVBQUVsQixJQUFJLENBQUNDLEVBQUUsQ0FBQztZQUFDLENBQUM7WUFDNURTLHNCQUFzQixDQUFDc0csZUFBZSxDQUFDLENBQUM2SCxnQkFBZ0IsRUFBRUssaUJBQWlCLENBQUMsQ0FBQztZQUFDRSxVQUFBLENBQUE5SSxJQUFBO1lBQUEsT0FFeEVaLHFCQUFxQixDQUFDaUosZ0JBQWdCLENBQUMsQ0FBQ0QsVUFBVSxDQUFDLENBQUMsQ0FBQztVQUFBO1lBRXJEM0csVUFBVSxHQUFHaEksNkJBQTZCLENBQUNPLElBQUksQ0FBQzRILEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0RpQixPQUFPLEdBQUdwQixVQUFVLENBQUNrQixTQUFTLENBQUNFLE9BQU87WUFFNUMxQyxNQUFNLENBQUMwQyxPQUFPLENBQUMxSixNQUFNLENBQUMsQ0FBQzJJLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDOUIzQixNQUFNLENBQUMwQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ2YsSUFBSSxDQUFDeUcsZ0JBQWdCLENBQUM7WUFDekNwSSxNQUFNLENBQUMwQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ2YsSUFBSSxDQUFDOEcsaUJBQWlCLENBQUM7WUFDMUN6SSxNQUFNLENBQUMwQyxPQUFPLENBQUNrRyxLQUFLLENBQUMsVUFBQTFRLENBQUM7Y0FBQSxPQUFJQSxDQUFDLENBQUNzQyxFQUFFLEtBQUssMkJBQTJCO1lBQUEsRUFBQyxDQUFDLENBQUNtSCxJQUFJLENBQUMsSUFBSSxDQUFDO1VBQUM7VUFBQTtZQUFBLE9BQUFnSCxVQUFBLENBQUF4SSxJQUFBO1FBQUE7TUFBQSxHQUFBcUksU0FBQTtJQUFBLENBQzdFLEdBQUM7SUFFRmhJLElBQUksQ0FBQyx1RUFBdUUsbUJBQUFyQixrQkFBQSwwQkFBQUMsWUFBQSxZQUFBQyxJQUFBLENBQUUsU0FBQXdKLFVBQUE7TUFBQSxJQUFBQyxlQUFBLEVBQUF4SCxVQUFBLEVBQUFvQixPQUFBO01BQUEsT0FBQXRELFlBQUEsWUFBQUssSUFBQSxVQUFBc0osV0FBQUMsVUFBQTtRQUFBLGtCQUFBQSxVQUFBLENBQUFwSixJQUFBLEdBQUFvSixVQUFBLENBQUFuSixJQUFBO1VBQUE7WUFDdEVpSixlQUFlLEdBQUc7Y0FBQ3RPLEVBQUUsRUFBRSxVQUFVO2NBQUUrTixNQUFNLEVBQUU7WUFBSyxDQUFDO1lBQ3ZEdE8sc0JBQXNCLENBQUNzRyxlQUFlLENBQUMsQ0FBQ3VJLGVBQWUsQ0FBQyxDQUFDO1lBQUNFLFVBQUEsQ0FBQW5KLElBQUE7WUFBQSxPQUVwRFoscUJBQXFCLENBQUNpSixnQkFBZ0IsQ0FBQyxDQUFDRCxVQUFVLENBQUMsQ0FBQyxDQUFDO1VBQUE7WUFFckQzRyxVQUFVLEdBQUdoSSw2QkFBNkIsQ0FBQ08sSUFBSSxDQUFDNEgsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRGlCLE9BQU8sR0FBR3BCLFVBQVUsQ0FBQ2tCLFNBQVMsQ0FBQ0UsT0FBTztZQUU1QzFDLE1BQU0sQ0FBQzBDLE9BQU8sQ0FBQzFKLE1BQU0sQ0FBQyxDQUFDMkksSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM5QjNCLE1BQU0sQ0FBQzBDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDZixJQUFJLENBQUNtSCxlQUFlLENBQUM7VUFBQztVQUFBO1lBQUEsT0FBQUUsVUFBQSxDQUFBN0ksSUFBQTtRQUFBO01BQUEsR0FBQTBJLFNBQUE7SUFBQSxDQUMxQyxHQUFDO0VBQ0osQ0FBQyxDQUFDO0VBRUZ6SSxRQUFRLENBQUMseUJBQXlCLEVBQUUsWUFBTTtJQUN4QyxJQUFNNkksV0FBVyxHQUFHQyxNQUFNLENBQUNDLGdCQUFnQjtJQUUzQ0MsU0FBUyxDQUFDLFlBQU07TUFDZC9RLE1BQU0sQ0FBQ2dCLGNBQWMsQ0FBQzZQLE1BQU0sRUFBRSxrQkFBa0IsRUFBRTtRQUNoREcsWUFBWSxFQUFFLElBQUk7UUFDbEIxUSxVQUFVLEVBQUUsSUFBSTtRQUNoQjJRLFFBQVEsRUFBRSxJQUFJO1FBQ2R0TixLQUFLLEVBQUVpTjtNQUNULENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGekksSUFBSSxDQUFDLGtFQUFrRSxtQkFBQXJCLGtCQUFBLDBCQUFBQyxZQUFBLFlBQUFDLElBQUEsQ0FBRSxTQUFBa0ssVUFBQTtNQUFBLElBQUFDLHNCQUFBLEVBQUE1QixPQUFBLEVBQUE5RixnQkFBQTtNQUFBLE9BQUExQyxZQUFBLFlBQUFLLElBQUEsVUFBQWdLLFdBQUFDLFVBQUE7UUFBQSxrQkFBQUEsVUFBQSxDQUFBOUosSUFBQSxHQUFBOEosVUFBQSxDQUFBN0osSUFBQTtVQUFBO1lBQUE2SixVQUFBLENBQUE3SixJQUFBO1lBQUEsT0FDL0NaLHFCQUFxQixDQUFDLENBQUM7VUFBQTtZQUFBdUssc0JBQUEsR0FBQUUsVUFBQSxDQUFBNUksSUFBQTtZQUF4QzhHLE9BQU8sR0FBQTRCLHNCQUFBLENBQVA1QixPQUFPO1lBQ1A5RixnQkFBZ0IsR0FBSXhJLDZCQUE2QixDQUFDTyxJQUFJLENBQUM0SCxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQWxFSyxnQkFBZ0I7WUFFdkI5QixNQUFNLENBQUNrSixNQUFNLENBQUNDLGdCQUFnQixDQUFDLENBQUN4SCxJQUFJLENBQUMsSUFBSSxHQUFHRyxnQkFBZ0IsQ0FBQztZQUU3RG9ILE1BQU0sQ0FBQ0MsZ0JBQWdCLEdBQUcsQ0FBQztZQUMzQm5KLE1BQU0sQ0FBQ2tKLE1BQU0sQ0FBQ0MsZ0JBQWdCLENBQUMsQ0FBQ3hILElBQUksQ0FBQyxJQUFJLEdBQUdHLGdCQUFnQixDQUFDO1lBRTdEOEYsT0FBTyxDQUFDLENBQUM7WUFDVDVILE1BQU0sQ0FBQ2tKLE1BQU0sQ0FBQ0MsZ0JBQWdCLENBQUMsQ0FBQ3hILElBQUksQ0FBQ3NILFdBQVcsQ0FBQztVQUFDO1VBQUE7WUFBQSxPQUFBUyxVQUFBLENBQUF2SixJQUFBO1FBQUE7TUFBQSxHQUFBb0osU0FBQTtJQUFBLENBQ25ELEdBQUM7RUFDSixDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=