@copilotkitnext/angular 1.51.4-next.6 → 1.51.4-next.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +43 -39
  2. package/dist/README.md +43 -39
  3. package/dist/esm2022/lib/agent-context.mjs +2 -2
  4. package/dist/esm2022/lib/agent.mjs +1 -1
  5. package/dist/esm2022/lib/chat-config.mjs +1 -1
  6. package/dist/esm2022/lib/chat-state.mjs +1 -1
  7. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-buttons.mjs +1 -1
  8. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-renderer.mjs +1 -1
  9. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message-toolbar.mjs +1 -1
  10. package/dist/esm2022/lib/components/chat/copilot-chat-assistant-message.mjs +1 -1
  11. package/dist/esm2022/lib/components/chat/copilot-chat-audio-recorder.mjs +1 -1
  12. package/dist/esm2022/lib/components/chat/copilot-chat-buttons.mjs +1 -1
  13. package/dist/esm2022/lib/components/chat/copilot-chat-input.mjs +1 -1
  14. package/dist/esm2022/lib/components/chat/copilot-chat-message-view-cursor.mjs +1 -1
  15. package/dist/esm2022/lib/components/chat/copilot-chat-message-view.mjs +1 -1
  16. package/dist/esm2022/lib/components/chat/copilot-chat-textarea.mjs +1 -1
  17. package/dist/esm2022/lib/components/chat/copilot-chat-tools-menu.mjs +1 -1
  18. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-branch-navigation.mjs +26 -6
  19. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-buttons.mjs +1 -1
  20. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-renderer.mjs +1 -1
  21. package/dist/esm2022/lib/components/chat/copilot-chat-user-message-toolbar.mjs +1 -1
  22. package/dist/esm2022/lib/components/chat/copilot-chat-user-message.mjs +29 -9
  23. package/dist/esm2022/lib/components/chat/copilot-chat-user-message.types.mjs +1 -1
  24. package/dist/esm2022/lib/components/chat/copilot-chat-view-disclaimer.mjs +1 -1
  25. package/dist/esm2022/lib/components/chat/copilot-chat-view-feather.mjs +1 -1
  26. package/dist/esm2022/lib/components/chat/copilot-chat-view-input-container.mjs +1 -1
  27. package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-to-bottom-button.mjs +1 -1
  28. package/dist/esm2022/lib/components/chat/copilot-chat-view-scroll-view.mjs +1 -1
  29. package/dist/esm2022/lib/components/chat/copilot-chat-view.mjs +1 -1
  30. package/dist/esm2022/lib/components/chat/copilot-chat.mjs +20 -23
  31. package/dist/esm2022/lib/config.mjs +1 -1
  32. package/dist/esm2022/lib/copilotkit.mjs +18 -8
  33. package/dist/esm2022/lib/directives/stick-to-bottom.mjs +1 -1
  34. package/dist/esm2022/lib/human-in-the-loop.mjs +1 -1
  35. package/dist/esm2022/lib/render-tool-calls.mjs +40 -11
  36. package/dist/esm2022/lib/resize-observer.mjs +1 -1
  37. package/dist/esm2022/lib/scroll-position.mjs +2 -3
  38. package/dist/esm2022/lib/slots/copilot-slot.mjs +1 -1
  39. package/dist/esm2022/lib/slots/slot.utils.mjs +1 -1
  40. package/dist/esm2022/lib/tools.mjs +3 -3
  41. package/dist/fesm2022/copilotkitnext-angular.mjs +128 -54
  42. package/dist/fesm2022/copilotkitnext-angular.mjs.map +1 -1
  43. package/dist/lib/components/chat/copilot-chat.d.ts +1 -0
  44. package/package.json +5 -6
@@ -257,4 +257,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
257
257
  type: ViewChild,
258
258
  args: ["markdownContainer", { static: false }]
259
259
  }] } });
