@projectcor/maia-components 2.34.3-2 → 2.35.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.
Files changed (63) hide show
  1. package/README.md +2 -0
  2. package/lib/components/atoms/ContextMentionChip/buildChipElement.js +1 -12
  3. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +5 -127
  4. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +29 -2
  5. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +33 -24
  6. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +19 -2
  7. package/lib/components/atoms/MAIAInput/MAIAInput.js +17 -192
  8. package/lib/components/atoms/MAIAInput/styles.js +11 -15
  9. package/lib/components/atoms/icons/SkillsNavIcon.js +7 -4
  10. package/lib/components/atoms/icons/index.js +1 -5
  11. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -5
  12. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +29 -76
  13. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +20 -59
  14. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +5 -10
  15. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +239 -315
  16. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +104 -131
  17. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +3 -1
  18. package/lib/components/molecules/Sidebar/Sidebar.js +4 -5
  19. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +2 -2
  20. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +1 -8
  21. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +222 -377
  22. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +72 -125
  23. package/lib/constants/config.js +4 -1
  24. package/lib/constants/formatExtensions.js +7 -8
  25. package/lib/constants/permissions/utils.js +3 -3
  26. package/lib/dev/DevReasoningTimeline.js +8 -50
  27. package/lib/hooks/useChatManager/useChatManager.js +8 -23
  28. package/lib/hooks/useContextMentions.js +56 -96
  29. package/lib/hooks/useEntitySearch.js +278 -92
  30. package/lib/hooks/useMentionAllowedTypes.js +25 -9
  31. package/lib/hooks/useMentionPopover.js +33 -9
  32. package/lib/hooks/useReasoningTrace/reasoningStore.js +8 -39
  33. package/lib/lang/br/index.js +12 -41
  34. package/lib/lang/en/index.js +12 -41
  35. package/lib/lang/es/index.js +13 -42
  36. package/lib/lang/fr/index.js +12 -41
  37. package/lib/services/maia/Skills/createSkill.js +1 -1
  38. package/lib/services/maia/Skills/getSkills.js +40 -70
  39. package/lib/services/maia/Skills/updateSkill.js +1 -1
  40. package/lib/services/utils/mapChatMessages.js +7 -12
  41. package/lib/store/sessions/sessionStreamManager.js +44 -47
  42. package/lib/types/Chat.js +1 -1
  43. package/lib/types/reasoning.js +1 -1
  44. package/lib/types/skill.js +1 -1
  45. package/lib/utils/contextMentionTriggers.js +5 -2
  46. package/lib/utils/renderContextMentions.js +18 -39
  47. package/lib/utils/skillContentSize.js +9 -0
  48. package/package.json +2 -3
  49. package/CHANGELOG.md +0 -691
  50. package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.js +0 -53
  51. package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.spec.js +0 -107
  52. package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.styles.js +0 -8
  53. package/lib/components/atoms/ContextCompactedNotice/index.js +0 -2
  54. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.js +0 -208
  55. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.styles.js +0 -77
  56. package/lib/components/atoms/SkillsDropdown/index.js +0 -2
  57. package/lib/components/atoms/icons/PlusIcon.js +0 -29
  58. package/lib/components/atoms/icons/SkillCreatedByIcon.js +0 -20
  59. package/lib/components/atoms/icons/SkillVisibilityEveryoneIcon.js +0 -23
  60. package/lib/components/atoms/icons/SkillVisibilityOnlyMeIcon.js +0 -23
  61. package/lib/hooks/useSkillsCatalog.js +0 -66
  62. package/lib/types/contextCompaction.js +0 -48
  63. package/lib/types/jest-dom.d.js +0 -2
package/README.md ADDED
@@ -0,0 +1,2 @@
1
+ # maia-components
2
+ A set of reusable React components designed to interact with our AI-powered services, enabling seamless user experiences with natural language and intelligent task automation.
@@ -9,7 +9,6 @@ import { CONTEXT_MENTION_CHIP_CLASS } from '../../../types/contextMention';
9
9
  import { getContextMentionIcon } from '../../../utils/contextMentionIcons';
10
10
  import { normalizeContextMentionLabel } from '../../../utils/contextMentionLabel';
11
11
  import { openTaskInCorPanel } from '../../../utils/openTaskInCorPanel';
12
- import { SLASH_COMMAND_CHIP_BASE_STYLE } from '../SlashCommandChip/SlashCommandChip.styles';
13
12
  import { applyMentionChipStyles, MENTION_CHIP_COLORS } from './ContextMentionChip.styles';
