@projectcor/maia-components 2.11.31-1 → 2.11.31-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -210,7 +210,7 @@ var CustomLink = function CustomLink(_ref5) {
210
210
 
211
211
  /** Solo este componente re-renderiza cuando cambia el texto en streaming (lee del context). */
212
212
  var StreamingMessageBody = /*#__PURE__*/memo(function (props) {
213
- var _winFlags$streamLagMs, _props$messageId, _winFlags$streamBuffe, _winFlags$streamMinBu, _winFlags$streamWarmu, _props$createAgentFol;
213
+ var _props$messageId, _props$createAgentFol;
214
214
  // Texto del stream: solo se lee del store cuando este mensaje es el
215
215
  // que está en streaming. useSyncExternalStore aísla el re-render a
216
216
  // este componente, sin tocar el resto del árbol.
@@ -221,25 +221,32 @@ var StreamingMessageBody = /*#__PURE__*/memo(function (props) {
221
221
  // termina, muestra el texto final al instante (sin animación residual).
222
222
  // Flags de tuning leídas desde window para iterar sin recompilar.
223
223
  // Uso (consola):
224
+ // Los defaults viven en el hook; estos flags permiten override en runtime
225
+ // sin recompilar (útil para tunear en staging/prod).
224
226
  // window.streamDebug = true // activa logs de métricas
225
- // window.streamAdapt = true // activa adaptación a la tasa del backend
226
- // window.streamBufferMs = 400 // colchón objetivo (ms) del controlador
227
- // window.streamLagMs = 300 // lag máximo base (ms)
228
- // window.streamMinBuffer = 40 // piso del colchón en chars
229
- // window.streamWarmupMs = 250 // warmup inicial (ms) antes de animar
227
+ // window.streamAdapt = false // desactiva adaptación al backend
228
+ // window.streamBufferMs = 600 // colchón objetivo (ms)
229
+ // window.streamLagMs = 450 // lag máximo base (ms)
230
+ // window.streamMinBuffer = 70 // piso del colchón en chars
231
+ // window.streamWarmupMs = 400 // warmup inicial (ms)
230
232
  var winFlags = typeof window !== 'undefined' ? window : {};
231
- var displayText = useSmoothStreamText(rawText, {
233
+ var displayText = useSmoothStreamText(rawText, _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
232
234
  enabled: !!props.isStreaming,
233
- targetLagMs: (_winFlags$streamLagMs = winFlags.streamLagMs) !== null && _winFlags$streamLagMs !== void 0 ? _winFlags$streamLagMs : 300,
234
235
  maxCharsPerFrame: 24,
235
236
  snapToWordBoundary: true,
236
237
  debug: !!winFlags.streamDebug,
237
- debugLabel: "smoothStream:".concat((_props$messageId = props.messageId) !== null && _props$messageId !== void 0 ? _props$messageId : 'unknown'),
238
- adaptToBackendRate: winFlags.streamAdapt !== false,
239
- targetBufferMs: (_winFlags$streamBuffe = winFlags.streamBufferMs) !== null && _winFlags$streamBuffe !== void 0 ? _winFlags$streamBuffe : 400,
240
- minBufferChars: (_winFlags$streamMinBu = winFlags.streamMinBuffer) !== null && _winFlags$streamMinBu !== void 0 ? _winFlags$streamMinBu : 40,
241
- warmupMs: (_winFlags$streamWarmu = winFlags.streamWarmupMs) !== null && _winFlags$streamWarmu !== void 0 ? _winFlags$streamWarmu : 250
242
- });
238
+ debugLabel: "smoothStream:".concat((_props$messageId = props.messageId) !== null && _props$messageId !== void 0 ? _props$messageId : 'unknown')
239
+ }, winFlags.streamLagMs != null && {
240
+ targetLagMs: winFlags.streamLagMs
241
+ }), winFlags.streamAdapt != null && {
242
+ adaptToBackendRate: winFlags.streamAdapt
243
+ }), winFlags.streamBufferMs != null && {
244
+ targetBufferMs: winFlags.streamBufferMs
245
+ }), winFlags.streamMinBuffer != null && {
246
+ minBufferChars: winFlags.streamMinBuffer
247
+ }), winFlags.streamWarmupMs != null && {
248
+ warmupMs: winFlags.streamWarmupMs
249
+ }));
243
250
  var createAgentActionsAgentId = (_props$createAgentFol = props.createAgentFollowUp) === null || _props$createAgentFol === void 0 ? void 0 : _props$createAgentFol.agentId;
244
251
  if (!displayText && !props.isStreaming) return null;
245
252
  return /*#__PURE__*/_jsxs(_Fragment, {
@@ -856,4 +863,4 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref7) {
856
863
  });
857
864
  };
858
865
  export var ChatAIMessages = /*#__PURE__*/React.memo(ChatAIMessagesInner);
859
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiY3JlYXRlRWxlbWVudCIsIl9jcmVhdGVFbGVtZW50IiwiU3RyZWFtZG93biIsImNyZWF0ZUNvZGVQbHVnaW4iLCJBcnJvd1NtYWxsRG93biIsIkF0dGFjaG1lbnRDYXJkIiwiQXBwcm92YWxCb3giLCJBdHRhY2htZW50UHJldmlld01vZGFsIiwiQXR0YWNobWVudENhcmRBdWRpbyIsIkNoYXRIaXN0b3J5Um9sZSIsInVzZVVzZXIiLCJ1c2VUIiwidXNlQ2hhdE1hbmFnZXIiLCJ1c2VUYXNrUGFuZWwiLCJ1c2VTbW9vdGhTdHJlYW1UZXh0IiwidXNlU3RyZWFtaW5nTWVzc2FnZSIsIkxvYWRpbmdUZXh0IiwiTG9hZGVyIiwiTWVzc2FnZUZyb21Vc2VyIiwiTWVzc2FnZUZyb21PdGhlciIsIk1lc3NhZ2VDb250ZW50RnJvbVVzZXIiLCJNZXNzYWdlQ29udGVudEZyb21PdGhlciIsIk1lc3NhZ2VGZWVkYmFjayIsIlNDQ0FJTWVzc2FnZVdyYXBwZXIiLCJTY3JvbGxUb0JvdHRvbUJ1dHRvbiIsIlNDTWVzc2FnZXNPdXRlciIsIlNDTWVzc2FnZXNTY3JvbGwiLCJTQ01lc3NhZ2VzSW5uZXIiLCJTQ0xvYWRpbmdNZXNzYWdlc0NvbHVtbiIsIlNDT3B0aW9uc0xpc3QiLCJTQ09wdGlvbkl0ZW0iLCJTQ0Fzc2lzdGFudE1lc3NhZ2VIZWFkZXIiLCJTQ0Fzc2lzdGFudE5hbWUiLCJTQ0Fzc2lzdGFudEF2YXRhciIsIlNDVGFza0xpbmsiLCJTQ01lc3NhZ2VJdGVtV3JhcHBlciIsIlNDTWVzc2FnZUl0ZW1Jbm5lciIsIlNDQXR0YWNobWVudHNSb3ciLCJTQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbiIsIkZlZWRiYWNrIiwidXNlR2xvYmFsQ29udGV4dCIsIk1BSUFJY29uIiwiVEFTS19VUkxfUkVHRVhfUEFUVEVSTiIsIkNoYXRBSVN1Z2dlc3Rpb25zIiwiQ2hhdEFJQ3JlYXRlQWdlbnRBY3Rpb25zIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJkb3dubG9hZEZpbGVGcm9tVXJsIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiY29kZSIsInRoZW1lcyIsIkFzc2lzdGFudEF2YXRhcklubmVyIiwiX3VzZUdsb2JhbENvbnRleHQiLCJhZ2VudCIsImNoaWxkcmVuIiwidHlwZSIsIndpZHRoIiwiaGVpZ2h0IiwiZW1vamkiLCJBc3Npc3RhbnRBdmF0YXIiLCJNZXNzYWdlV3JhcHBlciIsIl9yZWYiLCJpc0N1cnJlbnRVc2VyIiwicHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJNZXNzYWdlQ29tcG9uZW50IiwiX29iamVjdFNwcmVhZCIsIk1lc3NhZ2VDb250ZW50V3JhcHBlciIsIl9yZWYyIiwiX2V4Y2x1ZGVkMiIsIk1lc3NhZ2VDb250ZW50Q29tcG9uZW50IiwiTWVzc2FnZU9wdGlvbnMiLCJfcmVmMyIsIm9wdGlvbnMiLCJoYW5kbGVTZWxlY3RPcHRpb24iLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzZWxlY3RlZE9wdGlvbiIsInNldFNlbGVjdGVkT3B0aW9uIiwiaGFuZGxlU2VsZWN0Iiwib3B0aW9uIiwibWFwIiwiJGhhc1NlbGVjdGlvbiIsIiRkaW1tZWQiLCJpZCIsIm9uQ2xpY2siLCJuYW1lIiwiQXNzaXN0YW50TWVzc2FnZUhlYWRlciIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwibG9jYWxBZ2VudCIsInNldExvY2FsQWdlbnQiLCJfdXNlR2xvYmFsQ29udGV4dDIiLCJnZXRUYWJTZWdtZW50RnJvbUhyZWYiLCJocmVmIiwibWF0Y2giLCJ0ZXN0IiwiZXh0cmFjdFRhc2tzRnJvbU1lc3NhZ2UiLCJtZXNzYWdlIiwidGFza1VybFJlZ2V4IiwiUmVnRXhwIiwidGFza3MiLCJzZWVuSWRzIiwiU2V0IiwiZXhlYyIsInRhc2tJZCIsInVybCIsImhhcyIsImFkZCIsImVzY2FwZWRVcmwiLCJyZXBsYWNlIiwibWFya2Rvd25MaW5rUmVnZXgiLCJjb25jYXQiLCJsaW5rTWF0Y2giLCJ0aXRsZSIsInB1c2giLCJoYXNUYXNrTGlua3MiLCJ0ZXh0IiwibGVuZ3RoIiwiVGFza0xpbmsiLCJfcmVmNCIsInRhYlNlZ21lbnQiLCJfdXNlVGFza1BhbmVsIiwiYnVpbGRPcGVuVGFzayIsIm9wZW5UYXNrIiwiaGFuZGxlQ2xpY2siLCJlIiwibWV0YUtleSIsImN0cmxLZXkiLCJwcmV2ZW50RGVmYXVsdCIsIkN1c3RvbUxpbmsiLCJfcmVmNSIsInJlc3QiLCJfZXhjbHVkZWQzIiwidGFza01hdGNoIiwiU3RyZWFtaW5nTWVzc2FnZUJvZHkiLCJfd2luRmxhZ3Mkc3RyZWFtTGFnTXMiLCJfcHJvcHMkbWVzc2FnZUlkIiwiX3dpbkZsYWdzJHN0cmVhbUJ1ZmZlIiwiX3dpbkZsYWdzJHN0cmVhbU1pbkJ1IiwiX3dpbkZsYWdzJHN0cmVhbVdhcm11IiwiX3Byb3BzJGNyZWF0ZUFnZW50Rm9sIiwic3RyZWFtaW5nVGV4dCIsImlzU3RyZWFtaW5nIiwibWVzc2FnZUlkIiwicmF3VGV4dCIsIndpbkZsYWdzIiwid2luZG93IiwiZGlzcGxheVRleHQiLCJlbmFibGVkIiwidGFyZ2V0TGFnTXMiLCJzdHJlYW1MYWdNcyIsIm1heENoYXJzUGVyRnJhbWUiLCJzbmFwVG9Xb3JkQm91bmRhcnkiLCJkZWJ1ZyIsInN0cmVhbURlYnVnIiwiZGVidWdMYWJlbCIsImFkYXB0VG9CYWNrZW5kUmF0ZSIsInN0cmVhbUFkYXB0IiwidGFyZ2V0QnVmZmVyTXMiLCJzdHJlYW1CdWZmZXJNcyIsIm1pbkJ1ZmZlckNoYXJzIiwic3RyZWFtTWluQnVmZmVyIiwid2FybXVwTXMiLCJzdHJlYW1XYXJtdXBNcyIsImNyZWF0ZUFnZW50QWN0aW9uc0FnZW50SWQiLCJjcmVhdGVBZ2VudEZvbGxvd1VwIiwiYWdlbnRJZCIsImlzRnJvbnRlbmRDYW5jZWxsZWQiLCJjbGFzc05hbWUiLCJpc0Fzc2lzdGFudCIsInBsdWdpbnMiLCJjb21wb25lbnRzIiwiYSIsImxpbmtTYWZldHkiLCJpc0FuaW1hdGluZyIsInNoaWtpVGhlbWUiLCJjb250cm9scyIsInRhYmxlIiwiaXNFcnJvciIsImFwcHJvdmFsIiwiY29udGVudCIsInNvdXJjZXMiLCJoYW5kbGVGZWVkYmFjayIsImhhbmRsZUZlZWRiYWNrQ2xpY2siLCJkaXNhYmxlRmVlZGJhY2siLCJzdWdnZXN0aW9ucyIsIm9uU2VsZWN0U3VnZ2VzdGlvbiIsInN1Z2dlc3Rpb24iLCJoYW5kbGVTdWdnZXN0aW9uQ2xpY2siLCJkaXNhYmxlZCIsInN1Z2dlc3Rpb25zRGlzYWJsZWQiLCJoaWRkZW4iLCJpc0xhc3RNZXNzYWdlIiwiTWVzc2FnZUl0ZW0iLCJfcHJvcHMkcHJvamVjdE1ldGFkYXQiLCJ1c2VyIiwiYXV0aFVzZXIiLCJpc0NoYW5nZVByb2plY3QiLCJoYW5kbGVBcHByb3ZhbERlY2lzaW9uIiwicm9sZSIsImF0dGFjaG1lbnRzIiwiYXBwcm92YWxTdGF0dXMiLCJoYXNTZWxlY3RlZFN1Z2dlc3Rpb24iLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInByZXZpZXdBdHRhY2htZW50Iiwic2V0UHJldmlld0F0dGFjaG1lbnQiLCJVU0VSIiwidG9TdHJpbmciLCJBU1NJU1RBTlQiLCJtZXNzYWdlQXR0YWNobWVudHMiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVBdHRhY2htZW50Q2xpY2siLCJhdHRhY2htZW50IiwiZmlsZSIsIkZpbGUiLCJvcmlnaW5hbEZpbGUiLCJ1cmxfdGh1bWJuYWlsIiwidXJsX29yaWdpbmFsIiwidXJsX2ZpbGUiLCJoYW5kbGVDbG9zZVByZXZpZXciLCJoYW5kbGVBdHRhY2htZW50RG93bmxvYWQiLCJfcmVmNiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiZXh0ZW5zaW9uIiwiZmlsZU5hbWUiLCJmaWxlVXJsIiwiYmxvYlVybCIsImRvd25sb2FkZWRGaWxlIiwibGluayIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJpbmNsdWRlcyIsInNlbnQiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJhYnJ1cHQiLCJkb2N1bWVudCIsImRvd25sb2FkIiwic3R5bGUiLCJkaXNwbGF5IiwiYm9keSIsImFwcGVuZENoaWxkIiwiY2xpY2siLCJzZXRUaW1lb3V0IiwicmVtb3ZlQ2hpbGQiLCJyZXZva2VPYmplY3RVUkwiLCJjb25zb2xlIiwiZXJyb3IiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImhhc0ZlZWRiYWNrIiwiJGlzQXNzaXN0YW50IiwibWVzc2FnZUV4dHJhQ29udGVudCIsImZlZWRiYWNrIiwic2Vzc2lvbklkIiwic3BsaXQiLCJmaWx0ZXIiLCJxdWVzdGlvbklkIiwiam9pbiIsImluZGV4IiwiX2F0dGFjaG1lbnQkdHlwZSIsIl9hdHRhY2htZW50JG5hbWUiLCJhdHRhY2htZW50VHlwZSIsInRvTG93ZXJDYXNlIiwiYXR0YWNobWVudE5hbWUiLCJpc0F1ZGlvRmlsZSIsInN0YXJ0c1dpdGgiLCJzb21lIiwiZXh0IiwiZW5kc1dpdGgiLCJwb3NpdGlvbkluZGV4Iiwib25Eb3dubG9hZCIsInBlbmRpbmdfYWN0aW9ucyIsImFjdGlvbnMiLCJzdGF0dXMiLCJvbkFwcHJvdmUiLCJ0aHJlYWRJZHMiLCJvblJlamVjdCIsImlzUHJvamVjdERlbGV0ZWQiLCJwcm9qZWN0TWV0YWRhdGEiLCJpc19kZWxldGVkIiwiaXNFeHBhbmRlZCIsImV4cGFuZGVkIiwiaGl0bEluc3RhbmNlSWQiLCJvcmlnaW5hbF90aHJlYWRfaWQiLCJ3YXJuaW5nTWVzc2FnZSIsIndhcm5pbmdfbWVzc2FnZSIsIm1hbnVhbEFwcHJvdmFsRGV0ZWN0ZWQiLCJtYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQiLCJpc09wZW4iLCJvbkNsb3NlIiwiQ2hhdEFJTWVzc2FnZXNJbm5lciIsIl9yZWY3IiwidXNlckluaXRpYWxNZXNzYWdlIiwiaW5pdGlhbENoYXRJZCIsIm9uRXJyb3IiLCJvblNlbmRNZXNzYWdlUmVhZHkiLCJvblNjcm9sbFRvQm90dG9tIiwiYWdlbnRzIiwiX3VzZVQiLCJ0IiwiX3VzZUdsb2JhbENvbnRleHQzIiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJpc0RlZXBTZWFyY2hBY3RpdmUiLCJldmVudCIsIm1lc3NhZ2VzUmVmIiwiY2hhdEluaXRpYWxpemVkUmVmIiwiaXNMb2FkaW5nTW9yZVJlZiIsInVzZXJTY3JvbGxpbmdSZWYiLCJzY3JvbGxUaHJlc2hvbGRSZWYiLCJsYXN0U2Nyb2xsVG9wUmVmIiwic2hvd1Njcm9sbFRvQm90dG9tUmVmIiwic2Nyb2xsUmFmUmVmIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJzaG93U2Nyb2xsVG9Cb3R0b20iLCJzZXRTaG93U2Nyb2xsVG9Cb3R0b20iLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHMiLCJzZXRTZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzIiwiX3VzZUNoYXRNYW5hZ2VyIiwiY2hhdElkIiwidW5kZWZpbmVkIiwibWVzc2FnZXMiLCJsb2FkaW5nTWVzc2FnZXMiLCJpc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJ3YWl0aW5nUmVzcG9uc2UiLCJpc1dyaXRpbmciLCJsb2FkaW5nTWVzc2FnZSIsImFjdGl2ZUxvYWRpbmdzIiwic2VuZE1lc3NhZ2UiLCJjaGFuZ2VQcm9qZWN0IiwiaW5pdGlhbGl6ZUNoYXQiLCJoYW5kbGVTY3JvbGwiLCJzdG9wR2VuZXJhdGlvbiIsInRyaW0iLCJpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQiLCJlbnRpdHkiLCJhaUNoYXRTdWdnZXN0ZWRBbnN3ZXIiLCJhZ2VudF90eXBlIiwiX2RlZmluZVByb3BlcnR5IiwidXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eSIsImVsIiwiY3VycmVudCIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsImRpc3RhbmNlRnJvbUJvdHRvbSIsInNob3VsZFNob3ciLCJzY3JvbGxUb0JvdHRvbVJhZiIsIm9wdHMiLCJfb3B0cyRza2lwSWZVc2VyU2Nyb2wiLCJza2lwSWZVc2VyU2Nyb2xsaW5nIiwiX29wdHMkZGVsYXlNcyIsImRlbGF5TXMiLCJydW4iLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJoYW5kbGVDbGlja1Njcm9sbFRvQm90dG9tIiwic2Nyb2xsVG8iLCJ0b3AiLCJiZWhhdmlvciIsImhhbmRsZVNjcm9sbFRvQm90dG9tIiwiY29udGFpbmVyIiwiY3VycmVudFRhcmdldCIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwiaXNTY3JvbGxpbmdVcCIsImlzTmVhckJvdHRvbSIsInNlbmRNZXNzYWdlUmVmIiwic3RvcEdlbmVyYXRpb25SZWYiLCJvblNlbmRNZXNzYWdlUmVhZHlSZWYiLCJyYWZJZCIsImxhc3RIZWlnaHQiLCJ0aWNrIiwiY3VycmVudEhlaWdodCIsImxhc3RNZXNzYWdlSWRSZWYiLCJsYXN0TWVzc2FnZXNMZW5ndGhSZWYiLCJfbGFzdE1lc3NhZ2UkaWQiLCJsYXN0TWVzc2FnZSIsImxhc3RJZCIsInByZXZJZCIsInByZXZMZW4iLCJpc05ld01lc3NhZ2UiLCJpc0F0Qm90dG9tIiwiaGFzSW5pdGlhbE1lc3NhZ2UiLCJtc2ciLCJpc0FwcHJvdmFsIiwiaXNBbnN3ZXJPclF1ZXN0aW9uIiwibGFzdFVzZXJNZXNzYWdlIiwiYXQiLCJoYXNBdHRhY2htZW50cyIsImlzU2Nyb2xsT25QYXJlbnQiLCJleHBhbmRlZFJlZiIsInNhdmVkU2Nyb2xsVG9wIiwibWVzc2FnZXNDb250ZW50IiwiX21lc3NhZ2UkYXR0YWNobWVudHMiLCJfbWVzc2FnZSRzb3VyY2VzIiwiX21lc3NhZ2UkcHJvamVjdCIsIl9tZXNzYWdlJGlkIiwiaXNBc3Npc3RhbnRNZXNzYWdlIiwicHJvamVjdCIsIm1lc3NhZ2VGZWVkYmFjayIsIndhc0hlbHBmdWwiLCJUSFVNQlNfVVAiLCJUSFVNQlNfRE9XTiIsIm1lc3NhZ2VLZXkiLCJrZXkiLCJPYmplY3QiLCJrZXlzIiwidmFsdWVzIiwiZmluZCIsIiRzY3JvbGxPblBhcmVudCIsInJlZiIsIm9uU2Nyb2xsIiwiJGlzTWFya2V0cGxhY2VHbG9iYWwiLCJjb2xvciIsIkNoYXRBSU1lc3NhZ2VzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1lc3NhZ2VzL0NoYXRBSU1lc3NhZ2VzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLXVuc3RhYmxlLW5lc3RlZC1jb21wb25lbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9yZXF1aXJlLWRlZmF1bHQtcHJvcHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IFJlYWN0LCB7IEZDLCBtZW1vLCBSZWFjdE5vZGUsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgU3RyZWFtZG93biB9IGZyb20gJ3N0cmVhbWRvd24nXG5pbXBvcnQgeyBjcmVhdGVDb2RlUGx1Z2luIH0gZnJvbSAnQHN0cmVhbWRvd24vY29kZSdcbmltcG9ydCB7IEFycm93U21hbGxEb3duIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQXJyb3dTbWFsbERvd24nXG5cbmltcG9ydCB7IEF0dGFjaG1lbnRDYXJkIH0gZnJvbSAnLi4vLi4vYXRvbXMvQXR0YWNobWVudENhcmQvQXR0YWNobWVudENhcmQnXG5pbXBvcnQgeyBBcHByb3ZhbEJveCB9IGZyb20gJy4uLy4uL2F0b21zL0FwcHJvdmFsQm94L0FwcHJvdmFsQm94J1xuaW1wb3J0IHsgQXR0YWNobWVudFByZXZpZXdNb2RhbCB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRQcmV2aWV3TW9kYWwnXG5pbXBvcnQgeyBBdHRhY2htZW50Q2FyZEF1ZGlvIH0gZnJvbSAnLi4vLi4vYXRvbXMvQXR0YWNobWVudENhcmQvQXR0YWNobWVudENhcmRBdWRpbydcbmltcG9ydCB7IE1BSUFNZXNzYWdlUHJvcHMgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBTWVzc2FnZS9NQUlBTWVzc2FnZS5pbnRlcmZhY2VzJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENoYXRIaXN0b3J5Um9sZSwgVGFza0luZm8gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9DaGF0J1xuXG5pbXBvcnQgeyBDT1JVc2VyLCB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcblxuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyB1c2VDaGF0TWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyJ1xuaW1wb3J0IHsgdXNlVGFza1BhbmVsIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVGFza1BhbmVsJ1xuaW1wb3J0IHsgdXNlU21vb3RoU3RyZWFtVGV4dCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNtb290aFN0cmVhbVRleHQnXG5pbXBvcnQgeyB1c2VTdHJlYW1pbmdNZXNzYWdlIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU3RyZWFtaW5nTWVzc2FnZSdcblxuaW1wb3J0IHsgTG9hZGluZ1RleHQgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkaW5nVGV4dCdcbmltcG9ydCB7IExvYWRlciB9IGZyb20gJy4uLy4uL2F0b21zL0xvYWRlcidcblxuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Byb2plY3QnXG5cbmltcG9ydCB7IE1lc3NhZ2VGcm9tVXNlciwgTWVzc2FnZUZyb21PdGhlciwgTWVzc2FnZUNvbnRlbnRGcm9tVXNlciwgTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXIgfSBmcm9tICcuL3N0eWxlcydcbmltcG9ydCB7IE1lc3NhZ2VGZWVkYmFjayB9IGZyb20gJy4uL01lc3NhZ2VGZWVkYmFjaydcbmltcG9ydCB7XG4gIFNDQ0FJTWVzc2FnZVdyYXBwZXIsXG4gIFNjcm9sbFRvQm90dG9tQnV0dG9uLFxuICBTQ01lc3NhZ2VzT3V0ZXIsXG4gIFNDTWVzc2FnZXNTY3JvbGwsXG4gIFNDTWVzc2FnZXNJbm5lcixcbiAgU0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4sXG4gIFNDT3B0aW9uc0xpc3QsXG4gIFNDT3B0aW9uSXRlbSxcbiAgU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyLFxuICBTQ0Fzc2lzdGFudE5hbWUsXG4gIFNDQXNzaXN0YW50QXZhdGFyLFxuICBTQ1Rhc2tMaW5rLFxuICBTQ01lc3NhZ2VJdGVtV3JhcHBlcixcbiAgU0NNZXNzYWdlSXRlbUlubmVyLFxuICBTQ0F0dGFjaG1lbnRzUm93LFxuICBTQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbixcbn0gZnJvbSAnLi9uZXdTdHlsZXMnXG5pbXBvcnQgeyBGZWVkYmFjayB9IGZyb20gJy4uL01lc3NhZ2VGZWVkYmFjay9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IE1BSUFJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuaW1wb3J0IHsgQ2hhdEFJU3VnZ2VzdGlvbnMgfSBmcm9tICcuL0NoYXRBSVN1Z2dlc3Rpb25zJ1xuaW1wb3J0IHsgQ2hhdEFJQ3JlYXRlQWdlbnRBY3Rpb25zIH0gZnJvbSAnLi9DaGF0QUlDcmVhdGVBZ2VudEFjdGlvbnMnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBkb3dubG9hZEZpbGVGcm9tVXJsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZmlsZURvd25sb2FkSGVscGVyJ1xuXG5jb25zdCBjb2RlID0gY3JlYXRlQ29kZVBsdWdpbih7IHRoZW1lczogWydnaXRodWItbGlnaHQnLCAnZ2l0aHViLWxpZ2h0J10gfSlcblxuY29uc3QgQXNzaXN0YW50QXZhdGFySW5uZXI6IEZDID0gKCkgPT4ge1xuICBjb25zdCB7IGFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgcmV0dXJuIChcbiAgICA8U0NBc3Npc3RhbnRBdmF0YXI+XG4gICAgICB7YWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgPyA8TUFJQUljb24gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPiA6IGFnZW50Py5lbW9qaX1cbiAgICA8L1NDQXNzaXN0YW50QXZhdGFyPlxuICApXG59XG5cbmNvbnN0IEFzc2lzdGFudEF2YXRhciA9IG1lbW8oQXNzaXN0YW50QXZhdGFySW5uZXIpXG5cbnR5cGUgQ2hhdEFJTWVzc2FnZXNQcm9wcyA9IHtcbiAgdXNlckluaXRpYWxNZXNzYWdlOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBmYXFJZD86IHN0cmluZ1xuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gIH1cbiAgaW5pdGlhbENoYXRJZDogc3RyaW5nIHwgbnVsbFxuICBvbkVycm9yOiAoKSA9PiB2b2lkXG4gIG9uU2VuZE1lc3NhZ2VSZWFkeT86IChcbiAgICBzZW5kTWVzc2FnZTogKG1lc3NhZ2U6IHN0cmluZywgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLCBmYXFJZD86IHN0cmluZywgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcpID0+IHZvaWQsXG4gICAgc3RvcEdlbmVyYXRpb246ICgpID0+IHZvaWQsXG4gICAgaXNTdHJlYW1pbmc6IGJvb2xlYW4sXG4gICAgaXNXcml0aW5nOiBib29sZWFuXG4gICkgPT4gdm9pZFxuICBpc0Rpc2FibGVkPzogYm9vbGVhblxuICBvblNjcm9sbFRvQm90dG9tPzogKCkgPT4gdm9pZFxuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgYWdlbnRzPzogQWdlbnRbXVxuICBleHBhbmRlZD86IGJvb2xlYW5cbn1cblxudHlwZSBNZXNzYWdlSXRlbVByb3BzID0gQ2hhdE1lc3NhZ2UgJiB7XG4gIGF1dGhVc2VyOiBDT1JVc2VyXG4gIGhhbmRsZVNlbGVjdE9wdGlvbjogKG9wdGlvbjogUHJvamVjdCkgPT4gdm9pZFxuICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s6IChtZXNzYWdlSWQ6IHN0cmluZywgc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB2b2lkXG4gIGhhc1NlbGVjdGVkU3VnZ2VzdGlvbj86IGJvb2xlYW5cbiAgaGFuZGxlRmVlZGJhY2s6IChmZWVkYmFjazogRmVlZGJhY2ssIGNoYXRNZXNzYWdlSWQ6IHN0cmluZykgPT4gdm9pZFxuICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uOiAodGhyZWFkSWRzOiBzdHJpbmdbXSwgZGVjaXNpb246ICdhcHByb3ZlJyB8ICdyZWplY3QnKSA9PiB2b2lkXG4gIGRpc2FibGVGZWVkYmFjaz86IEZlZWRiYWNrIHwgbnVsbFxuICBzb3VyY2VzPzogYW55XG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICBpc1N0cmVhbWluZz86IGJvb2xlYW5cbiAgaXNMYXN0TWVzc2FnZT86IGJvb2xlYW5cbiAgZXhwYW5kZWQ/OiBib29sZWFuXG59XG5cbmludGVyZmFjZSBNZXNzYWdlV3JhcHBlclByb3BzIHtcbiAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gICdkYXRhLW1lc3NhZ2UtaWQnPzogc3RyaW5nXG4gIGhhc0ZlZWRiYWNrPzogYm9vbGVhblxufVxuXG50eXBlIE1lc3NhZ2VDb250ZW50V3JhcHBlclByb3BzID0gTUFJQU1lc3NhZ2VQcm9wcyAmIHtcbiAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICBpc0Vycm9yPzogYm9vbGVhblxuICBpc0NoYW5nZVByb2plY3Q/OiBib29sZWFuXG59XG5cbmNvbnN0IE1lc3NhZ2VXcmFwcGVyOiBGQzxNZXNzYWdlV3JhcHBlclByb3BzPiA9ICh7IGlzQ3VycmVudFVzZXIsIGNoaWxkcmVuLCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IE1lc3NhZ2VDb21wb25lbnQgPSBpc0N1cnJlbnRVc2VyID8gTWVzc2FnZUZyb21Vc2VyIDogTWVzc2FnZUZyb21PdGhlclxuICByZXR1cm4gPE1lc3NhZ2VDb21wb25lbnQgey4uLnByb3BzfT57Y2hpbGRyZW59PC9NZXNzYWdlQ29tcG9uZW50PlxufVxuXG5jb25zdCBNZXNzYWdlQ29udGVudFdyYXBwZXI6IEZDPE1lc3NhZ2VDb250ZW50V3JhcHBlclByb3BzPiA9ICh7IGlzQ3VycmVudFVzZXIsIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgTWVzc2FnZUNvbnRlbnRDb21wb25lbnQgPSBpc0N1cnJlbnRVc2VyID8gTWVzc2FnZUNvbnRlbnRGcm9tVXNlciA6IE1lc3NhZ2VDb250ZW50RnJvbU90aGVyXG4gIHJldHVybiA8TWVzc2FnZUNvbnRlbnRDb21wb25lbnQgey4uLnByb3BzfSAvPlxufVxuXG5mdW5jdGlvbiBNZXNzYWdlT3B0aW9ucyh7XG4gIG9wdGlvbnMsXG4gIGhhbmRsZVNlbGVjdE9wdGlvbixcbn06IHtcbiAgb3B0aW9uczogUHJvamVjdFtdIHwgbnVsbFxuICBoYW5kbGVTZWxlY3RPcHRpb246IChvcHRpb246IFByb2plY3QpID0+IHZvaWRcbn0pIHtcbiAgY29uc3QgW3NlbGVjdGVkT3B0aW9uLCBzZXRTZWxlY3RlZE9wdGlvbl0gPSB1c2VTdGF0ZTxQcm9qZWN0IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBoYW5kbGVTZWxlY3QgPSAob3B0aW9uOiBQcm9qZWN0KSA9PiB7XG4gICAgaWYgKHNlbGVjdGVkT3B0aW9uKSByZXR1cm5cbiAgICBzZXRTZWxlY3RlZE9wdGlvbihvcHRpb24pXG4gICAgaGFuZGxlU2VsZWN0T3B0aW9uKG9wdGlvbilcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDT3B0aW9uc0xpc3Q+XG4gICAgICB7KG9wdGlvbnMgfHwgW10pLm1hcChvcHRpb24gPT4gKFxuICAgICAgICA8U0NPcHRpb25JdGVtXG4gICAgICAgICAgJGhhc1NlbGVjdGlvbj17ISFzZWxlY3RlZE9wdGlvbn1cbiAgICAgICAgICAkZGltbWVkPXshIXNlbGVjdGVkT3B0aW9uICYmIHNlbGVjdGVkT3B0aW9uPy5pZCAhPT0gb3B0aW9uLmlkfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbGVjdChvcHRpb24pfVxuICAgICAgICAgIGtleT17b3B0aW9uLmlkfVxuICAgICAgICA+XG4gICAgICAgICAge29wdGlvbi5uYW1lfVxuICAgICAgICA8L1NDT3B0aW9uSXRlbT5cbiAgICAgICkpfVxuICAgIDwvU0NPcHRpb25zTGlzdD5cbiAgKVxufVxuXG5jb25zdCBBc3Npc3RhbnRNZXNzYWdlSGVhZGVyID0gKCkgPT4ge1xuICBjb25zdCBbbG9jYWxBZ2VudCwgc2V0TG9jYWxBZ2VudF0gPSB1c2VTdGF0ZTxBZ2VudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHsgYWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0TG9jYWxBZ2VudChhZ2VudClcbiAgfSwgW2FnZW50XSlcblxuICByZXR1cm4gKFxuICAgIDxTQ0Fzc2lzdGFudE1lc3NhZ2VIZWFkZXI+XG4gICAgICA8QXNzaXN0YW50QXZhdGFyIC8+XG4gICAgICB7bG9jYWxBZ2VudD8ubmFtZSAmJiAoXG4gICAgICAgIDxTQ0Fzc2lzdGFudE5hbWU+e2xvY2FsQWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgPyAnTUFJQScgOiBsb2NhbEFnZW50Py5uYW1lfTwvU0NBc3Npc3RhbnROYW1lPlxuICAgICAgKX1cbiAgICA8L1NDQXNzaXN0YW50TWVzc2FnZUhlYWRlcj5cbiAgKVxufVxuXG4vLyBFeHRyYWUgZWwgc2VnbWVudG8gZGUgdGFiIChkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSBkZWwgaHJlZiBwYXJhIGFicmlyIGVsIG1vZGFsIGNvbiBlbCB0YWIgY29ycmVjdG9cbmNvbnN0IGdldFRhYlNlZ21lbnRGcm9tSHJlZiA9IChocmVmOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBtYXRjaCA9IGhyZWYubWF0Y2goL1xcL3Rhc2tzXFwvXFxkK1xcLyhbXi8/XSspLylcbiAgcmV0dXJuIG1hdGNoICYmIC9eKGRldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpJC8udGVzdChtYXRjaFsxXSkgPyBtYXRjaFsxXSA6ICdkZXRhaWwnXG59XG5cbi8qKiBFeHRyYWUgbGFzIHRhcmVhcyBlbmxhemFkYXMgZW4gZWwgdGV4dG8gKFVSTHMgcXVlIGNvaW5jaWRlbiBjb24gVEFTS19VUkxfUkVHRVhfUEFUVEVSTikuICovXG5jb25zdCBleHRyYWN0VGFza3NGcm9tTWVzc2FnZSA9IChtZXNzYWdlOiBzdHJpbmcpOiBUYXNrSW5mb1tdID0+IHtcbiAgaWYgKCFtZXNzYWdlKSByZXR1cm4gW11cbiAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gIGNvbnN0IHRhc2tzOiBUYXNrSW5mb1tdID0gW11cbiAgY29uc3Qgc2VlbklkcyA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9IG51bGxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gIHdoaWxlICgobWF0Y2ggPSB0YXNrVXJsUmVnZXguZXhlYyhtZXNzYWdlKSkgIT09IG51bGwpIHtcbiAgICBjb25zdCB0YXNrSWQgPSBtYXRjaFsxXVxuICAgIGNvbnN0IHVybCA9IG1hdGNoWzBdXG4gICAgaWYgKCFzZWVuSWRzLmhhcyh0YXNrSWQpKSB7XG4gICAgICBzZWVuSWRzLmFkZCh0YXNrSWQpXG4gICAgICBjb25zdCBlc2NhcGVkVXJsID0gdXJsLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJylcbiAgICAgIGNvbnN0IG1hcmtkb3duTGlua1JlZ2V4ID0gbmV3IFJlZ0V4cChgXFxcXFsoW15cXFxcXV0rKVxcXFxdXFxcXCgke2VzY2FwZWRVcmx9XFxcXClgKVxuICAgICAgY29uc3QgbGlua01hdGNoID0gbWVzc2FnZS5tYXRjaChtYXJrZG93bkxpbmtSZWdleClcbiAgICAgIGNvbnN0IHRpdGxlID0gbGlua01hdGNoID8gbGlua01hdGNoWzFdIDogYFRhcmVhICMke3Rhc2tJZH1gXG4gICAgICB0YXNrcy5wdXNoKHsgaWQ6IHRhc2tJZCwgdGl0bGUsIHVybCB9KVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGFza3Ncbn1cblxuY29uc3QgaGFzVGFza0xpbmtzID0gKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4gPT4gZXh0cmFjdFRhc2tzRnJvbU1lc3NhZ2UodGV4dCkubGVuZ3RoID4gMFxuXG4vLyBDb21wb25lbnQgZm9yIHRhc2sgbGlua3MgdGhhdCB1c2VzIHRoZSB1c2VUYXNrUGFuZWwgaG9va1xuY29uc3QgVGFza0xpbms6IEZDPHsgaHJlZjogc3RyaW5nOyB0YXNrSWQ6IHN0cmluZzsgY2hpbGRyZW46IFJlYWN0Tm9kZSB9PiA9ICh7IGhyZWYsIHRhc2tJZCwgY2hpbGRyZW4gfSkgPT4ge1xuICBjb25zdCB0YWJTZWdtZW50ID0gZ2V0VGFiU2VnbWVudEZyb21IcmVmKGhyZWYpXG4gIGNvbnN0IHsgYnVpbGRPcGVuVGFzayB9ID0gdXNlVGFza1BhbmVsKHRhc2tJZCwgdGFiU2VnbWVudClcbiAgY29uc3Qgb3BlblRhc2sgPSBidWlsZE9wZW5UYXNrKClcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChlOiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICAgIC8vIFNpIGVzIENtZC9DdHJsICsgY2xpY2ssIGRlamFyIHF1ZSBzZSBhYnJhIGVuIG51ZXZhIHBlc3Rhw7FhIChjb21wb3J0YW1pZW50byBwb3IgZGVmZWN0bylcbiAgICBpZiAoZS5tZXRhS2V5IHx8IGUuY3RybEtleSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgb3BlblRhc2soKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NUYXNrTGluayBocmVmPXtocmVmfSBvbkNsaWNrPXtoYW5kbGVDbGlja30+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TQ1Rhc2tMaW5rPlxuICApXG59XG5cbi8vIEN1c3RvbSBsaW5rIGNvbXBvbmVudCBmb3IgU3RyZWFtZG93bjogdGFzayBVUkxzIG9wZW4gdGhlIHRhc2sgcGFuZWwsIG90aGVyIGxpbmtzIHJlbmRlciBub3JtYWxseVxudHlwZSBDdXN0b21MaW5rUHJvcHMgPSBSZWFjdC5BbmNob3JIVE1MQXR0cmlidXRlczxIVE1MQW5jaG9yRWxlbWVudD4gJiB7IG5vZGU/OiB1bmtub3duIH1cbmNvbnN0IEN1c3RvbUxpbms6IEZDPEN1c3RvbUxpbmtQcm9wcz4gPSAoeyBocmVmLCBjaGlsZHJlbiwgLi4ucmVzdCB9KSA9PiB7XG4gIGlmICghaHJlZiB8fCB0eXBlb2YgaHJlZiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGEgaHJlZj17aHJlZn0gey4uLnJlc3R9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2E+XG4gICAgKVxuICB9XG4gIGNvbnN0IHRhc2tNYXRjaCA9IGhyZWYubWF0Y2gobmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOKSlcbiAgaWYgKHRhc2tNYXRjaCkge1xuICAgIGNvbnN0IHRhc2tJZCA9IHRhc2tNYXRjaFsxXVxuICAgIHJldHVybiAoXG4gICAgICA8VGFza0xpbmsgaHJlZj17aHJlZn0gdGFza0lkPXt0YXNrSWR9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1Rhc2tMaW5rPlxuICAgIClcbiAgfVxuICByZXR1cm4gKFxuICAgIDxhIGhyZWY9e2hyZWZ9IHsuLi5yZXN0fT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2E+XG4gIClcbn1cblxuLyoqIFNvbG8gZXN0ZSBjb21wb25lbnRlIHJlLXJlbmRlcml6YSBjdWFuZG8gY2FtYmlhIGVsIHRleHRvIGVuIHN0cmVhbWluZyAobGVlIGRlbCBjb250ZXh0KS4gKi9cbmNvbnN0IFN0cmVhbWluZ01lc3NhZ2VCb2R5ID0gbWVtbyhcbiAgKHByb3BzOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgaXNTdHJlYW1pbmc6IGJvb2xlYW5cbiAgICBpc0N1cnJlbnRVc2VyOiBib29sZWFuXG4gICAgaXNBc3Npc3RhbnQ6IGJvb2xlYW5cbiAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkPzogYm9vbGVhblxuICAgIGFwcHJvdmFsPzogTWVzc2FnZUl0ZW1Qcm9wc1snYXBwcm92YWwnXVxuICAgIGlzRXJyb3I/OiBib29sZWFuXG4gICAgc291cmNlcz86IE1lc3NhZ2VJdGVtUHJvcHNbJ3NvdXJjZXMnXVxuICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsXG4gICAgY3JlYXRlQWdlbnRGb2xsb3dVcD86IHsgYWdlbnRJZDogc3RyaW5nIH0gfCBudWxsXG4gICAgaGFuZGxlRmVlZGJhY2tDbGljazogKGY6IEZlZWRiYWNrKSA9PiB2b2lkXG4gICAgZGlzYWJsZUZlZWRiYWNrOiBGZWVkYmFjayB8IG51bGxcbiAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s6IChtZXNzYWdlSWQ6IHN0cmluZywgc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB2b2lkXG4gICAgc3VnZ2VzdGlvbnNEaXNhYmxlZD86IGJvb2xlYW5cbiAgICBtZXNzYWdlSWQ6IHN0cmluZ1xuICAgIGlzTGFzdE1lc3NhZ2U/OiBib29sZWFuXG4gIH0pID0+IHtcbiAgICAvLyBUZXh0byBkZWwgc3RyZWFtOiBzb2xvIHNlIGxlZSBkZWwgc3RvcmUgY3VhbmRvIGVzdGUgbWVuc2FqZSBlcyBlbFxuICAgIC8vIHF1ZSBlc3TDoSBlbiBzdHJlYW1pbmcuIHVzZVN5bmNFeHRlcm5hbFN0b3JlIGHDrXNsYSBlbCByZS1yZW5kZXIgYVxuICAgIC8vIGVzdGUgY29tcG9uZW50ZSwgc2luIHRvY2FyIGVsIHJlc3RvIGRlbCDDoXJib2wuXG4gICAgY29uc3Qgc3RyZWFtaW5nVGV4dCA9IHVzZVN0cmVhbWluZ01lc3NhZ2UocHJvcHMuaXNTdHJlYW1pbmcgPyBwcm9wcy5tZXNzYWdlSWQgOiBudWxsKVxuICAgIGNvbnN0IHJhd1RleHQgPSBwcm9wcy5pc1N0cmVhbWluZyA/IHN0cmVhbWluZ1RleHQgOiBwcm9wcy5tZXNzYWdlXG4gICAgLy8gU21vb3RoIHN0cmVhbWluZzogZGVzYWNvcGxhIGxhIGNhZGVuY2lhIGRlbCBiYWNrZW5kIGRlbCByZW5kZXIuXG4gICAgLy8gRHVyYW50ZSBlbCBzdHJlYW1pbmcgbGliZXJhIGNoYXJzIGEgcml0bW8gY29uc3RhbnRlIHbDrWEgckFGOyBjdWFuZG9cbiAgICAvLyB0ZXJtaW5hLCBtdWVzdHJhIGVsIHRleHRvIGZpbmFsIGFsIGluc3RhbnRlIChzaW4gYW5pbWFjacOzbiByZXNpZHVhbCkuXG4gICAgLy8gRmxhZ3MgZGUgdHVuaW5nIGxlw61kYXMgZGVzZGUgd2luZG93IHBhcmEgaXRlcmFyIHNpbiByZWNvbXBpbGFyLlxuICAgIC8vIFVzbyAoY29uc29sYSk6XG4gICAgLy8gICB3aW5kb3cuc3RyZWFtRGVidWcgPSB0cnVlICAgICAgIC8vIGFjdGl2YSBsb2dzIGRlIG3DqXRyaWNhc1xuICAgIC8vICAgd2luZG93LnN0cmVhbUFkYXB0ID0gdHJ1ZSAgICAgICAvLyBhY3RpdmEgYWRhcHRhY2nDs24gYSBsYSB0YXNhIGRlbCBiYWNrZW5kXG4gICAgLy8gICB3aW5kb3cuc3RyZWFtQnVmZmVyTXMgPSA0MDAgICAgIC8vIGNvbGNow7NuIG9iamV0aXZvIChtcykgZGVsIGNvbnRyb2xhZG9yXG4gICAgLy8gICB3aW5kb3cuc3RyZWFtTGFnTXMgPSAzMDAgICAgICAgIC8vIGxhZyBtw6F4aW1vIGJhc2UgKG1zKVxuICAgIC8vICAgd2luZG93LnN0cmVhbU1pbkJ1ZmZlciA9IDQwICAgICAvLyBwaXNvIGRlbCBjb2xjaMOzbiBlbiBjaGFyc1xuICAgIC8vICAgd2luZG93LnN0cmVhbVdhcm11cE1zID0gMjUwICAgICAvLyB3YXJtdXAgaW5pY2lhbCAobXMpIGFudGVzIGRlIGFuaW1hclxuICAgIGNvbnN0IHdpbkZsYWdzID1cbiAgICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnXG4gICAgICAgID8gKHdpbmRvdyBhcyB1bmtub3duIGFzIHtcbiAgICAgICAgICAgIHN0cmVhbURlYnVnPzogYm9vbGVhblxuICAgICAgICAgICAgc3RyZWFtQWRhcHQ/OiBib29sZWFuXG4gICAgICAgICAgICBzdHJlYW1CdWZmZXJNcz86IG51bWJlclxuICAgICAgICAgICAgc3RyZWFtTGFnTXM/OiBudW1iZXJcbiAgICAgICAgICAgIHN0cmVhbU1pbkJ1ZmZlcj86IG51bWJlclxuICAgICAgICAgICAgc3RyZWFtV2FybXVwTXM/OiBudW1iZXJcbiAgICAgICAgICB9KVxuICAgICAgICA6IHt9XG4gICAgY29uc3QgZGlzcGxheVRleHQgPSB1c2VTbW9vdGhTdHJlYW1UZXh0KHJhd1RleHQsIHtcbiAgICAgIGVuYWJsZWQ6ICEhcHJvcHMuaXNTdHJlYW1pbmcsXG4gICAgICB0YXJnZXRMYWdNczogd2luRmxhZ3Muc3RyZWFtTGFnTXMgPz8gMzAwLFxuICAgICAgbWF4Q2hhcnNQZXJGcmFtZTogMjQsXG4gICAgICBzbmFwVG9Xb3JkQm91bmRhcnk6IHRydWUsXG4gICAgICBkZWJ1ZzogISF3aW5GbGFncy5zdHJlYW1EZWJ1ZyxcbiAgICAgIGRlYnVnTGFiZWw6IGBzbW9vdGhTdHJlYW06JHtwcm9wcy5tZXNzYWdlSWQgPz8gJ3Vua25vd24nfWAsXG4gICAgICBhZGFwdFRvQmFja2VuZFJhdGU6IHdpbkZsYWdzLnN0cmVhbUFkYXB0ICE9PSBmYWxzZSxcbiAgICAgIHRhcmdldEJ1ZmZlck1zOiB3aW5GbGFncy5zdHJlYW1CdWZmZXJNcyA/PyA0MDAsXG4gICAgICBtaW5CdWZmZXJDaGFyczogd2luRmxhZ3Muc3RyZWFtTWluQnVmZmVyID8/IDQwLFxuICAgICAgd2FybXVwTXM6IHdpbkZsYWdzLnN0cmVhbVdhcm11cE1zID8/IDI1MCxcbiAgICB9KVxuICAgIGNvbnN0IGNyZWF0ZUFnZW50QWN0aW9uc0FnZW50SWQgPSBwcm9wcy5jcmVhdGVBZ2VudEZvbGxvd1VwPy5hZ2VudElkXG4gICAgaWYgKCFkaXNwbGF5VGV4dCAmJiAhcHJvcHMuaXNTdHJlYW1pbmcpIHJldHVybiBudWxsXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxTQ0NBSU1lc3NhZ2VXcmFwcGVyXG4gICAgICAgICAgaXNDdXJyZW50VXNlcj17cHJvcHMuaXNDdXJyZW50VXNlcn1cbiAgICAgICAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkPXtwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkfVxuICAgICAgICAgIGNsYXNzTmFtZT17cHJvcHMuaXNBc3Npc3RhbnQgJiYgaGFzVGFza0xpbmtzKGRpc3BsYXlUZXh0KSA/ICdoYXMtdGFzay1saW5rcycgOiAnJ31cbiAgICAgICAgPlxuICAgICAgICAgIDxTdHJlYW1kb3duXG4gICAgICAgICAgICBwbHVnaW5zPXt7IGNvZGUgfX1cbiAgICAgICAgICAgIGNvbXBvbmVudHM9e3sgYTogQ3VzdG9tTGluayB9IGFzIFBhcmFtZXRlcnM8dHlwZW9mIFN0cmVhbWRvd24+WzBdWydjb21wb25lbnRzJ119XG4gICAgICAgICAgICBsaW5rU2FmZXR5PXt7IGVuYWJsZWQ6IGZhbHNlIH19XG4gICAgICAgICAgICBpc0FuaW1hdGluZz17ISFwcm9wcy5pc1N0cmVhbWluZ31cbiAgICAgICAgICAgIHNoaWtpVGhlbWU9e1snZ2l0aHViLWxpZ2h0JywgJ2dpdGh1Yi1saWdodCddfVxuICAgICAgICAgICAgY29udHJvbHM9e3sgdGFibGU6IGZhbHNlLCBjb2RlOiBmYWxzZSB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtkaXNwbGF5VGV4dH1cbiAgICAgICAgICA8L1N0cmVhbWRvd24+XG4gICAgICAgIDwvU0NDQUlNZXNzYWdlV3JhcHBlcj5cbiAgICAgICAge3Byb3BzLmlzQXNzaXN0YW50ICYmICFwcm9wcy5pc0Vycm9yICYmICFwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkICYmICFwcm9wcy5hcHByb3ZhbCAmJiAhcHJvcHMuaXNTdHJlYW1pbmcgJiYgKFxuICAgICAgICAgIDxNZXNzYWdlRmVlZGJhY2tcbiAgICAgICAgICAgIGNvbnRlbnQ9e2Rpc3BsYXlUZXh0fVxuICAgICAgICAgICAgc291cmNlcz17cHJvcHMuc291cmNlc31cbiAgICAgICAgICAgIGhhbmRsZUZlZWRiYWNrPXtwcm9wcy5oYW5kbGVGZWVkYmFja0NsaWNrfVxuICAgICAgICAgICAgZGlzYWJsZUZlZWRiYWNrPXtwcm9wcy5kaXNhYmxlRmVlZGJhY2t9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge3Byb3BzLmlzQXNzaXN0YW50ICYmICFwcm9wcy5pc0Vycm9yICYmICFwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkICYmICFwcm9wcy5hcHByb3ZhbCAmJiAoXG4gICAgICAgICAgPENoYXRBSVN1Z2dlc3Rpb25zXG4gICAgICAgICAgICBzdWdnZXN0aW9ucz17cHJvcHMuc3VnZ2VzdGlvbnMgfHwgW119XG4gICAgICAgICAgICBvblNlbGVjdFN1Z2dlc3Rpb249e3N1Z2dlc3Rpb24gPT4gcHJvcHMuaGFuZGxlU3VnZ2VzdGlvbkNsaWNrKHByb3BzLm1lc3NhZ2VJZCwgc3VnZ2VzdGlvbil9XG4gICAgICAgICAgICBkaXNhYmxlZD17cHJvcHMuc3VnZ2VzdGlvbnNEaXNhYmxlZH1cbiAgICAgICAgICAgIGhpZGRlbj17ISFwcm9wcy5pc1N0cmVhbWluZyB8fCAhcHJvcHMuaXNMYXN0TWVzc2FnZSB8fCAhIXByb3BzLnN1Z2dlc3Rpb25zRGlzYWJsZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge3Byb3BzLmlzQXNzaXN0YW50ICYmXG4gICAgICAgICAgIXByb3BzLmlzRXJyb3IgJiZcbiAgICAgICAgICAhcHJvcHMuaXNGcm9udGVuZENhbmNlbGxlZCAmJlxuICAgICAgICAgICFwcm9wcy5hcHByb3ZhbCAmJlxuICAgICAgICAgICEhY3JlYXRlQWdlbnRBY3Rpb25zQWdlbnRJZCAmJiAoXG4gICAgICAgICAgICA8Q2hhdEFJQ3JlYXRlQWdlbnRBY3Rpb25zXG4gICAgICAgICAgICAgIGFnZW50SWQ9e2NyZWF0ZUFnZW50QWN0aW9uc0FnZW50SWR9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtwcm9wcy5zdWdnZXN0aW9uc0Rpc2FibGVkfVxuICAgICAgICAgICAgICBoaWRkZW49eyEhcHJvcHMuaXNTdHJlYW1pbmcgfHwgIXByb3BzLmlzTGFzdE1lc3NhZ2UgfHwgISFwcm9wcy5zdWdnZXN0aW9uc0Rpc2FibGVkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgPC8+XG4gICAgKVxuICB9XG4pXG5cbmNvbnN0IE1lc3NhZ2VJdGVtID0gbWVtbygocHJvcHM6IE1lc3NhZ2VJdGVtUHJvcHMpID0+IHtcbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIHVzZXIsXG4gICAgbWVzc2FnZSxcbiAgICBpc1N0cmVhbWluZyxcbiAgICBpc0Vycm9yLFxuICAgIGF1dGhVc2VyLFxuICAgIG9wdGlvbnMsXG4gICAgaXNDaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZVNlbGVjdE9wdGlvbixcbiAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2ssXG4gICAgaGFuZGxlRmVlZGJhY2ssXG4gICAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbixcbiAgICBkaXNhYmxlRmVlZGJhY2ssXG4gICAgcm9sZSxcbiAgICBzb3VyY2VzLFxuICAgIGF0dGFjaG1lbnRzLFxuICAgIGFwcHJvdmFsLFxuICAgIGFwcHJvdmFsU3RhdHVzLFxuICAgIHN1Z2dlc3Rpb25zLFxuICAgIGNyZWF0ZUFnZW50Rm9sbG93VXAsXG4gICAgaGFzU2VsZWN0ZWRTdWdnZXN0aW9uLFxuICAgIGlzTGFzdE1lc3NhZ2UsXG4gIH0gPSBwcm9wc1xuXG4gIGNvbnN0IFtwcmV2aWV3QXR0YWNobWVudCwgc2V0UHJldmlld0F0dGFjaG1lbnRdID0gdXNlU3RhdGU8QXR0YWNobWVudEZpbGUgfCBudWxsPihudWxsKVxuICBjb25zdCBpc0N1cnJlbnRVc2VyID0gcm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgfHwgdXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKVxuICBjb25zdCBpc0Fzc2lzdGFudCA9IHJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQgfHwgdXNlci5pZCA9PT0gJ2Fzc2lzdGFudCdcbiAgY29uc3QgbWVzc2FnZUF0dGFjaG1lbnRzID1cbiAgICBhdHRhY2htZW50cyAmJiBhdHRhY2htZW50cy5sZW5ndGggPiAwXG4gICAgICA/IGF0dGFjaG1lbnRzXG4gICAgICA6ICFpc0Fzc2lzdGFudCAmJiBBcnJheS5pc0FycmF5KHNvdXJjZXMpXG4gICAgICAgID8gKHNvdXJjZXMgYXMgQXR0YWNobWVudEZpbGVbXSlcbiAgICAgICAgOiBbXVxuXG4gIGNvbnN0IGhhbmRsZUF0dGFjaG1lbnRDbGljayA9IChhdHRhY2htZW50OiBBdHRhY2htZW50RmlsZSkgPT4ge1xuICAgIC8vIFBlcm1pdGlyIHByZXZpc3VhbGl6YWNpw7NuIHNpIHRpZW5lIGFyY2hpdm8gbG9jYWwgbyBVUkxzIGRlbCBiYWNrZW5kXG4gICAgaWYgKFxuICAgICAgYXR0YWNobWVudC5maWxlIGluc3RhbmNlb2YgRmlsZSB8fFxuICAgICAgYXR0YWNobWVudC5vcmlnaW5hbEZpbGUgaW5zdGFuY2VvZiBGaWxlIHx8XG4gICAgICBhdHRhY2htZW50LnVybF90aHVtYm5haWwgfHxcbiAgICAgIGF0dGFjaG1lbnQudXJsX29yaWdpbmFsIHx8XG4gICAgICBhdHRhY2htZW50LnVybF9maWxlXG4gICAgKSB7XG4gICAgICBzZXRQcmV2aWV3QXR0YWNobWVudChhdHRhY2htZW50KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlUHJldmlldyA9ICgpID0+IHtcbiAgICBzZXRQcmV2aWV3QXR0YWNobWVudChudWxsKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQXR0YWNobWVudERvd25sb2FkID0gYXN5bmMgKGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnRGaWxlKSA9PiB7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gYXR0YWNobWVudC5uYW1lLmluY2x1ZGVzKCcuJykgPyAnJyA6IGAuJHthdHRhY2htZW50LnR5cGV9YFxuICAgIGNvbnN0IGZpbGVOYW1lID0gYCR7YXR0YWNobWVudC5uYW1lfSR7ZXh0ZW5zaW9ufWBcbiAgICBjb25zdCBmaWxlVXJsID0gYXR0YWNobWVudC51cmxfb3JpZ2luYWwgfHwgYXR0YWNobWVudC51cmxfZmlsZSB8fCBhdHRhY2htZW50LnVybF90aHVtYm5haWxcblxuICAgIHRyeSB7XG4gICAgICBsZXQgYmxvYlVybDogc3RyaW5nIHwgbnVsbCA9IG51bGxcblxuICAgICAgaWYgKGZpbGVVcmwpIHtcbiAgICAgICAgY29uc3QgZG93bmxvYWRlZEZpbGUgPSBhd2FpdCBkb3dubG9hZEZpbGVGcm9tVXJsKGZpbGVVcmwsIGZpbGVOYW1lLCBhdHRhY2htZW50LnR5cGUpXG4gICAgICAgIGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGRvd25sb2FkZWRGaWxlKVxuICAgICAgfSBlbHNlIGlmIChhdHRhY2htZW50LmZpbGUgaW5zdGFuY2VvZiBGaWxlKSB7XG4gICAgICAgIGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGF0dGFjaG1lbnQuZmlsZSlcbiAgICAgIH1cblxuICAgICAgaWYgKCFibG9iVXJsKSByZXR1cm5cblxuICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKVxuICAgICAgbGluay5ocmVmID0gYmxvYlVybFxuICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lXG4gICAgICBsaW5rLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluaylcbiAgICAgIGxpbmsuY2xpY2soKVxuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKVxuICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGJsb2JVcmwpXG4gICAgICB9LCAxMDApXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBkb3dubG9hZCBhdHRhY2htZW50JywgZXJyb3IpXG4gICAgfVxuICB9XG5cbiAgaWYgKGlzQ2hhbmdlUHJvamVjdCAmJiBvcHRpb25zKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxNZXNzYWdlV3JhcHBlciBrZXk9e2lkfSBpc0N1cnJlbnRVc2VyPXtpc0N1cnJlbnRVc2VyfSBkYXRhLW1lc3NhZ2UtaWQ9e2lkfSBoYXNGZWVkYmFjaz17ZmFsc2V9PlxuICAgICAgICA8U0NNZXNzYWdlSXRlbVdyYXBwZXIgJGlzQXNzaXN0YW50PXtpc0Fzc2lzdGFudH0+XG4gICAgICAgICAge2lzQXNzaXN0YW50ICYmIDxBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIC8+fVxuICAgICAgICAgIDxNZXNzYWdlQ29udGVudFdyYXBwZXJcbiAgICAgICAgICAgIGlzQ2hhbmdlUHJvamVjdD17aXNDaGFuZ2VQcm9qZWN0fVxuICAgICAgICAgICAgbWVzc2FnZT17bWVzc2FnZX1cbiAgICAgICAgICAgIGlzQ3VycmVudFVzZXI9e2lzQ3VycmVudFVzZXJ9XG4gICAgICAgICAgICBpc0Vycm9yPXtpc0Vycm9yfVxuICAgICAgICAgICAgbWVzc2FnZUV4dHJhQ29udGVudD17PE1lc3NhZ2VPcHRpb25zIG9wdGlvbnM9e29wdGlvbnMgYXMgYW55fSBoYW5kbGVTZWxlY3RPcHRpb249e2hhbmRsZVNlbGVjdE9wdGlvbn0gLz59XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TQ01lc3NhZ2VJdGVtV3JhcHBlcj5cbiAgICAgIDwvTWVzc2FnZVdyYXBwZXI+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRmVlZGJhY2tDbGljayA9IChmZWVkYmFjazogRmVlZGJhY2spID0+IHtcbiAgICBjb25zdCBzZXNzaW9uSWQgPSBpZFxuICAgICAgLnNwbGl0KCctJylcbiAgICAgIC5maWx0ZXIocXVlc3Rpb25JZCA9PiBxdWVzdGlvbklkICE9PSAnYW5zd2VyJylcbiAgICAgIC5qb2luKCctJylcbiAgICBoYW5kbGVGZWVkYmFjaz8uKGZlZWRiYWNrLCBzZXNzaW9uSWQpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ01lc3NhZ2VJdGVtV3JhcHBlciAkaXNBc3Npc3RhbnQ9e2lzQXNzaXN0YW50fT5cbiAgICAgIHtpc0Fzc2lzdGFudCAmJiA8QXNzaXN0YW50TWVzc2FnZUhlYWRlciAvPn1cbiAgICAgIDxTQ01lc3NhZ2VJdGVtSW5uZXI+XG4gICAgICAgIHshIW1lc3NhZ2VBdHRhY2htZW50cy5sZW5ndGggJiYgKFxuICAgICAgICAgIDxTQ0F0dGFjaG1lbnRzUm93ICRpc0Fzc2lzdGFudD17aXNBc3Npc3RhbnR9PlxuICAgICAgICAgICAge21lc3NhZ2VBdHRhY2htZW50cy5tYXAoKGF0dGFjaG1lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIC8vIERldGVjdGFyIHNpIGVzIHVuIGFyY2hpdm8gZGUgYXVkaW9cbiAgICAgICAgICAgICAgY29uc3QgYXR0YWNobWVudFR5cGUgPSBhdHRhY2htZW50Py50eXBlPy50b0xvd2VyQ2FzZSgpIHx8ICcnXG4gICAgICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnROYW1lID0gYXR0YWNobWVudD8ubmFtZT8udG9Mb3dlckNhc2UoKSB8fCAnJ1xuICAgICAgICAgICAgICBjb25zdCBpc0F1ZGlvRmlsZSA9XG4gICAgICAgICAgICAgICAgYXR0YWNobWVudFR5cGUuc3RhcnRzV2l0aCgnYXVkaW8vJykgfHxcbiAgICAgICAgICAgICAgICBbJ2ZsYWMnLCAnbTRhJywgJ21wMycsICdtcDQnLCAnb2dhJywgJ29nZycsICd3YXYnLCAnd2VibSddLmluY2x1ZGVzKGF0dGFjaG1lbnRUeXBlKSB8fFxuICAgICAgICAgICAgICAgIFsnLmZsYWMnLCAnLm00YScsICcubXAzJywgJy5tcDQnLCAnLm9nYScsICcub2dnJywgJy53YXYnLCAnLndlYm0nXS5zb21lKGV4dCA9PlxuICAgICAgICAgICAgICAgICAgYXR0YWNobWVudE5hbWUuZW5kc1dpdGgoZXh0KVxuICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICBpZiAoaXNBdWRpb0ZpbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPEF0dGFjaG1lbnRDYXJkQXVkaW8ga2V5PXtgJHthdHRhY2htZW50LmlkfS0ke2F0dGFjaG1lbnQubmFtZX1gfSBhdHRhY2htZW50PXthdHRhY2htZW50fSAvPlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8QXR0YWNobWVudENhcmRcbiAgICAgICAgICAgICAgICAgIGtleT17YCR7YXR0YWNobWVudC5pZH0tJHthdHRhY2htZW50Lm5hbWV9YH1cbiAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQ9e2F0dGFjaG1lbnR9XG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbkluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgIG9uRG93bmxvYWQ9eygpID0+IGhhbmRsZUF0dGFjaG1lbnREb3dubG9hZChhdHRhY2htZW50KX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUF0dGFjaG1lbnRDbGljayhhdHRhY2htZW50KX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L1NDQXR0YWNobWVudHNSb3c+XG4gICAgICAgICl9XG4gICAgICAgIHthcHByb3ZhbCAmJiBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnMgJiYgKFxuICAgICAgICAgIDxTQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbj5cbiAgICAgICAgICAgIDxBcHByb3ZhbEJveFxuICAgICAgICAgICAgICBhY3Rpb25zPXthcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnN9XG4gICAgICAgICAgICAgIHN0YXR1cz17YXBwcm92YWxTdGF0dXN9XG4gICAgICAgICAgICAgIG9uQXBwcm92ZT17dGhyZWFkSWRzID0+IGhhbmRsZUFwcHJvdmFsRGVjaXNpb24odGhyZWFkSWRzLCAnYXBwcm92ZScpfVxuICAgICAgICAgICAgICBvblJlamVjdD17dGhyZWFkSWRzID0+IGhhbmRsZUFwcHJvdmFsRGVjaXNpb24odGhyZWFkSWRzLCAncmVqZWN0Jyl9XG4gICAgICAgICAgICAgIGlzUHJvamVjdERlbGV0ZWQ9e3Byb3BzLnByb2plY3RNZXRhZGF0YT8uaXNfZGVsZXRlZCA9PT0gdHJ1ZX1cbiAgICAgICAgICAgICAgaXNFeHBhbmRlZD17cHJvcHMuZXhwYW5kZWR9XG4gICAgICAgICAgICAgIGhpdGxJbnN0YW5jZUlkPXthcHByb3ZhbC5vcmlnaW5hbF90aHJlYWRfaWR9XG4gICAgICAgICAgICAgIHdhcm5pbmdNZXNzYWdlPXthcHByb3ZhbC53YXJuaW5nX21lc3NhZ2V9XG4gICAgICAgICAgICAgIG1hbnVhbEFwcHJvdmFsRGV0ZWN0ZWQ9e2FwcHJvdmFsLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbj5cbiAgICAgICAgKX1cbiAgICAgICAgeyghIW1lc3NhZ2UgfHwgaXNTdHJlYW1pbmcpICYmICFhcHByb3ZhbCAmJiAhKGlzQXNzaXN0YW50ICYmICEhbWVzc2FnZUF0dGFjaG1lbnRzLmxlbmd0aCkgJiYgKFxuICAgICAgICAgIDxTdHJlYW1pbmdNZXNzYWdlQm9keVxuICAgICAgICAgICAgbWVzc2FnZT17bWVzc2FnZSA/PyAnJ31cbiAgICAgICAgICAgIGlzU3RyZWFtaW5nPXshIWlzU3RyZWFtaW5nfVxuICAgICAgICAgICAgaXNDdXJyZW50VXNlcj17aXNDdXJyZW50VXNlcn1cbiAgICAgICAgICAgIGlzQXNzaXN0YW50PXtpc0Fzc2lzdGFudH1cbiAgICAgICAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ9e3Byb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWR9XG4gICAgICAgICAgICBhcHByb3ZhbD17YXBwcm92YWx9XG4gICAgICAgICAgICBpc0Vycm9yPXtpc0Vycm9yfVxuICAgICAgICAgICAgc291cmNlcz17c291cmNlc31cbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zPXtzdWdnZXN0aW9uc31cbiAgICAgICAgICAgIGNyZWF0ZUFnZW50Rm9sbG93VXA9e2NyZWF0ZUFnZW50Rm9sbG93VXB9XG4gICAgICAgICAgICBoYW5kbGVGZWVkYmFja0NsaWNrPXtoYW5kbGVGZWVkYmFja0NsaWNrfVxuICAgICAgICAgICAgZGlzYWJsZUZlZWRiYWNrPXtkaXNhYmxlRmVlZGJhY2sgPz8gbnVsbH1cbiAgICAgICAgICAgIGhhbmRsZVN1Z2dlc3Rpb25DbGljaz17aGFuZGxlU3VnZ2VzdGlvbkNsaWNrfVxuICAgICAgICAgICAgc3VnZ2VzdGlvbnNEaXNhYmxlZD17ISFwcm9wcy5pc1N0cmVhbWluZyB8fCAhIWhhc1NlbGVjdGVkU3VnZ2VzdGlvbn1cbiAgICAgICAgICAgIG1lc3NhZ2VJZD17aWR9XG4gICAgICAgICAgICBpc0xhc3RNZXNzYWdlPXtpc0xhc3RNZXNzYWdlfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1NDTWVzc2FnZUl0ZW1Jbm5lcj5cbiAgICAgIDxBdHRhY2htZW50UHJldmlld01vZGFsXG4gICAgICAgIGlzT3Blbj17ISFwcmV2aWV3QXR0YWNobWVudH1cbiAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VQcmV2aWV3fVxuICAgICAgICBhdHRhY2htZW50PXtwcmV2aWV3QXR0YWNobWVudH1cbiAgICAgIC8+XG4gICAgPC9TQ01lc3NhZ2VJdGVtV3JhcHBlcj5cbiAgKVxufSlcblxuY29uc3QgQ2hhdEFJTWVzc2FnZXNJbm5lciA9ICh7XG4gIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgaW5pdGlhbENoYXRJZCxcbiAgb25FcnJvcixcbiAgb25TZW5kTWVzc2FnZVJlYWR5LFxuICBvblNjcm9sbFRvQm90dG9tLFxuICBhdHRhY2htZW50cyxcbiAgYWdlbnRzLFxuICBleHBhbmRlZCxcbn06IENoYXRBSU1lc3NhZ2VzUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgeyBpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlLCBhZ2VudCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IGV2ZW50ID0gdXNlRXZlbnQoKVxuICBjb25zdCBhdXRoVXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBtZXNzYWdlc1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgY2hhdEluaXRpYWxpemVkUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBpc0xvYWRpbmdNb3JlUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCB1c2VyU2Nyb2xsaW5nUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBzY3JvbGxUaHJlc2hvbGRSZWYgPSB1c2VSZWYoMzkpXG4gIGNvbnN0IGxhc3RTY3JvbGxUb3BSZWYgPSB1c2VSZWYoMClcbiAgY29uc3Qgc2hvd1Njcm9sbFRvQm90dG9tUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBzY3JvbGxSYWZSZWYgPSB1c2VSZWY8bnVtYmVyIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW3Nob3dTY3JvbGxUb0JvdHRvbSwgc2V0U2hvd1Njcm9sbFRvQm90dG9tXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcywgc2V0U2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkc10gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oe30pXG5cbiAgY29uc3Qge1xuICAgIG1lc3NhZ2VzLFxuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBhY3RpdmVMb2FkaW5ncyxcbiAgICBzZW5kTWVzc2FnZSxcbiAgICBjaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgaW5pdGlhbGl6ZUNoYXQsXG4gICAgaGFuZGxlU2Nyb2xsLFxuICAgIHN0b3BHZW5lcmF0aW9uLFxuICB9ID0gdXNlQ2hhdE1hbmFnZXIoe1xuICAgIGNoYXRJZDogaW5pdGlhbENoYXRJZCB8fCB1bmRlZmluZWQsXG4gICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgIG9uRXJyb3IsXG4gICAgYXR0YWNobWVudHMsXG4gICAgYWdlbnRzLFxuICB9KVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdE9wdGlvbiA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICAgIGNoYW5nZVByb2plY3Qob3B0aW9uKVxuICAgIH0sXG4gICAgW2NoYW5nZVByb2plY3RdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdWdnZXN0aW9uQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAobWVzc2FnZUlkOiBzdHJpbmcsIHN1Z2dlc3Rpb246IHN0cmluZykgPT4ge1xuICAgICAgaWYgKCFzdWdnZXN0aW9uPy50cmltKCkpIHJldHVyblxuICAgICAgaWYgKHNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHNbbWVzc2FnZUlkXSkgcmV0dXJuXG4gICAgICBjb25zdCBpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQgPSBhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJyAmJiAvKG1haWFrZXJ8bWFya2V0cGxhY2UpL2kudGVzdChhZ2VudD8ubmFtZSB8fCAnJylcbiAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRTdWdnZXN0ZWRBbnN3ZXIsIHtcbiAgICAgICAgYWdlbnRfdHlwZTogaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50ID8gJ21hcmtldHBsYWNlJyA6IGFnZW50Py50eXBlLFxuICAgICAgfSlcbiAgICAgIHNldFNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHMocHJldiA9PiAoeyAuLi5wcmV2LCBbbWVzc2FnZUlkXTogdHJ1ZSB9KSlcbiAgICAgIHNlbmRNZXNzYWdlKHN1Z2dlc3Rpb24pXG4gICAgfSxcbiAgICBbc2VuZE1lc3NhZ2UsIHNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHMsIGV2ZW50LCBhZ2VudD8uZW50aXR5LCBhZ2VudD8ubmFtZSwgYWdlbnQ/LnR5cGVdXG4gIClcblxuICAvKipcbiAgICogQWN0dWFsaXphIGVsIGVzdGFkbyBkZWwgYm90w7NuIFwic2Nyb2xsIHRvIGJvdHRvbVwiIGNvbXBhcmFuZG8gbGEgcG9zaWNpw7NuXG4gICAqIGFjdHVhbCBkZWwgc2Nyb2xsIGNvbiBlbCBmb25kby4gVXNhIHVuIHJlZiBwYXJhIGV2aXRhciBgc2V0U3RhdGVgIGN1YW5kb1xuICAgKiBlbCB2YWxvciBubyBjYW1iaWEuXG4gICAqL1xuICBjb25zdCB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGVsID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgIGlmICghZWwpIHJldHVyblxuICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gZWxcbiAgICBjb25zdCBkaXN0YW5jZUZyb21Cb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHRcbiAgICBjb25zdCBzaG91bGRTaG93ID0gZGlzdGFuY2VGcm9tQm90dG9tID4gNTBcbiAgICBpZiAoc2hvd1Njcm9sbFRvQm90dG9tUmVmLmN1cnJlbnQgIT09IHNob3VsZFNob3cpIHtcbiAgICAgIHNob3dTY3JvbGxUb0JvdHRvbVJlZi5jdXJyZW50ID0gc2hvdWxkU2hvd1xuICAgICAgc2V0U2hvd1Njcm9sbFRvQm90dG9tKHNob3VsZFNob3cpXG4gICAgfVxuICB9LCBbXSlcblxuICAvKipcbiAgICogU2Nyb2xsIGlubWVkaWF0byBhbCBmb25kbyAoZGVudHJvIGRlIHJBRiBwYXJhIGNvb3JkaW5hciBjb24gZWwgcGFpbnQpXG4gICAqIHkgYWN0dWFsaXphIGxhIHZpc2liaWxpZGFkIGRlbCBib3TDs24uIFJlc3BldGEgYHNraXBJZlVzZXJTY3JvbGxpbmdgIHBhcmFcbiAgICogbm8gc29icmVzY3JpYmlyIGVsIHNjcm9sbCBtYW51YWwgZGVsIHVzdWFyaW8gZHVyYW50ZSBlbCBzdHJlYW1pbmcuXG4gICAqL1xuICBjb25zdCBzY3JvbGxUb0JvdHRvbVJhZiA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRzOiB7IHNraXBJZlVzZXJTY3JvbGxpbmc/OiBib29sZWFuOyBkZWxheU1zPzogbnVtYmVyIH0gPSB7fSkgPT4ge1xuICAgICAgY29uc3QgeyBza2lwSWZVc2VyU2Nyb2xsaW5nID0gZmFsc2UsIGRlbGF5TXMgPSAwIH0gPSBvcHRzXG4gICAgICBjb25zdCBydW4gPSAoKSA9PiB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgZWwgPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgICAgICAgaWYgKCFlbCkgcmV0dXJuXG4gICAgICAgICAgaWYgKHNraXBJZlVzZXJTY3JvbGxpbmcgJiYgdXNlclNjcm9sbGluZ1JlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgICBlbC5zY3JvbGxUb3AgPSBlbC5zY3JvbGxIZWlnaHRcbiAgICAgICAgICB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5KClcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGlmIChkZWxheU1zID4gMCkgc2V0VGltZW91dChydW4sIGRlbGF5TXMpXG4gICAgICBlbHNlIHJ1bigpXG4gICAgfSxcbiAgICBbdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrU2Nyb2xsVG9Cb3R0b20gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFtZXNzYWdlc1JlZi5jdXJyZW50KSByZXR1cm5cbiAgICBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbFRvKHtcbiAgICAgIHRvcDogbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxIZWlnaHQsXG4gICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgfSlcbiAgICAvLyBEYXIgdGllbXBvIGFsIHNtb290aC1zY3JvbGwgYW50ZXMgZGUgcmVjYWxjdWxhciBsYSB2aXNpYmlsaWRhZCBkZWwgYm90w7NuLlxuICAgIHNldFRpbWVvdXQodXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eSwgNTAwKVxuICB9LCBbdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eV0pXG5cbiAgY29uc3QgaGFuZGxlU2Nyb2xsVG9Cb3R0b20gPSB1c2VDYWxsYmFjayhcbiAgICAoZTogUmVhY3QuVUlFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGUuY3VycmVudFRhcmdldFxuXG4gICAgICBpZiAoc2Nyb2xsUmFmUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoc2Nyb2xsUmFmUmVmLmN1cnJlbnQpXG4gICAgICB9XG5cbiAgICAgIHNjcm9sbFJhZlJlZi5jdXJyZW50ID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgc2Nyb2xsUmFmUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG5cbiAgICAgICAgY29uc3QgaXNTY3JvbGxpbmdVcCA9IHNjcm9sbFRvcCA8IGxhc3RTY3JvbGxUb3BSZWYuY3VycmVudFxuXG4gICAgICAgIGlmIChpc1Njcm9sbGluZ1VwKSB7XG4gICAgICAgICAgc2Nyb2xsVGhyZXNob2xkUmVmLmN1cnJlbnQgPSAxNVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNOZWFyQm90dG9tID0gc2Nyb2xsSGVpZ2h0IC0gc2Nyb2xsVG9wIC0gY2xpZW50SGVpZ2h0IDwgc2Nyb2xsVGhyZXNob2xkUmVmLmN1cnJlbnRcblxuICAgICAgICBpZiAoaXNOZWFyQm90dG9tKSB7XG4gICAgICAgICAgc2Nyb2xsVGhyZXNob2xkUmVmLmN1cnJlbnQgPSAzOVxuICAgICAgICB9XG5cbiAgICAgICAgdXNlclNjcm9sbGluZ1JlZi5jdXJyZW50ID0gIWlzTmVhckJvdHRvbVxuICAgICAgICBsYXN0U2Nyb2xsVG9wUmVmLmN1cnJlbnQgPSBzY3JvbGxUb3BcblxuICAgICAgICB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5KClcblxuICAgICAgICBpZiAoaXNOZWFyQm90dG9tICYmIG9uU2Nyb2xsVG9Cb3R0b20pIHtcbiAgICAgICAgICBvblNjcm9sbFRvQm90dG9tKClcbiAgICAgICAgfVxuXG4gICAgICAgIGhhbmRsZVNjcm9sbChjb250YWluZXIpXG4gICAgICB9KVxuICAgIH0sXG4gICAgW29uU2Nyb2xsVG9Cb3R0b20sIGhhbmRsZVNjcm9sbCwgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eV1cbiAgKVxuXG4gIC8vIHJlZnMgdG8gc3RhYmlsaXplIGZ1bmN0aW9ucyBhbmQgYXZvaWQgdW5uZWNlc3NhcnkgcmUtcmVuZGVyc1xuICBjb25zdCBzZW5kTWVzc2FnZVJlZiA9IHVzZVJlZihzZW5kTWVzc2FnZSlcbiAgY29uc3Qgc3RvcEdlbmVyYXRpb25SZWYgPSB1c2VSZWYoc3RvcEdlbmVyYXRpb24pXG4gIGNvbnN0IG9uU2VuZE1lc3NhZ2VSZWFkeVJlZiA9IHVzZVJlZihvblNlbmRNZXNzYWdlUmVhZHkpXG5cbiAgLy8gdXBkYXRlIHJlZnMgd2hlbiBmdW5jdGlvbnMgY2hhbmdlXG4gIHNlbmRNZXNzYWdlUmVmLmN1cnJlbnQgPSBzZW5kTWVzc2FnZVxuICBzdG9wR2VuZXJhdGlvblJlZi5jdXJyZW50ID0gc3RvcEdlbmVyYXRpb25cbiAgb25TZW5kTWVzc2FnZVJlYWR5UmVmLmN1cnJlbnQgPSBvblNlbmRNZXNzYWdlUmVhZHlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChvblNlbmRNZXNzYWdlUmVhZHlSZWYuY3VycmVudCkge1xuICAgICAgb25TZW5kTWVzc2FnZVJlYWR5UmVmLmN1cnJlbnQoc2VuZE1lc3NhZ2VSZWYuY3VycmVudCwgc3RvcEdlbmVyYXRpb25SZWYuY3VycmVudCwgd2FpdGluZ1Jlc3BvbnNlLCBpc1dyaXRpbmcpXG4gICAgfVxuICB9LCBbd2FpdGluZ1Jlc3BvbnNlLCBpc1dyaXRpbmddKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaXNMb2FkaW5nTW9yZVJlZi5jdXJyZW50ID0gaXNMb2FkaW5nTW9yZU1lc3NhZ2VzXG4gIH0sIFtpc0xvYWRpbmdNb3JlTWVzc2FnZXNdKVxuXG4gIC8vIEN1YW5kbyBlbCBhZ2VudGUgZW1waWV6YSBhIHJlc3BvbmRlciwgcmVzZXRlYXIgZWwgZmxhZyB5IGVsIHVtYnJhbCBwYXJhIGFjdGl2YXIgZWwgYXV0by1zY3JvbGxcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAod2FpdGluZ1Jlc3BvbnNlKSB7XG4gICAgICB1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgc2Nyb2xsVGhyZXNob2xkUmVmLmN1cnJlbnQgPSAzOVxuICAgIH1cbiAgfSwgW3dhaXRpbmdSZXNwb25zZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWNoYXRJbml0aWFsaXplZFJlZi5jdXJyZW50KSB7XG4gICAgICBjaGF0SW5pdGlhbGl6ZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGluaXRpYWxpemVDaGF0KClcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8vIEF1dG9zY3JvbGwgbWllbnRyYXMgZWwgdGV4dG8gZGVsIHN0cmVhbSBjcmVjZS4gRWwgdGV4dG8gc2UgcGludGEgYWwgcml0bW9cbiAgLy8gZGUgYHVzZVNtb290aFN0cmVhbVRleHRgICh+NjBmcHMpLCBubyBhbCByaXRtbyBkZSBsbGVnYWRhIGRlIHRva2VucyBkZWxcbiAgLy8gYmFja2VuZDogcG9yIGVzbyBhY8OhIHVzYW1vcyB1biBsb29wIGRlIHJBRiBxdWUgY29tcGFyYSBgc2Nyb2xsSGVpZ2h0YFxuICAvLyBjb250cmEgZWwgw7psdGltbyB2YWxvciBvYnNlcnZhZG8geSBhanVzdGEgc29sbyBjdWFuZG8gY2FtYmlhLiBBc8OtIGVsXG4gIC8vIHNjcm9sbCBxdWVkYSBwZXJmZWN0YW1lbnRlIHNpbmNyb25pemFkbyBjb24gbGEgYW5pbWFjacOzbiBkZWwgdGV4dG8gc2luXG4gIC8vIGRlcGVuZGVyIGRlIGxhIGNhZGVuY2lhIGRlbCBzdHJlYW1pbmdTdG9yZS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXdhaXRpbmdSZXNwb25zZSAmJiAhaXNXcml0aW5nKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgaWYgKCFtZXNzYWdlc1JlZi5jdXJyZW50KSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBsZXQgcmFmSWQ6IG51bWJlciB8IG51bGwgPSBudWxsXG4gICAgbGV0IGxhc3RIZWlnaHQgPSBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbEhlaWdodFxuXG4gICAgY29uc3QgdGljayA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGVsID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgaWYgKCFlbCkge1xuICAgICAgICByYWZJZCA9IG51bGxcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50SGVpZ2h0ID0gZWwuc2Nyb2xsSGVpZ2h0XG4gICAgICBpZiAoY3VycmVudEhlaWdodCAhPT0gbGFzdEhlaWdodCkge1xuICAgICAgICBsYXN0SGVpZ2h0ID0gY3VycmVudEhlaWdodFxuICAgICAgICBpZiAoIXVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCkge1xuICAgICAgICAgIGVsLnNjcm9sbFRvcCA9IGN1cnJlbnRIZWlnaHRcbiAgICAgICAgfVxuICAgICAgICB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5KClcbiAgICAgIH1cbiAgICAgIHJhZklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRpY2spXG4gICAgfVxuXG4gICAgcmFmSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljaylcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHJhZklkICE9IG51bGwpIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZklkKVxuICAgIH1cbiAgfSwgW3dhaXRpbmdSZXNwb25zZSwgaXNXcml0aW5nLCB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5XSlcblxuICAvLyBBbCBjb21lbnphciBhIGVzcGVyYXIgbGEgcmVzcHVlc3RhIGRlbCBiYWNrZW5kLCBzY3JvbGwgaW5pY2lhbCBhbCBmb25kby5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAod2FpdGluZ1Jlc3BvbnNlICYmIG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgIHNjcm9sbFRvQm90dG9tUmFmKHsgc2tpcElmVXNlclNjcm9sbGluZzogdHJ1ZSB9KVxuICAgIH1cbiAgfSwgW3dhaXRpbmdSZXNwb25zZSwgc2Nyb2xsVG9Cb3R0b21SYWZdKVxuXG4gIC8vIFNjcm9sbCBjdWFuZG8gY2FtYmlhbiBsb3MgbWVuc2FqZXM6IGRpc3Rpbmd1ZSBcIm51ZXZvIG1lbnNhamVcIiAoYWdyZWdhZG8pXG4gIC8vIGRlIFwicmVlbXBsYXpvXCIgKG1pc21vIGlkL2xlbmd0aCwgZWouIGZlZWRiYWNrIG8gYXBwcm92YWxTdGF0dXMpLiBFblxuICAvLyByZWVtcGxhem9zIHNvbG8gc2UgcmVjYWxjdWxhIGxhIHZpc2liaWxpZGFkIGRlbCBib3TDs24gc2luIGZvcnphciBzY3JvbGwuXG4gIGNvbnN0IGxhc3RNZXNzYWdlSWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgbGFzdE1lc3NhZ2VzTGVuZ3RoUmVmID0gdXNlUmVmPG51bWJlcj4oMClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1lc3NhZ2VzUmVmLmN1cnJlbnQgfHwgbG9hZGluZ01lc3NhZ2VzIHx8IGlzTG9hZGluZ01vcmVNZXNzYWdlcyB8fCBpc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGxhc3RNZXNzYWdlID0gbWVzc2FnZXNbbWVzc2FnZXMubGVuZ3RoIC0gMV1cbiAgICBjb25zdCBsYXN0SWQgPSBsYXN0TWVzc2FnZT8uaWQgPz8gbnVsbFxuICAgIGNvbnN0IHByZXZJZCA9IGxhc3RNZXNzYWdlSWRSZWYuY3VycmVudFxuICAgIGNvbnN0IHByZXZMZW4gPSBsYXN0TWVzc2FnZXNMZW5ndGhSZWYuY3VycmVudFxuICAgIGxhc3RNZXNzYWdlSWRSZWYuY3VycmVudCA9IGxhc3RJZFxuICAgIGxhc3RNZXNzYWdlc0xlbmd0aFJlZi5jdXJyZW50ID0gbWVzc2FnZXMubGVuZ3RoXG5cbiAgICBjb25zdCBpc05ld01lc3NhZ2UgPSBsYXN0SWQgIT09IHByZXZJZCB8fCBtZXNzYWdlcy5sZW5ndGggIT09IHByZXZMZW5cbiAgICBpZiAoIWlzTmV3TWVzc2FnZSkge1xuICAgICAgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eSgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgY29uc3QgaXNBdEJvdHRvbSA9IGNvbnRhaW5lci5zY3JvbGxIZWlnaHQgLSBjb250YWluZXIuc2Nyb2xsVG9wIDw9IGNvbnRhaW5lci5jbGllbnRIZWlnaHQgKyAxMDBcbiAgICBjb25zdCBoYXNJbml0aWFsTWVzc2FnZSA9IG1lc3NhZ2VzLnNvbWUobXNnID0+IG1zZy5pZCA9PT0gJ3VzZXItaW5pdGlhbC1tZXNzYWdlJylcbiAgICBjb25zdCBpc0FwcHJvdmFsID0gISFsYXN0TWVzc2FnZSAmJiAobGFzdE1lc3NhZ2UuaWQuc3RhcnRzV2l0aCgnYXBwcm92YWwtJykgfHwgISFsYXN0TWVzc2FnZS5hcHByb3ZhbClcbiAgICBjb25zdCBpc0Fuc3dlck9yUXVlc3Rpb24gPVxuICAgICAgISFsYXN0TWVzc2FnZSAmJiAobGFzdE1lc3NhZ2UuaWQuc3RhcnRzV2l0aCgnYW5zd2VyLScpIHx8IGxhc3RNZXNzYWdlLmlkLnN0YXJ0c1dpdGgoJ3F1ZXN0aW9uLScpKVxuXG4gICAgLy8gQXBwcm92YWw6IHNlY3VlbmNpYSBkZSBzY3JvbGxzIGNvbiBkZWxheSBwb3JxdWUgZWwgQXBwcm92YWxCb3ggbmVjZXNpdGFcbiAgICAvLyB1biB0aWNrIHBhcmEgbWVkaXJzZS4gU2Nyb2xsZWEgYXVucXVlIGVsIHVzdWFyaW8gbm8gZXN0w6kgYWwgZm9uZG8gc2kgbm9cbiAgICAvLyBlc3TDoSBzY3JvbGxlYW5kbyBtYW51YWxtZW50ZS5cbiAgICBpZiAoaXNBcHByb3ZhbCAmJiAoaXNBdEJvdHRvbSB8fCAhdXNlclNjcm9sbGluZ1JlZi5jdXJyZW50KSkge1xuICAgICAgc2Nyb2xsVG9Cb3R0b21SYWYoKVxuICAgICAgc2Nyb2xsVG9Cb3R0b21SYWYoKVxuICAgICAgc2Nyb2xsVG9Cb3R0b21SYWYoeyBkZWxheU1zOiAxMDAgfSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIE51ZXZvcyBhbnN3ZXIvcXVlc3Rpb246IHNjcm9sbCBzaSBlbCB1c3VhcmlvIHlhIGVzdGFiYSBhbCBmb25kby5cbiAgICBpZiAoaXNBbnN3ZXJPclF1ZXN0aW9uICYmIGlzQXRCb3R0b20pIHtcbiAgICAgIHNjcm9sbFRvQm90dG9tUmFmKClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIENhc28gYm9yZGU6IGNhbWJpb3MgZGUgbWVuc2FqZXMgc2luIHNlciBudWV2byBhbnN3ZXIvdXNlci9hcHByb3ZhbFxuICAgIC8vIHBlcm8gc8OtIHVuIG1lbnNhamUgbnVldm8gKG5vIGVsIFwidXNlci1pbml0aWFsLW1lc3NhZ2VcIikuIFNjcm9sbGVhLlxuICAgIGlmICghaXNBbnN3ZXJPclF1ZXN0aW9uICYmICFpc0FwcHJvdmFsICYmICFoYXNJbml0aWFsTWVzc2FnZSAmJiBtZXNzYWdlcy5sZW5ndGggPiBwcmV2TGVuKSB7XG4gICAgICBzY3JvbGxUb0JvdHRvbVJhZigpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5KClcbiAgfSwgW21lc3NhZ2VzLCBsb2FkaW5nTWVzc2FnZXMsIGlzTG9hZGluZ01vcmVNZXNzYWdlcywgc2Nyb2xsVG9Cb3R0b21SYWYsIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHldKVxuXG4gIC8vIEVzdGFkbyBpbmljaWFsIGRlbCBib3TDs24gc2Nyb2xsLXRvLWJvdHRvbSBhbCB0ZXJtaW5hciBsb2FkaW5nTWVzc2FnZXMuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFsb2FkaW5nTWVzc2FnZXMpIHtcbiAgICAgIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkoKVxuICAgIH1cbiAgfSwgW2xvYWRpbmdNZXNzYWdlcywgbWVzc2FnZXMubGVuZ3RoLCB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5XSlcblxuICAvLyBPYnRlbmVyIGVsIMO6bHRpbW8gbWVuc2FqZSBkZWwgdXN1YXJpbyBwYXJhIHZlcmlmaWNhciBzaSB0aWVuZSBhdHRhY2htZW50c1xuICBjb25zdCBsYXN0VXNlck1lc3NhZ2UgPSBtZXNzYWdlc1xuICAgIC5maWx0ZXIobXNnID0+IG1zZy5yb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuVVNFUiB8fCBtc2cudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSlcbiAgICAuYXQoLTEpXG5cbiAgY29uc3QgaGFzQXR0YWNobWVudHMgPVxuICAgIChBcnJheS5pc0FycmF5KGxhc3RVc2VyTWVzc2FnZT8uYXR0YWNobWVudHMpICYmIGxhc3RVc2VyTWVzc2FnZS5hdHRhY2htZW50cy5sZW5ndGgpIHx8XG4gICAgKEFycmF5LmlzQXJyYXkobGFzdFVzZXJNZXNzYWdlPy5zb3VyY2VzKSAmJiBsYXN0VXNlck1lc3NhZ2Uuc291cmNlcy5sZW5ndGgpXG5cbiAgY29uc3QgaXNTY3JvbGxPblBhcmVudCA9ICEhZXhwYW5kZWRcbiAgY29uc3QgaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50ID0gYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCcgJiYgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYWdlbnQ/Lm5hbWUgfHwgJycpXG5cbiAgLy8gQWwgZXhwYW5kaXIvY29udHJhZXIgZWwgbW9kYWwgZWwgcmVmIHBhc2EgYSBvdHJvIGNvbnRlbmVkb3IgKHNjcm9sbFRvcCBzZSByZXNldGVhIGEgMCkuXG4gIC8vIFJlc3RhdXJhciBsYSBwb3NpY2nDs24gZGUgc2Nyb2xsIGFudGVzIGRlbCBwYWludCBwYXJhIGV2aXRhciBxdWUgbGEgY29udmVyc2FjacOzbiBzYWx0ZSBhcnJpYmEuXG4gIGNvbnN0IGV4cGFuZGVkUmVmID0gdXNlUmVmKGV4cGFuZGVkKVxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChleHBhbmRlZFJlZi5jdXJyZW50ICE9PSBleHBhbmRlZCAmJiBtZXNzYWdlc1JlZi5jdXJyZW50KSB7XG4gICAgICBjb25zdCBzYXZlZFNjcm9sbFRvcCA9IGxhc3RTY3JvbGxUb3BSZWYuY3VycmVudFxuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBzYXZlZFNjcm9sbFRvcFxuICAgICAgZXhwYW5kZWRSZWYuY3VycmVudCA9IGV4cGFuZGVkXG4gICAgfSBlbHNlIHtcbiAgICAgIGV4cGFuZGVkUmVmLmN1cnJlbnQgPSBleHBhbmRlZFxuICAgIH1cbiAgfSwgW2V4cGFuZGVkXSlcblxuICBpZiAobG9hZGluZ01lc3NhZ2VzKSB7XG4gICAgcmV0dXJuIDxMb2FkZXIgLz5cbiAgfVxuXG4gIGNvbnN0IG1lc3NhZ2VzQ29udGVudCA9IChcbiAgICA8PlxuICAgICAge2lzTG9hZGluZ01vcmVNZXNzYWdlcyAmJiA8TG9hZGluZ1RleHQgdGV4dD17dCgnY2hhdC5sb2FkaW5nTW9yZScpfSAvPn1cbiAgICAgIDw+XG4gICAgICAgIHttZXNzYWdlcy5tYXAoKG1lc3NhZ2UsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNBc3Npc3RhbnRNZXNzYWdlID0gbWVzc2FnZS5yb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5UIHx8IG1lc3NhZ2UudXNlci5pZCA9PT0gJ2Fzc2lzdGFudCdcbiAgICAgICAgICBjb25zdCBpc0xhc3RNZXNzYWdlID0gaW5kZXggPT09IG1lc3NhZ2VzLmxlbmd0aCAtIDFcbiAgICAgICAgICBjb25zdCBpc1N0cmVhbWluZyA9IGlzQXNzaXN0YW50TWVzc2FnZSAmJiBpc0xhc3RNZXNzYWdlICYmICh3YWl0aW5nUmVzcG9uc2UgfHwgaXNXcml0aW5nKVxuXG4gICAgICAgICAgLy8gTm8gZmlsdHJhciBlbCBwbGFjZWhvbGRlciBkZWwgbWVuc2FqZSBlbiBzdHJlYW1pbmc6IHN1IHRleHRvIHZpdmVcbiAgICAgICAgICAvLyBlbiBlbCBzdHJlYW1pbmdTdG9yZSB5IGBtZXNzYWdlLm1lc3NhZ2VgIGVzICcnIGhhc3RhIGVsIGNvbXBsZXRlLlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICFpc1N0cmVhbWluZyAmJlxuICAgICAgICAgICAgIShtZXNzYWdlLmF0dGFjaG1lbnRzPy5sZW5ndGggfHwgbWVzc2FnZS5zb3VyY2VzPy5sZW5ndGgpICYmXG4gICAgICAgICAgICAhbWVzc2FnZS5tZXNzYWdlICYmXG4gICAgICAgICAgICAhbWVzc2FnZS5wcm9qZWN0Py5uYW1lICYmXG4gICAgICAgICAgICAhbWVzc2FnZS5hcHByb3ZhbFxuICAgICAgICAgIClcbiAgICAgICAgICAgIHJldHVybiBudWxsXG5cbiAgICAgICAgICBjb25zdCBtZXNzYWdlRmVlZGJhY2sgPVxuICAgICAgICAgICAgbWVzc2FnZT8ud2FzSGVscGZ1bCA9PT0gdW5kZWZpbmVkIHx8IG1lc3NhZ2Uud2FzSGVscGZ1bCA9PT0gbnVsbFxuICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgOiBtZXNzYWdlLndhc0hlbHBmdWxcbiAgICAgICAgICAgICAgICA/IEZlZWRiYWNrLlRIVU1CU19VUFxuICAgICAgICAgICAgICAgIDogRmVlZGJhY2suVEhVTUJTX0RPV05cblxuICAgICAgICAgIC8vIEtleSBlc3RhYmxlOiBzb2xvIG1lc3NhZ2UuaWQgcGFyYSBldml0YXIgcmVtb3VudCBkdXJhbnRlIHN0cmVhbWluZyAobWVzc2FnZS5kYXRlIHB1ZWRlIGNhbWJpYXIpXG4gICAgICAgICAgY29uc3QgbWVzc2FnZUtleSA9IG1lc3NhZ2UuaWQgPz8gYG1zZy0ke2luZGV4fWBcblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8TWVzc2FnZUl0ZW1cbiAgICAgICAgICAgICAgey4uLm1lc3NhZ2V9XG4gICAgICAgICAgICAgIGtleT17bWVzc2FnZUtleX1cbiAgICAgICAgICAgICAgYXV0aFVzZXI9e2F1dGhVc2VyfVxuICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb249e2hhbmRsZVNlbGVjdE9wdGlvbn1cbiAgICAgICAgICAgICAgaGFuZGxlRmVlZGJhY2s9e2hhbmRsZUZlZWRiYWNrfVxuICAgICAgICAgICAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uPXtoYW5kbGVBcHByb3ZhbERlY2lzaW9ufVxuICAgICAgICAgICAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s9e2hhbmRsZVN1Z2dlc3Rpb25DbGlja31cbiAgICAgICAgICAgICAgaGFzU2VsZWN0ZWRTdWdnZXN0aW9uPXshIXNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHNbbWVzc2FnZS5pZF19XG4gICAgICAgICAgICAgIGRpc2FibGVGZWVkYmFjaz17bWVzc2FnZUZlZWRiYWNrfVxuICAgICAgICAgICAgICBpc1N0cmVhbWluZz17aXNTdHJlYW1pbmd9XG4gICAgICAgICAgICAgIGlzTGFzdE1lc3NhZ2U9e2lzTGFzdE1lc3NhZ2V9XG4gICAgICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKVxuICAgICAgICB9KX1cbiAgICAgIDwvPlxuICAgICAgeyh3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2UgfHwgT2JqZWN0LmtleXMoYWN0aXZlTG9hZGluZ3MgfHwge30pLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgPFNDTG9hZGluZ01lc3NhZ2VzQ29sdW1uPlxuICAgICAgICAgIHtPYmplY3Qua2V5cyhhY3RpdmVMb2FkaW5ncyB8fCB7fSkubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgIDxMb2FkaW5nVGV4dFxuICAgICAgICAgICAgICBrZXk9XCJsb2FkaW5nLWFjdGl2ZVwiXG4gICAgICAgICAgICAgIHRleHQ9e1xuICAgICAgICAgICAgICAgIE9iamVjdC52YWx1ZXMoYWN0aXZlTG9hZGluZ3MgfHwge30pLmZpbmQobXNnID0+IG1zZyAhPT0gdCgnY2hhdC5wcm9jZXNzaW5nJykpIHx8IHQoJ2NoYXQucHJvY2Vzc2luZycpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICh3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2UpICYmIChcbiAgICAgICAgICAgICAgPExvYWRpbmdUZXh0XG4gICAgICAgICAgICAgICAgdGV4dD17XG4gICAgICAgICAgICAgICAgICBsb2FkaW5nTWVzc2FnZSB8fFxuICAgICAgICAgICAgICAgICAgKGlzV2ViU2VhcmNoQWN0aXZlXG4gICAgICAgICAgICAgICAgICAgID8gJ0J1c2NhbmRvIGVuIGxhIHdlYidcbiAgICAgICAgICAgICAgICAgICAgOiBpc0RlZXBTZWFyY2hBY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICA/IHQoJ2NoYXQuZ2VuZXJhdGluZ0RlZXBTZWFyY2gnKVxuICAgICAgICAgICAgICAgICAgICAgIDogaGFzQXR0YWNobWVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdCgnY2hhdC5nZW5lcmF0aW5nQXR0YWNobWVudCcpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHQoJ2NoYXQuZ2VuZXJhdGluZycpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIClcbiAgICAgICAgICApfVxuICAgICAgICA8L1NDTG9hZGluZ01lc3NhZ2VzQ29sdW1uPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPFNDTWVzc2FnZXNPdXRlciAkc2Nyb2xsT25QYXJlbnQ9e2lzU2Nyb2xsT25QYXJlbnR9PlxuICAgICAge2lzU2Nyb2xsT25QYXJlbnQgPyAoXG4gICAgICAgIDxTQ01lc3NhZ2VzU2Nyb2xsIHJlZj17bWVzc2FnZXNSZWZ9IG9uU2Nyb2xsPXtoYW5kbGVTY3JvbGxUb0JvdHRvbX0+XG4gICAgICAgICAgPFNDTWVzc2FnZXNJbm5lciAkc2Nyb2xsT25QYXJlbnQ9e2lzU2Nyb2xsT25QYXJlbnR9ICRpc01hcmtldHBsYWNlR2xvYmFsPXtpc01hcmtldHBsYWNlR2xvYmFsQWdlbnR9PlxuICAgICAgICAgICAge21lc3NhZ2VzQ29udGVudH1cbiAgICAgICAgICA8L1NDTWVzc2FnZXNJbm5lcj5cbiAgICAgICAgPC9TQ01lc3NhZ2VzU2Nyb2xsPlxuICAgICAgKSA6IChcbiAgICAgICAgPFNDTWVzc2FnZXNJbm5lclxuICAgICAgICAgIHJlZj17bWVzc2FnZXNSZWZ9XG4gICAgICAgICAgb25TY3JvbGw9e2hhbmRsZVNjcm9sbFRvQm90dG9tfVxuICAgICAgICAgICRzY3JvbGxPblBhcmVudD17ZmFsc2V9XG4gICAgICAgICAgJGlzTWFya2V0cGxhY2VHbG9iYWw9e2lzTWFya2V0cGxhY2VHbG9iYWxBZ2VudH1cbiAgICAgICAgPlxuICAgICAgICAgIHttZXNzYWdlc0NvbnRlbnR9XG4gICAgICAgIDwvU0NNZXNzYWdlc0lubmVyPlxuICAgICAgKX1cblxuICAgICAge3Nob3dTY3JvbGxUb0JvdHRvbSAmJiAoXG4gICAgICAgIDxTY3JvbGxUb0JvdHRvbUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlQ2xpY2tTY3JvbGxUb0JvdHRvbX0+XG4gICAgICAgICAgPEFycm93U21hbGxEb3duIGNvbG9yPVwiIzY2NlwiIHdpZHRoPVwiMjBweFwiIGhlaWdodD1cIjIwcHhcIiAvPlxuICAgICAgICA8L1Njcm9sbFRvQm90dG9tQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L1NDTWVzc2FnZXNPdXRlcj5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJTWVzc2FnZXMgPSBSZWFjdC5tZW1vKENoYXRBSU1lc3NhZ2VzSW5uZXIpXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBT0EsS0FBSyxJQUFRQyxJQUFJLEVBQWFDLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxlQUFlLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFBQyxhQUFBLElBQUFDLGNBQUEsUUFBUSxPQUFPO0FBQzdHLFNBQVNDLFVBQVUsUUFBUSxZQUFZO0FBQ3ZDLFNBQVNDLGdCQUFnQixRQUFRLGtCQUFrQjtBQUNuRCxTQUFTQyxjQUFjLFFBQVEsaURBQWlEO0FBRWhGLFNBQVNDLGNBQWMsUUFBUSwyQ0FBMkM7QUFDMUUsU0FBU0MsV0FBVyxRQUFRLHFDQUFxQztBQUNqRSxTQUFTQyxzQkFBc0IsUUFBUSxvQ0FBb0M7QUFDM0UsU0FBU0MsbUJBQW1CLFFBQVEsZ0RBQWdEO0FBRXBGLFNBQXNCQyxlQUFlLFFBQWtCLHFCQUFxQjtBQUU1RSxTQUFrQkMsT0FBTyxRQUFRLDJCQUEyQjtBQUU1RCxTQUFTQyxJQUFJLFFBQVEscUJBQXFCO0FBQzFDLFNBQVNDLGNBQWMsUUFBUSw4Q0FBOEM7QUFDN0UsU0FBU0MsWUFBWSxRQUFRLDZCQUE2QjtBQUMxRCxTQUFTQyxtQkFBbUIsUUFBUSxvQ0FBb0M7QUFDeEUsU0FBU0MsbUJBQW1CLFFBQVEsb0NBQW9DO0FBRXhFLFNBQVNDLFdBQVcsUUFBUSx5QkFBeUI7QUFDckQsU0FBU0MsTUFBTSxRQUFRLG9CQUFvQjtBQUkzQyxTQUFTQyxlQUFlLEVBQUVDLGdCQUFn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
866
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiY3JlYXRlRWxlbWVudCIsIl9jcmVhdGVFbGVtZW50IiwiU3RyZWFtZG93biIsImNyZWF0ZUNvZGVQbHVnaW4iLCJBcnJvd1NtYWxsRG93biIsIkF0dGFjaG1lbnRDYXJkIiwiQXBwcm92YWxCb3giLCJBdHRhY2htZW50UHJldmlld01vZGFsIiwiQXR0YWNobWVudENhcmRBdWRpbyIsIkNoYXRIaXN0b3J5Um9sZSIsInVzZVVzZXIiLCJ1c2VUIiwidXNlQ2hhdE1hbmFnZXIiLCJ1c2VUYXNrUGFuZWwiLCJ1c2VTbW9vdGhTdHJlYW1UZXh0IiwidXNlU3RyZWFtaW5nTWVzc2FnZSIsIkxvYWRpbmdUZXh0IiwiTG9hZGVyIiwiTWVzc2FnZUZyb21Vc2VyIiwiTWVzc2FnZUZyb21PdGhlciIsIk1lc3NhZ2VDb250ZW50RnJvbVVzZXIiLCJNZXNzYWdlQ29udGVudEZyb21PdGhlciIsIk1lc3NhZ2VGZWVkYmFjayIsIlNDQ0FJTWVzc2FnZVdyYXBwZXIiLCJTY3JvbGxUb0JvdHRvbUJ1dHRvbiIsIlNDTWVzc2FnZXNPdXRlciIsIlNDTWVzc2FnZXNTY3JvbGwiLCJTQ01lc3NhZ2VzSW5uZXIiLCJTQ0xvYWRpbmdNZXNzYWdlc0NvbHVtbiIsIlNDT3B0aW9uc0xpc3QiLCJTQ09wdGlvbkl0ZW0iLCJTQ0Fzc2lzdGFudE1lc3NhZ2VIZWFkZXIiLCJTQ0Fzc2lzdGFudE5hbWUiLCJTQ0Fzc2lzdGFudEF2YXRhciIsIlNDVGFza0xpbmsiLCJTQ01lc3NhZ2VJdGVtV3JhcHBlciIsIlNDTWVzc2FnZUl0ZW1Jbm5lciIsIlNDQXR0YWNobWVudHNSb3ciLCJTQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbiIsIkZlZWRiYWNrIiwidXNlR2xvYmFsQ29udGV4dCIsIk1BSUFJY29uIiwiVEFTS19VUkxfUkVHRVhfUEFUVEVSTiIsIkNoYXRBSVN1Z2dlc3Rpb25zIiwiQ2hhdEFJQ3JlYXRlQWdlbnRBY3Rpb25zIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJkb3dubG9hZEZpbGVGcm9tVXJsIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiY29kZSIsInRoZW1lcyIsIkFzc2lzdGFudEF2YXRhcklubmVyIiwiX3VzZUdsb2JhbENvbnRleHQiLCJhZ2VudCIsImNoaWxkcmVuIiwidHlwZSIsIndpZHRoIiwiaGVpZ2h0IiwiZW1vamkiLCJBc3Npc3RhbnRBdmF0YXIiLCJNZXNzYWdlV3JhcHBlciIsIl9yZWYiLCJpc0N1cnJlbnRVc2VyIiwicHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJNZXNzYWdlQ29tcG9uZW50IiwiX29iamVjdFNwcmVhZCIsIk1lc3NhZ2VDb250ZW50V3JhcHBlciIsIl9yZWYyIiwiX2V4Y2x1ZGVkMiIsIk1lc3NhZ2VDb250ZW50Q29tcG9uZW50IiwiTWVzc2FnZU9wdGlvbnMiLCJfcmVmMyIsIm9wdGlvbnMiLCJoYW5kbGVTZWxlY3RPcHRpb24iLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzZWxlY3RlZE9wdGlvbiIsInNldFNlbGVjdGVkT3B0aW9uIiwiaGFuZGxlU2VsZWN0Iiwib3B0aW9uIiwibWFwIiwiJGhhc1NlbGVjdGlvbiIsIiRkaW1tZWQiLCJpZCIsIm9uQ2xpY2siLCJuYW1lIiwiQXNzaXN0YW50TWVzc2FnZUhlYWRlciIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwibG9jYWxBZ2VudCIsInNldExvY2FsQWdlbnQiLCJfdXNlR2xvYmFsQ29udGV4dDIiLCJnZXRUYWJTZWdtZW50RnJvbUhyZWYiLCJocmVmIiwibWF0Y2giLCJ0ZXN0IiwiZXh0cmFjdFRhc2tzRnJvbU1lc3NhZ2UiLCJtZXNzYWdlIiwidGFza1VybFJlZ2V4IiwiUmVnRXhwIiwidGFza3MiLCJzZWVuSWRzIiwiU2V0IiwiZXhlYyIsInRhc2tJZCIsInVybCIsImhhcyIsImFkZCIsImVzY2FwZWRVcmwiLCJyZXBsYWNlIiwibWFya2Rvd25MaW5rUmVnZXgiLCJjb25jYXQiLCJsaW5rTWF0Y2giLCJ0aXRsZSIsInB1c2giLCJoYXNUYXNrTGlua3MiLCJ0ZXh0IiwibGVuZ3RoIiwiVGFza0xpbmsiLCJfcmVmNCIsInRhYlNlZ21lbnQiLCJfdXNlVGFza1BhbmVsIiwiYnVpbGRPcGVuVGFzayIsIm9wZW5UYXNrIiwiaGFuZGxlQ2xpY2siLCJlIiwibWV0YUtleSIsImN0cmxLZXkiLCJwcmV2ZW50RGVmYXVsdCIsIkN1c3RvbUxpbmsiLCJfcmVmNSIsInJlc3QiLCJfZXhjbHVkZWQzIiwidGFza01hdGNoIiwiU3RyZWFtaW5nTWVzc2FnZUJvZHkiLCJfcHJvcHMkbWVzc2FnZUlkIiwiX3Byb3BzJGNyZWF0ZUFnZW50Rm9sIiwic3RyZWFtaW5nVGV4dCIsImlzU3RyZWFtaW5nIiwibWVzc2FnZUlkIiwicmF3VGV4dCIsIndpbkZsYWdzIiwid2luZG93IiwiZGlzcGxheVRleHQiLCJlbmFibGVkIiwibWF4Q2hhcnNQZXJGcmFtZSIsInNuYXBUb1dvcmRCb3VuZGFyeSIsImRlYnVnIiwic3RyZWFtRGVidWciLCJkZWJ1Z0xhYmVsIiwic3RyZWFtTGFnTXMiLCJ0YXJnZXRMYWdNcyIsInN0cmVhbUFkYXB0IiwiYWRhcHRUb0JhY2tlbmRSYXRlIiwic3RyZWFtQnVmZmVyTXMiLCJ0YXJnZXRCdWZmZXJNcyIsInN0cmVhbU1pbkJ1ZmZlciIsIm1pbkJ1ZmZlckNoYXJzIiwic3RyZWFtV2FybXVwTXMiLCJ3YXJtdXBNcyIsImNyZWF0ZUFnZW50QWN0aW9uc0FnZW50SWQiLCJjcmVhdGVBZ2VudEZvbGxvd1VwIiwiYWdlbnRJZCIsImlzRnJvbnRlbmRDYW5jZWxsZWQiLCJjbGFzc05hbWUiLCJpc0Fzc2lzdGFudCIsInBsdWdpbnMiLCJjb21wb25lbnRzIiwiYSIsImxpbmtTYWZldHkiLCJpc0FuaW1hdGluZyIsInNoaWtpVGhlbWUiLCJjb250cm9scyIsInRhYmxlIiwiaXNFcnJvciIsImFwcHJvdmFsIiwiY29udGVudCIsInNvdXJjZXMiLCJoYW5kbGVGZWVkYmFjayIsImhhbmRsZUZlZWRiYWNrQ2xpY2siLCJkaXNhYmxlRmVlZGJhY2siLCJzdWdnZXN0aW9ucyIsIm9uU2VsZWN0U3VnZ2VzdGlvbiIsInN1Z2dlc3Rpb24iLCJoYW5kbGVTdWdnZXN0aW9uQ2xpY2siLCJkaXNhYmxlZCIsInN1Z2dlc3Rpb25zRGlzYWJsZWQiLCJoaWRkZW4iLCJpc0xhc3RNZXNzYWdlIiwiTWVzc2FnZUl0ZW0iLCJfcHJvcHMkcHJvamVjdE1ldGFkYXQiLCJ1c2VyIiwiYXV0aFVzZXIiLCJpc0NoYW5nZVByb2plY3QiLCJoYW5kbGVBcHByb3ZhbERlY2lzaW9uIiwicm9sZSIsImF0dGFjaG1lbnRzIiwiYXBwcm92YWxTdGF0dXMiLCJoYXNTZWxlY3RlZFN1Z2dlc3Rpb24iLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInByZXZpZXdBdHRhY2htZW50Iiwic2V0UHJldmlld0F0dGFjaG1lbnQiLCJVU0VSIiwidG9TdHJpbmciLCJBU1NJU1RBTlQiLCJtZXNzYWdlQXR0YWNobWVudHMiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVBdHRhY2htZW50Q2xpY2siLCJhdHRhY2htZW50IiwiZmlsZSIsIkZpbGUiLCJvcmlnaW5hbEZpbGUiLCJ1cmxfdGh1bWJuYWlsIiwidXJsX29yaWdpbmFsIiwidXJsX2ZpbGUiLCJoYW5kbGVDbG9zZVByZXZpZXciLCJoYW5kbGVBdHRhY2htZW50RG93bmxvYWQiLCJfcmVmNiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiZXh0ZW5zaW9uIiwiZmlsZU5hbWUiLCJmaWxlVXJsIiwiYmxvYlVybCIsImRvd25sb2FkZWRGaWxlIiwibGluayIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJpbmNsdWRlcyIsInNlbnQiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJhYnJ1cHQiLCJkb2N1bWVudCIsImRvd25sb2FkIiwic3R5bGUiLCJkaXNwbGF5IiwiYm9keSIsImFwcGVuZENoaWxkIiwiY2xpY2siLCJzZXRUaW1lb3V0IiwicmVtb3ZlQ2hpbGQiLCJyZXZva2VPYmplY3RVUkwiLCJjb25zb2xlIiwiZXJyb3IiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImhhc0ZlZWRiYWNrIiwiJGlzQXNzaXN0YW50IiwibWVzc2FnZUV4dHJhQ29udGVudCIsImZlZWRiYWNrIiwic2Vzc2lvbklkIiwic3BsaXQiLCJmaWx0ZXIiLCJxdWVzdGlvbklkIiwiam9pbiIsImluZGV4IiwiX2F0dGFjaG1lbnQkdHlwZSIsIl9hdHRhY2htZW50JG5hbWUiLCJhdHRhY2htZW50VHlwZSIsInRvTG93ZXJDYXNlIiwiYXR0YWNobWVudE5hbWUiLCJpc0F1ZGlvRmlsZSIsInN0YXJ0c1dpdGgiLCJzb21lIiwiZXh0IiwiZW5kc1dpdGgiLCJwb3NpdGlvbkluZGV4Iiwib25Eb3dubG9hZCIsInBlbmRpbmdfYWN0aW9ucyIsImFjdGlvbnMiLCJzdGF0dXMiLCJvbkFwcHJvdmUiLCJ0aHJlYWRJZHMiLCJvblJlamVjdCIsImlzUHJvamVjdERlbGV0ZWQiLCJwcm9qZWN0TWV0YWRhdGEiLCJpc19kZWxldGVkIiwiaXNFeHBhbmRlZCIsImV4cGFuZGVkIiwiaGl0bEluc3RhbmNlSWQiLCJvcmlnaW5hbF90aHJlYWRfaWQiLCJ3YXJuaW5nTWVzc2FnZSIsIndhcm5pbmdfbWVzc2FnZSIsIm1hbnVhbEFwcHJvdmFsRGV0ZWN0ZWQiLCJtYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQiLCJpc09wZW4iLCJvbkNsb3NlIiwiQ2hhdEFJTWVzc2FnZXNJbm5lciIsIl9yZWY3IiwidXNlckluaXRpYWxNZXNzYWdlIiwiaW5pdGlhbENoYXRJZCIsIm9uRXJyb3IiLCJvblNlbmRNZXNzYWdlUmVhZHkiLCJvblNjcm9sbFRvQm90dG9tIiwiYWdlbnRzIiwiX3VzZVQiLCJ0IiwiX3VzZUdsb2JhbENvbnRleHQzIiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJpc0RlZXBTZWFyY2hBY3RpdmUiLCJldmVudCIsIm1lc3NhZ2VzUmVmIiwiY2hhdEluaXRpYWxpemVkUmVmIiwiaXNMb2FkaW5nTW9yZVJlZiIsInVzZXJTY3JvbGxpbmdSZWYiLCJzY3JvbGxUaHJlc2hvbGRSZWYiLCJsYXN0U2Nyb2xsVG9wUmVmIiwic2hvd1Njcm9sbFRvQm90dG9tUmVmIiwic2Nyb2xsUmFmUmVmIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJzaG93U2Nyb2xsVG9Cb3R0b20iLCJzZXRTaG93U2Nyb2xsVG9Cb3R0b20iLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHMiLCJzZXRTZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzIiwiX3VzZUNoYXRNYW5hZ2VyIiwiY2hhdElkIiwidW5kZWZpbmVkIiwibWVzc2FnZXMiLCJsb2FkaW5nTWVzc2FnZXMiLCJpc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJ3YWl0aW5nUmVzcG9uc2UiLCJpc1dyaXRpbmciLCJsb2FkaW5nTWVzc2FnZSIsImFjdGl2ZUxvYWRpbmdzIiwic2VuZE1lc3NhZ2UiLCJjaGFuZ2VQcm9qZWN0IiwiaW5pdGlhbGl6ZUNoYXQiLCJoYW5kbGVTY3JvbGwiLCJzdG9wR2VuZXJhdGlvbiIsInRyaW0iLCJpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQiLCJlbnRpdHkiLCJhaUNoYXRTdWdnZXN0ZWRBbnN3ZXIiLCJhZ2VudF90eXBlIiwiX2RlZmluZVByb3BlcnR5IiwidXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eSIsImVsIiwiY3VycmVudCIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsImRpc3RhbmNlRnJvbUJvdHRvbSIsInNob3VsZFNob3ciLCJzY3JvbGxUb0JvdHRvbVJhZiIsIm9wdHMiLCJfb3B0cyRza2lwSWZVc2VyU2Nyb2wiLCJza2lwSWZVc2VyU2Nyb2xsaW5nIiwiX29wdHMkZGVsYXlNcyIsImRlbGF5TXMiLCJydW4iLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJoYW5kbGVDbGlja1Njcm9sbFRvQm90dG9tIiwic2Nyb2xsVG8iLCJ0b3AiLCJiZWhhdmlvciIsImhhbmRsZVNjcm9sbFRvQm90dG9tIiwiY29udGFpbmVyIiwiY3VycmVudFRhcmdldCIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwiaXNTY3JvbGxpbmdVcCIsImlzTmVhckJvdHRvbSIsInNlbmRNZXNzYWdlUmVmIiwic3RvcEdlbmVyYXRpb25SZWYiLCJvblNlbmRNZXNzYWdlUmVhZHlSZWYiLCJyYWZJZCIsImxhc3RIZWlnaHQiLCJ0aWNrIiwiY3VycmVudEhlaWdodCIsImxhc3RNZXNzYWdlSWRSZWYiLCJsYXN0TWVzc2FnZXNMZW5ndGhSZWYiLCJfbGFzdE1lc3NhZ2UkaWQiLCJsYXN0TWVzc2FnZSIsImxhc3RJZCIsInByZXZJZCIsInByZXZMZW4iLCJpc05ld01lc3NhZ2UiLCJpc0F0Qm90dG9tIiwiaGFzSW5pdGlhbE1lc3NhZ2UiLCJtc2ciLCJpc0FwcHJvdmFsIiwiaXNBbnN3ZXJPclF1ZXN0aW9uIiwibGFzdFVzZXJNZXNzYWdlIiwiYXQiLCJoYXNBdHRhY2htZW50cyIsImlzU2Nyb2xsT25QYXJlbnQiLCJleHBhbmRlZFJlZiIsInNhdmVkU2Nyb2xsVG9wIiwibWVzc2FnZXNDb250ZW50IiwiX21lc3NhZ2UkYXR0YWNobWVudHMiLCJfbWVzc2FnZSRzb3VyY2VzIiwiX21lc3NhZ2UkcHJvamVjdCIsIl9tZXNzYWdlJGlkIiwiaXNBc3Npc3RhbnRNZXNzYWdlIiwicHJvamVjdCIsIm1lc3NhZ2VGZWVkYmFjayIsIndhc0hlbHBmdWwiLCJUSFVNQlNfVVAiLCJUSFVNQlNfRE9XTiIsIm1lc3NhZ2VLZXkiLCJrZXkiLCJPYmplY3QiLCJrZXlzIiwidmFsdWVzIiwiZmluZCIsIiRzY3JvbGxPblBhcmVudCIsInJlZiIsIm9uU2Nyb2xsIiwiJGlzTWFya2V0cGxhY2VHbG9iYWwiLCJjb2xvciIsIkNoYXRBSU1lc3NhZ2VzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1lc3NhZ2VzL0NoYXRBSU1lc3NhZ2VzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLXVuc3RhYmxlLW5lc3RlZC1jb21wb25lbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9yZXF1aXJlLWRlZmF1bHQtcHJvcHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IFJlYWN0LCB7IEZDLCBtZW1vLCBSZWFjdE5vZGUsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgU3RyZWFtZG93biB9IGZyb20gJ3N0cmVhbWRvd24nXG5pbXBvcnQgeyBjcmVhdGVDb2RlUGx1Z2luIH0gZnJvbSAnQHN0cmVhbWRvd24vY29kZSdcbmltcG9ydCB7IEFycm93U21hbGxEb3duIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQXJyb3dTbWFsbERvd24nXG5cbmltcG9ydCB7IEF0dGFjaG1lbnRDYXJkIH0gZnJvbSAnLi4vLi4vYXRvbXMvQXR0YWNobWVudENhcmQvQXR0YWNobWVudENhcmQnXG5pbXBvcnQgeyBBcHByb3ZhbEJveCB9IGZyb20gJy4uLy4uL2F0b21zL0FwcHJvdmFsQm94L0FwcHJvdmFsQm94J1xuaW1wb3J0IHsgQXR0YWNobWVudFByZXZpZXdNb2RhbCB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRQcmV2aWV3TW9kYWwnXG5pbXBvcnQgeyBBdHRhY2htZW50Q2FyZEF1ZGlvIH0gZnJvbSAnLi4vLi4vYXRvbXMvQXR0YWNobWVudENhcmQvQXR0YWNobWVudENhcmRBdWRpbydcbmltcG9ydCB7IE1BSUFNZXNzYWdlUHJvcHMgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBTWVzc2FnZS9NQUlBTWVzc2FnZS5pbnRlcmZhY2VzJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIENoYXRIaXN0b3J5Um9sZSwgVGFza0luZm8gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9DaGF0J1xuXG5pbXBvcnQgeyBDT1JVc2VyLCB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcblxuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyB1c2VDaGF0TWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyJ1xuaW1wb3J0IHsgdXNlVGFza1BhbmVsIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVGFza1BhbmVsJ1xuaW1wb3J0IHsgdXNlU21vb3RoU3RyZWFtVGV4dCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNtb290aFN0cmVhbVRleHQnXG5pbXBvcnQgeyB1c2VTdHJlYW1pbmdNZXNzYWdlIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU3RyZWFtaW5nTWVzc2FnZSdcblxuaW1wb3J0IHsgTG9hZGluZ1RleHQgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkaW5nVGV4dCdcbmltcG9ydCB7IExvYWRlciB9IGZyb20gJy4uLy4uL2F0b21zL0xvYWRlcidcblxuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Byb2plY3QnXG5cbmltcG9ydCB7IE1lc3NhZ2VGcm9tVXNlciwgTWVzc2FnZUZyb21PdGhlciwgTWVzc2FnZUNvbnRlbnRGcm9tVXNlciwgTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXIgfSBmcm9tICcuL3N0eWxlcydcbmltcG9ydCB7IE1lc3NhZ2VGZWVkYmFjayB9IGZyb20gJy4uL01lc3NhZ2VGZWVkYmFjaydcbmltcG9ydCB7XG4gIFNDQ0FJTWVzc2FnZVdyYXBwZXIsXG4gIFNjcm9sbFRvQm90dG9tQnV0dG9uLFxuICBTQ01lc3NhZ2VzT3V0ZXIsXG4gIFNDTWVzc2FnZXNTY3JvbGwsXG4gIFNDTWVzc2FnZXNJbm5lcixcbiAgU0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4sXG4gIFNDT3B0aW9uc0xpc3QsXG4gIFNDT3B0aW9uSXRlbSxcbiAgU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyLFxuICBTQ0Fzc2lzdGFudE5hbWUsXG4gIFNDQXNzaXN0YW50QXZhdGFyLFxuICBTQ1Rhc2tMaW5rLFxuICBTQ01lc3NhZ2VJdGVtV3JhcHBlcixcbiAgU0NNZXNzYWdlSXRlbUlubmVyLFxuICBTQ0F0dGFjaG1lbnRzUm93LFxuICBTQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbixcbn0gZnJvbSAnLi9uZXdTdHlsZXMnXG5pbXBvcnQgeyBGZWVkYmFjayB9IGZyb20gJy4uL01lc3NhZ2VGZWVkYmFjay9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IE1BSUFJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuaW1wb3J0IHsgQ2hhdEFJU3VnZ2VzdGlvbnMgfSBmcm9tICcuL0NoYXRBSVN1Z2dlc3Rpb25zJ1xuaW1wb3J0IHsgQ2hhdEFJQ3JlYXRlQWdlbnRBY3Rpb25zIH0gZnJvbSAnLi9DaGF0QUlDcmVhdGVBZ2VudEFjdGlvbnMnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBkb3dubG9hZEZpbGVGcm9tVXJsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZmlsZURvd25sb2FkSGVscGVyJ1xuXG5jb25zdCBjb2RlID0gY3JlYXRlQ29kZVBsdWdpbih7IHRoZW1lczogWydnaXRodWItbGlnaHQnLCAnZ2l0aHViLWxpZ2h0J10gfSlcblxuY29uc3QgQXNzaXN0YW50QXZhdGFySW5uZXI6IEZDID0gKCkgPT4ge1xuICBjb25zdCB7IGFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgcmV0dXJuIChcbiAgICA8U0NBc3Npc3RhbnRBdmF0YXI+XG4gICAgICB7YWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgPyA8TUFJQUljb24gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPiA6IGFnZW50Py5lbW9qaX1cbiAgICA8L1NDQXNzaXN0YW50QXZhdGFyPlxuICApXG59XG5cbmNvbnN0IEFzc2lzdGFudEF2YXRhciA9IG1lbW8oQXNzaXN0YW50QXZhdGFySW5uZXIpXG5cbnR5cGUgQ2hhdEFJTWVzc2FnZXNQcm9wcyA9IHtcbiAgdXNlckluaXRpYWxNZXNzYWdlOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBmYXFJZD86IHN0cmluZ1xuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gIH1cbiAgaW5pdGlhbENoYXRJZDogc3RyaW5nIHwgbnVsbFxuICBvbkVycm9yOiAoKSA9PiB2b2lkXG4gIG9uU2VuZE1lc3NhZ2VSZWFkeT86IChcbiAgICBzZW5kTWVzc2FnZTogKG1lc3NhZ2U6IHN0cmluZywgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLCBmYXFJZD86IHN0cmluZywgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcpID0+IHZvaWQsXG4gICAgc3RvcEdlbmVyYXRpb246ICgpID0+IHZvaWQsXG4gICAgaXNTdHJlYW1pbmc6IGJvb2xlYW4sXG4gICAgaXNXcml0aW5nOiBib29sZWFuXG4gICkgPT4gdm9pZFxuICBpc0Rpc2FibGVkPzogYm9vbGVhblxuICBvblNjcm9sbFRvQm90dG9tPzogKCkgPT4gdm9pZFxuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgYWdlbnRzPzogQWdlbnRbXVxuICBleHBhbmRlZD86IGJvb2xlYW5cbn1cblxudHlwZSBNZXNzYWdlSXRlbVByb3BzID0gQ2hhdE1lc3NhZ2UgJiB7XG4gIGF1dGhVc2VyOiBDT1JVc2VyXG4gIGhhbmRsZVNlbGVjdE9wdGlvbjogKG9wdGlvbjogUHJvamVjdCkgPT4gdm9pZFxuICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s6IChtZXNzYWdlSWQ6IHN0cmluZywgc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB2b2lkXG4gIGhhc1NlbGVjdGVkU3VnZ2VzdGlvbj86IGJvb2xlYW5cbiAgaGFuZGxlRmVlZGJhY2s6IChmZWVkYmFjazogRmVlZGJhY2ssIGNoYXRNZXNzYWdlSWQ6IHN0cmluZykgPT4gdm9pZFxuICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uOiAodGhyZWFkSWRzOiBzdHJpbmdbXSwgZGVjaXNpb246ICdhcHByb3ZlJyB8ICdyZWplY3QnKSA9PiB2b2lkXG4gIGRpc2FibGVGZWVkYmFjaz86IEZlZWRiYWNrIHwgbnVsbFxuICBzb3VyY2VzPzogYW55XG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICBpc1N0cmVhbWluZz86IGJvb2xlYW5cbiAgaXNMYXN0TWVzc2FnZT86IGJvb2xlYW5cbiAgZXhwYW5kZWQ/OiBib29sZWFuXG59XG5cbmludGVyZmFjZSBNZXNzYWdlV3JhcHBlclByb3BzIHtcbiAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICBjaGlsZHJlbjogUmVhY3ROb2RlXG4gICdkYXRhLW1lc3NhZ2UtaWQnPzogc3RyaW5nXG4gIGhhc0ZlZWRiYWNrPzogYm9vbGVhblxufVxuXG50eXBlIE1lc3NhZ2VDb250ZW50V3JhcHBlclByb3BzID0gTUFJQU1lc3NhZ2VQcm9wcyAmIHtcbiAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICBpc0Vycm9yPzogYm9vbGVhblxuICBpc0NoYW5nZVByb2plY3Q/OiBib29sZWFuXG59XG5cbmNvbnN0IE1lc3NhZ2VXcmFwcGVyOiBGQzxNZXNzYWdlV3JhcHBlclByb3BzPiA9ICh7IGlzQ3VycmVudFVzZXIsIGNoaWxkcmVuLCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IE1lc3NhZ2VDb21wb25lbnQgPSBpc0N1cnJlbnRVc2VyID8gTWVzc2FnZUZyb21Vc2VyIDogTWVzc2FnZUZyb21PdGhlclxuICByZXR1cm4gPE1lc3NhZ2VDb21wb25lbnQgey4uLnByb3BzfT57Y2hpbGRyZW59PC9NZXNzYWdlQ29tcG9uZW50PlxufVxuXG5jb25zdCBNZXNzYWdlQ29udGVudFdyYXBwZXI6IEZDPE1lc3NhZ2VDb250ZW50V3JhcHBlclByb3BzPiA9ICh7IGlzQ3VycmVudFVzZXIsIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgTWVzc2FnZUNvbnRlbnRDb21wb25lbnQgPSBpc0N1cnJlbnRVc2VyID8gTWVzc2FnZUNvbnRlbnRGcm9tVXNlciA6IE1lc3NhZ2VDb250ZW50RnJvbU90aGVyXG4gIHJldHVybiA8TWVzc2FnZUNvbnRlbnRDb21wb25lbnQgey4uLnByb3BzfSAvPlxufVxuXG5mdW5jdGlvbiBNZXNzYWdlT3B0aW9ucyh7XG4gIG9wdGlvbnMsXG4gIGhhbmRsZVNlbGVjdE9wdGlvbixcbn06IHtcbiAgb3B0aW9uczogUHJvamVjdFtdIHwgbnVsbFxuICBoYW5kbGVTZWxlY3RPcHRpb246IChvcHRpb246IFByb2plY3QpID0+IHZvaWRcbn0pIHtcbiAgY29uc3QgW3NlbGVjdGVkT3B0aW9uLCBzZXRTZWxlY3RlZE9wdGlvbl0gPSB1c2VTdGF0ZTxQcm9qZWN0IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBoYW5kbGVTZWxlY3QgPSAob3B0aW9uOiBQcm9qZWN0KSA9PiB7XG4gICAgaWYgKHNlbGVjdGVkT3B0aW9uKSByZXR1cm5cbiAgICBzZXRTZWxlY3RlZE9wdGlvbihvcHRpb24pXG4gICAgaGFuZGxlU2VsZWN0T3B0aW9uKG9wdGlvbilcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDT3B0aW9uc0xpc3Q+XG4gICAgICB7KG9wdGlvbnMgfHwgW10pLm1hcChvcHRpb24gPT4gKFxuICAgICAgICA8U0NPcHRpb25JdGVtXG4gICAgICAgICAgJGhhc1NlbGVjdGlvbj17ISFzZWxlY3RlZE9wdGlvbn1cbiAgICAgICAgICAkZGltbWVkPXshIXNlbGVjdGVkT3B0aW9uICYmIHNlbGVjdGVkT3B0aW9uPy5pZCAhPT0gb3B0aW9uLmlkfVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbGVjdChvcHRpb24pfVxuICAgICAgICAgIGtleT17b3B0aW9uLmlkfVxuICAgICAgICA+XG4gICAgICAgICAge29wdGlvbi5uYW1lfVxuICAgICAgICA8L1NDT3B0aW9uSXRlbT5cbiAgICAgICkpfVxuICAgIDwvU0NPcHRpb25zTGlzdD5cbiAgKVxufVxuXG5jb25zdCBBc3Npc3RhbnRNZXNzYWdlSGVhZGVyID0gKCkgPT4ge1xuICBjb25zdCBbbG9jYWxBZ2VudCwgc2V0TG9jYWxBZ2VudF0gPSB1c2VTdGF0ZTxBZ2VudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHsgYWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0TG9jYWxBZ2VudChhZ2VudClcbiAgfSwgW2FnZW50XSlcblxuICByZXR1cm4gKFxuICAgIDxTQ0Fzc2lzdGFudE1lc3NhZ2VIZWFkZXI+XG4gICAgICA8QXNzaXN0YW50QXZhdGFyIC8+XG4gICAgICB7bG9jYWxBZ2VudD8ubmFtZSAmJiAoXG4gICAgICAgIDxTQ0Fzc2lzdGFudE5hbWU+e2xvY2FsQWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgPyAnTUFJQScgOiBsb2NhbEFnZW50Py5uYW1lfTwvU0NBc3Npc3RhbnROYW1lPlxuICAgICAgKX1cbiAgICA8L1NDQXNzaXN0YW50TWVzc2FnZUhlYWRlcj5cbiAgKVxufVxuXG4vLyBFeHRyYWUgZWwgc2VnbWVudG8gZGUgdGFiIChkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSBkZWwgaHJlZiBwYXJhIGFicmlyIGVsIG1vZGFsIGNvbiBlbCB0YWIgY29ycmVjdG9cbmNvbnN0IGdldFRhYlNlZ21lbnRGcm9tSHJlZiA9IChocmVmOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBtYXRjaCA9IGhyZWYubWF0Y2goL1xcL3Rhc2tzXFwvXFxkK1xcLyhbXi8/XSspLylcbiAgcmV0dXJuIG1hdGNoICYmIC9eKGRldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpJC8udGVzdChtYXRjaFsxXSkgPyBtYXRjaFsxXSA6ICdkZXRhaWwnXG59XG5cbi8qKiBFeHRyYWUgbGFzIHRhcmVhcyBlbmxhemFkYXMgZW4gZWwgdGV4dG8gKFVSTHMgcXVlIGNvaW5jaWRlbiBjb24gVEFTS19VUkxfUkVHRVhfUEFUVEVSTikuICovXG5jb25zdCBleHRyYWN0VGFza3NGcm9tTWVzc2FnZSA9IChtZXNzYWdlOiBzdHJpbmcpOiBUYXNrSW5mb1tdID0+IHtcbiAgaWYgKCFtZXNzYWdlKSByZXR1cm4gW11cbiAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gIGNvbnN0IHRhc2tzOiBUYXNrSW5mb1tdID0gW11cbiAgY29uc3Qgc2VlbklkcyA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9IG51bGxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gIHdoaWxlICgobWF0Y2ggPSB0YXNrVXJsUmVnZXguZXhlYyhtZXNzYWdlKSkgIT09IG51bGwpIHtcbiAgICBjb25zdCB0YXNrSWQgPSBtYXRjaFsxXVxuICAgIGNvbnN0IHVybCA9IG1hdGNoWzBdXG4gICAgaWYgKCFzZWVuSWRzLmhhcyh0YXNrSWQpKSB7XG4gICAgICBzZWVuSWRzLmFkZCh0YXNrSWQpXG4gICAgICBjb25zdCBlc2NhcGVkVXJsID0gdXJsLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJylcbiAgICAgIGNvbnN0IG1hcmtkb3duTGlua1JlZ2V4ID0gbmV3IFJlZ0V4cChgXFxcXFsoW15cXFxcXV0rKVxcXFxdXFxcXCgke2VzY2FwZWRVcmx9XFxcXClgKVxuICAgICAgY29uc3QgbGlua01hdGNoID0gbWVzc2FnZS5tYXRjaChtYXJrZG93bkxpbmtSZWdleClcbiAgICAgIGNvbnN0IHRpdGxlID0gbGlua01hdGNoID8gbGlua01hdGNoWzFdIDogYFRhcmVhICMke3Rhc2tJZH1gXG4gICAgICB0YXNrcy5wdXNoKHsgaWQ6IHRhc2tJZCwgdGl0bGUsIHVybCB9KVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGFza3Ncbn1cblxuY29uc3QgaGFzVGFza0xpbmtzID0gKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4gPT4gZXh0cmFjdFRhc2tzRnJvbU1lc3NhZ2UodGV4dCkubGVuZ3RoID4gMFxuXG4vLyBDb21wb25lbnQgZm9yIHRhc2sgbGlua3MgdGhhdCB1c2VzIHRoZSB1c2VUYXNrUGFuZWwgaG9va1xuY29uc3QgVGFza0xpbms6IEZDPHsgaHJlZjogc3RyaW5nOyB0YXNrSWQ6IHN0cmluZzsgY2hpbGRyZW46IFJlYWN0Tm9kZSB9PiA9ICh7IGhyZWYsIHRhc2tJZCwgY2hpbGRyZW4gfSkgPT4ge1xuICBjb25zdCB0YWJTZWdtZW50ID0gZ2V0VGFiU2VnbWVudEZyb21IcmVmKGhyZWYpXG4gIGNvbnN0IHsgYnVpbGRPcGVuVGFzayB9ID0gdXNlVGFza1BhbmVsKHRhc2tJZCwgdGFiU2VnbWVudClcbiAgY29uc3Qgb3BlblRhc2sgPSBidWlsZE9wZW5UYXNrKClcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChlOiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICAgIC8vIFNpIGVzIENtZC9DdHJsICsgY2xpY2ssIGRlamFyIHF1ZSBzZSBhYnJhIGVuIG51ZXZhIHBlc3Rhw7FhIChjb21wb3J0YW1pZW50byBwb3IgZGVmZWN0bylcbiAgICBpZiAoZS5tZXRhS2V5IHx8IGUuY3RybEtleSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgb3BlblRhc2soKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NUYXNrTGluayBocmVmPXtocmVmfSBvbkNsaWNrPXtoYW5kbGVDbGlja30+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TQ1Rhc2tMaW5rPlxuICApXG59XG5cbi8vIEN1c3RvbSBsaW5rIGNvbXBvbmVudCBmb3IgU3RyZWFtZG93bjogdGFzayBVUkxzIG9wZW4gdGhlIHRhc2sgcGFuZWwsIG90aGVyIGxpbmtzIHJlbmRlciBub3JtYWxseVxudHlwZSBDdXN0b21MaW5rUHJvcHMgPSBSZWFjdC5BbmNob3JIVE1MQXR0cmlidXRlczxIVE1MQW5jaG9yRWxlbWVudD4gJiB7IG5vZGU/OiB1bmtub3duIH1cbmNvbnN0IEN1c3RvbUxpbms6IEZDPEN1c3RvbUxpbmtQcm9wcz4gPSAoeyBocmVmLCBjaGlsZHJlbiwgLi4ucmVzdCB9KSA9PiB7XG4gIGlmICghaHJlZiB8fCB0eXBlb2YgaHJlZiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGEgaHJlZj17aHJlZn0gey4uLnJlc3R9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2E+XG4gICAgKVxuICB9XG4gIGNvbnN0IHRhc2tNYXRjaCA9IGhyZWYubWF0Y2gobmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOKSlcbiAgaWYgKHRhc2tNYXRjaCkge1xuICAgIGNvbnN0IHRhc2tJZCA9IHRhc2tNYXRjaFsxXVxuICAgIHJldHVybiAoXG4gICAgICA8VGFza0xpbmsgaHJlZj17aHJlZn0gdGFza0lkPXt0YXNrSWR9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L1Rhc2tMaW5rPlxuICAgIClcbiAgfVxuICByZXR1cm4gKFxuICAgIDxhIGhyZWY9e2hyZWZ9IHsuLi5yZXN0fT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2E+XG4gIClcbn1cblxuLyoqIFNvbG8gZXN0ZSBjb21wb25lbnRlIHJlLXJlbmRlcml6YSBjdWFuZG8gY2FtYmlhIGVsIHRleHRvIGVuIHN0cmVhbWluZyAobGVlIGRlbCBjb250ZXh0KS4gKi9cbmNvbnN0IFN0cmVhbWluZ01lc3NhZ2VCb2R5ID0gbWVtbyhcbiAgKHByb3BzOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgaXNTdHJlYW1pbmc6IGJvb2xlYW5cbiAgICBpc0N1cnJlbnRVc2VyOiBib29sZWFuXG4gICAgaXNBc3Npc3RhbnQ6IGJvb2xlYW5cbiAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkPzogYm9vbGVhblxuICAgIGFwcHJvdmFsPzogTWVzc2FnZUl0ZW1Qcm9wc1snYXBwcm92YWwnXVxuICAgIGlzRXJyb3I/OiBib29sZWFuXG4gICAgc291cmNlcz86IE1lc3NhZ2VJdGVtUHJvcHNbJ3NvdXJjZXMnXVxuICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsXG4gICAgY3JlYXRlQWdlbnRGb2xsb3dVcD86IHsgYWdlbnRJZDogc3RyaW5nIH0gfCBudWxsXG4gICAgaGFuZGxlRmVlZGJhY2tDbGljazogKGY6IEZlZWRiYWNrKSA9PiB2b2lkXG4gICAgZGlzYWJsZUZlZWRiYWNrOiBGZWVkYmFjayB8IG51bGxcbiAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s6IChtZXNzYWdlSWQ6IHN0cmluZywgc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB2b2lkXG4gICAgc3VnZ2VzdGlvbnNEaXNhYmxlZD86IGJvb2xlYW5cbiAgICBtZXNzYWdlSWQ6IHN0cmluZ1xuICAgIGlzTGFzdE1lc3NhZ2U/OiBib29sZWFuXG4gIH0pID0+IHtcbiAgICAvLyBUZXh0byBkZWwgc3RyZWFtOiBzb2xvIHNlIGxlZSBkZWwgc3RvcmUgY3VhbmRvIGVzdGUgbWVuc2FqZSBlcyBlbFxuICAgIC8vIHF1ZSBlc3TDoSBlbiBzdHJlYW1pbmcuIHVzZVN5bmNFeHRlcm5hbFN0b3JlIGHDrXNsYSBlbCByZS1yZW5kZXIgYVxuICAgIC8vIGVzdGUgY29tcG9uZW50ZSwgc2luIHRvY2FyIGVsIHJlc3RvIGRlbCDDoXJib2wuXG4gICAgY29uc3Qgc3RyZWFtaW5nVGV4dCA9IHVzZVN0cmVhbWluZ01lc3NhZ2UocHJvcHMuaXNTdHJlYW1pbmcgPyBwcm9wcy5tZXNzYWdlSWQgOiBudWxsKVxuICAgIGNvbnN0IHJhd1RleHQgPSBwcm9wcy5pc1N0cmVhbWluZyA/IHN0cmVhbWluZ1RleHQgOiBwcm9wcy5tZXNzYWdlXG4gICAgLy8gU21vb3RoIHN0cmVhbWluZzogZGVzYWNvcGxhIGxhIGNhZGVuY2lhIGRlbCBiYWNrZW5kIGRlbCByZW5kZXIuXG4gICAgLy8gRHVyYW50ZSBlbCBzdHJlYW1pbmcgbGliZXJhIGNoYXJzIGEgcml0bW8gY29uc3RhbnRlIHbDrWEgckFGOyBjdWFuZG9cbiAgICAvLyB0ZXJtaW5hLCBtdWVzdHJhIGVsIHRleHRvIGZpbmFsIGFsIGluc3RhbnRlIChzaW4gYW5pbWFjacOzbiByZXNpZHVhbCkuXG4gICAgLy8gRmxhZ3MgZGUgdHVuaW5nIGxlw61kYXMgZGVzZGUgd2luZG93IHBhcmEgaXRlcmFyIHNpbiByZWNvbXBpbGFyLlxuICAgIC8vIFVzbyAoY29uc29sYSk6XG4gICAgLy8gTG9zIGRlZmF1bHRzIHZpdmVuIGVuIGVsIGhvb2s7IGVzdG9zIGZsYWdzIHBlcm1pdGVuIG92ZXJyaWRlIGVuIHJ1bnRpbWVcbiAgICAvLyBzaW4gcmVjb21waWxhciAow7p0aWwgcGFyYSB0dW5lYXIgZW4gc3RhZ2luZy9wcm9kKS5cbiAgICAvLyAgIHdpbmRvdy5zdHJlYW1EZWJ1ZyA9IHRydWUgICAgICAgLy8gYWN0aXZhIGxvZ3MgZGUgbcOpdHJpY2FzXG4gICAgLy8gICB3aW5kb3cuc3RyZWFtQWRhcHQgPSBmYWxzZSAgICAgIC8vIGRlc2FjdGl2YSBhZGFwdGFjacOzbiBhbCBiYWNrZW5kXG4gICAgLy8gICB3aW5kb3cuc3RyZWFtQnVmZmVyTXMgPSA2MDAgICAgIC8vIGNvbGNow7NuIG9iamV0aXZvIChtcylcbiAgICAvLyAgIHdpbmRvdy5zdHJlYW1MYWdNcyA9IDQ1MCAgICAgICAgLy8gbGFnIG3DoXhpbW8gYmFzZSAobXMpXG4gICAgLy8gICB3aW5kb3cuc3RyZWFtTWluQnVmZmVyID0gNzAgICAgIC8vIHBpc28gZGVsIGNvbGNow7NuIGVuIGNoYXJzXG4gICAgLy8gICB3aW5kb3cuc3RyZWFtV2FybXVwTXMgPSA0MDAgICAgIC8vIHdhcm11cCBpbmljaWFsIChtcylcbiAgICBjb25zdCB3aW5GbGFncyA9XG4gICAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/ICh3aW5kb3cgYXMgdW5rbm93biBhcyB7XG4gICAgICAgICAgICBzdHJlYW1EZWJ1Zz86IGJvb2xlYW5cbiAgICAgICAgICAgIHN0cmVhbUFkYXB0PzogYm9vbGVhblxuICAgICAgICAgICAgc3RyZWFtQnVmZmVyTXM/OiBudW1iZXJcbiAgICAgICAgICAgIHN0cmVhbUxhZ01zPzogbnVtYmVyXG4gICAgICAgICAgICBzdHJlYW1NaW5CdWZmZXI/OiBudW1iZXJcbiAgICAgICAgICAgIHN0cmVhbVdhcm11cE1zPzogbnVtYmVyXG4gICAgICAgICAgfSlcbiAgICAgICAgOiB7fVxuICAgIGNvbnN0IGRpc3BsYXlUZXh0ID0gdXNlU21vb3RoU3RyZWFtVGV4dChyYXdUZXh0LCB7XG4gICAgICBlbmFibGVkOiAhIXByb3BzLmlzU3RyZWFtaW5nLFxuICAgICAgbWF4Q2hhcnNQZXJGcmFtZTogMjQsXG4gICAgICBzbmFwVG9Xb3JkQm91bmRhcnk6IHRydWUsXG4gICAgICBkZWJ1ZzogISF3aW5GbGFncy5zdHJlYW1EZWJ1ZyxcbiAgICAgIGRlYnVnTGFiZWw6IGBzbW9vdGhTdHJlYW06JHtwcm9wcy5tZXNzYWdlSWQgPz8gJ3Vua25vd24nfWAsXG4gICAgICAuLi4od2luRmxhZ3Muc3RyZWFtTGFnTXMgIT0gbnVsbCAmJiB7IHRhcmdldExhZ01zOiB3aW5GbGFncy5zdHJlYW1MYWdNcyB9KSxcbiAgICAgIC4uLih3aW5GbGFncy5zdHJlYW1BZGFwdCAhPSBudWxsICYmIHsgYWRhcHRUb0JhY2tlbmRSYXRlOiB3aW5GbGFncy5zdHJlYW1BZGFwdCB9KSxcbiAgICAgIC4uLih3aW5GbGFncy5zdHJlYW1CdWZmZXJNcyAhPSBudWxsICYmIHsgdGFyZ2V0QnVmZmVyTXM6IHdpbkZsYWdzLnN0cmVhbUJ1ZmZlck1zIH0pLFxuICAgICAgLi4uKHdpbkZsYWdzLnN0cmVhbU1pbkJ1ZmZlciAhPSBudWxsICYmIHsgbWluQnVmZmVyQ2hhcnM6IHdpbkZsYWdzLnN0cmVhbU1pbkJ1ZmZlciB9KSxcbiAgICAgIC4uLih3aW5GbGFncy5zdHJlYW1XYXJtdXBNcyAhPSBudWxsICYmIHsgd2FybXVwTXM6IHdpbkZsYWdzLnN0cmVhbVdhcm11cE1zIH0pLFxuICAgIH0pXG4gICAgY29uc3QgY3JlYXRlQWdlbnRBY3Rpb25zQWdlbnRJZCA9IHByb3BzLmNyZWF0ZUFnZW50Rm9sbG93VXA/LmFnZW50SWRcbiAgICBpZiAoIWRpc3BsYXlUZXh0ICYmICFwcm9wcy5pc1N0cmVhbWluZykgcmV0dXJuIG51bGxcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPFNDQ0FJTWVzc2FnZVdyYXBwZXJcbiAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtwcm9wcy5pc0N1cnJlbnRVc2VyfVxuICAgICAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ9e3Byb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWR9XG4gICAgICAgICAgY2xhc3NOYW1lPXtwcm9wcy5pc0Fzc2lzdGFudCAmJiBoYXNUYXNrTGlua3MoZGlzcGxheVRleHQpID8gJ2hhcy10YXNrLWxpbmtzJyA6ICcnfVxuICAgICAgICA+XG4gICAgICAgICAgPFN0cmVhbWRvd25cbiAgICAgICAgICAgIHBsdWdpbnM9e3sgY29kZSB9fVxuICAgICAgICAgICAgY29tcG9uZW50cz17eyBhOiBDdXN0b21MaW5rIH0gYXMgUGFyYW1ldGVyczx0eXBlb2YgU3RyZWFtZG93bj5bMF1bJ2NvbXBvbmVudHMnXX1cbiAgICAgICAgICAgIGxpbmtTYWZldHk9e3sgZW5hYmxlZDogZmFsc2UgfX1cbiAgICAgICAgICAgIGlzQW5pbWF0aW5nPXshIXByb3BzLmlzU3RyZWFtaW5nfVxuICAgICAgICAgICAgc2hpa2lUaGVtZT17WydnaXRodWItbGlnaHQnLCAnZ2l0aHViLWxpZ2h0J119XG4gICAgICAgICAgICBjb250cm9scz17eyB0YWJsZTogZmFsc2UsIGNvZGU6IGZhbHNlIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2Rpc3BsYXlUZXh0fVxuICAgICAgICAgIDwvU3RyZWFtZG93bj5cbiAgICAgICAgPC9TQ0NBSU1lc3NhZ2VXcmFwcGVyPlxuICAgICAgICB7cHJvcHMuaXNBc3Npc3RhbnQgJiYgIXByb3BzLmlzRXJyb3IgJiYgIXByb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWQgJiYgIXByb3BzLmFwcHJvdmFsICYmICFwcm9wcy5pc1N0cmVhbWluZyAmJiAoXG4gICAgICAgICAgPE1lc3NhZ2VGZWVkYmFja1xuICAgICAgICAgICAgY29udGVudD17ZGlzcGxheVRleHR9XG4gICAgICAgICAgICBzb3VyY2VzPXtwcm9wcy5zb3VyY2VzfVxuICAgICAgICAgICAgaGFuZGxlRmVlZGJhY2s9e3Byb3BzLmhhbmRsZUZlZWRiYWNrQ2xpY2t9XG4gICAgICAgICAgICBkaXNhYmxlRmVlZGJhY2s9e3Byb3BzLmRpc2FibGVGZWVkYmFja31cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7cHJvcHMuaXNBc3Npc3RhbnQgJiYgIXByb3BzLmlzRXJyb3IgJiYgIXByb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWQgJiYgIXByb3BzLmFwcHJvdmFsICYmIChcbiAgICAgICAgICA8Q2hhdEFJU3VnZ2VzdGlvbnNcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zPXtwcm9wcy5zdWdnZXN0aW9ucyB8fCBbXX1cbiAgICAgICAgICAgIG9uU2VsZWN0U3VnZ2VzdGlvbj17c3VnZ2VzdGlvbiA9PiBwcm9wcy5oYW5kbGVTdWdnZXN0aW9uQ2xpY2socHJvcHMubWVzc2FnZUlkLCBzdWdnZXN0aW9uKX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtwcm9wcy5zdWdnZXN0aW9uc0Rpc2FibGVkfVxuICAgICAgICAgICAgaGlkZGVuPXshIXByb3BzLmlzU3RyZWFtaW5nIHx8ICFwcm9wcy5pc0xhc3RNZXNzYWdlIHx8ICEhcHJvcHMuc3VnZ2VzdGlvbnNEaXNhYmxlZH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7cHJvcHMuaXNBc3Npc3RhbnQgJiZcbiAgICAgICAgICAhcHJvcHMuaXNFcnJvciAmJlxuICAgICAgICAgICFwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkICYmXG4gICAgICAgICAgIXByb3BzLmFwcHJvdmFsICYmXG4gICAgICAgICAgISFjcmVhdGVBZ2VudEFjdGlvbnNBZ2VudElkICYmIChcbiAgICAgICAgICAgIDxDaGF0QUlDcmVhdGVBZ2VudEFjdGlvbnNcbiAgICAgICAgICAgICAgYWdlbnRJZD17Y3JlYXRlQWdlbnRBY3Rpb25zQWdlbnRJZH1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e3Byb3BzLnN1Z2dlc3Rpb25zRGlzYWJsZWR9XG4gICAgICAgICAgICAgIGhpZGRlbj17ISFwcm9wcy5pc1N0cmVhbWluZyB8fCAhcHJvcHMuaXNMYXN0TWVzc2FnZSB8fCAhIXByb3BzLnN1Z2dlc3Rpb25zRGlzYWJsZWR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICA8Lz5cbiAgICApXG4gIH1cbilcblxuY29uc3QgTWVzc2FnZUl0ZW0gPSBtZW1vKChwcm9wczogTWVzc2FnZUl0ZW1Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgaWQsXG4gICAgdXNlcixcbiAgICBtZXNzYWdlLFxuICAgIGlzU3RyZWFtaW5nLFxuICAgIGlzRXJyb3IsXG4gICAgYXV0aFVzZXIsXG4gICAgb3B0aW9ucyxcbiAgICBpc0NoYW5nZVByb2plY3QsXG4gICAgaGFuZGxlU2VsZWN0T3B0aW9uLFxuICAgIGhhbmRsZVN1Z2dlc3Rpb25DbGljayxcbiAgICBoYW5kbGVGZWVkYmFjayxcbiAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uLFxuICAgIGRpc2FibGVGZWVkYmFjayxcbiAgICByb2xlLFxuICAgIHNvdXJjZXMsXG4gICAgYXR0YWNobWVudHMsXG4gICAgYXBwcm92YWwsXG4gICAgYXBwcm92YWxTdGF0dXMsXG4gICAgc3VnZ2VzdGlvbnMsXG4gICAgY3JlYXRlQWdlbnRGb2xsb3dVcCxcbiAgICBoYXNTZWxlY3RlZFN1Z2dlc3Rpb24sXG4gICAgaXNMYXN0TWVzc2FnZSxcbiAgfSA9IHByb3BzXG5cbiAgY29uc3QgW3ByZXZpZXdBdHRhY2htZW50LCBzZXRQcmV2aWV3QXR0YWNobWVudF0gPSB1c2VTdGF0ZTxBdHRhY2htZW50RmlsZSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzQ3VycmVudFVzZXIgPSByb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuVVNFUiB8fCB1c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpXG4gIGNvbnN0IGlzQXNzaXN0YW50ID0gcm9sZSA9PT0gQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCB8fCB1c2VyLmlkID09PSAnYXNzaXN0YW50J1xuICBjb25zdCBtZXNzYWdlQXR0YWNobWVudHMgPVxuICAgIGF0dGFjaG1lbnRzICYmIGF0dGFjaG1lbnRzLmxlbmd0aCA+IDBcbiAgICAgID8gYXR0YWNobWVudHNcbiAgICAgIDogIWlzQXNzaXN0YW50ICYmIEFycmF5LmlzQXJyYXkoc291cmNlcylcbiAgICAgICAgPyAoc291cmNlcyBhcyBBdHRhY2htZW50RmlsZVtdKVxuICAgICAgICA6IFtdXG5cbiAgY29uc3QgaGFuZGxlQXR0YWNobWVudENsaWNrID0gKGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnRGaWxlKSA9PiB7XG4gICAgLy8gUGVybWl0aXIgcHJldmlzdWFsaXphY2nDs24gc2kgdGllbmUgYXJjaGl2byBsb2NhbCBvIFVSTHMgZGVsIGJhY2tlbmRcbiAgICBpZiAoXG4gICAgICBhdHRhY2htZW50LmZpbGUgaW5zdGFuY2VvZiBGaWxlIHx8XG4gICAgICBhdHRhY2htZW50Lm9yaWdpbmFsRmlsZSBpbnN0YW5jZW9mIEZpbGUgfHxcbiAgICAgIGF0dGFjaG1lbnQudXJsX3RodW1ibmFpbCB8fFxuICAgICAgYXR0YWNobWVudC51cmxfb3JpZ2luYWwgfHxcbiAgICAgIGF0dGFjaG1lbnQudXJsX2ZpbGVcbiAgICApIHtcbiAgICAgIHNldFByZXZpZXdBdHRhY2htZW50KGF0dGFjaG1lbnQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VQcmV2aWV3ID0gKCkgPT4ge1xuICAgIHNldFByZXZpZXdBdHRhY2htZW50KG51bGwpXG4gIH1cblxuICBjb25zdCBoYW5kbGVBdHRhY2htZW50RG93bmxvYWQgPSBhc3luYyAoYXR0YWNobWVudDogQXR0YWNobWVudEZpbGUpID0+IHtcbiAgICBjb25zdCBleHRlbnNpb24gPSBhdHRhY2htZW50Lm5hbWUuaW5jbHVkZXMoJy4nKSA/ICcnIDogYC4ke2F0dGFjaG1lbnQudHlwZX1gXG4gICAgY29uc3QgZmlsZU5hbWUgPSBgJHthdHRhY2htZW50Lm5hbWV9JHtleHRlbnNpb259YFxuICAgIGNvbnN0IGZpbGVVcmwgPSBhdHRhY2htZW50LnVybF9vcmlnaW5hbCB8fCBhdHRhY2htZW50LnVybF9maWxlIHx8IGF0dGFjaG1lbnQudXJsX3RodW1ibmFpbFxuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBibG9iVXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuXG4gICAgICBpZiAoZmlsZVVybCkge1xuICAgICAgICBjb25zdCBkb3dubG9hZGVkRmlsZSA9IGF3YWl0IGRvd25sb2FkRmlsZUZyb21VcmwoZmlsZVVybCwgZmlsZU5hbWUsIGF0dGFjaG1lbnQudHlwZSlcbiAgICAgICAgYmxvYlVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZG93bmxvYWRlZEZpbGUpXG4gICAgICB9IGVsc2UgaWYgKGF0dGFjaG1lbnQuZmlsZSBpbnN0YW5jZW9mIEZpbGUpIHtcbiAgICAgICAgYmxvYlVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYXR0YWNobWVudC5maWxlKVxuICAgICAgfVxuXG4gICAgICBpZiAoIWJsb2JVcmwpIHJldHVyblxuXG4gICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXG4gICAgICBsaW5rLmhyZWYgPSBibG9iVXJsXG4gICAgICBsaW5rLmRvd25sb2FkID0gZmlsZU5hbWVcbiAgICAgIGxpbmsuc3R5bGUuZGlzcGxheSA9ICdub25lJ1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKVxuICAgICAgbGluay5jbGljaygpXG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspXG4gICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwoYmxvYlVybClcbiAgICAgIH0sIDEwMClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGRvd25sb2FkIGF0dGFjaG1lbnQnLCBlcnJvcilcbiAgICB9XG4gIH1cblxuICBpZiAoaXNDaGFuZ2VQcm9qZWN0ICYmIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPE1lc3NhZ2VXcmFwcGVyIGtleT17aWR9IGlzQ3VycmVudFVzZXI9e2lzQ3VycmVudFVzZXJ9IGRhdGEtbWVzc2FnZS1pZD17aWR9IGhhc0ZlZWRiYWNrPXtmYWxzZX0+XG4gICAgICAgIDxTQ01lc3NhZ2VJdGVtV3JhcHBlciAkaXNBc3Npc3RhbnQ9e2lzQXNzaXN0YW50fT5cbiAgICAgICAgICB7aXNBc3Npc3RhbnQgJiYgPEFzc2lzdGFudE1lc3NhZ2VIZWFkZXIgLz59XG4gICAgICAgICAgPE1lc3NhZ2VDb250ZW50V3JhcHBlclxuICAgICAgICAgICAgaXNDaGFuZ2VQcm9qZWN0PXtpc0NoYW5nZVByb2plY3R9XG4gICAgICAgICAgICBtZXNzYWdlPXttZXNzYWdlfVxuICAgICAgICAgICAgaXNDdXJyZW50VXNlcj17aXNDdXJyZW50VXNlcn1cbiAgICAgICAgICAgIGlzRXJyb3I9e2lzRXJyb3J9XG4gICAgICAgICAgICBtZXNzYWdlRXh0cmFDb250ZW50PXs8TWVzc2FnZU9wdGlvbnMgb3B0aW9ucz17b3B0aW9ucyBhcyBhbnl9IGhhbmRsZVNlbGVjdE9wdGlvbj17aGFuZGxlU2VsZWN0T3B0aW9ufSAvPn1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1NDTWVzc2FnZUl0ZW1XcmFwcGVyPlxuICAgICAgPC9NZXNzYWdlV3JhcHBlcj5cbiAgICApXG4gIH1cblxuICBjb25zdCBoYW5kbGVGZWVkYmFja0NsaWNrID0gKGZlZWRiYWNrOiBGZWVkYmFjaykgPT4ge1xuICAgIGNvbnN0IHNlc3Npb25JZCA9IGlkXG4gICAgICAuc3BsaXQoJy0nKVxuICAgICAgLmZpbHRlcihxdWVzdGlvbklkID0+IHF1ZXN0aW9uSWQgIT09ICdhbnN3ZXInKVxuICAgICAgLmpvaW4oJy0nKVxuICAgIGhhbmRsZUZlZWRiYWNrPy4oZmVlZGJhY2ssIHNlc3Npb25JZClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDTWVzc2FnZUl0ZW1XcmFwcGVyICRpc0Fzc2lzdGFudD17aXNBc3Npc3RhbnR9PlxuICAgICAge2lzQXNzaXN0YW50ICYmIDxBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIC8+fVxuICAgICAgPFNDTWVzc2FnZUl0ZW1Jbm5lcj5cbiAgICAgICAgeyEhbWVzc2FnZUF0dGFjaG1lbnRzLmxlbmd0aCAmJiAoXG4gICAgICAgICAgPFNDQXR0YWNobWVudHNSb3cgJGlzQXNzaXN0YW50PXtpc0Fzc2lzdGFudH0+XG4gICAgICAgICAgICB7bWVzc2FnZUF0dGFjaG1lbnRzLm1hcCgoYXR0YWNobWVudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgLy8gRGV0ZWN0YXIgc2kgZXMgdW4gYXJjaGl2byBkZSBhdWRpb1xuICAgICAgICAgICAgICBjb25zdCBhdHRhY2htZW50VHlwZSA9IGF0dGFjaG1lbnQ/LnR5cGU/LnRvTG93ZXJDYXNlKCkgfHwgJydcbiAgICAgICAgICAgICAgY29uc3QgYXR0YWNobWVudE5hbWUgPSBhdHRhY2htZW50Py5uYW1lPy50b0xvd2VyQ2FzZSgpIHx8ICcnXG4gICAgICAgICAgICAgIGNvbnN0IGlzQXVkaW9GaWxlID1cbiAgICAgICAgICAgICAgICBhdHRhY2htZW50VHlwZS5zdGFydHNXaXRoKCdhdWRpby8nKSB8fFxuICAgICAgICAgICAgICAgIFsnZmxhYycsICdtNGEnLCAnbXAzJywgJ21wNCcsICdvZ2EnLCAnb2dnJywgJ3dhdicsICd3ZWJtJ10uaW5jbHVkZXMoYXR0YWNobWVudFR5cGUpIHx8XG4gICAgICAgICAgICAgICAgWycuZmxhYycsICcubTRhJywgJy5tcDMnLCAnLm1wNCcsICcub2dhJywgJy5vZ2cnLCAnLndhdicsICcud2VibSddLnNvbWUoZXh0ID0+XG4gICAgICAgICAgICAgICAgICBhdHRhY2htZW50TmFtZS5lbmRzV2l0aChleHQpXG4gICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgIGlmIChpc0F1ZGlvRmlsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiA8QXR0YWNobWVudENhcmRBdWRpbyBrZXk9e2Ake2F0dGFjaG1lbnQuaWR9LSR7YXR0YWNobWVudC5uYW1lfWB9IGF0dGFjaG1lbnQ9e2F0dGFjaG1lbnR9IC8+XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxBdHRhY2htZW50Q2FyZFxuICAgICAgICAgICAgICAgICAga2V5PXtgJHthdHRhY2htZW50LmlkfS0ke2F0dGFjaG1lbnQubmFtZX1gfVxuICAgICAgICAgICAgICAgICAgYXR0YWNobWVudD17YXR0YWNobWVudH1cbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uSW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgb25Eb3dubG9hZD17KCkgPT4gaGFuZGxlQXR0YWNobWVudERvd25sb2FkKGF0dGFjaG1lbnQpfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlQXR0YWNobWVudENsaWNrKGF0dGFjaG1lbnQpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvU0NBdHRhY2htZW50c1Jvdz5cbiAgICAgICAgKX1cbiAgICAgICAge2FwcHJvdmFsICYmIGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucyAmJiAoXG4gICAgICAgICAgPFNDQXBwcm92YWxBY3Rpb25zQ29sdW1uPlxuICAgICAgICAgICAgPEFwcHJvdmFsQm94XG4gICAgICAgICAgICAgIGFjdGlvbnM9e2FwcHJvdmFsLnBlbmRpbmdfYWN0aW9uc31cbiAgICAgICAgICAgICAgc3RhdHVzPXthcHByb3ZhbFN0YXR1c31cbiAgICAgICAgICAgICAgb25BcHByb3ZlPXt0aHJlYWRJZHMgPT4gaGFuZGxlQXBwcm92YWxEZWNpc2lvbih0aHJlYWRJZHMsICdhcHByb3ZlJyl9XG4gICAgICAgICAgICAgIG9uUmVqZWN0PXt0aHJlYWRJZHMgPT4gaGFuZGxlQXBwcm92YWxEZWNpc2lvbih0aHJlYWRJZHMsICdyZWplY3QnKX1cbiAgICAgICAgICAgICAgaXNQcm9qZWN0RGVsZXRlZD17cHJvcHMucHJvamVjdE1ldGFkYXRhPy5pc19kZWxldGVkID09PSB0cnVlfVxuICAgICAgICAgICAgICBpc0V4cGFuZGVkPXtwcm9wcy5leHBhbmRlZH1cbiAgICAgICAgICAgICAgaGl0bEluc3RhbmNlSWQ9e2FwcHJvdmFsLm9yaWdpbmFsX3RocmVhZF9pZH1cbiAgICAgICAgICAgICAgd2FybmluZ01lc3NhZ2U9e2FwcHJvdmFsLndhcm5pbmdfbWVzc2FnZX1cbiAgICAgICAgICAgICAgbWFudWFsQXBwcm92YWxEZXRlY3RlZD17YXBwcm92YWwubWFudWFsX2FwcHJvdmFsX2RldGVjdGVkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NDQXBwcm92YWxBY3Rpb25zQ29sdW1uPlxuICAgICAgICApfVxuICAgICAgICB7KCEhbWVzc2FnZSB8fCBpc1N0cmVhbWluZykgJiYgIWFwcHJvdmFsICYmICEoaXNBc3Npc3RhbnQgJiYgISFtZXNzYWdlQXR0YWNobWVudHMubGVuZ3RoKSAmJiAoXG4gICAgICAgICAgPFN0cmVhbWluZ01lc3NhZ2VCb2R5XG4gICAgICAgICAgICBtZXNzYWdlPXttZXNzYWdlID8/ICcnfVxuICAgICAgICAgICAgaXNTdHJlYW1pbmc9eyEhaXNTdHJlYW1pbmd9XG4gICAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtpc0N1cnJlbnRVc2VyfVxuICAgICAgICAgICAgaXNBc3Npc3RhbnQ9e2lzQXNzaXN0YW50fVxuICAgICAgICAgICAgaXNGcm9udGVuZENhbmNlbGxlZD17cHJvcHMuaXNGcm9udGVuZENhbmNlbGxlZH1cbiAgICAgICAgICAgIGFwcHJvdmFsPXthcHByb3ZhbH1cbiAgICAgICAgICAgIGlzRXJyb3I9e2lzRXJyb3J9XG4gICAgICAgICAgICBzb3VyY2VzPXtzb3VyY2VzfVxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM9e3N1Z2dlc3Rpb25zfVxuICAgICAgICAgICAgY3JlYXRlQWdlbnRGb2xsb3dVcD17Y3JlYXRlQWdlbnRGb2xsb3dVcH1cbiAgICAgICAgICAgIGhhbmRsZUZlZWRiYWNrQ2xpY2s9e2hhbmRsZUZlZWRiYWNrQ2xpY2t9XG4gICAgICAgICAgICBkaXNhYmxlRmVlZGJhY2s9e2Rpc2FibGVGZWVkYmFjayA/PyBudWxsfVxuICAgICAgICAgICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrPXtoYW5kbGVTdWdnZXN0aW9uQ2xpY2t9XG4gICAgICAgICAgICBzdWdnZXN0aW9uc0Rpc2FibGVkPXshIXByb3BzLmlzU3RyZWFtaW5nIHx8ICEhaGFzU2VsZWN0ZWRTdWdnZXN0aW9ufVxuICAgICAgICAgICAgbWVzc2FnZUlkPXtpZH1cbiAgICAgICAgICAgIGlzTGFzdE1lc3NhZ2U9e2lzTGFzdE1lc3NhZ2V9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvU0NNZXNzYWdlSXRlbUlubmVyPlxuICAgICAgPEF0dGFjaG1lbnRQcmV2aWV3TW9kYWxcbiAgICAgICAgaXNPcGVuPXshIXByZXZpZXdBdHRhY2htZW50fVxuICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZVByZXZpZXd9XG4gICAgICAgIGF0dGFjaG1lbnQ9e3ByZXZpZXdBdHRhY2htZW50fVxuICAgICAgLz5cbiAgICA8L1NDTWVzc2FnZUl0ZW1XcmFwcGVyPlxuICApXG59KVxuXG5jb25zdCBDaGF0QUlNZXNzYWdlc0lubmVyID0gKHtcbiAgdXNlckluaXRpYWxNZXNzYWdlLFxuICBpbml0aWFsQ2hhdElkLFxuICBvbkVycm9yLFxuICBvblNlbmRNZXNzYWdlUmVhZHksXG4gIG9uU2Nyb2xsVG9Cb3R0b20sXG4gIGF0dGFjaG1lbnRzLFxuICBhZ2VudHMsXG4gIGV4cGFuZGVkLFxufTogQ2hhdEFJTWVzc2FnZXNQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCB7IGlzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmUsIGFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgZXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IGF1dGhVc2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IG1lc3NhZ2VzUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBjaGF0SW5pdGlhbGl6ZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGlzTG9hZGluZ01vcmVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHVzZXJTY3JvbGxpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNjcm9sbFRocmVzaG9sZFJlZiA9IHVzZVJlZigzOSlcbiAgY29uc3QgbGFzdFNjcm9sbFRvcFJlZiA9IHVzZVJlZigwKVxuICBjb25zdCBzaG93U2Nyb2xsVG9Cb3R0b21SZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNjcm9sbFJhZlJlZiA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKVxuICBjb25zdCBbc2hvd1Njcm9sbFRvQm90dG9tLCBzZXRTaG93U2Nyb2xsVG9Cb3R0b21dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzLCBzZXRTZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+Pih7fSlcblxuICBjb25zdCB7XG4gICAgbWVzc2FnZXMsXG4gICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgIGlzTG9hZGluZ01vcmVNZXNzYWdlcyxcbiAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIGFjdGl2ZUxvYWRpbmdzLFxuICAgIHNlbmRNZXNzYWdlLFxuICAgIGNoYW5nZVByb2plY3QsXG4gICAgaGFuZGxlRmVlZGJhY2ssXG4gICAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbixcbiAgICBpbml0aWFsaXplQ2hhdCxcbiAgICBoYW5kbGVTY3JvbGwsXG4gICAgc3RvcEdlbmVyYXRpb24sXG4gIH0gPSB1c2VDaGF0TWFuYWdlcih7XG4gICAgY2hhdElkOiBpbml0aWFsQ2hhdElkIHx8IHVuZGVmaW5lZCxcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gICAgb25FcnJvcixcbiAgICBhdHRhY2htZW50cyxcbiAgICBhZ2VudHMsXG4gIH0pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0T3B0aW9uID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wdGlvbjogUHJvamVjdCkgPT4ge1xuICAgICAgY2hhbmdlUHJvamVjdChvcHRpb24pXG4gICAgfSxcbiAgICBbY2hhbmdlUHJvamVjdF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN1Z2dlc3Rpb25DbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChtZXNzYWdlSWQ6IHN0cmluZywgc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoIXN1Z2dlc3Rpb24/LnRyaW0oKSkgcmV0dXJuXG4gICAgICBpZiAoc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkc1ttZXNzYWdlSWRdKSByZXR1cm5cbiAgICAgIGNvbnN0IGlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCA9IGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnICYmIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KGFnZW50Py5uYW1lIHx8ICcnKVxuICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdFN1Z2dlc3RlZEFuc3dlciwge1xuICAgICAgICBhZ2VudF90eXBlOiBpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQgPyAnbWFya2V0cGxhY2UnIDogYWdlbnQ/LnR5cGUsXG4gICAgICB9KVxuICAgICAgc2V0U2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcyhwcmV2ID0+ICh7IC4uLnByZXYsIFttZXNzYWdlSWRdOiB0cnVlIH0pKVxuICAgICAgc2VuZE1lc3NhZ2Uoc3VnZ2VzdGlvbilcbiAgICB9LFxuICAgIFtzZW5kTWVzc2FnZSwgc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcywgZXZlbnQsIGFnZW50Py5lbnRpdHksIGFnZW50Py5uYW1lLCBhZ2VudD8udHlwZV1cbiAgKVxuXG4gIC8qKlxuICAgKiBBY3R1YWxpemEgZWwgZXN0YWRvIGRlbCBib3TDs24gXCJzY3JvbGwgdG8gYm90dG9tXCIgY29tcGFyYW5kbyBsYSBwb3NpY2nDs25cbiAgICogYWN0dWFsIGRlbCBzY3JvbGwgY29uIGVsIGZvbmRvLiBVc2EgdW4gcmVmIHBhcmEgZXZpdGFyIGBzZXRTdGF0ZWAgY3VhbmRvXG4gICAqIGVsIHZhbG9yIG5vIGNhbWJpYS5cbiAgICovXG4gIGNvbnN0IHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgZWwgPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgaWYgKCFlbCkgcmV0dXJuXG4gICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBlbFxuICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgIGlmIChzaG93U2Nyb2xsVG9Cb3R0b21SZWYuY3VycmVudCAhPT0gc2hvdWxkU2hvdykge1xuICAgICAgc2hvd1Njcm9sbFRvQm90dG9tUmVmLmN1cnJlbnQgPSBzaG91bGRTaG93XG4gICAgICBzZXRTaG93U2Nyb2xsVG9Cb3R0b20oc2hvdWxkU2hvdylcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8qKlxuICAgKiBTY3JvbGwgaW5tZWRpYXRvIGFsIGZvbmRvIChkZW50cm8gZGUgckFGIHBhcmEgY29vcmRpbmFyIGNvbiBlbCBwYWludClcbiAgICogeSBhY3R1YWxpemEgbGEgdmlzaWJpbGlkYWQgZGVsIGJvdMOzbi4gUmVzcGV0YSBgc2tpcElmVXNlclNjcm9sbGluZ2AgcGFyYVxuICAgKiBubyBzb2JyZXNjcmliaXIgZWwgc2Nyb2xsIG1hbnVhbCBkZWwgdXN1YXJpbyBkdXJhbnRlIGVsIHN0cmVhbWluZy5cbiAgICovXG4gIGNvbnN0IHNjcm9sbFRvQm90dG9tUmFmID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wdHM6IHsgc2tpcElmVXNlclNjcm9sbGluZz86IGJvb2xlYW47IGRlbGF5TXM/OiBudW1iZXIgfSA9IHt9KSA9PiB7XG4gICAgICBjb25zdCB7IHNraXBJZlVzZXJTY3JvbGxpbmcgPSBmYWxzZSwgZGVsYXlNcyA9IDAgfSA9IG9wdHNcbiAgICAgIGNvbnN0IHJ1biA9ICgpID0+IHtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBlbCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICAgICAgICBpZiAoIWVsKSByZXR1cm5cbiAgICAgICAgICBpZiAoc2tpcElmVXNlclNjcm9sbGluZyAmJiB1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICAgIGVsLnNjcm9sbFRvcCA9IGVsLnNjcm9sbEhlaWdodFxuICAgICAgICAgIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkoKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgaWYgKGRlbGF5TXMgPiAwKSBzZXRUaW1lb3V0KHJ1biwgZGVsYXlNcylcbiAgICAgIGVsc2UgcnVuKClcbiAgICB9LFxuICAgIFt1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5XVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ2xpY2tTY3JvbGxUb0JvdHRvbSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIW1lc3NhZ2VzUmVmLmN1cnJlbnQpIHJldHVyblxuICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsVG8oe1xuICAgICAgdG9wOiBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbEhlaWdodCxcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICB9KVxuICAgIC8vIERhciB0aWVtcG8gYWwgc21vb3RoLXNjcm9sbCBhbnRlcyBkZSByZWNhbGN1bGFyIGxhIHZpc2liaWxpZGFkIGRlbCBib3TDs24uXG4gICAgc2V0VGltZW91dCh1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5LCA1MDApXG4gIH0sIFt1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5XSlcblxuICBjb25zdCBoYW5kbGVTY3JvbGxUb0JvdHRvbSA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBSZWFjdC5VSUV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gZS5jdXJyZW50VGFyZ2V0XG5cbiAgICAgIGlmIChzY3JvbGxSYWZSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShzY3JvbGxSYWZSZWYuY3VycmVudClcbiAgICAgIH1cblxuICAgICAgc2Nyb2xsUmFmUmVmLmN1cnJlbnQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBzY3JvbGxSYWZSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBjb250YWluZXJcblxuICAgICAgICBjb25zdCBpc1Njcm9sbGluZ1VwID0gc2Nyb2xsVG9wIDwgbGFzdFNjcm9sbFRvcFJlZi5jdXJyZW50XG5cbiAgICAgICAgaWYgKGlzU2Nyb2xsaW5nVXApIHtcbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDE1XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc05lYXJCb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHQgPCBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudFxuXG4gICAgICAgIGlmIChpc05lYXJCb3R0b20pIHtcbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDM5XG4gICAgICAgIH1cblxuICAgICAgICB1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQgPSAhaXNOZWFyQm90dG9tXG4gICAgICAgIGxhc3RTY3JvbGxUb3BSZWYuY3VycmVudCA9IHNjcm9sbFRvcFxuXG4gICAgICAgIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkoKVxuXG4gICAgICAgIGlmIChpc05lYXJCb3R0b20gJiYgb25TY3JvbGxUb0JvdHRvbSkge1xuICAgICAgICAgIG9uU2Nyb2xsVG9Cb3R0b20oKVxuICAgICAgICB9XG5cbiAgICAgICAgaGFuZGxlU2Nyb2xsKGNvbnRhaW5lcilcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbb25TY3JvbGxUb0JvdHRvbSwgaGFuZGxlU2Nyb2xsLCB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5XVxuICApXG5cbiAgLy8gcmVmcyB0byBzdGFiaWxpemUgZnVuY3Rpb25zIGFuZCBhdm9pZCB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzXG4gIGNvbnN0IHNlbmRNZXNzYWdlUmVmID0gdXNlUmVmKHNlbmRNZXNzYWdlKVxuICBjb25zdCBzdG9wR2VuZXJhdGlvblJlZiA9IHVzZVJlZihzdG9wR2VuZXJhdGlvbilcbiAgY29uc3Qgb25TZW5kTWVzc2FnZVJlYWR5UmVmID0gdXNlUmVmKG9uU2VuZE1lc3NhZ2VSZWFkeSlcblxuICAvLyB1cGRhdGUgcmVmcyB3aGVuIGZ1bmN0aW9ucyBjaGFuZ2VcbiAgc2VuZE1lc3NhZ2VSZWYuY3VycmVudCA9IHNlbmRNZXNzYWdlXG4gIHN0b3BHZW5lcmF0aW9uUmVmLmN1cnJlbnQgPSBzdG9wR2VuZXJhdGlvblxuICBvblNlbmRNZXNzYWdlUmVhZHlSZWYuY3VycmVudCA9IG9uU2VuZE1lc3NhZ2VSZWFkeVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG9uU2VuZE1lc3NhZ2VSZWFkeVJlZi5jdXJyZW50KSB7XG4gICAgICBvblNlbmRNZXNzYWdlUmVhZHlSZWYuY3VycmVudChzZW5kTWVzc2FnZVJlZi5jdXJyZW50LCBzdG9wR2VuZXJhdGlvblJlZi5jdXJyZW50LCB3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZylcbiAgICB9XG4gIH0sIFt3YWl0aW5nUmVzcG9uc2UsIGlzV3JpdGluZ10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQgPSBpc0xvYWRpbmdNb3JlTWVzc2FnZXNcbiAgfSwgW2lzTG9hZGluZ01vcmVNZXNzYWdlc10pXG5cbiAgLy8gQ3VhbmRvIGVsIGFnZW50ZSBlbXBpZXphIGEgcmVzcG9uZGVyLCByZXNldGVhciBlbCBmbGFnIHkgZWwgdW1icmFsIHBhcmEgYWN0aXZhciBlbCBhdXRvLXNjcm9sbFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh3YWl0aW5nUmVzcG9uc2UpIHtcbiAgICAgIHVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDM5XG4gICAgfVxuICB9LCBbd2FpdGluZ1Jlc3BvbnNlXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghY2hhdEluaXRpYWxpemVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNoYXRJbml0aWFsaXplZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgaW5pdGlhbGl6ZUNoYXQoKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gQXV0b3Njcm9sbCBtaWVudHJhcyBlbCB0ZXh0byBkZWwgc3RyZWFtIGNyZWNlLiBFbCB0ZXh0byBzZSBwaW50YSBhbCByaXRtb1xuICAvLyBkZSBgdXNlU21vb3RoU3RyZWFtVGV4dGAgKH42MGZwcyksIG5vIGFsIHJpdG1vIGRlIGxsZWdhZGEgZGUgdG9rZW5zIGRlbFxuICAvLyBiYWNrZW5kOiBwb3IgZXNvIGFjw6EgdXNhbW9zIHVuIGxvb3AgZGUgckFGIHF1ZSBjb21wYXJhIGBzY3JvbGxIZWlnaHRgXG4gIC8vIGNvbnRyYSBlbCDDumx0aW1vIHZhbG9yIG9ic2VydmFkbyB5IGFqdXN0YSBzb2xvIGN1YW5kbyBjYW1iaWEuIEFzw60gZWxcbiAgLy8gc2Nyb2xsIHF1ZWRhIHBlcmZlY3RhbWVudGUgc2luY3Jvbml6YWRvIGNvbiBsYSBhbmltYWNpw7NuIGRlbCB0ZXh0byBzaW5cbiAgLy8gZGVwZW5kZXIgZGUgbGEgY2FkZW5jaWEgZGVsIHN0cmVhbWluZ1N0b3JlLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghd2FpdGluZ1Jlc3BvbnNlICYmICFpc1dyaXRpbmcpIHJldHVybiB1bmRlZmluZWRcbiAgICBpZiAoIW1lc3NhZ2VzUmVmLmN1cnJlbnQpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGxldCByYWZJZDogbnVtYmVyIHwgbnVsbCA9IG51bGxcbiAgICBsZXQgbGFzdEhlaWdodCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0XG5cbiAgICBjb25zdCB0aWNrID0gKCkgPT4ge1xuICAgICAgY29uc3QgZWwgPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgICBpZiAoIWVsKSB7XG4gICAgICAgIHJhZklkID0gbnVsbFxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnRIZWlnaHQgPSBlbC5zY3JvbGxIZWlnaHRcbiAgICAgIGlmIChjdXJyZW50SGVpZ2h0ICE9PSBsYXN0SGVpZ2h0KSB7XG4gICAgICAgIGxhc3RIZWlnaHQgPSBjdXJyZW50SGVpZ2h0XG4gICAgICAgIGlmICghdXNlclNjcm9sbGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgZWwuc2Nyb2xsVG9wID0gY3VycmVudEhlaWdodFxuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkoKVxuICAgICAgfVxuICAgICAgcmFmSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljaylcbiAgICB9XG5cbiAgICByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aWNrKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAocmFmSWQgIT0gbnVsbCkgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpXG4gICAgfVxuICB9LCBbd2FpdGluZ1Jlc3BvbnNlLCBpc1dyaXRpbmcsIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHldKVxuXG4gIC8vIEFsIGNvbWVuemFyIGEgZXNwZXJhciBsYSByZXNwdWVzdGEgZGVsIGJhY2tlbmQsIHNjcm9sbCBpbmljaWFsIGFsIGZvbmRvLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh3YWl0aW5nUmVzcG9uc2UgJiYgbWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgc2Nyb2xsVG9Cb3R0b21SYWYoeyBza2lwSWZVc2VyU2Nyb2xsaW5nOiB0cnVlIH0pXG4gICAgfVxuICB9LCBbd2FpdGluZ1Jlc3BvbnNlLCBzY3JvbGxUb0JvdHRvbVJhZl0pXG5cbiAgLy8gU2Nyb2xsIGN1YW5kbyBjYW1iaWFuIGxvcyBtZW5zYWplczogZGlzdGluZ3VlIFwibnVldm8gbWVuc2FqZVwiIChhZ3JlZ2FkbylcbiAgLy8gZGUgXCJyZWVtcGxhem9cIiAobWlzbW8gaWQvbGVuZ3RoLCBlai4gZmVlZGJhY2sgbyBhcHByb3ZhbFN0YXR1cykuIEVuXG4gIC8vIHJlZW1wbGF6b3Mgc29sbyBzZSByZWNhbGN1bGEgbGEgdmlzaWJpbGlkYWQgZGVsIGJvdMOzbiBzaW4gZm9yemFyIHNjcm9sbC5cbiAgY29uc3QgbGFzdE1lc3NhZ2VJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBsYXN0TWVzc2FnZXNMZW5ndGhSZWYgPSB1c2VSZWY8bnVtYmVyPigwKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbWVzc2FnZXNSZWYuY3VycmVudCB8fCBsb2FkaW5nTWVzc2FnZXMgfHwgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzIHx8IGlzTG9hZGluZ01vcmVSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgbGFzdE1lc3NhZ2UgPSBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXVxuICAgIGNvbnN0IGxhc3RJZCA9IGxhc3RNZXNzYWdlPy5pZCA/PyBudWxsXG4gICAgY29uc3QgcHJldklkID0gbGFzdE1lc3NhZ2VJZFJlZi5jdXJyZW50XG4gICAgY29uc3QgcHJldkxlbiA9IGxhc3RNZXNzYWdlc0xlbmd0aFJlZi5jdXJyZW50XG4gICAgbGFzdE1lc3NhZ2VJZFJlZi5jdXJyZW50ID0gbGFzdElkXG4gICAgbGFzdE1lc3NhZ2VzTGVuZ3RoUmVmLmN1cnJlbnQgPSBtZXNzYWdlcy5sZW5ndGhcblxuICAgIGNvbnN0IGlzTmV3TWVzc2FnZSA9IGxhc3RJZCAhPT0gcHJldklkIHx8IG1lc3NhZ2VzLmxlbmd0aCAhPT0gcHJldkxlblxuICAgIGlmICghaXNOZXdNZXNzYWdlKSB7XG4gICAgICB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5KClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICBjb25zdCBpc0F0Qm90dG9tID0gY29udGFpbmVyLnNjcm9sbEhlaWdodCAtIGNvbnRhaW5lci5zY3JvbGxUb3AgPD0gY29udGFpbmVyLmNsaWVudEhlaWdodCArIDEwMFxuICAgIGNvbnN0IGhhc0luaXRpYWxNZXNzYWdlID0gbWVzc2FnZXMuc29tZShtc2cgPT4gbXNnLmlkID09PSAndXNlci1pbml0aWFsLW1lc3NhZ2UnKVxuICAgIGNvbnN0IGlzQXBwcm92YWwgPSAhIWxhc3RNZXNzYWdlICYmIChsYXN0TWVzc2FnZS5pZC5zdGFydHNXaXRoKCdhcHByb3ZhbC0nKSB8fCAhIWxhc3RNZXNzYWdlLmFwcHJvdmFsKVxuICAgIGNvbnN0IGlzQW5zd2VyT3JRdWVzdGlvbiA9XG4gICAgICAhIWxhc3RNZXNzYWdlICYmIChsYXN0TWVzc2FnZS5pZC5zdGFydHNXaXRoKCdhbnN3ZXItJykgfHwgbGFzdE1lc3NhZ2UuaWQuc3RhcnRzV2l0aCgncXVlc3Rpb24tJykpXG5cbiAgICAvLyBBcHByb3ZhbDogc2VjdWVuY2lhIGRlIHNjcm9sbHMgY29uIGRlbGF5IHBvcnF1ZSBlbCBBcHByb3ZhbEJveCBuZWNlc2l0YVxuICAgIC8vIHVuIHRpY2sgcGFyYSBtZWRpcnNlLiBTY3JvbGxlYSBhdW5xdWUgZWwgdXN1YXJpbyBubyBlc3TDqSBhbCBmb25kbyBzaSBub1xuICAgIC8vIGVzdMOhIHNjcm9sbGVhbmRvIG1hbnVhbG1lbnRlLlxuICAgIGlmIChpc0FwcHJvdmFsICYmIChpc0F0Qm90dG9tIHx8ICF1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQpKSB7XG4gICAgICBzY3JvbGxUb0JvdHRvbVJhZigpXG4gICAgICBzY3JvbGxUb0JvdHRvbVJhZigpXG4gICAgICBzY3JvbGxUb0JvdHRvbVJhZih7IGRlbGF5TXM6IDEwMCB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gTnVldm9zIGFuc3dlci9xdWVzdGlvbjogc2Nyb2xsIHNpIGVsIHVzdWFyaW8geWEgZXN0YWJhIGFsIGZvbmRvLlxuICAgIGlmIChpc0Fuc3dlck9yUXVlc3Rpb24gJiYgaXNBdEJvdHRvbSkge1xuICAgICAgc2Nyb2xsVG9Cb3R0b21SYWYoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gQ2FzbyBib3JkZTogY2FtYmlvcyBkZSBtZW5zYWplcyBzaW4gc2VyIG51ZXZvIGFuc3dlci91c2VyL2FwcHJvdmFsXG4gICAgLy8gcGVybyBzw60gdW4gbWVuc2FqZSBudWV2byAobm8gZWwgXCJ1c2VyLWluaXRpYWwtbWVzc2FnZVwiKS4gU2Nyb2xsZWEuXG4gICAgaWYgKCFpc0Fuc3dlck9yUXVlc3Rpb24gJiYgIWlzQXBwcm92YWwgJiYgIWhhc0luaXRpYWxNZXNzYWdlICYmIG1lc3NhZ2VzLmxlbmd0aCA+IHByZXZMZW4pIHtcbiAgICAgIHNjcm9sbFRvQm90dG9tUmFmKClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkoKVxuICB9LCBbbWVzc2FnZXMsIGxvYWRpbmdNZXNzYWdlcywgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLCBzY3JvbGxUb0JvdHRvbVJhZiwgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eV0pXG5cbiAgLy8gRXN0YWRvIGluaWNpYWwgZGVsIGJvdMOzbiBzY3JvbGwtdG8tYm90dG9tIGFsIHRlcm1pbmFyIGxvYWRpbmdNZXNzYWdlcy5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWxvYWRpbmdNZXNzYWdlcykge1xuICAgICAgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eSgpXG4gICAgfVxuICB9LCBbbG9hZGluZ01lc3NhZ2VzLCBtZXNzYWdlcy5sZW5ndGgsIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHldKVxuXG4gIC8vIE9idGVuZXIgZWwgw7psdGltbyBtZW5zYWplIGRlbCB1c3VhcmlvIHBhcmEgdmVyaWZpY2FyIHNpIHRpZW5lIGF0dGFjaG1lbnRzXG4gIGNvbnN0IGxhc3RVc2VyTWVzc2FnZSA9IG1lc3NhZ2VzXG4gICAgLmZpbHRlcihtc2cgPT4gbXNnLnJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5VU0VSIHx8IG1zZy51c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpKVxuICAgIC5hdCgtMSlcblxuICBjb25zdCBoYXNBdHRhY2htZW50cyA9XG4gICAgKEFycmF5LmlzQXJyYXkobGFzdFVzZXJNZXNzYWdlPy5hdHRhY2htZW50cykgJiYgbGFzdFVzZXJNZXNzYWdlLmF0dGFjaG1lbnRzLmxlbmd0aCkgfHxcbiAgICAoQXJyYXkuaXNBcnJheShsYXN0VXNlck1lc3NhZ2U/LnNvdXJjZXMpICYmIGxhc3RVc2VyTWVzc2FnZS5zb3VyY2VzLmxlbmd0aClcblxuICBjb25zdCBpc1Njcm9sbE9uUGFyZW50ID0gISFleHBhbmRlZFxuICBjb25zdCBpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQgPSBhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJyAmJiAvKG1haWFrZXJ8bWFya2V0cGxhY2UpL2kudGVzdChhZ2VudD8ubmFtZSB8fCAnJylcblxuICAvLyBBbCBleHBhbmRpci9jb250cmFlciBlbCBtb2RhbCBlbCByZWYgcGFzYSBhIG90cm8gY29udGVuZWRvciAoc2Nyb2xsVG9wIHNlIHJlc2V0ZWEgYSAwKS5cbiAgLy8gUmVzdGF1cmFyIGxhIHBvc2ljacOzbiBkZSBzY3JvbGwgYW50ZXMgZGVsIHBhaW50IHBhcmEgZXZpdGFyIHF1ZSBsYSBjb252ZXJzYWNpw7NuIHNhbHRlIGFycmliYS5cbiAgY29uc3QgZXhwYW5kZWRSZWYgPSB1c2VSZWYoZXhwYW5kZWQpXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGV4cGFuZGVkUmVmLmN1cnJlbnQgIT09IGV4cGFuZGVkICYmIG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNvbnN0IHNhdmVkU2Nyb2xsVG9wID0gbGFzdFNjcm9sbFRvcFJlZi5jdXJyZW50XG4gICAgICBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbFRvcCA9IHNhdmVkU2Nyb2xsVG9wXG4gICAgICBleHBhbmRlZFJlZi5jdXJyZW50ID0gZXhwYW5kZWRcbiAgICB9IGVsc2Uge1xuICAgICAgZXhwYW5kZWRSZWYuY3VycmVudCA9IGV4cGFuZGVkXG4gICAgfVxuICB9LCBbZXhwYW5kZWRdKVxuXG4gIGlmIChsb2FkaW5nTWVzc2FnZXMpIHtcbiAgICByZXR1cm4gPExvYWRlciAvPlxuICB9XG5cbiAgY29uc3QgbWVzc2FnZXNDb250ZW50ID0gKFxuICAgIDw+XG4gICAgICB7aXNMb2FkaW5nTW9yZU1lc3NhZ2VzICYmIDxMb2FkaW5nVGV4dCB0ZXh0PXt0KCdjaGF0LmxvYWRpbmdNb3JlJyl9IC8+fVxuICAgICAgPD5cbiAgICAgICAge21lc3NhZ2VzLm1hcCgobWVzc2FnZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCBpc0Fzc2lzdGFudE1lc3NhZ2UgPSBtZXNzYWdlLnJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQgfHwgbWVzc2FnZS51c2VyLmlkID09PSAnYXNzaXN0YW50J1xuICAgICAgICAgIGNvbnN0IGlzTGFzdE1lc3NhZ2UgPSBpbmRleCA9PT0gbWVzc2FnZXMubGVuZ3RoIC0gMVxuICAgICAgICAgIGNvbnN0IGlzU3RyZWFtaW5nID0gaXNBc3Npc3RhbnRNZXNzYWdlICYmIGlzTGFzdE1lc3NhZ2UgJiYgKHdhaXRpbmdSZXNwb25zZSB8fCBpc1dyaXRpbmcpXG5cbiAgICAgICAgICAvLyBObyBmaWx0cmFyIGVsIHBsYWNlaG9sZGVyIGRlbCBtZW5zYWplIGVuIHN0cmVhbWluZzogc3UgdGV4dG8gdml2ZVxuICAgICAgICAgIC8vIGVuIGVsIHN0cmVhbWluZ1N0b3JlIHkgYG1lc3NhZ2UubWVzc2FnZWAgZXMgJycgaGFzdGEgZWwgY29tcGxldGUuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWlzU3RyZWFtaW5nICYmXG4gICAgICAgICAgICAhKG1lc3NhZ2UuYXR0YWNobWVudHM/Lmxlbmd0aCB8fCBtZXNzYWdlLnNvdXJjZXM/Lmxlbmd0aCkgJiZcbiAgICAgICAgICAgICFtZXNzYWdlLm1lc3NhZ2UgJiZcbiAgICAgICAgICAgICFtZXNzYWdlLnByb2plY3Q/Lm5hbWUgJiZcbiAgICAgICAgICAgICFtZXNzYWdlLmFwcHJvdmFsXG4gICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIG51bGxcblxuICAgICAgICAgIGNvbnN0IG1lc3NhZ2VGZWVkYmFjayA9XG4gICAgICAgICAgICBtZXNzYWdlPy53YXNIZWxwZnVsID09PSB1bmRlZmluZWQgfHwgbWVzc2FnZS53YXNIZWxwZnVsID09PSBudWxsXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG1lc3NhZ2Uud2FzSGVscGZ1bFxuICAgICAgICAgICAgICAgID8gRmVlZGJhY2suVEhVTUJTX1VQXG4gICAgICAgICAgICAgICAgOiBGZWVkYmFjay5USFVNQlNfRE9XTlxuXG4gICAgICAgICAgLy8gS2V5IGVzdGFibGU6IHNvbG8gbWVzc2FnZS5pZCBwYXJhIGV2aXRhciByZW1vdW50IGR1cmFudGUgc3RyZWFtaW5nIChtZXNzYWdlLmRhdGUgcHVlZGUgY2FtYmlhcilcbiAgICAgICAgICBjb25zdCBtZXNzYWdlS2V5ID0gbWVzc2FnZS5pZCA/PyBgbXNnLSR7aW5kZXh9YFxuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxNZXNzYWdlSXRlbVxuICAgICAgICAgICAgICB7Li4ubWVzc2FnZX1cbiAgICAgICAgICAgICAga2V5PXttZXNzYWdlS2V5fVxuICAgICAgICAgICAgICBhdXRoVXNlcj17YXV0aFVzZXJ9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbj17aGFuZGxlU2VsZWN0T3B0aW9ufVxuICAgICAgICAgICAgICBoYW5kbGVGZWVkYmFjaz17aGFuZGxlRmVlZGJhY2t9XG4gICAgICAgICAgICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb249e2hhbmRsZUFwcHJvdmFsRGVjaXNpb259XG4gICAgICAgICAgICAgIGhhbmRsZVN1Z2dlc3Rpb25DbGljaz17aGFuZGxlU3VnZ2VzdGlvbkNsaWNrfVxuICAgICAgICAgICAgICBoYXNTZWxlY3RlZFN1Z2dlc3Rpb249eyEhc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkc1ttZXNzYWdlLmlkXX1cbiAgICAgICAgICAgICAgZGlzYWJsZUZlZWRiYWNrPXttZXNzYWdlRmVlZGJhY2t9XG4gICAgICAgICAgICAgIGlzU3RyZWFtaW5nPXtpc1N0cmVhbWluZ31cbiAgICAgICAgICAgICAgaXNMYXN0TWVzc2FnZT17aXNMYXN0TWVzc2FnZX1cbiAgICAgICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApXG4gICAgICAgIH0pfVxuICAgICAgPC8+XG4gICAgICB7KHdhaXRpbmdSZXNwb25zZSB8fCBsb2FkaW5nTWVzc2FnZSB8fCBPYmplY3Qua2V5cyhhY3RpdmVMb2FkaW5ncyB8fCB7fSkubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICA8U0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4+XG4gICAgICAgICAge09iamVjdC5rZXlzKGFjdGl2ZUxvYWRpbmdzIHx8IHt9KS5sZW5ndGggPiAwID8gKFxuICAgICAgICAgICAgPExvYWRpbmdUZXh0XG4gICAgICAgICAgICAgIGtleT1cImxvYWRpbmctYWN0aXZlXCJcbiAgICAgICAgICAgICAgdGV4dD17XG4gICAgICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyhhY3RpdmVMb2FkaW5ncyB8fCB7fSkuZmluZChtc2cgPT4gbXNnICE9PSB0KCdjaGF0LnByb2Nlc3NpbmcnKSkgfHwgdCgnY2hhdC5wcm9jZXNzaW5nJylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgKHdhaXRpbmdSZXNwb25zZSB8fCBsb2FkaW5nTWVzc2FnZSkgJiYgKFxuICAgICAgICAgICAgICA8TG9hZGluZ1RleHRcbiAgICAgICAgICAgICAgICB0ZXh0PXtcbiAgICAgICAgICAgICAgICAgIGxvYWRpbmdNZXNzYWdlIHx8XG4gICAgICAgICAgICAgICAgICAoaXNXZWJTZWFyY2hBY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgPyAnQnVzY2FuZG8gZW4gbGEgd2ViJ1xuICAgICAgICAgICAgICAgICAgICA6IGlzRGVlcFNlYXJjaEFjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgID8gdCgnY2hhdC5nZW5lcmF0aW5nRGVlcFNlYXJjaCcpXG4gICAgICAgICAgICAgICAgICAgICAgOiBoYXNBdHRhY2htZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgPyB0KCdjaGF0LmdlbmVyYXRpbmdBdHRhY2htZW50JylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdCgnY2hhdC5nZW5lcmF0aW5nJykpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKVxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4+XG4gICAgICApfVxuICAgIDwvPlxuICApXG5cbiAgcmV0dXJuIChcbiAgICA8U0NNZXNzYWdlc091dGVyICRzY3JvbGxPblBhcmVudD17aXNTY3JvbGxPblBhcmVudH0+XG4gICAgICB7aXNTY3JvbGxPblBhcmVudCA/IChcbiAgICAgICAgPFNDTWVzc2FnZXNTY3JvbGwgcmVmPXttZXNzYWdlc1JlZn0gb25TY3JvbGw9e2hhbmRsZVNjcm9sbFRvQm90dG9tfT5cbiAgICAgICAgICA8U0NNZXNzYWdlc0lubmVyICRzY3JvbGxPblBhcmVudD17aXNTY3JvbGxPblBhcmVudH0gJGlzTWFya2V0cGxhY2VHbG9iYWw9e2lzTWFya2V0cGxhY2VHbG9iYWxBZ2VudH0+XG4gICAgICAgICAgICB7bWVzc2FnZXNDb250ZW50fVxuICAgICAgICAgIDwvU0NNZXNzYWdlc0lubmVyPlxuICAgICAgICA8L1NDTWVzc2FnZXNTY3JvbGw+XG4gICAgICApIDogKFxuICAgICAgICA8U0NNZXNzYWdlc0lubmVyXG4gICAgICAgICAgcmVmPXttZXNzYWdlc1JlZn1cbiAgICAgICAgICBvblNjcm9sbD17aGFuZGxlU2Nyb2xsVG9Cb3R0b219XG4gICAgICAgICAgJHNjcm9sbE9uUGFyZW50PXtmYWxzZX1cbiAgICAgICAgICAkaXNNYXJrZXRwbGFjZUdsb2JhbD17aXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50fVxuICAgICAgICA+XG4gICAgICAgICAge21lc3NhZ2VzQ29udGVudH1cbiAgICAgICAgPC9TQ01lc3NhZ2VzSW5uZXI+XG4gICAgICApfVxuXG4gICAgICB7c2hvd1Njcm9sbFRvQm90dG9tICYmIChcbiAgICAgICAgPFNjcm9sbFRvQm90dG9tQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVDbGlja1Njcm9sbFRvQm90dG9tfT5cbiAgICAgICAgICA8QXJyb3dTbWFsbERvd24gY29sb3I9XCIjNjY2XCIgd2lkdGg9XCIyMHB4XCIgaGVpZ2h0PVwiMjBweFwiIC8+XG4gICAgICAgIDwvU2Nyb2xsVG9Cb3R0b21CdXR0b24+XG4gICAgICApfVxuICAgIDwvU0NNZXNzYWdlc091dGVyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlNZXNzYWdlcyA9IFJlYWN0Lm1lbW8oQ2hhdEFJTWVzc2FnZXNJbm5lcilcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPQSxLQUFLLElBQVFDLElBQUksRUFBYUMsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLGVBQWUsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUFDLGFBQUEsSUFBQUMsY0FBQSxRQUFRLE9BQU87QUFDN0csU0FBU0MsVUFBVSxRQUFRLFlBQVk7QUFDdkMsU0FBU0MsZ0JBQWdCLFFBQVEsa0JBQWtCO0FBQ25ELFNBQVNDLGNBQWMsUUFBUSxpREFBaUQ7QUFFaEYsU0FBU0MsY0FBYyxRQUFRLDJDQUEyQztBQUMxRSxTQUFTQyxXQUFXLFFBQVEscUNBQXFDO0FBQ2pFLFNBQVNDLHNCQUFzQixRQUFRLG9DQUFvQztBQUMzRSxTQUFTQyxtQkFBbUIsUUFBUSxnREFBZ0Q7QUFFcEYsU0FBc0JDLGVBQWUsUUFBa0IscUJBQXFCO0FBRTVFLFNBQWtCQyxPQUFPLFFBQVEsMkJBQTJCO0FBRTVELFNBQVNDLElBQUksUUFBUSxxQkFBcUI7QUFDMUMsU0FBU0MsY0FBYyxRQUFRLDhDQUE4QztBQUM3RSxTQUFTQyxZQUFZLFFBQVEsNkJBQTZCO0FBQzFELFNBQVNDLG1CQUFtQixRQUFRLG9DQUFvQztBQUN4RSxTQUFTQyxtQkFBbUIsUUFBUSxvQ0FBb0M7QUFFeEUsU0FBU0MsV0FBVyxRQUFRLHlCQUF5QjtBQUNyRCxTQUFTQyxNQUFNLFFBQVEsb0JBQW9CO0FBSTNDLFNBQVNDLGVBQWUsRUFBRUMsZ0JBQWdCLEVBQUVDLHNCQUFzQixFQUFFQyx1QkFBdUIsUUFBUSxVQUFVO0FBQzdHLFNBQVNDLGVBQWUsUUFBUSxvQkFBb0I7QUFDcEQsU0FDRUMsbUJBQW1CLEVBQ25CQyxvQkFBb0IsRUFDcEJDLGVBQWUsRUFDZkMsZ0JBQWdCLEVBQ2hCQyxlQUFlLEVBQ2ZDLHVCQUF1QixFQUN2QkMsYUFBYSxFQUNiQyxZQUFZLEVBQ1pDLHdCQUF3QixFQUN4QkMsZUFBZSxFQUNmQyxpQkFBaUIsRUFDakJDLFVBQVUsRUFDVkMsb0JBQW9CLEVBQ3BCQyxrQkFBa0IsRUFDbEJDLGdCQUFnQixFQUNoQkMsdUJBQXVCLFFBQ2xCLGFBQWE7QUFDcEIsU0FBU0MsUUFBUSxRQUFRLG9DQUFvQztBQUM3RCxTQUFTQyxnQkFBZ0IsUUFBUSxpQ0FBaUM7QUFHbEUsU0FBU0MsUUFBUSxRQUFRLG1CQUFtQjtBQUM1QyxTQUFTQyxzQkFBc0IsUUFBUSw2QkFBNkI7QUFDcEUsU0FBU0MsaUJBQWlCLFFBQVEscUJBQXFCO0FBQ3ZELFNBQVNDLHdCQUF3QixRQUFRLDRCQUE0QjtBQUNyRSxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSx5QkFBeUI7QUFDMUQsU0FBU0MsbUJBQW1CLFFBQVEsbUNBQW1DO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBLEVBQUFDLElBQUEsSUFBQUMsS0FBQSxFQUFBQyxRQUFBLElBQUFDLFNBQUE7QUFFdkUsSUFBTUMsSUFBSSxHQUFHbkQsZ0JBQWdCLENBQUM7RUFBRW9ELE1BQU0sRUFBRSxDQUFDLGNBQWMsRUFBRSxjQUFjO0FBQUUsQ0FBQyxDQUFDO0FBRTNFLElBQU1DLG9CQUF3QixHQUFHLFNBQTNCQSxvQkFBd0JBLENBQUEsRUFBUztFQUNyQyxJQUFBQyxpQkFBQSxHQUFrQmpCLGdCQUFnQixDQUFDLENBQUM7SUFBNUJrQixLQUFLLEdBQUFELGlCQUFBLENBQUxDLEtBQUs7RUFDYixvQkFDRVQsSUFBQSxDQUFDaEIsaUJBQWlCO0lBQUEwQixRQUFBLEVBQ2YsQ0FBQUQsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVFLElBQUksTUFBSyxPQUFPLGdCQUFHWCxJQUFBLENBQUNSLFFBQVE7TUFBQ29CLEtBQUssRUFBRSxFQUFHO01BQUNDLE1BQU0sRUFBRTtJQUFHLENBQUUsQ0FBQyxHQUFHSixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRUs7RUFBSyxDQUM1RCxDQUFDO0FBRXhCLENBQUM7QUFFRCxJQUFNQyxlQUFlLGdCQUFHdEUsSUFBSSxDQUFDOEQsb0JBQW9CLENBQUM7QUFvRGxELElBQU1TLGNBQXVDLEdBQUcsU0FBMUNBLGNBQXVDQSxDQUFBQyxJQUFBLEVBQThDO0VBQUEsSUFBeENDLGFBQWEsR0FBQUQsSUFBQSxDQUFiQyxhQUFhO0lBQUVSLFFBQVEsR0FBQU8sSUFBQSxDQUFSUCxRQUFRO0lBQUtTLEtBQUssR0FBQUMsd0JBQUEsQ0FBQUgsSUFBQSxFQUFBSSxTQUFBO0VBQ2xGLElBQU1DLGdCQUFnQixHQUFHSixhQUFhLEdBQUdqRCxlQUFlLEdBQUdDLGdCQUFnQjtFQUMzRSxvQkFBTzhCLElBQUEsQ0FBQ3NCLGdCQUFnQixFQUFBQyxhQUFBLENBQUFBLGFBQUEsS0FBS0osS0FBSztJQUFBVCxRQUFBLEVBQUdBO0VBQVEsRUFBbUIsQ0FBQztBQUNuRSxDQUFDO0FBRUQsSUFBTWMscUJBQXFELEdBQUcsU0FBeERBLHFCQUFxREEsQ0FBQUMsS0FBQSxFQUFvQztFQUFBLElBQTlCUCxhQUFhLEdBQUFPLEtBQUEsQ0FBYlAsYUFBYTtJQUFLQyxLQUFLLEdBQUFDLHdCQUFBLENBQUFLLEtBQUEsRUFBQUMsVUFBQTtFQUN0RixJQUFNQyx1QkFBdUIsR0FBR1QsYUFBYSxHQUFHL0Msc0JBQXNCLEdBQUdDLHVCQUF1QjtFQUNoRyxvQkFBTzRCLElBQUEsQ0FBQzJCLHVCQUF1QixFQUFBSixhQUFBLEtBQUtKLEtBQUssQ0FBRyxDQUFDO0FBQy9DLENBQUM7QUFFRCxTQUFTUyxjQUFjQSxDQUFBQyxLQUFBLEVBTXBCO0VBQUEsSUFMREMsT0FBTyxHQUFBRCxLQUFBLENBQVBDLE9BQU87SUFDUEMsa0JBQWtCLEdBQUFGLEtBQUEsQ0FBbEJFLGtCQUFrQjtFQUtsQixJQUFBQyxTQUFBLEdBQTRDbEYsUUFBUSxDQUFpQixJQUFJLENBQUM7SUFBQW1GLFVBQUEsR0FBQUMsY0FBQSxDQUFBRixTQUFBO0lBQW5FRyxjQUFjLEdBQUFGLFVBQUE7SUFBRUcsaUJBQWlCLEdBQUFILFVBQUE7RUFFeEMsSUFBTUksWUFBWSxHQUFHLFNBQWZBLFlBQVlBLENBQUlDLE1BQWUsRUFBSztJQUN4QyxJQUFJSCxjQUFjLEVBQUU7SUFDcEJDLGlCQUFpQixDQUFDRSxNQUFNLENBQUM7SUFDekJQLGtCQUFrQixDQUFDTyxNQUFNLENBQUM7RUFDNUIsQ0FBQztFQUVELG9CQUNFdEMsSUFBQSxDQUFDcEIsYUFBYTtJQUFBOEIsUUFBQSxFQUNYLENBQUNvQixPQUFPLElBQUksRUFBRSxFQUFFUyxHQUFHLENBQUMsVUFBQUQsTUFBTTtNQUFBLG9CQUN6QnRDLElBQUEsQ0FBQ25CLFlBQVk7UUFDWDJELGFBQWEsRUFBRSxDQUFDLENBQUNMLGNBQWU7UUFDaENNLE9BQU8sRUFBRSxDQUFDLENBQUNOLGNBQWMsSUFBSSxDQUFBQSxjQUFjLGFBQWRBLGNBQWMsdUJBQWRBLGNBQWMsQ0FBRU8sRUFBRSxNQUFLSixNQUFNLENBQUNJLEVBQUc7UUFDOURDLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBO1VBQUEsT0FBUU4sWUFBWSxDQUFDQyxNQUFNLENBQUM7UUFBQSxDQUFDO1FBQUE1QixRQUFBLEVBR25DNEIsTUFBTSxDQUFDTTtNQUFJLEdBRlBOLE1BQU0sQ0FBQ0ksRUFHQSxDQUFDO0lBQUEsQ0FDaEI7RUFBQyxDQUNXLENBQUM7QUFFcEI7QUFFQSxJQUFNRyxzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXNCQSxDQUFBLEVBQVM7RUFDbkMsSUFBQUMsVUFBQSxHQUFvQ2hHLFFBQVEsQ0FBZSxJQUFJLENBQUM7SUFBQWlHLFVBQUEsR0FBQWIsY0FBQSxDQUFBWSxVQUFBO0lBQXpERSxVQUFVLEdBQUFELFVBQUE7SUFBRUUsYUFBYSxHQUFBRixVQUFBO0VBQ2hDLElBQUFHLGtCQUFBLEdBQWtCM0QsZ0JBQWdCLENBQUMsQ0FBQztJQUE1QmtCLEtBQUssR0FBQXlDLGtCQUFBLENBQUx6QyxLQUFLO0VBRWI5RCxTQUFTLENBQUMsWUFBTTtJQUNkc0csYUFBYSxDQUFDeEMsS0FBSyxDQUFDO0VBQ3RCLENBQUMsRUFBRSxDQUFDQSxLQUFLLENBQUMsQ0FBQztFQUVYLG9CQUNFUCxLQUFBLENBQUNwQix3QkFBd0I7SUFBQTRCLFFBQUEsZ0JBQ3ZCVixJQUFBLENBQUNlLGVBQWUsSUFBRSxDQUFDLEVBQ2xCLENBQUFpQyxVQUFVLGFBQVZBLFVBQVUsdUJBQVZBLFVBQVUsQ0FBRUosSUFBSSxrQkFDZjVDLElBQUEsQ0FBQ2pCLGVBQWU7TUFBQTJCLFFBQUEsRUFBRSxDQUFBc0MsVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUVyQyxJQUFJLE1BQUssT0FBTyxHQUFHLE1BQU0sR0FBR3FDLFVBQVUsYUFBVkEsVUFBVSx1QkFBVkEsVUFBVSxDQUFFSjtJQUFJLENBQWtCLENBQzdGO0VBQUEsQ0FDdUIsQ0FBQztBQUUvQixDQUFDOztBQUVEO0FBQ0EsSUFBTU8scUJBQXFCLEdBQUcsU0FBeEJBLHFCQUFxQkEsQ0FBSUMsSUFBWSxFQUFhO0VBQ3RELElBQU1DLEtBQUssR0FBR0QsSUFBSSxDQUFDQyxLQUFLLENBQUMsd0JBQXdCLENBQUM7RUFDbEQsT0FBT0EsS0FBSyxJQUFJLGlEQUFpRCxDQUFDQyxJQUFJLENBQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUTtBQUN4RyxDQUFDOztBQUVEO0FBQ0EsSUFBTUUsdUJBQXVCLEdBQUcsU0FBMUJBLHVCQUF1QkEsQ0FBSUMsT0FBZSxFQUFpQjtFQUMvRCxJQUFJLENBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUU7RUFDdkIsSUFBTUMsWUFBWSxHQUFHLElBQUlDLE1BQU0sQ0FBQ2pFLHNCQUFzQixFQUFFLEdBQUcsQ0FBQztFQUM1RCxJQUFNa0UsS0FBaUIsR0FBRyxFQUFFO0VBQzVCLElBQU1DLE9BQU8sR0FBRyxJQUFJQyxHQUFHLENBQVMsQ0FBQztFQUNqQyxJQUFJUixLQUE2QixHQUFHLElBQUk7RUFDeEM7RUFDQSxPQUFPLENBQUNBLEtBQUssR0FBR0ksWUFBWSxDQUFDSyxJQUFJLENBQUNOLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRTtJQUNwRCxJQUFNTyxNQUFNLEdBQUdWLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdkIsSUFBTVcsR0FBRyxHQUFHWCxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLElBQUksQ0FBQ08sT0FBTyxDQUFDSyxHQUFHLENBQUNGLE1BQU0sQ0FBQyxFQUFFO01BQ3hCSCxPQUFPLENBQUNNLEdBQUcsQ0FBQ0gsTUFBTSxDQUFDO01BQ25CLElBQU1JLFVBQVUsR0FBR0gsR0FBRyxDQUFDSSxPQUFPLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDO01BQzdELElBQU1DLGlCQUFpQixHQUFHLElBQUlYLE1BQU0sc0JBQUFZLE1BQUEsQ0FBc0JILFVBQVUsUUFBSyxDQUFDO01BQzFFLElBQU1JLFNBQVMsR0FBR2YsT0FBTyxDQUFDSCxLQUFLLENBQUNnQixpQkFBaUIsQ0FBQztNQUNsRCxJQUFNRyxLQUFLLEdBQUdELFNBQVMsR0FBR0EsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFBRCxNQUFBLENBQWFQLE1BQU0sQ0FBRTtNQUMzREosS0FBSyxDQUFDYyxJQUFJLENBQUM7UUFBRS9CLEVBQUUsRUFBRXFCLE1BQU07UUFBRVMsS0FBSyxFQUFMQSxLQUFLO1FBQUVSLEdBQUcsRUFBSEE7TUFBSSxDQUFDLENBQUM7SUFDeEM7RUFDRjtFQUNBLE9BQU9MLEtBQUs7QUFDZCxDQUFDO0FBRUQsSUFBTWUsWUFBWSxHQUFHLFNBQWZBLFlBQVlBLENBQUlDLElBQVk7RUFBQSxPQUFjcEIsdUJBQXVCLENBQUNvQixJQUFJLENBQUMsQ0FBQ0MsTUFBTSxHQUFHLENBQUM7QUFBQTs7QUFFeEY7QUFDQSxJQUFNQyxRQUFtRSxHQUFHLFNBQXRFQSxRQUFtRUEsQ0FBQUMsS0FBQSxFQUFtQztFQUFBLElBQTdCMUIsSUFBSSxHQUFBMEIsS0FBQSxDQUFKMUIsSUFBSTtJQUFFVyxNQUFNLEdBQUFlLEtBQUEsQ0FBTmYsTUFBTTtJQUFFckQsUUFBUSxHQUFBb0UsS0FBQSxDQUFScEUsUUFBUTtFQUNuRyxJQUFNcUUsVUFBVSxHQUFHNUIscUJBQXFCLENBQUNDLElBQUksQ0FBQztFQUM5QyxJQUFBNEIsYUFBQSxHQUEwQnBILFlBQVksQ0FBQ21HLE1BQU0sRUFBRWdCLFVBQVUsQ0FBQztJQUFsREUsYUFBYSxHQUFBRCxhQUFBLENBQWJDLGFBQWE7RUFDckIsSUFBTUMsUUFBUSxHQUFHRCxhQUFhLENBQUMsQ0FBQztFQUVoQyxJQUFNRSxXQUFXLEdBQUcsU0FBZEEsV0FBV0EsQ0FBSUMsQ0FBc0MsRUFBSztJQUM5RDtJQUNBLElBQUlBLENBQUMsQ0FBQ0MsT0FBTyxJQUFJRCxDQUFDLENBQUNFLE9BQU8sRUFBRTtNQUMxQjtJQUNGO0lBRUFGLENBQUMsQ0FBQ0csY0FBYyxDQUFDLENBQUM7SUFDbEJMLFFBQVEsQ0FBQyxDQUFDO0VBQ1osQ0FBQztFQUVELG9CQUNFbEYsSUFBQSxDQUFDZixVQUFVO0lBQUNtRSxJQUFJLEVBQUVBLElBQUs7SUFBQ1QsT0FBTyxFQUFFd0MsV0FBWTtJQUFBekUsUUFBQSxFQUMxQ0E7RUFBUSxDQUNDLENBQUM7QUFFakIsQ0FBQzs7QUFFRDs7QUFFQSxJQUFNOEUsVUFBK0IsR0FBRyxTQUFsQ0EsVUFBK0JBLENBQUFDLEtBQUEsRUFBb0M7RUFBQSxJQUE5QnJDLElBQUksR0FBQXFDLEtBQUEsQ0FBSnJDLElBQUk7SUFBRTFDLFFBQVEsR0FBQStFLEtBQUEsQ0FBUi9FLFFBQVE7SUFBS2dGLElBQUksR0FBQXRFLHdCQUFBLENBQUFxRSxLQUFBLEVBQUFFLFVBQUE7RUFDaEUsSUFBSSxDQUFDdkMsSUFBSSxJQUFJLE9BQU9BLElBQUksS0FBSyxRQUFRLEVBQUU7SUFDckMsb0JBQ0VwRCxJQUFBLE1BQUF1QixhQUFBLENBQUFBLGFBQUE7TUFBRzZCLElBQUksRUFBRUE7SUFBSyxHQUFLc0MsSUFBSTtNQUFBaEYsUUFBQSxFQUNwQkE7SUFBUSxFQUNSLENBQUM7RUFFUjtFQUNBLElBQU1rRixTQUFTLEdBQUd4QyxJQUFJLENBQUNDLEtBQUssQ0FBQyxJQUFJSyxNQUFNLENBQUNqRSxzQkFBc0IsQ0FBQyxDQUFDO0VBQ2hFLElBQUltRyxTQUFTLEVBQUU7SUFDYixJQUFNN0IsTUFBTSxHQUFHNkIsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUMzQixvQkFDRTVGLElBQUEsQ0FBQzZFLFFBQVE7TUFBQ3pCLElBQUksRUFBRUEsSUFBSztNQUFDVyxNQUFNLEVBQUVBLE1BQU87TUFBQXJELFFBQUEsRUFDbENBO0lBQVEsQ0FDRCxDQUFDO0VBRWY7RUFDQSxvQkFDRVYsSUFBQSxNQUFBdUIsYUFBQSxDQUFBQSxhQUFBO0lBQUc2QixJQUFJLEVBQUVBO0VBQUssR0FBS3NDLElBQUk7SUFBQWhGLFFBQUEsRUFDcEJBO0VBQVEsRUFDUixDQUFDO0FBRVIsQ0FBQzs7QUFFRDtBQUNBLElBQU1tRixvQkFBb0IsZ0JBQUdwSixJQUFJLENBQy9CLFVBQUMwRSxLQWlCQSxFQUFLO0VBQUEsSUFBQTJFLGdCQUFBLEVBQUFDLHFCQUFBO0VBQ0o7RUFDQTtFQUNBO0VBQ0EsSUFBTUMsYUFBYSxHQUFHbEksbUJBQW1CLENBQUNxRCxLQUFLLENBQUM4RSxXQUFXLEdBQUc5RSxLQUFLLENBQUMrRSxTQUFTLEdBQUcsSUFBSSxDQUFDO0VBQ3JGLElBQU1DLE9BQU8sR0FBR2hGLEtBQUssQ0FBQzhFLFdBQVcsR0FBR0QsYUFBYSxHQUFHN0UsS0FBSyxDQUFDcUMsT0FBTztFQUNqRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLElBQU00QyxRQUFRLEdBQ1osT0FBT0MsTUFBTSxLQUFLLFdBQVcsR0FDeEJBLE1BQU0sR0FRUCxDQUFDLENBQUM7RUFDUixJQUFNQyxXQUFXLEdBQUd6SSxtQkFBbUIsQ0FBQ3NJLE9BQU8sRUFBQTVFLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQTtJQUM3Q2dGLE9BQU8sRUFBRSxDQUFDLENBQUNwRixLQUFLLENBQUM4RSxXQUFXO0lBQzVCTyxnQkFBZ0IsRUFBRSxFQUFFO0lBQ3BCQyxrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCQyxLQUFLLEVBQUUsQ0FBQyxDQUFDTixRQUFRLENBQUNPLFdBQVc7SUFDN0JDLFVBQVUsa0JBQUF0QyxNQUFBLEVBQUF3QixnQkFBQSxHQUFrQjNFLEtBQUssQ0FBQytFLFNBQVMsY0FBQUosZ0JBQUEsY0FBQUEsZ0JBQUEsR0FBSSxTQUFTO0VBQUUsR0FDdERNLFFBQVEsQ0FBQ1MsV0FBVyxJQUFJLElBQUksSUFBSTtJQUFFQyxXQUFXLEVBQUVWLFFBQVEsQ0FBQ1M7RUFBWSxDQUFDLEdBQ3JFVCxRQUFRLENBQUNXLFdBQVcsSUFBSSxJQUFJLElBQUk7SUFBRUMsa0JBQWtCLEVBQUVaLFFBQVEsQ0FBQ1c7RUFBWSxDQUFDLEdBQzVFWCxRQUFRLENBQUNhLGNBQWMsSUFBSSxJQUFJLElBQUk7SUFBRUMsY0FBYyxFQUFFZCxRQUFRLENBQUNhO0VBQWUsQ0FBQyxHQUM5RWIsUUFBUSxDQUFDZSxlQUFlLElBQUksSUFBSSxJQUFJO0lBQUVDLGNBQWMsRUFBRWhCLFFBQVEsQ0FBQ2U7RUFBZ0IsQ0FBQyxHQUNoRmYsUUFBUSxDQUFDaUIsY0FBYyxJQUFJLElBQUksSUFBSTtJQUFFQyxRQUFRLEVBQUVsQixRQUFRLENBQUNpQjtFQUFlLENBQUMsQ0FDN0UsQ0FBQztFQUNGLElBQU1FLHlCQUF5QixJQUFBeEIscUJBQUEsR0FBRzVFLEtBQUssQ0FBQ3FHLG1CQUFtQixjQUFBekIscUJBQUEsdUJBQXpCQSxxQkFBQSxDQUEyQjBCLE9BQU87RUFDcEUsSUFBSSxDQUFDbkIsV0FBVyxJQUFJLENBQUNuRixLQUFLLENBQUM4RSxXQUFXLEVBQUUsT0FBTyxJQUFJO0VBQ25ELG9CQUNFL0YsS0FBQSxDQUFBRSxTQUFBO0lBQUFNLFFBQUEsZ0JBQ0VWLElBQUEsQ0FBQzFCLG1CQUFtQjtNQUNsQjRDLGFBQWEsRUFBRUMsS0FBSyxDQUFDRCxhQUFjO01BQ25Dd0csbUJBQW1CLEVBQUV2RyxLQUFLLENBQUN1RyxtQkFBb0I7TUFDL0NDLFNBQVMsRUFBRXhHLEtBQUssQ0FBQ3lHLFdBQVcsSUFBSWxELFlBQVksQ0FBQzRCLFdBQVcsQ0FBQyxHQUFHLGdCQUFnQixHQUFHLEVBQUc7TUFBQTVGLFFBQUEsZUFFbEZWLElBQUEsQ0FBQy9DLFVBQVU7UUFDVDRLLE9BQU8sRUFBRTtVQUFFeEgsSUFBSSxFQUFKQTtRQUFLLENBQUU7UUFDbEJ5SCxVQUFVLEVBQUU7VUFBRUMsQ0FBQyxFQUFFdkM7UUFBVyxDQUFvRDtRQUNoRndDLFVBQVUsRUFBRTtVQUFFekIsT0FBTyxFQUFFO1FBQU0sQ0FBRTtRQUMvQjBCLFdBQVcsRUFBRSxDQUFDLENBQUM5RyxLQUFLLENBQUM4RSxXQUFZO1FBQ2pDaUMsVUFBVSxFQUFFLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBRTtRQUM3Q0MsUUFBUSxFQUFFO1VBQUVDLEtBQUssRUFBRSxLQUFLO1VBQUUvSCxJQUFJLEVBQUU7UUFBTSxDQUFFO1FBQUFLLFFBQUEsRUFFdkM0RjtNQUFXLENBQ0Y7SUFBQyxDQUNNLENBQUMsRUFDckJuRixLQUFLLENBQUN5RyxXQUFXLElBQUksQ0FBQ3pHLEtBQUssQ0FBQ2tILE9BQU8sSUFBSSxDQUFDbEgsS0FBSyxDQUFDdUcsbUJBQW1CLElBQUksQ0FBQ3ZHLEtBQUssQ0FBQ21ILFFBQVEsSUFBSSxDQUFDbkgsS0FBSyxDQUFDOEUsV0FBVyxpQkFDekdqRyxJQUFBLENBQUMzQixlQUFlO01BQ2RrSyxPQUFPLEVBQUVqQyxXQUFZO01BQ3JCa0MsT0FBTyxFQUFFckgsS0FBSyxDQUFDcUgsT0FBUTtNQUN2QkMsY0FBYyxFQUFFdEgsS0FBSyxDQUFDdUgsbUJBQW9CO01BQzFDQyxlQUFlLEVBQUV4SCxLQUFLLENBQUN3SDtJQUFnQixDQUN4QyxDQUNGLEVBQ0F4SCxLQUFLLENBQUN5RyxXQUFXLElBQUksQ0FBQ3pHLEtBQUssQ0FBQ2tILE9BQU8sSUFBSSxDQUFDbEgsS0FBSyxDQUFDdUcsbUJBQW1CLElBQUksQ0FBQ3ZHLEtBQUssQ0FBQ21ILFFBQVEsaUJBQ25GdEksSUFBQSxDQUFDTixpQkFBaUI7TUFDaEJrSixXQUFXLEVBQUV6SCxLQUFLLENBQUN5SCxXQUFXLElBQUksRUFBRztNQUNyQ0Msa0JBQWtCLEVBQUUsU0FBcEJBLGtCQUFrQkEsQ0FBRUMsVUFBVTtRQUFBLE9BQUkzSCxLQUFLLENBQUM0SCxxQkFBcUIsQ0FBQzVILEtBQUssQ0FBQytFLFNBQVMsRUFBRTRDLFVBQVUsQ0FBQztNQUFBLENBQUM7TUFDM0ZFLFFBQVEsRUFBRTdILEtBQUssQ0FBQzhILG1CQUFvQjtNQUNwQ0MsTUFBTSxFQUFFLENBQUMsQ0FBQy9ILEtBQUssQ0FBQzhFLFdBQVcsSUFBSSxDQUFDOUUsS0FBSyxDQUFDZ0ksYUFBYSxJQUFJLENBQUMsQ0FBQ2hJLEtBQUssQ0FBQzhIO0lBQW9CLENBQ3BGLENBQ0YsRUFDQTlILEtBQUssQ0FBQ3lHLFdBQVcsSUFDaEIsQ0FBQ3pHLEtBQUssQ0FBQ2tILE9BQU8sSUFDZCxDQUFDbEgsS0FBSyxDQUFDdUcsbUJBQW1CLElBQzFCLENBQUN2RyxLQUFLLENBQUNtSCxRQUFRLElBQ2YsQ0FBQyxDQUFDZix5QkFBeUIsaUJBQ3pCdkgsSUFBQSxDQUFDTCx3QkFBd0I7TUFDdkI4SCxPQUFPLEVBQUVGLHlCQUEwQjtNQUNuQ3lCLFFBQVEsRUFBRTdILEtBQUssQ0FBQzhILG1CQUFvQjtNQUNwQ0MsTUFBTSxFQUFFLENBQUMsQ0FBQy9ILEtBQUssQ0FBQzhFLFdBQVcsSUFBSSxDQUFDOUUsS0FBSyxDQUFDZ0ksYUFBYSxJQUFJLENBQUMsQ0FBQ2hJLEtBQUssQ0FBQzhIO0lBQW9CLENBQ3BGLENBQ0Y7RUFBQSxDQUNILENBQUM7QUFFUCxDQUNGLENBQUM7QUFFRCxJQUFNRyxXQUFXLGdCQUFHM00sSUFBSSxDQUFDLFVBQUMwRSxLQUF1QixFQUFLO0VBQUEsSUFBQWtJLHFCQUFBO0VBQ3BELElBQ0UzRyxFQUFFLEdBc0JBdkIsS0FBSyxDQXRCUHVCLEVBQUU7SUFDRjRHLElBQUksR0FxQkZuSSxLQUFLLENBckJQbUksSUFBSTtJQUNKOUYsT0FBTyxHQW9CTHJDLEtBQUssQ0FwQlBxQyxPQUFPO0lBQ1B5QyxXQUFXLEdBbUJUOUUsS0FBSyxDQW5CUDhFLFdBQVc7SUFDWG9DLE9BQU8sR0FrQkxsSCxLQUFLLENBbEJQa0gsT0FBTztJQUNQa0IsUUFBUSxHQWlCTnBJLEtBQUssQ0FqQlBvSSxRQUFRO0lBQ1J6SCxPQUFPLEdBZ0JMWCxLQUFLLENBaEJQVyxPQUFPO0lBQ1AwSCxlQUFlLEdBZWJySSxLQUFLLENBZlBxSSxlQUFlO0lBQ2Z6SCxrQkFBa0IsR0FjaEJaLEtBQUssQ0FkUFksa0JBQWtCO0lBQ2xCZ0gscUJBQXFCLEdBYW5CNUgsS0FBSyxDQWJQNEgscUJBQXFCO0lBQ3JCTixjQUFjLEdBWVp0SCxLQUFLLENBWlBzSCxjQUFjO0lBQ2RnQixzQkFBc0IsR0FXcEJ0SSxLQUFLLENBWFBzSSxzQkFBc0I7SUFDdEJkLGVBQWUsR0FVYnhILEtBQUssQ0FWUHdILGVBQWU7SUFDZmUsSUFBSSxHQVNGdkksS0FBSyxDQVRQdUksSUFBSTtJQUNKbEIsT0FBTyxHQVFMckgsS0FBSyxDQVJQcUgsT0FBTztJQUNQbUIsV0FBVyxHQU9UeEksS0FBSyxDQVBQd0ksV0FBVztJQUNYckIsUUFBUSxHQU1ObkgsS0FBSyxDQU5QbUgsUUFBUTtJQUNSc0IsY0FBYyxHQUtaekksS0FBSyxDQUxQeUksY0FBYztJQUNkaEIsV0FBVyxHQUlUekgsS0FBSyxDQUpQeUgsV0FBVztJQUNYcEIsbUJBQW1CLEdBR2pCckcsS0FBSyxDQUhQcUcsbUJBQW1CO0lBQ25CcUMscUJBQXFCLEdBRW5CMUksS0FBSyxDQUZQMEkscUJBQXFCO0lBQ3JCVixhQUFhLEdBQ1hoSSxLQUFLLENBRFBnSSxhQUFhO0VBR2YsSUFBQVcsVUFBQSxHQUFrRGhOLFFBQVEsQ0FBd0IsSUFBSSxDQUFDO0lBQUFpTixVQUFBLEdBQUE3SCxjQUFBLENBQUE0SCxVQUFBO0lBQWhGRSxpQkFBaUIsR0FBQUQsVUFBQTtJQUFFRSxvQkFBb0IsR0FBQUYsVUFBQTtFQUM5QyxJQUFNN0ksYUFBYSxHQUFHd0ksSUFBSSxLQUFLbE0sZUFBZSxDQUFDME0sSUFBSSxJQUFJWixJQUFJLENBQUM1RyxFQUFFLEtBQUs2RyxRQUFRLENBQUM3RyxFQUFFLENBQUN5SCxRQUFRLENBQUMsQ0FBQztFQUN6RixJQUFNdkMsV0FBVyxHQUFHOEIsSUFBSSxLQUFLbE0sZUFBZSxDQUFDNE0sU0FBUyxJQUFJZCxJQUFJLENBQUM1RyxFQUFFLEtBQUssV0FBVztFQUNqRixJQUFNMkgsa0JBQWtCLEdBQ3RCVixXQUFXLElBQUlBLFdBQVcsQ0FBQy9FLE1BQU0sR0FBRyxDQUFDLEdBQ2pDK0UsV0FBVyxHQUNYLENBQUMvQixXQUFXLElBQUkwQyxLQUFLLENBQUNDLE9BQU8sQ0FBQy9CLE9BQU8sQ0FBQyxHQUNuQ0EsT0FBTyxHQUNSLEVBQUU7RUFFVixJQUFNZ0MscUJBQXFCLEdBQUcsU0FBeEJBLHFCQUFxQkEsQ0FBSUMsVUFBMEIsRUFBSztJQUM1RDtJQUNBLElBQ0VBLFVBQVUsQ0FBQ0MsSUFBSSxZQUFZQyxJQUFJLElBQy9CRixVQUFVLENBQUNHLFlBQVksWUFBWUQsSUFBSSxJQUN2Q0YsVUFBVSxDQUFDSSxhQUFhLElBQ3hCSixVQUFVLENBQUNLLFlBQVksSUFDdkJMLFVBQVUsQ0FBQ00sUUFBUSxFQUNuQjtNQUNBZCxvQkFBb0IsQ0FBQ1EsVUFBVSxDQUFDO0lBQ2xDO0VBQ0YsQ0FBQztFQUVELElBQU1PLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBa0JBLENBQUEsRUFBUztJQUMvQmYsb0JBQW9CLENBQUMsSUFBSSxDQUFDO0VBQzVCLENBQUM7RUFFRCxJQUFNZ0Isd0JBQXdCO0lBQUEsSUFBQUMsS0FBQSxHQUFBQyxpQkFBQSxjQUFBQyxtQkFBQSxDQUFBQyxJQUFBLENBQUcsU0FBQUMsUUFBT2IsVUFBMEI7TUFBQSxJQUFBYyxTQUFBLEVBQUFDLFFBQUEsRUFBQUMsT0FBQSxFQUFBQyxPQUFBLEVBQUFDLGNBQUEsRUFBQUMsSUFBQSxFQUFBQyxFQUFBO01BQUEsT0FBQVQsbUJBQUEsQ0FBQVUsSUFBQSxXQUFBQyxRQUFBO1FBQUEsa0JBQUFBLFFBQUEsQ0FBQUMsSUFBQSxHQUFBRCxRQUFBLENBQUFFLElBQUE7VUFBQTtZQUMxRFYsU0FBUyxHQUFHZCxVQUFVLENBQUM3SCxJQUFJLENBQUNzSixRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFBNUgsTUFBQSxDQUFPbUcsVUFBVSxDQUFDOUosSUFBSSxDQUFFO1lBQ3RFNkssUUFBUSxNQUFBbEgsTUFBQSxDQUFNbUcsVUFBVSxDQUFDN0gsSUFBSSxFQUFBMEIsTUFBQSxDQUFHaUgsU0FBUztZQUN6Q0UsT0FBTyxHQUFHaEIsVUFBVSxDQUFDSyxZQUFZLElBQUlMLFVBQVUsQ0FBQ00sUUFBUSxJQUFJTixVQUFVLENBQUNJLGFBQWE7WUFBQWtCLFFBQUEsQ0FBQUMsSUFBQTtZQUdwRk4sT0FBc0IsR0FBRyxJQUFJO1lBQUEsS0FFN0JELE9BQU87Y0FBQU0sUUFBQSxDQUFBRSxJQUFBO2NBQUE7WUFBQTtZQUFBRixRQUFBLENBQUFFLElBQUE7WUFBQSxPQUNvQm5NLG1CQUFtQixDQUFDMkwsT0FBTyxFQUFFRCxRQUFRLEVBQUVmLFVBQVUsQ0FBQzlKLElBQUksQ0FBQztVQUFBO1lBQTlFZ0wsY0FBYyxHQUFBSSxRQUFBLENBQUFJLElBQUE7WUFDcEJULE9BQU8sR0FBR1UsR0FBRyxDQUFDQyxlQUFlLENBQUNWLGNBQWMsQ0FBQztZQUFBSSxRQUFBLENBQUFFLElBQUE7WUFBQTtVQUFBO1lBQ3hDLElBQUl4QixVQUFVLENBQUNDLElBQUksWUFBWUMsSUFBSSxFQUFFO2NBQzFDZSxPQUFPLEdBQUdVLEdBQUcsQ0FBQ0MsZUFBZSxDQUFDNUIsVUFBVSxDQUFDQyxJQUFJLENBQUM7WUFDaEQ7VUFBQztZQUFBLElBRUlnQixPQUFPO2NBQUFLLFFBQUEsQ0FBQUUsSUFBQTtjQUFBO1lBQUE7WUFBQSxPQUFBRixRQUFBLENBQUFPLE1BQUE7VUFBQTtZQUVOVixJQUFJLEdBQUdXLFFBQVEsQ0FBQ3hQLGFBQWEsQ0FBQyxHQUFHLENBQUM7WUFDeEM2TyxJQUFJLENBQUN4SSxJQUFJLEdBQUdzSSxPQUFPO1lBQ25CRSxJQUFJLENBQUNZLFFBQVEsR0FBR2hCLFFBQVE7WUFDeEJJLElBQUksQ0FBQ2EsS0FBSyxDQUFDQyxPQUFPLEdBQUcsTUFBTTtZQUMzQkgsUUFBUSxDQUFDSSxJQUFJLENBQUNDLFdBQVcsQ0FBQ2hCLElBQUksQ0FBQztZQUMvQkEsSUFBSSxDQUFDaUIsS0FBSyxDQUFDLENBQUM7WUFFWkMsVUFBVSxDQUFDLFlBQU07Y0FDZlAsUUFBUSxDQUFDSSxJQUFJLENBQUNJLFdBQVcsQ0FBQ25CLElBQUksQ0FBQztjQUMvQlEsR0FBRyxDQUFDWSxlQUFlLENBQUN0QixPQUFPLENBQUM7WUFDOUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQztZQUFBSyxRQUFBLENBQUFFLElBQUE7WUFBQTtVQUFBO1lBQUFGLFFBQUEsQ0FBQUMsSUFBQTtZQUFBSCxFQUFBLEdBQUFFLFFBQUE7WUFFUGtCLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLCtCQUErQixFQUFBckIsRUFBTyxDQUFDO1VBQUE7VUFBQTtZQUFBLE9BQUFFLFFBQUEsQ0FBQW9CLElBQUE7UUFBQTtNQUFBLEdBQUE3QixPQUFBO0lBQUEsQ0FFeEQ7SUFBQSxnQkEvQktMLHdCQUF3QkEsQ0FBQW1DLEVBQUE7TUFBQSxPQUFBbEMsS0FBQSxDQUFBbUMsS0FBQSxPQUFBQyxTQUFBO0lBQUE7RUFBQSxHQStCN0I7RUFFRCxJQUFJOUQsZUFBZSxJQUFJMUgsT0FBTyxFQUFFO0lBQzlCLG9CQUNFOUIsSUFBQSxDQUFDZ0IsY0FBYztNQUFVRSxhQUFhLEVBQUVBLGFBQWM7TUFBQyxtQkFBaUJ3QixFQUFHO01BQUM2SyxXQUFXLEVBQUUsS0FBTTtNQUFBN00sUUFBQSxlQUM3RlIsS0FBQSxDQUFDaEIsb0JBQW9CO1FBQUNzTyxZQUFZLEVBQUU1RixXQUFZO1FBQUFsSCxRQUFBLEdBQzdDa0gsV0FBVyxpQkFBSTVILElBQUEsQ0FBQzZDLHNCQUFzQixJQUFFLENBQUMsZUFDMUM3QyxJQUFBLENBQUN3QixxQkFBcUI7VUFDcEJnSSxlQUFlLEVBQUVBLGVBQWdCO1VBQ2pDaEcsT0FBTyxFQUFFQSxPQUFRO1VBQ2pCdEMsYUFBYSxFQUFFQSxhQUFjO1VBQzdCbUgsT0FBTyxFQUFFQSxPQUFRO1VBQ2pCb0YsbUJBQW1CLGVBQUV6TixJQUFBLENBQUM0QixjQUFjO1lBQUNFLE9BQU8sRUFBRUEsT0FBZTtZQUFDQyxrQkFBa0IsRUFBRUE7VUFBbUIsQ0FBRTtRQUFFLENBQzFHLENBQUM7TUFBQSxDQUNrQjtJQUFDLEdBVkpXLEVBV0wsQ0FBQztFQUVyQjtFQUVBLElBQU1nRyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFJZ0YsUUFBa0IsRUFBSztJQUNsRCxJQUFNQyxTQUFTLEdBQUdqTCxFQUFFLENBQ2pCa0wsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUNWQyxNQUFNLENBQUMsVUFBQUMsVUFBVTtNQUFBLE9BQUlBLFVBQVUsS0FBSyxRQUFRO0lBQUEsRUFBQyxDQUM3Q0MsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNadEYsY0FBYyxhQUFkQSxjQUFjLGVBQWRBLGNBQWMsQ0FBR2lGLFFBQVEsRUFBRUMsU0FBUyxDQUFDO0VBQ3ZDLENBQUM7RUFFRCxvQkFDRXpOLEtBQUEsQ0FBQ2hCLG9CQUFvQjtJQUFDc08sWUFBWSxFQUFFNUYsV0FBWTtJQUFBbEgsUUFBQSxHQUM3Q2tILFdBQVcsaUJBQUk1SCxJQUFBLENBQUM2QyxzQkFBc0IsSUFBRSxDQUFDLGVBQzFDM0MsS0FBQSxDQUFDZixrQkFBa0I7TUFBQXVCLFFBQUEsR0FDaEIsQ0FBQyxDQUFDMkosa0JBQWtCLENBQUN6RixNQUFNLGlCQUMxQjVFLElBQUEsQ0FBQ1osZ0JBQWdCO1FBQUNvTyxZQUFZLEVBQUU1RixXQUFZO1FBQUFsSCxRQUFBLEVBQ3pDMkosa0JBQWtCLENBQUM5SCxHQUFHLENBQUMsVUFBQ2tJLFVBQVUsRUFBRXVELEtBQUssRUFBSztVQUFBLElBQUFDLGdCQUFBLEVBQUFDLGdCQUFBO1VBQzdDO1VBQ0EsSUFBTUMsY0FBYyxHQUFHLENBQUExRCxVQUFVLGFBQVZBLFVBQVUsZ0JBQUF3RCxnQkFBQSxHQUFWeEQsVUFBVSxDQUFFOUosSUFBSSxjQUFBc04sZ0JBQUEsdUJBQWhCQSxnQkFBQSxDQUFrQkcsV0FBVyxDQUFDLENBQUMsS0FBSSxFQUFFO1VBQzVELElBQU1DLGNBQWMsR0FBRyxDQUFBNUQsVUFBVSxhQUFWQSxVQUFVLGdCQUFBeUQsZ0JBQUEsR0FBVnpELFVBQVUsQ0FBRTdILElBQUksY0FBQXNMLGdCQUFBLHVCQUFoQkEsZ0JBQUEsQ0FBa0JFLFdBQVcsQ0FBQyxDQUFDLEtBQUksRUFBRTtVQUM1RCxJQUFNRSxXQUFXLEdBQ2ZILGNBQWMsQ0FBQ0ksVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUNuQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQ3JDLFFBQVEsQ0FBQ2lDLGNBQWMsQ0FBQyxJQUNuRixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQ0ssSUFBSSxDQUFDLFVBQUFDLEdBQUc7WUFBQSxPQUN6RUosY0FBYyxDQUFDSyxRQUFRLENBQUNELEdBQUcsQ0FBQztVQUFBLENBQzlCLENBQUM7VUFFSCxJQUFJSCxXQUFXLEVBQUU7WUFDZixvQkFBT3RPLElBQUEsQ0FBQ3pDLG1CQUFtQjtjQUE2Q2tOLFVBQVUsRUFBRUE7WUFBVyxNQUFBbkcsTUFBQSxDQUEzRG1HLFVBQVUsQ0FBQy9ILEVBQUUsT0FBQTRCLE1BQUEsQ0FBSW1HLFVBQVUsQ0FBQzdILElBQUksQ0FBNkIsQ0FBQztVQUNwRztVQUVBLG9CQUNFNUMsSUFBQSxDQUFDNUMsY0FBYztZQUVicU4sVUFBVSxFQUFFQSxVQUFXO1lBQ3ZCa0UsYUFBYSxFQUFFWCxLQUFNO1lBQ3JCWSxVQUFVLEVBQUUsU0FBWkEsVUFBVUEsQ0FBQTtjQUFBLE9BQVEzRCx3QkFBd0IsQ0FBQ1IsVUFBVSxDQUFDO1lBQUEsQ0FBQztZQUN2RDlILE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBO2NBQUEsT0FBUTZILHFCQUFxQixDQUFDQyxVQUFVLENBQUM7WUFBQTtVQUFDLE1BQUFuRyxNQUFBLENBSnpDbUcsVUFBVSxDQUFDL0gsRUFBRSxPQUFBNEIsTUFBQSxDQUFJbUcsVUFBVSxDQUFDN0gsSUFBSSxDQUt6QyxDQUFDO1FBRU4sQ0FBQztNQUFDLENBQ2MsQ0FDbkIsRUFDQTBGLFFBQVEsSUFBSUEsUUFBUSxDQUFDdUcsZUFBZSxpQkFDbkM3TyxJQUFBLENBQUNYLHVCQUF1QjtRQUFBcUIsUUFBQSxlQUN0QlYsSUFBQSxDQUFDM0MsV0FBVztVQUNWeVIsT0FBTyxFQUFFeEcsUUFBUSxDQUFDdUcsZUFBZ0I7VUFDbENFLE1BQU0sRUFBRW5GLGNBQWU7VUFDdkJvRixTQUFTLEVBQUUsU0FBWEEsU0FBU0EsQ0FBRUMsU0FBUztZQUFBLE9BQUl4RixzQkFBc0IsQ0FBQ3dGLFNBQVMsRUFBRSxTQUFTLENBQUM7VUFBQSxDQUFDO1VBQ3JFQyxRQUFRLEVBQUUsU0FBVkEsUUFBUUEsQ0FBRUQsU0FBUztZQUFBLE9BQUl4RixzQkFBc0IsQ0FBQ3dGLFNBQVMsRUFBRSxRQUFRLENBQUM7VUFBQSxDQUFDO1VBQ25FRSxnQkFBZ0IsRUFBRSxFQUFBOUYscUJBQUEsR0FBQWxJLEtBQUssQ0FBQ2lPLGVBQWUsY0FBQS9GLHFCQUFBLHVCQUFyQkEscUJBQUEsQ0FBdUJnRyxVQUFVLE1BQUssSUFBSztVQUM3REMsVUFBVSxFQUFFbk8sS0FBSyxDQUFDb08sUUFBUztVQUMzQkMsY0FBYyxFQUFFbEgsUUFBUSxDQUFDbUgsa0JBQW1CO1VBQzVDQyxjQUFjLEVBQUVwSCxRQUFRLENBQUNxSCxlQUFnQjtVQUN6Q0Msc0JBQXNCLEVBQUV0SCxRQUFRLENBQUN1SDtRQUF5QixDQUMzRDtNQUFDLENBQ3FCLENBQzFCLEVBQ0EsQ0FBQyxDQUFDLENBQUNyTSxPQUFPLElBQUl5QyxXQUFXLEtBQUssQ0FBQ3FDLFFBQVEsSUFBSSxFQUFFVixXQUFXLElBQUksQ0FBQyxDQUFDeUMsa0JBQWtCLENBQUN6RixNQUFNLENBQUMsaUJBQ3ZGNUUsSUFBQSxDQUFDNkYsb0JBQW9CO1FBQ25CckMsT0FBTyxFQUFFQSxPQUFPLGFBQVBBLE9BQU8sY0FBUEEsT0FBTyxHQUFJLEVBQUc7UUFDdkJ5QyxXQUFXLEVBQUUsQ0FBQyxDQUFDQSxXQUFZO1FBQzNCL0UsYUFBYSxFQUFFQSxhQUFjO1FBQzdCMEcsV0FBVyxFQUFFQSxXQUFZO1FBQ3pCRixtQkFBbUIsRUFBRXZHLEtBQUssQ0FBQ3VHLG1CQUFvQjtRQUMvQ1ksUUFBUSxFQUFFQSxRQUFTO1FBQ25CRCxPQUFPLEVBQUVBLE9BQVE7UUFDakJHLE9BQU8sRUFBRUEsT0FBUTtRQUNqQkksV0FBVyxFQUFFQSxXQUFZO1FBQ3pCcEIsbUJBQW1CLEVBQUVBLG1CQUFvQjtRQUN6Q2tCLG1CQUFtQixFQUFFQSxtQkFBb0I7UUFDekNDLGVBQWUsRUFBRUEsZUFBZSxhQUFmQSxlQUFlLGNBQWZBLGVBQWUsR0FBSSxJQUFLO1FBQ3pDSSxxQkFBcUIsRUFBRUEscUJBQXNCO1FBQzdDRSxtQkFBbUIsRUFBRSxDQUFDLENBQUM5SCxLQUFLLENBQUM4RSxXQUFXLElBQUksQ0FBQyxDQUFDNEQscUJBQXNCO1FBQ3BFM0QsU0FBUyxFQUFFeEQsRUFBRztRQUNkeUcsYUFBYSxFQUFFQTtNQUFjLENBQzlCLENBQ0Y7SUFBQSxDQUNpQixDQUFDLGVBQ3JCbkosSUFBQSxDQUFDMUMsc0JBQXNCO01BQ3JCd1MsTUFBTSxFQUFFLENBQUMsQ0FBQzlGLGlCQUFrQjtNQUM1QitGLE9BQU8sRUFBRS9FLGtCQUFtQjtNQUM1QlAsVUFBVSxFQUFFVDtJQUFrQixDQUMvQixDQUFDO0VBQUEsQ0FDa0IsQ0FBQztBQUUzQixDQUFDLENBQUM7QUFFRixJQUFNZ0csbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFtQkEsQ0FBQUMsS0FBQSxFQVNFO0VBQUEsSUFSekJDLGtCQUFrQixHQUFBRCxLQUFBLENBQWxCQyxrQkFBa0I7SUFDbEJDLGFBQWEsR0FBQUYsS0FBQSxDQUFiRSxhQUFhO0lBQ2JDLE9BQU8sR0FBQUgsS0FBQSxDQUFQRyxPQUFPO0lBQ1BDLGtCQUFrQixHQUFBSixLQUFBLENBQWxCSSxrQkFBa0I7SUFDbEJDLGdCQUFnQixHQUFBTCxLQUFBLENBQWhCSyxnQkFBZ0I7SUFDaEIzRyxXQUFXLEdBQUFzRyxLQUFBLENBQVh0RyxXQUFXO0lBQ1g0RyxNQUFNLEdBQUFOLEtBQUEsQ0FBTk0sTUFBTTtJQUNOaEIsUUFBUSxHQUFBVSxLQUFBLENBQVJWLFFBQVE7RUFFUixJQUFBaUIsS0FBQSxHQUFjOVMsSUFBSSxDQUFDLENBQUM7SUFBWitTLENBQUMsR0FBQUQsS0FBQSxDQUFEQyxDQUFDO0VBQ1QsSUFBQUMsa0JBQUEsR0FBeURuUixnQkFBZ0IsQ0FBQyxDQUFDO0lBQW5Fb1IsaUJBQWlCLEdBQUFELGtCQUFBLENBQWpCQyxpQkFBaUI7SUFBRUMsa0JBQWtCLEdBQUFGLGtCQUFBLENBQWxCRSxrQkFBa0I7SUFBRW5RLEtBQUssR0FBQWlRLGtCQUFBLENBQUxqUSxLQUFLO0VBQ3BELElBQU1vUSxLQUFLLEdBQUdoUixRQUFRLENBQUMsQ0FBQztFQUN4QixJQUFNMEosUUFBUSxHQUFHOUwsT0FBTyxDQUFDLENBQUM7RUFDMUIsSUFBTXFULFdBQVcsR0FBR2pVLE1BQU0sQ0FBaUIsSUFBSSxDQUFDO0VBQ2hELElBQU1rVSxrQkFBa0IsR0FBR2xVLE1BQU0sQ0FBQyxLQUFLLENBQUM7RUFDeEMsSUFBTW1VLGdCQUFnQixHQUFHblUsTUFBTSxDQUFDLEtBQUssQ0FBQztFQUN0QyxJQUFNb1UsZ0JBQWdCLEdBQUdwVSxNQUFNLENBQUMsS0FBSyxDQUFDO0VBQ3RDLElBQU1xVSxrQkFBa0IsR0FBR3JVLE1BQU0sQ0FBQyxFQUFFLENBQUM7RUFDckMsSUFBTXNVLGdCQUFnQixHQUFHdFUsTUFBTSxDQUFDLENBQUMsQ0FBQztFQUNsQyxJQUFNdVUscUJBQXFCLEdBQUd2VSxNQUFNLENBQUMsS0FBSyxDQUFDO0VBQzNDLElBQU13VSxZQUFZLEdBQUd4VSxNQUFNLENBQWdCLElBQUksQ0FBQztFQUNoRCxJQUFBeVUsVUFBQSxHQUFvRHhVLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQXlVLFVBQUEsR0FBQXJQLGNBQUEsQ0FBQW9QLFVBQUE7SUFBNURFLGtCQUFrQixHQUFBRCxVQUFBO0lBQUVFLHFCQUFxQixHQUFBRixVQUFBO0VBQ2hELElBQUFHLFVBQUEsR0FBd0U1VSxRQUFRLENBQTBCLENBQUMsQ0FBQyxDQUFDO0lBQUE2VSxVQUFBLEdBQUF6UCxjQUFBLENBQUF3UCxVQUFBO0lBQXRHRSw0QkFBNEIsR0FBQUQsVUFBQTtJQUFFRSwrQkFBK0IsR0FBQUYsVUFBQTtFQUVwRSxJQUFBRyxlQUFBLEdBZUluVSxjQUFjLENBQUM7TUFDakJvVSxNQUFNLEVBQUU1QixhQUFhLElBQUk2QixTQUFTO01BQ2xDOUIsa0JBQWtCLEVBQWxCQSxrQkFBa0I7TUFDbEJFLE9BQU8sRUFBUEEsT0FBTztNQUNQekcsV0FBVyxFQUFYQSxXQUFXO01BQ1g0RyxNQUFNLEVBQU5BO0lBQ0YsQ0FBQyxDQUFDO0lBcEJBMEIsUUFBUSxHQUFBSCxlQUFBLENBQVJHLFFBQVE7SUFDUkMsZUFBZSxHQUFBSixlQUFBLENBQWZJLGVBQWU7SUFDZkMscUJBQXFCLEdBQUFMLGVBQUEsQ0FBckJLLHFCQUFxQjtJQUNyQkMsZUFBZSxHQUFBTixlQUFBLENBQWZNLGVBQWU7SUFDZkMsU0FBUyxHQUFBUCxlQUFBLENBQVRPLFNBQVM7SUFDVEMsY0FBYyxHQUFBUixlQUFBLENBQWRRLGNBQWM7SUFDZEMsY0FBYyxHQUFBVCxlQUFBLENBQWRTLGNBQWM7SUFDZEMsV0FBVyxHQUFBVixlQUFBLENBQVhVLFdBQVc7SUFDWEMsYUFBYSxHQUFBWCxlQUFBLENBQWJXLGFBQWE7SUFDYmhLLGNBQWMsR0FBQXFKLGVBQUEsQ0FBZHJKLGNBQWM7SUFDZGdCLHNCQUFzQixHQUFBcUksZUFBQSxDQUF0QnJJLHNCQUFzQjtJQUN0QmlKLGNBQWMsR0FBQVosZUFBQSxDQUFkWSxjQUFjO0lBQ2RDLFlBQVksR0FBQWIsZUFBQSxDQUFaYSxZQUFZO0lBQ1pDLGNBQWMsR0FBQWQsZUFBQSxDQUFkYyxjQUFjO0VBU2hCLElBQU03USxrQkFBa0IsR0FBR3JGLFdBQVcsQ0FDcEMsVUFBQzRGLE1BQWUsRUFBSztJQUNuQm1RLGFBQWEsQ0FBQ25RLE1BQU0sQ0FBQztFQUN2QixDQUFDLEVBQ0QsQ0FBQ21RLGFBQWEsQ0FDaEIsQ0FBQztFQUVELElBQU0xSixxQkFBcUIsR0FBR3JNLFdBQVcsQ0FDdkMsVUFBQ3dKLFNBQWlCLEVBQUU0QyxVQUFrQixFQUFLO0lBQ3pDLElBQUksRUFBQ0EsVUFBVSxhQUFWQSxVQUFVLGVBQVZBLFVBQVUsQ0FBRStKLElBQUksQ0FBQyxDQUFDLEdBQUU7SUFDekIsSUFBSWpCLDRCQUE0QixDQUFDMUwsU0FBUyxDQUFDLEVBQUU7SUFDN0MsSUFBTTRNLHdCQUF3QixHQUFHLENBQUFyUyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRXNTLE1BQU0sTUFBSyxRQUFRLElBQUksd0JBQXdCLENBQUN6UCxJQUFJLENBQUMsQ0FBQTdDLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFbUMsSUFBSSxLQUFJLEVBQUUsQ0FBQztJQUMvR2lPLEtBQUssQ0FBQ2pSLE1BQU0sQ0FBQ29ULHFCQUFxQixFQUFFO01BQ2xDQyxVQUFVLEVBQUVILHdCQUF3QixHQUFHLGFBQWEsR0FBR3JTLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFRTtJQUNoRSxDQUFDLENBQUM7SUFDRmtSLCtCQUErQixDQUFDLFVBQUE3RixJQUFJO01BQUEsT0FBQXpLLGFBQUEsQ0FBQUEsYUFBQSxLQUFVeUssSUFBSSxPQUFBa0gsZUFBQSxLQUFHaE4sU0FBUyxFQUFHLElBQUk7SUFBQSxDQUFHLENBQUM7SUFDekVzTSxXQUFXLENBQUMxSixVQUFVLENBQUM7RUFDekIsQ0FBQyxFQUNELENBQUMwSixXQUFXLEVBQUVaLDRCQUE0QixFQUFFZixLQUFLLEVBQUVwUSxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRXNTLE1BQU0sRUFBRXRTLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFbUMsSUFBSSxFQUFFbkMsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVFLElBQUksQ0FDNUYsQ0FBQzs7RUFFRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsSUFBTXdTLDRCQUE0QixHQUFHelcsV0FBVyxDQUFDLFlBQU07SUFDckQsSUFBTTBXLEVBQUUsR0FBR3RDLFdBQVcsQ0FBQ3VDLE9BQU87SUFDOUIsSUFBSSxDQUFDRCxFQUFFLEVBQUU7SUFDVCxJQUFRRSxTQUFTLEdBQWlDRixFQUFFLENBQTVDRSxTQUFTO01BQUVDLFlBQVksR0FBbUJILEVBQUUsQ0FBakNHLFlBQVk7TUFBRUMsWUFBWSxHQUFLSixFQUFFLENBQW5CSSxZQUFZO0lBQzdDLElBQU1DLGtCQUFrQixHQUFHRixZQUFZLEdBQUdELFNBQVMsR0FBR0UsWUFBWTtJQUNsRSxJQUFNRSxVQUFVLEdBQUdELGtCQUFrQixHQUFHLEVBQUU7SUFDMUMsSUFBSXJDLHFCQUFxQixDQUFDaUMsT0FBTyxLQUFLSyxVQUFVLEVBQUU7TUFDaER0QyxxQkFBcUIsQ0FBQ2lDLE9BQU8sR0FBR0ssVUFBVTtNQUMxQ2pDLHFCQUFxQixDQUFDaUMsVUFBVSxDQUFDO0lBQ25DO0VBQ0YsQ0FBQyxFQUFFLEVBQUUsQ0FBQzs7RUFFTjtBQUNGO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsSUFBTUMsaUJBQWlCLEdBQUdqWCxXQUFXLENBQ25DLFlBQW9FO0lBQUEsSUFBbkVrWCxJQUF5RCxHQUFBdEcsU0FBQSxDQUFBMUksTUFBQSxRQUFBMEksU0FBQSxRQUFBMEUsU0FBQSxHQUFBMUUsU0FBQSxNQUFHLENBQUMsQ0FBQztJQUM3RCxJQUFBdUcscUJBQUEsR0FBcURELElBQUksQ0FBakRFLG1CQUFtQjtNQUFuQkEsbUJBQW1CLEdBQUFELHFCQUFBLGNBQUcsS0FBSyxHQUFBQSxxQkFBQTtNQUFBRSxhQUFBLEdBQWtCSCxJQUFJLENBQXBCSSxPQUFPO01BQVBBLE9BQU8sR0FBQUQsYUFBQSxjQUFHLENBQUMsR0FBQUEsYUFBQTtJQUNoRCxJQUFNRSxHQUFHLEdBQUcsU0FBTkEsR0FBR0EsQ0FBQSxFQUFTO01BQ2hCQyxxQkFBcUIsQ0FBQyxZQUFNO1FBQzFCLElBQU1kLEVBQUUsR0FBR3RDLFdBQVcsQ0FBQ3VDLE9BQU87UUFDOUIsSUFBSSxDQUFDRCxFQUFFLEVBQUU7UUFDVCxJQUFJVSxtQkFBbUIsSUFBSTdDLGdCQUFnQixDQUFDb0MsT0FBTyxFQUFFO1FBQ3JERCxFQUFFLENBQUNFLFNBQVMsR0FBR0YsRUFBRSxDQUFDRyxZQUFZO1FBQzlCSiw0QkFBNEIsQ0FBQyxDQUFDO01BQ2hDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJYSxPQUFPLEdBQUcsQ0FBQyxFQUFFbEgsVUFBVSxDQUFDbUgsR0FBRyxFQUFFRCxPQUFPLENBQUMsTUFDcENDLEdBQUcsQ0FBQyxDQUFDO0VBQ1osQ0FBQyxFQUNELENBQUNkLDRCQUE0QixDQUMvQixDQUFDO0VBRUQsSUFBTWdCLHlCQUF5QixHQUFHelgsV0FBVyxDQUFDLFlBQU07SUFDbEQsSUFBSSxDQUFDb1UsV0FBVyxDQUFDdUMsT0FBTyxFQUFFO0lBQzFCdkMsV0FBVyxDQUFDdUMsT0FBTyxDQUFDZSxRQUFRLENBQUM7TUFDM0JDLEdBQUcsRUFBRXZELFdBQVcsQ0FBQ3VDLE9BQU8sQ0FBQ0UsWUFBWTtNQUNyQ2UsUUFBUSxFQUFFO0lBQ1osQ0FBQyxDQUFDO0lBQ0Y7SUFDQXhILFVBQVUsQ0FBQ3FHLDRCQUE0QixFQUFFLEdBQUcsQ0FBQztFQUMvQyxDQUFDLEVBQUUsQ0FBQ0EsNEJBQTRCLENBQUMsQ0FBQztFQUVsQyxJQUFNb0Isb0JBQW9CLEdBQUc3WCxXQUFXLENBQ3RDLFVBQUMwSSxDQUFnQyxFQUFLO0lBQ3BDLElBQU1vUCxTQUFTLEdBQUdwUCxDQUFDLENBQUNxUCxhQUFhO0lBRWpDLElBQUlwRCxZQUFZLENBQUNnQyxPQUFPLEtBQUssSUFBSSxFQUFFO01BQ2pDcUIsb0JBQW9CLENBQUNyRCxZQUFZLENBQUNnQyxPQUFPLENBQUM7SUFDNUM7SUFFQWhDLFlBQVksQ0FBQ2dDLE9BQU8sR0FBR2EscUJBQXFCLENBQUMsWUFBTTtNQUNqRDdDLFlBQVksQ0FBQ2dDLE9BQU8sR0FBRyxJQUFJO01BQzNCLElBQVFDLFNBQVMsR0FBaUNrQixTQUFTLENBQW5EbEIsU0FBUztRQUFFQyxZQUFZLEdBQW1CaUIsU0FBUyxDQUF4Q2pCLFlBQVk7UUFBRUMsWUFBWSxHQUFLZ0IsU0FBUyxDQUExQmhCLFlBQVk7TUFFN0MsSUFBTW1CLGFBQWEsR0FBR3JCLFNBQVMsR0FBR25DLGdCQUFnQixDQUFDa0MsT0FBTztNQUUxRCxJQUFJc0IsYUFBYSxFQUFFO1FBQ2pCekQsa0JBQWtCLENBQUNtQyxPQUFPLEdBQUcsRUFBRTtNQUNqQztNQUVBLElBQU11QixZQUFZLEdBQUdyQixZQUFZLEdBQUdELFNBQVMsR0FBR0UsWUFBWSxHQUFHdEMsa0JBQWtCLENBQUNtQyxPQUFPO01BRXpGLElBQUl1QixZQUFZLEVBQUU7UUFDaEIxRCxrQkFBa0IsQ0FBQ21DLE9BQU8sR0FBRyxFQUFFO01BQ2pDO01BRUFwQyxnQkFBZ0IsQ0FBQ29DLE9BQU8sR0FBRyxDQUFDdUIsWUFBWTtNQUN4Q3pELGdCQUFnQixDQUFDa0MsT0FBTyxHQUFHQyxTQUFTO01BRXBDSCw0QkFBNEIsQ0FBQyxDQUFDO01BRTlCLElBQUl5QixZQUFZLElBQUl0RSxnQkFBZ0IsRUFBRTtRQUNwQ0EsZ0JBQWdCLENBQUMsQ0FBQztNQUNwQjtNQUVBcUMsWUFBWSxDQUFDNkIsU0FBUyxDQUFDO0lBQ3pCLENBQUMsQ0FBQztFQUNKLENBQUMsRUFDRCxDQUFDbEUsZ0JBQWdCLEVBQUVxQyxZQUFZLEVBQUVRLDRCQUE0QixDQUMvRCxDQUFDOztFQUVEO0VBQ0EsSUFBTTBCLGNBQWMsR0FBR2hZLE1BQU0sQ0FBQzJWLFdBQVcsQ0FBQztFQUMxQyxJQUFNc0MsaUJBQWlCLEdBQUdqWSxNQUFNLENBQUMrVixjQUFjLENBQUM7RUFDaEQsSUFBTW1DLHFCQUFxQixHQUFHbFksTUFBTSxDQUFDd1Qsa0JBQWtCLENBQUM7O0VBRXhEO0VBQ0F3RSxjQUFjLENBQUN4QixPQUFPLEdBQUdiLFdBQVc7RUFDcENzQyxpQkFBaUIsQ0FBQ3pCLE9BQU8sR0FBR1QsY0FBYztFQUMxQ21DLHFCQUFxQixDQUFDMUIsT0FBTyxHQUFHaEQsa0JBQWtCO0VBRWxEMVQsU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJb1kscUJBQXFCLENBQUMxQixPQUFPLEVBQUU7TUFDakMwQixxQkFBcUIsQ0FBQzFCLE9BQU8sQ0FBQ3dCLGNBQWMsQ0FBQ3hCLE9BQU8sRUFBRXlCLGlCQUFpQixDQUFDekIsT0FBTyxFQUFFakIsZUFBZSxFQUFFQyxTQUFTLENBQUM7SUFDOUc7RUFDRixDQUFDLEVBQUUsQ0FBQ0QsZUFBZSxFQUFFQyxTQUFTLENBQUMsQ0FBQztFQUVoQzFWLFNBQVMsQ0FBQyxZQUFNO0lBQ2RxVSxnQkFBZ0IsQ0FBQ3FDLE9BQU8sR0FBR2xCLHFCQUFxQjtFQUNsRCxDQUFDLEVBQUUsQ0FBQ0EscUJBQXFCLENBQUMsQ0FBQzs7RUFFM0I7RUFDQXhWLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSXlWLGVBQWUsRUFBRTtNQUNuQm5CLGdCQUFnQixDQUFDb0MsT0FBTyxHQUFHLEtBQUs7TUFDaENuQyxrQkFBa0IsQ0FBQ21DLE9BQU8sR0FBRyxFQUFFO0lBQ2pDO0VBQ0YsQ0FBQyxFQUFFLENBQUNqQixlQUFlLENBQUMsQ0FBQztFQUVyQnpWLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSSxDQUFDb1Usa0JBQWtCLENBQUNzQyxPQUFPLEVBQUU7TUFDL0J0QyxrQkFBa0IsQ0FBQ3NDLE9BQU8sR0FBRyxJQUFJO01BQ2pDWCxjQUFjLENBQUMsQ0FBQztJQUNsQjtFQUNGLENBQUMsRUFBRSxFQUFFLENBQUM7O0VBRU47RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EvVixTQUFTLENBQUMsWUFBTTtJQUNkLElBQUksQ0FBQ3lWLGVBQWUsSUFBSSxDQUFDQyxTQUFTLEVBQUUsT0FBT0wsU0FBUztJQUNwRCxJQUFJLENBQUNsQixXQUFXLENBQUN1QyxPQUFPLEVBQUUsT0FBT3JCLFNBQVM7SUFFMUMsSUFBSWdELEtBQW9CLEdBQUcsSUFBSTtJQUMvQixJQUFJQyxVQUFVLEdBQUduRSxXQUFXLENBQUN1QyxPQUFPLENBQUNFLFlBQVk7SUFFakQsSUFBTTJCLEtBQUksR0FBRyxTQUFQQSxJQUFJQSxDQUFBLEVBQVM7TUFDakIsSUFBTTlCLEVBQUUsR0FBR3RDLFdBQVcsQ0FBQ3VDLE9BQU87TUFDOUIsSUFBSSxDQUFDRCxFQUFFLEVBQUU7UUFDUDRCLEtBQUssR0FBRyxJQUFJO1FBQ1o7TUFDRjtNQUNBLElBQU1HLGFBQWEsR0FBRy9CLEVBQUUsQ0FBQ0csWUFBWTtNQUNyQyxJQUFJNEIsYUFBYSxLQUFLRixVQUFVLEVBQUU7UUFDaENBLFVBQVUsR0FBR0UsYUFBYTtRQUMxQixJQUFJLENBQUNsRSxnQkFBZ0IsQ0FBQ29DLE9BQU8sRUFBRTtVQUM3QkQsRUFBRSxDQUFDRSxTQUFTLEdBQUc2QixhQUFhO1FBQzlCO1FBQ0FoQyw0QkFBNEIsQ0FBQyxDQUFDO01BQ2hDO01BQ0E2QixLQUFLLEdBQUdkLHFCQUFxQixDQUFDZ0IsS0FBSSxDQUFDO0lBQ3JDLENBQUM7SUFFREYsS0FBSyxHQUFHZCxxQkFBcUIsQ0FBQ2dCLEtBQUksQ0FBQztJQUNuQyxPQUFPLFlBQU07TUFDWCxJQUFJRixLQUFLLElBQUksSUFBSSxFQUFFTixvQkFBb0IsQ0FBQ00sS0FBSyxDQUFDO0lBQ2hELENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQzVDLGVBQWUsRUFBRUMsU0FBUyxFQUFFYyw0QkFBNEIsQ0FBQyxDQUFDOztFQUU5RDtFQUNBeFcsU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJeVYsZUFBZSxJQUFJdEIsV0FBVyxDQUFDdUMsT0FBTyxFQUFFO01BQzFDTSxpQkFBaUIsQ0FBQztRQUFFRyxtQkFBbUIsRUFBRTtNQUFLLENBQUMsQ0FBQztJQUNsRDtFQUNGLENBQUMsRUFBRSxDQUFDMUIsZUFBZSxFQUFFdUIsaUJBQWlCLENBQUMsQ0FBQzs7RUFFeEM7RUFDQTtFQUNBO0VBQ0EsSUFBTXlCLGdCQUFnQixHQUFHdlksTUFBTSxDQUFnQixJQUFJLENBQUM7RUFDcEQsSUFBTXdZLHFCQUFxQixHQUFHeFksTUFBTSxDQUFTLENBQUMsQ0FBQztFQUMvQ0YsU0FBUyxDQUFDLFlBQU07SUFBQSxJQUFBMlksZUFBQTtJQUNkLElBQUksQ0FBQ3hFLFdBQVcsQ0FBQ3VDLE9BQU8sSUFBSW5CLGVBQWUsSUFBSUMscUJBQXFCLElBQUluQixnQkFBZ0IsQ0FBQ3FDLE9BQU8sRUFBRTtNQUNoRztJQUNGO0lBRUEsSUFBTWtDLFdBQVcsR0FBR3RELFFBQVEsQ0FBQ0EsUUFBUSxDQUFDck4sTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNqRCxJQUFNNFEsTUFBTSxJQUFBRixlQUFBLEdBQUdDLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFN1MsRUFBRSxjQUFBNFMsZUFBQSxjQUFBQSxlQUFBLEdBQUksSUFBSTtJQUN0QyxJQUFNRyxNQUFNLEdBQUdMLGdCQUFnQixDQUFDL0IsT0FBTztJQUN2QyxJQUFNcUMsT0FBTyxHQUFHTCxxQkFBcUIsQ0FBQ2hDLE9BQU87SUFDN0MrQixnQkFBZ0IsQ0FBQy9CLE9BQU8sR0FBR21DLE1BQU07SUFDakNILHFCQUFxQixDQUFDaEMsT0FBTyxHQUFHcEIsUUFBUSxDQUFDck4sTUFBTTtJQUUvQyxJQUFNK1EsWUFBWSxHQUFHSCxNQUFNLEtBQUtDLE1BQU0sSUFBSXhELFFBQVEsQ0FBQ3JOLE1BQU0sS0FBSzhRLE9BQU87SUFDckUsSUFBSSxDQUFDQyxZQUFZLEVBQUU7TUFDakJ4Qyw0QkFBNEIsQ0FBQyxDQUFDO01BQzlCO0lBQ0Y7SUFFQSxJQUFNcUIsU0FBUyxHQUFHMUQsV0FBVyxDQUFDdUMsT0FBTztJQUNyQyxJQUFNdUMsVUFBVSxHQUFHcEIsU0FBUyxDQUFDakIsWUFBWSxHQUFHaUIsU0FBUyxDQUFDbEIsU0FBUyxJQUFJa0IsU0FBUyxDQUFDaEIsWUFBWSxHQUFHLEdBQUc7SUFDL0YsSUFBTXFDLGlCQUFpQixHQUFHNUQsUUFBUSxDQUFDekQsSUFBSSxDQUFDLFVBQUFzSCxHQUFHO01BQUEsT0FBSUEsR0FBRyxDQUFDcFQsRUFBRSxLQUFLLHNCQUFzQjtJQUFBLEVBQUM7SUFDakYsSUFBTXFULFVBQVUsR0FBRyxDQUFDLENBQUNSLFdBQVcsS0FBS0EsV0FBVyxDQUFDN1MsRUFBRSxDQUFDNkwsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQ2dILFdBQVcsQ0FBQ2pOLFFBQVEsQ0FBQztJQUN0RyxJQUFNME4sa0JBQWtCLEdBQ3RCLENBQUMsQ0FBQ1QsV0FBVyxLQUFLQSxXQUFXLENBQUM3UyxFQUFFLENBQUM2TCxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUlnSCxXQUFXLENBQUM3UyxFQUFFLENBQUM2TCxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7O0lBRW5HO0lBQ0E7SUFDQTtJQUNBLElBQUl3SCxVQUFVLEtBQUtILFVBQVUsSUFBSSxDQUFDM0UsZ0JBQWdCLENBQUNvQyxPQUFPLENBQUMsRUFBRTtNQUMzRE0saUJBQWlCLENBQUMsQ0FBQztNQUNuQkEsaUJBQWlCLENBQUMsQ0FBQztNQUNuQkEsaUJBQWlCLENBQUM7UUFBRUssT0FBTyxFQUFFO01BQUksQ0FBQyxDQUFDO01BQ25DO0lBQ0Y7O0lBRUE7SUFDQSxJQUFJZ0Msa0JBQWtCLElBQUlKLFVBQVUsRUFBRTtNQUNwQ2pDLGlCQUFpQixDQUFDLENBQUM7TUFDbkI7SUFDRjs7SUFFQTtJQUNBO0lBQ0EsSUFBSSxDQUFDcUMsa0JBQWtCLElBQUksQ0FBQ0QsVUFBVSxJQUFJLENBQUNGLGlCQUFpQixJQUFJNUQsUUFBUSxDQUFDck4sTUFBTSxHQUFHOFEsT0FBTyxFQUFFO01BQ3pGL0IsaUJBQWlCLENBQUMsQ0FBQztNQUNuQjtJQUNGO0lBRUFSLDRCQUE0QixDQUFDLENBQUM7RUFDaEMsQ0FBQyxFQUFFLENBQUNsQixRQUFRLEVBQUVDLGVBQWUsRUFBRUMscUJBQXFCLEVBQUV3QixpQkFBaUIsRUFBRVIsNEJBQTRCLENBQUMsQ0FBQzs7RUFFdkc7RUFDQXhXLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSSxDQUFDdVYsZUFBZSxFQUFFO01BQ3BCaUIsNEJBQTRCLENBQUMsQ0FBQztJQUNoQztFQUNGLENBQUMsRUFBRSxDQUFDakIsZUFBZSxFQUFFRCxRQUFRLENBQUNyTixNQUFNLEVBQUV1Tyw0QkFBNEIsQ0FBQyxDQUFDOztFQUVwRTtFQUNBLElBQU04QyxlQUFlLEdBQUdoRSxRQUFRLENBQzdCcEUsTUFBTSxDQUFDLFVBQUFpSSxHQUFHO0lBQUEsT0FBSUEsR0FBRyxDQUFDcE0sSUFBSSxLQUFLbE0sZUFBZSxDQUFDME0sSUFBSSxJQUFJNEwsR0FBRyxDQUFDeE0sSUFBSSxDQUFDNUcsRUFBRSxLQUFLNkcsUUFBUSxDQUFDN0csRUFBRSxDQUFDeUgsUUFBUSxDQUFDLENBQUM7RUFBQSxFQUFDLENBQzFGK0wsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBRVQsSUFBTUMsY0FBYyxHQUNqQjdMLEtBQUssQ0FBQ0MsT0FBTyxDQUFDMEwsZUFBZSxhQUFmQSxlQUFlLHVCQUFmQSxlQUFlLENBQUV0TSxXQUFXLENBQUMsSUFBSXNNLGVBQWUsQ0FBQ3RNLFdBQVcsQ0FBQy9FLE1BQU0sSUFDakYwRixLQUFLLENBQUNDLE9BQU8sQ0FBQzBMLGVBQWUsYUFBZkEsZUFBZSx1QkFBZkEsZUFBZSxDQUFFek4sT0FBTyxDQUFDLElBQUl5TixlQUFlLENBQUN6TixPQUFPLENBQUM1RCxNQUFPO0VBRTdFLElBQU13UixnQkFBZ0IsR0FBRyxDQUFDLENBQUM3RyxRQUFRO0VBQ25DLElBQU11RCx3QkFBd0IsR0FBRyxDQUFBclMsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVzUyxNQUFNLE1BQUssUUFBUSxJQUFJLHdCQUF3QixDQUFDelAsSUFBSSxDQUFDLENBQUE3QyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRW1DLElBQUksS0FBSSxFQUFFLENBQUM7O0VBRS9HO0VBQ0E7RUFDQSxJQUFNeVQsV0FBVyxHQUFHeFosTUFBTSxDQUFDMFMsUUFBUSxDQUFDO0VBQ3BDM1MsZUFBZSxDQUFDLFlBQU07SUFDcEIsSUFBSXlaLFdBQVcsQ0FBQ2hELE9BQU8sS0FBSzlELFFBQVEsSUFBSXVCLFdBQVcsQ0FBQ3VDLE9BQU8sRUFBRTtNQUMzRCxJQUFNaUQsY0FBYyxHQUFHbkYsZ0JBQWdCLENBQUNrQyxPQUFPO01BQy9DdkMsV0FBVyxDQUFDdUMsT0FBTyxDQUFDQyxTQUFTLEdBQUdnRCxjQUFjO01BQzlDRCxXQUFXLENBQUNoRCxPQUFPLEdBQUc5RCxRQUFRO0lBQ2hDLENBQUMsTUFBTTtNQUNMOEcsV0FBVyxDQUFDaEQsT0FBTyxHQUFHOUQsUUFBUTtJQUNoQztFQUNGLENBQUMsRUFBRSxDQUFDQSxRQUFRLENBQUMsQ0FBQztFQUVkLElBQUkyQyxlQUFlLEVBQUU7SUFDbkIsb0JBQU9sUyxJQUFBLENBQUNoQyxNQUFNLElBQUUsQ0FBQztFQUNuQjtFQUVBLElBQU11WSxlQUFlLGdCQUNuQnJXLEtBQUEsQ0FBQUUsU0FBQTtJQUFBTSxRQUFBLEdBQ0d5UixxQkFBcUIsaUJBQUluUyxJQUFBLENBQUNqQyxXQUFXO01BQUM0RyxJQUFJLEVBQUU4TCxDQUFDLENBQUMsa0JBQWtCO0lBQUUsQ0FBRSxDQUFDLGVBQ3RFelEsSUFBQSxDQUFBSSxTQUFBO01BQUFNLFFBQUEsRUFDR3VSLFFBQVEsQ0FBQzFQLEdBQUcsQ0FBQyxVQUFDaUIsT0FBTyxFQUFFd0ssS0FBSyxFQUFLO1FBQUEsSUFBQXdJLG9CQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBLEVBQUFDLFdBQUE7UUFDaEMsSUFBTUMsa0JBQWtCLEdBQUdwVCxPQUFPLENBQUNrRyxJQUFJLEtBQUtsTSxlQUFlLENBQUM0TSxTQUFTLElBQUk1RyxPQUFPLENBQUM4RixJQUFJLENBQUM1RyxFQUFFLEtBQUssV0FBVztRQUN4RyxJQUFNeUcsYUFBYSxHQUFHNkUsS0FBSyxLQUFLaUUsUUFBUSxDQUFDck4sTUFBTSxHQUFHLENBQUM7UUFDbkQsSUFBTXFCLFdBQVcsR0FBRzJRLGtCQUFrQixJQUFJek4sYUFBYSxLQUFLaUosZUFBZSxJQUFJQyxTQUFTLENBQUM7O1FBRXpGO1FBQ0E7UUFDQSxJQUNFLENBQUNwTSxXQUFXLElBQ1osRUFBRSxDQUFBdVEsb0JBQUEsR0FBQWhULE9BQU8sQ0FBQ21HLFdBQVcsY0FBQTZNLG9CQUFBLGVBQW5CQSxvQkFBQSxDQUFxQjVSLE1BQU0sS0FBQTZSLGdCQUFBLEdBQUlqVCxPQUFPLENBQUNnRixPQUFPLGNBQUFpTyxnQkFBQSxlQUFmQSxnQkFBQSxDQUFpQjdSLE1BQU0sQ0FBQyxJQUN6RCxDQUFDcEIsT0FBTyxDQUFDQSxPQUFPLElBQ2hCLEdBQUFrVCxnQkFBQSxHQUFDbFQsT0FBTyxDQUFDcVQsT0FBTyxjQUFBSCxnQkFBQSxlQUFmQSxnQkFBQSxDQUFpQjlULElBQUksS0FDdEIsQ0FBQ1ksT0FBTyxDQUFDOEUsUUFBUSxFQUVqQixPQUFPLElBQUk7UUFFYixJQUFNd08sZUFBZSxHQUNuQixDQUFBdFQsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUV1VCxVQUFVLE1BQUsvRSxTQUFTLElBQUl4TyxPQUFPLENBQUN1VCxVQUFVLEtBQUssSUFBSSxHQUM1RCxJQUFJLEdBQ0p2VCxPQUFPLENBQUN1VCxVQUFVLEdBQ2hCelgsUUFBUSxDQUFDMFgsU0FBUyxHQUNsQjFYLFFBQVEsQ0FBQzJYLFdBQVc7O1FBRTVCO1FBQ0EsSUFBTUMsVUFBVSxJQUFBUCxXQUFBLEdBQUduVCxPQUFPLENBQUNkLEVBQUUsY0FBQWlVLFdBQUEsY0FBQUEsV0FBQSxVQUFBclMsTUFBQSxDQUFXMEosS0FBSyxDQUFFO1FBRS9DLG9CQUNFaFIsY0FBQSxDQUFDb00sV0FBVyxFQUFBN0gsYUFBQSxDQUFBQSxhQUFBLEtBQ05pQyxPQUFPO1VBQ1gyVCxHQUFHLEVBQUVELFVBQVc7VUFDaEIzTixRQUFRLEVBQUVBLFFBQVM7VUFDbkJ4SCxrQkFBa0IsRUFBRUEsa0JBQW1CO1VBQ3ZDMEcsY0FBYyxFQUFFQSxjQUFlO1VBQy9CZ0Isc0JBQXNCLEVBQUVBLHNCQUF1QjtVQUMvQ1YscUJBQXFCLEVBQUVBLHFCQUFzQjtVQUM3Q2MscUJBQXFCLEVBQUUsQ0FBQyxDQUFDK0gsNEJBQTRCLENBQUNwTyxPQUFPLENBQUNkLEVBQUUsQ0FBRTtVQUNsRWlHLGVBQWUsRUFBRW1PLGVBQWdCO1VBQ2pDN1EsV0FBVyxFQUFFQSxXQUFZO1VBQ3pCa0QsYUFBYSxFQUFFQSxhQUFjO1VBQzdCb0csUUFBUSxFQUFFQTtRQUFTLEVBQ3BCLENBQUM7TUFFTixDQUFDO0lBQUMsQ0FDRixDQUFDLEVBQ0YsQ0FBQzZDLGVBQWUsSUFBSUUsY0FBYyxJQUFJOEUsTUFBTSxDQUFDQyxJQUFJLENBQUM5RSxjQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzNOLE1BQU0sR0FBRyxDQUFDLGtCQUNqRjVFLElBQUEsQ0FBQ3JCLHVCQUF1QjtNQUFBK0IsUUFBQSxFQUNyQjBXLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDOUUsY0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMzTixNQUFNLEdBQUcsQ0FBQyxnQkFDM0M1RSxJQUFBLENBQUNqQyxXQUFXO1FBRVY0RyxJQUFJLEVBQ0Z5UyxNQUFNLENBQUNFLE1BQU0sQ0FBQy9FLGNBQWMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDZ0YsSUFBSSxDQUFDLFVBQUF6QixHQUFHO1VBQUEsT0FBSUEsR0FBRyxLQUFLckYsQ0FBQyxDQUFDLGlCQUFpQixDQUFDO1FBQUEsRUFBQyxJQUFJQSxDQUFDLENBQUMsaUJBQWlCO01BQ3JHLEdBSEcsZ0JBSUwsQ0FBQyxHQUVGLENBQUMyQixlQUFlLElBQUlFLGNBQWMsa0JBQ2hDdFMsSUFBQSxDQUFDakMsV0FBVztRQUNWNEcsSUFBSSxFQUNGMk4sY0FBYyxLQUNiM0IsaUJBQWlCLEdBQ2Qsb0JBQW9CLEdBQ3BCQyxrQkFBa0IsR0FDaEJILENBQUMsQ0FBQywyQkFBMkIsQ0FBQyxHQUM5QjBGLGNBQWMsR0FDWjFGLENBQUMsQ0FBQywyQkFBMkIsQ0FBQyxHQUM5QkEsQ0FBQyxDQUFDLGlCQUFpQixDQUFDO01BQzdCLENBQ0Y7SUFFSixDQUNzQixDQUMxQjtFQUFBLENBQ0QsQ0FDSDtFQUVELG9CQUNFdlEsS0FBQSxDQUFDMUIsZUFBZTtJQUFDZ1osZUFBZSxFQUFFcEIsZ0JBQWlCO0lBQUExVixRQUFBLEdBQ2hEMFYsZ0JBQWdCLGdCQUNmcFcsSUFBQSxDQUFDdkIsZ0JBQWdCO01BQUNnWixHQUFHLEVBQUUzRyxXQUFZO01BQUM0RyxRQUFRLEVBQUVuRCxvQkFBcUI7TUFBQTdULFFBQUEsZUFDakVWLElBQUEsQ0FBQ3RCLGVBQWU7UUFBQzhZLGVBQWUsRUFBRXBCLGdCQUFpQjtRQUFDdUIsb0JBQW9CLEVBQUU3RSx3QkFBeUI7UUFBQXBTLFFBQUEsRUFDaEc2VjtNQUFlLENBQ0Q7SUFBQyxDQUNGLENBQUMsZ0JBRW5CdlcsSUFBQSxDQUFDdEIsZUFBZTtNQUNkK1ksR0FBRyxFQUFFM0csV0FBWTtNQUNqQjRHLFFBQVEsRUFBRW5ELG9CQUFxQjtNQUMvQmlELGVBQWUsRUFBRSxLQUFNO01BQ3ZCRyxvQkFBb0IsRUFBRTdFLHdCQUF5QjtNQUFBcFMsUUFBQSxFQUU5QzZWO0lBQWUsQ0FDRCxDQUNsQixFQUVBL0Usa0JBQWtCLGlCQUNqQnhSLElBQUEsQ0FBQ3pCLG9CQUFvQjtNQUFDb0MsSUFBSSxFQUFDLFFBQVE7TUFBQ2dDLE9BQU8sRUFBRXdSLHlCQUEwQjtNQUFBelQsUUFBQSxlQUNyRVYsSUFBQSxDQUFDN0MsY0FBYztRQUFDeWEsS0FBSyxFQUFDLE1BQU07UUFBQ2hYLEtBQUssRUFBQyxNQUFNO1FBQUNDLE1BQU0sRUFBQztNQUFNLENBQUU7SUFBQyxDQUN0QyxDQUN2QjtFQUFBLENBQ2MsQ0FBQztBQUV0QixDQUFDO0FBRUQsT0FBTyxJQUFNZ1gsY0FBYyxnQkFBR3JiLEtBQUssQ0FBQ0MsSUFBSSxDQUFDdVQsbUJBQW1CLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -18,20 +18,21 @@ export var useSmoothStreamText = function useSmoothStreamText(targetText, _ref)
18
18
  _ref$maxCharsPerFrame = _ref.maxCharsPerFrame,
19
19
  maxCharsPerFrame = _ref$maxCharsPerFrame === void 0 ? 24 : _ref$maxCharsPerFrame,
20
20
  _ref$targetLagMs = _ref.targetLagMs,
21
- targetLagMs = _ref$targetLagMs === void 0 ? 120 : _ref$targetLagMs,
21
+ targetLagMs = _ref$targetLagMs === void 0 ? 450 : _ref$targetLagMs,
22
22
  _ref$snapToWordBounda = _ref.snapToWordBoundary,
23
23
  snapToWordBoundary = _ref$snapToWordBounda === void 0 ? false : _ref$snapToWordBounda,
24
24
  _ref$adaptToBackendRa = _ref.adaptToBackendRate,
25
- adaptToBackendRate = _ref$adaptToBackendRa === void 0 ? false : _ref$adaptToBackendRa,
25
+ adaptToBackendRate = _ref$adaptToBackendRa === void 0 ? true : _ref$adaptToBackendRa,
26
26
  _ref$backendRateFacto = _ref.backendRateFactor,
27
27
  backendRateFactor = _ref$backendRateFacto === void 0 ? 0.95 : _ref$backendRateFacto,
28
- targetBufferMs = _ref.targetBufferMs,
28
+ _ref$targetBufferMs = _ref.targetBufferMs,
29
+ targetBufferMs = _ref$targetBufferMs === void 0 ? 600 : _ref$targetBufferMs,
29
30
  _ref$bufferCorrection = _ref.bufferCorrectionMs,
30
31
  bufferCorrectionMs = _ref$bufferCorrection === void 0 ? 500 : _ref$bufferCorrection,
31
32
  _ref$minBufferChars = _ref.minBufferChars,
32
- minBufferChars = _ref$minBufferChars === void 0 ? 40 : _ref$minBufferChars,
33
+ minBufferChars = _ref$minBufferChars === void 0 ? 70 : _ref$minBufferChars,
33
34
  _ref$warmupMs = _ref.warmupMs,
34
- warmupMs = _ref$warmupMs === void 0 ? 0 : _ref$warmupMs,
35
+ warmupMs = _ref$warmupMs === void 0 ? 400 : _ref$warmupMs,
35
36
  _ref$debug = _ref.debug,
36
37
  debug = _ref$debug === void 0 ? false : _ref$debug,
37
38
  _ref$debugLabel = _ref.debugLabel,
@@ -241,9 +242,19 @@ export var useSmoothStreamText = function useSmoothStreamText(targetText, _ref)
241
242
  // objetivo. Si bufferMs < target → frenamos por debajo del backend
242
243
  // para acumular; si bufferMs > target → aceleramos para descargar.
243
244
  // En equilibrio, pintamos al ritmo promedio del backend.
245
+ //
246
+ // El colchón objetivo se calcula sobre la tasa **efectiva** que
247
+ // podemos pintar (capeada por `maxCharsPerFrame` a 60fps), no sobre
248
+ // la del backend pura. Esto evita el caso patológico de ráfagas:
249
+ // si el backend tira a 6500 ch/s, el target NO se vuelve 3900 chars
250
+ // (que el render jamás podría sostener), sino algo razonable que
251
+ // la animación pueda mantener.
252
+ //
244
253
  // Piso absoluto: el colchón nunca baja de `minBufferChars` aunque
245
254
  // el backend esté mandando lento al inicio del stream.
246
- var targetBufferChars = Math.max(minBufferChars, targetBufferMs * backendRate);
255
+ var renderRateCap = maxCharsPerFrame * 60 / 1000;
256
+ var effectiveBufferRate = Math.min(backendRate, renderRateCap);
257
+ var targetBufferChars = Math.max(minBufferChars, targetBufferMs * effectiveBufferRate);
247
258
  var bufferDelta = remaining - targetBufferChars;
248
259
  // Corrección tiene unidades de chars/ms. bufferCorrectionMs controla
249
260
  // qué tan rápido el buffer real converge al objetivo.
@@ -289,4 +300,4 @@ export var useSmoothStreamText = function useSmoothStreamText(targetText, _ref)
289
300
  }, [targetText, enabled, minCharsPerFrame, maxCharsPerFrame, targetLagMs, snapToWordBoundary, adaptToBackendRate, backendRateFactor, targetBufferMs, bufferCorrectionMs, minBufferChars, warmupMs, debug, debugLabel]);
290
301
  return displayed;
291
302
  };
292
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZVNtb290aFN0cmVhbVRleHQiLCJ0YXJnZXRUZXh0IiwiX3JlZiIsImVuYWJsZWQiLCJfcmVmJG1pbkNoYXJzUGVyRnJhbWUiLCJtaW5DaGFyc1BlckZyYW1lIiwiX3JlZiRtYXhDaGFyc1BlckZyYW1lIiwibWF4Q2hhcnNQZXJGcmFtZSIsIl9yZWYkdGFyZ2V0TGFnTXMiLCJ0YXJnZXRMYWdNcyIsIl9yZWYkc25hcFRvV29yZEJvdW5kYSIsInNuYXBUb1dvcmRCb3VuZGFyeSIsIl9yZWYkYWRhcHRUb0JhY2tlbmRSYSIsImFkYXB0VG9CYWNrZW5kUmF0ZSIsIl9yZWYkYmFja2VuZFJhdGVGYWN0byIsImJhY2tlbmRSYXRlRmFjdG9yIiwidGFyZ2V0QnVmZmVyTXMiLCJfcmVmJGJ1ZmZlckNvcnJlY3Rpb24iLCJidWZmZXJDb3JyZWN0aW9uTXMiLCJfcmVmJG1pbkJ1ZmZlckNoYXJzIiwibWluQnVmZmVyQ2hhcnMiLCJfcmVmJHdhcm11cE1zIiwid2FybXVwTXMiLCJfcmVmJGRlYnVnIiwiZGVidWciLCJfcmVmJGRlYnVnTGFiZWwiLCJkZWJ1Z0xhYmVsIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiZGlzcGxheWVkIiwic2V0RGlzcGxheWVkIiwidGFyZ2V0UmVmIiwiZGlzcGxheWVkTGVuUmVmIiwibGVuZ3RoIiwicmFmUmVmIiwibGFzdFRpY2tSZWYiLCJsYXN0VGFyZ2V0TGVuUmVmIiwibGFzdFRhcmdldFVwZGF0ZVJlZiIsImJhY2tlbmRDaGFyc1Blck1zUmVmIiwiZmlyc3RDaHVua0F0UmVmIiwid2FybXVwRG9uZVJlZiIsIm1ldHJpY3NSZWYiLCJmcmFtZXNXaXRoQnVmZmVyIiwiZnJhbWVzSWRsZSIsInRvdGFsQ2hhcnNFbWl0dGVkIiwibWF4QnVmZmVyIiwiaWRsZVRpbWVNcyIsImNodW5rc1NlZW4iLCJpbnRlckNodW5rU3VtIiwiaW50ZXJDaHVua01heCIsImxhc3RMb2dBdCIsInN0cmVhbVN0YXJ0QXQiLCJub3ciLCJwZXJmb3JtYW5jZSIsIkRhdGUiLCJwcmV2VGFyZ2V0TGVuIiwiY3VycmVudCIsImRlbHRhQ2hhcnMiLCJwcmV2VGFyZ2V0QXQiLCJkdCIsIk1hdGgiLCJtYXgiLCJyYXRlIiwicHJldlJhdGUiLCJtIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJ0b3RhbE1zIiwiY29uc29sZSIsImxvZyIsImNvbmNhdCIsInJvdW5kIiwiZmluYWxDaGFycyIsImJhY2tlbmRBdmdDaGFyc1BlclNlYyIsImF2Z0ludGVyQ2h1bmtNcyIsIm1heEludGVyQ2h1bmtNcyIsImlkbGVSYXRpbyIsInRvRml4ZWQiLCJ1bmRlZmluZWQiLCJsb2dNZXRyaWNzIiwidGlja05vdyIsImVsIiwiYnVmZmVyIiwid2luZG93TXMiLCJ0b3RhbEZyYW1lcyIsImZwcyIsImJhY2tlbmRSYXRlIiwiZWxhcHNlZE1zIiwidGFyZ2V0IiwiYmFja2VuZENoYXJzUGVyU2VjIiwidGljayIsInByZXYiLCJtaW4iLCJjdXJyZW50TGVuIiwicmVtYWluaW5nIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiZmlyc3RBdCIsIndhaXRlZE1zIiwid2FybXVwQ29tcGxldGUiLCJjaGFyc1Blck1zIiwiZWZmZWN0aXZlQ2hhcnNQZXJNcyIsInRhcmdldEJ1ZmZlckNoYXJzIiwiYnVmZmVyRGVsdGEiLCJjb3JyZWN0aW9uIiwiY2FwIiwicmF3U3RlcCIsImNlaWwiLCJzdGVwIiwibmV4dExlbiIsInNsaWNlIiwibGFzdEJvdW5kYXJ5IiwibGFzdEluZGV4T2YiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlU21vb3RoU3RyZWFtVGV4dC91c2VTbW9vdGhTdHJlYW1UZXh0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuXG50eXBlIFVzZVNtb290aFN0cmVhbVRleHRPcHRpb25zID0ge1xuICAvKiogU2kgZXN0w6EgZGVzaGFiaWxpdGFkbywgZGV2dWVsdmUgZWwgdGFyZ2V0IHRhbCBjdWFsIChzaW4gYW5pbWFjacOzbikuICovXG4gIGVuYWJsZWQ6IGJvb2xlYW5cbiAgLyoqIENhbnRpZGFkIG3DrW5pbWEgZGUgY2hhcnMgYSBsaWJlcmFyIHBvciBmcmFtZSBjdWFuZG8gaGF5IGJ1ZmZlci4gKi9cbiAgbWluQ2hhcnNQZXJGcmFtZT86IG51bWJlclxuICAvKiogQ290YSBzdXBlcmlvciBkZSBjaGFycyBwb3IgZnJhbWUgcGFyYSBldml0YXIgc2FsdG9zIGdyYW5kZXMuICovXG4gIG1heENoYXJzUGVyRnJhbWU/OiBudW1iZXJcbiAgLyoqXG4gICAqIExhZyBvYmpldGl2byAobXMpIGVudHJlIGVsIHRleHRvIHJlY2liaWRvIHkgZWwgbW9zdHJhZG8uIEVsIGhvb2sgY2FsY3VsYVxuICAgKiBkaW7DoW1pY2FtZW50ZSBlbCBzdGVwIHBvciBmcmFtZSBwYXJhIHZhY2lhciBlbCBidWZmZXIgZW4gfnRhcmdldExhZ01zLlxuICAgKiBWYWxvcmVzIG3DoXMgYmFqb3MgPSBzZSBwb25lIGFsIGTDrWEgbcOhcyByw6FwaWRvIChtZW5vcyBcInN1YXZlXCIpLlxuICAgKi9cbiAgdGFyZ2V0TGFnTXM/OiBudW1iZXJcbiAgLyoqXG4gICAqIFNpIGVzdMOhIGFjdGl2bywgYWwgYXZhbnphciBzZSBkZXRpZW5lIGVuIGVsIMO6bHRpbW8gc2VwYXJhZG9yIGRlIHBhbGFicmFcbiAgICogKGVzcGFjaW8sIHNhbHRvIGRlIGzDrW5lYSwgc2lnbm9zIGRlIHB1bnR1YWNpw7NuKSBwYXJhIGV2aXRhciByZW5kZXJpemFyXG4gICAqIG1hcmtkb3duIFwiY29ydGFkbyBhIGxhIG1pdGFkXCIgeSBkYXIgdW5hIHNlbnNhY2nDs24gbcOhcyBuYXR1cmFsLlxuICAgKi9cbiAgc25hcFRvV29yZEJvdW5kYXJ5PzogYm9vbGVhblxuICAvKipcbiAgICogU2kgZXN0w6EgYWN0aXZvLCBtaWRlIGxhIHRhc2EgcHJvbWVkaW8gYSBsYSBxdWUgY3JlY2UgZWwgdGFyZ2V0IChjYWRlbmNpYVxuICAgKiBkZWwgYmFja2VuZCBlbiBjaGFycy9tcykgeSBsaW1pdGEgbGEgdmVsb2NpZGFkIGRlIHBpbnRhZG8gYSBlc2EgdGFzYVxuICAgKiAobXVsdGlwbGljYWRhIHBvciBgYmFja2VuZFJhdGVGYWN0b3JgKS4gRXN0byBldml0YSBlbCBjYXNvIHTDrXBpY28gZGVcbiAgICogXCJwaW50byByw6FwaWRvIGhhc3RhIHZhY2lhciBlbCBidWZmZXIgeSBkZXNwdcOpcyBzZSBjb25nZWxhIGVzcGVyYW5kb1xuICAgKiBhbCBwcsOzeGltbyBjaHVuayBkZWwgYmFja2VuZFwiLlxuICAgKi9cbiAgYWRhcHRUb0JhY2tlbmRSYXRlPzogYm9vbGVhblxuICAvKipcbiAgICogRmFjdG9yIGFwbGljYWRvIGEgbGEgdGFzYSBkZWwgYmFja2VuZCBjdWFuZG8gYGFkYXB0VG9CYWNrZW5kUmF0ZWAgZXN0w6FcbiAgICogYWN0aXZvLiBWYWxvcmVzIDwgMSBkZWphbiB1biBjb2xjaMOzbiBjcmVjaWVudGUgKG3DoXMgdG9sZXJhbnRlIGEgcGF1c2FzKTtcbiAgICogdmFsb3JlcyA+IDEgaW50ZW50YW4gYWxjYW56YXIuIERlZmF1bHQ6IDAuOTUuXG4gICAqL1xuICBiYWNrZW5kUmF0ZUZhY3Rvcj86IG51bWJlclxuICAvKipcbiAgICogQ29sY2jDs24gb2JqZXRpdm8gZGUgYnVmZmVyIGV4cHJlc2FkbyBlbiBtcyAoY3XDoW50byB0aWVtcG8gZGUgdGV4dG8gcXVlcmVtb3NcbiAgICogdGVuZXIgc2llbXByZSBhZGVsYW50YWRvIGFsIHBpbnRhZG8pLiBTaSBlc3TDoSBkZWZpbmlkbyBqdW50byBjb25cbiAgICogYGFkYXB0VG9CYWNrZW5kUmF0ZWAsIHNlIHVzYSB1biBjb250cm9sIHByb3BvcmNpb25hbDogY3VhbmRvIGVsIGJ1ZmZlclxuICAgKiBiYWphIGRlbCBvYmpldGl2bywgbGEgdmVsb2NpZGFkIGNhZSBwb3IgZGViYWpvIGRlIGxhIGRlbCBiYWNrZW5kIHBhcmFcbiAgICogcmVsbGVuYXJsbzsgY3VhbmRvIGxvIHN1cGVyYSwgc2UgYWNlbGVyYSBwYXJhIGRlc2NhcmdhcmxvLiBBc8OtIGxhXG4gICAqIGFuaW1hY2nDs24gYWJzb3JiZSBwYXVzYXMgZGVsIGJhY2tlbmQgc2luIHF1ZWRhcnNlIGlkbGUuXG4gICAqXG4gICAqIFZhbG9yIHJlY29tZW5kYWRvOiAzMDDigJM1MDBtcyBzZWfDum4gbGEgZXN0YWJpbGlkYWQgZGVsIGJhY2tlbmQuXG4gICAqL1xuICB0YXJnZXRCdWZmZXJNcz86IG51bWJlclxuICAvKipcbiAgICogQ29uc3RhbnRlIGRlIHRpZW1wbyAobXMpIGRlbCBjb250cm9sYWRvciBkZWwgYnVmZmVyLiBDdWFudG8gbcOhcyBiYWpvLFxuICAgKiBtw6FzIGFncmVzaXZhbWVudGUgY29ycmlnZSBkZXN2w61vcy4gRGVmYXVsdDogNTAwLlxuICAgKi9cbiAgYnVmZmVyQ29ycmVjdGlvbk1zPzogbnVtYmVyXG4gIC8qKlxuICAgKiBQaXNvIGFic29sdXRvIGRlbCBjb2xjaMOzbiBlbiBjaGFyczogZWwgYHRhcmdldEJ1ZmZlckNoYXJzYCBjYWxjdWxhZG8gYVxuICAgKiBwYXJ0aXIgZGUgYHRhcmdldEJ1ZmZlck1zIMOXIGJhY2tlbmRSYXRlYCBudW5jYSBiYWphIGRlIGVzdGUgdmFsb3IuIMOadGlsXG4gICAqIGFsIGNvbWllbnpvIGRlbCBzdHJlYW0gY3VhbmRvIGxhIHRhc2EgZXN0aW1hZGEgZGVsIGJhY2tlbmQgZXMgYmFqYS5cbiAgICogRGVmYXVsdDogNDAuXG4gICAqL1xuICBtaW5CdWZmZXJDaGFycz86IG51bWJlclxuICAvKipcbiAgICogV2FybXVwOiBtcyBxdWUgZWwgaG9vayBlc3BlcmEgXCJhY3VtdWxhbmRvXCIgYW50ZXMgZGUgZW1wZXphciBhIHBpbnRhcixcbiAgICogaW5jbHVzbyBzaSB5YSBoYXkgY2hhcnMgZW4gZWwgYnVmZmVyLiBFdml0YSBlbCB0w61waWNvIFwiYXJyYW5xdWUgcsOhcGlkbyxcbiAgICogY29uZ2VsYW1pZW50b1wiIGN1YW5kbyBlbCBwcmltZXIgY2h1bmsgbGxlZ2EgYW50ZXMgcXVlIGVsIHNlZ3VuZG8gc2VcbiAgICogdGFyZGEgbXVjaG8uIFNpIHNlIGRlZmluZSBjb21vIDAsIG5vIGhheSB3YXJtdXAuIERlZmF1bHQ6IDAuXG4gICAqL1xuICB3YXJtdXBNcz86IG51bWJlclxuICAvKipcbiAgICogTW9kbyBkZWJ1ZzogaW1wcmltZSBtw6l0cmljYXMgY2FkYSB+NTAwbXMgbWllbnRyYXMgYGVuYWJsZWQgPT09IHRydWVgLlxuICAgKiDDmnRpbCBwYXJhIGFqdXN0YXIgYHRhcmdldExhZ01zYCwgYG1heENoYXJzUGVyRnJhbWVgIHkgZXZhbHVhciBzaSBjb252aWVuZVxuICAgKiBhY3RpdmFyIGBhZGFwdFRvQmFja2VuZFJhdGVgLlxuICAgKi9cbiAgZGVidWc/OiBib29sZWFuXG4gIC8qKiBFdGlxdWV0YSBvcGNpb25hbCBwYXJhIGRpc3Rpbmd1aXIgbcO6bHRpcGxlcyBpbnN0YW5jaWFzIGVuIGxvcyBsb2dzLiAqL1xuICBkZWJ1Z0xhYmVsPzogc3RyaW5nXG59XG5cbi8qKlxuICogSG9vayBxdWUgZGVzYWNvcGxhIGxhIGNhZGVuY2lhIGRlIGxsZWdhZGEgZGVsIHRleHRvIChzdHJlYW0gU1NFKSBkZSBsYVxuICogY2FkZW5jaWEgZGUgcmVuZGVyaXphZG8uIFVzYSBgcmVxdWVzdEFuaW1hdGlvbkZyYW1lYCBwYXJhIGxpYmVyYXIgY2hhcnNcbiAqIGEgcml0bW8gY29uc3RhbnRlIGhhY2lhIGVsIERPTSwgZWxpbWluYW5kbyBsb3MgXCJmcmVub3NcIiBxdWUgc2UgcHJvZHVjZW5cbiAqIGN1YW5kbyBlbCBiYWNrZW5kIGVtaXRlIHLDoWZhZ2FzIGRlIHRva2Vucy5cbiAqXG4gKiBDdWFuZG8gYGVuYWJsZWRgIHBhc2EgYSBmYWxzZSAoZmluIGRlIHN0cmVhbSksIGVsIHRleHRvIHNlIGNvbXBsZXRhIGFsXG4gKiBpbnN0YW50ZS4gRHVyYW50ZSBlbCBzdHJlYW1pbmcsIGVsIGJ1ZmZlciBzZSB2YWPDrWEgZGluw6FtaWNhbWVudGUgYXB1bnRhbmRvXG4gKiBhbCBsYWcgY29uZmlndXJhZG8uXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VTbW9vdGhTdHJlYW1UZXh0ID0gKFxuICB0YXJnZXRUZXh0OiBzdHJpbmcsXG4gIHtcbiAgICBlbmFibGVkLFxuICAgIG1pbkNoYXJzUGVyRnJhbWUgPSAxLFxuICAgIG1heENoYXJzUGVyRnJhbWUgPSAyNCxcbiAgICB0YXJnZXRMYWdNcyA9IDEyMCxcbiAgICBzbmFwVG9Xb3JkQm91bmRhcnkgPSBmYWxzZSxcbiAgICBhZGFwdFRvQmFja2VuZFJhdGUgPSBmYWxzZSxcbiAgICBiYWNrZW5kUmF0ZUZhY3RvciA9IDAuOTUsXG4gICAgdGFyZ2V0QnVmZmVyTXMsXG4gICAgYnVmZmVyQ29ycmVjdGlvbk1zID0gNTAwLFxuICAgIG1pbkJ1ZmZlckNoYXJzID0gNDAsXG4gICAgd2FybXVwTXMgPSAwLFxuICAgIGRlYnVnID0gZmFsc2UsXG4gICAgZGVidWdMYWJlbCA9ICdzbW9vdGhTdHJlYW0nLFxuICB9OiBVc2VTbW9vdGhTdHJlYW1UZXh0T3B0aW9uc1xuKTogc3RyaW5nID0+IHtcbiAgY29uc3QgW2Rpc3BsYXllZCwgc2V0RGlzcGxheWVkXSA9IHVzZVN0YXRlPHN0cmluZz4oKCkgPT4gKGVuYWJsZWQgPyAnJyA6IHRhcmdldFRleHQpKVxuXG4gIGNvbnN0IHRhcmdldFJlZiA9IHVzZVJlZih0YXJnZXRUZXh0KVxuICBjb25zdCBkaXNwbGF5ZWRMZW5SZWYgPSB1c2VSZWYoZGlzcGxheWVkLmxlbmd0aClcbiAgY29uc3QgcmFmUmVmID0gdXNlUmVmPG51bWJlciB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGxhc3RUaWNrUmVmID0gdXNlUmVmPG51bWJlcj4oMClcblxuICAvLyBNZWRpY2nDs24gZGUgbGEgY2FkZW5jaWEgZGVsIGJhY2tlbmQ6IHNlIGFjdHVhbGl6YSBjdWFuZG8gY2FtYmlhIHRhcmdldFRleHQuXG4gIGNvbnN0IGxhc3RUYXJnZXRMZW5SZWYgPSB1c2VSZWY8bnVtYmVyPigwKVxuICBjb25zdCBsYXN0VGFyZ2V0VXBkYXRlUmVmID0gdXNlUmVmPG51bWJlcj4oMClcbiAgLy8gRXN0aW1hY2nDs24gRU1BIGRlIGNoYXJzL21zIHByb2R1Y2lkb3MgcG9yIGVsIGJhY2tlbmQuXG4gIGNvbnN0IGJhY2tlbmRDaGFyc1Blck1zUmVmID0gdXNlUmVmPG51bWJlcj4oMClcbiAgLy8gVGltZXN0YW1wIGRlbCBwcmltZXIgY2h1bmsgcmVjaWJpZG8gKHBhcmEgd2FybXVwKS5cbiAgY29uc3QgZmlyc3RDaHVua0F0UmVmID0gdXNlUmVmPG51bWJlcj4oMClcbiAgLy8gU2kgZWwgd2FybXVwIHlhIHRlcm1pbsOzICh1bmEgdmV6IHRydWUsIG5vIHZ1ZWx2ZSBhIGFjdGl2YXJzZSBlbiBlc3RlIHN0cmVhbSkuXG4gIGNvbnN0IHdhcm11cERvbmVSZWYgPSB1c2VSZWY8Ym9vbGVhbj4oZmFsc2UpXG5cbiAgLy8gTcOpdHJpY2FzIHBhcmEgZGVidWdcbiAgY29uc3QgbWV0cmljc1JlZiA9IHVzZVJlZih7XG4gICAgZnJhbWVzV2l0aEJ1ZmZlcjogMCxcbiAgICBmcmFtZXNJZGxlOiAwLFxuICAgIHRvdGFsQ2hhcnNFbWl0dGVkOiAwLFxuICAgIG1heEJ1ZmZlcjogMCxcbiAgICBpZGxlVGltZU1zOiAwLFxuICAgIGNodW5rc1NlZW46IDAsXG4gICAgaW50ZXJDaHVua1N1bTogMCxcbiAgICBpbnRlckNodW5rTWF4OiAwLFxuICAgIGxhc3RMb2dBdDogMCxcbiAgICBzdHJlYW1TdGFydEF0OiAwLFxuICB9KVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgbm93ID0gdHlwZW9mIHBlcmZvcm1hbmNlICE9PSAndW5kZWZpbmVkJyA/IHBlcmZvcm1hbmNlLm5vdygpIDogRGF0ZS5ub3coKVxuICAgIGNvbnN0IHByZXZUYXJnZXRMZW4gPSBsYXN0VGFyZ2V0TGVuUmVmLmN1cnJlbnRcbiAgICBjb25zdCBkZWx0YUNoYXJzID0gdGFyZ2V0VGV4dC5sZW5ndGggLSBwcmV2VGFyZ2V0TGVuXG4gICAgY29uc3QgcHJldlRhcmdldEF0ID0gbGFzdFRhcmdldFVwZGF0ZVJlZi5jdXJyZW50XG5cbiAgICBpZiAoZW5hYmxlZCAmJiBkZWx0YUNoYXJzID4gMCkge1xuICAgICAgaWYgKGZpcnN0Q2h1bmtBdFJlZi5jdXJyZW50ID09PSAwKSBmaXJzdENodW5rQXRSZWYuY3VycmVudCA9IG5vd1xuICAgIH1cblxuICAgIGlmIChlbmFibGVkICYmIGRlbHRhQ2hhcnMgPiAwICYmIHByZXZUYXJnZXRBdCA+IDApIHtcbiAgICAgIGNvbnN0IGR0ID0gTWF0aC5tYXgoMSwgbm93IC0gcHJldlRhcmdldEF0KVxuICAgICAgY29uc3QgcmF0ZSA9IGRlbHRhQ2hhcnMgLyBkdFxuICAgICAgY29uc3QgcHJldlJhdGUgPSBiYWNrZW5kQ2hhcnNQZXJNc1JlZi5jdXJyZW50XG4gICAgICAvLyBFTUEgc3VhdmUgKGFscGhhID0gMC4yKSBwYXJhIGFic29yYmVyIGppdHRlciB5IHNlZ3VpciBsYSB0ZW5kZW5jaWEuXG4gICAgICBiYWNrZW5kQ2hhcnNQZXJNc1JlZi5jdXJyZW50ID0gcHJldlJhdGUgPT09IDAgPyByYXRlIDogcHJldlJhdGUgKiAwLjggKyByYXRlICogMC4yXG5cbiAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICBjb25zdCBtID0gbWV0cmljc1JlZi5jdXJyZW50XG4gICAgICAgIG0uY2h1bmtzU2VlbiArPSAxXG4gICAgICAgIG0uaW50ZXJDaHVua1N1bSArPSBkdFxuICAgICAgICBpZiAoZHQgPiBtLmludGVyQ2h1bmtNYXgpIG0uaW50ZXJDaHVua01heCA9IGR0XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChlbmFibGVkICYmIHRhcmdldFRleHQubGVuZ3RoICE9PSBwcmV2VGFyZ2V0TGVuKSB7XG4gICAgICBsYXN0VGFyZ2V0TGVuUmVmLmN1cnJlbnQgPSB0YXJnZXRUZXh0Lmxlbmd0aFxuICAgICAgbGFzdFRhcmdldFVwZGF0ZVJlZi5jdXJyZW50ID0gbm93XG4gICAgfVxuXG4gICAgdGFyZ2V0UmVmLmN1cnJlbnQgPSB0YXJnZXRUZXh0XG5cbiAgICBpZiAoIWVuYWJsZWQpIHtcbiAgICAgIGlmIChyYWZSZWYuY3VycmVudCAhPSBudWxsKSB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZlJlZi5jdXJyZW50KVxuICAgICAgICByYWZSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIH1cbiAgICAgIGxhc3RUaWNrUmVmLmN1cnJlbnQgPSAwXG4gICAgICBpZiAoZGVidWcgJiYgbWV0cmljc1JlZi5jdXJyZW50LnN0cmVhbVN0YXJ0QXQgPiAwKSB7XG4gICAgICAgIGNvbnN0IG0gPSBtZXRyaWNzUmVmLmN1cnJlbnRcbiAgICAgICAgY29uc3QgdG90YWxNcyA9IG5vdyAtIG0uc3RyZWFtU3RhcnRBdFxuICAgICAgICBjb25zb2xlLmxvZyhgWyR7ZGVidWdMYWJlbH1dIEZJTkFMYCwge1xuICAgICAgICAgIHRvdGFsTXM6IE1hdGgucm91bmQodG90YWxNcyksXG4gICAgICAgICAgZmluYWxDaGFyczogdGFyZ2V0VGV4dC5sZW5ndGgsXG4gICAgICAgICAgYmFja2VuZEF2Z0NoYXJzUGVyU2VjOiBtLmNodW5rc1NlZW4gPiAwID8gTWF0aC5yb3VuZCgodGFyZ2V0VGV4dC5sZW5ndGggLyB0b3RhbE1zKSAqIDEwMDApIDogMCxcbiAgICAgICAgICBjaHVua3NTZWVuOiBtLmNodW5rc1NlZW4sXG4gICAgICAgICAgYXZnSW50ZXJDaHVua01zOiBtLmNodW5rc1NlZW4gPiAwID8gTWF0aC5yb3VuZChtLmludGVyQ2h1bmtTdW0gLyBtLmNodW5rc1NlZW4pIDogMCxcbiAgICAgICAgICBtYXhJbnRlckNodW5rTXM6IE1hdGgucm91bmQobS5pbnRlckNodW5rTWF4KSxcbiAgICAgICAgICBpZGxlVGltZU1zOiBNYXRoLnJvdW5kKG0uaWRsZVRpbWVNcyksXG4gICAgICAgICAgaWRsZVJhdGlvOiB0b3RhbE1zID4gMCA/IChtLmlkbGVUaW1lTXMgLyB0b3RhbE1zKS50b0ZpeGVkKDIpIDogJzAnLFxuICAgICAgICAgIG1heEJ1ZmZlcjogbS5tYXhCdWZmZXIsXG4gICAgICAgIH0pXG4gICAgICAgIG1ldHJpY3NSZWYuY3VycmVudCA9IHtcbiAgICAgICAgICBmcmFtZXNXaXRoQnVmZmVyOiAwLFxuICAgICAgICAgIGZyYW1lc0lkbGU6IDAsXG4gICAgICAgICAgdG90YWxDaGFyc0VtaXR0ZWQ6IDAsXG4gICAgICAgICAgbWF4QnVmZmVyOiAwLFxuICAgICAgICAgIGlkbGVUaW1lTXM6IDAsXG4gICAgICAgICAgY2h1bmtzU2VlbjogMCxcbiAgICAgICAgICBpbnRlckNodW5rU3VtOiAwLFxuICAgICAgICAgIGludGVyQ2h1bmtNYXg6IDAsXG4gICAgICAgICAgbGFzdExvZ0F0OiAwLFxuICAgICAgICAgIHN0cmVhbVN0YXJ0QXQ6IDAsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChkaXNwbGF5ZWRMZW5SZWYuY3VycmVudCAhPT0gdGFyZ2V0VGV4dC5sZW5ndGgpIHtcbiAgICAgICAgZGlzcGxheWVkTGVuUmVmLmN1cnJlbnQgPSB0YXJnZXRUZXh0Lmxlbmd0aFxuICAgICAgICBzZXREaXNwbGF5ZWQodGFyZ2V0VGV4dClcbiAgICAgIH1cbiAgICAgIC8vIFJlc2V0IGRlIGNhZGVuY2lhIGN1YW5kbyBzZSBhcGFnYSBwYXJhIG5vIGNvbnRhbWluYXIgZWwgcHLDs3hpbW8gc3RyZWFtLlxuICAgICAgbGFzdFRhcmdldExlblJlZi5jdXJyZW50ID0gMFxuICAgICAgbGFzdFRhcmdldFVwZGF0ZVJlZi5jdXJyZW50ID0gMFxuICAgICAgYmFja2VuZENoYXJzUGVyTXNSZWYuY3VycmVudCA9IDBcbiAgICAgIGZpcnN0Q2h1bmtBdFJlZi5jdXJyZW50ID0gMFxuICAgICAgd2FybXVwRG9uZVJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBpZiAoZGVidWcgJiYgbWV0cmljc1JlZi5jdXJyZW50LnN0cmVhbVN0YXJ0QXQgPT09IDApIHtcbiAgICAgIG1ldHJpY3NSZWYuY3VycmVudC5zdHJlYW1TdGFydEF0ID0gbm93XG4gICAgICBtZXRyaWNzUmVmLmN1cnJlbnQubGFzdExvZ0F0ID0gbm93XG4gICAgICBjb25zb2xlLmxvZyhgWyR7ZGVidWdMYWJlbH1dIFNUQVJUYCwge1xuICAgICAgICB0YXJnZXRMYWdNcyxcbiAgICAgICAgbWF4Q2hhcnNQZXJGcmFtZSxcbiAgICAgICAgYWRhcHRUb0JhY2tlbmRSYXRlLFxuICAgICAgICBiYWNrZW5kUmF0ZUZhY3RvcixcbiAgICAgICAgdGFyZ2V0QnVmZmVyTXMsXG4gICAgICAgIGJ1ZmZlckNvcnJlY3Rpb25NcyxcbiAgICAgICAgbWluQnVmZmVyQ2hhcnMsXG4gICAgICAgIHdhcm11cE1zLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoZGlzcGxheWVkTGVuUmVmLmN1cnJlbnQgPiB0YXJnZXRUZXh0Lmxlbmd0aCkge1xuICAgICAgZGlzcGxheWVkTGVuUmVmLmN1cnJlbnQgPSAwXG4gICAgICBzZXREaXNwbGF5ZWQoJycpXG4gICAgfVxuXG4gICAgaWYgKHJhZlJlZi5jdXJyZW50ICE9IG51bGwpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IGxvZ01ldHJpY3MgPSAodGlja05vdzogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBtID0gbWV0cmljc1JlZi5jdXJyZW50XG4gICAgICBjb25zdCBlbCA9IHRhcmdldFJlZi5jdXJyZW50XG4gICAgICBjb25zdCBidWZmZXIgPSBlbC5sZW5ndGggLSBkaXNwbGF5ZWRMZW5SZWYuY3VycmVudFxuICAgICAgY29uc3Qgd2luZG93TXMgPSBNYXRoLm1heCgxLCB0aWNrTm93IC0gbS5sYXN0TG9nQXQpXG4gICAgICBjb25zdCB0b3RhbEZyYW1lcyA9IG0uZnJhbWVzV2l0aEJ1ZmZlciArIG0uZnJhbWVzSWRsZVxuICAgICAgY29uc3QgZnBzID0gTWF0aC5yb3VuZCgodG90YWxGcmFtZXMgLyB3aW5kb3dNcykgKiAxMDAwKVxuICAgICAgY29uc3QgYmFja2VuZFJhdGUgPSBiYWNrZW5kQ2hhcnNQZXJNc1JlZi5jdXJyZW50XG4gICAgICBjb25zb2xlLmxvZyhgWyR7ZGVidWdMYWJlbH1dIHRpY2tgLCB7XG4gICAgICAgIGVsYXBzZWRNczogTWF0aC5yb3VuZCh0aWNrTm93IC0gbS5zdHJlYW1TdGFydEF0KSxcbiAgICAgICAgYnVmZmVyLFxuICAgICAgICBkaXNwbGF5ZWQ6IGRpc3BsYXllZExlblJlZi5jdXJyZW50LFxuICAgICAgICB0YXJnZXQ6IGVsLmxlbmd0aCxcbiAgICAgICAgZnJhbWVzV2l0aEJ1ZmZlcjogbS5mcmFtZXNXaXRoQnVmZmVyLFxuICAgICAgICBmcmFtZXNJZGxlOiBtLmZyYW1lc0lkbGUsXG4gICAgICAgIGlkbGVSYXRpbzogdG90YWxGcmFtZXMgPiAwID8gKG0uZnJhbWVzSWRsZSAvIHRvdGFsRnJhbWVzKS50b0ZpeGVkKDIpIDogJzAnLFxuICAgICAgICBmcHMsXG4gICAgICAgIGJhY2tlbmRDaGFyc1BlclNlYzogTWF0aC5yb3VuZChiYWNrZW5kUmF0ZSAqIDEwMDApLFxuICAgICAgICBhdmdJbnRlckNodW5rTXM6IG0uY2h1bmtzU2VlbiA+IDAgPyBNYXRoLnJvdW5kKG0uaW50ZXJDaHVua1N1bSAvIG0uY2h1bmtzU2VlbikgOiAwLFxuICAgICAgICBtYXhJbnRlckNodW5rTXM6IE1hdGgucm91bmQobS5pbnRlckNodW5rTWF4KSxcbiAgICAgIH0pXG4gICAgICBtLmZyYW1lc1dpdGhCdWZmZXIgPSAwXG4gICAgICBtLmZyYW1lc0lkbGUgPSAwXG4gICAgICBtLmxhc3RMb2dBdCA9IHRpY2tOb3dcbiAgICB9XG5cbiAgICBjb25zdCB0aWNrID0gKHRpY2tOb3c6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgcHJldiA9IGxhc3RUaWNrUmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IGR0ID0gcHJldiA/IE1hdGgubWluKHRpY2tOb3cgLSBwcmV2LCA2NCkgOiAxNlxuICAgICAgbGFzdFRpY2tSZWYuY3VycmVudCA9IHRpY2tOb3dcblxuICAgICAgY29uc3QgdGFyZ2V0ID0gdGFyZ2V0UmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IGN1cnJlbnRMZW4gPSBkaXNwbGF5ZWRMZW5SZWYuY3VycmVudFxuICAgICAgY29uc3QgcmVtYWluaW5nID0gdGFyZ2V0Lmxlbmd0aCAtIGN1cnJlbnRMZW5cblxuICAgICAgaWYgKHJlbWFpbmluZyA8PSAwKSB7XG4gICAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICAgIG1ldHJpY3NSZWYuY3VycmVudC5mcmFtZXNJZGxlICs9IDFcbiAgICAgICAgICBtZXRyaWNzUmVmLmN1cnJlbnQuaWRsZVRpbWVNcyArPSBkdFxuICAgICAgICB9XG4gICAgICAgIHJhZlJlZi5jdXJyZW50ID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRpY2spXG4gICAgICAgIC8vIExvZyBwZXJpw7NkaWNvIGHDum4gZXN0YW5kbyBpZGxlIChwYXJhIHZlciBzaSBlc3RhbW9zIGVzcGVyYW5kbyBjaHVua3MpXG4gICAgICAgIGlmIChkZWJ1ZyAmJiB0aWNrTm93IC0gbWV0cmljc1JlZi5jdXJyZW50Lmxhc3RMb2dBdCA+IDUwMCkge1xuICAgICAgICAgIGxvZ01ldHJpY3ModGlja05vdylcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gV2FybXVwOiBhbCBjb21pZW56byBkZWwgc3RyZWFtIGVzcGVyYW1vcyBgd2FybXVwTXNgIGRlc2RlIGVsIHByaW1lclxuICAgICAgLy8gY2h1bmsgYW50ZXMgZGUgZW1wZXphciBhIHBpbnRhci4gRXN0byBjb25zdHJ1eWUgdW4gY29sY2jDs24gaW5pY2lhbCB5XG4gICAgICAvLyBldml0YSBhcnJhbmNhciByw6FwaWRvIHBhcmEgY29uZ2VsYXJub3MgYWN0byBzZWd1aWRvIHNpIGVsIGJhY2tlbmRcbiAgICAgIC8vIHRhcmRhIG11Y2hvIGVuIGVtaXRpciBlbCBzZWd1bmRvIGNodW5rLlxuICAgICAgaWYgKCF3YXJtdXBEb25lUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgZmlyc3RBdCA9IGZpcnN0Q2h1bmtBdFJlZi5jdXJyZW50XG4gICAgICAgIGNvbnN0IHdhaXRlZE1zID0gZmlyc3RBdCA+IDAgPyB0aWNrTm93IC0gZmlyc3RBdCA6IDBcbiAgICAgICAgY29uc3Qgd2FybXVwQ29tcGxldGUgPSB3YXJtdXBNcyA8PSAwIHx8IHdhaXRlZE1zID49IHdhcm11cE1zIHx8IHRhcmdldC5sZW5ndGggPj0gbWluQnVmZmVyQ2hhcnMgKiAyXG4gICAgICAgIGlmICghd2FybXVwQ29tcGxldGUpIHtcbiAgICAgICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgICAgIG1ldHJpY3NSZWYuY3VycmVudC5mcmFtZXNJZGxlICs9IDFcbiAgICAgICAgICAgIG1ldHJpY3NSZWYuY3VycmVudC5pZGxlVGltZU1zICs9IGR0XG4gICAgICAgICAgfVxuICAgICAgICAgIHJhZlJlZi5jdXJyZW50ID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRpY2spXG4gICAgICAgICAgaWYgKGRlYnVnICYmIHRpY2tOb3cgLSBtZXRyaWNzUmVmLmN1cnJlbnQubGFzdExvZ0F0ID4gNTAwKSB7XG4gICAgICAgICAgICBsb2dNZXRyaWNzKHRpY2tOb3cpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIHdhcm11cERvbmVSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgIG1ldHJpY3NSZWYuY3VycmVudC5mcmFtZXNXaXRoQnVmZmVyICs9IDFcbiAgICAgICAgaWYgKHJlbWFpbmluZyA+IG1ldHJpY3NSZWYuY3VycmVudC5tYXhCdWZmZXIpIG1ldHJpY3NSZWYuY3VycmVudC5tYXhCdWZmZXIgPSByZW1haW5pbmdcbiAgICAgIH1cblxuICAgICAgLy8gVmVsb2NpZGFkIGJhc2U6IHZhY2lhciBlbCBidWZmZXIgZW4gfnRhcmdldExhZ01zLlxuICAgICAgY29uc3QgY2hhcnNQZXJNcyA9IHJlbWFpbmluZyAvIHRhcmdldExhZ01zXG4gICAgICBsZXQgZWZmZWN0aXZlQ2hhcnNQZXJNcyA9IGNoYXJzUGVyTXNcblxuICAgICAgY29uc3QgYmFja2VuZFJhdGUgPSBiYWNrZW5kQ2hhcnNQZXJNc1JlZi5jdXJyZW50XG5cbiAgICAgIGlmIChhZGFwdFRvQmFja2VuZFJhdGUgJiYgYmFja2VuZFJhdGUgPiAwKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGFyZ2V0QnVmZmVyTXMgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgLy8gQ29udHJvbCBwcm9wb3JjaW9uYWw6IG1hbnRlbmVyIGVsIGJ1ZmZlciBlbiB0b3JubyBhbCBjb2xjaMOzblxuICAgICAgICAgIC8vIG9iamV0aXZvLiBTaSBidWZmZXJNcyA8IHRhcmdldCDihpIgZnJlbmFtb3MgcG9yIGRlYmFqbyBkZWwgYmFja2VuZFxuICAgICAgICAgIC8vIHBhcmEgYWN1bXVsYXI7IHNpIGJ1ZmZlck1zID4gdGFyZ2V0IOKGkiBhY2VsZXJhbW9zIHBhcmEgZGVzY2FyZ2FyLlxuICAgICAgICAgIC8vIEVuIGVxdWlsaWJyaW8sIHBpbnRhbW9zIGFsIHJpdG1vIHByb21lZGlvIGRlbCBiYWNrZW5kLlxuICAgICAgICAgIC8vIFBpc28gYWJzb2x1dG86IGVsIGNvbGNow7NuIG51bmNhIGJhamEgZGUgYG1pbkJ1ZmZlckNoYXJzYCBhdW5xdWVcbiAgICAgICAgICAvLyBlbCBiYWNrZW5kIGVzdMOpIG1hbmRhbmRvIGxlbnRvIGFsIGluaWNpbyBkZWwgc3RyZWFtLlxuICAgICAgICAgIGNvbnN0IHRhcmdldEJ1ZmZlckNoYXJzID0gTWF0aC5tYXgobWluQnVmZmVyQ2hhcnMsIHRhcmdldEJ1ZmZlck1zICogYmFja2VuZFJhdGUpXG4gICAgICAgICAgY29uc3QgYnVmZmVyRGVsdGEgPSByZW1haW5pbmcgLSB0YXJnZXRCdWZmZXJDaGFyc1xuICAgICAgICAgIC8vIENvcnJlY2Npw7NuIHRpZW5lIHVuaWRhZGVzIGRlIGNoYXJzL21zLiBidWZmZXJDb3JyZWN0aW9uTXMgY29udHJvbGFcbiAgICAgICAgICAvLyBxdcOpIHRhbiByw6FwaWRvIGVsIGJ1ZmZlciByZWFsIGNvbnZlcmdlIGFsIG9iamV0aXZvLlxuICAgICAgICAgIGNvbnN0IGNvcnJlY3Rpb24gPSBidWZmZXJEZWx0YSAvIE1hdGgubWF4KDEsIGJ1ZmZlckNvcnJlY3Rpb25NcylcbiAgICAgICAgICBlZmZlY3RpdmVDaGFyc1Blck1zID0gTWF0aC5tYXgoMCwgYmFja2VuZFJhdGUgKyBjb3JyZWN0aW9uKVxuICAgICAgICAgIC8vIEFjb3RhciBwb3IgbGEgdmVsb2NpZGFkIGRlIFwidmFjaWFyIGVuIHRhcmdldExhZ01zXCIgcGFyYSBxdWUgc2lcbiAgICAgICAgICAvLyBkZSBwcm9udG8gaGF5IHVuIHBpY28gZ2lnYW50ZSBkZSBidWZmZXIgbm8gc2FsZ2Ftb3MgZGlzcGFyYWRvcy5cbiAgICAgICAgICBlZmZlY3RpdmVDaGFyc1Blck1zID0gTWF0aC5taW4oZWZmZWN0aXZlQ2hhcnNQZXJNcywgY2hhcnNQZXJNcylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBNb2RvIHNpbXBsZTogY2FwIGEgbGEgdGFzYSBkZWwgYmFja2VuZCAqIGZhY3Rvci5cbiAgICAgICAgICBjb25zdCBjYXAgPSBiYWNrZW5kUmF0ZSAqIGJhY2tlbmRSYXRlRmFjdG9yXG4gICAgICAgICAgZWZmZWN0aXZlQ2hhcnNQZXJNcyA9IE1hdGgubWluKGVmZmVjdGl2ZUNoYXJzUGVyTXMsIGNhcClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCByYXdTdGVwID0gTWF0aC5jZWlsKGVmZmVjdGl2ZUNoYXJzUGVyTXMgKiBkdClcbiAgICAgIGNvbnN0IHN0ZXAgPSBNYXRoLm1heChtaW5DaGFyc1BlckZyYW1lLCBNYXRoLm1pbihtYXhDaGFyc1BlckZyYW1lLCByYXdTdGVwKSlcblxuICAgICAgbGV0IG5leHRMZW4gPSBNYXRoLm1pbih0YXJnZXQubGVuZ3RoLCBjdXJyZW50TGVuICsgc3RlcClcblxuICAgICAgaWYgKHNuYXBUb1dvcmRCb3VuZGFyeSAmJiBuZXh0TGVuIDwgdGFyZ2V0Lmxlbmd0aCkge1xuICAgICAgICBjb25zdCBzbGljZSA9IHRhcmdldC5zbGljZShjdXJyZW50TGVuLCBuZXh0TGVuKVxuICAgICAgICBjb25zdCBsYXN0Qm91bmRhcnkgPSBNYXRoLm1heChzbGljZS5sYXN0SW5kZXhPZignICcpLCBzbGljZS5sYXN0SW5kZXhPZignXFxuJyksIHNsaWNlLmxhc3RJbmRleE9mKCdcXHQnKSlcbiAgICAgICAgaWYgKGxhc3RCb3VuZGFyeSA+PSAwKSB7XG4gICAgICAgICAgbmV4dExlbiA9IGN1cnJlbnRMZW4gKyBsYXN0Qm91bmRhcnkgKyAxXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5leHRMZW4gIT09IGN1cnJlbnRMZW4pIHtcbiAgICAgICAgaWYgKGRlYnVnKSBtZXRyaWNzUmVmLmN1cnJlbnQudG90YWxDaGFyc0VtaXR0ZWQgKz0gbmV4dExlbiAtIGN1cnJlbnRMZW5cbiAgICAgICAgZGlzcGxheWVkTGVuUmVmLmN1cnJlbnQgPSBuZXh0TGVuXG4gICAgICAgIHNldERpc3BsYXllZCh0YXJnZXQuc2xpY2UoMCwgbmV4dExlbikpXG4gICAgICB9XG5cbiAgICAgIGlmIChkZWJ1ZyAmJiB0aWNrTm93IC0gbWV0cmljc1JlZi5jdXJyZW50Lmxhc3RMb2dBdCA+IDUwMCkge1xuICAgICAgICBsb2dNZXRyaWNzKHRpY2tOb3cpXG4gICAgICB9XG5cbiAgICAgIHJhZlJlZi5jdXJyZW50ID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRpY2spXG4gICAgfVxuXG4gICAgcmFmUmVmLmN1cnJlbnQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljaylcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAocmFmUmVmLmN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyYWZSZWYuY3VycmVudClcbiAgICAgICAgcmFmUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgICBsYXN0VGlja1JlZi5jdXJyZW50ID0gMFxuICAgIH1cbiAgfSwgW1xuICAgIHRhcmdldFRleHQsXG4gICAgZW5hYmxlZCxcbiAgICBtaW5DaGFyc1BlckZyYW1lLFxuICAgIG1heENoYXJzUGVyRnJhbWUsXG4gICAgdGFyZ2V0TGFnTXMsXG4gICAgc25hcFRvV29yZEJvdW5kYXJ5LFxuICAgIGFkYXB0VG9CYWNrZW5kUmF0ZSxcbiAgICBiYWNrZW5kUmF0ZUZhY3RvcixcbiAgICB0YXJnZXRCdWZmZXJNcyxcbiAgICBidWZmZXJDb3JyZWN0aW9uTXMsXG4gICAgbWluQnVmZmVyQ2hhcnMsXG4gICAgd2FybXVwTXMsXG4gICAgZGVidWcsXG4gICAgZGVidWdMYWJlbCxcbiAgXSlcblxuICByZXR1cm4gZGlzcGxheWVkXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBLFNBQVNBLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQTJFbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQU1DLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQzlCQyxVQUFrQixFQUFBQyxJQUFBLEVBZ0JQO0VBQUEsSUFkVEMsT0FBTyxHQUFBRCxJQUFBLENBQVBDLE9BQU87SUFBQUMscUJBQUEsR0FBQUYsSUFBQSxDQUNQRyxnQkFBZ0I7SUFBaEJBLGdCQUFnQixHQUFBRCxxQkFBQSxjQUFHLENBQUMsR0FBQUEscUJBQUE7SUFBQUUscUJBQUEsR0FBQUosSUFBQSxDQUNwQkssZ0JBQWdCO0lBQWhCQSxnQkFBZ0IsR0FBQUQscUJBQUEsY0FBRyxFQUFFLEdBQUFBLHFCQUFBO0lBQUFFLGdCQUFBLEdBQUFOLElBQUEsQ0FDckJPLFdB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SUFBSSxDQUFDQyxHQUFHLENBQUMrQyxLQUFLLENBQUNFLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRUYsS0FBSyxDQUFDRSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUVGLEtBQUssQ0FBQ0UsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZHLElBQUlELFlBQVksSUFBSSxDQUFDLEVBQUU7VUFDckJGLE9BQU8sR0FBR2YsVUFBVSxHQUFHaUIsWUFBWSxHQUFHLENBQUM7UUFDekM7TUFDRjtNQUVBLElBQUlGLE9BQU8sS0FBS2YsVUFBVSxFQUFFO1FBQzFCLElBQUlyRSxLQUFLLEVBQUVrQixVQUFVLENBQUNlLE9BQU8sQ0FBQ1osaUJBQWlCLElBQUkrRCxPQUFPLEdBQUdmLFVBQVU7UUFDdkU1RCxlQUFlLENBQUN3QixPQUFPLEdBQUdtRCxPQUFPO1FBQ2pDN0UsWUFBWSxDQUFDeUQsTUFBTSxDQUFDcUIsS0FBSyxDQUFDLENBQUMsRUFBRUQsT0FBTyxDQUFDLENBQUM7TUFDeEM7TUFFQSxJQUFJcEYsS0FBSyxJQUFJd0QsT0FBTyxHQUFHdEMsVUFBVSxDQUFDZSxPQUFPLENBQUNOLFNBQVMsR0FBRyxHQUFHLEVBQUU7UUFDekQ0QixVQUFVLENBQUNDLE9BQU8sQ0FBQztNQUNyQjtNQUVBN0MsTUFBTSxDQUFDc0IsT0FBTyxHQUFHc0MscUJBQXFCLENBQUNMLEtBQUksQ0FBQztJQUM5QyxDQUFDO0lBRUR2RCxNQUFNLENBQUNzQixPQUFPLEdBQUdzQyxxQkFBcUIsQ0FBQ0wsS0FBSSxDQUFDO0lBRTVDLE9BQU8sWUFBTTtNQUNYLElBQUl2RCxNQUFNLENBQUNzQixPQUFPLElBQUksSUFBSSxFQUFFO1FBQzFCUyxvQkFBb0IsQ0FBQy9CLE1BQU0sQ0FBQ3NCLE9BQU8sQ0FBQztRQUNwQ3RCLE1BQU0sQ0FBQ3NCLE9BQU8sR0FBRyxJQUFJO01BQ3ZCO01BQ0FyQixXQUFXLENBQUNxQixPQUFPLEdBQUcsQ0FBQztJQUN6QixDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQ0R4RCxVQUFVLEVBQ1ZFLE9BQU8sRUFDUEUsZ0JBQWdCLEVBQ2hCRSxnQkFBZ0IsRUFDaEJFLFdBQVcsRUFDWEUsa0JBQWtCLEVBQ2xCRSxrQkFBa0IsRUFDbEJFLGlCQUFpQixFQUNqQkMsY0FBYyxFQUNkRSxrQkFBa0IsRUFDbEJFLGNBQWMsRUFDZEUsUUFBUSxFQUNSRSxLQUFLLEVBQ0xFLFVBQVUsQ0FDWCxDQUFDO0VBRUYsT0FBT0ksU0FBUztBQUNsQixDQUFDIiwiaWdub3JlTGlzdCI6W119
303
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZVNtb290aFN0cmVhbVRleHQiLCJ0YXJnZXRUZXh0IiwiX3JlZiIsImVuYWJsZWQiLCJfcmVmJG1pbkNoYXJzUGVyRnJhbWUiLCJtaW5DaGFyc1BlckZyYW1lIiwiX3JlZiRtYXhDaGFyc1BlckZyYW1lIiwibWF4Q2hhcnNQZXJGcmFtZSIsIl9yZWYkdGFyZ2V0TGFnTXMiLCJ0YXJnZXRMYWdNcyIsIl9yZWYkc25hcFRvV29yZEJvdW5kYSIsInNuYXBUb1dvcmRCb3VuZGFyeSIsIl9yZWYkYWRhcHRUb0JhY2tlbmRSYSIsImFkYXB0VG9CYWNrZW5kUmF0ZSIsIl9yZWYkYmFja2VuZFJhdGVGYWN0byIsImJhY2tlbmRSYXRlRmFjdG9yIiwiX3JlZiR0YXJnZXRCdWZmZXJNcyIsInRhcmdldEJ1ZmZlck1zIiwiX3JlZiRidWZmZXJDb3JyZWN0aW9uIiwiYnVmZmVyQ29ycmVjdGlvbk1zIiwiX3JlZiRtaW5CdWZmZXJDaGFycyIsIm1pbkJ1ZmZlckNoYXJzIiwiX3JlZiR3YXJtdXBNcyIsIndhcm11cE1zIiwiX3JlZiRkZWJ1ZyIsImRlYnVnIiwiX3JlZiRkZWJ1Z0xhYmVsIiwiZGVidWdMYWJlbCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImRpc3BsYXllZCIsInNldERpc3BsYXllZCIsInRhcmdldFJlZiIsImRpc3BsYXllZExlblJlZiIsImxlbmd0aCIsInJhZlJlZiIsImxhc3RUaWNrUmVmIiwibGFzdFRhcmdldExlblJlZiIsImxhc3RUYXJnZXRVcGRhdGVSZWYiLCJiYWNrZW5kQ2hhcnNQZXJNc1JlZiIsImZpcnN0Q2h1bmtBdFJlZiIsIndhcm11cERvbmVSZWYiLCJtZXRyaWNzUmVmIiwiZnJhbWVzV2l0aEJ1ZmZlciIsImZyYW1lc0lkbGUiLCJ0b3RhbENoYXJzRW1pdHRlZCIsIm1heEJ1ZmZlciIsImlkbGVUaW1lTXMiLCJjaHVua3NTZWVuIiwiaW50ZXJDaHVua1N1bSIsImludGVyQ2h1bmtNYXgiLCJsYXN0TG9nQXQiLCJzdHJlYW1TdGFydEF0Iiwibm93IiwicGVyZm9ybWFuY2UiLCJEYXRlIiwicHJldlRhcmdldExlbiIsImN1cnJlbnQiLCJkZWx0YUNoYXJzIiwicHJldlRhcmdldEF0IiwiZHQiLCJNYXRoIiwibWF4IiwicmF0ZSIsInByZXZSYXRlIiwibSIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwidG90YWxNcyIsImNvbnNvbGUiLCJsb2ciLCJjb25jYXQiLCJyb3VuZCIsImZpbmFsQ2hhcnMiLCJiYWNrZW5kQXZnQ2hhcnNQZXJTZWMiLCJhdmdJbnRlckNodW5rTXMiLCJtYXhJbnRlckNodW5rTXMiLCJpZGxlUmF0aW8iLCJ0b0ZpeGVkIiwidW5kZWZpbmVkIiwibG9nTWV0cmljcyIsInRpY2tOb3ciLCJlbCIsImJ1ZmZlciIsIndpbmRvd01zIiwidG90YWxGcmFtZXMiLCJmcHMiLCJiYWNrZW5kUmF0ZSIsImVsYXBzZWRNcyIsInRhcmdldCIsImJhY2tlbmRDaGFyc1BlclNlYyIsInRpY2siLCJwcmV2IiwibWluIiwiY3VycmVudExlbiIsInJlbWFpbmluZyIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImZpcnN0QXQiLCJ3YWl0ZWRNcyIsIndhcm11cENvbXBsZXRlIiwiY2hhcnNQZXJNcyIsImVmZmVjdGl2ZUNoYXJzUGVyTXMiLCJyZW5kZXJSYXRlQ2FwIiwiZWZmZWN0aXZlQnVmZmVyUmF0ZSIsInRhcmdldEJ1ZmZlckNoYXJzIiwiYnVmZmVyRGVsdGEiLCJjb3JyZWN0aW9uIiwiY2FwIiwicmF3U3RlcCIsImNlaWwiLCJzdGVwIiwibmV4dExlbiIsInNsaWNlIiwibGFzdEJvdW5kYXJ5IiwibGFzdEluZGV4T2YiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlU21vb3RoU3RyZWFtVGV4dC91c2VTbW9vdGhTdHJlYW1UZXh0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuXG50eXBlIFVzZVNtb290aFN0cmVhbVRleHRPcHRpb25zID0ge1xuICAvKiogU2kgZXN0w6EgZGVzaGFiaWxpdGFkbywgZGV2dWVsdmUgZWwgdGFyZ2V0IHRhbCBjdWFsIChzaW4gYW5pbWFjacOzbikuICovXG4gIGVuYWJsZWQ6IGJvb2xlYW5cbiAgLyoqIENhbnRpZGFkIG3DrW5pbWEgZGUgY2hhcnMgYSBsaWJlcmFyIHBvciBmcmFtZSBjdWFuZG8gaGF5IGJ1ZmZlci4gKi9cbiAgbWluQ2hhcnNQZXJGcmFtZT86IG51bWJlclxuICAvKiogQ290YSBzdXBlcmlvciBkZSBjaGFycyBwb3IgZnJhbWUgcGFyYSBldml0YXIgc2FsdG9zIGdyYW5kZXMuICovXG4gIG1heENoYXJzUGVyRnJhbWU/OiBudW1iZXJcbiAgLyoqXG4gICAqIExhZyBvYmpldGl2byAobXMpIGVudHJlIGVsIHRleHRvIHJlY2liaWRvIHkgZWwgbW9zdHJhZG8uIEVsIGhvb2sgY2FsY3VsYVxuICAgKiBkaW7DoW1pY2FtZW50ZSBlbCBzdGVwIHBvciBmcmFtZSBwYXJhIHZhY2lhciBlbCBidWZmZXIgZW4gfnRhcmdldExhZ01zLlxuICAgKiBWYWxvcmVzIG3DoXMgYmFqb3MgPSBzZSBwb25lIGFsIGTDrWEgbcOhcyByw6FwaWRvIChtZW5vcyBcInN1YXZlXCIpLlxuICAgKi9cbiAgdGFyZ2V0TGFnTXM/OiBudW1iZXJcbiAgLyoqXG4gICAqIFNpIGVzdMOhIGFjdGl2bywgYWwgYXZhbnphciBzZSBkZXRpZW5lIGVuIGVsIMO6bHRpbW8gc2VwYXJhZG9yIGRlIHBhbGFicmFcbiAgICogKGVzcGFjaW8sIHNhbHRvIGRlIGzDrW5lYSwgc2lnbm9zIGRlIHB1bnR1YWNpw7NuKSBwYXJhIGV2aXRhciByZW5kZXJpemFyXG4gICAqIG1hcmtkb3duIFwiY29ydGFkbyBhIGxhIG1pdGFkXCIgeSBkYXIgdW5hIHNlbnNhY2nDs24gbcOhcyBuYXR1cmFsLlxuICAgKi9cbiAgc25hcFRvV29yZEJvdW5kYXJ5PzogYm9vbGVhblxuICAvKipcbiAgICogU2kgZXN0w6EgYWN0aXZvLCBtaWRlIGxhIHRhc2EgcHJvbWVkaW8gYSBsYSBxdWUgY3JlY2UgZWwgdGFyZ2V0IChjYWRlbmNpYVxuICAgKiBkZWwgYmFja2VuZCBlbiBjaGFycy9tcykgeSBsaW1pdGEgbGEgdmVsb2NpZGFkIGRlIHBpbnRhZG8gYSBlc2EgdGFzYVxuICAgKiAobXVsdGlwbGljYWRhIHBvciBgYmFja2VuZFJhdGVGYWN0b3JgKS4gRXN0byBldml0YSBlbCBjYXNvIHTDrXBpY28gZGVcbiAgICogXCJwaW50byByw6FwaWRvIGhhc3RhIHZhY2lhciBlbCBidWZmZXIgeSBkZXNwdcOpcyBzZSBjb25nZWxhIGVzcGVyYW5kb1xuICAgKiBhbCBwcsOzeGltbyBjaHVuayBkZWwgYmFja2VuZFwiLlxuICAgKi9cbiAgYWRhcHRUb0JhY2tlbmRSYXRlPzogYm9vbGVhblxuICAvKipcbiAgICogRmFjdG9yIGFwbGljYWRvIGEgbGEgdGFzYSBkZWwgYmFja2VuZCBjdWFuZG8gYGFkYXB0VG9CYWNrZW5kUmF0ZWAgZXN0w6FcbiAgICogYWN0aXZvLiBWYWxvcmVzIDwgMSBkZWphbiB1biBjb2xjaMOzbiBjcmVjaWVudGUgKG3DoXMgdG9sZXJhbnRlIGEgcGF1c2FzKTtcbiAgICogdmFsb3JlcyA+IDEgaW50ZW50YW4gYWxjYW56YXIuIERlZmF1bHQ6IDAuOTUuXG4gICAqL1xuICBiYWNrZW5kUmF0ZUZhY3Rvcj86IG51bWJlclxuICAvKipcbiAgICogQ29sY2jDs24gb2JqZXRpdm8gZGUgYnVmZmVyIGV4cHJlc2FkbyBlbiBtcyAoY3XDoW50byB0aWVtcG8gZGUgdGV4dG8gcXVlcmVtb3NcbiAgICogdGVuZXIgc2llbXByZSBhZGVsYW50YWRvIGFsIHBpbnRhZG8pLiBTaSBlc3TDoSBkZWZpbmlkbyBqdW50byBjb25cbiAgICogYGFkYXB0VG9CYWNrZW5kUmF0ZWAsIHNlIHVzYSB1biBjb250cm9sIHByb3BvcmNpb25hbDogY3VhbmRvIGVsIGJ1ZmZlclxuICAgKiBiYWphIGRlbCBvYmpldGl2bywgbGEgdmVsb2NpZGFkIGNhZSBwb3IgZGViYWpvIGRlIGxhIGRlbCBiYWNrZW5kIHBhcmFcbiAgICogcmVsbGVuYXJsbzsgY3VhbmRvIGxvIHN1cGVyYSwgc2UgYWNlbGVyYSBwYXJhIGRlc2NhcmdhcmxvLiBBc8OtIGxhXG4gICAqIGFuaW1hY2nDs24gYWJzb3JiZSBwYXVzYXMgZGVsIGJhY2tlbmQgc2luIHF1ZWRhcnNlIGlkbGUuXG4gICAqXG4gICAqIFZhbG9yIHJlY29tZW5kYWRvOiAzMDDigJM1MDBtcyBzZWfDum4gbGEgZXN0YWJpbGlkYWQgZGVsIGJhY2tlbmQuXG4gICAqL1xuICB0YXJnZXRCdWZmZXJNcz86IG51bWJlclxuICAvKipcbiAgICogQ29uc3RhbnRlIGRlIHRpZW1wbyAobXMpIGRlbCBjb250cm9sYWRvciBkZWwgYnVmZmVyLiBDdWFudG8gbcOhcyBiYWpvLFxuICAgKiBtw6FzIGFncmVzaXZhbWVudGUgY29ycmlnZSBkZXN2w61vcy4gRGVmYXVsdDogNTAwLlxuICAgKi9cbiAgYnVmZmVyQ29ycmVjdGlvbk1zPzogbnVtYmVyXG4gIC8qKlxuICAgKiBQaXNvIGFic29sdXRvIGRlbCBjb2xjaMOzbiBlbiBjaGFyczogZWwgYHRhcmdldEJ1ZmZlckNoYXJzYCBjYWxjdWxhZG8gYVxuICAgKiBwYXJ0aXIgZGUgYHRhcmdldEJ1ZmZlck1zIMOXIGJhY2tlbmRSYXRlYCBudW5jYSBiYWphIGRlIGVzdGUgdmFsb3IuIMOadGlsXG4gICAqIGFsIGNvbWllbnpvIGRlbCBzdHJlYW0gY3VhbmRvIGxhIHRhc2EgZXN0aW1hZGEgZGVsIGJhY2tlbmQgZXMgYmFqYS5cbiAgICogRGVmYXVsdDogNDAuXG4gICAqL1xuICBtaW5CdWZmZXJDaGFycz86IG51bWJlclxuICAvKipcbiAgICogV2FybXVwOiBtcyBxdWUgZWwgaG9vayBlc3BlcmEgXCJhY3VtdWxhbmRvXCIgYW50ZXMgZGUgZW1wZXphciBhIHBpbnRhcixcbiAgICogaW5jbHVzbyBzaSB5YSBoYXkgY2hhcnMgZW4gZWwgYnVmZmVyLiBFdml0YSBlbCB0w61waWNvIFwiYXJyYW5xdWUgcsOhcGlkbyxcbiAgICogY29uZ2VsYW1pZW50b1wiIGN1YW5kbyBlbCBwcmltZXIgY2h1bmsgbGxlZ2EgYW50ZXMgcXVlIGVsIHNlZ3VuZG8gc2VcbiAgICogdGFyZGEgbXVjaG8uIFNpIHNlIGRlZmluZSBjb21vIDAsIG5vIGhheSB3YXJtdXAuIERlZmF1bHQ6IDAuXG4gICAqL1xuICB3YXJtdXBNcz86IG51bWJlclxuICAvKipcbiAgICogTW9kbyBkZWJ1ZzogaW1wcmltZSBtw6l0cmljYXMgY2FkYSB+NTAwbXMgbWllbnRyYXMgYGVuYWJsZWQgPT09IHRydWVgLlxuICAgKiDDmnRpbCBwYXJhIGFqdXN0YXIgYHRhcmdldExhZ01zYCwgYG1heENoYXJzUGVyRnJhbWVgIHkgZXZhbHVhciBzaSBjb252aWVuZVxuICAgKiBhY3RpdmFyIGBhZGFwdFRvQmFja2VuZFJhdGVgLlxuICAgKi9cbiAgZGVidWc/OiBib29sZWFuXG4gIC8qKiBFdGlxdWV0YSBvcGNpb25hbCBwYXJhIGRpc3Rpbmd1aXIgbcO6bHRpcGxlcyBpbnN0YW5jaWFzIGVuIGxvcyBsb2dzLiAqL1xuICBkZWJ1Z0xhYmVsPzogc3RyaW5nXG59XG5cbi8qKlxuICogSG9vayBxdWUgZGVzYWNvcGxhIGxhIGNhZGVuY2lhIGRlIGxsZWdhZGEgZGVsIHRleHRvIChzdHJlYW0gU1NFKSBkZSBsYVxuICogY2FkZW5jaWEgZGUgcmVuZGVyaXphZG8uIFVzYSBgcmVxdWVzdEFuaW1hdGlvbkZyYW1lYCBwYXJhIGxpYmVyYXIgY2hhcnNcbiAqIGEgcml0bW8gY29uc3RhbnRlIGhhY2lhIGVsIERPTSwgZWxpbWluYW5kbyBsb3MgXCJmcmVub3NcIiBxdWUgc2UgcHJvZHVjZW5cbiAqIGN1YW5kbyBlbCBiYWNrZW5kIGVtaXRlIHLDoWZhZ2FzIGRlIHRva2Vucy5cbiAqXG4gKiBDdWFuZG8gYGVuYWJsZWRgIHBhc2EgYSBmYWxzZSAoZmluIGRlIHN0cmVhbSksIGVsIHRleHRvIHNlIGNvbXBsZXRhIGFsXG4gKiBpbnN0YW50ZS4gRHVyYW50ZSBlbCBzdHJlYW1pbmcsIGVsIGJ1ZmZlciBzZSB2YWPDrWEgZGluw6FtaWNhbWVudGUgYXB1bnRhbmRvXG4gKiBhbCBsYWcgY29uZmlndXJhZG8uXG4gKi9cbmV4cG9ydCBjb25zdCB1c2VTbW9vdGhTdHJlYW1UZXh0ID0gKFxuICB0YXJnZXRUZXh0OiBzdHJpbmcsXG4gIHtcbiAgICBlbmFibGVkLFxuICAgIG1pbkNoYXJzUGVyRnJhbWUgPSAxLFxuICAgIG1heENoYXJzUGVyRnJhbWUgPSAyNCxcbiAgICB0YXJnZXRMYWdNcyA9IDQ1MCxcbiAgICBzbmFwVG9Xb3JkQm91bmRhcnkgPSBmYWxzZSxcbiAgICBhZGFwdFRvQmFja2VuZFJhdGUgPSB0cnVlLFxuICAgIGJhY2tlbmRSYXRlRmFjdG9yID0gMC45NSxcbiAgICB0YXJnZXRCdWZmZXJNcyA9IDYwMCxcbiAgICBidWZmZXJDb3JyZWN0aW9uTXMgPSA1MDAsXG4gICAgbWluQnVmZmVyQ2hhcnMgPSA3MCxcbiAgICB3YXJtdXBNcyA9IDQwMCxcbiAgICBkZWJ1ZyA9IGZhbHNlLFxuICAgIGRlYnVnTGFiZWwgPSAnc21vb3RoU3RyZWFtJyxcbiAgfTogVXNlU21vb3RoU3RyZWFtVGV4dE9wdGlvbnNcbik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IFtkaXNwbGF5ZWQsIHNldERpc3BsYXllZF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCgpID0+IChlbmFibGVkID8gJycgOiB0YXJnZXRUZXh0KSlcblxuICBjb25zdCB0YXJnZXRSZWYgPSB1c2VSZWYodGFyZ2V0VGV4dClcbiAgY29uc3QgZGlzcGxheWVkTGVuUmVmID0gdXNlUmVmKGRpc3BsYXllZC5sZW5ndGgpXG4gIGNvbnN0IHJhZlJlZiA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKVxuICBjb25zdCBsYXN0VGlja1JlZiA9IHVzZVJlZjxudW1iZXI+KDApXG5cbiAgLy8gTWVkaWNpw7NuIGRlIGxhIGNhZGVuY2lhIGRlbCBiYWNrZW5kOiBzZSBhY3R1YWxpemEgY3VhbmRvIGNhbWJpYSB0YXJnZXRUZXh0LlxuICBjb25zdCBsYXN0VGFyZ2V0TGVuUmVmID0gdXNlUmVmPG51bWJlcj4oMClcbiAgY29uc3QgbGFzdFRhcmdldFVwZGF0ZVJlZiA9IHVzZVJlZjxudW1iZXI+KDApXG4gIC8vIEVzdGltYWNpw7NuIEVNQSBkZSBjaGFycy9tcyBwcm9kdWNpZG9zIHBvciBlbCBiYWNrZW5kLlxuICBjb25zdCBiYWNrZW5kQ2hhcnNQZXJNc1JlZiA9IHVzZVJlZjxudW1iZXI+KDApXG4gIC8vIFRpbWVzdGFtcCBkZWwgcHJpbWVyIGNodW5rIHJlY2liaWRvIChwYXJhIHdhcm11cCkuXG4gIGNvbnN0IGZpcnN0Q2h1bmtBdFJlZiA9IHVzZVJlZjxudW1iZXI+KDApXG4gIC8vIFNpIGVsIHdhcm11cCB5YSB0ZXJtaW7DsyAodW5hIHZleiB0cnVlLCBubyB2dWVsdmUgYSBhY3RpdmFyc2UgZW4gZXN0ZSBzdHJlYW0pLlxuICBjb25zdCB3YXJtdXBEb25lUmVmID0gdXNlUmVmPGJvb2xlYW4+KGZhbHNlKVxuXG4gIC8vIE3DqXRyaWNhcyBwYXJhIGRlYnVnXG4gIGNvbnN0IG1ldHJpY3NSZWYgPSB1c2VSZWYoe1xuICAgIGZyYW1lc1dpdGhCdWZmZXI6IDAsXG4gICAgZnJhbWVzSWRsZTogMCxcbiAgICB0b3RhbENoYXJzRW1pdHRlZDogMCxcbiAgICBtYXhCdWZmZXI6IDAsXG4gICAgaWRsZVRpbWVNczogMCxcbiAgICBjaHVua3NTZWVuOiAwLFxuICAgIGludGVyQ2h1bmtTdW06IDAsXG4gICAgaW50ZXJDaHVua01heDogMCxcbiAgICBsYXN0TG9nQXQ6IDAsXG4gICAgc3RyZWFtU3RhcnRBdDogMCxcbiAgfSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG5vdyA9IHR5cGVvZiBwZXJmb3JtYW5jZSAhPT0gJ3VuZGVmaW5lZCcgPyBwZXJmb3JtYW5jZS5ub3coKSA6IERhdGUubm93KClcbiAgICBjb25zdCBwcmV2VGFyZ2V0TGVuID0gbGFzdFRhcmdldExlblJlZi5jdXJyZW50XG4gICAgY29uc3QgZGVsdGFDaGFycyA9IHRhcmdldFRleHQubGVuZ3RoIC0gcHJldlRhcmdldExlblxuICAgIGNvbnN0IHByZXZUYXJnZXRBdCA9IGxhc3RUYXJnZXRVcGRhdGVSZWYuY3VycmVudFxuXG4gICAgaWYgKGVuYWJsZWQgJiYgZGVsdGFDaGFycyA+IDApIHtcbiAgICAgIGlmIChmaXJzdENodW5rQXRSZWYuY3VycmVudCA9PT0gMCkgZmlyc3RDaHVua0F0UmVmLmN1cnJlbnQgPSBub3dcbiAgICB9XG5cbiAgICBpZiAoZW5hYmxlZCAmJiBkZWx0YUNoYXJzID4gMCAmJiBwcmV2VGFyZ2V0QXQgPiAwKSB7XG4gICAgICBjb25zdCBkdCA9IE1hdGgubWF4KDEsIG5vdyAtIHByZXZUYXJnZXRBdClcbiAgICAgIGNvbnN0IHJhdGUgPSBkZWx0YUNoYXJzIC8gZHRcbiAgICAgIGNvbnN0IHByZXZSYXRlID0gYmFja2VuZENoYXJzUGVyTXNSZWYuY3VycmVudFxuICAgICAgLy8gRU1BIHN1YXZlIChhbHBoYSA9IDAuMikgcGFyYSBhYnNvcmJlciBqaXR0ZXIgeSBzZWd1aXIgbGEgdGVuZGVuY2lhLlxuICAgICAgYmFja2VuZENoYXJzUGVyTXNSZWYuY3VycmVudCA9IHByZXZSYXRlID09PSAwID8gcmF0ZSA6IHByZXZSYXRlICogMC44ICsgcmF0ZSAqIDAuMlxuXG4gICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgY29uc3QgbSA9IG1ldHJpY3NSZWYuY3VycmVudFxuICAgICAgICBtLmNodW5rc1NlZW4gKz0gMVxuICAgICAgICBtLmludGVyQ2h1bmtTdW0gKz0gZHRcbiAgICAgICAgaWYgKGR0ID4gbS5pbnRlckNodW5rTWF4KSBtLmludGVyQ2h1bmtNYXggPSBkdFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZW5hYmxlZCAmJiB0YXJnZXRUZXh0Lmxlbmd0aCAhPT0gcHJldlRhcmdldExlbikge1xuICAgICAgbGFzdFRhcmdldExlblJlZi5jdXJyZW50ID0gdGFyZ2V0VGV4dC5sZW5ndGhcbiAgICAgIGxhc3RUYXJnZXRVcGRhdGVSZWYuY3VycmVudCA9IG5vd1xuICAgIH1cblxuICAgIHRhcmdldFJlZi5jdXJyZW50ID0gdGFyZ2V0VGV4dFxuXG4gICAgaWYgKCFlbmFibGVkKSB7XG4gICAgICBpZiAocmFmUmVmLmN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyYWZSZWYuY3VycmVudClcbiAgICAgICAgcmFmUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgICBsYXN0VGlja1JlZi5jdXJyZW50ID0gMFxuICAgICAgaWYgKGRlYnVnICYmIG1ldHJpY3NSZWYuY3VycmVudC5zdHJlYW1TdGFydEF0ID4gMCkge1xuICAgICAgICBjb25zdCBtID0gbWV0cmljc1JlZi5jdXJyZW50XG4gICAgICAgIGNvbnN0IHRvdGFsTXMgPSBub3cgLSBtLnN0cmVhbVN0YXJ0QXRcbiAgICAgICAgY29uc29sZS5sb2coYFske2RlYnVnTGFiZWx9XSBGSU5BTGAsIHtcbiAgICAgICAgICB0b3RhbE1zOiBNYXRoLnJvdW5kKHRvdGFsTXMpLFxuICAgICAgICAgIGZpbmFsQ2hhcnM6IHRhcmdldFRleHQubGVuZ3RoLFxuICAgICAgICAgIGJhY2tlbmRBdmdDaGFyc1BlclNlYzogbS5jaHVua3NTZWVuID4gMCA/IE1hdGgucm91bmQoKHRhcmdldFRleHQubGVuZ3RoIC8gdG90YWxNcykgKiAxMDAwKSA6IDAsXG4gICAgICAgICAgY2h1bmtzU2VlbjogbS5jaHVua3NTZWVuLFxuICAgICAgICAgIGF2Z0ludGVyQ2h1bmtNczogbS5jaHVua3NTZWVuID4gMCA/IE1hdGgucm91bmQobS5pbnRlckNodW5rU3VtIC8gbS5jaHVua3NTZWVuKSA6IDAsXG4gICAgICAgICAgbWF4SW50ZXJDaHVua01zOiBNYXRoLnJvdW5kKG0uaW50ZXJDaHVua01heCksXG4gICAgICAgICAgaWRsZVRpbWVNczogTWF0aC5yb3VuZChtLmlkbGVUaW1lTXMpLFxuICAgICAgICAgIGlkbGVSYXRpbzogdG90YWxNcyA+IDAgPyAobS5pZGxlVGltZU1zIC8gdG90YWxNcykudG9GaXhlZCgyKSA6ICcwJyxcbiAgICAgICAgICBtYXhCdWZmZXI6IG0ubWF4QnVmZmVyLFxuICAgICAgICB9KVxuICAgICAgICBtZXRyaWNzUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgICAgZnJhbWVzV2l0aEJ1ZmZlcjogMCxcbiAgICAgICAgICBmcmFtZXNJZGxlOiAwLFxuICAgICAgICAgIHRvdGFsQ2hhcnNFbWl0dGVkOiAwLFxuICAgICAgICAgIG1heEJ1ZmZlcjogMCxcbiAgICAgICAgICBpZGxlVGltZU1zOiAwLFxuICAgICAgICAgIGNodW5rc1NlZW46IDAsXG4gICAgICAgICAgaW50ZXJDaHVua1N1bTogMCxcbiAgICAgICAgICBpbnRlckNodW5rTWF4OiAwLFxuICAgICAgICAgIGxhc3RMb2dBdDogMCxcbiAgICAgICAgICBzdHJlYW1TdGFydEF0OiAwLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZGlzcGxheWVkTGVuUmVmLmN1cnJlbnQgIT09IHRhcmdldFRleHQubGVuZ3RoKSB7XG4gICAgICAgIGRpc3BsYXllZExlblJlZi5jdXJyZW50ID0gdGFyZ2V0VGV4dC5sZW5ndGhcbiAgICAgICAgc2V0RGlzcGxheWVkKHRhcmdldFRleHQpXG4gICAgICB9XG4gICAgICAvLyBSZXNldCBkZSBjYWRlbmNpYSBjdWFuZG8gc2UgYXBhZ2EgcGFyYSBubyBjb250YW1pbmFyIGVsIHByw7N4aW1vIHN0cmVhbS5cbiAgICAgIGxhc3RUYXJnZXRMZW5SZWYuY3VycmVudCA9IDBcbiAgICAgIGxhc3RUYXJnZXRVcGRhdGVSZWYuY3VycmVudCA9IDBcbiAgICAgIGJhY2tlbmRDaGFyc1Blck1zUmVmLmN1cnJlbnQgPSAwXG4gICAgICBmaXJzdENodW5rQXRSZWYuY3VycmVudCA9IDBcbiAgICAgIHdhcm11cERvbmVSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgaWYgKGRlYnVnICYmIG1ldHJpY3NSZWYuY3VycmVudC5zdHJlYW1TdGFydEF0ID09PSAwKSB7XG4gICAgICBtZXRyaWNzUmVmLmN1cnJlbnQuc3RyZWFtU3RhcnRBdCA9IG5vd1xuICAgICAgbWV0cmljc1JlZi5jdXJyZW50Lmxhc3RMb2dBdCA9IG5vd1xuICAgICAgY29uc29sZS5sb2coYFske2RlYnVnTGFiZWx9XSBTVEFSVGAsIHtcbiAgICAgICAgdGFyZ2V0TGFnTXMsXG4gICAgICAgIG1heENoYXJzUGVyRnJhbWUsXG4gICAgICAgIGFkYXB0VG9CYWNrZW5kUmF0ZSxcbiAgICAgICAgYmFja2VuZFJhdGVGYWN0b3IsXG4gICAgICAgIHRhcmdldEJ1ZmZlck1zLFxuICAgICAgICBidWZmZXJDb3JyZWN0aW9uTXMsXG4gICAgICAgIG1pbkJ1ZmZlckNoYXJzLFxuICAgICAgICB3YXJtdXBNcyxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKGRpc3BsYXllZExlblJlZi5jdXJyZW50ID4gdGFyZ2V0VGV4dC5sZW5ndGgpIHtcbiAgICAgIGRpc3BsYXllZExlblJlZi5jdXJyZW50ID0gMFxuICAgICAgc2V0RGlzcGxheWVkKCcnKVxuICAgIH1cblxuICAgIGlmIChyYWZSZWYuY3VycmVudCAhPSBudWxsKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBjb25zdCBsb2dNZXRyaWNzID0gKHRpY2tOb3c6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgbSA9IG1ldHJpY3NSZWYuY3VycmVudFxuICAgICAgY29uc3QgZWwgPSB0YXJnZXRSZWYuY3VycmVudFxuICAgICAgY29uc3QgYnVmZmVyID0gZWwubGVuZ3RoIC0gZGlzcGxheWVkTGVuUmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IHdpbmRvd01zID0gTWF0aC5tYXgoMSwgdGlja05vdyAtIG0ubGFzdExvZ0F0KVxuICAgICAgY29uc3QgdG90YWxGcmFtZXMgPSBtLmZyYW1lc1dpdGhCdWZmZXIgKyBtLmZyYW1lc0lkbGVcbiAgICAgIGNvbnN0IGZwcyA9IE1hdGgucm91bmQoKHRvdGFsRnJhbWVzIC8gd2luZG93TXMpICogMTAwMClcbiAgICAgIGNvbnN0IGJhY2tlbmRSYXRlID0gYmFja2VuZENoYXJzUGVyTXNSZWYuY3VycmVudFxuICAgICAgY29uc29sZS5sb2coYFske2RlYnVnTGFiZWx9XSB0aWNrYCwge1xuICAgICAgICBlbGFwc2VkTXM6IE1hdGgucm91bmQodGlja05vdyAtIG0uc3RyZWFtU3RhcnRBdCksXG4gICAgICAgIGJ1ZmZlcixcbiAgICAgICAgZGlzcGxheWVkOiBkaXNwbGF5ZWRMZW5SZWYuY3VycmVudCxcbiAgICAgICAgdGFyZ2V0OiBlbC5sZW5ndGgsXG4gICAgICAgIGZyYW1lc1dpdGhCdWZmZXI6IG0uZnJhbWVzV2l0aEJ1ZmZlcixcbiAgICAgICAgZnJhbWVzSWRsZTogbS5mcmFtZXNJZGxlLFxuICAgICAgICBpZGxlUmF0aW86IHRvdGFsRnJhbWVzID4gMCA/IChtLmZyYW1lc0lkbGUgLyB0b3RhbEZyYW1lcykudG9GaXhlZCgyKSA6ICcwJyxcbiAgICAgICAgZnBzLFxuICAgICAgICBiYWNrZW5kQ2hhcnNQZXJTZWM6IE1hdGgucm91bmQoYmFja2VuZFJhdGUgKiAxMDAwKSxcbiAgICAgICAgYXZnSW50ZXJDaHVua01zOiBtLmNodW5rc1NlZW4gPiAwID8gTWF0aC5yb3VuZChtLmludGVyQ2h1bmtTdW0gLyBtLmNodW5rc1NlZW4pIDogMCxcbiAgICAgICAgbWF4SW50ZXJDaHVua01zOiBNYXRoLnJvdW5kKG0uaW50ZXJDaHVua01heCksXG4gICAgICB9KVxuICAgICAgbS5mcmFtZXNXaXRoQnVmZmVyID0gMFxuICAgICAgbS5mcmFtZXNJZGxlID0gMFxuICAgICAgbS5sYXN0TG9nQXQgPSB0aWNrTm93XG4gICAgfVxuXG4gICAgY29uc3QgdGljayA9ICh0aWNrTm93OiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IHByZXYgPSBsYXN0VGlja1JlZi5jdXJyZW50XG4gICAgICBjb25zdCBkdCA9IHByZXYgPyBNYXRoLm1pbih0aWNrTm93IC0gcHJldiwgNjQpIDogMTZcbiAgICAgIGxhc3RUaWNrUmVmLmN1cnJlbnQgPSB0aWNrTm93XG5cbiAgICAgIGNvbnN0IHRhcmdldCA9IHRhcmdldFJlZi5jdXJyZW50XG4gICAgICBjb25zdCBjdXJyZW50TGVuID0gZGlzcGxheWVkTGVuUmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IHJlbWFpbmluZyA9IHRhcmdldC5sZW5ndGggLSBjdXJyZW50TGVuXG5cbiAgICAgIGlmIChyZW1haW5pbmcgPD0gMCkge1xuICAgICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgICBtZXRyaWNzUmVmLmN1cnJlbnQuZnJhbWVzSWRsZSArPSAxXG4gICAgICAgICAgbWV0cmljc1JlZi5jdXJyZW50LmlkbGVUaW1lTXMgKz0gZHRcbiAgICAgICAgfVxuICAgICAgICByYWZSZWYuY3VycmVudCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aWNrKVxuICAgICAgICAvLyBMb2cgcGVyacOzZGljbyBhw7puIGVzdGFuZG8gaWRsZSAocGFyYSB2ZXIgc2kgZXN0YW1vcyBlc3BlcmFuZG8gY2h1bmtzKVxuICAgICAgICBpZiAoZGVidWcgJiYgdGlja05vdyAtIG1ldHJpY3NSZWYuY3VycmVudC5sYXN0TG9nQXQgPiA1MDApIHtcbiAgICAgICAgICBsb2dNZXRyaWNzKHRpY2tOb3cpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIFdhcm11cDogYWwgY29taWVuem8gZGVsIHN0cmVhbSBlc3BlcmFtb3MgYHdhcm11cE1zYCBkZXNkZSBlbCBwcmltZXJcbiAgICAgIC8vIGNodW5rIGFudGVzIGRlIGVtcGV6YXIgYSBwaW50YXIuIEVzdG8gY29uc3RydXllIHVuIGNvbGNow7NuIGluaWNpYWwgeVxuICAgICAgLy8gZXZpdGEgYXJyYW5jYXIgcsOhcGlkbyBwYXJhIGNvbmdlbGFybm9zIGFjdG8gc2VndWlkbyBzaSBlbCBiYWNrZW5kXG4gICAgICAvLyB0YXJkYSBtdWNobyBlbiBlbWl0aXIgZWwgc2VndW5kbyBjaHVuay5cbiAgICAgIGlmICghd2FybXVwRG9uZVJlZi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGZpcnN0QXQgPSBmaXJzdENodW5rQXRSZWYuY3VycmVudFxuICAgICAgICBjb25zdCB3YWl0ZWRNcyA9IGZpcnN0QXQgPiAwID8gdGlja05vdyAtIGZpcnN0QXQgOiAwXG4gICAgICAgIGNvbnN0IHdhcm11cENvbXBsZXRlID0gd2FybXVwTXMgPD0gMCB8fCB3YWl0ZWRNcyA+PSB3YXJtdXBNcyB8fCB0YXJnZXQubGVuZ3RoID49IG1pbkJ1ZmZlckNoYXJzICogMlxuICAgICAgICBpZiAoIXdhcm11cENvbXBsZXRlKSB7XG4gICAgICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgICAgICBtZXRyaWNzUmVmLmN1cnJlbnQuZnJhbWVzSWRsZSArPSAxXG4gICAgICAgICAgICBtZXRyaWNzUmVmLmN1cnJlbnQuaWRsZVRpbWVNcyArPSBkdFxuICAgICAgICAgIH1cbiAgICAgICAgICByYWZSZWYuY3VycmVudCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aWNrKVxuICAgICAgICAgIGlmIChkZWJ1ZyAmJiB0aWNrTm93IC0gbWV0cmljc1JlZi5jdXJyZW50Lmxhc3RMb2dBdCA+IDUwMCkge1xuICAgICAgICAgICAgbG9nTWV0cmljcyh0aWNrTm93KVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICB3YXJtdXBEb25lUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICBtZXRyaWNzUmVmLmN1cnJlbnQuZnJhbWVzV2l0aEJ1ZmZlciArPSAxXG4gICAgICAgIGlmIChyZW1haW5pbmcgPiBtZXRyaWNzUmVmLmN1cnJlbnQubWF4QnVmZmVyKSBtZXRyaWNzUmVmLmN1cnJlbnQubWF4QnVmZmVyID0gcmVtYWluaW5nXG4gICAgICB9XG5cbiAgICAgIC8vIFZlbG9jaWRhZCBiYXNlOiB2YWNpYXIgZWwgYnVmZmVyIGVuIH50YXJnZXRMYWdNcy5cbiAgICAgIGNvbnN0IGNoYXJzUGVyTXMgPSByZW1haW5pbmcgLyB0YXJnZXRMYWdNc1xuICAgICAgbGV0IGVmZmVjdGl2ZUNoYXJzUGVyTXMgPSBjaGFyc1Blck1zXG5cbiAgICAgIGNvbnN0IGJhY2tlbmRSYXRlID0gYmFja2VuZENoYXJzUGVyTXNSZWYuY3VycmVudFxuXG4gICAgICBpZiAoYWRhcHRUb0JhY2tlbmRSYXRlICYmIGJhY2tlbmRSYXRlID4gMCkge1xuICAgICAgICBpZiAodHlwZW9mIHRhcmdldEJ1ZmZlck1zID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIC8vIENvbnRyb2wgcHJvcG9yY2lvbmFsOiBtYW50ZW5lciBlbCBidWZmZXIgZW4gdG9ybm8gYWwgY29sY2jDs25cbiAgICAgICAgICAvLyBvYmpldGl2by4gU2kgYnVmZmVyTXMgPCB0YXJnZXQg4oaSIGZyZW5hbW9zIHBvciBkZWJham8gZGVsIGJhY2tlbmRcbiAgICAgICAgICAvLyBwYXJhIGFjdW11bGFyOyBzaSBidWZmZXJNcyA+IHRhcmdldCDihpIgYWNlbGVyYW1vcyBwYXJhIGRlc2Nhcmdhci5cbiAgICAgICAgICAvLyBFbiBlcXVpbGlicmlvLCBwaW50YW1vcyBhbCByaXRtbyBwcm9tZWRpbyBkZWwgYmFja2VuZC5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIEVsIGNvbGNow7NuIG9iamV0aXZvIHNlIGNhbGN1bGEgc29icmUgbGEgdGFzYSAqKmVmZWN0aXZhKiogcXVlXG4gICAgICAgICAgLy8gcG9kZW1vcyBwaW50YXIgKGNhcGVhZGEgcG9yIGBtYXhDaGFyc1BlckZyYW1lYCBhIDYwZnBzKSwgbm8gc29icmVcbiAgICAgICAgICAvLyBsYSBkZWwgYmFja2VuZCBwdXJhLiBFc3RvIGV2aXRhIGVsIGNhc28gcGF0b2zDs2dpY28gZGUgcsOhZmFnYXM6XG4gICAgICAgICAgLy8gc2kgZWwgYmFja2VuZCB0aXJhIGEgNjUwMCBjaC9zLCBlbCB0YXJnZXQgTk8gc2UgdnVlbHZlIDM5MDAgY2hhcnNcbiAgICAgICAgICAvLyAocXVlIGVsIHJlbmRlciBqYW3DoXMgcG9kcsOtYSBzb3N0ZW5lciksIHNpbm8gYWxnbyByYXpvbmFibGUgcXVlXG4gICAgICAgICAgLy8gbGEgYW5pbWFjacOzbiBwdWVkYSBtYW50ZW5lci5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIFBpc28gYWJzb2x1dG86IGVsIGNvbGNow7NuIG51bmNhIGJhamEgZGUgYG1pbkJ1ZmZlckNoYXJzYCBhdW5xdWVcbiAgICAgICAgICAvLyBlbCBiYWNrZW5kIGVzdMOpIG1hbmRhbmRvIGxlbnRvIGFsIGluaWNpbyBkZWwgc3RyZWFtLlxuICAgICAgICAgIGNvbnN0IHJlbmRlclJhdGVDYXAgPSAobWF4Q2hhcnNQZXJGcmFtZSAqIDYwKSAvIDEwMDBcbiAgICAgICAgICBjb25zdCBlZmZlY3RpdmVCdWZmZXJSYXRlID0gTWF0aC5taW4oYmFja2VuZFJhdGUsIHJlbmRlclJhdGVDYXApXG4gICAgICAgICAgY29uc3QgdGFyZ2V0QnVmZmVyQ2hhcnMgPSBNYXRoLm1heChtaW5CdWZmZXJDaGFycywgdGFyZ2V0QnVmZmVyTXMgKiBlZmZlY3RpdmVCdWZmZXJSYXRlKVxuICAgICAgICAgIGNvbnN0IGJ1ZmZlckRlbHRhID0gcmVtYWluaW5nIC0gdGFyZ2V0QnVmZmVyQ2hhcnNcbiAgICAgICAgICAvLyBDb3JyZWNjacOzbiB0aWVuZSB1bmlkYWRlcyBkZSBjaGFycy9tcy4gYnVmZmVyQ29ycmVjdGlvbk1zIGNvbnRyb2xhXG4gICAgICAgICAgLy8gcXXDqSB0YW4gcsOhcGlkbyBlbCBidWZmZXIgcmVhbCBjb252ZXJnZSBhbCBvYmpldGl2by5cbiAgICAgICAgICBjb25zdCBjb3JyZWN0aW9uID0gYnVmZmVyRGVsdGEgLyBNYXRoLm1heCgxLCBidWZmZXJDb3JyZWN0aW9uTXMpXG4gICAgICAgICAgZWZmZWN0aXZlQ2hhcnNQZXJNcyA9IE1hdGgubWF4KDAsIGJhY2tlbmRSYXRlICsgY29ycmVjdGlvbilcbiAgICAgICAgICAvLyBBY290YXIgcG9yIGxhIHZlbG9jaWRhZCBkZSBcInZhY2lhciBlbiB0YXJnZXRMYWdNc1wiIHBhcmEgcXVlIHNpXG4gICAgICAgICAgLy8gZGUgcHJvbnRvIGhheSB1biBwaWNvIGdpZ2FudGUgZGUgYnVmZmVyIG5vIHNhbGdhbW9zIGRpc3BhcmFkb3MuXG4gICAgICAgICAgZWZmZWN0aXZlQ2hhcnNQZXJNcyA9IE1hdGgubWluKGVmZmVjdGl2ZUNoYXJzUGVyTXMsIGNoYXJzUGVyTXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gTW9kbyBzaW1wbGU6IGNhcCBhIGxhIHRhc2EgZGVsIGJhY2tlbmQgKiBmYWN0b3IuXG4gICAgICAgICAgY29uc3QgY2FwID0gYmFja2VuZFJhdGUgKiBiYWNrZW5kUmF0ZUZhY3RvclxuICAgICAgICAgIGVmZmVjdGl2ZUNoYXJzUGVyTXMgPSBNYXRoLm1pbihlZmZlY3RpdmVDaGFyc1Blck1zLCBjYXApXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmF3U3RlcCA9IE1hdGguY2VpbChlZmZlY3RpdmVDaGFyc1Blck1zICogZHQpXG4gICAgICBjb25zdCBzdGVwID0gTWF0aC5tYXgobWluQ2hhcnNQZXJGcmFtZSwgTWF0aC5taW4obWF4Q2hhcnNQZXJGcmFtZSwgcmF3U3RlcCkpXG5cbiAgICAgIGxldCBuZXh0TGVuID0gTWF0aC5taW4odGFyZ2V0Lmxlbmd0aCwgY3VycmVudExlbiArIHN0ZXApXG5cbiAgICAgIGlmIChzbmFwVG9Xb3JkQm91bmRhcnkgJiYgbmV4dExlbiA8IHRhcmdldC5sZW5ndGgpIHtcbiAgICAgICAgY29uc3Qgc2xpY2UgPSB0YXJnZXQuc2xpY2UoY3VycmVudExlbiwgbmV4dExlbilcbiAgICAgICAgY29uc3QgbGFzdEJvdW5kYXJ5ID0gTWF0aC5tYXgoc2xpY2UubGFzdEluZGV4T2YoJyAnKSwgc2xpY2UubGFzdEluZGV4T2YoJ1xcbicpLCBzbGljZS5sYXN0SW5kZXhPZignXFx0JykpXG4gICAgICAgIGlmIChsYXN0Qm91bmRhcnkgPj0gMCkge1xuICAgICAgICAgIG5leHRMZW4gPSBjdXJyZW50TGVuICsgbGFzdEJvdW5kYXJ5ICsgMVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXh0TGVuICE9PSBjdXJyZW50TGVuKSB7XG4gICAgICAgIGlmIChkZWJ1ZykgbWV0cmljc1JlZi5jdXJyZW50LnRvdGFsQ2hhcnNFbWl0dGVkICs9IG5leHRMZW4gLSBjdXJyZW50TGVuXG4gICAgICAgIGRpc3BsYXllZExlblJlZi5jdXJyZW50ID0gbmV4dExlblxuICAgICAgICBzZXREaXNwbGF5ZWQodGFyZ2V0LnNsaWNlKDAsIG5leHRMZW4pKVxuICAgICAgfVxuXG4gICAgICBpZiAoZGVidWcgJiYgdGlja05vdyAtIG1ldHJpY3NSZWYuY3VycmVudC5sYXN0TG9nQXQgPiA1MDApIHtcbiAgICAgICAgbG9nTWV0cmljcyh0aWNrTm93KVxuICAgICAgfVxuXG4gICAgICByYWZSZWYuY3VycmVudCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aWNrKVxuICAgIH1cblxuICAgIHJhZlJlZi5jdXJyZW50ID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRpY2spXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHJhZlJlZi5jdXJyZW50ICE9IG51bGwpIHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmUmVmLmN1cnJlbnQpXG4gICAgICAgIHJhZlJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuICAgICAgbGFzdFRpY2tSZWYuY3VycmVudCA9IDBcbiAgICB9XG4gIH0sIFtcbiAgICB0YXJnZXRUZXh0LFxuICAgIGVuYWJsZWQsXG4gICAgbWluQ2hhcnNQZXJGcmFtZSxcbiAgICBtYXhDaGFyc1BlckZyYW1lLFxuICAgIHRhcmdldExhZ01zLFxuICAgIHNuYXBUb1dvcmRCb3VuZGFyeSxcbiAgICBhZGFwdFRvQmFja2VuZFJhdGUsXG4gICAgYmFja2VuZFJhdGVGYWN0b3IsXG4gICAgdGFyZ2V0QnVmZmVyTXMsXG4gICAgYnVmZmVyQ29ycmVjdGlvbk1zLFxuICAgIG1pbkJ1ZmZlckNoYXJzLFxuICAgIHdhcm11cE1zLFxuICAgIGRlYnVnLFxuICAgIGRlYnVnTGFiZWwsXG4gIF0pXG5cbiAgcmV0dXJuIGRpc3BsYXllZFxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQSxTQUFTQSxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUEyRW5EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFNQyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUM5QkMsVUFBa0IsRUFBQUMsSUFBQSxFQWdCUDtFQUFBLElBZFRDLE9BQU8sR0FBQUQsSUFBQSxDQUFQQyxPQUFPO0lBQUFDLHFCQUFBLEdBQUFGLElBQUEsQ0FDUEcsZ0JBQWdCO0lBQWhCQSxnQkFBZ0IsR0FBQUQscUJBQUEsY0FBRyxDQUFDLEdBQUFBLHFCQUFBO0lBQUFFLHFCQUFBLEdBQUFKLElBQUEsQ0FDcEJLLGdCQUFnQjtJQUFoQkEsZ0JBQWdCLEdBQUFELHFCQUFBLGNBQUcsRUFBRSxHQUFBQSxxQkFBQTtJQUFBRSxnQkFBQSxHQUFBTixJQUFBLENBQ3JCTyxXQUFXO0lBQVhBLFdBQVcsR0FBQUQsZ0JBQUEsY0FBRyxHQUFHLEdBQUFBLGdCQUFBO0lBQUFFLHFCQUFBLEdBQUFSLElBQUEsQ0FDakJTLGtCQUFrQjtJQUFsQkEsa0JBQWtCLEdBQUFELHFCQUFBLGNBQUcsS0FBSyxHQUFBQSxxQkFBQTtJQUFBRSxxQkFBQSxHQUFBVixJQUFBLENBQzFCVyxrQkFBa0I7SUFBbEJBLGtCQUFrQixHQUFBRCxxQkFBQSxjQUFHLElBQUksR0FBQUEscUJBQUE7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Q0FBQ0MsR0FBRyxDQUFDaUQsS0FBSyxDQUFDRSxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUVGLEtBQUssQ0FBQ0UsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFRixLQUFLLENBQUNFLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RyxJQUFJRCxZQUFZLElBQUksQ0FBQyxFQUFFO1VBQ3JCRixPQUFPLEdBQUdqQixVQUFVLEdBQUdtQixZQUFZLEdBQUcsQ0FBQztRQUN6QztNQUNGO01BRUEsSUFBSUYsT0FBTyxLQUFLakIsVUFBVSxFQUFFO1FBQzFCLElBQUlyRSxLQUFLLEVBQUVrQixVQUFVLENBQUNlLE9BQU8sQ0FBQ1osaUJBQWlCLElBQUlpRSxPQUFPLEdBQUdqQixVQUFVO1FBQ3ZFNUQsZUFBZSxDQUFDd0IsT0FBTyxHQUFHcUQsT0FBTztRQUNqQy9FLFlBQVksQ0FBQ3lELE1BQU0sQ0FBQ3VCLEtBQUssQ0FBQyxDQUFDLEVBQUVELE9BQU8sQ0FBQyxDQUFDO01BQ3hDO01BRUEsSUFBSXRGLEtBQUssSUFBSXdELE9BQU8sR0FBR3RDLFVBQVUsQ0FBQ2UsT0FBTyxDQUFDTixTQUFTLEdBQUcsR0FBRyxFQUFFO1FBQ3pENEIsVUFBVSxDQUFDQyxPQUFPLENBQUM7TUFDckI7TUFFQTdDLE1BQU0sQ0FBQ3NCLE9BQU8sR0FBR3NDLHFCQUFxQixDQUFDTCxLQUFJLENBQUM7SUFDOUMsQ0FBQztJQUVEdkQsTUFBTSxDQUFDc0IsT0FBTyxHQUFHc0MscUJBQXFCLENBQUNMLEtBQUksQ0FBQztJQUU1QyxPQUFPLFlBQU07TUFDWCxJQUFJdkQsTUFBTSxDQUFDc0IsT0FBTyxJQUFJLElBQUksRUFBRTtRQUMxQlMsb0JBQW9CLENBQUMvQixNQUFNLENBQUNzQixPQUFPLENBQUM7UUFDcEN0QixNQUFNLENBQUNzQixPQUFPLEdBQUcsSUFBSTtNQUN2QjtNQUNBckIsV0FBVyxDQUFDcUIsT0FBTyxHQUFHLENBQUM7SUFDekIsQ0FBQztFQUNILENBQUMsRUFBRSxDQUNEekQsVUFBVSxFQUNWRSxPQUFPLEVBQ1BFLGdCQUFnQixFQUNoQkUsZ0JBQWdCLEVBQ2hCRSxXQUFXLEVBQ1hFLGtCQUFrQixFQUNsQkUsa0JBQWtCLEVBQ2xCRSxpQkFBaUIsRUFDakJFLGNBQWMsRUFDZEUsa0JBQWtCLEVBQ2xCRSxjQUFjLEVBQ2RFLFFBQVEsRUFDUkUsS0FBSyxFQUNMRSxVQUFVLENBQ1gsQ0FBQztFQUVGLE9BQU9JLFNBQVM7QUFDbEIsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectcor/maia-components",
3
- "version": "2.11.31-1",
3
+ "version": "2.11.31-2",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "repository": {