260
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sVUFBVSxFQUVWLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLElBQUksTUFBTSxjQUFjLENBQUM7QUFDaEMsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBNklyRCxNQUFNLE9BQU8sbUNBQW1DO0lBQ3JDLE9BQU8sR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDNUIsVUFBVSxHQUFHLEtBQUssRUFBc0IsQ0FBQztJQUN6QyxNQUFNLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUdyQyxpQkFBaUIsQ0FBOEI7SUFFdkMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV4QyxvRUFBb0U7SUFDNUQsVUFBVSxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO0lBRXZDLFlBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ3BDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN0QyxNQUFNLGlCQUFpQixHQUFHLHVCQUF1QixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hELENBQUMsQ0FBQyxDQUFDO0lBRUg7UUFDRSx5Q0FBeUM7UUFDekMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLHVDQUF1QztZQUN2QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZix5Q0FBeUM7WUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4QiwrQkFBK0I7WUFDL0IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM3QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtZQUFFLE9BQU87UUFDcEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQztRQUN2RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDakMsU0FBUyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVPLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQUMxQyxjQUFjLEdBQWtCLElBQUksQ0FBQztJQUVyQyxnQkFBZ0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU87UUFFaEMsNENBQTRDO1FBQzVDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFFcEQsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUVuQywyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7WUFDN0IsR0FBRyxFQUFFLElBQUk7WUFDVCxNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUMsQ0FBQztRQUVILG9FQUFvRTtRQUNwRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztZQUN0QixVQUFVLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDekIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO29CQUMxQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO29CQUMzQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFFOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDOUMsNENBQTRDO29CQUM1QyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBRXpDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsb0NBQW9DLENBQUM7b0JBRW5FLDhCQUE4QjtvQkFDOUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7b0JBQzdELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQ2hFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7b0JBRTFELHdEQUF3RDtvQkFDeEQsTUFBTSxRQUFRLEdBQUc7OztrQkFHVCxJQUFJLENBQUMsQ0FBQyxDQUFDLHFDQUFxQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBZTs7O3dDQUdyRCxPQUFPO2dDQUNmLFNBQVM7OzBCQUVmLFNBQVM7OztrQ0FHRCxTQUFTLEtBQUssV0FBVzs7V0FFaEQsQ0FBQztvQkFFRiw2QkFBNkI7b0JBQzdCLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBRXpDLGdFQUFnRTtvQkFDaEUsS0FBSyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7b0JBQ3BCLEtBQUssQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO2dCQUN4QixDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxjQUFjLENBQUMsT0FBZTtRQUNwQyx3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFM0IsaUJBQWlCO1FBQ2pCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBVyxDQUFDO1FBRXpELHlCQUF5QjtRQUN6QixJQUFJLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLG9CQUFvQixDQUFDLElBQVk7UUFDdkMsZ0dBQWdHO1FBQ2hHLE1BQU0sVUFBVSxHQUFhLEVBQUUsQ0FBQztRQUNoQyxNQUFNLFdBQVcsR0FBRyw0QkFBNEIsQ0FBQztRQUVqRCxrREFBa0Q7UUFDbEQsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsb0NBQW9DLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNsRSxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ2hDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsT0FBTyxHQUFHLFdBQVcsR0FBRyxLQUFLLEtBQUssQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztRQUVILDJCQUEyQjtRQUMzQixNQUFNLFVBQVUsR0FBYSxFQUFFLENBQUM7UUFDaEMsTUFBTSxpQkFBaUIsR0FBRyw2QkFBNkIsQ0FBQztRQUN4RCxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3ZELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDaEMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QixPQUFPLEdBQUcsaUJBQWlCLEdBQUcsS0FBSyxLQUFLLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7UUFFSCxpQ0FBaUM7UUFDakMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDN0QsSUFBSSxDQUFDO2dCQUNILE9BQU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUU7b0JBQ3BDLFdBQVcsRUFBRSxJQUFJO29CQUNqQixZQUFZLEVBQUUsS0FBSztpQkFDcEIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILDhCQUE4QjtRQUM5QixJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDdEQsSUFBSSxDQUFDO2dCQUNILE9BQU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUU7b0JBQ3BDLFdBQVcsRUFBRSxLQUFLO29CQUNsQixZQUFZLEVBQUUsS0FBSztpQkFDcEIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILHNCQUFzQjtRQUN0QixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2xDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsV0FBVyxHQUFHLEtBQUssS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO1FBRUgsc0JBQXNCO1FBQ3RCLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDakMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxpQkFBaUIsR0FBRyxLQUFLLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtZQUFFLE9BQU87UUFFcEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQztRQUV2RCw2Q0FBNkM7UUFDN0MsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDckUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQy9CLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDdkQsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsS0FBSyxNQUFNLENBQUM7WUFFcEUsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixJQUFJLENBQUM7b0JBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBc0IsRUFBRTt3QkFDN0MsV0FBVzt3QkFDWCxZQUFZLEVBQUUsS0FBSztxQkFDcEIsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztvQkFDZixPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUMxRCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFpQjtRQUMzQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQztRQUUzQyxrREFBa0Q7UUFDbEQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FDL0IseUJBQXlCLENBQ0wsQ0FBQztRQUN2QixJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUU5RCxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLG9EQUFvRDtnQkFDcEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzdDLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3BDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxhQUFhLENBQUMsT0FBZSxFQUFFLElBQVk7UUFDakQsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUN0QyxHQUFHLEVBQUU7WUFDSCwrQkFBK0I7WUFDL0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUN4RCx3QkFBd0IsT0FBTyxJQUFJLENBQ3BDLENBQUM7WUFDRixJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7Z0JBQ3RDLE1BQU0sQ0FBQyxTQUFTLEdBQUc7O29CQUVULElBQUksQ0FBQyxNQUFNLENBQUMsMENBQTBDO1dBQy9ELENBQUM7Z0JBQ0YsTUFBTSxDQUFDLFlBQVksQ0FDakIsWUFBWSxFQUNaLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQywwQ0FBMEMsT0FBTyxDQUNqRSxDQUFDO2dCQUVGLHdCQUF3QjtnQkFDeEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxNQUFNLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQztvQkFDaEMsTUFBTSxDQUFDLFlBQVksQ0FDakIsWUFBWSxFQUNaLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQ0FBb0MsT0FBTyxDQUMzRCxDQUFDO2dCQUNKLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNYLENBQUM7UUFDSCxDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRU8sZUFBZSxDQUFDLElBQVk7UUFDbEMsaURBQWlEO1FBQ2pELElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNiLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztZQUNqQyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLDRCQUE0QjtRQUNsRCxDQUFDO1FBQ0QsT0FBTyxjQUFjLElBQUksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTyxVQUFVLENBQUMsSUFBWTtRQUM3QixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQztJQUN2QixDQUFDO3dHQXRSVSxtQ0FBbUM7NEZBQW5DLG1DQUFtQyw0ZUFySXBDOzs7Ozs7R0FNVCxpeUVBVFMsWUFBWSw4QkFBRSxtQkFBbUI7OzRGQXdJaEMsbUNBQW1DO2tCQTNJL0MsU0FBUztpQ0FDSSxJQUFJLFlBQ04seUNBQXlDLFdBQzFDLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDLG1CQUMzQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFlBQzNCOzs7Ozs7R0FNVDt3REFxSUQsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgaW5wdXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBFbGVtZW50UmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBNYXJrZWQgfSBmcm9tIFwibWFya2VkXCI7XG5pbXBvcnQgaGxqcyBmcm9tIFwiaGlnaGxpZ2h0LmpzXCI7XG5pbXBvcnQgKiBhcyBrYXRleCBmcm9tIFwia2F0ZXhcIjtcbmltcG9ydCB7IGNvbXBsZXRlUGFydGlhbE1hcmtkb3duIH0gZnJvbSBcIkBjb3BpbG90a2l0bmV4dC9jb3JlXCI7XG5pbXBvcnQgeyBMdWNpZGVBbmd1bGFyTW9kdWxlIH0gZnJvbSBcImx1Y2lkZS1hbmd1bGFyXCI7XG5pbXBvcnQgeyBpbmplY3RDaGF0TGFiZWxzIH0gZnJvbSBcIi4uLy4uL2NoYXQtY29uZmlnXCI7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogXCJjb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtcmVuZGVyZXJcIixcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTHVjaWRlQW5ndWxhck1vZHVsZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgICNtYXJrZG93bkNvbnRhaW5lclxuICAgICAgW2NsYXNzXT1cImlucHV0Q2xhc3MoKVwiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50KVwiXG4gICAgPjwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICBjb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtcmVuZGVyZXIge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC8qIElubGluZSBjb2RlIHN0eWxpbmcgKi9cbiAgICAgIGNvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1yZW5kZXJlciBjb2RlOm5vdChwcmUgY29kZSkge1xuICAgICAgICBwYWRkaW5nOiAyLjVweCA0LjhweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzNiwgMjM2LCAyMzYpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBmb250LWZhbWlseTpcbiAgICAgICAgICB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBcIlNGIE1vbm9cIiwgQ29uc29sYXMsIFwiTGliZXJhdGlvbiBNb25vXCIsXG4gICAgICAgICAgTWVubG8sIG1vbm9zcGFjZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6ICMwMDAwMDA7XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIGNvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1yZW5kZXJlciBjb2RlOm5vdChwcmUgY29kZSkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxNzE3OyAvKiBzYW1lIGFzIGNvZGUgYmxvY2tzICovXG4gICAgICAgIGNvbG9yOiByZ2IoMjQ4LCAyNTAsIDI1Mik7IC8qIHRleHQtZm9yZWdyb3VuZCBpbiBkYXJrIG1vZGUgKi9cbiAgICAgIH1cblxuICAgICAgLyogQ29kZSBibG9jayBjb250YWluZXIgKi9cbiAgICAgIGNvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1yZW5kZXJlciAuY29kZS1ibG9jay1jb250YWluZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1hcmdpbjogMC4yNXJlbSAwO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ5LCAyNDksIDI0OSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIGNvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1yZW5kZXJlciAuY29kZS1ibG9jay1jb250YWluZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxNzE3O1xuICAgICAgfVxuXG4gICAgICBjb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtcmVuZGVyZXIgLmNvZGUtYmxvY2staGVhZGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBwYWRkaW5nOiAwLjc1cmVtIDFyZW0gMC43NXJlbSAxcmVtO1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuXG4gICAgICBjb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtcmVuZGVyZXIgLmNvZGUtYmxvY2stbGFuZ3VhZ2Uge1xuICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICBjb2xvcjogcmdiYSgxMTUsIDExNSwgMTE1LCAxKTtcbiAgICAgIH1cblxuICAgICAgLmRhcmsgY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyIC5jb2RlLWJsb2NrLWxhbmd1YWdlIHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgfVxuXG4gICAgICBjb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtcmVuZGVyZXIgLmNvZGUtYmxvY2stY29weS1idXR0b24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuMTI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwIDAuNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBjb2xvcjogcmdiYSgxMTUsIDExNSwgMTE1LCAxKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycztcbiAgICAgIH1cblxuICAgICAgLmRhcmsgY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyIC5jb2RlLWJsb2NrLWNvcHktYnV0dG9uIHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgfVxuXG4gICAgICBjb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtcmVuZGVyZXIgLmNvZGUtYmxvY2stY29weS1idXR0b246aG92ZXIge1xuICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICB9XG5cbiAgICAgIGNvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1yZW5kZXJlciAuY29kZS1ibG9jay1jb3B5LWJ1dHRvbiBzdmcge1xuICAgICAgICB3aWR0aDogMTBweDtcbiAgICAgICAgaGVpZ2h0OiAxMHB4O1xuICAgICAgfVxuXG4gICAgICBjb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtcmVuZGVyZXIgLmNvZGUtYmxvY2stY29weS1idXR0b24gc3BhbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICAgIH1cblxuICAgICAgY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyIHByZSB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtIDFyZW0gMXJlbTtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIGNvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1yZW5kZXJlciBwcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyIHByZSBjb2RlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGZvbnQtZmFtaWx5OlxuICAgICAgICAgIHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIFwiU0YgTW9ub1wiLCBDb25zb2xhcywgXCJMaWJlcmF0aW9uIE1vbm9cIixcbiAgICAgICAgICBNZW5sbywgbW9ub3NwYWNlO1xuICAgICAgfVxuXG4gICAgICAvKiBIaWdobGlnaHQuanMgdGhlbWUgYWRqdXN0bWVudHMgKi9cbiAgICAgIGNvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1yZW5kZXJlciAuaGxqcyB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogcmdiKDU2LCA1OCwgNjYpO1xuICAgICAgfVxuXG4gICAgICAuZGFyayBjb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtcmVuZGVyZXIgLmhsanMge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgY29sb3I6ICNhYmIyYmY7XG4gICAgICB9XG5cbiAgICAgIC8qIE1hdGggZXF1YXRpb25zICovXG4gICAgICBjb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtcmVuZGVyZXIgLmthdGV4LWRpc3BsYXkge1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gICAgICAgIHBhZGRpbmc6IDFyZW0gMDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VSZW5kZXJlciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICByZWFkb25seSBjb250ZW50ID0gaW5wdXQ8c3RyaW5nPihcIlwiKTtcbiAgcmVhZG9ubHkgaW5wdXRDbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgbGFiZWxzID0gaW5qZWN0Q2hhdExhYmVscygpO1xuXG4gIEBWaWV3Q2hpbGQoXCJtYXJrZG93bkNvbnRhaW5lclwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgbWFya2Rvd25Db250YWluZXI/OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgLy8gVHJhY2sgY29weSBzdGF0ZXMgZm9yIGNvZGUgYmxvY2tzIChET00tdXBkYXRlZDsgbm8gc2lnbmFsIG5lZWRlZClcbiAgcHJpdmF0ZSBjb3B5U3RhdGVzID0gbmV3IE1hcDxzdHJpbmcsIGJvb2xlYW4+KCk7XG5cbiAgcmVhZG9ubHkgcmVuZGVyZWRIdG1sID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRDb250ZW50ID0gdGhpcy5jb250ZW50KCk7XG4gICAgY29uc3QgY29tcGxldGVkTWFya2Rvd24gPSBjb21wbGV0ZVBhcnRpYWxNYXJrZG93bihjdXJyZW50Q29udGVudCk7XG4gICAgcmV0dXJuIHRoaXMucmVuZGVyTWFya2Rvd24oY29tcGxldGVkTWFya2Rvd24pO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBSZWFjdCB0byBjb250ZW50IGNoYW5nZXMgdXNpbmcgc2lnbmFsc1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAvLyBSZWFkIGNvbnRlbnQgdG8gZXN0YWJsaXNoIGRlcGVuZGVuY3lcbiAgICAgIHRoaXMuY29udGVudCgpO1xuICAgICAgLy8gUmVzZXQgY29weSBzdGF0ZXMgd2hlbiBjb250ZW50IGNoYW5nZXNcbiAgICAgIHRoaXMuY29weVN0YXRlcy5jbGVhcigpO1xuICAgICAgLy8gSWYgdmlldyBpcyByZWFkeSwgdXBkYXRlIERPTVxuICAgICAgaWYgKHRoaXMubWFya2Rvd25Db250YWluZXIpIHtcbiAgICAgICAgdGhpcy51cGRhdGVDb250ZW50KCk7XG4gICAgICAgIHRoaXMucmVuZGVyTWF0aEVxdWF0aW9ucygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xuICAgIHRoaXMucmVuZGVyTWF0aEVxdWF0aW9ucygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb250ZW50KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5tYXJrZG93bkNvbnRhaW5lcikgcmV0dXJuO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMubWFya2Rvd25Db250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBodG1sID0gdGhpcy5yZW5kZXJlZEh0bWwoKTtcbiAgICBjb250YWluZXIuaW5uZXJIVE1MID0gaHRtbDtcbiAgfVxuXG4gIHByaXZhdGUgY29kZUJsb2Nrc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIHByaXZhdGUgbWFya2VkSW5zdGFuY2U6IE1hcmtlZCB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZU1hcmtlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tYXJrZWRJbnN0YW5jZSkgcmV0dXJuO1xuXG4gICAgLy8gU3RvcmUgaGlnaGxpZ2h0ZWQgY29kZSBibG9ja3MgdGVtcG9yYXJpbHlcbiAgICBjb25zdCBoaWdobGlnaHRlZEJsb2NrcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgICAvLyBDcmVhdGUgYSBuZXcgTWFya2VkIGluc3RhbmNlXG4gICAgdGhpcy5tYXJrZWRJbnN0YW5jZSA9IG5ldyBNYXJrZWQoKTtcblxuICAgIC8vIENvbmZpZ3VyZSBtYXJrZWQgb3B0aW9uc1xuICAgIHRoaXMubWFya2VkSW5zdGFuY2Uuc2V0T3B0aW9ucyh7XG4gICAgICBnZm06IHRydWUsXG4gICAgICBicmVha3M6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYSB3YWxrVG9rZW5zIGZ1bmN0aW9uIHRvIHByb2Nlc3MgY29kZSB0b2tlbnMgYmVmb3JlIHJlbmRlcmluZ1xuICAgIHRoaXMubWFya2VkSW5zdGFuY2UudXNlKHtcbiAgICAgIHdhbGtUb2tlbnM6ICh0b2tlbjogYW55KSA9PiB7XG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBcImNvZGVcIikge1xuICAgICAgICAgIGNvbnN0IHJhd0NvZGUgPSB0b2tlbi50ZXh0O1xuICAgICAgICAgIGNvbnN0IGxhbmcgPSB0b2tlbi5sYW5nIHx8IFwiXCI7XG5cbiAgICAgICAgICBjb25zdCBibG9ja0lkID0gdGhpcy5nZW5lcmF0ZUJsb2NrSWQocmF3Q29kZSk7XG4gICAgICAgICAgLy8gU3RvcmUgdGhlIHJhdyBjb2RlIGluIG91ciBtYXAgZm9yIGNvcHlpbmdcbiAgICAgICAgICB0aGlzLmNvZGVCbG9ja3NNYXAuc2V0KGJsb2NrSWQsIHJhd0NvZGUpO1xuXG4gICAgICAgICAgY29uc3QgY29weUxhYmVsID0gdGhpcy5sYWJlbHMuYXNzaXN0YW50TWVzc2FnZVRvb2xiYXJDb3B5Q29kZUxhYmVsO1xuXG4gICAgICAgICAgLy8gTWFudWFsbHkgaGlnaGxpZ2h0IHRoZSBjb2RlXG4gICAgICAgICAgY29uc3QgbGFuZ3VhZ2UgPSBobGpzLmdldExhbmd1YWdlKGxhbmcpID8gbGFuZyA6IFwicGxhaW50ZXh0XCI7XG4gICAgICAgICAgY29uc3QgaGlnaGxpZ2h0ZWQgPSBobGpzLmhpZ2hsaWdodChyYXdDb2RlLCB7IGxhbmd1YWdlIH0pLnZhbHVlO1xuICAgICAgICAgIGNvbnN0IGNvZGVDbGFzcyA9IGxhbmcgPyBgaGxqcyBsYW5ndWFnZS0ke2xhbmd9YCA6IFwiaGxqc1wiO1xuXG4gICAgICAgICAgLy8gQ3JlYXRlIHRoZSBmdWxsIEhUTUwgd2l0aCBoZWFkZXIgYW5kIGhpZ2hsaWdodGVkIGNvZGVcbiAgICAgICAgICBjb25zdCBmdWxsSHRtbCA9IGBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2RlLWJsb2NrLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29kZS1ibG9jay1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAke2xhbmcgPyBgPHNwYW4gY2xhc3M9XCJjb2RlLWJsb2NrLWxhbmd1YWdlXCI+JHtsYW5nfTwvc3Bhbj5gIDogXCI8c3Bhbj48L3NwYW4+XCJ9XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29kZS1ibG9jay1jb3B5LWJ1dHRvblwiIFxuICAgICAgICAgICAgICAgICAgZGF0YS1jb2RlLWJsb2NrLWlkPVwiJHtibG9ja0lkfVwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiJHtjb3B5TGFiZWx9IGNvZGVcIj5cbiAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48cmVjdCB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB4PVwiOFwiIHk9XCI4XCIgcng9XCIyXCIgcnk9XCIyXCIvPjxwYXRoIGQ9XCJNNCAxNmMtMS4xMSAwLTItLjktMi0yVjRjMC0xLjExLjg5LTIgMi0yaDEwYzEuMTEgMCAyIC44OSAyIDJcIi8+PC9zdmc+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj4ke2NvcHlMYWJlbH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8cHJlPjxjb2RlIGNsYXNzPVwiJHtjb2RlQ2xhc3N9XCI+JHtoaWdobGlnaHRlZH08L2NvZGU+PC9wcmU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBgO1xuXG4gICAgICAgICAgLy8gU3RvcmUgdGhlIGhpZ2hsaWdodGVkIEhUTUxcbiAgICAgICAgICBoaWdobGlnaHRlZEJsb2Nrcy5zZXQoYmxvY2tJZCwgZnVsbEh0bWwpO1xuXG4gICAgICAgICAgLy8gQ2hhbmdlIHRoZSB0b2tlbiB0byBhbiBodG1sIHRva2VuIHRvIGJ5cGFzcyBtYXJrZWQncyBlc2NhcGluZ1xuICAgICAgICAgIHRva2VuLnR5cGUgPSBcImh0bWxcIjtcbiAgICAgICAgICB0b2tlbi50ZXh0ID0gZnVsbEh0bWw7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlck1hcmtkb3duKGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gSW5pdGlhbGl6ZSBtYXJrZWQgaWYgbm90IGFscmVhZHkgZG9uZVxuICAgIHRoaXMuaW5pdGlhbGl6ZU1hcmtlZCgpO1xuXG4gICAgLy8gQ2xlYXIgdGhlIGNvZGUgYmxvY2tzIG1hcCBmb3IgbmV3IHJlbmRlclxuICAgIHRoaXMuY29kZUJsb2Nrc01hcC5jbGVhcigpO1xuXG4gICAgLy8gUGFyc2UgbWFya2Rvd25cbiAgICBsZXQgaHRtbCA9IHRoaXMubWFya2VkSW5zdGFuY2UhLnBhcnNlKGNvbnRlbnQpIGFzIHN0cmluZztcblxuICAgIC8vIFByb2Nlc3MgbWF0aCBlcXVhdGlvbnNcbiAgICBodG1sID0gdGhpcy5wcm9jZXNzTWF0aEVxdWF0aW9ucyhodG1sKTtcblxuICAgIHJldHVybiBodG1sO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzTWF0aEVxdWF0aW9ucyhodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIEZpcnN0LCB0ZW1wb3JhcmlseSByZXBsYWNlIGNvZGUgYmxvY2tzIHdpdGggcGxhY2Vob2xkZXJzIHRvIHByb3RlY3QgdGhlbSBmcm9tIG1hdGggcHJvY2Vzc2luZ1xuICAgIGNvbnN0IGNvZGVCbG9ja3M6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgcGxhY2Vob2xkZXIgPSBcIl9fX0NPREVfQkxPQ0tfUExBQ0VIT0xERVJfXCI7XG5cbiAgICAvLyBTdG9yZSBjb2RlIGJsb2NrcyBhbmQgcmVwbGFjZSB3aXRoIHBsYWNlaG9sZGVyc1xuICAgIGh0bWwgPSBodG1sLnJlcGxhY2UoLzxwcmU+PGNvZGVbXFxzXFxTXSo/PFxcL2NvZGU+PFxcL3ByZT4vZywgKG1hdGNoKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGNvZGVCbG9ja3MubGVuZ3RoO1xuICAgICAgY29kZUJsb2Nrcy5wdXNoKG1hdGNoKTtcbiAgICAgIHJldHVybiBgJHtwbGFjZWhvbGRlcn0ke2luZGV4fV9fX2A7XG4gICAgfSk7XG5cbiAgICAvLyBBbHNvIHByb3RlY3QgaW5saW5lIGNvZGVcbiAgICBjb25zdCBpbmxpbmVDb2RlOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGlubGluZVBsYWNlaG9sZGVyID0gXCJfX19JTkxJTkVfQ09ERV9QTEFDRUhPTERFUl9cIjtcbiAgICBodG1sID0gaHRtbC5yZXBsYWNlKC88Y29kZT5bXFxzXFxTXSo/PFxcL2NvZGU+L2csIChtYXRjaCkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBpbmxpbmVDb2RlLmxlbmd0aDtcbiAgICAgIGlubGluZUNvZGUucHVzaChtYXRjaCk7XG4gICAgICByZXR1cm4gYCR7aW5saW5lUGxhY2Vob2xkZXJ9JHtpbmRleH1fX19gO1xuICAgIH0pO1xuXG4gICAgLy8gUHJvY2VzcyBkaXNwbGF5IG1hdGggJCQgLi4uICQkXG4gICAgaHRtbCA9IGh0bWwucmVwbGFjZSgvXFwkXFwkKFtcXHNcXFNdKj8pXFwkXFwkL2csIChtYXRjaCwgZXF1YXRpb24pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBrYXRleC5yZW5kZXJUb1N0cmluZyhlcXVhdGlvbiwge1xuICAgICAgICAgIGRpc3BsYXlNb2RlOiB0cnVlLFxuICAgICAgICAgIHRocm93T25FcnJvcjogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFByb2Nlc3MgaW5saW5lIG1hdGggJCAuLi4gJFxuICAgIGh0bWwgPSBodG1sLnJlcGxhY2UoL1xcJChbXiRdKylcXCQvZywgKG1hdGNoLCBlcXVhdGlvbikgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGthdGV4LnJlbmRlclRvU3RyaW5nKGVxdWF0aW9uLCB7XG4gICAgICAgICAgZGlzcGxheU1vZGU6IGZhbHNlLFxuICAgICAgICAgIHRocm93T25FcnJvcjogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFJlc3RvcmUgY29kZSBibG9ja3NcbiAgICBjb2RlQmxvY2tzLmZvckVhY2goKGJsb2NrLCBpbmRleCkgPT4ge1xuICAgICAgaHRtbCA9IGh0bWwucmVwbGFjZShgJHtwbGFjZWhvbGRlcn0ke2luZGV4fV9fX2AsIGJsb2NrKTtcbiAgICB9KTtcblxuICAgIC8vIFJlc3RvcmUgaW5saW5lIGNvZGVcbiAgICBpbmxpbmVDb2RlLmZvckVhY2goKGNvZGUsIGluZGV4KSA9PiB7XG4gICAgICBodG1sID0gaHRtbC5yZXBsYWNlKGAke2lubGluZVBsYWNlaG9sZGVyfSR7aW5kZXh9X19fYCwgY29kZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaHRtbDtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyTWF0aEVxdWF0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubWFya2Rvd25Db250YWluZXIpIHJldHVybjtcblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMubWFya2Rvd25Db250YWluZXIubmF0aXZlRWxlbWVudDtcblxuICAgIC8vIEZpbmQgYWxsIG1hdGggcGxhY2Vob2xkZXJzIGFuZCByZW5kZXIgdGhlbVxuICAgIGNvbnN0IG1hdGhFbGVtZW50cyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKFwiLm1hdGgtcGxhY2Vob2xkZXJcIik7XG4gICAgbWF0aEVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IGVxdWF0aW9uID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWVxdWF0aW9uXCIpO1xuICAgICAgY29uc3QgZGlzcGxheU1vZGUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShcImRhdGEtZGlzcGxheVwiKSA9PT0gXCJ0cnVlXCI7XG5cbiAgICAgIGlmIChlcXVhdGlvbikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGthdGV4LnJlbmRlcihlcXVhdGlvbiwgZWxlbWVudCBhcyBIVE1MRWxlbWVudCwge1xuICAgICAgICAgICAgZGlzcGxheU1vZGUsXG4gICAgICAgICAgICB0aHJvd09uRXJyb3I6IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gcmVuZGVyIG1hdGggZXF1YXRpb246XCIsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAvLyBDaGVjayBpZiBjbGlja2VkIG9uIGNvcHkgYnV0dG9uIG9yIGl0cyBjaGlsZHJlblxuICAgIGNvbnN0IGNvcHlCdXR0b24gPSB0YXJnZXQuY2xvc2VzdChcbiAgICAgIFwiLmNvZGUtYmxvY2stY29weS1idXR0b25cIlxuICAgICkgYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgaWYgKGNvcHlCdXR0b24pIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBjb25zdCBibG9ja0lkID0gY29weUJ1dHRvbi5nZXRBdHRyaWJ1dGUoXCJkYXRhLWNvZGUtYmxvY2staWRcIik7XG5cbiAgICAgIGlmIChibG9ja0lkKSB7XG4gICAgICAgIC8vIEdldCB0aGUgcmF3IGNvZGUgZnJvbSBvdXIgbWFwIGluc3RlYWQgb2YgZnJvbSBET01cbiAgICAgICAgY29uc3QgY29kZSA9IHRoaXMuY29kZUJsb2Nrc01hcC5nZXQoYmxvY2tJZCk7XG4gICAgICAgIGlmIChjb2RlKSB7XG4gICAgICAgICAgdGhpcy5jb3B5Q29kZUJsb2NrKGJsb2NrSWQsIGNvZGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb3B5Q29kZUJsb2NrKGJsb2NrSWQ6IHN0cmluZywgY29kZTogc3RyaW5nKTogdm9pZCB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY29kZSkudGhlbihcbiAgICAgICgpID0+IHtcbiAgICAgICAgLy8gVXBkYXRlIHRoZSBidXR0b24gaW4gdGhlIERPTVxuICAgICAgICBjb25zdCBidXR0b24gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgIGBbZGF0YS1jb2RlLWJsb2NrLWlkPVwiJHtibG9ja0lkfVwiXWBcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGJ1dHRvbikge1xuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSFRNTCA9IGJ1dHRvbi5pbm5lckhUTUw7XG4gICAgICAgICAgYnV0dG9uLmlubmVySFRNTCA9IGBcbiAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48cGF0aCBkPVwiTTIwIDYgOSAxN2wtNS01XCIvPjwvc3ZnPlxuICAgICAgICAgICAgPHNwYW4+JHt0aGlzLmxhYmVscy5hc3Npc3RhbnRNZXNzYWdlVG9vbGJhckNvcHlDb2RlQ29waWVkTGFiZWx9PC9zcGFuPlxuICAgICAgICAgIGA7XG4gICAgICAgICAgYnV0dG9uLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAgIFwiYXJpYS1sYWJlbFwiLFxuICAgICAgICAgICAgYCR7dGhpcy5sYWJlbHMuYXNzaXN0YW50TWVzc2FnZVRvb2xiYXJDb3B5Q29kZUNvcGllZExhYmVsfSBjb2RlYFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyBSZXNldCBhZnRlciAyIHNlY29uZHNcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGJ1dHRvbi5pbm5lckhUTUwgPSBvcmlnaW5hbEhUTUw7XG4gICAgICAgICAgICBidXR0b24uc2V0QXR0cmlidXRlKFxuICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIixcbiAgICAgICAgICAgICAgYCR7dGhpcy5sYWJlbHMuYXNzaXN0YW50TWVzc2FnZVRvb2xiYXJDb3B5Q29kZUxhYmVsfSBjb2RlYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBjb3B5IGNvZGU6XCIsIGVycik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVCbG9ja0lkKGNvZGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gU2ltcGxlIGhhc2ggZnVuY3Rpb24gZm9yIGdlbmVyYXRpbmcgdW5pcXVlIElEc1xuICAgIGxldCBoYXNoID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvZGUubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGNoYXIgPSBjb2RlLmNoYXJDb2RlQXQoaSk7XG4gICAgICBoYXNoID0gKGhhc2ggPDwgNSkgLSBoYXNoICsgY2hhcjtcbiAgICAgIGhhc2ggPSBoYXNoICYgaGFzaDsgLy8gQ29udmVydCB0byAzMi1iaXQgaW50ZWdlclxuICAgIH1cbiAgICByZXR1cm4gYGNvZGUtYmxvY2stJHtoYXNofWA7XG4gIH1cblxuICBwcml2YXRlIGVzY2FwZUh0bWwodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIGRpdi50ZXh0Q29udGVudCA9IHRleHQ7XG4gICAgcmV0dXJuIGRpdi5pbm5lckhUTUw7XG4gIH1cbn1cbiJdfQ==
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sVUFBVSxFQUVWLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLElBQUksTUFBTSxjQUFjLENBQUM7QUFDaEMsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBNklyRCxNQUFNLE9BQU8sbUNBQW1DO0lBQ3JDLE9BQU8sR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDNUIsVUFBVSxHQUFHLEtBQUssRUFBc0IsQ0FBQztJQUN6QyxNQUFNLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUdyQyxpQkFBaUIsQ0FBOEI7SUFFdkMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV4QyxvRUFBb0U7SUFDNUQsVUFBVSxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO0lBRXZDLFlBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ3BDLE1BQU0s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QyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQztJQUN2QixDQUFDO3dHQXRSVSxtQ0FBbUM7NEZBQW5DLG1DQUFtQyw0ZUFySXBDOzs7Ozs7R0FNVCxpeUVBVFMsWUFBWSw4QkFBRSxtQkFBbUI7OzRGQXdJaEMsbUNBQW1DO2tCQTNJL0MsU0FBUztpQ0FDSSxJQUFJLFlBQ04seUNBQXlDLFdBQzFDLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDLG1CQUMzQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFlBQzNCOzs7Ozs7R0FNVDt3REFxSUQsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgaW5wdXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBFbGVtZW50UmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBNYXJrZWQgfSBmcm9tIFwibWFya2VkXCI7XG5pbXBvcnQgaGxqcyBmcm9tIFwiaGlnaGxpZ2h0LmpzXCI7XG5pbXBvcnQgKiBhcyBrYXRleCBmcm9tIFwia2F0ZXhcIjtcbmltcG9ydCB7IGNvbXBsZXRlUGFydGlhbE1hcmtkb3duIH0gZnJvbSBcIkBjb3BpbG90a2l0bmV4dC9jb3JlXCI7XG5pbXBvcnQgeyBMdWNpZGVBbmd1bGFyTW9kdWxlIH0gZnJvbSBcImx1Y2lkZS1hbmd1bGFyXCI7XG5pbXBvcnQgeyBpbmplY3RDaGF0TGFiZWxzIH0gZnJvbSBcIi4uLy4uL2NoYXQtY29uZmlnXCI7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogXCJjb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtcmVuZGVyZXJcIixcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTHVjaWRlQW5ndWxhck1vZHVsZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgICNtYXJrZG93bkNvbnRhaW5lclxuICAgICAgW2NsYXNzXT1cImlucHV0Q2xhc3MoKVwiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlQ2xpY2soJGV2ZW50KVwiXG4gICAgPjwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICBjb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtcmVuZGVyZXIge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC8qIElubGluZSBjb2RlIHN0eWxpbmcgKi9cbiAgICAgIGNvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1yZW5kZXJlciBjb2RlOm5vdChwcmUgY29kZSkge1xuICAgICAgICBwYWRkaW5nOiAyLjVweCA0LjhweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzNiwgMjM2LCAyMzYpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBmb250LWZhbWlseTpcbiAgICAgICAgICB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBcIlNGIE1vbm9cIiwgQ29uc29sYXMsIFwiTGliZXJhdGlvbiBNb25vXCIsXG4gICAgICAgICAgTWVubG8sIG1vbm9zcGFjZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6ICMwMDAwMDA7XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIGNvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1yZW5kZXJlciBjb2RlOm5vdChwcmUgY29kZSkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxNzE3OyAvKiBzYW1lIGFzIGNvZGUgYmxvY2tzICovXG4gICAgICAgIGNvbG9yOiByZ2IoMjQ4LCAyNTAsIDI1Mik7IC8qIHRleHQtZm9yZWdyb3VuZCBpbiBkYXJrIG1vZGUgKi9cbiAgICAgIH1cblxuICAgICAgLyogQ29kZSBibG9jayBjb250YWluZXIgKi9cbiAgICAgIGNvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1yZW5kZXJlciAuY29kZS1ibG9jay1jb250YWluZXIge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1hcmdpbjogMC4yNXJlbSAwO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ5LCAyNDksIDI0OSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIGNvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1yZW5kZXJlciAuY29kZS1ibG9jay1jb250YWluZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTcxNzE3O1xuICAgICAgfVxuXG4gICAgICBjb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtcmVuZGVyZXIgLmNvZGUtYmxvY2staGVhZGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBwYWRkaW5nOiAwLjc1cmVtIDFyZW0gMC43NXJlbSAxcmVtO1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuXG4gICAgICBjb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtcmVuZGVyZXIgLmNvZGUtYmxvY2stbGFuZ3VhZ2Uge1xuICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICBjb2xvcjogcmdiYSgxMTUsIDExNSwgMTE1LCAxKTtcbiAgICAgIH1cblxuICAgICAgLmRhcmsgY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyIC5jb2RlLWJsb2NrLWxhbmd1YWdlIHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgfVxuXG4gICAgICBjb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtcmVuZGVyZXIgLmNvZGUtYmxvY2stY29weS1idXR0b24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuMTI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwIDAuNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBjb2xvcjogcmdiYSgxMTUsIDExNSwgMTE1LCAxKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycztcbiAgICAgIH1cblxuICAgICAgLmRhcmsgY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyIC5jb2RlLWJsb2NrLWNvcHktYnV0dG9uIHtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgfVxuXG4gICAgICBjb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtcmVuZGVyZXIgLmNvZGUtYmxvY2stY29weS1idXR0b246aG92ZXIge1xuICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgICB9XG5cbiAgICAgIGNvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1yZW5kZXJlciAuY29kZS1ibG9jay1jb3B5LWJ1dHRvbiBzdmcge1xuICAgICAgICB3aWR0aDogMTBweDtcbiAgICAgICAgaGVpZ2h0OiAxMHB4O1xuICAgICAgfVxuXG4gICAgICBjb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtcmVuZGVyZXIgLmNvZGUtYmxvY2stY29weS1idXR0b24gc3BhbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICAgIH1cblxuICAgICAgY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyIHByZSB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMCAxcmVtIDFyZW0gMXJlbTtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIGNvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1yZW5kZXJlciBwcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyIHByZSBjb2RlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGZvbnQtZmFtaWx5OlxuICAgICAgICAgIHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIFwiU0YgTW9ub1wiLCBDb25zb2xhcywgXCJMaWJlcmF0aW9uIE1vbm9cIixcbiAgICAgICAgICBNZW5sbywgbW9ub3NwYWNlO1xuICAgICAgfVxuXG4gICAgICAvKiBIaWdobGlnaHQuanMgdGhlbWUgYWRqdXN0bWVudHMgKi9cbiAgICAgIGNvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1yZW5kZXJlciAuaGxqcyB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogcmdiKDU2LCA1OCwgNjYpO1xuICAgICAgfVxuXG4gICAgICAuZGFyayBjb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtcmVuZGVyZXIgLmhsanMge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgY29sb3I6ICNhYmIyYmY7XG4gICAgICB9XG5cbiAgICAgIC8qIE1hdGggZXF1YXRpb25zICovXG4gICAgICBjb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtcmVuZGVyZXIgLmthdGV4LWRpc3BsYXkge1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gICAgICAgIHBhZGRpbmc6IDFyZW0gMDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VSZW5kZXJlciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICByZWFkb25seSBjb250ZW50ID0gaW5wdXQ8c3RyaW5nPihcIlwiKTtcbiAgcmVhZG9ubHkgaW5wdXRDbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgbGFiZWxzID0gaW5qZWN0Q2hhdExhYmVscygpO1xuXG4gIEBWaWV3Q2hpbGQoXCJtYXJrZG93bkNvbnRhaW5lclwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgbWFya2Rvd25Db250YWluZXI/OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgLy8gVHJhY2sgY29weSBzdGF0ZXMgZm9yIGNvZGUgYmxvY2tzIChET00tdXBkYXRlZDsgbm8gc2lnbmFsIG5lZWRlZClcbiAgcHJpdmF0ZSBjb3B5U3RhdGVzID0gbmV3IE1hcDxzdHJpbmcsIGJvb2xlYW4+KCk7XG5cbiAgcmVhZG9ubHkgcmVuZGVyZWRIdG1sID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRDb250ZW50ID0gdGhpcy5jb250ZW50KCk7XG4gICAgY29uc3QgY29tcGxldGVkTWFya2Rvd24gPSBjb21wbGV0ZVBhcnRpYWxNYXJrZG93bihjdXJyZW50Q29udGVudCk7XG4gICAgcmV0dXJuIHRoaXMucmVuZGVyTWFya2Rvd24oY29tcGxldGVkTWFya2Rvd24pO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBSZWFjdCB0byBjb250ZW50IGNoYW5nZXMgdXNpbmcgc2lnbmFsc1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAvLyBSZWFkIGNvbnRlbnQgdG8gZXN0YWJsaXNoIGRlcGVuZGVuY3lcbiAgICAgIHRoaXMuY29udGVudCgpO1xuICAgICAgLy8gUmVzZXQgY29weSBzdGF0ZXMgd2hlbiBjb250ZW50IGNoYW5nZXNcbiAgICAgIHRoaXMuY29weVN0YXRlcy5jbGVhcigpO1xuICAgICAgLy8gSWYgdmlldyBpcyByZWFkeSwgdXBkYXRlIERPTVxuICAgICAgaWYgKHRoaXMubWFya2Rvd25Db250YWluZXIpIHtcbiAgICAgICAgdGhpcy51cGRhdGVDb250ZW50KCk7XG4gICAgICAgIHRoaXMucmVuZGVyTWF0aEVxdWF0aW9ucygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xuICAgIHRoaXMucmVuZGVyTWF0aEVxdWF0aW9ucygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb250ZW50KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5tYXJrZG93bkNvbnRhaW5lcikgcmV0dXJuO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMubWFya2Rvd25Db250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBodG1sID0gdGhpcy5yZW5kZXJlZEh0bWwoKTtcbiAgICBjb250YWluZXIuaW5uZXJIVE1MID0gaHRtbDtcbiAgfVxuXG4gIHByaXZhdGUgY29kZUJsb2Nrc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIHByaXZhdGUgbWFya2VkSW5zdGFuY2U6IE1hcmtlZCB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZU1hcmtlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tYXJrZWRJbnN0YW5jZSkgcmV0dXJuO1xuXG4gICAgLy8gU3RvcmUgaGlnaGxpZ2h0ZWQgY29kZSBibG9ja3MgdGVtcG9yYXJpbHlcbiAgICBjb25zdCBoaWdobGlnaHRlZEJsb2NrcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgICAvLyBDcmVhdGUgYSBuZXcgTWFya2VkIGluc3RhbmNlXG4gICAgdGhpcy5tYXJrZWRJbnN0YW5jZSA9IG5ldyBNYXJrZWQoKTtcblxuICAgIC8vIENvbmZpZ3VyZSBtYXJrZWQgb3B0aW9uc1xuICAgIHRoaXMubWFya2VkSW5zdGFuY2Uuc2V0T3B0aW9ucyh7XG4gICAgICBnZm06IHRydWUsXG4gICAgICBicmVha3M6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYSB3YWxrVG9rZW5zIGZ1bmN0aW9uIHRvIHByb2Nlc3MgY29kZSB0b2tlbnMgYmVmb3JlIHJlbmRlcmluZ1xuICAgIHRoaXMubWFya2VkSW5zdGFuY2UudXNlKHtcbiAgICAgIHdhbGtUb2tlbnM6ICh0b2tlbjogYW55KSA9PiB7XG4gICAgICAgIGlmICh0b2tlbi50eXBlID09PSBcImNvZGVcIikge1xuICAgICAgICAgIGNvbnN0IHJhd0NvZGUgPSB0b2tlbi50ZXh0O1xuICAgICAgICAgIGNvbnN0IGxhbmcgPSB0b2tlbi5sYW5nIHx8IFwiXCI7XG5cbiAgICAgICAgICBjb25zdCBibG9ja0lkID0gdGhpcy5nZW5lcmF0ZUJsb2NrSWQocmF3Q29kZSk7XG4gICAgICAgICAgLy8gU3RvcmUgdGhlIHJhdyBjb2RlIGluIG91ciBtYXAgZm9yIGNvcHlpbmdcbiAgICAgICAgICB0aGlzLmNvZGVCbG9ja3NNYXAuc2V0KGJsb2NrSWQsIHJhd0NvZGUpO1xuXG4gICAgICAgICAgY29uc3QgY29weUxhYmVsID0gdGhpcy5sYWJlbHMuYXNzaXN0YW50TWVzc2FnZVRvb2xiYXJDb3B5Q29kZUxhYmVsO1xuXG4gICAgICAgICAgLy8gTWFudWFsbHkgaGlnaGxpZ2h0IHRoZSBjb2RlXG4gICAgICAgICAgY29uc3QgbGFuZ3VhZ2UgPSBobGpzLmdldExhbmd1YWdlKGxhbmcpID8gbGFuZyA6IFwicGxhaW50ZXh0XCI7XG4gICAgICAgICAgY29uc3QgaGlnaGxpZ2h0ZWQgPSBobGpzLmhpZ2hsaWdodChyYXdDb2RlLCB7IGxhbmd1YWdlIH0pLnZhbHVlO1xuICAgICAgICAgIGNvbnN0IGNvZGVDbGFzcyA9IGxhbmcgPyBgaGxqcyBsYW5ndWFnZS0ke2xhbmd9YCA6IFwiaGxqc1wiO1xuXG4gICAgICAgICAgLy8gQ3JlYXRlIHRoZSBmdWxsIEhUTUwgd2l0aCBoZWFkZXIgYW5kIGhpZ2hsaWdodGVkIGNvZGVcbiAgICAgICAgICBjb25zdCBmdWxsSHRtbCA9IGBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2RlLWJsb2NrLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29kZS1ibG9jay1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAke2xhbmcgPyBgPHNwYW4gY2xhc3M9XCJjb2RlLWJsb2NrLWxhbmd1YWdlXCI+JHtsYW5nfTwvc3Bhbj5gIDogXCI8c3Bhbj48L3NwYW4+XCJ9XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29kZS1ibG9jay1jb3B5LWJ1dHRvblwiIFxuICAgICAgICAgICAgICAgICAgZGF0YS1jb2RlLWJsb2NrLWlkPVwiJHtibG9ja0lkfVwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiJHtjb3B5TGFiZWx9IGNvZGVcIj5cbiAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj48cmVjdCB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB4PVwiOFwiIHk9XCI4XCIgcng9XCIyXCIgcnk9XCIyXCIvPjxwYXRoIGQ9XCJNNCAxNmMtMS4xMSAwLTItLjktMi0yVjRjMC0xLjExLjg5LTIgMi0yaDEwYzEuMTEgMCAyIC44OSAyIDJcIi8+PC9zdmc+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj4ke2NvcHlMYWJlbH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8cHJlPjxjb2RlIGNsYXNzPVwiJHtjb2RlQ2xhc3N9XCI+JHtoaWdobGlnaHRlZH08L2NvZGU+PC9wcmU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBgO1xuXG4gICAgICAgICAgLy8gU3RvcmUgdGhlIGhpZ2hsaWdodGVkIEhUTUxcbiAgICAgICAgICBoaWdobGlnaHRlZEJsb2Nrcy5zZXQoYmxvY2tJZCwgZnVsbEh0bWwpO1xuXG4gICAgICAgICAgLy8gQ2hhbmdlIHRoZSB0b2tlbiB0byBhbiBodG1sIHRva2VuIHRvIGJ5cGFzcyBtYXJrZWQncyBlc2NhcGluZ1xuICAgICAgICAgIHRva2VuLnR5cGUgPSBcImh0bWxcIjtcbiAgICAgICAgICB0b2tlbi50ZXh0ID0gZnVsbEh0bWw7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlck1hcmtkb3duKGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gSW5pdGlhbGl6ZSBtYXJrZWQgaWYgbm90IGFscmVhZHkgZG9uZVxuICAgIHRoaXMuaW5pdGlhbGl6ZU1hcmtlZCgpO1xuXG4gICAgLy8gQ2xlYXIgdGhlIGNvZGUgYmxvY2tzIG1hcCBmb3IgbmV3IHJlbmRlclxuICAgIHRoaXMuY29kZUJsb2Nrc01hcC5jbGVhcigpO1xuXG4gICAgLy8gUGFyc2UgbWFya2Rvd25cbiAgICBsZXQgaHRtbCA9IHRoaXMubWFya2VkSW5zdGFuY2UhLnBhcnNlKGNvbnRlbnQpIGFzIHN0cmluZztcblxuICAgIC8vIFByb2Nlc3MgbWF0aCBlcXVhdGlvbnNcbiAgICBodG1sID0gdGhpcy5wcm9jZXNzTWF0aEVxdWF0aW9ucyhodG1sKTtcblxuICAgIHJldHVybiBodG1sO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzTWF0aEVxdWF0aW9ucyhodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIEZpcnN0LCB0ZW1wb3JhcmlseSByZXBsYWNlIGNvZGUgYmxvY2tzIHdpdGggcGxhY2Vob2xkZXJzIHRvIHByb3RlY3QgdGhlbSBmcm9tIG1hdGggcHJvY2Vzc2luZ1xuICAgIGNvbnN0IGNvZGVCbG9ja3M6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgcGxhY2Vob2xkZXIgPSBcIl9fX0NPREVfQkxPQ0tfUExBQ0VIT0xERVJfXCI7XG5cbiAgICAvLyBTdG9yZSBjb2RlIGJsb2NrcyBhbmQgcmVwbGFjZSB3aXRoIHBsYWNlaG9sZGVyc1xuICAgIGh0bWwgPSBodG1sLnJlcGxhY2UoLzxwcmU+PGNvZGVbXFxzXFxTXSo/PFxcL2NvZGU+PFxcL3ByZT4vZywgKG1hdGNoKSA9PiB7XG4gICAgICBjb25zdCBpbmRleCA9IGNvZGVCbG9ja3MubGVuZ3RoO1xuICAgICAgY29kZUJsb2Nrcy5wdXNoKG1hdGNoKTtcbiAgICAgIHJldHVybiBgJHtwbGFjZWhvbGRlcn0ke2luZGV4fV9fX2A7XG4gICAgfSk7XG5cbiAgICAvLyBBbHNvIHByb3RlY3QgaW5saW5lIGNvZGVcbiAgICBjb25zdCBpbmxpbmVDb2RlOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGlubGluZVBsYWNlaG9sZGVyID0gXCJfX19JTkxJTkVfQ09ERV9QTEFDRUhPTERFUl9cIjtcbiAgICBodG1sID0gaHRtbC5yZXBsYWNlKC88Y29kZT5bXFxzXFxTXSo/PFxcL2NvZGU+L2csIChtYXRjaCkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBpbmxpbmVDb2RlLmxlbmd0aDtcbiAgICAgIGlubGluZUNvZGUucHVzaChtYXRjaCk7XG4gICAgICByZXR1cm4gYCR7aW5saW5lUGxhY2Vob2xkZXJ9JHtpbmRleH1fX19gO1xuICAgIH0pO1xuXG4gICAgLy8gUHJvY2VzcyBkaXNwbGF5IG1hdGggJCQgLi4uICQkXG4gICAgaHRtbCA9IGh0bWwucmVwbGFjZSgvXFwkXFwkKFtcXHNcXFNdKj8pXFwkXFwkL2csIChtYXRjaCwgZXF1YXRpb24pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBrYXRleC5yZW5kZXJUb1N0cmluZyhlcXVhdGlvbiwge1xuICAgICAgICAgIGRpc3BsYXlNb2RlOiB0cnVlLFxuICAgICAgICAgIHRocm93T25FcnJvcjogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFByb2Nlc3MgaW5saW5lIG1hdGggJCAuLi4gJFxuICAgIGh0bWwgPSBodG1sLnJlcGxhY2UoL1xcJChbXiRdKylcXCQvZywgKG1hdGNoLCBlcXVhdGlvbikgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGthdGV4LnJlbmRlclRvU3RyaW5nKGVxdWF0aW9uLCB7XG4gICAgICAgICAgZGlzcGxheU1vZGU6IGZhbHNlLFxuICAgICAgICAgIHRocm93T25FcnJvcjogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFJlc3RvcmUgY29kZSBibG9ja3NcbiAgICBjb2RlQmxvY2tzLmZvckVhY2goKGJsb2NrLCBpbmRleCkgPT4ge1xuICAgICAgaHRtbCA9IGh0bWwucmVwbGFjZShgJHtwbGFjZWhvbGRlcn0ke2luZGV4fV9fX2AsIGJsb2NrKTtcbiAgICB9KTtcblxuICAgIC8vIFJlc3RvcmUgaW5saW5lIGNvZGVcbiAgICBpbmxpbmVDb2RlLmZvckVhY2goKGNvZGUsIGluZGV4KSA9PiB7XG4gICAgICBodG1sID0gaHRtbC5yZXBsYWNlKGAke2lubGluZVBsYWNlaG9sZGVyfSR7aW5kZXh9X19fYCwgY29kZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaHRtbDtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyTWF0aEVxdWF0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubWFya2Rvd25Db250YWluZXIpIHJldHVybjtcblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMubWFya2Rvd25Db250YWluZXIubmF0aXZlRWxlbWVudDtcblxuICAgIC8vIEZpbmQgYWxsIG1hdGggcGxhY2Vob2xkZXJzIGFuZCByZW5kZXIgdGhlbVxuICAgIGNvbnN0IG1hdGhFbGVtZW50cyA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKFwiLm1hdGgtcGxhY2Vob2xkZXJcIik7XG4gICAgbWF0aEVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IGVxdWF0aW9uID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWVxdWF0aW9uXCIpO1xuICAgICAgY29uc3QgZGlzcGxheU1vZGUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShcImRhdGEtZGlzcGxheVwiKSA9PT0gXCJ0cnVlXCI7XG5cbiAgICAgIGlmIChlcXVhdGlvbikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGthdGV4LnJlbmRlcihlcXVhdGlvbiwgZWxlbWVudCBhcyBIVE1MRWxlbWVudCwge1xuICAgICAgICAgICAgZGlzcGxheU1vZGUsXG4gICAgICAgICAgICB0aHJvd09uRXJyb3I6IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gcmVuZGVyIG1hdGggZXF1YXRpb246XCIsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAvLyBDaGVjayBpZiBjbGlja2VkIG9uIGNvcHkgYnV0dG9uIG9yIGl0cyBjaGlsZHJlblxuICAgIGNvbnN0IGNvcHlCdXR0b24gPSB0YXJnZXQuY2xvc2VzdChcbiAgICAgIFwiLmNvZGUtYmxvY2stY29weS1idXR0b25cIixcbiAgICApIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuICAgIGlmIChjb3B5QnV0dG9uKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgY29uc3QgYmxvY2tJZCA9IGNvcHlCdXR0b24uZ2V0QXR0cmlidXRlKFwiZGF0YS1jb2RlLWJsb2NrLWlkXCIpO1xuXG4gICAgICBpZiAoYmxvY2tJZCkge1xuICAgICAgICAvLyBHZXQgdGhlIHJhdyBjb2RlIGZyb20gb3VyIG1hcCBpbnN0ZWFkIG9mIGZyb20gRE9NXG4gICAgICAgIGNvbnN0IGNvZGUgPSB0aGlzLmNvZGVCbG9ja3NNYXAuZ2V0KGJsb2NrSWQpO1xuICAgICAgICBpZiAoY29kZSkge1xuICAgICAgICAgIHRoaXMuY29weUNvZGVCbG9jayhibG9ja0lkLCBjb2RlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29weUNvZGVCbG9jayhibG9ja0lkOiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGNvZGUpLnRoZW4oXG4gICAgICAoKSA9PiB7XG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgYnV0dG9uIGluIHRoZSBET01cbiAgICAgICAgY29uc3QgYnV0dG9uID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICBgW2RhdGEtY29kZS1ibG9jay1pZD1cIiR7YmxvY2tJZH1cIl1gLFxuICAgICAgICApO1xuICAgICAgICBpZiAoYnV0dG9uKSB7XG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxIVE1MID0gYnV0dG9uLmlubmVySFRNTDtcbiAgICAgICAgICBidXR0b24uaW5uZXJIVE1MID0gYFxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjxwYXRoIGQ9XCJNMjAgNiA5IDE3bC01LTVcIi8+PC9zdmc+XG4gICAgICAgICAgICA8c3Bhbj4ke3RoaXMubGFiZWxzLmFzc2lzdGFudE1lc3NhZ2VUb29sYmFyQ29weUNvZGVDb3BpZWRMYWJlbH08L3NwYW4+XG4gICAgICAgICAgYDtcbiAgICAgICAgICBidXR0b24uc2V0QXR0cmlidXRlKFxuICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCIsXG4gICAgICAgICAgICBgJHt0aGlzLmxhYmVscy5hc3Npc3RhbnRNZXNzYWdlVG9vbGJhckNvcHlDb2RlQ29waWVkTGFiZWx9IGNvZGVgLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyBSZXNldCBhZnRlciAyIHNlY29uZHNcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGJ1dHRvbi5pbm5lckhUTUwgPSBvcmlnaW5hbEhUTUw7XG4gICAgICAgICAgICBidXR0b24uc2V0QXR0cmlidXRlKFxuICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIixcbiAgICAgICAgICAgICAgYCR7dGhpcy5sYWJlbHMuYXNzaXN0YW50TWVzc2FnZVRvb2xiYXJDb3B5Q29kZUxhYmVsfSBjb2RlYCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSwgMjAwMCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gY29weSBjb2RlOlwiLCBlcnIpO1xuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUJsb2NrSWQoY29kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBTaW1wbGUgaGFzaCBmdW5jdGlvbiBmb3IgZ2VuZXJhdGluZyB1bmlxdWUgSURzXG4gICAgbGV0IGhhc2ggPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29kZS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY2hhciA9IGNvZGUuY2hhckNvZGVBdChpKTtcbiAgICAgIGhhc2ggPSAoaGFzaCA8PCA1KSAtIGhhc2ggKyBjaGFyO1xuICAgICAgaGFzaCA9IGhhc2ggJiBoYXNoOyAvLyBDb252ZXJ0IHRvIDMyLWJpdCBpbnRlZ2VyXG4gICAgfVxuICAgIHJldHVybiBgY29kZS1ibG9jay0ke2hhc2h9YDtcbiAgfVxuXG4gIHByaXZhdGUgZXNjYXBlSHRtbCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgZGl2LnRleHRDb250ZW50ID0gdGV4dDtcbiAgICByZXR1cm4gZGl2LmlubmVySFRNTDtcbiAgfVxufVxuIl19
@@ -19,4 +19,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
19
19
  },
