@bcrumbs.net/inbox 0.0.70 → 0.0.71

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 (3) hide show
  1. package/index.cjs.js +34 -22
  2. package/index.esm.js +34 -22
  3. package/package.json +1 -1
package/index.cjs.js CHANGED
@@ -120193,7 +120193,7 @@ const Container = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "producti
120193
120193
  } : {
120194
120194
  name: "84oqz2",
120195
120195
  styles: "display:flex;flex-direction:column;gap:16px;width:100%",
120196
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbnRhY3RJbmZvLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQjZCIiwiZmlsZSI6IkNvbnRhY3RJbmZvLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXdhaXRlciB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5pbXBvcnQgeyBCdXR0b24sIEJDVmFsaWRhdGlvblR5cGVzLCB1c2VCQ0Zvcm0sIHRyaWdnZXJFcnJvclRvYXN0LCBOZXdUZXh0V2VpZ2h0LCBUZXh0U2l6ZVJlbSwgTmV3Q29sb3JzLCB9IGZyb20gJ0BiY3J1bWJzLm5ldC9iYy11aSc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjb250YWN0RGVmaW5pdGlvbiBmcm9tICcuLi9jb25maWcvY29udGFjdERlZmluaXRpb24nO1xuaW1wb3J0IHsgTW9kYWxUaXRsZSB9IGZyb20gJy4uLy4uL2dlbmVyaWMvY29tcG9uZW50cy9Db250YWluZXJzJztcbmltcG9ydCB7IHVzZVRhZ0NsaWVudE11dGF0aW9uLCB1c2VVbnRhZ0NsaWVudE11dGF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vZ3JhcGhxbC5hdXRvZ2VuZXJhdGVkJztcbmltcG9ydCB7IEZPUk1fSU5JVCwgRm9ybUZpZWxkcyB9IGZyb20gJy4uL2NvbmZpZy9jb250YWN0Rm9ybSc7XG5pbXBvcnQgQ29udGFjdEZvcm1GaWVsZHMgZnJvbSAnLi9Db250YWN0Rm9ybUZpZWxkcyc7XG5pbXBvcnQgVGFnc1NlbGVjdG9yIGZyb20gJy4uLy4uL2luYm94L2NvbXBvbmVudHMvTmV3RGV0YWlscy9UYWdzU2VsZWN0b3InO1xuaW1wb3J0IHVzZVRhZ3MgZnJvbSAnLi4vLi4vaW5ib3gvaG9va3MvdXNlVGFncyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgQ2xpZW50SW5mb0xvYWRlciBmcm9tICcuLi8uLi9pbmJveC9jb21wb25lbnRzL05ld0RldGFpbHMvQ29tcG9uZW50TG9hZGVycy9DbGllbnRJbmZvTG9hZGVyJztcbmltcG9ydCB7IHVzZVRoZW1lQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvdGhlbWVDb250ZXh0JztcbmltcG9ydCB7IGNvcmVDbGllbnQgfSBmcm9tICdAYmNydW1icy5uZXQvYmMtYXBpJztcbmltcG9ydCB7IGF1dGggfSBmcm9tICdAYmNydW1icy5uZXQvYmMtc2hhcmVkJztcbmNvbnN0IENvbnRhaW5lciA9IHN0eWxlZC5kaXYgYFxyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6IDE2cHg7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbmA7XG5jb25zdCB1c2VDb250YWN0TXV0YXRpb25zID0gKCkgPT4ge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICBjb25zdCBbdGFnQ2xpZW50XSA9IHVzZVRhZ0NsaWVudE11dGF0aW9uKHsgY2xpZW50OiBjb3JlQ2xpZW50IH0pO1xuICAgIGNvbnN0IFt1bnRhZ0NsaWVudF0gPSB1c2VVbnRhZ0NsaWVudE11dGF0aW9uKHsgY2xpZW50OiBjb3JlQ2xpZW50IH0pO1xuICAgIGNvbnN0IFtjcmVhdGVBY3Rpb25dID0gKChfYSA9IGNvbnRhY3REZWZpbml0aW9uLmNyZWF0ZU11dGF0aW9uKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVhY3RIb29rKHtcbiAgICAgICAgZmV0Y2hQb2xpY3k6ICduby1jYWNoZScsXG4gICAgICAgIGNsaWVudDogKF9iID0gY29udGFjdERlZmluaXRpb24uY2xpZW50KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBjb3JlQ2xpZW50LFxuICAgIH0pKSB8fCBbXTtcbiAgICBjb25zdCBbcGF0Y2hBY3Rpb25dID0gKChfYyA9IGNvbnRhY3REZWZpbml0aW9uLnBhdGNoTXV0YXRpb24pID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5yZWFjdEhvb2soe1xuICAgICAgICBmZXRjaFBvbGljeTogJ25vLWNhY2hlJyxcbiAgICAgICAgY2xpZW50OiAoX2QgPSBjb250YWN0RGVmaW5pdGlvbi5jbGllbnQpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IGNvcmVDbGllbnQsXG4gICAgfSkpIHx8IFtdO1xuICAgIHJldHVybiB7IHRhZ0NsaWVudCwgdW50YWdDbGllbnQsIGNyZWF0ZUFjdGlvbiwgcGF0Y2hBY3Rpb24gfTtcbn07XG5jb25zdCBDb250YWN0SW5mbyA9ICh7IHNldENvbnRhY3RJbmZvSXNPcGVuLCBjb250YWN0SW5mb0lzT3Blbiwgb25Db250YWN0Q3JlYXRlZCwgY29udGFjdERhdGEsIGluaXRpYWxDb250YWN0RGF0YSB9KSA9PiB7XG4gICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICAgIGNvbnN0IHsgcnRsIH0gPSB1c2VUaGVtZUNvbnRleHQoKTtcbiAgICBjb25zdCBpc0VkaXRNb2RlID0gQm9vbGVhbihjb250YWN0RGF0YSk7XG4gICAgY29uc3QgW2N1cnJlbnRDb250YWN0SWQsIHNldEN1cnJlbnRDb250YWN0SWRdID0gdXNlU3RhdGUoKF9hID0gY29udGFjdERhdGEgPT09IG51bGwgfHwgY29udGFjdERhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbnRhY3REYXRhLmlkKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsKTtcbiAgICBjb25zdCBbYWRkZWRUYWdzLCBzZXRBZGRlZFRhZ3NdID0gdXNlU3RhdGUoKGNvbnRhY3REYXRhID09PSBudWxsIHx8IGNvbnRhY3REYXRhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb250YWN0RGF0YS50YWdzKSB8fCBbXSk7XG4gICAgY29uc3QgeyBjbGllbnRUYWdzLCBjbGllbnRTdGFnZXMsIHJlZmV0Y2hUYWdzLCBsb2FkaW5nVGFncyB9ID0gdXNlVGFncygpO1xuICAgIGNvbnN0IHsgdGFnQ2xpZW50LCB1bnRhZ0NsaWVudCwgY3JlYXRlQWN0aW9uLCBwYXRjaEFjdGlvbiB9ID0gdXNlQ29udGFjdE11dGF0aW9ucygpO1xuICAgIGNvbnN0IFtmb3JtRGF0YSwgYmNGb3JtQWN0aW9uc10gPSB1c2VCQ0Zvcm0oRk9STV9JTklULCB0KTtcbiAgICBjb25zdCB7IHZhbGlkYXRlRmllbGQsIHJlbmRlckZpZWxkLCByZW5kZXJEcm9wbGlzdEZpZWxkLCByZXNldFZhbGlkYXRpb25TdGF0ZXMsIHNldEZpZWxkVmFsdWUgfSA9IGJjRm9ybUFjdGlvbnM7XG4gICAgLy8gUHJlLWZpbGwgZm9ybSBpbiBlZGl0IG1vZGUgb3Igd2l0aCBpbml0aWFsIGNvbnRhY3QgZGF0YVxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qLCBfaywgX2wsIF9tLCBfbywgX3AsIF9xLCBfciwgX3M7XG4gICAgICAgIGlmICghY29udGFjdEluZm9Jc09wZW4pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHJlc2V0VmFsaWRhdGlvblN0YXRlcygpO1xuICAgICAgICBpZiAoaXNFZGl0TW9kZSAmJiBjb250YWN0RGF0YSkge1xuICAgICAgICAgICAgY29uc3Qgc3RhZ2VOYW1lID0gKF9iID0gKF9hID0gY2xpZW50U3RhZ2VzID09PSBudWxsIHx8IGNsaWVudFN0YWdlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2xpZW50U3RhZ2VzLmZpbmQoKHN0YWdlKSA9PiBzdGFnZS5pZCA9PT0gY29udGFjdERhdGEuc3RhZ2VJZCkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50YWcpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnO1xuICAgICAgICAgICAgY29uc3QgY29udGFjdEZvcm1NYXBwaW5nID0ge1xuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLm5hbWVdOiAoX2MgPSBjb250YWN0RGF0YS5uYW1lKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAnJyxcbiAgICAgICAgICAgICAgICBbRm9ybUZpZWxkcy5zdXJuYW1lXTogKF9kID0gY29udGFjdERhdGEuc3VybmFtZSkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuZW1haWxdOiAoX2UgPSBjb250YWN0RGF0YS5lbWFpbCkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMucGhvbmVdOiAoX2YgPSBjb250YWN0RGF0YS5waG9uZSkgIT09IG51bGwgJiYgX2YgIT09IHZvaWQgMCA/IF9mIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuYWRkcmVzc106IChfZyA9IGNvbnRhY3REYXRhLmFkZHJlc3MpICE9PSBudWxsICYmIF9nICE9PSB2b2lkIDAgPyBfZyA6ICcnLFxuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLmNvdW50cnldOiAoX2ggPSBjb250YWN0RGF0YS5jb3VudHJ5KSAhPT0gbnVsbCAmJiBfaCAhPT0gdm9pZCAwID8gX2ggOiAnJyxcbiAgICAgICAgICAgICAgICBbRm9ybUZpZWxkcy5jaXR5XTogKF9qID0gY29udGFjdERhdGEuY2l0eSkgIT09IG51bGwgJiYgX2ogIT09IHZvaWQgMCA/IF9qIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuZGVmYXVsdEFnZW50SWRdOiAoX2sgPSBjb250YWN0RGF0YS5kZWZhdWx0QWdlbnRJZCkgIT09IG51bGwgJiYgX2sgIT09IHZvaWQgMCA/IF9rIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuc3RhZ2VdOiBzdGFnZU5hbWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoY29udGFjdEZvcm1NYXBwaW5nKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHNldEZpZWxkVmFsdWUoa2V5LCB2YWx1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGluaXRpYWxDb250YWN0RGF0YSkge1xuICAgICAgICAgICAgLy8gUHJlLWZpbGwgd2l0aCBpbml0aWFsIGNvbnRhY3QgZGF0YSBmcm9tIGNvbnRhY3QgbWVzc2FnZVxuICAgICAgICAgICAgY29uc3QgY29udGFjdEZvcm1NYXBwaW5nID0ge1xuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLm5hbWVdOiAoX2wgPSBpbml0aWFsQ29udGFjdERhdGEuZmlyc3ROYW1lKSAhPT0gbnVsbCAmJiBfbCAhPT0gdm9pZCAwID8gX2wgOiAnJyxcbiAgICAgICAgICAgICAgICBbRm9ybUZpZWxkcy5zdXJuYW1lXTogKF9tID0gaW5pdGlhbENvbnRhY3REYXRhLmxhc3ROYW1lKSAhPT0gbnVsbCAmJiBfbSAhPT0gdm9pZCAwID8gX20gOiAnJyxcbiAgICAgICAgICAgICAgICBbRm9ybUZpZWxkcy5lbWFpbF06IChfbyA9IGluaXRpYWxDb250YWN0RGF0YS5lbWFpbCkgIT09IG51bGwgJiYgX28gIT09IHZvaWQgMCA/IF9vIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMucGhvbmVdOiAoX3AgPSBpbml0aWFsQ29udGFjdERhdGEucGhvbmUpICE9PSBudWxsICYmIF9wICE9PSB2b2lkIDAgPyBfcCA6ICcnLFxuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLmFkZHJlc3NdOiAoX3EgPSBpbml0aWFsQ29udGFjdERhdGEuYWRkcmVzcykgIT09IG51bGwgJiYgX3EgIT09IHZvaWQgMCA/IF9xIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuY291bnRyeV06IChfciA9IGluaXRpYWxDb250YWN0RGF0YS5jb3VudHJ5X2NvZGUpICE9PSBudWxsICYmIF9yICE9PSB2b2lkIDAgPyBfciA6ICcnLFxuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLmNpdHldOiAoX3MgPSBpbml0aWFsQ29udGFjdERhdGEuY2l0eSkgIT09IG51bGwgJiYgX3MgIT09IHZvaWQgMCA/IF9zIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuZGVmYXVsdEFnZW50SWRdOiAnJyxcbiAgICAgICAgICAgICAgICBbRm9ybUZpZWxkcy5zdGFnZV06ICcnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGNvbnRhY3RGb3JtTWFwcGluZykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiBzZXRGaWVsZFZhbHVlKGtleSwgdmFsdWUpKTtcbiAgICAgICAgICAgIHNldEN1cnJlbnRDb250YWN0SWQobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhGT1JNX0lOSVQpLmZvckVhY2goKGZpZWxkKSA9PiBzZXRGaWVsZFZhbHVlKGZpZWxkLCAnJykpO1xuICAgICAgICAgICAgc2V0Q3VycmVudENvbnRhY3RJZChudWxsKTtcbiAgICAgICAgfVxuICAgIH0sIFtjb250YWN0SW5mb0lzT3BlbiwgaXNFZGl0TW9kZSwgY29udGFjdERhdGEsIGluaXRpYWxDb250YWN0RGF0YSwgY2xpZW50U3RhZ2VzLCByZXNldFZhbGlkYXRpb25TdGF0ZXMsIHNldEZpZWxkVmFsdWVdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoY29udGFjdERhdGEpIHtcbiAgICAgICAgICAgIHNldEFkZGVkVGFncygoY29udGFjdERhdGEgPT09IG51bGwgfHwgY29udGFjdERhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbnRhY3REYXRhLnRhZ3MpIHx8IFtdKTtcbiAgICAgICAgfVxuICAgIH0sIFtjb250YWN0RGF0YV0pO1xuICAgIGNvbnN0IGF2YWlsYWJsZVRhZ3MgPSB1c2VNZW1vKCgpID0+IChjbGllbnRUYWdzICE9PSBudWxsICYmIGNsaWVudFRhZ3MgIT09IHZvaWQgMCA/IGNsaWVudFRhZ3MgOiBbXSlcbiAgICAgICAgLm1hcCgodGFnKSA9PiAoeyB0ZXh0OiB0YWcudGFnLCB2YWx1ZTogdGFnLnRhZyB9KSlcbiAgICAgICAgLmZpbHRlcigodGFnKSA9PiAhYWRkZWRUYWdzLmluY2x1ZGVzKHRhZy52YWx1ZSkpLCBbY2xpZW50VGFncywgYWRkZWRUYWdzXSk7XG4gICAgY29uc3QgaGFuZGxlVGFnU2VsZWN0ID0gKHRhZ1ZhbHVlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgaWYgKCF0YWdWYWx1ZSB8fCBhZGRlZFRhZ3MuaW5jbHVkZXModGFnVmFsdWUpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzZXRBZGRlZFRhZ3MoKHByZXYpID0+IFsuLi5wcmV2LCB0YWdWYWx1ZV0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRhZ1JlbW92ZSA9ICh0YWdWYWx1ZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGlmICghY3VycmVudENvbnRhY3RJZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHlpZWxkIHVudGFnQ2xpZW50KHtcbiAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudElkOiBjdXJyZW50Q29udGFjdElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiB0YWdWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZUlkOiBhdXRoLmdldENvbnRleHQoKSB8fCAwLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNldEFkZGVkVGFncygocHJldikgPT4gcHJldi5maWx0ZXIoKHRhZykgPT4gdGFnICE9PSB0YWdWYWx1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RhZyByZW1vdmUgZXJyb3I6JywgZXJyKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IG9uU3VibWl0ID0gdXNlQ2FsbGJhY2soKGUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICB2YXIgX2QsIF9lLCBfZiwgX2csIF9oLCBfajtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXNldFZhbGlkYXRpb25TdGF0ZXMoKTtcbiAgICAgICAgY29uc3QgcmVxdWlyZWRGaWVsZHMgPSBpc0VkaXRNb2RlID8gW10gOiBbRm9ybUZpZWxkcy5waG9uZV07XG4gICAgICAgIGNvbnN0IGlzVmFsaWQgPSByZXF1aXJlZEZpZWxkcy5ldmVyeSgoZmllbGQpID0+IHZhbGlkYXRlRmllbGQoZmllbGQsIEJDVmFsaWRhdGlvblR5cGVzLk5PVF9FTVBUWSkpO1xuICAgICAgICBjb25zdCBlbWFpbFZhbGlkID0gKChfZCA9IGZvcm1EYXRhW1wiZW1haWxcIl0pID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC52YWx1ZSkgPyB2YWxpZGF0ZUZpZWxkKEZvcm1GaWVsZHMuZW1haWwsIEJDVmFsaWRhdGlvblR5cGVzLkVNQUlMKSA6IHRydWU7XG4gICAgICAgIGlmICghaXNWYWxpZCB8fCAhZW1haWxWYWxpZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGZvcm1EYXRhKS5tYXAoKFtrZXksIGZpZWxkXSkgPT4gW1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgZmllbGQudmFsdWUsXG4gICAgICAgIF0pKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBjbGllbnRJZCA9IChfZSA9IGNvbnRhY3REYXRhID09PSBudWxsIHx8IGNvbnRhY3REYXRhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb250YWN0RGF0YS5pZCkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogbnVsbDtcbiAgICAgICAgICAgIC8vIDHvuI/ig6MgVXBkYXRlIG9yIGNyZWF0ZSBjbGllbnRcbiAgICAgICAgICAgIGlmIChpc0VkaXRNb2RlICYmIGNsaWVudElkKSB7XG4gICAgICAgICAgICAgICAgeWllbGQgKHBhdGNoQWN0aW9uID09PSBudWxsIHx8IHBhdGNoQWN0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXRjaEFjdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogY2xpZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEFnZW50SWQ6IHZhbHVlc1snZGVmYXVsdEFnZW50SWQnXSA9PT0gJ3VubGlua0FnZW50JyA/IG51bGwgOiB2YWx1ZXNbJ2RlZmF1bHRBZ2VudElkJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdmFsdWVzWyduYW1lJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VybmFtZTogdmFsdWVzWydzdXJuYW1lJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IHZhbHVlc1snZW1haWwnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiB2YWx1ZXNbJ2NvdW50cnknXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiB2YWx1ZXNbJ2NpdHknXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiB2YWx1ZXNbJ2FkZHJlc3MnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFnZTogdmFsdWVzWydzdGFnZSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZUlkOiBhdXRoLmdldENvbnRleHQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0geWllbGQgKGNyZWF0ZUFjdGlvbiA9PT0gbnVsbCB8fCBjcmVhdGVBY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNyZWF0ZUFjdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB2YWx1ZXNbJ25hbWUnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXJuYW1lOiB2YWx1ZXNbJ3N1cm5hbWUnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogdmFsdWVzWydlbWFpbCddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsQ2xpZW50SWQ6IHZhbHVlc1sncGhvbmUnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZTogdmFsdWVzWydwaG9uZSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6IHZhbHVlc1snYWRkcmVzcyddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IHZhbHVlc1snY291bnRyeSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IHZhbHVlc1snY2l0eSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlOiB2YWx1ZXNbJ3N0YWdlJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEFnZW50SWQ6IHZhbHVlc1snZGVmYXVsdEFnZW50SWQnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2VJZDogYXV0aC5nZXRDb250ZXh0KCksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICBjbGllbnRJZCA9IChfaCA9IChfZyA9IChfZiA9IHJlc3VsdCA9PT0gbnVsbCB8fCByZXN1bHQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3VsdC5kYXRhKSA9PT0gbnVsbCB8fCBfZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2YuY3JlYXRlQ2xpZW50KSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cuaWQpICE9PSBudWxsICYmIF9oICE9PSB2b2lkIDAgPyBfaCA6IG51bGw7XG4gICAgICAgICAgICAgICAgc2V0Q3VycmVudENvbnRhY3RJZChjbGllbnRJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNsaWVudElkKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIC8vIDLvuI/ig6MgU3luYyB0YWdzXG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ1RhZ3MgPSAoX2ogPSBjb250YWN0RGF0YSA9PT0gbnVsbCB8fCBjb250YWN0RGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29udGFjdERhdGEudGFncykgIT09IG51bGwgJiYgX2ogIT09IHZvaWQgMCA/IF9qIDogW107XG4gICAgICAgICAgICBjb25zdCB0YWdzVG9BZGQgPSBpc0VkaXRNb2RlXG4gICAgICAgICAgICAgICAgPyBhZGRlZFRhZ3MuZmlsdGVyKCh0YWcpID0+ICFleGlzdGluZ1RhZ3MuaW5jbHVkZXModGFnKSlcbiAgICAgICAgICAgICAgICA6IGFkZGVkVGFncztcbiAgICAgICAgICAgIHlpZWxkIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICAvLyBBZGQgbmV3IHRhZ3NcbiAgICAgICAgICAgICAgICAuLi50YWdzVG9BZGQubWFwKCh0YWcpID0+IHRhZ0NsaWVudCh7XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlSWQ6IGF1dGguZ2V0Q29udGV4dCgpIHx8IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgb25Db250YWN0Q3JlYXRlZCA9PT0gbnVsbCB8fCBvbkNvbnRhY3RDcmVhdGVkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNvbnRhY3RDcmVhdGVkKCk7XG4gICAgICAgICAgICBzZXRDb250YWN0SW5mb0lzT3BlbihmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0cmlnZ2VyRXJyb3JUb2FzdCh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHQoJ2Vycm9yJyksXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KSwgW3ZhbGlkYXRlRmllbGQsIHJlc2V0VmFsaWRhdGlvblN0YXRlcywgZm9ybURhdGEsIGFkZGVkVGFncywgY29udGFjdERhdGEgPT09IG51bGwgfHwgY29udGFjdERhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbnRhY3REYXRhLmlkLCBjb250YWN0RGF0YSA9PT0gbnVsbCB8fCBjb250YWN0RGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29udGFjdERhdGEudGFncywgdGFnQ2xpZW50LCBzZXRDb250YWN0SW5mb0lzT3BlbiwgaXNFZGl0TW9kZSwgY3JlYXRlQWN0aW9uLCBwYXRjaEFjdGlvbiwgdCwgb25Db250YWN0Q3JlYXRlZF0pO1xuICAgIGlmIChsb2FkaW5nVGFncylcbiAgICAgICAgcmV0dXJuIF9qc3goQ2xpZW50SW5mb0xvYWRlciwge30pO1xuICAgIHJldHVybiAoX2pzeHMoQ29udGFpbmVyLCB7IGNoaWxkcmVuOiBbX2pzeChNb2RhbFRpdGxlLCB7IGNoaWxkcmVuOiBpc0VkaXRNb2RlID8gdCgnY29udGFjdC5lZGl0Q29udGFjdCcpIDogdCgnY29udGFjdC5hZGROZXdDb250YWN0JykgfSksIF9qc3goQ29udGFjdEZvcm1GaWVsZHMsIHsgcmVuZGVyRmllbGQ6IHJlbmRlckZpZWxkLCBjbGllbnRTdGFnZXM6IGNsaWVudFN0YWdlcywgcmVuZGVyRHJvcGxpc3RGaWVsZDogcmVuZGVyRHJvcGxpc3RGaWVsZCwgaXNFZGl0TW9kZTogaXNFZGl0TW9kZSwgcGhvbmVWYWx1ZTogKF9jID0gKF9iID0gZm9ybURhdGFbRm9ybUZpZWxkcy5waG9uZV0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi52YWx1ZSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogJycsIG9uUGhvbmVDaGFuZ2U6ICh2YWx1ZSkgPT4gc2V0RmllbGRWYWx1ZShGb3JtRmllbGRzLnBob25lLCB2YWx1ZSksIHBob25lRmllbGRFcnJvcjogZm9ybURhdGFbRm9ybUZpZWxkcy5waG9uZV0gJiYgIWZvcm1EYXRhW0Zvcm1GaWVsZHMucGhvbmVdLmlzVmFsaWRcbiAgICAgICAgICAgICAgICAgICAgPyB0KGZvcm1EYXRhW0Zvcm1GaWVsZHMucGhvbmVdLm1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkIH0pLCBfanN4KFwiZGl2XCIsIHsgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFRleHRTaXplUmVtLlMsXG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IE5ld1RleHRXZWlnaHQuTk9STUFMLFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogTmV3Q29sb3JzLkZPUkVHUk9VTkQsXG4gICAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6ICdub3JtYWwnLFxuICAgICAgICAgICAgICAgIH0sIGNoaWxkcmVuOiB0KCdjb250YWN0LnRhZ3MnKSB9KSwgX2pzeChUYWdzU2VsZWN0b3IsIHsgaGFuZGxlVGFnU2VsZWN0OiBoYW5kbGVUYWdTZWxlY3QsIGF2YWlsYWJsZVRhZ3M6IGF2YWlsYWJsZVRhZ3MsIHJ0bDogcnRsLCBjb250YWN0c1RhZ3NMb2FkaW5nOiBsb2FkaW5nVGFncywgYWRkZWRUYWdzOiBhZGRlZFRhZ3MsIGhhbmRsZVRhZ1JlbW92ZTogaGFuZGxlVGFnUmVtb3ZlLCB0eXBlOiBcImNsaWVudFwiLCByZWZldGNoVGFnczogcmVmZXRjaFRhZ3MgfSksIF9qc3hzKFwiZGl2XCIsIHsgc3R5bGU6IHsgZGlzcGxheTogJ2ZsZXgnLCBqdXN0aWZ5Q29udGVudDogJ2ZsZXgtZW5kJywgZ2FwOiAnOHB4JywgbWFyZ2luVG9wOiAnMTZweCcgfSwgY2hpbGRyZW46IFtfanN4KEJ1dHRvbiwgeyB2YXJpYW50OiBcInNlY29uZGFyeVwiLCBvbkNsaWNrOiAoKSA9PiBzZXRDb250YWN0SW5mb0lzT3BlbihmYWxzZSksIGNoaWxkcmVuOiB0KCdjb250YWN0LmNhbmNlbCcpIH0pLCBfanN4KEJ1dHRvbiwgeyBvbkNsaWNrOiBvblN1Ym1pdCwgY2hpbGRyZW46IGlzRWRpdE1vZGUgPyB0KCdjb250YWN0LnNhdmUnKSA6IHQoJ2NvbnRhY3QuY3JlYXRlJykgfSldIH0pXSB9KSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgQ29udGFjdEluZm87XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db250YWN0SW5mby5qcy5tYXAiXX0= */",
120196
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbnRhY3RJbmZvLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQjZCIiwiZmlsZSI6IkNvbnRhY3RJbmZvLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXdhaXRlciB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5pbXBvcnQgeyBCdXR0b24sIEJDVmFsaWRhdGlvblR5cGVzLCB1c2VCQ0Zvcm0sIHRyaWdnZXJFcnJvclRvYXN0LCBOZXdUZXh0V2VpZ2h0LCBUZXh0U2l6ZVJlbSwgTmV3Q29sb3JzLCB9IGZyb20gJ0BiY3J1bWJzLm5ldC9iYy11aSc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNvbnRhY3REZWZpbml0aW9uIGZyb20gJy4uL2NvbmZpZy9jb250YWN0RGVmaW5pdGlvbic7XG5pbXBvcnQgeyBNb2RhbFRpdGxlIH0gZnJvbSAnLi4vLi4vZ2VuZXJpYy9jb21wb25lbnRzL0NvbnRhaW5lcnMnO1xuaW1wb3J0IHsgdXNlVGFnQ2xpZW50TXV0YXRpb24sIHVzZVVudGFnQ2xpZW50TXV0YXRpb24gfSBmcm9tICcuLi8uLi8uLi9ncmFwaHFsLmF1dG9nZW5lcmF0ZWQnO1xuaW1wb3J0IHsgRk9STV9JTklULCBGb3JtRmllbGRzIH0gZnJvbSAnLi4vY29uZmlnL2NvbnRhY3RGb3JtJztcbmltcG9ydCBDb250YWN0Rm9ybUZpZWxkcyBmcm9tICcuL0NvbnRhY3RGb3JtRmllbGRzJztcbmltcG9ydCBUYWdzU2VsZWN0b3IgZnJvbSAnLi4vLi4vaW5ib3gvY29tcG9uZW50cy9OZXdEZXRhaWxzL1RhZ3NTZWxlY3Rvcic7XG5pbXBvcnQgdXNlVGFncyBmcm9tICcuLi8uLi9pbmJveC9ob29rcy91c2VUYWdzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCBDbGllbnRJbmZvTG9hZGVyIGZyb20gJy4uLy4uL2luYm94L2NvbXBvbmVudHMvTmV3RGV0YWlscy9Db21wb25lbnRMb2FkZXJzL0NsaWVudEluZm9Mb2FkZXInO1xuaW1wb3J0IHsgdXNlVGhlbWVDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC90aGVtZUNvbnRleHQnO1xuaW1wb3J0IHsgY29yZUNsaWVudCB9IGZyb20gJ0BiY3J1bWJzLm5ldC9iYy1hcGknO1xuaW1wb3J0IHsgYXV0aCB9IGZyb20gJ0BiY3J1bWJzLm5ldC9iYy1zaGFyZWQnO1xuY29uc3QgQ29udGFpbmVyID0gc3R5bGVkLmRpdiBgXHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogMTZweDtcclxuICB3aWR0aDogMTAwJTtcclxuYDtcbmNvbnN0IHVzZUNvbnRhY3RNdXRhdGlvbnMgPSAoKSA9PiB7XG4gICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgIGNvbnN0IFt0YWdDbGllbnRdID0gdXNlVGFnQ2xpZW50TXV0YXRpb24oeyBjbGllbnQ6IGNvcmVDbGllbnQgfSk7XG4gICAgY29uc3QgW3VudGFnQ2xpZW50XSA9IHVzZVVudGFnQ2xpZW50TXV0YXRpb24oeyBjbGllbnQ6IGNvcmVDbGllbnQgfSk7XG4gICAgY29uc3QgW2NyZWF0ZUFjdGlvbl0gPSAoKF9hID0gY29udGFjdERlZmluaXRpb24uY3JlYXRlTXV0YXRpb24pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZWFjdEhvb2soe1xuICAgICAgICBmZXRjaFBvbGljeTogJ25vLWNhY2hlJyxcbiAgICAgICAgY2xpZW50OiAoX2IgPSBjb250YWN0RGVmaW5pdGlvbi5jbGllbnQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGNvcmVDbGllbnQsXG4gICAgfSkpIHx8IFtdO1xuICAgIGNvbnN0IFtwYXRjaEFjdGlvbl0gPSAoKF9jID0gY29udGFjdERlZmluaXRpb24ucGF0Y2hNdXRhdGlvbikgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnJlYWN0SG9vayh7XG4gICAgICAgIGZldGNoUG9saWN5OiAnbm8tY2FjaGUnLFxuICAgICAgICBjbGllbnQ6IChfZCA9IGNvbnRhY3REZWZpbml0aW9uLmNsaWVudCkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogY29yZUNsaWVudCxcbiAgICB9KSkgfHwgW107XG4gICAgcmV0dXJuIHsgdGFnQ2xpZW50LCB1bnRhZ0NsaWVudCwgY3JlYXRlQWN0aW9uLCBwYXRjaEFjdGlvbiB9O1xufTtcbmNvbnN0IENvbnRhY3RJbmZvID0gKHsgc2V0Q29udGFjdEluZm9Jc09wZW4sIGNvbnRhY3RJbmZvSXNPcGVuLCBvbkNvbnRhY3RDcmVhdGVkLCBjb250YWN0RGF0YSwgaW5pdGlhbENvbnRhY3REYXRhIH0pID0+IHtcbiAgICB2YXIgX2EsIF9iLCBfYztcbiAgICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gICAgY29uc3QgeyBydGwgfSA9IHVzZVRoZW1lQ29udGV4dCgpO1xuICAgIGNvbnN0IGlzRWRpdE1vZGUgPSBCb29sZWFuKGNvbnRhY3REYXRhKTtcbiAgICBjb25zdCBbY3VycmVudENvbnRhY3RJZCwgc2V0Q3VycmVudENvbnRhY3RJZF0gPSB1c2VTdGF0ZSgoX2EgPSBjb250YWN0RGF0YSA9PT0gbnVsbCB8fCBjb250YWN0RGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29udGFjdERhdGEuaWQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG51bGwpO1xuICAgIGNvbnN0IFthZGRlZFRhZ3MsIHNldEFkZGVkVGFnc10gPSB1c2VTdGF0ZSgoY29udGFjdERhdGEgPT09IG51bGwgfHwgY29udGFjdERhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbnRhY3REYXRhLnRhZ3MpIHx8IFtdKTtcbiAgICBjb25zdCB7IGNsaWVudFRhZ3MsIGNsaWVudFN0YWdlcywgcmVmZXRjaFRhZ3MsIGxvYWRpbmdUYWdzIH0gPSB1c2VUYWdzKCk7XG4gICAgY29uc3QgeyB0YWdDbGllbnQsIHVudGFnQ2xpZW50LCBjcmVhdGVBY3Rpb24sIHBhdGNoQWN0aW9uIH0gPSB1c2VDb250YWN0TXV0YXRpb25zKCk7XG4gICAgY29uc3QgW2Zvcm1EYXRhLCBiY0Zvcm1BY3Rpb25zXSA9IHVzZUJDRm9ybShGT1JNX0lOSVQsIHQpO1xuICAgIGNvbnN0IHsgdmFsaWRhdGVGaWVsZCwgcmVuZGVyRmllbGQsIHJlbmRlckRyb3BsaXN0RmllbGQsIHJlc2V0VmFsaWRhdGlvblN0YXRlcywgc2V0RmllbGRWYWx1ZSB9ID0gYmNGb3JtQWN0aW9ucztcbiAgICBjb25zdCBzdGFnZVByZWZpbGxlZFJlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgLy8gUHJlLWZpbGwgZm9ybSBpbiBlZGl0IG1vZGUgb3Igd2l0aCBpbml0aWFsIGNvbnRhY3QgZGF0YS5cbiAgICAvLyBjbGllbnRTdGFnZXMgaXMgaW50ZW50aW9uYWxseSBub3QgYSBkZXBlbmRlbmN5OiB0YWcgcmVmZXRjaGVzIChlLmcuIGNyZWF0aW5nIGEgbmV3IHRhZylcbiAgICAvLyB3b3VsZCBvdGhlcndpc2UgcmUtcnVuIHRoaXMgZWZmZWN0IGFuZCB3aXBlIHdoYXQgdGhlIHVzZXIgYWxyZWFkeSB0eXBlZC5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaiwgX2ssIF9sLCBfbSwgX28sIF9wLCBfcTtcbiAgICAgICAgaWYgKCFjb250YWN0SW5mb0lzT3BlbilcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcmVzZXRWYWxpZGF0aW9uU3RhdGVzKCk7XG4gICAgICAgIHN0YWdlUHJlZmlsbGVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGlzRWRpdE1vZGUgJiYgY29udGFjdERhdGEpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhY3RGb3JtTWFwcGluZyA9IHtcbiAgICAgICAgICAgICAgICBbRm9ybUZpZWxkcy5uYW1lXTogKF9hID0gY29udGFjdERhdGEubmFtZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuc3VybmFtZV06IChfYiA9IGNvbnRhY3REYXRhLnN1cm5hbWUpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnLFxuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLmVtYWlsXTogKF9jID0gY29udGFjdERhdGEuZW1haWwpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6ICcnLFxuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLnBob25lXTogKF9kID0gY29udGFjdERhdGEucGhvbmUpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6ICcnLFxuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLmFkZHJlc3NdOiAoX2UgPSBjb250YWN0RGF0YS5hZGRyZXNzKSAhPT0gbnVsbCAmJiBfZSAhPT0gdm9pZCAwID8gX2UgOiAnJyxcbiAgICAgICAgICAgICAgICBbRm9ybUZpZWxkcy5jb3VudHJ5XTogKF9mID0gY29udGFjdERhdGEuY291bnRyeSkgIT09IG51bGwgJiYgX2YgIT09IHZvaWQgMCA/IF9mIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuY2l0eV06IChfZyA9IGNvbnRhY3REYXRhLmNpdHkpICE9PSBudWxsICYmIF9nICE9PSB2b2lkIDAgPyBfZyA6ICcnLFxuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLmRlZmF1bHRBZ2VudElkXTogKF9oID0gY29udGFjdERhdGEuZGVmYXVsdEFnZW50SWQpICE9PSBudWxsICYmIF9oICE9PSB2b2lkIDAgPyBfaCA6ICcnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGNvbnRhY3RGb3JtTWFwcGluZykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiBzZXRGaWVsZFZhbHVlKGtleSwgdmFsdWUpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpbml0aWFsQ29udGFjdERhdGEpIHtcbiAgICAgICAgICAgIC8vIFByZS1maWxsIHdpdGggaW5pdGlhbCBjb250YWN0IGRhdGEgZnJvbSBjb250YWN0IG1lc3NhZ2VcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhY3RGb3JtTWFwcGluZyA9IHtcbiAgICAgICAgICAgICAgICBbRm9ybUZpZWxkcy5uYW1lXTogKF9qID0gaW5pdGlhbENvbnRhY3REYXRhLmZpcnN0TmFtZSkgIT09IG51bGwgJiYgX2ogIT09IHZvaWQgMCA/IF9qIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuc3VybmFtZV06IChfayA9IGluaXRpYWxDb250YWN0RGF0YS5sYXN0TmFtZSkgIT09IG51bGwgJiYgX2sgIT09IHZvaWQgMCA/IF9rIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuZW1haWxdOiAoX2wgPSBpbml0aWFsQ29udGFjdERhdGEuZW1haWwpICE9PSBudWxsICYmIF9sICE9PSB2b2lkIDAgPyBfbCA6ICcnLFxuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLnBob25lXTogKF9tID0gaW5pdGlhbENvbnRhY3REYXRhLnBob25lKSAhPT0gbnVsbCAmJiBfbSAhPT0gdm9pZCAwID8gX20gOiAnJyxcbiAgICAgICAgICAgICAgICBbRm9ybUZpZWxkcy5hZGRyZXNzXTogKF9vID0gaW5pdGlhbENvbnRhY3REYXRhLmFkZHJlc3MpICE9PSBudWxsICYmIF9vICE9PSB2b2lkIDAgPyBfbyA6ICcnLFxuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLmNvdW50cnldOiAoX3AgPSBpbml0aWFsQ29udGFjdERhdGEuY291bnRyeV9jb2RlKSAhPT0gbnVsbCAmJiBfcCAhPT0gdm9pZCAwID8gX3AgOiAnJyxcbiAgICAgICAgICAgICAgICBbRm9ybUZpZWxkcy5jaXR5XTogKF9xID0gaW5pdGlhbENvbnRhY3REYXRhLmNpdHkpICE9PSBudWxsICYmIF9xICE9PSB2b2lkIDAgPyBfcSA6ICcnLFxuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLmRlZmF1bHRBZ2VudElkXTogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuc3RhZ2VdOiAnJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhjb250YWN0Rm9ybU1hcHBpbmcpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4gc2V0RmllbGRWYWx1ZShrZXksIHZhbHVlKSk7XG4gICAgICAgICAgICBzZXRDdXJyZW50Q29udGFjdElkKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoRk9STV9JTklUKS5mb3JFYWNoKChmaWVsZCkgPT4gc2V0RmllbGRWYWx1ZShmaWVsZCwgJycpKTtcbiAgICAgICAgICAgIHNldEN1cnJlbnRDb250YWN0SWQobnVsbCk7XG4gICAgICAgIH1cbiAgICB9LCBbY29udGFjdEluZm9Jc09wZW4sIGlzRWRpdE1vZGUsIGNvbnRhY3REYXRhLCBpbml0aWFsQ29udGFjdERhdGEsIHJlc2V0VmFsaWRhdGlvblN0YXRlcywgc2V0RmllbGRWYWx1ZV0pO1xuICAgIC8vIFN0YWdlcyBsb2FkIGFzeW5jaHJvbm91c2x5OyBwcmUtZmlsbCB0aGUgZWRpdGVkIGNvbnRhY3QncyBzdGFnZSBvbmNlIHBlciBvcGVuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKCFjb250YWN0SW5mb0lzT3BlbiB8fCAhaXNFZGl0TW9kZSB8fCAhY29udGFjdERhdGEgfHwgc3RhZ2VQcmVmaWxsZWRSZWYuY3VycmVudClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKCEoY2xpZW50U3RhZ2VzID09PSBudWxsIHx8IGNsaWVudFN0YWdlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2xpZW50U3RhZ2VzLmxlbmd0aCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHN0YWdlTmFtZSA9IChfYiA9IChfYSA9IGNsaWVudFN0YWdlcy5maW5kKChzdGFnZSkgPT4gc3RhZ2UuaWQgPT09IGNvbnRhY3REYXRhLnN0YWdlSWQpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGFnKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJztcbiAgICAgICAgc2V0RmllbGRWYWx1ZShGb3JtRmllbGRzLnN0YWdlLCBzdGFnZU5hbWUpO1xuICAgICAgICBzdGFnZVByZWZpbGxlZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9LCBbY29udGFjdEluZm9Jc09wZW4sIGlzRWRpdE1vZGUsIGNvbnRhY3REYXRhLCBjbGllbnRTdGFnZXMsIHNldEZpZWxkVmFsdWVdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoY29udGFjdERhdGEpIHtcbiAgICAgICAgICAgIHNldEFkZGVkVGFncygoY29udGFjdERhdGEgPT09IG51bGwgfHwgY29udGFjdERhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbnRhY3REYXRhLnRhZ3MpIHx8IFtdKTtcbiAgICAgICAgfVxuICAgIH0sIFtjb250YWN0RGF0YV0pO1xuICAgIGNvbnN0IGF2YWlsYWJsZVRhZ3MgPSB1c2VNZW1vKCgpID0+IChjbGllbnRUYWdzICE9PSBudWxsICYmIGNsaWVudFRhZ3MgIT09IHZvaWQgMCA/IGNsaWVudFRhZ3MgOiBbXSlcbiAgICAgICAgLm1hcCgodGFnKSA9PiAoeyB0ZXh0OiB0YWcudGFnLCB2YWx1ZTogdGFnLnRhZyB9KSlcbiAgICAgICAgLmZpbHRlcigodGFnKSA9PiAhYWRkZWRUYWdzLmluY2x1ZGVzKHRhZy52YWx1ZSkpLCBbY2xpZW50VGFncywgYWRkZWRUYWdzXSk7XG4gICAgY29uc3QgaGFuZGxlVGFnU2VsZWN0ID0gKHRhZ1ZhbHVlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgaWYgKCF0YWdWYWx1ZSB8fCBhZGRlZFRhZ3MuaW5jbHVkZXModGFnVmFsdWUpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzZXRBZGRlZFRhZ3MoKHByZXYpID0+IFsuLi5wcmV2LCB0YWdWYWx1ZV0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRhZ1JlbW92ZSA9ICh0YWdWYWx1ZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGlmICghY3VycmVudENvbnRhY3RJZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHlpZWxkIHVudGFnQ2xpZW50KHtcbiAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudElkOiBjdXJyZW50Q29udGFjdElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiB0YWdWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZUlkOiBhdXRoLmdldENvbnRleHQoKSB8fCAwLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNldEFkZGVkVGFncygocHJldikgPT4gcHJldi5maWx0ZXIoKHRhZykgPT4gdGFnICE9PSB0YWdWYWx1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RhZyByZW1vdmUgZXJyb3I6JywgZXJyKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IG9uU3VibWl0ID0gdXNlQ2FsbGJhY2soKGUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICB2YXIgX2QsIF9lLCBfZiwgX2csIF9oLCBfajtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXNldFZhbGlkYXRpb25TdGF0ZXMoKTtcbiAgICAgICAgY29uc3QgcmVxdWlyZWRGaWVsZHMgPSBpc0VkaXRNb2RlID8gW10gOiBbRm9ybUZpZWxkcy5waG9uZV07XG4gICAgICAgIGNvbnN0IGlzVmFsaWQgPSByZXF1aXJlZEZpZWxkcy5ldmVyeSgoZmllbGQpID0+IHZhbGlkYXRlRmllbGQoZmllbGQsIEJDVmFsaWRhdGlvblR5cGVzLk5PVF9FTVBUWSkpO1xuICAgICAgICBjb25zdCBlbWFpbFZhbGlkID0gKChfZCA9IGZvcm1EYXRhW1wiZW1haWxcIl0pID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC52YWx1ZSkgPyB2YWxpZGF0ZUZpZWxkKEZvcm1GaWVsZHMuZW1haWwsIEJDVmFsaWRhdGlvblR5cGVzLkVNQUlMKSA6IHRydWU7XG4gICAgICAgIGlmICghaXNWYWxpZCB8fCAhZW1haWxWYWxpZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGZvcm1EYXRhKS5tYXAoKFtrZXksIGZpZWxkXSkgPT4gW1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgZmllbGQudmFsdWUsXG4gICAgICAgIF0pKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBjbGllbnRJZCA9IChfZSA9IGNvbnRhY3REYXRhID09PSBudWxsIHx8IGNvbnRhY3REYXRhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb250YWN0RGF0YS5pZCkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogbnVsbDtcbiAgICAgICAgICAgIC8vIDHvuI/ig6MgVXBkYXRlIG9yIGNyZWF0ZSBjbGllbnRcbiAgICAgICAgICAgIGlmIChpc0VkaXRNb2RlICYmIGNsaWVudElkKSB7XG4gICAgICAgICAgICAgICAgeWllbGQgKHBhdGNoQWN0aW9uID09PSBudWxsIHx8IHBhdGNoQWN0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXRjaEFjdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogY2xpZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEFnZW50SWQ6IHZhbHVlc1snZGVmYXVsdEFnZW50SWQnXSA9PT0gJ3VubGlua0FnZW50JyA/IG51bGwgOiB2YWx1ZXNbJ2RlZmF1bHRBZ2VudElkJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdmFsdWVzWyduYW1lJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VybmFtZTogdmFsdWVzWydzdXJuYW1lJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IHZhbHVlc1snZW1haWwnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiB2YWx1ZXNbJ2NvdW50cnknXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiB2YWx1ZXNbJ2NpdHknXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiB2YWx1ZXNbJ2FkZHJlc3MnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFnZTogdmFsdWVzWydzdGFnZSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZUlkOiBhdXRoLmdldENvbnRleHQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0geWllbGQgKGNyZWF0ZUFjdGlvbiA9PT0gbnVsbCB8fCBjcmVhdGVBY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNyZWF0ZUFjdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB2YWx1ZXNbJ25hbWUnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXJuYW1lOiB2YWx1ZXNbJ3N1cm5hbWUnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogdmFsdWVzWydlbWFpbCddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsQ2xpZW50SWQ6IHZhbHVlc1sncGhvbmUnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZTogdmFsdWVzWydwaG9uZSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6IHZhbHVlc1snYWRkcmVzcyddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IHZhbHVlc1snY291bnRyeSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IHZhbHVlc1snY2l0eSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlOiB2YWx1ZXNbJ3N0YWdlJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEFnZW50SWQ6IHZhbHVlc1snZGVmYXVsdEFnZW50SWQnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2VJZDogYXV0aC5nZXRDb250ZXh0KCksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICBjbGllbnRJZCA9IChfaCA9IChfZyA9IChfZiA9IHJlc3VsdCA9PT0gbnVsbCB8fCByZXN1bHQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3VsdC5kYXRhKSA9PT0gbnVsbCB8fCBfZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2YuY3JlYXRlQ2xpZW50KSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cuaWQpICE9PSBudWxsICYmIF9oICE9PSB2b2lkIDAgPyBfaCA6IG51bGw7XG4gICAgICAgICAgICAgICAgc2V0Q3VycmVudENvbnRhY3RJZChjbGllbnRJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNsaWVudElkKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIC8vIDLvuI/ig6MgU3luYyB0YWdzXG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ1RhZ3MgPSAoX2ogPSBjb250YWN0RGF0YSA9PT0gbnVsbCB8fCBjb250YWN0RGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29udGFjdERhdGEudGFncykgIT09IG51bGwgJiYgX2ogIT09IHZvaWQgMCA/IF9qIDogW107XG4gICAgICAgICAgICBjb25zdCB0YWdzVG9BZGQgPSBpc0VkaXRNb2RlXG4gICAgICAgICAgICAgICAgPyBhZGRlZFRhZ3MuZmlsdGVyKCh0YWcpID0+ICFleGlzdGluZ1RhZ3MuaW5jbHVkZXModGFnKSlcbiAgICAgICAgICAgICAgICA6IGFkZGVkVGFncztcbiAgICAgICAgICAgIHlpZWxkIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICAvLyBBZGQgbmV3IHRhZ3NcbiAgICAgICAgICAgICAgICAuLi50YWdzVG9BZGQubWFwKCh0YWcpID0+IHRhZ0NsaWVudCh7XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlSWQ6IGF1dGguZ2V0Q29udGV4dCgpIHx8IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgb25Db250YWN0Q3JlYXRlZCA9PT0gbnVsbCB8fCBvbkNvbnRhY3RDcmVhdGVkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNvbnRhY3RDcmVhdGVkKCk7XG4gICAgICAgICAgICBzZXRDb250YWN0SW5mb0lzT3BlbihmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0cmlnZ2VyRXJyb3JUb2FzdCh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHQoJ2Vycm9yJyksXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KSwgW3ZhbGlkYXRlRmllbGQsIHJlc2V0VmFsaWRhdGlvblN0YXRlcywgZm9ybURhdGEsIGFkZGVkVGFncywgY29udGFjdERhdGEgPT09IG51bGwgfHwgY29udGFjdERhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbnRhY3REYXRhLmlkLCBjb250YWN0RGF0YSA9PT0gbnVsbCB8fCBjb250YWN0RGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29udGFjdERhdGEudGFncywgdGFnQ2xpZW50LCBzZXRDb250YWN0SW5mb0lzT3BlbiwgaXNFZGl0TW9kZSwgY3JlYXRlQWN0aW9uLCBwYXRjaEFjdGlvbiwgdCwgb25Db250YWN0Q3JlYXRlZF0pO1xuICAgIC8vIE9ubHkgYmxvY2sgb24gdGhlIGluaXRpYWwgbG9hZDsgcmVmZXRjaGVzIG11c3Qgbm90IHVubW91bnQgdGhlIGZvcm1cbiAgICBpZiAobG9hZGluZ1RhZ3MgJiYgIWNsaWVudFRhZ3MubGVuZ3RoICYmICFjbGllbnRTdGFnZXMubGVuZ3RoKVxuICAgICAgICByZXR1cm4gX2pzeChDbGllbnRJbmZvTG9hZGVyLCB7fSk7XG4gICAgcmV0dXJuIChfanN4cyhDb250YWluZXIsIHsgY2hpbGRyZW46IFtfanN4KE1vZGFsVGl0bGUsIHsgY2hpbGRyZW46IGlzRWRpdE1vZGUgPyB0KCdjb250YWN0LmVkaXRDb250YWN0JykgOiB0KCdjb250YWN0LmFkZE5ld0NvbnRhY3QnKSB9KSwgX2pzeChDb250YWN0Rm9ybUZpZWxkcywgeyByZW5kZXJGaWVsZDogcmVuZGVyRmllbGQsIGNsaWVudFN0YWdlczogY2xpZW50U3RhZ2VzLCByZW5kZXJEcm9wbGlzdEZpZWxkOiByZW5kZXJEcm9wbGlzdEZpZWxkLCBpc0VkaXRNb2RlOiBpc0VkaXRNb2RlLCBwaG9uZVZhbHVlOiAoX2MgPSAoX2IgPSBmb3JtRGF0YVtGb3JtRmllbGRzLnBob25lXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnZhbHVlKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAnJywgb25QaG9uZUNoYW5nZTogKHZhbHVlKSA9PiBzZXRGaWVsZFZhbHVlKEZvcm1GaWVsZHMucGhvbmUsIHZhbHVlKSwgcGhvbmVGaWVsZEVycm9yOiBmb3JtRGF0YVtGb3JtRmllbGRzLnBob25lXSAmJiAhZm9ybURhdGFbRm9ybUZpZWxkcy5waG9uZV0uaXNWYWxpZFxuICAgICAgICAgICAgICAgICAgICA/IHQoZm9ybURhdGFbRm9ybUZpZWxkcy5waG9uZV0ubWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQgfSksIF9qc3goXCJkaXZcIiwgeyBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogVGV4dFNpemVSZW0uUyxcbiAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogTmV3VGV4dFdlaWdodC5OT1JNQUwsXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiBOZXdDb2xvcnMuRk9SRUdST1VORCxcbiAgICAgICAgICAgICAgICAgICAgbGluZUhlaWdodDogJ25vcm1hbCcsXG4gICAgICAgICAgICAgICAgfSwgY2hpbGRyZW46IHQoJ2NvbnRhY3QudGFncycpIH0pLCBfanN4KFRhZ3NTZWxlY3RvciwgeyBoYW5kbGVUYWdTZWxlY3Q6IGhhbmRsZVRhZ1NlbGVjdCwgYXZhaWxhYmxlVGFnczogYXZhaWxhYmxlVGFncywgcnRsOiBydGwsIGNvbnRhY3RzVGFnc0xvYWRpbmc6IGxvYWRpbmdUYWdzLCBhZGRlZFRhZ3M6IGFkZGVkVGFncywgaGFuZGxlVGFnUmVtb3ZlOiBoYW5kbGVUYWdSZW1vdmUsIHR5cGU6IFwiY2xpZW50XCIsIHJlZmV0Y2hUYWdzOiByZWZldGNoVGFncyB9KSwgX2pzeHMoXCJkaXZcIiwgeyBzdHlsZTogeyBkaXNwbGF5OiAnZmxleCcsIGp1c3RpZnlDb250ZW50OiAnZmxleC1lbmQnLCBnYXA6ICc4cHgnLCBtYXJnaW5Ub3A6ICcxNnB4JyB9LCBjaGlsZHJlbjogW19qc3goQnV0dG9uLCB7IHZhcmlhbnQ6IFwic2Vjb25kYXJ5XCIsIG9uQ2xpY2s6ICgpID0+IHNldENvbnRhY3RJbmZvSXNPcGVuKGZhbHNlKSwgY2hpbGRyZW46IHQoJ2NvbnRhY3QuY2FuY2VsJykgfSksIF9qc3goQnV0dG9uLCB7IG9uQ2xpY2s6IG9uU3VibWl0LCBjaGlsZHJlbjogaXNFZGl0TW9kZSA/IHQoJ2NvbnRhY3Quc2F2ZScpIDogdCgnY29udGFjdC5jcmVhdGUnKSB9KV0gfSldIH0pKTtcbn07XG5leHBvcnQgZGVmYXVsdCBDb250YWN0SW5mbztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNvbnRhY3RJbmZvLmpzLm1hcCJdfQ== */",
120197
120197
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$2
120198
120198
  });