14
13
  var EDITABLE_NON_TASK_LABEL_STYLE = {
15
14
  display: 'inline',
@@ -341,16 +340,6 @@ export var buildChipElement = function buildChipElement(mention) {
341
340
  chip.className = CONTEXT_MENTION_CHIP_CLASS;
342
341
  chip.setAttribute('data-mention-type', mention.type);
343
342
  chip.setAttribute('data-mention-surface', 'editor');
344
-
345
- // Las skills se ven como los slash commands (texto plano `#nombre`), no como chip con fondo.
346
- if (mention.type === 'skill') {
347
- Object.assign(chip.style, SLASH_COMMAND_CHIP_BASE_STYLE, {
348
- boxSizing: 'border-box',
349
- maxWidth: '100%'
350
- });
351
- chip.textContent = normalizeContextMentionLabel(mention.label);
352
- return chip;
353
- }
354
343
  applyMentionChipStyles(chip, mention.type);
355
344
  var isTask = mention.type === 'task';
356
345
  var common = {
@@ -442,4 +431,4 @@ export var buildChipElement = function buildChipElement(mention) {
442
431
  }
443
432
  return chip;
444
433
  };
445
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVFbGVtZW50IiwiZmx1c2hTeW5jIiwiY3JlYXRlUm9vdCIsImkxOG4iLCJDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTUyIsImdldENvbnRleHRNZW50aW9uSWNvbiIsIm5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwiLCJvcGVuVGFza0luQ29yUGFuZWwiLCJTTEFTSF9DT01NQU5EX0NISVBfQkFTRV9TVFlMRSIsImFwcGx5TWVudGlvbkNoaXBTdHlsZXMiLCJNRU5USU9OX0NISVBfQ09MT1JTIiwiRURJVEFCTEVfTk9OX1RBU0tfTEFCRUxfU1RZTEUiLCJkaXNwbGF5IiwibGluZUhlaWdodCIsImFsaWduU2VsZiIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJ3aGl0ZVNwYWNlIiwib3ZlcmZsb3dXcmFwIiwid29yZEJyZWFrIiwiRURJVEFCTEVfVEFTS19MQUJFTF9TVFlMRSIsImZvbnRTaXplIiwiZm9udFdlaWdodCIsImNvbG9yIiwiY3JlYXRlRWRpdGFibGVNZW50aW9uTGFiZWxFbCIsImlzVGFzayIsIm1lbnRpb25MYWJlbCIsInN0eWxlIiwic3BsaXRMYWJlbEZpcnN0V29yZCIsImxhYmVsIiwibm9ybWFsaXplZCIsInRyaW0iLCJmaXJzdFdvcmQiLCJyZXN0IiwiZmlyc3RXaGl0ZXNwYWNlSWR4Iiwic2VhcmNoIiwic2xpY2UiLCJFZGl0YWJsZU1lbnRpb25DaGlwIiwiX3JlZiIsIm1lbnRpb24iLCJpY29uQ29sb3IiLCJ0eXBlIiwiZmciLCJpc1Byb2plY3QiLCJpY29uU2l6ZSIsImxhYmVsRWwiLCJvdXRlclN0eWxlIiwicG9zaXRpb24iLCJib3hTaXppbmciLCJ2ZXJ0aWNhbEFsaWduIiwiX3NwbGl0TGFiZWxGaXJzdFdvcmQiLCJsZWFkaW5nU3R5bGUiLCJhbGlnbkl0ZW1zIiwibGVhZGluZ1dvcmRTdHlsZSIsIl9vYmplY3RTcHJlYWQiLCJyZXN0U3R5bGUiLCJtYXJnaW5SaWdodCIsIndpZHRoIiwiaWQiLCJpbml0aWFsc0Zyb21OYW1lIiwibmFtZSIsIl9wYXJ0cyQyIiwidHJpbW1lZCIsInBhcnRzIiwic3BsaXQiLCJmaWx0ZXIiLCJCb29sZWFuIiwibGVuZ3RoIiwiX3BhcnRzJDAkY2hhckF0IiwiX3BhcnRzJCIsIl9wYXJ0cyRjaGFyQXQiLCJfcGFydHMiLCJmaXJzdCIsImNoYXJBdCIsImxhc3QiLCJjb25jYXQiLCJ0b1VwcGVyQ2FzZSIsInNpbmdsZSIsIlRPT0xUSVBfRk9OVCIsIlRPT0xUSVBfU0VDT05EQVJZX0NPTE9SIiwiVE9PTFRJUF9TRUNPTkRBUllfU1RZTEUiLCJmb250RmFtaWx5Iiwibm9ybWFsaXplVHJpbW1lZFN0cmluZyIsInZhbHVlIiwiVVNFUl9UT09MVElQX01JTl9XSURUSF9QWCIsIlVTRVJfVE9PTFRJUF9QQURfWF9QWCIsIlVTRVJfVE9PTFRJUF9BVkFUQVJfR0FQX1BYIiwiVVNFUl9UT09MVElQX05BTUVfUk9XX01BWF9QWCIsIlVTRVJfVE9PTFRJUF9OQU1FX01BWF9XSURUSF9QWCIsIk1hdGgiLCJmbG9vciIsImNyZWF0ZVVzZXJUb29sdGlwRWwiLCJtZXRhZGF0YSIsInBpY3R1cmUiLCJwb3NpdGlvbk5hbWUiLCJwb3NpdGlvbkxpbmUiLCJ0IiwiZGVmYXVsdFZhbHVlIiwiZW1haWwiLCJtZXRhZGF0YU5hbWUiLCJuYW1lRm9ySW5pdGlhbHMiLCJ0b29sdGlwIiwiZG9jdW1lbnQiLCJPYmplY3QiLCJhc3NpZ24iLCJ6SW5kZXgiLCJwYWRkaW5nIiwiZmxleERpcmVjdGlvbiIsImJvcmRlclJhZGl1cyIsImJvcmRlciIsImJhY2tncm91bmQiLCJib3hTaGFkb3ciLCJwb2ludGVyRXZlbnRzIiwib3ZlcmZsb3ciLCJyb3ciLCJnYXAiLCJhdmF0YXJXcmFwIiwiaGVpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJmbGV4U2hyaW5rIiwiaW5pdGlhbHMiLCJjcmVhdGVJbml0aWFsc0ZhbGxiYWNrIiwiZmIiLCJ0ZXh0Q29udGVudCIsImltZyIsInNyYyIsImFsdCIsImRyYWdnYWJsZSIsIm9iamVjdEZpdCIsIm9uZXJyb3IiLCJyZW1vdmUiLCJhcHBlbmRDaGlsZCIsImluZm9Db2wiLCJuYW1lUm93IiwibmFtZVNwYW4iLCJmbGV4IiwidGV4dE92ZXJmbG93Iiwic2VwIiwicG9zU3BhbiIsImVtYWlsU3BhbiIsImJ1aWxkQ2hpcEVsZW1lbnQiLCJjaGlwIiwic2V0QXR0cmlidXRlIiwiY2xhc3NOYW1lIiwiY29tbW9uIiwibWluSGVpZ2h0IiwibWF4SGVpZ2h0IiwibW91bnROb2RlIiwicm9vdCIsInJlbmRlciIsImN1cnNvciIsIm9uY2xpY2siLCJlIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJ3aW5kb3ciLCJvcGVuIiwidG9vbHRpcEVsIiwiY2hpcFJlbW92ZWRPYnNlcnZlciIsInJlbW92ZVVzZXJUb29sdGlwIiwiX2NoaXBSZW1vdmVkT2JzZXJ2ZXIiLCJkaXNjb25uZWN0Iiwid2F0Y2hDaGlwUmVtb3ZlZEZyb21Eb20iLCJfY2hpcFJlbW92ZWRPYnNlcnZlcjIiLCJwYXJlbnQiLCJwYXJlbnROb2RlIiwiTXV0YXRpb25PYnNlcnZlciIsImlzQ29ubmVjdGVkIiwib2JzZXJ2ZSIsImNoaWxkTGlzdCIsInN1YnRyZWUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImxlZnQiLCJtYXgiLCJtaW4iLCJpbm5lcldpZHRoIiwidG9wIiwidHJhbnNmb3JtIiwiYm9keSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uQ2hpcC9idWlsZENoaXBFbGVtZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIHR5cGUgQ1NTUHJvcGVydGllcyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgZmx1c2hTeW5jIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgY3JlYXRlUm9vdCB9IGZyb20gJ3JlYWN0LWRvbS9jbGllbnQnXG5pbXBvcnQgaTE4biBmcm9tICcuLi8uLi8uLi9sYW5nJ1xuaW1wb3J0IHsgQ09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1MsIENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBnZXRDb250ZXh0TWVudGlvbkljb24gfSBmcm9tICcuLi8uLi8uLi91dGlscy9jb250ZXh0TWVudGlvbkljb25zJ1xuaW1wb3J0IHsgbm9ybWFsaXplQ29udGV4dE1lbnRpb25MYWJlbCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NvbnRleHRNZW50aW9uTGFiZWwnXG5pbXBvcnQgeyBvcGVuVGFza0luQ29yUGFuZWwgfSBmcm9tICcuLi8uLi8uLi91dGlscy9vcGVuVGFza0luQ29yUGFuZWwnXG5pbXBvcnQgeyBTTEFTSF9DT01NQU5EX0NISVBfQkFTRV9TVFlMRSB9IGZyb20gJy4uL1NsYXNoQ29tbWFuZENoaXAvU2xhc2hDb21tYW5kQ2hpcC5zdHlsZXMnXG5pbXBvcnQgeyBhcHBseU1lbnRpb25DaGlwU3R5bGVzLCBNRU5USU9OX0NISVBfQ09MT1JTIH0gZnJvbSAnLi9Db250ZXh0TWVudGlvbkNoaXAuc3R5bGVzJ1xuXG5jb25zdCBFRElUQUJMRV9OT05fVEFTS19MQUJFTF9TVFlMRTogQ1NTUHJvcGVydGllcyA9IHtcbiAgZGlzcGxheTogJ2lubGluZScsXG4gIGxpbmVIZWlnaHQ6ICcyMHB4JyxcbiAgYWxpZ25TZWxmOiAnYmFzZWxpbmUnLFxuICBtaW5XaWR0aDogMCxcbiAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgd2hpdGVTcGFjZTogJ25vcm1hbCcsXG4gIG92ZXJmbG93V3JhcDogJ2JyZWFrLXdvcmQnLFxuICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbn1cblxuLyoqIFRleHRvIGRlIHRhcmVhOiBzaW4gYm9yZGUgaW5mZXJpb3I7IGVsIGFzcGVjdG8gZGUgZW5sYWNlIGxvIGRhIGVsIENTUyBnbG9iYWwgKDo6YmVmb3JlICsgY29sb3IpLiAqL1xuY29uc3QgRURJVEFCTEVfVEFTS19MQUJFTF9TVFlMRTogQ1NTUHJvcGVydGllcyA9IHtcbiAgZGlzcGxheTogJ2lubGluZScsXG4gIGZvbnRTaXplOiAnMTRweCcsXG4gIGxpbmVIZWlnaHQ6ICcyMHB4JyxcbiAgZm9udFdlaWdodDogJzYwMCcsXG4gIGNvbG9yOiAnaW5oZXJpdCcsXG4gIG1pbldpZHRoOiAwLFxuICBtYXhXaWR0aDogJzEwMCUnLFxuICB3aGl0ZVNwYWNlOiAnbm9ybWFsJyxcbiAgb3ZlcmZsb3dXcmFwOiAnYnJlYWstd29yZCcsXG4gIHdvcmRCcmVhazogJ2JyZWFrLXdvcmQnLFxufVxuXG5jb25zdCBjcmVhdGVFZGl0YWJsZU1lbnRpb25MYWJlbEVsID0gKGlzVGFzazogYm9vbGVhbiwgbWVudGlvbkxhYmVsOiBzdHJpbmcpID0+IHtcbiAgaWYgKCFpc1Rhc2spIHtcbiAgICByZXR1cm4gY3JlYXRlRWxlbWVudCgnc3BhbicsIHsgc3R5bGU6IEVESVRBQkxFX05PTl9UQVNLX0xBQkVMX1NUWUxFIH0sIG1lbnRpb25MYWJlbClcbiAgfVxuICByZXR1cm4gY3JlYXRlRWxlbWVudCgnc3BhbicsIHsgc3R5bGU6IEVESVRBQkxFX1RBU0tfTEFCRUxfU1RZTEUgfSwgbWVudGlvbkxhYmVsKVxufVxuXG5jb25zdCBzcGxpdExhYmVsRmlyc3RXb3JkID0gKGxhYmVsOiBzdHJpbmcpOiB7IGZpcnN0V29yZDogc3RyaW5nOyByZXN0OiBzdHJpbmcgfSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBsYWJlbC50cmltKClcbiAgaWYgKCFub3JtYWxpemVkKSByZXR1cm4geyBmaXJzdFdvcmQ6ICcnLCByZXN0OiAnJyB9XG4gIGNvbnN0IGZpcnN0V2hpdGVzcGFjZUlkeCA9IG5vcm1hbGl6ZWQuc2VhcmNoKC9cXHMvKVxuICBpZiAoZmlyc3RXaGl0ZXNwYWNlSWR4IDwgMCkgcmV0dXJuIHsgZmlyc3RXb3JkOiBub3JtYWxpemVkLCByZXN0OiAnJyB9XG4gIHJldHVybiB7XG4gICAgZmlyc3RXb3JkOiBub3JtYWxpemVkLnNsaWNlKDAsIGZpcnN0V2hpdGVzcGFjZUlkeCksXG4gICAgcmVzdDogbm9ybWFsaXplZC5zbGljZShmaXJzdFdoaXRlc3BhY2VJZHgpLFxuICB9XG59XG5cbnR5cGUgRWRpdGFibGVNZW50aW9uQ2hpcFByb3BzID0ge1xuICBtZW50aW9uOiBDb250ZXh0TWVudGlvblxufVxuXG5jb25zdCBFZGl0YWJsZU1lbnRpb25DaGlwID0gKHsgbWVudGlvbiB9OiBFZGl0YWJsZU1lbnRpb25DaGlwUHJvcHMpID0+IHtcbiAgY29uc3QgbWVudGlvbkxhYmVsID0gbm9ybWFsaXplQ29udGV4dE1lbnRpb25MYWJlbChtZW50aW9uLmxhYmVsKVxuICBjb25zdCBpY29uQ29sb3IgPSBNRU5USU9OX0NISVBfQ09MT1JTW21lbnRpb24udHlwZV0uZmdcbiAgY29uc3QgaXNUYXNrID0gbWVudGlvbi50eXBlID09PSAndGFzaydcbiAgY29uc3QgaXNQcm9qZWN0ID0gbWVudGlvbi50eXBlID09PSAncHJvamVjdCdcbiAgY29uc3QgaWNvblNpemUgPSBpc1Rhc2sgPyAxNiA6IDE0XG4gIGNvbnN0IGxhYmVsRWwgPSBjcmVhdGVFZGl0YWJsZU1lbnRpb25MYWJlbEVsKGlzVGFzaywgbWVudGlvbkxhYmVsKVxuXG4gIGNvbnN0IG91dGVyU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgZGlzcGxheTogJ2lubGluZScsXG4gICAgbGluZUhlaWdodDogJzIwcHgnLFxuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIHZlcnRpY2FsQWxpZ246ICdiYXNlbGluZScsXG4gICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgfVxuXG4gIGlmIChpc1Rhc2sgfHwgaXNQcm9qZWN0KSB7XG4gICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoJ3NwYW4nLCB7IHN0eWxlOiBvdXRlclN0eWxlIH0sIGxhYmVsRWwpXG4gIH1cblxuICBjb25zdCB7IGZpcnN0V29yZCwgcmVzdCB9ID0gc3BsaXRMYWJlbEZpcnN0V29yZChtZW50aW9uTGFiZWwpXG4gIGNvbnN0IGxlYWRpbmdTdHlsZTogQ1NTUHJvcGVydGllcyA9IHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIG1heFdpZHRoOiAnMTAwJScsXG4gIH1cbiAgY29uc3QgbGVhZGluZ1dvcmRTdHlsZTogQ1NTUHJvcGVydGllcyA9IHtcbiAgICAuLi5FRElUQUJMRV9OT05fVEFTS19MQUJFTF9TVFlMRSxcbiAgICBkaXNwbGF5OiAnaW5saW5lJyxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgfVxuICBjb25zdCByZXN0U3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgLi4uRURJVEFCTEVfTk9OX1RBU0tfTEFCRUxfU1RZTEUsXG4gICAgZGlzcGxheTogJ2lubGluZScsXG4gICAgdmVydGljYWxBbGlnbjogJ21pZGRsZScsXG4gIH1cblxuICByZXR1cm4gY3JlYXRlRWxlbWVudChcbiAgICAnc3BhbicsXG4gICAgeyBzdHlsZTogb3V0ZXJTdHlsZSB9LFxuICAgIGNyZWF0ZUVsZW1lbnQoXG4gICAgICAnc3BhbicsXG4gICAgICB7IHN0eWxlOiBsZWFkaW5nU3R5bGUgfSxcbiAgICAgIGNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICdzcGFuJyxcbiAgICAgICAge1xuICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgICAgICAgIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuICAgICAgICAgICAgbWFyZ2luUmlnaHQ6ICcycHgnLFxuICAgICAgICAgICAgbGluZUhlaWdodDogJzEnLFxuICAgICAgICAgICAgd2lkdGg6ICcxNHB4JyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBnZXRDb250ZXh0TWVudGlvbkljb24obWVudGlvbi50eXBlLCBpY29uQ29sb3IsIG1lbnRpb24uaWQsIGljb25TaXplKVxuICAgICAgKSxcbiAgICAgIGNyZWF0ZUVsZW1lbnQoJ3NwYW4nLCB7IHN0eWxlOiBsZWFkaW5nV29yZFN0eWxlIH0sIGZpcnN0V29yZClcbiAgICApLFxuICAgIHJlc3QgPyBjcmVhdGVFbGVtZW50KCdzcGFuJywgeyBzdHlsZTogcmVzdFN0eWxlIH0sIHJlc3QpIDogbnVsbFxuICApXG59XG5cbmNvbnN0IGluaXRpYWxzRnJvbU5hbWUgPSAobmFtZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgdHJpbW1lZCA9IG5hbWUudHJpbSgpXG4gIGlmICghdHJpbW1lZCkgcmV0dXJuICc/J1xuICBjb25zdCBwYXJ0cyA9IHRyaW1tZWQuc3BsaXQoL1xccysvKS5maWx0ZXIoQm9vbGVhbilcbiAgaWYgKHBhcnRzLmxlbmd0aCA+PSAyKSB7XG4gICAgY29uc3QgZmlyc3QgPSBwYXJ0c1swXT8uY2hhckF0KDApID8/ICcnXG4gICAgY29uc3QgbGFzdCA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdPy5jaGFyQXQoMCkgPz8gJydcbiAgICByZXR1cm4gYCR7Zmlyc3R9JHtsYXN0fWAudG9VcHBlckNhc2UoKVxuICB9XG4gIGNvbnN0IHNpbmdsZSA9IHBhcnRzWzBdID8/ICcnXG4gIHJldHVybiBzaW5nbGUubGVuZ3RoID49IDIgPyBzaW5nbGUuc2xpY2UoMCwgMikudG9VcHBlckNhc2UoKSA6IChzaW5nbGUuY2hhckF0KDApIHx8ICc/JykudG9VcHBlckNhc2UoKVxufVxuXG5jb25zdCBUT09MVElQX0ZPTlQgPSBgdmFyKC0tY29yLXR5cG9ncmFwaHktZm9udC1mYW1pbHksICdXb3JrIFNhbnMnKWBcbmNvbnN0IFRPT0xUSVBfU0VDT05EQVJZX0NPTE9SID0gJ3ZhcigtLVRleHQtU2Vjb25kYXJ5LURhcmssICM2NjYpJ1xuY29uc3QgVE9PTFRJUF9TRUNPTkRBUllfU1RZTEUgPSB7XG4gIGZvbnRGYW1pbHk6IFRPT0xUSVBfRk9OVCxcbiAgZm9udFNpemU6ICcxNHB4JyxcbiAgZm9udFdlaWdodDogJzQwMCcsXG4gIGxpbmVIZWlnaHQ6ICcyMHB4JyxcbiAgY29sb3I6IFRPT0xUSVBfU0VDT05EQVJZX0NPTE9SLFxufVxuXG5jb25zdCBub3JtYWxpemVUcmltbWVkU3RyaW5nID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHJldHVybiAnJ1xuICByZXR1cm4gdmFsdWUudHJpbSgpXG59XG5cbi8qKiBBbmNobyBtw61uaW1vIGRlbCB0b29sdGlwIChpbmNsLiBwYWRkaW5nIGhvcml6b250YWwgOCs4KS4gKi9cbmNvbnN0IFVTRVJfVE9PTFRJUF9NSU5fV0lEVEhfUFggPSAyOTJcbi8qKiBQYWRkaW5nIGhvcml6b250YWwgdG90YWwgZGVsIHRvb2x0aXAuICovXG5jb25zdCBVU0VSX1RPT0xUSVBfUEFEX1hfUFggPSAxNlxuLyoqIEF2YXRhciAyNHB4ICsgZ2FwIDhweCByZXNwZWN0byBhIGxhIGNvbHVtbmEgZGUgdGV4dG8uICovXG5jb25zdCBVU0VSX1RPT0xUSVBfQVZBVEFSX0dBUF9QWCA9IDMyXG4vKipcbiAqIEFuY2hvIG3DoXhpbW8gZGUgbGEgZmlsYSBub21icmUgfCBwb3NpY2nDs246IG1pc21vIGh1ZWNvIHF1ZSBjb24gdG9vbHRpcCBmaWpvIDI5MnB4LFxuICogcGFyYSBxdWUgc29sbyBlbCBlbWFpbCBlbnNhbmNoZSBlbCBjb250ZW5lZG9yLlxuICovXG5jb25zdCBVU0VSX1RPT0xUSVBfTkFNRV9ST1dfTUFYX1BYID0gVVNFUl9UT09MVElQX01JTl9XSURUSF9QWCAtIFVTRVJfVE9PTFRJUF9QQURfWF9QWCAtIFVTRVJfVE9PTFRJUF9BVkFUQVJfR0FQX1BYXG4vKipcbiAqIFRvcGUgZGUgYW5jaG8gZGVsIG5vbWJyZSBlbiBsYSBmaWxhOiBwb3IgZGViYWpvIGRlbCBtw6F4aW1vIGRlIGZpbGEgcGFyYSBxdWUgZWwgZWxsaXBzaXNcbiAqIGRlbCBub21icmUgYXBhcmV6Y2EgYW50ZXMgeSBxdWVkZSBtw6FzIGVzcGFjaW8gdmlzaWJsZSBwYXJhIHBvc2ljacOzbi9jYXJnby5cbiAqL1xuY29uc3QgVVNFUl9UT09MVElQX05BTUVfTUFYX1dJRFRIX1BYID0gTWF0aC5mbG9vcihVU0VSX1RPT0xUSVBfTkFNRV9ST1dfTUFYX1BYICogMC40MilcblxuY29uc3QgY3JlYXRlVXNlclRvb2x0aXBFbCA9IChtZW50aW9uOiBDb250ZXh0TWVudGlvbik6IEhUTUxFbGVtZW50ID0+IHtcbiAgY29uc3QgeyBsYWJlbCwgbWV0YWRhdGEgfSA9IG1lbnRpb25cbiAgY29uc3QgcGljdHVyZSA9IHR5cGVvZiBtZXRhZGF0YT8ucGljdHVyZSA9PT0gJ3N0cmluZycgPyBtZXRhZGF0YS5waWN0dXJlIDogbnVsbFxuICBjb25zdCBwb3NpdGlvbk5hbWUgPSBub3JtYWxpemVUcmltbWVkU3RyaW5nKG1ldGFkYXRhPy5wb3NpdGlvbk5hbWUpXG4gIGNvbnN0IHBvc2l0aW9uTGluZSA9XG4gICAgcG9zaXRpb25OYW1lIHx8XG4gICAgaTE4bi50KCdjb250ZXh0TWVudGlvbi51c2VyTm9Qb3NpdGlvbicsIHtcbiAgICAgIGRlZmF1bHRWYWx1ZTogJ1NpbiBwb3NpY2nDs24nLFxuICAgIH0pXG4gIGNvbnN0IGVtYWlsID0gbm9ybWFsaXplVHJpbW1lZFN0cmluZyhtZXRhZGF0YT8uZW1haWwpXG4gIC8qKiBNaXNtYSBmdWVudGUgcXVlIGBDb250ZXh0TWVudGlvbkl0ZW1gIChhdmF0YXIpOiBub21icmUgZGUgcXVlcnksIG5vIGVsIGxhYmVsIGRlbCBjaGlwIChlai4gXCJZb1wiKS4gKi9cbiAgY29uc3QgbWV0YWRhdGFOYW1lID0gbm9ybWFsaXplVHJpbW1lZFN0cmluZyhtZXRhZGF0YT8ubmFtZSlcbiAgY29uc3QgbmFtZUZvckluaXRpYWxzID0gKG1ldGFkYXRhTmFtZSB8fCBub3JtYWxpemVUcmltbWVkU3RyaW5nKGxhYmVsKSB8fCAnPycpLnRyaW0oKVxuXG4gIGNvbnN0IHRvb2x0aXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICBPYmplY3QuYXNzaWduKHRvb2x0aXAuc3R5bGUsIHtcbiAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICB6SW5kZXg6ICc5OTk5JyxcbiAgICBtaW5XaWR0aDogYCR7VVNFUl9UT09MVElQX01JTl9XSURUSF9QWH1weGAsXG4gICAgd2lkdGg6ICdtYXgtY29udGVudCcsXG4gICAgbWF4V2lkdGg6ICdtaW4oNTYwcHgsIGNhbGMoMTAwdncgLSAyNHB4KSknLFxuICAgIHBhZGRpbmc6ICcxMnB4IDhweCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIGFsaWduSXRlbXM6ICdmbGV4LXN0YXJ0JyxcbiAgICBib3JkZXJSYWRpdXM6ICc0cHgnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCB2YXIoLS1Db2xvci1MaWdodC1HcmF5LCAjRTBFMEUwKScsXG4gICAgYmFja2dyb3VuZDogJyNGRkYnLFxuICAgIGJveFNoYWRvdzogJzAgMXB4IDRweCAwIHJnYmEoMCwwLDAsMC4wOCksIDAgMXB4IDRweCAwIHJnYmEoMCwwLDAsMC4wNCknLFxuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gIH0pXG5cbiAgY29uc3Qgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgT2JqZWN0LmFzc2lnbihyb3cuc3R5bGUsIHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgZ2FwOiAnOHB4JyxcbiAgICB3aWR0aDogJ21heC1jb250ZW50JyxcbiAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgIG1pbldpZHRoOiAnMCcsXG4gIH0pXG5cbiAgLy8gQXZhdGFyIGNpcmN1bGFyIChmb3RvIG8gaW5pY2lhbGVzKVxuICBjb25zdCBhdmF0YXJXcmFwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgT2JqZWN0LmFzc2lnbihhdmF0YXJXcmFwLnN0eWxlLCB7XG4gICAgd2lkdGg6ICcyNHB4JyxcbiAgICBoZWlnaHQ6ICcyNHB4JyxcbiAgICBtaW5XaWR0aDogJzI0cHgnLFxuICAgIGJvcmRlclJhZGl1czogJzI0cHgnLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgIC8qKiBNaXNtbyBmb25kbyBxdWUgYFNDTVVzZXJBdmF0YXJGYWxsYmFja2AgZW4gbGEgZmlsYSBkZSB1c3VhcmlvIGRlbCBtb2RhbC4gKi9cbiAgICBiYWNrZ3JvdW5kOiAndmFyKC0tY29yLWNvbG9yLWdyZXktMjAwLCAjZTBlMGUwKScsXG4gICAgZmxleFNocmluazogJzAnLFxuICB9KVxuXG4gIGNvbnN0IGluaXRpYWxzID0gaW5pdGlhbHNGcm9tTmFtZShuYW1lRm9ySW5pdGlhbHMpXG5cbiAgY29uc3QgY3JlYXRlSW5pdGlhbHNGYWxsYmFjayA9ICgpOiBIVE1MRWxlbWVudCA9PiB7XG4gICAgY29uc3QgZmIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJylcbiAgICBmYi50ZXh0Q29udGVudCA9IGluaXRpYWxzXG4gICAgT2JqZWN0LmFzc2lnbihmYi5zdHlsZSwge1xuICAgICAgZm9udFNpemU6ICcxMHB4JyxcbiAgICAgIGZvbnRXZWlnaHQ6ICc2MDAnLFxuICAgICAgLyoqIE1pc21vIGNvbG9yIHF1ZSBgU0NNVXNlckF2YXRhckZhbGxiYWNrYCBlbiBsYSBmaWxhIGRlIHVzdWFyaW8gZGVsIG1vZGFsLiAqL1xuICAgICAgY29sb3I6ICd2YXIoLS1jb3ItY29sb3ItdGV4dC1zZWNvbmRhcnksICM2NjYpJyxcbiAgICAgIGxpbmVIZWlnaHQ6ICcxJyxcbiAgICAgIGZvbnRGYW1pbHk6IFRPT0xUSVBfRk9OVCxcbiAgICB9KVxuICAgIHJldHVybiBmYlxuICB9XG5cbiAgaWYgKHBpY3R1cmUpIHtcbiAgICBjb25zdCBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKVxuICAgIGltZy5zcmMgPSBwaWN0dXJlXG4gICAgaW1nLmFsdCA9ICcnXG4gICAgaW1nLmRyYWdnYWJsZSA9IGZhbHNlXG4gICAgT2JqZWN0LmFzc2lnbihpbWcuc3R5bGUsIHtcbiAgICAgIHdpZHRoOiAnMjRweCcsXG4gICAgICBoZWlnaHQ6ICcyNHB4JyxcbiAgICAgIG9iamVjdEZpdDogJ2NvdmVyJyxcbiAgICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgICBib3JkZXJSYWRpdXM6ICcyNHB4JyxcbiAgICB9KVxuICAgIGltZy5vbmVycm9yID0gKCkgPT4ge1xuICAgICAgaW1nLnJlbW92ZSgpXG4gICAgICBhdmF0YXJXcmFwLmFwcGVuZENoaWxkKGNyZWF0ZUluaXRpYWxzRmFsbGJhY2soKSlcbiAgICB9XG4gICAgYXZhdGFyV3JhcC5hcHBlbmRDaGlsZChpbWcpXG4gIH0gZWxzZSB7XG4gICAgYXZhdGFyV3JhcC5hcHBlbmRDaGlsZChjcmVhdGVJbml0aWFsc0ZhbGxiYWNrKCkpXG4gIH1cblxuICAvLyBDb2x1bW5hIGRlIGluZm86IGFuY2hvID0gbWF4KGZpbGEgbm9tYnJlLCBlbWFpbCk7IHNpbiBmb3J6YXIgMjQ0cHggc2kgZWwgY29udGVuaWRvIGVzIG3DoXMgY29ydG8uXG4gIGNvbnN0IGluZm9Db2wgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICBPYmplY3QuYXNzaWduKGluZm9Db2wuc3R5bGUsIHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgIGFsaWduSXRlbXM6ICdmbGV4LXN0YXJ0JyxcbiAgICBnYXA6ICcycHgnLFxuICAgIG1pbldpZHRoOiAnMCcsXG4gICAgd2lkdGg6ICdtYXgtY29udGVudCcsXG4gICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgfSlcblxuICAvLyBGaWxhOiBub21icmUgfCBwb3NpY2nDs24g4oCUIG1heC1jb250ZW50IHBhcmEgbm8gZGVqYXIgaHVlY28gZW50cmUgbm9tYnJlIGNvcnRvIHkgZWwgcGlwZSAoZXZpdGFyIGZsZXggNTAvNTApLlxuICBjb25zdCBuYW1lUm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgT2JqZWN0LmFzc2lnbihuYW1lUm93LnN0eWxlLCB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGFsaWduSXRlbXM6ICdmbGV4LXN0YXJ0JyxcbiAgICBnYXA6ICc0cHgnLFxuICAgIG1pbldpZHRoOiAnMCcsXG4gICAgd2lkdGg6ICdtYXgtY29udGVudCcsXG4gICAgbWF4V2lkdGg6IGAke1VTRVJfVE9PTFRJUF9OQU1FX1JPV19NQVhfUFh9cHhgLFxuICB9KVxuXG4gIGNvbnN0IG5hbWVTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXG4gIG5hbWVTcGFuLnRleHRDb250ZW50ID0gbGFiZWxcbiAgT2JqZWN0LmFzc2lnbihuYW1lU3Bhbi5zdHlsZSwge1xuICAgIGZsZXg6ICcwIDEgYXV0bycsXG4gICAgbWluV2lkdGg6ICcwJyxcbiAgICBtYXhXaWR0aDogYCR7VVNFUl9UT09MVElQX05BTUVfTUFYX1dJRFRIX1BYfXB4YCxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIGNvbG9yOiAndmFyKC0tVGV4dC1QcmltYXJ5LURhcmssICMyMDIwMUYpJyxcbiAgICBmb250RmFtaWx5OiBUT09MVElQX0ZPTlQsXG4gICAgZm9udFNpemU6ICcxNHB4JyxcbiAgICBmb250V2VpZ2h0OiAnNTAwJyxcbiAgICBsaW5lSGVpZ2h0OiAnMTMwJScsXG4gIH0pXG4gIG5hbWVSb3cuYXBwZW5kQ2hpbGQobmFtZVNwYW4pXG5cbiAgY29uc3Qgc2VwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXG4gIHNlcC50ZXh0Q29udGVudCA9ICd8J1xuICBPYmplY3QuYXNzaWduKHNlcC5zdHlsZSwgeyAuLi5UT09MVElQX1NFQ09OREFSWV9TVFlMRSwgZmxleFNocmluazogJzAnIH0pXG4gIG5hbWVSb3cuYXBwZW5kQ2hpbGQoc2VwKVxuXG4gIGNvbnN0IHBvc1NwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJylcbiAgcG9zU3Bhbi50ZXh0Q29udGVudCA9IHBvc2l0aW9uTGluZVxuICBPYmplY3QuYXNzaWduKHBvc1NwYW4uc3R5bGUsIHtcbiAgICAuLi5UT09MVElQX1NFQ09OREFSWV9TVFlMRSxcbiAgICBmbGV4OiAnMCAxIGF1dG8nLFxuICAgIG1pbldpZHRoOiAnMCcsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgfSlcbiAgbmFtZVJvdy5hcHBlbmRDaGlsZChwb3NTcGFuKVxuXG4gIGluZm9Db2wuYXBwZW5kQ2hpbGQobmFtZVJvdylcblxuICBpZiAoZW1haWwpIHtcbiAgICBjb25zdCBlbWFpbFNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJylcbiAgICBlbWFpbFNwYW4udGV4dENvbnRlbnQgPSBlbWFpbFxuICAgIE9iamVjdC5hc3NpZ24oZW1haWxTcGFuLnN0eWxlLCB7XG4gICAgICAuLi5UT09MVElQX1NFQ09OREFSWV9TVFlMRSxcbiAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgICB9KVxuICAgIGluZm9Db2wuYXBwZW5kQ2hpbGQoZW1haWxTcGFuKVxuICB9XG5cbiAgcm93LmFwcGVuZENoaWxkKGF2YXRhcldyYXApXG4gIHJvdy5hcHBlbmRDaGlsZChpbmZvQ29sKVxuICB0b29sdGlwLmFwcGVuZENoaWxkKHJvdylcblxuICByZXR1cm4gdG9vbHRpcFxufVxuXG4vKipcbiAqIENyZWEgdW4gYDxzcGFuPmAgYXTDs21pY28gbGlzdG8gcGFyYSBpbnNlcnRhcnNlIGRlbnRybyBkZWwgY29udGVudGVkaXRhYmxlXG4gKiBkZWwgYENvbnRleHRNZW50aW9uRWRpdG9yYC4gU2UgbWFyY2EgY29uIGxvcyBgZGF0YS1tZW50aW9uKmAgbmVjZXNhcmlvcyBwYXJhXG4gKiBxdWUgYHVzZUNvbnRleHRNZW50aW9ucy5zZXJpYWxpemUoKWAgcHVlZGEgdm9sdmVyIGEgZXh0cmFlciBsYSBtZW50aW9uLlxuICpcbiAqIENvbXBhcnRlIGxvcyBlc3RpbG9zIGNvbiBlbCBjb21wb25lbnRlIGBDb250ZXh0TWVudGlvbkNoaXBgIHZpYVxuICogYGFwcGx5TWVudGlvbkNoaXBTdHlsZXNgLCBhc2VndXJhbmRvIHVuYSDDum5pY2EgZnVlbnRlIGRlIHZlcmRhZCB2aXN1YWwuXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZENoaXBFbGVtZW50ID0gKG1lbnRpb246IENvbnRleHRNZW50aW9uKTogSFRNTFNwYW5FbGVtZW50ID0+IHtcbiAgY29uc3QgY2hpcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxuICBjaGlwLnNldEF0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJywgJ2ZhbHNlJylcbiAgY2hpcC5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVudGlvbi1jaGlwJywgJ3RydWUnKVxuICBjaGlwLmNsYXNzTmFtZSA9IENPTlRFWFRfTUVOVElPTl9DSElQX0NMQVNTXG4gIGNoaXAuc2V0QXR0cmlidXRlKCdkYXRhLW1lbnRpb24tdHlwZScsIG1lbnRpb24udHlwZSlcbiAgY2hpcC5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVudGlvbi1zdXJmYWNlJywgJ2VkaXRvcicpXG5cbiAgLy8gTGFzIHNraWxscyBzZSB2ZW4gY29tbyBsb3Mgc2xhc2ggY29tbWFuZHMgKHRleHRvIHBsYW5vIGAjbm9tYnJlYCksIG5vIGNvbW8gY2hpcCBjb24gZm9uZG8uXG4gIGlmIChtZW50aW9uLnR5cGUgPT09ICdza2lsbCcpIHtcbiAgICBPYmplY3QuYXNzaWduKGNoaXAuc3R5bGUsIFNMQVNIX0NPTU1BTkRfQ0hJUF9CQVNFX1NUWUxFLCB7IGJveFNpemluZzogJ2JvcmRlci1ib3gnLCBtYXhXaWR0aDogJzEwMCUnIH0pXG4gICAgY2hpcC50ZXh0Q29udGVudCA9IG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwobWVudGlvbi5sYWJlbClcbiAgICByZXR1cm4gY2hpcFxuICB9XG5cbiAgYXBwbHlNZW50aW9uQ2hpcFN0eWxlcyhjaGlwLCBtZW50aW9uLnR5cGUpXG4gIGNvbnN0IGlzVGFzayA9IG1lbnRpb24udHlwZSA9PT0gJ3Rhc2snXG4gIGNvbnN0IGNvbW1vbiA9IHtcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICB2ZXJ0aWNhbEFsaWduOiAnYmFzZWxpbmUnLFxuICAgIG92ZXJmbG93OiAndmlzaWJsZScsXG4gICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgfSBhcyBjb25zdFxuICBpZiAoaXNUYXNrKSB7XG4gICAgT2JqZWN0LmFzc2lnbihjaGlwLnN0eWxlLCBjb21tb24sIHtcbiAgICAgIGxpbmVIZWlnaHQ6ICcyMHB4JyxcbiAgICAgIGhlaWdodDogJ2F1dG8nLFxuICAgICAgbWluSGVpZ2h0OiAnYXV0bycsXG4gICAgICBtYXhIZWlnaHQ6ICdub25lJyxcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIE9iamVjdC5hc3NpZ24oY2hpcC5zdHlsZSwgY29tbW9uLCB7XG4gICAgICBsaW5lSGVpZ2h0OiAnMjBweCcsXG4gICAgICBoZWlnaHQ6ICdhdXRvJyxcbiAgICAgIG1pbkhlaWdodDogJ2F1dG8nLFxuICAgICAgbWF4SGVpZ2h0OiAnbm9uZScsXG4gICAgfSlcbiAgfVxuICBjb25zdCBtb3VudE5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJylcbiAgbW91bnROb2RlLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lJ1xuICBtb3VudE5vZGUuc3R5bGUubWF4V2lkdGggPSAnMTAwJSdcbiAgbW91bnROb2RlLnN0eWxlLnZlcnRpY2FsQWxpZ24gPSAnYmFzZWxpbmUnXG4gIG1vdW50Tm9kZS5zdHlsZS5ib3hTaXppbmcgPSAnYm9yZGVyLWJveCdcbiAgY2hpcC5hcHBlbmRDaGlsZChtb3VudE5vZGUpXG4gIGNvbnN0IHJvb3QgPSBjcmVhdGVSb290KG1vdW50Tm9kZSlcblxuICBmbHVzaFN5bmMoKCkgPT4ge1xuICAgIHJvb3QucmVuZGVyKGNyZWF0ZUVsZW1lbnQoRWRpdGFibGVNZW50aW9uQ2hpcCwgeyBtZW50aW9uIH0pKVxuICB9KVxuXG4gIGlmIChtZW50aW9uLnR5cGUgPT09ICd0YXNrJykge1xuICAgIGNoaXAuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInXG4gICAgY2hpcC5vbmNsaWNrID0gZSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIG9wZW5UYXNrSW5Db3JQYW5lbChtZW50aW9uLmlkLCAnZGV0YWlsJylcbiAgICB9XG4gIH0gZWxzZSBpZiAobWVudGlvbi50eXBlID09PSAncHJvamVjdCcpIHtcbiAgICBjaGlwLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJ1xuICAgIGNoaXAub25jbGljayA9IGUgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICB3aW5kb3cub3BlbihgL3Byb2plY3RzLyR7bWVudGlvbi5pZH0vZGFzaGJvYXJkYCwgJ19ibGFuaycpXG4gICAgfVxuICB9IGVsc2UgaWYgKG1lbnRpb24udHlwZSA9PT0gJ3VzZXInKSB7XG4gICAgbGV0IHRvb2x0aXBFbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbFxuICAgIGxldCBjaGlwUmVtb3ZlZE9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyIHwgbnVsbCA9IG51bGxcblxuICAgIGNvbnN0IHJlbW92ZVVzZXJUb29sdGlwID0gKCkgPT4ge1xuICAgICAgY2hpcFJlbW92ZWRPYnNlcnZlcj8uZGlzY29ubmVjdCgpXG4gICAgICBjaGlwUmVtb3ZlZE9ic2VydmVyID0gbnVsbFxuICAgICAgaWYgKHRvb2x0aXBFbCkge1xuICAgICAgICB0b29sdGlwRWwucmVtb3ZlKClcbiAgICAgICAgdG9vbHRpcEVsID0gbnVsbFxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBTaSBlbCBjaGlwIHNlIGJvcnJhIGRlbCBlZGl0b3IgKEJhY2tzcGFjZSwgZXRjLikgbm8gc2llbXByZSBoYXkgYG1vdXNlbGVhdmVgOyBjZXJyYXIgZWwgdG9vbHRpcC4gKi9cbiAgICBjb25zdCB3YXRjaENoaXBSZW1vdmVkRnJvbURvbSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IGNoaXAucGFyZW50Tm9kZVxuICAgICAgaWYgKCFwYXJlbnQpIHJldHVyblxuICAgICAgY2hpcFJlbW92ZWRPYnNlcnZlcj8uZGlzY29ubmVjdCgpXG4gICAgICBjaGlwUmVtb3ZlZE9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICBpZiAoIWNoaXAuaXNDb25uZWN0ZWQpIHJlbW92ZVVzZXJUb29sdGlwKClcbiAgICAgIH0pXG4gICAgICBjaGlwUmVtb3ZlZE9ic2VydmVyLm9ic2VydmUocGFyZW50LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KVxuICAgIH1cblxuICAgIGNoaXAuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsICgpID0+IHtcbiAgICAgIGlmICh0b29sdGlwRWwpIHJldHVyblxuICAgICAgdG9vbHRpcEVsID0gY3JlYXRlVXNlclRvb2x0aXBFbChtZW50aW9uKVxuICAgICAgY29uc3QgcmVjdCA9IGNoaXAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgIGNvbnN0IGxlZnQgPSBNYXRoLm1heCg4LCBNYXRoLm1pbih3aW5kb3cuaW5uZXJXaWR0aCAtIDMwMCwgcmVjdC5sZWZ0KSlcbiAgICAgIHRvb2x0aXBFbC5zdHlsZS50b3AgPSBgJHtyZWN0LnRvcH1weGBcbiAgICAgIHRvb2x0aXBFbC5zdHlsZS5sZWZ0ID0gYCR7bGVmdH1weGBcbiAgICAgIHRvb2x0aXBFbC5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlWShjYWxjKC0xMDAlIC0gNHB4KSknXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRvb2x0aXBFbClcbiAgICAgIHdhdGNoQ2hpcFJlbW92ZWRGcm9tRG9tKClcbiAgICB9KVxuXG4gICAgY2hpcC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgcmVtb3ZlVXNlclRvb2x0aXApXG4gIH1cblxuICByZXR1cm4gY2hpcFxufVxuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxTQUFTQSxhQUFhLFFBQTRCLE9BQU87QUFDekQsU0FBU0MsU0FBUyxRQUFRLFdBQVc7QUFDckMsU0FBU0MsVUFBVSxRQUFRLGtCQUFrQjtBQUM3QyxPQUFPQyxJQUFJLE1BQU0sZUFBZTtBQUNoQyxTQUFTQywwQkFBMEIsUUFBd0IsK0JBQStCO0FBQzFGLFNBQVNDLHFCQUFxQixRQUFRLG9DQUFvQztBQUMxRSxTQUFTQyw0QkFBNEIsUUFBUSxvQ0FBb0M7QUFDakYsU0FBU0Msa0JBQWtCLFFBQVEsbUNBQW1DO0FBQ3RFLFNBQVNDLDZCQUE2QixRQUFRLDZDQUE2QztBQUMzRixTQUFTQyxzQkFBc0IsRUFBRUMsbUJBQW1CLFFBQVEsNkJBQTZCO0FBRXpGLElBQU1DLDZCQUE0QyxHQUFHO0VBQ25EQyxPQUFPLEVBQUUsUUFBUTtFQUNqQkMsVUFBVSxFQUFFLE1BQU07RUFDbEJDLFNBQVMsRUFBRSxVQUFVO0VBQ3JCQyxRQUFRLEVBQUUsQ0FBQztF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
434
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVFbGVtZW50IiwiZmx1c2hTeW5jIiwiY3JlYXRlUm9vdCIsImkxOG4iLCJDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTUyIsImdldENvbnRleHRNZW50aW9uSWNvbiIsIm5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwiLCJvcGVuVGFza0luQ29yUGFuZWwiLCJhcHBseU1lbnRpb25DaGlwU3R5bGVzIiwiTUVOVElPTl9DSElQX0NPTE9SUyIsIkVESVRBQkxFX05PTl9UQVNLX0xBQkVMX1NUWUxFIiwiZGlzcGxheSIsImxpbmVIZWlnaHQiLCJhbGlnblNlbGYiLCJtaW5XaWR0aCIsIm1heFdpZHRoIiwid2hpdGVTcGFjZSIsIm92ZXJmbG93V3JhcCIsIndvcmRCcmVhayIsIkVESVRBQkxFX1RBU0tfTEFCRUxfU1RZTEUiLCJmb250U2l6ZSIsImZvbnRXZWlnaHQiLCJjb2xvciIsImNyZWF0ZUVkaXRhYmxlTWVudGlvbkxhYmVsRWwiLCJpc1Rhc2siLCJtZW50aW9uTGFiZWwiLCJzdHlsZSIsInNwbGl0TGFiZWxGaXJzdFdvcmQiLCJsYWJlbCIsIm5vcm1hbGl6ZWQiLCJ0cmltIiwiZmlyc3RXb3JkIiwicmVzdCIsImZpcnN0V2hpdGVzcGFjZUlkeCIsInNlYXJjaCIsInNsaWNlIiwiRWRpdGFibGVNZW50aW9uQ2hpcCIsIl9yZWYiLCJtZW50aW9uIiwiaWNvbkNvbG9yIiwidHlwZSIsImZnIiwiaXNQcm9qZWN0IiwiaWNvblNpemUiLCJsYWJlbEVsIiwib3V0ZXJTdHlsZSIsInBvc2l0aW9uIiwiYm94U2l6aW5nIiwidmVydGljYWxBbGlnbiIsIl9zcGxpdExhYmVsRmlyc3RXb3JkIiwibGVhZGluZ1N0eWxlIiwiYWxpZ25JdGVtcyIsImxlYWRpbmdXb3JkU3R5bGUiLCJfb2JqZWN0U3ByZWFkIiwicmVzdFN0eWxlIiwibWFyZ2luUmlnaHQiLCJ3aWR0aCIsImlkIiwiaW5pdGlhbHNGcm9tTmFtZSIsIm5hbWUiLCJfcGFydHMkMiIsInRyaW1tZWQiLCJwYXJ0cyIsInNwbGl0IiwiZmlsdGVyIiwiQm9vbGVhbiIsImxlbmd0aCIsIl9wYXJ0cyQwJGNoYXJBdCIsIl9wYXJ0cyQiLCJfcGFydHMkY2hhckF0IiwiX3BhcnRzIiwiZmlyc3QiLCJjaGFyQXQiLCJsYXN0IiwiY29uY2F0IiwidG9VcHBlckNhc2UiLCJzaW5nbGUiLCJUT09MVElQX0ZPTlQiLCJUT09MVElQX1NFQ09OREFSWV9DT0xPUiIsIlRPT0xUSVBfU0VDT05EQVJZX1NUWUxFIiwiZm9udEZhbWlseSIsIm5vcm1hbGl6ZVRyaW1tZWRTdHJpbmciLCJ2YWx1ZSIsIlVTRVJfVE9PTFRJUF9NSU5fV0lEVEhfUFgiLCJVU0VSX1RPT0xUSVBfUEFEX1hfUFgiLCJVU0VSX1RPT0xUSVBfQVZBVEFSX0dBUF9QWCIsIlVTRVJfVE9PTFRJUF9OQU1FX1JPV19NQVhfUFgiLCJVU0VSX1RPT0xUSVBfTkFNRV9NQVhfV0lEVEhfUFgiLCJNYXRoIiwiZmxvb3IiLCJjcmVhdGVVc2VyVG9vbHRpcEVsIiwibWV0YWRhdGEiLCJwaWN0dXJlIiwicG9zaXRpb25OYW1lIiwicG9zaXRpb25MaW5lIiwidCIsImRlZmF1bHRWYWx1ZSIsImVtYWlsIiwibWV0YWRhdGFOYW1lIiwibmFtZUZvckluaXRpYWxzIiwidG9vbHRpcCIsImRvY3VtZW50IiwiT2JqZWN0IiwiYXNzaWduIiwiekluZGV4IiwicGFkZGluZyIsImZsZXhEaXJlY3Rpb24iLCJib3JkZXJSYWRpdXMiLCJib3JkZXIiLCJiYWNrZ3JvdW5kIiwiYm94U2hhZG93IiwicG9pbnRlckV2ZW50cyIsIm92ZXJmbG93Iiwicm93IiwiZ2FwIiwiYXZhdGFyV3JhcCIsImhlaWdodCIsImp1c3RpZnlDb250ZW50IiwiZmxleFNocmluayIsImluaXRpYWxzIiwiY3JlYXRlSW5pdGlhbHNGYWxsYmFjayIsImZiIiwidGV4dENvbnRlbnQiLCJpbWciLCJzcmMiLCJhbHQiLCJkcmFnZ2FibGUiLCJvYmplY3RGaXQiLCJvbmVycm9yIiwicmVtb3ZlIiwiYXBwZW5kQ2hpbGQiLCJpbmZvQ29sIiwibmFtZVJvdyIsIm5hbWVTcGFuIiwiZmxleCIsInRleHRPdmVyZmxvdyIsInNlcCIsInBvc1NwYW4iLCJlbWFpbFNwYW4iLCJidWlsZENoaXBFbGVtZW50IiwiY2hpcCIsInNldEF0dHJpYnV0ZSIsImNsYXNzTmFtZSIsImNvbW1vbiIsIm1pbkhlaWdodCIsIm1heEhlaWdodCIsIm1vdW50Tm9kZSIsInJvb3QiLCJyZW5kZXIiLCJjdXJzb3IiLCJvbmNsaWNrIiwiZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwid2luZG93Iiwib3BlbiIsInRvb2x0aXBFbCIsImNoaXBSZW1vdmVkT2JzZXJ2ZXIiLCJyZW1vdmVVc2VyVG9vbHRpcCIsIl9jaGlwUmVtb3ZlZE9ic2VydmVyIiwiZGlzY29ubmVjdCIsIndhdGNoQ2hpcFJlbW92ZWRGcm9tRG9tIiwiX2NoaXBSZW1vdmVkT2JzZXJ2ZXIyIiwicGFyZW50IiwicGFyZW50Tm9kZSIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJpc0Nvbm5lY3RlZCIsIm9ic2VydmUiLCJjaGlsZExpc3QiLCJzdWJ0cmVlIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJsZWZ0IiwibWF4IiwibWluIiwiaW5uZXJXaWR0aCIsInRvcCIsInRyYW5zZm9ybSIsImJvZHkiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hdG9tcy9Db250ZXh0TWVudGlvbkNoaXAvYnVpbGRDaGlwRWxlbWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVFbGVtZW50LCB0eXBlIENTU1Byb3BlcnRpZXMgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGZsdXNoU3luYyB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IGNyZWF0ZVJvb3QgfSBmcm9tICdyZWFjdC1kb20vY2xpZW50J1xuaW1wb3J0IGkxOG4gZnJvbSAnLi4vLi4vLi4vbGFuZydcbmltcG9ydCB7IENPTlRFWFRfTUVOVElPTl9DSElQX0NMQVNTLCBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgZ2V0Q29udGV4dE1lbnRpb25JY29uIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY29udGV4dE1lbnRpb25JY29ucydcbmltcG9ydCB7IG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jb250ZXh0TWVudGlvbkxhYmVsJ1xuaW1wb3J0IHsgb3BlblRhc2tJbkNvclBhbmVsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvb3BlblRhc2tJbkNvclBhbmVsJ1xuaW1wb3J0IHsgYXBwbHlNZW50aW9uQ2hpcFN0eWxlcywgTUVOVElPTl9DSElQX0NPTE9SUyB9IGZyb20gJy4vQ29udGV4dE1lbnRpb25DaGlwLnN0eWxlcydcblxuY29uc3QgRURJVEFCTEVfTk9OX1RBU0tfTEFCRUxfU1RZTEU6IENTU1Byb3BlcnRpZXMgPSB7XG4gIGRpc3BsYXk6ICdpbmxpbmUnLFxuICBsaW5lSGVpZ2h0OiAnMjBweCcsXG4gIGFsaWduU2VsZjogJ2Jhc2VsaW5lJyxcbiAgbWluV2lkdGg6IDAsXG4gIG1heFdpZHRoOiAnMTAwJScsXG4gIHdoaXRlU3BhY2U6ICdub3JtYWwnLFxuICBvdmVyZmxvd1dyYXA6ICdicmVhay13b3JkJyxcbiAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG59XG5cbi8qKiBUZXh0byBkZSB0YXJlYTogc2luIGJvcmRlIGluZmVyaW9yOyBlbCBhc3BlY3RvIGRlIGVubGFjZSBsbyBkYSBlbCBDU1MgZ2xvYmFsICg6OmJlZm9yZSArIGNvbG9yKS4gKi9cbmNvbnN0IEVESVRBQkxFX1RBU0tfTEFCRUxfU1RZTEU6IENTU1Byb3BlcnRpZXMgPSB7XG4gIGRpc3BsYXk6ICdpbmxpbmUnLFxuICBmb250U2l6ZTogJzE0cHgnLFxuICBsaW5lSGVpZ2h0OiAnMjBweCcsXG4gIGZvbnRXZWlnaHQ6ICc2MDAnLFxuICBjb2xvcjogJ2luaGVyaXQnLFxuICBtaW5XaWR0aDogMCxcbiAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgd2hpdGVTcGFjZTogJ25vcm1hbCcsXG4gIG92ZXJmbG93V3JhcDogJ2JyZWFrLXdvcmQnLFxuICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbn1cblxuY29uc3QgY3JlYXRlRWRpdGFibGVNZW50aW9uTGFiZWxFbCA9IChpc1Rhc2s6IGJvb2xlYW4sIG1lbnRpb25MYWJlbDogc3RyaW5nKSA9PiB7XG4gIGlmICghaXNUYXNrKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoJ3NwYW4nLCB7IHN0eWxlOiBFRElUQUJMRV9OT05fVEFTS19MQUJFTF9TVFlMRSB9LCBtZW50aW9uTGFiZWwpXG4gIH1cbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoJ3NwYW4nLCB7IHN0eWxlOiBFRElUQUJMRV9UQVNLX0xBQkVMX1NUWUxFIH0sIG1lbnRpb25MYWJlbClcbn1cblxuY29uc3Qgc3BsaXRMYWJlbEZpcnN0V29yZCA9IChsYWJlbDogc3RyaW5nKTogeyBmaXJzdFdvcmQ6IHN0cmluZzsgcmVzdDogc3RyaW5nIH0gPT4ge1xuICBjb25zdCBub3JtYWxpemVkID0gbGFiZWwudHJpbSgpXG4gIGlmICghbm9ybWFsaXplZCkgcmV0dXJuIHsgZmlyc3RXb3JkOiAnJywgcmVzdDogJycgfVxuICBjb25zdCBmaXJzdFdoaXRlc3BhY2VJZHggPSBub3JtYWxpemVkLnNlYXJjaCgvXFxzLylcbiAgaWYgKGZpcnN0V2hpdGVzcGFjZUlkeCA8IDApIHJldHVybiB7IGZpcnN0V29yZDogbm9ybWFsaXplZCwgcmVzdDogJycgfVxuICByZXR1cm4ge1xuICAgIGZpcnN0V29yZDogbm9ybWFsaXplZC5zbGljZSgwLCBmaXJzdFdoaXRlc3BhY2VJZHgpLFxuICAgIHJlc3Q6IG5vcm1hbGl6ZWQuc2xpY2UoZmlyc3RXaGl0ZXNwYWNlSWR4KSxcbiAgfVxufVxuXG50eXBlIEVkaXRhYmxlTWVudGlvbkNoaXBQcm9wcyA9IHtcbiAgbWVudGlvbjogQ29udGV4dE1lbnRpb25cbn1cblxuY29uc3QgRWRpdGFibGVNZW50aW9uQ2hpcCA9ICh7IG1lbnRpb24gfTogRWRpdGFibGVNZW50aW9uQ2hpcFByb3BzKSA9PiB7XG4gIGNvbnN0IG1lbnRpb25MYWJlbCA9IG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwobWVudGlvbi5sYWJlbClcbiAgY29uc3QgaWNvbkNvbG9yID0gTUVOVElPTl9DSElQX0NPTE9SU1ttZW50aW9uLnR5cGVdLmZnXG4gIGNvbnN0IGlzVGFzayA9IG1lbnRpb24udHlwZSA9PT0gJ3Rhc2snXG4gIGNvbnN0IGlzUHJvamVjdCA9IG1lbnRpb24udHlwZSA9PT0gJ3Byb2plY3QnXG4gIGNvbnN0IGljb25TaXplID0gaXNUYXNrID8gMTYgOiAxNFxuICBjb25zdCBsYWJlbEVsID0gY3JlYXRlRWRpdGFibGVNZW50aW9uTGFiZWxFbChpc1Rhc2ssIG1lbnRpb25MYWJlbClcblxuICBjb25zdCBvdXRlclN0eWxlOiBDU1NQcm9wZXJ0aWVzID0ge1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIGRpc3BsYXk6ICdpbmxpbmUnLFxuICAgIGxpbmVIZWlnaHQ6ICcyMHB4JyxcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICB2ZXJ0aWNhbEFsaWduOiAnYmFzZWxpbmUnLFxuICAgIG1heFdpZHRoOiAnMTAwJScsXG4gIH1cblxuICBpZiAoaXNUYXNrIHx8IGlzUHJvamVjdCkge1xuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KCdzcGFuJywgeyBzdHlsZTogb3V0ZXJTdHlsZSB9LCBsYWJlbEVsKVxuICB9XG5cbiAgY29uc3QgeyBmaXJzdFdvcmQsIHJlc3QgfSA9IHNwbGl0TGFiZWxGaXJzdFdvcmQobWVudGlvbkxhYmVsKVxuICBjb25zdCBsZWFkaW5nU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogJ2lubGluZS1mbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICBtYXhXaWR0aDogJzEwMCUnLFxuICB9XG4gIGNvbnN0IGxlYWRpbmdXb3JkU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgLi4uRURJVEFCTEVfTk9OX1RBU0tfTEFCRUxfU1RZTEUsXG4gICAgZGlzcGxheTogJ2lubGluZScsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gIH1cbiAgY29uc3QgcmVzdFN0eWxlOiBDU1NQcm9wZXJ0aWVzID0ge1xuICAgIC4uLkVESVRBQkxFX05PTl9UQVNLX0xBQkVMX1NUWUxFLFxuICAgIGRpc3BsYXk6ICdpbmxpbmUnLFxuICAgIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoXG4gICAgJ3NwYW4nLFxuICAgIHsgc3R5bGU6IG91dGVyU3R5bGUgfSxcbiAgICBjcmVhdGVFbGVtZW50KFxuICAgICAgJ3NwYW4nLFxuICAgICAgeyBzdHlsZTogbGVhZGluZ1N0eWxlIH0sXG4gICAgICBjcmVhdGVFbGVtZW50KFxuICAgICAgICAnc3BhbicsXG4gICAgICAgIHtcbiAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICAgICAgICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbiAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAnMnB4JyxcbiAgICAgICAgICAgIGxpbmVIZWlnaHQ6ICcxJyxcbiAgICAgICAgICAgIHdpZHRoOiAnMTRweCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0Q29udGV4dE1lbnRpb25JY29uKG1lbnRpb24udHlwZSwgaWNvbkNvbG9yLCBtZW50aW9uLmlkLCBpY29uU2l6ZSlcbiAgICAgICksXG4gICAgICBjcmVhdGVFbGVtZW50KCdzcGFuJywgeyBzdHlsZTogbGVhZGluZ1dvcmRTdHlsZSB9LCBmaXJzdFdvcmQpXG4gICAgKSxcbiAgICByZXN0ID8gY3JlYXRlRWxlbWVudCgnc3BhbicsIHsgc3R5bGU6IHJlc3RTdHlsZSB9LCByZXN0KSA6IG51bGxcbiAgKVxufVxuXG5jb25zdCBpbml0aWFsc0Zyb21OYW1lID0gKG5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHRyaW1tZWQgPSBuYW1lLnRyaW0oKVxuICBpZiAoIXRyaW1tZWQpIHJldHVybiAnPydcbiAgY29uc3QgcGFydHMgPSB0cmltbWVkLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pXG4gIGlmIChwYXJ0cy5sZW5ndGggPj0gMikge1xuICAgIGNvbnN0IGZpcnN0ID0gcGFydHNbMF0/LmNoYXJBdCgwKSA/PyAnJ1xuICAgIGNvbnN0IGxhc3QgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXT8uY2hhckF0KDApID8/ICcnXG4gICAgcmV0dXJuIGAke2ZpcnN0fSR7bGFzdH1gLnRvVXBwZXJDYXNlKClcbiAgfVxuICBjb25zdCBzaW5nbGUgPSBwYXJ0c1swXSA/PyAnJ1xuICByZXR1cm4gc2luZ2xlLmxlbmd0aCA+PSAyID8gc2luZ2xlLnNsaWNlKDAsIDIpLnRvVXBwZXJDYXNlKCkgOiAoc2luZ2xlLmNoYXJBdCgwKSB8fCAnPycpLnRvVXBwZXJDYXNlKClcbn1cblxuY29uc3QgVE9PTFRJUF9GT05UID0gYHZhcigtLWNvci10eXBvZ3JhcGh5LWZvbnQtZmFtaWx5LCAnV29yayBTYW5zJylgXG5jb25zdCBUT09MVElQX1NFQ09OREFSWV9DT0xPUiA9ICd2YXIoLS1UZXh0LVNlY29uZGFyeS1EYXJrLCAjNjY2KSdcbmNvbnN0IFRPT0xUSVBfU0VDT05EQVJZX1NUWUxFID0ge1xuICBmb250RmFtaWx5OiBUT09MVElQX0ZPTlQsXG4gIGZvbnRTaXplOiAnMTRweCcsXG4gIGZvbnRXZWlnaHQ6ICc0MDAnLFxuICBsaW5lSGVpZ2h0OiAnMjBweCcsXG4gIGNvbG9yOiBUT09MVElQX1NFQ09OREFSWV9DT0xPUixcbn1cblxuY29uc3Qgbm9ybWFsaXplVHJpbW1lZFN0cmluZyA9ICh2YWx1ZTogdW5rbm93bik6IHN0cmluZyA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSByZXR1cm4gJydcbiAgcmV0dXJuIHZhbHVlLnRyaW0oKVxufVxuXG4vKiogQW5jaG8gbcOtbmltbyBkZWwgdG9vbHRpcCAoaW5jbC4gcGFkZGluZyBob3Jpem9udGFsIDgrOCkuICovXG5jb25zdCBVU0VSX1RPT0xUSVBfTUlOX1dJRFRIX1BYID0gMjkyXG4vKiogUGFkZGluZyBob3Jpem9udGFsIHRvdGFsIGRlbCB0b29sdGlwLiAqL1xuY29uc3QgVVNFUl9UT09MVElQX1BBRF9YX1BYID0gMTZcbi8qKiBBdmF0YXIgMjRweCArIGdhcCA4cHggcmVzcGVjdG8gYSBsYSBjb2x1bW5hIGRlIHRleHRvLiAqL1xuY29uc3QgVVNFUl9UT09MVElQX0FWQVRBUl9HQVBfUFggPSAzMlxuLyoqXG4gKiBBbmNobyBtw6F4aW1vIGRlIGxhIGZpbGEgbm9tYnJlIHwgcG9zaWNpw7NuOiBtaXNtbyBodWVjbyBxdWUgY29uIHRvb2x0aXAgZmlqbyAyOTJweCxcbiAqIHBhcmEgcXVlIHNvbG8gZWwgZW1haWwgZW5zYW5jaGUgZWwgY29udGVuZWRvci5cbiAqL1xuY29uc3QgVVNFUl9UT09MVElQX05BTUVfUk9XX01BWF9QWCA9IFVTRVJfVE9PTFRJUF9NSU5fV0lEVEhfUFggLSBVU0VSX1RPT0xUSVBfUEFEX1hfUFggLSBVU0VSX1RPT0xUSVBfQVZBVEFSX0dBUF9QWFxuLyoqXG4gKiBUb3BlIGRlIGFuY2hvIGRlbCBub21icmUgZW4gbGEgZmlsYTogcG9yIGRlYmFqbyBkZWwgbcOheGltbyBkZSBmaWxhIHBhcmEgcXVlIGVsIGVsbGlwc2lzXG4gKiBkZWwgbm9tYnJlIGFwYXJlemNhIGFudGVzIHkgcXVlZGUgbcOhcyBlc3BhY2lvIHZpc2libGUgcGFyYSBwb3NpY2nDs24vY2FyZ28uXG4gKi9cbmNvbnN0IFVTRVJfVE9PTFRJUF9OQU1FX01BWF9XSURUSF9QWCA9IE1hdGguZmxvb3IoVVNFUl9UT09MVElQX05BTUVfUk9XX01BWF9QWCAqIDAuNDIpXG5cbmNvbnN0IGNyZWF0ZVVzZXJUb29sdGlwRWwgPSAobWVudGlvbjogQ29udGV4dE1lbnRpb24pOiBIVE1MRWxlbWVudCA9PiB7XG4gIGNvbnN0IHsgbGFiZWwsIG1ldGFkYXRhIH0gPSBtZW50aW9uXG4gIGNvbnN0IHBpY3R1cmUgPSB0eXBlb2YgbWV0YWRhdGE/LnBpY3R1cmUgPT09ICdzdHJpbmcnID8gbWV0YWRhdGEucGljdHVyZSA6IG51bGxcbiAgY29uc3QgcG9zaXRpb25OYW1lID0gbm9ybWFsaXplVHJpbW1lZFN0cmluZyhtZXRhZGF0YT8ucG9zaXRpb25OYW1lKVxuICBjb25zdCBwb3NpdGlvbkxpbmUgPVxuICAgIHBvc2l0aW9uTmFtZSB8fFxuICAgIGkxOG4udCgnY29udGV4dE1lbnRpb24udXNlck5vUG9zaXRpb24nLCB7XG4gICAgICBkZWZhdWx0VmFsdWU6ICdTaW4gcG9zaWNpw7NuJyxcbiAgICB9KVxuICBjb25zdCBlbWFpbCA9IG5vcm1hbGl6ZVRyaW1tZWRTdHJpbmcobWV0YWRhdGE/LmVtYWlsKVxuICAvKiogTWlzbWEgZnVlbnRlIHF1ZSBgQ29udGV4dE1lbnRpb25JdGVtYCAoYXZhdGFyKTogbm9tYnJlIGRlIHF1ZXJ5LCBubyBlbCBsYWJlbCBkZWwgY2hpcCAoZWouIFwiWW9cIikuICovXG4gIGNvbnN0IG1ldGFkYXRhTmFtZSA9IG5vcm1hbGl6ZVRyaW1tZWRTdHJpbmcobWV0YWRhdGE/Lm5hbWUpXG4gIGNvbnN0IG5hbWVGb3JJbml0aWFscyA9IChtZXRhZGF0YU5hbWUgfHwgbm9ybWFsaXplVHJpbW1lZFN0cmluZyhsYWJlbCkgfHwgJz8nKS50cmltKClcblxuICBjb25zdCB0b29sdGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgT2JqZWN0LmFzc2lnbih0b29sdGlwLnN0eWxlLCB7XG4gICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgekluZGV4OiAnOTk5OScsXG4gICAgbWluV2lkdGg6IGAke1VTRVJfVE9PTFRJUF9NSU5fV0lEVEhfUFh9cHhgLFxuICAgIHdpZHRoOiAnbWF4LWNvbnRlbnQnLFxuICAgIG1heFdpZHRoOiAnbWluKDU2MHB4LCBjYWxjKDEwMHZ3IC0gMjRweCkpJyxcbiAgICBwYWRkaW5nOiAnMTJweCA4cHgnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBhbGlnbkl0ZW1zOiAnZmxleC1zdGFydCcsXG4gICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICBib3JkZXI6ICcxcHggc29saWQgdmFyKC0tQ29sb3ItTGlnaHQtR3JheSwgI0UwRTBFMCknLFxuICAgIGJhY2tncm91bmQ6ICcjRkZGJyxcbiAgICBib3hTaGFkb3c6ICcwIDFweCA0cHggMCByZ2JhKDAsMCwwLDAuMDgpLCAwIDFweCA0cHggMCByZ2JhKDAsMCwwLDAuMDQpJyxcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICB9KVxuXG4gIGNvbnN0IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gIE9iamVjdC5hc3NpZ24ocm93LnN0eWxlLCB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGdhcDogJzhweCcsXG4gICAgd2lkdGg6ICdtYXgtY29udGVudCcsXG4gICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgICBtaW5XaWR0aDogJzAnLFxuICB9KVxuXG4gIC8vIEF2YXRhciBjaXJjdWxhciAoZm90byBvIGluaWNpYWxlcylcbiAgY29uc3QgYXZhdGFyV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gIE9iamVjdC5hc3NpZ24oYXZhdGFyV3JhcC5zdHlsZSwge1xuICAgIHdpZHRoOiAnMjRweCcsXG4gICAgaGVpZ2h0OiAnMjRweCcsXG4gICAgbWluV2lkdGg6ICcyNHB4JyxcbiAgICBib3JkZXJSYWRpdXM6ICcyNHB4JyxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAvKiogTWlzbW8gZm9uZG8gcXVlIGBTQ01Vc2VyQXZhdGFyRmFsbGJhY2tgIGVuIGxhIGZpbGEgZGUgdXN1YXJpbyBkZWwgbW9kYWwuICovXG4gICAgYmFja2dyb3VuZDogJ3ZhcigtLWNvci1jb2xvci1ncmV5LTIwMCwgI2UwZTBlMCknLFxuICAgIGZsZXhTaHJpbms6ICcwJyxcbiAgfSlcblxuICBjb25zdCBpbml0aWFscyA9IGluaXRpYWxzRnJvbU5hbWUobmFtZUZvckluaXRpYWxzKVxuXG4gIGNvbnN0IGNyZWF0ZUluaXRpYWxzRmFsbGJhY2sgPSAoKTogSFRNTEVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IGZiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXG4gICAgZmIudGV4dENvbnRlbnQgPSBpbml0aWFsc1xuICAgIE9iamVjdC5hc3NpZ24oZmIuc3R5bGUsIHtcbiAgICAgIGZvbnRTaXplOiAnMTBweCcsXG4gICAgICBmb250V2VpZ2h0OiAnNjAwJyxcbiAgICAgIC8qKiBNaXNtbyBjb2xvciBxdWUgYFNDTVVzZXJBdmF0YXJGYWxsYmFja2AgZW4gbGEgZmlsYSBkZSB1c3VhcmlvIGRlbCBtb2RhbC4gKi9cbiAgICAgIGNvbG9yOiAndmFyKC0tY29yLWNvbG9yLXRleHQtc2Vjb25kYXJ5LCAjNjY2KScsXG4gICAgICBsaW5lSGVpZ2h0OiAnMScsXG4gICAgICBmb250RmFtaWx5OiBUT09MVElQX0ZPTlQsXG4gICAgfSlcbiAgICByZXR1cm4gZmJcbiAgfVxuXG4gIGlmIChwaWN0dXJlKSB7XG4gICAgY29uc3QgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJylcbiAgICBpbWcuc3JjID0gcGljdHVyZVxuICAgIGltZy5hbHQgPSAnJ1xuICAgIGltZy5kcmFnZ2FibGUgPSBmYWxzZVxuICAgIE9iamVjdC5hc3NpZ24oaW1nLnN0eWxlLCB7XG4gICAgICB3aWR0aDogJzI0cHgnLFxuICAgICAgaGVpZ2h0OiAnMjRweCcsXG4gICAgICBvYmplY3RGaXQ6ICdjb3ZlcicsXG4gICAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMjRweCcsXG4gICAgfSlcbiAgICBpbWcub25lcnJvciA9ICgpID0+IHtcbiAgICAgIGltZy5yZW1vdmUoKVxuICAgICAgYXZhdGFyV3JhcC5hcHBlbmRDaGlsZChjcmVhdGVJbml0aWFsc0ZhbGxiYWNrKCkpXG4gICAgfVxuICAgIGF2YXRhcldyYXAuYXBwZW5kQ2hpbGQoaW1nKVxuICB9IGVsc2Uge1xuICAgIGF2YXRhcldyYXAuYXBwZW5kQ2hpbGQoY3JlYXRlSW5pdGlhbHNGYWxsYmFjaygpKVxuICB9XG5cbiAgLy8gQ29sdW1uYSBkZSBpbmZvOiBhbmNobyA9IG1heChmaWxhIG5vbWJyZSwgZW1haWwpOyBzaW4gZm9yemFyIDI0NHB4IHNpIGVsIGNvbnRlbmlkbyBlcyBtw6FzIGNvcnRvLlxuICBjb25zdCBpbmZvQ29sID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgT2JqZWN0LmFzc2lnbihpbmZvQ29sLnN0eWxlLCB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICBhbGlnbkl0ZW1zOiAnZmxleC1zdGFydCcsXG4gICAgZ2FwOiAnMnB4JyxcbiAgICBtaW5XaWR0aDogJzAnLFxuICAgIHdpZHRoOiAnbWF4LWNvbnRlbnQnLFxuICAgIG1heFdpZHRoOiAnMTAwJScsXG4gIH0pXG5cbiAgLy8gRmlsYTogbm9tYnJlIHwgcG9zaWNpw7NuIOKAlCBtYXgtY29udGVudCBwYXJhIG5vIGRlamFyIGh1ZWNvIGVudHJlIG5vbWJyZSBjb3J0byB5IGVsIHBpcGUgKGV2aXRhciBmbGV4IDUwLzUwKS5cbiAgY29uc3QgbmFtZVJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gIE9iamVjdC5hc3NpZ24obmFtZVJvdy5zdHlsZSwge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnZmxleC1zdGFydCcsXG4gICAgZ2FwOiAnNHB4JyxcbiAgICBtaW5XaWR0aDogJzAnLFxuICAgIHdpZHRoOiAnbWF4LWNvbnRlbnQnLFxuICAgIG1heFdpZHRoOiBgJHtVU0VSX1RPT0xUSVBfTkFNRV9ST1dfTUFYX1BYfXB4YCxcbiAgfSlcblxuICBjb25zdCBuYW1lU3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxuICBuYW1lU3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsXG4gIE9iamVjdC5hc3NpZ24obmFtZVNwYW4uc3R5bGUsIHtcbiAgICBmbGV4OiAnMCAxIGF1dG8nLFxuICAgIG1pbldpZHRoOiAnMCcsXG4gICAgbWF4V2lkdGg6IGAke1VTRVJfVE9PTFRJUF9OQU1FX01BWF9XSURUSF9QWH1weGAsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICBjb2xvcjogJ3ZhcigtLVRleHQtUHJpbWFyeS1EYXJrLCAjMjAyMDFGKScsXG4gICAgZm9udEZhbWlseTogVE9PTFRJUF9GT05ULFxuICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgZm9udFdlaWdodDogJzUwMCcsXG4gICAgbGluZUhlaWdodDogJzEzMCUnLFxuICB9KVxuICBuYW1lUm93LmFwcGVuZENoaWxkKG5hbWVTcGFuKVxuXG4gIGNvbnN0IHNlcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxuICBzZXAudGV4dENvbnRlbnQgPSAnfCdcbiAgT2JqZWN0LmFzc2lnbihzZXAuc3R5bGUsIHsgLi4uVE9PTFRJUF9TRUNPTkRBUllfU1RZTEUsIGZsZXhTaHJpbms6ICcwJyB9KVxuICBuYW1lUm93LmFwcGVuZENoaWxkKHNlcClcblxuICBjb25zdCBwb3NTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXG4gIHBvc1NwYW4udGV4dENvbnRlbnQgPSBwb3NpdGlvbkxpbmVcbiAgT2JqZWN0LmFzc2lnbihwb3NTcGFuLnN0eWxlLCB7XG4gICAgLi4uVE9PTFRJUF9TRUNPTkRBUllfU1RZTEUsXG4gICAgZmxleDogJzAgMSBhdXRvJyxcbiAgICBtaW5XaWR0aDogJzAnLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gIH0pXG4gIG5hbWVSb3cuYXBwZW5kQ2hpbGQocG9zU3BhbilcblxuICBpbmZvQ29sLmFwcGVuZENoaWxkKG5hbWVSb3cpXG5cbiAgaWYgKGVtYWlsKSB7XG4gICAgY29uc3QgZW1haWxTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXG4gICAgZW1haWxTcGFuLnRleHRDb250ZW50ID0gZW1haWxcbiAgICBPYmplY3QuYXNzaWduKGVtYWlsU3Bhbi5zdHlsZSwge1xuICAgICAgLi4uVE9PTFRJUF9TRUNPTkRBUllfU1RZTEUsXG4gICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICAgIG1heFdpZHRoOiAnMTAwJScsXG4gICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gICAgfSlcbiAgICBpbmZvQ29sLmFwcGVuZENoaWxkKGVtYWlsU3BhbilcbiAgfVxuXG4gIHJvdy5hcHBlbmRDaGlsZChhdmF0YXJXcmFwKVxuICByb3cuYXBwZW5kQ2hpbGQoaW5mb0NvbClcbiAgdG9vbHRpcC5hcHBlbmRDaGlsZChyb3cpXG5cbiAgcmV0dXJuIHRvb2x0aXBcbn1cblxuLyoqXG4gKiBDcmVhIHVuIGA8c3Bhbj5gIGF0w7NtaWNvIGxpc3RvIHBhcmEgaW5zZXJ0YXJzZSBkZW50cm8gZGVsIGNvbnRlbnRlZGl0YWJsZVxuICogZGVsIGBDb250ZXh0TWVudGlvbkVkaXRvcmAuIFNlIG1hcmNhIGNvbiBsb3MgYGRhdGEtbWVudGlvbipgIG5lY2VzYXJpb3MgcGFyYVxuICogcXVlIGB1c2VDb250ZXh0TWVudGlvbnMuc2VyaWFsaXplKClgIHB1ZWRhIHZvbHZlciBhIGV4dHJhZXIgbGEgbWVudGlvbi5cbiAqXG4gKiBDb21wYXJ0ZSBsb3MgZXN0aWxvcyBjb24gZWwgY29tcG9uZW50ZSBgQ29udGV4dE1lbnRpb25DaGlwYCB2aWFcbiAqIGBhcHBseU1lbnRpb25DaGlwU3R5bGVzYCwgYXNlZ3VyYW5kbyB1bmEgw7puaWNhIGZ1ZW50ZSBkZSB2ZXJkYWQgdmlzdWFsLlxuICovXG5leHBvcnQgY29uc3QgYnVpbGRDaGlwRWxlbWVudCA9IChtZW50aW9uOiBDb250ZXh0TWVudGlvbik6IEhUTUxTcGFuRWxlbWVudCA9PiB7XG4gIGNvbnN0IGNoaXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJylcbiAgY2hpcC5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsICdmYWxzZScpXG4gIGNoaXAuc2V0QXR0cmlidXRlKCdkYXRhLW1lbnRpb24tY2hpcCcsICd0cnVlJylcbiAgY2hpcC5jbGFzc05hbWUgPSBDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTU1xuICBjaGlwLnNldEF0dHJpYnV0ZSgnZGF0YS1tZW50aW9uLXR5cGUnLCBtZW50aW9uLnR5cGUpXG4gIGNoaXAuc2V0QXR0cmlidXRlKCdkYXRhLW1lbnRpb24tc3VyZmFjZScsICdlZGl0b3InKVxuICBhcHBseU1lbnRpb25DaGlwU3R5bGVzKGNoaXAsIG1lbnRpb24udHlwZSlcbiAgY29uc3QgaXNUYXNrID0gbWVudGlvbi50eXBlID09PSAndGFzaydcbiAgY29uc3QgY29tbW9uID0ge1xuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIHZlcnRpY2FsQWxpZ246ICdiYXNlbGluZScsXG4gICAgb3ZlcmZsb3c6ICd2aXNpYmxlJyxcbiAgICBtYXhXaWR0aDogJzEwMCUnLFxuICB9IGFzIGNvbnN0XG4gIGlmIChpc1Rhc2spIHtcbiAgICBPYmplY3QuYXNzaWduKGNoaXAuc3R5bGUsIGNvbW1vbiwge1xuICAgICAgbGluZUhlaWdodDogJzIwcHgnLFxuICAgICAgaGVpZ2h0OiAnYXV0bycsXG4gICAgICBtaW5IZWlnaHQ6ICdhdXRvJyxcbiAgICAgIG1heEhlaWdodDogJ25vbmUnLFxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgT2JqZWN0LmFzc2lnbihjaGlwLnN0eWxlLCBjb21tb24sIHtcbiAgICAgIGxpbmVIZWlnaHQ6ICcyMHB4JyxcbiAgICAgIGhlaWdodDogJ2F1dG8nLFxuICAgICAgbWluSGVpZ2h0OiAnYXV0bycsXG4gICAgICBtYXhIZWlnaHQ6ICdub25lJyxcbiAgICB9KVxuICB9XG4gIGNvbnN0IG1vdW50Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxuICBtb3VudE5vZGUuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUnXG4gIG1vdW50Tm9kZS5zdHlsZS5tYXhXaWR0aCA9ICcxMDAlJ1xuICBtb3VudE5vZGUuc3R5bGUudmVydGljYWxBbGlnbiA9ICdiYXNlbGluZSdcbiAgbW91bnROb2RlLnN0eWxlLmJveFNpemluZyA9ICdib3JkZXItYm94J1xuICBjaGlwLmFwcGVuZENoaWxkKG1vdW50Tm9kZSlcbiAgY29uc3Qgcm9vdCA9IGNyZWF0ZVJvb3QobW91bnROb2RlKVxuXG4gIGZsdXNoU3luYygoKSA9PiB7XG4gICAgcm9vdC5yZW5kZXIoY3JlYXRlRWxlbWVudChFZGl0YWJsZU1lbnRpb25DaGlwLCB7IG1lbnRpb24gfSkpXG4gIH0pXG5cbiAgaWYgKG1lbnRpb24udHlwZSA9PT0gJ3Rhc2snKSB7XG4gICAgY2hpcC5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcidcbiAgICBjaGlwLm9uY2xpY2sgPSBlID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgb3BlblRhc2tJbkNvclBhbmVsKG1lbnRpb24uaWQsICdkZXRhaWwnKVxuICAgIH1cbiAgfSBlbHNlIGlmIChtZW50aW9uLnR5cGUgPT09ICdwcm9qZWN0Jykge1xuICAgIGNoaXAuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInXG4gICAgY2hpcC5vbmNsaWNrID0gZSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHdpbmRvdy5vcGVuKGAvcHJvamVjdHMvJHttZW50aW9uLmlkfS9kYXNoYm9hcmRgLCAnX2JsYW5rJylcbiAgICB9XG4gIH0gZWxzZSBpZiAobWVudGlvbi50eXBlID09PSAndXNlcicpIHtcbiAgICBsZXQgdG9vbHRpcEVsOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsXG4gICAgbGV0IGNoaXBSZW1vdmVkT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXIgfCBudWxsID0gbnVsbFxuXG4gICAgY29uc3QgcmVtb3ZlVXNlclRvb2x0aXAgPSAoKSA9PiB7XG4gICAgICBjaGlwUmVtb3ZlZE9ic2VydmVyPy5kaXNjb25uZWN0KClcbiAgICAgIGNoaXBSZW1vdmVkT2JzZXJ2ZXIgPSBudWxsXG4gICAgICBpZiAodG9vbHRpcEVsKSB7XG4gICAgICAgIHRvb2x0aXBFbC5yZW1vdmUoKVxuICAgICAgICB0b29sdGlwRWwgPSBudWxsXG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFNpIGVsIGNoaXAgc2UgYm9ycmEgZGVsIGVkaXRvciAoQmFja3NwYWNlLCBldGMuKSBubyBzaWVtcHJlIGhheSBgbW91c2VsZWF2ZWA7IGNlcnJhciBlbCB0b29sdGlwLiAqL1xuICAgIGNvbnN0IHdhdGNoQ2hpcFJlbW92ZWRGcm9tRG9tID0gKCkgPT4ge1xuICAgICAgY29uc3QgcGFyZW50ID0gY2hpcC5wYXJlbnROb2RlXG4gICAgICBpZiAoIXBhcmVudCkgcmV0dXJuXG4gICAgICBjaGlwUmVtb3ZlZE9ic2VydmVyPy5kaXNjb25uZWN0KClcbiAgICAgIGNoaXBSZW1vdmVkT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgICAgIGlmICghY2hpcC5pc0Nvbm5lY3RlZCkgcmVtb3ZlVXNlclRvb2x0aXAoKVxuICAgICAgfSlcbiAgICAgIGNoaXBSZW1vdmVkT2JzZXJ2ZXIub2JzZXJ2ZShwYXJlbnQsIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pXG4gICAgfVxuXG4gICAgY2hpcC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgKCkgPT4ge1xuICAgICAgaWYgKHRvb2x0aXBFbCkgcmV0dXJuXG4gICAgICB0b29sdGlwRWwgPSBjcmVhdGVVc2VyVG9vbHRpcEVsKG1lbnRpb24pXG4gICAgICBjb25zdCByZWN0ID0gY2hpcC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgY29uc3QgbGVmdCA9IE1hdGgubWF4KDgsIE1hdGgubWluKHdpbmRvdy5pbm5lcldpZHRoIC0gMzAwLCByZWN0LmxlZnQpKVxuICAgICAgdG9vbHRpcEVsLnN0eWxlLnRvcCA9IGAke3JlY3QudG9wfXB4YFxuICAgICAgdG9vbHRpcEVsLnN0eWxlLmxlZnQgPSBgJHtsZWZ0fXB4YFxuICAgICAgdG9vbHRpcEVsLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGVZKGNhbGMoLTEwMCUgLSA0cHgpKSdcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodG9vbHRpcEVsKVxuICAgICAgd2F0Y2hDaGlwUmVtb3ZlZEZyb21Eb20oKVxuICAgIH0pXG5cbiAgICBjaGlwLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCByZW1vdmVVc2VyVG9vbHRpcClcbiAgfVxuXG4gIHJldHVybiBjaGlwXG59XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQVNBLGFBQWEsUUFBNEIsT0FBTztBQUN6RCxTQUFTQyxTQUFTLFFBQVEsV0FBVztBQUNyQyxTQUFTQyxVQUFVLFFBQVEsa0JBQWtCO0FBQzdDLE9BQU9DLElBQUksTUFBTSxlQUFlO0FBQ2hDLFNBQVNDLDBCQUEwQixRQUF3QiwrQkFBK0I7QUFDMUYsU0FBU0MscUJBQXFCLFFBQVEsb0NBQW9DO0FBQzFFLFNBQVNDLDRCQUE0QixRQUFRLG9DQUFvQztBQUNqRixTQUFTQyxrQkFBa0IsUUFBUSxtQ0FBbUM7QUFDdEUsU0FBU0Msc0JBQXNCLEVBQUVDLG1CQUFtQixRQUFRLDZCQUE2QjtBQUV6RixJQUFNQyw2QkFBNEMsR0FBRztFQUNuREMsT0FBTyxFQUFFLFFBQVE7RUFDakJDLFVBQVUsRUFBRSxNQUFNO0VBQ2xCQyxTQUFTLEVBQUUsVUFBVTtFQUNyQkMsUUFBUSxFQUFFLENBQUM7RUFDWEMsUUFBUSxFQUFFLE1BQU07RUFDaEJDLFVBQVUsRUFBRSxRQUFRO0VBQ3BCQyxZQUFZLEVBQUUsWUFBWTtFQUMxQkMsU0FBUyxFQUFFO0FBQ2IsQ0FBQzs7QUFFRDtBQUNBLElBQU1DLHlCQUF3QyxHQUFHO0VBQy9DUixPQUFPLEVBQUUsUUFBUTtFQUNqQlMsUUFBUSxFQUFFLE1BQU07RUFDaEJSLFVBQVUsRUFBRSxNQUFNO0VBQ2xCUyxVQUFVLEVBQUUsS0FBSztFQUNqQkMsS0FBSyxFQUFFLFNBQVM7RUFDaEJSLFFBQVEsRUFBRSxDQUFDO0VBQ1hDLFFBQVEsRUFBRSxNQUFNO0VBQ2hCQyxVQUFVLEVBQUUsUUFBUTtFQUNwQkMsWUFBWSxFQUFFLFlBQVk7RUFDMUJDLFNBQVMsRUFBRTtBQUNiLENBQUM7QUFFRCxJQUFNSyw0QkFBNEIsR0FBRyxTQUEvQkEsNEJBQTRCQSxDQUFJQyxNQUFlLEVBQUVDLFlBQW9CLEVBQUs7RUFDOUUsSUFBSSxDQUFDRCxNQUFNLEVBQUU7SUFDWCxvQkFBT3hCLGFBQWEsQ0FBQyxNQUFNLEVBQUU7TUFBRTBCLEtBQUssRUFBRWhCO0lBQThCLENBQUMsRUFBRWUsWUFBWSxDQUFDO0VBQ3RGO0VBQ0Esb0JBQU96QixhQUFhLENBQUMsTUFBTSxFQUFFO0lBQUUwQixLQUFLLEVBQUVQO0VBQTBCLENBQUMsRUFBRU0sWUFBWSxDQUFDO0FBQ2xGLENBQUM7QUFFRCxJQUFNRSxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFJQyxLQUFhLEVBQTBDO0VBQ2xGLElBQU1DLFVBQVUsR0FBR0QsS0FBSyxDQUFDRSxJQUFJLENBQUMsQ0FBQztFQUMvQixJQUFJLENBQUNELFVBQVUsRUFBRSxPQUFPO0lBQUVFLFNBQVMsRUFBRSxFQUFFO0lBQUVDLElBQUksRUFBRTtFQUFHLENBQUM7RUFDbkQsSUFBTUMsa0JBQWtCLEdBQUdKLFVBQVUsQ0FBQ0ssTUFBTSxDQUFDLElBQUksQ0FBQztFQUNsRCxJQUFJRCxrQkFBa0IsR0FBRyxDQUFDLEVBQUUsT0FBTztJQUFFRixTQUFTLEVBQUVGLFVBQVU7SUFBRUcsSUFBSSxFQUFFO0VBQUcsQ0FBQztFQUN0RSxPQUFPO0lBQ0xELFNBQVMsRUFBRUYsVUFBVSxDQUFDTSxLQUFLLENBQUMsQ0FBQyxFQUFFRixrQkFBa0IsQ0FBQztJQUNsREQsSUFBSSxFQUFFSCxVQUFVLENBQUNNLEtBQUssQ0FBQ0Ysa0JBQWtCO0VBQzNDLENBQUM7QUFDSCxDQUFDO0FBTUQsSUFBTUcsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFtQkEsQ0FBQUMsSUFBQSxFQUE4QztFQUFBLElBQXhDQyxPQUFPLEdBQUFELElBQUEsQ0FBUEMsT0FBTztFQUNwQyxJQUFNYixZQUFZLEdBQUduQiw0QkFBNEIsQ0FBQ2dDLE9BQU8sQ0FBQ1YsS0FBSyxDQUFDO0VBQ2hFLElBQU1XLFNBQVMsR0FBRzlCLG1CQUFtQixDQUFDNkIsT0FBTyxDQUFDRSxJQUFJLENBQUMsQ0FBQ0MsRUFBRTtFQUN0RCxJQUFNakIsTUFBTSxHQUFHYyxPQUFPLENBQUNFLElBQUksS0FBSyxNQUFNO0VBQ3RDLElBQU1FLFNBQVMsR0FBR0osT0FBTyxDQUFDRSxJQUFJLEtBQUssU0FBUztFQUM1QyxJQUFNRyxRQUFRLEdBQUduQixNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUU7RUFDakMsSUFBTW9CLE9BQU8sR0FBR3JCLDRCQUE0QixDQUFDQyxNQUFNLEVBQUVDLFlBQVksQ0FBQztFQUVsRSxJQUFNb0IsVUFBeUIsR0FBRztJQUNoQ0MsUUFBUSxFQUFFLFVBQVU7SUFDcEJuQyxPQUFPLEVBQUUsUUFBUTtJQUNqQkMsVUFBVSxFQUFFLE1BQU07SUFDbEJtQyxTQUFTLEVBQUUsWUFBWTtJQUN2QkMsYUFBYSxFQUFFLFVBQVU7SUFDekJqQyxRQUFRLEVBQUU7RUFDWixDQUFDO0VBRUQsSUFBSVMsTUFBTSxJQUFJa0IsU0FBUyxFQUFFO0lBQ3ZCLG9CQUFPMUMsYUFBYSxDQUFDLE1BQU0sRUFBRTtNQUFFMEIsS0FBSyxFQUFFbUI7SUFBVyxDQUFDLEVBQUVELE9BQU8sQ0FBQztFQUM5RDtFQUVBLElBQUFLLG9CQUFBLEdBQTRCdEIsbUJBQW1CLENBQUNGLFlBQVksQ0FBQztJQUFyRE0sU0FBUyxHQUFBa0Isb0JBQUEsQ0FBVGxCLFNBQVM7SUFBRUMsSUFBSSxHQUFBaUIsb0JBQUEsQ0FBSmpCLElBQUk7RUFDdkIsSUFBTWtCLFlBQTJCLEdBQUc7SUFDbEN2QyxPQUFPLEVBQUUsYUFBYTtJQUN0QndDLFVBQVUsRUFBRSxRQUFRO0lBQ3BCSCxhQUFhLEVBQUUsUUFBUTtJQUN2QmhDLFVBQVUsRUFBRSxRQUFRO0lBQ3BCRCxRQUFRLEVBQUU7RUFDWixDQUFDO0VBQ0QsSUFBTXFDLGdCQUErQixHQUFBQyxhQUFBLENBQUFBLGFBQUEsS0FDaEMzQyw2QkFBNkI7SUFDaENDLE9BQU8sRUFBRSxRQUFRO0lBQ2pCSyxVQUFVLEVBQUU7RUFBUSxFQUNyQjtFQUNELElBQU1zQyxTQUF3QixHQUFBRCxhQUFBLENBQUFBLGFBQUEsS0FDekIzQyw2QkFBNkI7SUFDaENDLE9BQU8sRUFBRSxRQUFRO0lBQ2pCcUMsYUFBYSxFQUFFO0VBQVEsRUFDeEI7RUFFRCxvQkFBT2hELGFBQWEsQ0FDbEIsTUFBTSxFQUNOO0lBQUUwQixLQUFLLEVBQUVtQjtFQUFXLENBQUMsZUFDckI3QyxhQUFhLENBQ1gsTUFBTSxFQUNOO0lBQUUwQixLQUFLLEVBQUV3QjtFQUFhLENBQUMsZUFDdkJsRCxhQUFhLENBQ1gsTUFBTSxFQUNOO0lBQ0UwQixLQUFLLEVBQUU7TUFDTGYsT0FBTyxFQUFFLGNBQWM7TUFDdkJxQyxhQUFhLEVBQUUsUUFBUTtNQUN2Qk8sV0FBVyxFQUFFLEtBQUs7TUFDbEIzQyxVQUFVLEVBQUUsR0FBRztNQUNmNEMsS0FBSyxFQUFFO0lBQ1Q7RUFDRixDQUFDLEVBQ0RuRCxxQkFBcUIsQ0FBQ2lDLE9BQU8sQ0FBQ0UsSUFBSSxFQUFFRCxTQUFTLEVBQUVELE9BQU8sQ0FBQ21CLEVBQUUsRUFBRWQsUUFBUSxDQUNyRSxDQUFDLGVBQ0QzQyxhQUFhLENBQUMsTUFBTSxFQUFFO0lBQUUwQixLQUFLLEVBQUUwQjtFQUFpQixDQUFDLEVBQUVyQixTQUFTLENBQzlELENBQUMsRUFDREMsSUFBSSxnQkFBR2hDLGFBQWEsQ0FBQyxNQUFNLEVBQUU7SUFBRTBCLEtBQUssRUFBRTRCO0VBQVUsQ0FBQyxFQUFFdEIsSUFBSSxDQUFDLEdBQUcsSUFDN0QsQ0FBQztBQUNILENBQUM7QUFFRCxJQUFNMEIsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFnQkEsQ0FBSUMsSUFBWSxFQUFhO0VBQUEsSUFBQUMsUUFBQTtFQUNqRCxJQUFNQyxPQUFPLEdBQUdGLElBQUksQ0FBQzdCLElBQUksQ0FBQyxDQUFDO0VBQzNCLElBQUksQ0FBQytCLE9BQU8sRUFBRSxPQUFPLEdBQUc7RUFDeEIsSUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUNFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQ0MsTUFBTSxDQUFDQyxPQUFPLENBQUM7RUFDbEQsSUFBSUgsS0FBSyxDQUFDSSxNQUFNLElBQUksQ0FBQyxFQUFFO0lBQUEsSUFBQUMsZUFBQSxFQUFBQyxPQUFBLEVBQUFDLGFBQUEsRUFBQUMsTUFBQTtJQUNyQixJQUFNQyxLQUFLLElBQUFKLGVBQUEsSUFBQUMsT0FBQSxHQUFHTixLQUFLLENBQUMsQ0FBQyxDQUFDLGNBQUFNLE9BQUEsdUJBQVJBLE9BQUEsQ0FBVUksTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFBTCxlQUFBLGNBQUFBLGVBQUEsR0FBSSxFQUFFO0lBQ3ZDLElBQU1NLElBQUksSUFBQUosYUFBQSxJQUFBQyxNQUFBLEdBQUdSLEtBQUssQ0FBQ0EsS0FBSyxDQUFDSSxNQUFNLEdBQUcsQ0FBQyxDQUFDLGNBQUFJLE1BQUEsdUJBQXZCQSxNQUFBLENBQXlCRSxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQUFILGFBQUEsY0FBQUEsYUFBQSxHQUFJLEVBQUU7SUFDckQsT0FBTyxHQUFBSyxNQUFBLENBQUdILEtBQUssRUFBQUcsTUFBQSxDQUFHRCxJQUFJLEVBQUdFLFdBQVcsQ0FBQyxDQUFDO0VBQ3hDO0VBQ0EsSUFBTUMsTUFBTSxJQUFBaEIsUUFBQSxHQUFHRSxLQUFLLENBQUMsQ0FBQyxDQUFDLGNBQUFGLFFBQUEsY0FBQUEsUUFBQSxHQUFJLEVBQUU7RUFDN0IsT0FBT2dCLE1BQU0sQ0FBQ1YsTUFBTSxJQUFJLENBQUMsR0FBR1UsTUFBTSxDQUFDekMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQ3dDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQ0MsTUFBTSxDQUFDSixNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFRyxXQUFXLENBQUMsQ0FBQztBQUN4RyxDQUFDO0FBRUQsSUFBTUUsWUFBWSxtREFBbUQ7QUFDckUsSUFBTUMsdUJBQXVCLEdBQUcsa0NBQWtDO0FBQ2xFLElBQU1DLHVCQUF1QixHQUFHO0VBQzlCQyxVQUFVLEVBQUVILFlBQVk7RUFDeEJ6RCxRQUFRLEVBQUUsTUFBTTtFQUNoQkMsVUFBVSxFQUFFLEtBQUs7RUFDakJULFVBQVUsRUFBRSxNQUFNO0VBQ2xCVSxLQUFLLEVBQUV3RDtBQUNULENBQUM7QUFFRCxJQUFNRyxzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXNCQSxDQUFJQyxLQUFjLEVBQWE7RUFDekQsSUFBSSxPQUFPQSxLQUFLLEtBQUssUUFBUSxFQUFFLE9BQU8sRUFBRTtFQUN4QyxPQUFPQSxLQUFLLENBQUNwRCxJQUFJLENBQUMsQ0FBQztBQUNyQixDQUFDOztBQUVEO0FBQ0EsSUFBTXFELHlCQUF5QixHQUFHLEdBQUc7QUFDckM7QUFDQSxJQUFNQyxxQkFBcUIsR0FBRyxFQUFFO0FBQ2hDO0FBQ0EsSUFBTUMsMEJBQTBCLEdBQUcsRUFBRTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1DLDRCQUE0QixHQUFHSCx5QkFBeUIsR0FBR0MscUJBQXFCLEdBQUdDLDBCQUEwQjtBQUNuSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1FLDhCQUE4QixHQUFHQyxJQUFJLENBQUNDLEtBQUssQ0FBQ0gsNEJBQTRCLEdBQUcsSUFBSSxDQUFDO0FBRXRGLElBQU1JLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQUlwRCxPQUF1QixFQUFrQjtFQUNwRSxJQUFRVixLQUFLLEdBQWVVLE9BQU8sQ0FBM0JWLEtBQUs7SUFBRStELFFBQVEsR0FBS3JELE9BQU8sQ0FBcEJxRCxRQUFRO0VBQ3ZCLElBQU1DLE9BQU8sR0FBRyxRQUFPRCxRQUFRLGFBQVJBLFFBQVEsdUJBQVJBLFFBQVEsQ0FBRUMsT0FBTyxNQUFLLFFBQVEsR0FBR0QsUUFBUSxDQUFDQyxPQUFPLEdBQUcsSUFBSTtFQUMvRSxJQUFNQyxZQUFZLEdBQUdaLHNCQUFzQixDQUFDVSxRQUFRLGFBQVJBLFFBQVEsdUJBQVJBLFFBQVEsQ0FBRUUsWUFBWSxDQUFDO0VBQ25FLElBQU1DLFlBQVksR0FDaEJELFlBQVksSUFDWjFGLElBQUksQ0FBQzRGLENBQUMsQ0FBQywrQkFBK0IsRUFBRTtJQUN0Q0MsWUFBWSxFQUFFO0VBQ2hCLENBQUMsQ0FBQztFQUNKLElBQU1DLEtBQUssR0FBR2hCLHNCQUFzQixDQUFDVSxRQUFRLGFBQVJBLFFBQVEsdUJBQVJBLFFBQVEsQ0FBRU0sS0FBSyxDQUFDO0VBQ3JEO0VBQ0EsSUFBTUMsWUFBWSxHQUFHakIsc0JBQXNCLENBQUNVLFFBQVEsYUFBUkEsUUFBUSx1QkFBUkEsUUFBUSxDQUFFaEMsSUFBSSxDQUFDO0VBQzNELElBQU13QyxlQUFlLEdBQUcsQ0FBQ0QsWUFBWSxJQUFJakIsc0JBQXNCLENBQUNyRCxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUVFLElBQUksQ0FBQyxDQUFDO0VBRXJGLElBQU1zRSxPQUFPLEdBQUdDLFFBQVEsQ0FBQ3JHLGFBQWEsQ0FBQyxLQUFLLENBQUM7RUFDN0NzRyxNQUFNLENBQUNDLE1BQU0sQ0FBQ0gsT0FBTyxDQUFDMUUsS0FBSyxFQUFFO0lBQzNCb0IsUUFBUSxFQUFFLE9BQU87SUFDakIwRCxNQUFNLEVBQUUsTUFBTTtJQUNkMUYsUUFBUSxLQUFBNEQsTUFBQSxDQUFLUyx5QkFBeUIsT0FBSTtJQUMxQzNCLEtBQUssRUFBRSxhQUFhO0lBQ3BCekMsUUFBUSxFQUFFLGdDQUFnQztJQUMxQzBGLE9BQU8sRUFBRSxVQUFVO0lBQ25COUYsT0FBTyxFQUFFLE1BQU07SUFDZitGLGFBQWEsRUFBRSxRQUFRO0lBQ3ZCdkQsVUFBVSxFQUFFLFlBQVk7SUFDeEJ3RCxZQUFZLEVBQUUsS0FBSztJQUNuQkMsTUFBTSxFQUFFLDRDQUE0QztJQUNwREMsVUFBVSxFQUFFLE1BQU07SUFDbEJDLFNBQVMsRUFBRSw0REFBNEQ7SUFDdkUvRCxTQUFTLEVBQUUsWUFBWTtJQUN2QmdFLGFBQWEsRUFBRSxNQUFNO0lBQ3JCQyxRQUFRLEVBQUU7RUFDWixDQUFDLENBQUM7RUFFRixJQUFNQyxHQUFHLEdBQUdaLFFBQVEsQ0FBQ3JHLGFBQWEsQ0FBQyxLQUFLLENBQUM7RUFDekNzRyxNQUFNLENBQUNDLE1BQU0sQ0FBQ1UsR0FBRyxDQUFDdkYsS0FBSyxFQUFFO0lBQ3ZCZixPQUFPLEVBQUUsTUFBTTtJQUNmd0MsVUFBVSxFQUFFLFFBQVE7SUFDcEIrRCxHQUFHLEVBQUUsS0FBSztJQUNWMUQsS0FBSyxFQUFFLGFBQWE7SUFDcEJ6QyxRQUFRLEVBQUUsTUFBTTtJQUNoQkQsUUFBUSxFQUFFO0VBQ1osQ0FBQyxDQUFDOztFQUVGO0VBQ0EsSUFBTXFHLFVBQVUsR0FBR2QsUUFBUSxDQUFDckcsYUFBYSxDQUFDLEtBQUssQ0FBQztFQUNoRHNHLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDWSxVQUFVLENBQUN6RixLQUFLLEVBQUU7SUFDOUI4QixLQUFLLEVBQUUsTUFBTTtJQUNiNEQsTUFBTSxFQUFFLE1BQU07SUFDZHRHLFFBQVEsRUFBRSxNQUFNO0lBQ2hCNkYsWUFBWSxFQUFFLE1BQU07SUFDcEJLLFFBQVEsRUFBRSxRQUFRO0lBQ2xCckcsT0FBTyxFQUFFLE1BQU07SUFDZndDLFVBQVUsRUFBRSxRQUFRO0lBQ3BCa0UsY0FBYyxFQUFFLFFBQVE7SUFDeEI7SUFDQVIsVUFBVSxFQUFFLG9DQUFvQztJQUNoRFMsVUFBVSxFQUFFO0VBQ2QsQ0FBQyxDQUFDO0VBRUYsSUFBTUMsUUFBUSxHQUFHN0QsZ0JBQWdCLENBQUN5QyxlQUFlLENBQUM7RUFFbEQsSUFBTXFCLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUEsRUFBc0I7SUFDaEQsSUFBTUMsRUFBRSxHQUFHcEIsUUFBUSxDQUFDckcsYUFBYSxDQUFDLE1BQU0sQ0FBQztJQUN6Q3lILEVBQUUsQ0FBQ0MsV0FBVyxHQUFHSCxRQUFRO0lBQ3pCakIsTUFBTSxDQUFDQyxNQUFNLENBQUNrQixFQUFFLENBQUMvRixLQUFLLEVBQUU7TUFDdEJOLFFBQVEsRUFBRSxNQUFNO01BQ2hCQyxVQUFVLEVBQUUsS0FBSztNQUNqQjtNQUNBQyxLQUFLLEVBQUUsdUNBQXVDO01BQzlDVixVQUFVLEVBQUUsR0FBRztNQUNmb0UsVUFBVSxFQUFFSDtJQUNkLENBQUMsQ0FBQztJQUNGLE9BQU80QyxFQUFFO0VBQ1gsQ0FBQztFQUVELElBQUk3QixPQUFPLEVBQUU7SUFDWCxJQUFNK0IsR0FBRyxHQUFHdEIsUUFBUSxDQUFDckcsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUN6QzJILEdBQUcsQ0FBQ0MsR0FBRyxHQUFHaEMsT0FBTztJQUNqQitCLEdBQUcsQ0FBQ0UsR0FBRyxHQUFHLEVBQUU7SUFDWkYsR0FBRyxDQUFDRyxTQUFTLEdBQUcsS0FBSztJQUNyQnhCLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDb0IsR0FBRyxDQUFDakcsS0FBSyxFQUFFO01BQ3ZCOEIsS0FBSyxFQUFFLE1BQU07TUFDYjRELE1BQU0sRUFBRSxNQUFNO01BQ2RXLFNBQVMsRUFBRSxPQUFPO01BQ2xCcEgsT0FBTyxFQUFFLE9BQU87TUFDaEJnRyxZQUFZLEVBQUU7SUFDaEIsQ0FBQyxDQUFDO0lBQ0ZnQixHQUFHLENBQUNLLE9BQU8sR0FBRyxZQUFNO01BQ2xCTCxHQUFHLENBQUNNLE1BQU0sQ0FBQyxDQUFDO01BQ1pkLFVBQVUsQ0FBQ2UsV0FBVyxDQUFDVixzQkFBc0IsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNETCxVQUFVLENBQUNlLFdBQVcsQ0FBQ1AsR0FBRyxDQUFDO0VBQzdCLENBQUMsTUFBTTtJQUNMUixVQUFVLENBQUNlLFdBQVcsQ0FBQ1Ysc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0VBQ2xEOztFQUVBO0VBQ0EsSUFBTVcsT0FBTyxHQUFHOUIsUUFBUSxDQUFDckcsYUFBYSxDQUFDLEtBQUssQ0FBQztFQUM3Q3NHLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDNEIsT0FBTyxDQUFDekcsS0FBSyxFQUFFO0lBQzNCZixPQUFPLEVBQUUsTUFBTTtJQUNmK0YsYUFBYSxFQUFFLFFBQVE7SUFDdkJXLGNBQWMsRUFBRSxRQUFRO0lBQ3hCbEUsVUFBVSxFQUFFLFlBQVk7SUFDeEIrRCxHQUFHLEVBQUUsS0FBSztJQUNWcEcsUUFBUSxFQUFFLEdBQUc7SUFDYjBDLEtBQUssRUFBRSxhQUFhO0lBQ3BCekMsUUFBUSxFQUFFO0VBQ1osQ0FBQyxDQUFDOztFQUVGO0VBQ0EsSUFBTXFILE9BQU8sR0FBRy9CLFFBQVEsQ0FBQ3JHLGFBQWEsQ0FBQyxLQUFLLENBQUM7RUFDN0NzRyxNQUFNLENBQUNDLE1BQU0sQ0FBQzZCLE9BQU8sQ0FBQzFHLEtBQUssRUFBRTtJQUMzQmYsT0FBTyxFQUFFLE1BQU07SUFDZndDLFVBQVUsRUFBRSxZQUFZO0lBQ3hCK0QsR0FBRyxFQUFFLEtBQUs7SUFDVnBHLFFBQVEsRUFBRSxHQUFHO0lBQ2IwQyxLQUFLLEVBQUUsYUFBYTtJQUNwQnpDLFFBQVEsS0FBQTJELE1BQUEsQ0FBS1ksNEJBQTRCO0VBQzNDLENBQUMsQ0FBQztFQUVGLElBQU0rQyxRQUFRLEdBQUdoQyxRQUFRLENBQUNyRyxhQUFhLENBQUMsTUFBTSxDQUFDO0VBQy9DcUksUUFBUSxDQUFDWCxXQUFXLEdBQUc5RixLQUFLO0VBQzVCMEUsTUFBTSxDQUFDQyxNQUFNLENBQUM4QixRQUFRLENBQUMzRyxLQUFLLEVBQUU7SUFDNUI0RyxJQUFJLEVBQUUsVUFBVTtJQUNoQnhILFFBQVEsRUFBRSxHQUFHO0lBQ2JDLFFBQVEsS0FBQTJELE1BQUEsQ0FBS2EsOEJBQThCLE9BQUk7SUFDL0N5QixRQUFRLEVBQUUsUUFBUTtJQUNsQnVCLFlBQVksRUFBRSxVQUFVO0lBQ3hCdkgsVUFBVSxFQUFFLFFBQVE7SUFDcEJNLEtBQUssRUFBRSxtQ0FBbUM7SUFDMUMwRCxVQUFVLEVBQUVILFlBQVk7SUFDeEJ6RCxRQUFRLEVBQUUsTUFBTTtJQUNoQkMsVUFBVSxFQUFFLEtBQUs7SUFDakJULFVBQVUsRUFBRTtFQUNkLENBQUMsQ0FBQztFQUNGd0gsT0FBTyxDQUFDRixXQUFXLENBQUNHLFFBQVEsQ0FBQztFQUU3QixJQUFNRyxHQUFHLEdBQUduQyxRQUFRLENBQUNyRyxhQUFhLENBQUMsTUFBTSxDQUFDO0VBQzFDd0ksR0FBRyxDQUFDZCxXQUFXLEdBQUcsR0FBRztFQUNyQnBCLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDaUMsR0FBRyxDQUFDOUcsS0FBSyxFQUFBMkIsYUFBQSxDQUFBQSxhQUFBLEtBQU8wQix1QkFBdUI7SUFBRXVDLFVBQVUsRUFBRTtFQUFHLEVBQUUsQ0FBQztFQUN6RWMsT0FBTyxDQUFDRixXQUFXLENBQUNNLEdBQUcsQ0FBQztFQUV4QixJQUFNQyxPQUFPLEdBQUdwQyxRQUFRLENBQUNyRyxhQUFhLENBQUMsTUFBTSxDQUFDO0VBQzlDeUksT0FBTyxDQUFDZixXQUFXLEdBQUc1QixZQUFZO0VBQ2xDUSxNQUFNLENBQUNDLE1BQU0sQ0FBQ2tDLE9BQU8sQ0FBQy9HLEtBQUssRUFBQTJCLGFBQUEsQ0FBQUEsYUFBQSxLQUN0QjBCLHVCQUF1QjtJQUMxQnVELElBQUksRUFBRSxVQUFVO0lBQ2hCeEgsUUFBUSxFQUFFLEdBQUc7SUFDYmtHLFFBQVEsRUFBRSxRQUFRO0lBQ2xCdUIsWUFBWSxFQUFFLFVBQVU7SUFDeEJ2SCxVQUFVLEVBQUU7RUFBUSxFQUNyQixDQUFDO0VBQ0ZvSCxPQUFPLENBQUNGLFdBQVcsQ0FBQ08sT0FBTyxDQUFDO0VBRTVCTixPQUFPLENBQUNELFdBQVcsQ0FBQ0UsT0FBTyxDQUFDO0VBRTVCLElBQUluQyxLQUFLLEVBQUU7SUFDVCxJQUFNeUMsU0FBUyxHQUFHckMsUUFBUSxDQUFDckcsYUFBYSxDQUFDLE1BQU0sQ0FBQztJQUNoRDBJLFNBQVMsQ0FBQ2hCLFdBQVcsR0FBR3pCLEtBQUs7SUFDN0JLLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDbUMsU0FBUyxDQUFDaEgsS0FBSyxFQUFBMkIsYUFBQSxDQUFBQSxhQUFBLEtBQ3hCMEIsdUJBQXVCO01BQzFCL0QsVUFBVSxFQUFFLFFBQVE7TUFDcEJELFFBQVEsRUFBRSxNQUFNO01BQ2hCaUcsUUFBUSxFQUFFLFFBQVE7TUFDbEJ1QixZQUFZLEVBQUU7SUFBVSxFQUN6QixDQUFDO0lBQ0ZKLE9BQU8sQ0FBQ0QsV0FBVyxDQUFDUSxTQUFTLENBQUM7RUFDaEM7RUFFQXpCLEdBQUcsQ0FBQ2lCLFdBQVcsQ0FBQ2YsVUFBVSxDQUFDO0VBQzNCRixHQUFHLENBQUNpQixXQUFXLENBQUNDLE9BQU8sQ0FBQztFQUN4Qi9CLE9BQU8sQ0FBQzhCLFdBQVcsQ0FBQ2pCLEdBQUcsQ0FBQztFQUV4QixPQUFPYixPQUFPO0FBQ2hCLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTXVDLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBZ0JBLENBQUlyRyxPQUF1QixFQUFzQjtFQUM1RSxJQUFNc0csSUFBSSxHQUFHdkMsUUFBUSxDQUFDckcsYUFBYSxDQUFDLE1BQU0sQ0FBQztFQUMzQzRJLElBQUksQ0FBQ0MsWUFBWSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQztFQUM3Q0QsSUFBSSxDQUFDQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsTUFBTSxDQUFDO0VBQzlDRCxJQUFJLENBQUNFLFNBQVMsR0FBRzFJLDBCQUEwQjtFQUMzQ3dJLElBQUksQ0FBQ0MsWUFBWSxDQUFDLG1CQUFtQixFQUFFdkcsT0FBTyxDQUFDRSxJQUFJLENBQUM7RUFDcERvRyxJQUFJLENBQUNDLFlBQVksQ0FBQyxzQkFBc0IsRUFBRSxRQUFRLENBQUM7RUFDbkRySSxzQkFBc0IsQ0FBQ29JLElBQUksRUFBRXRHLE9BQU8sQ0FBQ0UsSUFBSSxDQUFDO0VBQzFDLElBQU1oQixNQUFNLEdBQUdjLE9BQU8sQ0FBQ0UsSUFBSSxLQUFLLE1BQU07RUFDdEMsSUFBTXVHLE1BQU0sR0FBRztJQUNiaEcsU0FBUyxFQUFFLFlBQVk7SUFDdkJDLGFBQWEsRUFBRSxVQUFVO0lBQ3pCZ0UsUUFBUSxFQUFFLFNBQVM7SUFDbkJqRyxRQUFRLEVBQUU7RUFDWixDQUFVO0VBQ1YsSUFBSVMsTUFBTSxFQUFFO0lBQ1Y4RSxNQUFNLENBQUNDLE1BQU0sQ0FBQ3FDLElBQUksQ0FBQ2xILEtBQUssRUFBRXFILE1BQU0sRUFBRTtNQUNoQ25JLFVBQVUsRUFBRSxNQUFNO01BQ2xCd0csTUFBTSxFQUFFLE1BQU07TUFDZDRCLFNBQVMsRUFBRSxNQUFNO01BQ2pCQyxTQUFTLEVBQUU7SUFDYixDQUFDLENBQUM7RUFDSixDQUFDLE1BQU07SUFDTDNDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDcUMsSUFBSSxDQUFDbEgsS0FBSyxFQUFFcUgsTUFBTSxFQUFFO01BQ2hDbkksVUFBVSxFQUFFLE1BQU07TUFDbEJ3RyxNQUFNLEVBQUUsTUFBTTtNQUNkNEIsU0FBUyxFQUFFLE1BQU07TUFDakJDLFNBQVMsRUFBRTtJQUNiLENBQUMsQ0FBQztFQUNKO0VBQ0EsSUFBTUMsU0FBUyxHQUFHN0MsUUFBUSxDQUFDckcsYUFBYSxDQUFDLE1BQU0sQ0FBQztFQUNoRGtKLFNBQVMsQ0FBQ3hILEtBQUssQ0FBQ2YsT0FBTyxHQUFHLFFBQVE7RUFDbEN1SSxTQUFTLENBQUN4SCxLQUFLLENBQUNYLFFBQVEsR0FBRyxNQUFNO0VBQ2pDbUksU0FBUyxDQUFDeEgsS0FBSyxDQUFDc0IsYUFBYSxHQUFHLFVBQVU7RUFDMUNrRyxTQUFTLENBQUN4SCxLQUFLLENBQUNxQixTQUFTLEdBQUcsWUFBWTtFQUN4QzZGLElBQUksQ0FBQ1YsV0FBVyxDQUFDZ0IsU0FBUyxDQUFDO0VBQzNCLElBQU1DLElBQUksR0FBR2pKLFVBQVUsQ0FBQ2dKLFNBQVMsQ0FBQztFQUVsQ2pKLFNBQVMsQ0FBQyxZQUFNO0lBQ2RrSixJQUFJLENBQUNDLE1BQU0sY0FBQ3BKLGFBQWEsQ0FBQ29DLG1CQUFtQixFQUFFO01BQUVFLE9BQU8sRUFBUEE7SUFBUSxDQUFDLENBQUMsQ0FBQztFQUM5RCxDQUFDLENBQUM7RUFFRixJQUFJQSxPQUFPLENBQUNFLElBQUksS0FBSyxNQUFNLEVBQUU7SUFDM0JvRyxJQUFJLENBQUNsSCxLQUFLLENBQUMySCxNQUFNLEdBQUcsU0FBUztJQUM3QlQsSUFBSSxDQUFDVSxPQUFPLEdBQUcsVUFBQUMsQ0FBQyxFQUFJO01BQ2xCQSxDQUFDLENBQUNDLGNBQWMsQ0FBQyxDQUFDO01BQ2xCRCxDQUFDLENBQUNFLGVBQWUsQ0FBQyxDQUFDO01BQ25CbEosa0JBQWtCLENBQUMrQixPQUFPLENBQUNtQixFQUFFLEVBQUUsUUFBUSxDQUFDO0lBQzFDLENBQUM7RUFDSCxDQUFDLE1BQU0sSUFBSW5CLE9BQU8sQ0FBQ0UsSUFBSSxLQUFLLFNBQVMsRUFBRTtJQUNyQ29HLElBQUksQ0FBQ2xILEtBQUssQ0FBQzJILE1BQU0sR0FBRyxTQUFTO0lBQzdCVCxJQUFJLENBQUNVLE9BQU8sR0FBRyxVQUFBQyxDQUFDLEVBQUk7TUFDbEJBLENBQUMsQ0FBQ0MsY0FBYyxDQUFDLENBQUM7TUFDbEJELENBQUMsQ0FBQ0UsZUFBZSxDQUFDLENBQUM7TUFDbkJDLE1BQU0sQ0FBQ0MsSUFBSSxjQUFBakYsTUFBQSxDQUFjcEMsT0FBTyxDQUFDbUIsRUFBRSxpQkFBYyxRQUFRLENBQUM7SUFDNUQsQ0FBQztFQUNILENBQUMsTUFBTSxJQUFJbkIsT0FBTyxDQUFDRSxJQUFJLEtBQUssTUFBTSxFQUFFO0lBQ2xDLElBQUlvSCxTQUE2QixHQUFHLElBQUk7SUFDeEMsSUFBSUMsbUJBQTRDLEdBQUcsSUFBSTtJQUV2RCxJQUFNQyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUFBLEVBQVM7TUFBQSxJQUFBQyxvQkFBQTtNQUM5QixDQUFBQSxvQkFBQSxHQUFBRixtQkFBbUIsY0FBQUUsb0JBQUEsZUFBbkJBLG9CQUFBLENBQXFCQyxVQUFVLENBQUMsQ0FBQztNQUNqQ0gsbUJBQW1CLEdBQUcsSUFBSTtNQUMxQixJQUFJRCxTQUFTLEVBQUU7UUFDYkEsU0FBUyxDQUFDM0IsTUFBTSxDQUFDLENBQUM7UUFDbEIyQixTQUFTLEdBQUcsSUFBSTtNQUNsQjtJQUNGLENBQUM7O0lBRUQ7SUFDQSxJQUFNSyx1QkFBdUIsR0FBRyxTQUExQkEsdUJBQXVCQSxDQUFBLEVBQVM7TUFBQSxJQUFBQyxxQkFBQTtNQUNwQyxJQUFNQyxNQUFNLEdBQUd2QixJQUFJLENBQUN3QixVQUFVO01BQzlCLElBQUksQ0FBQ0QsTUFBTSxFQUFFO01BQ2IsQ0FBQUQscUJBQUEsR0FBQUwsbUJBQW1CLGNBQUFLLHFCQUFBLGVBQW5CQSxxQkFBQSxDQUFxQkYsVUFBVSxDQUFDLENBQUM7TUFDakNILG1CQUFtQixHQUFHLElBQUlRLGdCQUFnQixDQUFDLFlBQU07UUFDL0MsSUFBSSxDQUFDekIsSUFBSSxDQUFDMEIsV0FBVyxFQUFFUixpQkFBaUIsQ0FBQyxDQUFDO01BQzVDLENBQUMsQ0FBQztNQUNGRCxtQkFBbUIsQ0FBQ1UsT0FBTyxDQUFDSixNQUFNLEVBQUU7UUFBRUssU0FBUyxFQUFFLElBQUk7UUFBRUMsT0FBTyxFQUFFO01BQUssQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRDdCLElBQUksQ0FBQzhCLGdCQUFnQixDQUFDLFlBQVksRUFBRSxZQUFNO01BQ3hDLElBQUlkLFNBQVMsRUFBRTtNQUNmQSxTQUFTLEdBQUdsRSxtQkFBbUIsQ0FBQ3BELE9BQU8sQ0FBQztNQUN4QyxJQUFNcUksSUFBSSxHQUFHL0IsSUFBSSxDQUFDZ0MscUJBQXFCLENBQUMsQ0FBQztNQUN6QyxJQUFNQyxJQUFJLEdBQUdyRixJQUFJLENBQUNzRixHQUFHLENBQUMsQ0FBQyxFQUFFdEYsSUFBSSxDQUFDdUYsR0FBRyxDQUFDckIsTUFBTSxDQUFDc0IsVUFBVSxHQUFHLEdBQUcsRUFBRUwsSUFBSSxDQUFDRSxJQUFJLENBQUMsQ0FBQztNQUN0RWpCLFNBQVMsQ0FBQ2xJLEtBQUssQ0FBQ3VKLEdBQUcsTUFBQXZHLE1BQUEsQ0FBTWlHLElBQUksQ0FBQ00sR0FBRyxPQUFJO01BQ3JDckIsU0FBUyxDQUFDbEksS0FBSyxDQUFDbUosSUFBSSxNQUFBbkcsTUFBQSxDQUFNbUcsSUFBSSxPQUFJO01BQ2xDakIsU0FBUyxDQUFDbEksS0FBSyxDQUFDd0osU0FBUyxHQUFHLCtCQUErQjtNQUMzRDdFLFFBQVEsQ0FBQzhFLElBQUksQ0FBQ2pELFdBQVcsQ0FBQzBCLFNBQVMsQ0FBQztNQUNwQ0ssdUJBQXVCLENBQUMsQ0FBQztJQUMzQixDQUFDLENBQUM7SUFFRnJCLElBQUksQ0FBQzhCLGdCQUFnQixDQUFDLFlBQVksRUFBRVosaUJBQWlCLENBQUM7RUFDeEQ7RUFFQSxPQUFPbEIsSUFBSTtBQUNiLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=