20
20
  }]
21
21
  }] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXRvb2xiYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvY2hhdC9jb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtdG9vbGJhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFTakMsTUFBTSxPQUFPLGtDQUFrQztJQUNwQyxVQUFVLEdBQUcsS0FBSyxFQUFzQixDQUFDO0lBRXpDLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ3JDLE9BQU8sRUFBRSxDQUNQLDZEQUE2RCxFQUM3RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQ2xCLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQzt3R0FSUSxrQ0FBa0M7NEZBQWxDLGtDQUFrQzs7NEZBQWxDLGtDQUFrQztrQkFQOUMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHNDQUFzQztvQkFDaEQsSUFBSSxFQUFFO3dCQUNKLFNBQVMsRUFBRSxpQkFBaUI7cUJBQzdCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbnB1dCwgY29tcHV0ZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiBcIltjb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyXVwiLFxuICBob3N0OiB7XG4gICAgXCJbY2xhc3NdXCI6IFwiY29tcHV0ZWRDbGFzcygpXCIsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVRvb2xiYXIge1xuICByZWFkb25seSBpbnB1dENsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuXG4gIHJlYWRvbmx5IGNvbXB1dGVkQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIGNuKFxuICAgICAgXCJ3LWZ1bGwgYmctdHJhbnNwYXJlbnQgZmxleCBpdGVtcy1jZW50ZXIgLW1sLVs1cHhdIC1tdC1bMHB4XVwiLFxuICAgICAgdGhpcy5pbnB1dENsYXNzKClcbiAgICApO1xuICB9KTtcbn1cbiJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXRvb2xiYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvY2hhdC9jb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtdG9vbGJhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFTakMsTUFBTSxPQUFPLGtDQUFrQztJQUNwQyxVQUFVLEdBQUcsS0FBSyxFQUFzQixDQUFDO0lBRXpDLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ3JDLE9BQU8sRUFBRSxDQUNQLDZEQUE2RCxFQUM3RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQ2xCLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQzt3R0FSUSxrQ0FBa0M7NEZBQWxDLGtDQUFrQzs7NEZBQWxDLGtDQUFrQztrQkFQOUMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHNDQUFzQztvQkFDaEQsSUFBSSxFQUFFO3dCQUNKLFNBQVMsRUFBRSxpQkFBaUI7cUJBQzdCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbnB1dCwgY29tcHV0ZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiBcIltjb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyXVwiLFxuICBob3N0OiB7XG4gICAgXCJbY2xhc3NdXCI6IFwiY29tcHV0ZWRDbGFzcygpXCIsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVRvb2xiYXIge1xuICByZWFkb25seSBpbnB1dENsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuXG4gIHJlYWRvbmx5IGNvbXB1dGVkQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIGNuKFxuICAgICAgXCJ3LWZ1bGwgYmctdHJhbnNwYXJlbnQgZmxleCBpdGVtcy1jZW50ZXIgLW1sLVs1cHhdIC1tdC1bMHB4XVwiLFxuICAgICAgdGhpcy5pbnB1dENsYXNzKCksXG4gICAgKTtcbiAgfSk7XG59XG4iXX0=
@@ -412,4 +412,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
412
412
  type: ContentChild,
413
413
  args: ["toolCallsView", { read: TemplateRef }]
414
414
  }] } });
