@agilemotion/oui-react-js 2.0.4 → 2.0.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.
@@ -230,6 +230,14 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
230
230
  }
231
231
  updateScrollBarPadding();
232
232
  rowCount.current = rows.length;
233
+ // Sync the ref that backs the `get rows` getter — otherwise
234
+ // api.rows returns whatever rowsRef was at last sync (often
235
+ // empty after a previous clear()), even though the local
236
+ // `rows` array has been mutated. clear() does this; data load
237
+ // does this; addRows/deleteSelectedRows didn't — leading to
238
+ // TransferList's transfer-all-back failing because api.rows
239
+ // showed empty right after a transfer-all-out.
240
+ rowsRef.current = rows;
233
241
  valueChangeCallback(rows);
234
242
  return rows;
235
243
  },
@@ -240,6 +248,24 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
240
248
  let event = new _Event.default(props.handle, props.viewId, getSelectedRows([]));
241
249
  _Observable.default.fireEvent(_EventType.default.SELECTION_CHANGE, event);
242
250
  },
251
+ // Surgical delete by row ids — does NOT touch the selection state.
252
+ // Counterpart to deleteSelectedRows for cases (TransferList double-
253
+ // click) where the caller wants to remove specific rows without
254
+ // hijacking the user's current grid selection.
255
+ deleteRows: rowIds => {
256
+ if (!rowIds || rowIds.length === 0) return rows;
257
+ const idSet = new Set(rowIds);
258
+ const remaining = rows.filter(row => !idSet.has(row.id));
259
+ rows.splice(0, rows.length);
260
+ for (const row of remaining) {
261
+ rows.push(row);
262
+ }
263
+ updateScrollBarPadding();
264
+ rowCount.current = rows.length;
265
+ rowsRef.current = rows;
266
+ valueChangeCallback(rows);
267
+ return rows;
268
+ },
243
269
  select: rows => {
244
270
  setSelected(rows);
245
271
  },
@@ -259,6 +285,10 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
259
285
  }
260
286
  updateScrollBarPadding();
261
287
  rowCount.current = rows.length;
288
+ // See deleteSelectedRows for the rationale — keep rowsRef in
289
+ // sync with the mutated local rows array so the `get rows`
290
+ // getter returns current data after addRows.
291
+ rowsRef.current = rows;
262
292
  valueChangeCallback(rows);
263
293
  return rows;
264
294
  },
@@ -810,7 +840,7 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
810
840
  margin: '0',
811
841
  border: '1px solid #e2e2e2',
812
842
  borderRadius: '4px'
813
- }, props.config) : props.style
843
+ }, props.config) : _Utils.default.mergeStyles({}, props.config)
814
844
  }, !_Utils.default.isNull(props.config.notes) ? props.config.notes.map(note => {
815
845
  return /*#__PURE__*/_react.default.createElement("div", {
816
846
  key: noteKey++,
@@ -923,6 +953,7 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
923
953
  onMouseEnter: () => handleRowMouseEnter(row),
924
954
  onMouseLeave: handleRowMouseLeave,
925
955
  onClick: event => handleClick(event, row, index),
956
+ onDoubleClick: event => props.onRowDoubleClick && props.onRowDoubleClick(row, event),
926
957
  role: "checkbox",
927
958
  "aria-checked": isItemSelected,
928
959
  tabIndex: -1,
@@ -1004,4 +1035,4 @@ const DataGrid = exports.DataGrid = /*#__PURE__*/_react.default.memo(props => {
1004
1035
  onRowsPerPageChange: handleChangeRowsPerPage
1005
1036
  })) : null) : null);
1006
1037
  });