120199
120199
  const useContactMutations = () => {
@@ -120256,35 +120256,37 @@ const ContactInfo = ({
120256
120256
  resetValidationStates,
120257
120257
  setFieldValue
120258
120258
  } = bcFormActions;
120259
- // Pre-fill form in edit mode or with initial contact data
120259
+ const stagePrefilledRef = React.useRef(false);
120260
+ // Pre-fill form in edit mode or with initial contact data.
120261
+ // clientStages is intentionally not a dependency: tag refetches (e.g. creating a new tag)
120262
+ // would otherwise re-run this effect and wipe what the user already typed.
120260
120263
  React.useEffect(() => {
120261
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
120264
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
120262
120265
  if (!contactInfoIsOpen) return;
120263
120266
  resetValidationStates();
120267
+ stagePrefilledRef.current = false;
120264
120268
  if (isEditMode && contactData) {
120265
- const stageName = (_b = (_a = clientStages === null || clientStages === void 0 ? void 0 : clientStages.find(stage => stage.id === contactData.stageId)) === null || _a === void 0 ? void 0 : _a.tag) !== null && _b !== void 0 ? _b : '';
120266
120269
  const contactFormMapping = {
120267
- [FormFields.name]: (_c = contactData.name) !== null && _c !== void 0 ? _c : '',
120268
- [FormFields.surname]: (_d = contactData.surname) !== null && _d !== void 0 ? _d : '',
120269
- [FormFields.email]: (_e = contactData.email) !== null && _e !== void 0 ? _e : '',
120270
- [FormFields.phone]: (_f = contactData.phone) !== null && _f !== void 0 ? _f : '',
120271
- [FormFields.address]: (_g = contactData.address) !== null && _g !== void 0 ? _g : '',
120272
- [FormFields.country]: (_h = contactData.country) !== null && _h !== void 0 ? _h : '',
120273
- [FormFields.city]: (_j = contactData.city) !== null && _j !== void 0 ? _j : '',
120274
- [FormFields.defaultAgentId]: (_k = contactData.defaultAgentId) !== null && _k !== void 0 ? _k : '',
120275
- [FormFields.stage]: stageName
120270
+ [FormFields.name]: (_a = contactData.name) !== null && _a !== void 0 ? _a : '',
120271
+ [FormFields.surname]: (_b = contactData.surname) !== null && _b !== void 0 ? _b : '',
120272
+ [FormFields.email]: (_c = contactData.email) !== null && _c !== void 0 ? _c : '',
120273
+ [FormFields.phone]: (_d = contactData.phone) !== null && _d !== void 0 ? _d : '',
120274
+ [FormFields.address]: (_e = contactData.address) !== null && _e !== void 0 ? _e : '',
120275
+ [FormFields.country]: (_f = contactData.country) !== null && _f !== void 0 ? _f : '',
120276
+ [FormFields.city]: (_g = contactData.city) !== null && _g !== void 0 ? _g : '',
120277
+ [FormFields.defaultAgentId]: (_h = contactData.defaultAgentId) !== null && _h !== void 0 ? _h : ''
120276
120278
  };
120277
120279
  Object.entries(contactFormMapping).forEach(([key, value]) => setFieldValue(key, value));
120278
120280
  } else if (initialContactData) {
120279
120281
  // Pre-fill with initial contact data from contact message
120280
120282
  const contactFormMapping = {
120281
- [FormFields.name]: (_l = initialContactData.firstName) !== null && _l !== void 0 ? _l : '',
120282
- [FormFields.surname]: (_m = initialContactData.lastName) !== null && _m !== void 0 ? _m : '',
120283
- [FormFields.email]: (_o = initialContactData.email) !== null && _o !== void 0 ? _o : '',
120284
- [FormFields.phone]: (_p = initialContactData.phone) !== null && _p !== void 0 ? _p : '',
120285
- [FormFields.address]: (_q = initialContactData.address) !== null && _q !== void 0 ? _q : '',
120286
- [FormFields.country]: (_r = initialContactData.country_code) !== null && _r !== void 0 ? _r : '',
120287
- [FormFields.city]: (_s = initialContactData.city) !== null && _s !== void 0 ? _s : '',
120283
+ [FormFields.name]: (_j = initialContactData.firstName) !== null && _j !== void 0 ? _j : '',
120284
+ [FormFields.surname]: (_k = initialContactData.lastName) !== null && _k !== void 0 ? _k : '',
120285
+ [FormFields.email]: (_l = initialContactData.email) !== null && _l !== void 0 ? _l : '',
120286
+ [FormFields.phone]: (_m = initialContactData.phone) !== null && _m !== void 0 ? _m : '',
120287
+ [FormFields.address]: (_o = initialContactData.address) !== null && _o !== void 0 ? _o : '',
120288
+ [FormFields.country]: (_p = initialContactData.country_code) !== null && _p !== void 0 ? _p : '',
120289
+ [FormFields.city]: (_q = initialContactData.city) !== null && _q !== void 0 ? _q : '',
120288
120290
  [FormFields.defaultAgentId]: '',
120289
120291
  [FormFields.stage]: ''
120290
120292
  };
@@ -120294,7 +120296,16 @@ const ContactInfo = ({
120294
120296
  Object.keys(FORM_INIT).forEach(field => setFieldValue(field, ''));
120295
120297
  setCurrentContactId(null);
120296
120298
  }
120297
- }, [contactInfoIsOpen, isEditMode, contactData, initialContactData, clientStages, resetValidationStates, setFieldValue]);
120299
+ }, [contactInfoIsOpen, isEditMode, contactData, initialContactData, resetValidationStates, setFieldValue]);
120300
+ // Stages load asynchronously; pre-fill the edited contact's stage once per open
120301
+ React.useEffect(() => {
120302
+ var _a, _b;
120303
+ if (!contactInfoIsOpen || !isEditMode || !contactData || stagePrefilledRef.current) return;
120304
+ if (!(clientStages === null || clientStages === void 0 ? void 0 : clientStages.length)) return;
120305
+ const stageName = (_b = (_a = clientStages.find(stage => stage.id === contactData.stageId)) === null || _a === void 0 ? void 0 : _a.tag) !== null && _b !== void 0 ? _b : '';
120306
+ setFieldValue(FormFields.stage, stageName);
120307
+ stagePrefilledRef.current = true;
120308
+ }, [contactInfoIsOpen, isEditMode, contactData, clientStages, setFieldValue]);
120298
120309
  React.useEffect(() => {
120299
120310
  if (contactData) {
120300
120311
  setAddedTags((contactData === null || contactData === void 0 ? void 0 : contactData.tags) || []);
@@ -120399,7 +120410,8 @@ const ContactInfo = ({
120399
120410
  });
120400
120411
  }
120401
120412
  }), [validateField, resetValidationStates, formData, addedTags, contactData === null || contactData === void 0 ? void 0 : contactData.id, contactData === null || contactData === void 0 ? void 0 : contactData.tags, tagClient, setContactInfoIsOpen, isEditMode, createAction, patchAction, t, onContactCreated]);
120402
- if (loadingTags) return jsx$1(ClientInfoLoader, {});
120413
+ // Only block on the initial load; refetches must not unmount the form
120414
+ if (loadingTags && !clientTags.length && !clientStages.length) return jsx$1(ClientInfoLoader, {});
120403
120415
  return jsxs(Container, {
120404
120416
  children: [jsx$1(ModalTitle, {
120405
120417
  children: isEditMode ? t('contact.editContact') : t('contact.addNewContact')
package/index.esm.js CHANGED
@@ -120175,7 +120175,7 @@ const Container = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "producti
120175
120175
  } : {
120176
120176
  name: "84oqz2",
120177
120177
  styles: "display:flex;flex-direction:column;gap:16px;width:100%",
120178
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbnRhY3RJbmZvLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQjZCIiwiZmlsZSI6IkNvbnRhY3RJbmZvLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXdhaXRlciB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5pbXBvcnQgeyBCdXR0b24sIEJDVmFsaWRhdGlvblR5cGVzLCB1c2VCQ0Zvcm0sIHRyaWdnZXJFcnJvclRvYXN0LCBOZXdUZXh0V2VpZ2h0LCBUZXh0U2l6ZVJlbSwgTmV3Q29sb3JzLCB9IGZyb20gJ0BiY3J1bWJzLm5ldC9iYy11aSc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjb250YWN0RGVmaW5pdGlvbiBmcm9tICcuLi9jb25maWcvY29udGFjdERlZmluaXRpb24nO1xuaW1wb3J0IHsgTW9kYWxUaXRsZSB9IGZyb20gJy4uLy4uL2dlbmVyaWMvY29tcG9uZW50cy9Db250YWluZXJzJztcbmltcG9ydCB7IHVzZVRhZ0NsaWVudE11dGF0aW9uLCB1c2VVbnRhZ0NsaWVudE11dGF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vZ3JhcGhxbC5hdXRvZ2VuZXJhdGVkJztcbmltcG9ydCB7IEZPUk1fSU5JVCwgRm9ybUZpZWxkcyB9IGZyb20gJy4uL2NvbmZpZy9jb250YWN0Rm9ybSc7XG5pbXBvcnQgQ29udGFjdEZvcm1GaWVsZHMgZnJvbSAnLi9Db250YWN0Rm9ybUZpZWxkcyc7XG5pbXBvcnQgVGFnc1NlbGVjdG9yIGZyb20gJy4uLy4uL2luYm94L2NvbXBvbmVudHMvTmV3RGV0YWlscy9UYWdzU2VsZWN0b3InO1xuaW1wb3J0IHVzZVRhZ3MgZnJvbSAnLi4vLi4vaW5ib3gvaG9va3MvdXNlVGFncyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgQ2xpZW50SW5mb0xvYWRlciBmcm9tICcuLi8uLi9pbmJveC9jb21wb25lbnRzL05ld0RldGFpbHMvQ29tcG9uZW50TG9hZGVycy9DbGllbnRJbmZvTG9hZGVyJztcbmltcG9ydCB7IHVzZVRoZW1lQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvdGhlbWVDb250ZXh0JztcbmltcG9ydCB7IGNvcmVDbGllbnQgfSBmcm9tICdAYmNydW1icy5uZXQvYmMtYXBpJztcbmltcG9ydCB7IGF1dGggfSBmcm9tICdAYmNydW1icy5uZXQvYmMtc2hhcmVkJztcbmNvbnN0IENvbnRhaW5lciA9IHN0eWxlZC5kaXYgYFxyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6IDE2cHg7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbmA7XG5jb25zdCB1c2VDb250YWN0TXV0YXRpb25zID0gKCkgPT4ge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICBjb25zdCBbdGFnQ2xpZW50XSA9IHVzZVRhZ0NsaWVudE11dGF0aW9uKHsgY2xpZW50OiBjb3JlQ2xpZW50IH0pO1xuICAgIGNvbnN0IFt1bnRhZ0NsaWVudF0gPSB1c2VVbnRhZ0NsaWVudE11dGF0aW9uKHsgY2xpZW50OiBjb3JlQ2xpZW50IH0pO1xuICAgIGNvbnN0IFtjcmVhdGVBY3Rpb25dID0gKChfYSA9IGNvbnRhY3REZWZpbml0aW9uLmNyZWF0ZU11dGF0aW9uKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVhY3RIb29rKHtcbiAgICAgICAgZmV0Y2hQb2xpY3k6ICduby1jYWNoZScsXG4gICAgICAgIGNsaWVudDogKF9iID0gY29udGFjdERlZmluaXRpb24uY2xpZW50KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBjb3JlQ2xpZW50LFxuICAgIH0pKSB8fCBbXTtcbiAgICBjb25zdCBbcGF0Y2hBY3Rpb25dID0gKChfYyA9IGNvbnRhY3REZWZpbml0aW9uLnBhdGNoTXV0YXRpb24pID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5yZWFjdEhvb2soe1xuICAgICAgICBmZXRjaFBvbGljeTogJ25vLWNhY2hlJyxcbiAgICAgICAgY2xpZW50OiAoX2QgPSBjb250YWN0RGVmaW5pdGlvbi5jbGllbnQpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IGNvcmVDbGllbnQsXG4gICAgfSkpIHx8IFtdO1xuICAgIHJldHVybiB7IHRhZ0NsaWVudCwgdW50YWdDbGllbnQsIGNyZWF0ZUFjdGlvbiwgcGF0Y2hBY3Rpb24gfTtcbn07XG5jb25zdCBDb250YWN0SW5mbyA9ICh7IHNldENvbnRhY3RJbmZvSXNPcGVuLCBjb250YWN0SW5mb0lzT3Blbiwgb25Db250YWN0Q3JlYXRlZCwgY29udGFjdERhdGEsIGluaXRpYWxDb250YWN0RGF0YSB9KSA9PiB7XG4gICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICAgIGNvbnN0IHsgcnRsIH0gPSB1c2VUaGVtZUNvbnRleHQoKTtcbiAgICBjb25zdCBpc0VkaXRNb2RlID0gQm9vbGVhbihjb250YWN0RGF0YSk7XG4gICAgY29uc3QgW2N1cnJlbnRDb250YWN0SWQsIHNldEN1cnJlbnRDb250YWN0SWRdID0gdXNlU3RhdGUoKF9hID0gY29udGFjdERhdGEgPT09IG51bGwgfHwgY29udGFjdERhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbnRhY3REYXRhLmlkKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsKTtcbiAgICBjb25zdCBbYWRkZWRUYWdzLCBzZXRBZGRlZFRhZ3NdID0gdXNlU3RhdGUoKGNvbnRhY3REYXRhID09PSBudWxsIHx8IGNvbnRhY3REYXRhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb250YWN0RGF0YS50YWdzKSB8fCBbXSk7XG4gICAgY29uc3QgeyBjbGllbnRUYWdzLCBjbGllbnRTdGFnZXMsIHJlZmV0Y2hUYWdzLCBsb2FkaW5nVGFncyB9ID0gdXNlVGFncygpO1xuICAgIGNvbnN0IHsgdGFnQ2xpZW50LCB1bnRhZ0NsaWVudCwgY3JlYXRlQWN0aW9uLCBwYXRjaEFjdGlvbiB9ID0gdXNlQ29udGFjdE11dGF0aW9ucygpO1xuICAgIGNvbnN0IFtmb3JtRGF0YSwgYmNGb3JtQWN0aW9uc10gPSB1c2VCQ0Zvcm0oRk9STV9JTklULCB0KTtcbiAgICBjb25zdCB7IHZhbGlkYXRlRmllbGQsIHJlbmRlckZpZWxkLCByZW5kZXJEcm9wbGlzdEZpZWxkLCByZXNldFZhbGlkYXRpb25TdGF0ZXMsIHNldEZpZWxkVmFsdWUgfSA9IGJjRm9ybUFjdGlvbnM7XG4gICAgLy8gUHJlLWZpbGwgZm9ybSBpbiBlZGl0IG1vZGUgb3Igd2l0aCBpbml0aWFsIGNvbnRhY3QgZGF0YVxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qLCBfaywgX2wsIF9tLCBfbywgX3AsIF9xLCBfciwgX3M7XG4gICAgICAgIGlmICghY29udGFjdEluZm9Jc09wZW4pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHJlc2V0VmFsaWRhdGlvblN0YXRlcygpO1xuICAgICAgICBpZiAoaXNFZGl0TW9kZSAmJiBjb250YWN0RGF0YSkge1xuICAgICAgICAgICAgY29uc3Qgc3RhZ2VOYW1lID0gKF9iID0gKF9hID0gY2xpZW50U3RhZ2VzID09PSBudWxsIHx8IGNsaWVudFN0YWdlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2xpZW50U3RhZ2VzLmZpbmQoKHN0YWdlKSA9PiBzdGFnZS5pZCA9PT0gY29udGFjdERhdGEuc3RhZ2VJZCkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50YWcpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnO1xuICAgICAgICAgICAgY29uc3QgY29udGFjdEZvcm1NYXBwaW5nID0ge1xuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLm5hbWVdOiAoX2MgPSBjb250YWN0RGF0YS5uYW1lKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAnJyxcbiAgICAgICAgICAgICAgICBbRm9ybUZpZWxkcy5zdXJuYW1lXTogKF9kID0gY29udGFjdERhdGEuc3VybmFtZSkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuZW1haWxdOiAoX2UgPSBjb250YWN0RGF0YS5lbWFpbCkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMucGhvbmVdOiAoX2YgPSBjb250YWN0RGF0YS5waG9uZSkgIT09IG51bGwgJiYgX2YgIT09IHZvaWQgMCA/IF9mIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuYWRkcmVzc106IChfZyA9IGNvbnRhY3REYXRhLmFkZHJlc3MpICE9PSBudWxsICYmIF9nICE9PSB2b2lkIDAgPyBfZyA6ICcnLFxuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLmNvdW50cnldOiAoX2ggPSBjb250YWN0RGF0YS5jb3VudHJ5KSAhPT0gbnVsbCAmJiBfaCAhPT0gdm9pZCAwID8gX2ggOiAnJyxcbiAgICAgICAgICAgICAgICBbRm9ybUZpZWxkcy5jaXR5XTogKF9qID0gY29udGFjdERhdGEuY2l0eSkgIT09IG51bGwgJiYgX2ogIT09IHZvaWQgMCA/IF9qIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuZGVmYXVsdEFnZW50SWRdOiAoX2sgPSBjb250YWN0RGF0YS5kZWZhdWx0QWdlbnRJZCkgIT09IG51bGwgJiYgX2sgIT09IHZvaWQgMCA/IF9rIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuc3RhZ2VdOiBzdGFnZU5hbWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoY29udGFjdEZvcm1NYXBwaW5nKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHNldEZpZWxkVmFsdWUoa2V5LCB2YWx1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGluaXRpYWxDb250YWN0RGF0YSkge1xuICAgICAgICAgICAgLy8gUHJlLWZpbGwgd2l0aCBpbml0aWFsIGNvbnRhY3QgZGF0YSBmcm9tIGNvbnRhY3QgbWVzc2FnZVxuICAgICAgICAgICAgY29uc3QgY29udGFjdEZvcm1NYXBwaW5nID0ge1xuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLm5hbWVdOiAoX2wgPSBpbml0aWFsQ29udGFjdERhdGEuZmlyc3ROYW1lKSAhPT0gbnVsbCAmJiBfbCAhPT0gdm9pZCAwID8gX2wgOiAnJyxcbiAgICAgICAgICAgICAgICBbRm9ybUZpZWxkcy5zdXJuYW1lXTogKF9tID0gaW5pdGlhbENvbnRhY3REYXRhLmxhc3ROYW1lKSAhPT0gbnVsbCAmJiBfbSAhPT0gdm9pZCAwID8gX20gOiAnJyxcbiAgICAgICAgICAgICAgICBbRm9ybUZpZWxkcy5lbWFpbF06IChfbyA9IGluaXRpYWxDb250YWN0RGF0YS5lbWFpbCkgIT09IG51bGwgJiYgX28gIT09IHZvaWQgMCA/IF9vIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMucGhvbmVdOiAoX3AgPSBpbml0aWFsQ29udGFjdERhdGEucGhvbmUpICE9PSBudWxsICYmIF9wICE9PSB2b2lkIDAgPyBfcCA6ICcnLFxuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLmFkZHJlc3NdOiAoX3EgPSBpbml0aWFsQ29udGFjdERhdGEuYWRkcmVzcykgIT09IG51bGwgJiYgX3EgIT09IHZvaWQgMCA/IF9xIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuY291bnRyeV06IChfciA9IGluaXRpYWxDb250YWN0RGF0YS5jb3VudHJ5X2NvZGUpICE9PSBudWxsICYmIF9yICE9PSB2b2lkIDAgPyBfciA6ICcnLFxuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLmNpdHldOiAoX3MgPSBpbml0aWFsQ29udGFjdERhdGEuY2l0eSkgIT09IG51bGwgJiYgX3MgIT09IHZvaWQgMCA/IF9zIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuZGVmYXVsdEFnZW50SWRdOiAnJyxcbiAgICAgICAgICAgICAgICBbRm9ybUZpZWxkcy5zdGFnZV06ICcnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGNvbnRhY3RGb3JtTWFwcGluZykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiBzZXRGaWVsZFZhbHVlKGtleSwgdmFsdWUpKTtcbiAgICAgICAgICAgIHNldEN1cnJlbnRDb250YWN0SWQobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhGT1JNX0lOSVQpLmZvckVhY2goKGZpZWxkKSA9PiBzZXRGaWVsZFZhbHVlKGZpZWxkLCAnJykpO1xuICAgICAgICAgICAgc2V0Q3VycmVudENvbnRhY3RJZChudWxsKTtcbiAgICAgICAgfVxuICAgIH0sIFtjb250YWN0SW5mb0lzT3BlbiwgaXNFZGl0TW9kZSwgY29udGFjdERhdGEsIGluaXRpYWxDb250YWN0RGF0YSwgY2xpZW50U3RhZ2VzLCByZXNldFZhbGlkYXRpb25TdGF0ZXMsIHNldEZpZWxkVmFsdWVdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoY29udGFjdERhdGEpIHtcbiAgICAgICAgICAgIHNldEFkZGVkVGFncygoY29udGFjdERhdGEgPT09IG51bGwgfHwgY29udGFjdERhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbnRhY3REYXRhLnRhZ3MpIHx8IFtdKTtcbiAgICAgICAgfVxuICAgIH0sIFtjb250YWN0RGF0YV0pO1xuICAgIGNvbnN0IGF2YWlsYWJsZVRhZ3MgPSB1c2VNZW1vKCgpID0+IChjbGllbnRUYWdzICE9PSBudWxsICYmIGNsaWVudFRhZ3MgIT09IHZvaWQgMCA/IGNsaWVudFRhZ3MgOiBbXSlcbiAgICAgICAgLm1hcCgodGFnKSA9PiAoeyB0ZXh0OiB0YWcudGFnLCB2YWx1ZTogdGFnLnRhZyB9KSlcbiAgICAgICAgLmZpbHRlcigodGFnKSA9PiAhYWRkZWRUYWdzLmluY2x1ZGVzKHRhZy52YWx1ZSkpLCBbY2xpZW50VGFncywgYWRkZWRUYWdzXSk7XG4gICAgY29uc3QgaGFuZGxlVGFnU2VsZWN0ID0gKHRhZ1ZhbHVlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgaWYgKCF0YWdWYWx1ZSB8fCBhZGRlZFRhZ3MuaW5jbHVkZXModGFnVmFsdWUpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzZXRBZGRlZFRhZ3MoKHByZXYpID0+IFsuLi5wcmV2LCB0YWdWYWx1ZV0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRhZ1JlbW92ZSA9ICh0YWdWYWx1ZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGlmICghY3VycmVudENvbnRhY3RJZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHlpZWxkIHVudGFnQ2xpZW50KHtcbiAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudElkOiBjdXJyZW50Q29udGFjdElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiB0YWdWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZUlkOiBhdXRoLmdldENvbnRleHQoKSB8fCAwLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNldEFkZGVkVGFncygocHJldikgPT4gcHJldi5maWx0ZXIoKHRhZykgPT4gdGFnICE9PSB0YWdWYWx1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RhZyByZW1vdmUgZXJyb3I6JywgZXJyKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IG9uU3VibWl0ID0gdXNlQ2FsbGJhY2soKGUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICB2YXIgX2QsIF9lLCBfZiwgX2csIF9oLCBfajtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXNldFZhbGlkYXRpb25TdGF0ZXMoKTtcbiAgICAgICAgY29uc3QgcmVxdWlyZWRGaWVsZHMgPSBpc0VkaXRNb2RlID8gW10gOiBbRm9ybUZpZWxkcy5waG9uZV07XG4gICAgICAgIGNvbnN0IGlzVmFsaWQgPSByZXF1aXJlZEZpZWxkcy5ldmVyeSgoZmllbGQpID0+IHZhbGlkYXRlRmllbGQoZmllbGQsIEJDVmFsaWRhdGlvblR5cGVzLk5PVF9FTVBUWSkpO1xuICAgICAgICBjb25zdCBlbWFpbFZhbGlkID0gKChfZCA9IGZvcm1EYXRhW1wiZW1haWxcIl0pID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC52YWx1ZSkgPyB2YWxpZGF0ZUZpZWxkKEZvcm1GaWVsZHMuZW1haWwsIEJDVmFsaWRhdGlvblR5cGVzLkVNQUlMKSA6IHRydWU7XG4gICAgICAgIGlmICghaXNWYWxpZCB8fCAhZW1haWxWYWxpZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGZvcm1EYXRhKS5tYXAoKFtrZXksIGZpZWxkXSkgPT4gW1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgZmllbGQudmFsdWUsXG4gICAgICAgIF0pKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBjbGllbnRJZCA9IChfZSA9IGNvbnRhY3REYXRhID09PSBudWxsIHx8IGNvbnRhY3REYXRhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb250YWN0RGF0YS5pZCkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogbnVsbDtcbiAgICAgICAgICAgIC8vIDHvuI/ig6MgVXBkYXRlIG9yIGNyZWF0ZSBjbGllbnRcbiAgICAgICAgICAgIGlmIChpc0VkaXRNb2RlICYmIGNsaWVudElkKSB7XG4gICAgICAgICAgICAgICAgeWllbGQgKHBhdGNoQWN0aW9uID09PSBudWxsIHx8IHBhdGNoQWN0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXRjaEFjdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogY2xpZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEFnZW50SWQ6IHZhbHVlc1snZGVmYXVsdEFnZW50SWQnXSA9PT0gJ3VubGlua0FnZW50JyA/IG51bGwgOiB2YWx1ZXNbJ2RlZmF1bHRBZ2VudElkJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdmFsdWVzWyduYW1lJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VybmFtZTogdmFsdWVzWydzdXJuYW1lJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IHZhbHVlc1snZW1haWwnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiB2YWx1ZXNbJ2NvdW50cnknXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiB2YWx1ZXNbJ2NpdHknXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiB2YWx1ZXNbJ2FkZHJlc3MnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFnZTogdmFsdWVzWydzdGFnZSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZUlkOiBhdXRoLmdldENvbnRleHQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0geWllbGQgKGNyZWF0ZUFjdGlvbiA9PT0gbnVsbCB8fCBjcmVhdGVBY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNyZWF0ZUFjdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB2YWx1ZXNbJ25hbWUnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXJuYW1lOiB2YWx1ZXNbJ3N1cm5hbWUnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogdmFsdWVzWydlbWFpbCddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsQ2xpZW50SWQ6IHZhbHVlc1sncGhvbmUnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZTogdmFsdWVzWydwaG9uZSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6IHZhbHVlc1snYWRkcmVzcyddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IHZhbHVlc1snY291bnRyeSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IHZhbHVlc1snY2l0eSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlOiB2YWx1ZXNbJ3N0YWdlJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEFnZW50SWQ6IHZhbHVlc1snZGVmYXVsdEFnZW50SWQnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2VJZDogYXV0aC5nZXRDb250ZXh0KCksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICBjbGllbnRJZCA9IChfaCA9IChfZyA9IChfZiA9IHJlc3VsdCA9PT0gbnVsbCB8fCByZXN1bHQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3VsdC5kYXRhKSA9PT0gbnVsbCB8fCBfZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2YuY3JlYXRlQ2xpZW50KSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cuaWQpICE9PSBudWxsICYmIF9oICE9PSB2b2lkIDAgPyBfaCA6IG51bGw7XG4gICAgICAgICAgICAgICAgc2V0Q3VycmVudENvbnRhY3RJZChjbGllbnRJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNsaWVudElkKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIC8vIDLvuI/ig6MgU3luYyB0YWdzXG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ1RhZ3MgPSAoX2ogPSBjb250YWN0RGF0YSA9PT0gbnVsbCB8fCBjb250YWN0RGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29udGFjdERhdGEudGFncykgIT09IG51bGwgJiYgX2ogIT09IHZvaWQgMCA/IF9qIDogW107XG4gICAgICAgICAgICBjb25zdCB0YWdzVG9BZGQgPSBpc0VkaXRNb2RlXG4gICAgICAgICAgICAgICAgPyBhZGRlZFRhZ3MuZmlsdGVyKCh0YWcpID0+ICFleGlzdGluZ1RhZ3MuaW5jbHVkZXModGFnKSlcbiAgICAgICAgICAgICAgICA6IGFkZGVkVGFncztcbiAgICAgICAgICAgIHlpZWxkIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICAvLyBBZGQgbmV3IHRhZ3NcbiAgICAgICAgICAgICAgICAuLi50YWdzVG9BZGQubWFwKCh0YWcpID0+IHRhZ0NsaWVudCh7XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlSWQ6IGF1dGguZ2V0Q29udGV4dCgpIHx8IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgb25Db250YWN0Q3JlYXRlZCA9PT0gbnVsbCB8fCBvbkNvbnRhY3RDcmVhdGVkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNvbnRhY3RDcmVhdGVkKCk7XG4gICAgICAgICAgICBzZXRDb250YWN0SW5mb0lzT3BlbihmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0cmlnZ2VyRXJyb3JUb2FzdCh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHQoJ2Vycm9yJyksXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KSwgW3ZhbGlkYXRlRmllbGQsIHJlc2V0VmFsaWRhdGlvblN0YXRlcywgZm9ybURhdGEsIGFkZGVkVGFncywgY29udGFjdERhdGEgPT09IG51bGwgfHwgY29udGFjdERhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbnRhY3REYXRhLmlkLCBjb250YWN0RGF0YSA9PT0gbnVsbCB8fCBjb250YWN0RGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29udGFjdERhdGEudGFncywgdGFnQ2xpZW50LCBzZXRDb250YWN0SW5mb0lzT3BlbiwgaXNFZGl0TW9kZSwgY3JlYXRlQWN0aW9uLCBwYXRjaEFjdGlvbiwgdCwgb25Db250YWN0Q3JlYXRlZF0pO1xuICAgIGlmIChsb2FkaW5nVGFncylcbiAgICAgICAgcmV0dXJuIF9qc3goQ2xpZW50SW5mb0xvYWRlciwge30pO1xuICAgIHJldHVybiAoX2pzeHMoQ29udGFpbmVyLCB7IGNoaWxkcmVuOiBbX2pzeChNb2RhbFRpdGxlLCB7IGNoaWxkcmVuOiBpc0VkaXRNb2RlID8gdCgnY29udGFjdC5lZGl0Q29udGFjdCcpIDogdCgnY29udGFjdC5hZGROZXdDb250YWN0JykgfSksIF9qc3goQ29udGFjdEZvcm1GaWVsZHMsIHsgcmVuZGVyRmllbGQ6IHJlbmRlckZpZWxkLCBjbGllbnRTdGFnZXM6IGNsaWVudFN0YWdlcywgcmVuZGVyRHJvcGxpc3RGaWVsZDogcmVuZGVyRHJvcGxpc3RGaWVsZCwgaXNFZGl0TW9kZTogaXNFZGl0TW9kZSwgcGhvbmVWYWx1ZTogKF9jID0gKF9iID0gZm9ybURhdGFbRm9ybUZpZWxkcy5waG9uZV0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi52YWx1ZSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogJycsIG9uUGhvbmVDaGFuZ2U6ICh2YWx1ZSkgPT4gc2V0RmllbGRWYWx1ZShGb3JtRmllbGRzLnBob25lLCB2YWx1ZSksIHBob25lRmllbGRFcnJvcjogZm9ybURhdGFbRm9ybUZpZWxkcy5waG9uZV0gJiYgIWZvcm1EYXRhW0Zvcm1GaWVsZHMucGhvbmVdLmlzVmFsaWRcbiAgICAgICAgICAgICAgICAgICAgPyB0KGZvcm1EYXRhW0Zvcm1GaWVsZHMucGhvbmVdLm1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkIH0pLCBfanN4KFwiZGl2XCIsIHsgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFRleHRTaXplUmVtLlMsXG4gICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IE5ld1RleHRXZWlnaHQuTk9STUFMLFxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogTmV3Q29sb3JzLkZPUkVHUk9VTkQsXG4gICAgICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQ6ICdub3JtYWwnLFxuICAgICAgICAgICAgICAgIH0sIGNoaWxkcmVuOiB0KCdjb250YWN0LnRhZ3MnKSB9KSwgX2pzeChUYWdzU2VsZWN0b3IsIHsgaGFuZGxlVGFnU2VsZWN0OiBoYW5kbGVUYWdTZWxlY3QsIGF2YWlsYWJsZVRhZ3M6IGF2YWlsYWJsZVRhZ3MsIHJ0bDogcnRsLCBjb250YWN0c1RhZ3NMb2FkaW5nOiBsb2FkaW5nVGFncywgYWRkZWRUYWdzOiBhZGRlZFRhZ3MsIGhhbmRsZVRhZ1JlbW92ZTogaGFuZGxlVGFnUmVtb3ZlLCB0eXBlOiBcImNsaWVudFwiLCByZWZldGNoVGFnczogcmVmZXRjaFRhZ3MgfSksIF9qc3hzKFwiZGl2XCIsIHsgc3R5bGU6IHsgZGlzcGxheTogJ2ZsZXgnLCBqdXN0aWZ5Q29udGVudDogJ2ZsZXgtZW5kJywgZ2FwOiAnOHB4JywgbWFyZ2luVG9wOiAnMTZweCcgfSwgY2hpbGRyZW46IFtfanN4KEJ1dHRvbiwgeyB2YXJpYW50OiBcInNlY29uZGFyeVwiLCBvbkNsaWNrOiAoKSA9PiBzZXRDb250YWN0SW5mb0lzT3BlbihmYWxzZSksIGNoaWxkcmVuOiB0KCdjb250YWN0LmNhbmNlbCcpIH0pLCBfanN4KEJ1dHRvbiwgeyBvbkNsaWNrOiBvblN1Ym1pdCwgY2hpbGRyZW46IGlzRWRpdE1vZGUgPyB0KCdjb250YWN0LnNhdmUnKSA6IHQoJ2NvbnRhY3QuY3JlYXRlJykgfSldIH0pXSB9KSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgQ29udGFjdEluZm87XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db250YWN0SW5mby5qcy5tYXAiXX0= */",
120178
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbnRhY3RJbmZvLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQjZCIiwiZmlsZSI6IkNvbnRhY3RJbmZvLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXdhaXRlciB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5pbXBvcnQgeyBCdXR0b24sIEJDVmFsaWRhdGlvblR5cGVzLCB1c2VCQ0Zvcm0sIHRyaWdnZXJFcnJvclRvYXN0LCBOZXdUZXh0V2VpZ2h0LCBUZXh0U2l6ZVJlbSwgTmV3Q29sb3JzLCB9IGZyb20gJ0BiY3J1bWJzLm5ldC9iYy11aSc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNvbnRhY3REZWZpbml0aW9uIGZyb20gJy4uL2NvbmZpZy9jb250YWN0RGVmaW5pdGlvbic7XG5pbXBvcnQgeyBNb2RhbFRpdGxlIH0gZnJvbSAnLi4vLi4vZ2VuZXJpYy9jb21wb25lbnRzL0NvbnRhaW5lcnMnO1xuaW1wb3J0IHsgdXNlVGFnQ2xpZW50TXV0YXRpb24sIHVzZVVudGFnQ2xpZW50TXV0YXRpb24gfSBmcm9tICcuLi8uLi8uLi9ncmFwaHFsLmF1dG9nZW5lcmF0ZWQnO1xuaW1wb3J0IHsgRk9STV9JTklULCBGb3JtRmllbGRzIH0gZnJvbSAnLi4vY29uZmlnL2NvbnRhY3RGb3JtJztcbmltcG9ydCBDb250YWN0Rm9ybUZpZWxkcyBmcm9tICcuL0NvbnRhY3RGb3JtRmllbGRzJztcbmltcG9ydCBUYWdzU2VsZWN0b3IgZnJvbSAnLi4vLi4vaW5ib3gvY29tcG9uZW50cy9OZXdEZXRhaWxzL1RhZ3NTZWxlY3Rvcic7XG5pbXBvcnQgdXNlVGFncyBmcm9tICcuLi8uLi9pbmJveC9ob29rcy91c2VUYWdzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCBDbGllbnRJbmZvTG9hZGVyIGZyb20gJy4uLy4uL2luYm94L2NvbXBvbmVudHMvTmV3RGV0YWlscy9Db21wb25lbnRMb2FkZXJzL0NsaWVudEluZm9Mb2FkZXInO1xuaW1wb3J0IHsgdXNlVGhlbWVDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC90aGVtZUNvbnRleHQnO1xuaW1wb3J0IHsgY29yZUNsaWVudCB9IGZyb20gJ0BiY3J1bWJzLm5ldC9iYy1hcGknO1xuaW1wb3J0IHsgYXV0aCB9IGZyb20gJ0BiY3J1bWJzLm5ldC9iYy1zaGFyZWQnO1xuY29uc3QgQ29udGFpbmVyID0gc3R5bGVkLmRpdiBgXHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogMTZweDtcclxuICB3aWR0aDogMTAwJTtcclxuYDtcbmNvbnN0IHVzZUNvbnRhY3RNdXRhdGlvbnMgPSAoKSA9PiB7XG4gICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgIGNvbnN0IFt0YWdDbGllbnRdID0gdXNlVGFnQ2xpZW50TXV0YXRpb24oeyBjbGllbnQ6IGNvcmVDbGllbnQgfSk7XG4gICAgY29uc3QgW3VudGFnQ2xpZW50XSA9IHVzZVVudGFnQ2xpZW50TXV0YXRpb24oeyBjbGllbnQ6IGNvcmVDbGllbnQgfSk7XG4gICAgY29uc3QgW2NyZWF0ZUFjdGlvbl0gPSAoKF9hID0gY29udGFjdERlZmluaXRpb24uY3JlYXRlTXV0YXRpb24pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZWFjdEhvb2soe1xuICAgICAgICBmZXRjaFBvbGljeTogJ25vLWNhY2hlJyxcbiAgICAgICAgY2xpZW50OiAoX2IgPSBjb250YWN0RGVmaW5pdGlvbi5jbGllbnQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGNvcmVDbGllbnQsXG4gICAgfSkpIHx8IFtdO1xuICAgIGNvbnN0IFtwYXRjaEFjdGlvbl0gPSAoKF9jID0gY29udGFjdERlZmluaXRpb24ucGF0Y2hNdXRhdGlvbikgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnJlYWN0SG9vayh7XG4gICAgICAgIGZldGNoUG9saWN5OiAnbm8tY2FjaGUnLFxuICAgICAgICBjbGllbnQ6IChfZCA9IGNvbnRhY3REZWZpbml0aW9uLmNsaWVudCkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogY29yZUNsaWVudCxcbiAgICB9KSkgfHwgW107XG4gICAgcmV0dXJuIHsgdGFnQ2xpZW50LCB1bnRhZ0NsaWVudCwgY3JlYXRlQWN0aW9uLCBwYXRjaEFjdGlvbiB9O1xufTtcbmNvbnN0IENvbnRhY3RJbmZvID0gKHsgc2V0Q29udGFjdEluZm9Jc09wZW4sIGNvbnRhY3RJbmZvSXNPcGVuLCBvbkNvbnRhY3RDcmVhdGVkLCBjb250YWN0RGF0YSwgaW5pdGlhbENvbnRhY3REYXRhIH0pID0+IHtcbiAgICB2YXIgX2EsIF9iLCBfYztcbiAgICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gICAgY29uc3QgeyBydGwgfSA9IHVzZVRoZW1lQ29udGV4dCgpO1xuICAgIGNvbnN0IGlzRWRpdE1vZGUgPSBCb29sZWFuKGNvbnRhY3REYXRhKTtcbiAgICBjb25zdCBbY3VycmVudENvbnRhY3RJZCwgc2V0Q3VycmVudENvbnRhY3RJZF0gPSB1c2VTdGF0ZSgoX2EgPSBjb250YWN0RGF0YSA9PT0gbnVsbCB8fCBjb250YWN0RGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29udGFjdERhdGEuaWQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG51bGwpO1xuICAgIGNvbnN0IFthZGRlZFRhZ3MsIHNldEFkZGVkVGFnc10gPSB1c2VTdGF0ZSgoY29udGFjdERhdGEgPT09IG51bGwgfHwgY29udGFjdERhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbnRhY3REYXRhLnRhZ3MpIHx8IFtdKTtcbiAgICBjb25zdCB7IGNsaWVudFRhZ3MsIGNsaWVudFN0YWdlcywgcmVmZXRjaFRhZ3MsIGxvYWRpbmdUYWdzIH0gPSB1c2VUYWdzKCk7XG4gICAgY29uc3QgeyB0YWdDbGllbnQsIHVudGFnQ2xpZW50LCBjcmVhdGVBY3Rpb24sIHBhdGNoQWN0aW9uIH0gPSB1c2VDb250YWN0TXV0YXRpb25zKCk7XG4gICAgY29uc3QgW2Zvcm1EYXRhLCBiY0Zvcm1BY3Rpb25zXSA9IHVzZUJDRm9ybShGT1JNX0lOSVQsIHQpO1xuICAgIGNvbnN0IHsgdmFsaWRhdGVGaWVsZCwgcmVuZGVyRmllbGQsIHJlbmRlckRyb3BsaXN0RmllbGQsIHJlc2V0VmFsaWRhdGlvblN0YXRlcywgc2V0RmllbGRWYWx1ZSB9ID0gYmNGb3JtQWN0aW9ucztcbiAgICBjb25zdCBzdGFnZVByZWZpbGxlZFJlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgLy8gUHJlLWZpbGwgZm9ybSBpbiBlZGl0IG1vZGUgb3Igd2l0aCBpbml0aWFsIGNvbnRhY3QgZGF0YS5cbiAgICAvLyBjbGllbnRTdGFnZXMgaXMgaW50ZW50aW9uYWxseSBub3QgYSBkZXBlbmRlbmN5OiB0YWcgcmVmZXRjaGVzIChlLmcuIGNyZWF0aW5nIGEgbmV3IHRhZylcbiAgICAvLyB3b3VsZCBvdGhlcndpc2UgcmUtcnVuIHRoaXMgZWZmZWN0IGFuZCB3aXBlIHdoYXQgdGhlIHVzZXIgYWxyZWFkeSB0eXBlZC5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2csIF9oLCBfaiwgX2ssIF9sLCBfbSwgX28sIF9wLCBfcTtcbiAgICAgICAgaWYgKCFjb250YWN0SW5mb0lzT3BlbilcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcmVzZXRWYWxpZGF0aW9uU3RhdGVzKCk7XG4gICAgICAgIHN0YWdlUHJlZmlsbGVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGlzRWRpdE1vZGUgJiYgY29udGFjdERhdGEpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhY3RGb3JtTWFwcGluZyA9IHtcbiAgICAgICAgICAgICAgICBbRm9ybUZpZWxkcy5uYW1lXTogKF9hID0gY29udGFjdERhdGEubmFtZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuc3VybmFtZV06IChfYiA9IGNvbnRhY3REYXRhLnN1cm5hbWUpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcnLFxuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLmVtYWlsXTogKF9jID0gY29udGFjdERhdGEuZW1haWwpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6ICcnLFxuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLnBob25lXTogKF9kID0gY29udGFjdERhdGEucGhvbmUpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6ICcnLFxuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLmFkZHJlc3NdOiAoX2UgPSBjb250YWN0RGF0YS5hZGRyZXNzKSAhPT0gbnVsbCAmJiBfZSAhPT0gdm9pZCAwID8gX2UgOiAnJyxcbiAgICAgICAgICAgICAgICBbRm9ybUZpZWxkcy5jb3VudHJ5XTogKF9mID0gY29udGFjdERhdGEuY291bnRyeSkgIT09IG51bGwgJiYgX2YgIT09IHZvaWQgMCA/IF9mIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuY2l0eV06IChfZyA9IGNvbnRhY3REYXRhLmNpdHkpICE9PSBudWxsICYmIF9nICE9PSB2b2lkIDAgPyBfZyA6ICcnLFxuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLmRlZmF1bHRBZ2VudElkXTogKF9oID0gY29udGFjdERhdGEuZGVmYXVsdEFnZW50SWQpICE9PSBudWxsICYmIF9oICE9PSB2b2lkIDAgPyBfaCA6ICcnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGNvbnRhY3RGb3JtTWFwcGluZykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiBzZXRGaWVsZFZhbHVlKGtleSwgdmFsdWUpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpbml0aWFsQ29udGFjdERhdGEpIHtcbiAgICAgICAgICAgIC8vIFByZS1maWxsIHdpdGggaW5pdGlhbCBjb250YWN0IGRhdGEgZnJvbSBjb250YWN0IG1lc3NhZ2VcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhY3RGb3JtTWFwcGluZyA9IHtcbiAgICAgICAgICAgICAgICBbRm9ybUZpZWxkcy5uYW1lXTogKF9qID0gaW5pdGlhbENvbnRhY3REYXRhLmZpcnN0TmFtZSkgIT09IG51bGwgJiYgX2ogIT09IHZvaWQgMCA/IF9qIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuc3VybmFtZV06IChfayA9IGluaXRpYWxDb250YWN0RGF0YS5sYXN0TmFtZSkgIT09IG51bGwgJiYgX2sgIT09IHZvaWQgMCA/IF9rIDogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuZW1haWxdOiAoX2wgPSBpbml0aWFsQ29udGFjdERhdGEuZW1haWwpICE9PSBudWxsICYmIF9sICE9PSB2b2lkIDAgPyBfbCA6ICcnLFxuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLnBob25lXTogKF9tID0gaW5pdGlhbENvbnRhY3REYXRhLnBob25lKSAhPT0gbnVsbCAmJiBfbSAhPT0gdm9pZCAwID8gX20gOiAnJyxcbiAgICAgICAgICAgICAgICBbRm9ybUZpZWxkcy5hZGRyZXNzXTogKF9vID0gaW5pdGlhbENvbnRhY3REYXRhLmFkZHJlc3MpICE9PSBudWxsICYmIF9vICE9PSB2b2lkIDAgPyBfbyA6ICcnLFxuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLmNvdW50cnldOiAoX3AgPSBpbml0aWFsQ29udGFjdERhdGEuY291bnRyeV9jb2RlKSAhPT0gbnVsbCAmJiBfcCAhPT0gdm9pZCAwID8gX3AgOiAnJyxcbiAgICAgICAgICAgICAgICBbRm9ybUZpZWxkcy5jaXR5XTogKF9xID0gaW5pdGlhbENvbnRhY3REYXRhLmNpdHkpICE9PSBudWxsICYmIF9xICE9PSB2b2lkIDAgPyBfcSA6ICcnLFxuICAgICAgICAgICAgICAgIFtGb3JtRmllbGRzLmRlZmF1bHRBZ2VudElkXTogJycsXG4gICAgICAgICAgICAgICAgW0Zvcm1GaWVsZHMuc3RhZ2VdOiAnJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhjb250YWN0Rm9ybU1hcHBpbmcpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4gc2V0RmllbGRWYWx1ZShrZXksIHZhbHVlKSk7XG4gICAgICAgICAgICBzZXRDdXJyZW50Q29udGFjdElkKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoRk9STV9JTklUKS5mb3JFYWNoKChmaWVsZCkgPT4gc2V0RmllbGRWYWx1ZShmaWVsZCwgJycpKTtcbiAgICAgICAgICAgIHNldEN1cnJlbnRDb250YWN0SWQobnVsbCk7XG4gICAgICAgIH1cbiAgICB9LCBbY29udGFjdEluZm9Jc09wZW4sIGlzRWRpdE1vZGUsIGNvbnRhY3REYXRhLCBpbml0aWFsQ29udGFjdERhdGEsIHJlc2V0VmFsaWRhdGlvblN0YXRlcywgc2V0RmllbGRWYWx1ZV0pO1xuICAgIC8vIFN0YWdlcyBsb2FkIGFzeW5jaHJvbm91c2x5OyBwcmUtZmlsbCB0aGUgZWRpdGVkIGNvbnRhY3QncyBzdGFnZSBvbmNlIHBlciBvcGVuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKCFjb250YWN0SW5mb0lzT3BlbiB8fCAhaXNFZGl0TW9kZSB8fCAhY29udGFjdERhdGEgfHwgc3RhZ2VQcmVmaWxsZWRSZWYuY3VycmVudClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKCEoY2xpZW50U3RhZ2VzID09PSBudWxsIHx8IGNsaWVudFN0YWdlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogY2xpZW50U3RhZ2VzLmxlbmd0aCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHN0YWdlTmFtZSA9IChfYiA9IChfYSA9IGNsaWVudFN0YWdlcy5maW5kKChzdGFnZSkgPT4gc3RhZ2UuaWQgPT09IGNvbnRhY3REYXRhLnN0YWdlSWQpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGFnKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAnJztcbiAgICAgICAgc2V0RmllbGRWYWx1ZShGb3JtRmllbGRzLnN0YWdlLCBzdGFnZU5hbWUpO1xuICAgICAgICBzdGFnZVByZWZpbGxlZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICB9LCBbY29udGFjdEluZm9Jc09wZW4sIGlzRWRpdE1vZGUsIGNvbnRhY3REYXRhLCBjbGllbnRTdGFnZXMsIHNldEZpZWxkVmFsdWVdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoY29udGFjdERhdGEpIHtcbiAgICAgICAgICAgIHNldEFkZGVkVGFncygoY29udGFjdERhdGEgPT09IG51bGwgfHwgY29udGFjdERhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbnRhY3REYXRhLnRhZ3MpIHx8IFtdKTtcbiAgICAgICAgfVxuICAgIH0sIFtjb250YWN0RGF0YV0pO1xuICAgIGNvbnN0IGF2YWlsYWJsZVRhZ3MgPSB1c2VNZW1vKCgpID0+IChjbGllbnRUYWdzICE9PSBudWxsICYmIGNsaWVudFRhZ3MgIT09IHZvaWQgMCA/IGNsaWVudFRhZ3MgOiBbXSlcbiAgICAgICAgLm1hcCgodGFnKSA9PiAoeyB0ZXh0OiB0YWcudGFnLCB2YWx1ZTogdGFnLnRhZyB9KSlcbiAgICAgICAgLmZpbHRlcigodGFnKSA9PiAhYWRkZWRUYWdzLmluY2x1ZGVzKHRhZy52YWx1ZSkpLCBbY2xpZW50VGFncywgYWRkZWRUYWdzXSk7XG4gICAgY29uc3QgaGFuZGxlVGFnU2VsZWN0ID0gKHRhZ1ZhbHVlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgaWYgKCF0YWdWYWx1ZSB8fCBhZGRlZFRhZ3MuaW5jbHVkZXModGFnVmFsdWUpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzZXRBZGRlZFRhZ3MoKHByZXYpID0+IFsuLi5wcmV2LCB0YWdWYWx1ZV0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRhZ1JlbW92ZSA9ICh0YWdWYWx1ZSkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGlmICghY3VycmVudENvbnRhY3RJZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHlpZWxkIHVudGFnQ2xpZW50KHtcbiAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudElkOiBjdXJyZW50Q29udGFjdElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiB0YWdWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZUlkOiBhdXRoLmdldENvbnRleHQoKSB8fCAwLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNldEFkZGVkVGFncygocHJldikgPT4gcHJldi5maWx0ZXIoKHRhZykgPT4gdGFnICE9PSB0YWdWYWx1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RhZyByZW1vdmUgZXJyb3I6JywgZXJyKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IG9uU3VibWl0ID0gdXNlQ2FsbGJhY2soKGUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICB2YXIgX2QsIF9lLCBfZiwgX2csIF9oLCBfajtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXNldFZhbGlkYXRpb25TdGF0ZXMoKTtcbiAgICAgICAgY29uc3QgcmVxdWlyZWRGaWVsZHMgPSBpc0VkaXRNb2RlID8gW10gOiBbRm9ybUZpZWxkcy5waG9uZV07XG4gICAgICAgIGNvbnN0IGlzVmFsaWQgPSByZXF1aXJlZEZpZWxkcy5ldmVyeSgoZmllbGQpID0+IHZhbGlkYXRlRmllbGQoZmllbGQsIEJDVmFsaWRhdGlvblR5cGVzLk5PVF9FTVBUWSkpO1xuICAgICAgICBjb25zdCBlbWFpbFZhbGlkID0gKChfZCA9IGZvcm1EYXRhW1wiZW1haWxcIl0pID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC52YWx1ZSkgPyB2YWxpZGF0ZUZpZWxkKEZvcm1GaWVsZHMuZW1haWwsIEJDVmFsaWRhdGlvblR5cGVzLkVNQUlMKSA6IHRydWU7XG4gICAgICAgIGlmICghaXNWYWxpZCB8fCAhZW1haWxWYWxpZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGZvcm1EYXRhKS5tYXAoKFtrZXksIGZpZWxkXSkgPT4gW1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgZmllbGQudmFsdWUsXG4gICAgICAgIF0pKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBjbGllbnRJZCA9IChfZSA9IGNvbnRhY3REYXRhID09PSBudWxsIHx8IGNvbnRhY3REYXRhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb250YWN0RGF0YS5pZCkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogbnVsbDtcbiAgICAgICAgICAgIC8vIDHvuI/ig6MgVXBkYXRlIG9yIGNyZWF0ZSBjbGllbnRcbiAgICAgICAgICAgIGlmIChpc0VkaXRNb2RlICYmIGNsaWVudElkKSB7XG4gICAgICAgICAgICAgICAgeWllbGQgKHBhdGNoQWN0aW9uID09PSBudWxsIHx8IHBhdGNoQWN0aW9uID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXRjaEFjdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogY2xpZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEFnZW50SWQ6IHZhbHVlc1snZGVmYXVsdEFnZW50SWQnXSA9PT0gJ3VubGlua0FnZW50JyA/IG51bGwgOiB2YWx1ZXNbJ2RlZmF1bHRBZ2VudElkJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdmFsdWVzWyduYW1lJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VybmFtZTogdmFsdWVzWydzdXJuYW1lJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IHZhbHVlc1snZW1haWwnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiB2YWx1ZXNbJ2NvdW50cnknXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiB2YWx1ZXNbJ2NpdHknXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiB2YWx1ZXNbJ2FkZHJlc3MnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFnZTogdmFsdWVzWydzdGFnZSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzcGFjZUlkOiBhdXRoLmdldENvbnRleHQoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0geWllbGQgKGNyZWF0ZUFjdGlvbiA9PT0gbnVsbCB8fCBjcmVhdGVBY3Rpb24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNyZWF0ZUFjdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB2YWx1ZXNbJ25hbWUnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXJuYW1lOiB2YWx1ZXNbJ3N1cm5hbWUnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogdmFsdWVzWydlbWFpbCddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsQ2xpZW50SWQ6IHZhbHVlc1sncGhvbmUnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZTogdmFsdWVzWydwaG9uZSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6IHZhbHVlc1snYWRkcmVzcyddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IHZhbHVlc1snY291bnRyeSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IHZhbHVlc1snY2l0eSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlOiB2YWx1ZXNbJ3N0YWdlJ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEFnZW50SWQ6IHZhbHVlc1snZGVmYXVsdEFnZW50SWQnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jrc3BhY2VJZDogYXV0aC5nZXRDb250ZXh0KCksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICBjbGllbnRJZCA9IChfaCA9IChfZyA9IChfZiA9IHJlc3VsdCA9PT0gbnVsbCB8fCByZXN1bHQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlc3VsdC5kYXRhKSA9PT0gbnVsbCB8fCBfZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2YuY3JlYXRlQ2xpZW50KSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cuaWQpICE9PSBudWxsICYmIF9oICE9PSB2b2lkIDAgPyBfaCA6IG51bGw7XG4gICAgICAgICAgICAgICAgc2V0Q3VycmVudENvbnRhY3RJZChjbGllbnRJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNsaWVudElkKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIC8vIDLvuI/ig6MgU3luYyB0YWdzXG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ1RhZ3MgPSAoX2ogPSBjb250YWN0RGF0YSA9PT0gbnVsbCB8fCBjb250YWN0RGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29udGFjdERhdGEudGFncykgIT09IG51bGwgJiYgX2ogIT09IHZvaWQgMCA/IF9qIDogW107XG4gICAgICAgICAgICBjb25zdCB0YWdzVG9BZGQgPSBpc0VkaXRNb2RlXG4gICAgICAgICAgICAgICAgPyBhZGRlZFRhZ3MuZmlsdGVyKCh0YWcpID0+ICFleGlzdGluZ1RhZ3MuaW5jbHVkZXModGFnKSlcbiAgICAgICAgICAgICAgICA6IGFkZGVkVGFncztcbiAgICAgICAgICAgIHlpZWxkIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICAvLyBBZGQgbmV3IHRhZ3NcbiAgICAgICAgICAgICAgICAuLi50YWdzVG9BZGQubWFwKCh0YWcpID0+IHRhZ0NsaWVudCh7XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlSWQ6IGF1dGguZ2V0Q29udGV4dCgpIHx8IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgb25Db250YWN0Q3JlYXRlZCA9PT0gbnVsbCB8fCBvbkNvbnRhY3RDcmVhdGVkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNvbnRhY3RDcmVhdGVkKCk7XG4gICAgICAgICAgICBzZXRDb250YWN0SW5mb0lzT3BlbihmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0cmlnZ2VyRXJyb3JUb2FzdCh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHQoJ2Vycm9yJyksXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KSwgW3ZhbGlkYXRlRmllbGQsIHJlc2V0VmFsaWRhdGlvblN0YXRlcywgZm9ybURhdGEsIGFkZGVkVGFncywgY29udGFjdERhdGEgPT09IG51bGwgfHwgY29udGFjdERhdGEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbnRhY3REYXRhLmlkLCBjb250YWN0RGF0YSA9PT0gbnVsbCB8fCBjb250YWN0RGF0YSA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29udGFjdERhdGEudGFncywgdGFnQ2xpZW50LCBzZXRDb250YWN0SW5mb0lzT3BlbiwgaXNFZGl0TW9kZSwgY3JlYXRlQWN0aW9uLCBwYXRjaEFjdGlvbiwgdCwgb25Db250YWN0Q3JlYXRlZF0pO1xuICAgIC8vIE9ubHkgYmxvY2sgb24gdGhlIGluaXRpYWwgbG9hZDsgcmVmZXRjaGVzIG11c3Qgbm90IHVubW91bnQgdGhlIGZvcm1cbiAgICBpZiAobG9hZGluZ1RhZ3MgJiYgIWNsaWVudFRhZ3MubGVuZ3RoICYmICFjbGllbnRTdGFnZXMubGVuZ3RoKVxuICAgICAgICByZXR1cm4gX2pzeChDbGllbnRJbmZvTG9hZGVyLCB7fSk7XG4gICAgcmV0dXJuIChfanN4cyhDb250YWluZXIsIHsgY2hpbGRyZW46IFtfanN4KE1vZGFsVGl0bGUsIHsgY2hpbGRyZW46IGlzRWRpdE1vZGUgPyB0KCdjb250YWN0LmVkaXRDb250YWN0JykgOiB0KCdjb250YWN0LmFkZE5ld0NvbnRhY3QnKSB9KSwgX2pzeChDb250YWN0Rm9ybUZpZWxkcywgeyByZW5kZXJGaWVsZDogcmVuZGVyRmllbGQsIGNsaWVudFN0YWdlczogY2xpZW50U3RhZ2VzLCByZW5kZXJEcm9wbGlzdEZpZWxkOiByZW5kZXJEcm9wbGlzdEZpZWxkLCBpc0VkaXRNb2RlOiBpc0VkaXRNb2RlLCBwaG9uZVZhbHVlOiAoX2MgPSAoX2IgPSBmb3JtRGF0YVtGb3JtRmllbGRzLnBob25lXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnZhbHVlKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAnJywgb25QaG9uZUNoYW5nZTogKHZhbHVlKSA9PiBzZXRGaWVsZFZhbHVlKEZvcm1GaWVsZHMucGhvbmUsIHZhbHVlKSwgcGhvbmVGaWVsZEVycm9yOiBmb3JtRGF0YVtGb3JtRmllbGRzLnBob25lXSAmJiAhZm9ybURhdGFbRm9ybUZpZWxkcy5waG9uZV0uaXNWYWxpZFxuICAgICAgICAgICAgICAgICAgICA/IHQoZm9ybURhdGFbRm9ybUZpZWxkcy5waG9uZV0ubWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQgfSksIF9qc3goXCJkaXZcIiwgeyBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogVGV4dFNpemVSZW0uUyxcbiAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogTmV3VGV4dFdlaWdodC5OT1JNQUwsXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiBOZXdDb2xvcnMuRk9SRUdST1VORCxcbiAgICAgICAgICAgICAgICAgICAgbGluZUhlaWdodDogJ25vcm1hbCcsXG4gICAgICAgICAgICAgICAgfSwgY2hpbGRyZW46IHQoJ2NvbnRhY3QudGFncycpIH0pLCBfanN4KFRhZ3NTZWxlY3RvciwgeyBoYW5kbGVUYWdTZWxlY3Q6IGhhbmRsZVRhZ1NlbGVjdCwgYXZhaWxhYmxlVGFnczogYXZhaWxhYmxlVGFncywgcnRsOiBydGwsIGNvbnRhY3RzVGFnc0xvYWRpbmc6IGxvYWRpbmdUYWdzLCBhZGRlZFRhZ3M6IGFkZGVkVGFncywgaGFuZGxlVGFnUmVtb3ZlOiBoYW5kbGVUYWdSZW1vdmUsIHR5cGU6IFwiY2xpZW50XCIsIHJlZmV0Y2hUYWdzOiByZWZldGNoVGFncyB9KSwgX2pzeHMoXCJkaXZcIiwgeyBzdHlsZTogeyBkaXNwbGF5OiAnZmxleCcsIGp1c3RpZnlDb250ZW50OiAnZmxleC1lbmQnLCBnYXA6ICc4cHgnLCBtYXJnaW5Ub3A6ICcxNnB4JyB9LCBjaGlsZHJlbjogW19qc3goQnV0dG9uLCB7IHZhcmlhbnQ6IFwic2Vjb25kYXJ5XCIsIG9uQ2xpY2s6ICgpID0+IHNldENvbnRhY3RJbmZvSXNPcGVuKGZhbHNlKSwgY2hpbGRyZW46IHQoJ2NvbnRhY3QuY2FuY2VsJykgfSksIF9qc3goQnV0dG9uLCB7IG9uQ2xpY2s6IG9uU3VibWl0LCBjaGlsZHJlbjogaXNFZGl0TW9kZSA/IHQoJ2NvbnRhY3Quc2F2ZScpIDogdCgnY29udGFjdC5jcmVhdGUnKSB9KV0gfSldIH0pKTtcbn07XG5leHBvcnQgZGVmYXVsdCBDb250YWN0SW5mbztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUNvbnRhY3RJbmZvLmpzLm1hcCJdfQ== */",
120179
120179
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$2
120180
120180
  });
120181
120181
  const useContactMutations = () => {
@@ -120238,35 +120238,37 @@ const ContactInfo = ({
120238
120238
  resetValidationStates,
120239
120239
  setFieldValue
120240
120240
  } = bcFormActions;
120241
- // Pre-fill form in edit mode or with initial contact data
120241
+ const stagePrefilledRef = useRef(false);
120242
+ // Pre-fill form in edit mode or with initial contact data.
120243
+ // clientStages is intentionally not a dependency: tag refetches (e.g. creating a new tag)
120244
+ // would otherwise re-run this effect and wipe what the user already typed.
120242
120245
  useEffect(() => {
120243
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
120246
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
120244
120247
  if (!contactInfoIsOpen) return;
120245
120248
  resetValidationStates();
120249
+ stagePrefilledRef.current = false;
120246
120250
  if (isEditMode && contactData) {
120247
- const stageName = (_b = (_a = clientStages === null || clientStages === void 0 ? void 0 : clientStages.find(stage => stage.id === contactData.stageId)) === null || _a === void 0 ? void 0 : _a.tag) !== null && _b !== void 0 ? _b : '';
120248
120251
  const contactFormMapping = {
120249
- [FormFields.name]: (_c = contactData.name) !== null && _c !== void 0 ? _c : '',
120250
- [FormFields.surname]: (_d = contactData.surname) !== null && _d !== void 0 ? _d : '',
120251
- [FormFields.email]: (_e = contactData.email) !== null && _e !== void 0 ? _e : '',
120252
- [FormFields.phone]: (_f = contactData.phone) !== null && _f !== void 0 ? _f : '',
120253
- [FormFields.address]: (_g = contactData.address) !== null && _g !== void 0 ? _g : '',
120254
- [FormFields.country]: (_h = contactData.country) !== null && _h !== void 0 ? _h : '',
120255
- [FormFields.city]: (_j = contactData.city) !== null && _j !== void 0 ? _j : '',
120256
- [FormFields.defaultAgentId]: (_k = contactData.defaultAgentId) !== null && _k !== void 0 ? _k : '',
120257
- [FormFields.stage]: stageName
120252
+ [FormFields.name]: (_a = contactData.name) !== null && _a !== void 0 ? _a : '',
120253
+ [FormFields.surname]: (_b = contactData.surname) !== null && _b !== void 0 ? _b : '',
120254
+ [FormFields.email]: (_c = contactData.email) !== null && _c !== void 0 ? _c : '',
120255
+ [FormFields.phone]: (_d = contactData.phone) !== null && _d !== void 0 ? _d : '',
120256
+ [FormFields.address]: (_e = contactData.address) !== null && _e !== void 0 ? _e : '',
120257
+ [FormFields.country]: (_f = contactData.country) !== null && _f !== void 0 ? _f : '',
120258
+ [FormFields.city]: (_g = contactData.city) !== null && _g !== void 0 ? _g : '',
120259
+ [FormFields.defaultAgentId]: (_h = contactData.defaultAgentId) !== null && _h !== void 0 ? _h : ''
120258
120260
  };
120259
120261
  Object.entries(contactFormMapping).forEach(([key, value]) => setFieldValue(key, value));
120260
120262
  } else if (initialContactData) {
120261
120263
  // Pre-fill with initial contact data from contact message
120262
120264
  const contactFormMapping = {
120263
- [FormFields.name]: (_l = initialContactData.firstName) !== null && _l !== void 0 ? _l : '',
120264
- [FormFields.surname]: (_m = initialContactData.lastName) !== null && _m !== void 0 ? _m : '',
120265
- [FormFields.email]: (_o = initialContactData.email) !== null && _o !== void 0 ? _o : '',
120266
- [FormFields.phone]: (_p = initialContactData.phone) !== null && _p !== void 0 ? _p : '',
120267
- [FormFields.address]: (_q = initialContactData.address) !== null && _q !== void 0 ? _q : '',
120268
- [FormFields.country]: (_r = initialContactData.country_code) !== null && _r !== void 0 ? _r : '',
120269
- [FormFields.city]: (_s = initialContactData.city) !== null && _s !== void 0 ? _s : '',
120265
+ [FormFields.name]: (_j = initialContactData.firstName) !== null && _j !== void 0 ? _j : '',
120266
+ [FormFields.surname]: (_k = initialContactData.lastName) !== null && _k !== void 0 ? _k : '',
120267
+ [FormFields.email]: (_l = initialContactData.email) !== null && _l !== void 0 ? _l : '',
120268
+ [FormFields.phone]: (_m = initialContactData.phone) !== null && _m !== void 0 ? _m : '',
120269
+ [FormFields.address]: (_o = initialContactData.address) !== null && _o !== void 0 ? _o : '',
120270
+ [FormFields.country]: (_p = initialContactData.country_code) !== null && _p !== void 0 ? _p : '',
120271
+ [FormFields.city]: (_q = initialContactData.city) !== null && _q !== void 0 ? _q : '',
120270
120272
  [FormFields.defaultAgentId]: '',
120271
120273
  [FormFields.stage]: ''
120272
120274
  };
@@ -120276,7 +120278,16 @@ const ContactInfo = ({
120276
120278
  Object.keys(FORM_INIT).forEach(field => setFieldValue(field, ''));
120277
120279
  setCurrentContactId(null);
120278
120280
  }
120279
- }, [contactInfoIsOpen, isEditMode, contactData, initialContactData, clientStages, resetValidationStates, setFieldValue]);
120281
+ }, [contactInfoIsOpen, isEditMode, contactData, initialContactData, resetValidationStates, setFieldValue]);
120282
+ // Stages load asynchronously; pre-fill the edited contact's stage once per open
120283
+ useEffect(() => {
120284
+ var _a, _b;
120285
+ if (!contactInfoIsOpen || !isEditMode || !contactData || stagePrefilledRef.current) return;
120286
+ if (!(clientStages === null || clientStages === void 0 ? void 0 : clientStages.length)) return;
120287
+ const stageName = (_b = (_a = clientStages.find(stage => stage.id === contactData.stageId)) === null || _a === void 0 ? void 0 : _a.tag) !== null && _b !== void 0 ? _b : '';
120288
+ setFieldValue(FormFields.stage, stageName);
120289
+ stagePrefilledRef.current = true;
120290
+ }, [contactInfoIsOpen, isEditMode, contactData, clientStages, setFieldValue]);
120280
120291
  useEffect(() => {
120281
120292
  if (contactData) {
120282
120293
  setAddedTags((contactData === null || contactData === void 0 ? void 0 : contactData.tags) || []);
@@ -120381,7 +120392,8 @@ const ContactInfo = ({
120381
120392
  });
120382
120393
  }
120383
120394
  }), [validateField, resetValidationStates, formData, addedTags, contactData === null || contactData === void 0 ? void 0 : contactData.id, contactData === null || contactData === void 0 ? void 0 : contactData.tags, tagClient, setContactInfoIsOpen, isEditMode, createAction, patchAction, t, onContactCreated]);
120384
- if (loadingTags) return jsx$1(ClientInfoLoader, {});
120395
+ // Only block on the initial load; refetches must not unmount the form
120396
+ if (loadingTags && !clientTags.length && !clientStages.length) return jsx$1(ClientInfoLoader, {});
120385
120397
  return jsxs(Container, {
120386
120398
  children: [jsx$1(ModalTitle, {
120387
120399
  children: isEditMode ? t('contact.editContact') : t('contact.addNewContact')
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bcrumbs.net/inbox",
3
3
  "description": "Inbox widget for Bread Crumbs portals",
4
- "version": "0.0.70",
4
+ "version": "0.0.71",
5
5
  "keyword": [
6
6
  "bcrumbs",
7
7
  "bc-ui",