415
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUVSLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFnQjFFLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2hHLE9BQU8sRUFDTCxxQ0FBcUMsRUFDckMseUNBQXlDLEVBQ3pDLDJDQUEyQyxHQUM1QyxNQUFNLDBDQUEwQyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7QUE4VHZFLE1BQU0sT0FBTywyQkFBMkI7SUFDdEMsNENBQTRDO0lBRTVDLHdCQUF3QixDQUF3RDtJQUVoRixlQUFlLENBQStDO0lBRTlELGtCQUFrQixDQUFrRDtJQUVwRSxzQkFBc0IsQ0FBc0M7SUFFNUQsd0JBQXdCLENBQXdDO0lBRWhFLHVCQUF1QixDQUF1QztJQUU5RCx3QkFBd0IsQ0FBd0M7SUFFaEUscUJBQXFCLENBQW9CO0lB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aW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBUZW1wbGF0ZVJlZixcbiAgQ29udGVudENoaWxkLFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxuICBUeXBlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIE9wdGlvbmFsLFxuICBJbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBDb3BpbG90U2xvdCB9IGZyb20gXCIuLi8uLi9zbG90cy9jb3BpbG90LXNsb3RcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0VG9vbENhbGxzVmlldyB9IGZyb20gXCIuL2NvcGlsb3QtY2hhdC10b29sLWNhbGxzLXZpZXdcIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZSB9IGZyb20gXCJAYWctdWkvY29yZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBBc3Npc3RhbnRNZXNzYWdlLFxuICB0eXBlIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZU9uVGh1bWJzVXBQcm9wcyxcbiAgdHlwZSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VPblRodW1ic0Rvd25Qcm9wcyxcbiAgdHlwZSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VPblJlYWRBbG91ZFByb3BzLFxuICB0eXBlIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZU9uUmVnZW5lcmF0ZVByb3BzLFxuICB0eXBlIEFzc2lzdGFudE1lc3NhZ2VNYXJrZG93blJlbmRlcmVyQ29udGV4dCxcbiAgdHlwZSBBc3Npc3RhbnRNZXNzYWdlQ29weUJ1dHRvbkNvbnRleHQsXG4gIHR5cGUgVGh1bWJzVXBCdXR0b25Db250ZXh0LFxuICB0eXBlIFRodW1ic0Rvd25CdXR0b25Db250ZXh0LFxuICB0eXBlIFJlYWRBbG91ZEJ1dHRvbkNvbnRleHQsXG4gIHR5cGUgUmVnZW5lcmF0ZUJ1dHRvbkNvbnRleHQsXG4gIHR5cGUgQXNzaXN0YW50TWVzc2FnZVRvb2xiYXJDb250ZXh0LFxufSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UudHlwZXNcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVJlbmRlcmVyIH0gZnJvbSBcIi4vY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyXCI7XG5pbXBvcnQge1xuICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VDb3B5QnV0dG9uLFxuICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUaHVtYnNVcEJ1dHRvbixcbiAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlVGh1bWJzRG93bkJ1dHRvbixcbn0gZnJvbSBcIi4vY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLWJ1dHRvbnNcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVRvb2xiYXIgfSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtdG9vbGJhclwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0Vmlld0hhbmRsZXJzIH0gZnJvbSBcIi4vY29waWxvdC1jaGF0LXZpZXctaGFuZGxlcnNcIjtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiBcImNvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZVwiLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENvcGlsb3RTbG90LFxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVJlbmRlcmVyLFxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZUNvcHlCdXR0b24sXG4gICAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlVG9vbGJhcixcbiAgICBDb3BpbG90Q2hhdFRvb2xDYWxsc1ZpZXcsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW2NsYXNzXT1cImNvbXB1dGVkQ2xhc3MoKVwiIFthdHRyLmRhdGEtbWVzc2FnZS1pZF09XCJtZXNzYWdlKCkuaWRcIj5cbiAgICAgIDwhLS0gTWFya2Rvd24gUmVuZGVyZXIgLS0+XG4gICAgICBAaWYgKG1hcmtkb3duUmVuZGVyZXJUZW1wbGF0ZSB8fCBtYXJrZG93blJlbmRlcmVyQ29tcG9uZW50KCkpIHtcbiAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgIFtzbG90XT1cIm1hcmtkb3duUmVuZGVyZXJUZW1wbGF0ZSB8fCBtYXJrZG93blJlbmRlcmVyQ29tcG9uZW50KClcIlxuICAgICAgICAgIFtjb250ZXh0XT1cIm1hcmtkb3duUmVuZGVyZXJDb250ZXh0KClcIlxuICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cIkNvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVJlbmRlcmVyXCJcbiAgICAgICAgPlxuICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8Y29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyXG4gICAgICAgICAgW2NvbnRlbnRdPVwibWVzc2FnZSgpLmNvbnRlbnQgfHwgJydcIlxuICAgICAgICAgIFtpbnB1dENsYXNzXT1cIm1hcmtkb3duUmVuZGVyZXJDbGFzcygpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2NvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1yZW5kZXJlcj5cbiAgICAgIH1cblxuICAgICAgPCEtLSBUb29sIENhbGxzIFZpZXcgLS0+XG4gICAgICBAaWYgKHRvb2xDYWxsc1ZpZXdUZW1wbGF0ZSB8fCB0b29sQ2FsbHNWaWV3Q29tcG9uZW50KCkpIHtcbiAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgIFtzbG90XT1cInRvb2xDYWxsc1ZpZXdUZW1wbGF0ZSB8fCB0b29sQ2FsbHNWaWV3Q29tcG9uZW50KClcIlxuICAgICAgICAgIFtjb250ZXh0XT1cInRvb2xDYWxsc1ZpZXdDb250ZXh0KClcIlxuICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cIkNvcGlsb3RDaGF0VG9vbENhbGxzVmlld1wiXG4gICAgICAgID5cbiAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICB9IEBlbHNlIGlmIChtZXNzYWdlKCkudG9vbENhbGxzICYmIG1lc3NhZ2UoKSEudG9vbENhbGxzIS5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxjb3BpbG90LWNoYXQtdG9vbC1jYWxscy12aWV3XG4gICAgICAgICAgW21lc3NhZ2VdPVwibWVzc2FnZSgpIVwiXG4gICAgICAgICAgW21lc3NhZ2VzXT1cIm1lc3NhZ2VzKClcIlxuICAgICAgICAgIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nKClcIlxuICAgICAgICA+XG4gICAgICAgIDwvY29waWxvdC1jaGF0LXRvb2wtY2FsbHMtdmlldz5cbiAgICAgIH1cblxuICAgICAgPCEtLSBUb29sYmFyOiBzaG93IG9ubHkgd2hlbiB0aGVyZSBpcyBhc3Npc3RhbnQgdGV4dCBjb250ZW50IC0tPlxuICAgICAgQGlmICh0b29sYmFyVmlzaWJsZSgpICYmIGhhc01lc3NhZ2VDb250ZW50KCkpIHtcbiAgICAgICAgQGlmICh0b29sYmFyVGVtcGxhdGUgfHwgdG9vbGJhckNvbXBvbmVudCgpKSB7XG4gICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgW3Nsb3RdPVwidG9vbGJhclRlbXBsYXRlIHx8IHRvb2xiYXJDb21wb25lbnQoKVwiXG4gICAgICAgICAgICBbY29udGV4dF09XCJ0b29sYmFyQ29udGV4dCgpXCJcbiAgICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cIkNvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVRvb2xiYXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGRpdiBjb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyIFtpbnB1dENsYXNzXT1cInRvb2xiYXJDbGFzcygpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTFcIj5cbiAgICAgICAgICAgICAgPCEtLSBDb3B5IGJ1dHRvbiAtLT5cbiAgICAgICAgICAgICAgQGlmIChjb3B5QnV0dG9uVGVtcGxhdGUgfHwgY29weUJ1dHRvbkNvbXBvbmVudCgpKSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgICAgW3Nsb3RdPVwiY29weUJ1dHRvblRlbXBsYXRlIHx8IGNvcHlCdXR0b25Db21wb25lbnQoKVwiXG4gICAgICAgICAgICAgICAgICBbY29udGV4dF09XCJ7IGNvbnRlbnQ6IG1lc3NhZ2UoKS5jb250ZW50IHx8ICcnIH1cIlxuICAgICAgICAgICAgICAgICAgW2RlZmF1bHRDb21wb25lbnRdPVwiQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlQ29weUJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbb3V0cHV0c109XCJjb3B5QnV0dG9uT3V0cHV0c1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8Y29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLWNvcHktYnV0dG9uXG4gICAgICAgICAgICAgICAgICBbY29udGVudF09XCJtZXNzYWdlKCkuY29udGVudFwiXG4gICAgICAgICAgICAgICAgICBbaW5wdXRDbGFzc109XCJjb3B5QnV0dG9uQ2xhc3MoKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJoYW5kbGVDb3B5KClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2NvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1jb3B5LWJ1dHRvbj5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDwhLS0gVGh1bWJzIHVwIGJ1dHRvbiAtIHNob3cgaWYgY3VzdG9tIHNsb3QgcHJvdmlkZWQgT1IgaWYgaGFuZGxlciBhdmFpbGFibGUgYXQgdG9wIGxldmVsIC0tPlxuICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgIHRodW1ic1VwQnV0dG9uQ29tcG9uZW50KCkgfHxcbiAgICAgICAgICAgICAgICB0aHVtYnNVcEJ1dHRvblRlbXBsYXRlIHx8XG4gICAgICAgICAgICAgICAgaGFuZGxlcnMuaGFzQXNzaXN0YW50VGh1bWJzVXBIYW5kbGVyKClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgICAgW3Nsb3RdPVwidGh1bWJzVXBCdXR0b25UZW1wbGF0ZSB8fCB0aHVtYnNVcEJ1dHRvbkNvbXBvbmVudCgpXCJcbiAgICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cInt9XCJcbiAgICAgICAgICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cImRlZmF1bHRUaHVtYnNVcEJ1dHRvbkNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgICBbb3V0cHV0c109XCJ0aHVtYnNVcEJ1dHRvbk91dHB1dHNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDwhLS0gVGh1bWJzIGRvd24gYnV0dG9uIC0gc2hvdyBpZiBjdXN0b20gc2xvdCBwcm92aWRlZCBPUiBpZiBoYW5kbGVyIGF2YWlsYWJsZSBhdCB0b3AgbGV2ZWwgLS0+XG4gICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgdGh1bWJzRG93bkJ1dHRvbkNvbXBvbmVudCgpIHx8XG4gICAgICAgICAgICAgICAgdGh1bWJzRG93bkJ1dHRvblRlbXBsYXRlIHx8XG4gICAgICAgICAgICAgICAgaGFuZGxlcnMuaGFzQXNzaXN0YW50VGh1bWJzRG93bkhhbmRsZXIoKVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICA8Y29waWxvdC1zbG90XG4gICAgICAgICAgICAgICAgICBbc2xvdF09XCJcbiAgICAgICAgICAgICAgICAgICAgdGh1bWJzRG93bkJ1dHRvblRlbXBsYXRlIHx8IHRodW1ic0Rvd25CdXR0b25Db21wb25lbnQoKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cInt9XCJcbiAgICAgICAgICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cImRlZmF1bHRUaHVtYnNEb3duQnV0dG9uQ29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICAgIFtvdXRwdXRzXT1cInRodW1ic0Rvd25CdXR0b25PdXRwdXRzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICA8IS0tIFJlYWQgYWxvdWQgYnV0dG9uIC0gb25seSBzaG93IGlmIGN1c3RvbSBzbG90IHByb3ZpZGVkIC0tPlxuICAgICAgICAgICAgICBAaWYgKHJlYWRBbG91ZEJ1dHRvbkNvbXBvbmVudCgpIHx8IHJlYWRBbG91ZEJ1dHRvblRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgICAgW3Nsb3RdPVwicmVhZEFsb3VkQnV0dG9uVGVtcGxhdGUgfHwgcmVhZEFsb3VkQnV0dG9uQ29tcG9uZW50KClcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRleHRdPVwie31cIlxuICAgICAgICAgICAgICAgICAgW291dHB1dHNdPVwicmVhZEFsb3VkQnV0dG9uT3V0cHV0c1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgPCEtLSBSZWdlbmVyYXRlIGJ1dHRvbiAtIG9ubHkgc2hvdyBpZiBjdXN0b20gc2xvdCBwcm92aWRlZCAtLT5cbiAgICAgICAgICAgICAgQGlmIChyZWdlbmVyYXRlQnV0dG9uQ29tcG9uZW50KCkgfHwgcmVnZW5lcmF0ZUJ1dHRvblRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgICAgW3Nsb3RdPVwiXG4gICAgICAgICAgICAgICAgICAgIHJlZ2VuZXJhdGVCdXR0b25UZW1wbGF0ZSB8fCByZWdlbmVyYXRlQnV0dG9uQ29tcG9uZW50KClcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBbY29udGV4dF09XCJ7fVwiXG4gICAgICAgICAgICAgICAgICBbb3V0cHV0c109XCJyZWdlbmVyYXRlQnV0dG9uT3V0cHV0c1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgPCEtLSBBZGRpdGlvbmFsIHRvb2xiYXIgaXRlbXMgLS0+XG4gICAgICAgICAgICAgIEBpZiAoYWRkaXRpb25hbFRvb2xiYXJJdGVtcygpKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWRkaXRpb25hbFRvb2xiYXJJdGVtcygpIHx8IG51bGxcIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLyogSW1wb3J0IEthVGVYIHN0eWxlcyAqL1xuICAgICAgQGltcG9ydCBcImthdGV4L2Rpc3Qva2F0ZXgubWluLmNzc1wiO1xuXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLyogQXRvbSBPbmUgTGlnaHQgdGhlbWUgZm9yIGhpZ2hsaWdodC5qcyAqL1xuICAgICAgLmhsanMge1xuICAgICAgICBjb2xvcjogcmdiKDU2LCA1OCwgNjYpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgLmhsanMtY29tbWVudCxcbiAgICAgIC5obGpzLXF1b3RlIHtcbiAgICAgICAgY29sb3I6ICNhMGExYTc7XG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIH1cblxuICAgICAgLmhsanMtZG9jdGFnLFxuICAgICAgLmhsanMtZm9ybXVsYSxcbiAgICAgIC5obGpzLWtleXdvcmQge1xuICAgICAgICBjb2xvcjogI2E2MjZhNDtcbiAgICAgIH1cblxuICAgICAgLmhsanMtZGVsZXRpb24sXG4gICAgICAuaGxqcy1uYW1lLFxuICAgICAgLmhsanMtc2VjdGlvbixcbiAgICAgIC5obGpzLXNlbGVjdG9yLXRhZyxcbiAgICAgIC5obGpzLXN1YnN0IHtcbiAgICAgICAgY29sb3I6ICNlNDU2NDk7XG4gICAgICB9XG5cbiAgICAgIC5obGpzLWxpdGVyYWwge1xuICAgICAgICBjb2xvcjogIzAxODRiYjtcbiAgICAgIH1cblxuICAgICAgLmhsanMtYWRkaXRpb24sXG4gICAgICAuaGxqcy1hdHRyaWJ1dGUsXG4gICAgICAuaGxqcy1tZXRhIC5obGpzLXN0cmluZyxcbiAgICAgIC5obGpzLXJlZ2V4cCxcbiAgICAgIC5obGpzLXN0cmluZyB7XG4gICAgICAgIGNvbG9yOiAjNTBhMTRmO1xuICAgICAgfVxuXG4gICAgICAuaGxqcy1hdHRyLFxuICAgICAgLmhsanMtbnVtYmVyLFxuICAgICAgLmhsanMtc2VsZWN0b3ItYXR0cixcbiAgICAgIC5obGpzLXNlbGVjdG9yLWNsYXNzLFxuICAgICAgLmhsanMtc2VsZWN0b3ItcHNldWRvLFxuICAgICAgLmhsanMtdGVtcGxhdGUtdmFyaWFibGUsXG4gICAgICAuaGxqcy10eXBlLFxuICAgICAgLmhsanMtdmFyaWFibGUge1xuICAgICAgICBjb2xvcjogIzk4NjgwMTtcbiAgICAgIH1cblxuICAgICAgLmhsanMtcGFyYW1zIHtcbiAgICAgICAgY29sb3I6IHJnYig1NiwgNTgsIDY2KTtcbiAgICAgIH1cblxuICAgICAgLmhsanMtYnVsbGV0LFxuICAgICAgLmhsanMtbGluayxcbiAgICAgIC5obGpzLW1ldGEsXG4gICAgICAuaGxqcy1zZWxlY3Rvci1pZCxcbiAgICAgIC5obGpzLXN5bWJvbCxcbiAgICAgIC5obGpzLXRpdGxlIHtcbiAgICAgICAgY29sb3I6ICM0MDc4ZjI7XG4gICAgICB9XG5cbiAgICAgIC5obGpzLWJ1aWx0X2luLFxuICAgICAgLmhsanMtY2xhc3MgLmhsanMtdGl0bGUsXG4gICAgICAuaGxqcy10aXRsZS5jbGFzc18ge1xuICAgICAgICBjb2xvcjogI2MxODQwMTtcbiAgICAgIH1cblxuICAgICAgLmhsanMtZW1waGFzaXMge1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICB9XG5cbiAgICAgIC5obGpzLXN0cm9uZyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICB9XG5cbiAgICAgIC5obGpzLWxpbmsge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgIH1cblxuICAgICAgLyogQXRvbSBPbmUgRGFyayB0aGVtZSBmb3IgaGlnaGxpZ2h0LmpzICovXG4gICAgICAuZGFyayAuaGxqcyB7XG4gICAgICAgIGNvbG9yOiAjYWJiMmJmO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgLmRhcmsgLmhsanMtY29tbWVudCxcbiAgICAgIC5kYXJrIC5obGpzLXF1b3RlIHtcbiAgICAgICAgY29sb3I6ICM1YzYzNzA7XG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIH1cblxuICAgICAgLmRhcmsgLmhsanMtZG9jdGFnLFxuICAgICAgLmRhcmsgLmhsanMtZm9ybXVsYSxcbiAgICAgIC5kYXJrIC5obGpzLWtleXdvcmQge1xuICAgICAgICBjb2xvcjogI2M2NzhkZDtcbiAgICAgIH1cblxuICAgICAgLmRhcmsgLmhsanMtZGVsZXRpb24sXG4gICAgICAuZGFyayAuaGxqcy1uYW1lLFxuICAgICAgLmRhcmsgLmhsanMtc2VjdGlvbixcbiAgICAgIC5kYXJrIC5obGpzLXNlbGVjdG9yLXRhZyxcbiAgICAgIC5kYXJrIC5obGpzLXN1YnN0IHtcbiAgICAgICAgY29sb3I6ICNlMDZjNzU7XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIC5obGpzLWxpdGVyYWwge1xuICAgICAgICBjb2xvcjogIzU2YjZjMjtcbiAgICAgIH1cblxuICAgICAgLmRhcmsgLmhsanMtYWRkaXRpb24sXG4gICAgICAuZGFyayAuaGxqcy1hdHRyaWJ1dGUsXG4gICAgICAuZGFyayAuaGxqcy1tZXRhIC5obGpzLXN0cmluZyxcbiAgICAgIC5kYXJrIC5obGpzLXJlZ2V4cCxcbiAgICAgIC5kYXJrIC5obGpzLXN0cmluZyB7XG4gICAgICAgIGNvbG9yOiAjOThjMzc5O1xuICAgICAgfVxuXG4gICAgICAuZGFyayAuaGxqcy1hdHRyLFxuICAgICAgLmRhcmsgLmhsanMtbnVtYmVyLFxuICAgICAgLmRhcmsgLmhsanMtc2VsZWN0b3ItYXR0cixcbiAgICAgIC5kYXJrIC5obGpzLXNlbGVjdG9yLWNsYXNzLFxuICAgICAgLmRhcmsgLmhsanMtc2VsZWN0b3ItcHNldWRvLFxuICAgICAgLmRhcmsgLmhsanMtdGVtcGxhdGUtdmFyaWFibGUsXG4gICAgICAuZGFyayAuaGxqcy10eXBlLFxuICAgICAgLmRhcmsgLmhsanMtdmFyaWFibGUge1xuICAgICAgICBjb2xvcjogI2QxOWE2NjtcbiAgICAgIH1cblxuICAgICAgLmRhcmsgLmhsanMtYnVsbGV0LFxuICAgICAgLmRhcmsgLmhsanMtbGluayxcbiAgICAgIC5kYXJrIC5obGpzLW1ldGEsXG4gICAgICAuZGFyayAuaGxqcy1zZWxlY3Rvci1pZCxcbiAgICAgIC5kYXJrIC5obGpzLXN5bWJvbCxcbiAgICAgIC5kYXJrIC5obGpzLXRpdGxlIHtcbiAgICAgICAgY29sb3I6ICM2MWFlZWU7XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIC5obGpzLWJ1aWx0X2luLFxuICAgICAgLmRhcmsgLmhsanMtY2xhc3MgLmhsanMtdGl0bGUsXG4gICAgICAuZGFyayAuaGxqcy10aXRsZS5jbGFzc18ge1xuICAgICAgICBjb2xvcjogI2U2YzA3YjtcbiAgICAgIH1cblxuICAgICAgLmRhcmsgLmhsanMtcGFyYW1zIHtcbiAgICAgICAgY29sb3I6ICNhYmIyYmY7IC8qIHNhbWUgYXMgcmVndWxhciB0ZXh0ICovXG4gICAgICB9XG5cbiAgICAgIC5kYXJrIC5obGpzLWVtcGhhc2lzIHtcbiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgfVxuXG4gICAgICAuZGFyayAuaGxqcy1zdHJvbmcge1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgfVxuXG4gICAgICAuZGFyayAuaGxqcy1saW5rIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlIHtcbiAgLy8gQ2FwdHVyZSB0ZW1wbGF0ZXMgZnJvbSBjb250ZW50IHByb2plY3Rpb25cbiAgQENvbnRlbnRDaGlsZChcIm1hcmtkb3duUmVuZGVyZXJcIiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBtYXJrZG93blJlbmRlcmVyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxBc3Npc3RhbnRNZXNzYWdlTWFya2Rvd25SZW5kZXJlckNvbnRleHQ+O1xuICBAQ29udGVudENoaWxkKFwidG9vbGJhclwiLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHRvb2xiYXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyQ29udGV4dD47XG4gIEBDb250ZW50Q2hpbGQoXCJjb3B5QnV0dG9uXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgY29weUJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8QXNzaXN0YW50TWVzc2FnZUNvcHlCdXR0b25Db250ZXh0PjtcbiAgQENvbnRlbnRDaGlsZChcInRodW1ic1VwQnV0dG9uXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgdGh1bWJzVXBCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPFRodW1ic1VwQnV0dG9uQ29udGV4dD47XG4gIEBDb250ZW50Q2hpbGQoXCJ0aHVtYnNEb3duQnV0dG9uXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgdGh1bWJzRG93bkJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8VGh1bWJzRG93bkJ1dHRvbkNvbnRleHQ+O1xuICBAQ29udGVudENoaWxkKFwicmVhZEFsb3VkQnV0dG9uXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcmVhZEFsb3VkQnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxSZWFkQWxvdWRCdXR0b25Db250ZXh0PjtcbiAgQENvbnRlbnRDaGlsZChcInJlZ2VuZXJhdGVCdXR0b25cIiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICByZWdlbmVyYXRlQnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxSZWdlbmVyYXRlQnV0dG9uQ29udGV4dD47XG4gIEBDb250ZW50Q2hpbGQoXCJ0b29sQ2FsbHNWaWV3XCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgdG9vbENhbGxzVmlld1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvLyBDbGFzcyBpbnB1dHMgZm9yIHN0eWxpbmcgZGVmYXVsdCBjb21wb25lbnRzXG4gIHJlYWRvbmx5IG1hcmtkb3duUmVuZGVyZXJDbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgdG9vbGJhckNsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjb3B5QnV0dG9uQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHRodW1ic1VwQnV0dG9uQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHRodW1ic0Rvd25CdXR0b25DbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgcmVhZEFsb3VkQnV0dG9uQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHJlZ2VuZXJhdGVCdXR0b25DbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgdG9vbENhbGxzVmlld0NsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8vIENvbXBvbmVudCBpbnB1dHMgZm9yIG92ZXJyaWRlc1xuICByZWFkb25seSBtYXJrZG93blJlbmRlcmVyQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSB0b29sYmFyQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjb3B5QnV0dG9uQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSB0aHVtYnNVcEJ1dHRvbkNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgdGh1bWJzRG93bkJ1dHRvbkNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgcmVhZEFsb3VkQnV0dG9uQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSByZWdlbmVyYXRlQnV0dG9uQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSB0b29sQ2FsbHNWaWV3Q29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8vIFJlZ3VsYXIgaW5wdXRzXG4gIHJlYWRvbmx5IG1lc3NhZ2UgPSBpbnB1dC5yZXF1aXJlZDxBc3Npc3RhbnRNZXNzYWdlPigpO1xuICByZWFkb25seSBtZXNzYWdlcyA9IGlucHV0PE1lc3NhZ2VbXT4oW10pO1xuICByZWFkb25seSBpc0xvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxUb29sYmFySXRlbXMgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkPihcbiAgICB1bmRlZmluZWRcbiAgKTtcbiAgcmVhZG9ubHkgdG9vbGJhclZpc2libGUgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgaW5wdXRDbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAvLyBESSBzZXJ2aWNlIGV4cG9zZXMgaGFuZGxlciBhdmFpbGFiaWxpdHkgc2NvcGVkIHRvIENvcGlsb3RDaGF0Vmlld1xuICAvLyBNYWtlIGl0IG9wdGlvbmFsIHdpdGggYSBkZWZhdWx0IGZhbGxiYWNrIGZvciB0ZXN0aW5nXG4gIGhhbmRsZXJzOiBDb3BpbG90Q2hhdFZpZXdIYW5kbGVycztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoQ29waWxvdENoYXRWaWV3SGFuZGxlcnMpXG4gICAgaGFuZGxlcnM/OiBDb3BpbG90Q2hhdFZpZXdIYW5kbGVycyB8IG51bGxcbiAgKSB7XG4gICAgdGhpcy5oYW5kbGVycyA9IGhhbmRsZXJzIHx8IG5ldyBDb3BpbG90Q2hhdFZpZXdIYW5kbGVycygpO1xuICB9XG5cbiAgLy8gT3V0cHV0IGV2ZW50c1xuICB0aHVtYnNVcCA9IG91dHB1dDxDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VPblRodW1ic1VwUHJvcHM+KCk7XG4gIHRodW1ic0Rvd24gPSBvdXRwdXQ8Q29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlT25UaHVtYnNEb3duUHJvcHM+KCk7XG4gIHJlYWRBbG91ZCA9IG91dHB1dDxDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VPblJlYWRBbG91ZFByb3BzPigpO1xuICByZWdlbmVyYXRlID0gb3V0cHV0PENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZU9uUmVnZW5lcmF0ZVByb3BzPigpO1xuXG4gIC8vIFNpZ25hbHNcbiAgY3VzdG9tQ2xhc3MgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8vIENvbXB1dGVkIHZhbHVlc1xuICBjb21wdXRlZENsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBjbihcbiAgICAgIFwicHJvc2UgbWF4LXctZnVsbCBicmVhay13b3JkcyBkYXJrOnByb3NlLWludmVydFwiLFxuICAgICAgdGhpcy5jdXN0b21DbGFzcygpXG4gICAgKTtcbiAgfSk7XG5cbiAgLy8gRGVmYXVsdCBjb21wb25lbnRzXG4gIHByb3RlY3RlZCByZWFkb25seSBkZWZhdWx0VGh1bWJzVXBCdXR0b25Db21wb25lbnQgPVxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVRodW1ic1VwQnV0dG9uO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFRodW1ic0Rvd25CdXR0b25Db21wb25lbnQgPVxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVRodW1ic0Rvd25CdXR0b247XG4gIHByb3RlY3RlZCByZWFkb25seSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VSZW5kZXJlciA9XG4gICAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlUmVuZGVyZXI7XG4gIHByb3RlY3RlZCByZWFkb25seSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyID1cbiAgICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlQ29weUJ1dHRvbiA9XG4gICAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlQ29weUJ1dHRvbjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IENvcGlsb3RDaGF0VG9vbENhbGxzVmlldyA9IENvcGlsb3RDaGF0VG9vbENhbGxzVmlldztcblxuICAvLyBDb250ZXh0IGZvciBzbG90cyAocmVhY3RpdmUgdmlhIHNpZ25hbHMpXG4gIG1hcmtkb3duUmVuZGVyZXJDb250ZXh0ID0gY29tcHV0ZWQ8QXNzaXN0YW50TWVzc2FnZU1hcmtkb3duUmVuZGVyZXJDb250ZXh0PihcbiAgICAoKSA9PiAoe1xuICAgICAgY29udGVudDogdGhpcy5tZXNzYWdlKCk/LmNvbnRlbnQgfHwgXCJcIixcbiAgICB9KVxuICApO1xuXG4gIC8vIE91dHB1dCBtYXBzIGZvciBzbG90c1xuICBjb3B5QnV0dG9uT3V0cHV0cyA9IHsgY2xpY2tlZDogKCkgPT4gdGhpcy5oYW5kbGVDb3B5KCkgfTtcbiAgdGh1bWJzVXBCdXR0b25PdXRwdXRzID0geyBjbGlja2VkOiAoKSA9PiB0aGlzLmhhbmRsZVRodW1ic1VwKCkgfTtcbiAgdGh1bWJzRG93bkJ1dHRvbk91dHB1dHMgPSB7IGNsaWNrZWQ6ICgpID0+IHRoaXMuaGFuZGxlVGh1bWJzRG93bigpIH07XG4gIHJlYWRBbG91ZEJ1dHRvbk91dHB1dHMgPSB7IGNsaWNrZWQ6ICgpID0+IHRoaXMuaGFuZGxlUmVhZEFsb3VkKCkgfTtcbiAgcmVnZW5lcmF0ZUJ1dHRvbk91dHB1dHMgPSB7IGNsaWNrZWQ6ICgpID0+IHRoaXMuaGFuZGxlUmVnZW5lcmF0ZSgpIH07XG5cbiAgdG9vbGJhckNvbnRleHQgPSBjb21wdXRlZDxBc3Npc3RhbnRNZXNzYWdlVG9vbGJhckNvbnRleHQ+KCgpID0+ICh7XG4gICAgY2hpbGRyZW46IG51bGwsIC8vIFdpbGwgYmUgcG9wdWxhdGVkIGJ5IHRoZSB0b29sYmFyIGNvbnRlbnRcbiAgfSkpO1xuXG4gIC8vIFJldHVybiB0cnVlIGlmIGFzc2lzdGFudCBtZXNzYWdlIGhhcyBub24tZW1wdHkgdGV4dCBjb250ZW50XG4gIGhhc01lc3NhZ2VDb250ZW50KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJhdyA9ICh0aGlzLm1lc3NhZ2UoKT8uY29udGVudCA/PyBcIlwiKSBhcyBhbnk7XG4gICAgY29uc3QgY29udGVudCA9IHR5cGVvZiByYXcgPT09IFwic3RyaW5nXCIgPyByYXcgOiBTdHJpbmcocmF3ID8/IFwiXCIpO1xuICAgIHJldHVybiBjb250ZW50LnRyaW0oKS5sZW5ndGggPiAwO1xuICB9XG5cbiAgdG9vbENhbGxzVmlld0NvbnRleHQgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSgpLFxuICAgIG1lc3NhZ2VzOiB0aGlzLm1lc3NhZ2VzKCksXG4gICAgaXNMb2FkaW5nOiB0aGlzLmlzTG9hZGluZygpLFxuICB9KSk7XG5cbiAgaGFuZGxlQ29weSgpOiB2b2lkIHtcbiAgICAvLyBDb3B5IGlzIGhhbmRsZWQgYnkgdGhlIGJ1dHRvbiBjb21wb25lbnQgaXRzZWxmXG4gICAgLy8gVGhpcyBpcyBqdXN0IGZvciBhbnkgYWRkaXRpb25hbCBsb2dpYyBpZiBuZWVkZWRcbiAgfVxuXG4gIGhhbmRsZVRodW1ic1VwKCk6IHZvaWQge1xuICAgIHRoaXMudGh1bWJzVXAuZW1pdCh7IG1lc3NhZ2U6IHRoaXMubWVzc2FnZSgpIH0pO1xuICB9XG5cbiAgaGFuZGxlVGh1bWJzRG93bigpOiB2b2lkIHtcbiAgICB0aGlzLnRodW1ic0Rvd24uZW1pdCh7IG1lc3NhZ2U6IHRoaXMubWVzc2FnZSgpIH0pO1xuICB9XG5cbiAgaGFuZGxlUmVhZEFsb3VkKCk6IHZvaWQge1xuICAgIHRoaXMucmVhZEFsb3VkLmVtaXQoeyBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UoKSB9KTtcbiAgfVxuXG4gIGhhbmRsZVJlZ2VuZXJhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5yZWdlbmVyYXRlLmVtaXQoeyBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UoKSB9KTtcbiAgfVxufVxuIl19
415
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUVSLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFnQjFFLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2hHLE9BQU8sRUFDTCxxQ0FBcUMsRUFDckMseUNBQXlDLEVBQ3pDLDJDQUEyQyxHQUM1QyxNQUFNLDBDQUEwQyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7QUE4VHZFLE1BQU0sT0FBTywyQkFBMkI7SUFDdEMsNENBQTRDO0lBRTVDLHdCQUF3QixDQUF3RDtJQUVoRixlQUFlLENBQStDO0lBRTlELGtCQUFrQixDQUFrRDtJQUVwRSxzQkFBc0IsQ0FBc0M7SUFFNUQsd0JBQXdCLENBQXdDO0lBRWhFLHVCQUF1QixDQUF1QztJQUU5RCx3QkFBd0IsQ0FBd0M7SUFFaEUscUJBQXFCLENBQW9CO0lB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aW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBUZW1wbGF0ZVJlZixcbiAgQ29udGVudENoaWxkLFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxuICBUeXBlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIE9wdGlvbmFsLFxuICBJbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBDb3BpbG90U2xvdCB9IGZyb20gXCIuLi8uLi9zbG90cy9jb3BpbG90LXNsb3RcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0VG9vbENhbGxzVmlldyB9IGZyb20gXCIuL2NvcGlsb3QtY2hhdC10b29sLWNhbGxzLXZpZXdcIjtcbmltcG9ydCB0eXBlIHsgTWVzc2FnZSB9IGZyb20gXCJAYWctdWkvY29yZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBBc3Npc3RhbnRNZXNzYWdlLFxuICB0eXBlIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZU9uVGh1bWJzVXBQcm9wcyxcbiAgdHlwZSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VPblRodW1ic0Rvd25Qcm9wcyxcbiAgdHlwZSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VPblJlYWRBbG91ZFByb3BzLFxuICB0eXBlIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZU9uUmVnZW5lcmF0ZVByb3BzLFxuICB0eXBlIEFzc2lzdGFudE1lc3NhZ2VNYXJrZG93blJlbmRlcmVyQ29udGV4dCxcbiAgdHlwZSBBc3Npc3RhbnRNZXNzYWdlQ29weUJ1dHRvbkNvbnRleHQsXG4gIHR5cGUgVGh1bWJzVXBCdXR0b25Db250ZXh0LFxuICB0eXBlIFRodW1ic0Rvd25CdXR0b25Db250ZXh0LFxuICB0eXBlIFJlYWRBbG91ZEJ1dHRvbkNvbnRleHQsXG4gIHR5cGUgUmVnZW5lcmF0ZUJ1dHRvbkNvbnRleHQsXG4gIHR5cGUgQXNzaXN0YW50TWVzc2FnZVRvb2xiYXJDb250ZXh0LFxufSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UudHlwZXNcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVJlbmRlcmVyIH0gZnJvbSBcIi4vY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyXCI7XG5pbXBvcnQge1xuICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VDb3B5QnV0dG9uLFxuICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUaHVtYnNVcEJ1dHRvbixcbiAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlVGh1bWJzRG93bkJ1dHRvbixcbn0gZnJvbSBcIi4vY29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLWJ1dHRvbnNcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVRvb2xiYXIgfSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtYXNzaXN0YW50LW1lc3NhZ2UtdG9vbGJhclwiO1xuaW1wb3J0IHsgY24gfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IENvcGlsb3RDaGF0Vmlld0hhbmRsZXJzIH0gZnJvbSBcIi4vY29waWxvdC1jaGF0LXZpZXctaGFuZGxlcnNcIjtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiBcImNvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZVwiLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENvcGlsb3RTbG90LFxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVJlbmRlcmVyLFxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZUNvcHlCdXR0b24sXG4gICAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlVG9vbGJhcixcbiAgICBDb3BpbG90Q2hhdFRvb2xDYWxsc1ZpZXcsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW2NsYXNzXT1cImNvbXB1dGVkQ2xhc3MoKVwiIFthdHRyLmRhdGEtbWVzc2FnZS1pZF09XCJtZXNzYWdlKCkuaWRcIj5cbiAgICAgIDwhLS0gTWFya2Rvd24gUmVuZGVyZXIgLS0+XG4gICAgICBAaWYgKG1hcmtkb3duUmVuZGVyZXJUZW1wbGF0ZSB8fCBtYXJrZG93blJlbmRlcmVyQ29tcG9uZW50KCkpIHtcbiAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgIFtzbG90XT1cIm1hcmtkb3duUmVuZGVyZXJUZW1wbGF0ZSB8fCBtYXJrZG93blJlbmRlcmVyQ29tcG9uZW50KClcIlxuICAgICAgICAgIFtjb250ZXh0XT1cIm1hcmtkb3duUmVuZGVyZXJDb250ZXh0KClcIlxuICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cIkNvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVJlbmRlcmVyXCJcbiAgICAgICAgPlxuICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8Y29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLXJlbmRlcmVyXG4gICAgICAgICAgW2NvbnRlbnRdPVwibWVzc2FnZSgpLmNvbnRlbnQgfHwgJydcIlxuICAgICAgICAgIFtpbnB1dENsYXNzXT1cIm1hcmtkb3duUmVuZGVyZXJDbGFzcygpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2NvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1yZW5kZXJlcj5cbiAgICAgIH1cblxuICAgICAgPCEtLSBUb29sIENhbGxzIFZpZXcgLS0+XG4gICAgICBAaWYgKHRvb2xDYWxsc1ZpZXdUZW1wbGF0ZSB8fCB0b29sQ2FsbHNWaWV3Q29tcG9uZW50KCkpIHtcbiAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgIFtzbG90XT1cInRvb2xDYWxsc1ZpZXdUZW1wbGF0ZSB8fCB0b29sQ2FsbHNWaWV3Q29tcG9uZW50KClcIlxuICAgICAgICAgIFtjb250ZXh0XT1cInRvb2xDYWxsc1ZpZXdDb250ZXh0KClcIlxuICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cIkNvcGlsb3RDaGF0VG9vbENhbGxzVmlld1wiXG4gICAgICAgID5cbiAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICB9IEBlbHNlIGlmIChtZXNzYWdlKCkudG9vbENhbGxzICYmIG1lc3NhZ2UoKSEudG9vbENhbGxzIS5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxjb3BpbG90LWNoYXQtdG9vbC1jYWxscy12aWV3XG4gICAgICAgICAgW21lc3NhZ2VdPVwibWVzc2FnZSgpIVwiXG4gICAgICAgICAgW21lc3NhZ2VzXT1cIm1lc3NhZ2VzKClcIlxuICAgICAgICAgIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nKClcIlxuICAgICAgICA+XG4gICAgICAgIDwvY29waWxvdC1jaGF0LXRvb2wtY2FsbHMtdmlldz5cbiAgICAgIH1cblxuICAgICAgPCEtLSBUb29sYmFyOiBzaG93IG9ubHkgd2hlbiB0aGVyZSBpcyBhc3Npc3RhbnQgdGV4dCBjb250ZW50IC0tPlxuICAgICAgQGlmICh0b29sYmFyVmlzaWJsZSgpICYmIGhhc01lc3NhZ2VDb250ZW50KCkpIHtcbiAgICAgICAgQGlmICh0b29sYmFyVGVtcGxhdGUgfHwgdG9vbGJhckNvbXBvbmVudCgpKSB7XG4gICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgW3Nsb3RdPVwidG9vbGJhclRlbXBsYXRlIHx8IHRvb2xiYXJDb21wb25lbnQoKVwiXG4gICAgICAgICAgICBbY29udGV4dF09XCJ0b29sYmFyQ29udGV4dCgpXCJcbiAgICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cIkNvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVRvb2xiYXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGRpdiBjb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyIFtpbnB1dENsYXNzXT1cInRvb2xiYXJDbGFzcygpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTFcIj5cbiAgICAgICAgICAgICAgPCEtLSBDb3B5IGJ1dHRvbiAtLT5cbiAgICAgICAgICAgICAgQGlmIChjb3B5QnV0dG9uVGVtcGxhdGUgfHwgY29weUJ1dHRvbkNvbXBvbmVudCgpKSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgICAgW3Nsb3RdPVwiY29weUJ1dHRvblRlbXBsYXRlIHx8IGNvcHlCdXR0b25Db21wb25lbnQoKVwiXG4gICAgICAgICAgICAgICAgICBbY29udGV4dF09XCJ7IGNvbnRlbnQ6IG1lc3NhZ2UoKS5jb250ZW50IHx8ICcnIH1cIlxuICAgICAgICAgICAgICAgICAgW2RlZmF1bHRDb21wb25lbnRdPVwiQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlQ29weUJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBbb3V0cHV0c109XCJjb3B5QnV0dG9uT3V0cHV0c1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8Y29waWxvdC1jaGF0LWFzc2lzdGFudC1tZXNzYWdlLWNvcHktYnV0dG9uXG4gICAgICAgICAgICAgICAgICBbY29udGVudF09XCJtZXNzYWdlKCkuY29udGVudFwiXG4gICAgICAgICAgICAgICAgICBbaW5wdXRDbGFzc109XCJjb3B5QnV0dG9uQ2xhc3MoKVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJoYW5kbGVDb3B5KClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2NvcGlsb3QtY2hhdC1hc3Npc3RhbnQtbWVzc2FnZS1jb3B5LWJ1dHRvbj5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDwhLS0gVGh1bWJzIHVwIGJ1dHRvbiAtIHNob3cgaWYgY3VzdG9tIHNsb3QgcHJvdmlkZWQgT1IgaWYgaGFuZGxlciBhdmFpbGFibGUgYXQgdG9wIGxldmVsIC0tPlxuICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgIHRodW1ic1VwQnV0dG9uQ29tcG9uZW50KCkgfHxcbiAgICAgICAgICAgICAgICB0aHVtYnNVcEJ1dHRvblRlbXBsYXRlIHx8XG4gICAgICAgICAgICAgICAgaGFuZGxlcnMuaGFzQXNzaXN0YW50VGh1bWJzVXBIYW5kbGVyKClcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgICAgW3Nsb3RdPVwidGh1bWJzVXBCdXR0b25UZW1wbGF0ZSB8fCB0aHVtYnNVcEJ1dHRvbkNvbXBvbmVudCgpXCJcbiAgICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cInt9XCJcbiAgICAgICAgICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cImRlZmF1bHRUaHVtYnNVcEJ1dHRvbkNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgICBbb3V0cHV0c109XCJ0aHVtYnNVcEJ1dHRvbk91dHB1dHNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2NvcGlsb3Qtc2xvdD5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDwhLS0gVGh1bWJzIGRvd24gYnV0dG9uIC0gc2hvdyBpZiBjdXN0b20gc2xvdCBwcm92aWRlZCBPUiBpZiBoYW5kbGVyIGF2YWlsYWJsZSBhdCB0b3AgbGV2ZWwgLS0+XG4gICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgdGh1bWJzRG93bkJ1dHRvbkNvbXBvbmVudCgpIHx8XG4gICAgICAgICAgICAgICAgdGh1bWJzRG93bkJ1dHRvblRlbXBsYXRlIHx8XG4gICAgICAgICAgICAgICAgaGFuZGxlcnMuaGFzQXNzaXN0YW50VGh1bWJzRG93bkhhbmRsZXIoKVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICA8Y29waWxvdC1zbG90XG4gICAgICAgICAgICAgICAgICBbc2xvdF09XCJcbiAgICAgICAgICAgICAgICAgICAgdGh1bWJzRG93bkJ1dHRvblRlbXBsYXRlIHx8IHRodW1ic0Rvd25CdXR0b25Db21wb25lbnQoKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cInt9XCJcbiAgICAgICAgICAgICAgICAgIFtkZWZhdWx0Q29tcG9uZW50XT1cImRlZmF1bHRUaHVtYnNEb3duQnV0dG9uQ29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICAgIFtvdXRwdXRzXT1cInRodW1ic0Rvd25CdXR0b25PdXRwdXRzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9jb3BpbG90LXNsb3Q+XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICA8IS0tIFJlYWQgYWxvdWQgYnV0dG9uIC0gb25seSBzaG93IGlmIGN1c3RvbSBzbG90IHByb3ZpZGVkIC0tPlxuICAgICAgICAgICAgICBAaWYgKHJlYWRBbG91ZEJ1dHRvbkNvbXBvbmVudCgpIHx8IHJlYWRBbG91ZEJ1dHRvblRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgICAgW3Nsb3RdPVwicmVhZEFsb3VkQnV0dG9uVGVtcGxhdGUgfHwgcmVhZEFsb3VkQnV0dG9uQ29tcG9uZW50KClcIlxuICAgICAgICAgICAgICAgICAgW2NvbnRleHRdPVwie31cIlxuICAgICAgICAgICAgICAgICAgW291dHB1dHNdPVwicmVhZEFsb3VkQnV0dG9uT3V0cHV0c1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgPCEtLSBSZWdlbmVyYXRlIGJ1dHRvbiAtIG9ubHkgc2hvdyBpZiBjdXN0b20gc2xvdCBwcm92aWRlZCAtLT5cbiAgICAgICAgICAgICAgQGlmIChyZWdlbmVyYXRlQnV0dG9uQ29tcG9uZW50KCkgfHwgcmVnZW5lcmF0ZUJ1dHRvblRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgPGNvcGlsb3Qtc2xvdFxuICAgICAgICAgICAgICAgICAgW3Nsb3RdPVwiXG4gICAgICAgICAgICAgICAgICAgIHJlZ2VuZXJhdGVCdXR0b25UZW1wbGF0ZSB8fCByZWdlbmVyYXRlQnV0dG9uQ29tcG9uZW50KClcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICBbY29udGV4dF09XCJ7fVwiXG4gICAgICAgICAgICAgICAgICBbb3V0cHV0c109XCJyZWdlbmVyYXRlQnV0dG9uT3V0cHV0c1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvY29waWxvdC1zbG90PlxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgPCEtLSBBZGRpdGlvbmFsIHRvb2xiYXIgaXRlbXMgLS0+XG4gICAgICAgICAgICAgIEBpZiAoYWRkaXRpb25hbFRvb2xiYXJJdGVtcygpKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWRkaXRpb25hbFRvb2xiYXJJdGVtcygpIHx8IG51bGxcIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLyogSW1wb3J0IEthVGVYIHN0eWxlcyAqL1xuICAgICAgQGltcG9ydCBcImthdGV4L2Rpc3Qva2F0ZXgubWluLmNzc1wiO1xuXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLyogQXRvbSBPbmUgTGlnaHQgdGhlbWUgZm9yIGhpZ2hsaWdodC5qcyAqL1xuICAgICAgLmhsanMge1xuICAgICAgICBjb2xvcjogcmdiKDU2LCA1OCwgNjYpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgLmhsanMtY29tbWVudCxcbiAgICAgIC5obGpzLXF1b3RlIHtcbiAgICAgICAgY29sb3I6ICNhMGExYTc7XG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIH1cblxuICAgICAgLmhsanMtZG9jdGFnLFxuICAgICAgLmhsanMtZm9ybXVsYSxcbiAgICAgIC5obGpzLWtleXdvcmQge1xuICAgICAgICBjb2xvcjogI2E2MjZhNDtcbiAgICAgIH1cblxuICAgICAgLmhsanMtZGVsZXRpb24sXG4gICAgICAuaGxqcy1uYW1lLFxuICAgICAgLmhsanMtc2VjdGlvbixcbiAgICAgIC5obGpzLXNlbGVjdG9yLXRhZyxcbiAgICAgIC5obGpzLXN1YnN0IHtcbiAgICAgICAgY29sb3I6ICNlNDU2NDk7XG4gICAgICB9XG5cbiAgICAgIC5obGpzLWxpdGVyYWwge1xuICAgICAgICBjb2xvcjogIzAxODRiYjtcbiAgICAgIH1cblxuICAgICAgLmhsanMtYWRkaXRpb24sXG4gICAgICAuaGxqcy1hdHRyaWJ1dGUsXG4gICAgICAuaGxqcy1tZXRhIC5obGpzLXN0cmluZyxcbiAgICAgIC5obGpzLXJlZ2V4cCxcbiAgICAgIC5obGpzLXN0cmluZyB7XG4gICAgICAgIGNvbG9yOiAjNTBhMTRmO1xuICAgICAgfVxuXG4gICAgICAuaGxqcy1hdHRyLFxuICAgICAgLmhsanMtbnVtYmVyLFxuICAgICAgLmhsanMtc2VsZWN0b3ItYXR0cixcbiAgICAgIC5obGpzLXNlbGVjdG9yLWNsYXNzLFxuICAgICAgLmhsanMtc2VsZWN0b3ItcHNldWRvLFxuICAgICAgLmhsanMtdGVtcGxhdGUtdmFyaWFibGUsXG4gICAgICAuaGxqcy10eXBlLFxuICAgICAgLmhsanMtdmFyaWFibGUge1xuICAgICAgICBjb2xvcjogIzk4NjgwMTtcbiAgICAgIH1cblxuICAgICAgLmhsanMtcGFyYW1zIHtcbiAgICAgICAgY29sb3I6IHJnYig1NiwgNTgsIDY2KTtcbiAgICAgIH1cblxuICAgICAgLmhsanMtYnVsbGV0LFxuICAgICAgLmhsanMtbGluayxcbiAgICAgIC5obGpzLW1ldGEsXG4gICAgICAuaGxqcy1zZWxlY3Rvci1pZCxcbiAgICAgIC5obGpzLXN5bWJvbCxcbiAgICAgIC5obGpzLXRpdGxlIHtcbiAgICAgICAgY29sb3I6ICM0MDc4ZjI7XG4gICAgICB9XG5cbiAgICAgIC5obGpzLWJ1aWx0X2luLFxuICAgICAgLmhsanMtY2xhc3MgLmhsanMtdGl0bGUsXG4gICAgICAuaGxqcy10aXRsZS5jbGFzc18ge1xuICAgICAgICBjb2xvcjogI2MxODQwMTtcbiAgICAgIH1cblxuICAgICAgLmhsanMtZW1waGFzaXMge1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICB9XG5cbiAgICAgIC5obGpzLXN0cm9uZyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICB9XG5cbiAgICAgIC5obGpzLWxpbmsge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgIH1cblxuICAgICAgLyogQXRvbSBPbmUgRGFyayB0aGVtZSBmb3IgaGlnaGxpZ2h0LmpzICovXG4gICAgICAuZGFyayAuaGxqcyB7XG4gICAgICAgIGNvbG9yOiAjYWJiMmJmO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgLmRhcmsgLmhsanMtY29tbWVudCxcbiAgICAgIC5kYXJrIC5obGpzLXF1b3RlIHtcbiAgICAgICAgY29sb3I6ICM1YzYzNzA7XG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIH1cblxuICAgICAgLmRhcmsgLmhsanMtZG9jdGFnLFxuICAgICAgLmRhcmsgLmhsanMtZm9ybXVsYSxcbiAgICAgIC5kYXJrIC5obGpzLWtleXdvcmQge1xuICAgICAgICBjb2xvcjogI2M2NzhkZDtcbiAgICAgIH1cblxuICAgICAgLmRhcmsgLmhsanMtZGVsZXRpb24sXG4gICAgICAuZGFyayAuaGxqcy1uYW1lLFxuICAgICAgLmRhcmsgLmhsanMtc2VjdGlvbixcbiAgICAgIC5kYXJrIC5obGpzLXNlbGVjdG9yLXRhZyxcbiAgICAgIC5kYXJrIC5obGpzLXN1YnN0IHtcbiAgICAgICAgY29sb3I6ICNlMDZjNzU7XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIC5obGpzLWxpdGVyYWwge1xuICAgICAgICBjb2xvcjogIzU2YjZjMjtcbiAgICAgIH1cblxuICAgICAgLmRhcmsgLmhsanMtYWRkaXRpb24sXG4gICAgICAuZGFyayAuaGxqcy1hdHRyaWJ1dGUsXG4gICAgICAuZGFyayAuaGxqcy1tZXRhIC5obGpzLXN0cmluZyxcbiAgICAgIC5kYXJrIC5obGpzLXJlZ2V4cCxcbiAgICAgIC5kYXJrIC5obGpzLXN0cmluZyB7XG4gICAgICAgIGNvbG9yOiAjOThjMzc5O1xuICAgICAgfVxuXG4gICAgICAuZGFyayAuaGxqcy1hdHRyLFxuICAgICAgLmRhcmsgLmhsanMtbnVtYmVyLFxuICAgICAgLmRhcmsgLmhsanMtc2VsZWN0b3ItYXR0cixcbiAgICAgIC5kYXJrIC5obGpzLXNlbGVjdG9yLWNsYXNzLFxuICAgICAgLmRhcmsgLmhsanMtc2VsZWN0b3ItcHNldWRvLFxuICAgICAgLmRhcmsgLmhsanMtdGVtcGxhdGUtdmFyaWFibGUsXG4gICAgICAuZGFyayAuaGxqcy10eXBlLFxuICAgICAgLmRhcmsgLmhsanMtdmFyaWFibGUge1xuICAgICAgICBjb2xvcjogI2QxOWE2NjtcbiAgICAgIH1cblxuICAgICAgLmRhcmsgLmhsanMtYnVsbGV0LFxuICAgICAgLmRhcmsgLmhsanMtbGluayxcbiAgICAgIC5kYXJrIC5obGpzLW1ldGEsXG4gICAgICAuZGFyayAuaGxqcy1zZWxlY3Rvci1pZCxcbiAgICAgIC5kYXJrIC5obGpzLXN5bWJvbCxcbiAgICAgIC5kYXJrIC5obGpzLXRpdGxlIHtcbiAgICAgICAgY29sb3I6ICM2MWFlZWU7XG4gICAgICB9XG5cbiAgICAgIC5kYXJrIC5obGpzLWJ1aWx0X2luLFxuICAgICAgLmRhcmsgLmhsanMtY2xhc3MgLmhsanMtdGl0bGUsXG4gICAgICAuZGFyayAuaGxqcy10aXRsZS5jbGFzc18ge1xuICAgICAgICBjb2xvcjogI2U2YzA3YjtcbiAgICAgIH1cblxuICAgICAgLmRhcmsgLmhsanMtcGFyYW1zIHtcbiAgICAgICAgY29sb3I6ICNhYmIyYmY7IC8qIHNhbWUgYXMgcmVndWxhciB0ZXh0ICovXG4gICAgICB9XG5cbiAgICAgIC5kYXJrIC5obGpzLWVtcGhhc2lzIHtcbiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgfVxuXG4gICAgICAuZGFyayAuaGxqcy1zdHJvbmcge1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgfVxuXG4gICAgICAuZGFyayAuaGxqcy1saW5rIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlIHtcbiAgLy8gQ2FwdHVyZSB0ZW1wbGF0ZXMgZnJvbSBjb250ZW50IHByb2plY3Rpb25cbiAgQENvbnRlbnRDaGlsZChcIm1hcmtkb3duUmVuZGVyZXJcIiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBtYXJrZG93blJlbmRlcmVyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxBc3Npc3RhbnRNZXNzYWdlTWFya2Rvd25SZW5kZXJlckNvbnRleHQ+O1xuICBAQ29udGVudENoaWxkKFwidG9vbGJhclwiLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHRvb2xiYXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyQ29udGV4dD47XG4gIEBDb250ZW50Q2hpbGQoXCJjb3B5QnV0dG9uXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgY29weUJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8QXNzaXN0YW50TWVzc2FnZUNvcHlCdXR0b25Db250ZXh0PjtcbiAgQENvbnRlbnRDaGlsZChcInRodW1ic1VwQnV0dG9uXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgdGh1bWJzVXBCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPFRodW1ic1VwQnV0dG9uQ29udGV4dD47XG4gIEBDb250ZW50Q2hpbGQoXCJ0aHVtYnNEb3duQnV0dG9uXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgdGh1bWJzRG93bkJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8VGh1bWJzRG93bkJ1dHRvbkNvbnRleHQ+O1xuICBAQ29udGVudENoaWxkKFwicmVhZEFsb3VkQnV0dG9uXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcmVhZEFsb3VkQnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxSZWFkQWxvdWRCdXR0b25Db250ZXh0PjtcbiAgQENvbnRlbnRDaGlsZChcInJlZ2VuZXJhdGVCdXR0b25cIiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICByZWdlbmVyYXRlQnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxSZWdlbmVyYXRlQnV0dG9uQ29udGV4dD47XG4gIEBDb250ZW50Q2hpbGQoXCJ0b29sQ2FsbHNWaWV3XCIsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgdG9vbENhbGxzVmlld1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvLyBDbGFzcyBpbnB1dHMgZm9yIHN0eWxpbmcgZGVmYXVsdCBjb21wb25lbnRzXG4gIHJlYWRvbmx5IG1hcmtkb3duUmVuZGVyZXJDbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgdG9vbGJhckNsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjb3B5QnV0dG9uQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHRodW1ic1VwQnV0dG9uQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHRodW1ic0Rvd25CdXR0b25DbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgcmVhZEFsb3VkQnV0dG9uQ2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHJlZ2VuZXJhdGVCdXR0b25DbGFzcyA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgdG9vbENhbGxzVmlld0NsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8vIENvbXBvbmVudCBpbnB1dHMgZm9yIG92ZXJyaWRlc1xuICByZWFkb25seSBtYXJrZG93blJlbmRlcmVyQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSB0b29sYmFyQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjb3B5QnV0dG9uQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSB0aHVtYnNVcEJ1dHRvbkNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgdGh1bWJzRG93bkJ1dHRvbkNvbXBvbmVudCA9IGlucHV0PFR5cGU8YW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgcmVhZEFsb3VkQnV0dG9uQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSByZWdlbmVyYXRlQnV0dG9uQ29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSB0b29sQ2FsbHNWaWV3Q29tcG9uZW50ID0gaW5wdXQ8VHlwZTxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8vIFJlZ3VsYXIgaW5wdXRzXG4gIHJlYWRvbmx5IG1lc3NhZ2UgPSBpbnB1dC5yZXF1aXJlZDxBc3Npc3RhbnRNZXNzYWdlPigpO1xuICByZWFkb25seSBtZXNzYWdlcyA9IGlucHV0PE1lc3NhZ2VbXT4oW10pO1xuICByZWFkb25seSBpc0xvYWRpbmcgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxUb29sYmFySXRlbXMgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkPihcbiAgICB1bmRlZmluZWQsXG4gICk7XG4gIHJlYWRvbmx5IHRvb2xiYXJWaXNpYmxlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IGlucHV0Q2xhc3MgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgLy8gREkgc2VydmljZSBleHBvc2VzIGhhbmRsZXIgYXZhaWxhYmlsaXR5IHNjb3BlZCB0byBDb3BpbG90Q2hhdFZpZXdcbiAgLy8gTWFrZSBpdCBvcHRpb25hbCB3aXRoIGEgZGVmYXVsdCBmYWxsYmFjayBmb3IgdGVzdGluZ1xuICBoYW5kbGVyczogQ29waWxvdENoYXRWaWV3SGFuZGxlcnM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KENvcGlsb3RDaGF0Vmlld0hhbmRsZXJzKVxuICAgIGhhbmRsZXJzPzogQ29waWxvdENoYXRWaWV3SGFuZGxlcnMgfCBudWxsLFxuICApIHtcbiAgICB0aGlzLmhhbmRsZXJzID0gaGFuZGxlcnMgfHwgbmV3IENvcGlsb3RDaGF0Vmlld0hhbmRsZXJzKCk7XG4gIH1cblxuICAvLyBPdXRwdXQgZXZlbnRzXG4gIHRodW1ic1VwID0gb3V0cHV0PENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZU9uVGh1bWJzVXBQcm9wcz4oKTtcbiAgdGh1bWJzRG93biA9IG91dHB1dDxDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VPblRodW1ic0Rvd25Qcm9wcz4oKTtcbiAgcmVhZEFsb3VkID0gb3V0cHV0PENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZU9uUmVhZEFsb3VkUHJvcHM+KCk7XG4gIHJlZ2VuZXJhdGUgPSBvdXRwdXQ8Q29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlT25SZWdlbmVyYXRlUHJvcHM+KCk7XG5cbiAgLy8gU2lnbmFsc1xuICBjdXN0b21DbGFzcyA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgLy8gQ29tcHV0ZWQgdmFsdWVzXG4gIGNvbXB1dGVkQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIGNuKFxuICAgICAgXCJwcm9zZSBtYXgtdy1mdWxsIGJyZWFrLXdvcmRzIGRhcms6cHJvc2UtaW52ZXJ0XCIsXG4gICAgICB0aGlzLmN1c3RvbUNsYXNzKCksXG4gICAgKTtcbiAgfSk7XG5cbiAgLy8gRGVmYXVsdCBjb21wb25lbnRzXG4gIHByb3RlY3RlZCByZWFkb25seSBkZWZhdWx0VGh1bWJzVXBCdXR0b25Db21wb25lbnQgPVxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVRodW1ic1VwQnV0dG9uO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFRodW1ic0Rvd25CdXR0b25Db21wb25lbnQgPVxuICAgIENvcGlsb3RDaGF0QXNzaXN0YW50TWVzc2FnZVRodW1ic0Rvd25CdXR0b247XG4gIHByb3RlY3RlZCByZWFkb25seSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VSZW5kZXJlciA9XG4gICAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlUmVuZGVyZXI7XG4gIHByb3RlY3RlZCByZWFkb25seSBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyID1cbiAgICBDb3BpbG90Q2hhdEFzc2lzdGFudE1lc3NhZ2VUb29sYmFyO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlQ29weUJ1dHRvbiA9XG4gICAgQ29waWxvdENoYXRBc3Npc3RhbnRNZXNzYWdlQ29weUJ1dHRvbjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IENvcGlsb3RDaGF0VG9vbENhbGxzVmlldyA9IENvcGlsb3RDaGF0VG9vbENhbGxzVmlldztcblxuICAvLyBDb250ZXh0IGZvciBzbG90cyAocmVhY3RpdmUgdmlhIHNpZ25hbHMpXG4gIG1hcmtkb3duUmVuZGVyZXJDb250ZXh0ID0gY29tcHV0ZWQ8QXNzaXN0YW50TWVzc2FnZU1hcmtkb3duUmVuZGVyZXJDb250ZXh0PihcbiAgICAoKSA9PiAoe1xuICAgICAgY29udGVudDogdGhpcy5tZXNzYWdlKCk/LmNvbnRlbnQgfHwgXCJcIixcbiAgICB9KSxcbiAgKTtcblxuICAvLyBPdXRwdXQgbWFwcyBmb3Igc2xvdHNcbiAgY29weUJ1dHRvbk91dHB1dHMgPSB7IGNsaWNrZWQ6ICgpID0+IHRoaXMuaGFuZGxlQ29weSgpIH07XG4gIHRodW1ic1VwQnV0dG9uT3V0cHV0cyA9IHsgY2xpY2tlZDogKCkgPT4gdGhpcy5oYW5kbGVUaHVtYnNVcCgpIH07XG4gIHRodW1ic0Rvd25CdXR0b25PdXRwdXRzID0geyBjbGlja2VkOiAoKSA9PiB0aGlzLmhhbmRsZVRodW1ic0Rvd24oKSB9O1xuICByZWFkQWxvdWRCdXR0b25PdXRwdXRzID0geyBjbGlja2VkOiAoKSA9PiB0aGlzLmhhbmRsZVJlYWRBbG91ZCgpIH07XG4gIHJlZ2VuZXJhdGVCdXR0b25PdXRwdXRzID0geyBjbGlja2VkOiAoKSA9PiB0aGlzLmhhbmRsZVJlZ2VuZXJhdGUoKSB9O1xuXG4gIHRvb2xiYXJDb250ZXh0ID0gY29tcHV0ZWQ8QXNzaXN0YW50TWVzc2FnZVRvb2xiYXJDb250ZXh0PigoKSA9PiAoe1xuICAgIGNoaWxkcmVuOiBudWxsLCAvLyBXaWxsIGJlIHBvcHVsYXRlZCBieSB0aGUgdG9vbGJhciBjb250ZW50XG4gIH0pKTtcblxuICAvLyBSZXR1cm4gdHJ1ZSBpZiBhc3Npc3RhbnQgbWVzc2FnZSBoYXMgbm9uLWVtcHR5IHRleHQgY29udGVudFxuICBoYXNNZXNzYWdlQ29udGVudCgpOiBib29sZWFuIHtcbiAgICBjb25zdCByYXcgPSAodGhpcy5tZXNzYWdlKCk/LmNvbnRlbnQgPz8gXCJcIikgYXMgYW55O1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0eXBlb2YgcmF3ID09PSBcInN0cmluZ1wiID8gcmF3IDogU3RyaW5nKHJhdyA/PyBcIlwiKTtcbiAgICByZXR1cm4gY29udGVudC50cmltKCkubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHRvb2xDYWxsc1ZpZXdDb250ZXh0ID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UoKSxcbiAgICBtZXNzYWdlczogdGhpcy5tZXNzYWdlcygpLFxuICAgIGlzTG9hZGluZzogdGhpcy5pc0xvYWRpbmcoKSxcbiAgfSkpO1xuXG4gIGhhbmRsZUNvcHkoKTogdm9pZCB7XG4gICAgLy8gQ29weSBpcyBoYW5kbGVkIGJ5IHRoZSBidXR0b24gY29tcG9uZW50IGl0c2VsZlxuICAgIC8vIFRoaXMgaXMganVzdCBmb3IgYW55IGFkZGl0aW9uYWwgbG9naWMgaWYgbmVlZGVkXG4gIH1cblxuICBoYW5kbGVUaHVtYnNVcCgpOiB2b2lkIHtcbiAgICB0aGlzLnRodW1ic1VwLmVtaXQoeyBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UoKSB9KTtcbiAgfVxuXG4gIGhhbmRsZVRodW1ic0Rvd24oKTogdm9pZCB7XG4gICAgdGhpcy50aHVtYnNEb3duLmVtaXQoeyBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UoKSB9KTtcbiAgfVxuXG4gIGhhbmRsZVJlYWRBbG91ZCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlYWRBbG91ZC5lbWl0KHsgbWVzc2FnZTogdGhpcy5tZXNzYWdlKCkgfSk7XG4gIH1cblxuICBoYW5kbGVSZWdlbmVyYXRlKCk6IHZvaWQge1xuICAgIHRoaXMucmVnZW5lcmF0ZS5lbWl0KHsgbWVzc2FnZTogdGhpcy5tZXNzYWdlKCkgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -193,4 +193,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
193
193
  type: ViewChild,
