@codecademy/brand 3.25.1 → 3.26.0-alpha.592b7ae230.0

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.
@@ -9,6 +9,7 @@ import { useEffect, useRef, useState } from 'react';
9
9
  import { useOnEscHandler } from '../shared';
10
10
  import { searchPlaceholder } from './consts';
11
11
  import { PopularContent, PopularSearches } from './DefaultResults';
12
+ import { useSearchTracking } from './hooks/useSearchTracking';
12
13
  import { useUrlChangeDetection } from './hooks/useUrlChangeDetection';
13
14
  import { QuizAndHelpCenterLinks } from './QuizAndHelpCenterLinks';
14
15
  import { safelyRedirect } from './safelyRedirect';
@@ -37,7 +38,7 @@ const QueryContainer = /*#__PURE__*/_styled(ContentContainer, {
37
38
  px: {
38
39
  _: 24
39
40
  }
40
- }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFDdUIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVVybENoYW5nZURldGVjdGlvbiB9IGZyb20gJy4vaG9va3MvdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uJztcbmltcG9ydCB7IFF1aXpBbmRIZWxwQ2VudGVyTGlua3MgfSBmcm9tICcuL1F1aXpBbmRIZWxwQ2VudGVyTGlua3MnO1xuaW1wb3J0IHsgc2FmZWx5UmVkaXJlY3QgfSBmcm9tICcuL3NhZmVseVJlZGlyZWN0JztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nQ29udGV4dCB9IGZyb20gJy4vU2VhcmNoVHJhY2tpbmdQcm92aWRlcic7XG5pbXBvcnQgeyBzZWFyY2hXb3JrZXIgfSBmcm9tICcuL1NlYXJjaFdvcmtlcic7XG5pbXBvcnQgdHlwZSB7XG4gIEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb24sXG4gIFNlYXJjaEFzWW91VHlwZVJlc3VsdHMsXG59IGZyb20gJy4vU2VhcmNoV29ya2VyL3R5cGVzJztcbmltcG9ydCB7IFNlYXJjaFBhbmVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBGb3JtID0gQm94LndpdGhDb21wb25lbnQoJ2Zvcm0nKTtcbmNvbnN0IElucHV0ID0gQm94LndpdGhDb21wb25lbnQoJ2lucHV0Jyk7XG5cbmNvbnN0IFF1ZXJ5Q29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpKFxuICBjc3Moe1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHB0OiAxNixcbiAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICBweDogeyBfOiAyNCB9LFxuICB9KVxuKTtcblxuY29uc3QgU3VnZ2VzdGlvbkNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KShcbiAgY3NzKHtcbiAgICBvdXRsaW5lOiBgbm9uZWAsXG4gICAgJyY6OnBsYWNlaG9sZGVyJzoge1xuICAgICAgdGV4dENvbG9yOiB0aGVtZS5jb2xvcnNbJ3RleHQtc2Vjb25kYXJ5J10gYXMgbmV2ZXIsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZVJlc3VsdExpID0gc3R5bGVkKE1lbnVJdGVtKShcbiAgY3NzKHtcbiAgICBwbDogMCxcbiAgICBweTogOCxcbiAgICBmb250U2l6ZTogMTYsXG4gICAgJyY6Zm9jdXMtdmlzaWJsZTphZnRlcic6IHtcbiAgICAgIGxlZnQ6IC00LFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVMb2FkZXJMaSA9IHN0eWxlZC5saShcbiAgY3NzKHtcbiAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogMTIsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgU2VtaWJvbGRTZWFyY2hJY29uID0gc3R5bGVkKFNlYXJjaEljb24pYFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBjaXJjbGUsXG4gIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gIHJlY3Qge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0ycHgsIC0ycHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTtcbiAgfVxuYDtcblxuY29uc3QgRWxsaXBzaXNCb3ggPSBzdHlsZWQoQm94KWBcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gO1xuXG5jb25zdCBIaWdobGlnaHRlZFRleHQgPSAoe1xuICBzdWdnZXN0aW9uOiB7IHRpdGxlLCBzZWdtZW50cyB9LFxufToge1xuICBzdWdnZXN0aW9uOiBBdXRvY29tcGxldGVTdWdnZXN0aW9uO1xufSkgPT4ge1xuICBjb25zdCBtb2RlID0gdXNlQ3VycmVudE1vZGUoKTtcbiAgY29uc3QgaGlnaGxpZ2h0Q29sb3IgPSBtb2RlID09PSAnZGFyaycgPyAnaHlwZXInIDogJ3llbGxvdyc7XG5cbiAgcmV0dXJuIChcbiAgICA8RmxleEJveD5cbiAgICAgIDxFbGxpcHNpc0JveFxuICAgICAgICBtYXhXaWR0aD1cImNhbGMoMTAwdncgLSAxMjhweClcIlxuICAgICAgICB3aGl0ZVNwYWNlPVwicHJlXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpKSA9PiAoXG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGtleT17YCR7dGl0bGV9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICBsaW5lSGVpZ2h0PVwidGl0bGVcIlxuICAgICAgICAgICAgey4uLihzZWdtZW50LmhpZ2hsaWdodFxuICAgICAgICAgICAgICA/IHsgYmc6IGhpZ2hsaWdodENvbG9yLCBmb250V2VpZ2h0OiAnYm9sZCcgfVxuICAgICAgICAgICAgICA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2VnbWVudC52YWx1ZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9FbGxpcHNpc0JveD5cbiAgICAgIDxUZXh0IHNjcmVlbnJlYWRlcj57dGl0bGV9PC9UZXh0PlxuICAgIDwvRmxleEJveD5cbiAgKTtcbn07XG5cbnR5cGUgU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0ge1xuICBzaGltbWVyUm93czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHNoaW1tZXJzOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgfVtdO1xuICB9W107XG59O1xuXG5sZXQgbG9hZGVyS2V5ID0gMDtcbmZ1bmN0aW9uIHJuZExvYWRlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gIGNvbnN0IGtleSA9IGxvYWRlcktleSsrO1xuICBjb25zdCBsb2FkZXI6IFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHsgc2hpbW1lclJvd3M6IFtdIH07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0ge1xuICAgICAga2V5OiBgJHtrZXl9OiR7aX1gLFxuICAgICAgc2hpbW1lcnM6IFtdIGFzIHsga2V5OiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdLFxuICAgIH07XG4gICAgY29uc3Qgd29yZHMgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZHM7IGorKykge1xuICAgICAgY29uc3Qgd2lkdGggPSAxMiArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk2KTtcbiAgICAgIHJvdy5zaGltbWVycy5wdXNoKHtcbiAgICAgICAga2V5OiBgJHtrZXl9OiR7an1gLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkZXIuc2hpbW1lclJvd3MucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBsb2FkZXI7XG59XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hQYW5lOiBSZWFjdC5GQzxTZWFyY2hQYW5lUHJvcHM+ID0gKHtcbiAgb25TZWFyY2gsXG4gIG9uVHJhY2tpbmdDbGljayxcbiAgc2VhcmNoQnV0dG9uUmVmLFxuICB0b2dnbGVTZWFyY2gsXG4gIG9uU2VhcmNoQXNZb3VUeXBlLFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLCBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9uc10gPSB1c2VTdGF0ZTxcbiAgICBBdXRvY29tcGxldGVTdWdnZXN0aW9uW11cbiAgPihbXSk7XG4gIGNvbnN0IFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLCBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzXSA9XG4gICAgdXNlU3RhdGU8U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRDbGlja2VkLCBzZXRTZWFyY2hSZXN1bHRDbGlja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrID1cbiAgICBvblNlYXJjaEFzWW91VHlwZSAmJiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzICYmICFzZWFyY2hSZXN1bHRDbGlja2VkO1xuXG4gIGNvbnN0IGNsb3NlU2VhcmNoID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcihjbG9zZVNlYXJjaCk7XG5cbiAgY29uc3Qgb25Nb3VzZURvd25PdXRzaWRlID0gKHsgdGFyZ2V0IH06IE1vdXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCBoYW5kbGVPdXRzaWRlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICFkb2N1bWVudFxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJdJylcbiAgICAgICAgICA/LmNvbnRhaW5zKHRhcmdldCBhcyBIVE1MRWxlbWVudCkgJiZcbiAgICAgICAgdGFyZ2V0ICE9PSBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICAgIH07XG5cbiAgICB0YXJnZXQ/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IG5hdmlnYXRlVG9TZWFyY2ggPSAoc2VhcmNoVGVybTogc3RyaW5nLCBmcm9tUHJldlNlYXJjaD86IHN0cmluZykgPT4ge1xuICAgIG9uU2VhcmNoKHNlYXJjaFRlcm0sIGZyb21QcmV2U2VhcmNoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2U6IFJlYWN0LkNoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICBzZXRWYWx1ZShldnQudGFyZ2V0LnZhbHVlKTtcbiAgICAvLyByZXNldCB0byBmYWxzZSB3aGVuIHRoZSBzZWFyY2ggcXVlcnkgY2hhbmdlc1xuICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQoZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIGRvbid0IHRyYWNrIGlmIGEgcmVzdWx0IHdhcyBjbGlja2VkIG9yIGlmIHdlIGRvbid0IGhhdmUgc2VhcmNoIHJlc3VsdHNcbiAgICBpZiAoXG4gICAgICBzZWFyY2hSZXN1bHRDbGlja2VkIHx8XG4gICAgICAhb25TZWFyY2hBc1lvdVR5cGUgfHxcbiAgICAgICFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzIHx8XG4gICAgICAhdmFsdWVUcmltbWVkLmxlbmd0aFxuICAgIClcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLXJldHVyblxuICAgICAgcmV0dXJuO1xuICB9LCBbXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxuICAgIHZhbHVlVHJpbW1lZCxcbiAgICBvblNlYXJjaEFzWW91VHlwZSxcbiAgXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIHNlYXJjaFdvcmtlci5pbml0KCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmFsdWVUcmltbWVkLmxlbmd0aCkge1xuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6ICcnLFxuICAgICAgICBzZWFyY2hJZDogJycsXG4gICAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBsZXQgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5OiBOb2RlSlMuVGltZW91dDtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2l0aCBhIHNtYWxsIGRlbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHJlc3VsdHNcbiAgICAgIGlmIChcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUgJiZcbiAgICAgICAgcmVzdWx0cy50b3AubGVuZ3RoID09PSAwICYmXG4gICAgICAgICFzZWFyY2hSZXN1bHRDbGlja2VkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgIHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghY2FuY2VsKSB7XG4gICAgICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIDAsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkpO1xuICAgIH07XG4gIH0sIFtcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyxcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBiZz1cInNoYWRvdy1zZWNvbmRhcnlcIlxuICAgICAgICBoZWlnaHQ9XCIxMDB2aFwiXG4gICAgICAgIHBvc2l0aW9uPVwiZml4ZWRcIlxuICAgICAgICAvLyBXZSBhZGQgNXJlbSBoZXJlIGluIGNhc2UgdGhlcmUncyBzb21lIHNvcnQgb2YgYnJhbmRlZCBiYW5uZXIgYWJvdmUgc2VhcmNoXG4gICAgICAgIC8vIFRoZSBzZWFyY2ggYXJlYSBpcyBtdWNoIHRhbGxlciB0aGFuIDVyZW0gc28gdGhpcyBpcyBhIHNhZmUgYW1vdW50IG9mIHBhZGRpbmdcbiAgICAgICAgdG9wPXtgY2FsYygke3RoZW1lLmVsZW1lbnRzLmhlYWRlckhlaWdodH0gKyA1cmVtKWB9XG4gICAgICAgIHdpZHRoPXsxfVxuICAgICAgLz5cbiAgICAgIDxGb2N1c1RyYXBcbiAgICAgICAgb25Fc2NhcGVLZXk9e2Nsb3NlU2VhcmNofVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW1pYm9sZFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1iPXsyIGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXs4fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1yPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICB7KHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwiaDJcIiBmb250U2l6ZT17MjB9IG1iPXsxNn0gbXQ9ezI0fT5cbiAgICAgICAgICAgICAgICAgICAgICBUb3AgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJ1bFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcD17MH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlYXJjaEFzWW91VHlwZUxvYWRlcj8uc2hpbW1lclJvd3MubWFwKChyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZUxvYWRlckxpIGtleT17ci5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Iuc2hpbW1lcnMubWFwKCh3b3JkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweT17OCBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17d29yZC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dvcmQud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseT1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMTAgYXMgMTYgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJib3JkZXItc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eT17MC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lTG9hZGVyTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlIHNpemU9XCJzbVwiIHZhcmlhbnQ9XCJ0ZXJ0aWFyeVwiIG1sPXsxMn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzLnR5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxCb3ggZm9udFNpemU9e3sgXzogMjAsIHNtOiAyNiB9fSBtdD17MH0gbWI9ezQ4fT5cbiAgICAgICAgICAgICAgICAgICAgICB7YFdlIGNvdWxkbid0IGZpbmQgYSBtYXRjaCBmb3IgYH1cbiAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBmb250V2VpZ2h0PVwiYm9sZFwiPntgXCIke3ZhbHVlVHJpbW1lZH0uXCJgfTwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnIFRyeSBhbm90aGVyIGtleXdvcmQsIG9yIHNlZSB3aGF0IG91ciBtZW1iZXJzIGFyZSBsZWFybmluZy4nXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyU2VhcmNoZXNcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2g9e25hdmlnYXRlVG9TZWFyY2h9XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgeyEhc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICAgIDxTdHJva2VCdXR0b25cbiAgICAgICAgICAgICAgICBteT17MTZ9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCd2aWV3X2FsbF9yZXN1bHRzJywge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFZpZXcgYWxsIHJlc3VsdHNcbiAgICAgICAgICAgICAgPC9TdHJva2VCdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPFF1aXpBbmRIZWxwQ2VudGVyTGlua3NcbiAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgIGhhbmRsZUNsb3NlRHJvcGRvd249e2Nsb3NlU2VhcmNofVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1N1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9Gb2N1c1RyYXA+XG4gICAgPC8+XG4gICk7XG59O1xuIl19 */");
41
+ }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNDdUIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nIH0gZnJvbSAnLi9ob29rcy91c2VTZWFyY2hUcmFja2luZyc7XG5pbXBvcnQgeyB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24gfSBmcm9tICcuL2hvb2tzL3VzZVVybENoYW5nZURldGVjdGlvbic7XG5pbXBvcnQgeyBRdWl6QW5kSGVscENlbnRlckxpbmtzIH0gZnJvbSAnLi9RdWl6QW5kSGVscENlbnRlckxpbmtzJztcbmltcG9ydCB7IHNhZmVseVJlZGlyZWN0IH0gZnJvbSAnLi9zYWZlbHlSZWRpcmVjdCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQgfSBmcm9tICcuL1NlYXJjaFRyYWNraW5nUHJvdmlkZXInO1xuaW1wb3J0IHsgc2VhcmNoV29ya2VyIH0gZnJvbSAnLi9TZWFyY2hXb3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVTdWdnZXN0aW9uLFxuICBTZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxufSBmcm9tICcuL1NlYXJjaFdvcmtlci90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgRm9ybSA9IEJveC53aXRoQ29tcG9uZW50KCdmb3JtJyk7XG5jb25zdCBJbnB1dCA9IEJveC53aXRoQ29tcG9uZW50KCdpbnB1dCcpO1xuXG5jb25zdCBRdWVyeUNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN1Z2dlc3Rpb25Db250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcikoXG4gIGNzcyh7XG4gICAgcHQ6IDE2LFxuICAgIHBiOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgIHB4OiB7IF86IDI0IH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCkoXG4gIGNzcyh7XG4gICAgb3V0bGluZTogYG5vbmVgLFxuICAgICcmOjpwbGFjZWhvbGRlcic6IHtcbiAgICAgIHRleHRDb2xvcjogdGhlbWUuY29sb3JzWyd0ZXh0LXNlY29uZGFyeSddIGFzIG5ldmVyLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVSZXN1bHRMaSA9IHN0eWxlZChNZW51SXRlbSkoXG4gIGNzcyh7XG4gICAgcGw6IDAsXG4gICAgcHk6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICAgICcmOmZvY3VzLXZpc2libGU6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAtNCxcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lTG9hZGVyTGkgPSBzdHlsZWQubGkoXG4gIGNzcyh7XG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6IDEyLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFNlbWlib2xkU2VhcmNoSWNvbiA9IHN0eWxlZChTZWFyY2hJY29uKWBcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgY2lyY2xlLFxuICBwYXRoIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICByZWN0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAtMnB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIH1cbmA7XG5cbmNvbnN0IEVsbGlwc2lzQm94ID0gc3R5bGVkKEJveClgXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcblxuY29uc3QgSGlnaGxpZ2h0ZWRUZXh0ID0gKHtcbiAgc3VnZ2VzdGlvbjogeyB0aXRsZSwgc2VnbWVudHMgfSxcbn06IHtcbiAgc3VnZ2VzdGlvbjogQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbjtcbn0pID0+IHtcbiAgY29uc3QgbW9kZSA9IHVzZUN1cnJlbnRNb2RlKCk7XG4gIGNvbnN0IGhpZ2hsaWdodENvbG9yID0gbW9kZSA9PT0gJ2RhcmsnID8gJ2h5cGVyJyA6ICd5ZWxsb3cnO1xuXG4gIHJldHVybiAoXG4gICAgPEZsZXhCb3g+XG4gICAgICA8RWxsaXBzaXNCb3hcbiAgICAgICAgbWF4V2lkdGg9XCJjYWxjKDEwMHZ3IC0gMTI4cHgpXCJcbiAgICAgICAgd2hpdGVTcGFjZT1cInByZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaSkgPT4gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBrZXk9e2Ake3RpdGxlfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgbGluZUhlaWdodD1cInRpdGxlXCJcbiAgICAgICAgICAgIHsuLi4oc2VnbWVudC5oaWdobGlnaHRcbiAgICAgICAgICAgICAgPyB7IGJnOiBoaWdobGlnaHRDb2xvciwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICAgICAgICAgICAgOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3NlZ21lbnQudmFsdWV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvRWxsaXBzaXNCb3g+XG4gICAgICA8VGV4dCBzY3JlZW5yZWFkZXI+e3RpdGxlfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG59O1xuXG50eXBlIFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHtcbiAgc2hpbW1lclJvd3M6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBzaGltbWVyczoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1bXTtcbiAgfVtdO1xufTtcblxubGV0IGxvYWRlcktleSA9IDA7XG5mdW5jdGlvbiBybmRMb2FkZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xuICBjb25zdCBrZXkgPSBsb2FkZXJLZXkrKztcbiAgY29uc3QgbG9hZGVyOiBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7IHNoaW1tZXJSb3dzOiBbXSB9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgIGtleTogYCR7a2V5fToke2l9YCxcbiAgICAgIHNoaW1tZXJzOiBbXSBhcyB7IGtleTogc3RyaW5nOyB3aWR0aDogbnVtYmVyIH1bXSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmRzID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAzKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzOyBqKyspIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gMTIgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5Nik7XG4gICAgICByb3cuc2hpbW1lcnMucHVzaCh7XG4gICAgICAgIGtleTogYCR7a2V5fToke2p9YCxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9hZGVyLnNoaW1tZXJSb3dzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gbG9hZGVyO1xufVxuXG5leHBvcnQgY29uc3QgU2VhcmNoUGFuZTogUmVhY3QuRkM8U2VhcmNoUGFuZVByb3BzPiA9ICh7XG4gIG9uU2VhcmNoLFxuICBvblRyYWNraW5nQ2xpY2ssXG4gIHNlYXJjaEJ1dHRvblJlZixcbiAgdG9nZ2xlU2VhcmNoLFxuICBvblNlYXJjaEFzWW91VHlwZSxcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFthdXRvQ29tcGxldGVTdWdnZXN0aW9ucywgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnNdID0gdXNlU3RhdGU8XG4gICAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbltdXG4gID4oW10pO1xuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzID0gb25TZWFyY2hBc1lvdVR5cGUgJiYgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jIChmcm9tUmVzdWx0Q2xpY2sgPSBmYWxzZSkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoXG4gICAgICBoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHMgJiZcbiAgICAgICFmcm9tUmVzdWx0Q2xpY2sgJiZcbiAgICAgIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcigoKSA9PiBjbG9zZVNlYXJjaCgpKTtcblxuICBjb25zdCBvbk1vdXNlRG93bk91dHNpZGUgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIl0nKVxuICAgICAgICAgID8uY29udGFpbnModGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgICB0YXJnZXQgIT09IHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gICAgfTtcblxuICAgIHRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gIH07XG5cbiAgY29uc3QgbmF2aWdhdGVUb1NlYXJjaCA9IChzZWFyY2hUZXJtOiBzdHJpbmcsIGZyb21QcmV2U2VhcmNoPzogc3RyaW5nKSA9PiB7XG4gICAgb25TZWFyY2goc2VhcmNoVGVybSwgZnJvbVByZXZTZWFyY2gpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgIHNldFZhbHVlKGV2dC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgc2VhcmNoV29ya2VyLmluaXQoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGxldCBjbGVhckF1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgbGV0IGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICB9O1xuICB9LCBbdmFsdWVUcmltbWVkLCBvblNlYXJjaEFzWW91VHlwZSwgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXNdKTtcblxuICB1c2VTZWFyY2hUcmFja2luZyh7XG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgYmc9XCJzaGFkb3ctc2Vjb25kYXJ5XCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwdmhcIlxuICAgICAgICBwb3NpdGlvbj1cImZpeGVkXCJcbiAgICAgICAgLy8gV2UgYWRkIDVyZW0gaGVyZSBpbiBjYXNlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJyYW5kZWQgYmFubmVyIGFib3ZlIHNlYXJjaFxuICAgICAgICAvLyBUaGUgc2VhcmNoIGFyZWEgaXMgbXVjaCB0YWxsZXIgdGhhbiA1cmVtIHNvIHRoaXMgaXMgYSBzYWZlIGFtb3VudCBvZiBwYWRkaW5nXG4gICAgICAgIHRvcD17YGNhbGMoJHt0aGVtZS5lbGVtZW50cy5oZWFkZXJIZWlnaHR9ICsgNXJlbSlgfVxuICAgICAgICB3aWR0aD17MX1cbiAgICAgIC8+XG4gICAgICA8Rm9jdXNUcmFwXG4gICAgICAgIG9uRXNjYXBlS2V5PXsoKSA9PiBjbG9zZVNlYXJjaCgpfVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VtaWJvbGRTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYj17MiBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17OH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBtcj17MTJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgeyhzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cImgyXCIgZm9udFNpemU9ezIwfSBtYj17MTZ9IG10PXsyNH0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9wIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIGFzPVwidWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHA9ezB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hBc1lvdVR5cGVMb2FkZXI/LnNoaW1tZXJSb3dzLm1hcCgocikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVMb2FkZXJMaSBrZXk9e3Iua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyLnNoaW1tZXJzLm1hcCgod29yZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hpbW1lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHk9ezggYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3b3JkLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDEwIGFzIDE2IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwieGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9ezAuMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZUxvYWRlckxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMucXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2godHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8Qm94IGZvbnRTaXplPXt7IF86IDIwLCBzbTogMjYgfX0gbXQ9ezB9IG1iPXs0OH0+XG4gICAgICAgICAgICAgICAgICAgICAge2BXZSBjb3VsZG4ndCBmaW5kIGEgbWF0Y2ggZm9yIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQgZm9udFdlaWdodD1cImJvbGRcIj57YFwiJHt2YWx1ZVRyaW1tZWR9LlwiYH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJyBUcnkgYW5vdGhlciBrZXl3b3JkLCBvciBzZWUgd2hhdCBvdXIgbWVtYmVycyBhcmUgbGVhcm5pbmcuJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8UG9wdWxhclNlYXJjaGVzXG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoPXtuYXZpZ2F0ZVRvU2VhcmNofVxuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHshIXNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8U3Ryb2tlQnV0dG9uXG4gICAgICAgICAgICAgICAgbXk9ezE2fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygndmlld19hbGxfcmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IGFsbCByZXN1bHRzXG4gICAgICAgICAgICAgIDwvU3Ryb2tlQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxRdWl6QW5kSGVscENlbnRlckxpbmtzXG4gICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURyb3Bkb3duPXtjbG9zZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdWdnZXN0aW9uQ29udGFpbmVyPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRm9jdXNUcmFwPlxuICAgIDwvPlxuICApO1xufTtcbiJdfQ== */");
41
42
  const SuggestionContainer = /*#__PURE__*/_styled(ContentContainer, {
42
43
  target: "e1e5b20r5",
43
44
  label: "SuggestionContainer"
@@ -50,7 +51,7 @@ const SuggestionContainer = /*#__PURE__*/_styled(ContentContainer, {
50
51
  px: {
51
52
  _: 24
52
53
  }
53
- }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStDNEIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVVybENoYW5nZURldGVjdGlvbiB9IGZyb20gJy4vaG9va3MvdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uJztcbmltcG9ydCB7IFF1aXpBbmRIZWxwQ2VudGVyTGlua3MgfSBmcm9tICcuL1F1aXpBbmRIZWxwQ2VudGVyTGlua3MnO1xuaW1wb3J0IHsgc2FmZWx5UmVkaXJlY3QgfSBmcm9tICcuL3NhZmVseVJlZGlyZWN0JztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nQ29udGV4dCB9IGZyb20gJy4vU2VhcmNoVHJhY2tpbmdQcm92aWRlcic7XG5pbXBvcnQgeyBzZWFyY2hXb3JrZXIgfSBmcm9tICcuL1NlYXJjaFdvcmtlcic7XG5pbXBvcnQgdHlwZSB7XG4gIEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb24sXG4gIFNlYXJjaEFzWW91VHlwZVJlc3VsdHMsXG59IGZyb20gJy4vU2VhcmNoV29ya2VyL3R5cGVzJztcbmltcG9ydCB7IFNlYXJjaFBhbmVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBGb3JtID0gQm94LndpdGhDb21wb25lbnQoJ2Zvcm0nKTtcbmNvbnN0IElucHV0ID0gQm94LndpdGhDb21wb25lbnQoJ2lucHV0Jyk7XG5cbmNvbnN0IFF1ZXJ5Q29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpKFxuICBjc3Moe1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHB0OiAxNixcbiAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICBweDogeyBfOiAyNCB9LFxuICB9KVxuKTtcblxuY29uc3QgU3VnZ2VzdGlvbkNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KShcbiAgY3NzKHtcbiAgICBvdXRsaW5lOiBgbm9uZWAsXG4gICAgJyY6OnBsYWNlaG9sZGVyJzoge1xuICAgICAgdGV4dENvbG9yOiB0aGVtZS5jb2xvcnNbJ3RleHQtc2Vjb25kYXJ5J10gYXMgbmV2ZXIsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZVJlc3VsdExpID0gc3R5bGVkKE1lbnVJdGVtKShcbiAgY3NzKHtcbiAgICBwbDogMCxcbiAgICBweTogOCxcbiAgICBmb250U2l6ZTogMTYsXG4gICAgJyY6Zm9jdXMtdmlzaWJsZTphZnRlcic6IHtcbiAgICAgIGxlZnQ6IC00LFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVMb2FkZXJMaSA9IHN0eWxlZC5saShcbiAgY3NzKHtcbiAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogMTIsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgU2VtaWJvbGRTZWFyY2hJY29uID0gc3R5bGVkKFNlYXJjaEljb24pYFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBjaXJjbGUsXG4gIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gIHJlY3Qge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0ycHgsIC0ycHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTtcbiAgfVxuYDtcblxuY29uc3QgRWxsaXBzaXNCb3ggPSBzdHlsZWQoQm94KWBcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gO1xuXG5jb25zdCBIaWdobGlnaHRlZFRleHQgPSAoe1xuICBzdWdnZXN0aW9uOiB7IHRpdGxlLCBzZWdtZW50cyB9LFxufToge1xuICBzdWdnZXN0aW9uOiBBdXRvY29tcGxldGVTdWdnZXN0aW9uO1xufSkgPT4ge1xuICBjb25zdCBtb2RlID0gdXNlQ3VycmVudE1vZGUoKTtcbiAgY29uc3QgaGlnaGxpZ2h0Q29sb3IgPSBtb2RlID09PSAnZGFyaycgPyAnaHlwZXInIDogJ3llbGxvdyc7XG5cbiAgcmV0dXJuIChcbiAgICA8RmxleEJveD5cbiAgICAgIDxFbGxpcHNpc0JveFxuICAgICAgICBtYXhXaWR0aD1cImNhbGMoMTAwdncgLSAxMjhweClcIlxuICAgICAgICB3aGl0ZVNwYWNlPVwicHJlXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpKSA9PiAoXG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGtleT17YCR7dGl0bGV9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICBsaW5lSGVpZ2h0PVwidGl0bGVcIlxuICAgICAgICAgICAgey4uLihzZWdtZW50LmhpZ2hsaWdodFxuICAgICAgICAgICAgICA/IHsgYmc6IGhpZ2hsaWdodENvbG9yLCBmb250V2VpZ2h0OiAnYm9sZCcgfVxuICAgICAgICAgICAgICA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2VnbWVudC52YWx1ZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9FbGxpcHNpc0JveD5cbiAgICAgIDxUZXh0IHNjcmVlbnJlYWRlcj57dGl0bGV9PC9UZXh0PlxuICAgIDwvRmxleEJveD5cbiAgKTtcbn07XG5cbnR5cGUgU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0ge1xuICBzaGltbWVyUm93czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHNoaW1tZXJzOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgfVtdO1xuICB9W107XG59O1xuXG5sZXQgbG9hZGVyS2V5ID0gMDtcbmZ1bmN0aW9uIHJuZExvYWRlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gIGNvbnN0IGtleSA9IGxvYWRlcktleSsrO1xuICBjb25zdCBsb2FkZXI6IFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHsgc2hpbW1lclJvd3M6IFtdIH07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0ge1xuICAgICAga2V5OiBgJHtrZXl9OiR7aX1gLFxuICAgICAgc2hpbW1lcnM6IFtdIGFzIHsga2V5OiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdLFxuICAgIH07XG4gICAgY29uc3Qgd29yZHMgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZHM7IGorKykge1xuICAgICAgY29uc3Qgd2lkdGggPSAxMiArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk2KTtcbiAgICAgIHJvdy5zaGltbWVycy5wdXNoKHtcbiAgICAgICAga2V5OiBgJHtrZXl9OiR7an1gLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkZXIuc2hpbW1lclJvd3MucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBsb2FkZXI7XG59XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hQYW5lOiBSZWFjdC5GQzxTZWFyY2hQYW5lUHJvcHM+ID0gKHtcbiAgb25TZWFyY2gsXG4gIG9uVHJhY2tpbmdDbGljayxcbiAgc2VhcmNoQnV0dG9uUmVmLFxuICB0b2dnbGVTZWFyY2gsXG4gIG9uU2VhcmNoQXNZb3VUeXBlLFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLCBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9uc10gPSB1c2VTdGF0ZTxcbiAgICBBdXRvY29tcGxldGVTdWdnZXN0aW9uW11cbiAgPihbXSk7XG4gIGNvbnN0IFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLCBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzXSA9XG4gICAgdXNlU3RhdGU8U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRDbGlja2VkLCBzZXRTZWFyY2hSZXN1bHRDbGlja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrID1cbiAgICBvblNlYXJjaEFzWW91VHlwZSAmJiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzICYmICFzZWFyY2hSZXN1bHRDbGlja2VkO1xuXG4gIGNvbnN0IGNsb3NlU2VhcmNoID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcihjbG9zZVNlYXJjaCk7XG5cbiAgY29uc3Qgb25Nb3VzZURvd25PdXRzaWRlID0gKHsgdGFyZ2V0IH06IE1vdXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCBoYW5kbGVPdXRzaWRlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICFkb2N1bWVudFxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJdJylcbiAgICAgICAgICA/LmNvbnRhaW5zKHRhcmdldCBhcyBIVE1MRWxlbWVudCkgJiZcbiAgICAgICAgdGFyZ2V0ICE9PSBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICAgIH07XG5cbiAgICB0YXJnZXQ/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IG5hdmlnYXRlVG9TZWFyY2ggPSAoc2VhcmNoVGVybTogc3RyaW5nLCBmcm9tUHJldlNlYXJjaD86IHN0cmluZykgPT4ge1xuICAgIG9uU2VhcmNoKHNlYXJjaFRlcm0sIGZyb21QcmV2U2VhcmNoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2U6IFJlYWN0LkNoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICBzZXRWYWx1ZShldnQudGFyZ2V0LnZhbHVlKTtcbiAgICAvLyByZXNldCB0byBmYWxzZSB3aGVuIHRoZSBzZWFyY2ggcXVlcnkgY2hhbmdlc1xuICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQoZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIGRvbid0IHRyYWNrIGlmIGEgcmVzdWx0IHdhcyBjbGlja2VkIG9yIGlmIHdlIGRvbid0IGhhdmUgc2VhcmNoIHJlc3VsdHNcbiAgICBpZiAoXG4gICAgICBzZWFyY2hSZXN1bHRDbGlja2VkIHx8XG4gICAgICAhb25TZWFyY2hBc1lvdVR5cGUgfHxcbiAgICAgICFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzIHx8XG4gICAgICAhdmFsdWVUcmltbWVkLmxlbmd0aFxuICAgIClcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLXJldHVyblxuICAgICAgcmV0dXJuO1xuICB9LCBbXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxuICAgIHZhbHVlVHJpbW1lZCxcbiAgICBvblNlYXJjaEFzWW91VHlwZSxcbiAgXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIHNlYXJjaFdvcmtlci5pbml0KCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmFsdWVUcmltbWVkLmxlbmd0aCkge1xuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6ICcnLFxuICAgICAgICBzZWFyY2hJZDogJycsXG4gICAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBsZXQgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5OiBOb2RlSlMuVGltZW91dDtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2l0aCBhIHNtYWxsIGRlbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHJlc3VsdHNcbiAgICAgIGlmIChcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUgJiZcbiAgICAgICAgcmVzdWx0cy50b3AubGVuZ3RoID09PSAwICYmXG4gICAgICAgICFzZWFyY2hSZXN1bHRDbGlja2VkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgIHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghY2FuY2VsKSB7XG4gICAgICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIDAsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkpO1xuICAgIH07XG4gIH0sIFtcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyxcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBiZz1cInNoYWRvdy1zZWNvbmRhcnlcIlxuICAgICAgICBoZWlnaHQ9XCIxMDB2aFwiXG4gICAgICAgIHBvc2l0aW9uPVwiZml4ZWRcIlxuICAgICAgICAvLyBXZSBhZGQgNXJlbSBoZXJlIGluIGNhc2UgdGhlcmUncyBzb21lIHNvcnQgb2YgYnJhbmRlZCBiYW5uZXIgYWJvdmUgc2VhcmNoXG4gICAgICAgIC8vIFRoZSBzZWFyY2ggYXJlYSBpcyBtdWNoIHRhbGxlciB0aGFuIDVyZW0gc28gdGhpcyBpcyBhIHNhZmUgYW1vdW50IG9mIHBhZGRpbmdcbiAgICAgICAgdG9wPXtgY2FsYygke3RoZW1lLmVsZW1lbnRzLmhlYWRlckhlaWdodH0gKyA1cmVtKWB9XG4gICAgICAgIHdpZHRoPXsxfVxuICAgICAgLz5cbiAgICAgIDxGb2N1c1RyYXBcbiAgICAgICAgb25Fc2NhcGVLZXk9e2Nsb3NlU2VhcmNofVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW1pYm9sZFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1iPXsyIGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXs4fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1yPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICB7KHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwiaDJcIiBmb250U2l6ZT17MjB9IG1iPXsxNn0gbXQ9ezI0fT5cbiAgICAgICAgICAgICAgICAgICAgICBUb3AgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJ1bFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcD17MH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlYXJjaEFzWW91VHlwZUxvYWRlcj8uc2hpbW1lclJvd3MubWFwKChyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZUxvYWRlckxpIGtleT17ci5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Iuc2hpbW1lcnMubWFwKCh3b3JkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweT17OCBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17d29yZC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dvcmQud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseT1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMTAgYXMgMTYgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJib3JkZXItc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eT17MC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lTG9hZGVyTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlIHNpemU9XCJzbVwiIHZhcmlhbnQ9XCJ0ZXJ0aWFyeVwiIG1sPXsxMn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzLnR5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxCb3ggZm9udFNpemU9e3sgXzogMjAsIHNtOiAyNiB9fSBtdD17MH0gbWI9ezQ4fT5cbiAgICAgICAgICAgICAgICAgICAgICB7YFdlIGNvdWxkbid0IGZpbmQgYSBtYXRjaCBmb3IgYH1cbiAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBmb250V2VpZ2h0PVwiYm9sZFwiPntgXCIke3ZhbHVlVHJpbW1lZH0uXCJgfTwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnIFRyeSBhbm90aGVyIGtleXdvcmQsIG9yIHNlZSB3aGF0IG91ciBtZW1iZXJzIGFyZSBsZWFybmluZy4nXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyU2VhcmNoZXNcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2g9e25hdmlnYXRlVG9TZWFyY2h9XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgeyEhc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICAgIDxTdHJva2VCdXR0b25cbiAgICAgICAgICAgICAgICBteT17MTZ9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCd2aWV3X2FsbF9yZXN1bHRzJywge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFZpZXcgYWxsIHJlc3VsdHNcbiAgICAgICAgICAgICAgPC9TdHJva2VCdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPFF1aXpBbmRIZWxwQ2VudGVyTGlua3NcbiAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgIGhhbmRsZUNsb3NlRHJvcGRvd249e2Nsb3NlU2VhcmNofVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1N1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9Gb2N1c1RyYXA+XG4gICAgPC8+XG4gICk7XG59O1xuIl19 */");
54
+ }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdENEIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nIH0gZnJvbSAnLi9ob29rcy91c2VTZWFyY2hUcmFja2luZyc7XG5pbXBvcnQgeyB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24gfSBmcm9tICcuL2hvb2tzL3VzZVVybENoYW5nZURldGVjdGlvbic7XG5pbXBvcnQgeyBRdWl6QW5kSGVscENlbnRlckxpbmtzIH0gZnJvbSAnLi9RdWl6QW5kSGVscENlbnRlckxpbmtzJztcbmltcG9ydCB7IHNhZmVseVJlZGlyZWN0IH0gZnJvbSAnLi9zYWZlbHlSZWRpcmVjdCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQgfSBmcm9tICcuL1NlYXJjaFRyYWNraW5nUHJvdmlkZXInO1xuaW1wb3J0IHsgc2VhcmNoV29ya2VyIH0gZnJvbSAnLi9TZWFyY2hXb3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVTdWdnZXN0aW9uLFxuICBTZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxufSBmcm9tICcuL1NlYXJjaFdvcmtlci90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgRm9ybSA9IEJveC53aXRoQ29tcG9uZW50KCdmb3JtJyk7XG5jb25zdCBJbnB1dCA9IEJveC53aXRoQ29tcG9uZW50KCdpbnB1dCcpO1xuXG5jb25zdCBRdWVyeUNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN1Z2dlc3Rpb25Db250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcikoXG4gIGNzcyh7XG4gICAgcHQ6IDE2LFxuICAgIHBiOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgIHB4OiB7IF86IDI0IH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCkoXG4gIGNzcyh7XG4gICAgb3V0bGluZTogYG5vbmVgLFxuICAgICcmOjpwbGFjZWhvbGRlcic6IHtcbiAgICAgIHRleHRDb2xvcjogdGhlbWUuY29sb3JzWyd0ZXh0LXNlY29uZGFyeSddIGFzIG5ldmVyLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVSZXN1bHRMaSA9IHN0eWxlZChNZW51SXRlbSkoXG4gIGNzcyh7XG4gICAgcGw6IDAsXG4gICAgcHk6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICAgICcmOmZvY3VzLXZpc2libGU6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAtNCxcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lTG9hZGVyTGkgPSBzdHlsZWQubGkoXG4gIGNzcyh7XG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6IDEyLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFNlbWlib2xkU2VhcmNoSWNvbiA9IHN0eWxlZChTZWFyY2hJY29uKWBcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgY2lyY2xlLFxuICBwYXRoIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICByZWN0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAtMnB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIH1cbmA7XG5cbmNvbnN0IEVsbGlwc2lzQm94ID0gc3R5bGVkKEJveClgXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcblxuY29uc3QgSGlnaGxpZ2h0ZWRUZXh0ID0gKHtcbiAgc3VnZ2VzdGlvbjogeyB0aXRsZSwgc2VnbWVudHMgfSxcbn06IHtcbiAgc3VnZ2VzdGlvbjogQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbjtcbn0pID0+IHtcbiAgY29uc3QgbW9kZSA9IHVzZUN1cnJlbnRNb2RlKCk7XG4gIGNvbnN0IGhpZ2hsaWdodENvbG9yID0gbW9kZSA9PT0gJ2RhcmsnID8gJ2h5cGVyJyA6ICd5ZWxsb3cnO1xuXG4gIHJldHVybiAoXG4gICAgPEZsZXhCb3g+XG4gICAgICA8RWxsaXBzaXNCb3hcbiAgICAgICAgbWF4V2lkdGg9XCJjYWxjKDEwMHZ3IC0gMTI4cHgpXCJcbiAgICAgICAgd2hpdGVTcGFjZT1cInByZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaSkgPT4gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBrZXk9e2Ake3RpdGxlfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgbGluZUhlaWdodD1cInRpdGxlXCJcbiAgICAgICAgICAgIHsuLi4oc2VnbWVudC5oaWdobGlnaHRcbiAgICAgICAgICAgICAgPyB7IGJnOiBoaWdobGlnaHRDb2xvciwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICAgICAgICAgICAgOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3NlZ21lbnQudmFsdWV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvRWxsaXBzaXNCb3g+XG4gICAgICA8VGV4dCBzY3JlZW5yZWFkZXI+e3RpdGxlfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG59O1xuXG50eXBlIFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHtcbiAgc2hpbW1lclJvd3M6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBzaGltbWVyczoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1bXTtcbiAgfVtdO1xufTtcblxubGV0IGxvYWRlcktleSA9IDA7XG5mdW5jdGlvbiBybmRMb2FkZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xuICBjb25zdCBrZXkgPSBsb2FkZXJLZXkrKztcbiAgY29uc3QgbG9hZGVyOiBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7IHNoaW1tZXJSb3dzOiBbXSB9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgIGtleTogYCR7a2V5fToke2l9YCxcbiAgICAgIHNoaW1tZXJzOiBbXSBhcyB7IGtleTogc3RyaW5nOyB3aWR0aDogbnVtYmVyIH1bXSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmRzID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAzKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzOyBqKyspIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gMTIgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5Nik7XG4gICAgICByb3cuc2hpbW1lcnMucHVzaCh7XG4gICAgICAgIGtleTogYCR7a2V5fToke2p9YCxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9hZGVyLnNoaW1tZXJSb3dzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gbG9hZGVyO1xufVxuXG5leHBvcnQgY29uc3QgU2VhcmNoUGFuZTogUmVhY3QuRkM8U2VhcmNoUGFuZVByb3BzPiA9ICh7XG4gIG9uU2VhcmNoLFxuICBvblRyYWNraW5nQ2xpY2ssXG4gIHNlYXJjaEJ1dHRvblJlZixcbiAgdG9nZ2xlU2VhcmNoLFxuICBvblNlYXJjaEFzWW91VHlwZSxcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFthdXRvQ29tcGxldGVTdWdnZXN0aW9ucywgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnNdID0gdXNlU3RhdGU8XG4gICAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbltdXG4gID4oW10pO1xuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzID0gb25TZWFyY2hBc1lvdVR5cGUgJiYgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jIChmcm9tUmVzdWx0Q2xpY2sgPSBmYWxzZSkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoXG4gICAgICBoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHMgJiZcbiAgICAgICFmcm9tUmVzdWx0Q2xpY2sgJiZcbiAgICAgIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcigoKSA9PiBjbG9zZVNlYXJjaCgpKTtcblxuICBjb25zdCBvbk1vdXNlRG93bk91dHNpZGUgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIl0nKVxuICAgICAgICAgID8uY29udGFpbnModGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgICB0YXJnZXQgIT09IHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gICAgfTtcblxuICAgIHRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gIH07XG5cbiAgY29uc3QgbmF2aWdhdGVUb1NlYXJjaCA9IChzZWFyY2hUZXJtOiBzdHJpbmcsIGZyb21QcmV2U2VhcmNoPzogc3RyaW5nKSA9PiB7XG4gICAgb25TZWFyY2goc2VhcmNoVGVybSwgZnJvbVByZXZTZWFyY2gpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgIHNldFZhbHVlKGV2dC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgc2VhcmNoV29ya2VyLmluaXQoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGxldCBjbGVhckF1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgbGV0IGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICB9O1xuICB9LCBbdmFsdWVUcmltbWVkLCBvblNlYXJjaEFzWW91VHlwZSwgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXNdKTtcblxuICB1c2VTZWFyY2hUcmFja2luZyh7XG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgYmc9XCJzaGFkb3ctc2Vjb25kYXJ5XCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwdmhcIlxuICAgICAgICBwb3NpdGlvbj1cImZpeGVkXCJcbiAgICAgICAgLy8gV2UgYWRkIDVyZW0gaGVyZSBpbiBjYXNlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJyYW5kZWQgYmFubmVyIGFib3ZlIHNlYXJjaFxuICAgICAgICAvLyBUaGUgc2VhcmNoIGFyZWEgaXMgbXVjaCB0YWxsZXIgdGhhbiA1cmVtIHNvIHRoaXMgaXMgYSBzYWZlIGFtb3VudCBvZiBwYWRkaW5nXG4gICAgICAgIHRvcD17YGNhbGMoJHt0aGVtZS5lbGVtZW50cy5oZWFkZXJIZWlnaHR9ICsgNXJlbSlgfVxuICAgICAgICB3aWR0aD17MX1cbiAgICAgIC8+XG4gICAgICA8Rm9jdXNUcmFwXG4gICAgICAgIG9uRXNjYXBlS2V5PXsoKSA9PiBjbG9zZVNlYXJjaCgpfVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VtaWJvbGRTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYj17MiBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17OH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBtcj17MTJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgeyhzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cImgyXCIgZm9udFNpemU9ezIwfSBtYj17MTZ9IG10PXsyNH0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9wIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIGFzPVwidWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHA9ezB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hBc1lvdVR5cGVMb2FkZXI/LnNoaW1tZXJSb3dzLm1hcCgocikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVMb2FkZXJMaSBrZXk9e3Iua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyLnNoaW1tZXJzLm1hcCgod29yZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hpbW1lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHk9ezggYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3b3JkLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDEwIGFzIDE2IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwieGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9ezAuMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZUxvYWRlckxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMucXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2godHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8Qm94IGZvbnRTaXplPXt7IF86IDIwLCBzbTogMjYgfX0gbXQ9ezB9IG1iPXs0OH0+XG4gICAgICAgICAgICAgICAgICAgICAge2BXZSBjb3VsZG4ndCBmaW5kIGEgbWF0Y2ggZm9yIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQgZm9udFdlaWdodD1cImJvbGRcIj57YFwiJHt2YWx1ZVRyaW1tZWR9LlwiYH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJyBUcnkgYW5vdGhlciBrZXl3b3JkLCBvciBzZWUgd2hhdCBvdXIgbWVtYmVycyBhcmUgbGVhcm5pbmcuJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8UG9wdWxhclNlYXJjaGVzXG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoPXtuYXZpZ2F0ZVRvU2VhcmNofVxuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHshIXNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8U3Ryb2tlQnV0dG9uXG4gICAgICAgICAgICAgICAgbXk9ezE2fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygndmlld19hbGxfcmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IGFsbCByZXN1bHRzXG4gICAgICAgICAgICAgIDwvU3Ryb2tlQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxRdWl6QW5kSGVscENlbnRlckxpbmtzXG4gICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURyb3Bkb3duPXtjbG9zZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdWdnZXN0aW9uQ29udGFpbmVyPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRm9jdXNUcmFwPlxuICAgIDwvPlxuICApO1xufTtcbiJdfQ== */");
54
55
  const StyledInput = /*#__PURE__*/_styled(Input, {
55
56
  target: "e1e5b20r4",
56
57
  label: "StyledInput"
@@ -59,7 +60,7 @@ const StyledInput = /*#__PURE__*/_styled(Input, {
59
60
  '&::placeholder': {
60
61
  textColor: theme.colors['text-secondary']
61
62
  }
62
- }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVEb0IiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVVybENoYW5nZURldGVjdGlvbiB9IGZyb20gJy4vaG9va3MvdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uJztcbmltcG9ydCB7IFF1aXpBbmRIZWxwQ2VudGVyTGlua3MgfSBmcm9tICcuL1F1aXpBbmRIZWxwQ2VudGVyTGlua3MnO1xuaW1wb3J0IHsgc2FmZWx5UmVkaXJlY3QgfSBmcm9tICcuL3NhZmVseVJlZGlyZWN0JztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nQ29udGV4dCB9IGZyb20gJy4vU2VhcmNoVHJhY2tpbmdQcm92aWRlcic7XG5pbXBvcnQgeyBzZWFyY2hXb3JrZXIgfSBmcm9tICcuL1NlYXJjaFdvcmtlcic7XG5pbXBvcnQgdHlwZSB7XG4gIEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb24sXG4gIFNlYXJjaEFzWW91VHlwZVJlc3VsdHMsXG59IGZyb20gJy4vU2VhcmNoV29ya2VyL3R5cGVzJztcbmltcG9ydCB7IFNlYXJjaFBhbmVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBGb3JtID0gQm94LndpdGhDb21wb25lbnQoJ2Zvcm0nKTtcbmNvbnN0IElucHV0ID0gQm94LndpdGhDb21wb25lbnQoJ2lucHV0Jyk7XG5cbmNvbnN0IFF1ZXJ5Q29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpKFxuICBjc3Moe1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHB0OiAxNixcbiAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICBweDogeyBfOiAyNCB9LFxuICB9KVxuKTtcblxuY29uc3QgU3VnZ2VzdGlvbkNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KShcbiAgY3NzKHtcbiAgICBvdXRsaW5lOiBgbm9uZWAsXG4gICAgJyY6OnBsYWNlaG9sZGVyJzoge1xuICAgICAgdGV4dENvbG9yOiB0aGVtZS5jb2xvcnNbJ3RleHQtc2Vjb25kYXJ5J10gYXMgbmV2ZXIsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZVJlc3VsdExpID0gc3R5bGVkKE1lbnVJdGVtKShcbiAgY3NzKHtcbiAgICBwbDogMCxcbiAgICBweTogOCxcbiAgICBmb250U2l6ZTogMTYsXG4gICAgJyY6Zm9jdXMtdmlzaWJsZTphZnRlcic6IHtcbiAgICAgIGxlZnQ6IC00LFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVMb2FkZXJMaSA9IHN0eWxlZC5saShcbiAgY3NzKHtcbiAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogMTIsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgU2VtaWJvbGRTZWFyY2hJY29uID0gc3R5bGVkKFNlYXJjaEljb24pYFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBjaXJjbGUsXG4gIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gIHJlY3Qge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0ycHgsIC0ycHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTtcbiAgfVxuYDtcblxuY29uc3QgRWxsaXBzaXNCb3ggPSBzdHlsZWQoQm94KWBcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gO1xuXG5jb25zdCBIaWdobGlnaHRlZFRleHQgPSAoe1xuICBzdWdnZXN0aW9uOiB7IHRpdGxlLCBzZWdtZW50cyB9LFxufToge1xuICBzdWdnZXN0aW9uOiBBdXRvY29tcGxldGVTdWdnZXN0aW9uO1xufSkgPT4ge1xuICBjb25zdCBtb2RlID0gdXNlQ3VycmVudE1vZGUoKTtcbiAgY29uc3QgaGlnaGxpZ2h0Q29sb3IgPSBtb2RlID09PSAnZGFyaycgPyAnaHlwZXInIDogJ3llbGxvdyc7XG5cbiAgcmV0dXJuIChcbiAgICA8RmxleEJveD5cbiAgICAgIDxFbGxpcHNpc0JveFxuICAgICAgICBtYXhXaWR0aD1cImNhbGMoMTAwdncgLSAxMjhweClcIlxuICAgICAgICB3aGl0ZVNwYWNlPVwicHJlXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpKSA9PiAoXG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGtleT17YCR7dGl0bGV9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICBsaW5lSGVpZ2h0PVwidGl0bGVcIlxuICAgICAgICAgICAgey4uLihzZWdtZW50LmhpZ2hsaWdodFxuICAgICAgICAgICAgICA/IHsgYmc6IGhpZ2hsaWdodENvbG9yLCBmb250V2VpZ2h0OiAnYm9sZCcgfVxuICAgICAgICAgICAgICA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2VnbWVudC52YWx1ZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9FbGxpcHNpc0JveD5cbiAgICAgIDxUZXh0IHNjcmVlbnJlYWRlcj57dGl0bGV9PC9UZXh0PlxuICAgIDwvRmxleEJveD5cbiAgKTtcbn07XG5cbnR5cGUgU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0ge1xuICBzaGltbWVyUm93czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHNoaW1tZXJzOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgfVtdO1xuICB9W107XG59O1xuXG5sZXQgbG9hZGVyS2V5ID0gMDtcbmZ1bmN0aW9uIHJuZExvYWRlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gIGNvbnN0IGtleSA9IGxvYWRlcktleSsrO1xuICBjb25zdCBsb2FkZXI6IFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHsgc2hpbW1lclJvd3M6IFtdIH07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0ge1xuICAgICAga2V5OiBgJHtrZXl9OiR7aX1gLFxuICAgICAgc2hpbW1lcnM6IFtdIGFzIHsga2V5OiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdLFxuICAgIH07XG4gICAgY29uc3Qgd29yZHMgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZHM7IGorKykge1xuICAgICAgY29uc3Qgd2lkdGggPSAxMiArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk2KTtcbiAgICAgIHJvdy5zaGltbWVycy5wdXNoKHtcbiAgICAgICAga2V5OiBgJHtrZXl9OiR7an1gLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkZXIuc2hpbW1lclJvd3MucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBsb2FkZXI7XG59XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hQYW5lOiBSZWFjdC5GQzxTZWFyY2hQYW5lUHJvcHM+ID0gKHtcbiAgb25TZWFyY2gsXG4gIG9uVHJhY2tpbmdDbGljayxcbiAgc2VhcmNoQnV0dG9uUmVmLFxuICB0b2dnbGVTZWFyY2gsXG4gIG9uU2VhcmNoQXNZb3VUeXBlLFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLCBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9uc10gPSB1c2VTdGF0ZTxcbiAgICBBdXRvY29tcGxldGVTdWdnZXN0aW9uW11cbiAgPihbXSk7XG4gIGNvbnN0IFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLCBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzXSA9XG4gICAgdXNlU3RhdGU8U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRDbGlja2VkLCBzZXRTZWFyY2hSZXN1bHRDbGlja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrID1cbiAgICBvblNlYXJjaEFzWW91VHlwZSAmJiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzICYmICFzZWFyY2hSZXN1bHRDbGlja2VkO1xuXG4gIGNvbnN0IGNsb3NlU2VhcmNoID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcihjbG9zZVNlYXJjaCk7XG5cbiAgY29uc3Qgb25Nb3VzZURvd25PdXRzaWRlID0gKHsgdGFyZ2V0IH06IE1vdXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCBoYW5kbGVPdXRzaWRlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICFkb2N1bWVudFxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJdJylcbiAgICAgICAgICA/LmNvbnRhaW5zKHRhcmdldCBhcyBIVE1MRWxlbWVudCkgJiZcbiAgICAgICAgdGFyZ2V0ICE9PSBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICAgIH07XG5cbiAgICB0YXJnZXQ/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IG5hdmlnYXRlVG9TZWFyY2ggPSAoc2VhcmNoVGVybTogc3RyaW5nLCBmcm9tUHJldlNlYXJjaD86IHN0cmluZykgPT4ge1xuICAgIG9uU2VhcmNoKHNlYXJjaFRlcm0sIGZyb21QcmV2U2VhcmNoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2U6IFJlYWN0LkNoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICBzZXRWYWx1ZShldnQudGFyZ2V0LnZhbHVlKTtcbiAgICAvLyByZXNldCB0byBmYWxzZSB3aGVuIHRoZSBzZWFyY2ggcXVlcnkgY2hhbmdlc1xuICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQoZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIGRvbid0IHRyYWNrIGlmIGEgcmVzdWx0IHdhcyBjbGlja2VkIG9yIGlmIHdlIGRvbid0IGhhdmUgc2VhcmNoIHJlc3VsdHNcbiAgICBpZiAoXG4gICAgICBzZWFyY2hSZXN1bHRDbGlja2VkIHx8XG4gICAgICAhb25TZWFyY2hBc1lvdVR5cGUgfHxcbiAgICAgICFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzIHx8XG4gICAgICAhdmFsdWVUcmltbWVkLmxlbmd0aFxuICAgIClcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLXJldHVyblxuICAgICAgcmV0dXJuO1xuICB9LCBbXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxuICAgIHZhbHVlVHJpbW1lZCxcbiAgICBvblNlYXJjaEFzWW91VHlwZSxcbiAgXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIHNlYXJjaFdvcmtlci5pbml0KCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmFsdWVUcmltbWVkLmxlbmd0aCkge1xuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6ICcnLFxuICAgICAgICBzZWFyY2hJZDogJycsXG4gICAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBsZXQgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5OiBOb2RlSlMuVGltZW91dDtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2l0aCBhIHNtYWxsIGRlbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHJlc3VsdHNcbiAgICAgIGlmIChcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUgJiZcbiAgICAgICAgcmVzdWx0cy50b3AubGVuZ3RoID09PSAwICYmXG4gICAgICAgICFzZWFyY2hSZXN1bHRDbGlja2VkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgIHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghY2FuY2VsKSB7XG4gICAgICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIDAsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkpO1xuICAgIH07XG4gIH0sIFtcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyxcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBiZz1cInNoYWRvdy1zZWNvbmRhcnlcIlxuICAgICAgICBoZWlnaHQ9XCIxMDB2aFwiXG4gICAgICAgIHBvc2l0aW9uPVwiZml4ZWRcIlxuICAgICAgICAvLyBXZSBhZGQgNXJlbSBoZXJlIGluIGNhc2UgdGhlcmUncyBzb21lIHNvcnQgb2YgYnJhbmRlZCBiYW5uZXIgYWJvdmUgc2VhcmNoXG4gICAgICAgIC8vIFRoZSBzZWFyY2ggYXJlYSBpcyBtdWNoIHRhbGxlciB0aGFuIDVyZW0gc28gdGhpcyBpcyBhIHNhZmUgYW1vdW50IG9mIHBhZGRpbmdcbiAgICAgICAgdG9wPXtgY2FsYygke3RoZW1lLmVsZW1lbnRzLmhlYWRlckhlaWdodH0gKyA1cmVtKWB9XG4gICAgICAgIHdpZHRoPXsxfVxuICAgICAgLz5cbiAgICAgIDxGb2N1c1RyYXBcbiAgICAgICAgb25Fc2NhcGVLZXk9e2Nsb3NlU2VhcmNofVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW1pYm9sZFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1iPXsyIGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXs4fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1yPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICB7KHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwiaDJcIiBmb250U2l6ZT17MjB9IG1iPXsxNn0gbXQ9ezI0fT5cbiAgICAgICAgICAgICAgICAgICAgICBUb3AgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJ1bFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcD17MH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlYXJjaEFzWW91VHlwZUxvYWRlcj8uc2hpbW1lclJvd3MubWFwKChyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZUxvYWRlckxpIGtleT17ci5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Iuc2hpbW1lcnMubWFwKCh3b3JkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweT17OCBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17d29yZC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dvcmQud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseT1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMTAgYXMgMTYgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJib3JkZXItc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eT17MC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lTG9hZGVyTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlIHNpemU9XCJzbVwiIHZhcmlhbnQ9XCJ0ZXJ0aWFyeVwiIG1sPXsxMn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzLnR5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxCb3ggZm9udFNpemU9e3sgXzogMjAsIHNtOiAyNiB9fSBtdD17MH0gbWI9ezQ4fT5cbiAgICAgICAgICAgICAgICAgICAgICB7YFdlIGNvdWxkbid0IGZpbmQgYSBtYXRjaCBmb3IgYH1cbiAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBmb250V2VpZ2h0PVwiYm9sZFwiPntgXCIke3ZhbHVlVHJpbW1lZH0uXCJgfTwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnIFRyeSBhbm90aGVyIGtleXdvcmQsIG9yIHNlZSB3aGF0IG91ciBtZW1iZXJzIGFyZSBsZWFybmluZy4nXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyU2VhcmNoZXNcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2g9e25hdmlnYXRlVG9TZWFyY2h9XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgeyEhc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICAgIDxTdHJva2VCdXR0b25cbiAgICAgICAgICAgICAgICBteT17MTZ9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCd2aWV3X2FsbF9yZXN1bHRzJywge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFZpZXcgYWxsIHJlc3VsdHNcbiAgICAgICAgICAgICAgPC9TdHJva2VCdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPFF1aXpBbmRIZWxwQ2VudGVyTGlua3NcbiAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgIGhhbmRsZUNsb3NlRHJvcGRvd249e2Nsb3NlU2VhcmNofVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1N1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9Gb2N1c1RyYXA+XG4gICAgPC8+XG4gICk7XG59O1xuIl19 */");
63
+ }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdEb0IiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nIH0gZnJvbSAnLi9ob29rcy91c2VTZWFyY2hUcmFja2luZyc7XG5pbXBvcnQgeyB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24gfSBmcm9tICcuL2hvb2tzL3VzZVVybENoYW5nZURldGVjdGlvbic7XG5pbXBvcnQgeyBRdWl6QW5kSGVscENlbnRlckxpbmtzIH0gZnJvbSAnLi9RdWl6QW5kSGVscENlbnRlckxpbmtzJztcbmltcG9ydCB7IHNhZmVseVJlZGlyZWN0IH0gZnJvbSAnLi9zYWZlbHlSZWRpcmVjdCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQgfSBmcm9tICcuL1NlYXJjaFRyYWNraW5nUHJvdmlkZXInO1xuaW1wb3J0IHsgc2VhcmNoV29ya2VyIH0gZnJvbSAnLi9TZWFyY2hXb3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVTdWdnZXN0aW9uLFxuICBTZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxufSBmcm9tICcuL1NlYXJjaFdvcmtlci90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgRm9ybSA9IEJveC53aXRoQ29tcG9uZW50KCdmb3JtJyk7XG5jb25zdCBJbnB1dCA9IEJveC53aXRoQ29tcG9uZW50KCdpbnB1dCcpO1xuXG5jb25zdCBRdWVyeUNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN1Z2dlc3Rpb25Db250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcikoXG4gIGNzcyh7XG4gICAgcHQ6IDE2LFxuICAgIHBiOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgIHB4OiB7IF86IDI0IH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCkoXG4gIGNzcyh7XG4gICAgb3V0bGluZTogYG5vbmVgLFxuICAgICcmOjpwbGFjZWhvbGRlcic6IHtcbiAgICAgIHRleHRDb2xvcjogdGhlbWUuY29sb3JzWyd0ZXh0LXNlY29uZGFyeSddIGFzIG5ldmVyLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVSZXN1bHRMaSA9IHN0eWxlZChNZW51SXRlbSkoXG4gIGNzcyh7XG4gICAgcGw6IDAsXG4gICAgcHk6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICAgICcmOmZvY3VzLXZpc2libGU6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAtNCxcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lTG9hZGVyTGkgPSBzdHlsZWQubGkoXG4gIGNzcyh7XG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6IDEyLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFNlbWlib2xkU2VhcmNoSWNvbiA9IHN0eWxlZChTZWFyY2hJY29uKWBcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgY2lyY2xlLFxuICBwYXRoIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICByZWN0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAtMnB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIH1cbmA7XG5cbmNvbnN0IEVsbGlwc2lzQm94ID0gc3R5bGVkKEJveClgXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcblxuY29uc3QgSGlnaGxpZ2h0ZWRUZXh0ID0gKHtcbiAgc3VnZ2VzdGlvbjogeyB0aXRsZSwgc2VnbWVudHMgfSxcbn06IHtcbiAgc3VnZ2VzdGlvbjogQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbjtcbn0pID0+IHtcbiAgY29uc3QgbW9kZSA9IHVzZUN1cnJlbnRNb2RlKCk7XG4gIGNvbnN0IGhpZ2hsaWdodENvbG9yID0gbW9kZSA9PT0gJ2RhcmsnID8gJ2h5cGVyJyA6ICd5ZWxsb3cnO1xuXG4gIHJldHVybiAoXG4gICAgPEZsZXhCb3g+XG4gICAgICA8RWxsaXBzaXNCb3hcbiAgICAgICAgbWF4V2lkdGg9XCJjYWxjKDEwMHZ3IC0gMTI4cHgpXCJcbiAgICAgICAgd2hpdGVTcGFjZT1cInByZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaSkgPT4gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBrZXk9e2Ake3RpdGxlfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgbGluZUhlaWdodD1cInRpdGxlXCJcbiAgICAgICAgICAgIHsuLi4oc2VnbWVudC5oaWdobGlnaHRcbiAgICAgICAgICAgICAgPyB7IGJnOiBoaWdobGlnaHRDb2xvciwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICAgICAgICAgICAgOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3NlZ21lbnQudmFsdWV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvRWxsaXBzaXNCb3g+XG4gICAgICA8VGV4dCBzY3JlZW5yZWFkZXI+e3RpdGxlfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG59O1xuXG50eXBlIFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHtcbiAgc2hpbW1lclJvd3M6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBzaGltbWVyczoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1bXTtcbiAgfVtdO1xufTtcblxubGV0IGxvYWRlcktleSA9IDA7XG5mdW5jdGlvbiBybmRMb2FkZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xuICBjb25zdCBrZXkgPSBsb2FkZXJLZXkrKztcbiAgY29uc3QgbG9hZGVyOiBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7IHNoaW1tZXJSb3dzOiBbXSB9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgIGtleTogYCR7a2V5fToke2l9YCxcbiAgICAgIHNoaW1tZXJzOiBbXSBhcyB7IGtleTogc3RyaW5nOyB3aWR0aDogbnVtYmVyIH1bXSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmRzID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAzKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzOyBqKyspIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gMTIgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5Nik7XG4gICAgICByb3cuc2hpbW1lcnMucHVzaCh7XG4gICAgICAgIGtleTogYCR7a2V5fToke2p9YCxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9hZGVyLnNoaW1tZXJSb3dzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gbG9hZGVyO1xufVxuXG5leHBvcnQgY29uc3QgU2VhcmNoUGFuZTogUmVhY3QuRkM8U2VhcmNoUGFuZVByb3BzPiA9ICh7XG4gIG9uU2VhcmNoLFxuICBvblRyYWNraW5nQ2xpY2ssXG4gIHNlYXJjaEJ1dHRvblJlZixcbiAgdG9nZ2xlU2VhcmNoLFxuICBvblNlYXJjaEFzWW91VHlwZSxcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFthdXRvQ29tcGxldGVTdWdnZXN0aW9ucywgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnNdID0gdXNlU3RhdGU8XG4gICAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbltdXG4gID4oW10pO1xuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzID0gb25TZWFyY2hBc1lvdVR5cGUgJiYgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jIChmcm9tUmVzdWx0Q2xpY2sgPSBmYWxzZSkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoXG4gICAgICBoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHMgJiZcbiAgICAgICFmcm9tUmVzdWx0Q2xpY2sgJiZcbiAgICAgIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcigoKSA9PiBjbG9zZVNlYXJjaCgpKTtcblxuICBjb25zdCBvbk1vdXNlRG93bk91dHNpZGUgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIl0nKVxuICAgICAgICAgID8uY29udGFpbnModGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgICB0YXJnZXQgIT09IHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gICAgfTtcblxuICAgIHRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gIH07XG5cbiAgY29uc3QgbmF2aWdhdGVUb1NlYXJjaCA9IChzZWFyY2hUZXJtOiBzdHJpbmcsIGZyb21QcmV2U2VhcmNoPzogc3RyaW5nKSA9PiB7XG4gICAgb25TZWFyY2goc2VhcmNoVGVybSwgZnJvbVByZXZTZWFyY2gpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgIHNldFZhbHVlKGV2dC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgc2VhcmNoV29ya2VyLmluaXQoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGxldCBjbGVhckF1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgbGV0IGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICB9O1xuICB9LCBbdmFsdWVUcmltbWVkLCBvblNlYXJjaEFzWW91VHlwZSwgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXNdKTtcblxuICB1c2VTZWFyY2hUcmFja2luZyh7XG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgYmc9XCJzaGFkb3ctc2Vjb25kYXJ5XCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwdmhcIlxuICAgICAgICBwb3NpdGlvbj1cImZpeGVkXCJcbiAgICAgICAgLy8gV2UgYWRkIDVyZW0gaGVyZSBpbiBjYXNlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJyYW5kZWQgYmFubmVyIGFib3ZlIHNlYXJjaFxuICAgICAgICAvLyBUaGUgc2VhcmNoIGFyZWEgaXMgbXVjaCB0YWxsZXIgdGhhbiA1cmVtIHNvIHRoaXMgaXMgYSBzYWZlIGFtb3VudCBvZiBwYWRkaW5nXG4gICAgICAgIHRvcD17YGNhbGMoJHt0aGVtZS5lbGVtZW50cy5oZWFkZXJIZWlnaHR9ICsgNXJlbSlgfVxuICAgICAgICB3aWR0aD17MX1cbiAgICAgIC8+XG4gICAgICA8Rm9jdXNUcmFwXG4gICAgICAgIG9uRXNjYXBlS2V5PXsoKSA9PiBjbG9zZVNlYXJjaCgpfVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VtaWJvbGRTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYj17MiBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17OH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBtcj17MTJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgeyhzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cImgyXCIgZm9udFNpemU9ezIwfSBtYj17MTZ9IG10PXsyNH0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9wIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIGFzPVwidWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHA9ezB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hBc1lvdVR5cGVMb2FkZXI/LnNoaW1tZXJSb3dzLm1hcCgocikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVMb2FkZXJMaSBrZXk9e3Iua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyLnNoaW1tZXJzLm1hcCgod29yZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hpbW1lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHk9ezggYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3b3JkLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDEwIGFzIDE2IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwieGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9ezAuMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZUxvYWRlckxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMucXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2godHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8Qm94IGZvbnRTaXplPXt7IF86IDIwLCBzbTogMjYgfX0gbXQ9ezB9IG1iPXs0OH0+XG4gICAgICAgICAgICAgICAgICAgICAge2BXZSBjb3VsZG4ndCBmaW5kIGEgbWF0Y2ggZm9yIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQgZm9udFdlaWdodD1cImJvbGRcIj57YFwiJHt2YWx1ZVRyaW1tZWR9LlwiYH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJyBUcnkgYW5vdGhlciBrZXl3b3JkLCBvciBzZWUgd2hhdCBvdXIgbWVtYmVycyBhcmUgbGVhcm5pbmcuJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8UG9wdWxhclNlYXJjaGVzXG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoPXtuYXZpZ2F0ZVRvU2VhcmNofVxuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHshIXNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8U3Ryb2tlQnV0dG9uXG4gICAgICAgICAgICAgICAgbXk9ezE2fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygndmlld19hbGxfcmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IGFsbCByZXN1bHRzXG4gICAgICAgICAgICAgIDwvU3Ryb2tlQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxRdWl6QW5kSGVscENlbnRlckxpbmtzXG4gICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURyb3Bkb3duPXtjbG9zZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdWdnZXN0aW9uQ29udGFpbmVyPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRm9jdXNUcmFwPlxuICAgIDwvPlxuICApO1xufTtcbiJdfQ== */");
63
64
  const InlineResultLi = /*#__PURE__*/_styled(MenuItem, {
64
65
  target: "e1e5b20r3",
65
66
  label: "InlineResultLi"
@@ -70,7 +71,7 @@ const InlineResultLi = /*#__PURE__*/_styled(MenuItem, {
70
71
  '&:focus-visible:after': {
71
72
  left: -4
72
73
  }
73
- }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdFdUIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVVybENoYW5nZURldGVjdGlvbiB9IGZyb20gJy4vaG9va3MvdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uJztcbmltcG9ydCB7IFF1aXpBbmRIZWxwQ2VudGVyTGlua3MgfSBmcm9tICcuL1F1aXpBbmRIZWxwQ2VudGVyTGlua3MnO1xuaW1wb3J0IHsgc2FmZWx5UmVkaXJlY3QgfSBmcm9tICcuL3NhZmVseVJlZGlyZWN0JztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nQ29udGV4dCB9IGZyb20gJy4vU2VhcmNoVHJhY2tpbmdQcm92aWRlcic7XG5pbXBvcnQgeyBzZWFyY2hXb3JrZXIgfSBmcm9tICcuL1NlYXJjaFdvcmtlcic7XG5pbXBvcnQgdHlwZSB7XG4gIEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb24sXG4gIFNlYXJjaEFzWW91VHlwZVJlc3VsdHMsXG59IGZyb20gJy4vU2VhcmNoV29ya2VyL3R5cGVzJztcbmltcG9ydCB7IFNlYXJjaFBhbmVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBGb3JtID0gQm94LndpdGhDb21wb25lbnQoJ2Zvcm0nKTtcbmNvbnN0IElucHV0ID0gQm94LndpdGhDb21wb25lbnQoJ2lucHV0Jyk7XG5cbmNvbnN0IFF1ZXJ5Q29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpKFxuICBjc3Moe1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHB0OiAxNixcbiAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICBweDogeyBfOiAyNCB9LFxuICB9KVxuKTtcblxuY29uc3QgU3VnZ2VzdGlvbkNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KShcbiAgY3NzKHtcbiAgICBvdXRsaW5lOiBgbm9uZWAsXG4gICAgJyY6OnBsYWNlaG9sZGVyJzoge1xuICAgICAgdGV4dENvbG9yOiB0aGVtZS5jb2xvcnNbJ3RleHQtc2Vjb25kYXJ5J10gYXMgbmV2ZXIsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZVJlc3VsdExpID0gc3R5bGVkKE1lbnVJdGVtKShcbiAgY3NzKHtcbiAgICBwbDogMCxcbiAgICBweTogOCxcbiAgICBmb250U2l6ZTogMTYsXG4gICAgJyY6Zm9jdXMtdmlzaWJsZTphZnRlcic6IHtcbiAgICAgIGxlZnQ6IC00LFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVMb2FkZXJMaSA9IHN0eWxlZC5saShcbiAgY3NzKHtcbiAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogMTIsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgU2VtaWJvbGRTZWFyY2hJY29uID0gc3R5bGVkKFNlYXJjaEljb24pYFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBjaXJjbGUsXG4gIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gIHJlY3Qge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0ycHgsIC0ycHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTtcbiAgfVxuYDtcblxuY29uc3QgRWxsaXBzaXNCb3ggPSBzdHlsZWQoQm94KWBcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gO1xuXG5jb25zdCBIaWdobGlnaHRlZFRleHQgPSAoe1xuICBzdWdnZXN0aW9uOiB7IHRpdGxlLCBzZWdtZW50cyB9LFxufToge1xuICBzdWdnZXN0aW9uOiBBdXRvY29tcGxldGVTdWdnZXN0aW9uO1xufSkgPT4ge1xuICBjb25zdCBtb2RlID0gdXNlQ3VycmVudE1vZGUoKTtcbiAgY29uc3QgaGlnaGxpZ2h0Q29sb3IgPSBtb2RlID09PSAnZGFyaycgPyAnaHlwZXInIDogJ3llbGxvdyc7XG5cbiAgcmV0dXJuIChcbiAgICA8RmxleEJveD5cbiAgICAgIDxFbGxpcHNpc0JveFxuICAgICAgICBtYXhXaWR0aD1cImNhbGMoMTAwdncgLSAxMjhweClcIlxuICAgICAgICB3aGl0ZVNwYWNlPVwicHJlXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpKSA9PiAoXG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGtleT17YCR7dGl0bGV9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICBsaW5lSGVpZ2h0PVwidGl0bGVcIlxuICAgICAgICAgICAgey4uLihzZWdtZW50LmhpZ2hsaWdodFxuICAgICAgICAgICAgICA/IHsgYmc6IGhpZ2hsaWdodENvbG9yLCBmb250V2VpZ2h0OiAnYm9sZCcgfVxuICAgICAgICAgICAgICA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2VnbWVudC52YWx1ZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9FbGxpcHNpc0JveD5cbiAgICAgIDxUZXh0IHNjcmVlbnJlYWRlcj57dGl0bGV9PC9UZXh0PlxuICAgIDwvRmxleEJveD5cbiAgKTtcbn07XG5cbnR5cGUgU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0ge1xuICBzaGltbWVyUm93czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHNoaW1tZXJzOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgfVtdO1xuICB9W107XG59O1xuXG5sZXQgbG9hZGVyS2V5ID0gMDtcbmZ1bmN0aW9uIHJuZExvYWRlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gIGNvbnN0IGtleSA9IGxvYWRlcktleSsrO1xuICBjb25zdCBsb2FkZXI6IFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHsgc2hpbW1lclJvd3M6IFtdIH07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0ge1xuICAgICAga2V5OiBgJHtrZXl9OiR7aX1gLFxuICAgICAgc2hpbW1lcnM6IFtdIGFzIHsga2V5OiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdLFxuICAgIH07XG4gICAgY29uc3Qgd29yZHMgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZHM7IGorKykge1xuICAgICAgY29uc3Qgd2lkdGggPSAxMiArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk2KTtcbiAgICAgIHJvdy5zaGltbWVycy5wdXNoKHtcbiAgICAgICAga2V5OiBgJHtrZXl9OiR7an1gLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkZXIuc2hpbW1lclJvd3MucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBsb2FkZXI7XG59XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hQYW5lOiBSZWFjdC5GQzxTZWFyY2hQYW5lUHJvcHM+ID0gKHtcbiAgb25TZWFyY2gsXG4gIG9uVHJhY2tpbmdDbGljayxcbiAgc2VhcmNoQnV0dG9uUmVmLFxuICB0b2dnbGVTZWFyY2gsXG4gIG9uU2VhcmNoQXNZb3VUeXBlLFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLCBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9uc10gPSB1c2VTdGF0ZTxcbiAgICBBdXRvY29tcGxldGVTdWdnZXN0aW9uW11cbiAgPihbXSk7XG4gIGNvbnN0IFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLCBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzXSA9XG4gICAgdXNlU3RhdGU8U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRDbGlja2VkLCBzZXRTZWFyY2hSZXN1bHRDbGlja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrID1cbiAgICBvblNlYXJjaEFzWW91VHlwZSAmJiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzICYmICFzZWFyY2hSZXN1bHRDbGlja2VkO1xuXG4gIGNvbnN0IGNsb3NlU2VhcmNoID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcihjbG9zZVNlYXJjaCk7XG5cbiAgY29uc3Qgb25Nb3VzZURvd25PdXRzaWRlID0gKHsgdGFyZ2V0IH06IE1vdXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCBoYW5kbGVPdXRzaWRlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICFkb2N1bWVudFxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJdJylcbiAgICAgICAgICA/LmNvbnRhaW5zKHRhcmdldCBhcyBIVE1MRWxlbWVudCkgJiZcbiAgICAgICAgdGFyZ2V0ICE9PSBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICAgIH07XG5cbiAgICB0YXJnZXQ/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IG5hdmlnYXRlVG9TZWFyY2ggPSAoc2VhcmNoVGVybTogc3RyaW5nLCBmcm9tUHJldlNlYXJjaD86IHN0cmluZykgPT4ge1xuICAgIG9uU2VhcmNoKHNlYXJjaFRlcm0sIGZyb21QcmV2U2VhcmNoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2U6IFJlYWN0LkNoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICBzZXRWYWx1ZShldnQudGFyZ2V0LnZhbHVlKTtcbiAgICAvLyByZXNldCB0byBmYWxzZSB3aGVuIHRoZSBzZWFyY2ggcXVlcnkgY2hhbmdlc1xuICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQoZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIGRvbid0IHRyYWNrIGlmIGEgcmVzdWx0IHdhcyBjbGlja2VkIG9yIGlmIHdlIGRvbid0IGhhdmUgc2VhcmNoIHJlc3VsdHNcbiAgICBpZiAoXG4gICAgICBzZWFyY2hSZXN1bHRDbGlja2VkIHx8XG4gICAgICAhb25TZWFyY2hBc1lvdVR5cGUgfHxcbiAgICAgICFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzIHx8XG4gICAgICAhdmFsdWVUcmltbWVkLmxlbmd0aFxuICAgIClcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLXJldHVyblxuICAgICAgcmV0dXJuO1xuICB9LCBbXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxuICAgIHZhbHVlVHJpbW1lZCxcbiAgICBvblNlYXJjaEFzWW91VHlwZSxcbiAgXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIHNlYXJjaFdvcmtlci5pbml0KCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmFsdWVUcmltbWVkLmxlbmd0aCkge1xuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6ICcnLFxuICAgICAgICBzZWFyY2hJZDogJycsXG4gICAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBsZXQgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5OiBOb2RlSlMuVGltZW91dDtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2l0aCBhIHNtYWxsIGRlbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHJlc3VsdHNcbiAgICAgIGlmIChcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUgJiZcbiAgICAgICAgcmVzdWx0cy50b3AubGVuZ3RoID09PSAwICYmXG4gICAgICAgICFzZWFyY2hSZXN1bHRDbGlja2VkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgIHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghY2FuY2VsKSB7XG4gICAgICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIDAsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkpO1xuICAgIH07XG4gIH0sIFtcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyxcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBiZz1cInNoYWRvdy1zZWNvbmRhcnlcIlxuICAgICAgICBoZWlnaHQ9XCIxMDB2aFwiXG4gICAgICAgIHBvc2l0aW9uPVwiZml4ZWRcIlxuICAgICAgICAvLyBXZSBhZGQgNXJlbSBoZXJlIGluIGNhc2UgdGhlcmUncyBzb21lIHNvcnQgb2YgYnJhbmRlZCBiYW5uZXIgYWJvdmUgc2VhcmNoXG4gICAgICAgIC8vIFRoZSBzZWFyY2ggYXJlYSBpcyBtdWNoIHRhbGxlciB0aGFuIDVyZW0gc28gdGhpcyBpcyBhIHNhZmUgYW1vdW50IG9mIHBhZGRpbmdcbiAgICAgICAgdG9wPXtgY2FsYygke3RoZW1lLmVsZW1lbnRzLmhlYWRlckhlaWdodH0gKyA1cmVtKWB9XG4gICAgICAgIHdpZHRoPXsxfVxuICAgICAgLz5cbiAgICAgIDxGb2N1c1RyYXBcbiAgICAgICAgb25Fc2NhcGVLZXk9e2Nsb3NlU2VhcmNofVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW1pYm9sZFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1iPXsyIGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXs4fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1yPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICB7KHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwiaDJcIiBmb250U2l6ZT17MjB9IG1iPXsxNn0gbXQ9ezI0fT5cbiAgICAgICAgICAgICAgICAgICAgICBUb3AgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJ1bFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcD17MH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlYXJjaEFzWW91VHlwZUxvYWRlcj8uc2hpbW1lclJvd3MubWFwKChyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZUxvYWRlckxpIGtleT17ci5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Iuc2hpbW1lcnMubWFwKCh3b3JkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweT17OCBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17d29yZC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dvcmQud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseT1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMTAgYXMgMTYgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJib3JkZXItc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eT17MC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lTG9hZGVyTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlIHNpemU9XCJzbVwiIHZhcmlhbnQ9XCJ0ZXJ0aWFyeVwiIG1sPXsxMn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzLnR5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxCb3ggZm9udFNpemU9e3sgXzogMjAsIHNtOiAyNiB9fSBtdD17MH0gbWI9ezQ4fT5cbiAgICAgICAgICAgICAgICAgICAgICB7YFdlIGNvdWxkbid0IGZpbmQgYSBtYXRjaCBmb3IgYH1cbiAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBmb250V2VpZ2h0PVwiYm9sZFwiPntgXCIke3ZhbHVlVHJpbW1lZH0uXCJgfTwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnIFRyeSBhbm90aGVyIGtleXdvcmQsIG9yIHNlZSB3aGF0IG91ciBtZW1iZXJzIGFyZSBsZWFybmluZy4nXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyU2VhcmNoZXNcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2g9e25hdmlnYXRlVG9TZWFyY2h9XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgeyEhc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICAgIDxTdHJva2VCdXR0b25cbiAgICAgICAgICAgICAgICBteT17MTZ9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCd2aWV3X2FsbF9yZXN1bHRzJywge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFZpZXcgYWxsIHJlc3VsdHNcbiAgICAgICAgICAgICAgPC9TdHJva2VCdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPFF1aXpBbmRIZWxwQ2VudGVyTGlua3NcbiAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgIGhhbmRsZUNsb3NlRHJvcGRvd249e2Nsb3NlU2VhcmNofVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1N1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9Gb2N1c1RyYXA+XG4gICAgPC8+XG4gICk7XG59O1xuIl19 */");
74
+ }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlFdUIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nIH0gZnJvbSAnLi9ob29rcy91c2VTZWFyY2hUcmFja2luZyc7XG5pbXBvcnQgeyB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24gfSBmcm9tICcuL2hvb2tzL3VzZVVybENoYW5nZURldGVjdGlvbic7XG5pbXBvcnQgeyBRdWl6QW5kSGVscENlbnRlckxpbmtzIH0gZnJvbSAnLi9RdWl6QW5kSGVscENlbnRlckxpbmtzJztcbmltcG9ydCB7IHNhZmVseVJlZGlyZWN0IH0gZnJvbSAnLi9zYWZlbHlSZWRpcmVjdCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQgfSBmcm9tICcuL1NlYXJjaFRyYWNraW5nUHJvdmlkZXInO1xuaW1wb3J0IHsgc2VhcmNoV29ya2VyIH0gZnJvbSAnLi9TZWFyY2hXb3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVTdWdnZXN0aW9uLFxuICBTZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxufSBmcm9tICcuL1NlYXJjaFdvcmtlci90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgRm9ybSA9IEJveC53aXRoQ29tcG9uZW50KCdmb3JtJyk7XG5jb25zdCBJbnB1dCA9IEJveC53aXRoQ29tcG9uZW50KCdpbnB1dCcpO1xuXG5jb25zdCBRdWVyeUNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN1Z2dlc3Rpb25Db250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcikoXG4gIGNzcyh7XG4gICAgcHQ6IDE2LFxuICAgIHBiOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgIHB4OiB7IF86IDI0IH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCkoXG4gIGNzcyh7XG4gICAgb3V0bGluZTogYG5vbmVgLFxuICAgICcmOjpwbGFjZWhvbGRlcic6IHtcbiAgICAgIHRleHRDb2xvcjogdGhlbWUuY29sb3JzWyd0ZXh0LXNlY29uZGFyeSddIGFzIG5ldmVyLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVSZXN1bHRMaSA9IHN0eWxlZChNZW51SXRlbSkoXG4gIGNzcyh7XG4gICAgcGw6IDAsXG4gICAgcHk6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICAgICcmOmZvY3VzLXZpc2libGU6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAtNCxcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lTG9hZGVyTGkgPSBzdHlsZWQubGkoXG4gIGNzcyh7XG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6IDEyLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFNlbWlib2xkU2VhcmNoSWNvbiA9IHN0eWxlZChTZWFyY2hJY29uKWBcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgY2lyY2xlLFxuICBwYXRoIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICByZWN0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAtMnB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIH1cbmA7XG5cbmNvbnN0IEVsbGlwc2lzQm94ID0gc3R5bGVkKEJveClgXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcblxuY29uc3QgSGlnaGxpZ2h0ZWRUZXh0ID0gKHtcbiAgc3VnZ2VzdGlvbjogeyB0aXRsZSwgc2VnbWVudHMgfSxcbn06IHtcbiAgc3VnZ2VzdGlvbjogQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbjtcbn0pID0+IHtcbiAgY29uc3QgbW9kZSA9IHVzZUN1cnJlbnRNb2RlKCk7XG4gIGNvbnN0IGhpZ2hsaWdodENvbG9yID0gbW9kZSA9PT0gJ2RhcmsnID8gJ2h5cGVyJyA6ICd5ZWxsb3cnO1xuXG4gIHJldHVybiAoXG4gICAgPEZsZXhCb3g+XG4gICAgICA8RWxsaXBzaXNCb3hcbiAgICAgICAgbWF4V2lkdGg9XCJjYWxjKDEwMHZ3IC0gMTI4cHgpXCJcbiAgICAgICAgd2hpdGVTcGFjZT1cInByZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaSkgPT4gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBrZXk9e2Ake3RpdGxlfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgbGluZUhlaWdodD1cInRpdGxlXCJcbiAgICAgICAgICAgIHsuLi4oc2VnbWVudC5oaWdobGlnaHRcbiAgICAgICAgICAgICAgPyB7IGJnOiBoaWdobGlnaHRDb2xvciwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICAgICAgICAgICAgOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3NlZ21lbnQudmFsdWV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvRWxsaXBzaXNCb3g+XG4gICAgICA8VGV4dCBzY3JlZW5yZWFkZXI+e3RpdGxlfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG59O1xuXG50eXBlIFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHtcbiAgc2hpbW1lclJvd3M6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBzaGltbWVyczoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1bXTtcbiAgfVtdO1xufTtcblxubGV0IGxvYWRlcktleSA9IDA7XG5mdW5jdGlvbiBybmRMb2FkZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xuICBjb25zdCBrZXkgPSBsb2FkZXJLZXkrKztcbiAgY29uc3QgbG9hZGVyOiBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7IHNoaW1tZXJSb3dzOiBbXSB9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgIGtleTogYCR7a2V5fToke2l9YCxcbiAgICAgIHNoaW1tZXJzOiBbXSBhcyB7IGtleTogc3RyaW5nOyB3aWR0aDogbnVtYmVyIH1bXSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmRzID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAzKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzOyBqKyspIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gMTIgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5Nik7XG4gICAgICByb3cuc2hpbW1lcnMucHVzaCh7XG4gICAgICAgIGtleTogYCR7a2V5fToke2p9YCxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9hZGVyLnNoaW1tZXJSb3dzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gbG9hZGVyO1xufVxuXG5leHBvcnQgY29uc3QgU2VhcmNoUGFuZTogUmVhY3QuRkM8U2VhcmNoUGFuZVByb3BzPiA9ICh7XG4gIG9uU2VhcmNoLFxuICBvblRyYWNraW5nQ2xpY2ssXG4gIHNlYXJjaEJ1dHRvblJlZixcbiAgdG9nZ2xlU2VhcmNoLFxuICBvblNlYXJjaEFzWW91VHlwZSxcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFthdXRvQ29tcGxldGVTdWdnZXN0aW9ucywgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnNdID0gdXNlU3RhdGU8XG4gICAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbltdXG4gID4oW10pO1xuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzID0gb25TZWFyY2hBc1lvdVR5cGUgJiYgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jIChmcm9tUmVzdWx0Q2xpY2sgPSBmYWxzZSkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoXG4gICAgICBoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHMgJiZcbiAgICAgICFmcm9tUmVzdWx0Q2xpY2sgJiZcbiAgICAgIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcigoKSA9PiBjbG9zZVNlYXJjaCgpKTtcblxuICBjb25zdCBvbk1vdXNlRG93bk91dHNpZGUgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIl0nKVxuICAgICAgICAgID8uY29udGFpbnModGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgICB0YXJnZXQgIT09IHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gICAgfTtcblxuICAgIHRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gIH07XG5cbiAgY29uc3QgbmF2aWdhdGVUb1NlYXJjaCA9IChzZWFyY2hUZXJtOiBzdHJpbmcsIGZyb21QcmV2U2VhcmNoPzogc3RyaW5nKSA9PiB7XG4gICAgb25TZWFyY2goc2VhcmNoVGVybSwgZnJvbVByZXZTZWFyY2gpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgIHNldFZhbHVlKGV2dC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgc2VhcmNoV29ya2VyLmluaXQoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGxldCBjbGVhckF1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgbGV0IGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICB9O1xuICB9LCBbdmFsdWVUcmltbWVkLCBvblNlYXJjaEFzWW91VHlwZSwgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXNdKTtcblxuICB1c2VTZWFyY2hUcmFja2luZyh7XG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgYmc9XCJzaGFkb3ctc2Vjb25kYXJ5XCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwdmhcIlxuICAgICAgICBwb3NpdGlvbj1cImZpeGVkXCJcbiAgICAgICAgLy8gV2UgYWRkIDVyZW0gaGVyZSBpbiBjYXNlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJyYW5kZWQgYmFubmVyIGFib3ZlIHNlYXJjaFxuICAgICAgICAvLyBUaGUgc2VhcmNoIGFyZWEgaXMgbXVjaCB0YWxsZXIgdGhhbiA1cmVtIHNvIHRoaXMgaXMgYSBzYWZlIGFtb3VudCBvZiBwYWRkaW5nXG4gICAgICAgIHRvcD17YGNhbGMoJHt0aGVtZS5lbGVtZW50cy5oZWFkZXJIZWlnaHR9ICsgNXJlbSlgfVxuICAgICAgICB3aWR0aD17MX1cbiAgICAgIC8+XG4gICAgICA8Rm9jdXNUcmFwXG4gICAgICAgIG9uRXNjYXBlS2V5PXsoKSA9PiBjbG9zZVNlYXJjaCgpfVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VtaWJvbGRTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYj17MiBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17OH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBtcj17MTJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgeyhzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cImgyXCIgZm9udFNpemU9ezIwfSBtYj17MTZ9IG10PXsyNH0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9wIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIGFzPVwidWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHA9ezB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hBc1lvdVR5cGVMb2FkZXI/LnNoaW1tZXJSb3dzLm1hcCgocikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVMb2FkZXJMaSBrZXk9e3Iua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyLnNoaW1tZXJzLm1hcCgod29yZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hpbW1lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHk9ezggYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3b3JkLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDEwIGFzIDE2IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwieGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9ezAuMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZUxvYWRlckxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMucXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2godHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8Qm94IGZvbnRTaXplPXt7IF86IDIwLCBzbTogMjYgfX0gbXQ9ezB9IG1iPXs0OH0+XG4gICAgICAgICAgICAgICAgICAgICAge2BXZSBjb3VsZG4ndCBmaW5kIGEgbWF0Y2ggZm9yIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQgZm9udFdlaWdodD1cImJvbGRcIj57YFwiJHt2YWx1ZVRyaW1tZWR9LlwiYH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJyBUcnkgYW5vdGhlciBrZXl3b3JkLCBvciBzZWUgd2hhdCBvdXIgbWVtYmVycyBhcmUgbGVhcm5pbmcuJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8UG9wdWxhclNlYXJjaGVzXG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoPXtuYXZpZ2F0ZVRvU2VhcmNofVxuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHshIXNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8U3Ryb2tlQnV0dG9uXG4gICAgICAgICAgICAgICAgbXk9ezE2fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygndmlld19hbGxfcmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IGFsbCByZXN1bHRzXG4gICAgICAgICAgICAgIDwvU3Ryb2tlQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxRdWl6QW5kSGVscENlbnRlckxpbmtzXG4gICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURyb3Bkb3duPXtjbG9zZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdWdnZXN0aW9uQ29udGFpbmVyPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRm9jdXNUcmFwPlxuICAgIDwvPlxuICApO1xufTtcbiJdfQ== */");
74
75
  const InlineLoaderLi = /*#__PURE__*/_styled("li", {
75
76
  target: "e1e5b20r2",
76
77
  label: "InlineLoaderLi"
@@ -79,7 +80,7 @@ const InlineLoaderLi = /*#__PURE__*/_styled("li", {
79
80
  display: 'flex',
80
81
  gap: 12,
81
82
  alignItems: 'center'
82
- }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJFdUIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVVybENoYW5nZURldGVjdGlvbiB9IGZyb20gJy4vaG9va3MvdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uJztcbmltcG9ydCB7IFF1aXpBbmRIZWxwQ2VudGVyTGlua3MgfSBmcm9tICcuL1F1aXpBbmRIZWxwQ2VudGVyTGlua3MnO1xuaW1wb3J0IHsgc2FmZWx5UmVkaXJlY3QgfSBmcm9tICcuL3NhZmVseVJlZGlyZWN0JztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nQ29udGV4dCB9IGZyb20gJy4vU2VhcmNoVHJhY2tpbmdQcm92aWRlcic7XG5pbXBvcnQgeyBzZWFyY2hXb3JrZXIgfSBmcm9tICcuL1NlYXJjaFdvcmtlcic7XG5pbXBvcnQgdHlwZSB7XG4gIEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb24sXG4gIFNlYXJjaEFzWW91VHlwZVJlc3VsdHMsXG59IGZyb20gJy4vU2VhcmNoV29ya2VyL3R5cGVzJztcbmltcG9ydCB7IFNlYXJjaFBhbmVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBGb3JtID0gQm94LndpdGhDb21wb25lbnQoJ2Zvcm0nKTtcbmNvbnN0IElucHV0ID0gQm94LndpdGhDb21wb25lbnQoJ2lucHV0Jyk7XG5cbmNvbnN0IFF1ZXJ5Q29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpKFxuICBjc3Moe1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHB0OiAxNixcbiAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICBweDogeyBfOiAyNCB9LFxuICB9KVxuKTtcblxuY29uc3QgU3VnZ2VzdGlvbkNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KShcbiAgY3NzKHtcbiAgICBvdXRsaW5lOiBgbm9uZWAsXG4gICAgJyY6OnBsYWNlaG9sZGVyJzoge1xuICAgICAgdGV4dENvbG9yOiB0aGVtZS5jb2xvcnNbJ3RleHQtc2Vjb25kYXJ5J10gYXMgbmV2ZXIsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZVJlc3VsdExpID0gc3R5bGVkKE1lbnVJdGVtKShcbiAgY3NzKHtcbiAgICBwbDogMCxcbiAgICBweTogOCxcbiAgICBmb250U2l6ZTogMTYsXG4gICAgJyY6Zm9jdXMtdmlzaWJsZTphZnRlcic6IHtcbiAgICAgIGxlZnQ6IC00LFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVMb2FkZXJMaSA9IHN0eWxlZC5saShcbiAgY3NzKHtcbiAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogMTIsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgU2VtaWJvbGRTZWFyY2hJY29uID0gc3R5bGVkKFNlYXJjaEljb24pYFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBjaXJjbGUsXG4gIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gIHJlY3Qge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0ycHgsIC0ycHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTtcbiAgfVxuYDtcblxuY29uc3QgRWxsaXBzaXNCb3ggPSBzdHlsZWQoQm94KWBcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gO1xuXG5jb25zdCBIaWdobGlnaHRlZFRleHQgPSAoe1xuICBzdWdnZXN0aW9uOiB7IHRpdGxlLCBzZWdtZW50cyB9LFxufToge1xuICBzdWdnZXN0aW9uOiBBdXRvY29tcGxldGVTdWdnZXN0aW9uO1xufSkgPT4ge1xuICBjb25zdCBtb2RlID0gdXNlQ3VycmVudE1vZGUoKTtcbiAgY29uc3QgaGlnaGxpZ2h0Q29sb3IgPSBtb2RlID09PSAnZGFyaycgPyAnaHlwZXInIDogJ3llbGxvdyc7XG5cbiAgcmV0dXJuIChcbiAgICA8RmxleEJveD5cbiAgICAgIDxFbGxpcHNpc0JveFxuICAgICAgICBtYXhXaWR0aD1cImNhbGMoMTAwdncgLSAxMjhweClcIlxuICAgICAgICB3aGl0ZVNwYWNlPVwicHJlXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpKSA9PiAoXG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGtleT17YCR7dGl0bGV9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICBsaW5lSGVpZ2h0PVwidGl0bGVcIlxuICAgICAgICAgICAgey4uLihzZWdtZW50LmhpZ2hsaWdodFxuICAgICAgICAgICAgICA/IHsgYmc6IGhpZ2hsaWdodENvbG9yLCBmb250V2VpZ2h0OiAnYm9sZCcgfVxuICAgICAgICAgICAgICA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2VnbWVudC52YWx1ZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9FbGxpcHNpc0JveD5cbiAgICAgIDxUZXh0IHNjcmVlbnJlYWRlcj57dGl0bGV9PC9UZXh0PlxuICAgIDwvRmxleEJveD5cbiAgKTtcbn07XG5cbnR5cGUgU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0ge1xuICBzaGltbWVyUm93czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHNoaW1tZXJzOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgfVtdO1xuICB9W107XG59O1xuXG5sZXQgbG9hZGVyS2V5ID0gMDtcbmZ1bmN0aW9uIHJuZExvYWRlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gIGNvbnN0IGtleSA9IGxvYWRlcktleSsrO1xuICBjb25zdCBsb2FkZXI6IFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHsgc2hpbW1lclJvd3M6IFtdIH07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0ge1xuICAgICAga2V5OiBgJHtrZXl9OiR7aX1gLFxuICAgICAgc2hpbW1lcnM6IFtdIGFzIHsga2V5OiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdLFxuICAgIH07XG4gICAgY29uc3Qgd29yZHMgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZHM7IGorKykge1xuICAgICAgY29uc3Qgd2lkdGggPSAxMiArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk2KTtcbiAgICAgIHJvdy5zaGltbWVycy5wdXNoKHtcbiAgICAgICAga2V5OiBgJHtrZXl9OiR7an1gLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkZXIuc2hpbW1lclJvd3MucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBsb2FkZXI7XG59XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hQYW5lOiBSZWFjdC5GQzxTZWFyY2hQYW5lUHJvcHM+ID0gKHtcbiAgb25TZWFyY2gsXG4gIG9uVHJhY2tpbmdDbGljayxcbiAgc2VhcmNoQnV0dG9uUmVmLFxuICB0b2dnbGVTZWFyY2gsXG4gIG9uU2VhcmNoQXNZb3VUeXBlLFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLCBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9uc10gPSB1c2VTdGF0ZTxcbiAgICBBdXRvY29tcGxldGVTdWdnZXN0aW9uW11cbiAgPihbXSk7XG4gIGNvbnN0IFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLCBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzXSA9XG4gICAgdXNlU3RhdGU8U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRDbGlja2VkLCBzZXRTZWFyY2hSZXN1bHRDbGlja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrID1cbiAgICBvblNlYXJjaEFzWW91VHlwZSAmJiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzICYmICFzZWFyY2hSZXN1bHRDbGlja2VkO1xuXG4gIGNvbnN0IGNsb3NlU2VhcmNoID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcihjbG9zZVNlYXJjaCk7XG5cbiAgY29uc3Qgb25Nb3VzZURvd25PdXRzaWRlID0gKHsgdGFyZ2V0IH06IE1vdXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCBoYW5kbGVPdXRzaWRlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICFkb2N1bWVudFxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJdJylcbiAgICAgICAgICA/LmNvbnRhaW5zKHRhcmdldCBhcyBIVE1MRWxlbWVudCkgJiZcbiAgICAgICAgdGFyZ2V0ICE9PSBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICAgIH07XG5cbiAgICB0YXJnZXQ/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IG5hdmlnYXRlVG9TZWFyY2ggPSAoc2VhcmNoVGVybTogc3RyaW5nLCBmcm9tUHJldlNlYXJjaD86IHN0cmluZykgPT4ge1xuICAgIG9uU2VhcmNoKHNlYXJjaFRlcm0sIGZyb21QcmV2U2VhcmNoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2U6IFJlYWN0LkNoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICBzZXRWYWx1ZShldnQudGFyZ2V0LnZhbHVlKTtcbiAgICAvLyByZXNldCB0byBmYWxzZSB3aGVuIHRoZSBzZWFyY2ggcXVlcnkgY2hhbmdlc1xuICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQoZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIGRvbid0IHRyYWNrIGlmIGEgcmVzdWx0IHdhcyBjbGlja2VkIG9yIGlmIHdlIGRvbid0IGhhdmUgc2VhcmNoIHJlc3VsdHNcbiAgICBpZiAoXG4gICAgICBzZWFyY2hSZXN1bHRDbGlja2VkIHx8XG4gICAgICAhb25TZWFyY2hBc1lvdVR5cGUgfHxcbiAgICAgICFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzIHx8XG4gICAgICAhdmFsdWVUcmltbWVkLmxlbmd0aFxuICAgIClcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLXJldHVyblxuICAgICAgcmV0dXJuO1xuICB9LCBbXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxuICAgIHZhbHVlVHJpbW1lZCxcbiAgICBvblNlYXJjaEFzWW91VHlwZSxcbiAgXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIHNlYXJjaFdvcmtlci5pbml0KCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmFsdWVUcmltbWVkLmxlbmd0aCkge1xuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6ICcnLFxuICAgICAgICBzZWFyY2hJZDogJycsXG4gICAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBsZXQgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5OiBOb2RlSlMuVGltZW91dDtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2l0aCBhIHNtYWxsIGRlbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHJlc3VsdHNcbiAgICAgIGlmIChcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUgJiZcbiAgICAgICAgcmVzdWx0cy50b3AubGVuZ3RoID09PSAwICYmXG4gICAgICAgICFzZWFyY2hSZXN1bHRDbGlja2VkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgIHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghY2FuY2VsKSB7XG4gICAgICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIDAsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkpO1xuICAgIH07XG4gIH0sIFtcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyxcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBiZz1cInNoYWRvdy1zZWNvbmRhcnlcIlxuICAgICAgICBoZWlnaHQ9XCIxMDB2aFwiXG4gICAgICAgIHBvc2l0aW9uPVwiZml4ZWRcIlxuICAgICAgICAvLyBXZSBhZGQgNXJlbSBoZXJlIGluIGNhc2UgdGhlcmUncyBzb21lIHNvcnQgb2YgYnJhbmRlZCBiYW5uZXIgYWJvdmUgc2VhcmNoXG4gICAgICAgIC8vIFRoZSBzZWFyY2ggYXJlYSBpcyBtdWNoIHRhbGxlciB0aGFuIDVyZW0gc28gdGhpcyBpcyBhIHNhZmUgYW1vdW50IG9mIHBhZGRpbmdcbiAgICAgICAgdG9wPXtgY2FsYygke3RoZW1lLmVsZW1lbnRzLmhlYWRlckhlaWdodH0gKyA1cmVtKWB9XG4gICAgICAgIHdpZHRoPXsxfVxuICAgICAgLz5cbiAgICAgIDxGb2N1c1RyYXBcbiAgICAgICAgb25Fc2NhcGVLZXk9e2Nsb3NlU2VhcmNofVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW1pYm9sZFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1iPXsyIGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXs4fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1yPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICB7KHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwiaDJcIiBmb250U2l6ZT17MjB9IG1iPXsxNn0gbXQ9ezI0fT5cbiAgICAgICAgICAgICAgICAgICAgICBUb3AgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJ1bFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcD17MH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlYXJjaEFzWW91VHlwZUxvYWRlcj8uc2hpbW1lclJvd3MubWFwKChyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZUxvYWRlckxpIGtleT17ci5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Iuc2hpbW1lcnMubWFwKCh3b3JkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweT17OCBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17d29yZC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dvcmQud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseT1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMTAgYXMgMTYgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJib3JkZXItc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eT17MC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lTG9hZGVyTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlIHNpemU9XCJzbVwiIHZhcmlhbnQ9XCJ0ZXJ0aWFyeVwiIG1sPXsxMn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzLnR5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxCb3ggZm9udFNpemU9e3sgXzogMjAsIHNtOiAyNiB9fSBtdD17MH0gbWI9ezQ4fT5cbiAgICAgICAgICAgICAgICAgICAgICB7YFdlIGNvdWxkbid0IGZpbmQgYSBtYXRjaCBmb3IgYH1cbiAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBmb250V2VpZ2h0PVwiYm9sZFwiPntgXCIke3ZhbHVlVHJpbW1lZH0uXCJgfTwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnIFRyeSBhbm90aGVyIGtleXdvcmQsIG9yIHNlZSB3aGF0IG91ciBtZW1iZXJzIGFyZSBsZWFybmluZy4nXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyU2VhcmNoZXNcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2g9e25hdmlnYXRlVG9TZWFyY2h9XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgeyEhc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICAgIDxTdHJva2VCdXR0b25cbiAgICAgICAgICAgICAgICBteT17MTZ9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCd2aWV3X2FsbF9yZXN1bHRzJywge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFZpZXcgYWxsIHJlc3VsdHNcbiAgICAgICAgICAgICAgPC9TdHJva2VCdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPFF1aXpBbmRIZWxwQ2VudGVyTGlua3NcbiAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgIGhhbmRsZUNsb3NlRHJvcGRvd249e2Nsb3NlU2VhcmNofVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1N1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9Gb2N1c1RyYXA+XG4gICAgPC8+XG4gICk7XG59O1xuIl19 */");
83
+ }), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRFdUIiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nIH0gZnJvbSAnLi9ob29rcy91c2VTZWFyY2hUcmFja2luZyc7XG5pbXBvcnQgeyB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24gfSBmcm9tICcuL2hvb2tzL3VzZVVybENoYW5nZURldGVjdGlvbic7XG5pbXBvcnQgeyBRdWl6QW5kSGVscENlbnRlckxpbmtzIH0gZnJvbSAnLi9RdWl6QW5kSGVscENlbnRlckxpbmtzJztcbmltcG9ydCB7IHNhZmVseVJlZGlyZWN0IH0gZnJvbSAnLi9zYWZlbHlSZWRpcmVjdCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQgfSBmcm9tICcuL1NlYXJjaFRyYWNraW5nUHJvdmlkZXInO1xuaW1wb3J0IHsgc2VhcmNoV29ya2VyIH0gZnJvbSAnLi9TZWFyY2hXb3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVTdWdnZXN0aW9uLFxuICBTZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxufSBmcm9tICcuL1NlYXJjaFdvcmtlci90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgRm9ybSA9IEJveC53aXRoQ29tcG9uZW50KCdmb3JtJyk7XG5jb25zdCBJbnB1dCA9IEJveC53aXRoQ29tcG9uZW50KCdpbnB1dCcpO1xuXG5jb25zdCBRdWVyeUNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN1Z2dlc3Rpb25Db250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcikoXG4gIGNzcyh7XG4gICAgcHQ6IDE2LFxuICAgIHBiOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgIHB4OiB7IF86IDI0IH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCkoXG4gIGNzcyh7XG4gICAgb3V0bGluZTogYG5vbmVgLFxuICAgICcmOjpwbGFjZWhvbGRlcic6IHtcbiAgICAgIHRleHRDb2xvcjogdGhlbWUuY29sb3JzWyd0ZXh0LXNlY29uZGFyeSddIGFzIG5ldmVyLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVSZXN1bHRMaSA9IHN0eWxlZChNZW51SXRlbSkoXG4gIGNzcyh7XG4gICAgcGw6IDAsXG4gICAgcHk6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICAgICcmOmZvY3VzLXZpc2libGU6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAtNCxcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lTG9hZGVyTGkgPSBzdHlsZWQubGkoXG4gIGNzcyh7XG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6IDEyLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFNlbWlib2xkU2VhcmNoSWNvbiA9IHN0eWxlZChTZWFyY2hJY29uKWBcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgY2lyY2xlLFxuICBwYXRoIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICByZWN0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAtMnB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIH1cbmA7XG5cbmNvbnN0IEVsbGlwc2lzQm94ID0gc3R5bGVkKEJveClgXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcblxuY29uc3QgSGlnaGxpZ2h0ZWRUZXh0ID0gKHtcbiAgc3VnZ2VzdGlvbjogeyB0aXRsZSwgc2VnbWVudHMgfSxcbn06IHtcbiAgc3VnZ2VzdGlvbjogQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbjtcbn0pID0+IHtcbiAgY29uc3QgbW9kZSA9IHVzZUN1cnJlbnRNb2RlKCk7XG4gIGNvbnN0IGhpZ2hsaWdodENvbG9yID0gbW9kZSA9PT0gJ2RhcmsnID8gJ2h5cGVyJyA6ICd5ZWxsb3cnO1xuXG4gIHJldHVybiAoXG4gICAgPEZsZXhCb3g+XG4gICAgICA8RWxsaXBzaXNCb3hcbiAgICAgICAgbWF4V2lkdGg9XCJjYWxjKDEwMHZ3IC0gMTI4cHgpXCJcbiAgICAgICAgd2hpdGVTcGFjZT1cInByZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaSkgPT4gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBrZXk9e2Ake3RpdGxlfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgbGluZUhlaWdodD1cInRpdGxlXCJcbiAgICAgICAgICAgIHsuLi4oc2VnbWVudC5oaWdobGlnaHRcbiAgICAgICAgICAgICAgPyB7IGJnOiBoaWdobGlnaHRDb2xvciwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICAgICAgICAgICAgOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3NlZ21lbnQudmFsdWV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvRWxsaXBzaXNCb3g+XG4gICAgICA8VGV4dCBzY3JlZW5yZWFkZXI+e3RpdGxlfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG59O1xuXG50eXBlIFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHtcbiAgc2hpbW1lclJvd3M6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBzaGltbWVyczoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1bXTtcbiAgfVtdO1xufTtcblxubGV0IGxvYWRlcktleSA9IDA7XG5mdW5jdGlvbiBybmRMb2FkZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xuICBjb25zdCBrZXkgPSBsb2FkZXJLZXkrKztcbiAgY29uc3QgbG9hZGVyOiBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7IHNoaW1tZXJSb3dzOiBbXSB9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgIGtleTogYCR7a2V5fToke2l9YCxcbiAgICAgIHNoaW1tZXJzOiBbXSBhcyB7IGtleTogc3RyaW5nOyB3aWR0aDogbnVtYmVyIH1bXSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmRzID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAzKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzOyBqKyspIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gMTIgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5Nik7XG4gICAgICByb3cuc2hpbW1lcnMucHVzaCh7XG4gICAgICAgIGtleTogYCR7a2V5fToke2p9YCxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9hZGVyLnNoaW1tZXJSb3dzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gbG9hZGVyO1xufVxuXG5leHBvcnQgY29uc3QgU2VhcmNoUGFuZTogUmVhY3QuRkM8U2VhcmNoUGFuZVByb3BzPiA9ICh7XG4gIG9uU2VhcmNoLFxuICBvblRyYWNraW5nQ2xpY2ssXG4gIHNlYXJjaEJ1dHRvblJlZixcbiAgdG9nZ2xlU2VhcmNoLFxuICBvblNlYXJjaEFzWW91VHlwZSxcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFthdXRvQ29tcGxldGVTdWdnZXN0aW9ucywgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnNdID0gdXNlU3RhdGU8XG4gICAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbltdXG4gID4oW10pO1xuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzID0gb25TZWFyY2hBc1lvdVR5cGUgJiYgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jIChmcm9tUmVzdWx0Q2xpY2sgPSBmYWxzZSkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoXG4gICAgICBoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHMgJiZcbiAgICAgICFmcm9tUmVzdWx0Q2xpY2sgJiZcbiAgICAgIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcigoKSA9PiBjbG9zZVNlYXJjaCgpKTtcblxuICBjb25zdCBvbk1vdXNlRG93bk91dHNpZGUgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIl0nKVxuICAgICAgICAgID8uY29udGFpbnModGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgICB0YXJnZXQgIT09IHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gICAgfTtcblxuICAgIHRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gIH07XG5cbiAgY29uc3QgbmF2aWdhdGVUb1NlYXJjaCA9IChzZWFyY2hUZXJtOiBzdHJpbmcsIGZyb21QcmV2U2VhcmNoPzogc3RyaW5nKSA9PiB7XG4gICAgb25TZWFyY2goc2VhcmNoVGVybSwgZnJvbVByZXZTZWFyY2gpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgIHNldFZhbHVlKGV2dC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgc2VhcmNoV29ya2VyLmluaXQoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGxldCBjbGVhckF1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgbGV0IGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICB9O1xuICB9LCBbdmFsdWVUcmltbWVkLCBvblNlYXJjaEFzWW91VHlwZSwgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXNdKTtcblxuICB1c2VTZWFyY2hUcmFja2luZyh7XG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgYmc9XCJzaGFkb3ctc2Vjb25kYXJ5XCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwdmhcIlxuICAgICAgICBwb3NpdGlvbj1cImZpeGVkXCJcbiAgICAgICAgLy8gV2UgYWRkIDVyZW0gaGVyZSBpbiBjYXNlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJyYW5kZWQgYmFubmVyIGFib3ZlIHNlYXJjaFxuICAgICAgICAvLyBUaGUgc2VhcmNoIGFyZWEgaXMgbXVjaCB0YWxsZXIgdGhhbiA1cmVtIHNvIHRoaXMgaXMgYSBzYWZlIGFtb3VudCBvZiBwYWRkaW5nXG4gICAgICAgIHRvcD17YGNhbGMoJHt0aGVtZS5lbGVtZW50cy5oZWFkZXJIZWlnaHR9ICsgNXJlbSlgfVxuICAgICAgICB3aWR0aD17MX1cbiAgICAgIC8+XG4gICAgICA8Rm9jdXNUcmFwXG4gICAgICAgIG9uRXNjYXBlS2V5PXsoKSA9PiBjbG9zZVNlYXJjaCgpfVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VtaWJvbGRTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYj17MiBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17OH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBtcj17MTJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgeyhzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cImgyXCIgZm9udFNpemU9ezIwfSBtYj17MTZ9IG10PXsyNH0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9wIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIGFzPVwidWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHA9ezB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hBc1lvdVR5cGVMb2FkZXI/LnNoaW1tZXJSb3dzLm1hcCgocikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVMb2FkZXJMaSBrZXk9e3Iua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyLnNoaW1tZXJzLm1hcCgod29yZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hpbW1lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHk9ezggYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3b3JkLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDEwIGFzIDE2IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwieGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9ezAuMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZUxvYWRlckxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMucXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2godHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8Qm94IGZvbnRTaXplPXt7IF86IDIwLCBzbTogMjYgfX0gbXQ9ezB9IG1iPXs0OH0+XG4gICAgICAgICAgICAgICAgICAgICAge2BXZSBjb3VsZG4ndCBmaW5kIGEgbWF0Y2ggZm9yIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQgZm9udFdlaWdodD1cImJvbGRcIj57YFwiJHt2YWx1ZVRyaW1tZWR9LlwiYH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJyBUcnkgYW5vdGhlciBrZXl3b3JkLCBvciBzZWUgd2hhdCBvdXIgbWVtYmVycyBhcmUgbGVhcm5pbmcuJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8UG9wdWxhclNlYXJjaGVzXG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoPXtuYXZpZ2F0ZVRvU2VhcmNofVxuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHshIXNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8U3Ryb2tlQnV0dG9uXG4gICAgICAgICAgICAgICAgbXk9ezE2fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygndmlld19hbGxfcmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IGFsbCByZXN1bHRzXG4gICAgICAgICAgICAgIDwvU3Ryb2tlQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxRdWl6QW5kSGVscENlbnRlckxpbmtzXG4gICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURyb3Bkb3duPXtjbG9zZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdWdnZXN0aW9uQ29udGFpbmVyPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRm9jdXNUcmFwPlxuICAgIDwvPlxuICApO1xufTtcbiJdfQ== */");
83
84
  export const SemiboldSearchIcon = /*#__PURE__*/_styled(SearchIcon, {
84
85
  target: "e1e5b20r1",
85
86
  label: "SemiboldSearchIcon"
@@ -88,7 +89,7 @@ export const SemiboldSearchIcon = /*#__PURE__*/_styled(SearchIcon, {
88
89
  styles: "overflow:visible!important;circle,path{stroke-width:2px;}rect{transform:translate(-2px, -2px);height:calc(100% + 4px);width:calc(100% + 4px);}"
89
90
  } : {
90
91
  name: "138xhwl",
91
- styles: "overflow:visible!important;circle,path{stroke-width:2px;}rect{transform:translate(-2px, -2px);height:calc(100% + 4px);width:calc(100% + 4px);}/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9Gb0QiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVVybENoYW5nZURldGVjdGlvbiB9IGZyb20gJy4vaG9va3MvdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uJztcbmltcG9ydCB7IFF1aXpBbmRIZWxwQ2VudGVyTGlua3MgfSBmcm9tICcuL1F1aXpBbmRIZWxwQ2VudGVyTGlua3MnO1xuaW1wb3J0IHsgc2FmZWx5UmVkaXJlY3QgfSBmcm9tICcuL3NhZmVseVJlZGlyZWN0JztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nQ29udGV4dCB9IGZyb20gJy4vU2VhcmNoVHJhY2tpbmdQcm92aWRlcic7XG5pbXBvcnQgeyBzZWFyY2hXb3JrZXIgfSBmcm9tICcuL1NlYXJjaFdvcmtlcic7XG5pbXBvcnQgdHlwZSB7XG4gIEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb24sXG4gIFNlYXJjaEFzWW91VHlwZVJlc3VsdHMsXG59IGZyb20gJy4vU2VhcmNoV29ya2VyL3R5cGVzJztcbmltcG9ydCB7IFNlYXJjaFBhbmVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBGb3JtID0gQm94LndpdGhDb21wb25lbnQoJ2Zvcm0nKTtcbmNvbnN0IElucHV0ID0gQm94LndpdGhDb21wb25lbnQoJ2lucHV0Jyk7XG5cbmNvbnN0IFF1ZXJ5Q29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpKFxuICBjc3Moe1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHB0OiAxNixcbiAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICBweDogeyBfOiAyNCB9LFxuICB9KVxuKTtcblxuY29uc3QgU3VnZ2VzdGlvbkNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KShcbiAgY3NzKHtcbiAgICBvdXRsaW5lOiBgbm9uZWAsXG4gICAgJyY6OnBsYWNlaG9sZGVyJzoge1xuICAgICAgdGV4dENvbG9yOiB0aGVtZS5jb2xvcnNbJ3RleHQtc2Vjb25kYXJ5J10gYXMgbmV2ZXIsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZVJlc3VsdExpID0gc3R5bGVkKE1lbnVJdGVtKShcbiAgY3NzKHtcbiAgICBwbDogMCxcbiAgICBweTogOCxcbiAgICBmb250U2l6ZTogMTYsXG4gICAgJyY6Zm9jdXMtdmlzaWJsZTphZnRlcic6IHtcbiAgICAgIGxlZnQ6IC00LFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVMb2FkZXJMaSA9IHN0eWxlZC5saShcbiAgY3NzKHtcbiAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogMTIsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgU2VtaWJvbGRTZWFyY2hJY29uID0gc3R5bGVkKFNlYXJjaEljb24pYFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBjaXJjbGUsXG4gIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gIHJlY3Qge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0ycHgsIC0ycHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTtcbiAgfVxuYDtcblxuY29uc3QgRWxsaXBzaXNCb3ggPSBzdHlsZWQoQm94KWBcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gO1xuXG5jb25zdCBIaWdobGlnaHRlZFRleHQgPSAoe1xuICBzdWdnZXN0aW9uOiB7IHRpdGxlLCBzZWdtZW50cyB9LFxufToge1xuICBzdWdnZXN0aW9uOiBBdXRvY29tcGxldGVTdWdnZXN0aW9uO1xufSkgPT4ge1xuICBjb25zdCBtb2RlID0gdXNlQ3VycmVudE1vZGUoKTtcbiAgY29uc3QgaGlnaGxpZ2h0Q29sb3IgPSBtb2RlID09PSAnZGFyaycgPyAnaHlwZXInIDogJ3llbGxvdyc7XG5cbiAgcmV0dXJuIChcbiAgICA8RmxleEJveD5cbiAgICAgIDxFbGxpcHNpc0JveFxuICAgICAgICBtYXhXaWR0aD1cImNhbGMoMTAwdncgLSAxMjhweClcIlxuICAgICAgICB3aGl0ZVNwYWNlPVwicHJlXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpKSA9PiAoXG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGtleT17YCR7dGl0bGV9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICBsaW5lSGVpZ2h0PVwidGl0bGVcIlxuICAgICAgICAgICAgey4uLihzZWdtZW50LmhpZ2hsaWdodFxuICAgICAgICAgICAgICA/IHsgYmc6IGhpZ2hsaWdodENvbG9yLCBmb250V2VpZ2h0OiAnYm9sZCcgfVxuICAgICAgICAgICAgICA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2VnbWVudC52YWx1ZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9FbGxpcHNpc0JveD5cbiAgICAgIDxUZXh0IHNjcmVlbnJlYWRlcj57dGl0bGV9PC9UZXh0PlxuICAgIDwvRmxleEJveD5cbiAgKTtcbn07XG5cbnR5cGUgU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0ge1xuICBzaGltbWVyUm93czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHNoaW1tZXJzOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgfVtdO1xuICB9W107XG59O1xuXG5sZXQgbG9hZGVyS2V5ID0gMDtcbmZ1bmN0aW9uIHJuZExvYWRlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gIGNvbnN0IGtleSA9IGxvYWRlcktleSsrO1xuICBjb25zdCBsb2FkZXI6IFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHsgc2hpbW1lclJvd3M6IFtdIH07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0ge1xuICAgICAga2V5OiBgJHtrZXl9OiR7aX1gLFxuICAgICAgc2hpbW1lcnM6IFtdIGFzIHsga2V5OiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdLFxuICAgIH07XG4gICAgY29uc3Qgd29yZHMgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZHM7IGorKykge1xuICAgICAgY29uc3Qgd2lkdGggPSAxMiArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk2KTtcbiAgICAgIHJvdy5zaGltbWVycy5wdXNoKHtcbiAgICAgICAga2V5OiBgJHtrZXl9OiR7an1gLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkZXIuc2hpbW1lclJvd3MucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBsb2FkZXI7XG59XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hQYW5lOiBSZWFjdC5GQzxTZWFyY2hQYW5lUHJvcHM+ID0gKHtcbiAgb25TZWFyY2gsXG4gIG9uVHJhY2tpbmdDbGljayxcbiAgc2VhcmNoQnV0dG9uUmVmLFxuICB0b2dnbGVTZWFyY2gsXG4gIG9uU2VhcmNoQXNZb3VUeXBlLFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLCBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9uc10gPSB1c2VTdGF0ZTxcbiAgICBBdXRvY29tcGxldGVTdWdnZXN0aW9uW11cbiAgPihbXSk7XG4gIGNvbnN0IFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLCBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzXSA9XG4gICAgdXNlU3RhdGU8U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRDbGlja2VkLCBzZXRTZWFyY2hSZXN1bHRDbGlja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrID1cbiAgICBvblNlYXJjaEFzWW91VHlwZSAmJiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzICYmICFzZWFyY2hSZXN1bHRDbGlja2VkO1xuXG4gIGNvbnN0IGNsb3NlU2VhcmNoID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcihjbG9zZVNlYXJjaCk7XG5cbiAgY29uc3Qgb25Nb3VzZURvd25PdXRzaWRlID0gKHsgdGFyZ2V0IH06IE1vdXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCBoYW5kbGVPdXRzaWRlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICFkb2N1bWVudFxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJdJylcbiAgICAgICAgICA/LmNvbnRhaW5zKHRhcmdldCBhcyBIVE1MRWxlbWVudCkgJiZcbiAgICAgICAgdGFyZ2V0ICE9PSBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICAgIH07XG5cbiAgICB0YXJnZXQ/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IG5hdmlnYXRlVG9TZWFyY2ggPSAoc2VhcmNoVGVybTogc3RyaW5nLCBmcm9tUHJldlNlYXJjaD86IHN0cmluZykgPT4ge1xuICAgIG9uU2VhcmNoKHNlYXJjaFRlcm0sIGZyb21QcmV2U2VhcmNoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2U6IFJlYWN0LkNoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICBzZXRWYWx1ZShldnQudGFyZ2V0LnZhbHVlKTtcbiAgICAvLyByZXNldCB0byBmYWxzZSB3aGVuIHRoZSBzZWFyY2ggcXVlcnkgY2hhbmdlc1xuICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQoZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIGRvbid0IHRyYWNrIGlmIGEgcmVzdWx0IHdhcyBjbGlja2VkIG9yIGlmIHdlIGRvbid0IGhhdmUgc2VhcmNoIHJlc3VsdHNcbiAgICBpZiAoXG4gICAgICBzZWFyY2hSZXN1bHRDbGlja2VkIHx8XG4gICAgICAhb25TZWFyY2hBc1lvdVR5cGUgfHxcbiAgICAgICFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzIHx8XG4gICAgICAhdmFsdWVUcmltbWVkLmxlbmd0aFxuICAgIClcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLXJldHVyblxuICAgICAgcmV0dXJuO1xuICB9LCBbXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxuICAgIHZhbHVlVHJpbW1lZCxcbiAgICBvblNlYXJjaEFzWW91VHlwZSxcbiAgXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIHNlYXJjaFdvcmtlci5pbml0KCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmFsdWVUcmltbWVkLmxlbmd0aCkge1xuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6ICcnLFxuICAgICAgICBzZWFyY2hJZDogJycsXG4gICAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBsZXQgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5OiBOb2RlSlMuVGltZW91dDtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2l0aCBhIHNtYWxsIGRlbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHJlc3VsdHNcbiAgICAgIGlmIChcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUgJiZcbiAgICAgICAgcmVzdWx0cy50b3AubGVuZ3RoID09PSAwICYmXG4gICAgICAgICFzZWFyY2hSZXN1bHRDbGlja2VkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgIHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghY2FuY2VsKSB7XG4gICAgICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIDAsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkpO1xuICAgIH07XG4gIH0sIFtcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyxcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBiZz1cInNoYWRvdy1zZWNvbmRhcnlcIlxuICAgICAgICBoZWlnaHQ9XCIxMDB2aFwiXG4gICAgICAgIHBvc2l0aW9uPVwiZml4ZWRcIlxuICAgICAgICAvLyBXZSBhZGQgNXJlbSBoZXJlIGluIGNhc2UgdGhlcmUncyBzb21lIHNvcnQgb2YgYnJhbmRlZCBiYW5uZXIgYWJvdmUgc2VhcmNoXG4gICAgICAgIC8vIFRoZSBzZWFyY2ggYXJlYSBpcyBtdWNoIHRhbGxlciB0aGFuIDVyZW0gc28gdGhpcyBpcyBhIHNhZmUgYW1vdW50IG9mIHBhZGRpbmdcbiAgICAgICAgdG9wPXtgY2FsYygke3RoZW1lLmVsZW1lbnRzLmhlYWRlckhlaWdodH0gKyA1cmVtKWB9XG4gICAgICAgIHdpZHRoPXsxfVxuICAgICAgLz5cbiAgICAgIDxGb2N1c1RyYXBcbiAgICAgICAgb25Fc2NhcGVLZXk9e2Nsb3NlU2VhcmNofVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW1pYm9sZFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1iPXsyIGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXs4fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1yPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICB7KHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwiaDJcIiBmb250U2l6ZT17MjB9IG1iPXsxNn0gbXQ9ezI0fT5cbiAgICAgICAgICAgICAgICAgICAgICBUb3AgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJ1bFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcD17MH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlYXJjaEFzWW91VHlwZUxvYWRlcj8uc2hpbW1lclJvd3MubWFwKChyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZUxvYWRlckxpIGtleT17ci5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Iuc2hpbW1lcnMubWFwKCh3b3JkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweT17OCBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17d29yZC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dvcmQud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseT1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMTAgYXMgMTYgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJib3JkZXItc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eT17MC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lTG9hZGVyTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlIHNpemU9XCJzbVwiIHZhcmlhbnQ9XCJ0ZXJ0aWFyeVwiIG1sPXsxMn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzLnR5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxCb3ggZm9udFNpemU9e3sgXzogMjAsIHNtOiAyNiB9fSBtdD17MH0gbWI9ezQ4fT5cbiAgICAgICAgICAgICAgICAgICAgICB7YFdlIGNvdWxkbid0IGZpbmQgYSBtYXRjaCBmb3IgYH1cbiAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBmb250V2VpZ2h0PVwiYm9sZFwiPntgXCIke3ZhbHVlVHJpbW1lZH0uXCJgfTwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnIFRyeSBhbm90aGVyIGtleXdvcmQsIG9yIHNlZSB3aGF0IG91ciBtZW1iZXJzIGFyZSBsZWFybmluZy4nXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyU2VhcmNoZXNcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2g9e25hdmlnYXRlVG9TZWFyY2h9XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgeyEhc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICAgIDxTdHJva2VCdXR0b25cbiAgICAgICAgICAgICAgICBteT17MTZ9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCd2aWV3X2FsbF9yZXN1bHRzJywge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFZpZXcgYWxsIHJlc3VsdHNcbiAgICAgICAgICAgICAgPC9TdHJva2VCdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPFF1aXpBbmRIZWxwQ2VudGVyTGlua3NcbiAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgIGhhbmRsZUNsb3NlRHJvcGRvd249e2Nsb3NlU2VhcmNofVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1N1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9Gb2N1c1RyYXA+XG4gICAgPC8+XG4gICk7XG59O1xuIl19 */",
92
+ styles: "overflow:visible!important;circle,path{stroke-width:2px;}rect{transform:translate(-2px, -2px);height:calc(100% + 4px);width:calc(100% + 4px);}/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFGb0QiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nIH0gZnJvbSAnLi9ob29rcy91c2VTZWFyY2hUcmFja2luZyc7XG5pbXBvcnQgeyB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24gfSBmcm9tICcuL2hvb2tzL3VzZVVybENoYW5nZURldGVjdGlvbic7XG5pbXBvcnQgeyBRdWl6QW5kSGVscENlbnRlckxpbmtzIH0gZnJvbSAnLi9RdWl6QW5kSGVscENlbnRlckxpbmtzJztcbmltcG9ydCB7IHNhZmVseVJlZGlyZWN0IH0gZnJvbSAnLi9zYWZlbHlSZWRpcmVjdCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQgfSBmcm9tICcuL1NlYXJjaFRyYWNraW5nUHJvdmlkZXInO1xuaW1wb3J0IHsgc2VhcmNoV29ya2VyIH0gZnJvbSAnLi9TZWFyY2hXb3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVTdWdnZXN0aW9uLFxuICBTZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxufSBmcm9tICcuL1NlYXJjaFdvcmtlci90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgRm9ybSA9IEJveC53aXRoQ29tcG9uZW50KCdmb3JtJyk7XG5jb25zdCBJbnB1dCA9IEJveC53aXRoQ29tcG9uZW50KCdpbnB1dCcpO1xuXG5jb25zdCBRdWVyeUNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN1Z2dlc3Rpb25Db250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcikoXG4gIGNzcyh7XG4gICAgcHQ6IDE2LFxuICAgIHBiOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgIHB4OiB7IF86IDI0IH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCkoXG4gIGNzcyh7XG4gICAgb3V0bGluZTogYG5vbmVgLFxuICAgICcmOjpwbGFjZWhvbGRlcic6IHtcbiAgICAgIHRleHRDb2xvcjogdGhlbWUuY29sb3JzWyd0ZXh0LXNlY29uZGFyeSddIGFzIG5ldmVyLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVSZXN1bHRMaSA9IHN0eWxlZChNZW51SXRlbSkoXG4gIGNzcyh7XG4gICAgcGw6IDAsXG4gICAgcHk6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICAgICcmOmZvY3VzLXZpc2libGU6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAtNCxcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lTG9hZGVyTGkgPSBzdHlsZWQubGkoXG4gIGNzcyh7XG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6IDEyLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFNlbWlib2xkU2VhcmNoSWNvbiA9IHN0eWxlZChTZWFyY2hJY29uKWBcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgY2lyY2xlLFxuICBwYXRoIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICByZWN0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAtMnB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIH1cbmA7XG5cbmNvbnN0IEVsbGlwc2lzQm94ID0gc3R5bGVkKEJveClgXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcblxuY29uc3QgSGlnaGxpZ2h0ZWRUZXh0ID0gKHtcbiAgc3VnZ2VzdGlvbjogeyB0aXRsZSwgc2VnbWVudHMgfSxcbn06IHtcbiAgc3VnZ2VzdGlvbjogQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbjtcbn0pID0+IHtcbiAgY29uc3QgbW9kZSA9IHVzZUN1cnJlbnRNb2RlKCk7XG4gIGNvbnN0IGhpZ2hsaWdodENvbG9yID0gbW9kZSA9PT0gJ2RhcmsnID8gJ2h5cGVyJyA6ICd5ZWxsb3cnO1xuXG4gIHJldHVybiAoXG4gICAgPEZsZXhCb3g+XG4gICAgICA8RWxsaXBzaXNCb3hcbiAgICAgICAgbWF4V2lkdGg9XCJjYWxjKDEwMHZ3IC0gMTI4cHgpXCJcbiAgICAgICAgd2hpdGVTcGFjZT1cInByZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaSkgPT4gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBrZXk9e2Ake3RpdGxlfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgbGluZUhlaWdodD1cInRpdGxlXCJcbiAgICAgICAgICAgIHsuLi4oc2VnbWVudC5oaWdobGlnaHRcbiAgICAgICAgICAgICAgPyB7IGJnOiBoaWdobGlnaHRDb2xvciwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICAgICAgICAgICAgOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3NlZ21lbnQudmFsdWV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvRWxsaXBzaXNCb3g+XG4gICAgICA8VGV4dCBzY3JlZW5yZWFkZXI+e3RpdGxlfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG59O1xuXG50eXBlIFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHtcbiAgc2hpbW1lclJvd3M6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBzaGltbWVyczoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1bXTtcbiAgfVtdO1xufTtcblxubGV0IGxvYWRlcktleSA9IDA7XG5mdW5jdGlvbiBybmRMb2FkZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xuICBjb25zdCBrZXkgPSBsb2FkZXJLZXkrKztcbiAgY29uc3QgbG9hZGVyOiBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7IHNoaW1tZXJSb3dzOiBbXSB9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgIGtleTogYCR7a2V5fToke2l9YCxcbiAgICAgIHNoaW1tZXJzOiBbXSBhcyB7IGtleTogc3RyaW5nOyB3aWR0aDogbnVtYmVyIH1bXSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmRzID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAzKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzOyBqKyspIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gMTIgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5Nik7XG4gICAgICByb3cuc2hpbW1lcnMucHVzaCh7XG4gICAgICAgIGtleTogYCR7a2V5fToke2p9YCxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9hZGVyLnNoaW1tZXJSb3dzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gbG9hZGVyO1xufVxuXG5leHBvcnQgY29uc3QgU2VhcmNoUGFuZTogUmVhY3QuRkM8U2VhcmNoUGFuZVByb3BzPiA9ICh7XG4gIG9uU2VhcmNoLFxuICBvblRyYWNraW5nQ2xpY2ssXG4gIHNlYXJjaEJ1dHRvblJlZixcbiAgdG9nZ2xlU2VhcmNoLFxuICBvblNlYXJjaEFzWW91VHlwZSxcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFthdXRvQ29tcGxldGVTdWdnZXN0aW9ucywgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnNdID0gdXNlU3RhdGU8XG4gICAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbltdXG4gID4oW10pO1xuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzID0gb25TZWFyY2hBc1lvdVR5cGUgJiYgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jIChmcm9tUmVzdWx0Q2xpY2sgPSBmYWxzZSkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoXG4gICAgICBoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHMgJiZcbiAgICAgICFmcm9tUmVzdWx0Q2xpY2sgJiZcbiAgICAgIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcigoKSA9PiBjbG9zZVNlYXJjaCgpKTtcblxuICBjb25zdCBvbk1vdXNlRG93bk91dHNpZGUgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIl0nKVxuICAgICAgICAgID8uY29udGFpbnModGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgICB0YXJnZXQgIT09IHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gICAgfTtcblxuICAgIHRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gIH07XG5cbiAgY29uc3QgbmF2aWdhdGVUb1NlYXJjaCA9IChzZWFyY2hUZXJtOiBzdHJpbmcsIGZyb21QcmV2U2VhcmNoPzogc3RyaW5nKSA9PiB7XG4gICAgb25TZWFyY2goc2VhcmNoVGVybSwgZnJvbVByZXZTZWFyY2gpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgIHNldFZhbHVlKGV2dC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgc2VhcmNoV29ya2VyLmluaXQoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGxldCBjbGVhckF1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgbGV0IGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICB9O1xuICB9LCBbdmFsdWVUcmltbWVkLCBvblNlYXJjaEFzWW91VHlwZSwgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXNdKTtcblxuICB1c2VTZWFyY2hUcmFja2luZyh7XG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgYmc9XCJzaGFkb3ctc2Vjb25kYXJ5XCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwdmhcIlxuICAgICAgICBwb3NpdGlvbj1cImZpeGVkXCJcbiAgICAgICAgLy8gV2UgYWRkIDVyZW0gaGVyZSBpbiBjYXNlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJyYW5kZWQgYmFubmVyIGFib3ZlIHNlYXJjaFxuICAgICAgICAvLyBUaGUgc2VhcmNoIGFyZWEgaXMgbXVjaCB0YWxsZXIgdGhhbiA1cmVtIHNvIHRoaXMgaXMgYSBzYWZlIGFtb3VudCBvZiBwYWRkaW5nXG4gICAgICAgIHRvcD17YGNhbGMoJHt0aGVtZS5lbGVtZW50cy5oZWFkZXJIZWlnaHR9ICsgNXJlbSlgfVxuICAgICAgICB3aWR0aD17MX1cbiAgICAgIC8+XG4gICAgICA8Rm9jdXNUcmFwXG4gICAgICAgIG9uRXNjYXBlS2V5PXsoKSA9PiBjbG9zZVNlYXJjaCgpfVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VtaWJvbGRTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYj17MiBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17OH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBtcj17MTJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgeyhzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cImgyXCIgZm9udFNpemU9ezIwfSBtYj17MTZ9IG10PXsyNH0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9wIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIGFzPVwidWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHA9ezB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hBc1lvdVR5cGVMb2FkZXI/LnNoaW1tZXJSb3dzLm1hcCgocikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVMb2FkZXJMaSBrZXk9e3Iua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyLnNoaW1tZXJzLm1hcCgod29yZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hpbW1lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHk9ezggYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3b3JkLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDEwIGFzIDE2IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwieGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9ezAuMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZUxvYWRlckxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMucXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2godHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8Qm94IGZvbnRTaXplPXt7IF86IDIwLCBzbTogMjYgfX0gbXQ9ezB9IG1iPXs0OH0+XG4gICAgICAgICAgICAgICAgICAgICAge2BXZSBjb3VsZG4ndCBmaW5kIGEgbWF0Y2ggZm9yIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQgZm9udFdlaWdodD1cImJvbGRcIj57YFwiJHt2YWx1ZVRyaW1tZWR9LlwiYH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJyBUcnkgYW5vdGhlciBrZXl3b3JkLCBvciBzZWUgd2hhdCBvdXIgbWVtYmVycyBhcmUgbGVhcm5pbmcuJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8UG9wdWxhclNlYXJjaGVzXG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoPXtuYXZpZ2F0ZVRvU2VhcmNofVxuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHshIXNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8U3Ryb2tlQnV0dG9uXG4gICAgICAgICAgICAgICAgbXk9ezE2fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygndmlld19hbGxfcmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IGFsbCByZXN1bHRzXG4gICAgICAgICAgICAgIDwvU3Ryb2tlQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxRdWl6QW5kSGVscENlbnRlckxpbmtzXG4gICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURyb3Bkb3duPXtjbG9zZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdWdnZXN0aW9uQ29udGFpbmVyPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRm9jdXNUcmFwPlxuICAgIDwvPlxuICApO1xufTtcbiJdfQ== */",
92
93
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
93
94
  });
94
95
  const EllipsisBox = /*#__PURE__*/_styled(Box, {
@@ -99,7 +100,7 @@ const EllipsisBox = /*#__PURE__*/_styled(Box, {
99
100
  styles: "text-overflow:ellipsis"
100
101
  } : {
101
102
  name: "rkw162",
102
- styles: "text-overflow:ellipsis/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlHK0IiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVVybENoYW5nZURldGVjdGlvbiB9IGZyb20gJy4vaG9va3MvdXNlVXJsQ2hhbmdlRGV0ZWN0aW9uJztcbmltcG9ydCB7IFF1aXpBbmRIZWxwQ2VudGVyTGlua3MgfSBmcm9tICcuL1F1aXpBbmRIZWxwQ2VudGVyTGlua3MnO1xuaW1wb3J0IHsgc2FmZWx5UmVkaXJlY3QgfSBmcm9tICcuL3NhZmVseVJlZGlyZWN0JztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nQ29udGV4dCB9IGZyb20gJy4vU2VhcmNoVHJhY2tpbmdQcm92aWRlcic7XG5pbXBvcnQgeyBzZWFyY2hXb3JrZXIgfSBmcm9tICcuL1NlYXJjaFdvcmtlcic7XG5pbXBvcnQgdHlwZSB7XG4gIEF1dG9jb21wbGV0ZVN1Z2dlc3Rpb24sXG4gIFNlYXJjaEFzWW91VHlwZVJlc3VsdHMsXG59IGZyb20gJy4vU2VhcmNoV29ya2VyL3R5cGVzJztcbmltcG9ydCB7IFNlYXJjaFBhbmVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBGb3JtID0gQm94LndpdGhDb21wb25lbnQoJ2Zvcm0nKTtcbmNvbnN0IElucHV0ID0gQm94LndpdGhDb21wb25lbnQoJ2lucHV0Jyk7XG5cbmNvbnN0IFF1ZXJ5Q29udGFpbmVyID0gc3R5bGVkKENvbnRlbnRDb250YWluZXIpKFxuICBjc3Moe1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHB0OiAxNixcbiAgICBwYjogeyBfOiAwLCBtZDogMjQgfSxcbiAgICBweDogeyBfOiAyNCB9LFxuICB9KVxuKTtcblxuY29uc3QgU3VnZ2VzdGlvbkNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKElucHV0KShcbiAgY3NzKHtcbiAgICBvdXRsaW5lOiBgbm9uZWAsXG4gICAgJyY6OnBsYWNlaG9sZGVyJzoge1xuICAgICAgdGV4dENvbG9yOiB0aGVtZS5jb2xvcnNbJ3RleHQtc2Vjb25kYXJ5J10gYXMgbmV2ZXIsXG4gICAgfSxcbiAgfSlcbik7XG5cbmNvbnN0IElubGluZVJlc3VsdExpID0gc3R5bGVkKE1lbnVJdGVtKShcbiAgY3NzKHtcbiAgICBwbDogMCxcbiAgICBweTogOCxcbiAgICBmb250U2l6ZTogMTYsXG4gICAgJyY6Zm9jdXMtdmlzaWJsZTphZnRlcic6IHtcbiAgICAgIGxlZnQ6IC00LFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVMb2FkZXJMaSA9IHN0eWxlZC5saShcbiAgY3NzKHtcbiAgICBsaXN0U3R5bGVUeXBlOiAnbm9uZScsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogMTIsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgU2VtaWJvbGRTZWFyY2hJY29uID0gc3R5bGVkKFNlYXJjaEljb24pYFxuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBjaXJjbGUsXG4gIHBhdGgge1xuICAgIHN0cm9rZS13aWR0aDogMnB4O1xuICB9XG4gIHJlY3Qge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0ycHgsIC0ycHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlICsgNHB4KTtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgNHB4KTtcbiAgfVxuYDtcblxuY29uc3QgRWxsaXBzaXNCb3ggPSBzdHlsZWQoQm94KWBcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5gO1xuXG5jb25zdCBIaWdobGlnaHRlZFRleHQgPSAoe1xuICBzdWdnZXN0aW9uOiB7IHRpdGxlLCBzZWdtZW50cyB9LFxufToge1xuICBzdWdnZXN0aW9uOiBBdXRvY29tcGxldGVTdWdnZXN0aW9uO1xufSkgPT4ge1xuICBjb25zdCBtb2RlID0gdXNlQ3VycmVudE1vZGUoKTtcbiAgY29uc3QgaGlnaGxpZ2h0Q29sb3IgPSBtb2RlID09PSAnZGFyaycgPyAnaHlwZXInIDogJ3llbGxvdyc7XG5cbiAgcmV0dXJuIChcbiAgICA8RmxleEJveD5cbiAgICAgIDxFbGxpcHNpc0JveFxuICAgICAgICBtYXhXaWR0aD1cImNhbGMoMTAwdncgLSAxMjhweClcIlxuICAgICAgICB3aGl0ZVNwYWNlPVwicHJlXCJcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgPlxuICAgICAgICB7c2VnbWVudHMubWFwKChzZWdtZW50LCBpKSA9PiAoXG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGtleT17YCR7dGl0bGV9OiR7aS50b1N0cmluZygpfWB9XG4gICAgICAgICAgICBsaW5lSGVpZ2h0PVwidGl0bGVcIlxuICAgICAgICAgICAgey4uLihzZWdtZW50LmhpZ2hsaWdodFxuICAgICAgICAgICAgICA/IHsgYmc6IGhpZ2hsaWdodENvbG9yLCBmb250V2VpZ2h0OiAnYm9sZCcgfVxuICAgICAgICAgICAgICA6IHt9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2VnbWVudC52YWx1ZX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICkpfVxuICAgICAgPC9FbGxpcHNpc0JveD5cbiAgICAgIDxUZXh0IHNjcmVlbnJlYWRlcj57dGl0bGV9PC9UZXh0PlxuICAgIDwvRmxleEJveD5cbiAgKTtcbn07XG5cbnR5cGUgU2VhcmNoQXNZb3VUeXBlTG9hZGVyID0ge1xuICBzaGltbWVyUm93czoge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHNoaW1tZXJzOiB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgfVtdO1xuICB9W107XG59O1xuXG5sZXQgbG9hZGVyS2V5ID0gMDtcbmZ1bmN0aW9uIHJuZExvYWRlcigpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gIGNvbnN0IGtleSA9IGxvYWRlcktleSsrO1xuICBjb25zdCBsb2FkZXI6IFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHsgc2hpbW1lclJvd3M6IFtdIH07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XG4gICAgY29uc3Qgcm93ID0ge1xuICAgICAga2V5OiBgJHtrZXl9OiR7aX1gLFxuICAgICAgc2hpbW1lcnM6IFtdIGFzIHsga2V5OiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdLFxuICAgIH07XG4gICAgY29uc3Qgd29yZHMgPSBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDMpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZHM7IGorKykge1xuICAgICAgY29uc3Qgd2lkdGggPSAxMiArIE1hdGgucm91bmQoTWF0aC5yYW5kb20oKSAqIDk2KTtcbiAgICAgIHJvdy5zaGltbWVycy5wdXNoKHtcbiAgICAgICAga2V5OiBgJHtrZXl9OiR7an1gLFxuICAgICAgICB3aWR0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkZXIuc2hpbW1lclJvd3MucHVzaChyb3cpO1xuICB9XG4gIHJldHVybiBsb2FkZXI7XG59XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hQYW5lOiBSZWFjdC5GQzxTZWFyY2hQYW5lUHJvcHM+ID0gKHtcbiAgb25TZWFyY2gsXG4gIG9uVHJhY2tpbmdDbGljayxcbiAgc2VhcmNoQnV0dG9uUmVmLFxuICB0b2dnbGVTZWFyY2gsXG4gIG9uU2VhcmNoQXNZb3VUeXBlLFxufSkgPT4ge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBpbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW2F1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zLCBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9uc10gPSB1c2VTdGF0ZTxcbiAgICBBdXRvY29tcGxldGVTdWdnZXN0aW9uW11cbiAgPihbXSk7XG4gIGNvbnN0IFtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLCBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzXSA9XG4gICAgdXNlU3RhdGU8U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0IFtzZWFyY2hSZXN1bHRDbGlja2VkLCBzZXRTZWFyY2hSZXN1bHRDbGlja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrID1cbiAgICBvblNlYXJjaEFzWW91VHlwZSAmJiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzICYmICFzZWFyY2hSZXN1bHRDbGlja2VkO1xuXG4gIGNvbnN0IGNsb3NlU2VhcmNoID0gYXN5bmMgKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcihjbG9zZVNlYXJjaCk7XG5cbiAgY29uc3Qgb25Nb3VzZURvd25PdXRzaWRlID0gKHsgdGFyZ2V0IH06IE1vdXNlRXZlbnQpID0+IHtcbiAgICBjb25zdCBoYW5kbGVPdXRzaWRlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICFkb2N1bWVudFxuICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10ZXN0aWQ9XCJoZWFkZXItc2VhcmNoLWRyb3Bkb3duXCJdJylcbiAgICAgICAgICA/LmNvbnRhaW5zKHRhcmdldCBhcyBIVE1MRWxlbWVudCkgJiZcbiAgICAgICAgdGFyZ2V0ICE9PSBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnRcbiAgICAgICkge1xuICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICAgIH07XG5cbiAgICB0YXJnZXQ/LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IG5hdmlnYXRlVG9TZWFyY2ggPSAoc2VhcmNoVGVybTogc3RyaW5nLCBmcm9tUHJldlNlYXJjaD86IHN0cmluZykgPT4ge1xuICAgIG9uU2VhcmNoKHNlYXJjaFRlcm0sIGZyb21QcmV2U2VhcmNoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2U6IFJlYWN0LkNoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50PiA9IChldnQpID0+IHtcbiAgICBzZXRWYWx1ZShldnQudGFyZ2V0LnZhbHVlKTtcbiAgICAvLyByZXNldCB0byBmYWxzZSB3aGVuIHRoZSBzZWFyY2ggcXVlcnkgY2hhbmdlc1xuICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQoZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzV2l0aG91dENsaWNrICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIGRvbid0IHRyYWNrIGlmIGEgcmVzdWx0IHdhcyBjbGlja2VkIG9yIGlmIHdlIGRvbid0IGhhdmUgc2VhcmNoIHJlc3VsdHNcbiAgICBpZiAoXG4gICAgICBzZWFyY2hSZXN1bHRDbGlja2VkIHx8XG4gICAgICAhb25TZWFyY2hBc1lvdVR5cGUgfHxcbiAgICAgICFzZWFyY2hBc1lvdVR5cGVSZXN1bHRzIHx8XG4gICAgICAhdmFsdWVUcmltbWVkLmxlbmd0aFxuICAgIClcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLXJldHVyblxuICAgICAgcmV0dXJuO1xuICB9LCBbXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxuICAgIHZhbHVlVHJpbW1lZCxcbiAgICBvblNlYXJjaEFzWW91VHlwZSxcbiAgXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbnB1dFJlZi5jdXJyZW50Py5mb2N1cygpO1xuICAgIHNlYXJjaFdvcmtlci5pbml0KCk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmFsdWVUcmltbWVkLmxlbmd0aCkge1xuICAgICAgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0cyhudWxsKTtcbiAgICAgIHNldEF1dG9Db21wbGV0ZVN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgIHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zKHtcbiAgICAgICAgcXVlcnk6ICcnLFxuICAgICAgICBzZWFyY2hJZDogJycsXG4gICAgICAgIHJlc3VsdHNDb3VudDogMCxcbiAgICAgICAgcXVlcnlMb2FkVGltZTogMCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBsZXQgY2xlYXJBdXRvY29tcGxldGUgPSB0cnVlO1xuICAgIGxldCBjbGVhclNlYXJjaEFzWW91VHlwZSA9IHRydWU7XG5cbiAgICBsZXQgc2VhcmNoRXZlbnROb1Jlc3VsdERlbGF5OiBOb2RlSlMuVGltZW91dDtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2l0aCBhIHNtYWxsIGRlbGF5IHdoZW4gdGhlcmUgYXJlIG5vIHJlc3VsdHNcbiAgICAgIGlmIChcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUgJiZcbiAgICAgICAgcmVzdWx0cy50b3AubGVuZ3RoID09PSAwICYmXG4gICAgICAgICFzZWFyY2hSZXN1bHRDbGlja2VkXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBxdWVyeSwgc2VhcmNoSWQsIHF1ZXJ5TG9hZFRpbWUgfSA9IHJlc3VsdHM7XG4gICAgICAgIHNlYXJjaEV2ZW50Tm9SZXN1bHREZWxheSA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghY2FuY2VsKSB7XG4gICAgICAgICAgICBvblNlYXJjaEFzWW91VHlwZShxdWVyeSwgc2VhcmNoSWQsIDAsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICAgIGNsZWFyVGltZW91dChzZWFyY2hFdmVudE5vUmVzdWx0RGVsYXkpO1xuICAgIH07XG4gIH0sIFtcbiAgICB2YWx1ZVRyaW1tZWQsXG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gICAgc2VhcmNoUmVzdWx0Q2xpY2tlZCxcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyxcbiAgXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBhcmlhLWhpZGRlblxuICAgICAgICBiZz1cInNoYWRvdy1zZWNvbmRhcnlcIlxuICAgICAgICBoZWlnaHQ9XCIxMDB2aFwiXG4gICAgICAgIHBvc2l0aW9uPVwiZml4ZWRcIlxuICAgICAgICAvLyBXZSBhZGQgNXJlbSBoZXJlIGluIGNhc2UgdGhlcmUncyBzb21lIHNvcnQgb2YgYnJhbmRlZCBiYW5uZXIgYWJvdmUgc2VhcmNoXG4gICAgICAgIC8vIFRoZSBzZWFyY2ggYXJlYSBpcyBtdWNoIHRhbGxlciB0aGFuIDVyZW0gc28gdGhpcyBpcyBhIHNhZmUgYW1vdW50IG9mIHBhZGRpbmdcbiAgICAgICAgdG9wPXtgY2FsYygke3RoZW1lLmVsZW1lbnRzLmhlYWRlckhlaWdodH0gKyA1cmVtKWB9XG4gICAgICAgIHdpZHRoPXsxfVxuICAgICAgLz5cbiAgICAgIDxGb2N1c1RyYXBcbiAgICAgICAgb25Fc2NhcGVLZXk9e2Nsb3NlU2VhcmNofVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW1pYm9sZFNlYXJjaEljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG1iPXsyIGFzIDB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXs4fVxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIG1yPXsxMn1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmxpbmVSZXN1bHRMaT5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgICAgICB7KHNlYXJjaEFzWW91VHlwZVJlc3VsdHMgPT09IG51bGwgfHxcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwiaDJcIiBmb250U2l6ZT17MjB9IG1iPXsxNn0gbXQ9ezI0fT5cbiAgICAgICAgICAgICAgICAgICAgICBUb3AgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbj1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJ1bFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGlzdFN0eWxlPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcD17MH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHNlYXJjaEFzWW91VHlwZUxvYWRlcj8uc2hpbW1lclJvd3MubWFwKChyKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPElubGluZUxvYWRlckxpIGtleT17ci5rZXl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Iuc2hpbW1lcnMubWFwKCh3b3JkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGltbWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXszMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweT17OCBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17d29yZC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e3dvcmQud2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseT1cImFjY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj1cInRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMTAgYXMgMTYgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I9XCJib3JkZXItc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM9XCJ4bFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4PXsxNn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eT17MC4xfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lTG9hZGVyTGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMudG9wLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5xdWVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2dC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTZWFyY2hSZXN1bHRDbGlja2VkKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9pZDogc2VhcmNoQXNZb3VUeXBlUmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsdWc6IHMuc2x1ZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHsgY29udGVudF9pZDogcy5jb250ZW50SWQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlYXJjaFJlc3VsdENsaWNrZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FmZWx5UmVkaXJlY3Qocy51cmxQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpZ2hsaWdodGVkVGV4dCBzdWdnZXN0aW9uPXtzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJhZGdlIHNpemU9XCJzbVwiIHZhcmlhbnQ9XCJ0ZXJ0aWFyeVwiIG1sPXsxMn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzLnR5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy50b3AubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxCb3ggZm9udFNpemU9e3sgXzogMjAsIHNtOiAyNiB9fSBtdD17MH0gbWI9ezQ4fT5cbiAgICAgICAgICAgICAgICAgICAgICB7YFdlIGNvdWxkbid0IGZpbmQgYSBtYXRjaCBmb3IgYH1cbiAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBmb250V2VpZ2h0PVwiYm9sZFwiPntgXCIke3ZhbHVlVHJpbW1lZH0uXCJgfTwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnIFRyeSBhbm90aGVyIGtleXdvcmQsIG9yIHNlZSB3aGF0IG91ciBtZW1iZXJzIGFyZSBsZWFybmluZy4nXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgPE1lbnUgYm9yZGVyPVwibm9uZVwiIHZhcmlhbnQ9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPFBvcHVsYXJDb250ZW50IG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfSAvPlxuICAgICAgICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyU2VhcmNoZXNcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2g9e25hdmlnYXRlVG9TZWFyY2h9XG4gICAgICAgICAgICAgICAgICBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgeyEhc2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICAgIDxTdHJva2VCdXR0b25cbiAgICAgICAgICAgICAgICBteT17MTZ9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCd2aWV3X2FsbF9yZXN1bHRzJywge1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFZpZXcgYWxsIHJlc3VsdHNcbiAgICAgICAgICAgICAgPC9TdHJva2VCdXR0b24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPFF1aXpBbmRIZWxwQ2VudGVyTGlua3NcbiAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgIGhhbmRsZUNsb3NlRHJvcGRvd249e2Nsb3NlU2VhcmNofVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1N1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9Gb2N1c1RyYXA+XG4gICAgPC8+XG4gICk7XG59O1xuIl19 */",
103
+ styles: "text-overflow:ellipsis/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcHBIZWFkZXIvU2VhcmNoL1NlYXJjaFBhbmUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtHK0IiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL0FwcEhlYWRlci9TZWFyY2gvU2VhcmNoUGFuZS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBDb250ZW50Q29udGFpbmVyLFxuICBGbGV4Qm94LFxuICBGb2N1c1RyYXAsXG4gIEljb25CdXR0b24sXG4gIE1lbnUsXG4gIE1lbnVJdGVtLFxuICBTaGltbWVyLFxuICBTdHJva2VCdXR0b24sXG4gIFRleHQsXG59IGZyb20gJ0Bjb2RlY2FkZW15L2dhbXV0JztcbmltcG9ydCB7IE1pbmlEZWxldGVJY29uLCBTZWFyY2hJY29uIH0gZnJvbSAnQGNvZGVjYWRlbXkvZ2FtdXQtaWNvbnMnO1xuaW1wb3J0IHsgY3NzLCB0aGVtZSwgdXNlQ3VycmVudE1vZGUgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU9uRXNjSGFuZGxlciB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBzZWFyY2hQbGFjZWhvbGRlciB9IGZyb20gJy4vY29uc3RzJztcbmltcG9ydCB7IFBvcHVsYXJDb250ZW50LCBQb3B1bGFyU2VhcmNoZXMgfSBmcm9tICcuL0RlZmF1bHRSZXN1bHRzJztcbmltcG9ydCB7IHVzZVNlYXJjaFRyYWNraW5nIH0gZnJvbSAnLi9ob29rcy91c2VTZWFyY2hUcmFja2luZyc7XG5pbXBvcnQgeyB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24gfSBmcm9tICcuL2hvb2tzL3VzZVVybENoYW5nZURldGVjdGlvbic7XG5pbXBvcnQgeyBRdWl6QW5kSGVscENlbnRlckxpbmtzIH0gZnJvbSAnLi9RdWl6QW5kSGVscENlbnRlckxpbmtzJztcbmltcG9ydCB7IHNhZmVseVJlZGlyZWN0IH0gZnJvbSAnLi9zYWZlbHlSZWRpcmVjdCc7XG5pbXBvcnQgeyB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQgfSBmcm9tICcuL1NlYXJjaFRyYWNraW5nUHJvdmlkZXInO1xuaW1wb3J0IHsgc2VhcmNoV29ya2VyIH0gZnJvbSAnLi9TZWFyY2hXb3JrZXInO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVTdWdnZXN0aW9uLFxuICBTZWFyY2hBc1lvdVR5cGVSZXN1bHRzLFxufSBmcm9tICcuL1NlYXJjaFdvcmtlci90eXBlcyc7XG5pbXBvcnQgeyBTZWFyY2hQYW5lUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgRm9ybSA9IEJveC53aXRoQ29tcG9uZW50KCdmb3JtJyk7XG5jb25zdCBJbnB1dCA9IEJveC53aXRoQ29tcG9uZW50KCdpbnB1dCcpO1xuXG5jb25zdCBRdWVyeUNvbnRhaW5lciA9IHN0eWxlZChDb250ZW50Q29udGFpbmVyKShcbiAgY3NzKHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBwdDogMTYsXG4gICAgcGI6IHsgXzogMCwgbWQ6IDI0IH0sXG4gICAgcHg6IHsgXzogMjQgfSxcbiAgfSlcbik7XG5cbmNvbnN0IFN1Z2dlc3Rpb25Db250YWluZXIgPSBzdHlsZWQoQ29udGVudENvbnRhaW5lcikoXG4gIGNzcyh7XG4gICAgcHQ6IDE2LFxuICAgIHBiOiB7IF86IDAsIG1kOiAyNCB9LFxuICAgIHB4OiB7IF86IDI0IH0sXG4gIH0pXG4pO1xuXG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCkoXG4gIGNzcyh7XG4gICAgb3V0bGluZTogYG5vbmVgLFxuICAgICcmOjpwbGFjZWhvbGRlcic6IHtcbiAgICAgIHRleHRDb2xvcjogdGhlbWUuY29sb3JzWyd0ZXh0LXNlY29uZGFyeSddIGFzIG5ldmVyLFxuICAgIH0sXG4gIH0pXG4pO1xuXG5jb25zdCBJbmxpbmVSZXN1bHRMaSA9IHN0eWxlZChNZW51SXRlbSkoXG4gIGNzcyh7XG4gICAgcGw6IDAsXG4gICAgcHk6IDgsXG4gICAgZm9udFNpemU6IDE2LFxuICAgICcmOmZvY3VzLXZpc2libGU6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAtNCxcbiAgICB9LFxuICB9KVxuKTtcblxuY29uc3QgSW5saW5lTG9hZGVyTGkgPSBzdHlsZWQubGkoXG4gIGNzcyh7XG4gICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBnYXA6IDEyLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFNlbWlib2xkU2VhcmNoSWNvbiA9IHN0eWxlZChTZWFyY2hJY29uKWBcbiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDtcbiAgY2lyY2xlLFxuICBwYXRoIHtcbiAgICBzdHJva2Utd2lkdGg6IDJweDtcbiAgfVxuICByZWN0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMnB4LCAtMnB4KTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDRweCk7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDRweCk7XG4gIH1cbmA7XG5cbmNvbnN0IEVsbGlwc2lzQm94ID0gc3R5bGVkKEJveClgXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuYDtcblxuY29uc3QgSGlnaGxpZ2h0ZWRUZXh0ID0gKHtcbiAgc3VnZ2VzdGlvbjogeyB0aXRsZSwgc2VnbWVudHMgfSxcbn06IHtcbiAgc3VnZ2VzdGlvbjogQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbjtcbn0pID0+IHtcbiAgY29uc3QgbW9kZSA9IHVzZUN1cnJlbnRNb2RlKCk7XG4gIGNvbnN0IGhpZ2hsaWdodENvbG9yID0gbW9kZSA9PT0gJ2RhcmsnID8gJ2h5cGVyJyA6ICd5ZWxsb3cnO1xuXG4gIHJldHVybiAoXG4gICAgPEZsZXhCb3g+XG4gICAgICA8RWxsaXBzaXNCb3hcbiAgICAgICAgbWF4V2lkdGg9XCJjYWxjKDEwMHZ3IC0gMTI4cHgpXCJcbiAgICAgICAgd2hpdGVTcGFjZT1cInByZVwiXG4gICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgIG92ZXJmbG93PVwiaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaSkgPT4gKFxuICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICBrZXk9e2Ake3RpdGxlfToke2kudG9TdHJpbmcoKX1gfVxuICAgICAgICAgICAgbGluZUhlaWdodD1cInRpdGxlXCJcbiAgICAgICAgICAgIHsuLi4oc2VnbWVudC5oaWdobGlnaHRcbiAgICAgICAgICAgICAgPyB7IGJnOiBoaWdobGlnaHRDb2xvciwgZm9udFdlaWdodDogJ2JvbGQnIH1cbiAgICAgICAgICAgICAgOiB7fSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3NlZ21lbnQudmFsdWV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvRWxsaXBzaXNCb3g+XG4gICAgICA8VGV4dCBzY3JlZW5yZWFkZXI+e3RpdGxlfTwvVGV4dD5cbiAgICA8L0ZsZXhCb3g+XG4gICk7XG59O1xuXG50eXBlIFNlYXJjaEFzWW91VHlwZUxvYWRlciA9IHtcbiAgc2hpbW1lclJvd3M6IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBzaGltbWVyczoge1xuICAgICAga2V5OiBzdHJpbmc7XG4gICAgICB3aWR0aDogbnVtYmVyO1xuICAgIH1bXTtcbiAgfVtdO1xufTtcblxubGV0IGxvYWRlcktleSA9IDA7XG5mdW5jdGlvbiBybmRMb2FkZXIoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wbHVzcGx1c1xuICBjb25zdCBrZXkgPSBsb2FkZXJLZXkrKztcbiAgY29uc3QgbG9hZGVyOiBTZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSB7IHNoaW1tZXJSb3dzOiBbXSB9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgIGtleTogYCR7a2V5fToke2l9YCxcbiAgICAgIHNoaW1tZXJzOiBbXSBhcyB7IGtleTogc3RyaW5nOyB3aWR0aDogbnVtYmVyIH1bXSxcbiAgICB9O1xuICAgIGNvbnN0IHdvcmRzID0gTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAzKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHdvcmRzOyBqKyspIHtcbiAgICAgIGNvbnN0IHdpZHRoID0gMTIgKyBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiA5Nik7XG4gICAgICByb3cuc2hpbW1lcnMucHVzaCh7XG4gICAgICAgIGtleTogYCR7a2V5fToke2p9YCxcbiAgICAgICAgd2lkdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgbG9hZGVyLnNoaW1tZXJSb3dzLnB1c2gocm93KTtcbiAgfVxuICByZXR1cm4gbG9hZGVyO1xufVxuXG5leHBvcnQgY29uc3QgU2VhcmNoUGFuZTogUmVhY3QuRkM8U2VhcmNoUGFuZVByb3BzPiA9ICh7XG4gIG9uU2VhcmNoLFxuICBvblRyYWNraW5nQ2xpY2ssXG4gIHNlYXJjaEJ1dHRvblJlZixcbiAgdG9nZ2xlU2VhcmNoLFxuICBvblNlYXJjaEFzWW91VHlwZSxcbn0pID0+IHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgaW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFthdXRvQ29tcGxldGVTdWdnZXN0aW9ucywgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnNdID0gdXNlU3RhdGU8XG4gICAgQXV0b2NvbXBsZXRlU3VnZ2VzdGlvbltdXG4gID4oW10pO1xuICBjb25zdCBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0cywgc2V0U2VhcmNoQXNZb3VUeXBlUmVzdWx0c10gPVxuICAgIHVzZVN0YXRlPFNlYXJjaEFzWW91VHlwZVJlc3VsdHMgfCBudWxsPihudWxsKTtcblxuICBjb25zdCB7IHNldE9uU2VhcmNoQXNZb3VUeXBlUGFyYW1zIH0gPSB1c2VTZWFyY2hUcmFja2luZ0NvbnRleHQoKTtcblxuICBjb25zdCBzZWFyY2hBc1lvdVR5cGVMb2FkZXIgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IChzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsID8gcm5kTG9hZGVyKCkgOiBudWxsKSxcbiAgICBbc2VhcmNoQXNZb3VUeXBlUmVzdWx0c11cbiAgKTtcblxuICBjb25zdCB2YWx1ZVRyaW1tZWQgPSB2YWx1ZS50cmltKCk7XG5cbiAgY29uc3QgaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzID0gb25TZWFyY2hBc1lvdVR5cGUgJiYgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcblxuICBjb25zdCBjbG9zZVNlYXJjaCA9IGFzeW5jIChmcm9tUmVzdWx0Q2xpY2sgPSBmYWxzZSkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCB3aGVuIHVzZXIgbWFkZSBhIHNlYXJjaCBhbmQgdGhlbiBjbG9zZWQgc2VhcmNoIHBhbmVcbiAgICBpZiAoXG4gICAgICBoYXNTZWFyY2hFdmVudEFuZFJlc3VsdHMgJiZcbiAgICAgICFmcm9tUmVzdWx0Q2xpY2sgJiZcbiAgICAgIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIGF3YWl0IHRvZ2dsZVNlYXJjaCgpO1xuICAgIC8vIGFkZHMgYSBsaXR0bGUgZGVsYXkgYmV0d2VlbiBjbG9zaW5nIHRoZSBzZWFyY2ggcGFuZSBhbmQgZm9jdXNpbmcgb24gdGhlIGJ1dHRvblxuICAgIC8vIHRvIHByZXZlbnQgdGhlIHNlYXJjaCBwYW5lIGZyb20gaW1tZWRpYXRlbHkgb3BlbmluZyBhZ2FpblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaEJ1dHRvblJlZiAmJiBzZWFyY2hCdXR0b25SZWY/LmN1cnJlbnQpIHtcbiAgICAgICAgc2VhcmNoQnV0dG9uUmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSwgMTApO1xuICB9O1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZU9uRXNjSGFuZGxlcigoKSA9PiBjbG9zZVNlYXJjaCgpKTtcblxuICBjb25zdCBvbk1vdXNlRG93bk91dHNpZGUgPSAoeyB0YXJnZXQgfTogTW91c2VFdmVudCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWRvY3VtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRlc3RpZD1cImhlYWRlci1zZWFyY2gtZHJvcGRvd25cIl0nKVxuICAgICAgICAgID8uY29udGFpbnModGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAmJlxuICAgICAgICB0YXJnZXQgIT09IHNlYXJjaEJ1dHRvblJlZj8uY3VycmVudFxuICAgICAgKSB7XG4gICAgICAgIGNsb3NlU2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gICAgfTtcblxuICAgIHRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGhhbmRsZU91dHNpZGVDbGljayk7XG4gIH07XG5cbiAgY29uc3QgbmF2aWdhdGVUb1NlYXJjaCA9IChzZWFyY2hUZXJtOiBzdHJpbmcsIGZyb21QcmV2U2VhcmNoPzogc3RyaW5nKSA9PiB7XG4gICAgb25TZWFyY2goc2VhcmNoVGVybSwgZnJvbVByZXZTZWFyY2gpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+ID0gKGV2dCkgPT4ge1xuICAgIHNldFZhbHVlKGV2dC50YXJnZXQudmFsdWUpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdDogUmVhY3QuRm9ybUV2ZW50SGFuZGxlciA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyB0cmFjayBzZWFyY2ggZXZlbnQgd2hlbiB0aGUgdXNlciBzdWJtaXRzIHRoZSBmb3JtIHRvIGNhcHR1cmUgY29tcGxldGUgcXVlcnlcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9TZWFyY2godmFsdWUsIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkKTtcbiAgfTtcblxuICBjb25zdCBjbGVhcklucHV0ID0gKCkgPT4ge1xuICAgIC8vIHRyYWNrIHNlYXJjaCBldmVudCBiZWZvcmUgdXNlciBjbGVhcnMgaW5wdXRcbiAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCBzZWFyY2hJZCwgcmVzdWx0c0NvdW50LCBxdWVyeUxvYWRUaW1lIH0gPVxuICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzO1xuICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgIH1cblxuICAgIHNldFZhbHVlKCcnKTtcbiAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhbXSk7XG4gICAgLy8gcmVzZXQgdGhlIGNvbnRleHQgd2l0aCBlbXB0eSB2YWx1ZXNcbiAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICBxdWVyeTogJycsXG4gICAgICBzZWFyY2hJZDogJycsXG4gICAgICByZXN1bHRzQ291bnQ6IDAsXG4gICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMsIHdlIHdhbnQgdG8gY2xvc2UgdGhlIHNlYXJjaCBwYW5lIGlmIGl0J3Mgb3BlblxuICAvLyBhbmQgdHJhY2sgc2VhcmNoIGV2ZW50IGlmIHVzZXIgbWFkZSBhIHNlYXJjaFxuICB1c2VVcmxDaGFuZ2VEZXRlY3Rpb24oe1xuICAgIG9uVXJsQ2hhbmdlOiAoKSA9PiB7XG4gICAgICBpZiAoaGFzU2VhcmNoRXZlbnRBbmRSZXN1bHRzICYmIHZhbHVlVHJpbW1lZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUgfSA9XG4gICAgICAgICAgc2VhcmNoQXNZb3VUeXBlUmVzdWx0cztcbiAgICAgICAgb25TZWFyY2hBc1lvdVR5cGUocXVlcnksIHNlYXJjaElkLCByZXN1bHRzQ291bnQsIHF1ZXJ5TG9hZFRpbWUpO1xuICAgICAgfVxuXG4gICAgICB0b2dnbGVTZWFyY2goKTtcbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlucHV0UmVmLmN1cnJlbnQ/LmZvY3VzKCk7XG4gICAgc2VhcmNoV29ya2VyLmluaXQoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF2YWx1ZVRyaW1tZWQubGVuZ3RoKSB7XG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgICAgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXMoe1xuICAgICAgICBxdWVyeTogJycsXG4gICAgICAgIHNlYXJjaElkOiAnJyxcbiAgICAgICAgcmVzdWx0c0NvdW50OiAwLFxuICAgICAgICBxdWVyeUxvYWRUaW1lOiAwLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgIGxldCBjbGVhckF1dG9jb21wbGV0ZSA9IHRydWU7XG4gICAgbGV0IGNsZWFyU2VhcmNoQXNZb3VUeXBlID0gdHJ1ZTtcblxuICAgIGNvbnN0IGxvYWRlckRlbGF5ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvKlxuICAgICAgICogV2FpdCAxMCBtaWxsaXNlY29uZHMgdG8gZ2V0IGEgcmVzcG9uc2UgZm9yIHdvcmtlciBiZWZvcmUgc2hvd2luZyBsb2FkZXJzLlxuICAgICAgICogVGhpcyBwcmV2ZW50cyBmbGlja2VyaW5nIGxvYWRlcnMgb24gcXVpY2sgb3IgY2FjaGVkIHJlc3VsdHMuXG4gICAgICAgKi9cbiAgICAgIGlmIChjYW5jZWwpIHJldHVybjtcbiAgICAgIGlmIChjbGVhckF1dG9jb21wbGV0ZSkgc2V0QXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMoW10pO1xuICAgICAgaWYgKGNsZWFyU2VhcmNoQXNZb3VUeXBlKSBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKG51bGwpO1xuICAgIH0sIDEwKTtcblxuICAgIHNlYXJjaFdvcmtlci5hdXRvY29tcGxldGUodmFsdWVUcmltbWVkKS50aGVuKChzdWdnZXN0aW9ucykgPT4ge1xuICAgICAgY2xlYXJBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRBdXRvQ29tcGxldGVTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBzZWFyY2hXb3JrZXIuc2VhcmNoQXNZb3VUeXBlKHZhbHVlVHJpbW1lZCkudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgY2xlYXJTZWFyY2hBc1lvdVR5cGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGNhbmNlbCkgcmV0dXJuOyAvLyB0ZXh0IGhhcyBjaGFuZ2VkIHNpbmNlIHRoaXMgcmVxdWVzdCB3YXMgbWFkZVxuXG4gICAgICBzZXRTZWFyY2hBc1lvdVR5cGVSZXN1bHRzKHJlc3VsdHMpO1xuXG4gICAgICBzZXRPblNlYXJjaEFzWW91VHlwZVBhcmFtcyh7XG4gICAgICAgIHF1ZXJ5OiByZXN1bHRzLnF1ZXJ5LFxuICAgICAgICBzZWFyY2hJZDogcmVzdWx0cy5zZWFyY2hJZCxcbiAgICAgICAgcmVzdWx0c0NvdW50OiByZXN1bHRzLnRvcC5sZW5ndGgsXG4gICAgICAgIHF1ZXJ5TG9hZFRpbWU6IHJlc3VsdHMucXVlcnlMb2FkVGltZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgY2xlYXJUaW1lb3V0KGxvYWRlckRlbGF5KTtcbiAgICB9O1xuICB9LCBbdmFsdWVUcmltbWVkLCBvblNlYXJjaEFzWW91VHlwZSwgc2V0T25TZWFyY2hBc1lvdVR5cGVQYXJhbXNdKTtcblxuICB1c2VTZWFyY2hUcmFja2luZyh7XG4gICAgb25TZWFyY2hBc1lvdVR5cGUsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgYmc9XCJzaGFkb3ctc2Vjb25kYXJ5XCJcbiAgICAgICAgaGVpZ2h0PVwiMTAwdmhcIlxuICAgICAgICBwb3NpdGlvbj1cImZpeGVkXCJcbiAgICAgICAgLy8gV2UgYWRkIDVyZW0gaGVyZSBpbiBjYXNlIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJyYW5kZWQgYmFubmVyIGFib3ZlIHNlYXJjaFxuICAgICAgICAvLyBUaGUgc2VhcmNoIGFyZWEgaXMgbXVjaCB0YWxsZXIgdGhhbiA1cmVtIHNvIHRoaXMgaXMgYSBzYWZlIGFtb3VudCBvZiBwYWRkaW5nXG4gICAgICAgIHRvcD17YGNhbGMoJHt0aGVtZS5lbGVtZW50cy5oZWFkZXJIZWlnaHR9ICsgNXJlbSlgfVxuICAgICAgICB3aWR0aD17MX1cbiAgICAgIC8+XG4gICAgICA8Rm9jdXNUcmFwXG4gICAgICAgIG9uRXNjYXBlS2V5PXsoKSA9PiBjbG9zZVNlYXJjaCgpfVxuICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25Nb3VzZURvd25PdXRzaWRlfVxuICAgICAgICBhbGxvd1BhZ2VJbnRlcmFjdGlvblxuICAgICAgPlxuICAgICAgICA8Qm94XG4gICAgICAgICAgYmc9XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICBib3JkZXJDb2xvckJvdHRvbT1cImJvcmRlci1wcmltYXJ5XCJcbiAgICAgICAgICBib3JkZXJDb2xvclRvcD1cImJvcmRlci10ZXJ0aWFyeVwiXG4gICAgICAgICAgYm9yZGVyU3R5bGU9XCJzb2xpZFwiXG4gICAgICAgICAgYm9yZGVyV2lkdGg9XCIycHggMCAxcHhcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaGVhZGVyLXNlYXJjaC1kcm9wZG93blwiXG4gICAgICAgICAgcG9zaXRpb249e3sgXzogJ2ZpeGVkJywgbWQ6ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIG1heEhlaWdodD17eyBfOiAnY2FsYygxMDB2aCAtIDYzcHgpJywgbWQ6ICdjYWxjKDEwMHZoIC0gODBweCknIH19XG4gICAgICAgICAgb3ZlcmZsb3c9XCJhdXRvXCJcbiAgICAgICAgICB6SW5kZXg9ezEwfSAvLyBlbnN1cmUgZHJvcGRvd24gaXMgYWJvdmUgdGhlIHBhZ2UgY29udGVudFxuICAgICAgICA+XG4gICAgICAgICAgPEJveCBib3JkZXI9XCJub25lXCIgd2lkdGg9XCJhdXRvXCI+XG4gICAgICAgICAgICA8UXVlcnlDb250YWluZXI+XG4gICAgICAgICAgICAgIDxGbGV4Qm94XG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtcz1cImJhc2VsaW5lXCJcbiAgICAgICAgICAgICAgICBib3JkZXJDb2xvcj1cImdyYXktNjAwXCJcbiAgICAgICAgICAgICAgICBib3JkZXJTdHlsZUJvdHRvbT1cInNvbGlkXCJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aEJvdHRvbT1cIjFweFwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgICAgd2lkdGg9e3sgXzogMjAsIG1kOiAyNCB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPEZvcm1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbj1cIi9zZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtZm9ybVwiXG4gICAgICAgICAgICAgICAgICBtbD17OH1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtoYW5kbGVTdWJtaXR9XG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICBib3JkZXI9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU9e3sgXzogMjAsIG1kOiAyNiB9fVxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0PVwiYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiaGVhZGVyLXNlYXJjaC1iYXJcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwicXVlcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhlKSA9PiBvbktleURvd24oZSl9XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtzZWFyY2hQbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9Gb3JtPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICBpY29uPXtNaW5pRGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBzZWFyY2hcIlxuICAgICAgICAgICAgICAgICAgdGlwPVwiQ2xlYXIgc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgIHRpcFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIGFsaWdubWVudDogJ2JvdHRvbS1jZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdmbG9hdGluZycsXG4gICAgICAgICAgICAgICAgICAgIG5hcnJvdzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NsZWFySW5wdXR9XG4gICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRmxleEJveD5cbiAgICAgICAgICAgIDwvUXVlcnlDb250YWluZXI+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPFN1Z2dlc3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICB7dmFsdWVUcmltbWVkLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPEZsZXhCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGFzPVwidWxcIiBsaXN0U3R5bGU9XCJub25lXCIgcD17MH0+XG4gICAgICAgICAgICAgICAgICB7YXV0b0NvbXBsZXRlU3VnZ2VzdGlvbnMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmxpbmVSZXN1bHRMaVxuICAgICAgICAgICAgICAgICAgICAgIGtleT17cy50aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249eyhldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnYXV0b2NvbXBsZXRlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGVUb1NlYXJjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdhdXRvY29tcGxldGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnNlYXJjaElkID8/ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNjOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VtaWJvbGRTZWFyY2hJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBtYj17MiBhcyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTR9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17OH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBtcj17MTJ9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8SGlnaGxpZ2h0ZWRUZXh0IHN1Z2dlc3Rpb249e3N9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5saW5lUmVzdWx0TGk+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L0ZsZXhCb3g+XG4gICAgICAgICAgICAgICAgeyhzZWFyY2hBc1lvdVR5cGVSZXN1bHRzID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgICBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cImgyXCIgZm9udFNpemU9ezIwfSBtYj17MTZ9IG10PXsyNH0+XG4gICAgICAgICAgICAgICAgICAgICAgVG9wIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICA8RmxleEJveFxuICAgICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgICAgICAgICAgIGFzPVwidWxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxpc3RTdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHA9ezB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cyA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWFyY2hBc1lvdVR5cGVMb2FkZXI/LnNoaW1tZXJSb3dzLm1hcCgocikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmxpbmVMb2FkZXJMaSBrZXk9e3Iua2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyLnNoaW1tZXJzLm1hcCgod29yZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2hpbW1lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17MzB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHk9ezggYXMgMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3dvcmQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXt3b3JkLndpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9XCJ0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXt7IF86IDEwIGFzIDE2IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yPVwiYm9yZGVyLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcj17MX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwieGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweD17MTZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk9ezAuMX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZUxvYWRlckxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnRvcC5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5saW5lUmVzdWx0TGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEFzWW91VHlwZVJlc3VsdHMucXVlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH06JHtpLnRvU3RyaW5nKCl9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrKCdzZWFyY2hfYXNfeW91X3R5cGVfcmVzdWx0Jywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHMuY29udGVudElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyBjb250ZW50X2lkOiBzLmNvbnRlbnRJZCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzYzogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlU2VhcmNoKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygnc2VhcmNoX2FzX3lvdV90eXBlX3Jlc3VsdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfaWQ6IHNlYXJjaEFzWW91VHlwZVJlc3VsdHMuc2VhcmNoSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2x1Zzogcy5zbHVnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihzLmNvbnRlbnRJZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnRfaWQ6IHMuY29udGVudElkIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc2M6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VTZWFyY2godHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVseVJlZGlyZWN0KHMudXJsUGF0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaWdobGlnaHRlZFRleHQgc3VnZ2VzdGlvbj17c30gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCYWRnZSBzaXplPVwic21cIiB2YXJpYW50PVwidGVydGlhcnlcIiBtbD17MTJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cy50eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lubGluZVJlc3VsdExpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICAgICAgPC9GbGV4Qm94PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VhcmNoQXNZb3VUeXBlUmVzdWx0cz8udG9wLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8Qm94IGZvbnRTaXplPXt7IF86IDIwLCBzbTogMjYgfX0gbXQ9ezB9IG1iPXs0OH0+XG4gICAgICAgICAgICAgICAgICAgICAge2BXZSBjb3VsZG4ndCBmaW5kIGEgbWF0Y2ggZm9yIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPFRleHQgZm9udFdlaWdodD1cImJvbGRcIj57YFwiJHt2YWx1ZVRyaW1tZWR9LlwiYH08L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgJyBUcnkgYW5vdGhlciBrZXl3b3JkLCBvciBzZWUgd2hhdCBvdXIgbWVtYmVycyBhcmUgbGVhcm5pbmcuJ1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICAgIDxNZW51IGJvcmRlcj1cIm5vbmVcIiB2YXJpYW50PVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxQb3B1bGFyQ29udGVudCBvblRyYWNraW5nQ2xpY2s9e29uVHJhY2tpbmdDbGlja30gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8TWVudSBib3JkZXI9XCJub25lXCIgdmFyaWFudD1cInBvcG92ZXJcIj5cbiAgICAgICAgICAgICAgICA8UG9wdWxhclNlYXJjaGVzXG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoPXtuYXZpZ2F0ZVRvU2VhcmNofVxuICAgICAgICAgICAgICAgICAgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8UG9wdWxhckNvbnRlbnQgb25UcmFja2luZ0NsaWNrPXtvblRyYWNraW5nQ2xpY2t9IC8+XG4gICAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHshIXNlYXJjaEFzWW91VHlwZVJlc3VsdHM/LnRvcC5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8U3Ryb2tlQnV0dG9uXG4gICAgICAgICAgICAgICAgbXk9ezE2fVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaygndmlld19hbGxfcmVzdWx0cycsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2lkOiBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzLnNlYXJjaElkLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICBuYXZpZ2F0ZVRvU2VhcmNoKHZhbHVlLCBzZWFyY2hBc1lvdVR5cGVSZXN1bHRzPy5zZWFyY2hJZCk7XG4gICAgICAgICAgICAgICAgICBjbG9zZVNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IGFsbCByZXN1bHRzXG4gICAgICAgICAgICAgIDwvU3Ryb2tlQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxRdWl6QW5kSGVscENlbnRlckxpbmtzXG4gICAgICAgICAgICAgIG9uVHJhY2tpbmdDbGljaz17b25UcmFja2luZ0NsaWNrfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURyb3Bkb3duPXtjbG9zZVNlYXJjaH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TdWdnZXN0aW9uQ29udGFpbmVyPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRm9jdXNUcmFwPlxuICAgIDwvPlxuICApO1xufTtcbiJdfQ== */",
103
104
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
104
105
  });
105
106
  const HighlightedText = ({
@@ -166,16 +167,15 @@ export const SearchPane = ({
166
167
  const inputRef = useRef(null);
167
168
  const [autoCompleteSuggestions, setAutoCompleteSuggestions] = useState([]);
168
169
  const [searchAsYouTypeResults, setSearchAsYouTypeResults] = useState(null);
169
- const [searchResultClicked, setSearchResultClicked] = useState(false);
170
170
  const {
171
171
  setOnSearchAsYouTypeParams
172
172
  } = useSearchTrackingContext();
173
173
  const searchAsYouTypeLoader = React.useMemo(() => searchAsYouTypeResults === null ? rndLoader() : null, [searchAsYouTypeResults]);
174
174
  const valueTrimmed = value.trim();
175
- const hasSearchEventAndResultsWithoutClick = onSearchAsYouType && searchAsYouTypeResults && !searchResultClicked;
176
- const closeSearch = async () => {
175
+ const hasSearchEventAndResults = onSearchAsYouType && searchAsYouTypeResults;
176
+ const closeSearch = async (fromResultClick = false) => {
177
177
  // track search event when user made a search and then closed search pane
178
- if (hasSearchEventAndResultsWithoutClick && valueTrimmed.length > 0) {
178
+ if (hasSearchEventAndResults && !fromResultClick && valueTrimmed.length > 0) {
179
179
  const {
180
180
  query,
181
181
  searchId,
@@ -193,7 +193,7 @@ export const SearchPane = ({
193
193
  }
194
194
  }, 10);
195
195
  };
196
- const onKeyDown = useOnEscHandler(closeSearch);
196
+ const onKeyDown = useOnEscHandler(() => closeSearch());
197
197
  const onMouseDownOutside = ({
198
198
  target
199
199
  }) => {
@@ -210,14 +210,12 @@ export const SearchPane = ({
210
210
  };
211
211
  const handleChange = evt => {
212
212
  setValue(evt.target.value);
213
- // reset to false when the search query changes
214
- setSearchResultClicked(false);
215
213
  };
216
214
  const handleSubmit = event => {
217
215
  event.preventDefault();
218
216
 
219
217
  // track search event when the user submits the form to capture complete query
220
- if (hasSearchEventAndResultsWithoutClick) {
218
+ if (hasSearchEventAndResults) {
221
219
  const {
222
220
  query,
223
221
  searchId,
@@ -230,7 +228,7 @@ export const SearchPane = ({
230
228
  };
231
229
  const clearInput = () => {
232
230
  // track search event before user clears input
233
- if (hasSearchEventAndResultsWithoutClick && valueTrimmed.length > 0) {
231
+ if (hasSearchEventAndResults && valueTrimmed.length > 0) {
234
232
  const {
235
233
  query,
236
234
  searchId,
@@ -254,7 +252,7 @@ export const SearchPane = ({
254
252
  // and track search event if user made a search
255
253
  useUrlChangeDetection({
256
254
  onUrlChange: () => {
257
- if (hasSearchEventAndResultsWithoutClick && valueTrimmed.length > 0) {
255
+ if (hasSearchEventAndResults && valueTrimmed.length > 0) {
258
256
  const {
259
257
  query,
260
258
  searchId,
@@ -266,12 +264,6 @@ export const SearchPane = ({
266
264
  toggleSearch();
267
265
  }
268
266
  });
269
- useEffect(() => {
270
- // don't track if a result was clicked or if we don't have search results
271
- if (searchResultClicked || !onSearchAsYouType || !searchAsYouTypeResults || !valueTrimmed.length)
272
- // eslint-disable-next-line no-useless-return
273
- return;
274
- }, [searchResultClicked, searchAsYouTypeResults, valueTrimmed, onSearchAsYouType]);
275
267
  useEffect(() => {
276
268
  inputRef.current?.focus();
277
269
  searchWorker.init();
@@ -291,7 +283,6 @@ export const SearchPane = ({
291
283
  let cancel = false;
292
284
  let clearAutocomplete = true;
293
285
  let clearSearchAsYouType = true;
294
- let searchEventNoResultDelay;
295
286
  const loaderDelay = setTimeout(() => {
296
287
  /*
297
288
  * Wait 10 milliseconds to get a response for worker before showing loaders.
@@ -318,27 +309,15 @@ export const SearchPane = ({
318
309
  resultsCount: results.top.length,
319
310
  queryLoadTime: results.queryLoadTime
320
311
  });
321
-
322
- // track search event with a small delay when there are no results
323
- if (onSearchAsYouType && results.top.length === 0 && !searchResultClicked) {
324
- const {
325
- query,
326
- searchId,
327
- queryLoadTime
328
- } = results;
329
- searchEventNoResultDelay = setTimeout(() => {
330
- if (!cancel) {
331
- onSearchAsYouType(query, searchId, 0, queryLoadTime);
332
- }
333
- }, 300);
334
- }
335
312
  });
336
313
  return () => {
337
314
  cancel = true;
338
315
  clearTimeout(loaderDelay);
339
- clearTimeout(searchEventNoResultDelay);
340
316
  };
341
- }, [valueTrimmed, onSearchAsYouType, searchResultClicked, setOnSearchAsYouTypeParams]);
317
+ }, [valueTrimmed, onSearchAsYouType, setOnSearchAsYouTypeParams]);
318
+ useSearchTracking({
319
+ onSearchAsYouType
320
+ });
342
321
  return /*#__PURE__*/_jsxs(_Fragment, {
343
322
  children: [/*#__PURE__*/_jsx(Box, {
344
323
  "aria-hidden": true,
@@ -351,7 +330,7 @@ export const SearchPane = ({
351
330
  top: `calc(${theme.elements.headerHeight} + 5rem)`,
352
331
  width: 1
353
332
  }), /*#__PURE__*/_jsx(FocusTrap, {
354
- onEscapeKey: closeSearch,
333
+ onEscapeKey: () => closeSearch(),
355
334
  onClickOutside: onMouseDownOutside,
356
335
  allowPageInteraction: true,
357
336
  children: /*#__PURE__*/_jsxs(Box, {
@@ -445,7 +424,6 @@ export const SearchPane = ({
445
424
  tabIndex: 0,
446
425
  onKeyDown: evt => {
447
426
  if (evt.key === 'Enter') {
448
- setSearchResultClicked(true);
449
427
  onTrackingClick('autocomplete_result', {
450
428
  search_id: searchAsYouTypeResults?.searchId ?? '',
451
429
  misc: JSON.stringify({
@@ -453,11 +431,10 @@ export const SearchPane = ({
453
431
  })
454
432
  });
455
433
  navigateToSearch(s.title, searchAsYouTypeResults?.searchId);
456
- closeSearch();
434
+ closeSearch(true);
457
435
  }
458
436
  },
459
437
  onClick: () => {
460
- setSearchResultClicked(true);
461
438
  onTrackingClick('autocomplete_result', {
462
439
  search_id: searchAsYouTypeResults?.searchId ?? '',
463
440
  misc: JSON.stringify({
@@ -465,7 +442,7 @@ export const SearchPane = ({
465
442
  })
466
443
  });
467
444
  navigateToSearch(s.title, searchAsYouTypeResults?.searchId);
468
- closeSearch();
445
+ closeSearch(true);
469
446
  },
470
447
  children: [/*#__PURE__*/_jsx(SemiboldSearchIcon, {
471
448
  mb: 2,
@@ -512,7 +489,6 @@ export const SearchPane = ({
512
489
  role: "link",
513
490
  onKeyDown: evt => {
514
491
  if (evt.key === 'Enter') {
515
- setSearchResultClicked(true);
516
492
  onTrackingClick('search_as_you_type_result', {
517
493
  search_id: searchAsYouTypeResults.searchId,
518
494
  slug: s.slug,
@@ -523,12 +499,11 @@ export const SearchPane = ({
523
499
  position: i
524
500
  })
525
501
  });
526
- closeSearch();
502
+ closeSearch(true);
527
503
  safelyRedirect(s.urlPath);
528
504
  }
529
505
  },
530
506
  onClick: () => {
531
- setSearchResultClicked(true);
532
507
  onTrackingClick('search_as_you_type_result', {
533
508
  search_id: searchAsYouTypeResults.searchId,
534
509
  slug: s.slug,
@@ -539,7 +514,7 @@ export const SearchPane = ({
539
514
  position: i
540
515
  })
541
516
  });
542
- closeSearch();
517
+ closeSearch(true);
543
518
  safelyRedirect(s.urlPath);
544
519
  },
545
520
  children: [/*#__PURE__*/_jsx(HighlightedText, {