@flogeez/angular-tiptap-editor 3.2.0 → 3.2.1

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.
@@ -325,4 +325,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
325
325
  </div>
326
326
  `, styles: [".slash-commands-menu{background:var(--ate-menu-bg);border:1px solid var(--ate-menu-border);border-radius:var(--ate-menu-border-radius, 12px);box-shadow:var(--ate-menu-shadow);padding:var(--ate-menu-padding);max-height:320px;overflow-y:auto;min-width:280px;outline:none;animation:slashMenuFadeIn .2s cubic-bezier(0,0,.2,1);scrollbar-width:thin;scrollbar-color:var(--ate-scrollbar-thumb) var(--ate-scrollbar-track)}.slash-commands-menu::-webkit-scrollbar{width:var(--ate-scrollbar-width)}.slash-commands-menu::-webkit-scrollbar-track{background:var(--ate-scrollbar-track)}.slash-commands-menu::-webkit-scrollbar-thumb{background:var(--ate-scrollbar-thumb);border:3px solid transparent;background-clip:content-box;border-radius:10px}.slash-commands-menu::-webkit-scrollbar-thumb:hover{background:var(--ate-scrollbar-thumb-hover);background-clip:content-box}@keyframes slashMenuFadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.slash-command-item{display:flex;align-items:center;gap:12px;padding:var(--ate-menu-padding);border-radius:var(--ate-menu-border-radius, 8px);cursor:pointer;transition:all .15s ease;border:var(--ate-border-width, 1px) solid transparent;outline:none;margin-bottom:2px}.slash-command-item:last-child{margin-bottom:0}.slash-command-item:hover{background:var(--ate-surface-secondary)}.slash-command-item.selected{background:var(--ate-primary-light);border-color:var(--ate-primary-light-alpha)}.slash-command-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--ate-surface-tertiary);border-radius:var(--ate-sub-border-radius, 8px);color:var(--ate-primary);flex-shrink:0;transition:all .15s ease}.slash-command-item.selected .slash-command-icon{background:var(--ate-primary);color:var(--ate-primary-contrast, #ffffff)}.slash-command-icon .material-symbols-outlined{font-size:18px}.slash-command-content{flex:1;min-width:0}.slash-command-title{font-weight:500;color:var(--ate-text);font-size:14px;margin-bottom:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.slash-command-description{color:var(--ate-text-secondary);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"] }]
327
327
  }], ctorParameters: () => [] });
328
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLXNsYXNoLWNvbW1hbmRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvc2xhc2gtY29tbWFuZHMvYXRlLXNsYXNoLWNvbW1hbmRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxTQUFTLEVBR1QsTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLHVCQUF1QixHQUV4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssRUFBRSxFQUE2QixNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBR3JELDZGQUE2RjtBQWtKN0YsTUFBTSxPQUFPLHlCQUF5QjtJQStDcEM7UUE5Q1MsZ0JBQVcsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDOUMsV0FBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNsQyxXQUFNLEdBQUcsS0FBSyxDQUFxQyxTQUFTLENBQUMsQ0FBQztRQUU5RCxZQUFPLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBNkIsU0FBUyxDQUFDLENBQUM7UUFFNUQsa0JBQWEsR0FBeUIsSUFBSSxDQUFDO1FBQzNDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFMUQsY0FBYztRQUNOLGFBQVEsR0FBRyxLQUFLLENB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LENBQUMsQ0FBQyxDQUFDOzRCQUNkLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQzs0QkFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7NEJBQ3RCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzs0QkFDakIsbUJBQW1COzRCQUNuQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQ0FDcEIsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7Z0NBQzFCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDcEIsQ0FBQzs0QkFDRCxPQUFPLElBQUksQ0FBQzt3QkFDZCxDQUFDO29CQUNILENBQUM7b0JBRUQsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQzthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsdUJBQXVCO1FBQ3ZCLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUNqQixFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7WUFDeEIsT0FBTyxFQUFFLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1NBQ3BELENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzsrR0FsVVUseUJBQXlCO21HQUF6Qix5QkFBeUIsbWNBNUkxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JUOzs0RkEwSFUseUJBQXlCO2tCQWhKckMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGlucHV0LFxuICB2aWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uRGVzdHJveSxcbiAgZWZmZWN0LFxuICBjb21wdXRlZCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBBZnRlclZpZXdJbml0LFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHRpcHB5LCB7IEluc3RhbmNlIGFzIFRpcHB5SW5zdGFuY2UsIHN0aWNreSB9IGZyb20gXCJ0aXBweS5qc1wiO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuaW1wb3J0IHsgQXRlSTE4blNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYXRlLWkxOG4uc2VydmljZVwiO1xuaW1wb3J0IHsgQXRlRWRpdG9yQ29tbWFuZHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2F0ZS1lZGl0b3ItY29tbWFuZHMuc2VydmljZVwiO1xuaW1wb3J0IHsgY3JlYXRlRGVmYXVsdFNsYXNoQ29tbWFuZHMgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2F0ZS1zbGFzaC1jb21tYW5kcy5jb25maWdcIjtcbmltcG9ydCB7IEF0ZVNsYXNoQ29tbWFuZEl0ZW0sIEF0ZUN1c3RvbVNsYXNoQ29tbWFuZHMgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2F0ZS1zbGFzaC1jb21tYW5kLm1vZGVsXCI7XG5pbXBvcnQgeyBQbHVnaW4sIFBsdWdpbktleSB9IGZyb20gXCJAdGlwdGFwL3BtL3N0YXRlXCI7XG5pbXBvcnQgeyBFZGl0b3JWaWV3IH0gZnJvbSBcIkB0aXB0YXAvcG0vdmlld1wiO1xuXG4vLyBEZWZhdWx0IGNvbW1hbmQgZGVmaW5pdGlvbnMgYXJlIG5vdyBjZW50cmFsaXplZCBpbiBzcmMvbGliL2NvbmZpZy9zbGFzaC1jb21tYW5kcy5jb25maWcudHNcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImF0ZS1zbGFzaC1jb21tYW5kc1wiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2ICNtZW51UmVmIGNsYXNzPVwic2xhc2gtY29tbWFuZHMtbWVudVwiPlxuICAgICAgQGZvciAoY29tbWFuZCBvZiBmaWx0ZXJlZENvbW1hbmRzKCk7IHRyYWNrIGNvbW1hbmQudGl0bGUpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2xhc2gtY29tbWFuZC1pdGVtXCJcbiAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiJGluZGV4ID09PSBzZWxlY3RlZEluZGV4KClcIlxuICAgICAgICAgIChtb3VzZWRvd24pPVwiZXhlY3V0ZUNvbW1hbmQoY29tbWFuZCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgIChtb3VzZWVudGVyKT1cInNlbGVjdGVkSW5kZXguc2V0KCRpbmRleClcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xhc2gtY29tbWFuZC1pY29uXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj57eyBjb21tYW5kLmljb24gfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNsYXNoLWNvbW1hbmQtY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsYXNoLWNvbW1hbmQtdGl0bGVcIj57eyBjb21tYW5kLnRpdGxlIH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xhc2gtY29tbWFuZC1kZXNjcmlwdGlvblwiPnt7IGNvbW1hbmQuZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5zbGFzaC1jb21tYW5kcy1tZW51IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLW1lbnUtYmcpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1hdGUtbWVudS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1hdGUtbWVudS1ib3JkZXItcmFkaXVzLCAxMnB4KTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tYXRlLW1lbnUtc2hhZG93KTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tYXRlLW1lbnUtcGFkZGluZyk7XG4gICAgICAgIG1heC1oZWlnaHQ6IDMyMHB4O1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICBtaW4td2lkdGg6IDI4MHB4O1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBhbmltYXRpb246IHNsYXNoTWVudUZhZGVJbiAwLjJzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgICAgICBzY3JvbGxiYXItd2lkdGg6IHRoaW47XG4gICAgICAgIHNjcm9sbGJhci1jb2xvcjogdmFyKC0tYXRlLXNjcm9sbGJhci10aHVtYikgdmFyKC0tYXRlLXNjcm9sbGJhci10cmFjayk7XG4gICAgICB9XG5cbiAgICAgIC5zbGFzaC1jb21tYW5kcy1tZW51Ojotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1hdGUtc2Nyb2xsYmFyLXdpZHRoKTtcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmRzLW1lbnU6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXNjcm9sbGJhci10cmFjayk7XG4gICAgICB9XG5cbiAgICAgIC5zbGFzaC1jb21tYW5kcy1tZW51Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS1zY3JvbGxiYXItdGh1bWIpO1xuICAgICAgICBib3JkZXI6IDNweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYmFja2dyb3VuZC1jbGlwOiBjb250ZW50LWJveDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmRzLW1lbnU6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXNjcm9sbGJhci10aHVtYi1ob3Zlcik7XG4gICAgICAgIGJhY2tncm91bmQtY2xpcDogY29udGVudC1ib3g7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgc2xhc2hNZW51RmFkZUluIHtcbiAgICAgICAgZnJvbSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNHB4KTtcbiAgICAgICAgfVxuICAgICAgICB0byB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmQtaXRlbSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tYXRlLW1lbnUtcGFkZGluZyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS1tZW51LWJvcmRlci1yYWRpdXMsIDhweCk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG4gICAgICAgIGJvcmRlcjogdmFyKC0tYXRlLWJvcmRlci13aWR0aCwgMXB4KSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4O1xuICAgICAgfVxuXG4gICAgICAuc2xhc2gtY29tbWFuZC1pdGVtOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgfVxuXG4gICAgICAuc2xhc2gtY29tbWFuZC1pdGVtOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXN1cmZhY2Utc2Vjb25kYXJ5KTtcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmQtaXRlbS5zZWxlY3RlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hdGUtcHJpbWFyeS1saWdodC1hbHBoYSk7XG4gICAgICB9XG5cbiAgICAgIC5zbGFzaC1jb21tYW5kLWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXN1cmZhY2UtdGVydGlhcnkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1hdGUtc3ViLWJvcmRlci1yYWRpdXMsIDhweCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1hdGUtcHJpbWFyeSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmQtaXRlbS5zZWxlY3RlZCAuc2xhc2gtY29tbWFuZC1pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tYXRlLXByaW1hcnktY29udHJhc3QsICNmZmZmZmYpO1xuICAgICAgfVxuXG4gICAgICAuc2xhc2gtY29tbWFuZC1pY29uIC5tYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHtcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgfVxuXG4gICAgICAuc2xhc2gtY29tbWFuZC1jb250ZW50IHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuc2xhc2gtY29tbWFuZC10aXRsZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1hdGUtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMXB4O1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmQtZGVzY3JpcHRpb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0tYXRlLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBdGVTbGFzaENvbW1hbmRzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgaTE4blNlcnZpY2UgPSBpbmplY3QoQXRlSTE4blNlcnZpY2UpO1xuICBlZGl0b3IgPSBpbnB1dC5yZXF1aXJlZDxFZGl0b3I+KCk7XG4gIGNvbmZpZyA9IGlucHV0PEF0ZUN1c3RvbVNsYXNoQ29tbWFuZHMgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgbWVudVJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oXCJtZW51UmVmXCIpO1xuXG4gIHByaXZhdGUgdGlwcHlJbnN0YW5jZTogVGlwcHlJbnN0YW5jZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGVkaXRvckNvbW1hbmRzID0gaW5qZWN0KEF0ZUVkaXRvckNvbW1hbmRzU2VydmljZSk7XG5cbiAgLy8gTG9jYWwgc3RhdGVcbiAgcHJpdmF0ZSBpc0FjdGl2ZSA9IGZhbHNlO1xuICBwcml2YXRlIGN1cnJlbnRRdWVyeSA9IHNpZ25hbChcIlwiKTtcbiAgcHJpdmF0ZSBzbGFzaFJhbmdlOiB7IGZyb206IG51bWJlcjsgdG86IG51bWJlciB9IHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gU2lnbmFsIGZvciBzZWxlY3RlZCBpbmRleFxuICBzZWxlY3RlZEluZGV4ID0gc2lnbmFsKDApO1xuXG4gIC8vIFRvb2xiYXIgaW50ZXJhY3Rpb24gc3RhdGUgKGZyb20gY2VudHJhbGl6ZWQgc2VydmljZSlcbiAgcHJpdmF0ZSByZWFkb25seSBpc1Rvb2xiYXJJbnRlcmFjdGluZyA9IHRoaXMuZWRpdG9yQ29tbWFuZHMuaXNUb29sYmFySW50ZXJhY3Rpbmc7XG5cbiAgY29tbWFuZHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWcoKTtcbiAgICBpZiAoY29uZmlnICYmIGNvbmZpZy5jb21tYW5kcykge1xuICAgICAgcmV0dXJuIGNvbmZpZy5jb21tYW5kcztcbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjayB0byBkZWZhdWx0IG5hdGl2ZSBjb21tYW5kc1xuICAgIHJldHVybiBjcmVhdGVEZWZhdWx0U2xhc2hDb21tYW5kcyh0aGlzLmkxOG5TZXJ2aWNlLCB0aGlzLmVkaXRvckNvbW1hbmRzKTtcbiAgfSk7XG5cbiAgZmlsdGVyZWRDb21tYW5kcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBxdWVyeSA9IHRoaXMuY3VycmVudFF1ZXJ5KCkudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBjb21tYW5kcyA9IHRoaXMuY29tbWFuZHMoKTtcblxuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHJldHVybiBjb21tYW5kcztcbiAgICB9XG5cbiAgICByZXR1cm4gY29tbWFuZHMuZmlsdGVyKFxuICAgICAgY29tbWFuZCA9PlxuICAgICAgICBjb21tYW5kLnRpdGxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpIHx8XG4gICAgICAgIGNvbW1hbmQuZGVzY3JpcHRpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeSkgfHxcbiAgICAgICAgY29tbWFuZC5rZXl3b3Jkcy5zb21lKGtleXdvcmQgPT4ga2V5d29yZC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5KSlcbiAgICApO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgZWQgPSB0aGlzLmVkaXRvcigpO1xuICAgICAgaWYgKCFlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIENsZWFuIHVwIG9sZCBsaXN0ZW5lcnNcbiAgICAgIGVkLm9mZihcInNlbGVjdGlvblVwZGF0ZVwiLCB0aGlzLnVwZGF0ZU1lbnUpO1xuICAgICAgZWQub2ZmKFwidHJhbnNhY3Rpb25cIiwgdGhpcy51cGRhdGVNZW51KTtcbiAgICAgIGVkLm9mZihcImZvY3VzXCIsIHRoaXMudXBkYXRlTWVudSk7XG4gICAgICBlZC5vZmYoXCJibHVyXCIsIHRoaXMuaGFuZGxlQmx1cik7XG5cbiAgICAgIC8vIEFkZCBuZXcgbGlzdGVuZXJzXG4gICAgICBlZC5vbihcInNlbGVjdGlvblVwZGF0ZVwiLCB0aGlzLnVwZGF0ZU1lbnUpO1xuICAgICAgZWQub24oXCJ0cmFuc2FjdGlvblwiLCB0aGlzLnVwZGF0ZU1lbnUpO1xuICAgICAgZWQub24oXCJmb2N1c1wiLCB0aGlzLnVwZGF0ZU1lbnUpO1xuICAgICAgZWQub24oXCJibHVyXCIsIHRoaXMuaGFuZGxlQmx1cik7XG5cbiAgICAgIC8vIFVzZSBQcm9zZU1pcnJvciBwbHVnaW4gc3lzdGVtIHRvIGludGVyY2VwdCBrZXlzXG4gICAgICB0aGlzLmFkZEtleWJvYXJkUGx1Z2luKGVkKTtcblxuICAgICAgLy8gdXBkYXRlTWVudSgpIHdpbGwgYmUgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBlZGl0b3IgaXMgcmVhZHlcbiAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuaW5pdFRpcHB5KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBjb25zdCBlZCA9IHRoaXMuZWRpdG9yKCk7XG4gICAgaWYgKGVkKSB7XG4gICAgICBlZC5vZmYoXCJzZWxlY3Rpb25VcGRhdGVcIiwgdGhpcy51cGRhdGVNZW51KTtcbiAgICAgIGVkLm9mZihcInRyYW5zYWN0aW9uXCIsIHRoaXMudXBkYXRlTWVudSk7XG4gICAgICBlZC5vZmYoXCJmb2N1c1wiLCB0aGlzLnVwZGF0ZU1lbnUpO1xuICAgICAgZWQub2ZmKFwiYmx1clwiLCB0aGlzLmhhbmRsZUJsdXIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRpcHB5SW5zdGFuY2UpIHtcbiAgICAgIHRoaXMudGlwcHlJbnN0YW5jZS5kZXN0cm95KCk7XG4gICAgICB0aGlzLnRpcHB5SW5zdGFuY2UgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdFRpcHB5KCkge1xuICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnQgPSB0aGlzLm1lbnVSZWYoKS5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghbmF0aXZlRWxlbWVudCkge3JldHVybjt9XG5cbiAgICBpZiAodGhpcy50aXBweUluc3RhbmNlKSB7XG4gICAgICB0aGlzLnRpcHB5SW5zdGFuY2UuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHRoaXMudGlwcHlJbnN0YW5jZSA9IHRpcHB5KGRvY3VtZW50LmJvZHksIHtcbiAgICAgIGNvbnRlbnQ6IG5hdGl2ZUVsZW1lbnQsXG4gICAgICB0cmlnZ2VyOiBcIm1hbnVhbFwiLFxuICAgICAgcGxhY2VtZW50OiBcImJvdHRvbS1zdGFydFwiLFxuICAgICAgdGhlbWU6IFwic2xhc2gtbWVudVwiLFxuICAgICAgYXBwZW5kVG86IF9yZWYgPT4ge1xuICAgICAgICAvLyBBbHdheXMgdHJ5IHRvIGNsaW1iIHVwIHRvIGVkaXRvciBob3N0IHRvIGluaGVyaXQgQ1NTIHZhcmlhYmxlc1xuICAgICAgICBjb25zdCBob3N0ID0gKHRoaXMuZWRpdG9yKCkub3B0aW9ucy5lbGVtZW50IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KFxuICAgICAgICAgIFwiYW5ndWxhci10aXB0YXAtZWRpdG9yXCJcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGhvc3QgfHwgZG9jdW1lbnQuYm9keTtcbiAgICAgIH0sXG4gICAgICBpbnRlcmFjdGl2ZTogdHJ1ZSxcbiAgICAgIGFycm93OiBmYWxzZSxcbiAgICAgIG9mZnNldDogWzAsIDhdLFxuICAgICAgaGlkZU9uQ2xpY2s6IHRydWUsXG4gICAgICBwbHVnaW5zOiBbc3RpY2t5XSxcbiAgICAgIHN0aWNreTogZmFsc2UsXG4gICAgICBnZXRSZWZlcmVuY2VDbGllbnRSZWN0OiAoKSA9PiB0aGlzLmdldFNsYXNoUmVjdCgpLFxuICAgICAgLy8gSW1wcm92ZSBwb3NpdGlvbmluZyB3aXRoIHNjcm9sbFxuICAgICAgcG9wcGVyT3B0aW9uczoge1xuICAgICAgICBtb2RpZmllcnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcInByZXZlbnRPdmVyZmxvd1wiLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBib3VuZGFyeTogKHRoaXMuZWRpdG9yKCkub3B0aW9ucy5lbGVtZW50IGFzIEhUTUxFbGVtZW50KSB8fCBkb2N1bWVudC5ib2R5LFxuICAgICAgICAgICAgICBwYWRkaW5nOiA4LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZmxpcFwiLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IFtcInRvcC1zdGFydFwiLCBcImJvdHRvbS1lbmRcIiwgXCJ0b3AtZW5kXCJdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiaGlkZVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gSW5pdGlhbCBjaGVjayBhZnRlciBUaXBweSBpcyBpbml0aWFsaXplZFxuICAgIHRoaXMudXBkYXRlTWVudSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTbGFzaFJlY3QoKTogRE9NUmVjdCB7XG4gICAgY29uc3QgZWQgPSB0aGlzLmVkaXRvcigpO1xuICAgIGlmICghZWQgfHwgIXRoaXMuc2xhc2hSYW5nZSkge1xuICAgICAgcmV0dXJuIG5ldyBET01SZWN0KC05OTk5LCAtOTk5OSwgMCwgMCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFVzZSBQcm9zZU1pcnJvciBjb29yZGluYXRlcyBmb3IgYmV0dGVyIHByZWNpc2lvblxuICAgICAgY29uc3QgY29vcmRzID0gZWQudmlldy5jb29yZHNBdFBvcyh0aGlzLnNsYXNoUmFuZ2UuZnJvbSk7XG4gICAgICByZXR1cm4gbmV3IERPTVJlY3QoY29vcmRzLmxlZnQsIGNvb3Jkcy50b3AsIDAsIGNvb3Jkcy5ib3R0b20gLSBjb29yZHMudG9wKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKFwiRXJyb3IgY2FsY3VsYXRpbmcgY29vcmRpbmF0ZXM6XCIsIGVycm9yKTtcbiAgICAgIC8vIEZhbGxiYWNrIHRvIHdpbmRvdy5nZXRTZWxlY3Rpb25cbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5yYW5nZUNvdW50ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBuZXcgRE9NUmVjdCgtOTk5OSwgLTk5OTksIDAsIDApO1xuICAgICAgfVxuICAgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcbiAgICAgIHJldHVybiByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVNZW51ID0gKCkgPT4ge1xuICAgIGNvbnN0IGVkID0gdGhpcy5lZGl0b3IoKTtcbiAgICBpZiAoIWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBmcm9tIH0gPSBlZC5zdGF0ZS5zZWxlY3Rpb247XG5cbiAgICAvLyBDaGVjayBpZiAnLycgd2FzIHR5cGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lIG9yIGFmdGVyIGEgc3BhY2VcbiAgICBjb25zdCB0ZXh0QmVmb3JlID0gZWQuc3RhdGUuZG9jLnRleHRCZXR3ZWVuKE1hdGgubWF4KDAsIGZyb20gLSAyMCksIGZyb20sIFwiXFxuXCIpO1xuICAgIGNvbnN0IHNsYXNoTWF0Y2ggPSB0ZXh0QmVmb3JlLm1hdGNoKC8oPzpefFxccylcXC8oW14vXFxzXSopJC8pO1xuXG4gICAgaWYgKHNsYXNoTWF0Y2gpIHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gc2xhc2hNYXRjaFsxXSB8fCBcIlwiO1xuICAgICAgY29uc3Qgd2FzQWN0aXZlID0gdGhpcy5pc0FjdGl2ZTtcblxuICAgICAgdGhpcy5jdXJyZW50UXVlcnkuc2V0KHF1ZXJ5KTtcbiAgICAgIHRoaXMuc2xhc2hSYW5nZSA9IHtcbiAgICAgICAgZnJvbTogZnJvbSAtIHNsYXNoTWF0Y2hbMF0ubGVuZ3RoICsgc2xhc2hNYXRjaFswXS5pbmRleE9mKFwiL1wiKSxcbiAgICAgICAgdG86IGZyb20sXG4gICAgICB9O1xuXG4gICAgICAvLyBSZXNldCBpbmRleCBpZiBtZW51IGp1c3QgYmVjYW1lIGFjdGl2ZVxuICAgICAgaWYgKCF3YXNBY3RpdmUpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldCgwKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pc0FjdGl2ZSA9IHRydWU7XG5cbiAgICAgIGlmICh0aGlzLmlzVG9vbGJhckludGVyYWN0aW5nKCkpIHtcbiAgICAgICAgdGhpcy5oaWRlVGlwcHkoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2hvd1RpcHB5KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuaGlkZVRpcHB5KCk7XG4gICAgfVxuICB9O1xuXG4gIGhhbmRsZUJsdXIgPSAoKSA9PiB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmhpZGVUaXBweSgpLCAxMDApO1xuICB9O1xuXG4gIHByaXZhdGUgc2Nyb2xsVG9TZWxlY3RlZCgpIHtcbiAgICAvLyBTY3JvbGwgdG8gdGhlIHNlbGVjdGVkIGVsZW1lbnRcbiAgICBjb25zdCBtZW51RWwgPSB0aGlzLm1lbnVSZWYoKT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAobWVudUVsKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSBtZW51RWwucXVlcnlTZWxlY3RvcihcIi5zbGFzaC1jb21tYW5kLWl0ZW0uc2VsZWN0ZWRcIikgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBpZiAoc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgIHNlbGVjdGVkSXRlbS5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiBcIm5lYXJlc3RcIiwgYmVoYXZpb3I6IFwic21vb3RoXCIgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93VGlwcHkoKSB7XG4gICAgaWYgKHRoaXMudGlwcHlJbnN0YW5jZSAmJiB0aGlzLmZpbHRlcmVkQ29tbWFuZHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnRpcHB5SW5zdGFuY2Uuc2V0UHJvcHMoeyBzdGlja3k6IFwicmVmZXJlbmNlXCIgfSk7XG4gICAgICB0aGlzLnRpcHB5SW5zdGFuY2Uuc2hvdygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGlkZVRpcHB5KCkge1xuICAgIGlmICh0aGlzLnRpcHB5SW5zdGFuY2UpIHtcbiAgICAgIHRoaXMudGlwcHlJbnN0YW5jZS5zZXRQcm9wcyh7IHN0aWNreTogZmFsc2UgfSk7XG4gICAgICB0aGlzLnRpcHB5SW5zdGFuY2UuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIGV4ZWN1dGVDb21tYW5kKGNvbW1hbmQ6IEF0ZVNsYXNoQ29tbWFuZEl0ZW0pIHtcbiAgICBjb25zdCBlZCA9IHRoaXMuZWRpdG9yKCk7XG4gICAgaWYgKCFlZCB8fCAhdGhpcy5zbGFzaFJhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIHNsYXNoIHRleHQgKFwiL1wiKVxuICAgIGNvbnN0IHsgdHIgfSA9IGVkLnN0YXRlO1xuICAgIHRyLmRlbGV0ZSh0aGlzLnNsYXNoUmFuZ2UuZnJvbSwgdGhpcy5zbGFzaFJhbmdlLnRvKTtcbiAgICBlZC52aWV3LmRpc3BhdGNoKHRyKTtcblxuICAgIC8vIEhpZGUgbWVudSBpbW1lZGlhdGVseVxuICAgIHRoaXMuaGlkZVRpcHB5KCk7XG4gICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgLy8gR2l2ZSBmb2N1cyBiYWNrIHRvIGVkaXRvciBhbmQgZXhlY3V0ZSBjb21tYW5kXG4gICAgLy8gVXNlIGEgbWljcm8tZGVsYXkgdG8gZW5zdXJlIFByb3NlTWlycm9yIERPTSBpcyBzdGFibGUgYWZ0ZXIgcmVtb3ZpbmcgXCIvXCJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGVkLmNvbW1hbmRzLmZvY3VzKCk7XG4gICAgICBjb21tYW5kLmNvbW1hbmQoZWQpO1xuICAgIH0sIDEwKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkS2V5Ym9hcmRQbHVnaW4oZWQ6IEVkaXRvcikge1xuICAgIC8vIEFkZCBhIFByb3NlTWlycm9yIHBsdWdpbiB0byBpbnRlcmNlcHQga2V5Ym9hcmQgZXZlbnRzXG4gICAgY29uc3Qga2V5Ym9hcmRQbHVnaW4gPSBuZXcgUGx1Z2luKHtcbiAgICAgIGtleTogbmV3IFBsdWdpbktleShcInNsYXNoLWNvbW1hbmRzLWtleWJvYXJkXCIpLFxuICAgICAgcHJvcHM6IHtcbiAgICAgICAgaGFuZGxlS2V5RG93bjogKHZpZXc6IEVkaXRvclZpZXcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgLy8gT25seSBoYW5kbGUgaWYgbWVudSBpcyBhY3RpdmVcbiAgICAgICAgICBpZiAoIXRoaXMuaXNBY3RpdmUgfHwgdGhpcy5maWx0ZXJlZENvbW1hbmRzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgXCJBcnJvd0Rvd25cIjoge1xuICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAodGhpcy5zZWxlY3RlZEluZGV4KCkgKyAxKSAlIHRoaXMuZmlsdGVyZWRDb21tYW5kcygpLmxlbmd0aDtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldChuZXh0SW5kZXgpO1xuICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvU2VsZWN0ZWQoKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiQXJyb3dVcFwiOiB7XG4gICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGNvbnN0IHByZXZJbmRleCA9XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4KCkgPT09IDBcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5maWx0ZXJlZENvbW1hbmRzKCkubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgICAgOiB0aGlzLnNlbGVjdGVkSW5kZXgoKSAtIDE7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleC5zZXQocHJldkluZGV4KTtcbiAgICAgICAgICAgICAgdGhpcy5zY3JvbGxUb1NlbGVjdGVkKCk7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIkVudGVyXCI6IHtcbiAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRDb21tYW5kID0gdGhpcy5maWx0ZXJlZENvbW1hbmRzKClbdGhpcy5zZWxlY3RlZEluZGV4KCldO1xuICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRDb21tYW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5leGVjdXRlQ29tbWFuZChzZWxlY3RlZENvbW1hbmQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIkVzY2FwZVwiOiB7XG4gICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5oaWRlVGlwcHkoKTtcbiAgICAgICAgICAgICAgLy8gUmVtb3ZlIHR5cGVkIFwiL1wiXG4gICAgICAgICAgICAgIGlmICh0aGlzLnNsYXNoUmFuZ2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHRyIH0gPSB2aWV3LnN0YXRlO1xuICAgICAgICAgICAgICAgIHRyLmRlbGV0ZSh0aGlzLnNsYXNoUmFuZ2UuZnJvbSwgdGhpcy5zbGFzaFJhbmdlLnRvKTtcbiAgICAgICAgICAgICAgICB2aWV3LmRpc3BhdGNoKHRyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIHBsdWdpbiB0byBlZGl0b3JcbiAgICBlZC52aWV3LnVwZGF0ZVN0YXRlKFxuICAgICAgZWQudmlldy5zdGF0ZS5yZWNvbmZpZ3VyZSh7XG4gICAgICAgIHBsdWdpbnM6IFtrZXlib2FyZFBsdWdpbiwgLi4uZWQudmlldy5zdGF0ZS5wbHVnaW5zXSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLXNsYXNoLWNvbW1hbmRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdGlwdGFwLWVkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvc2xhc2gtY29tbWFuZHMvYXRlLXNsYXNoLWNvbW1hbmRzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxTQUFTLEVBR1QsTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLHVCQUF1QixHQUV4QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEtBQUssRUFBRSxFQUE2QixNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBR3JELDZGQUE2RjtBQWtKN0YsTUFBTSxPQUFPLHlCQUF5QjtJQStDcEM7UUE5Q1MsZ0JBQVcsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDOUMsV0FBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNsQyxXQUFNLEdBQUcsS0FBSyxDQUFxQyxTQUFTLENBQUMsQ0FBQztRQUU5RCxZQUFPLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBNkIsU0FBUyxDQUFDLENBQUM7UUFFNUQsa0JBQWEsR0FBeUIsSUFBSSxDQUFDO1FBQzNDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFMUQsY0FBYztRQUNOLGFBQVEsR0FBRyxLQUFLLENB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LENBQUMsQ0FBQyxDQUFDOzRCQUNkLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQzs0QkFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7NEJBQ3RCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzs0QkFDakIsbUJBQW1COzRCQUNuQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQ0FDcEIsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7Z0NBQzFCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQ0FDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDcEIsQ0FBQzs0QkFDRCxPQUFPLElBQUksQ0FBQzt3QkFDZCxDQUFDO29CQUNILENBQUM7b0JBRUQsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQzthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsdUJBQXVCO1FBQ3ZCLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUNqQixFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7WUFDeEIsT0FBTyxFQUFFLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1NBQ3BELENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzsrR0F2VVUseUJBQXlCO21HQUF6Qix5QkFBeUIsbWNBNUkxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JUOzs0RkEwSFUseUJBQXlCO2tCQWhKckMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGlucHV0LFxuICB2aWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uRGVzdHJveSxcbiAgZWZmZWN0LFxuICBjb21wdXRlZCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBBZnRlclZpZXdJbml0LFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHRpcHB5LCB7IEluc3RhbmNlIGFzIFRpcHB5SW5zdGFuY2UsIHN0aWNreSB9IGZyb20gXCJ0aXBweS5qc1wiO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuaW1wb3J0IHsgQXRlSTE4blNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYXRlLWkxOG4uc2VydmljZVwiO1xuaW1wb3J0IHsgQXRlRWRpdG9yQ29tbWFuZHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2F0ZS1lZGl0b3ItY29tbWFuZHMuc2VydmljZVwiO1xuaW1wb3J0IHsgY3JlYXRlRGVmYXVsdFNsYXNoQ29tbWFuZHMgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2F0ZS1zbGFzaC1jb21tYW5kcy5jb25maWdcIjtcbmltcG9ydCB7IEF0ZVNsYXNoQ29tbWFuZEl0ZW0sIEF0ZUN1c3RvbVNsYXNoQ29tbWFuZHMgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2F0ZS1zbGFzaC1jb21tYW5kLm1vZGVsXCI7XG5pbXBvcnQgeyBQbHVnaW4sIFBsdWdpbktleSB9IGZyb20gXCJAdGlwdGFwL3BtL3N0YXRlXCI7XG5pbXBvcnQgeyBFZGl0b3JWaWV3IH0gZnJvbSBcIkB0aXB0YXAvcG0vdmlld1wiO1xuXG4vLyBEZWZhdWx0IGNvbW1hbmQgZGVmaW5pdGlvbnMgYXJlIG5vdyBjZW50cmFsaXplZCBpbiBzcmMvbGliL2NvbmZpZy9zbGFzaC1jb21tYW5kcy5jb25maWcudHNcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImF0ZS1zbGFzaC1jb21tYW5kc1wiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2ICNtZW51UmVmIGNsYXNzPVwic2xhc2gtY29tbWFuZHMtbWVudVwiPlxuICAgICAgQGZvciAoY29tbWFuZCBvZiBmaWx0ZXJlZENvbW1hbmRzKCk7IHRyYWNrIGNvbW1hbmQudGl0bGUpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2xhc2gtY29tbWFuZC1pdGVtXCJcbiAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiJGluZGV4ID09PSBzZWxlY3RlZEluZGV4KClcIlxuICAgICAgICAgIChtb3VzZWRvd24pPVwiZXhlY3V0ZUNvbW1hbmQoY29tbWFuZCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgIChtb3VzZWVudGVyKT1cInNlbGVjdGVkSW5kZXguc2V0KCRpbmRleClcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xhc2gtY29tbWFuZC1pY29uXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj57eyBjb21tYW5kLmljb24gfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNsYXNoLWNvbW1hbmQtY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsYXNoLWNvbW1hbmQtdGl0bGVcIj57eyBjb21tYW5kLnRpdGxlIH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2xhc2gtY29tbWFuZC1kZXNjcmlwdGlvblwiPnt7IGNvbW1hbmQuZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5zbGFzaC1jb21tYW5kcy1tZW51IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLW1lbnUtYmcpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1hdGUtbWVudS1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1hdGUtbWVudS1ib3JkZXItcmFkaXVzLCAxMnB4KTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tYXRlLW1lbnUtc2hhZG93KTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tYXRlLW1lbnUtcGFkZGluZyk7XG4gICAgICAgIG1heC1oZWlnaHQ6IDMyMHB4O1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICBtaW4td2lkdGg6IDI4MHB4O1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBhbmltYXRpb246IHNsYXNoTWVudUZhZGVJbiAwLjJzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgICAgICBzY3JvbGxiYXItd2lkdGg6IHRoaW47XG4gICAgICAgIHNjcm9sbGJhci1jb2xvcjogdmFyKC0tYXRlLXNjcm9sbGJhci10aHVtYikgdmFyKC0tYXRlLXNjcm9sbGJhci10cmFjayk7XG4gICAgICB9XG5cbiAgICAgIC5zbGFzaC1jb21tYW5kcy1tZW51Ojotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIHdpZHRoOiB2YXIoLS1hdGUtc2Nyb2xsYmFyLXdpZHRoKTtcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmRzLW1lbnU6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXNjcm9sbGJhci10cmFjayk7XG4gICAgICB9XG5cbiAgICAgIC5zbGFzaC1jb21tYW5kcy1tZW51Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS1zY3JvbGxiYXItdGh1bWIpO1xuICAgICAgICBib3JkZXI6IDNweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYmFja2dyb3VuZC1jbGlwOiBjb250ZW50LWJveDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmRzLW1lbnU6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXNjcm9sbGJhci10aHVtYi1ob3Zlcik7XG4gICAgICAgIGJhY2tncm91bmQtY2xpcDogY29udGVudC1ib3g7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgc2xhc2hNZW51RmFkZUluIHtcbiAgICAgICAgZnJvbSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNHB4KTtcbiAgICAgICAgfVxuICAgICAgICB0byB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmQtaXRlbSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tYXRlLW1lbnUtcGFkZGluZyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWF0ZS1tZW51LWJvcmRlci1yYWRpdXMsIDhweCk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG4gICAgICAgIGJvcmRlcjogdmFyKC0tYXRlLWJvcmRlci13aWR0aCwgMXB4KSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4O1xuICAgICAgfVxuXG4gICAgICAuc2xhc2gtY29tbWFuZC1pdGVtOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgfVxuXG4gICAgICAuc2xhc2gtY29tbWFuZC1pdGVtOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXN1cmZhY2Utc2Vjb25kYXJ5KTtcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmQtaXRlbS5zZWxlY3RlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWF0ZS1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hdGUtcHJpbWFyeS1saWdodC1hbHBoYSk7XG4gICAgICB9XG5cbiAgICAgIC5zbGFzaC1jb21tYW5kLWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXN1cmZhY2UtdGVydGlhcnkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1hdGUtc3ViLWJvcmRlci1yYWRpdXMsIDhweCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1hdGUtcHJpbWFyeSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmQtaXRlbS5zZWxlY3RlZCAuc2xhc2gtY29tbWFuZC1pY29uIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYXRlLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tYXRlLXByaW1hcnktY29udHJhc3QsICNmZmZmZmYpO1xuICAgICAgfVxuXG4gICAgICAuc2xhc2gtY29tbWFuZC1pY29uIC5tYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHtcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgfVxuXG4gICAgICAuc2xhc2gtY29tbWFuZC1jb250ZW50IHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuXG4gICAgICAuc2xhc2gtY29tbWFuZC10aXRsZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1hdGUtdGV4dCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMXB4O1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIH1cblxuICAgICAgLnNsYXNoLWNvbW1hbmQtZGVzY3JpcHRpb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0tYXRlLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBdGVTbGFzaENvbW1hbmRzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgaTE4blNlcnZpY2UgPSBpbmplY3QoQXRlSTE4blNlcnZpY2UpO1xuICBlZGl0b3IgPSBpbnB1dC5yZXF1aXJlZDxFZGl0b3I+KCk7XG4gIGNvbmZpZyA9IGlucHV0PEF0ZUN1c3RvbVNsYXNoQ29tbWFuZHMgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgbWVudVJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oXCJtZW51UmVmXCIpO1xuXG4gIHByaXZhdGUgdGlwcHlJbnN0YW5jZTogVGlwcHlJbnN0YW5jZSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGVkaXRvckNvbW1hbmRzID0gaW5qZWN0KEF0ZUVkaXRvckNvbW1hbmRzU2VydmljZSk7XG5cbiAgLy8gTG9jYWwgc3RhdGVcbiAgcHJpdmF0ZSBpc0FjdGl2ZSA9IGZhbHNlO1xuICBwcml2YXRlIGN1cnJlbnRRdWVyeSA9IHNpZ25hbChcIlwiKTtcbiAgcHJpdmF0ZSBzbGFzaFJhbmdlOiB7IGZyb206IG51bWJlcjsgdG86IG51bWJlciB9IHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gU2lnbmFsIGZvciBzZWxlY3RlZCBpbmRleFxuICBzZWxlY3RlZEluZGV4ID0gc2lnbmFsKDApO1xuXG4gIC8vIFRvb2xiYXIgaW50ZXJhY3Rpb24gc3RhdGUgKGZyb20gY2VudHJhbGl6ZWQgc2VydmljZSlcbiAgcHJpdmF0ZSByZWFkb25seSBpc1Rvb2xiYXJJbnRlcmFjdGluZyA9IHRoaXMuZWRpdG9yQ29tbWFuZHMuaXNUb29sYmFySW50ZXJhY3Rpbmc7XG5cbiAgY29tbWFuZHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWcoKTtcbiAgICBpZiAoY29uZmlnICYmIGNvbmZpZy5jb21tYW5kcykge1xuICAgICAgcmV0dXJuIGNvbmZpZy5jb21tYW5kcztcbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjayB0byBkZWZhdWx0IG5hdGl2ZSBjb21tYW5kc1xuICAgIHJldHVybiBjcmVhdGVEZWZhdWx0U2xhc2hDb21tYW5kcyh0aGlzLmkxOG5TZXJ2aWNlLCB0aGlzLmVkaXRvckNvbW1hbmRzKTtcbiAgfSk7XG5cbiAgZmlsdGVyZWRDb21tYW5kcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBxdWVyeSA9IHRoaXMuY3VycmVudFF1ZXJ5KCkudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBjb21tYW5kcyA9IHRoaXMuY29tbWFuZHMoKTtcblxuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHJldHVybiBjb21tYW5kcztcbiAgICB9XG5cbiAgICByZXR1cm4gY29tbWFuZHMuZmlsdGVyKFxuICAgICAgY29tbWFuZCA9PlxuICAgICAgICBjb21tYW5kLnRpdGxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpIHx8XG4gICAgICAgIGNvbW1hbmQuZGVzY3JpcHRpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeSkgfHxcbiAgICAgICAgY29tbWFuZC5rZXl3b3Jkcy5zb21lKGtleXdvcmQgPT4ga2V5d29yZC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5KSlcbiAgICApO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVkID0gdGhpcy5lZGl0b3IoKTtcbiAgICAgICAgaWYgKCFlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENsZWFuIHVwIG9sZCBsaXN0ZW5lcnNcbiAgICAgICAgZWQub2ZmKFwic2VsZWN0aW9uVXBkYXRlXCIsIHRoaXMudXBkYXRlTWVudSk7XG4gICAgICAgIGVkLm9mZihcInRyYW5zYWN0aW9uXCIsIHRoaXMudXBkYXRlTWVudSk7XG4gICAgICAgIGVkLm9mZihcImZvY3VzXCIsIHRoaXMudXBkYXRlTWVudSk7XG4gICAgICAgIGVkLm9mZihcImJsdXJcIiwgdGhpcy5oYW5kbGVCbHVyKTtcblxuICAgICAgICAvLyBBZGQgbmV3IGxpc3RlbmVyc1xuICAgICAgICBlZC5vbihcInNlbGVjdGlvblVwZGF0ZVwiLCB0aGlzLnVwZGF0ZU1lbnUpO1xuICAgICAgICBlZC5vbihcInRyYW5zYWN0aW9uXCIsIHRoaXMudXBkYXRlTWVudSk7XG4gICAgICAgIGVkLm9uKFwiZm9jdXNcIiwgdGhpcy51cGRhdGVNZW51KTtcbiAgICAgICAgZWQub24oXCJibHVyXCIsIHRoaXMuaGFuZGxlQmx1cik7XG5cbiAgICAgICAgLy8gVXNlIFByb3NlTWlycm9yIHBsdWdpbiBzeXN0ZW0gdG8gaW50ZXJjZXB0IGtleXNcbiAgICAgICAgdGhpcy5hZGRLZXlib2FyZFBsdWdpbihlZCk7XG5cbiAgICAgICAgLy8gdXBkYXRlTWVudSgpIHdpbGwgYmUgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBlZGl0b3IgaXMgcmVhZHlcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuaW5pdFRpcHB5KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBjb25zdCBlZCA9IHRoaXMuZWRpdG9yKCk7XG4gICAgaWYgKGVkKSB7XG4gICAgICBlZC5vZmYoXCJzZWxlY3Rpb25VcGRhdGVcIiwgdGhpcy51cGRhdGVNZW51KTtcbiAgICAgIGVkLm9mZihcInRyYW5zYWN0aW9uXCIsIHRoaXMudXBkYXRlTWVudSk7XG4gICAgICBlZC5vZmYoXCJmb2N1c1wiLCB0aGlzLnVwZGF0ZU1lbnUpO1xuICAgICAgZWQub2ZmKFwiYmx1clwiLCB0aGlzLmhhbmRsZUJsdXIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRpcHB5SW5zdGFuY2UpIHtcbiAgICAgIHRoaXMudGlwcHlJbnN0YW5jZS5kZXN0cm95KCk7XG4gICAgICB0aGlzLnRpcHB5SW5zdGFuY2UgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdFRpcHB5KCkge1xuICAgIGNvbnN0IG5hdGl2ZUVsZW1lbnQgPSB0aGlzLm1lbnVSZWYoKS5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghbmF0aXZlRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnRpcHB5SW5zdGFuY2UpIHtcbiAgICAgIHRoaXMudGlwcHlJbnN0YW5jZS5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgdGhpcy50aXBweUluc3RhbmNlID0gdGlwcHkoZG9jdW1lbnQuYm9keSwge1xuICAgICAgY29udGVudDogbmF0aXZlRWxlbWVudCxcbiAgICAgIHRyaWdnZXI6IFwibWFudWFsXCIsXG4gICAgICBwbGFjZW1lbnQ6IFwiYm90dG9tLXN0YXJ0XCIsXG4gICAgICB0aGVtZTogXCJzbGFzaC1tZW51XCIsXG4gICAgICBhcHBlbmRUbzogX3JlZiA9PiB7XG4gICAgICAgIC8vIEFsd2F5cyB0cnkgdG8gY2xpbWIgdXAgdG8gZWRpdG9yIGhvc3QgdG8gaW5oZXJpdCBDU1MgdmFyaWFibGVzXG4gICAgICAgIGNvbnN0IGhvc3QgPSAodGhpcy5lZGl0b3IoKS5vcHRpb25zLmVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoXG4gICAgICAgICAgXCJhbmd1bGFyLXRpcHRhcC1lZGl0b3JcIlxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gaG9zdCB8fCBkb2N1bWVudC5ib2R5O1xuICAgICAgfSxcbiAgICAgIGludGVyYWN0aXZlOiB0cnVlLFxuICAgICAgYXJyb3c6IGZhbHNlLFxuICAgICAgb2Zmc2V0OiBbMCwgOF0sXG4gICAgICBoaWRlT25DbGljazogdHJ1ZSxcbiAgICAgIHBsdWdpbnM6IFtzdGlja3ldLFxuICAgICAgc3RpY2t5OiBmYWxzZSxcbiAgICAgIGdldFJlZmVyZW5jZUNsaWVudFJlY3Q6ICgpID0+IHRoaXMuZ2V0U2xhc2hSZWN0KCksXG4gICAgICAvLyBJbXByb3ZlIHBvc2l0aW9uaW5nIHdpdGggc2Nyb2xsXG4gICAgICBwb3BwZXJPcHRpb25zOiB7XG4gICAgICAgIG1vZGlmaWVyczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwicHJldmVudE92ZXJmbG93XCIsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIGJvdW5kYXJ5OiAodGhpcy5lZGl0b3IoKS5vcHRpb25zLmVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpIHx8IGRvY3VtZW50LmJvZHksXG4gICAgICAgICAgICAgIHBhZGRpbmc6IDgsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJmbGlwXCIsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIGZhbGxiYWNrUGxhY2VtZW50czogW1widG9wLXN0YXJ0XCIsIFwiYm90dG9tLWVuZFwiLCBcInRvcC1lbmRcIl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJoaWRlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBJbml0aWFsIGNoZWNrIGFmdGVyIFRpcHB5IGlzIGluaXRpYWxpemVkXG4gICAgdGhpcy51cGRhdGVNZW51KCk7XG4gIH1cblxuICBwcml2YXRlIGdldFNsYXNoUmVjdCgpOiBET01SZWN0IHtcbiAgICBjb25zdCBlZCA9IHRoaXMuZWRpdG9yKCk7XG4gICAgaWYgKCFlZCB8fCAhdGhpcy5zbGFzaFJhbmdlKSB7XG4gICAgICByZXR1cm4gbmV3IERPTVJlY3QoLTk5OTksIC05OTk5LCAwLCAwKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gVXNlIFByb3NlTWlycm9yIGNvb3JkaW5hdGVzIGZvciBiZXR0ZXIgcHJlY2lzaW9uXG4gICAgICBjb25zdCBjb29yZHMgPSBlZC52aWV3LmNvb3Jkc0F0UG9zKHRoaXMuc2xhc2hSYW5nZS5mcm9tKTtcbiAgICAgIHJldHVybiBuZXcgRE9NUmVjdChjb29yZHMubGVmdCwgY29vcmRzLnRvcCwgMCwgY29vcmRzLmJvdHRvbSAtIGNvb3Jkcy50b3ApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJFcnJvciBjYWxjdWxhdGluZyBjb29yZGluYXRlczpcIiwgZXJyb3IpO1xuICAgICAgLy8gRmFsbGJhY2sgdG8gd2luZG93LmdldFNlbGVjdGlvblxuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG5ldyBET01SZWN0KC05OTk5LCAtOTk5OSwgMCwgMCk7XG4gICAgICB9XG4gICAgICBjb25zdCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xuICAgICAgcmV0dXJuIHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZU1lbnUgPSAoKSA9PiB7XG4gICAgY29uc3QgZWQgPSB0aGlzLmVkaXRvcigpO1xuICAgIGlmICghZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IGZyb20gfSA9IGVkLnN0YXRlLnNlbGVjdGlvbjtcblxuICAgIC8vIENoZWNrIGlmICcvJyB3YXMgdHlwZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUgb3IgYWZ0ZXIgYSBzcGFjZVxuICAgIGNvbnN0IHRleHRCZWZvcmUgPSBlZC5zdGF0ZS5kb2MudGV4dEJldHdlZW4oTWF0aC5tYXgoMCwgZnJvbSAtIDIwKSwgZnJvbSwgXCJcXG5cIik7XG4gICAgY29uc3Qgc2xhc2hNYXRjaCA9IHRleHRCZWZvcmUubWF0Y2goLyg/Ol58XFxzKVxcLyhbXi9cXHNdKikkLyk7XG5cbiAgICBpZiAoc2xhc2hNYXRjaCkge1xuICAgICAgY29uc3QgcXVlcnkgPSBzbGFzaE1hdGNoWzFdIHx8IFwiXCI7XG4gICAgICBjb25zdCB3YXNBY3RpdmUgPSB0aGlzLmlzQWN0aXZlO1xuXG4gICAgICB0aGlzLmN1cnJlbnRRdWVyeS5zZXQocXVlcnkpO1xuICAgICAgdGhpcy5zbGFzaFJhbmdlID0ge1xuICAgICAgICBmcm9tOiBmcm9tIC0gc2xhc2hNYXRjaFswXS5sZW5ndGggKyBzbGFzaE1hdGNoWzBdLmluZGV4T2YoXCIvXCIpLFxuICAgICAgICB0bzogZnJvbSxcbiAgICAgIH07XG5cbiAgICAgIC8vIFJlc2V0IGluZGV4IGlmIG1lbnUganVzdCBiZWNhbWUgYWN0aXZlXG4gICAgICBpZiAoIXdhc0FjdGl2ZSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXguc2V0KDApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmlzQWN0aXZlID0gdHJ1ZTtcblxuICAgICAgaWYgKHRoaXMuaXNUb29sYmFySW50ZXJhY3RpbmcoKSkge1xuICAgICAgICB0aGlzLmhpZGVUaXBweSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93VGlwcHkoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5oaWRlVGlwcHkoKTtcbiAgICB9XG4gIH07XG5cbiAgaGFuZGxlQmx1ciA9ICgpID0+IHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaGlkZVRpcHB5KCksIDEwMCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBzY3JvbGxUb1NlbGVjdGVkKCkge1xuICAgIC8vIFNjcm9sbCB0byB0aGUgc2VsZWN0ZWQgZWxlbWVudFxuICAgIGNvbnN0IG1lbnVFbCA9IHRoaXMubWVudVJlZigpPy5uYXRpdmVFbGVtZW50O1xuICAgIGlmIChtZW51RWwpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IG1lbnVFbC5xdWVyeVNlbGVjdG9yKFwiLnNsYXNoLWNvbW1hbmQtaXRlbS5zZWxlY3RlZFwiKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGlmIChzZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgc2VsZWN0ZWRJdGVtLnNjcm9sbEludG9WaWV3KHsgYmxvY2s6IFwibmVhcmVzdFwiLCBiZWhhdmlvcjogXCJzbW9vdGhcIiB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3dUaXBweSgpIHtcbiAgICBpZiAodGhpcy50aXBweUluc3RhbmNlICYmIHRoaXMuZmlsdGVyZWRDb21tYW5kcygpLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudGlwcHlJbnN0YW5jZS5zZXRQcm9wcyh7IHN0aWNreTogXCJyZWZlcmVuY2VcIiB9KTtcbiAgICAgIHRoaXMudGlwcHlJbnN0YW5jZS5zaG93KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoaWRlVGlwcHkoKSB7XG4gICAgaWYgKHRoaXMudGlwcHlJbnN0YW5jZSkge1xuICAgICAgdGhpcy50aXBweUluc3RhbmNlLnNldFByb3BzKHsgc3RpY2t5OiBmYWxzZSB9KTtcbiAgICAgIHRoaXMudGlwcHlJbnN0YW5jZS5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgZXhlY3V0ZUNvbW1hbmQoY29tbWFuZDogQXRlU2xhc2hDb21tYW5kSXRlbSkge1xuICAgIGNvbnN0IGVkID0gdGhpcy5lZGl0b3IoKTtcbiAgICBpZiAoIWVkIHx8ICF0aGlzLnNsYXNoUmFuZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgc2xhc2ggdGV4dCAoXCIvXCIpXG4gICAgY29uc3QgeyB0ciB9ID0gZWQuc3RhdGU7XG4gICAgdHIuZGVsZXRlKHRoaXMuc2xhc2hSYW5nZS5mcm9tLCB0aGlzLnNsYXNoUmFuZ2UudG8pO1xuICAgIGVkLnZpZXcuZGlzcGF0Y2godHIpO1xuXG4gICAgLy8gSGlkZSBtZW51IGltbWVkaWF0ZWx5XG4gICAgdGhpcy5oaWRlVGlwcHkoKTtcbiAgICB0aGlzLmlzQWN0aXZlID0gZmFsc2U7XG5cbiAgICAvLyBHaXZlIGZvY3VzIGJhY2sgdG8gZWRpdG9yIGFuZCBleGVjdXRlIGNvbW1hbmRcbiAgICAvLyBVc2UgYSBtaWNyby1kZWxheSB0byBlbnN1cmUgUHJvc2VNaXJyb3IgRE9NIGlzIHN0YWJsZSBhZnRlciByZW1vdmluZyBcIi9cIlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgZWQuY29tbWFuZHMuZm9jdXMoKTtcbiAgICAgIGNvbW1hbmQuY29tbWFuZChlZCk7XG4gICAgfSwgMTApO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRLZXlib2FyZFBsdWdpbihlZDogRWRpdG9yKSB7XG4gICAgLy8gQWRkIGEgUHJvc2VNaXJyb3IgcGx1Z2luIHRvIGludGVyY2VwdCBrZXlib2FyZCBldmVudHNcbiAgICBjb25zdCBrZXlib2FyZFBsdWdpbiA9IG5ldyBQbHVnaW4oe1xuICAgICAga2V5OiBuZXcgUGx1Z2luS2V5KFwic2xhc2gtY29tbWFuZHMta2V5Ym9hcmRcIiksXG4gICAgICBwcm9wczoge1xuICAgICAgICBoYW5kbGVLZXlEb3duOiAodmlldzogRWRpdG9yVmlldywgZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBPbmx5IGhhbmRsZSBpZiBtZW51IGlzIGFjdGl2ZVxuICAgICAgICAgIGlmICghdGhpcy5pc0FjdGl2ZSB8fCB0aGlzLmZpbHRlcmVkQ29tbWFuZHMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgICAgY2FzZSBcIkFycm93RG93blwiOiB7XG4gICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGNvbnN0IG5leHRJbmRleCA9ICh0aGlzLnNlbGVjdGVkSW5kZXgoKSArIDEpICUgdGhpcy5maWx0ZXJlZENvbW1hbmRzKCkubGVuZ3RoO1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXguc2V0KG5leHRJbmRleCk7XG4gICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9TZWxlY3RlZCgpO1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJBcnJvd1VwXCI6IHtcbiAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgY29uc3QgcHJldkluZGV4ID1cbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXgoKSA9PT0gMFxuICAgICAgICAgICAgICAgICAgPyB0aGlzLmZpbHRlcmVkQ29tbWFuZHMoKS5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWRJbmRleCgpIC0gMTtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldChwcmV2SW5kZXgpO1xuICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvU2VsZWN0ZWQoKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiRW50ZXJcIjoge1xuICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZENvbW1hbmQgPSB0aGlzLmZpbHRlcmVkQ29tbWFuZHMoKVt0aGlzLnNlbGVjdGVkSW5kZXgoKV07XG4gICAgICAgICAgICAgIGlmIChzZWxlY3RlZENvbW1hbmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV4ZWN1dGVDb21tYW5kKHNlbGVjdGVkQ29tbWFuZCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiRXNjYXBlXCI6IHtcbiAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLmhpZGVUaXBweSgpO1xuICAgICAgICAgICAgICAvLyBSZW1vdmUgdHlwZWQgXCIvXCJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2xhc2hSYW5nZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgdHIgfSA9IHZpZXcuc3RhdGU7XG4gICAgICAgICAgICAgICAgdHIuZGVsZXRlKHRoaXMuc2xhc2hSYW5nZS5mcm9tLCB0aGlzLnNsYXNoUmFuZ2UudG8pO1xuICAgICAgICAgICAgICAgIHZpZXcuZGlzcGF0Y2godHIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgcGx1Z2luIHRvIGVkaXRvclxuICAgIGVkLnZpZXcudXBkYXRlU3RhdGUoXG4gICAgICBlZC52aWV3LnN0YXRlLnJlY29uZmlndXJlKHtcbiAgICAgICAgcGx1Z2luczogW2tleWJvYXJkUGx1Z2luLCAuLi5lZC52aWV3LnN0YXRlLnBsdWdpbnNdLFxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -316,4 +316,4 @@ export class AteEditorRef {
316
316
  }
317
317
  }
318
318
  }
319
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWVkaXRvci1yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRpcHRhcC1lZGl0b3Ivc3JjL2xpYi9tb2RlbHMvYXRlLWVkaXRvci1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0E7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUN2QixZQUNrQixFQUFVLEVBQ1QsaUJBQXNDLEVBQ3ZDLGVBQXlDO1FBRnpDLE9BQUUsR0FBRixFQUFFLENBQVE7UUFDVCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXFCO1FBQ3ZDLG9CQUFlLEdBQWYsZUFBZSxDQUEwQjtJQUN4RCxDQUFDO0lBRUosMENBQTBDO0lBQzFDLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELDZDQUE2QztJQUM3QyxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELGlEQUFpRDtJQUNqRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDO0lBQzFDLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsT0FBTyxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQWU7UUFDekMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3pELENBQUM7SUFDSCxDQUFDO0lBRUQsK0NBQStDO0lBQy9DLDZCQUE2QjtJQUM3QiwrQ0FBK0M7SUFFL0MsVUFBVTtRQUNSLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUN4RCxDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUMxRCxDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUMxRCxDQUFDO0lBRUQsVUFBVTtRQUNSLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUN4RCxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUM3RCxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUM3RCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUFBLENBQUM7SUFDL0QsQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksTUFBTSxFQUFFLENBQUM7WUFBQSxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUFBLENBQUM7SUFDN0QsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFnQjtRQUM1QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksTUFBTSxFQUFFLENBQUM7WUFBQSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFBQSxDQUFDO0lBQ2xFLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksTUFBTSxFQUFFLENBQUM7WUFBQSxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUM5RCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUFBLENBQUM7SUFDL0QsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFBQSxDQUFDO0lBQzlELENBQUM7SUFFRCxZQUFZLENBQUMsU0FBa0Q7UUFDN0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUNyRSxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7UUFBQSxDQUFDO0lBQ2xFLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBOEI7UUFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUNsRSxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQVUsRUFBRSxPQUErQjtRQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksTUFBTSxFQUFFLENBQUM7WUFBQSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUN4RSxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWE7UUFDM0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUNwRSxDQUFDO0lBRUQsSUFBSTtRQUNGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSTtRQUNGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUNsRCxDQUFDO0lBRUQsK0NBQStDO0lBQy9DLGlCQUFpQjtJQUNqQiwrQ0FBK0M7SUFFL0MsV0FBVyxDQUFDLElBQWEsRUFBRSxJQUFhO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFBQSxDQUFDO0lBQ3JFLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFBQSxDQUFDO0lBQzdELENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFBQSxDQUFDO0lBQzVELENBQUM7SUFFRCxZQUFZO1FBQ1YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFBQSxDQUFDO0lBQzFELENBQUM7SUFFRCxZQUFZO1FBQ1YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFBQSxDQUFDO0lBQzFELENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFBQSxDQUFDO0lBQ3pELENBQUM7SUFFRCxTQUFTO1FBQ1AsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFBQSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFBQSxDQUFDO0lBQ3pELENBQUM7SUFFRCxVQUFVO1FBQ1IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFBQSxDQUFDO0lBQ3hELENBQUM7SUFFRCxTQUFTO1FBQ1AsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFBQSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUFBLENBQUM7SUFDaEUsQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksTUFBTSxFQUFFLENBQUM7WUFBQSxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUFBLENBQUM7SUFDN0QsQ0FBQztJQUVELCtDQUErQztJQUMvQywrQkFBK0I7SUFDL0IsK0NBQStDO0lBRS9DLFVBQVUsQ0FBQyxLQUFhLEVBQUUsYUFBdUIsRUFBRSxTQUFtQjtRQUNwRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdEYsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsS0FBYSxFQUFFLGFBQXVCLEVBQUUsU0FBbUI7UUFDeEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDMUYsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsYUFBdUI7UUFDaEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNwRSxDQUFDO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxhQUF1QjtRQUNwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDeEUsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsS0FBYTtRQUN0QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVELENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNwRCxDQUFDO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQTBCLEVBQUUsS0FBWTtRQUN4RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDSCxDQUFDO0lBRUQsK0NBQStDO0lBQy9DLDZCQUE2QjtJQUM3QiwrQ0FBK0M7SUFFL0MsWUFBWTtRQUNWLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUFBLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUMxRCxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWUsRUFBRSxVQUFVLEdBQUcsSUFBSTtRQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksTUFBTSxFQUFFLENBQUM7WUFBQSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQUEsQ0FBQztJQUM3RSxDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQXVCO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELE9BQU87UUFDTCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsT0FBTztRQUNMLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUNaLE1BQXVCLEVBQ3ZCLE1BQWdDLEVBQ2hDLE9BQTBCO1FBRTFCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFBQSxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFJO1FBQ0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFBQSxDQUFDO0lBQ2xELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBFZGl0b3IsIEpTT05Db250ZW50IH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuaW1wb3J0IHsgQXRlRWRpdG9yQ29tbWFuZHNTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2F0ZS1lZGl0b3ItY29tbWFuZHMuc2VydmljZVwiO1xuaW1wb3J0IHsgQXRlRWRpdG9yU3RhdGVTbmFwc2hvdCB9IGZyb20gXCIuL2F0ZS1lZGl0b3Itc3RhdGUubW9kZWxcIjtcbmltcG9ydCB7IEF0ZUltYWdlVXBsb2FkT3B0aW9ucyB9IGZyb20gXCIuL2F0ZS1pbWFnZS5tb2RlbFwiO1xuaW1wb3J0IHsgQXRlRXhwb3J0Rm9ybWF0LCBBdGVFeHBvcnRPcHRpb25zIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2F0ZS1leHBvcnQuc2VydmljZVwiO1xuXG4vKipcbiAqIEEgd3JhcHBlciBjbGFzcyB0aGF0IGhvbGRzIGEgcmVmZXJlbmNlIHRvIGEgcmVnaXN0ZXJlZCBlZGl0b3IgY29tcG9uZW50LlxuICogSXQgcHJvdmlkZXMgZGlyZWN0LCB0eXBlLXNhZmUgZmFjYWRlIG1ldGhvZHMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgZWRpdG9yXG4gKiBhbmQgZXhlY3V0ZSBmb3JtYXR0aW5nL3V0aWxpdHkgY29tbWFuZHMgd2l0aG91dCBuZWVkaW5nIHRvIG1hbmFnZSB0aGUgcmF3XG4gKiBUaXBUYXAgZWRpdG9yIGluc3RhbmNlIGRpcmVjdGx5LlxuICovXG5leHBvcnQgY2xhc3MgQXRlRWRpdG9yUmVmIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBnZXRFZGl0b3JJbnN0YW5jZTogKCkgPT4gRWRpdG9yIHwgbnVsbCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29tbWFuZHNTZXJ2aWNlOiBBdGVFZGl0b3JDb21tYW5kc1NlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKiBHZXQgdGhlIHJhdyBUaXBUYXAgRWRpdG9yIGluc3RhbmNlLiAqL1xuICBnZXQgZWRpdG9yKCk6IEVkaXRvciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmdldEVkaXRvckluc3RhbmNlKCk7XG4gIH1cblxuICAvKiogR2V0IHRoZSBjdXJyZW50IGVkaXRvciBzdGF0ZSBzbmFwc2hvdC4gKi9cbiAgZ2V0IHN0YXRlKCk6IEF0ZUVkaXRvclN0YXRlU25hcHNob3Qge1xuICAgIHJldHVybiB0aGlzLmNvbW1hbmRzU2VydmljZS5lZGl0b3JTdGF0ZSgpO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgcmVhY3RpdmUgZWRpdG9yIHN0YXRlIGFzIGEgU2lnbmFsLiAqL1xuICBnZXQgc3RhdGVTaWduYWwoKTogU2lnbmFsPEF0ZUVkaXRvclN0YXRlU25hcHNob3Q+IHtcbiAgICByZXR1cm4gdGhpcy5jb21tYW5kc1NlcnZpY2UuZWRpdG9yU3RhdGU7XG4gIH1cblxuICAvKiogRXhlY3V0ZSBhIGdlbmVyaWMgY29tbWFuZCBieSBuYW1lLiAqL1xuICBleGVjdXRlKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy5jb21tYW5kc1NlcnZpY2UuZXhlY3V0ZShlZGl0b3IsIGNvbW1hbmQsIC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEZhY2FkZSBGb3JtYXR0aW5nIENvbW1hbmRzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdG9nZ2xlQm9sZCgpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UudG9nZ2xlQm9sZChlZGl0b3IpO31cbiAgfVxuXG4gIHRvZ2dsZUl0YWxpYygpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UudG9nZ2xlSXRhbGljKGVkaXRvcik7fVxuICB9XG5cbiAgdG9nZ2xlU3RyaWtlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS50b2dnbGVTdHJpa2UoZWRpdG9yKTt9XG4gIH1cblxuICB0b2dnbGVDb2RlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS50b2dnbGVDb2RlKGVkaXRvcik7fVxuICB9XG5cbiAgdG9nZ2xlQ29kZUJsb2NrKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS50b2dnbGVDb2RlQmxvY2soZWRpdG9yKTt9XG4gIH1cblxuICB0b2dnbGVVbmRlcmxpbmUoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge3RoaXMuY29tbWFuZHNTZXJ2aWNlLnRvZ2dsZVVuZGVybGluZShlZGl0b3IpO31cbiAgfVxuXG4gIHRvZ2dsZVN1cGVyc2NyaXB0KCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS50b2dnbGVTdXBlcnNjcmlwdChlZGl0b3IpO31cbiAgfVxuXG4gIHRvZ2dsZVN1YnNjcmlwdCgpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UudG9nZ2xlU3Vic2NyaXB0KGVkaXRvcik7fVxuICB9XG5cbiAgdG9nZ2xlSGVhZGluZyhsZXZlbDogMSB8IDIgfCAzKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge3RoaXMuY29tbWFuZHNTZXJ2aWNlLnRvZ2dsZUhlYWRpbmcoZWRpdG9yLCBsZXZlbCk7fVxuICB9XG5cbiAgdG9nZ2xlQnVsbGV0TGlzdCgpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UudG9nZ2xlQnVsbGV0TGlzdChlZGl0b3IpO31cbiAgfVxuXG4gIHRvZ2dsZU9yZGVyZWRMaXN0KCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS50b2dnbGVPcmRlcmVkTGlzdChlZGl0b3IpO31cbiAgfVxuXG4gIHRvZ2dsZUJsb2NrcXVvdGUoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge3RoaXMuY29tbWFuZHNTZXJ2aWNlLnRvZ2dsZUJsb2NrcXVvdGUoZWRpdG9yKTt9XG4gIH1cblxuICBzZXRUZXh0QWxpZ24oYWxpZ25tZW50OiBcImxlZnRcIiB8IFwiY2VudGVyXCIgfCBcInJpZ2h0XCIgfCBcImp1c3RpZnlcIik6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS5zZXRUZXh0QWxpZ24oZWRpdG9yLCBhbGlnbm1lbnQpO31cbiAgfVxuXG4gIGluc2VydEhvcml6b250YWxSdWxlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS5pbnNlcnRIb3Jpem9udGFsUnVsZShlZGl0b3IpO31cbiAgfVxuXG4gIGluc2VydEltYWdlKG9wdGlvbnM6IEF0ZUltYWdlVXBsb2FkT3B0aW9ucyk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS5pbnNlcnRJbWFnZShlZGl0b3IsIG9wdGlvbnMpO31cbiAgfVxuXG4gIHVwbG9hZEltYWdlKGZpbGU6IEZpbGUsIG9wdGlvbnM/OiBBdGVJbWFnZVVwbG9hZE9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UudXBsb2FkSW1hZ2UoZWRpdG9yLCBmaWxlLCBvcHRpb25zKTt9XG4gIH1cblxuICB0b2dnbGVIaWdobGlnaHQoY29sb3I6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS50b2dnbGVIaWdobGlnaHQoZWRpdG9yLCBjb2xvcik7fVxuICB9XG5cbiAgdW5kbygpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UudW5kbyhlZGl0b3IpO31cbiAgfVxuXG4gIHJlZG8oKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge3RoaXMuY29tbWFuZHNTZXJ2aWNlLnJlZG8oZWRpdG9yKTt9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBUYWJsZSBDb21tYW5kc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIGluc2VydFRhYmxlKHJvd3M/OiBudW1iZXIsIGNvbHM/OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UuaW5zZXJ0VGFibGUoZWRpdG9yLCByb3dzLCBjb2xzKTt9XG4gIH1cblxuICBhZGRDb2x1bW5CZWZvcmUoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge3RoaXMuY29tbWFuZHNTZXJ2aWNlLmFkZENvbHVtbkJlZm9yZShlZGl0b3IpO31cbiAgfVxuXG4gIGFkZENvbHVtbkFmdGVyKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS5hZGRDb2x1bW5BZnRlcihlZGl0b3IpO31cbiAgfVxuXG4gIGRlbGV0ZUNvbHVtbigpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UuZGVsZXRlQ29sdW1uKGVkaXRvcik7fVxuICB9XG5cbiAgYWRkUm93QmVmb3JlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS5hZGRSb3dCZWZvcmUoZWRpdG9yKTt9XG4gIH1cblxuICBhZGRSb3dBZnRlcigpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UuYWRkUm93QWZ0ZXIoZWRpdG9yKTt9XG4gIH1cblxuICBkZWxldGVSb3coKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge3RoaXMuY29tbWFuZHNTZXJ2aWNlLmRlbGV0ZVJvdyhlZGl0b3IpO31cbiAgfVxuXG4gIGRlbGV0ZVRhYmxlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS5kZWxldGVUYWJsZShlZGl0b3IpO31cbiAgfVxuXG4gIG1lcmdlQ2VsbHMoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge3RoaXMuY29tbWFuZHNTZXJ2aWNlLm1lcmdlQ2VsbHMoZWRpdG9yKTt9XG4gIH1cblxuICBzcGxpdENlbGwoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge3RoaXMuY29tbWFuZHNTZXJ2aWNlLnNwbGl0Q2VsbChlZGl0b3IpO31cbiAgfVxuXG4gIHRvZ2dsZUhlYWRlckNvbHVtbigpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UudG9nZ2xlSGVhZGVyQ29sdW1uKGVkaXRvcik7fVxuICB9XG5cbiAgdG9nZ2xlSGVhZGVyUm93KCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS50b2dnbGVIZWFkZXJSb3coZWRpdG9yKTt9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDb2xvciBQaWNrZXIgJiBMaW5rIENvbW1hbmRzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgYXBwbHlDb2xvcihjb2xvcjogc3RyaW5nLCBzZWxlY3Rpb25Pbmx5PzogYm9vbGVhbiwgY2xvc2VNZW51PzogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLmV4ZWN1dGUoZWRpdG9yLCBcImFwcGx5Q29sb3JcIiwgY29sb3IsIHNlbGVjdGlvbk9ubHksIGNsb3NlTWVudSk7XG4gICAgfVxuICB9XG5cbiAgYXBwbHlIaWdobGlnaHQoY29sb3I6IHN0cmluZywgc2VsZWN0aW9uT25seT86IGJvb2xlYW4sIGNsb3NlTWVudT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzU2VydmljZS5leGVjdXRlKGVkaXRvciwgXCJhcHBseUhpZ2hsaWdodFwiLCBjb2xvciwgc2VsZWN0aW9uT25seSwgY2xvc2VNZW51KTtcbiAgICB9XG4gIH1cblxuICB1bnNldENvbG9yKHNlbGVjdGlvbk9ubHk/OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy5jb21tYW5kc1NlcnZpY2UuZXhlY3V0ZShlZGl0b3IsIFwidW5zZXRDb2xvclwiLCBzZWxlY3Rpb25Pbmx5KTtcbiAgICB9XG4gIH1cblxuICB1bnNldEhpZ2hsaWdodChzZWxlY3Rpb25Pbmx5PzogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLmV4ZWN1dGUoZWRpdG9yLCBcInVuc2V0SGlnaGxpZ2h0XCIsIHNlbGVjdGlvbk9ubHkpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUxpbmsoZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLmV4ZWN1dGUoZWRpdG9yLCBcInRvZ2dsZUxpbmtcIiwgZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHVuc2V0TGluaygpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzU2VydmljZS5leGVjdXRlKGVkaXRvciwgXCJ1bnNldExpbmtcIik7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlQ29sb3JQaWNrZXIobW9kZTogXCJ0ZXh0XCIgfCBcImhpZ2hsaWdodFwiLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzU2VydmljZS5leGVjdXRlKGVkaXRvciwgXCJ0b2dnbGVDb2xvclBpY2tlclwiLCBtb2RlLCBldmVudCk7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gR2VuZXJhbCBDb250cm9scyAmIENvbnRlbnRcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBjbGVhckNvbnRlbnQoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge3RoaXMuY29tbWFuZHNTZXJ2aWNlLmNsZWFyQ29udGVudChlZGl0b3IpO31cbiAgfVxuXG4gIHNldENvbnRlbnQoY29udGVudDogc3RyaW5nLCBlbWl0VXBkYXRlID0gdHJ1ZSk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHt0aGlzLmNvbW1hbmRzU2VydmljZS5zZXRDb250ZW50KGVkaXRvciwgY29udGVudCwgZW1pdFVwZGF0ZSk7fVxuICB9XG5cbiAgZ2V0Q29udGVudChmb3JtYXQ6IEF0ZUV4cG9ydEZvcm1hdCk6IHN0cmluZyB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgcmV0dXJuIGVkaXRvciA/IHRoaXMuY29tbWFuZHNTZXJ2aWNlLmdldENvbnRlbnQoZWRpdG9yLCBmb3JtYXQpIDogXCJcIjtcbiAgfVxuXG4gIGdldEhUTUwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICByZXR1cm4gZWRpdG9yID8gZWRpdG9yLmdldEhUTUwoKSA6IFwiXCI7XG4gIH1cblxuICBnZXRKU09OKCk6IEpTT05Db250ZW50IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICByZXR1cm4gZWRpdG9yID8gZWRpdG9yLmdldEpTT04oKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldFRleHQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICByZXR1cm4gZWRpdG9yID8gZWRpdG9yLmdldFRleHQoKSA6IFwiXCI7XG4gIH1cblxuICBhc3luYyBleHBvcnRBcyhcbiAgICBmb3JtYXQ6IEF0ZUV4cG9ydEZvcm1hdCxcbiAgICBtZXRob2Q6IFwiY2xpcGJvYXJkXCIgfCBcImRvd25sb2FkXCIsXG4gICAgb3B0aW9ucz86IEF0ZUV4cG9ydE9wdGlvbnNcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgYXdhaXQgdGhpcy5jb21tYW5kc1NlcnZpY2UuZXhwb3J0QXMoZWRpdG9yLCBmb3JtYXQsIG1ldGhvZCwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge3RoaXMuY29tbWFuZHNTZXJ2aWNlLmZvY3VzKGVkaXRvcik7fVxuICB9XG5cbiAgYmx1cigpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7dGhpcy5jb21tYW5kc1NlcnZpY2UuYmx1cihlZGl0b3IpO31cbiAgfVxufVxuIl19
319
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWVkaXRvci1yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRpcHRhcC1lZGl0b3Ivc3JjL2xpYi9tb2RlbHMvYXRlLWVkaXRvci1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0E7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUN2QixZQUNrQixFQUFVLEVBQ1QsaUJBQXNDLEVBQ3ZDLGVBQXlDO1FBRnpDLE9BQUUsR0FBRixFQUFFLENBQVE7UUFDVCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXFCO1FBQ3ZDLG9CQUFlLEdBQWYsZUFBZSxDQUEwQjtJQUN4RCxDQUFDO0lBRUosMENBQTBDO0lBQzFDLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELDZDQUE2QztJQUM3QyxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELGlEQUFpRDtJQUNqRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDO0lBQzFDLENBQUM7SUFFRCx5Q0FBeUM7SUFDekMsT0FBTyxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQWU7UUFDekMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3pELENBQUM7SUFDSCxDQUFDO0lBRUQsK0NBQStDO0lBQy9DLDZCQUE2QjtJQUM3QiwrQ0FBK0M7SUFFL0MsVUFBVTtRQUNSLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFB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QUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxD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QUNYLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJO1FBQ0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBFZGl0b3IsIEpTT05Db250ZW50IH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuaW1wb3J0IHsgQXRlRWRpdG9yQ29tbWFuZHNTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2F0ZS1lZGl0b3ItY29tbWFuZHMuc2VydmljZVwiO1xuaW1wb3J0IHsgQXRlRWRpdG9yU3RhdGVTbmFwc2hvdCB9IGZyb20gXCIuL2F0ZS1lZGl0b3Itc3RhdGUubW9kZWxcIjtcbmltcG9ydCB7IEF0ZUltYWdlVXBsb2FkT3B0aW9ucyB9IGZyb20gXCIuL2F0ZS1pbWFnZS5tb2RlbFwiO1xuaW1wb3J0IHsgQXRlRXhwb3J0Rm9ybWF0LCBBdGVFeHBvcnRPcHRpb25zIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2F0ZS1leHBvcnQuc2VydmljZVwiO1xuXG4vKipcbiAqIEEgd3JhcHBlciBjbGFzcyB0aGF0IGhvbGRzIGEgcmVmZXJlbmNlIHRvIGEgcmVnaXN0ZXJlZCBlZGl0b3IgY29tcG9uZW50LlxuICogSXQgcHJvdmlkZXMgZGlyZWN0LCB0eXBlLXNhZmUgZmFjYWRlIG1ldGhvZHMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgZWRpdG9yXG4gKiBhbmQgZXhlY3V0ZSBmb3JtYXR0aW5nL3V0aWxpdHkgY29tbWFuZHMgd2l0aG91dCBuZWVkaW5nIHRvIG1hbmFnZSB0aGUgcmF3XG4gKiBUaXBUYXAgZWRpdG9yIGluc3RhbmNlIGRpcmVjdGx5LlxuICovXG5leHBvcnQgY2xhc3MgQXRlRWRpdG9yUmVmIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBnZXRFZGl0b3JJbnN0YW5jZTogKCkgPT4gRWRpdG9yIHwgbnVsbCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29tbWFuZHNTZXJ2aWNlOiBBdGVFZGl0b3JDb21tYW5kc1NlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKiBHZXQgdGhlIHJhdyBUaXBUYXAgRWRpdG9yIGluc3RhbmNlLiAqL1xuICBnZXQgZWRpdG9yKCk6IEVkaXRvciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmdldEVkaXRvckluc3RhbmNlKCk7XG4gIH1cblxuICAvKiogR2V0IHRoZSBjdXJyZW50IGVkaXRvciBzdGF0ZSBzbmFwc2hvdC4gKi9cbiAgZ2V0IHN0YXRlKCk6IEF0ZUVkaXRvclN0YXRlU25hcHNob3Qge1xuICAgIHJldHVybiB0aGlzLmNvbW1hbmRzU2VydmljZS5lZGl0b3JTdGF0ZSgpO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgcmVhY3RpdmUgZWRpdG9yIHN0YXRlIGFzIGEgU2lnbmFsLiAqL1xuICBnZXQgc3RhdGVTaWduYWwoKTogU2lnbmFsPEF0ZUVkaXRvclN0YXRlU25hcHNob3Q+IHtcbiAgICByZXR1cm4gdGhpcy5jb21tYW5kc1NlcnZpY2UuZWRpdG9yU3RhdGU7XG4gIH1cblxuICAvKiogRXhlY3V0ZSBhIGdlbmVyaWMgY29tbWFuZCBieSBuYW1lLiAqL1xuICBleGVjdXRlKGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy5jb21tYW5kc1NlcnZpY2UuZXhlY3V0ZShlZGl0b3IsIGNvbW1hbmQsIC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEZhY2FkZSBGb3JtYXR0aW5nIENvbW1hbmRzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgdG9nZ2xlQm9sZCgpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzU2VydmljZS50b2dnbGVCb2xkKGVkaXRvcik7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlSXRhbGljKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLnRvZ2dsZUl0YWxpYyhlZGl0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVN0cmlrZSgpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzU2VydmljZS50b2dnbGVTdHJpa2UoZWRpdG9yKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVDb2RlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLnRvZ2dsZUNvZGUoZWRpdG9yKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVDb2RlQmxvY2soKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy5jb21tYW5kc1NlcnZpY2UudG9nZ2xlQ29kZUJsb2NrKGVkaXRvcik7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlVW5kZXJsaW5lKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLnRvZ2dsZVVuZGVybGluZShlZGl0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZVN1cGVyc2NyaXB0KCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLnRvZ2dsZVN1cGVyc2NyaXB0KGVkaXRvcik7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlU3Vic2NyaXB0KCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLnRvZ2dsZVN1YnNjcmlwdChlZGl0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUhlYWRpbmcobGV2ZWw6IDEgfCAyIHwgMyk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLnRvZ2dsZUhlYWRpbmcoZWRpdG9yLCBsZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlQnVsbGV0TGlzdCgpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzU2VydmljZS50b2dnbGVCdWxsZXRMaXN0KGVkaXRvcik7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlT3JkZXJlZExpc3QoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy5jb21tYW5kc1NlcnZpY2UudG9nZ2xlT3JkZXJlZExpc3QoZWRpdG9yKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVCbG9ja3F1b3RlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLnRvZ2dsZUJsb2NrcXVvdGUoZWRpdG9yKTtcbiAgICB9XG4gIH1cblxuICBzZXRUZXh0QWxpZ24oYWxpZ25tZW50OiBcImxlZnRcIiB8IFwiY2VudGVyXCIgfCBcInJpZ2h0XCIgfCBcImp1c3RpZnlcIik6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLnNldFRleHRBbGlnbihlZGl0b3IsIGFsaWdubWVudCk7XG4gICAgfVxuICB9XG5cbiAgaW5zZXJ0SG9yaXpvbnRhbFJ1bGUoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy5jb21tYW5kc1NlcnZpY2UuaW5zZXJ0SG9yaXpvbnRhbFJ1bGUoZWRpdG9yKTtcbiAgICB9XG4gIH1cblxuICBpbnNlcnRJbWFnZShvcHRpb25zOiBBdGVJbWFnZVVwbG9hZE9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzU2VydmljZS5pbnNlcnRJbWFnZShlZGl0b3IsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHVwbG9hZEltYWdlKGZpbGU6IEZpbGUsIG9wdGlvbnM/OiBBdGVJbWFnZVVwbG9hZE9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzU2VydmljZS51cGxvYWRJbWFnZShlZGl0b3IsIGZpbGUsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUhpZ2hsaWdodChjb2xvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy5jb21tYW5kc1NlcnZpY2UudG9nZ2xlSGlnaGxpZ2h0KGVkaXRvciwgY29sb3IpO1xuICAgIH1cbiAgfVxuXG4gIHVuZG8oKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy5jb21tYW5kc1NlcnZpY2UudW5kbyhlZGl0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJlZG8oKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy5jb21tYW5kc1NlcnZpY2UucmVkbyhlZGl0b3IpO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFRhYmxlIENvbW1hbmRzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgaW5zZXJ0VGFibGUocm93cz86IG51bWJlciwgY29scz86IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLmluc2VydFRhYmxlKGVkaXRvciwgcm93cywgY29scyk7XG4gICAgfVxuICB9XG5cbiAgYWRkQ29sdW1uQmVmb3JlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLmFkZENvbHVtbkJlZm9yZShlZGl0b3IpO1xuICAgIH1cbiAgfVxuXG4gIGFkZENvbHVtbkFmdGVyKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLmFkZENvbHVtbkFmdGVyKGVkaXRvcik7XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlQ29sdW1uKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLmRlbGV0ZUNvbHVtbihlZGl0b3IpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFJvd0JlZm9yZSgpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzU2VydmljZS5hZGRSb3dCZWZvcmUoZWRpdG9yKTtcbiAgICB9XG4gIH1cblxuICBhZGRSb3dBZnRlcigpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzU2VydmljZS5hZGRSb3dBZnRlcihlZGl0b3IpO1xuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZVJvdygpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzU2VydmljZS5kZWxldGVSb3coZWRpdG9yKTtcbiAgICB9XG4gIH1cblxuICBkZWxldGVUYWJsZSgpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzU2VydmljZS5kZWxldGVUYWJsZShlZGl0b3IpO1xuICAgIH1cbiAgfVxuXG4gIG1lcmdlQ2VsbHMoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy5jb21tYW5kc1NlcnZpY2UubWVyZ2VDZWxscyhlZGl0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHNwbGl0Q2VsbCgpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzU2VydmljZS5zcGxpdENlbGwoZWRpdG9yKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVIZWFkZXJDb2x1bW4oKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy5jb21tYW5kc1NlcnZpY2UudG9nZ2xlSGVhZGVyQ29sdW1uKGVkaXRvcik7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlSGVhZGVyUm93KCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLnRvZ2dsZUhlYWRlclJvdyhlZGl0b3IpO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIENvbG9yIFBpY2tlciAmIExpbmsgQ29tbWFuZHNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBhcHBseUNvbG9yKGNvbG9yOiBzdHJpbmcsIHNlbGVjdGlvbk9ubHk/OiBib29sZWFuLCBjbG9zZU1lbnU/OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy5jb21tYW5kc1NlcnZpY2UuZXhlY3V0ZShlZGl0b3IsIFwiYXBwbHlDb2xvclwiLCBjb2xvciwgc2VsZWN0aW9uT25seSwgY2xvc2VNZW51KTtcbiAgICB9XG4gIH1cblxuICBhcHBseUhpZ2hsaWdodChjb2xvcjogc3RyaW5nLCBzZWxlY3Rpb25Pbmx5PzogYm9vbGVhbiwgY2xvc2VNZW51PzogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLmV4ZWN1dGUoZWRpdG9yLCBcImFwcGx5SGlnaGxpZ2h0XCIsIGNvbG9yLCBzZWxlY3Rpb25Pbmx5LCBjbG9zZU1lbnUpO1xuICAgIH1cbiAgfVxuXG4gIHVuc2V0Q29sb3Ioc2VsZWN0aW9uT25seT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzU2VydmljZS5leGVjdXRlKGVkaXRvciwgXCJ1bnNldENvbG9yXCIsIHNlbGVjdGlvbk9ubHkpO1xuICAgIH1cbiAgfVxuXG4gIHVuc2V0SGlnaGxpZ2h0KHNlbGVjdGlvbk9ubHk/OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy5jb21tYW5kc1NlcnZpY2UuZXhlY3V0ZShlZGl0b3IsIFwidW5zZXRIaWdobGlnaHRcIiwgc2VsZWN0aW9uT25seSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlTGluayhldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy5jb21tYW5kc1NlcnZpY2UuZXhlY3V0ZShlZGl0b3IsIFwidG9nZ2xlTGlua1wiLCBldmVudCk7XG4gICAgfVxuICB9XG5cbiAgdW5zZXRMaW5rKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLmV4ZWN1dGUoZWRpdG9yLCBcInVuc2V0TGlua1wiKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVDb2xvclBpY2tlcihtb2RlOiBcInRleHRcIiB8IFwiaGlnaGxpZ2h0XCIsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLmV4ZWN1dGUoZWRpdG9yLCBcInRvZ2dsZUNvbG9yUGlja2VyXCIsIG1vZGUsIGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBHZW5lcmFsIENvbnRyb2xzICYgQ29udGVudFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIGNsZWFyQ29udGVudCgpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzU2VydmljZS5jbGVhckNvbnRlbnQoZWRpdG9yKTtcbiAgICB9XG4gIH1cblxuICBzZXRDb250ZW50KGNvbnRlbnQ6IHN0cmluZywgZW1pdFVwZGF0ZSA9IHRydWUpOiB2b2lkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzU2VydmljZS5zZXRDb250ZW50KGVkaXRvciwgY29udGVudCwgZW1pdFVwZGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q29udGVudChmb3JtYXQ6IEF0ZUV4cG9ydEZvcm1hdCk6IHN0cmluZyB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgcmV0dXJuIGVkaXRvciA/IHRoaXMuY29tbWFuZHNTZXJ2aWNlLmdldENvbnRlbnQoZWRpdG9yLCBmb3JtYXQpIDogXCJcIjtcbiAgfVxuXG4gIGdldEhUTUwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICByZXR1cm4gZWRpdG9yID8gZWRpdG9yLmdldEhUTUwoKSA6IFwiXCI7XG4gIH1cblxuICBnZXRKU09OKCk6IEpTT05Db250ZW50IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICByZXR1cm4gZWRpdG9yID8gZWRpdG9yLmdldEpTT04oKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldFRleHQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBlZGl0b3IgPSB0aGlzLmVkaXRvcjtcbiAgICByZXR1cm4gZWRpdG9yID8gZWRpdG9yLmdldFRleHQoKSA6IFwiXCI7XG4gIH1cblxuICBhc3luYyBleHBvcnRBcyhcbiAgICBmb3JtYXQ6IEF0ZUV4cG9ydEZvcm1hdCxcbiAgICBtZXRob2Q6IFwiY2xpcGJvYXJkXCIgfCBcImRvd25sb2FkXCIsXG4gICAgb3B0aW9ucz86IEF0ZUV4cG9ydE9wdGlvbnNcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgYXdhaXQgdGhpcy5jb21tYW5kc1NlcnZpY2UuZXhwb3J0QXMoZWRpdG9yLCBmb3JtYXQsIG1ldGhvZCwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgY29uc3QgZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy5jb21tYW5kc1NlcnZpY2UuZm9jdXMoZWRpdG9yKTtcbiAgICB9XG4gIH1cblxuICBibHVyKCk6IHZvaWQge1xuICAgIGNvbnN0IGVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMuY29tbWFuZHNTZXJ2aWNlLmJsdXIoZWRpdG9yKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -82,6 +82,9 @@ export class AteEditorCommandsService {
82
82
  setToolbarInteracting(value) {
83
83
  this._isToolbarInteracting.set(value);
84
84
  }
85
+ set onImageUploaded(callback) {
86
+ this.imageService.onImageUploadedCallback = callback || undefined;
87
+ }
85
88
  set uploadHandler(handler) {
86
89
  this.imageService.uploadHandler = handler;
87
90
  }
@@ -504,4 +507,4 @@ export class AteEditorCommandsService {
504
507
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AteEditorCommandsService, decorators: [{
505
508
  type: Injectable
506
509
  }] });
507
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWVkaXRvci1jb21tYW5kcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10aXB0YXAtZWRpdG9yL3NyYy9saWIvc2VydmljZXMvYXRlLWVkaXRvci1jb21tYW5kcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBcUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRixPQUFPLEVBQTBCLHdCQUF3QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBSXBHLE1BQU0sT0FBTyx3QkFBd0I7SUFEckM7UUFFVSxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2QyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQy9DLFlBQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVCLGlCQUFZLEdBQUcsTUFBTSxDQUF5Qix3QkFBd0IsRUFBRTtZQUN2RixLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2QsNkJBQTZCO2dCQUM3QixJQUFJLENBQUMsQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDakUsT0FBTyxLQUFLLENBQUM7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QXdCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0MsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBYyxFQUFFLElBQVUsRUFBRSxPQUErQjtRQUMzRSxJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0MsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFjO1FBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBYyxFQUFFLEtBQWdCLEVBQUUsT0FBK0I7UUFDL0UsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFjLEVBQUUsS0FBcUIsRUFBRSxPQUErQjtRQUNyRixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0QsQ0FBQzsrR0EvakJVLHdCQUF3QjttSEFBeEIsd0JBQXdCOzs0RkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0LCBzaWduYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSBcIkB0aXB0YXAvY29yZVwiO1xuaW1wb3J0IHsgQXRlSW1hZ2VTZXJ2aWNlIH0gZnJvbSBcIi4vYXRlLWltYWdlLnNlcnZpY2VcIjtcbmltcG9ydCB7IEF0ZUNvbG9yUGlja2VyU2VydmljZSB9IGZyb20gXCIuL2F0ZS1jb2xvci1waWNrZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgQXRlTGlua1NlcnZpY2UgfSBmcm9tIFwiLi9hdGUtbGluay5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBdGVFeHBvcnRTZXJ2aWNlLCBBdGVFeHBvcnRGb3JtYXQsIEF0ZUV4cG9ydE9wdGlvbnMgfSBmcm9tIFwiLi9hdGUtZXhwb3J0LnNlcnZpY2VcIjtcbmltcG9ydCB7IEF0ZUVkaXRvclN0YXRlU25hcHNob3QsIEFURV9JTklUSUFMX0VESVRPUl9TVEFURSB9IGZyb20gXCIuLi9tb2RlbHMvYXRlLWVkaXRvci1zdGF0ZS5tb2RlbFwiO1xuaW1wb3J0IHsgQXRlSW1hZ2VVcGxvYWRIYW5kbGVyLCBBdGVJbWFnZVVwbG9hZE9wdGlvbnMgfSBmcm9tIFwiLi4vbW9kZWxzL2F0ZS1pbWFnZS5tb2RlbFwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXRlRWRpdG9yQ29tbWFuZHNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBpbWFnZVNlcnZpY2UgPSBpbmplY3QoQXRlSW1hZ2VTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBjb2xvclBpY2tlclN2YyA9IGluamVjdChBdGVDb2xvclBpY2tlclNlcnZpY2UpO1xuICBwcml2YXRlIGxpbmtTdmMgPSBpbmplY3QoQXRlTGlua1NlcnZpY2UpO1xuICBwcml2YXRlIGV4cG9ydFN2YyA9IGluamVjdChBdGVFeHBvcnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZWRpdG9yU3RhdGUgPSBzaWduYWw8QXRlRWRpdG9yU3RhdGVTbmFwc2hvdD4oQVRFX0lOSVRJQUxfRURJVE9SX1NUQVRFLCB7XG4gICAgZXF1YWw6IChhLCBiKSA9PiB7XG4gICAgICAvLyAxLiBQcmltaXRpdmUgZ2xvYmFsIHN0YXRlc1xuICAgICAgaWYgKGEuaXNGb2N1c2VkICE9PSBiLmlzRm9jdXNlZCB8fCBhLmlzRWRpdGFibGUgIT09IGIuaXNFZGl0YWJsZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIDIuIERldGFpbGVkIHNlbGVjdGlvbiBjb21wYXJpc29uXG4gICAgICBpZiAoXG4gICAgICAgIGEuc2VsZWN0aW9uLmZyb20gIT09IGIuc2VsZWN0aW9uLmZyb20gfHxcbiAgICAgICAgYS5zZWxlY3Rpb24udG8gIT09IGIuc2VsZWN0aW9uLnRvIHx8XG4gICAgICAgIGEuc2VsZWN0aW9uLnR5cGUgIT09IGIuc2VsZWN0aW9uLnR5cGUgfHxcbiAgICAgICAgYS5zZWxlY3Rpb24uZW1wdHkgIT09IGIuc2VsZWN0aW9uLmVtcHR5IHx8XG4gICAgICAgIGEuc2VsZWN0aW9uLmlzU2luZ2xlQ2VsbCAhPT0gYi5zZWxlY3Rpb24uaXNTaW5nbGVDZWxsXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyBIZWxwZXIgZm9yIG9iamVjdCBjb21wYXJpc29uXG4gICAgICBjb25zdCBpc1JlY29yZEVxdWFsID0gKG9iakE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBvYmpCOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4ge1xuICAgICAgICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKG9iakEpO1xuICAgICAgICBjb25zdCBrZXlzQiA9IE9iamVjdC5rZXlzKG9iakIpO1xuICAgICAgICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGtleXNBLmV2ZXJ5KGtleSA9PiBvYmpBW2tleV0gPT09IG9iakJba2V5XSk7XG4gICAgICB9O1xuXG4gICAgICAvLyAzLiBDb21wYXJlIHN1Yi1zdGF0ZXMgKG1hcmtzLCBjYW4sIG5vZGVzKVxuICAgICAgaWYgKCFpc1JlY29yZEVxdWFsKGEubWFya3MsIGIubWFya3MpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNSZWNvcmRFcXVhbChhLmNhbiwgYi5jYW4pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNSZWNvcmRFcXVhbChhLm5vZGVzLCBiLm5vZGVzKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIDQuIENvbXBhcmUgY3VzdG9tIGV4dGVuc2lvbiBzdGF0ZXNcbiAgICAgIGlmICghaXNSZWNvcmRFcXVhbChhLmN1c3RvbSwgYi5jdXN0b20pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgfSk7XG5cbiAgLyoqIEV4cG9zZWQgZWRpdG9yIHN0YXRlIGFzIGEgcmVhZG9ubHkgc2lnbmFsICovXG4gIHJlYWRvbmx5IGVkaXRvclN0YXRlID0gdGhpcy5fZWRpdG9yU3RhdGUuYXNSZWFkb25seSgpO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFRvb2xiYXIgSW50ZXJhY3Rpb24gU3RhdGVcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKiogU2lnbmFsIHRvIHRyYWNrIHdoZW4gdGhlIHRvb2xiYXIgaXMgYmVpbmcgaG92ZXJlZC9pbnRlcmFjdGVkIHdpdGggKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfaXNUb29sYmFySW50ZXJhY3RpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBpc1Rvb2xiYXJJbnRlcmFjdGluZyA9IHRoaXMuX2lzVG9vbGJhckludGVyYWN0aW5nLmFzUmVhZG9ubHkoKTtcblxuICAvKiogU2V0IHRvb2xiYXIgaW50ZXJhY3Rpb24gc3RhdGUgKGNhbGxlZCBieSBlZGl0b3IgY29tcG9uZW50KSAqL1xuICBzZXRUb29sYmFySW50ZXJhY3RpbmcodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9pc1Rvb2xiYXJJbnRlcmFjdGluZy5zZXQodmFsdWUpO1xuICB9XG5cbiAgLy8gQWNjZXNzIHRvIEltYWdlU2VydmljZSBzdGF0ZXMgYXMgcmVhZG9ubHkgc2lnbmFscyBmb3IgVUkgYmluZGluZ1xuICByZWFkb25seSBpc1VwbG9hZGluZyA9IHRoaXMuaW1hZ2VTZXJ2aWNlLmlzVXBsb2FkaW5nLmFzUmVhZG9ubHkoKTtcbiAgcmVhZG9ubHkgdXBsb2FkUHJvZ3Jlc3MgPSB0aGlzLmltYWdlU2VydmljZS51cGxvYWRQcm9ncmVzcy5hc1JlYWRvbmx5KCk7XG4gIHJlYWRvbmx5IHVwbG9hZE1lc3NhZ2UgPSB0aGlzLmltYWdlU2VydmljZS51cGxvYWRNZXNzYWdlLmFzUmVhZG9ubHkoKTtcbiAgc2V0IHVwbG9hZEhhbmRsZXIoaGFuZGxlcjogQXRlSW1hZ2VVcGxvYWRIYW5kbGVyIHwgbnVsbCkge1xuICAgIHRoaXMuaW1hZ2VTZXJ2aWNlLnVwbG9hZEhhbmRsZXIgPSBoYW5kbGVyO1xuICB9XG5cbiAgLyoqIFVwZGF0ZSBzdGF0ZSAoY2FsbGVkIGJ5IFRpcHRhcFN0YXRlRXh0ZW5zaW9uKSAqL1xuICB1cGRhdGVTdGF0ZShzdGF0ZTogQXRlRWRpdG9yU3RhdGVTbmFwc2hvdCkge1xuICAgIHRoaXMuX2VkaXRvclN0YXRlLnNldChzdGF0ZSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBMaW5rIFN0YXRlIChwcm94aWVkIGZyb20gTGlua1NlcnZpY2UpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqIFNpZ25hbCB0byB0b2dnbGUgbGluayBlZGl0IG1vZGUgZnJvbSBVSSAoVG9vbGJhcikgLSBJbW1lZGlhdGUgcmVzcG9uc2UgKi9cbiAgcmVhZG9ubHkgbGlua0VkaXRNb2RlID0gdGhpcy5saW5rU3ZjLmVkaXRNb2RlLmFzUmVhZG9ubHkoKTtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBsaW5rIG1lbnUgKGZvciBhbmNob3JpbmcpICovXG4gIHJlYWRvbmx5IGxpbmtNZW51VHJpZ2dlciA9IHRoaXMubGlua1N2Yy5tZW51VHJpZ2dlci5hc1JlYWRvbmx5KCk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gQ29sb3IgUGlja2VyIFN0YXRlIChwcm94aWVkIGZyb20gQ29sb3JQaWNrZXJTZXJ2aWNlKVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKiBTaWduYWwgdG8gdG9nZ2xlIGNvbG9yIHBpY2tlciBtb2RlIGZyb20gVUkgKHRleHQgb3IgaGlnaGxpZ2h0KSAqL1xuICByZWFkb25seSBjb2xvckVkaXRNb2RlID0gdGhpcy5jb2xvclBpY2tlclN2Yy5lZGl0TW9kZS5hc1JlYWRvbmx5KCk7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgZWxlbWVudCB0aGF0IHRyaWdnZXJlZCB0aGUgY29sb3IgbWVudSAoZm9yIGFuY2hvcmluZykgKi9cbiAgcmVhZG9ubHkgY29sb3JNZW51VHJpZ2dlciA9IHRoaXMuY29sb3JQaWNrZXJTdmMubWVudVRyaWdnZXIuYXNSZWFkb25seSgpO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIExpbmsgRWRpdCBNZXRob2RzIChkZWxlZ2F0ZWQgdG8gTGlua1NlcnZpY2UpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gQ29tbWFuZCBFeGVjdXRpb25cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKiogR2VuZXJpYyBtZXRob2QgdG8gZXhlY3V0ZSBhbnkgY29tbWFuZCBieSBuYW1lICovXG4gIGV4ZWN1dGUoZWRpdG9yOiBFZGl0b3IsIGNvbW1hbmQ6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGNvbW1hbmQpIHtcbiAgICAgIGNhc2UgXCJ0b2dnbGVCb2xkXCI6XG4gICAgICAgIHRoaXMudG9nZ2xlQm9sZChlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0b2dnbGVJdGFsaWNcIjpcbiAgICAgICAgdGhpcy50b2dnbGVJdGFsaWMoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlU3RyaWtlXCI6XG4gICAgICAgIHRoaXMudG9nZ2xlU3RyaWtlKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZUNvZGVcIjpcbiAgICAgICAgdGhpcy50b2dnbGVDb2RlKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZUNvZGVCbG9ja1wiOlxuICAgICAgICB0aGlzLnRvZ2dsZUNvZGVCbG9jayhlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0b2dnbGVVbmRlcmxpbmVcIjpcbiAgICAgICAgdGhpcy50b2dnbGVVbmRlcmxpbmUoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlU3VwZXJzY3JpcHRcIjpcbiAgICAgICAgdGhpcy50b2dnbGVTdXBlcnNjcmlwdChlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0b2dnbGVTdWJzY3JpcHRcIjpcbiAgICAgICAgdGhpcy50b2dnbGVTdWJzY3JpcHQoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlSGVhZGluZ1wiOlxuICAgICAgICB0aGlzLnRvZ2dsZUhlYWRpbmcoZWRpdG9yLCBhcmdzWzBdIGFzIDEgfCAyIHwgMyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZUJ1bGxldExpc3RcIjpcbiAgICAgICAgdGhpcy50b2dnbGVCdWxsZXRMaXN0KGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZU9yZGVyZWRMaXN0XCI6XG4gICAgICAgIHRoaXMudG9nZ2xlT3JkZXJlZExpc3QoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlQmxvY2txdW90ZVwiOlxuICAgICAgICB0aGlzLnRvZ2dsZUJsb2NrcXVvdGUoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwic2V0VGV4dEFsaWduXCI6XG4gICAgICAgIHRoaXMuc2V0VGV4dEFsaWduKGVkaXRvciwgYXJnc1swXSBhcyBcImxlZnRcIiB8IFwiY2VudGVyXCIgfCBcInJpZ2h0XCIgfCBcImp1c3RpZnlcIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZUxpbmtcIjpcbiAgICAgICAgdGhpcy5saW5rU3ZjLnRvZ2dsZShlZGl0b3IsIGFyZ3NbMF0gYXMgRXZlbnQgfCB1bmRlZmluZWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ1bnNldExpbmtcIjpcbiAgICAgICAgdGhpcy5saW5rU3ZjLnVuc2V0TGluayhlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0b2dnbGVDb2xvclBpY2tlclwiOlxuICAgICAgICB0aGlzLmNvbG9yUGlja2VyU3ZjLnRvZ2dsZShlZGl0b3IsIGFyZ3NbMF0gYXMgXCJ0ZXh0XCIgfCBcImhpZ2hsaWdodFwiLCBhcmdzWzFdIGFzIEV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiaW5zZXJ0SG9yaXpvbnRhbFJ1bGVcIjpcbiAgICAgICAgdGhpcy5pbnNlcnRIb3Jpem9udGFsUnVsZShlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJpbnNlcnRJbWFnZVwiOlxuICAgICAgICB0aGlzLmluc2VydEltYWdlKGVkaXRvciwgYXJnc1swXSBhcyBBdGVJbWFnZVVwbG9hZE9wdGlvbnMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ1cGxvYWRJbWFnZVwiOlxuICAgICAgICB0aGlzLnVwbG9hZEltYWdlKGVkaXRvciwgYXJnc1swXSBhcyBGaWxlLCBhcmdzWzFdIGFzIEF0ZUltYWdlVXBsb2FkT3B0aW9ucyB8IHVuZGVmaW5lZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZUhpZ2hsaWdodFwiOlxuICAgICAgICB0aGlzLnRvZ2dsZUhpZ2hsaWdodChlZGl0b3IsIGFyZ3NbMF0gYXMgc3RyaW5nKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidW5kb1wiOlxuICAgICAgICB0aGlzLnVuZG8oZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwicmVkb1wiOlxuICAgICAgICB0aGlzLnJlZG8oZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiaW5zZXJ0VGFibGVcIjpcbiAgICAgICAgdGhpcy5pbnNlcnRUYWJsZShlZGl0b3IsIGFyZ3NbMF0gYXMgbnVtYmVyIHwgdW5kZWZpbmVkLCBhcmdzWzFdIGFzIG51bWJlciB8IHVuZGVmaW5lZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImFkZENvbHVtbkJlZm9yZVwiOlxuICAgICAgICB0aGlzLmFkZENvbHVtbkJlZm9yZShlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhZGRDb2x1bW5BZnRlclwiOlxuICAgICAgICB0aGlzLmFkZENvbHVtbkFmdGVyKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImRlbGV0ZUNvbHVtblwiOlxuICAgICAgICB0aGlzLmRlbGV0ZUNvbHVtbihlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhZGRSb3dCZWZvcmVcIjpcbiAgICAgICAgdGhpcy5hZGRSb3dCZWZvcmUoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiYWRkUm93QWZ0ZXJcIjpcbiAgICAgICAgdGhpcy5hZGRSb3dBZnRlcihlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJkZWxldGVSb3dcIjpcbiAgICAgICAgdGhpcy5kZWxldGVSb3coZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZGVsZXRlVGFibGVcIjpcbiAgICAgICAgdGhpcy5kZWxldGVUYWJsZShlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJtZXJnZUNlbGxzXCI6XG4gICAgICAgIHRoaXMubWVyZ2VDZWxscyhlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJzcGxpdENlbGxcIjpcbiAgICAgICAgdGhpcy5zcGxpdENlbGwoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlSGVhZGVyQ29sdW1uXCI6XG4gICAgICAgIHRoaXMudG9nZ2xlSGVhZGVyQ29sdW1uKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZUhlYWRlclJvd1wiOlxuICAgICAgICB0aGlzLnRvZ2dsZUhlYWRlclJvdyhlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhcHBseUNvbG9yXCI6XG4gICAgICAgIHRoaXMuY29sb3JQaWNrZXJTdmMuYXBwbHlDb2xvcihcbiAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgYXJnc1swXSBhcyBzdHJpbmcsXG4gICAgICAgICAgYXJnc1sxXSBhcyBib29sZWFuIHwgdW5kZWZpbmVkLFxuICAgICAgICAgIGFyZ3NbMl0gYXMgYm9vbGVhbiB8IHVuZGVmaW5lZFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhcHBseUhpZ2hsaWdodFwiOlxuICAgICAgICB0aGlzLmNvbG9yUGlja2VyU3ZjLmFwcGx5SGlnaGxpZ2h0KFxuICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICBhcmdzWzBdIGFzIHN0cmluZyxcbiAgICAgICAgICBhcmdzWzFdIGFzIGJvb2xlYW4gfCB1bmRlZmluZWQsXG4gICAgICAgICAgYXJnc1syXSBhcyBib29sZWFuIHwgdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInVuc2V0Q29sb3JcIjpcbiAgICAgICAgdGhpcy5jb2xvclBpY2tlclN2Yy51bnNldENvbG9yKGVkaXRvciwgYXJnc1swXSBhcyBib29sZWFuKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidW5zZXRIaWdobGlnaHRcIjpcbiAgICAgICAgdGhpcy5jb2xvclBpY2tlclN2Yy51bnNldEhpZ2hsaWdodChlZGl0b3IsIGFyZ3NbMF0gYXMgYm9vbGVhbik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiY2xlYXJDb250ZW50XCI6XG4gICAgICAgIHRoaXMuY2xlYXJDb250ZW50KGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiZXhwb3J0QXNcIjpcbiAgICAgICAgdm9pZCB0aGlzLmV4cG9ydEFzKFxuICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICBhcmdzWzBdIGFzIEF0ZUV4cG9ydEZvcm1hdCxcbiAgICAgICAgICBhcmdzWzFdIGFzIFwiY2xpcGJvYXJkXCIgfCBcImRvd25sb2FkXCIsXG4gICAgICAgICAgYXJnc1syXSBhcyBBdGVFeHBvcnRPcHRpb25zIHwgdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vIC0tLSBGb3JtYXR0aW5nIENvbW1hbmRzIC0tLVxuXG4gIHRvZ2dsZUJvbGQoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUJvbGQoKS5ydW4oKTtcbiAgfVxuXG4gIHRvZ2dsZUl0YWxpYyhlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlSXRhbGljKCkucnVuKCk7XG4gIH1cblxuICB0b2dnbGVTdHJpa2UoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZVN0cmlrZSgpLnJ1bigpO1xuICB9XG5cbiAgdG9nZ2xlQ29kZShlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlQ29kZSgpLnJ1bigpO1xuICB9XG5cbiAgdG9nZ2xlQ29kZUJsb2NrKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVDb2RlQmxvY2soKS5ydW4oKTtcbiAgfVxuXG4gIHRvZ2dsZVVuZGVybGluZShlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlVW5kZXJsaW5lKCkucnVuKCk7XG4gIH1cblxuICB0b2dnbGVTdXBlcnNjcmlwdChlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlU3VwZXJzY3JpcHQoKS5ydW4oKTtcbiAgfVxuXG4gIHRvZ2dsZVN1YnNjcmlwdChlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlU3Vic2NyaXB0KCkucnVuKCk7XG4gIH1cblxuICB0b2dnbGVIZWFkaW5nKGVkaXRvcjogRWRpdG9yLCBsZXZlbDogMSB8IDIgfCAzKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVIZWFkaW5nKHsgbGV2ZWwgfSkucnVuKCk7XG4gIH1cblxuICB0b2dnbGVIaWdobGlnaHQoZWRpdG9yOiBFZGl0b3IsIGNvbG9yPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGNvbG9yKSB7XG4gICAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnNldEhpZ2hsaWdodCh7IGNvbG9yIH0pLnJ1bigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUhpZ2hsaWdodCgpLnJ1bigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIC0tLSBTdHJ1Y3R1cmUgQ29tbWFuZHMgLS0tXG5cbiAgdG9nZ2xlQnVsbGV0TGlzdChlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlQnVsbGV0TGlzdCgpLnJ1bigpO1xuICB9XG5cbiAgdG9nZ2xlT3JkZXJlZExpc3QoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZU9yZGVyZWRMaXN0KCkucnVuKCk7XG4gIH1cblxuICB0b2dnbGVCbG9ja3F1b3RlKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVCbG9ja3F1b3RlKCkucnVuKCk7XG4gIH1cblxuICBzZXRUZXh0QWxpZ24oZWRpdG9yOiBFZGl0b3IsIGFsaWdubWVudDogXCJsZWZ0XCIgfCBcImNlbnRlclwiIHwgXCJyaWdodFwiIHwgXCJqdXN0aWZ5XCIpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnNldFRleHRBbGlnbihhbGlnbm1lbnQpLnJ1bigpO1xuICB9XG5cbiAgaW5zZXJ0SG9yaXpvbnRhbFJ1bGUoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnNldEhvcml6b250YWxSdWxlKCkucnVuKCk7XG4gIH1cblxuICAvLyAtLS0gSGlzdG9yeSBDb21tYW5kcyAtLS1cblxuICB1bmRvKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS51bmRvKCkucnVuKCk7XG4gIH1cblxuICByZWRvKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5yZWRvKCkucnVuKCk7XG4gIH1cblxuICAvLyAtLS0gVGFibGUgQ29tbWFuZHMgLS0tXG5cbiAgaW5zZXJ0VGFibGUoZWRpdG9yOiBFZGl0b3IsIHJvd3MgPSAzLCBjb2xzID0gMyk6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkuaW5zZXJ0VGFibGUoeyByb3dzLCBjb2xzIH0pLnJ1bigpO1xuICB9XG5cbiAgYWRkQ29sdW1uQmVmb3JlKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5hZGRDb2x1bW5CZWZvcmUoKS5ydW4oKTtcbiAgfVxuXG4gIGFkZENvbHVtbkFmdGVyKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5hZGRDb2x1bW5BZnRlcigpLnJ1bigpO1xuICB9XG5cbiAgZGVsZXRlQ29sdW1uKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5kZWxldGVDb2x1bW4oKS5ydW4oKTtcbiAgfVxuXG4gIGFkZFJvd0JlZm9yZShlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkuYWRkUm93QmVmb3JlKCkucnVuKCk7XG4gIH1cblxuICBhZGRSb3dBZnRlcihlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkuYWRkUm93QWZ0ZXIoKS5ydW4oKTtcbiAgfVxuXG4gIGRlbGV0ZVJvdyhlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkuZGVsZXRlUm93KCkucnVuKCk7XG4gIH1cblxuICBkZWxldGVUYWJsZShlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkuZGVsZXRlVGFibGUoKS5ydW4oKTtcbiAgfVxuXG4gIG1lcmdlQ2VsbHMoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLm1lcmdlQ2VsbHMoKS5ydW4oKTtcbiAgfVxuXG4gIHNwbGl0Q2VsbChlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkuc3BsaXRDZWxsKCkucnVuKCk7XG4gIH1cblxuICB0b2dnbGVIZWFkZXJDb2x1bW4oZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUhlYWRlckNvbHVtbigpLnJ1bigpO1xuICB9XG5cbiAgdG9nZ2xlSGVhZGVyUm93KGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVIZWFkZXJSb3coKS5ydW4oKTtcbiAgfVxuXG4gIC8vIC0tLSBVdGlsaXR5IENvbW1hbmRzIC0tLVxuXG4gIGNsZWFyQ29udGVudChlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jb21tYW5kcy5jbGVhckNvbnRlbnQodHJ1ZSk7XG4gIH1cblxuICAvLyAtLS0gRXhwb3J0IENvbW1hbmRzIC0tLVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBlZGl0b3IgY29udGVudCBpbiB0aGUgZ2l2ZW4gZm9ybWF0LlxuICAgKiBAcGFyYW0gZm9ybWF0ICdodG1sJyB8ICdtYXJrZG93bicgfCAndGV4dCdcbiAgICovXG4gIGdldENvbnRlbnQoZWRpdG9yOiBFZGl0b3IsIGZvcm1hdDogQXRlRXhwb3J0Rm9ybWF0KTogc3RyaW5nIHtcbiAgICBpZiAoIWVkaXRvcikge3JldHVybiBcIlwiO31cbiAgICByZXR1cm4gdGhpcy5leHBvcnRTdmMuZ2V0Q29udGVudChlZGl0b3IsIGZvcm1hdCk7XG4gIH1cblxuICAvKipcbiAgICogRXhwb3J0cyB0aGUgZWRpdG9yIGNvbnRlbnQuXG4gICAqIEBwYXJhbSBmb3JtYXQgICdodG1sJyB8ICdtYXJrZG93bicgfCAndGV4dCdcbiAgICogQHBhcmFtIG1ldGhvZCAgJ2NsaXBib2FyZCcgfCAnZG93bmxvYWQnXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGZpbGVuYW1lIGZvciBkb3dubG9hZFxuICAgKi9cbiAgYXN5bmMgZXhwb3J0QXMoXG4gICAgZWRpdG9yOiBFZGl0b3IsXG4gICAgZm9ybWF0OiBBdGVFeHBvcnRGb3JtYXQsXG4gICAgbWV0aG9kOiBcImNsaXBib2FyZFwiIHwgXCJkb3dubG9hZFwiLFxuICAgIG9wdGlvbnM/OiBBdGVFeHBvcnRPcHRpb25zXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghZWRpdG9yKSB7cmV0dXJuO31cbiAgICBpZiAobWV0aG9kID09PSBcImNsaXBib2FyZFwiKSB7XG4gICAgICBhd2FpdCB0aGlzLmV4cG9ydFN2Yy5leHBvcnRUb0NsaXBib2FyZChlZGl0b3IsIGZvcm1hdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXhwb3J0U3ZjLmV4cG9ydFRvRmlsZShlZGl0b3IsIGZvcm1hdCwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgZm9jdXMoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnJ1bigpO1xuICB9XG5cbiAgYmx1cihlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmJsdXIoKS5ydW4oKTtcbiAgfVxuXG4gIHNldENvbnRlbnQoZWRpdG9yOiBFZGl0b3IsIGNvbnRlbnQ6IHN0cmluZywgZW1pdFVwZGF0ZSA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY29tbWFuZHMuc2V0Q29udGVudChjb250ZW50LCB7IGVtaXRVcGRhdGUgfSk7XG4gIH1cblxuICBzZXRFZGl0YWJsZShlZGl0b3I6IEVkaXRvciwgZWRpdGFibGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3Iuc2V0RWRpdGFibGUoZWRpdGFibGUpO1xuICB9XG5cbiAgaW5zZXJ0Q29udGVudChlZGl0b3I6IEVkaXRvciwgY29udGVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5pbnNlcnRDb250ZW50KGNvbnRlbnQpLnJ1bigpO1xuICB9XG5cbiAgYXN5bmMgaW5zZXJ0SW1hZ2UoZWRpdG9yOiBFZGl0b3IsIG9wdGlvbnM/OiBBdGVJbWFnZVVwbG9hZE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5pbWFnZVNlcnZpY2Uuc2VsZWN0QW5kVXBsb2FkSW1hZ2UoZWRpdG9yLCBvcHRpb25zKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGluc2VydGluZyBpbWFnZTpcIiwgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdXBsb2FkSW1hZ2UoZWRpdG9yOiBFZGl0b3IsIGZpbGU6IEZpbGUsIG9wdGlvbnM/OiBBdGVJbWFnZVVwbG9hZE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5pbWFnZVNlcnZpY2UudXBsb2FkQW5kSW5zZXJ0SW1hZ2UoZWRpdG9yLCBmaWxlLCBvcHRpb25zKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHVwbG9hZGluZyBpbWFnZTpcIiwgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgZG93bmxvYWRJbWFnZShlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIHRoaXMuaW1hZ2VTZXJ2aWNlLmRvd25sb2FkSW1hZ2UoZWRpdG9yKTtcbiAgfVxuXG4gIGhhbmRsZUltYWdlRHJvcChlZGl0b3I6IEVkaXRvciwgZXZlbnQ6IERyYWdFdmVudCwgb3B0aW9ucz86IEF0ZUltYWdlVXBsb2FkT3B0aW9ucyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmltYWdlU2VydmljZS5oYW5kbGVEcm9wKGVkaXRvciwgZXZlbnQsIG9wdGlvbnMpO1xuICB9XG5cbiAgaGFuZGxlSW1hZ2VQYXN0ZShlZGl0b3I6IEVkaXRvciwgZXZlbnQ6IENsaXBib2FyZEV2ZW50LCBvcHRpb25zPzogQXRlSW1hZ2VVcGxvYWRPcHRpb25zKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW1hZ2VTZXJ2aWNlLmhhbmRsZVBhc3RlKGVkaXRvciwgZXZlbnQsIG9wdGlvbnMpO1xuICB9XG59XG4iXX0=
510
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRlLWVkaXRvci1jb21tYW5kcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10aXB0YXAtZWRpdG9yL3NyYy9saWIvc2VydmljZXMvYXRlLWVkaXRvci1jb21tYW5kcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBcUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRixPQUFPLEVBQTBCLHdCQUF3QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBUXBHLE1BQU0sT0FBTyx3QkFBd0I7SUFEckM7UUFFVSxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2QyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQy9DLFlBQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVCLGlCQUFZLEdBQUcsTUFBTSxDQUF5Qix3QkFBd0IsRUFBRTtZQUN2RixLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2QsNkJBQTZCO2dCQUM3QixJQUFJLENBQUMsQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDakUsT0FBTyxLQUFLLENBQUM7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QUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0MsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBYyxFQUFFLElBQVUsRUFBRSxPQUErQjtRQUMzRSxJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0MsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFjO1FBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBYyxFQUFFLEtBQWdCLEVBQUUsT0FBK0I7UUFDL0UsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxnQkFBZ0IsQ0FDZCxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsT0FBK0I7UUFFL0IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELENBQUM7K0dBM2tCVSx3QkFBd0I7bUhBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEVkaXRvciB9IGZyb20gXCJAdGlwdGFwL2NvcmVcIjtcbmltcG9ydCB7IEF0ZUltYWdlU2VydmljZSB9IGZyb20gXCIuL2F0ZS1pbWFnZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBdGVDb2xvclBpY2tlclNlcnZpY2UgfSBmcm9tIFwiLi9hdGUtY29sb3ItcGlja2VyLnNlcnZpY2VcIjtcbmltcG9ydCB7IEF0ZUxpbmtTZXJ2aWNlIH0gZnJvbSBcIi4vYXRlLWxpbmsuc2VydmljZVwiO1xuaW1wb3J0IHsgQXRlRXhwb3J0U2VydmljZSwgQXRlRXhwb3J0Rm9ybWF0LCBBdGVFeHBvcnRPcHRpb25zIH0gZnJvbSBcIi4vYXRlLWV4cG9ydC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBdGVFZGl0b3JTdGF0ZVNuYXBzaG90LCBBVEVfSU5JVElBTF9FRElUT1JfU1RBVEUgfSBmcm9tIFwiLi4vbW9kZWxzL2F0ZS1lZGl0b3Itc3RhdGUubW9kZWxcIjtcbmltcG9ydCB7XG4gIEF0ZUltYWdlVXBsb2FkSGFuZGxlcixcbiAgQXRlSW1hZ2VVcGxvYWRPcHRpb25zLFxuICBBdGVJbWFnZVVwbG9hZFJlc3VsdCxcbn0gZnJvbSBcIi4uL21vZGVscy9hdGUtaW1hZ2UubW9kZWxcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF0ZUVkaXRvckNvbW1hbmRzU2VydmljZSB7XG4gIHByaXZhdGUgaW1hZ2VTZXJ2aWNlID0gaW5qZWN0KEF0ZUltYWdlU2VydmljZSk7XG4gIHByaXZhdGUgY29sb3JQaWNrZXJTdmMgPSBpbmplY3QoQXRlQ29sb3JQaWNrZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBsaW5rU3ZjID0gaW5qZWN0KEF0ZUxpbmtTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBleHBvcnRTdmMgPSBpbmplY3QoQXRlRXhwb3J0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRvclN0YXRlID0gc2lnbmFsPEF0ZUVkaXRvclN0YXRlU25hcHNob3Q+KEFURV9JTklUSUFMX0VESVRPUl9TVEFURSwge1xuICAgIGVxdWFsOiAoYSwgYikgPT4ge1xuICAgICAgLy8gMS4gUHJpbWl0aXZlIGdsb2JhbCBzdGF0ZXNcbiAgICAgIGlmIChhLmlzRm9jdXNlZCAhPT0gYi5pc0ZvY3VzZWQgfHwgYS5pc0VkaXRhYmxlICE9PSBiLmlzRWRpdGFibGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyAyLiBEZXRhaWxlZCBzZWxlY3Rpb24gY29tcGFyaXNvblxuICAgICAgaWYgKFxuICAgICAgICBhLnNlbGVjdGlvbi5mcm9tICE9PSBiLnNlbGVjdGlvbi5mcm9tIHx8XG4gICAgICAgIGEuc2VsZWN0aW9uLnRvICE9PSBiLnNlbGVjdGlvbi50byB8fFxuICAgICAgICBhLnNlbGVjdGlvbi50eXBlICE9PSBiLnNlbGVjdGlvbi50eXBlIHx8XG4gICAgICAgIGEuc2VsZWN0aW9uLmVtcHR5ICE9PSBiLnNlbGVjdGlvbi5lbXB0eSB8fFxuICAgICAgICBhLnNlbGVjdGlvbi5pc1NpbmdsZUNlbGwgIT09IGIuc2VsZWN0aW9uLmlzU2luZ2xlQ2VsbFxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gSGVscGVyIGZvciBvYmplY3QgY29tcGFyaXNvblxuICAgICAgY29uc3QgaXNSZWNvcmRFcXVhbCA9IChvYmpBOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgb2JqQjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHtcbiAgICAgICAgY29uc3Qga2V5c0EgPSBPYmplY3Qua2V5cyhvYmpBKTtcbiAgICAgICAgY29uc3Qga2V5c0IgPSBPYmplY3Qua2V5cyhvYmpCKTtcbiAgICAgICAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBrZXlzQS5ldmVyeShrZXkgPT4gb2JqQVtrZXldID09PSBvYmpCW2tleV0pO1xuICAgICAgfTtcblxuICAgICAgLy8gMy4gQ29tcGFyZSBzdWItc3RhdGVzIChtYXJrcywgY2FuLCBub2RlcylcbiAgICAgIGlmICghaXNSZWNvcmRFcXVhbChhLm1hcmtzLCBiLm1hcmtzKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoIWlzUmVjb3JkRXF1YWwoYS5jYW4sIGIuY2FuKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoIWlzUmVjb3JkRXF1YWwoYS5ub2RlcywgYi5ub2RlcykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyA0LiBDb21wYXJlIGN1c3RvbSBleHRlbnNpb24gc3RhdGVzXG4gICAgICBpZiAoIWlzUmVjb3JkRXF1YWwoYS5jdXN0b20sIGIuY3VzdG9tKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gIH0pO1xuXG4gIC8qKiBFeHBvc2VkIGVkaXRvciBzdGF0ZSBhcyBhIHJlYWRvbmx5IHNpZ25hbCAqL1xuICByZWFkb25seSBlZGl0b3JTdGF0ZSA9IHRoaXMuX2VkaXRvclN0YXRlLmFzUmVhZG9ubHkoKTtcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBUb29sYmFyIEludGVyYWN0aW9uIFN0YXRlXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqIFNpZ25hbCB0byB0cmFjayB3aGVuIHRoZSB0b29sYmFyIGlzIGJlaW5nIGhvdmVyZWQvaW50ZXJhY3RlZCB3aXRoICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzVG9vbGJhckludGVyYWN0aW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaXNUb29sYmFySW50ZXJhY3RpbmcgPSB0aGlzLl9pc1Rvb2xiYXJJbnRlcmFjdGluZy5hc1JlYWRvbmx5KCk7XG5cbiAgLyoqIFNldCB0b29sYmFyIGludGVyYWN0aW9uIHN0YXRlIChjYWxsZWQgYnkgZWRpdG9yIGNvbXBvbmVudCkgKi9cbiAgc2V0VG9vbGJhckludGVyYWN0aW5nKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5faXNUb29sYmFySW50ZXJhY3Rpbmcuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIC8vIEFjY2VzcyB0byBJbWFnZVNlcnZpY2Ugc3RhdGVzIGFzIHJlYWRvbmx5IHNpZ25hbHMgZm9yIFVJIGJpbmRpbmdcbiAgcmVhZG9ubHkgaXNVcGxvYWRpbmcgPSB0aGlzLmltYWdlU2VydmljZS5pc1VwbG9hZGluZy5hc1JlYWRvbmx5KCk7XG4gIHJlYWRvbmx5IHVwbG9hZFByb2dyZXNzID0gdGhpcy5pbWFnZVNlcnZpY2UudXBsb2FkUHJvZ3Jlc3MuYXNSZWFkb25seSgpO1xuICByZWFkb25seSB1cGxvYWRNZXNzYWdlID0gdGhpcy5pbWFnZVNlcnZpY2UudXBsb2FkTWVzc2FnZS5hc1JlYWRvbmx5KCk7XG5cbiAgc2V0IG9uSW1hZ2VVcGxvYWRlZChjYWxsYmFjazogKChyZXN1bHQ6IEF0ZUltYWdlVXBsb2FkUmVzdWx0KSA9PiB2b2lkKSB8IG51bGwpIHtcbiAgICB0aGlzLmltYWdlU2VydmljZS5vbkltYWdlVXBsb2FkZWRDYWxsYmFjayA9IGNhbGxiYWNrIHx8IHVuZGVmaW5lZDtcbiAgfVxuICBzZXQgdXBsb2FkSGFuZGxlcihoYW5kbGVyOiBBdGVJbWFnZVVwbG9hZEhhbmRsZXIgfCBudWxsKSB7XG4gICAgdGhpcy5pbWFnZVNlcnZpY2UudXBsb2FkSGFuZGxlciA9IGhhbmRsZXI7XG4gIH1cblxuICAvKiogVXBkYXRlIHN0YXRlIChjYWxsZWQgYnkgVGlwdGFwU3RhdGVFeHRlbnNpb24pICovXG4gIHVwZGF0ZVN0YXRlKHN0YXRlOiBBdGVFZGl0b3JTdGF0ZVNuYXBzaG90KSB7XG4gICAgdGhpcy5fZWRpdG9yU3RhdGUuc2V0KHN0YXRlKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIExpbmsgU3RhdGUgKHByb3hpZWQgZnJvbSBMaW5rU2VydmljZSlcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKiogU2lnbmFsIHRvIHRvZ2dsZSBsaW5rIGVkaXQgbW9kZSBmcm9tIFVJIChUb29sYmFyKSAtIEltbWVkaWF0ZSByZXNwb25zZSAqL1xuICByZWFkb25seSBsaW5rRWRpdE1vZGUgPSB0aGlzLmxpbmtTdmMuZWRpdE1vZGUuYXNSZWFkb25seSgpO1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGxpbmsgbWVudSAoZm9yIGFuY2hvcmluZykgKi9cbiAgcmVhZG9ubHkgbGlua01lbnVUcmlnZ2VyID0gdGhpcy5saW5rU3ZjLm1lbnVUcmlnZ2VyLmFzUmVhZG9ubHkoKTtcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDb2xvciBQaWNrZXIgU3RhdGUgKHByb3hpZWQgZnJvbSBDb2xvclBpY2tlclNlcnZpY2UpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqIFNpZ25hbCB0byB0b2dnbGUgY29sb3IgcGlja2VyIG1vZGUgZnJvbSBVSSAodGV4dCBvciBoaWdobGlnaHQpICovXG4gIHJlYWRvbmx5IGNvbG9yRWRpdE1vZGUgPSB0aGlzLmNvbG9yUGlja2VyU3ZjLmVkaXRNb2RlLmFzUmVhZG9ubHkoKTtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBjb2xvciBtZW51IChmb3IgYW5jaG9yaW5nKSAqL1xuICByZWFkb25seSBjb2xvck1lbnVUcmlnZ2VyID0gdGhpcy5jb2xvclBpY2tlclN2Yy5tZW51VHJpZ2dlci5hc1JlYWRvbmx5KCk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTGluayBFZGl0IE1ldGhvZHMgKGRlbGVnYXRlZCB0byBMaW5rU2VydmljZSlcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBDb21tYW5kIEV4ZWN1dGlvblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKiBHZW5lcmljIG1ldGhvZCB0byBleGVjdXRlIGFueSBjb21tYW5kIGJ5IG5hbWUgKi9cbiAgZXhlY3V0ZShlZGl0b3I6IEVkaXRvciwgY29tbWFuZDogc3RyaW5nLCAuLi5hcmdzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXRjaCAoY29tbWFuZCkge1xuICAgICAgY2FzZSBcInRvZ2dsZUJvbGRcIjpcbiAgICAgICAgdGhpcy50b2dnbGVCb2xkKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZUl0YWxpY1wiOlxuICAgICAgICB0aGlzLnRvZ2dsZUl0YWxpYyhlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0b2dnbGVTdHJpa2VcIjpcbiAgICAgICAgdGhpcy50b2dnbGVTdHJpa2UoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlQ29kZVwiOlxuICAgICAgICB0aGlzLnRvZ2dsZUNvZGUoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlQ29kZUJsb2NrXCI6XG4gICAgICAgIHRoaXMudG9nZ2xlQ29kZUJsb2NrKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZVVuZGVybGluZVwiOlxuICAgICAgICB0aGlzLnRvZ2dsZVVuZGVybGluZShlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0b2dnbGVTdXBlcnNjcmlwdFwiOlxuICAgICAgICB0aGlzLnRvZ2dsZVN1cGVyc2NyaXB0KGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZVN1YnNjcmlwdFwiOlxuICAgICAgICB0aGlzLnRvZ2dsZVN1YnNjcmlwdChlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0b2dnbGVIZWFkaW5nXCI6XG4gICAgICAgIHRoaXMudG9nZ2xlSGVhZGluZyhlZGl0b3IsIGFyZ3NbMF0gYXMgMSB8IDIgfCAzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlQnVsbGV0TGlzdFwiOlxuICAgICAgICB0aGlzLnRvZ2dsZUJ1bGxldExpc3QoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlT3JkZXJlZExpc3RcIjpcbiAgICAgICAgdGhpcy50b2dnbGVPcmRlcmVkTGlzdChlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0b2dnbGVCbG9ja3F1b3RlXCI6XG4gICAgICAgIHRoaXMudG9nZ2xlQmxvY2txdW90ZShlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJzZXRUZXh0QWxpZ25cIjpcbiAgICAgICAgdGhpcy5zZXRUZXh0QWxpZ24oZWRpdG9yLCBhcmdzWzBdIGFzIFwibGVmdFwiIHwgXCJjZW50ZXJcIiB8IFwicmlnaHRcIiB8IFwianVzdGlmeVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlTGlua1wiOlxuICAgICAgICB0aGlzLmxpbmtTdmMudG9nZ2xlKGVkaXRvciwgYXJnc1swXSBhcyBFdmVudCB8IHVuZGVmaW5lZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInVuc2V0TGlua1wiOlxuICAgICAgICB0aGlzLmxpbmtTdmMudW5zZXRMaW5rKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRvZ2dsZUNvbG9yUGlja2VyXCI6XG4gICAgICAgIHRoaXMuY29sb3JQaWNrZXJTdmMudG9nZ2xlKGVkaXRvciwgYXJnc1swXSBhcyBcInRleHRcIiB8IFwiaGlnaGxpZ2h0XCIsIGFyZ3NbMV0gYXMgRXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJpbnNlcnRIb3Jpem9udGFsUnVsZVwiOlxuICAgICAgICB0aGlzLmluc2VydEhvcml6b250YWxSdWxlKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImluc2VydEltYWdlXCI6XG4gICAgICAgIHRoaXMuaW5zZXJ0SW1hZ2UoZWRpdG9yLCBhcmdzWzBdIGFzIEF0ZUltYWdlVXBsb2FkT3B0aW9ucyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInVwbG9hZEltYWdlXCI6XG4gICAgICAgIHRoaXMudXBsb2FkSW1hZ2UoZWRpdG9yLCBhcmdzWzBdIGFzIEZpbGUsIGFyZ3NbMV0gYXMgQXRlSW1hZ2VVcGxvYWRPcHRpb25zIHwgdW5kZWZpbmVkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlSGlnaGxpZ2h0XCI6XG4gICAgICAgIHRoaXMudG9nZ2xlSGlnaGxpZ2h0KGVkaXRvciwgYXJnc1swXSBhcyBzdHJpbmcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ1bmRvXCI6XG4gICAgICAgIHRoaXMudW5kbyhlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJyZWRvXCI6XG4gICAgICAgIHRoaXMucmVkbyhlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJpbnNlcnRUYWJsZVwiOlxuICAgICAgICB0aGlzLmluc2VydFRhYmxlKGVkaXRvciwgYXJnc1swXSBhcyBudW1iZXIgfCB1bmRlZmluZWQsIGFyZ3NbMV0gYXMgbnVtYmVyIHwgdW5kZWZpbmVkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiYWRkQ29sdW1uQmVmb3JlXCI6XG4gICAgICAgIHRoaXMuYWRkQ29sdW1uQmVmb3JlKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImFkZENvbHVtbkFmdGVyXCI6XG4gICAgICAgIHRoaXMuYWRkQ29sdW1uQWZ0ZXIoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZGVsZXRlQ29sdW1uXCI6XG4gICAgICAgIHRoaXMuZGVsZXRlQ29sdW1uKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImFkZFJvd0JlZm9yZVwiOlxuICAgICAgICB0aGlzLmFkZFJvd0JlZm9yZShlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJhZGRSb3dBZnRlclwiOlxuICAgICAgICB0aGlzLmFkZFJvd0FmdGVyKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImRlbGV0ZVJvd1wiOlxuICAgICAgICB0aGlzLmRlbGV0ZVJvdyhlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJkZWxldGVUYWJsZVwiOlxuICAgICAgICB0aGlzLmRlbGV0ZVRhYmxlKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIm1lcmdlQ2VsbHNcIjpcbiAgICAgICAgdGhpcy5tZXJnZUNlbGxzKGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInNwbGl0Q2VsbFwiOlxuICAgICAgICB0aGlzLnNwbGl0Q2VsbChlZGl0b3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0b2dnbGVIZWFkZXJDb2x1bW5cIjpcbiAgICAgICAgdGhpcy50b2dnbGVIZWFkZXJDb2x1bW4oZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidG9nZ2xlSGVhZGVyUm93XCI6XG4gICAgICAgIHRoaXMudG9nZ2xlSGVhZGVyUm93KGVkaXRvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImFwcGx5Q29sb3JcIjpcbiAgICAgICAgdGhpcy5jb2xvclBpY2tlclN2Yy5hcHBseUNvbG9yKFxuICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICBhcmdzWzBdIGFzIHN0cmluZyxcbiAgICAgICAgICBhcmdzWzFdIGFzIGJvb2xlYW4gfCB1bmRlZmluZWQsXG4gICAgICAgICAgYXJnc1syXSBhcyBib29sZWFuIHwgdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImFwcGx5SGlnaGxpZ2h0XCI6XG4gICAgICAgIHRoaXMuY29sb3JQaWNrZXJTdmMuYXBwbHlIaWdobGlnaHQoXG4gICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgIGFyZ3NbMF0gYXMgc3RyaW5nLFxuICAgICAgICAgIGFyZ3NbMV0gYXMgYm9vbGVhbiB8IHVuZGVmaW5lZCxcbiAgICAgICAgICBhcmdzWzJdIGFzIGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidW5zZXRDb2xvclwiOlxuICAgICAgICB0aGlzLmNvbG9yUGlja2VyU3ZjLnVuc2V0Q29sb3IoZWRpdG9yLCBhcmdzWzBdIGFzIGJvb2xlYW4pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ1bnNldEhpZ2hsaWdodFwiOlxuICAgICAgICB0aGlzLmNvbG9yUGlja2VyU3ZjLnVuc2V0SGlnaGxpZ2h0KGVkaXRvciwgYXJnc1swXSBhcyBib29sZWFuKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJjbGVhckNvbnRlbnRcIjpcbiAgICAgICAgdGhpcy5jbGVhckNvbnRlbnQoZWRpdG9yKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJleHBvcnRBc1wiOlxuICAgICAgICB2b2lkIHRoaXMuZXhwb3J0QXMoXG4gICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgIGFyZ3NbMF0gYXMgQXRlRXhwb3J0Rm9ybWF0LFxuICAgICAgICAgIGFyZ3NbMV0gYXMgXCJjbGlwYm9hcmRcIiB8IFwiZG93bmxvYWRcIixcbiAgICAgICAgICBhcmdzWzJdIGFzIEF0ZUV4cG9ydE9wdGlvbnMgfCB1bmRlZmluZWRcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLy8gLS0tIEZvcm1hdHRpbmcgQ29tbWFuZHMgLS0tXG5cbiAgdG9nZ2xlQm9sZChlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlQm9sZCgpLnJ1bigpO1xuICB9XG5cbiAgdG9nZ2xlSXRhbGljKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVJdGFsaWMoKS5ydW4oKTtcbiAgfVxuXG4gIHRvZ2dsZVN0cmlrZShlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlU3RyaWtlKCkucnVuKCk7XG4gIH1cblxuICB0b2dnbGVDb2RlKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVDb2RlKCkucnVuKCk7XG4gIH1cblxuICB0b2dnbGVDb2RlQmxvY2soZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUNvZGVCbG9jaygpLnJ1bigpO1xuICB9XG5cbiAgdG9nZ2xlVW5kZXJsaW5lKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVVbmRlcmxpbmUoKS5ydW4oKTtcbiAgfVxuXG4gIHRvZ2dsZVN1cGVyc2NyaXB0KGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVTdXBlcnNjcmlwdCgpLnJ1bigpO1xuICB9XG5cbiAgdG9nZ2xlU3Vic2NyaXB0KGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVTdWJzY3JpcHQoKS5ydW4oKTtcbiAgfVxuXG4gIHRvZ2dsZUhlYWRpbmcoZWRpdG9yOiBFZGl0b3IsIGxldmVsOiAxIHwgMiB8IDMpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUhlYWRpbmcoeyBsZXZlbCB9KS5ydW4oKTtcbiAgfVxuXG4gIHRvZ2dsZUhpZ2hsaWdodChlZGl0b3I6IEVkaXRvciwgY29sb3I/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY29sb3IpIHtcbiAgICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkuc2V0SGlnaGxpZ2h0KHsgY29sb3IgfSkucnVuKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlSGlnaGxpZ2h0KCkucnVuKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gLS0tIFN0cnVjdHVyZSBDb21tYW5kcyAtLS1cblxuICB0b2dnbGVCdWxsZXRMaXN0KGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS50b2dnbGVCdWxsZXRMaXN0KCkucnVuKCk7XG4gIH1cblxuICB0b2dnbGVPcmRlcmVkTGlzdChlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlT3JkZXJlZExpc3QoKS5ydW4oKTtcbiAgfVxuXG4gIHRvZ2dsZUJsb2NrcXVvdGUoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUJsb2NrcXVvdGUoKS5ydW4oKTtcbiAgfVxuXG4gIHNldFRleHRBbGlnbihlZGl0b3I6IEVkaXRvciwgYWxpZ25tZW50OiBcImxlZnRcIiB8IFwiY2VudGVyXCIgfCBcInJpZ2h0XCIgfCBcImp1c3RpZnlcIik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkuc2V0VGV4dEFsaWduKGFsaWdubWVudCkucnVuKCk7XG4gIH1cblxuICBpbnNlcnRIb3Jpem9udGFsUnVsZShlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkuc2V0SG9yaXpvbnRhbFJ1bGUoKS5ydW4oKTtcbiAgfVxuXG4gIC8vIC0tLSBIaXN0b3J5IENvbW1hbmRzIC0tLVxuXG4gIHVuZG8oZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnVuZG8oKS5ydW4oKTtcbiAgfVxuXG4gIHJlZG8oZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnJlZG8oKS5ydW4oKTtcbiAgfVxuXG4gIC8vIC0tLSBUYWJsZSBDb21tYW5kcyAtLS1cblxuICBpbnNlcnRUYWJsZShlZGl0b3I6IEVkaXRvciwgcm93cyA9IDMsIGNvbHMgPSAzKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5pbnNlcnRUYWJsZSh7IHJvd3MsIGNvbHMgfSkucnVuKCk7XG4gIH1cblxuICBhZGRDb2x1bW5CZWZvcmUoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLmFkZENvbHVtbkJlZm9yZSgpLnJ1bigpO1xuICB9XG5cbiAgYWRkQ29sdW1uQWZ0ZXIoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLmFkZENvbHVtbkFmdGVyKCkucnVuKCk7XG4gIH1cblxuICBkZWxldGVDb2x1bW4oZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLmRlbGV0ZUNvbHVtbigpLnJ1bigpO1xuICB9XG5cbiAgYWRkUm93QmVmb3JlKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5hZGRSb3dCZWZvcmUoKS5ydW4oKTtcbiAgfVxuXG4gIGFkZFJvd0FmdGVyKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5hZGRSb3dBZnRlcigpLnJ1bigpO1xuICB9XG5cbiAgZGVsZXRlUm93KGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5kZWxldGVSb3coKS5ydW4oKTtcbiAgfVxuXG4gIGRlbGV0ZVRhYmxlKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5kZWxldGVUYWJsZSgpLnJ1bigpO1xuICB9XG5cbiAgbWVyZ2VDZWxscyhlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkubWVyZ2VDZWxscygpLnJ1bigpO1xuICB9XG5cbiAgc3BsaXRDZWxsKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5zcGxpdENlbGwoKS5ydW4oKTtcbiAgfVxuXG4gIHRvZ2dsZUhlYWRlckNvbHVtbihlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmZvY3VzKCkudG9nZ2xlSGVhZGVyQ29sdW1uKCkucnVuKCk7XG4gIH1cblxuICB0b2dnbGVIZWFkZXJSb3coZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnRvZ2dsZUhlYWRlclJvdygpLnJ1bigpO1xuICB9XG5cbiAgLy8gLS0tIFV0aWxpdHkgQ29tbWFuZHMgLS0tXG5cbiAgY2xlYXJDb250ZW50KGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNvbW1hbmRzLmNsZWFyQ29udGVudCh0cnVlKTtcbiAgfVxuXG4gIC8vIC0tLSBFeHBvcnQgQ29tbWFuZHMgLS0tXG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGVkaXRvciBjb250ZW50IGluIHRoZSBnaXZlbiBmb3JtYXQuXG4gICAqIEBwYXJhbSBmb3JtYXQgJ2h0bWwnIHwgJ21hcmtkb3duJyB8ICd0ZXh0J1xuICAgKi9cbiAgZ2V0Q29udGVudChlZGl0b3I6IEVkaXRvciwgZm9ybWF0OiBBdGVFeHBvcnRGb3JtYXQpOiBzdHJpbmcge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZXhwb3J0U3ZjLmdldENvbnRlbnQoZWRpdG9yLCBmb3JtYXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydHMgdGhlIGVkaXRvciBjb250ZW50LlxuICAgKiBAcGFyYW0gZm9ybWF0ICAnaHRtbCcgfCAnbWFya2Rvd24nIHwgJ3RleHQnXG4gICAqIEBwYXJhbSBtZXRob2QgICdjbGlwYm9hcmQnIHwgJ2Rvd25sb2FkJ1xuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBmaWxlbmFtZSBmb3IgZG93bmxvYWRcbiAgICovXG4gIGFzeW5jIGV4cG9ydEFzKFxuICAgIGVkaXRvcjogRWRpdG9yLFxuICAgIGZvcm1hdDogQXRlRXhwb3J0Rm9ybWF0LFxuICAgIG1ldGhvZDogXCJjbGlwYm9hcmRcIiB8IFwiZG93bmxvYWRcIixcbiAgICBvcHRpb25zPzogQXRlRXhwb3J0T3B0aW9uc1xuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobWV0aG9kID09PSBcImNsaXBib2FyZFwiKSB7XG4gICAgICBhd2FpdCB0aGlzLmV4cG9ydFN2Yy5leHBvcnRUb0NsaXBib2FyZChlZGl0b3IsIGZvcm1hdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXhwb3J0U3ZjLmV4cG9ydFRvRmlsZShlZGl0b3IsIGZvcm1hdCwgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgZm9jdXMoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY2hhaW4oKS5mb2N1cygpLnJ1bigpO1xuICB9XG5cbiAgYmx1cihlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVkaXRvci5jaGFpbigpLmJsdXIoKS5ydW4oKTtcbiAgfVxuXG4gIHNldENvbnRlbnQoZWRpdG9yOiBFZGl0b3IsIGNvbnRlbnQ6IHN0cmluZywgZW1pdFVwZGF0ZSA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3IuY29tbWFuZHMuc2V0Q29udGVudChjb250ZW50LCB7IGVtaXRVcGRhdGUgfSk7XG4gIH1cblxuICBzZXRFZGl0YWJsZShlZGl0b3I6IEVkaXRvciwgZWRpdGFibGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIWVkaXRvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlZGl0b3Iuc2V0RWRpdGFibGUoZWRpdGFibGUpO1xuICB9XG5cbiAgaW5zZXJ0Q29udGVudChlZGl0b3I6IEVkaXRvciwgY29udGVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWRpdG9yLmNoYWluKCkuZm9jdXMoKS5pbnNlcnRDb250ZW50KGNvbnRlbnQpLnJ1bigpO1xuICB9XG5cbiAgYXN5bmMgaW5zZXJ0SW1hZ2UoZWRpdG9yOiBFZGl0b3IsIG9wdGlvbnM/OiBBdGVJbWFnZVVwbG9hZE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5pbWFnZVNlcnZpY2Uuc2VsZWN0QW5kVXBsb2FkSW1hZ2UoZWRpdG9yLCBvcHRpb25zKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGluc2VydGluZyBpbWFnZTpcIiwgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdXBsb2FkSW1hZ2UoZWRpdG9yOiBFZGl0b3IsIGZpbGU6IEZpbGUsIG9wdGlvbnM/OiBBdGVJbWFnZVVwbG9hZE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5pbWFnZVNlcnZpY2UudXBsb2FkQW5kSW5zZXJ0SW1hZ2UoZWRpdG9yLCBmaWxlLCBvcHRpb25zKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHVwbG9hZGluZyBpbWFnZTpcIiwgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgZG93bmxvYWRJbWFnZShlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgIHRoaXMuaW1hZ2VTZXJ2aWNlLmRvd25sb2FkSW1hZ2UoZWRpdG9yKTtcbiAgfVxuXG4gIGhhbmRsZUltYWdlRHJvcChlZGl0b3I6IEVkaXRvciwgZXZlbnQ6IERyYWdFdmVudCwgb3B0aW9ucz86IEF0ZUltYWdlVXBsb2FkT3B0aW9ucyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmltYWdlU2VydmljZS5oYW5kbGVEcm9wKGVkaXRvciwgZXZlbnQsIG9wdGlvbnMpO1xuICB9XG5cbiAgaGFuZGxlSW1hZ2VQYXN0ZShcbiAgICBlZGl0b3I6IEVkaXRvcixcbiAgICBldmVudDogQ2xpcGJvYXJkRXZlbnQsXG4gICAgb3B0aW9ucz86IEF0ZUltYWdlVXBsb2FkT3B0aW9uc1xuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbWFnZVNlcnZpY2UuaGFuZGxlUGFzdGUoZWRpdG9yLCBldmVudCwgb3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==