194
194
  args: ["canvasRef", { static: true }]
195
195
  }] } });
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LWF1ZGlvLXJlY29yZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LWF1ZGlvLXJlY29yZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBSVQsTUFBTSxFQUNOLFFBQVEsRUFDUix1QkFBdUIsRUFDdkIsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxrQkFBa0IsR0FDbkIsTUFBTSw0QkFBNEIsQ0FBQzs7QUFxQnBDLE1BQU0sT0FBTyx3QkFBd0I7SUFFbkMsU0FBUyxDQUFpQztJQUUxQyxVQUFVLEdBQUcsS0FBSyxFQUFzQixDQUFDO0lBQ3pDLGlCQUFpQixHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUUxQyxXQUFXLEdBQUcsTUFBTSxFQUFzQixDQUFDO0lBQzNDLEtBQUssR0FBRyxNQUFNLEVBQXNCLENBQUM7SUFFckMsK0JBQStCO0lBQy9CLEtBQUssR0FBRyxNQUFNLENBQXFCLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLFlBQVksR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFdEMsa0JBQWtCO0lBQ2xCLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQzVCLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFDO1FBQ3ZDLE9BQU8sR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0lBRUgsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDekIsUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNyQixLQUFLLFdBQVc7Z0JBQ2QsT0FBTyxjQUFjLENBQUM7WUFD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QyxHQUFHLFFBQVEsQ0FBQztZQUUzRCxxQkFBcUI7WUFDckIsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFNBQVMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUU1RCxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO3dHQTlNVSx3QkFBd0I7NEZBQXhCLHdCQUF3Qiw0bkJBZHpCOzs7Ozs7OztHQVFUOzs0RkFNVSx3QkFBd0I7a0JBbkJwQyxTQUFTOytCQUNFLDZCQUE2QixjQUMzQixJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksWUFDM0I7Ozs7Ozs7O0dBUVQsUUFFSzt3QkFDSixxQ0FBcUMsRUFBRSxNQUFNO3FCQUM5Qzt3REFJRCxTQUFTO3NCQURSLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBPbkRlc3Ryb3ksXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIEF1ZGlvUmVjb3JkZXJTdGF0ZSxcbiAgQXVkaW9SZWNvcmRlckVycm9yLFxufSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtaW5wdXQudHlwZXNcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImNvcGlsb3QtY2hhdC1hdWRpby1yZWNvcmRlclwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtjbGFzc109XCJjb21wdXRlZENsYXNzKClcIj5cbiAgICAgIDxjYW52YXNcbiAgICAgICAgI2NhbnZhc1JlZlxuICAgICAgICBjbGFzcz1cInctZnVsbCBoLWZ1bGxcIlxuICAgICAgICBbc3R5bGUuaW1hZ2VSZW5kZXJpbmddPVwiJ3BpeGVsYXRlZCdcIlxuICAgICAgPjwvY2FudmFzPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtdLFxuICBob3N0OiB7XG4gICAgXCJbY2xhc3MuY29waWxvdC1jaGF0LWF1ZGlvLXJlY29yZGVyXVwiOiBcInRydWVcIixcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRBdWRpb1JlY29yZGVyIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZChcImNhbnZhc1JlZlwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBjYW52YXNSZWYhOiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcblxuICBpbnB1dENsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICBpbnB1dFNob3dDb250cm9scyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBzdGF0ZUNoYW5nZSA9IG91dHB1dDxBdWRpb1JlY29yZGVyU3RhdGU+KCk7XG4gIGVycm9yID0gb3V0cHV0PEF1ZGlvUmVjb3JkZXJFcnJvcj4oKTtcblxuICAvLyBTaWduYWxzIGZvciBzdGF0ZSBtYW5hZ2VtZW50XG4gIHN0YXRlID0gc2lnbmFsPEF1ZGlvUmVjb3JkZXJTdGF0ZT4oXCJpZGxlXCIpO1xuICBzaG93Q29udHJvbHMgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIC8vIENvbXB1dGVkIHZhbHVlc1xuICBjb21wdXRlZENsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGJhc2VDbGFzc2VzID0gXCJoLTExIHctZnVsbCBweC01XCI7XG4gICAgcmV0dXJuIGAke2Jhc2VDbGFzc2VzfSAke3RoaXMuaW5wdXRDbGFzcygpIHx8IFwiXCJ9YDtcbiAgfSk7XG5cbiAgc3RhdHVzVGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBzd2l0Y2ggKHRoaXMuc3RhdGUoKSkge1xuICAgICAgY2FzZSBcInJlY29yZGluZ1wiOlxuICAgICAgICByZXR1cm4gXCJSZWNvcmRpbmcuLi5cIjtcbiAgICAgIGNhc2UgXCJwcm9jZXNzaW5nXCI6XG4gICAgICAgIHJldHVybiBcIlByb2Nlc3NpbmcuLi5cIjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBcIlJlYWR5XCI7XG4gICAgfVxuICB9KTtcblxuICAvLyBBbmltYXRpb24gYW5kIGNhbnZhcyBwcm9wZXJ0aWVzXG4gIHByaXZhdGUgYW5pbWF0aW9uRnJhbWVJZD86IG51bWJlcjtcblxuICAvLyBTeW5jIGlucHV0U2hvd0NvbnRyb2xzIGludG8gaW50ZXJuYWwgc2lnbmFsXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIFVzZSBtaWNyb3Rhc2sgdG8gYXZvaWQgY29uc3RydWN0b3Igc2lnbmFsIHdyaXRlcyBjb21wbGFpbnQgaW4gc29tZSBzZXR1cHNcbiAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuc2hvd0NvbnRyb2xzLnNldCh0aGlzLmlucHV0U2hvd0NvbnRyb2xzKCkgPz8gZmFsc2UpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3RhcnRBbmltYXRpb24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHJlY29yZGluZyBhdWRpb1xuICAgKi9cbiAgYXN5bmMgc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLnN0YXRlKCkgPT09IFwicmVjb3JkaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNldFN0YXRlKFwicmVjb3JkaW5nXCIpO1xuICAgICAgdGhpcy5zdGFydEFuaW1hdGlvbigpO1xuXG4gICAgICAvLyBJbiBhIHJlYWwgaW1wbGVtZW50YXRpb24sIHRoaXMgd291bGQgc3RhcnQgYWN0dWFsIGF1ZGlvIHJlY29yZGluZ1xuICAgICAgLy8gRm9yIG5vdywgd2UganVzdCBzaW11bGF0ZSB0aGUgcmVjb3JkaW5nIHN0YXRlXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBBdWRpb1JlY29yZGVyRXJyb3IoXG4gICAgICAgIGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBcIkZhaWxlZCB0byBzdGFydCByZWNvcmRpbmdcIlxuICAgICAgKTtcbiAgICAgIHRoaXMuZXJyb3IuZW1pdChlcnJvcik7XG4gICAgICB0aGlzLnNldFN0YXRlKFwiaWRsZVwiKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIHJlY29yZGluZyBhdWRpbyBhbmQgcmV0dXJuIGJsb2JcbiAgICovXG4gIGFzeW5jIHN0b3AoKTogUHJvbWlzZTxCbG9iPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoXCJpZGxlXCIpO1xuICAgICAgLy8gUmV0dXJuIGVtcHR5IGJsb2IgLSBzdHViIGltcGxlbWVudGF0aW9uXG4gICAgICBjb25zdCBlbXB0eUJsb2IgPSBuZXcgQmxvYihbXSwgeyB0eXBlOiBcImF1ZGlvL3dlYm1cIiB9KTtcbiAgICAgIHJldHVybiBlbXB0eUJsb2I7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBBdWRpb1JlY29yZGVyRXJyb3IoXG4gICAgICAgIGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBcIkZhaWxlZCB0byBzdG9wIHJlY29yZGluZ1wiXG4gICAgICApO1xuICAgICAgdGhpcy5lcnJvci5lbWl0KGVycm9yKTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoXCJpZGxlXCIpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjdXJyZW50IHJlY29yZGVyIHN0YXRlXG4gICAqL1xuICBnZXRTdGF0ZSgpOiBBdWRpb1JlY29yZGVyU3RhdGUge1xuICAgIHJldHVybiB0aGlzLnN0YXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcG9zZSBvZiByZXNvdXJjZXNcbiAgICovXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wQW5pbWF0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIHNldFN0YXRlKHN0YXRlOiBBdWRpb1JlY29yZGVyU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlLnNldChzdGF0ZSk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KHN0YXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRBbmltYXRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgY2FudmFzID0gdGhpcy5jYW52YXNSZWYubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoIWNhbnZhcykgcmV0dXJuO1xuXG4gICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICBpZiAoIWN0eCkgcmV0dXJuO1xuXG4gICAgY29uc3QgZHJhdyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHJlY3QgPSBjYW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBkcHIgPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xuXG4gICAgICAvLyBVcGRhdGUgY2FudmFzIGRpbWVuc2lvbnMgaWYgY29udGFpbmVyIHJlc2l6ZWRcbiAgICAgIGlmIChcbiAgICAgICAgY2FudmFzLndpZHRoICE9PSByZWN0LndpZHRoICogZHByIHx8XG4gICAgICAgIGNhbnZhcy5oZWlnaHQgIT09IHJlY3QuaGVpZ2h0ICogZHByXG4gICAgICApIHtcbiAgICAgICAgY2FudmFzLndpZHRoID0gcmVjdC53aWR0aCAqIGRwcjtcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IHJlY3QuaGVpZ2h0ICogZHByO1xuICAgICAgICBjdHguc2NhbGUoZHByLCBkcHIpO1xuICAgICAgICBjdHguaW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIENvbmZpZ3VyYXRpb25cbiAgICAgIGNvbnN0IGJhcldpZHRoID0gMjtcbiAgICAgIGNvbnN0IG1pbkhlaWdodCA9IDI7XG4gICAgICBjb25zdCBtYXhIZWlnaHQgPSAyMDtcbiAgICAgIGNvbnN0IGdhcCA9IDI7XG4gICAgICBjb25zdCBudW1TYW1wbGVzID0gTWF0aC5jZWlsKHJlY3Qud2lkdGggLyAoYmFyV2lkdGggKyBnYXApKTtcblxuICAgICAgLy8gR2V0IGxvdWRuZXNzIGRhdGFcbiAgICAgIGNvbnN0IGxvdWRuZXNzRGF0YSA9IHRoaXMuZ2V0TG91ZG5lc3MobnVtU2FtcGxlcyk7XG5cbiAgICAgIC8vIENsZWFyIGNhbnZhc1xuICAgICAgY3R4LmNsZWFyUmVjdCgwLCAwLCByZWN0LndpZHRoLCByZWN0LmhlaWdodCk7XG5cbiAgICAgIC8vIEdldCBjdXJyZW50IGZvcmVncm91bmQgY29sb3JcbiAgICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGNhbnZhcyk7XG4gICAgICBjb25zdCBjdXJyZW50Rm9yZWdyb3VuZCA9IGNvbXB1dGVkU3R5bGUuY29sb3I7XG5cbiAgICAgIC8vIERyYXcgYmFyc1xuICAgICAgY3R4LmZpbGxTdHlsZSA9IGN1cnJlbnRGb3JlZ3JvdW5kO1xuICAgICAgY29uc3QgY2VudGVyWSA9IHJlY3QuaGVpZ2h0IC8gMjtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsb3VkbmVzc0RhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qgc2FtcGxlID0gbG91ZG5lc3NEYXRhW2ldID8/IDA7XG4gICAgICAgIGNvbnN0IGJhckhlaWdodCA9IE1hdGgucm91bmQoXG4gICAgICAgICAgc2FtcGxlICogKG1heEhlaWdodCAtIG1pbkhlaWdodCkgKyBtaW5IZWlnaHRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgeCA9IE1hdGgucm91bmQoaSAqIChiYXJXaWR0aCArIGdhcCkpO1xuICAgICAgICBjb25zdCB5ID0gTWF0aC5yb3VuZChjZW50ZXJZIC0gYmFySGVpZ2h0IC8gMik7XG5cbiAgICAgICAgY3R4LmZpbGxSZWN0KHgsIHksIGJhcldpZHRoLCBiYXJIZWlnaHQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmFuaW1hdGlvbkZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZHJhdyk7XG4gICAgfTtcblxuICAgIGRyYXcoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcEFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbmltYXRpb25GcmFtZUlkKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmFuaW1hdGlvbkZyYW1lSWQpO1xuICAgICAgdGhpcy5hbmltYXRpb25GcmFtZUlkID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG91ZG5lc3MobjogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IGVsYXBzZWQgPSBEYXRlLm5vdygpIC8gMTAwMDsgLy8gVXNlIGN1cnJlbnQgdGltZXN0YW1wIGRpcmVjdGx5XG4gICAgY29uc3Qgc2FtcGxlczogbnVtYmVyW10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAvLyBDcmVhdGUgYSBwb3NpdGlvbiB0aGF0IG1vdmVzIGZyb20gbGVmdCB0byByaWdodCBvdmVyIHRpbWVcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gKGkgLyBuKSAqIDEwICsgZWxhcHNlZCAqIDAuNTsgLy8gU2Nyb2xsIHNwZWVkIChzbG93ZXIpXG5cbiAgICAgIC8vIEdlbmVyYXRlIHdhdmVmb3JtIHVzaW5nIG11bHRpcGxlIHNpbmUgd2F2ZXMgZm9yIHJlYWxpc21cbiAgICAgIGNvbnN0IHdhdmUxID0gTWF0aC5zaW4ocG9zaXRpb24gKiAyKSAqIDAuMztcbiAgICAgIGNvbnN0IHdhdmUyID0gTWF0aC5zaW4ocG9zaXRpb24gKiA1ICsgZWxhcHNlZCkgKiAwLjI7XG4gICAgICBjb25zdCB3YXZlMyA9IE1hdGguc2luKHBvc2l0aW9uICogMC41ICsgZWxhcHNlZCAqIDAuMykgKiAwLjQ7XG5cbiAgICAgIC8vIEFkZCBzb21lIHJhbmRvbW5lc3MgZm9yIG5hdHVyYWwgdmFyaWF0aW9uXG4gICAgICBjb25zdCBub2lzZSA9IChNYXRoLnJhbmRvbSgpIC0gMC41KSAqIDAuMTtcblxuICAgICAgLy8gQ29tYmluZSB3YXZlcyBhbmQgYWRkIGVudmVsb3BlIGZvciByZWFsaXN0aWMgYW1wbGl0dWRlIHZhcmlhdGlvblxuICAgICAgY29uc3QgZW52ZWxvcGUgPSBNYXRoLnNpbihlbGFwc2VkICogMC43KSAqIDAuNSArIDAuNTsgLy8gU2xvdyBhbXBsaXR1ZGUgbW9kdWxhdGlvblxuICAgICAgbGV0IGFtcGxpdHVkZSA9ICh3YXZlMSArIHdhdmUyICsgd2F2ZTMgKyBub2lzZSkgKiBlbnZlbG9wZTtcblxuICAgICAgLy8gQ2xhbXAgdG8gMC0xIHJhbmdlXG4gICAgICBhbXBsaXR1ZGUgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBhbXBsaXR1ZGUgKiAwLjUgKyAwLjMpKTtcblxuICAgICAgc2FtcGxlcy5wdXNoKGFtcGxpdHVkZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNhbXBsZXM7XG4gIH1cbn1cbiJdfQ==
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LWF1ZGlvLXJlY29yZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NoYXQvY29waWxvdC1jaGF0LWF1ZGlvLXJlY29yZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBSVQsTUFBTSxFQUNOLFFBQVEsRUFDUix1QkFBdUIsRUFDdkIsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxrQkFBa0IsR0FDbkIsTUFBTSw0QkFBNEIsQ0FBQzs7QUFxQnBDLE1BQU0sT0FBTyx3QkFBd0I7SUFFbkMsU0FBUyxDQUFpQztJQUUxQyxVQUFVLEdBQUcsS0FBSyxFQUFzQixDQUFDO0lBQ3pDLGlCQUFpQixHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUUxQyxXQUFXLEdBQUcsTUFBTSxFQUFzQixDQUFDO0lBQzNDLEtBQUssR0FBRyxNQUFNLEVBQXNCLENBQUM7SUFFckMsK0JBQStCO0lBQy9CLEtBQUssR0FBRyxNQUFNLENBQXFCLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLFlBQVksR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFdEMsa0JBQWtCO0lBQ2xCLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQzVCLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFDO1FBQ3ZDLE9BQU8sR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0lBRUgsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDekIsUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNyQixLQUFLLFdBQVc7Z0JBQ2QsT0FBTyxjQUFjLENBQUM7WUFD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QyxHQUFHLFFBQVEsQ0FBQztZQUUzRCxxQkFBcUI7WUFDckIsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFNBQVMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUU1RCxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO3dHQTlNVSx3QkFBd0I7NEZBQXhCLHdCQUF3Qiw0bkJBZHpCOzs7Ozs7OztHQVFUOzs0RkFNVSx3QkFBd0I7a0JBbkJwQyxTQUFTOytCQUNFLDZCQUE2QixjQUMzQixJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksWUFDM0I7Ozs7Ozs7O0dBUVQsUUFFSzt3QkFDSixxQ0FBcUMsRUFBRSxNQUFNO3FCQUM5Qzt3REFJRCxTQUFTO3NCQURSLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBPbkRlc3Ryb3ksXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIEF1ZGlvUmVjb3JkZXJTdGF0ZSxcbiAgQXVkaW9SZWNvcmRlckVycm9yLFxufSBmcm9tIFwiLi9jb3BpbG90LWNoYXQtaW5wdXQudHlwZXNcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImNvcGlsb3QtY2hhdC1hdWRpby1yZWNvcmRlclwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtjbGFzc109XCJjb21wdXRlZENsYXNzKClcIj5cbiAgICAgIDxjYW52YXNcbiAgICAgICAgI2NhbnZhc1JlZlxuICAgICAgICBjbGFzcz1cInctZnVsbCBoLWZ1bGxcIlxuICAgICAgICBbc3R5bGUuaW1hZ2VSZW5kZXJpbmddPVwiJ3BpeGVsYXRlZCdcIlxuICAgICAgPjwvY2FudmFzPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtdLFxuICBob3N0OiB7XG4gICAgXCJbY2xhc3MuY29waWxvdC1jaGF0LWF1ZGlvLXJlY29yZGVyXVwiOiBcInRydWVcIixcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRBdWRpb1JlY29yZGVyIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZChcImNhbnZhc1JlZlwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBjYW52YXNSZWYhOiBFbGVtZW50UmVmPEhUTUxDYW52YXNFbGVtZW50PjtcblxuICBpbnB1dENsYXNzID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuICBpbnB1dFNob3dDb250cm9scyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBzdGF0ZUNoYW5nZSA9IG91dHB1dDxBdWRpb1JlY29yZGVyU3RhdGU+KCk7XG4gIGVycm9yID0gb3V0cHV0PEF1ZGlvUmVjb3JkZXJFcnJvcj4oKTtcblxuICAvLyBTaWduYWxzIGZvciBzdGF0ZSBtYW5hZ2VtZW50XG4gIHN0YXRlID0gc2lnbmFsPEF1ZGlvUmVjb3JkZXJTdGF0ZT4oXCJpZGxlXCIpO1xuICBzaG93Q29udHJvbHMgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIC8vIENvbXB1dGVkIHZhbHVlc1xuICBjb21wdXRlZENsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGJhc2VDbGFzc2VzID0gXCJoLTExIHctZnVsbCBweC01XCI7XG4gICAgcmV0dXJuIGAke2Jhc2VDbGFzc2VzfSAke3RoaXMuaW5wdXRDbGFzcygpIHx8IFwiXCJ9YDtcbiAgfSk7XG5cbiAgc3RhdHVzVGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBzd2l0Y2ggKHRoaXMuc3RhdGUoKSkge1xuICAgICAgY2FzZSBcInJlY29yZGluZ1wiOlxuICAgICAgICByZXR1cm4gXCJSZWNvcmRpbmcuLi5cIjtcbiAgICAgIGNhc2UgXCJwcm9jZXNzaW5nXCI6XG4gICAgICAgIHJldHVybiBcIlByb2Nlc3NpbmcuLi5cIjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBcIlJlYWR5XCI7XG4gICAgfVxuICB9KTtcblxuICAvLyBBbmltYXRpb24gYW5kIGNhbnZhcyBwcm9wZXJ0aWVzXG4gIHByaXZhdGUgYW5pbWF0aW9uRnJhbWVJZD86IG51bWJlcjtcblxuICAvLyBTeW5jIGlucHV0U2hvd0NvbnRyb2xzIGludG8gaW50ZXJuYWwgc2lnbmFsXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIFVzZSBtaWNyb3Rhc2sgdG8gYXZvaWQgY29uc3RydWN0b3Igc2lnbmFsIHdyaXRlcyBjb21wbGFpbnQgaW4gc29tZSBzZXR1cHNcbiAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuc2hvd0NvbnRyb2xzLnNldCh0aGlzLmlucHV0U2hvd0NvbnRyb2xzKCkgPz8gZmFsc2UpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3RhcnRBbmltYXRpb24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHJlY29yZGluZyBhdWRpb1xuICAgKi9cbiAgYXN5bmMgc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0aGlzLnN0YXRlKCkgPT09IFwicmVjb3JkaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNldFN0YXRlKFwicmVjb3JkaW5nXCIpO1xuICAgICAgdGhpcy5zdGFydEFuaW1hdGlvbigpO1xuXG4gICAgICAvLyBJbiBhIHJlYWwgaW1wbGVtZW50YXRpb24sIHRoaXMgd291bGQgc3RhcnQgYWN0dWFsIGF1ZGlvIHJlY29yZGluZ1xuICAgICAgLy8gRm9yIG5vdywgd2UganVzdCBzaW11bGF0ZSB0aGUgcmVjb3JkaW5nIHN0YXRlXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBBdWRpb1JlY29yZGVyRXJyb3IoXG4gICAgICAgIGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBcIkZhaWxlZCB0byBzdGFydCByZWNvcmRpbmdcIixcbiAgICAgICk7XG4gICAgICB0aGlzLmVycm9yLmVtaXQoZXJyb3IpO1xuICAgICAgdGhpcy5zZXRTdGF0ZShcImlkbGVcIik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RvcCByZWNvcmRpbmcgYXVkaW8gYW5kIHJldHVybiBibG9iXG4gICAqL1xuICBhc3luYyBzdG9wKCk6IFByb21pc2U8QmxvYj4ge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnNldFN0YXRlKFwiaWRsZVwiKTtcbiAgICAgIC8vIFJldHVybiBlbXB0eSBibG9iIC0gc3R1YiBpbXBsZW1lbnRhdGlvblxuICAgICAgY29uc3QgZW1wdHlCbG9iID0gbmV3IEJsb2IoW10sIHsgdHlwZTogXCJhdWRpby93ZWJtXCIgfSk7XG4gICAgICByZXR1cm4gZW1wdHlCbG9iO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgQXVkaW9SZWNvcmRlckVycm9yKFxuICAgICAgICBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogXCJGYWlsZWQgdG8gc3RvcCByZWNvcmRpbmdcIixcbiAgICAgICk7XG4gICAgICB0aGlzLmVycm9yLmVtaXQoZXJyb3IpO1xuICAgICAgdGhpcy5zZXRTdGF0ZShcImlkbGVcIik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgcmVjb3JkZXIgc3RhdGVcbiAgICovXG4gIGdldFN0YXRlKCk6IEF1ZGlvUmVjb3JkZXJTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwb3NlIG9mIHJlc291cmNlc1xuICAgKi9cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BBbmltYXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U3RhdGUoc3RhdGU6IEF1ZGlvUmVjb3JkZXJTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUuc2V0KHN0YXRlKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlLmVtaXQoc3RhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydEFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBjYW52YXMgPSB0aGlzLmNhbnZhc1JlZi5uYXRpdmVFbGVtZW50O1xuICAgIGlmICghY2FudmFzKSByZXR1cm47XG5cbiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgIGlmICghY3R4KSByZXR1cm47XG5cbiAgICBjb25zdCBkcmF3ID0gKCkgPT4ge1xuICAgICAgY29uc3QgcmVjdCA9IGNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGRwciA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG5cbiAgICAgIC8vIFVwZGF0ZSBjYW52YXMgZGltZW5zaW9ucyBpZiBjb250YWluZXIgcmVzaXplZFxuICAgICAgaWYgKFxuICAgICAgICBjYW52YXMud2lkdGggIT09IHJlY3Qud2lkdGggKiBkcHIgfHxcbiAgICAgICAgY2FudmFzLmhlaWdodCAhPT0gcmVjdC5oZWlnaHQgKiBkcHJcbiAgICAgICkge1xuICAgICAgICBjYW52YXMud2lkdGggPSByZWN0LndpZHRoICogZHByO1xuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gcmVjdC5oZWlnaHQgKiBkcHI7XG4gICAgICAgIGN0eC5zY2FsZShkcHIsIGRwcik7XG4gICAgICAgIGN0eC5pbWFnZVNtb290aGluZ0VuYWJsZWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ29uZmlndXJhdGlvblxuICAgICAgY29uc3QgYmFyV2lkdGggPSAyO1xuICAgICAgY29uc3QgbWluSGVpZ2h0ID0gMjtcbiAgICAgIGNvbnN0IG1heEhlaWdodCA9IDIwO1xuICAgICAgY29uc3QgZ2FwID0gMjtcbiAgICAgIGNvbnN0IG51bVNhbXBsZXMgPSBNYXRoLmNlaWwocmVjdC53aWR0aCAvIChiYXJXaWR0aCArIGdhcCkpO1xuXG4gICAgICAvLyBHZXQgbG91ZG5lc3MgZGF0YVxuICAgICAgY29uc3QgbG91ZG5lc3NEYXRhID0gdGhpcy5nZXRMb3VkbmVzcyhudW1TYW1wbGVzKTtcblxuICAgICAgLy8gQ2xlYXIgY2FudmFzXG4gICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIHJlY3Qud2lkdGgsIHJlY3QuaGVpZ2h0KTtcblxuICAgICAgLy8gR2V0IGN1cnJlbnQgZm9yZWdyb3VuZCBjb2xvclxuICAgICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoY2FudmFzKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRGb3JlZ3JvdW5kID0gY29tcHV0ZWRTdHlsZS5jb2xvcjtcblxuICAgICAgLy8gRHJhdyBiYXJzXG4gICAgICBjdHguZmlsbFN0eWxlID0gY3VycmVudEZvcmVncm91bmQ7XG4gICAgICBjb25zdCBjZW50ZXJZID0gcmVjdC5oZWlnaHQgLyAyO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxvdWRuZXNzRGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBzYW1wbGUgPSBsb3VkbmVzc0RhdGFbaV0gPz8gMDtcbiAgICAgICAgY29uc3QgYmFySGVpZ2h0ID0gTWF0aC5yb3VuZChcbiAgICAgICAgICBzYW1wbGUgKiAobWF4SGVpZ2h0IC0gbWluSGVpZ2h0KSArIG1pbkhlaWdodCxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgeCA9IE1hdGgucm91bmQoaSAqIChiYXJXaWR0aCArIGdhcCkpO1xuICAgICAgICBjb25zdCB5ID0gTWF0aC5yb3VuZChjZW50ZXJZIC0gYmFySGVpZ2h0IC8gMik7XG5cbiAgICAgICAgY3R4LmZpbGxSZWN0KHgsIHksIGJhcldpZHRoLCBiYXJIZWlnaHQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmFuaW1hdGlvbkZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZHJhdyk7XG4gICAgfTtcblxuICAgIGRyYXcoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcEFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbmltYXRpb25GcmFtZUlkKSB7XG4gICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmFuaW1hdGlvbkZyYW1lSWQpO1xuICAgICAgdGhpcy5hbmltYXRpb25GcmFtZUlkID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG91ZG5lc3MobjogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IGVsYXBzZWQgPSBEYXRlLm5vdygpIC8gMTAwMDsgLy8gVXNlIGN1cnJlbnQgdGltZXN0YW1wIGRpcmVjdGx5XG4gICAgY29uc3Qgc2FtcGxlczogbnVtYmVyW10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAvLyBDcmVhdGUgYSBwb3NpdGlvbiB0aGF0IG1vdmVzIGZyb20gbGVmdCB0byByaWdodCBvdmVyIHRpbWVcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gKGkgLyBuKSAqIDEwICsgZWxhcHNlZCAqIDAuNTsgLy8gU2Nyb2xsIHNwZWVkIChzbG93ZXIpXG5cbiAgICAgIC8vIEdlbmVyYXRlIHdhdmVmb3JtIHVzaW5nIG11bHRpcGxlIHNpbmUgd2F2ZXMgZm9yIHJlYWxpc21cbiAgICAgIGNvbnN0IHdhdmUxID0gTWF0aC5zaW4ocG9zaXRpb24gKiAyKSAqIDAuMztcbiAgICAgIGNvbnN0IHdhdmUyID0gTWF0aC5zaW4ocG9zaXRpb24gKiA1ICsgZWxhcHNlZCkgKiAwLjI7XG4gICAgICBjb25zdCB3YXZlMyA9IE1hdGguc2luKHBvc2l0aW9uICogMC41ICsgZWxhcHNlZCAqIDAuMykgKiAwLjQ7XG5cbiAgICAgIC8vIEFkZCBzb21lIHJhbmRvbW5lc3MgZm9yIG5hdHVyYWwgdmFyaWF0aW9uXG4gICAgICBjb25zdCBub2lzZSA9IChNYXRoLnJhbmRvbSgpIC0gMC41KSAqIDAuMTtcblxuICAgICAgLy8gQ29tYmluZSB3YXZlcyBhbmQgYWRkIGVudmVsb3BlIGZvciByZWFsaXN0aWMgYW1wbGl0dWRlIHZhcmlhdGlvblxuICAgICAgY29uc3QgZW52ZWxvcGUgPSBNYXRoLnNpbihlbGFwc2VkICogMC43KSAqIDAuNSArIDAuNTsgLy8gU2xvdyBhbXBsaXR1ZGUgbW9kdWxhdGlvblxuICAgICAgbGV0IGFtcGxpdHVkZSA9ICh3YXZlMSArIHdhdmUyICsgd2F2ZTMgKyBub2lzZSkgKiBlbnZlbG9wZTtcblxuICAgICAgLy8gQ2xhbXAgdG8gMC0xIHJhbmdlXG4gICAgICBhbXBsaXR1ZGUgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBhbXBsaXR1ZGUgKiAwLjUgKyAwLjMpKTtcblxuICAgICAgc2FtcGxlcy5wdXNoKGFtcGxpdHVkZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNhbXBsZXM7XG4gIH1cbn1cbiJdfQ==
@@ -296,4 +296,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
296
296
  </button>