1007
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHlsZXMiLCJfcmVhY3RTdXBlclJlc3BvbnNpdmVUYWJsZSIsIl9DaGVja2JveCIsIl9VdGlscyIsIl9SZXN0U2VydmljZSIsIl9EYXRhR3JpZEZpbHRlciIsIl9EYXRhR3JpZEhlYWRpbmciLCJfVGFibGVDZWxsQ29udGVudCIsIl9UYWJsZVBhZ2luYXRpb24iLCJfY29sb3JzIiwiX0V2ZW50IiwiX09ic2VydmFibGUiLCJfRXZlbnRUeXBlIiwiX0dyaWQiLCJfQnV0dG9uIiwiJCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX0FsZXJ0IiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9MYXlvdXQiLCJfRHluYW1pY0pTIiwiX1N3aXRjaCIsIl9Gb3JtQ29udHJvbExhYmVsIiwiX0dyYWJDb250ZXh0IiwiX0N1cnNvck92ZXJsYXkiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJNVUxUSV9TRUxFQ1RfQ0hFQ0tCT1hfQ09MX1dJRFRIIiwiZXhwb3J0cyIsImV2YWx1YXRlVGFibGVDZWxsV2lkdGgiLCJtdWx0aVNlbGVjdCIsImNvbHVtbiIsImNvbHVtbkNvdW50Iiwid2lkdGgiLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJpc0V4cHJlc3Npb24iLCJhdHRyaWJ1dGVzIiwiZHluYW1pY0pTIiwiZXhlY3V0ZVNjcmlwdCIsImNvbmNhdCIsImlkIiwiVXRpbHMiLCJpc051bGwiLCJkZXNjIiwiYSIsImIiLCJvcmRlckJ5Iiwic3RhYmxlU29ydCIsImFycmF5IiwiY21wIiwic3RhYmlsaXplZFRoaXMiLCJtYXAiLCJlbCIsImluZGV4Iiwic29ydCIsIm9yZGVyIiwiZ2V0U29ydGluZyIsInVzZVN0eWxlcyIsIm1ha2VTdHlsZXMiLCJ0aGVtZSIsInJvb3QiLCJtYXJnaW5Ub3AiLCJzcGFjaW5nIiwicGFwZXIiLCJoZWlnaHQiLCJwb3NpdGlvbiIsInpJbmRleCIsInNjcm9sbFBhZGRpbmciLCJwYWRkaW5nIiwibm9TY3JvbGxQYWRkaW5nIiwidGFibGVCb2R5IiwiZGlzcGxheSIsIm92ZXJmbG93WSIsInRhYmxlU2VsZWN0ZWQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJncmV5MzAwIiwiYmFja2dyb3VuZCIsInRhYmxlUm93IiwidGFibGVXcmFwcGVyIiwidGFibGUiLCJ2aXN1YWxseUhpZGRlbiIsImJvcmRlciIsImNsaXAiLCJtYXJnaW4iLCJ0b3AiLCJEYXRhR3JpZCIsIlJlYWN0IiwibWVtbyIsInByb3BzIiwiX2NvbmZpZyRhdHRyaWJ1dGVzIiwiX3Byb3BzJGNvbmZpZyRhdHRyaWJ1IiwiX3Byb3BzJGNvbmZpZyRhdHRyaWJ1MiIsIl9wcm9wcyRjb25maWckYXR0cmlidTMiLCJjbGFzc2VzIiwic2V0T3JkZXIiLCJ1c2VTdGF0ZSIsImNvbmZpZyIsInBhcnNlQ29uZmlnIiwidmlld0lkIiwic2V0T3JkZXJCeSIsInNlbGVjdGVkIiwic2V0U2VsZWN0ZWQiLCJ0b3RhbE51bWJlck9mUm93cyIsInNldFRvdGFsTnVtYmVyT2ZSb3dzIiwiY3JpdGVyaWEiLCJwYWdlIiwic2V0UGFnZSIsInJvd3MiLCJzZXRSb3dzIiwiZGVsZXRlZFJvd3MiLCJzZXREZWxldGVkUm93cyIsImVkaXRhYmxlIiwic2V0RWRpdGFibGUiLCJzY3JvbGxXaWR0aCIsInNldFNjcm9sbFdpZHRoIiwicm93c1BlclBhZ2VPcHRpb25zIiwicm93c1BlclBhZ2VMb2FkaW5nIiwic2V0Um93c1BlclBhZ2VMb2FkaW5nIiwicm93c1BlclBhZ2UiLCJzZXRSb3dzUGVyUGFnZSIsInBhZ2VTaXplIiwiaGlnaGxpZ2h0Um93U2VsZWN0aW9uIiwidXNlUmVmIiwiZGlzYWJsZVJvd1NlbGVjdGlvbiIsImNlbGxzIiwiaGVhZGluZ0hhbmRsZSIsImZpbHRlckhhbmRsZSIsImNvbHVtbkxheW91dEhhbmRsZXMiLCJlZGl0b3JIYW5kbGVzIiwicm93RXJyb3JNYXAiLCJ2aXNpYmxlIiwic2V0VmlzaWJsZSIsIndyYXAiLCJzZXRXcmFwIiwicm93Q291bnQiLCJyb3dzUmVmIiwibm90ZUtleSIsImNvbHVtbldpZHRocyIsImRyYWdTcGVjIiwicm93R3JhYlNwZWMiLCJyb3ciLCJyb3dzR3JhYmJhYmxlIiwiZW5hYmxlZCIsImFwaSIsInBhcmFtZXRlcnMiLCJpc0ZpbHRlcmFibGUiLCJnZXRQYXJhbWV0ZXJzIiwic2VsZWN0aW9uIiwic2VsZWN0ZWRSb3dzIiwibGVuZ3RoIiwiaiIsInB1c2giLCJjb2x1bW5EYXRhQmluZGluZ3MiLCJjb2x1bW5OYW1lcyIsImNvbHVtbnMiLCJkYXRhQmluZGluZyIsImdldENoaWxkcmVuIiwiY2hpbGRyZW4iLCJjaGlsZCIsInByb3BlcnRpZXMiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwicHJvcGVydHkiLCJjb2x1bW5MYXlvdXRIYW5kbGUiLCJtb3JlQ2hpbGRyZW4iLCJlZGl0b3JIYW5kbGUiLCJsb2FkRGF0YSIsImFjdGlvbkNvbmZpZyIsImV2ZW50Iiwic2VhcmNoIiwiZGVsZXRlU2VsZWN0ZWRSb3dzIiwibmV3Um93cyIsImZpbHRlciIsImlzU2VsZWN0ZWQiLCJnZXRTZWxlY3RlZFJvd3MiLCJzcGxpY2UiLCJuZXdSb3ciLCJvblNlbGVjdGlvbkNoYW5nZSIsInVwZGF0ZVNjcm9sbEJhclBhZGRpbmciLCJjdXJyZW50IiwidmFsdWVDaGFuZ2VDYWxsYmFjayIsImNsZWFyIiwiRXZlbnQiLCJoYW5kbGUiLCJldmVudE1hbmFnZXIiLCJmaXJlRXZlbnQiLCJFdmVudFR5cGUiLCJTRUxFQ1RJT05fQ0hBTkdFIiwic2VsZWN0IiwiYWRkUm93cyIsIm9ic2VydmVSb3ciLCJuZXdTZWxlY3Rpb24iLCJudW1iZXJPZlBhZ2VzIiwicmVmcmVzaCIsInBhcnNlZENvbmZpZyIsImV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24iLCJmb3JtQXBpIiwiaGFuZGxlUm93R3JhYlRvZ2dsZSIsImlzUm93R3JhYmJhYmxlIiwiR3JhYkNvbnRleHQiLCJpc0FjdGl2ZSIsImdyYWIiLCJyb3dJbmRleCIsImNvbXBvbmVudElkIiwiQ3Vyc29yT3ZlcmxheSIsInNob3ciLCJST1dfR1JBQl9TVEFSVCIsInRib2R5IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsIm9mZnNldFdpZHRoIiwiY2xpZW50V2lkdGgiLCJ3aW5kb3ciLCJvbnJlc2l6ZSIsImhhbmRsZVJlcXVlc3RTb3J0IiwiaXNEZXNjIiwiaGFuZGxlU2VsZWN0QWxsQ2xpY2siLCJ0YXJnZXQiLCJjaGVja2VkIiwibmV3U2VsZWN0ZWRzIiwibmFtZSIsImVuYWJsZUZvcm1NYXJrZXJzIiwiZG9IYW5kbGVDbGljayIsInNlbGVjdGVkSW5kZXgiLCJpbmRleE9mIiwibmV3U2VsZWN0ZWQiLCJzbGljZSIsImZpcmVTZWxlY3Rpb25FdmVudCIsImdyaWRUeXBlIiwiaXNSb3dEcmFnRGlzYWJsZWQiLCJkaXNhYmxlZFdoZW4iLCJleGVjdXRlU2NyaXB0T2JqZWN0Iiwic2V0Q3Vyc29yIiwiY3Vyc29yIiwiYm9keSIsInN0eWxlIiwiaGFuZGxlUm93TW91c2VFbnRlciIsImhhbmRsZVJvd01vdXNlTGVhdmUiLCJoYW5kbGVDbGljayIsImNsb3Nlc3QiLCJzdG9wUHJvcGFnYXRpb24iLCJvbkNlbGxTZWxlY3Rpb25DaGFuZ2UiLCJoYW5kbGVDZWxsQ2xpY2siLCJmaWVsZFR5cGUiLCJoYW5kbGVDaGFuZ2VQYWdlIiwibmV3UGFnZSIsImN1cnJlbnRQYWdlIiwiaGFuZGxlQ2hhbmdlUm93c1BlclBhZ2UiLCJ2YWx1ZSIsInByb2Nlc3NEYXRhIiwiZGF0YSIsImNvbmYiLCJ0b3RhbE51bWJlck9mUmVjb3JkcyIsInJlY29yZHMiLCJ1cGRhdGVSb3dDbGFzc2VzIiwidGFibGVSb3dzIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwic2VydmljZSIsImRhdGFTZXJ2aWNlIiwic2VydmljZVR5cGUiLCJ0eXBlIiwibWV0aG9kIiwiaW52b2tlUnBjIiwiaW52b2tlUmVzdCIsImNvbXBvbmVudCIsInRoZW4iLCJyZXN1bHQiLCJjYXRjaCIsImNvbnNvbGUiLCJlcnJvciIsImVycm9yVHlwZSIsInB1Ymxpc2hFcnJvck1lc3NhZ2UiLCJFcnJvciIsInJlc29sdmVQYXJhbWV0ZXJDb25maWdWYWx1ZSIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsImV2ZW50SGFuZGxpbmdDb25maWciLCJzdWJzY3JpcHRpb25zIiwiYWRkU3Vic2NyaXB0aW9ucyIsImFkZFN5c3RlbVN1YnNjcmlwdGlvbnMiLCJpc0VkaXRhYmxlIiwidmlzaWJsZUNvbHVtbkNvdW50IiwiaGlkZGVuIiwiZ2V0Q29tcG9uZW50QXR0cmlidXRlIiwic2VsZWN0aW9uTW9kZSIsImVkaXRvciIsImRlZmF1bHRFZGl0b3IiLCJkYXRhUXVlcnlOYW1lIiwiaGFzTG9hZEV2ZW50IiwibG9hZFN1YnNjcmlwdGlvbnMiLCJzdWJzY3JpcHRpb24iLCJldmVudFR5cGUiLCJsb2FkU3Vic2NyaXB0aW9uIiwiYWN0aW9ucyIsImFjdGlvbiIsImFjdGlvblR5cGUiLCJhdXRvTG9hZERhdGEiLCJDT01QT05FTlRfTE9BRCIsImFkZFJvd0ZvY3VzTGlzdGVuZXIiLCJmb2N1c291dCIsInNlbGVjdGVkRWxlbWVudCIsInJvd0F0dHJpYnV0ZXMiLCJjbGFzc0V2YWx1YXRvciIsImNsYXNzTmFtZSIsInVwZGF0ZVJvd1JlYWRPbmx5U3RhdHVzIiwicmVhZE9ubHlFdmFsdWF0b3IiLCJyZWFkT25seSIsInVwZGF0ZUNvbHVtblJlYWRPbmx5U3RhdHVzIiwiY29sdW1uUmVhZE9ubHkiLCJwcm9jZXNzU3lzdGVtR2VuZXJhdGVkU3Vic2NyaXB0aW9ucyIsIkRBVEFfQVJSSVZFRCIsIlJPV19ERUxFVEVEIiwicm93VmFsdWVzIiwiZWRpdG9yQ2hhbmdlSGFuZGxlciIsInJvd0lkIiwiZmllbGQiLCJ1cGRhdGVOZXN0ZWRQcm9wZXJ0eSIsImNyZWF0ZUNlbGwiLCJjb2x1bW5OYW1lIiwiY2VsbEhhbmRsZSIsInJvd0NlbGxzIiwiY2VsbHNFbnRyeSIsInJlZnJlc2hDZWxsIiwiY2VsbCIsInJlbW92ZUFsbFJvd0Vycm9yc0J5Q29sdW1uIiwicm93RXJyb3JzIiwicm93RXJyb3JIYW5kbGVyIiwia2V5cyIsImZpbmQiLCJyb3dFcnJvciIsImlzUm93RXJyb3JzRW1wdHkiLCJrZXkiLCJ2YWx1ZVJvd3MiLCJ2YWx1ZUNoYW5nZUhhbmRsZXIiLCJnZXRUaWxlTGFiZWwiLCJjb3VudGVyIiwiY3JlYXRlRWxlbWVudCIsInJlbmRlclRpbGUiLCJpc0l0ZW1TZWxlY3RlZCIsIml0ZW0iLCJ4cyIsIm1lcmdlT2JqZWN0cyIsInRpbGVTdHlsZSIsIm1pbldpZHRoIiwidmFyaWFudCIsImNvbG9yIiwib25DbGljayIsInJlbmRlclRpbGVzIiwiRnJhZ21lbnQiLCJsYWJlbElkIiwiY3JlYXRlQ29sdW1uTGF5b3V0SGFuZGxlIiwiY3JlYXRlQ2VsbEVkaXRvckhhbmRsZSIsImhhc0JvcmRlciIsIm1lcmdlU3R5bGVzIiwiYm9yZGVyUmFkaXVzIiwibm90ZXMiLCJub3RlIiwibWFyZ2luQm90dG9tIiwibWVzc2FnZVR5cGUiLCJtZXNzYWdlIiwiaW5jbHVkZXMiLCJmaWx0ZXJXcmFwcGVyQ2xhc3MiLCJvbkZpbHRlclN1Ym1pdCIsIm9uUmVxdWVzdFNvcnQiLCJjb250YWluZXIiLCJib3JkZXJCb3R0b20iLCJjb250cm9sIiwib25DaGFuZ2UiLCJzeCIsImZvbnRTaXplIiwibGFiZWwiLCJUYWJsZSIsImNlbGxTcGFjaW5nIiwibnVtU2VsZWN0ZWQiLCJvblNlbGVjdEFsbENsaWNrIiwicmVzaXplSGFuZGxlciIsIlRib2R5IiwibWF4SGVpZ2h0IiwiYm9keU1heEhlaWdodCIsImRlZmF1bHRSb3dTdHlsZSIsImZsZXhXcmFwIiwiYWxpZ25JdGVtcyIsIlRyIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwicm9sZSIsInRhYkluZGV4IiwiVGQiLCJpbnB1dFByb3BzIiwiX3JvdyRjb2x1bW5SZWFkT25seSIsIl9jb2x1bW4kZWRpdG9yIiwibGF5b3V0IiwiYWxpZ24iLCJkaXNhYmxlZCIsImZvcm0iLCJMYXlvdXQiLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJjb2wiLCJwYXJlbnQiLCJvblJvd0Vycm9yIiwicmVmQ2FsbGJhY2siLCJ2YWxpZGF0b3IiLCJjb2x1bW5Db25maWciLCJjb250ZW50VHlwZSIsImNlbGxGb3JtYXR0ZXIiLCJwYWdpbmF0aW9uIiwicGFnbmF0aW9uIiwiY291bnQiLCJiYWNrSWNvbkJ1dHRvblByb3BzIiwibmV4dEljb25CdXR0b25Qcm9wcyIsIm9uUGFnZUNoYW5nZSIsIm9uUm93c1BlclBhZ2VDaGFuZ2UiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvRGF0YUdyaWQuanN4Il0sInNvdXJjZXNDb250ZW50IjpbIu+7v2ltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge21ha2VTdHlsZXN9IGZyb20gJ0BtdWkvc3R5bGVzJztcbmltcG9ydCB7VGFibGUsIFRib2R5LCBUZCwgVHJ9IGZyb20gJ3JlYWN0LXN1cGVyLXJlc3BvbnNpdmUtdGFibGUnO1xuaW1wb3J0ICdyZWFjdC1zdXBlci1yZXNwb25zaXZlLXRhYmxlL2Rpc3QvU3VwZXJSZXNwb25zaXZlVGFibGVTdHlsZS5jc3MnO1xuaW1wb3J0IENoZWNrYm94IGZyb20gJ0BtdWkvbWF0ZXJpYWwvQ2hlY2tib3gnO1xuaW1wb3J0IFV0aWxzIGZyb20gJy4uL1V0aWxzJztcbmltcG9ydCAnLi9EYXRhR3JpZC5jc3MnO1xuaW1wb3J0IHtpbnZva2VSZXN0LCBpbnZva2VScGN9IGZyb20gJy4uL1Jlc3RTZXJ2aWNlJztcbmltcG9ydCBEYXRhR3JpZEZpbHRlciBmcm9tICcuL0RhdGFHcmlkRmlsdGVyJztcbmltcG9ydCBEYXRhR3JpZEhlYWRpbmcgZnJvbSAnLi9EYXRhR3JpZEhlYWRpbmcnO1xuaW1wb3J0IFRhYmxlQ2VsbENvbnRlbnQgZnJvbSAnLi9UYWJsZUNlbGxDb250ZW50JztcbmltcG9ydCBUYWJsZVBhZ2luYXRpb24gZnJvbSAnQG11aS9tYXRlcmlhbC9UYWJsZVBhZ2luYXRpb24nO1xuaW1wb3J0IHtncmV5MzAwfSBmcm9tICdtYXRlcmlhbC11aS9zdHlsZXMvY29sb3JzJztcbmltcG9ydCBFdmVudCBmcm9tICcuLi9ldmVudC9FdmVudCc7XG5pbXBvcnQgZXZlbnRNYW5hZ2VyIGZyb20gJy4uL2V2ZW50L09ic2VydmFibGUnO1xuaW1wb3J0IEV2ZW50VHlwZSBmcm9tICcuLi9ldmVudC9FdmVudFR5cGUnO1xuaW1wb3J0IEdyaWQgZnJvbSAnQG11aS9tYXRlcmlhbC9HcmlkJztcbmltcG9ydCBCdXR0b24gZnJvbSAnQG11aS9tYXRlcmlhbC9CdXR0b24nO1xuaW1wb3J0ICogYXMgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IEFsZXJ0IGZyb20gJ3JlYWN0LWJvb3RzdHJhcC9BbGVydCc7XG5pbXBvcnQgYXBwbGljYXRpb25NYW5hZ2VyIGZyb20gJy4uL0FwcGxpY2F0aW9uTWFuYWdlcic7XG5pbXBvcnQge0xheW91dH0gZnJvbSAnLi9sYXlvdXQvTGF5b3V0JztcbmltcG9ydCBkeW5hbWljSlMgZnJvbSBcIi4uL0R5bmFtaWNKU1wiO1xuaW1wb3J0IFN3aXRjaCBmcm9tICdAbXVpL21hdGVyaWFsL1N3aXRjaCc7XG5pbXBvcnQgRm9ybUNvbnRyb2xMYWJlbCBmcm9tICdAbXVpL21hdGVyaWFsL0Zvcm1Db250cm9sTGFiZWwnO1xuaW1wb3J0IEdyYWJDb250ZXh0IGZyb20gJy4uL2ludGVyYWN0aW9uL0dyYWJDb250ZXh0JztcbmltcG9ydCBDdXJzb3JPdmVybGF5IGZyb20gXCIuLi9pbnRlcmFjdGlvbi9DdXJzb3JPdmVybGF5XCI7XG5cbmV4cG9ydCBjb25zdCBNVUxUSV9TRUxFQ1RfQ0hFQ0tCT1hfQ09MX1dJRFRIID0gNjQ7XG5cbmZ1bmN0aW9uIGV2YWx1YXRlVGFibGVDZWxsV2lkdGgobXVsdGlTZWxlY3QsIGNvbHVtbiwgY29sdW1uQ291bnQpIHtcblxuICAgIGxldCB3aWR0aCA9IGFwcGxpY2F0aW9uTWFuYWdlci5pc0V4cHJlc3Npb24oY29sdW1uLmF0dHJpYnV0ZXNbJ3dpZHRoJ10pID9cbiAgICAgICAgZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHQoYHBvcHVwVGl0bGVfJHtjb2x1bW4uaWR9YCxjb2x1bW4uYXR0cmlidXRlc1snd2lkdGgnXSwgY29sdW1uKSA6IGNvbHVtbi5hdHRyaWJ1dGVzWyd3aWR0aCddO1xuXG4gICAgcmV0dXJuIG11bHRpU2VsZWN0ID09PSB0cnVlID9cbiAgICAgICAgJ2NhbGMoJyArICghVXRpbHMuaXNOdWxsKHdpZHRoKSA/IHdpZHRoIDpcbiAgICAgICAgICAgICgxMDAgLyBjb2x1bW5Db3VudCkgKyAnJScpICsgJyAtICcgKyAoTVVMVElfU0VMRUNUX0NIRUNLQk9YX0NPTF9XSURUSCAvIGNvbHVtbkNvdW50KSArICdweCknXG4gICAgICAgIDpcbiAgICAgICAgKHR5cGVvZiB3aWR0aCAhPT0gJ3VuZGVmaW5lZCcgPyB3aWR0aCA6ICgxMDAgLyBjb2x1bW5Db3VudCkgKyAnJScpO1xufVxuXG5mdW5jdGlvbiBkZXNjKGEsIGIsIG9yZGVyQnkpIHtcbiAgICBpZiAoYltvcmRlckJ5XSA8IGFbb3JkZXJCeV0pIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBpZiAoYltvcmRlckJ5XSA+IGFbb3JkZXJCeV0pIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuXG5mdW5jdGlvbiBzdGFibGVTb3J0KGFycmF5LCBjbXApIHtcbiAgICBjb25zdCBzdGFiaWxpemVkVGhpcyA9IGFycmF5Lm1hcCgoZWwsIGluZGV4KSA9PiBbZWwsIGluZGV4XSk7XG4gICAgc3RhYmlsaXplZFRoaXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICBjb25zdCBvcmRlciA9IGNtcChhWzBdLCBiWzBdKTtcbiAgICAgICAgaWYgKG9yZGVyICE9PSAwKSByZXR1cm4gb3JkZXI7XG4gICAgICAgIHJldHVybiBhWzFdIC0gYlsxXTtcbiAgICB9KTtcbiAgICByZXR1cm4gc3RhYmlsaXplZFRoaXMubWFwKGVsID0+IGVsWzBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0U29ydGluZyhvcmRlciwgb3JkZXJCeSkge1xuICAgIHJldHVybiBvcmRlciA9PT0gJ2Rlc2MnID8gKGEsIGIpID0+IGRlc2MoYSwgYiwgb3JkZXJCeSkgOiAoYSwgYikgPT4gLWRlc2MoYSwgYiwgb3JkZXJCeSk7XG59XG5cbmNvbnN0IHVzZVN0eWxlcyA9IG1ha2VTdHlsZXModGhlbWUgPT4gKHtcbiAgICByb290OiB7XG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIG1hcmdpblRvcDogdGhlbWUuc3BhY2luZygzKSxcbiAgICB9LFxuICAgIHBhcGVyOiB7XG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgekluZGV4OiAnMCcsXG4gICAgfSxcbiAgICBzY3JvbGxQYWRkaW5nOiB7XG4gICAgICAgIHBhZGRpbmc6ICc4cHggIWltcG9ydGFudCdcbiAgICB9LFxuICAgIG5vU2Nyb2xsUGFkZGluZzoge1xuICAgICAgICBwYWRkaW5nOiAnMCAhaW1wb3J0YW50JyxcbiAgICAgICAgd2lkdGg6ICcxcHggIWltcG9ydGFudCdcbiAgICB9LFxuICAgIHRhYmxlQm9keToge1xuICAgICAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgICAgICBvdmVyZmxvd1k6ICdhdXRvJ1xuICAgIH0sXG4gICAgdGFibGVTZWxlY3RlZDoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGdyZXkzMDAsXG4gICAgICAgICcmOmhvdmVyJzoge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJyNmMWYxZjEnXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHRhYmxlUm93OiB7XG4gICAgICAgICcmOmhvdmVyJzoge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJyNmMWYxZjEnXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHRhYmxlV3JhcHBlcjoge1xuICAgICAgICBoZWlnaHQ6ICcxMDAlJ1xuICAgIH0sXG4gICAgdGFibGU6IHtcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgfSxcbiAgICB2aXN1YWxseUhpZGRlbjoge1xuICAgICAgICBib3JkZXI6IDAsXG4gICAgICAgIGNsaXA6ICdyZWN0KDAgMCAwIDApJyxcbiAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICBtYXJnaW46IC0xLFxuICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgdG9wOiAyMCxcbiAgICAgICAgd2lkdGg6IDEsXG4gICAgfVxufSkpO1xuXG5leHBvcnQgY29uc3QgRGF0YUdyaWQgPSBSZWFjdC5tZW1vKChwcm9wcykgPT4ge1xuICAgIGNvbnN0IGNsYXNzZXMgPSB1c2VTdHlsZXMoKTtcbiAgICBjb25zdCBbb3JkZXIsIHNldE9yZGVyXSA9IFJlYWN0LnVzZVN0YXRlKCdkZXNjJyk7XG4gICAgY29uc3QgW2NvbmZpZ10gPSBSZWFjdC51c2VTdGF0ZShVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCkpO1xuICAgIGNvbnN0IFtvcmRlckJ5LCBzZXRPcmRlckJ5XSA9IFJlYWN0LnVzZVN0YXRlKCdpZCcpO1xuICAgIGNvbnN0IFtzZWxlY3RlZCwgc2V0U2VsZWN0ZWRdID0gUmVhY3QudXNlU3RhdGUoW10pO1xuICAgIGNvbnN0IFt0b3RhbE51bWJlck9mUm93cywgc2V0VG90YWxOdW1iZXJPZlJvd3NdID0gUmVhY3QudXNlU3RhdGUoMCk7XG4gICAgY29uc3QgW2NyaXRlcmlhXSA9IFJlYWN0LnVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbcGFnZSwgc2V0UGFnZV0gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBbcm93cywgc2V0Um93c10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW2RlbGV0ZWRSb3dzLCBzZXREZWxldGVkUm93c10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW2VkaXRhYmxlLCBzZXRFZGl0YWJsZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3Njcm9sbFdpZHRoLCBzZXRTY3JvbGxXaWR0aF0gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBbcm93c1BlclBhZ2VPcHRpb25zXSA9IFJlYWN0LnVzZVN0YXRlKFsxNSwgMzAsIDQ1LCA2MCwgNzUsIDE1MCwgMzAwXSk7XG4gICAgY29uc3QgW3Jvd3NQZXJQYWdlTG9hZGluZywgc2V0Um93c1BlclBhZ2VMb2FkaW5nXSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFtyb3dzUGVyUGFnZSwgc2V0Um93c1BlclBhZ2VdID0gUmVhY3QudXNlU3RhdGUocHJvcHMuY29uZmlnLnBhZ2VTaXplKTtcbiAgICBjb25zdCBoaWdobGlnaHRSb3dTZWxlY3Rpb24gPSBSZWFjdC51c2VSZWYoIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuaGlnaGxpZ2h0Um93U2VsZWN0aW9uKVxuICAgICAgICA/IHByb3BzLmNvbmZpZy5oaWdobGlnaHRSb3dTZWxlY3Rpb24gOiAhVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uKSA/ICFwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbiA6IHRydWUpO1xuICAgIGNvbnN0IFtjZWxsc10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW2hlYWRpbmdIYW5kbGVdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtmaWx0ZXJIYW5kbGVdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtjb2x1bW5MYXlvdXRIYW5kbGVzXSA9IFJlYWN0LnVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbZWRpdG9ySGFuZGxlc10gPSBSZWFjdC51c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW3Jvd0Vycm9yTWFwXSA9IFJlYWN0LnVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbdmlzaWJsZSwgc2V0VmlzaWJsZV0gPSBSZWFjdC51c2VTdGF0ZSh0cnVlKTtcbiAgICBjb25zdCBbd3JhcCwgc2V0V3JhcF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3Qgcm93Q291bnQgPSBSZWFjdC51c2VSZWYoLTEpO1xuICAgIGNvbnN0IHJvd3NSZWYgPSBSZWFjdC51c2VSZWYoW10pO1xuICAgIGxldCBub3RlS2V5ID0gMDtcbiAgICBjb25zdCBjb2x1bW5XaWR0aHMgPSBSZWFjdC51c2VSZWYoe30pO1xuXG4gICAgY29uc3QgZHJhZ1NwZWMgPSBjb25maWcuYXR0cmlidXRlcz8uZHJhZ1NwZWMgfHwge307XG4gICAgY29uc3Qgcm93R3JhYlNwZWMgPSBkcmFnU3BlYy5yb3cgfHwge307XG4gICAgY29uc3Qgcm93c0dyYWJiYWJsZSA9IHJvd0dyYWJTcGVjLmVuYWJsZWQgPT09IHRydWU7XG5cbiAgICBjb25zdCBhcGkgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXQgaWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLmNvbmZpZy5pZDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgY3JpdGVyaWEoKSB7XG4gICAgICAgICAgICAgICAgY3JpdGVyaWEucGFyYW1ldGVycyA9IGlzRmlsdGVyYWJsZSgpID8gZmlsdGVySGFuZGxlLmFwaS5nZXRQYXJhbWV0ZXJzKCkgOiBbXTtcbiAgICAgICAgICAgICAgICBjcml0ZXJpYS5wYWdlU2l6ZSA9IHJvd3NQZXJQYWdlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyaXRlcmlhO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBzZWxlY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkUm93cyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCByb3dzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRbaV0gPT09IHJvd3Nbal0uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFJvd3MucHVzaChyb3dzW2pdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZFJvd3M7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IGNvbHVtbkRhdGFCaW5kaW5ncygpIHtcbiAgICAgICAgICAgICAgICBsZXQgY29sdW1uTmFtZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjb2x1bW4gPSBjb25maWcuY29sdW1uc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uTmFtZXMucHVzaCghVXRpbHMuaXNOdWxsKGNvbHVtbi5kYXRhQmluZGluZykgPyBjb2x1bW4uZGF0YUJpbmRpbmcgOiBjb2x1bW4uaWQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjb2x1bW5OYW1lcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRDaGlsZHJlbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGhlYWRpbmdIYW5kbGUuYXBpKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGhlYWRpbmdIYW5kbGUuYXBpLmdldENoaWxkcmVuKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZmlsdGVySGFuZGxlLmFwaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBmaWx0ZXJIYW5kbGUuYXBpLmdldENoaWxkcmVuKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhjb2x1bW5MYXlvdXRIYW5kbGVzKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbHVtbkxheW91dEhhbmRsZSA9IGNvbHVtbkxheW91dEhhbmRsZXNbcHJvcGVydHldO1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGNvbHVtbkxheW91dEhhbmRsZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGNvbHVtbkxheW91dEhhbmRsZS5hcGkpICYmICFVdGlscy5pc051bGwoY29sdW1uTGF5b3V0SGFuZGxlLmFwaS5nZXRDaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtb3JlQ2hpbGRyZW4gPSBjb2x1bW5MYXlvdXRIYW5kbGUuYXBpLmdldENoaWxkcmVuKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChtb3JlQ2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBtb3JlQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcHJvcGVydGllcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGVkaXRvckhhbmRsZXMpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZWRpdG9ySGFuZGxlID0gZWRpdG9ySGFuZGxlc1twcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goZWRpdG9ySGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZWRpdG9ySGFuZGxlLmFwaSkgJiYgIVV0aWxzLmlzTnVsbChlZGl0b3JIYW5kbGUuYXBpLmdldENoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1vcmVDaGlsZHJlbiA9IGVkaXRvckhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKG1vcmVDaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG1vcmVDaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW47XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9hZERhdGE6IChhY3Rpb25Db25maWcsIGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgc2VhcmNoKGFjdGlvbkNvbmZpZywgZXZlbnQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlbGV0ZVNlbGVjdGVkUm93czogKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFRPRE8gOiBkaXNwb3NlIGZyb20gb2JzZXJ2ZXJcbiAgICAgICAgICAgICAgICBsZXQgbmV3Um93cyA9IHJvd3MuZmlsdGVyKChyb3cpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFpc1NlbGVjdGVkKHJvdy5pZCk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBzZXREZWxldGVkUm93cyhnZXRTZWxlY3RlZFJvd3Moc2VsZWN0ZWQpKTtcbiAgICAgICAgICAgICAgICByb3dzLnNwbGljZSgwLCByb3dzLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBuZXdSb3cgb2YgbmV3Um93cykge1xuICAgICAgICAgICAgICAgICAgICByb3dzLnB1c2gobmV3Um93KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZChbXSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5vblNlbGVjdGlvbkNoYW5nZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMub25TZWxlY3Rpb25DaGFuZ2UoW10pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKTtcbiAgICAgICAgICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VDYWxsYmFjayhyb3dzKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiByb3dzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyA6IGRpc3Bvc2UgZnJvbSBvYnNlcnZlclxuICAgICAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IFtdO1xuICAgICAgICAgICAgICAgIHNldFJvd3MoW10pO1xuXG4gICAgICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBnZXRTZWxlY3RlZFJvd3MoW10pKTtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5TRUxFQ1RJT05fQ0hBTkdFLCBldmVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VsZWN0OiAocm93cykgPT4ge1xuICAgICAgICAgICAgICBzZXRTZWxlY3RlZChyb3dzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhZGRSb3dzOiAobmV3Um93cykgPT4ge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbmV3Um93IG9mIG5ld1Jvd3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93cy5wdXNoKG9ic2VydmVSb3cobmV3Um93KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IG5ld1NlbGVjdGlvbiA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbmV3Um93IG9mIG5ld1Jvd3MpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0aW9uLnB1c2gobmV3Um93LmlkKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uKSB8fCBwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWQobmV3U2VsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5vblNlbGVjdGlvbkNoYW5nZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMub25TZWxlY3Rpb25DaGFuZ2UobmV3Um93cyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsQmFyUGFkZGluZygpO1xuICAgICAgICAgICAgICAgIHJvd0NvdW50LmN1cnJlbnQgPSByb3dzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUNhbGxiYWNrKHJvd3MpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvd3M7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IG51bWJlck9mUGFnZXMoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsTnVtYmVyT2ZSb3dzIC8gcm93c1BlclBhZ2U7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHJvd3MoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvd3NSZWYuY3VycmVudDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWFyY2g6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBzZWFyY2goKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZWZyZXNoKCkge1xuICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJIYW5kbGUgJiYgZmlsdGVySGFuZGxlLmFwaSkge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJIYW5kbGUuYXBpLnJlZnJlc2goKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgcGFyc2VkQ29uZmlnID0gVXRpbHMucGFyc2VDb25maWcocHJvcHMuY29uZmlnLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHBhcnNlZENvbmZpZy52aXNpYmxlKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyc2VkQ29uZmlnLnZpc2libGUsIHBhcnNlZENvbmZpZy5pZCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgdmlzaWJsZSh2aXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgc2V0VmlzaWJsZSh2aXNpYmxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgZm9ybUFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuY29uZmlnLmlkICsgXCJfZWRpdF9mb3JtXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGhhbmRsZVJvd0dyYWJUb2dnbGUocm93LCBpbmRleCkge1xuICAgICAgICBpZiAoIWlzUm93R3JhYmJhYmxlKHJvdykpIHJldHVybjtcbiAgICAgICAgaWYgKEdyYWJDb250ZXh0LmlzQWN0aXZlKCkpIHJldHVybjtcblxuICAgICAgICBHcmFiQ29udGV4dC5ncmFiKHByb3BzLmhhbmRsZSwge1xuICAgICAgICAgICAgcm93LFxuICAgICAgICAgICAgcm93SW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgY29tcG9uZW50SWQ6IHByb3BzLmNvbmZpZy5pZCxcbiAgICAgICAgICAgIHZpZXdJZDogcHJvcHMudmlld0lkXG4gICAgICAgIH0pO1xuXG4gICAgICAgIEN1cnNvck92ZXJsYXkuc2hvdygpO1xuXG4gICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoXG4gICAgICAgICAgICBFdmVudFR5cGUuUk9XX0dSQUJfU1RBUlQsXG4gICAgICAgICAgICBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIHJvdylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1cGRhdGVTY3JvbGxCYXJQYWRkaW5nKCkge1xuICAgICAgICB2YXIgdGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpblRhYmxlQm9keScpO1xuICAgICAgICBpZiAodGJvZHkgIT09IG51bGwgJiYgdHlwZW9mIHRib2R5ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgc2V0U2Nyb2xsV2lkdGgodGJvZHkub2Zmc2V0V2lkdGggLSB0Ym9keS5jbGllbnRXaWR0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3aW5kb3cub25yZXNpemUgPSBmdW5jdGlvbiBvbnJlc2l6ZSgpIHtcbiAgICAgICAgdXBkYXRlU2Nyb2xsQmFyUGFkZGluZygpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVSZXF1ZXN0U29ydCA9IChldmVudCwgcHJvcGVydHkpID0+IHtcbiAgICAgICAgY29uc3QgaXNEZXNjID0gb3JkZXJCeSA9PT0gcHJvcGVydHkgJiYgb3JkZXIgPT09ICdkZXNjJztcbiAgICAgICAgc2V0T3JkZXIoaXNEZXNjID8gJ2FzYycgOiAnZGVzYycpO1xuICAgICAgICBzZXRPcmRlckJ5KHByb3BlcnR5KTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaGFuZGxlU2VsZWN0QWxsQ2xpY2soZXZlbnQpIHtcbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbikgfHwgcHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24gPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZHMgPSByb3dzLm1hcChuID0+IG4ubmFtZSk7XG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWQobmV3U2VsZWN0ZWRzKTtcbiAgICAgICAgICAgICAgICBwcm9wcy5vblNlbGVjdGlvbkNoYW5nZShuZXdTZWxlY3RlZHMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZChbXSk7XG4gICAgICAgICAgICAgICAgcHJvcHMub25TZWxlY3Rpb25DaGFuZ2UoW10pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuZW5hYmxlRm9ybU1hcmtlcnModHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZWxlY3RlZFJvd3Moc2VsZWN0ZWQpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkUm93cyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCByb3cgPSByb3dzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzZWxlY3RlZC5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmIChyb3cuaWQgPT09IHNlbGVjdGVkW2pdKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUm93cy5wdXNoKHJvdyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkUm93cztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkb0hhbmRsZUNsaWNrKGV2ZW50LCBpZCkge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uKSB8fCBwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2Vycyh0cnVlKTtcblxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9IC0xO1xuICAgICAgICAgICAgaWYoc2VsZWN0ZWQuaW5kZXhPZihpZCkgPCAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1NlbGVjdGVkID0gW107XG5cbiAgICAgICAgICAgICAgICBpZiAocHJvcHMubXVsdGlTZWxlY3QgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZCA9IG5ld1NlbGVjdGVkLmNvbmNhdChzZWxlY3RlZCwgaWQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkSW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkID0gbmV3U2VsZWN0ZWQuY29uY2F0KHNlbGVjdGVkLnNsaWNlKDEpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZEluZGV4ID09PSBzZWxlY3RlZC5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZCA9IG5ld1NlbGVjdGVkLmNvbmNhdChzZWxlY3RlZC5zbGljZSgwLCAtMSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkSW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZCA9IG5ld1NlbGVjdGVkLmNvbmNhdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZC5zbGljZSgwLCBzZWxlY3RlZEluZGV4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZC5zbGljZShzZWxlY3RlZEluZGV4ICsgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWQucHVzaChpZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkUm93cyA9IGdldFNlbGVjdGVkUm93cyhuZXdTZWxlY3RlZCk7XG5cbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZChuZXdTZWxlY3RlZCk7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25TZWxlY3Rpb25DaGFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGVkUm93cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZmlyZVNlbGVjdGlvbkV2ZW50KCkge1xuICAgICAgICBpZiAoc2VsZWN0ZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoY29uZmlnKSAmJiAoIVV0aWxzLmlzTnVsbChoZWFkaW5nSGFuZGxlKSB8fCBjb25maWcuZ3JpZFR5cGUgPT09ICdUSUxFJykpIHtcbiAgICAgICAgICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIGdldFNlbGVjdGVkUm93cyhzZWxlY3RlZCkpO1xuICAgICAgICAgICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLlNFTEVDVElPTl9DSEFOR0UsIGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzUm93R3JhYmJhYmxlKHJvdykge1xuICAgICAgICByZXR1cm4gcm93c0dyYWJiYWJsZSAmJiAhaXNSb3dEcmFnRGlzYWJsZWQocm93KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1Jvd0RyYWdEaXNhYmxlZChyb3cpIHtcbiAgICAgICAgaWYgKCFkcmFnU3BlYy5kaXNhYmxlZFdoZW4pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdE9iamVjdChcbiAgICAgICAgICAgICdST1ctJyArIHJvdy5pZCArICctZHJhZy1kaXNhYmxlZCcsXG4gICAgICAgICAgICBkcmFnU3BlYy5kaXNhYmxlZFdoZW4sXG4gICAgICAgICAgICBwcm9wcy5jb25maWcuaWQsXG4gICAgICAgICAgICB7cm93OiByb3d9LFxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRDdXJzb3IoY3Vyc29yKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gY3Vyc29yIHx8ICdkZWZhdWx0JztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVSb3dNb3VzZUVudGVyKHJvdykge1xuICAgICAgICBpZiAoIWlzUm93R3JhYmJhYmxlKHJvdykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9ubHkgc2hvdyBncmFiIGN1cnNvciBpZiBub3QgYWxyZWFkeSBob2xkaW5nIHNvbWV0aGluZ1xuICAgICAgICBpZiAoIUdyYWJDb250ZXh0LmlzQWN0aXZlKCkpIHtcbiAgICAgICAgICAgIHNldEN1cnNvcihyb3dHcmFiU3BlYy5jdXJzb3IgfHwgJ2dyYWInKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZVJvd01vdXNlTGVhdmUoKSB7XG4gICAgICAgIHNldEN1cnNvcignZGVmYXVsdCcpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50LCByb3csIGluZGV4KSB7XG4gICAgICAgIGlmIChldmVudC50YXJnZXQuY2xvc2VzdCgnLmVkaXRDZWxsJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAocm93c0dyYWJiYWJsZSAmJiAhaXNSb3dEcmFnRGlzYWJsZWQocm93KSkge1xuICAgICAgICAgICAgaGFuZGxlUm93R3JhYlRvZ2dsZShyb3csIGluZGV4KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLm9uQ2VsbFNlbGVjdGlvbkNoYW5nZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGRvSGFuZGxlQ2xpY2soZXZlbnQsIHJvdy5pZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlQ2VsbENsaWNrKGV2ZW50LCBpZCwgY29sdW1uKSB7XG4gICAgICAgIGlmIChjb2x1bW4uZmllbGRUeXBlICE9PSAnZG9jdW1lbnQnKSB7XG4gICAgICAgICAgICAvLyBUT0RPIDogRXZhbHVhdGUgaWYgdGhpcyBjYWxsIGlzIG5lY2Vzc2FyeVxuICAgICAgICAgICAgZG9IYW5kbGVDbGljayhldmVudCwgaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25DZWxsU2VsZWN0aW9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgcHJvcHMub25DZWxsU2VsZWN0aW9uQ2hhbmdlKGlkLCBjb2x1bW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlQ2hhbmdlUGFnZShldmVudCwgbmV3UGFnZSkge1xuICAgICAgICBjcml0ZXJpYS5jdXJyZW50UGFnZSA9IG5ld1BhZ2UgKyAxO1xuICAgICAgICBzZXRQYWdlKG5ld1BhZ2UpO1xuICAgICAgICBzZWFyY2goKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVDaGFuZ2VSb3dzUGVyUGFnZShldmVudCkge1xuICAgICAgICBzZXRSb3dzUGVyUGFnZShyb3dzUGVyUGFnZSA9PiBldmVudC50YXJnZXQudmFsdWUpO1xuICAgICAgICBzZXRQYWdlKDApO1xuICAgIH1cblxuICAgIGNvbnN0IG9ic2VydmVSb3cgPSAocm93KSA9PiB7XG4gICAgICAgIC8qbGV0IG9ic2VydmFibGVSb3cgPSBvYnNlcnZhYmxlKHJvdyk7XG4gICAgICAgIG9ic2VydmUoXG4gICAgICAgICAgICBvYnNlcnZhYmxlUm93LFxuICAgICAgICAgICAgY2hhbmdlID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3VmFsdWUgPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgICAgICAgICAgICAgbGV0IG9sZFZhbHVlID0gY2hhbmdlLm9sZFZhbHVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICByZWZyZXNoQ2VsbChyb3cuaWQsIGNoYW5nZS5uYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIG9ic2VydmFibGVSb3c7Ki9cblxuICAgICAgICByZXR1cm4gcm93O1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzRGF0YShkYXRhLCBjb25mKSB7XG4gICAgICAgIHNldFRvdGFsTnVtYmVyT2ZSb3dzKGRhdGEudG90YWxOdW1iZXJPZlJlY29yZHMgPyBkYXRhLnRvdGFsTnVtYmVyT2ZSZWNvcmRzIDogZGF0YS5yZWNvcmRzLmxlbmd0aCk7XG5cbiAgICAgICAgcm93c1JlZi5jdXJyZW50ID0gZGF0YS5yZWNvcmRzO1xuICAgICAgICB1cGRhdGVSb3dDbGFzc2VzKGRhdGEucmVjb3Jkcyk7XG4gICAgICAgIGxldCB0YWJsZVJvd3MgPSBbXTtcbiAgICAgICAgbGV0IHJlY29yZHMgPSBkYXRhLnJlY29yZHM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVjb3Jkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGFibGVSb3dzLnB1c2gob2JzZXJ2ZVJvdyhyZWNvcmRzW2ldKSk7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRSb3dzKHRhYmxlUm93cyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VhcmNoID0gKGFjdGlvbkNvbmZpZyA9IG51bGwsIGV2ZW50KSA9PiB7XG4gICAgICAgIGxldCBjb25mID0gY29uZmlnO1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGNvbmYpKSB7XG4gICAgICAgICAgICBjb25mID0gVXRpbHMucGFyc2VDb25maWcocHJvcHMuY29uZmlnLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHNlcnZpY2UgPSAhVXRpbHMuaXNOdWxsKGNvbmYuZGF0YVNlcnZpY2UpID8gY29uZi5kYXRhU2VydmljZSA6ICFVdGlscy5pc051bGwoYWN0aW9uQ29uZmlnKSA/IGFjdGlvbkNvbmZpZy5kYXRhU2VydmljZSA6IG51bGw7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHNlcnZpY2UpKSB7XG4gICAgICAgICAgICBsZXQgc2VydmljZVR5cGUgPSBzZXJ2aWNlLnR5cGU7XG4gICAgICAgICAgICBpZiAoIXNlcnZpY2VUeXBlKSB7XG4gICAgICAgICAgICAgICAgc2VydmljZVR5cGUgPSAncnBjJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNlcnZpY2VUeXBlID09PSAncnBjJyB8fCBzZXJ2aWNlVHlwZSA9PT0gJ3Jlc3QnKSB7XG4gICAgICAgICAgICAgICAgbGV0IG1ldGhvZCA9IHNlcnZpY2VUeXBlID09PSAncnBjJyA/IGludm9rZVJwYyA6IGludm9rZVJlc3Q7XG4gICAgICAgICAgICAgICAgbWV0aG9kKHtcbiAgICAgICAgICAgICAgICAgICAgc2VydmljZTogc2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiBwcm9wcy5oYW5kbGUsXG4gICAgICAgICAgICAgICAgICAgIHZpZXdJZDogcHJvcHMudmlld0lkLFxuICAgICAgICAgICAgICAgICAgICBldmVudFxuICAgICAgICAgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRGF0YShyZXN1bHQsIGNvbmYpO1xuICAgICAgICAgICAgICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmKGUuZXJyb3JUeXBlICE9PSAnSU5WQUxJRF9QQVJBTUVURVInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBVdGlscy5wdWJsaXNoRXJyb3JNZXNzYWdlKGUsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gc2VydmljZSB0eXBlIDogJyArIHNlcnZpY2VUeXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChhY3Rpb25Db25maWcgJiYgYWN0aW9uQ29uZmlnLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBhcHBsaWNhdGlvbk1hbmFnZXIucmVzb2x2ZVBhcmFtZXRlckNvbmZpZ1ZhbHVlKGFjdGlvbkNvbmZpZy52YWx1ZSk7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc0RhdGEoZGF0YSwgY29uZik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY3JpdGVyaWEuY3VycmVudFBhZ2UgPSAxO1xuICAgICAgICBpZiAoIXJvd3NQZXJQYWdlTG9hZGluZykge1xuICAgICAgICAgICAgc2V0Um93c1BlclBhZ2VMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIHNlYXJjaCgpO1xuICAgICAgICB9XG4gICAgfSwgW3Jvd3NQZXJQYWdlXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBwcm9wcy5oYW5kbGUuYXBpID0gYXBpKCk7XG4gICAgfSk7XG5cbiAgICBSZWFjdC51c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICBwcm9wcy5oYW5kbGUuYXBpID0gYXBpKCk7XG4gICAgfSwgW10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgbGV0IGV2ZW50SGFuZGxpbmdDb25maWcgPSBVdGlscy5pc051bGwoY29uZmlnLmV2ZW50SGFuZGxpbmdDb25maWcpID8ge30gOiBjb25maWcuZXZlbnRIYW5kbGluZ0NvbmZpZztcbiAgICAgICAgZXZlbnRIYW5kbGluZ0NvbmZpZy5zdWJzY3JpcHRpb25zID0gVXRpbHMuaXNOdWxsKGV2ZW50SGFuZGxpbmdDb25maWcuc3Vic2NyaXB0aW9ucykgPyBbXSA6IGV2ZW50SGFuZGxpbmdDb25maWcuc3Vic2NyaXB0aW9ucztcblxuICAgICAgICBldmVudE1hbmFnZXIuYWRkU3Vic2NyaXB0aW9ucyhldmVudEhhbmRsaW5nQ29uZmlnLCBwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5hZGRTeXN0ZW1TdWJzY3JpcHRpb25zKHByb3BzLnZpZXdJZCwgY29uZmlnKTtcbiAgICAgICAgbGV0IGlzRWRpdGFibGUgPSBmYWxzZTtcbiAgICAgICAgbGV0IHZpc2libGVDb2x1bW5Db3VudCA9IDA7XG5cbiAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29uZmlnLmNvbHVtbnMpIHtcbiAgICAgICAgICAgIGxldCBoaWRkZW4gPSBVdGlscy5nZXRDb21wb25lbnRBdHRyaWJ1dGUoY29sdW1uLCAnaGlkZGVuJywgZmFsc2UpO1xuICAgICAgICAgICAgaWYgKCFVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKGhpZGRlbiwgcHJvcHMuY29uZmlnLmlkKSkge1xuICAgICAgICAgICAgICAgIHZpc2libGVDb2x1bW5Db3VudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWcuY29sdW1ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IGNvbHVtbiA9IGNvbmZpZy5jb2x1bW5zW2ldO1xuXG4gICAgICAgICAgICBpZiAoIWlzRWRpdGFibGUgJiYgY29sdW1uLmF0dHJpYnV0ZXNbJ2VkaXRhYmxlJ10gPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBpc0VkaXRhYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzZXRFZGl0YWJsZSh0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYoIWNvbHVtbi5hdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uLmF0dHJpYnV0ZXMgPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29sdW1uLmF0dHJpYnV0ZXMud2lkdGggPSBldmFsdWF0ZVRhYmxlQ2VsbFdpZHRoKHByb3BzLnNlbGVjdGlvbk1vZGUgPT09ICdNVUxUSVBMRScsIGNvbHVtbiwgdmlzaWJsZUNvbHVtbkNvdW50KTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGNvbHVtbi5hdHRyaWJ1dGVzKSAmJiBjb2x1bW4uYXR0cmlidXRlc1snZWRpdGFibGUnXSA9PT0gdHJ1ZSAmJiBVdGlscy5pc051bGwoY29sdW1uLmVkaXRvcikpIHtcbiAgICAgICAgICAgICAgICBsZXQgZGVmYXVsdEVkaXRvciA9IHt9O1xuICAgICAgICAgICAgICAgIGRlZmF1bHRFZGl0b3IuZmllbGRUeXBlID0gJ1RFWFRfRklFTEQnO1xuICAgICAgICAgICAgICAgIGRlZmF1bHRFZGl0b3IuaWQgPSBjb2x1bW4uaWQgKyAnRWRpdG9yJztcblxuICAgICAgICAgICAgICAgIGNvbHVtbi5lZGl0b3IgPSBkZWZhdWx0RWRpdG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY3JpdGVyaWEuY3VycmVudFBhZ2UgPSAxO1xuICAgICAgICBjcml0ZXJpYS5kYXRhUXVlcnlOYW1lID0gY29uZmlnLmRhdGFRdWVyeU5hbWU7XG5cbiAgICAgICAgbGV0IGhhc0xvYWRFdmVudDtcbiAgICAgICAgbGV0IGxvYWRTdWJzY3JpcHRpb25zID0gZXZlbnRIYW5kbGluZ0NvbmZpZy5zdWJzY3JpcHRpb25zLmZpbHRlcigoc3Vic2NyaXB0aW9uKSA9PiBzdWJzY3JpcHRpb24uZXZlbnRUeXBlID09PSAnQ09NUE9ORU5UX0xPQUQnKTtcbiAgICAgICAgZm9yIChjb25zdCBsb2FkU3Vic2NyaXB0aW9uIG9mIGxvYWRTdWJzY3JpcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAobG9hZFN1YnNjcmlwdGlvbi5hY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24uYWN0aW9uVHlwZSA9PT0gJ2xvYWREYXRhJykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGhhc0xvYWRFdmVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYXV0b0xvYWREYXRhID0gVXRpbHMuZ2V0Q29tcG9uZW50QXR0cmlidXRlKGNvbmZpZywgJ2F1dG9Mb2FkRGF0YScsIG51bGwpO1xuICAgICAgICBpZiAoIWhhc0xvYWRFdmVudCAmJiAoYXV0b0xvYWREYXRhID09PSBudWxsIHx8IGF1dG9Mb2FkRGF0YSA9PT0gdHJ1ZSkpIHtcbiAgICAgICAgICAgIHNlYXJjaCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBudWxsKTtcbiAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuQ09NUE9ORU5UX0xPQUQsIGV2ZW50KTtcbiAgICB9LCBbXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5kYXRhKSkge1xuICAgICAgICAgICAgbGV0IGNvbmYgPSBjb25maWc7XG4gICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGNvbmYpKSB7XG4gICAgICAgICAgICAgICAgY29uZiA9IFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcHJvY2Vzc0RhdGEocHJvcHMuZGF0YSwgY29uZik7XG4gICAgICAgIH1cbiAgICB9LCBbcHJvcHMuZGF0YV0pO1xuXG4gICAgZnVuY3Rpb24gYWRkUm93Rm9jdXNMaXN0ZW5lcihyb3cpIHtcbiAgICAgICAgJCgnI1JPVy0nICsgcm93LmlkKVxuICAgICAgICAgICAgLmZvY3Vzb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3U2VsZWN0ZWQgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHNlbGVjdGVkRWxlbWVudCBvZiBzZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRFbGVtZW50ICE9PSByb3cuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkLnB1c2goc2VsZWN0ZWRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24pIHx8IHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZChuZXdTZWxlY3RlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlUm93Q2xhc3NlcyA9IChuZXdSb3dzKSA9PiB7XG4gICAgICAgIGlmIChuZXdSb3dzKSB7XG4gICAgICAgICAgICBpZiAocHJvcHMuY29uZmlnLnJvd0F0dHJpYnV0ZXMgJiYgcHJvcHMuY29uZmlnLnJvd0F0dHJpYnV0ZXMuY2xhc3NFdmFsdWF0b3IpIHtcbiAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIG5ld1Jvd3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93LmNsYXNzTmFtZSA9IGR5bmFtaWNKUy5leGVjdXRlU2NyaXB0T2JqZWN0KCdST1ctJyArIHJvdy5pZCArICdjbGFzc0V2YWx1YXRvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5jb25maWcucm93QXR0cmlidXRlcy5jbGFzc0V2YWx1YXRvciwgcHJvcHMuY29uZmlnLmlkLCB7aW5kZXh9LCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVSb3dSZWFkT25seVN0YXR1cyA9IChuZXdSb3dzKSA9PiB7XG4gICAgICAgIGlmIChuZXdSb3dzKSB7XG4gICAgICAgICAgICBpZiAocHJvcHMuY29uZmlnLnJvd0F0dHJpYnV0ZXMgJiYgcHJvcHMuY29uZmlnLnJvd0F0dHJpYnV0ZXMucmVhZE9ubHlFdmFsdWF0b3IpIHtcbiAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIG5ld1Jvd3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93LnJlYWRPbmx5ID0gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHRPYmplY3QoJ1JPVy0nICsgcm93LmlkICsgJ3JlYWRPbmx5RXZhbHVhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzLnJlYWRPbmx5RXZhbHVhdG9yLCBwcm9wcy5jb25maWcuaWQsIHtpbmRleH0sIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZUNvbHVtblJlYWRPbmx5U3RhdHVzID0gKGNvbHVtbiwgbmV3Um93cykgPT4ge1xuICAgICAgICBpZiAoY29sdW1uLmF0dHJpYnV0ZXMgJiYgY29sdW1uLmF0dHJpYnV0ZXMucmVhZE9ubHlFdmFsdWF0b3IpIHtcbiAgICAgICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFyb3cuY29sdW1uUmVhZE9ubHkpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93LmNvbHVtblJlYWRPbmx5ID0ge307XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcm93LmNvbHVtblJlYWRPbmx5W2NvbHVtbi5pZF0gPSBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdE9iamVjdCgnQ09MLScgKyByb3cuaWQgKyAnLScgKyBjb2x1bW4uaWQgKyAnLXJlYWRPbmx5RXZhbHVhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmF0dHJpYnV0ZXMucmVhZE9ubHlFdmFsdWF0b3IsIHByb3BzLmNvbmZpZy5pZCwge2luZGV4fSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKTtcbiAgICAgICAgZXZlbnRNYW5hZ2VyLnByb2Nlc3NTeXN0ZW1HZW5lcmF0ZWRTdWJzY3JpcHRpb25zKHByb3BzLmNvbmZpZy5pZCk7XG4gICAgICAgIHJvd0NvdW50LmN1cnJlbnQgPSByb3dzLmxlbmd0aDtcblxuICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIHJvd3MpO1xuICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5EQVRBX0FSUklWRUQsIGV2ZW50KTtcbiAgICB9LCBbcm93c10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwoZGVsZXRlZFJvd3MpICYmIGRlbGV0ZWRSb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgZGVsZXRlZFJvd3MpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuUk9XX0RFTEVURUQsIGV2ZW50KTtcbiAgICAgICAgICAgIHNldERlbGV0ZWRSb3dzKG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcm93Q291bnQuY3VycmVudCA9IHJvd3MubGVuZ3RoO1xuICAgIH0sIFtkZWxldGVkUm93c10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMucm93cykpIHtcbiAgICAgICAgICAgIGxldCByb3dWYWx1ZXMgPSBbXTtcblxuICAgICAgICAgICAgcm93c1JlZi5jdXJyZW50ID0gcHJvcHMucm93cztcbiAgICAgICAgICAgIHVwZGF0ZVJvd0NsYXNzZXMocHJvcHMucm93cyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBwcm9wcy5yb3dzKSB7XG4gICAgICAgICAgICAgICAgcm93VmFsdWVzLnB1c2gob2JzZXJ2ZVJvdyhyb3cpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdXBkYXRlUm93UmVhZE9ubHlTdGF0dXMocHJvcHMucm93cyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb25maWcuY29sdW1ucykge1xuICAgICAgICAgICAgICAgIHVwZGF0ZUNvbHVtblJlYWRPbmx5U3RhdHVzKGNvbHVtbiwgcHJvcHMucm93cyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IHJvd1ZhbHVlcztcbiAgICAgICAgICAgIHNldFNlbGVjdGVkKFtdKTtcbiAgICAgICAgICAgIHNldFJvd3Mocm93VmFsdWVzKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy5yb3dzXSk7XG5cblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHVwZGF0ZVJvd1JlYWRPbmx5U3RhdHVzKHJvd3MpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb25maWcuY29sdW1ucykge1xuICAgICAgICAgICAgdXBkYXRlQ29sdW1uUmVhZE9ubHlTdGF0dXMoY29sdW1uLCByb3dzKTtcbiAgICAgICAgfVxuICAgIH0sIFtyb3dzXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBmaXJlU2VsZWN0aW9uRXZlbnQoKTtcbiAgICB9LCBbc2VsZWN0ZWRdKTtcblxuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSBpZCA9PiBzZWxlY3RlZC5pbmRleE9mKGlkKSAhPT0gLTE7XG4gICAgY29uc3QgZWRpdG9yQ2hhbmdlSGFuZGxlciA9IChyb3dJZCwgZmllbGQsIHZhbHVlKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHtcbiAgICAgICAgICAgIGlmIChyb3cuaWQgPT09IHJvd0lkKSB7XG4gICAgICAgICAgICAgICAgVXRpbHMudXBkYXRlTmVzdGVkUHJvcGVydHkocm93LCBmaWVsZCwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFsdWVDaGFuZ2VDYWxsYmFjayhyb3dzKTtcbiAgICB9O1xuXG4gICAgY29uc3QgaXNGaWx0ZXJhYmxlID0gKCkgPT4ge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3BzLmNvbmZpZy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgY29sdW1uID0gcHJvcHMuY29uZmlnLmNvbHVtbnNbaV07XG4gICAgICAgICAgICBpZiAoY29sdW1uLmF0dHJpYnV0ZXNbJ2ZpbHRlcmFibGUnXSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG5cbiAgICBjb25zdCBjcmVhdGVDZWxsID0gKHJvdywgY29sdW1uTmFtZSwgY2VsbEhhbmRsZSkgPT4ge1xuICAgICAgICBsZXQgcm93Q2VsbHMgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGNlbGxzRW50cnkgb2YgY2VsbHMpIHtcbiAgICAgICAgICAgIGlmIChjZWxsc0VudHJ5LnJvd0lkID09PSByb3cuaWQpIHtcbiAgICAgICAgICAgICAgICByb3dDZWxscyA9IGNlbGxzRW50cnk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHJvd0NlbGxzKSB8fCByb3dDZWxscy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJvd0NlbGxzID0ge307XG4gICAgICAgICAgICByb3dDZWxscy5yb3dJZCA9IHJvdy5pZDtcbiAgICAgICAgICAgIGNlbGxzLnB1c2gocm93Q2VsbHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcm93Q2VsbHNbY29sdW1uTmFtZV0gPSBjZWxsSGFuZGxlO1xuICAgIH07XG5cbiAgICBjb25zdCByZWZyZXNoQ2VsbCA9IChyb3dJZCwgY29sdW1uTmFtZSkgPT4ge1xuICAgICAgICBsZXQgcm93Q2VsbHMgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGNlbGwgb2YgY2VsbHMpIHtcbiAgICAgICAgICAgIGlmIChjZWxsLnJvd0lkID09PSByb3dJZCkge1xuICAgICAgICAgICAgICAgIHJvd0NlbGxzID0gY2VsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHJvd0NlbGxzKSkge1xuICAgICAgICAgICAgbGV0IGNlbGwgPSByb3dDZWxsc1tjb2x1bW5OYW1lXTtcblxuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoY2VsbCkpIHtcbiAgICAgICAgICAgICAgICBjZWxsLmFwaS5yZWZyZXNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgcmVtb3ZlQWxsUm93RXJyb3JzQnlDb2x1bW4gPSAoY29sdW1uTmFtZSwgcm93RXJyb3JzKSA9PiB7XG4gICAgICAgIGlmIChyb3dFcnJvcnMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSByb3dFcnJvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBpZiAocm93RXJyb3JzW2ldLmNvbHVtbiA9PT0gY29sdW1uTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICByb3dFcnJvcnMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHJvd0Vycm9ySGFuZGxlciA9IChyb3dJZCwgZXJyb3IsIGNvbHVtbikgPT4ge1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMocm93RXJyb3JNYXApLmxlbmd0aCA9PT0gMCB8fCAhcm93RXJyb3JNYXBbcm93SWRdKSB7XG4gICAgICAgICAgICByb3dFcnJvck1hcFtyb3dJZF0gPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKCFyb3dFcnJvck1hcFtyb3dJZF0uZmluZChyb3dFcnJvciA9PiByb3dFcnJvci5jb2x1bW4gPT09IGNvbHVtbikpIHtcbiAgICAgICAgICAgICAgICByb3dFcnJvck1hcFtyb3dJZF0ucHVzaChlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZW1vdmVBbGxSb3dFcnJvcnNCeUNvbHVtbihjb2x1bW4sIHJvd0Vycm9yTWFwW3Jvd0lkXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBpc1Jvd0Vycm9yc0VtcHR5ID0gKCkgPT4ge1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMocm93RXJyb3JNYXApLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyb3dFcnJvck1hcCkpIHtcbiAgICAgICAgICAgIGlmIChyb3dFcnJvck1hcFtrZXldLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZUNoYW5nZUNhbGxiYWNrID0gKHZhbHVlUm93cykgPT4ge1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIpKSB7XG4gICAgICAgICAgICBwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIodmFsdWVSb3dzLCAhaXNSb3dFcnJvcnNFbXB0eSgpKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZXRUaWxlTGFiZWwocm93KSB7XG4gICAgICAgIGxldCBjb3VudGVyID0gMDtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIHtjb25maWcuY29sdW1ucy5tYXAoY29sdW1uID0+IChcbiAgICAgICAgICAgICAgICAgICAgIWNvbHVtbi5hdHRyaWJ1dGVzLmhpZGRlbiA/XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBrZXk9e2NvdW50ZXIrK30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd1shVXRpbHMuaXNOdWxsKGNvbHVtbi5kYXRhQmluZGluZykgPyBjb2x1bW4uZGF0YUJpbmRpbmcgOiBjb2x1bW4uaWRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4gOlxuICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbmRlclRpbGUocm93LCBrZXkpIHtcbiAgICAgICAgY29uc3QgaXNJdGVtU2VsZWN0ZWQgPSBpc1NlbGVjdGVkKHJvdy5pZCk7XG4gICAgICAgIHJldHVybiAoPEdyaWQgaXRlbSB4cyBzdHlsZT17VXRpbHMubWVyZ2VPYmplY3RzKHByb3BzLmNvbmZpZy50aWxlU3R5bGUsIHtcbiAgICAgICAgICAgIGhlaWdodDogJzIwMHB4JyxcbiAgICAgICAgICAgIG1pbldpZHRoOiAnMjAwcHgnXG4gICAgICAgIH0pfSBrZXk9e2tleX0+XG4gICAgICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJvdXRsaW5lZFwiIGNvbG9yPXtcInNlY29uZGFyeVwifVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiBpc0l0ZW1TZWxlY3RlZCA/ICcxcHggc29saWQgMXB4IHNvbGlkICNmMmE5MDAnIDogJzFweCBzb2xpZCAjZTJlMmUyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGlzSXRlbVNlbGVjdGVkID8gJyNmZmY4ZTEnIDogJyNmYWZhZmEnLFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiBkb0hhbmRsZUNsaWNrKGV2ZW50LCByb3cuaWQpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0VGlsZUxhYmVsKHJvdylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9HcmlkPik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVuZGVyVGlsZXMoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByb3dzLm1hcCgocm93LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNJdGVtU2VsZWN0ZWQgPSBpc1NlbGVjdGVkKHJvdy5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbElkID0gYGVuaGFuY2VkLXRhYmxlLWNoZWNrYm94LSR7aW5kZXh9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdy5pbmRleCA9IGluZGV4O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclRpbGUocm93LCBpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVDb2x1bW5MYXlvdXRIYW5kbGUoY29sdW1uLCBpbmRleCkge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGNvbHVtbkxheW91dEhhbmRsZXNbY29sdW1uLmlkICsgaW5kZXhdKSkge1xuICAgICAgICAgICAgbGV0IGhhbmRsZSA9IHt9O1xuICAgICAgICAgICAgY29sdW1uTGF5b3V0SGFuZGxlc1tjb2x1bW4uaWQgKyBpbmRleF0gPSBoYW5kbGU7XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbHVtbkxheW91dEhhbmRsZXNbY29sdW1uLmlkICsgaW5kZXhdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUNlbGxFZGl0b3JIYW5kbGUoY29sdW1uKSB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwoZWRpdG9ySGFuZGxlc1tjb2x1bW4uaWQgKyBcIl9lZGl0b3JcIl0pKSB7XG4gICAgICAgICAgICBsZXQgaGFuZGxlID0ge307XG4gICAgICAgICAgICBlZGl0b3JIYW5kbGVzW2NvbHVtbi5pZCArIFwiX2VkaXRvclwiXSA9IGhhbmRsZTtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZWRpdG9ySGFuZGxlc1tjb2x1bW4uaWQgKyBcIl9lZGl0b3JcIl07XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgdmlzaWJsZSAmJlxuICAgICAgICA8ZGl2IGlkPXtwcm9wcy5jb25maWcuaWR9IGNsYXNzTmFtZT17VXRpbHMuZ2V0Q29tcG9uZW50QXR0cmlidXRlKHByb3BzLmNvbmZpZywgJ2NsYXNzTmFtZScsIG51bGwpfSBzdHlsZT17KFV0aWxzLmlzTnVsbChwcm9wcy5oYXNCb3JkZXIpIHx8IHByb3BzLmhhc0JvcmRlciA9PT0gdHJ1ZSkgP1xuICAgICAgICAgICAgVXRpbHMubWVyZ2VTdHlsZXMoe1xuICAgICAgICAgICAgICAgIG1hcmdpbjogJzAnLFxuICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZTJlMmUyJyxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc0cHgnXG4gICAgICAgICAgICB9LCBwcm9wcy5jb25maWcpIDogcHJvcHMuc3R5bGV9PlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLm5vdGVzKSA/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLmNvbmZpZy5ub3Rlcy5tYXAoKG5vdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17bm90ZUtleSsrfSBzdHlsZT17e3BhZGRpbmc6ICc4cHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFsZXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7bWFyZ2luQm90dG9tOiAnMCd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXtub3RlLm1lc3NhZ2VUeXBlID09PSAnV0FSTicgPyAnd2FybmluZycgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90ZS5tZXNzYWdlVHlwZSA9PT0gJ0lORk8nID8gJycgOiAnZGFuZ2VyJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdz17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7Y29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCknfX0+e25vdGUubWVzc2FnZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcm93c1BlclBhZ2VPcHRpb25zLmluY2x1ZGVzKHByb3BzLmNvbmZpZy5wYWdlU2l6ZSkgP1xuICAgICAgICAgICAgICAgICAgICBjb25maWcuZ3JpZFR5cGUgPT09ICdUSUxFJyA/XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7bWFyZ2luOiAnMCAwIDhweCA4cHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGaWx0ZXJhYmxlKCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEYXRhR3JpZEZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2ZpbHRlckhhbmRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtwcm9wcy5jb25maWd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJXcmFwcGVyQ2xhc3M9e3Byb3BzLmZpbHRlcldyYXBwZXJDbGFzc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsV2lkdGg9e3Njcm9sbFdpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbHRlclN1Ym1pdD17c2VhcmNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlcXVlc3RTb3J0PXtoYW5kbGVSZXF1ZXN0U29ydH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5yb290fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdyaWQgY29udGFpbmVyIHNwYWNpbmc9ezF9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdyaWQgY29udGFpbmVyIGl0ZW0geHM9ezEyfSBzcGFjaW5nPXsxfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclRpbGVzKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICc0cHggOHB4IDAgOHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQm90dG9tOiAnMXB4IHNvbGlkICNlMmUyZTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN3aXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXt3cmFwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFdyYXAoZS50YXJnZXQuY2hlY2tlZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN4PXt7ICcmIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsJzogeyBmb250U2l6ZTogJzAuNzVyZW0nIH0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiV3JhcCB0YWJsZSB0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0ge2ByZXNwb25zaXZlLXRhYmxlYH0gc3R5bGU9e3toZWlnaHQ6IHByb3BzLmhlaWdodH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGFibGUgY2xhc3NOYW1lPXtgJHsnb3VpVGFibGUnICsgKHJvd3MubGVuZ3RoID09PSAwID8gJyBvdWlUYWJsZS1lbXB0eScgOiAnJyl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxTcGFjaW5nPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJ0YWJsZVRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7d2lkdGg6ICcxMDAlJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZCBjbGFzc05hbWU9eydmaWx0ZXJIZWFkJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e3dpZHRoOiAnY2FsYygxMDAlIC0gJyArIHByb3BzLnNjcm9sbFdpZHRoICsgJ3B4KSd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZpbHRlcmFibGUoKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEYXRhR3JpZEZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtmaWx0ZXJIYW5kbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbmZpZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyV3JhcHBlckNsYXNzPXtwcm9wcy5maWx0ZXJXcmFwcGVyQ2xhc3N9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxXaWR0aD17c2Nyb2xsV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbHRlclN1Ym1pdD17c2VhcmNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25SZXF1ZXN0U29ydD17aGFuZGxlUmVxdWVzdFNvcnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERhdGFHcmlkSGVhZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17aGVhZGluZ0hhbmRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e2NvbmZpZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1TZWxlY3RlZD17c2VsZWN0ZWQubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFdpZHRoPXtzY3JvbGxXaWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdEFsbENsaWNrPXtoYW5kbGVTZWxlY3RBbGxDbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlcXVlc3RTb3J0PXtoYW5kbGVSZXF1ZXN0U29ydH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dDb3VudD17dG90YWxOdW1iZXJPZlJvd3N9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXplSGFuZGxlcj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSb3dzKFsuLi5yb3dzXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRib2R5IGNsYXNzTmFtZT17Y2xhc3Nlcy50YWJsZUJvZHl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3ttYXhIZWlnaHQ6IFV0aWxzLmlzTnVsbChwcm9wcy5ib2R5TWF4SGVpZ2h0KSA/IHByb3BzLmJvZHlNYXhIZWlnaHQgOiAnNDJ2aCd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwibWFpblRhYmxlQm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyb3dzLm1hcCgocm93LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0l0ZW1TZWxlY3RlZCA9IGlzU2VsZWN0ZWQocm93LmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFiZWxJZCA9IGBlbmhhbmNlZC10YWJsZS1jaGVja2JveC0ke2luZGV4fWA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRlZmF1bHRSb3dTdHlsZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzICYmIHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzLnN0eWxlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLm1lcmdlT2JqZWN0cyhwcm9wcy5jb25maWcucm93QXR0cmlidXRlcy5zdHlsZSwgZGVmYXVsdFJvd1N0eWxlKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Um93U3R5bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBoYW5kbGVSb3dNb3VzZUVudGVyKHJvdyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXtoYW5kbGVSb3dNb3VzZUxlYXZlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IGhhbmRsZUNsaWNrKGV2ZW50LCByb3csIGluZGV4KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY2hlY2tlZD17aXNJdGVtU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9eydST1ctJyArIHJvdy5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17aXNJdGVtU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnb3VpLXRhYmxlLXJvdyAnICsgKChoaWdobGlnaHRSb3dTZWxlY3Rpb24uY3VycmVudCA/IGlzSXRlbVNlbGVjdGVkID8gY2xhc3Nlcy50YWJsZVNlbGVjdGVkIDogY2xhc3Nlcy50YWJsZVJvdyA6ICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChyb3cuY2xhc3NOYW1lID8gKCcgJyArIHJvdy5jbGFzc05hbWUpIDogJycpKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zZWxlY3Rpb25Nb2RlID09PSAnTVVMVElQTEUnID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUZCBwYWRkaW5nPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXtNVUxUSV9TRUxFQ1RfQ0hFQ0tCT1hfQ09MX1dJRFRIICsgJ3B4J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eydzZWxlY3RDZWxsJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2lzSXRlbVNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFByb3BzPXt7J2FyaWEtbGFiZWxsZWRieSc6IGxhYmVsSWR9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RkPiA6IG51bGxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29uZmlnLmNvbHVtbnMubWFwKGNvbHVtbiA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24oY29sdW1uLmF0dHJpYnV0ZXNbJ2hpZGRlbiddLCBwcm9wcy5jb25maWcuaWQpID09PSB0cnVlID8gbnVsbCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4ubGF5b3V0ID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogY29sdW1uLmF0dHJpYnV0ZXMud2lkdGggPyBjb2x1bW4uYXR0cmlidXRlcy53aWR0aCA6ICgxMDAgLyBjb25maWcuY29sdW1ucy5sZW5ndGgpICsgJyUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ249XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXshcHJvcHMuZGlzYWJsZWQgJiYgaXNJdGVtU2VsZWN0ZWQgJiYgIVV0aWxzLmlzTnVsbChwcm9wcy5mb3JtKSAmJiAhVXRpbHMuaXNOdWxsKGNvbHVtbi5lZGl0b3IpID8gJ2VkaXRDZWxsJyA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXggKyBcIl9cIiArIGNvbHVtbi5pZH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXlvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29sdW1uTGF5b3V0SGFuZGxlKGNvbHVtbiwgaW5kZXgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleCArIFwiX1wiICsgY29sdW1uLmlkICsgXCJfbGF5b3V0XCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVJvdz17cm93cy5maW5kKChyKSA9PiByLmlkID09PSByb3cuaWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93SW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHByb3BzLmNvbmZpZy5jb2x1bW5zLmZpbmQoKGNvbCkgPT4gY29sLmlkID09PSBjb2x1bW4uaWQpLmxheW91dCkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9IHBhcmVudD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UZD4gOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNvbHVtbi5hdHRyaWJ1dGVzLndpZHRoID8gY29sdW1uLmF0dHJpYnV0ZXMud2lkdGggOiAoMTAwIC8gY29uZmlnLmNvbHVtbnMubGVuZ3RoKSArICclJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduPVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IXByb3BzLmRpc2FibGVkICYmIGlzSXRlbVNlbGVjdGVkICYmICFVdGlscy5pc051bGwoY29sdW1uLmVkaXRvcikgPyAnZWRpdENlbGwnIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleCArIFwiX1wiICsgY29sdW1uLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiBoYW5kbGVDZWxsQ2xpY2soZXZlbnQsIHJvdy5pZCwgY29sdW1uKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGxDb250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwPXt3cmFwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Sb3dFcnJvcj17cm93RXJyb3JIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDZWxsRWRpdG9ySGFuZGxlKGNvbHVtbil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvcj17IXByb3BzLmRpc2FibGVkICYmICFyb3cucmVhZE9ubHkgJiYgIXJvdy5jb2x1bW5SZWFkT25seT8uW2NvbHVtbj8uaWRdID8gY29sdW1uLmVkaXRvciA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZDYWxsYmFjaz17Y3JlYXRlQ2VsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtpc0l0ZW1TZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcj17Y29sdW1uLnZhbGlkYXRvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17ZWRpdG9yQ2hhbmdlSGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbmZpZz17Y29sdW1ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUJpbmRpbmc9eyFVdGlscy5pc051bGwoY29sdW1uLmRhdGFCaW5kaW5nKSA/IGNvbHVtbi5kYXRhQmluZGluZyA6IGNvbHVtbi5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdz17cm93fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGU9e2NvbHVtbi5maWVsZFR5cGUgfHwgY29sdW1uLmVkaXRvcj8uZmllbGRUeXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbEZvcm1hdHRlcj17Y29sdW1uLmNlbGxGb3JtYXR0ZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcml0ZXJpYT17Y3JpdGVyaWF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UZD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ucj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5wYWdpbmF0aW9uKSAmJiAoVXRpbHMuaXNOdWxsKHByb3BzLnBhZ2luYXRpb24pIHx8IHByb3BzLnBhZ2luYXRpb24gPT09IHRydWUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAocHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LnBhZ2luYXRpb24gJiYgcHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LnBhZ25hdGlvbiA9PT0gdHJ1ZSkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYWdpbmF0aW9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZVBhZ2luYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtcImdyaWQtdGFibGUtcGFnaW5hdGlvblwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzUGVyUGFnZU9wdGlvbnM9e3Jvd3NQZXJQYWdlT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50PVwiZGl2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ9e3RvdGFsTnVtYmVyT2ZSb3dzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzUGVyUGFnZT17cm93c1BlclBhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U9e3BhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tJY29uQnV0dG9uUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmlhLWxhYmVsJzogJ3ByZXZpb3VzIHBhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0SWNvbkJ1dHRvblByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbCc6ICduZXh0IHBhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhZ2VDaGFuZ2U9e2hhbmRsZUNoYW5nZVBhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUm93c1BlclBhZ2VDaGFuZ2U9e2hhbmRsZUNoYW5nZVJvd3NQZXJQYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUMsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0QsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsMEJBQUEsR0FBQUYsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUcsU0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBSyxZQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxlQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxnQkFBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsaUJBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFTLGdCQUFBLEdBQUFWLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBVSxPQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxNQUFBLEdBQUFaLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBWSxXQUFBLEdBQUFiLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBYSxVQUFBLEdBQUFkLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBYyxLQUFBLEdBQUFmLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBZSxPQUFBLEdBQUFoQixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQWdCLENBQUEsR0FBQUMsdUJBQUEsQ0FBQWpCLE9BQUE7QUFDQSxJQUFBa0IsTUFBQSxH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RUFBRUEsR0FBSTtRQUNUeVEsV0FBVyxFQUFFdFgsTUFBTSxDQUFDbU4sU0FBUyxNQUFBb0osY0FBQSxHQUFJdlcsTUFBTSxDQUFDOFAsTUFBTSxjQUFBeUcsY0FBQSx1QkFBYkEsY0FBQSxDQUFlcEosU0FBUyxDQUFDO1FBQzFEb0ssYUFBYSxFQUFFdlgsTUFBTSxDQUFDdVgsYUFBYztRQUNwQzlTLFFBQVEsRUFBRUE7TUFBUyxDQUN0QixDQUNELENBQUM7SUFBQSxDQUVoQixDQUNELENBQUM7RUFFYixDQUFDLENBQ0UsQ0FDSixDQUNOLENBQUMsRUFFRC9ELGNBQUssQ0FBQ0MsTUFBTSxFQUFBZ0QscUJBQUEsR0FBQ0YsS0FBSyxDQUFDUSxNQUFNLENBQUM1RCxVQUFVLGNBQUFzRCxxQkFBQSx1QkFBdkJBLHFCQUFBLENBQXlCNlQsVUFBVSxDQUFDLEtBQUs5VyxjQUFLLENBQUNDLE1BQU0sQ0FBQzhDLEtBQUssQ0FBQytULFVBQVUsQ0FBQyxJQUFJL1QsS0FBSyxDQUFDK1QsVUFBVSxLQUFLLElBQUksQ0FBQyxJQUMvRyxDQUFBNVQsc0JBQUEsR0FBQUgsS0FBSyxDQUFDUSxNQUFNLENBQUM1RCxVQUFVLGNBQUF1RCxzQkFBQSxlQUF2QkEsc0JBQUEsQ0FBeUI0VCxVQUFVLElBQUksRUFBQTNULHNCQUFBLEdBQUFKLEtBQUssQ0FBQ1EsTUFBTSxDQUFDNUQsVUFBVSxjQUFBd0Qsc0JBQUEsdUJBQXZCQSxzQkFBQSxDQUF5QjRULFNBQVMsTUFBSyxJQUFLLGdCQUNuRjVhLE1BQUEsQ0FBQXNDLE9BQUEsQ0FBQThULGFBQUE7SUFBS2pDLFNBQVMsRUFBQztFQUFzQixnQkFDakNuVSxNQUFBLENBQUFzQyxPQUFBLENBQUE4VCxhQUFBLENBQUN6VixnQkFBQSxDQUFBMkIsT0FBZTtJQUNaNlIsU0FBUyxFQUFFLHVCQUF3QjtJQUNuQzVMLGtCQUFrQixFQUFFQSxrQkFBbUI7SUFDdkNxSixTQUFTLEVBQUMsS0FBSztJQUNmaUosS0FBSyxFQUFFblQsaUJBQWtCO0lBQ3pCZ0IsV0FBVyxFQUFFQSxXQUFZO0lBQ3pCYixJQUFJLEVBQUVBLElBQUs7SUFDWGlULG1CQUFtQixFQUFFO01BQ2pCLFlBQVksRUFBRTtJQUNsQixDQUFFO0lBQ0ZDLG1CQUFtQixFQUFFO01BQ2pCLFlBQVksRUFBRTtJQUNsQixDQUFFO0lBQ0ZDLFlBQVksRUFBRXpLLGdCQUFpQjtJQUMvQjBLLG1CQUFtQixFQUFFdks7RUFBd0IsQ0FDaEQsQ0FDQSxDQUFDLEdBRU4sSUFFUCxDQUFDLEdBRVYsSUFFUCxDQUFDO0FBRWQsQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
1038
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHlsZXMiLCJfcmVhY3RTdXBlclJlc3BvbnNpdmVUYWJsZSIsIl9DaGVja2JveCIsIl9VdGlscyIsIl9SZXN0U2VydmljZSIsIl9EYXRhR3JpZEZpbHRlciIsIl9EYXRhR3JpZEhlYWRpbmciLCJfVGFibGVDZWxsQ29udGVudCIsIl9UYWJsZVBhZ2luYXRpb24iLCJfY29sb3JzIiwiX0V2ZW50IiwiX09ic2VydmFibGUiLCJfRXZlbnRUeXBlIiwiX0dyaWQiLCJfQnV0dG9uIiwiJCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX0FsZXJ0IiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9MYXlvdXQiLCJfRHluYW1pY0pTIiwiX1N3aXRjaCIsIl9Gb3JtQ29udHJvbExhYmVsIiwiX0dyYWJDb250ZXh0IiwiX0N1cnNvck92ZXJsYXkiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJNVUxUSV9TRUxFQ1RfQ0hFQ0tCT1hfQ09MX1dJRFRIIiwiZXhwb3J0cyIsImV2YWx1YXRlVGFibGVDZWxsV2lkdGgiLCJtdWx0aVNlbGVjdCIsImNvbHVtbiIsImNvbHVtbkNvdW50Iiwid2lkdGgiLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJpc0V4cHJlc3Npb24iLCJhdHRyaWJ1dGVzIiwiZHluYW1pY0pTIiwiZXhlY3V0ZVNjcmlwdCIsImNvbmNhdCIsImlkIiwiVXRpbHMiLCJpc051bGwiLCJkZXNjIiwiYSIsImIiLCJvcmRlckJ5Iiwic3RhYmxlU29ydCIsImFycmF5IiwiY21wIiwic3RhYmlsaXplZFRoaXMiLCJtYXAiLCJlbCIsImluZGV4Iiwic29ydCIsIm9yZGVyIiwiZ2V0U29ydGluZyIsInVzZVN0eWxlcyIsIm1ha2VTdHlsZXMiLCJ0aGVtZSIsInJvb3QiLCJtYXJnaW5Ub3AiLCJzcGFjaW5nIiwicGFwZXIiLCJoZWlnaHQiLCJwb3NpdGlvbiIsInpJbmRleCIsInNjcm9sbFBhZGRpbmciLCJwYWRkaW5nIiwibm9TY3JvbGxQYWRkaW5nIiwidGFibGVCb2R5IiwiZGlzcGxheSIsIm92ZXJmbG93WSIsInRhYmxlU2VsZWN0ZWQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJncmV5MzAwIiwiYmFja2dyb3VuZCIsInRhYmxlUm93IiwidGFibGVXcmFwcGVyIiwidGFibGUiLCJ2aXN1YWxseUhpZGRlbiIsImJvcmRlciIsImNsaXAiLCJtYXJnaW4iLCJ0b3AiLCJEYXRhR3JpZCIsIlJlYWN0IiwibWVtbyIsInByb3BzIiwiX2NvbmZpZyRhdHRyaWJ1dGVzIiwiX3Byb3BzJGNvbmZpZyRhdHRyaWJ1IiwiX3Byb3BzJGNvbmZpZyRhdHRyaWJ1MiIsIl9wcm9wcyRjb25maWckYXR0cmlidTMiLCJjbGFzc2VzIiwic2V0T3JkZXIiLCJ1c2VTdGF0ZSIsImNvbmZpZyIsInBhcnNlQ29uZmlnIiwidmlld0lkIiwic2V0T3JkZXJCeSIsInNlbGVjdGVkIiwic2V0U2VsZWN0ZWQiLCJ0b3RhbE51bWJlck9mUm93cyIsInNldFRvdGFsTnVtYmVyT2ZSb3dzIiwiY3JpdGVyaWEiLCJwYWdlIiwic2V0UGFnZSIsInJvd3MiLCJzZXRSb3dzIiwiZGVsZXRlZFJvd3MiLCJzZXREZWxldGVkUm93cyIsImVkaXRhYmxlIiwic2V0RWRpdGFibGUiLCJzY3JvbGxXaWR0aCIsInNldFNjcm9sbFdpZHRoIiwicm93c1BlclBhZ2VPcHRpb25zIiwicm93c1BlclBhZ2VMb2FkaW5nIiwic2V0Um93c1BlclBhZ2VMb2FkaW5nIiwicm93c1BlclBhZ2UiLCJzZXRSb3dzUGVyUGFnZSIsInBhZ2VTaXplIiwiaGlnaGxpZ2h0Um93U2VsZWN0aW9uIiwidXNlUmVmIiwiZGlzYWJsZVJvd1NlbGVjdGlvbiIsImNlbGxzIiwiaGVhZGluZ0hhbmRsZSIsImZpbHRlckhhbmRsZSIsImNvbHVtbkxheW91dEhhbmRsZXMiLCJlZGl0b3JIYW5kbGVzIiwicm93RXJyb3JNYXAiLCJ2aXNpYmxlIiwic2V0VmlzaWJsZSIsIndyYXAiLCJzZXRXcmFwIiwicm93Q291bnQiLCJyb3dzUmVmIiwibm90ZUtleSIsImNvbHVtbldpZHRocyIsImRyYWdTcGVjIiwicm93R3JhYlNwZWMiLCJyb3ciLCJyb3dzR3JhYmJhYmxlIiwiZW5hYmxlZCIsImFwaSIsInBhcmFtZXRlcnMiLCJpc0ZpbHRlcmFibGUiLCJnZXRQYXJhbWV0ZXJzIiwic2VsZWN0aW9uIiwic2VsZWN0ZWRSb3dzIiwibGVuZ3RoIiwiaiIsInB1c2giLCJjb2x1bW5EYXRhQmluZGluZ3MiLCJjb2x1bW5OYW1lcyIsImNvbHVtbnMiLCJkYXRhQmluZGluZyIsImdldENoaWxkcmVuIiwiY2hpbGRyZW4iLCJjaGlsZCIsInByb3BlcnRpZXMiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwicHJvcGVydHkiLCJjb2x1bW5MYXlvdXRIYW5kbGUiLCJtb3JlQ2hpbGRyZW4iLCJlZGl0b3JIYW5kbGUiLCJsb2FkRGF0YSIsImFjdGlvbkNvbmZpZyIsImV2ZW50Iiwic2VhcmNoIiwiZGVsZXRlU2VsZWN0ZWRSb3dzIiwibmV3Um93cyIsImZpbHRlciIsImlzU2VsZWN0ZWQiLCJnZXRTZWxlY3RlZFJvd3MiLCJzcGxpY2UiLCJuZXdSb3ciLCJvblNlbGVjdGlvbkNoYW5nZSIsInVwZGF0ZVNjcm9sbEJhclBhZGRpbmciLCJjdXJyZW50IiwidmFsdWVDaGFuZ2VDYWxsYmFjayIsImNsZWFyIiwiRXZlbnQiLCJoYW5kbGUiLCJldmVudE1hbmFnZXIiLCJmaXJlRXZlbnQiLCJFdmVudFR5cGUiLCJTRUxFQ1RJT05fQ0hBTkdFIiwiZGVsZXRlUm93cyIsInJvd0lkcyIsImlkU2V0IiwiU2V0IiwicmVtYWluaW5nIiwic2VsZWN0IiwiYWRkUm93cyIsIm9ic2VydmVSb3ciLCJuZXdTZWxlY3Rpb24iLCJudW1iZXJPZlBhZ2VzIiwicmVmcmVzaCIsInBhcnNlZENvbmZpZyIsImV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24iLCJmb3JtQXBpIiwiaGFuZGxlUm93R3JhYlRvZ2dsZSIsImlzUm93R3JhYmJhYmxlIiwiR3JhYkNvbnRleHQiLCJpc0FjdGl2ZSIsImdyYWIiLCJyb3dJbmRleCIsImNvbXBvbmVudElkIiwiQ3Vyc29yT3ZlcmxheSIsInNob3ciLCJST1dfR1JBQl9TVEFSVCIsInRib2R5IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsIm9mZnNldFdpZHRoIiwiY2xpZW50V2lkdGgiLCJ3aW5kb3ciLCJvbnJlc2l6ZSIsImhhbmRsZVJlcXVlc3RTb3J0IiwiaXNEZXNjIiwiaGFuZGxlU2VsZWN0QWxsQ2xpY2siLCJ0YXJnZXQiLCJjaGVja2VkIiwibmV3U2VsZWN0ZWRzIiwibmFtZSIsImVuYWJsZUZvcm1NYXJrZXJzIiwiZG9IYW5kbGVDbGljayIsInNlbGVjdGVkSW5kZXgiLCJpbmRleE9mIiwibmV3U2VsZWN0ZWQiLCJzbGljZSIsImZpcmVTZWxlY3Rpb25FdmVudCIsImdyaWRUeXBlIiwiaXNSb3dEcmFnRGlzYWJsZWQiLCJkaXNhYmxlZFdoZW4iLCJleGVjdXRlU2NyaXB0T2JqZWN0Iiwic2V0Q3Vyc29yIiwiY3Vyc29yIiwiYm9keSIsInN0eWxlIiwiaGFuZGxlUm93TW91c2VFbnRlciIsImhhbmRsZVJvd01vdXNlTGVhdmUiLCJoYW5kbGVDbGljayIsImNsb3Nlc3QiLCJzdG9wUHJvcGFnYXRpb24iLCJvbkNlbGxTZWxlY3Rpb25DaGFuZ2UiLCJoYW5kbGVDZWxsQ2xpY2siLCJmaWVsZFR5cGUiLCJoYW5kbGVDaGFuZ2VQYWdlIiwibmV3UGFnZSIsImN1cnJlbnRQYWdlIiwiaGFuZGxlQ2hhbmdlUm93c1BlclBhZ2UiLCJ2YWx1ZSIsInByb2Nlc3NEYXRhIiwiZGF0YSIsImNvbmYiLCJ0b3RhbE51bWJlck9mUmVjb3JkcyIsInJlY29yZHMiLCJ1cGRhdGVSb3dDbGFzc2VzIiwidGFibGVSb3dzIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwic2VydmljZSIsImRhdGFTZXJ2aWNlIiwic2VydmljZVR5cGUiLCJ0eXBlIiwibWV0aG9kIiwiaW52b2tlUnBjIiwiaW52b2tlUmVzdCIsImNvbXBvbmVudCIsInRoZW4iLCJyZXN1bHQiLCJjYXRjaCIsImNvbnNvbGUiLCJlcnJvciIsImVycm9yVHlwZSIsInB1Ymxpc2hFcnJvck1lc3NhZ2UiLCJFcnJvciIsInJlc29sdmVQYXJhbWV0ZXJDb25maWdWYWx1ZSIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsImV2ZW50SGFuZGxpbmdDb25maWciLCJzdWJzY3JpcHRpb25zIiwiYWRkU3Vic2NyaXB0aW9ucyIsImFkZFN5c3RlbVN1YnNjcmlwdGlvbnMiLCJpc0VkaXRhYmxlIiwidmlzaWJsZUNvbHVtbkNvdW50IiwiaGlkZGVuIiwiZ2V0Q29tcG9uZW50QXR0cmlidXRlIiwic2VsZWN0aW9uTW9kZSIsImVkaXRvciIsImRlZmF1bHRFZGl0b3IiLCJkYXRhUXVlcnlOYW1lIiwiaGFzTG9hZEV2ZW50IiwibG9hZFN1YnNjcmlwdGlvbnMiLCJzdWJzY3JpcHRpb24iLCJldmVudFR5cGUiLCJsb2FkU3Vic2NyaXB0aW9uIiwiYWN0aW9ucyIsImFjdGlvbiIsImFjdGlvblR5cGUiLCJhdXRvTG9hZERhdGEiLCJDT01QT05FTlRfTE9BRCIsImFkZFJvd0ZvY3VzTGlzdGVuZXIiLCJmb2N1c291dCIsInNlbGVjdGVkRWxlbWVudCIsInJvd0F0dHJpYnV0ZXMiLCJjbGFzc0V2YWx1YXRvciIsImNsYXNzTmFtZSIsInVwZGF0ZVJvd1JlYWRPbmx5U3RhdHVzIiwicmVhZE9ubHlFdmFsdWF0b3IiLCJyZWFkT25seSIsInVwZGF0ZUNvbHVtblJlYWRPbmx5U3RhdHVzIiwiY29sdW1uUmVhZE9ubHkiLCJwcm9jZXNzU3lzdGVtR2VuZXJhdGVkU3Vic2NyaXB0aW9ucyIsIkRBVEFfQVJSSVZFRCIsIlJPV19ERUxFVEVEIiwicm93VmFsdWVzIiwiZWRpdG9yQ2hhbmdlSGFuZGxlciIsInJvd0lkIiwiZmllbGQiLCJ1cGRhdGVOZXN0ZWRQcm9wZXJ0eSIsImNyZWF0ZUNlbGwiLCJjb2x1bW5OYW1lIiwiY2VsbEhhbmRsZSIsInJvd0NlbGxzIiwiY2VsbHNFbnRyeSIsInJlZnJlc2hDZWxsIiwiY2VsbCIsInJlbW92ZUFsbFJvd0Vycm9yc0J5Q29sdW1uIiwicm93RXJyb3JzIiwicm93RXJyb3JIYW5kbGVyIiwia2V5cyIsImZpbmQiLCJyb3dFcnJvciIsImlzUm93RXJyb3JzRW1wdHkiLCJrZXkiLCJ2YWx1ZVJvd3MiLCJ2YWx1ZUNoYW5nZUhhbmRsZXIiLCJnZXRUaWxlTGFiZWwiLCJjb3VudGVyIiwiY3JlYXRlRWxlbWVudCIsInJlbmRlclRpbGUiLCJpc0l0ZW1TZWxlY3RlZCIsIml0ZW0iLCJ4cyIsIm1lcmdlT2JqZWN0cyIsInRpbGVTdHlsZSIsIm1pbldpZHRoIiwidmFyaWFudCIsImNvbG9yIiwib25DbGljayIsInJlbmRlclRpbGVzIiwiRnJhZ21lbnQiLCJsYWJlbElkIiwiY3JlYXRlQ29sdW1uTGF5b3V0SGFuZGxlIiwiY3JlYXRlQ2VsbEVkaXRvckhhbmRsZSIsImhhc0JvcmRlciIsIm1lcmdlU3R5bGVzIiwiYm9yZGVyUmFkaXVzIiwibm90ZXMiLCJub3RlIiwibWFyZ2luQm90dG9tIiwibWVzc2FnZVR5cGUiLCJtZXNzYWdlIiwiaW5jbHVkZXMiLCJmaWx0ZXJXcmFwcGVyQ2xhc3MiLCJvbkZpbHRlclN1Ym1pdCIsIm9uUmVxdWVzdFNvcnQiLCJjb250YWluZXIiLCJib3JkZXJCb3R0b20iLCJjb250cm9sIiwib25DaGFuZ2UiLCJzeCIsImZvbnRTaXplIiwibGFiZWwiLCJUYWJsZSIsImNlbGxTcGFjaW5nIiwibnVtU2VsZWN0ZWQiLCJvblNlbGVjdEFsbENsaWNrIiwicmVzaXplSGFuZGxlciIsIlRib2R5IiwibWF4SGVpZ2h0IiwiYm9keU1heEhlaWdodCIsImRlZmF1bHRSb3dTdHlsZSIsImZsZXhXcmFwIiwiYWxpZ25JdGVtcyIsIlRyIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwib25Eb3VibGVDbGljayIsIm9uUm93RG91YmxlQ2xpY2siLCJyb2xlIiwidGFiSW5kZXgiLCJUZCIsImlucHV0UHJvcHMiLCJfcm93JGNvbHVtblJlYWRPbmx5IiwiX2NvbHVtbiRlZGl0b3IiLCJsYXlvdXQiLCJhbGlnbiIsImRpc2FibGVkIiwiZm9ybSIsIkxheW91dCIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsImNvbCIsInBhcmVudCIsIm9uUm93RXJyb3IiLCJyZWZDYWxsYmFjayIsInZhbGlkYXRvciIsImNvbHVtbkNvbmZpZyIsImNvbnRlbnRUeXBlIiwiY2VsbEZvcm1hdHRlciIsInBhZ2luYXRpb24iLCJwYWduYXRpb24iLCJjb3VudCIsImJhY2tJY29uQnV0dG9uUHJvcHMiLCJuZXh0SWNvbkJ1dHRvblByb3BzIiwib25QYWdlQ2hhbmdlIiwib25Sb3dzUGVyUGFnZUNoYW5nZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9EYXRhR3JpZC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7bWFrZVN0eWxlc30gZnJvbSAnQG11aS9zdHlsZXMnO1xuaW1wb3J0IHtUYWJsZSwgVGJvZHksIFRkLCBUcn0gZnJvbSAncmVhY3Qtc3VwZXItcmVzcG9uc2l2ZS10YWJsZSc7XG5pbXBvcnQgJ3JlYWN0LXN1cGVyLXJlc3BvbnNpdmUtdGFibGUvZGlzdC9TdXBlclJlc3BvbnNpdmVUYWJsZVN0eWxlLmNzcyc7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSAnQG11aS9tYXRlcmlhbC9DaGVja2JveCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vVXRpbHMnO1xuaW1wb3J0ICcuL0RhdGFHcmlkLmNzcyc7XG5pbXBvcnQge2ludm9rZVJlc3QsIGludm9rZVJwY30gZnJvbSAnLi4vUmVzdFNlcnZpY2UnO1xuaW1wb3J0IERhdGFHcmlkRmlsdGVyIGZyb20gJy4vRGF0YUdyaWRGaWx0ZXInO1xuaW1wb3J0IERhdGFHcmlkSGVhZGluZyBmcm9tICcuL0RhdGFHcmlkSGVhZGluZyc7XG5pbXBvcnQgVGFibGVDZWxsQ29udGVudCBmcm9tICcuL1RhYmxlQ2VsbENvbnRlbnQnO1xuaW1wb3J0IFRhYmxlUGFnaW5hdGlvbiBmcm9tICdAbXVpL21hdGVyaWFsL1RhYmxlUGFnaW5hdGlvbic7XG5pbXBvcnQge2dyZXkzMDB9IGZyb20gJ21hdGVyaWFsLXVpL3N0eWxlcy9jb2xvcnMnO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4uL2V2ZW50L0V2ZW50JztcbmltcG9ydCBldmVudE1hbmFnZXIgZnJvbSAnLi4vZXZlbnQvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgRXZlbnRUeXBlIGZyb20gJy4uL2V2ZW50L0V2ZW50VHlwZSc7XG5pbXBvcnQgR3JpZCBmcm9tICdAbXVpL21hdGVyaWFsL0dyaWQnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICdAbXVpL21hdGVyaWFsL0J1dHRvbic7XG5pbXBvcnQgKiBhcyAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgQWxlcnQgZnJvbSAncmVhY3QtYm9vdHN0cmFwL0FsZXJ0JztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCB7TGF5b3V0fSBmcm9tICcuL2xheW91dC9MYXlvdXQnO1xuaW1wb3J0IGR5bmFtaWNKUyBmcm9tIFwiLi4vRHluYW1pY0pTXCI7XG5pbXBvcnQgU3dpdGNoIGZyb20gJ0BtdWkvbWF0ZXJpYWwvU3dpdGNoJztcbmltcG9ydCBGb3JtQ29udHJvbExhYmVsIGZyb20gJ0BtdWkvbWF0ZXJpYWwvRm9ybUNvbnRyb2xMYWJlbCc7XG5pbXBvcnQgR3JhYkNvbnRleHQgZnJvbSAnLi4vaW50ZXJhY3Rpb24vR3JhYkNvbnRleHQnO1xuaW1wb3J0IEN1cnNvck92ZXJsYXkgZnJvbSBcIi4uL2ludGVyYWN0aW9uL0N1cnNvck92ZXJsYXlcIjtcblxuZXhwb3J0IGNvbnN0IE1VTFRJX1NFTEVDVF9DSEVDS0JPWF9DT0xfV0lEVEggPSA2NDtcblxuZnVuY3Rpb24gZXZhbHVhdGVUYWJsZUNlbGxXaWR0aChtdWx0aVNlbGVjdCwgY29sdW1uLCBjb2x1bW5Db3VudCkge1xuXG4gICAgbGV0IHdpZHRoID0gYXBwbGljYXRpb25NYW5hZ2VyLmlzRXhwcmVzc2lvbihjb2x1bW4uYXR0cmlidXRlc1snd2lkdGgnXSkgP1xuICAgICAgICBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdChgcG9wdXBUaXRsZV8ke2NvbHVtbi5pZH1gLGNvbHVtbi5hdHRyaWJ1dGVzWyd3aWR0aCddLCBjb2x1bW4pIDogY29sdW1uLmF0dHJpYnV0ZXNbJ3dpZHRoJ107XG5cbiAgICByZXR1cm4gbXVsdGlTZWxlY3QgPT09IHRydWUgP1xuICAgICAgICAnY2FsYygnICsgKCFVdGlscy5pc051bGwod2lkdGgpID8gd2lkdGggOlxuICAgICAgICAgICAgKDEwMCAvIGNvbHVtbkNvdW50KSArICclJykgKyAnIC0gJyArIChNVUxUSV9TRUxFQ1RfQ0hFQ0tCT1hfQ09MX1dJRFRIIC8gY29sdW1uQ291bnQpICsgJ3B4KSdcbiAgICAgICAgOlxuICAgICAgICAodHlwZW9mIHdpZHRoICE9PSAndW5kZWZpbmVkJyA/IHdpZHRoIDogKDEwMCAvIGNvbHVtbkNvdW50KSArICclJyk7XG59XG5cbmZ1bmN0aW9uIGRlc2MoYSwgYiwgb3JkZXJCeSkge1xuICAgIGlmIChiW29yZGVyQnldIDwgYVtvcmRlckJ5XSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmIChiW29yZGVyQnldID4gYVtvcmRlckJ5XSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbmZ1bmN0aW9uIHN0YWJsZVNvcnQoYXJyYXksIGNtcCkge1xuICAgIGNvbnN0IHN0YWJpbGl6ZWRUaGlzID0gYXJyYXkubWFwKChlbCwgaW5kZXgpID0+IFtlbCwgaW5kZXhdKTtcbiAgICBzdGFiaWxpemVkVGhpcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGNvbnN0IG9yZGVyID0gY21wKGFbMF0sIGJbMF0pO1xuICAgICAgICBpZiAob3JkZXIgIT09IDApIHJldHVybiBvcmRlcjtcbiAgICAgICAgcmV0dXJuIGFbMV0gLSBiWzFdO1xuICAgIH0pO1xuICAgIHJldHVybiBzdGFiaWxpemVkVGhpcy5tYXAoZWwgPT4gZWxbMF0pO1xufVxuXG5mdW5jdGlvbiBnZXRTb3J0aW5nKG9yZGVyLCBvcmRlckJ5KSB7XG4gICAgcmV0dXJuIG9yZGVyID09PSAnZGVzYycgPyAoYSwgYikgPT4gZGVzYyhhLCBiLCBvcmRlckJ5KSA6IChhLCBiKSA9PiAtZGVzYyhhLCBiLCBvcmRlckJ5KTtcbn1cblxuY29uc3QgdXNlU3R5bGVzID0gbWFrZVN0eWxlcyh0aGVtZSA9PiAoe1xuICAgIHJvb3Q6IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgbWFyZ2luVG9wOiB0aGVtZS5zcGFjaW5nKDMpLFxuICAgIH0sXG4gICAgcGFwZXI6IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB6SW5kZXg6ICcwJyxcbiAgICB9LFxuICAgIHNjcm9sbFBhZGRpbmc6IHtcbiAgICAgICAgcGFkZGluZzogJzhweCAhaW1wb3J0YW50J1xuICAgIH0sXG4gICAgbm9TY3JvbGxQYWRkaW5nOiB7XG4gICAgICAgIHBhZGRpbmc6ICcwICFpbXBvcnRhbnQnLFxuICAgICAgICB3aWR0aDogJzFweCAhaW1wb3J0YW50J1xuICAgIH0sXG4gICAgdGFibGVCb2R5OiB7XG4gICAgICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgICAgIG92ZXJmbG93WTogJ2F1dG8nXG4gICAgfSxcbiAgICB0YWJsZVNlbGVjdGVkOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogZ3JleTMwMCxcbiAgICAgICAgJyY6aG92ZXInOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAnI2YxZjFmMSdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdGFibGVSb3c6IHtcbiAgICAgICAgJyY6aG92ZXInOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAnI2YxZjFmMSdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdGFibGVXcmFwcGVyOiB7XG4gICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgfSxcbiAgICB0YWJsZToge1xuICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICB9LFxuICAgIHZpc3VhbGx5SGlkZGVuOiB7XG4gICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgY2xpcDogJ3JlY3QoMCAwIDAgMCknLFxuICAgICAgICBoZWlnaHQ6IDEsXG4gICAgICAgIG1hcmdpbjogLTEsXG4gICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICB0b3A6IDIwLFxuICAgICAgICB3aWR0aDogMSxcbiAgICB9XG59KSk7XG5cbmV4cG9ydCBjb25zdCBEYXRhR3JpZCA9IFJlYWN0Lm1lbW8oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgY2xhc3NlcyA9IHVzZVN0eWxlcygpO1xuICAgIGNvbnN0IFtvcmRlciwgc2V0T3JkZXJdID0gUmVhY3QudXNlU3RhdGUoJ2Rlc2MnKTtcbiAgICBjb25zdCBbY29uZmlnXSA9IFJlYWN0LnVzZVN0YXRlKFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKSk7XG4gICAgY29uc3QgW29yZGVyQnksIHNldE9yZGVyQnldID0gUmVhY3QudXNlU3RhdGUoJ2lkJyk7XG4gICAgY29uc3QgW3NlbGVjdGVkLCBzZXRTZWxlY3RlZF0gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW3RvdGFsTnVtYmVyT2ZSb3dzLCBzZXRUb3RhbE51bWJlck9mUm93c10gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBbY3JpdGVyaWFdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtwYWdlLCBzZXRQYWdlXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtyb3dzLCBzZXRSb3dzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbZGVsZXRlZFJvd3MsIHNldERlbGV0ZWRSb3dzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbZWRpdGFibGUsIHNldEVkaXRhYmxlXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc2Nyb2xsV2lkdGgsIHNldFNjcm9sbFdpZHRoXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtyb3dzUGVyUGFnZU9wdGlvbnNdID0gUmVhY3QudXNlU3RhdGUoWzE1LCAzMCwgNDUsIDYwLCA3NSwgMTUwLCAzMDBdKTtcbiAgICBjb25zdCBbcm93c1BlclBhZ2VMb2FkaW5nLCBzZXRSb3dzUGVyUGFnZUxvYWRpbmddID0gUmVhY3QudXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW3Jvd3NQZXJQYWdlLCBzZXRSb3dzUGVyUGFnZV0gPSBSZWFjdC51c2VTdGF0ZShwcm9wcy5jb25maWcucGFnZVNpemUpO1xuICAgIGNvbnN0IGhpZ2hsaWdodFJvd1NlbGVjdGlvbiA9IFJlYWN0LnVzZVJlZighVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5oaWdobGlnaHRSb3dTZWxlY3Rpb24pXG4gICAgICAgID8gcHJvcHMuY29uZmlnLmhpZ2hsaWdodFJvd1NlbGVjdGlvbiA6ICFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24pID8gIXByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uIDogdHJ1ZSk7XG4gICAgY29uc3QgW2NlbGxzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbaGVhZGluZ0hhbmRsZV0gPSBSZWFjdC51c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2ZpbHRlckhhbmRsZV0gPSBSZWFjdC51c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2NvbHVtbkxheW91dEhhbmRsZXNdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtlZGl0b3JIYW5kbGVzXSA9IFJlYWN0LnVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbcm93RXJyb3JNYXBdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFt2aXNpYmxlLCBzZXRWaXNpYmxlXSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFt3cmFwLCBzZXRXcmFwXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCByb3dDb3VudCA9IFJlYWN0LnVzZVJlZigtMSk7XG4gICAgY29uc3Qgcm93c1JlZiA9IFJlYWN0LnVzZVJlZihbXSk7XG4gICAgbGV0IG5vdGVLZXkgPSAwO1xuICAgIGNvbnN0IGNvbHVtbldpZHRocyA9IFJlYWN0LnVzZVJlZih7fSk7XG5cbiAgICBjb25zdCBkcmFnU3BlYyA9IGNvbmZpZy5hdHRyaWJ1dGVzPy5kcmFnU3BlYyB8fCB7fTtcbiAgICBjb25zdCByb3dHcmFiU3BlYyA9IGRyYWdTcGVjLnJvdyB8fCB7fTtcbiAgICBjb25zdCByb3dzR3JhYmJhYmxlID0gcm93R3JhYlNwZWMuZW5hYmxlZCA9PT0gdHJ1ZTtcblxuICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuY29uZmlnLmlkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBjcml0ZXJpYSgpIHtcbiAgICAgICAgICAgICAgICBjcml0ZXJpYS5wYXJhbWV0ZXJzID0gaXNGaWx0ZXJhYmxlKCkgPyBmaWx0ZXJIYW5kbGUuYXBpLmdldFBhcmFtZXRlcnMoKSA6IFtdO1xuICAgICAgICAgICAgICAgIGNyaXRlcmlhLnBhZ2VTaXplID0gcm93c1BlclBhZ2U7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY3JpdGVyaWE7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHNlbGVjdGlvbigpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3RlZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJvd3MubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZFtpXSA9PT0gcm93c1tqXS5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkUm93cy5wdXNoKHJvd3Nbal0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkUm93cztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgY29sdW1uRGF0YUJpbmRpbmdzKCkge1xuICAgICAgICAgICAgICAgIGxldCBjb2x1bW5OYW1lcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnLmNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbHVtbiA9IGNvbmZpZy5jb2x1bW5zW2ldO1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5OYW1lcy5wdXNoKCFVdGlscy5pc051bGwoY29sdW1uLmRhdGFCaW5kaW5nKSA/IGNvbHVtbi5kYXRhQmluZGluZyA6IGNvbHVtbi5pZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbHVtbk5hbWVzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldENoaWxkcmVuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoaGVhZGluZ0hhbmRsZS5hcGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgaGVhZGluZ0hhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChmaWx0ZXJIYW5kbGUuYXBpKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGZpbHRlckhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNvbHVtbkxheW91dEhhbmRsZXMpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY29sdW1uTGF5b3V0SGFuZGxlID0gY29sdW1uTGF5b3V0SGFuZGxlc1twcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY29sdW1uTGF5b3V0SGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoY29sdW1uTGF5b3V0SGFuZGxlLmFwaSkgJiYgIVV0aWxzLmlzTnVsbChjb2x1bW5MYXlvdXRIYW5kbGUuYXBpLmdldENoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1vcmVDaGlsZHJlbiA9IGNvbHVtbkxheW91dEhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKG1vcmVDaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG1vcmVDaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZWRpdG9ySGFuZGxlcyk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlZGl0b3JIYW5kbGUgPSBlZGl0b3JIYW5kbGVzW3Byb3BlcnR5XTtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChlZGl0b3JIYW5kbGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChlZGl0b3JIYW5kbGUuYXBpKSAmJiAhVXRpbHMuaXNOdWxsKGVkaXRvckhhbmRsZS5hcGkuZ2V0Q2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbW9yZUNoaWxkcmVuID0gZWRpdG9ySGFuZGxlLmFwaS5nZXRDaGlsZHJlbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwobW9yZUNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgbW9yZUNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2FkRGF0YTogKGFjdGlvbkNvbmZpZywgZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBzZWFyY2goYWN0aW9uQ29uZmlnLCBldmVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVsZXRlU2VsZWN0ZWRSb3dzOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyA6IGRpc3Bvc2UgZnJvbSBvYnNlcnZlclxuICAgICAgICAgICAgICAgIGxldCBuZXdSb3dzID0gcm93cy5maWx0ZXIoKHJvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWlzU2VsZWN0ZWQocm93LmlkKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHNldERlbGV0ZWRSb3dzKGdldFNlbGVjdGVkUm93cyhzZWxlY3RlZCkpO1xuICAgICAgICAgICAgICAgIHJvd3Muc3BsaWNlKDAsIHJvd3MubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MucHVzaChuZXdSb3cpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKFtdKTtcblxuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5vblNlbGVjdGlvbkNoYW5nZShbXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdXBkYXRlU2Nyb2xsQmFyUGFkZGluZygpO1xuICAgICAgICAgICAgICAgIHJvd0NvdW50LmN1cnJlbnQgPSByb3dzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAvLyBTeW5jIHRoZSByZWYgdGhhdCBiYWNrcyB0aGUgYGdldCByb3dzYCBnZXR0ZXIg4oCUIG90aGVyd2lzZVxuICAgICAgICAgICAgICAgIC8vIGFwaS5yb3dzIHJldHVybnMgd2hhdGV2ZXIgcm93c1JlZiB3YXMgYXQgbGFzdCBzeW5jIChvZnRlblxuICAgICAgICAgICAgICAgIC8vIGVtcHR5IGFmdGVyIGEgcHJldmlvdXMgY2xlYXIoKSksIGV2ZW4gdGhvdWdoIHRoZSBsb2NhbFxuICAgICAgICAgICAgICAgIC8vIGByb3dzYCBhcnJheSBoYXMgYmVlbiBtdXRhdGVkLiBjbGVhcigpIGRvZXMgdGhpczsgZGF0YSBsb2FkXG4gICAgICAgICAgICAgICAgLy8gZG9lcyB0aGlzOyBhZGRSb3dzL2RlbGV0ZVNlbGVjdGVkUm93cyBkaWRuJ3Qg4oCUIGxlYWRpbmcgdG9cbiAgICAgICAgICAgICAgICAvLyBUcmFuc2Zlckxpc3QncyB0cmFuc2Zlci1hbGwtYmFjayBmYWlsaW5nIGJlY2F1c2UgYXBpLnJvd3NcbiAgICAgICAgICAgICAgICAvLyBzaG93ZWQgZW1wdHkgcmlnaHQgYWZ0ZXIgYSB0cmFuc2Zlci1hbGwtb3V0LlxuICAgICAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IHJvd3M7XG4gICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VDYWxsYmFjayhyb3dzKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiByb3dzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyA6IGRpc3Bvc2UgZnJvbSBvYnNlcnZlclxuICAgICAgICAgICAgICAgIHJvd3NSZWYuY3VycmVudCA9IFtdO1xuICAgICAgICAgICAgICAgIHNldFJvd3MoW10pO1xuXG4gICAgICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBnZXRTZWxlY3RlZFJvd3MoW10pKTtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5TRUxFQ1RJT05fQ0hBTkdFLCBldmVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gU3VyZ2ljYWwgZGVsZXRlIGJ5IHJvdyBpZHMg4oCUIGRvZXMgTk9UIHRvdWNoIHRoZSBzZWxlY3Rpb24gc3RhdGUuXG4gICAgICAgICAgICAvLyBDb3VudGVycGFydCB0byBkZWxldGVTZWxlY3RlZFJvd3MgZm9yIGNhc2VzIChUcmFuc2Zlckxpc3QgZG91YmxlLVxuICAgICAgICAgICAgLy8gY2xpY2spIHdoZXJlIHRoZSBjYWxsZXIgd2FudHMgdG8gcmVtb3ZlIHNwZWNpZmljIHJvd3Mgd2l0aG91dFxuICAgICAgICAgICAgLy8gaGlqYWNraW5nIHRoZSB1c2VyJ3MgY3VycmVudCBncmlkIHNlbGVjdGlvbi5cbiAgICAgICAgICAgIGRlbGV0ZVJvd3M6IChyb3dJZHMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXJvd0lkcyB8fCByb3dJZHMubGVuZ3RoID09PSAwKSByZXR1cm4gcm93cztcbiAgICAgICAgICAgICAgICBjb25zdCBpZFNldCA9IG5ldyBTZXQocm93SWRzKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZW1haW5pbmcgPSByb3dzLmZpbHRlcigocm93KSA9PiAhaWRTZXQuaGFzKHJvdy5pZCkpO1xuICAgICAgICAgICAgICAgIHJvd3Muc3BsaWNlKDAsIHJvd3MubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiByZW1haW5pbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93cy5wdXNoKHJvdyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKTtcbiAgICAgICAgICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgcm93c1JlZi5jdXJyZW50ID0gcm93cztcbiAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZUNhbGxiYWNrKHJvd3MpO1xuICAgICAgICAgICAgICAgIHJldHVybiByb3dzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlbGVjdDogKHJvd3MpID0+IHtcbiAgICAgICAgICAgICAgc2V0U2VsZWN0ZWQocm93cyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWRkUm93czogKG5ld1Jvd3MpID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MucHVzaChvYnNlcnZlUm93KG5ld1JvdykpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBuZXdTZWxlY3Rpb24gPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1JvdyBvZiBuZXdSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5wdXNoKG5ld1Jvdy5pZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbikgfHwgcHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24gPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKG5ld1NlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25TZWxlY3Rpb25DaGFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKG5ld1Jvd3MpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKTtcbiAgICAgICAgICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgLy8gU2VlIGRlbGV0ZVNlbGVjdGVkUm93cyBmb3IgdGhlIHJhdGlvbmFsZSDigJQga2VlcCByb3dzUmVmIGluXG4gICAgICAgICAgICAgICAgLy8gc3luYyB3aXRoIHRoZSBtdXRhdGVkIGxvY2FsIHJvd3MgYXJyYXkgc28gdGhlIGBnZXQgcm93c2BcbiAgICAgICAgICAgICAgICAvLyBnZXR0ZXIgcmV0dXJucyBjdXJyZW50IGRhdGEgYWZ0ZXIgYWRkUm93cy5cbiAgICAgICAgICAgICAgICByb3dzUmVmLmN1cnJlbnQgPSByb3dzO1xuICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlQ2FsbGJhY2socm93cyk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcm93cztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgbnVtYmVyT2ZQYWdlcygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxOdW1iZXJPZlJvd3MgLyByb3dzUGVyUGFnZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgcm93cygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm93c1JlZi5jdXJyZW50O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlYXJjaDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNlYXJjaCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlZnJlc2goKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlckhhbmRsZSAmJiBmaWx0ZXJIYW5kbGUuYXBpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlckhhbmRsZS5hcGkucmVmcmVzaCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocGFyc2VkQ29uZmlnLnZpc2libGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZpc2libGUoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcudmlzaWJsZSwgcGFyc2VkQ29uZmlnLmlkKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCB2aXNpYmxlKHZpc2libGUpIHtcbiAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKHZpc2libGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBmb3JtQXBpID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5jb25maWcuaWQgKyBcIl9lZGl0X2Zvcm1cIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaGFuZGxlUm93R3JhYlRvZ2dsZShyb3csIGluZGV4KSB7XG4gICAgICAgIGlmICghaXNSb3dHcmFiYmFibGUocm93KSkgcmV0dXJuO1xuICAgICAgICBpZiAoR3JhYkNvbnRleHQuaXNBY3RpdmUoKSkgcmV0dXJuO1xuXG4gICAgICAgIEdyYWJDb250ZXh0LmdyYWIocHJvcHMuaGFuZGxlLCB7XG4gICAgICAgICAgICByb3csXG4gICAgICAgICAgICByb3dJbmRleDogaW5kZXgsXG4gICAgICAgICAgICBjb21wb25lbnRJZDogcHJvcHMuY29uZmlnLmlkLFxuICAgICAgICAgICAgdmlld0lkOiBwcm9wcy52aWV3SWRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgQ3Vyc29yT3ZlcmxheS5zaG93KCk7XG5cbiAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChcbiAgICAgICAgICAgIEV2ZW50VHlwZS5ST1dfR1JBQl9TVEFSVCxcbiAgICAgICAgICAgIG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgcm93KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwZGF0ZVNjcm9sbEJhclBhZGRpbmcoKSB7XG4gICAgICAgIHZhciB0Ym9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluVGFibGVCb2R5Jyk7XG4gICAgICAgIGlmICh0Ym9keSAhPT0gbnVsbCAmJiB0eXBlb2YgdGJvZHkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBzZXRTY3JvbGxXaWR0aCh0Ym9keS5vZmZzZXRXaWR0aCAtIHRib2R5LmNsaWVudFdpZHRoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHdpbmRvdy5vbnJlc2l6ZSA9IGZ1bmN0aW9uIG9ucmVzaXplKCkge1xuICAgICAgICB1cGRhdGVTY3JvbGxCYXJQYWRkaW5nKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZVJlcXVlc3RTb3J0ID0gKGV2ZW50LCBwcm9wZXJ0eSkgPT4ge1xuICAgICAgICBjb25zdCBpc0Rlc2MgPSBvcmRlckJ5ID09PSBwcm9wZXJ0eSAmJiBvcmRlciA9PT0gJ2Rlc2MnO1xuICAgICAgICBzZXRPcmRlcihpc0Rlc2MgPyAnYXNjJyA6ICdkZXNjJyk7XG4gICAgICAgIHNldE9yZGVyQnkocHJvcGVydHkpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVTZWxlY3RBbGxDbGljayhldmVudCkge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uKSB8fCBwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkcyA9IHJvd3MubWFwKG4gPT4gbi5uYW1lKTtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZChuZXdTZWxlY3RlZHMpO1xuICAgICAgICAgICAgICAgIHByb3BzLm9uU2VsZWN0aW9uQ2hhbmdlKG5ld1NlbGVjdGVkcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKFtdKTtcbiAgICAgICAgICAgICAgICBwcm9wcy5vblNlbGVjdGlvbkNoYW5nZShbXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2Vycyh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNlbGVjdGVkUm93cyhzZWxlY3RlZCkge1xuICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHJvdyA9IHJvd3NbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNlbGVjdGVkLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJvdy5pZCA9PT0gc2VsZWN0ZWRbal0pIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRSb3dzLnB1c2gocm93KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRSb3dzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRvSGFuZGxlQ2xpY2soZXZlbnQsIGlkKSB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24pIHx8IHByb3BzLmNvbmZpZy5kaXNhYmxlUm93U2VsZWN0aW9uID09PSBmYWxzZSkge1xuICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmVuYWJsZUZvcm1NYXJrZXJzKHRydWUpO1xuXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gLTE7XG4gICAgICAgICAgICBpZihzZWxlY3RlZC5pbmRleE9mKGlkKSA8IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3U2VsZWN0ZWQgPSBbXTtcblxuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5tdWx0aVNlbGVjdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkID0gbmV3U2VsZWN0ZWQuY29uY2F0KHNlbGVjdGVkLCBpZCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWQgPSBuZXdTZWxlY3RlZC5jb25jYXQoc2VsZWN0ZWQuc2xpY2UoMSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkSW5kZXggPT09IHNlbGVjdGVkLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkID0gbmV3U2VsZWN0ZWQuY29uY2F0KHNlbGVjdGVkLnNsaWNlKDAsIC0xKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRJbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NlbGVjdGVkID0gbmV3U2VsZWN0ZWQuY29uY2F0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLnNsaWNlKDAsIHNlbGVjdGVkSW5kZXgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLnNsaWNlKHNlbGVjdGVkSW5kZXggKyAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3RlZC5wdXNoKGlkKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gZ2V0U2VsZWN0ZWRSb3dzKG5ld1NlbGVjdGVkKTtcblxuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKG5ld1NlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5vblNlbGVjdGlvbkNoYW5nZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMub25TZWxlY3Rpb25DaGFuZ2Uoc2VsZWN0ZWRSb3dzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaXJlU2VsZWN0aW9uRXZlbnQoKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChjb25maWcpICYmICghVXRpbHMuaXNOdWxsKGhlYWRpbmdIYW5kbGUpIHx8IGNvbmZpZy5ncmlkVHlwZSA9PT0gJ1RJTEUnKSkge1xuICAgICAgICAgICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgZ2V0U2VsZWN0ZWRSb3dzKHNlbGVjdGVkKSk7XG4gICAgICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuU0VMRUNUSU9OX0NIQU5HRSwgZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNSb3dHcmFiYmFibGUocm93KSB7XG4gICAgICAgIHJldHVybiByb3dzR3JhYmJhYmxlICYmICFpc1Jvd0RyYWdEaXNhYmxlZChyb3cpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzUm93RHJhZ0Rpc2FibGVkKHJvdykge1xuICAgICAgICBpZiAoIWRyYWdTcGVjLmRpc2FibGVkV2hlbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGR5bmFtaWNKUy5leGVjdXRlU2NyaXB0T2JqZWN0KFxuICAgICAgICAgICAgJ1JPVy0nICsgcm93LmlkICsgJy1kcmFnLWRpc2FibGVkJyxcbiAgICAgICAgICAgIGRyYWdTcGVjLmRpc2FibGVkV2hlbixcbiAgICAgICAgICAgIHByb3BzLmNvbmZpZy5pZCxcbiAgICAgICAgICAgIHtyb3c6IHJvd30sXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldEN1cnNvcihjdXJzb3IpIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSBjdXJzb3IgfHwgJ2RlZmF1bHQnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZVJvd01vdXNlRW50ZXIocm93KSB7XG4gICAgICAgIGlmICghaXNSb3dHcmFiYmFibGUocm93KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT25seSBzaG93IGdyYWIgY3Vyc29yIGlmIG5vdCBhbHJlYWR5IGhvbGRpbmcgc29tZXRoaW5nXG4gICAgICAgIGlmICghR3JhYkNvbnRleHQuaXNBY3RpdmUoKSkge1xuICAgICAgICAgICAgc2V0Q3Vyc29yKHJvd0dyYWJTcGVjLmN1cnNvciB8fCAnZ3JhYicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlUm93TW91c2VMZWF2ZSgpIHtcbiAgICAgICAgc2V0Q3Vyc29yKCdkZWZhdWx0Jyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQsIHJvdywgaW5kZXgpIHtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5jbG9zZXN0KCcuZWRpdENlbGwnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmIChyb3dzR3JhYmJhYmxlICYmICFpc1Jvd0RyYWdEaXNhYmxlZChyb3cpKSB7XG4gICAgICAgICAgICBoYW5kbGVSb3dHcmFiVG9nZ2xlKHJvdywgaW5kZXgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMub25DZWxsU2VsZWN0aW9uQ2hhbmdlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZG9IYW5kbGVDbGljayhldmVudCwgcm93LmlkKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVDZWxsQ2xpY2soZXZlbnQsIGlkLCBjb2x1bW4pIHtcbiAgICAgICAgaWYgKGNvbHVtbi5maWVsZFR5cGUgIT09ICdkb2N1bWVudCcpIHtcbiAgICAgICAgICAgIC8vIFRPRE8gOiBFdmFsdWF0ZSBpZiB0aGlzIGNhbGwgaXMgbmVjZXNzYXJ5XG4gICAgICAgICAgICBkb0hhbmRsZUNsaWNrKGV2ZW50LCBpZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5vbkNlbGxTZWxlY3Rpb25DaGFuZ2UpKSB7XG4gICAgICAgICAgICBwcm9wcy5vbkNlbGxTZWxlY3Rpb25DaGFuZ2UoaWQsIGNvbHVtbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVDaGFuZ2VQYWdlKGV2ZW50LCBuZXdQYWdlKSB7XG4gICAgICAgIGNyaXRlcmlhLmN1cnJlbnRQYWdlID0gbmV3UGFnZSArIDE7XG4gICAgICAgIHNldFBhZ2UobmV3UGFnZSk7XG4gICAgICAgIHNlYXJjaCgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZUNoYW5nZVJvd3NQZXJQYWdlKGV2ZW50KSB7XG4gICAgICAgIHNldFJvd3NQZXJQYWdlKHJvd3NQZXJQYWdlID0+IGV2ZW50LnRhcmdldC52YWx1ZSk7XG4gICAgICAgIHNldFBhZ2UoMCk7XG4gICAgfVxuXG4gICAgY29uc3Qgb2JzZXJ2ZVJvdyA9IChyb3cpID0+IHtcbiAgICAgICAgLypsZXQgb2JzZXJ2YWJsZVJvdyA9IG9ic2VydmFibGUocm93KTtcbiAgICAgICAgb2JzZXJ2ZShcbiAgICAgICAgICAgIG9ic2VydmFibGVSb3csXG4gICAgICAgICAgICBjaGFuZ2UgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBuZXdWYWx1ZSA9IGNoYW5nZS5uZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICBsZXQgb2xkVmFsdWUgPSBjaGFuZ2Uub2xkVmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hDZWxsKHJvdy5pZCwgY2hhbmdlLm5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZVJvdzsqL1xuXG4gICAgICAgIHJldHVybiByb3c7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NEYXRhKGRhdGEsIGNvbmYpIHtcbiAgICAgICAgc2V0VG90YWxOdW1iZXJPZlJvd3MoZGF0YS50b3RhbE51bWJlck9mUmVjb3JkcyA/IGRhdGEudG90YWxOdW1iZXJPZlJlY29yZHMgOiBkYXRhLnJlY29yZHMubGVuZ3RoKTtcblxuICAgICAgICByb3dzUmVmLmN1cnJlbnQgPSBkYXRhLnJlY29yZHM7XG4gICAgICAgIHVwZGF0ZVJvd0NsYXNzZXMoZGF0YS5yZWNvcmRzKTtcbiAgICAgICAgbGV0IHRhYmxlUm93cyA9IFtdO1xuICAgICAgICBsZXQgcmVjb3JkcyA9IGRhdGEucmVjb3JkcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZWNvcmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0YWJsZVJvd3MucHVzaChvYnNlcnZlUm93KHJlY29yZHNbaV0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFJvd3ModGFibGVSb3dzKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWFyY2ggPSAoYWN0aW9uQ29uZmlnID0gbnVsbCwgZXZlbnQpID0+IHtcbiAgICAgICAgbGV0IGNvbmYgPSBjb25maWc7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwoY29uZikpIHtcbiAgICAgICAgICAgIGNvbmYgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc2VydmljZSA9ICFVdGlscy5pc051bGwoY29uZi5kYXRhU2VydmljZSkgPyBjb25mLmRhdGFTZXJ2aWNlIDogIVV0aWxzLmlzTnVsbChhY3Rpb25Db25maWcpID8gYWN0aW9uQ29uZmlnLmRhdGFTZXJ2aWNlIDogbnVsbDtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwoc2VydmljZSkpIHtcbiAgICAgICAgICAgIGxldCBzZXJ2aWNlVHlwZSA9IHNlcnZpY2UudHlwZTtcbiAgICAgICAgICAgIGlmICghc2VydmljZVR5cGUpIHtcbiAgICAgICAgICAgICAgICBzZXJ2aWNlVHlwZSA9ICdycGMnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2VydmljZVR5cGUgPT09ICdycGMnIHx8IHNlcnZpY2VUeXBlID09PSAncmVzdCcpIHtcbiAgICAgICAgICAgICAgICBsZXQgbWV0aG9kID0gc2VydmljZVR5cGUgPT09ICdycGMnID8gaW52b2tlUnBjIDogaW52b2tlUmVzdDtcbiAgICAgICAgICAgICAgICBtZXRob2Qoe1xuICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlOiBzZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IHByb3BzLmhhbmRsZSxcbiAgICAgICAgICAgICAgICAgICAgdmlld0lkOiBwcm9wcy52aWV3SWQsXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50XG4gICAgICAgICAgICAgICAgfSkudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NEYXRhKHJlc3VsdCwgY29uZik7XG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYoZS5lcnJvclR5cGUgIT09ICdJTlZBTElEX1BBUkFNRVRFUicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLnB1Ymxpc2hFcnJvck1lc3NhZ2UoZSwgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBzZXJ2aWNlIHR5cGUgOiAnICsgc2VydmljZVR5cGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGFjdGlvbkNvbmZpZyAmJiBhY3Rpb25Db25maWcudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IGFwcGxpY2F0aW9uTWFuYWdlci5yZXNvbHZlUGFyYW1ldGVyQ29uZmlnVmFsdWUoYWN0aW9uQ29uZmlnLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBwcm9jZXNzRGF0YShkYXRhLCBjb25mKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBjcml0ZXJpYS5jdXJyZW50UGFnZSA9IDE7XG4gICAgICAgIGlmICghcm93c1BlclBhZ2VMb2FkaW5nKSB7XG4gICAgICAgICAgICBzZXRSb3dzUGVyUGFnZUxvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgc2VhcmNoKCk7XG4gICAgICAgIH1cbiAgICB9LCBbcm93c1BlclBhZ2VdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICB9KTtcblxuICAgIFJlYWN0LnVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICB9LCBbXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsZXQgZXZlbnRIYW5kbGluZ0NvbmZpZyA9IFV0aWxzLmlzTnVsbChjb25maWcuZXZlbnRIYW5kbGluZ0NvbmZpZykgPyB7fSA6IGNvbmZpZy5ldmVudEhhbmRsaW5nQ29uZmlnO1xuICAgICAgICBldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnMgPSBVdGlscy5pc051bGwoZXZlbnRIYW5kbGluZ0NvbmZpZy5zdWJzY3JpcHRpb25zKSA/IFtdIDogZXZlbnRIYW5kbGluZ0NvbmZpZy5zdWJzY3JpcHRpb25zO1xuXG4gICAgICAgIGV2ZW50TWFuYWdlci5hZGRTdWJzY3JpcHRpb25zKGV2ZW50SGFuZGxpbmdDb25maWcsIHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkKTtcbiAgICAgICAgZXZlbnRNYW5hZ2VyLmFkZFN5c3RlbVN1YnNjcmlwdGlvbnMocHJvcHMudmlld0lkLCBjb25maWcpO1xuICAgICAgICBsZXQgaXNFZGl0YWJsZSA9IGZhbHNlO1xuICAgICAgICBsZXQgdmlzaWJsZUNvbHVtbkNvdW50ID0gMDtcblxuICAgICAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb25maWcuY29sdW1ucykge1xuICAgICAgICAgICAgbGV0IGhpZGRlbiA9IFV0aWxzLmdldENvbXBvbmVudEF0dHJpYnV0ZShjb2x1bW4sICdoaWRkZW4nLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24oaGlkZGVuLCBwcm9wcy5jb25maWcuaWQpKSB7XG4gICAgICAgICAgICAgICAgdmlzaWJsZUNvbHVtbkNvdW50Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgY29sdW1uID0gY29uZmlnLmNvbHVtbnNbaV07XG5cbiAgICAgICAgICAgIGlmICghaXNFZGl0YWJsZSAmJiBjb2x1bW4uYXR0cmlidXRlc1snZWRpdGFibGUnXSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIGlzRWRpdGFibGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNldEVkaXRhYmxlKHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZighY29sdW1uLmF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4uYXR0cmlidXRlcyA9IHt9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb2x1bW4uYXR0cmlidXRlcy53aWR0aCA9IGV2YWx1YXRlVGFibGVDZWxsV2lkdGgocHJvcHMuc2VsZWN0aW9uTW9kZSA9PT0gJ01VTFRJUExFJywgY29sdW1uLCB2aXNpYmxlQ29sdW1uQ291bnQpO1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoY29sdW1uLmF0dHJpYnV0ZXMpICYmIGNvbHVtbi5hdHRyaWJ1dGVzWydlZGl0YWJsZSddID09PSB0cnVlICYmIFV0aWxzLmlzTnVsbChjb2x1bW4uZWRpdG9yKSkge1xuICAgICAgICAgICAgICAgIGxldCBkZWZhdWx0RWRpdG9yID0ge307XG4gICAgICAgICAgICAgICAgZGVmYXVsdEVkaXRvci5maWVsZFR5cGUgPSAnVEVYVF9GSUVMRCc7XG4gICAgICAgICAgICAgICAgZGVmYXVsdEVkaXRvci5pZCA9IGNvbHVtbi5pZCArICdFZGl0b3InO1xuXG4gICAgICAgICAgICAgICAgY29sdW1uLmVkaXRvciA9IGRlZmF1bHRFZGl0b3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjcml0ZXJpYS5jdXJyZW50UGFnZSA9IDE7XG4gICAgICAgIGNyaXRlcmlhLmRhdGFRdWVyeU5hbWUgPSBjb25maWcuZGF0YVF1ZXJ5TmFtZTtcblxuICAgICAgICBsZXQgaGFzTG9hZEV2ZW50O1xuICAgICAgICBsZXQgbG9hZFN1YnNjcmlwdGlvbnMgPSBldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnMuZmlsdGVyKChzdWJzY3JpcHRpb24pID0+IHN1YnNjcmlwdGlvbi5ldmVudFR5cGUgPT09ICdDT01QT05FTlRfTE9BRCcpO1xuICAgICAgICBmb3IgKGNvbnN0IGxvYWRTdWJzY3JpcHRpb24gb2YgbG9hZFN1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChsb2FkU3Vic2NyaXB0aW9uLmFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi5hY3Rpb25UeXBlID09PSAnbG9hZERhdGEnKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgaGFzTG9hZEV2ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhdXRvTG9hZERhdGEgPSBVdGlscy5nZXRDb21wb25lbnRBdHRyaWJ1dGUoY29uZmlnLCAnYXV0b0xvYWREYXRhJywgbnVsbCk7XG4gICAgICAgIGlmICghaGFzTG9hZEV2ZW50ICYmIChhdXRvTG9hZERhdGEgPT09IG51bGwgfHwgYXV0b0xvYWREYXRhID09PSB0cnVlKSkge1xuICAgICAgICAgICAgc2VhcmNoKCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIG51bGwpO1xuICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5DT01QT05FTlRfTE9BRCwgZXZlbnQpO1xuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmRhdGEpKSB7XG4gICAgICAgICAgICBsZXQgY29uZiA9IGNvbmZpZztcbiAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwoY29uZikpIHtcbiAgICAgICAgICAgICAgICBjb25mID0gVXRpbHMucGFyc2VDb25maWcocHJvcHMuY29uZmlnLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwcm9jZXNzRGF0YShwcm9wcy5kYXRhLCBjb25mKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy5kYXRhXSk7XG5cbiAgICBmdW5jdGlvbiBhZGRSb3dGb2N1c0xpc3RlbmVyKHJvdykge1xuICAgICAgICAkKCcjUk9XLScgKyByb3cuaWQpXG4gICAgICAgICAgICAuZm9jdXNvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGxldCBuZXdTZWxlY3RlZCA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc2VsZWN0ZWRFbGVtZW50IG9mIHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnQgIT09IHJvdy5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0ZWQucHVzaChzZWxlY3RlZEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuZGlzYWJsZVJvd1NlbGVjdGlvbikgfHwgcHJvcHMuY29uZmlnLmRpc2FibGVSb3dTZWxlY3Rpb24gPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkKG5ld1NlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVSb3dDbGFzc2VzID0gKG5ld1Jvd3MpID0+IHtcbiAgICAgICAgaWYgKG5ld1Jvd3MpIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy5jb25maWcucm93QXR0cmlidXRlcyAmJiBwcm9wcy5jb25maWcucm93QXR0cmlidXRlcy5jbGFzc0V2YWx1YXRvcikge1xuICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgbmV3Um93cykge1xuICAgICAgICAgICAgICAgICAgICByb3cuY2xhc3NOYW1lID0gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHRPYmplY3QoJ1JPVy0nICsgcm93LmlkICsgJ2NsYXNzRXZhbHVhdG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzLmNsYXNzRXZhbHVhdG9yLCBwcm9wcy5jb25maWcuaWQsIHtpbmRleH0sIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZVJvd1JlYWRPbmx5U3RhdHVzID0gKG5ld1Jvd3MpID0+IHtcbiAgICAgICAgaWYgKG5ld1Jvd3MpIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy5jb25maWcucm93QXR0cmlidXRlcyAmJiBwcm9wcy5jb25maWcucm93QXR0cmlidXRlcy5yZWFkT25seUV2YWx1YXRvcikge1xuICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByb3cgb2YgbmV3Um93cykge1xuICAgICAgICAgICAgICAgICAgICByb3cucmVhZE9ubHkgPSBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdE9iamVjdCgnUk9XLScgKyByb3cuaWQgKyAncmVhZE9ubHlFdmFsdWF0b3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuY29uZmlnLnJvd0F0dHJpYnV0ZXMucmVhZE9ubHlFdmFsdWF0b3IsIHByb3BzLmNvbmZpZy5pZCwge2luZGV4fSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlQ29sdW1uUmVhZE9ubHlTdGF0dXMgPSAoY29sdW1uLCBuZXdSb3dzKSA9PiB7XG4gICAgICAgIGlmIChjb2x1bW4uYXR0cmlidXRlcyAmJiBjb2x1bW4uYXR0cmlidXRlcy5yZWFkT25seUV2YWx1YXRvcikge1xuICAgICAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIG5ld1Jvd3MpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXJvdy5jb2x1bW5SZWFkT25seSkge1xuICAgICAgICAgICAgICAgICAgICByb3cuY29sdW1uUmVhZE9ubHkgPSB7fTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByb3cuY29sdW1uUmVhZE9ubHlbY29sdW1uLmlkXSA9IGR5bmFtaWNKUy5leGVjdXRlU2NyaXB0T2JqZWN0KCdDT0wtJyArIHJvdy5pZCArICctJyArIGNvbHVtbi5pZCArICctcmVhZE9ubHlFdmFsdWF0b3InLFxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uYXR0cmlidXRlcy5yZWFkT25seUV2YWx1YXRvciwgcHJvcHMuY29uZmlnLmlkLCB7aW5kZXh9LCBudWxsKTtcbiAgICAgICAgICAgICAgICBpbmRleCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdXBkYXRlU2Nyb2xsQmFyUGFkZGluZygpO1xuICAgICAgICBldmVudE1hbmFnZXIucHJvY2Vzc1N5c3RlbUdlbmVyYXRlZFN1YnNjcmlwdGlvbnMocHJvcHMuY29uZmlnLmlkKTtcbiAgICAgICAgcm93Q291bnQuY3VycmVudCA9IHJvd3MubGVuZ3RoO1xuXG4gICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgcm93cyk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLkRBVEFfQVJSSVZFRCwgZXZlbnQpO1xuICAgIH0sIFtyb3dzXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChkZWxldGVkUm93cykgJiYgZGVsZXRlZFJvd3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBkZWxldGVkUm93cyk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5ST1dfREVMRVRFRCwgZXZlbnQpO1xuICAgICAgICAgICAgc2V0RGVsZXRlZFJvd3MobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICByb3dDb3VudC5jdXJyZW50ID0gcm93cy5sZW5ndGg7XG4gICAgfSwgW2RlbGV0ZWRSb3dzXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5yb3dzKSkge1xuICAgICAgICAgICAgbGV0IHJvd1ZhbHVlcyA9IFtdO1xuXG4gICAgICAgICAgICByb3dzUmVmLmN1cnJlbnQgPSBwcm9wcy5yb3dzO1xuICAgICAgICAgICAgdXBkYXRlUm93Q2xhc3Nlcyhwcm9wcy5yb3dzKTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHByb3BzLnJvd3MpIHtcbiAgICAgICAgICAgICAgICByb3dWYWx1ZXMucHVzaChvYnNlcnZlUm93KHJvdykpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB1cGRhdGVSb3dSZWFkT25seVN0YXR1cyhwcm9wcy5yb3dzKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbmZpZy5jb2x1bW5zKSB7XG4gICAgICAgICAgICAgICAgdXBkYXRlQ29sdW1uUmVhZE9ubHlTdGF0dXMoY29sdW1uLCBwcm9wcy5yb3dzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcm93c1JlZi5jdXJyZW50ID0gcm93VmFsdWVzO1xuICAgICAgICAgICAgc2V0U2VsZWN0ZWQoW10pO1xuICAgICAgICAgICAgc2V0Um93cyhyb3dWYWx1ZXMpO1xuICAgICAgICB9XG4gICAgfSwgW3Byb3BzLnJvd3NdKTtcblxuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdXBkYXRlUm93UmVhZE9ubHlTdGF0dXMocm93cyk7XG4gICAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbmZpZy5jb2x1bW5zKSB7XG4gICAgICAgICAgICB1cGRhdGVDb2x1bW5SZWFkT25seVN0YXR1cyhjb2x1bW4sIHJvd3MpO1xuICAgICAgICB9XG4gICAgfSwgW3Jvd3NdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGZpcmVTZWxlY3Rpb25FdmVudCgpO1xuICAgIH0sIFtzZWxlY3RlZF0pO1xuXG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IGlkID0+IHNlbGVjdGVkLmluZGV4T2YoaWQpICE9PSAtMTtcbiAgICBjb25zdCBlZGl0b3JDaGFuZ2VIYW5kbGVyID0gKHJvd0lkLCBmaWVsZCwgdmFsdWUpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCByb3cgb2Ygcm93cykge1xuICAgICAgICAgICAgaWYgKHJvdy5pZCA9PT0gcm93SWQpIHtcbiAgICAgICAgICAgICAgICBVdGlscy51cGRhdGVOZXN0ZWRQcm9wZXJ0eShyb3csIGZpZWxkLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YWx1ZUNoYW5nZUNhbGxiYWNrKHJvd3MpO1xuICAgIH07XG5cbiAgICBjb25zdCBpc0ZpbHRlcmFibGUgPSAoKSA9PiB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJvcHMuY29uZmlnLmNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBjb2x1bW4gPSBwcm9wcy5jb25maWcuY29sdW1uc1tpXTtcbiAgICAgICAgICAgIGlmIChjb2x1bW4uYXR0cmlidXRlc1snZmlsdGVyYWJsZSddID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcblxuICAgIGNvbnN0IGNyZWF0ZUNlbGwgPSAocm93LCBjb2x1bW5OYW1lLCBjZWxsSGFuZGxlKSA9PiB7XG4gICAgICAgIGxldCByb3dDZWxscyA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgY2VsbHNFbnRyeSBvZiBjZWxscykge1xuICAgICAgICAgICAgaWYgKGNlbGxzRW50cnkucm93SWQgPT09IHJvdy5pZCkge1xuICAgICAgICAgICAgICAgIHJvd0NlbGxzID0gY2VsbHNFbnRyeTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChVdGlscy5pc051bGwocm93Q2VsbHMpIHx8IHJvd0NlbGxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcm93Q2VsbHMgPSB7fTtcbiAgICAgICAgICAgIHJvd0NlbGxzLnJvd0lkID0gcm93LmlkO1xuICAgICAgICAgICAgY2VsbHMucHVzaChyb3dDZWxscyk7XG4gICAgICAgIH1cblxuICAgICAgICByb3dDZWxsc1tjb2x1bW5OYW1lXSA9IGNlbGxIYW5kbGU7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlZnJlc2hDZWxsID0gKHJvd0lkLCBjb2x1bW5OYW1lKSA9PiB7XG4gICAgICAgIGxldCByb3dDZWxscyA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgY2VsbCBvZiBjZWxscykge1xuICAgICAgICAgICAgaWYgKGNlbGwucm93SWQgPT09IHJvd0lkKSB7XG4gICAgICAgICAgICAgICAgcm93Q2VsbHMgPSBjZWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwocm93Q2VsbHMpKSB7XG4gICAgICAgICAgICBsZXQgY2VsbCA9IHJvd0NlbGxzW2NvbHVtbk5hbWVdO1xuXG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChjZWxsKSkge1xuICAgICAgICAgICAgICAgIGNlbGwuYXBpLnJlZnJlc2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCByZW1vdmVBbGxSb3dFcnJvcnNCeUNvbHVtbiA9IChjb2x1bW5OYW1lLCByb3dFcnJvcnMpID0+IHtcbiAgICAgICAgaWYgKHJvd0Vycm9ycykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHJvd0Vycm9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgIGlmIChyb3dFcnJvcnNbaV0uY29sdW1uID09PSBjb2x1bW5OYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd0Vycm9ycy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgcm93RXJyb3JIYW5kbGVyID0gKHJvd0lkLCBlcnJvciwgY29sdW1uKSA9PiB7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhyb3dFcnJvck1hcCkubGVuZ3RoID09PSAwIHx8ICFyb3dFcnJvck1hcFtyb3dJZF0pIHtcbiAgICAgICAgICAgIHJvd0Vycm9yTWFwW3Jvd0lkXSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9yICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoIXJvd0Vycm9yTWFwW3Jvd0lkXS5maW5kKHJvd0Vycm9yID0+IHJvd0Vycm9yLmNvbHVtbiA9PT0gY29sdW1uKSkge1xuICAgICAgICAgICAgICAgIHJvd0Vycm9yTWFwW3Jvd0lkXS5wdXNoKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlbW92ZUFsbFJvd0Vycm9yc0J5Q29sdW1uKGNvbHVtbiwgcm93RXJyb3JNYXBbcm93SWRdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGlzUm93RXJyb3JzRW1wdHkgPSAoKSA9PiB7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhyb3dFcnJvck1hcCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJvd0Vycm9yTWFwKSkge1xuICAgICAgICAgICAgaWYgKHJvd0Vycm9yTWFwW2tleV0ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlQ2hhbmdlQ2FsbGJhY2sgPSAodmFsdWVSb3dzKSA9PiB7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcikpIHtcbiAgICAgICAgICAgIHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcih2YWx1ZVJvd3MsICFpc1Jvd0Vycm9yc0VtcHR5KCkpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldFRpbGVMYWJlbChyb3cpIHtcbiAgICAgICAgbGV0IGNvdW50ZXIgPSAwO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAge2NvbmZpZy5jb2x1bW5zLm1hcChjb2x1bW4gPT4gKFxuICAgICAgICAgICAgICAgICAgICAhY29sdW1uLmF0dHJpYnV0ZXMuaGlkZGVuID9cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGtleT17Y291bnRlcisrfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93WyFVdGlscy5pc051bGwoY29sdW1uLmRhdGFCaW5kaW5nKSA/IGNvbHVtbi5kYXRhQmluZGluZyA6IGNvbHVtbi5pZF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxici8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiA6XG4gICAgICAgICAgICAgICAgICAgICAgICBudWxsKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVuZGVyVGlsZShyb3csIGtleSkge1xuICAgICAgICBjb25zdCBpc0l0ZW1TZWxlY3RlZCA9IGlzU2VsZWN0ZWQocm93LmlkKTtcbiAgICAgICAgcmV0dXJuICg8R3JpZCBpdGVtIHhzIHN0eWxlPXtVdGlscy5tZXJnZU9iamVjdHMocHJvcHMuY29uZmlnLnRpbGVTdHlsZSwge1xuICAgICAgICAgICAgaGVpZ2h0OiAnMjAwcHgnLFxuICAgICAgICAgICAgbWluV2lkdGg6ICcyMDBweCdcbiAgICAgICAgfSl9IGtleT17a2V5fT5cbiAgICAgICAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVkXCIgY29sb3I9e1wic2Vjb25kYXJ5XCJ9XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IGlzSXRlbVNlbGVjdGVkID8gJzFweCBzb2xpZCAxcHggc29saWQgI2YyYTkwMCcgOiAnMXB4IHNvbGlkICNlMmUyZTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogaXNJdGVtU2VsZWN0ZWQgPyAnI2ZmZjhlMScgOiAnI2ZhZmFmYScsXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IGRvSGFuZGxlQ2xpY2soZXZlbnQsIHJvdy5pZCl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBnZXRUaWxlTGFiZWwocm93KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L0dyaWQ+KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZW5kZXJUaWxlcygpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHJvd3MubWFwKChyb3csIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0l0ZW1TZWxlY3RlZCA9IGlzU2VsZWN0ZWQocm93LmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsSWQgPSBgZW5oYW5jZWQtdGFibGUtY2hlY2tib3gtJHtpbmRleH1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93LmluZGV4ID0gaW5kZXg7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyVGlsZShyb3csIGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUNvbHVtbkxheW91dEhhbmRsZShjb2x1bW4sIGluZGV4KSB7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwoY29sdW1uTGF5b3V0SGFuZGxlc1tjb2x1bW4uaWQgKyBpbmRleF0pKSB7XG4gICAgICAgICAgICBsZXQgaGFuZGxlID0ge307XG4gICAgICAgICAgICBjb2x1bW5MYXlvdXRIYW5kbGVzW2NvbHVtbi5pZCArIGluZGV4XSA9IGhhbmRsZTtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29sdW1uTGF5b3V0SGFuZGxlc1tjb2x1bW4uaWQgKyBpbmRleF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlQ2VsbEVkaXRvckhhbmRsZShjb2x1bW4pIHtcbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChlZGl0b3JIYW5kbGVzW2NvbHVtbi5pZCArIFwiX2VkaXRvclwiXSkpIHtcbiAgICAgICAgICAgIGxldCBoYW5kbGUgPSB7fTtcbiAgICAgICAgICAgIGVkaXRvckhhbmRsZXNbY29sdW1uLmlkICsgXCJfZWRpdG9yXCJdID0gaGFuZGxlO1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlZGl0b3JIYW5kbGVzW2NvbHVtbi5pZCArIFwiX2VkaXRvclwiXTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICB2aXNpYmxlICYmXG4gICAgICAgIDxkaXYgaWQ9e3Byb3BzLmNvbmZpZy5pZH0gY2xhc3NOYW1lPXtVdGlscy5nZXRDb21wb25lbnRBdHRyaWJ1dGUocHJvcHMuY29uZmlnLCAnY2xhc3NOYW1lJywgbnVsbCl9IHN0eWxlPXsoVXRpbHMuaXNOdWxsKHByb3BzLmhhc0JvcmRlcikgfHwgcHJvcHMuaGFzQm9yZGVyID09PSB0cnVlKSA/XG4gICAgICAgICAgICBVdGlscy5tZXJnZVN0eWxlcyh7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAnMCcsXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlMmUyZTInLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzRweCdcbiAgICAgICAgICAgIH0sIHByb3BzLmNvbmZpZykgOiBVdGlscy5tZXJnZVN0eWxlcyh7fSwgcHJvcHMuY29uZmlnKX0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcubm90ZXMpID9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuY29uZmlnLm5vdGVzLm1hcCgobm90ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtub3RlS2V5Kyt9IHN0eWxlPXt7cGFkZGluZzogJzhweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWxlcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3ttYXJnaW5Cb3R0b206ICcwJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9e25vdGUubWVzc2FnZVR5cGUgPT09ICdXQVJOJyA/ICd3YXJuaW5nJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RlLm1lc3NhZ2VUeXBlID09PSAnSU5GTycgPyAnJyA6ICdkYW5nZXInfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3tjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSd9fT57bm90ZS5tZXNzYWdlfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+O1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICByb3dzUGVyUGFnZU9wdGlvbnMuaW5jbHVkZXMocHJvcHMuY29uZmlnLnBhZ2VTaXplKSA/XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5ncmlkVHlwZSA9PT0gJ1RJTEUnID9cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3ttYXJnaW46ICcwIDAgOHB4IDhweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZpbHRlcmFibGUoKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERhdGFHcmlkRmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17ZmlsdGVySGFuZGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9e3Byb3BzLmNvbmZpZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcldyYXBwZXJDbGFzcz17cHJvcHMuZmlsdGVyV3JhcHBlckNsYXNzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxXaWR0aD17c2Nyb2xsV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmlsdGVyU3VibWl0PXtzZWFyY2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVxdWVzdFNvcnQ9e2hhbmRsZVJlcXVlc3RTb3J0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLnJvb3R9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R3JpZCBjb250YWluZXIgc3BhY2luZz17MX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R3JpZCBjb250YWluZXIgaXRlbSB4cz17MTJ9IHNwYWNpbmc9ezF9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyVGlsZXMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJzRweCA4cHggMCA4cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJCb3R0b206ICcxcHggc29saWQgI2UyZTJlMicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3dyYXB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0V3JhcChlLnRhcmdldC5jaGVja2VkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3g9e3sgJyYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWwnOiB7IGZvbnRTaXplOiAnMC43NXJlbScgfSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJXcmFwIHRhYmxlIHRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSB7YHJlc3BvbnNpdmUtdGFibGVgfSBzdHlsZT17e2hlaWdodDogcHJvcHMuaGVpZ2h0fX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZSBjbGFzc05hbWU9e2AkeydvdWlUYWJsZScgKyAocm93cy5sZW5ndGggPT09IDAgPyAnIG91aVRhYmxlLWVtcHR5JyA6ICcnKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbFNwYWNpbmc9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cInRhYmxlVGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogJzEwMCUnfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkIGNsYXNzTmFtZT17J2ZpbHRlckhlYWQnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7d2lkdGg6ICdjYWxjKDEwMCUgLSAnICsgcHJvcHMuc2Nyb2xsV2lkdGggKyAncHgpJ319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRmlsdGVyYWJsZSgpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERhdGFHcmlkRmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2ZpbHRlckhhbmRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29uZmlnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJXcmFwcGVyQ2xhc3M9e3Byb3BzLmZpbHRlcldyYXBwZXJDbGFzc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFdpZHRoPXtzY3JvbGxXaWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmlsdGVyU3VibWl0PXtzZWFyY2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlcXVlc3RTb3J0PXtoYW5kbGVSZXF1ZXN0U29ydH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RGF0YUdyaWRIZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtoZWFkaW5nSGFuZGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz17Y29uZmlnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bVNlbGVjdGVkPXtzZWxlY3RlZC5sZW5ndGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsV2lkdGg9e3Njcm9sbFdpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0QWxsQ2xpY2s9e2hhbmRsZVNlbGVjdEFsbENsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVxdWVzdFNvcnQ9e2hhbmRsZVJlcXVlc3RTb3J0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd0NvdW50PXt0b3RhbE51bWJlck9mUm93c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemVIYW5kbGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJvd3MoWy4uLnJvd3NdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGJvZHkgY2xhc3NOYW1lPXtjbGFzc2VzLnRhYmxlQm9keX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e21heEhlaWdodDogVXRpbHMuaXNOdWxsKHByb3BzLmJvZHlNYXhIZWlnaHQpID8gcHJvcHMuYm9keU1heEhlaWdodCA6ICc0MnZoJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJtYWluVGFibGVCb2R5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Jvd3MubWFwKChyb3csIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzSXRlbVNlbGVjdGVkID0gaXNTZWxlY3RlZChyb3cuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYWJlbElkID0gYGVuaGFuY2VkLXRhYmxlLWNoZWNrYm94LSR7aW5kZXh9YDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGVmYXVsdFJvd1N0eWxlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuY29uZmlnLnJvd0F0dHJpYnV0ZXMgJiYgcHJvcHMuY29uZmlnLnJvd0F0dHJpYnV0ZXMuc3R5bGUgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubWVyZ2VPYmplY3RzKHByb3BzLmNvbmZpZy5yb3dBdHRyaWJ1dGVzLnN0eWxlLCBkZWZhdWx0Um93U3R5bGUpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRSb3dTdHlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IGhhbmRsZVJvd01vdXNlRW50ZXIocm93KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlTGVhdmU9e2hhbmRsZVJvd01vdXNlTGVhdmV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4gaGFuZGxlQ2xpY2soZXZlbnQsIHJvdywgaW5kZXgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRG91YmxlQ2xpY2s9e2V2ZW50ID0+IHByb3BzLm9uUm93RG91YmxlQ2xpY2sgJiYgcHJvcHMub25Sb3dEb3VibGVDbGljayhyb3csIGV2ZW50KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY2hlY2tlZD17aXNJdGVtU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9eydST1ctJyArIHJvdy5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17aXNJdGVtU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnb3VpLXRhYmxlLXJvdyAnICsgKChoaWdobGlnaHRSb3dTZWxlY3Rpb24uY3VycmVudCA/IGlzSXRlbVNlbGVjdGVkID8gY2xhc3Nlcy50YWJsZVNlbGVjdGVkIDogY2xhc3Nlcy50YWJsZVJvdyA6ICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChyb3cuY2xhc3NOYW1lID8gKCcgJyArIHJvdy5jbGFzc05hbWUpIDogJycpKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zZWxlY3Rpb25Nb2RlID09PSAnTVVMVElQTEUnID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUZCBwYWRkaW5nPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXtNVUxUSV9TRUxFQ1RfQ0hFQ0tCT1hfQ09MX1dJRFRIICsgJ3B4J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eydzZWxlY3RDZWxsJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2lzSXRlbVNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFByb3BzPXt7J2FyaWEtbGFiZWxsZWRieSc6IGxhYmVsSWR9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RkPiA6IG51bGxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29uZmlnLmNvbHVtbnMubWFwKGNvbHVtbiA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24oY29sdW1uLmF0dHJpYnV0ZXNbJ2hpZGRlbiddLCBwcm9wcy5jb25maWcuaWQpID09PSB0cnVlID8gbnVsbCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4ubGF5b3V0ID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogY29sdW1uLmF0dHJpYnV0ZXMud2lkdGggPyBjb2x1bW4uYXR0cmlidXRlcy53aWR0aCA6ICgxMDAgLyBjb25maWcuY29sdW1ucy5sZW5ndGgpICsgJyUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ249XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXshcHJvcHMuZGlzYWJsZWQgJiYgaXNJdGVtU2VsZWN0ZWQgJiYgIVV0aWxzLmlzTnVsbChwcm9wcy5mb3JtKSAmJiAhVXRpbHMuaXNOdWxsKGNvbHVtbi5lZGl0b3IpID8gJ2VkaXRDZWxsJyA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXggKyBcIl9cIiArIGNvbHVtbi5pZH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXlvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZT17Y3JlYXRlQ29sdW1uTGF5b3V0SGFuZGxlKGNvbHVtbiwgaW5kZXgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleCArIFwiX1wiICsgY29sdW1uLmlkICsgXCJfbGF5b3V0XCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVJvdz17cm93cy5maW5kKChyKSA9PiByLmlkID09PSByb3cuaWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93SW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPXtKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHByb3BzLmNvbmZpZy5jb2x1bW5zLmZpbmQoKGNvbCkgPT4gY29sLmlkID09PSBjb2x1bW4uaWQpLmxheW91dCkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0lkPXtwcm9wcy52aWV3SWR9IHBhcmVudD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UZD4gOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNvbHVtbi5hdHRyaWJ1dGVzLndpZHRoID8gY29sdW1uLmF0dHJpYnV0ZXMud2lkdGggOiAoMTAwIC8gY29uZmlnLmNvbHVtbnMubGVuZ3RoKSArICclJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduPVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17IXByb3BzLmRpc2FibGVkICYmIGlzSXRlbVNlbGVjdGVkICYmICFVdGlscy5pc051bGwoY29sdW1uLmVkaXRvcikgPyAnZWRpdENlbGwnIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleCArIFwiX1wiICsgY29sdW1uLmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiBoYW5kbGVDZWxsQ2xpY2soZXZlbnQsIHJvdy5pZCwgY29sdW1uKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGxDb250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwPXt3cmFwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Sb3dFcnJvcj17cm93RXJyb3JIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlPXtjcmVhdGVDZWxsRWRpdG9ySGFuZGxlKGNvbHVtbil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvcj17IXByb3BzLmRpc2FibGVkICYmICFyb3cucmVhZE9ubHkgJiYgIXJvdy5jb2x1bW5SZWFkT25seT8uW2NvbHVtbj8uaWRdID8gY29sdW1uLmVkaXRvciA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZDYWxsYmFjaz17Y3JlYXRlQ2VsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtpc0l0ZW1TZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcj17Y29sdW1uLnZhbGlkYXRvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17ZWRpdG9yQ2hhbmdlSGFuZGxlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbmZpZz17Y29sdW1ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUJpbmRpbmc9eyFVdGlscy5pc051bGwoY29sdW1uLmRhdGFCaW5kaW5nKSA/IGNvbHVtbi5kYXRhQmluZGluZyA6IGNvbHVtbi5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdz17cm93fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFR5cGU9e2NvbHVtbi5maWVsZFR5cGUgfHwgY29sdW1uLmVkaXRvcj8uZmllbGRUeXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbEZvcm1hdHRlcj17Y29sdW1uLmNlbGxGb3JtYXR0ZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcml0ZXJpYT17Y3JpdGVyaWF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UZD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ucj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5wYWdpbmF0aW9uKSAmJiAoVXRpbHMuaXNOdWxsKHByb3BzLnBhZ2luYXRpb24pIHx8IHByb3BzLnBhZ2luYXRpb24gPT09IHRydWUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAocHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LnBhZ2luYXRpb24gJiYgcHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LnBhZ25hdGlvbiA9PT0gdHJ1ZSkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYWdpbmF0aW9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZVBhZ2luYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtcImdyaWQtdGFibGUtcGFnaW5hdGlvblwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzUGVyUGFnZU9wdGlvbnM9e3Jvd3NQZXJQYWdlT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50PVwiZGl2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ9e3RvdGFsTnVtYmVyT2ZSb3dzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzUGVyUGFnZT17cm93c1BlclBhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U9e3BhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tJY29uQnV0dG9uUHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmlhLWxhYmVsJzogJ3ByZXZpb3VzIHBhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0SWNvbkJ1dHRvblByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbCc6ICduZXh0IHBhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhZ2VDaGFuZ2U9e2hhbmRsZUNoYW5nZVBhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUm93c1BlclBhZ2VDaGFuZ2U9e2hhbmRsZUNoYW5nZVJvd3NQZXJQYWdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUMsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0QsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsMEJBQUEsR0FBQUYsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUcsU0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBSyxZQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxlQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTyxnQkFBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsaUJBQUEsR0FBQVQsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFTLGdCQUFBLEdBQUFWLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBVSxPQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxNQUFBLEdBQUFaLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBWSxXQUFBLEdBQUFiLHNC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