297
297
  ` }]
298
298
  }] });
299
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LWJ1dHRvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvY2hhdC9jb3BpbG90LWNoYXQtYnV0dG9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixRQUFRLEVBQ1IsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLE9BQU8sRUFDUCxHQUFHLEVBQ0gsQ0FBQyxFQUNELEtBQUssRUFDTCxJQUFJLEdBQ0wsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBRWpDLHVEQUF1RDtBQUN2RCxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQ25CLGdHQUFnRyxFQUNoRyxpRUFBaUUsRUFDakUsdUJBQXVCLEVBQ3ZCLCtFQUErRSxDQUNoRixDQUFDO0FBRUYsTUFBTSx1QkFBdUIsR0FBRyxFQUFFLENBQ2hDLGdCQUFnQjtBQUNoQixzQkFBc0I7QUFDdEIscUJBQXFCO0FBQ3JCLFlBQVk7QUFDWixnRUFBZ0U7QUFDaEUsbUJBQW1CO0FBQ25CLHNCQUFzQjtBQUN0QixlQUFlO0FBQ2YsbUJBQW1CO0FBQ25CLGVBQWU7QUFDZixvQkFBb0I7QUFDcEIsZUFBZTtBQUNmLDZDQUE2QztBQUM3QyxrQkFBa0I7QUFDbEIsbUZBQW1GLEVBQ25GLHFEQUFxRCxDQUN0RCxDQUFDO0FBRUYsTUFBTSx5QkFBeUIsR0FBRyxFQUFF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YUFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDNUIsTUFBTSxZQUFZLEdBQ2hCLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxTQUFTO1lBQzFCLENBQUMsQ0FBQyx1QkFBdUI7WUFDekIsQ0FBQyxDQUFDLHlCQUF5QixDQUFDO1FBQ2hDLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7d0dBcEJVLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLHdIQWR6Qjs7Ozs7Ozs7Ozs7R0FXVCx5RUFkUyxZQUFZLCtCQUFFLGNBQWM7OzRGQWlCM0Isd0JBQXdCO2tCQXBCcEMsU0FBUztpQ0FDSSxJQUFJLFlBQ04sNkJBQTZCLFdBQzlCLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxtQkFDdEIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxZQUMzQjs7Ozs7Ozs7Ozs7R0FXVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtcbiAgTHVjaWRlQW5ndWxhck1vZHVsZSxcbiAgQXJyb3dVcCxcbiAgTWljLFxuICBYLFxuICBDaGVjayxcbiAgUGx1cyxcbn0gZnJvbSBcImx1Y2lkZS1hbmd1bGFyXCI7XG5pbXBvcnQgeyBpbmplY3RDaGF0TGFiZWxzIH0gZnJvbSBcIi4uLy4uL2NoYXQtY29uZmlnXCI7XG5pbXBvcnQgeyBDb3BpbG90VG9vbHRpcCB9IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL3Rvb2x0aXBcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5cbi8vIEJhc2UgYnV0dG9uIGNsYXNzZXMgbWF0Y2hpbmcgUmVhY3QncyBidXR0b24gdmFyaWFudHNcbmNvbnN0IGJ1dHRvbkJhc2UgPSBjbihcbiAgXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTIgd2hpdGVzcGFjZS1ub3dyYXAgcm91bmRlZC1tZCB0ZXh0LXNtIGZvbnQtbWVkaXVtXCIsXG4gIFwidHJhbnNpdGlvbi1hbGwgZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpvcGFjaXR5LTUwXCIsXG4gIFwic2hyaW5rLTAgb3V0bGluZS1ub25lXCIsXG4gIFwiZm9jdXMtdmlzaWJsZTpib3JkZXItcmluZyBmb2N1cy12aXNpYmxlOnJpbmctcmluZy81MCBmb2N1cy12aXNpYmxlOnJpbmctWzNweF1cIlxuKTtcblxuY29uc3QgY2hhdElucHV0VG9vbGJhclByaW1hcnkgPSBjbihcbiAgXCJjdXJzb3ItcG9pbnRlclwiLFxuICAvLyBCYWNrZ3JvdW5kIGFuZCB0ZXh0XG4gIFwiYmctYmxhY2sgdGV4dC13aGl0ZVwiLFxuICAvLyBEYXJrIG1vZGVcbiAgXCJkYXJrOmJnLXdoaXRlIGRhcms6dGV4dC1ibGFjayBkYXJrOmZvY3VzLXZpc2libGU6b3V0bGluZS13aGl0ZVwiLFxuICAvLyBTaGFwZSBhbmQgc2l6aW5nXG4gIFwicm91bmRlZC1mdWxsIGgtOSB3LTlcIixcbiAgLy8gSW50ZXJhY3Rpb25zXG4gIFwidHJhbnNpdGlvbi1jb2xvcnNcIixcbiAgLy8gRm9jdXMgc3RhdGVzXG4gIFwiZm9jdXM6b3V0bGluZS1ub25lXCIsXG4gIC8vIEhvdmVyIHN0YXRlc1xuICBcImhvdmVyOm9wYWNpdHktNzAgZGlzYWJsZWQ6aG92ZXI6b3BhY2l0eS0xMDBcIixcbiAgLy8gRGlzYWJsZWQgc3RhdGVzXG4gIFwiZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOmJnLVsjMDAwMDAwMTRdIGRpc2FibGVkOnRleHQtW3JnYigxMywxMywxMyldXCIsXG4gIFwiZGFyazpkaXNhYmxlZDpiZy1bIzQ1NDU0NV0gZGFyazpkaXNhYmxlZDp0ZXh0LXdoaXRlXCJcbik7XG5cbmNvbnN0IGNoYXRJbnB1dFRvb2xiYXJTZWNvbmRhcnkgPSBjbihcbiAgXCJjdXJzb3ItcG9pbnRlclwiLFxuICAvLyBCYWNrZ3JvdW5kIGFuZCB0ZXh0XG4gIFwiYmctdHJhbnNwYXJlbnQgdGV4dC1bIzQ0NDQ0NF1cIixcbiAgLy8gRGFyayBtb2RlXG4gIFwiZGFyazp0ZXh0LXdoaXRlIGRhcms6Ym9yZGVyLVsjNDA0MDQwXVwiLFxuICAvLyBTaGFwZSBhbmQgc2l6aW5nXG4gIFwicm91bmRlZC1mdWxsIGgtOSB3LTlcIixcbiAgLy8gSW50ZXJhY3Rpb25zXG4gIFwidHJhbnNpdGlvbi1jb2xvcnNcIixcbiAgLy8gRm9jdXMgc3RhdGVzXG4gIFwiZm9jdXM6b3V0bGluZS1ub25lXCIsXG4gIC8vIEhvdmVyIHN0YXRlc1xuICBcImhvdmVyOmJnLVsjZjhmOGY4XSBob3Zlcjp0ZXh0LVsjMzMzMzMzXVwiLFxuICBcImRhcms6aG92ZXI6YmctWyM0MDQwNDBdIGRhcms6aG92ZXI6dGV4dC1bI0ZGRkZGRl1cIixcbiAgLy8gRGlzYWJsZWQgc3RhdGVzXG4gIFwiZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTBcIixcbiAgXCJkaXNhYmxlZDpob3ZlcjpiZy10cmFuc3BhcmVudCBkaXNhYmxlZDpob3Zlcjp0ZXh0LVsjNDQ0NDQ0XVwiLFxuICBcImRhcms6ZGlzYWJsZWQ6aG92ZXI6YmctdHJhbnNwYXJlbnQgZGFyazpkaXNhYmxlZDpob3Zlcjp0ZXh0LVsjQ0NDQ0NDXVwiXG4pO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6IFwiY29waWxvdC1jaGF0LXNlbmQtYnV0dG9uXCIsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEx1Y2lkZUFuZ3VsYXJNb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwibXItWzEwcHhdXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICAgIFtjbGFzc109XCJidXR0b25DbGFzc1wiXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrKClcIlxuICAgICAgPlxuICAgICAgICA8bHVjaWRlLWFuZ3VsYXIgW2ltZ109XCJBcnJvd1VwSWNvblwiIFtzaXplXT1cIjE4XCI+PC9sdWNpZGUtYW5ndWxhcj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgYF0sXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0U2VuZEJ1dHRvbiB7XG4gIGRpc2FibGVkID0gaW5wdXQoZmFsc2UpO1xuICBjbGlja2VkID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgQXJyb3dVcEljb24gPSBBcnJvd1VwO1xuICBidXR0b25DbGFzcyA9IGNuKGJ1dHRvbkJhc2UsIGNoYXRJbnB1dFRvb2xiYXJQcmltYXJ5KTtcblxuICBvbkNsaWNrKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5jbGlja2VkLmVtaXQoKTtcbiAgICB9XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiBcImNvcGlsb3QtY2hhdC1zdGFydC10cmFuc2NyaWJlLWJ1dHRvblwiLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBMdWNpZGVBbmd1bGFyTW9kdWxlLCBDb3BpbG90VG9vbHRpcF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgW2NsYXNzXT1cImJ1dHRvbkNsYXNzXCJcbiAgICAgIFtjb3BpbG90VG9vbHRpcF09XCJsYWJlbFwiXG4gICAgICB0b29sdGlwUG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAoY2xpY2spPVwib25DbGljaygpXCJcbiAgICA+XG4gICAgICA8bHVjaWRlLWFuZ3VsYXIgW2ltZ109XCJNaWNJY29uXCIgW3NpemVdPVwiMThcIj48L2x1Y2lkZS1hbmd1bGFyPlxuICAgIDwvYnV0dG9uPlxuICBgLFxuICBzdHlsZXM6IFtgYF0sXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0U3RhcnRUcmFuc2NyaWJlQnV0dG9uIHtcbiAgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSk7XG4gIGNsaWNrZWQgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICByZWFkb25seSBsYWJlbHMgPSBpbmplY3RDaGF0TGFiZWxzKCk7XG5cbiAgcmVhZG9ubHkgTWljSWNvbiA9IE1pYztcbiAgYnV0dG9uQ2xhc3MgPSBjbihidXR0b25CYXNlLCBjaGF0SW5wdXRUb29sYmFyU2Vjb25kYXJ5LCBcIm1yLTJcIik7XG5cbiAgZ2V0IGxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzLmNoYXRJbnB1dFRvb2xiYXJTdGFydFRyYW5zY3JpYmVCdXR0b25MYWJlbDtcbiAgfVxuXG4gIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgIHRoaXMuY2xpY2tlZC5lbWl0KCk7XG4gICAgfVxuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogXCJjb3BpbG90LWNoYXQtY2FuY2VsLXRyYW5zY3JpYmUtYnV0dG9uXCIsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEx1Y2lkZUFuZ3VsYXJNb2R1bGUsIENvcGlsb3RUb29sdGlwXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICBbY2xhc3NdPVwiYnV0dG9uQ2xhc3NcIlxuICAgICAgW2NvcGlsb3RUb29sdGlwXT1cImxhYmVsXCJcbiAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCJcbiAgICAgIChjbGljayk9XCJvbkNsaWNrKClcIlxuICAgID5cbiAgICAgIDxsdWNpZGUtYW5ndWxhciBbaW1nXT1cIlhJY29uXCIgW3NpemVdPVwiMThcIj48L2x1Y2lkZS1hbmd1bGFyPlxuICAgIDwvYnV0dG9uPlxuICBgLFxuICBzdHlsZXM6IFtgYF0sXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0Q2FuY2VsVHJhbnNjcmliZUJ1dHRvbiB7XG4gIGRpc2FibGVkID0gaW5wdXQoZmFsc2UpO1xuICBjbGlja2VkID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgbGFiZWxzID0gaW5qZWN0Q2hhdExhYmVscygpO1xuXG4gIHJlYWRvbmx5IFhJY29uID0gWDtcbiAgYnV0dG9uQ2xhc3MgPSBjbihidXR0b25CYXNlLCBjaGF0SW5wdXRUb29sYmFyU2Vjb25kYXJ5LCBcIm1yLTJcIik7XG5cbiAgZ2V0IGxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzLmNoYXRJbnB1dFRvb2xiYXJDYW5jZWxUcmFuc2NyaWJlQnV0dG9uTGFiZWw7XG4gIH1cblxuICBvbkNsaWNrKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLmNsaWNrZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6IFwiY29waWxvdC1jaGF0LWZpbmlzaC10cmFuc2NyaWJlLWJ1dHRvblwiLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBMdWNpZGVBbmd1bGFyTW9kdWxlLCBDb3BpbG90VG9vbHRpcF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgW2NsYXNzXT1cImJ1dHRvbkNsYXNzXCJcbiAgICAgIFtjb3BpbG90VG9vbHRpcF09XCJsYWJlbFwiXG4gICAgICB0b29sdGlwUG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAoY2xpY2spPVwib25DbGljaygpXCJcbiAgICA+XG4gICAgICA8bHVjaWRlLWFuZ3VsYXIgW2ltZ109XCJDaGVja0ljb25cIiBbc2l6ZV09XCIxOFwiPjwvbHVjaWRlLWFuZ3VsYXI+XG4gICAgPC9idXR0b24+XG4gIGAsXG4gIHN0eWxlczogW2BgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRGaW5pc2hUcmFuc2NyaWJlQnV0dG9uIHtcbiAgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSk7XG4gIGNsaWNrZWQgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICByZWFkb25seSBsYWJlbHMgPSBpbmplY3RDaGF0TGFiZWxzKCk7XG5cbiAgcmVhZG9ubHkgQ2hlY2tJY29uID0gQ2hlY2s7XG4gIGJ1dHRvbkNsYXNzID0gY24oYnV0dG9uQmFzZSwgY2hhdElucHV0VG9vbGJhclNlY29uZGFyeSwgXCJtci1bMTBweF1cIik7XG5cbiAgZ2V0IGxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzLmNoYXRJbnB1dFRvb2xiYXJGaW5pc2hUcmFuc2NyaWJlQnV0dG9uTGFiZWw7XG4gIH1cblxuICBvbkNsaWNrKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLmNsaWNrZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6IFwiY29waWxvdC1jaGF0LWFkZC1maWxlLWJ1dHRvblwiLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBMdWNpZGVBbmd1bGFyTW9kdWxlLCBDb3BpbG90VG9vbHRpcF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgW2NsYXNzXT1cImJ1dHRvbkNsYXNzXCJcbiAgICAgIFtjb3BpbG90VG9vbHRpcF09XCJsYWJlbFwiXG4gICAgICB0b29sdGlwUG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAoY2xpY2spPVwib25DbGljaygpXCJcbiAgICA+XG4gICAgICA8bHVjaWRlLWFuZ3VsYXIgW2ltZ109XCJQbHVzSWNvblwiIFtzaXplXT1cIjIwXCI+PC9sdWNpZGUtYW5ndWxhcj5cbiAgICA8L2J1dHRvbj5cbiAgYCxcbiAgc3R5bGVzOiBbYGBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90Q2hhdEFkZEZpbGVCdXR0b24ge1xuICBkaXNhYmxlZCA9IGlucHV0KGZhbHNlKTtcbiAgY2xpY2tlZCA9IG91dHB1dDx2b2lkPigpO1xuXG4gIHJlYWRvbmx5IGxhYmVscyA9IGluamVjdENoYXRMYWJlbHMoKTtcblxuICByZWFkb25seSBQbHVzSWNvbiA9IFBsdXM7XG4gIGJ1dHRvbkNsYXNzID0gY24oYnV0dG9uQmFzZSwgY2hhdElucHV0VG9vbGJhclNlY29uZGFyeSwgXCJtbC0yXCIpO1xuXG4gIGdldCBsYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmxhYmVscy5jaGF0SW5wdXRUb29sYmFyQWRkQnV0dG9uTGFiZWw7XG4gIH1cblxuICBvbkNsaWNrKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLmNsaWNrZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBCYXNlIHRvb2xiYXIgYnV0dG9uIGNvbXBvbmVudCB0aGF0IG90aGVyIGJ1dHRvbnMgY2FuIHVzZVxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiBcImNvcGlsb3QtY2hhdC10b29sYmFyLWJ1dHRvblwiLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDb3BpbG90VG9vbHRpcF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgW2NsYXNzXT1cImNvbXB1dGVkQ2xhc3MoKVwiXG4gICAgICBbY29waWxvdFRvb2x0aXBdPVwidGl0bGUoKVwiXG4gICAgICB0b29sdGlwUG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAoY2xpY2spPVwib25DbGljaygpXCJcbiAgICA+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9idXR0b24+XG4gIGAsXG4gIHN0eWxlczogW2BgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRUb29sYmFyQnV0dG9uIHtcbiAgZGlzYWJsZWQgPSBzaWduYWwoZmFsc2UpO1xuICB2YXJpYW50ID0gc2lnbmFsPFwicHJpbWFyeVwiIHwgXCJzZWNvbmRhcnlcIj4oXCJzZWNvbmRhcnlcIik7XG4gIGN1c3RvbUNsYXNzID0gc2lnbmFsKFwiXCIpO1xuICB0aXRsZSA9IHNpZ25hbChcIlwiKTtcblxuICBjbGlja2VkID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgY29tcHV0ZWRDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB2YXJpYW50Q2xhc3MgPVxuICAgICAgdGhpcy52YXJpYW50KCkgPT09IFwicHJpbWFyeVwiXG4gICAgICAgID8gY2hhdElucHV0VG9vbGJhclByaW1hcnlcbiAgICAgICAgOiBjaGF0SW5wdXRUb29sYmFyU2Vjb25kYXJ5O1xuICAgIHJldHVybiBjbihidXR0b25CYXNlLCB2YXJpYW50Q2xhc3MsIHRoaXMuY3VzdG9tQ2xhc3MoKSk7XG4gIH0pO1xuXG4gIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgIHRoaXMuY2xpY2tlZC5lbWl0KCk7XG4gICAgfVxuICB9XG59XG4iXX0=
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29waWxvdC1jaGF0LWJ1dHRvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvY2hhdC9jb3BpbG90LWNoYXQtYnV0dG9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixRQUFRLEVBQ1IsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLE9BQU8sRUFDUCxHQUFHLEVBQ0gsQ0FBQyxFQUNELEtBQUssRUFDTCxJQUFJLEdBQ0wsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBRWpDLHVEQUF1RDtBQUN2RCxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQ25CLGdHQUFnRyxFQUNoRyxpRUFBaUUsRUFDakUsdUJBQXVCLEVBQ3ZCLCtFQUErRSxDQUNoRixDQUFDO0FBRUYsTUFBTSx1QkFBdUIsR0FBRyxFQUFFLENBQ2hDLGdCQUFnQjtBQUNoQixzQkFBc0I7QUFDdEIscUJBQXFCO0FBQ3JCLFlBQVk7QUFDWixnRUFBZ0U7QUFDaEUsbUJBQW1CO0FBQ25CLHNCQUFzQjtBQUN0QixlQUFlO0FBQ2YsbUJBQW1CO0FBQ25CLGVBQWU7QUFDZixvQkFBb0I7QUFDcEIsZUFBZTtBQUNmLDZDQUE2QztBQUM3QyxrQkFBa0I7QUFDbEIsbUZBQW1GLEVBQ25GLHFEQUFxRCxDQUN0RCxDQUFDO0FBRUYsTUFBTSx5QkFBeUIsR0FBRyxFQUFF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YUFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDNUIsTUFBTSxZQUFZLEdBQ2hCLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxTQUFTO1lBQzFCLENBQUMsQ0FBQyx1QkFBdUI7WUFDekIsQ0FBQyxDQUFDLHlCQUF5QixDQUFDO1FBQ2hDLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7d0dBcEJVLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLHdIQWR6Qjs7Ozs7Ozs7Ozs7R0FXVCx5RUFkUyxZQUFZLCtCQUFFLGNBQWM7OzRGQWlCM0Isd0JBQXdCO2tCQXBCcEMsU0FBUztpQ0FDSSxJQUFJLFlBQ04sNkJBQTZCLFdBQzlCLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxtQkFDdEIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxZQUMzQjs7Ozs7Ozs7Ozs7R0FXVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtcbiAgTHVjaWRlQW5ndWxhck1vZHVsZSxcbiAgQXJyb3dVcCxcbiAgTWljLFxuICBYLFxuICBDaGVjayxcbiAgUGx1cyxcbn0gZnJvbSBcImx1Y2lkZS1hbmd1bGFyXCI7XG5pbXBvcnQgeyBpbmplY3RDaGF0TGFiZWxzIH0gZnJvbSBcIi4uLy4uL2NoYXQtY29uZmlnXCI7XG5pbXBvcnQgeyBDb3BpbG90VG9vbHRpcCB9IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL3Rvb2x0aXBcIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5cbi8vIEJhc2UgYnV0dG9uIGNsYXNzZXMgbWF0Y2hpbmcgUmVhY3QncyBidXR0b24gdmFyaWFudHNcbmNvbnN0IGJ1dHRvbkJhc2UgPSBjbihcbiAgXCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTIgd2hpdGVzcGFjZS1ub3dyYXAgcm91bmRlZC1tZCB0ZXh0LXNtIGZvbnQtbWVkaXVtXCIsXG4gIFwidHJhbnNpdGlvbi1hbGwgZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpvcGFjaXR5LTUwXCIsXG4gIFwic2hyaW5rLTAgb3V0bGluZS1ub25lXCIsXG4gIFwiZm9jdXMtdmlzaWJsZTpib3JkZXItcmluZyBmb2N1cy12aXNpYmxlOnJpbmctcmluZy81MCBmb2N1cy12aXNpYmxlOnJpbmctWzNweF1cIixcbik7XG5cbmNvbnN0IGNoYXRJbnB1dFRvb2xiYXJQcmltYXJ5ID0gY24oXG4gIFwiY3Vyc29yLXBvaW50ZXJcIixcbiAgLy8gQmFja2dyb3VuZCBhbmQgdGV4dFxuICBcImJnLWJsYWNrIHRleHQtd2hpdGVcIixcbiAgLy8gRGFyayBtb2RlXG4gIFwiZGFyazpiZy13aGl0ZSBkYXJrOnRleHQtYmxhY2sgZGFyazpmb2N1cy12aXNpYmxlOm91dGxpbmUtd2hpdGVcIixcbiAgLy8gU2hhcGUgYW5kIHNpemluZ1xuICBcInJvdW5kZWQtZnVsbCBoLTkgdy05XCIsXG4gIC8vIEludGVyYWN0aW9uc1xuICBcInRyYW5zaXRpb24tY29sb3JzXCIsXG4gIC8vIEZvY3VzIHN0YXRlc1xuICBcImZvY3VzOm91dGxpbmUtbm9uZVwiLFxuICAvLyBIb3ZlciBzdGF0ZXNcbiAgXCJob3ZlcjpvcGFjaXR5LTcwIGRpc2FibGVkOmhvdmVyOm9wYWNpdHktMTAwXCIsXG4gIC8vIERpc2FibGVkIHN0YXRlc1xuICBcImRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpiZy1bIzAwMDAwMDE0XSBkaXNhYmxlZDp0ZXh0LVtyZ2IoMTMsMTMsMTMpXVwiLFxuICBcImRhcms6ZGlzYWJsZWQ6YmctWyM0NTQ1NDVdIGRhcms6ZGlzYWJsZWQ6dGV4dC13aGl0ZVwiLFxuKTtcblxuY29uc3QgY2hhdElucHV0VG9vbGJhclNlY29uZGFyeSA9IGNuKFxuICBcImN1cnNvci1wb2ludGVyXCIsXG4gIC8vIEJhY2tncm91bmQgYW5kIHRleHRcbiAgXCJiZy10cmFuc3BhcmVudCB0ZXh0LVsjNDQ0NDQ0XVwiLFxuICAvLyBEYXJrIG1vZGVcbiAgXCJkYXJrOnRleHQtd2hpdGUgZGFyazpib3JkZXItWyM0MDQwNDBdXCIsXG4gIC8vIFNoYXBlIGFuZCBzaXppbmdcbiAgXCJyb3VuZGVkLWZ1bGwgaC05IHctOVwiLFxuICAvLyBJbnRlcmFjdGlvbnNcbiAgXCJ0cmFuc2l0aW9uLWNvbG9yc1wiLFxuICAvLyBGb2N1cyBzdGF0ZXNcbiAgXCJmb2N1czpvdXRsaW5lLW5vbmVcIixcbiAgLy8gSG92ZXIgc3RhdGVzXG4gIFwiaG92ZXI6YmctWyNmOGY4ZjhdIGhvdmVyOnRleHQtWyMzMzMzMzNdXCIsXG4gIFwiZGFyazpob3ZlcjpiZy1bIzQwNDA0MF0gZGFyazpob3Zlcjp0ZXh0LVsjRkZGRkZGXVwiLFxuICAvLyBEaXNhYmxlZCBzdGF0ZXNcbiAgXCJkaXNhYmxlZDpjdXJzb3Itbm90LWFsbG93ZWQgZGlzYWJsZWQ6b3BhY2l0eS01MFwiLFxuICBcImRpc2FibGVkOmhvdmVyOmJnLXRyYW5zcGFyZW50IGRpc2FibGVkOmhvdmVyOnRleHQtWyM0NDQ0NDRdXCIsXG4gIFwiZGFyazpkaXNhYmxlZDpob3ZlcjpiZy10cmFuc3BhcmVudCBkYXJrOmRpc2FibGVkOmhvdmVyOnRleHQtWyNDQ0NDQ0NdXCIsXG4pO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6IFwiY29waWxvdC1jaGF0LXNlbmQtYnV0dG9uXCIsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEx1Y2lkZUFuZ3VsYXJNb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwibXItWzEwcHhdXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICAgIFtjbGFzc109XCJidXR0b25DbGFzc1wiXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrKClcIlxuICAgICAgPlxuICAgICAgICA8bHVjaWRlLWFuZ3VsYXIgW2ltZ109XCJBcnJvd1VwSWNvblwiIFtzaXplXT1cIjE4XCI+PC9sdWNpZGUtYW5ndWxhcj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgYF0sXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0U2VuZEJ1dHRvbiB7XG4gIGRpc2FibGVkID0gaW5wdXQoZmFsc2UpO1xuICBjbGlja2VkID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgQXJyb3dVcEljb24gPSBBcnJvd1VwO1xuICBidXR0b25DbGFzcyA9IGNuKGJ1dHRvbkJhc2UsIGNoYXRJbnB1dFRvb2xiYXJQcmltYXJ5KTtcblxuICBvbkNsaWNrKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5jbGlja2VkLmVtaXQoKTtcbiAgICB9XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiBcImNvcGlsb3QtY2hhdC1zdGFydC10cmFuc2NyaWJlLWJ1dHRvblwiLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBMdWNpZGVBbmd1bGFyTW9kdWxlLCBDb3BpbG90VG9vbHRpcF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgW2NsYXNzXT1cImJ1dHRvbkNsYXNzXCJcbiAgICAgIFtjb3BpbG90VG9vbHRpcF09XCJsYWJlbFwiXG4gICAgICB0b29sdGlwUG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAoY2xpY2spPVwib25DbGljaygpXCJcbiAgICA+XG4gICAgICA8bHVjaWRlLWFuZ3VsYXIgW2ltZ109XCJNaWNJY29uXCIgW3NpemVdPVwiMThcIj48L2x1Y2lkZS1hbmd1bGFyPlxuICAgIDwvYnV0dG9uPlxuICBgLFxuICBzdHlsZXM6IFtgYF0sXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0U3RhcnRUcmFuc2NyaWJlQnV0dG9uIHtcbiAgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSk7XG4gIGNsaWNrZWQgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICByZWFkb25seSBsYWJlbHMgPSBpbmplY3RDaGF0TGFiZWxzKCk7XG5cbiAgcmVhZG9ubHkgTWljSWNvbiA9IE1pYztcbiAgYnV0dG9uQ2xhc3MgPSBjbihidXR0b25CYXNlLCBjaGF0SW5wdXRUb29sYmFyU2Vjb25kYXJ5LCBcIm1yLTJcIik7XG5cbiAgZ2V0IGxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzLmNoYXRJbnB1dFRvb2xiYXJTdGFydFRyYW5zY3JpYmVCdXR0b25MYWJlbDtcbiAgfVxuXG4gIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgIHRoaXMuY2xpY2tlZC5lbWl0KCk7XG4gICAgfVxuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogXCJjb3BpbG90LWNoYXQtY2FuY2VsLXRyYW5zY3JpYmUtYnV0dG9uXCIsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEx1Y2lkZUFuZ3VsYXJNb2R1bGUsIENvcGlsb3RUb29sdGlwXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICBbY2xhc3NdPVwiYnV0dG9uQ2xhc3NcIlxuICAgICAgW2NvcGlsb3RUb29sdGlwXT1cImxhYmVsXCJcbiAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCJcbiAgICAgIChjbGljayk9XCJvbkNsaWNrKClcIlxuICAgID5cbiAgICAgIDxsdWNpZGUtYW5ndWxhciBbaW1nXT1cIlhJY29uXCIgW3NpemVdPVwiMThcIj48L2x1Y2lkZS1hbmd1bGFyPlxuICAgIDwvYnV0dG9uPlxuICBgLFxuICBzdHlsZXM6IFtgYF0sXG59KVxuZXhwb3J0IGNsYXNzIENvcGlsb3RDaGF0Q2FuY2VsVHJhbnNjcmliZUJ1dHRvbiB7XG4gIGRpc2FibGVkID0gaW5wdXQoZmFsc2UpO1xuICBjbGlja2VkID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgbGFiZWxzID0gaW5qZWN0Q2hhdExhYmVscygpO1xuXG4gIHJlYWRvbmx5IFhJY29uID0gWDtcbiAgYnV0dG9uQ2xhc3MgPSBjbihidXR0b25CYXNlLCBjaGF0SW5wdXRUb29sYmFyU2Vjb25kYXJ5LCBcIm1yLTJcIik7XG5cbiAgZ2V0IGxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzLmNoYXRJbnB1dFRvb2xiYXJDYW5jZWxUcmFuc2NyaWJlQnV0dG9uTGFiZWw7XG4gIH1cblxuICBvbkNsaWNrKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLmNsaWNrZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6IFwiY29waWxvdC1jaGF0LWZpbmlzaC10cmFuc2NyaWJlLWJ1dHRvblwiLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBMdWNpZGVBbmd1bGFyTW9kdWxlLCBDb3BpbG90VG9vbHRpcF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgW2NsYXNzXT1cImJ1dHRvbkNsYXNzXCJcbiAgICAgIFtjb3BpbG90VG9vbHRpcF09XCJsYWJlbFwiXG4gICAgICB0b29sdGlwUG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAoY2xpY2spPVwib25DbGljaygpXCJcbiAgICA+XG4gICAgICA8bHVjaWRlLWFuZ3VsYXIgW2ltZ109XCJDaGVja0ljb25cIiBbc2l6ZV09XCIxOFwiPjwvbHVjaWRlLWFuZ3VsYXI+XG4gICAgPC9idXR0b24+XG4gIGAsXG4gIHN0eWxlczogW2BgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRGaW5pc2hUcmFuc2NyaWJlQnV0dG9uIHtcbiAgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSk7XG4gIGNsaWNrZWQgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICByZWFkb25seSBsYWJlbHMgPSBpbmplY3RDaGF0TGFiZWxzKCk7XG5cbiAgcmVhZG9ubHkgQ2hlY2tJY29uID0gQ2hlY2s7XG4gIGJ1dHRvbkNsYXNzID0gY24oYnV0dG9uQmFzZSwgY2hhdElucHV0VG9vbGJhclNlY29uZGFyeSwgXCJtci1bMTBweF1cIik7XG5cbiAgZ2V0IGxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzLmNoYXRJbnB1dFRvb2xiYXJGaW5pc2hUcmFuc2NyaWJlQnV0dG9uTGFiZWw7XG4gIH1cblxuICBvbkNsaWNrKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLmNsaWNrZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6IFwiY29waWxvdC1jaGF0LWFkZC1maWxlLWJ1dHRvblwiLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBMdWNpZGVBbmd1bGFyTW9kdWxlLCBDb3BpbG90VG9vbHRpcF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgW2NsYXNzXT1cImJ1dHRvbkNsYXNzXCJcbiAgICAgIFtjb3BpbG90VG9vbHRpcF09XCJsYWJlbFwiXG4gICAgICB0b29sdGlwUG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAoY2xpY2spPVwib25DbGljaygpXCJcbiAgICA+XG4gICAgICA8bHVjaWRlLWFuZ3VsYXIgW2ltZ109XCJQbHVzSWNvblwiIFtzaXplXT1cIjIwXCI+PC9sdWNpZGUtYW5ndWxhcj5cbiAgICA8L2J1dHRvbj5cbiAgYCxcbiAgc3R5bGVzOiBbYGBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb3BpbG90Q2hhdEFkZEZpbGVCdXR0b24ge1xuICBkaXNhYmxlZCA9IGlucHV0KGZhbHNlKTtcbiAgY2xpY2tlZCA9IG91dHB1dDx2b2lkPigpO1xuXG4gIHJlYWRvbmx5IGxhYmVscyA9IGluamVjdENoYXRMYWJlbHMoKTtcblxuICByZWFkb25seSBQbHVzSWNvbiA9IFBsdXM7XG4gIGJ1dHRvbkNsYXNzID0gY24oYnV0dG9uQmFzZSwgY2hhdElucHV0VG9vbGJhclNlY29uZGFyeSwgXCJtbC0yXCIpO1xuXG4gIGdldCBsYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmxhYmVscy5jaGF0SW5wdXRUb29sYmFyQWRkQnV0dG9uTGFiZWw7XG4gIH1cblxuICBvbkNsaWNrKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLmNsaWNrZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBCYXNlIHRvb2xiYXIgYnV0dG9uIGNvbXBvbmVudCB0aGF0IG90aGVyIGJ1dHRvbnMgY2FuIHVzZVxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiBcImNvcGlsb3QtY2hhdC10b29sYmFyLWJ1dHRvblwiLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDb3BpbG90VG9vbHRpcF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgW2NsYXNzXT1cImNvbXB1dGVkQ2xhc3MoKVwiXG4gICAgICBbY29waWxvdFRvb2x0aXBdPVwidGl0bGUoKVwiXG4gICAgICB0b29sdGlwUG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAoY2xpY2spPVwib25DbGljaygpXCJcbiAgICA+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9idXR0b24+XG4gIGAsXG4gIHN0eWxlczogW2BgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29waWxvdENoYXRUb29sYmFyQnV0dG9uIHtcbiAgZGlzYWJsZWQgPSBzaWduYWwoZmFsc2UpO1xuICB2YXJpYW50ID0gc2lnbmFsPFwicHJpbWFyeVwiIHwgXCJzZWNvbmRhcnlcIj4oXCJzZWNvbmRhcnlcIik7XG4gIGN1c3RvbUNsYXNzID0gc2lnbmFsKFwiXCIpO1xuICB0aXRsZSA9IHNpZ25hbChcIlwiKTtcblxuICBjbGlja2VkID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgY29tcHV0ZWRDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB2YXJpYW50Q2xhc3MgPVxuICAgICAgdGhpcy52YXJpYW50KCkgPT09IFwicHJpbWFyeVwiXG4gICAgICAgID8gY2hhdElucHV0VG9vbGJhclByaW1hcnlcbiAgICAgICAgOiBjaGF0SW5wdXRUb29sYmFyU2Vjb25kYXJ5O1xuICAgIHJldHVybiBjbihidXR0b25CYXNlLCB2YXJpYW50Q2xhc3MsIHRoaXMuY3VzdG9tQ2xhc3MoKSk7XG4gIH0pO1xuXG4gIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgIHRoaXMuY2xpY2tlZC5lbWl0KCk7XG4gICAgfVxuICB9XG59XG4iXX0=