@magic-xpa/engine 4.800.0-dev480.95 → 4.800.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/bundles/magic-xpa-engine.umd.js +1269 -1077
  2. package/bundles/magic-xpa-engine.umd.js.map +1 -1
  3. package/bundles/magic-xpa-engine.umd.min.js +3 -2
  4. package/bundles/magic-xpa-engine.umd.min.js.map +1 -1
  5. package/esm2015/index.js +2 -1
  6. package/esm2015/src/AccessHelper.js +7 -1
  7. package/esm2015/src/ClientManager.js +2 -2
  8. package/esm2015/src/ConstInterface.js +7 -3
  9. package/esm2015/src/CurrentClientVersion.js +2 -2
  10. package/esm2015/src/commands/ClientToServer/CommandFactory.js +15 -1
  11. package/esm2015/src/commands/ClientToServer/ExecOperCommand.js +4 -1
  12. package/esm2015/src/commands/ClientToServer/SelectProgramCommand.js +15 -0
  13. package/esm2015/src/commands/ServerToClient/EnhancedVerifyCommand.js +1 -7
  14. package/esm2015/src/communications/InteractiveCommunicationsFailureHandler.js +2 -2
  15. package/esm2015/src/data/DataView.js +3 -3
  16. package/esm2015/src/env/Environment.js +11 -1
  17. package/esm2015/src/event/ActionManager.js +3 -2
  18. package/esm2015/src/event/EventHandler.js +4 -4
  19. package/esm2015/src/event/EventsManager.js +127 -26
  20. package/esm2015/src/event/IEventsManager.js +1 -1
  21. package/esm2015/src/exp/ExpressionDict.js +3 -1
  22. package/esm2015/src/exp/ExpressionEvaluator.js +30 -19
  23. package/esm2015/src/gui/MgForm.js +16 -24
  24. package/esm2015/src/remote/RemoteCommandsProcessor.js +48 -21
  25. package/esm2015/src/rt/Operation.js +9 -32
  26. package/esm2015/src/tasks/MGData.js +11 -1
  27. package/esm2015/src/tasks/MGDataCollection.js +12 -2
  28. package/esm2015/src/tasks/Task.js +37 -45
  29. package/esm2015/src/util/PrmMap.js +11 -1
  30. package/fesm2015/magic-xpa-engine.js +347 -174
  31. package/fesm2015/magic-xpa-engine.js.map +1 -1
  32. package/index.d.ts +1 -0
  33. package/package.json +4 -4
  34. package/src/AccessHelper.d.ts +5 -0
  35. package/src/ConstInterface.d.ts +6 -2
  36. package/src/commands/ClientToServer/CommandFactory.d.ts +1 -0
  37. package/src/commands/ClientToServer/ExecOperCommand.d.ts +2 -1
  38. package/src/commands/ClientToServer/SelectProgramCommand.d.ts +6 -0
  39. package/src/commands/ServerToClient/EnhancedVerifyCommand.d.ts +0 -1
  40. package/src/env/Environment.d.ts +3 -0
  41. package/src/event/EventsManager.d.ts +13 -2
  42. package/src/event/IEventsManager.d.ts +3 -1
  43. package/src/exp/ExpressionEvaluator.d.ts +1 -0
  44. package/src/gui/MgForm.d.ts +1 -1
  45. package/src/rt/Operation.d.ts +0 -3
  46. package/src/tasks/MGData.d.ts +2 -0
  47. package/src/tasks/MGDataCollection.d.ts +1 -0
  48. package/src/tasks/Task.d.ts +0 -1
  49. package/src/util/PrmMap.d.ts +1 -0
package/esm2015/index.js CHANGED
@@ -48,6 +48,7 @@ export * from "./src/commands/ClientToServer/RecomputeCommand";
48
48
  export * from "./src/commands/ClientToServer/RefreshEventCommand";
49
49
  export * from "./src/commands/ClientToServer/RefreshScreenEventCommand";
50
50
  export * from "./src/commands/ClientToServer/RollbackEventCommand";
51
+ export * from "./src/commands/ClientToServer/SelectProgramCommand";
51
52
  export * from "./src/commands/ClientToServer/SetTransactionStateDataviewCommand";
52
53
  export * from "./src/commands/ClientToServer/SubformOpenEventCommand";
53
54
  export * from "./src/commands/ClientToServer/SubformRefreshEventCommand";
@@ -184,4 +185,4 @@ export * from "./src/util/ReturnResult";
184
185
  export * from "./src/util/ReturnResultBase";
185
186
  export * from "./src/util/Scrambler";
186
187
  export * from "./src/util/UniqueIDUtils";
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyw4REFBOEQsQ0FBQztBQUM3RSxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsMERBQTBELENBQUM7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YyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vc3JjL0FjY2Vzc0hlbHBlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL0NsaWVudE1hbmFnZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9Db21tYW5kc1Byb2Nlc3NvckJhc2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9Db21tYW5kc1Byb2Nlc3Nvck1hbmFnZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9Db21tYW5kc1RhYmxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvQ29uc3RJbnRlcmZhY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9DdXJyZW50Q2xpZW50VmVyc2lvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2VudW1zXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvRmxvd01vbml0b3JJbnRlcmZhY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9HbG9iYWxDb21tYW5kc01hbmFnZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9HdWlFdmVudHNQcm9jZXNzb3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9HVUlNYW5hZ2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvSUNvbW1hbmRzVGFibGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9TZXJ2ZXJDb25maWdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9icmlkZ2UvSUd1aUV2ZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvYnJpZGdlL01hZ2ljQnJpZGdlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50T3JpZ2luYXRlZENvbW1hbmRUYXNrVGFnXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvRGF0YVZpZXdDb21tYW5kQmFzZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0lDbGllbnRDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvSUNsaWVudFRhcmdldGVkQ29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0lDbGllbnRUb1NlcnZlckNvbW1hbmRJbmZvXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQWRkVXNlckxvY2F0ZURhdGFWaWV3Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0FkZFVzZXJSYW5nZURhdGF2aWV3Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0FkZFVzZXJTb3J0RGF0YVZpZXdDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQnJvd3NlckVzY0V2ZW50Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0NsaWVudE9yaWdpbmF0ZWRDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQ2xpZW50T3JpZ2luYXRlZENvbW1hbmRTZXJpYWxpemVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQ29sdW1uU29ydEV2ZW50Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0NvbW1hbmRGYWN0b3J5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQ29tbWFuZFNlcmlhbGl6YXRpb25IZWxwZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9Db21wdXRlRXZlbnRDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQ29udGV4dFRlcm1pbmF0aW9uRXZlbnRDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQ29udGV4dFRpbWVvdXRSZXNldENvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9Db250cm9sSXRlbXNSZWZyZXNoQ29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0RhdGF2aWV3Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0RhdGFWaWV3T3V0cHV0Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0V2YWx1YXRlQ29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0V2ZW50Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0V4ZWNPcGVyQ29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0ZldGNoRGF0YUNvbnRyb2xWYWx1ZXNFdmVudENvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9HbG9iYWxQYXJhbXNRdWVyeUNvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9JQ29tbWFuZFRhc2tUYWdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9JbmRleENoYW5nZUV2ZW50Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0luaXB1dEZvcmNlV3JpdGVDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvTm9uUmV2ZXJzaWJsZUV4aXRFdmVudENvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9RdWVyeUNvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9SZWNvbXB1dGVDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvUmVmcmVzaEV2ZW50Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL1JlZnJlc2hTY3JlZW5FdmVudENvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9Sb2xsYmFja0V2ZW50Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL1NldFRyYW5zYWN0aW9uU3RhdGVEYXRhdmlld0NvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9TdWJmb3JtT3BlbkV2ZW50Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL1N1YmZvcm1SZWZyZXNoRXZlbnRDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvVHJhbnNhY3Rpb25Db21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvVW5sb2FkQ29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL1dyaXRlTWVzc2FnZVRvU2VydmVyTG9nQ29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL1NlcnZlclRvQ2xpZW50L0Fib3J0Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL1NlcnZlclRvQ2xpZW50L0FkZExvY2F0ZUNvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9BZGRSYW5nZUNvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9BZGRTb3J0Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL1NlcnZlclRvQ2xpZW50L0NsaWVudFJlZnJlc2hDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvU2VydmVyVG9DbGllbnQvQ2xpZW50VGFyZ2V0ZWRDb21tYW5kQmFzZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL1NlcnZlclRvQ2xpZW50L0VuaGFuY2VkVmVyaWZ5Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL1NlcnZlclRvQ2xpZW50L09wZW5VUkxDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvU2VydmVyVG9DbGllbnQvUmVzZXRMb2NhdGVDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvU2VydmVyVG9DbGllbnQvUmVzZXRSYW5nZUNvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9SZXNldFNvcnRDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvU2VydmVyVG9DbGllbnQvUmVzdWx0Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL1NlcnZlclRvQ2xpZW50L1ZlcmlmeUNvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9YTUxCYXNlZENvbW1hbmRCdWlsZGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbXVuaWNhdGlvbnMvSUNvbm5lY3Rpb25TdGF0ZU1hbmFnZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tdW5pY2F0aW9ucy9JbnRlcmFjdGl2ZUNvbW11bmljYXRpb25zRmFpbHVyZUhhbmRsZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9kYXRhL0RhdGFTb3VyY2VJZEtleVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2RhdGEvRGF0YVZpZXdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9kYXRhL0RhdGFWaWV3QmFzZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2RhdGEvRGF0YXZpZXdNYW5hZ2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZGF0YS9EYXRhdmlld01hbmFnZXJCYXNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZGF0YS9EdkNhY2hlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZGF0YS9GaWVsZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2RhdGEvRmllbGRCYXNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZGF0YS9GaWVsZHNUYWJsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2RhdGEvSVJlY29yZHNUYWJsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2RhdGEvS2V5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZGF0YS9SZWNvcmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9kYXRhL1JlY29yZE91dE9mRGF0YVZpZXdFeGNlcHRpb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9kYXRhL1JlY29yZHNUYWJsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2RhdGEvVGFza1RyYW5zYWN0aW9uTWFuYWdlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2RhdGEvWE1MQmFzZWREY1ZhbHVlc0J1aWxkZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9lbnYvRW52aXJvbm1lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9lbnYvRW52VmFyaWFibGVzVGFibGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9lbnYvSUxhbmd1YWdlRGF0YVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2Vudi9MYW5ndWFnZURhdGFcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ldmVudC9BY3Rpb25NYW5hZ2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZXZlbnQvRXZlbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ldmVudC9FdmVudEhhbmRsZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ldmVudC9FdmVudEhhbmRsZXJQb3NpdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2V2ZW50L0V2ZW50c01hbmFnZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ldmVudC9JRXZlbnRzTWFuYWdlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2V2ZW50L1J1blRpbWVFdmVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2V2ZW50L1J1blRpbWVFdmVudEJhc2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ldmVudC9Vc2VyRXZlbnRzVGFibGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9leHAvRXhwcmVzc2lvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2V4cC9FeHByZXNzaW9uRGljdFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2V4cC9FeHByZXNzaW9uRXZhbHVhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZXhwL0V4cHJlc3Npb25Mb2NhbEpwblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2V4cC9FeHBUYWJsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2V4cC9HbG9iYWxQYXJhbXNUYWJsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2V4cC9ZZXNOb0V4cFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2d1aS9DcmVhdGVkRm9ybVZlY3RvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2d1aS9Gb3Jtc1RhYmxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZ3VpL01nQ29udHJvbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2d1aS9NZ0Zvcm1cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9odHRwL0h0dHBNYW5hZ2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvaHR0cC9jbGllbnQvSHR0cENsaWVudEFzeW5jXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvaHR0cC9jbGllbnQvSHR0cENsaWVudEJhc2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9odHRwL2NsaWVudC9IdHRwQ2xpZW50RXZlbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvaHR0cC9jbGllbnQvSHR0cENsaWVudFN5bmNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9odHRwL2NsaWVudC9IdHRwVXRpbGl0eVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2h0dHAvY2xpZW50L0lDb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcmVtb3RlL0FkZFVzZXJMb2NhdGVSZW1vdGVEYXRhVmlld0NvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9yZW1vdGUvQWRkVXNlclJhbmdlUmVtb3RlRGF0YVZpZXdDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcmVtb3RlL0FkZFVzZXJTb3J0UmVtb3RlRGF0YVZpZXdDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcmVtb3RlL1JlbW90ZUNvbW1hbmRzUHJvY2Vzc29yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcmVtb3RlL1JlbW90ZUNvbnRyb2xJdGVtc1JlZnJlc2hDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcmVtb3RlL1JlbW90ZURhdGFWaWV3Q29tbWFuZEJhc2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9yZW1vdGUvUmVtb3RlRGF0YVZpZXdDb21tYW5kRmFjdG9yeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3JlbW90ZS9SZW1vdGVEYXRhVmlld0NvbW1hbmRVcGRhdGVOb25Nb2RpZmlhYmxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcmVtb3RlL1JlbW90ZURhdGF2aWV3TWFuYWdlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3JlbW90ZS9SZW1vdGVJbml0RGF0YVZpZXdDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcmVtb3RlL1Jlc2V0VXNlckxvY2F0ZVJlbW90ZURhdGF2aWV3Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3JlbW90ZS9SZXNldFVzZXJSYW5nZVJlbW90ZURhdGF2aWV3Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3JlbW90ZS9SZXNldFVzZXJTb3J0UmVtb3RlRGF0YXZpZXdDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcmVtb3RlL1NlcnZlckVycm9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcmVtb3RlL1NldFRyYW5zYWN0aW9uU3RhdGVSZW1vdGVEYXRhVmlld0NvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ydC9Bcmd1bWVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3J0L0FyZ3VtZW50c0xpc3RcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ydC9Cb3VuZGFyeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3J0L0NvbXBNYWluUHJnVGFibGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ydC9EYXRhdmlld0hlYWRlckJhc2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ydC9EYXRhdmlld0hlYWRlckZhY3RvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ydC9EYXRhdmlld0hlYWRlcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ydC9EYXRhdmlld0hlYWRlcnNTYXhIYW5kbGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcnQvRXhlY3V0aW9uU3RhY2tcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ydC9FeGVjdXRpb25TdGFja0VudHJ5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcnQvSGFuZGxlcnNUYWJsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3J0L0lEYXRhU291cmNlVmlld0RlZmluaXRpb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ydC9JRGF0YXZpZXdIZWFkZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ydC9JUmVzdWx0VmFsdWVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ydC9MYXN0Rm9jdXNlZE1hbmFnZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ydC9PcGVyYXRpb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ydC9PcGVyYXRpb25UYWJsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3J0L1JlY29tcHV0ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3J0L1JlY29tcHV0ZVRhYmxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcnQvUmVtb3RlRGF0YXZpZXdIZWFkZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ydC9SZXN1bHRWYWx1ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3J0L1RhYmxlQ2FjaGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ydC9UYWJsZUNhY2hlTWFuYWdlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3J0L1RyYW5zYWN0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvc2VjdXJpdHkvVXNlckRldGFpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy90YXNrcy9JTUdEYXRhQ29sbGVjdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3Rhc2tzL01lbnVzRGVzZXJpYWxpemVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvdGFza3MvTUdEYXRhXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvdGFza3MvTUdEYXRhQ29sbGVjdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3Rhc2tzL1JDVGltZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy90YXNrcy9SZW1vdGVUYXNrU2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3Rhc2tzL1Rhc2tcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy90YXNrcy9UYXNrQmFzZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3Rhc2tzL1Rhc2tTZXJ2aWNlQmFzZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3Rhc2tzL1Rhc2tzVGFibGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy90YXNrcy9zb3J0L1NvcnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy90YXNrcy9zb3J0L1NvcnRDb2xsZWN0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvdXRpbC9Db25zdFV0aWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvdXRpbC9jb29raWUuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3V0aWwvRmxvd01vbml0b3JRdWV1ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3V0aWwvSGVhcFNvcnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy91dGlsL0lNaXJyb3JYTUxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy91dGlsL0lTZXJ2ZXJDb25maWdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy91dGlsL01nQmxvY2tpbmdRdWV1ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3V0aWwvTWdQcmlvcml0eUJsb2NraW5nUXVldWVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy91dGlsL01nUHJpb3JpdHlRdWV1ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3V0aWwvUHJtTWFwXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvdXRpbC9Qcm9jZXNzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvdXRpbC9SZXR1cm5SZXN1bHRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy91dGlsL1JldHVyblJlc3VsdEJhc2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy91dGlsL1NjcmFtYmxlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3V0aWwvVW5pcXVlSURVdGlsc1wiO1xuIl19
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyw4REFBOEQsQ0FBQztBQUM3RSxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsMERBQTBELENBQUM7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Yyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9zcmMvQWNjZXNzSGVscGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvQ2xpZW50TWFuYWdlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL0NvbW1hbmRzUHJvY2Vzc29yQmFzZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL0NvbW1hbmRzUHJvY2Vzc29yTWFuYWdlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL0NvbW1hbmRzVGFibGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9Db25zdEludGVyZmFjZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL0N1cnJlbnRDbGllbnRWZXJzaW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZW51bXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9GbG93TW9uaXRvckludGVyZmFjZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL0dsb2JhbENvbW1hbmRzTWFuYWdlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL0d1aUV2ZW50c1Byb2Nlc3NvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL0dVSU1hbmFnZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9JQ29tbWFuZHNUYWJsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL1NlcnZlckNvbmZpZ1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2JyaWRnZS9JR3VpRXZlbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9icmlkZ2UvTWFnaWNCcmlkZ2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRPcmlnaW5hdGVkQ29tbWFuZFRhc2tUYWdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9EYXRhVmlld0NvbW1hbmRCYXNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvSUNsaWVudENvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9JQ2xpZW50VGFyZ2V0ZWRDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvSUNsaWVudFRvU2VydmVyQ29tbWFuZEluZm9cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9BZGRVc2VyTG9jYXRlRGF0YVZpZXdDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQWRkVXNlclJhbmdlRGF0YXZpZXdDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQWRkVXNlclNvcnREYXRhVmlld0NvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9Ccm93c2VyRXNjRXZlbnRDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQ2xpZW50T3JpZ2luYXRlZENvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9DbGllbnRPcmlnaW5hdGVkQ29tbWFuZFNlcmlhbGl6ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9Db2x1bW5Tb3J0RXZlbnRDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQ29tbWFuZEZhY3RvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9Db21tYW5kU2VyaWFsaXphdGlvbkhlbHBlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0NvbXB1dGVFdmVudENvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9Db250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9Db250ZXh0VGltZW91dFJlc2V0Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0NvbnRyb2xJdGVtc1JlZnJlc2hDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvRGF0YXZpZXdDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvRGF0YVZpZXdPdXRwdXRDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvRXZhbHVhdGVDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvRXZlbnRDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvRXhlY09wZXJDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvRmV0Y2hEYXRhQ29udHJvbFZhbHVlc0V2ZW50Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0dsb2JhbFBhcmFtc1F1ZXJ5Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0lDb21tYW5kVGFza1RhZ1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0luZGV4Q2hhbmdlRXZlbnRDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvSW5pcHV0Rm9yY2VXcml0ZUNvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9Ob25SZXZlcnNpYmxlRXhpdEV2ZW50Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL1F1ZXJ5Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL1JlY29tcHV0ZUNvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9SZWZyZXNoRXZlbnRDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvUmVmcmVzaFNjcmVlbkV2ZW50Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL1JvbGxiYWNrRXZlbnRDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvU2VsZWN0UHJvZ3JhbUNvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9TZXRUcmFuc2FjdGlvblN0YXRlRGF0YXZpZXdDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvU3ViZm9ybU9wZW5FdmVudENvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9TdWJmb3JtUmVmcmVzaEV2ZW50Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL1RyYW5zYWN0aW9uQ29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL1VubG9hZENvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9Xcml0ZU1lc3NhZ2VUb1NlcnZlckxvZ0NvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9BYm9ydENvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9BZGRMb2NhdGVDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvU2VydmVyVG9DbGllbnQvQWRkUmFuZ2VDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvU2VydmVyVG9DbGllbnQvQWRkU29ydENvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9DbGllbnRSZWZyZXNoQ29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL1NlcnZlclRvQ2xpZW50L0NsaWVudFRhcmdldGVkQ29tbWFuZEJhc2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9FbmhhbmNlZFZlcmlmeUNvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9PcGVuVVJMQ29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL1NlcnZlclRvQ2xpZW50L1Jlc2V0TG9jYXRlQ29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL1NlcnZlclRvQ2xpZW50L1Jlc2V0UmFuZ2VDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvU2VydmVyVG9DbGllbnQvUmVzZXRTb3J0Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW1hbmRzL1NlcnZlclRvQ2xpZW50L1Jlc3VsdENvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9WZXJpZnlDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbWFuZHMvU2VydmVyVG9DbGllbnQvWE1MQmFzZWRDb21tYW5kQnVpbGRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2NvbW11bmljYXRpb25zL0lDb25uZWN0aW9uU3RhdGVNYW5hZ2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY29tbXVuaWNhdGlvbnMvSW50ZXJhY3RpdmVDb21tdW5pY2F0aW9uc0ZhaWx1cmVIYW5kbGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZGF0YS9EYXRhU291cmNlSWRLZXlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9kYXRhL0RhdGFWaWV3XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZGF0YS9EYXRhVmlld0Jhc2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9kYXRhL0RhdGF2aWV3TWFuYWdlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2RhdGEvRGF0YXZpZXdNYW5hZ2VyQmFzZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2RhdGEvRHZDYWNoZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2RhdGEvRmllbGRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9kYXRhL0ZpZWxkQmFzZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2RhdGEvRmllbGRzVGFibGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9kYXRhL0lSZWNvcmRzVGFibGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9kYXRhL0tleVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2RhdGEvUmVjb3JkXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZGF0YS9SZWNvcmRPdXRPZkRhdGFWaWV3RXhjZXB0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZGF0YS9SZWNvcmRzVGFibGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9kYXRhL1Rhc2tUcmFuc2FjdGlvbk1hbmFnZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9kYXRhL1hNTEJhc2VkRGNWYWx1ZXNCdWlsZGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZW52L0Vudmlyb25tZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZW52L0VudlZhcmlhYmxlc1RhYmxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZW52L0lMYW5ndWFnZURhdGFcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9lbnYvTGFuZ3VhZ2VEYXRhXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZXZlbnQvQWN0aW9uTWFuYWdlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2V2ZW50L0V2ZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZXZlbnQvRXZlbnRIYW5kbGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZXZlbnQvRXZlbnRIYW5kbGVyUG9zaXRpb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ldmVudC9FdmVudHNNYW5hZ2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZXZlbnQvSUV2ZW50c01hbmFnZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ldmVudC9SdW5UaW1lRXZlbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ldmVudC9SdW5UaW1lRXZlbnRCYXNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZXZlbnQvVXNlckV2ZW50c1RhYmxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvZXhwL0V4cHJlc3Npb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9leHAvRXhwcmVzc2lvbkRpY3RcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9leHAvRXhwcmVzc2lvbkV2YWx1YXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2V4cC9FeHByZXNzaW9uTG9jYWxKcG5cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9leHAvRXhwVGFibGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9leHAvR2xvYmFsUGFyYW1zVGFibGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9leHAvWWVzTm9FeHBcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ndWkvQ3JlYXRlZEZvcm1WZWN0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ndWkvRm9ybXNUYWJsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2d1aS9NZ0NvbnRyb2xcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ndWkvTWdGb3JtXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvaHR0cC9IdHRwTWFuYWdlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2h0dHAvY2xpZW50L0h0dHBDbGllbnRBc3luY1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2h0dHAvY2xpZW50L0h0dHBDbGllbnRCYXNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvaHR0cC9jbGllbnQvSHR0cENsaWVudEV2ZW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2h0dHAvY2xpZW50L0h0dHBDbGllbnRTeW5jXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvaHR0cC9jbGllbnQvSHR0cFV0aWxpdHlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9odHRwL2NsaWVudC9JQ29tbXVuaWNhdGlvbnNGYWlsdXJlSGFuZGxlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3JlbW90ZS9BZGRVc2VyTG9jYXRlUmVtb3RlRGF0YVZpZXdDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcmVtb3RlL0FkZFVzZXJSYW5nZVJlbW90ZURhdGFWaWV3Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3JlbW90ZS9BZGRVc2VyU29ydFJlbW90ZURhdGFWaWV3Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3JlbW90ZS9SZW1vdGVDb21tYW5kc1Byb2Nlc3NvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3JlbW90ZS9SZW1vdGVDb250cm9sSXRlbXNSZWZyZXNoQ29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3JlbW90ZS9SZW1vdGVEYXRhVmlld0NvbW1hbmRCYXNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcmVtb3RlL1JlbW90ZURhdGFWaWV3Q29tbWFuZEZhY3RvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9yZW1vdGUvUmVtb3RlRGF0YVZpZXdDb21tYW5kVXBkYXRlTm9uTW9kaWZpYWJsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3JlbW90ZS9SZW1vdGVEYXRhdmlld01hbmFnZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9yZW1vdGUvUmVtb3RlSW5pdERhdGFWaWV3Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3JlbW90ZS9SZXNldFVzZXJMb2NhdGVSZW1vdGVEYXRhdmlld0NvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9yZW1vdGUvUmVzZXRVc2VyUmFuZ2VSZW1vdGVEYXRhdmlld0NvbW1hbmRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9yZW1vdGUvUmVzZXRVc2VyU29ydFJlbW90ZURhdGF2aWV3Q29tbWFuZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3JlbW90ZS9TZXJ2ZXJFcnJvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3JlbW90ZS9TZXRUcmFuc2FjdGlvblN0YXRlUmVtb3RlRGF0YVZpZXdDb21tYW5kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcnQvQXJndW1lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ydC9Bcmd1bWVudHNMaXN0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcnQvQm91bmRhcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ydC9Db21wTWFpblByZ1RhYmxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcnQvRGF0YXZpZXdIZWFkZXJCYXNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcnQvRGF0YXZpZXdIZWFkZXJGYWN0b3J5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcnQvRGF0YXZpZXdIZWFkZXJzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcnQvRGF0YXZpZXdIZWFkZXJzU2F4SGFuZGxlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3J0L0V4ZWN1dGlvblN0YWNrXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcnQvRXhlY3V0aW9uU3RhY2tFbnRyeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3J0L0hhbmRsZXJzVGFibGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ydC9JRGF0YVNvdXJjZVZpZXdEZWZpbml0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcnQvSURhdGF2aWV3SGVhZGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcnQvSVJlc3VsdFZhbHVlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcnQvTGFzdEZvY3VzZWRNYW5hZ2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcnQvT3BlcmF0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcnQvT3BlcmF0aW9uVGFibGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ydC9SZWNvbXB1dGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ydC9SZWNvbXB1dGVUYWJsZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3J0L1JlbW90ZURhdGF2aWV3SGVhZGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcnQvUmVzdWx0VmFsdWVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ydC9UYWJsZUNhY2hlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvcnQvVGFibGVDYWNoZU1hbmFnZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy9ydC9UcmFuc2FjdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3NlY3VyaXR5L1VzZXJEZXRhaWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvdGFza3MvSU1HRGF0YUNvbGxlY3Rpb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy90YXNrcy9NZW51c0Rlc2VyaWFsaXplclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3Rhc2tzL01HRGF0YVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3Rhc2tzL01HRGF0YUNvbGxlY3Rpb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy90YXNrcy9SQ1RpbWVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvdGFza3MvUmVtb3RlVGFza1NlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy90YXNrcy9UYXNrXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvdGFza3MvVGFza0Jhc2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy90YXNrcy9UYXNrU2VydmljZUJhc2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy90YXNrcy9UYXNrc1RhYmxlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvdGFza3Mvc29ydC9Tb3J0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvdGFza3Mvc29ydC9Tb3J0Q29sbGVjdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3V0aWwvQ29uc3RVdGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3V0aWwvY29va2llLnNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy91dGlsL0Zsb3dNb25pdG9yUXVldWVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy91dGlsL0hlYXBTb3J0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvdXRpbC9JTWlycm9yWE1MXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvdXRpbC9JU2VydmVyQ29uZmlnXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvdXRpbC9NZ0Jsb2NraW5nUXVldWVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy91dGlsL01nUHJpb3JpdHlCbG9ja2luZ1F1ZXVlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvdXRpbC9NZ1ByaW9yaXR5UXVldWVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy91dGlsL1BybU1hcFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3V0aWwvUHJvY2Vzc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3JjL3V0aWwvUmV0dXJuUmVzdWx0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvdXRpbC9SZXR1cm5SZXN1bHRCYXNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvdXRpbC9TY3JhbWJsZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NyYy91dGlsL1VuaXF1ZUlEVXRpbHNcIjtcbiJdfQ==
@@ -1,3 +1,9 @@
1
1
  export class AccessHelper {
2
2
  }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWNjZXNzSGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9BY2Nlc3NIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUEsTUFBTSxPQUFPLFlBQVk7Q0FPeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRW52aXJvbm1lbnQgfSBmcm9tIFwiQG1hZ2ljLXhwYS9ndWlcIjtcclxuaW1wb3J0IHsgSUV2ZW50c01hbmFnZXIgfSBmcm9tIFwiLi9ldmVudC9JRXZlbnRzTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBJTUdEYXRhQ29sbGVjdGlvbiB9IGZyb20gXCIuL3Rhc2tzL0lNR0RhdGFDb2xsZWN0aW9uXCI7XHJcbmltcG9ydCB7IE1pcnJvclBybU1hcCB9IGZyb20gXCIuL3V0aWwvUHJtTWFwXCI7XHJcbmltcG9ydCB7IE1pcnJvclN0cmluZyB9IGZyb20gXCIuL2Vudi9FbnZWYXJpYWJsZXNUYWJsZVwiO1xyXG5pbXBvcnQgeyBNaXJyb3JFeHBWYWwgfSBmcm9tIFwiLi9leHAvR2xvYmFsUGFyYW1zVGFibGVcIjtcclxuaW1wb3J0IHsgSUxhbmd1YWdlRGF0YSB9IGZyb20gXCIuL2Vudi9JTGFuZ3VhZ2VEYXRhXCI7XHJcblxyXG4vLy9cclxuLy8vIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBob2xkIHJlZmVyZW5jZXMgdG8gZ2xvYmFsIG9iamVjdHMsIHVzaW5nIHRoZWlyIGludGVyZmFjZXMvYmFzZSBjbGFzc2VzLiBUaGlzIGFsbG93cyBvdGhlciBvYmplY3RzIHRvIGFjY2VzcyB0aG9zZSBnbG9iYWwgb2JqZWN0c1xyXG4vLy8gd2l0aG91dCBjcmVhdGluZyBjaXJjdWxhciByZWZlcmVuY2VzLlxyXG4vLy9cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEFjY2Vzc0hlbHBlciB7XHJcbiAgc3RhdGljIGV2ZW50c01hbmFnZXI6IElFdmVudHNNYW5hZ2VyO1xyXG4gIHN0YXRpYyBtZ0RhdGFUYWJsZTogSU1HRGF0YUNvbGxlY3Rpb247XHJcbiAgc3RhdGljIGVudlBhcmFtc1RhYmxlOiBNaXJyb3JQcm1NYXA8TWlycm9yU3RyaW5nPjtcclxuICBzdGF0aWMgZ2xvYmFsUGFyYW1zOiBNaXJyb3JQcm1NYXA8TWlycm9yRXhwVmFsPjtcclxuICBzdGF0aWMgbGFuZ3VhZ2VEYXRhOiBJTGFuZ3VhZ2VEYXRhO1xyXG4gIHN0YXRpYyBlbnZpcm9ubWVudDogSUVudmlyb25tZW50O1xyXG59XHJcbiJdfQ==
3
+ export var ClearEventsOnStopExecution;
4
+ (function (ClearEventsOnStopExecution) {
5
+ ClearEventsOnStopExecution["NONE"] = " ";
6
+ ClearEventsOnStopExecution["SERVER"] = "S";
7
+ ClearEventsOnStopExecution["ALL"] = "A";
8
+ })(ClearEventsOnStopExecution || (ClearEventsOnStopExecution = {}));
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWNjZXNzSGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9BY2Nlc3NIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBYUEsTUFBTSxPQUFPLFlBQVk7Q0FPeEI7QUFDRCxNQUFNLENBQU4sSUFBWSwwQkFJWDtBQUpELFdBQVksMEJBQTBCO0lBQ2xDLHdDQUFVLENBQUE7SUFDViwwQ0FBWSxDQUFBO0lBQ1osdUNBQVMsQ0FBQTtBQUNiLENBQUMsRUFKVywwQkFBMEIsS0FBMUIsMEJBQTBCLFFBSXJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUVudmlyb25tZW50IH0gZnJvbSBcIkBtYWdpYy14cGEvZ3VpXCI7XHJcbmltcG9ydCB7IElFdmVudHNNYW5hZ2VyIH0gZnJvbSBcIi4vZXZlbnQvSUV2ZW50c01hbmFnZXJcIjtcclxuaW1wb3J0IHsgSU1HRGF0YUNvbGxlY3Rpb24gfSBmcm9tIFwiLi90YXNrcy9JTUdEYXRhQ29sbGVjdGlvblwiO1xyXG5pbXBvcnQgeyBNaXJyb3JQcm1NYXAgfSBmcm9tIFwiLi91dGlsL1BybU1hcFwiO1xyXG5pbXBvcnQgeyBNaXJyb3JTdHJpbmcgfSBmcm9tIFwiLi9lbnYvRW52VmFyaWFibGVzVGFibGVcIjtcclxuaW1wb3J0IHsgTWlycm9yRXhwVmFsIH0gZnJvbSBcIi4vZXhwL0dsb2JhbFBhcmFtc1RhYmxlXCI7XHJcbmltcG9ydCB7IElMYW5ndWFnZURhdGEgfSBmcm9tIFwiLi9lbnYvSUxhbmd1YWdlRGF0YVwiO1xyXG5cclxuLy8vXHJcbi8vLyBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gaG9sZCByZWZlcmVuY2VzIHRvIGdsb2JhbCBvYmplY3RzLCB1c2luZyB0aGVpciBpbnRlcmZhY2VzL2Jhc2UgY2xhc3Nlcy4gVGhpcyBhbGxvd3Mgb3RoZXIgb2JqZWN0cyB0byBhY2Nlc3MgdGhvc2UgZ2xvYmFsIG9iamVjdHNcclxuLy8vIHdpdGhvdXQgY3JlYXRpbmcgY2lyY3VsYXIgcmVmZXJlbmNlcy5cclxuLy8vXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBBY2Nlc3NIZWxwZXIge1xyXG4gIHN0YXRpYyBldmVudHNNYW5hZ2VyOiBJRXZlbnRzTWFuYWdlcjtcclxuICBzdGF0aWMgbWdEYXRhVGFibGU6IElNR0RhdGFDb2xsZWN0aW9uO1xyXG4gIHN0YXRpYyBlbnZQYXJhbXNUYWJsZTogTWlycm9yUHJtTWFwPE1pcnJvclN0cmluZz47XHJcbiAgc3RhdGljIGdsb2JhbFBhcmFtczogTWlycm9yUHJtTWFwPE1pcnJvckV4cFZhbD47XHJcbiAgc3RhdGljIGxhbmd1YWdlRGF0YTogSUxhbmd1YWdlRGF0YTtcclxuICBzdGF0aWMgZW52aXJvbm1lbnQ6IElFbnZpcm9ubWVudDtcclxufVxyXG5leHBvcnQgZW51bSBDbGVhckV2ZW50c09uU3RvcEV4ZWN1dGlvbiB7XHJcbiAgICBOT05FID0gJyAnLFxyXG4gICAgU0VSVkVSID0gJ1MnLFxyXG4gICAgQUxMID0gJ0EnXHJcbn1cclxuXHJcbiJdfQ==
@@ -136,7 +136,7 @@ export class ClientManager {
136
136
  case "getRows":
137
137
  dvRowIdx = lineIdx - task.DataView.RecordsBeforeCurrentView;
138
138
  let lastFocusedVal = { guiMgControl: task.getForm().getTableCtrl(), Line: dvRowIdx, Val: "" };
139
- Events.OnGetRowsData(task.getForm().getTableCtrl(), dvRowIdx, false, lastFocusedVal);
139
+ Events.OnGetRowsData(task.getForm().getTableCtrl(), dvRowIdx, true, lastFocusedVal);
140
140
  break;
141
141
  case "RouterNavigate":
142
142
  EventsManager.Instance.AddRouteEvent(task, InternalInterface.MG_ACT_WEBCLIENT_ROUTE, guiEvent.RouterPath, guiEvent.RouterOutletName, guiEvent.RouterParams);
@@ -409,4 +409,4 @@ export class ClientManager {
409
409
  }
410
410
  ClientManager._instance = null;
411
411
  ClientManager._executionPropertiesFileName = "./assets/server-config.json";
412
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50TWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvQ2xpZW50TWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRyxPQUFPLEVBQ0wsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUMvRSxZQUFZLEVBQ2IsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQ0wsUUFBUSxFQUNSLFdBQVcsRUFBRSxnQkFBZ0IsRUFDN0IsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsRUFDakIsY0FBYyxFQUVkLE9BQU8sRUFHUCxrQkFBa0IsRUFDbEIsTUFBTSxFQUNQLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSWhELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxF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T0FBTztRQUNULFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFHdkQsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUvRCxJQUFJLDhCQUE4QixHQUFtQyxjQUFjO1lBQ25GLG9DQUFvQyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUUxRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBaUIsOEJBQThCLENBQUMsQ0FBQztRQUczRyx1QkFBdUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsd0NBQXdDLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDeEcsQ0FBQzs7QUF0bEJjLHVCQUFTLEdBQWtCLElBQUksQ0FBQztBQVF2QiwwQ0FBNEIsR0FBVyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uRXhjZXB0aW9uLCBEYXRlVGltZSwgRGVidWcsIEV4Y2VwdGlvbiwgTlN0cmluZywgUmVmUGFyYW0gfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcblxyXG5pbXBvcnQge1xyXG4gIERhdGVUaW1lVXRpbHMsIEludGVybmFsSW50ZXJmYWNlLCBMb2dnZXIsIE1pc2MsIE9TRW52aXJvbm1lbnQsIFN0b3JhZ2VBdHRyaWJ1dGUsXHJcbiAgWE1MQ29uc3RhbnRzXHJcbn0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7XHJcbiAgQ29tbWFuZHMsXHJcbiAgQ29tbWFuZFR5cGUsIERpc3BsYXlDb252ZXJ0b3IsXHJcbiAgRXZlbnRzLFxyXG4gIEd1aUNvbnN0YW50cyxcclxuICBHdWlEYXRhQ29sbGVjdGlvbixcclxuICBHdWlFbnZpcm9ubWVudCxcclxuICBMYXN0Rm9jdXNlZFZhbCxcclxuICBNYW5hZ2VyLFxyXG4gIE1nQ29udHJvbEJhc2UsXHJcbiAgUElDLFxyXG4gIFJ1bnRpbWVDb250ZXh0QmFzZSxcclxuICBTdHlsZXNcclxufSBmcm9tICdAbWFnaWMteHBhL2d1aSc7XHJcbmltcG9ydCB7IEV2ZW50c01hbmFnZXIgfSBmcm9tICcuL2V2ZW50L0V2ZW50c01hbmFnZXInO1xyXG5pbXBvcnQgeyBHdWlFdmVudHNQcm9jZXNzb3IgfSBmcm9tICcuL0d1aUV2ZW50c1Byb2Nlc3Nvcic7XHJcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi9lbnYvRW52aXJvbm1lbnQnO1xyXG5pbXBvcnQgeyBMYW5ndWFnZURhdGEgfSBmcm9tICcuL2Vudi9MYW5ndWFnZURhdGEnO1xyXG5pbXBvcnQgeyBUYXNrc1RhYmxlIH0gZnJvbSAnLi90YXNrcy9UYXNrc1RhYmxlJztcclxuaW1wb3J0IHsgVGFibGVDYWNoZU1hbmFnZXIgfSBmcm9tICcuL3J0L1RhYmxlQ2FjaGVNYW5hZ2VyJztcclxuaW1wb3J0IHsgTWdDb250cm9sIH0gZnJvbSAnLi9ndWkvTWdDb250cm9sJztcclxuaW1wb3J0IHsgSUNsaWVudENvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL0lDbGllbnRDb21tYW5kJztcclxuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4vdGFza3MvVGFzayc7XHJcbmltcG9ydCB7IE1HRGF0YUNvbGxlY3Rpb24gfSBmcm9tICcuL3Rhc2tzL01HRGF0YUNvbGxlY3Rpb24nO1xyXG5pbXBvcnQgeyBVbmlxdWVJRFV0aWxzIH0gZnJvbSAnLi91dGlsL1VuaXF1ZUlEVXRpbHMnO1xyXG5pbXBvcnQgeyBIdHRwTWFuYWdlciB9IGZyb20gJy4vaHR0cC9IdHRwTWFuYWdlcic7XHJcbmltcG9ydCB7IENvbW1hbmRzVGFibGUgfSBmcm9tICcuL0NvbW1hbmRzVGFibGUnO1xyXG5pbXBvcnQgeyBSZW1vdGVDb21tYW5kc1Byb2Nlc3NvciB9IGZyb20gJy4vcmVtb3RlL1JlbW90ZUNvbW1hbmRzUHJvY2Vzc29yJztcclxuaW1wb3J0IHsgQ29uc3RJbnRlcmZhY2UgfSBmcm9tICcuL0NvbnN0SW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQ29tbWFuZHNQcm9jZXNzb3JCYXNlX1NlbmRpbmdJbnN0cnVjdGlvbiB9IGZyb20gJy4vQ29tbWFuZHNQcm9jZXNzb3JCYXNlJztcclxuaW1wb3J0IHsgQ29tbWFuZHNQcm9jZXNzb3JNYW5hZ2VyIH0gZnJvbSAnLi9Db21tYW5kc1Byb2Nlc3Nvck1hbmFnZXInO1xyXG5pbXBvcnQgeyBNR0RhdGEgfSBmcm9tICcuL3Rhc2tzL01HRGF0YSc7XHJcbmltcG9ydCB7IFNlcnZlckVycm9yIH0gZnJvbSAnLi9yZW1vdGUvU2VydmVyRXJyb3InO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50RXZlbnRzIH0gZnJvbSAnLi9odHRwL2NsaWVudC9IdHRwQ2xpZW50RXZlbnRzJztcclxuaW1wb3J0IHsgSUd1aUV2ZW50IH0gZnJvbSAnLi9icmlkZ2UvSUd1aUV2ZW50JztcclxuaW1wb3J0IHsgQ29tbWFuZEZhY3RvcnkgfSBmcm9tICcuL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0NvbW1hbmRGYWN0b3J5JztcclxuaW1wb3J0IHsgQ3VycmVudENsaWVudFZlcnNpb24gfSBmcm9tICcuL0N1cnJlbnRDbGllbnRWZXJzaW9uJztcclxuaW1wb3J0IHsgSVNlcnZlckNvbmZpZyB9IGZyb20gJy4vdXRpbC9JU2VydmVyQ29uZmlnJztcclxuaW1wb3J0IHsgRGF0YVZpZXcgfSBmcm9tICcuL2RhdGEvRGF0YVZpZXcnO1xyXG5pbXBvcnQgeyBMYXN0Rm9jdXNlZE1hbmFnZXIgfSBmcm9tICcuL3J0L0xhc3RGb2N1c2VkTWFuYWdlcic7XHJcbmltcG9ydCB7IEVudlBhcmFtc1RhYmxlIH0gZnJvbSAnLi9lbnYvRW52VmFyaWFibGVzVGFibGUnO1xyXG5pbXBvcnQgeyBHbG9iYWxQYXJhbXMgfSBmcm9tICcuL2V4cC9HbG9iYWxQYXJhbXNUYWJsZSc7XHJcbmltcG9ydCB7IE9wZW5VUkxDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9PcGVuVVJMQ29tbWFuZCc7XHJcbmltcG9ydCB7IFNlcnZlckNvbmZpZyB9IGZyb20gJy4vU2VydmVyQ29uZmlnJztcclxuaW1wb3J0IHsgQWNjZXNzSGVscGVyIH0gZnJvbSAnLi9BY2Nlc3NIZWxwZXInO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0NvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZCc7XHJcbmltcG9ydCB7R1VJTWFuYWdlcn0gZnJvbSBcIi4vR1VJTWFuYWdlclwiO1xyXG5cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIENsaWVudE1hbmFnZXIge1xyXG4gIHByaXZhdGUgX2d1aUV2ZW50c1Byb2Nlc3NvcjogR3VpRXZlbnRzUHJvY2Vzc29yID0gbnVsbDtcclxuXHJcblxyXG5cclxuICBwcml2YXRlIF90YWJsZUNhY2hlTWFuYWdlcjogVGFibGVDYWNoZU1hbmFnZXIgPSBudWxsO1xyXG4gIHByaXZhdGUgX2RlbGF5SW5Qcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlOyAgLy8gdHJ1ZSBpZiBkZWxheSBpcyBpbiBwcm9ncmVzc1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IENsaWVudE1hbmFnZXIgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIF9kZWJ1Z0NsaWVudDogc3RyaW5nID0gbnVsbDtcclxuICBwcml2YXRlIF9nbG9iYWxVbmlxdWVTZXNzaW9uSWQ6IHN0cmluZyA9IG51bGw7XHJcbi8vICBwcml2YXRlIF9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsOyAvLyBjb250cm9sIHdoZXJlIGxhc3QgcGFya2luZyB3YXMgYXR0ZW1wdGVkIGJ1dCB3ZSBkaWQgbm90IHBhcmsgb24gaXRcclxuICBwcml2YXRlIF9idXR0b25Jc0NsaWNrZWQgPSBmYWxzZTtcclxuXHJcblxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9leGVjdXRpb25Qcm9wZXJ0aWVzRmlsZU5hbWU6IHN0cmluZyA9IFwiLi9hc3NldHMvc2VydmVyLWNvbmZpZy5qc29uXCI7IC8vIHBhdGggb2YgdGhlIGV4ZWN1dGlvbiBwcm9wZXJ0aWVzIGZpbGUgZnJvbSBhc3NldHMgZm9sZGVyXHJcblxyXG4gIHN0YXRpYyBnZXQgSW5zdGFuY2UoKTogQ2xpZW50TWFuYWdlciB7XHJcbiAgICBpZiAoQ2xpZW50TWFuYWdlci5faW5zdGFuY2UgPT09IG51bGwpXHJcbiAgICAgIENsaWVudE1hbmFnZXIuX2luc3RhbmNlID0gbmV3IENsaWVudE1hbmFnZXIoKTtcclxuXHJcbiAgICByZXR1cm4gQ2xpZW50TWFuYWdlci5faW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICBwdWJsaWMgQWRkRXZlbnQoZ3VpRXZlbnQ6IElHdWlFdmVudCk6IHZvaWQge1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKGd1aUV2ZW50LlRhc2tJRCk7XHJcbiAgICBsZXQgbGluZUlkeDogbnVtYmVyID0gK2d1aUV2ZW50LkxpbmU7XHJcbiAgICBsZXQgY2xpY2tEYmxDbGlja1N1Y2NlZWRlZDpib29sZWFuID0gZmFsc2U7XHJcbiAgICBsZXQgZHZSb3dJZHg6IG51bWJlciA9IDA7XHJcblxyXG4gICAgaWYgKHRhc2sgIT0gbnVsbCkge1xyXG4gICAgICBsZXQgY29udHJvbDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcblxyXG4gICAgICBpZiAoZ3VpRXZlbnQuQ29udHJvbE5hbWUgIT09IG51bGwpXHJcbiAgICAgICAgY29udHJvbCA9IHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoZ3VpRXZlbnQuQ29udHJvbE5hbWUpO1xyXG5cclxuICAgICAgaWYgKGNvbnRyb2wgIT0gbnVsbCkge1xyXG4gICAgICAgIGxldCBkdjogRGF0YVZpZXcgPSA8RGF0YVZpZXc+dGFzay5EYXRhVmlldztcclxuICAgICAgICBpZiAoY29udHJvbC5Jc1RhYmxlQ2hpbGQpIHtcclxuICAgICAgICAgIGxpbmVJZHggLT0gZHYuUmVjb3Jkc0JlZm9yZUN1cnJlbnRWaWV3O1xyXG4gICAgICAgIH1cclxuICAgICAgICBzd2l0Y2ggKGd1aUV2ZW50LkV2ZW50VHlwZSkge1xyXG5cclxuICAgICAgICAgIGNhc2UgXCJjb2x1bW5Tb3J0XCI6XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sLmlzQ29sdW1uU29ydGFibGUoKSkge1xyXG4gICAgICAgICAgICAgIEV2ZW50cy5PbkNvbHVtbkNsaWNrKGNvbnRyb2wsIGd1aUV2ZW50LkxpbmUsIGd1aUV2ZW50LkNvbnRyb2xOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJtb3VzZWRvd25cIjpcclxuICAgICAgICAgICAgLy8gRGVmZWN0IDE1MjI4OCAmIERlZmVjdCAxNTIyNjg6IFByb2JsZW06IFdoZW4gYnV0dG9uIGlzIGNsaWNrZWQsIHdlIGdldCBmb2N1cyBldmVudCBmaXJzdCBhbmQgaWYgbWVzc2FnZUJveCBpcyBvcGVuZWQgaGVyZSBsaWtlIHZlcmlmeSwgZXRjLlxyXG4gICAgICAgICAgICAvLyB3ZSBkbyBub3QgcmVjZWl2ZSBjbGljayBldmVudC4gSGVuY2UgZXZlbnRzIGFyZSBub3QgcHJvY2Vzc2VkLiBTb2x1dGlvbjogV2UgZG8gbmVlZCBjbGljayBoYW5kbGluZyBmb3IgYnV0dG9uIGFzIGl0IGlzIGNhbGxlZCB3aGVuIHdlIHBhcmtcclxuICAgICAgICAgICAgLy8gb24gYnV0dG9uIGFuZCBwcmVzcyBzcGFjZSBrZXkuIFdlIG5lZWQgZm9jdXMgZXZlbnQgaGFuZGxpbmcgZm9yIGV4ZWN1dGluZyBDUCAmIENTIHdoZW4gcGFya2VkIG9uIGJ1dHRvbiBieSB0YWIga2V5LiBTbyB3ZSBuZWVkIHRvIG1hbmFnZVxyXG4gICAgICAgICAgICAvLyBob3cgY2xpY2sgaXMgaGFuZGxlZC4gV2UgZG8gbm90IG5lZWQgZm9jdXMgZXZlbnQgaGFuZGxpbmcgd2hlbiB3ZSBjbGljayBvbiBidXR0b24sIHNvIG9uIG1vdXNlZG93biwgc2V0IGEgZmxhZyB3aGljaCB3aWxsIGJlIHVzZWQgaW4gZm9jdXNcclxuICAgICAgICAgICAgLy8gZXZlbnQgaGFuZGxpbmcgdG8gc2tpcCBpdHMgaGFuZGxpbmcuIFRoZW4gd2Ugd2lsbCByZWNlaXZlIGNsaWNrIGV2ZW50IHdoZXJlIHRoaXMgd2lsbCBiZSBhY3R1YWxseSBoYW5kbGVkIGFuZCBoZW5jZSB3b3JrLlxyXG4gICAgICAgICAgICBpZiAoY29udHJvbC5pc0J1dHRvbigpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fYnV0dG9uSXNDbGlja2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICghY29udHJvbC5pc1N1YmZvcm0oKSlcclxuICAgICAgICAgICAgICBFdmVudHMuR2V0UnVudGltZUNvbnRleHQoTWFuYWdlci5HZXRDdXJyZW50Q29udGV4dElEKCkpLkxhc3RDbGlja2VkQ3RybE5hbWUgPSBjb250cm9sLmdldE5hbWUoKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBcImNsaWNrXCI6XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sLmlzQnV0dG9uKCkgfHwgKGNvbnRyb2wuQ29ubmVjdGVkQ29udHJvbCAmJiBndWlFdmVudC5mcm9tQnV0dG9uKSl7XHJcbiAgICAgICAgICAgICAgRXZlbnRzLk9uU2VsZWN0aW9uKFwiXCIsIGNvbnRyb2wsIGxpbmVJZHgsIHRydWUpO1xyXG4gICAgICAgICAgICAgIEV2ZW50cy5HZXRSdW50aW1lQ29udGV4dChNYW5hZ2VyLkdldEN1cnJlbnRDb250ZXh0SUQoKSkuTGFzdENsaWNrZWRDdHJsTmFtZSA9IGNvbnRyb2wuZ2V0TmFtZSgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuX2J1dHRvbklzQ2xpY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHNvcnRpbmcgc2hvdWxkIGJlIGhhbmRsZWQgb25seSBvbiBjb2x1bW4gY2xpY2sgYW5kIG5vdCBvbiByb3dEYXRhXHJcbiAgICAgICAgICAgIC8vIGVsc2UgaWYgKGNvbnRyb2wuVHlwZSA9PT0gTWdDb250cm9sVHlwZS5DVFJMX1RZUEVfQ09MVU1OKSB7XHJcbiAgICAgICAgICAgIC8vICAgRXZlbnRzLk9uQ29sdW1uQ2xpY2soY29udHJvbCwgZ3VpRXZlbnQuTGluZSwgZ3VpRXZlbnQuQ29udHJvbE5hbWUpO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIEV2ZW50cy5PbkZvY3VzKGNvbnRyb2wsIGxpbmVJZHgsIHRydWUsIGZhbHNlKTtcclxuICAgICAgICAgICAgICBsZXQgcHJvZHVjZUNsaWNrOiBib29sZWFuID0gY29udHJvbC5pc0J1dHRvbigpIHx8IGNvbnRyb2wuaXNUZXh0Q29udHJvbCgpIHx8IGNvbnRyb2wuaXNMYWJlbCgpIHx8IGNvbnRyb2wuaXNUYWJDb250cm9sKCkgfHwgY29udHJvbC5pc1RhYmxlQ29udHJvbCgpIHx8IGNvbnRyb2wuaXNDb21ib0JveCgpIHx8IGNvbnRyb2wuaXNJbWFnZUNvbnRyb2woKTtcclxuICAgICAgICAgICAgICBFdmVudHMuT25Nb3VzZURvd24oY29udHJvbC5nZXRGb3JtKCksIGNvbnRyb2wsIG51bGwsIHRydWUsIGxpbmVJZHgsIGZhbHNlLCBwcm9kdWNlQ2xpY2spO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcImZvY3VzXCI6XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5fYnV0dG9uSXNDbGlja2VkKVxyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIC8vIC8vIElmIHdlIGF0dGVtcHQgdG8gcGFyayBvbiBjb250cm9sIHdoZXJlIHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IHRvIHBhcmsgbGlrZSBpZiBjb250cm9sIGhhcyBleHByZXNzaW9uIG9yIHBhcmVudCB0YXNrIGZpZWxkLCBkbyBub3QgYWxsb3cgdG8gZm9jdXMgb24gaXQuXHJcbiAgICAgICAgICAgIC8vIC8vIFNldCBGb2N1cyBiYWNrIHRvIGxhc3RGb2N1c2VkQ29udHJvbC4gV2UgbmVlZCBfbGFzdEZhaWxlZEZvY3VzZWRDb250cm9sIGFzIHdlIGdldCBmb2N1cyBldmVudCBvbiBhIGNvbnRyb2wgdHdpY2UuIFNvIHRvIGF2b2lkIHRvIHNob3cgZXJyb3IgbXVsdGlwbGUgdGltZXMsXHJcbiAgICAgICAgICAgIC8vIC8vIG1haW50YWluIF9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2wuXHJcbiAgICAgICAgICAgIC8vIGlmIChjb250cm9sICE9PSB0aGlzLl9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2wgJiYgY29udHJvbC5IYXNFeHBPclBhcmVudFRhc2tGaWVsZCgpKSB7XHJcbiAgICAgICAgICAgIC8vICAgLy8gU2hvdyBlcnJvciBvbmx5IGZvciBjb250cm9scyBoYXZpbmcgRGF0YSBwcm9wZXJ0eSBhbmQgcGFya2FibGVcclxuICAgICAgICAgICAgLy8gICBpZihjb250cm9sLmlzTGlzdEJveCgpIHx8IGNvbnRyb2wuaXNDaGVja0JveCgpIHx8IGNvbnRyb2wuaXNDb21ib0JveCgpIHx8IGNvbnRyb2wuaXNUZXh0Q29udHJvbCgpIHx8IGNvbnRyb2wuaXNSYWRpbygpIHx8IGNvbnRyb2wuaXNUYWJDb250cm9sKCkpIHtcclxuICAgICAgICAgICAgLy8gICAgIENvbW1hbmRzLm1lc3NhZ2VCb3gobnVsbCwgXCJFcnJvclwiLCBcIkNvbnRyb2wgZWl0aGVyIGhhcyBleHByZXNzaW9uIG9yIGhhcyBwYXJlbnQgdGFzayB2YXJpYWJsZSBhdHRhY2hlZCB0byBpdC4gRmFpbGVkIHRvIHBhcmsgb24gY29udHJvbCB3aXRoIG5hbWU6IFwiICsgY29udHJvbC5OYW1lLCBTdHlsZXMuTVNHQk9YX0lDT05fRVJST1IgfCBTdHlsZXMuTVNHQk9YX0JVVFRPTl9PSyk7XHJcbiAgICAgICAgICAgIC8vICAgICAvLyBEZWZlY3QgMTUyNzI4OiBVc2UgbGFzdCBmb2N1c2VkIHRhc2sgaW5zdGVhZCBjb250cm9sIHRhc2sgYXMgY29udHJvbCBjYW4gYmUgZnJvbSBzdWJmb3JtLlxyXG4gICAgICAgICAgICAvLyAgICAgRm9jdXNNYW5hZ2VyLlNldEZvY3VzKExhc3RGb2N1c2VkTWFuYWdlci5JbnN0YW5jZS5nZXRMYXN0Rm9jdXNlZFRhc2soKSwgTGFzdEZvY3VzZWRNYW5hZ2VyLmdldExhc3RGb2N1c2VkQ29udHJvbCgpLCAwLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgIExhc3RGb2N1c2VkTWFuYWdlci5nZXRMYXN0Rm9jdXNlZENvbnRyb2woKSA9PT0gbnVsbCA/IHRydWUgOiBmYWxzZSk7XHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLl9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2wgPSBjb250cm9sO1xyXG4gICAgICAgICAgICAvLyAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAvL1xyXG4gICAgICAgICAgICAvLyB0aGlzLl9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2wgPSBudWxsO1xyXG5cclxuICAgICAgICAgICAgRXZlbnRzLk9uRm9jdXMoY29udHJvbCwgbGluZUlkeCwgdHJ1ZSwgZmFsc2UpO1xyXG5cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiZGJsY2xpY2tcIjpcclxuICAgICAgICAgICAgRXZlbnRzLk9uRGJsQ2xpY2soY29udHJvbCwgbGluZUlkeCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgXCJzZWxlY3Rpb25jaGFuZ2VkXCI6XHJcbiAgICAgICAgICAgIEV2ZW50cy5PblNlbGVjdGlvbihndWlFdmVudC5WYWx1ZSwgY29udHJvbCwgbGluZUlkeCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcImtleWRvd25cIjpcclxuICAgICAgICAgICAgRXZlbnRzLk9uS2V5RG93biggdGFzay5nZXRGb3JtKCksIGNvbnRyb2wsIGd1aUV2ZW50Lm1vZGlmaWVycywgZ3VpRXZlbnQua2V5Q29kZSwgMCwwLCAnJyxmYWxzZSwnJyx0cnVlICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcInNldGV4dGVybmFsdmFsdWVcIjpcclxuICAgICAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5BZGRFeHRlcm5hbFZhbHVlRXZlbnQoKDxNZ0NvbnRyb2w+Y29udHJvbCksIGd1aUV2ZW50LmV4dGVybmFsVmFsdWUsIGd1aUV2ZW50LnBhcmFtKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInVuaGFuZGxlZCBldmVudDogXFxcIlwiICsgZ3VpRXZlbnQuRXZlbnRUeXBlICsgXCJcXFwiXCIpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgc3dpdGNoIChndWlFdmVudC5FdmVudFR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgXCJmb2N1c09uTm9uTWFnaWNDb250cm9sXCI6XHJcbiAgICAgICAgICAgIGNvbnRyb2wgPSBMYXN0Rm9jdXNlZE1hbmFnZXIuZ2V0TGFzdEZvY3VzZWRDb250cm9sKCk7XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgRXZlbnRzLk9uRm9jdXNPbk5vbk1hZ2ljQ29udHJvbChjb250cm9sKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJjbGlja1wiOlxyXG4gICAgICAgICAgICBpZihndWlFdmVudC5Db250cm9sTmFtZSA9PT0gXCJtYWdpY1Jvd1wiKSB7XHJcbiAgICAgICAgICAgICAgZHZSb3dJZHggPSBndWlFdmVudC5MaW5lIC0gKDxEYXRhVmlldz50YXNrLkRhdGFWaWV3KS5SZWNvcmRzQmVmb3JlQ3VycmVudFZpZXc7XHJcbiAgICAgICAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhUYXNrQW5kQ29kZUFuZExpbmUodGFzaywgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFQ19QUkVGSVgsIGR2Um93SWR4KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJjbG9zZVwiOlxyXG4gICAgICAgICAgICBpZiAodGFzay5Jc1JvdXRlKCkpXHJcbiAgICAgICAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5BZGRSb3V0ZXJDbG9zZWRFdmVudCh0YXNrKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIEV2ZW50cy5DbG9zZUZvcm1FdmVudCh0YXNrLmdldEZvcm0oKSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcImRpc3Bvc2VcIjpcclxuICAgICAgICAgICAgTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5kZWxldGVNR0RhdGFUcmVlKHRhc2suZ2V0TWdkSUQoKSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcInJlc2l6ZVwiOlxyXG4gICAgICAgICAgICBFdmVudHMuVGFibGVSZXNpemVFdmVudCh0YXNrLmdldEZvcm0oKS5nZXRUYWJsZUN0cmwoKSwgZ3VpRXZlbnQuUGFnZVNpemUpO1xyXG4gICAgICAgICAgLy9jYXNlICdicmVhaycgaXMgbWlzc2luZyBmb3IgJ3Jlc2l6ZScgd2l0aCBpbnRlbnRpb24gdG8gZXhlY3V0ZSBnZXRSb3dzIHdpdGggdGhlIGRlc2lyZWQgZGF0YXZpZXcgcm93IGluZGV4LlxyXG4gICAgICAgICAgY2FzZSBcImdldFJvd3NcIjpcclxuICAgICAgICAgICAgZHZSb3dJZHggPSBsaW5lSWR4IC0gKDxEYXRhVmlldz50YXNrLkRhdGFWaWV3KS5SZWNvcmRzQmVmb3JlQ3VycmVudFZpZXc7XHJcbiAgICAgICAgICAgIGxldCBsYXN0Rm9jdXNlZFZhbDogTGFzdEZvY3VzZWRWYWwgPSB7Z3VpTWdDb250cm9sOiB0YXNrLmdldEZvcm0oKS5nZXRUYWJsZUN0cmwoKSwgTGluZTogZHZSb3dJZHgsIFZhbDogXCJcIn07XHJcbiAgICAgICAgICAgIEV2ZW50cy5PbkdldFJvd3NEYXRhKHRhc2suZ2V0Rm9ybSgpLmdldFRhYmxlQ3RybCgpLCBkdlJvd0lkeCwgZmFsc2UsIGxhc3RGb2N1c2VkVmFsKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiUm91dGVyTmF2aWdhdGVcIjpcclxuICAgICAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5BZGRSb3V0ZUV2ZW50KHRhc2ssIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9XRUJDTElFTlRfUk9VVEUsIGd1aUV2ZW50LlJvdXRlclBhdGgsIGd1aUV2ZW50LlJvdXRlck91dGxldE5hbWUsXHJcbiAgICAgICAgICAgICAgZ3VpRXZlbnQuUm91dGVyUGFyYW1zKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwic2V0ZXh0ZXJuYWx2YWx1ZVwiOlxyXG4gICAgICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFcnJvclRvTG9nKE5TdHJpbmcuRm9ybWF0KFwiVW5hYmxlIHRvIGZpbmQgezB9OiBUcnlpbmcgdG8gc2V0IHZhbHVlIGZvciBhIG5vbi1leGlzdGluZyBjb250cm9sLlwiLCBndWlFdmVudC5Db250cm9sTmFtZSkpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCBcInVuaGFuZGxlZCBldmVudDogXFxcIlwiICsgZ3VpRXZlbnQuRXZlbnRUeXBlICsgXCJcXFwiXCIpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgLy90YXNrID09IG51bGxcclxuICAgICAgc3dpdGNoIChndWlFdmVudC5FdmVudFR5cGUpIHtcclxuICAgICAgICBjYXNlIFwiY29uZmlybWF0aW9uQ2xvc2VkXCI6XHJcbiAgICAgICAgICB0aGlzLkNvbmZpcm1hdGlvbkNsb3NlZChndWlFdmVudC5rZXlDb2RlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyByYWlzZSBjYWxsYmFjayBvbiBjbG9zaW5nIGNvbmZpcm1hdGlvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgQ29uZmlybWF0aW9uQ2xvc2VkKHJlczogbnVtYmVyKTogdm9pZFxyXG4gIHtcclxuICAgIENvbW1hbmRzLlJlc29sdmVQcm9taXNlKHJlcyk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHRoZSB3b3JrIHRocmVhZCdzIGVudHJ5IG1ldGhvZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgYXN5bmMgV29ya1RocmVhZEV4ZWN1dGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChMb2dnZXIuSW5zdGFuY2UuU2hvdWxkTG9nKCkpIHtcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlVG9Mb2coXCJcIiwgdHJ1ZSk7XHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVRvTG9nKFwiU3RhcnRlZCBvbiBcIiArIERhdGVUaW1lVXRpbHMuVG9TdHJpbmcoRGF0ZVRpbWUuTm93LCBYTUxDb25zdGFudHMuRVJST1JfTE9HX0RBVEVfRk9STUFULCBMb2dnZXIuSW5zdGFuY2UpLCB0cnVlKTtcclxuICAgICAgdGhpcy5Xcml0ZUV4ZWN1dGlvblByb3BlcnRpZXNUb0xvZygpO1xyXG4gICAgfVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGlmIChhd2FpdCBDb21tYW5kc1Byb2Nlc3Nvck1hbmFnZXIuU3RhcnRTZXNzaW9uKCkpIHtcclxuICAgICAgICBsZXQgbWdEYXRhVGFiOiBNR0RhdGFDb2xsZWN0aW9uID0gTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZTtcclxuICAgICAgICBsZXQgc3RhcnR1cE1nRGF0YTogTUdEYXRhID0gbWdEYXRhVGFiLlN0YXJ0dXBNZ0RhdGE7XHJcbiAgICAgICAgbWdEYXRhVGFiLmN1cnJNZ2RJRCA9IHN0YXJ0dXBNZ0RhdGEuR2V0SWQoKTtcclxuXHJcbiAgICAgICAgbGV0IG5vbkludGVyYWN0aXZlVGFzazogVGFzayA9IG51bGw7XHJcbiAgICAgICAgaWYgKCFzdGFydHVwTWdEYXRhLklzQWJvcnRpbmcpXHJcbiAgICAgICAgICBub25JbnRlcmFjdGl2ZVRhc2sgPSBhd2FpdCBUYXNrLlN0YXJ0UHJvZ3JhbShmYWxzZSwgZmFsc2UpO1xyXG5cclxuICAgICAgICBpZiAobm9uSW50ZXJhY3RpdmVUYXNrID09PSBudWxsKVxyXG4gICAgICAgICAgYXdhaXQgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5FdmVudHNMb29wKHN0YXJ0dXBNZ0RhdGEpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIGF3YWl0IEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuTm9uSW50ZXJhY3RpdmVFdmVudHNMb29wKHN0YXJ0dXBNZ0RhdGEsIG5vbkludGVyYWN0aXZlVGFzayk7XHJcblxyXG4gICAgICAgIC8vIHNldCB0aGUgXCJlbmQgb2Ygd29ya1wiIGZsYWcgb25seSBmb3IgdGhlIG1haW4gd2luZG93XHJcbiAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5zZXRFbmRPZldvcmsodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoIChleCkge1xyXG4gICAgICBpZiAoZXggaW5zdGFuY2VvZiBBcHBsaWNhdGlvbkV4Y2VwdGlvbikge1xyXG4gICAgICAgIGxldCBpc05vUmVzdWx0RXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgICAgICBpZiAoZXggaW5zdGFuY2VvZiBTZXJ2ZXJFcnJvciAmJiAoPFNlcnZlckVycm9yPmV4KS5HZXRDb2RlKCkgPT09IFNlcnZlckVycm9yLklORl9OT19SRVNVTFQpXHJcbiAgICAgICAgICBpc05vUmVzdWx0RXJyb3IgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAoIWlzTm9SZXN1bHRFcnJvcilcclxuICAgICAgICAgIGF3YWl0IEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuUHJvY2Vzc0Fib3J0aW5nRXJyb3IoZXgpO1xyXG5cclxuICAgICAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLnNldEVuZE9mV29yayh0cnVlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhyb3cgZXg7XHJcbiAgICB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgYXdhaXQgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5DaGVja0FuZFNob3dTcGlubmVyKGZhbHNlKTtcclxuXHJcbiAgICAgIENvbW1hbmRzLmFkZEdsb2JhbENvbW1hbmQoQ29tbWFuZFR5cGUuRVhJVF9NQUdJQyk7XHJcbiAgICAgIENvbW1hbmRzLmJlZ2luSW52b2tlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFdyaXRlIEV4ZWN1dGlvbiBwcm9wZXJ0aWVzIHRvIGxvZy5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIFdyaXRlRXhlY3V0aW9uUHJvcGVydGllc1RvTG9nKCk6IHZvaWQge1xyXG4gICAgaWYgKExvZ2dlci5JbnN0YW5jZS5TaG91bGRMb2dTZXJ2ZXJSZWxhdGVkTWVzc2FnZXMoKSkge1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVUb0xvZyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIsIHRydWUpO1xyXG4gICAgICAvLyBXcml0ZSBoZWFkaW5nXHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVRvTG9nKFwiRXhlY3V0aW9uIFByb3BlcnRpZXM6XCIsIHRydWUpO1xyXG5cclxuICAgICAgbGV0IHByb3BzU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoU2VydmVyQ29uZmlnLkluc3RhbmNlKTtcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlVG9Mb2cocHJvcHNTdHJpbmcsIHRydWUpO1xyXG5cclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlVG9Mb2coXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwiLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIFJ1bnRpbWVDb250ZXh0QmFzZS5JbnN0YW5jZS5Jbml0KFJlbW90ZUNvbW1hbmRzUHJvY2Vzc29yLlJDX05PX0NPTlRFWFRfSUQpO1xyXG4gICAgTGFzdEZvY3VzZWRNYW5hZ2VyLkluc3RhbmNlLkluaXQoTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZSk7XHJcbiAgICBMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuTGFzdEFjdGlvblRpbWUgPSBNaXNjLmdldFN5c3RlbU1pbGxpc2Vjb25kcygpO1xyXG5cclxuXHJcbiAgICBSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvci5TaG91bGRTY3JhbWJsZUFuZFVuc2NyYW1ibGVNZXNzYWdlcyA9IHRydWU7XHJcblxyXG5cclxuICAgIC8vIFRPRE86IEhvdyB0byBnZXQgUHJvY2Vzcy5HZXRDdXJyZW50UHJvY2VzcygpLklkP1xyXG4gICAgdGhpcy5fZ2xvYmFsVW5pcXVlU2Vzc2lvbklkID0gVW5pcXVlSURVdGlscy5HZXRVbmlxdWVNYWNoaW5lSUQoKSArIFwiX1wiOyAvLyArIFByb2Nlc3MuR2V0Q3VycmVudFByb2Nlc3MoKS5JZDtcclxuXHJcbiAgICB0aGlzLlJlZ2lzdGVyRGVsZWdhdGVzKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IEluaXRpYWxpemUgdGhlIGRhdGEgbmVlZGVkIGJ5IHRoZSBndWkgbGlicmFyeVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBDbGllbnRNYW5hZ2VyIGluc3RhbmNlPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgSW5pdEd1aU1hbmFnZXIoKTogdm9pZCB7XHJcbiAgICBNYW5hZ2VyLkV2ZW50c01hbmFnZXIgPSBFdmVudHNNYW5hZ2VyLkluc3RhbmNlO1xyXG4gICAgTWFuYWdlci5EZWZhdWx0U2VydmVyTmFtZSA9IFNlcnZlckNvbmZpZy5JbnN0YW5jZS5nZXRTZXJ2ZXIoKTtcclxuICAgIE1hbmFnZXIuRGVmYXVsdFByb3RvY29sID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLmdldFByb3RvY29sKCk7XHJcbiAgICBHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudCA9IEVudmlyb25tZW50Lkluc3RhbmNlO1xyXG4gICAgR3VpRGF0YUNvbGxlY3Rpb24uTUdEYXRhVGFibGUgPSBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlO1xyXG4gICAgUnVudGltZUNvbnRleHRCYXNlLm5vQ29udGV4dElkID0gUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuUkNfTk9fQ09OVEVYVF9JRDtcclxuICB9XHJcblxyXG4gIC8vLyBJbml0aWFsaXplIGdsb2JhbCBkYXRhIGluIG9iamVjdHMgdXNlZCB0byBvdmVyY29tZSB0aGUgY2lyY3VsYXIgcmVmZXJlbmNlcyBpc3N1ZVxyXG4gIHByaXZhdGUgSW5pdENpcmN1bGFyUmVmZXJlbmNlc0J5cGFzc2VzKCkge1xyXG4gICAgVGFza3NUYWJsZS5jcmVhdGVOZXd0YXNrID0gVGFzay5DcmVhdGVUYXNrO1xyXG4gICAgT3BlblVSTENvbW1hbmQuY3JlYXRlTmV3Q29tbWFuZHNUYWJsZSA9IENvbW1hbmRzVGFibGUuY3JlYXRlQ29tbWFuZHNUYWJsZTtcclxuXHJcbiAgICBBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlciA9IEV2ZW50c01hbmFnZXIuSW5zdGFuY2U7XHJcbiAgICBBY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUgPSBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlO1xyXG4gICAgQWNjZXNzSGVscGVyLmVudlBhcmFtc1RhYmxlID0gRW52UGFyYW1zVGFibGUuSW5zdGFuY2U7XHJcbiAgICBBY2Nlc3NIZWxwZXIuZ2xvYmFsUGFyYW1zID0gR2xvYmFsUGFyYW1zLkluc3RhbmNlO1xyXG4gICAgQWNjZXNzSGVscGVyLmxhbmd1YWdlRGF0YSA9IExhbmd1YWdlRGF0YS5JbnN0YW5jZTtcclxuICAgIEFjY2Vzc0hlbHBlci5lbnZpcm9ubWVudCA9IEVudmlyb25tZW50Lkluc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBFbnRyeSBwb2ludCB0byB0aGUgV2ViIENsaWVudCA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiYXJnc1wiPmFycmF5IG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHM8L3BhcmFtPlxyXG4gIHN0YXRpYyBNYWluKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpOiB2b2lkIHtcclxuICAgIC8vIFRPRE8gOiBDaGVjayBob3cgdG8gbG9hZCBmcm9tIFN0dWRpbyBpLmUuIEY3XHJcbiAgICAvLyBpZiAoYXJncy5sZW5ndGggIT09IDAgJiYgTlN0cmluZy5TdGFydHNXaXRoKGFyZ3NbMF0sIFwiL3NwYXduYWhlYWRcIikpIHtcclxuICAgIC8vICAgQ2xpZW50TWFuYWdlci5fc3RhcnRlZEZyb21TdHVkaW8gPSB0cnVlO1xyXG4gICAgLy8gICBTdHVkaW9MYXVuY2hlci5Jbml0KGFyZ3MpO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gZWxzZVxyXG4gICAgQ2xpZW50TWFuYWdlci5TdGFydEV4ZWN1dGlvbihodHRwQ2xpZW50KTtcclxuXHJcbiAgICBMb2dnZXIuSW5zdGFuY2UuRmx1c2goKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gVGVybWluYXRlIHRoZSBjbGllbnQgYW5kIHRlcm1pbmF0ZSB0aGUgY29udGV4dCA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIGFzeW5jIFN0b3BFeGVjdXRpb24oKTogUHJvbWlzZSA8dm9pZD4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgSHR0cE1hbmFnZXIuR2V0SW5zdGFuY2UoKS5Jc0Fib3J0aW5nTWFnaWNFbmdpbmUgPSB0cnVlO1xyXG4gICAgICBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLlN0YXJ0dXBNZ0RhdGEuZ2V0Rmlyc3RUYXNrKCkuQ2xvc2luZ0Zvcm1VSSA9IHRydWU7XHJcblxyXG4gICAgICBhd2FpdCBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLlN0YXJ0dXBNZ0RhdGEuZ2V0Rmlyc3RUYXNrKCkuZW5kVGFzayh0cnVlLCBmYWxzZSxcclxuICAgICAgICBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXgzKSB7XHJcbiAgICAgIGlmIChleDMgaW5zdGFuY2VvZiBBcHBsaWNhdGlvbkV4Y2VwdGlvbikge1xyXG4gICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nKGV4Myk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRocm93IGV4MztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBhc3luYyBTdGFydEV4ZWN1dGlvbihodHRwQ2xpZW50Okh0dHBDbGllbnQpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIEh0dHBNYW5hZ2VyLnNldE5hdGl2ZUh0dHBDbGllbnQoaHR0cENsaWVudCk7XHJcbiAgICBsZXQgbG9hZGVkOiBib29sZWFuID0gYXdhaXQgQ2xpZW50TWFuYWdlci5JbnN0YW5jZS5Mb2FkRXhlY3V0aW9uUHJvcHMoKTtcclxuXHJcbiAgICBpZiAobG9hZGVkKSB7XHJcbiAgICAgIENsaWVudE1hbmFnZXIuSW5zdGFuY2UuX2d1aUV2ZW50c1Byb2Nlc3NvciA9IG5ldyBHdWlFdmVudHNQcm9jZXNzb3IoKTtcclxuICAgICAgQ2xpZW50TWFuYWdlci5JbnN0YW5jZS5Jbml0R3VpTWFuYWdlcigpO1xyXG4gICAgICBDbGllbnRNYW5hZ2VyLkluc3RhbmNlLkluaXRDaXJjdWxhclJlZmVyZW5jZXNCeXBhc3NlcygpO1xyXG4gICAgICBsZXQgdmVyc2lvblN0cmluZyA9IEN1cnJlbnRDbGllbnRWZXJzaW9uID09PSAgJzAuMC4wLjAnID8gXCJEZXZlbG9wbWVudCBtb2RlXCIgOiBcIlZlcnNpb24gOiBcIiArIEN1cnJlbnRDbGllbnRWZXJzaW9uIDtcclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKFwiTWFnaWMgV2ViIENsaWVudC4gXCIgKyB2ZXJzaW9uU3RyaW5nKTtcclxuXHJcbiAgICAgIEh0dHBNYW5hZ2VyLkdldEluc3RhbmNlKCkuSHR0cENvbW11bmljYXRpb25UaW1lb3V0TVMgPSBTZXJ2ZXJDb25maWcuSW5zdGFuY2UuR2V0Rmlyc3RIdHRwUmVxdWVzdFRpbWVvdXQoKTtcclxuXHJcbiAgICAgIEV2ZW50c01hbmFnZXIuSW5zdGFuY2UuSW5pdCgpO1xyXG5cclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLkluaXRpYWxpemUoUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuR2V0SW5zdGFuY2UoKS5wYXJzZUxvZ0xldmVsKFNlcnZlckNvbmZpZy5JbnN0YW5jZS5nZXRJbnRlcm5hbExvZ0xldmVsKCkpLCBTZXJ2ZXJDb25maWcuSW5zdGFuY2UuZ2V0SW50ZXJuYWxMb2dTeW5jKCksIGZhbHNlKTtcclxuXHJcbiAgICAgIGxldCBtZ2Q6IE1HRGF0YSA9IG5ldyBNR0RhdGEoXHJcbiAgICAgICAgbmV3IENvbW1hbmRzVGFibGUoKSxcclxuICAgICAgICBuZXcgQ29tbWFuZHNUYWJsZSgpLFxyXG4gICAgICAgIDAsIG51bGwsIGZhbHNlKTtcclxuICAgICAgYXdhaXQgTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5hZGRNR0RhdGEobWdkLCAwLCB0cnVlKTtcclxuXHJcbiAgICAgIGF3YWl0IENsaWVudE1hbmFnZXIuSW5zdGFuY2UuV29ya1RocmVhZEV4ZWN1dGlvbigpO1xyXG5cclxuICAgICAgaWYgKExvZ2dlci5JbnN0YW5jZS5TaG91bGRMb2coKSkge1xyXG4gICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVRvTG9nKE9TRW52aXJvbm1lbnQuRW9sU2VxICsgXCJFbmRlZCBvbiBcIiArIERhdGVUaW1lVXRpbHMuVG9TdHJpbmcoRGF0ZVRpbWUuTm93LCBcImRkL01NL3l5eXlcIiwgTG9nZ2VyLkluc3RhbmNlKSArIE9TRW52aXJvbm1lbnQuRW9sU2VxICsgT1NFbnZpcm9ubWVudC5Fb2xTZXEsIGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAge1xyXG4gICAgICBhd2FpdCBHVUlNYW5hZ2VyLkluc3RhbmNlLk1lc3NhZ2VCb3goXCJFcnJvclwiLCBcIkZhaWxlZCB0byBsb2FkIHNlcnZlciBjb25maWd1cmF0aW9uIGZpbGUgKFwiICsgdGhpcy5fZXhlY3V0aW9uUHJvcGVydGllc0ZpbGVOYW1lICsgXCIpXCIsIFN0eWxlcy5NU0dCT1hfSUNPTl9FUlJPUiB8IFN0eWxlcy5NU0dCT1hfQlVUVE9OX09LKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gTG9hZHMgdGhlIGV4ZWN1dGlvbiBwcm9wZXJ0aWVzIGZpbGUgdGhhdCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2VydmVyLFxyXG4gIC8vLyBhcHBsaWNhdGlvbiBhbmQgcHJvZ3JhbSB0byBleGVjdXRlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBhc3luYyBMb2FkRXhlY3V0aW9uUHJvcHMoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAvLyByZXR1cm4gdHJ1ZSwgaWYgc3VjY2Vzc2Z1bGx5IGxvYWRlZC5cclxuICAgIGxldCByZXNwb25zZTogc3RyaW5nID0gXCJcIjtcclxuICAgIGxldCBzdWNjZWVkZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIGlzRXJyb3IgY2Fubm90IGJlIHRydWUgaGVyZSwgYmVjYXVzZSBpdCBpcyByZXR1cm5lZCBieSBydW50aW1lIGVuZ2luZSBhbmQgdG8gcmVhZCBleGVjdXRpb24gcHJvcGVydGllcywgd2UgZG8gbm90IHJlYWNoIHRoZSBlbmdpbmUuXHJcbiAgICAgIGxldCBpc0Vycm9yOiBSZWZQYXJhbTxib29sZWFuPiA9IG5ldyBSZWZQYXJhbShmYWxzZSk7XHJcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgSHR0cE1hbmFnZXIuR2V0SW5zdGFuY2UoKS5HZXRDb250ZW50KENsaWVudE1hbmFnZXIuX2V4ZWN1dGlvblByb3BlcnRpZXNGaWxlTmFtZSwgbnVsbCwgZmFsc2UsIGlzRXJyb3IpO1xyXG4gICAgICBTZXJ2ZXJDb25maWcuSW5zdGFuY2UuSW5pdChKU09OLnBhcnNlKHJlc3BvbnNlKSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXgpIHtcclxuICAgICAgc3VjY2VlZGVkID0gZmFsc2U7XHJcbiAgICAgIC8vIFRPRE86IHNob3VsZCB3ZSB3cml0ZSB0aGUgZXJyb3IgbWVzc2FnZSB0byBsb2c/XHJcbiAgICAgIC8vIFRPRE86IHNob3VsZCB3ZSBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2Ugb24gdGhlIGJyb3dzZXI/XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHN1Y2NlZWRlZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcmV0dXJuIGEgY29weSBvZiB0aGUgY3VycmVudCBleGVjdXRpb24gcHJvcGVydGllc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPmEgY29weSBvZiB0aGUgY3VycmVudCBleGVjdXRpb24gcHJvcGVydGllczwvcmV0dXJucz5cclxuICBjb3B5RXhlY3V0aW9uUHJvcHMoKTogSVNlcnZlckNvbmZpZyB7XHJcbiAgICAvL3JldHVybiB0aGlzLl9leGVjdXRpb25Qcm9wcy5DbG9uZSgpO1xyXG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcImNvcHlFeGVjdXRpb25Qcm9wcyBub3QgaW1wbGVtZW50ZWRcIik7XHJcbiAgfVxyXG5cclxuICBnZXREZWJ1Z0NsaWVudCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlYnVnQ2xpZW50O1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gR0VUIFVSTCB2YWx1ZSBvZiB0aGUgZXhlY3V0aW9uIHByb3BlcnR5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGdldFVSTEZyb21FeGVjdXRpb25Qcm9wZXJ0aWVzKGV4ZWN1dGlvblByb3BOYW1lOiBzdHJpbmcpOiBVUkwge1xyXG4gICAgbGV0IHVybDogVVJMID0gbnVsbDtcclxuICAgIGxldCB1cmxTdHI6IHN0cmluZyA9IFNlcnZlckNvbmZpZy5JbnN0YW5jZS5HZXRFeGVjdXRpb25Qcm9wZXJ0eVtleGVjdXRpb25Qcm9wTmFtZV07XHJcblxyXG4gICAgaWYgKHVybFN0ciAhPT0gbnVsbCAmJiB0eXBlb2YgdXJsU3RyICE9PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgIC8vIGlmIHJlbGF0aXZlLCBwcmVmaXggd2l0aCB0aGUgJ3Byb3RvY29sOi8vc2VydmVyLycgZnJvbSB3aGljaCB0aGUgcmljaC1jbGllbnQgd2FzIGFjdGl2YXRlZFxyXG4gICAgICBpZiAodXJsU3RyLnN0YXJ0c1dpdGgoXCIvXCIpKVxyXG4gICAgICAgIHVybFN0ciA9IFNlcnZlckNvbmZpZy5JbnN0YW5jZS5nZXRQcm90b2NvbCgpICsgXCI6Ly9cIiArIFNlcnZlckNvbmZpZy5JbnN0YW5jZS5nZXRTZXJ2ZXIoKSArIHVybFN0cjtcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdXJsID0gbmV3IFVSTCh1cmxTdHIpO1xyXG4gICAgICAgIERlYnVnLkFzc2VydCh1cmwucHJvdG9jb2wgPT09IFwiaHR0cDpcIiB8fCB1cmwucHJvdG9jb2wgPT09IFwiaHR0cHM6XCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoIChleCkge1xyXG4gICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nKGV4KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHVybDtcclxuICB9XHJcblxyXG5cclxuICBnZXRMb2dvbldpbmRvd0ljb25VUkwoKTogVVJMIHtcclxuICAgIHJldHVybiB0aGlzLmdldFVSTEZyb21FeGVjdXRpb25Qcm9wZXJ0aWVzKEd1aUNvbnN0YW50cy5TVFJfTE9HT19XSU5fSUNPTl9VUkwpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9nb25XaW5kb3dJbWFnZVVSTCgpOiBVUkwge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0VVJMRnJvbUV4ZWN1dGlvblByb3BlcnRpZXMoR3VpQ29uc3RhbnRzLlNUUl9MT0dPTl9JTUFHRV9VUkwpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gdHJ1ZSBpZiBkZWxheSBpcyBpbiBwcm9ncmVzczwvc3VtbWFyeT5cclxuICBpc0RlbGF5SW5Qcm9ncmVzcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWxheUluUHJvZ3Jlc3M7XHJcbiAgfVxyXG5cclxuICBzZXREZWxheUluUHJvZ3Jlc3MoZGVsYXlJblByb2dyZXNzOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZWxheUluUHJvZ3Jlc3MgPSBkZWxheUluUHJvZ3Jlc3M7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5Pmdsb2JhbCB1bmlxdWUgSUQgb2YgdGhlIHNlc3Npb24gPSAnbWFjaGluZSB1bmlxdWUgSUQnICsgJ3Byb2Nlc3MgSUQnPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgR2V0R2xvYmFsVW5pcXVlU2Vzc2lvbklEKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZ2xvYmFsVW5pcXVlU2Vzc2lvbklkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PnJldHVybiB0aGUgYWJzb2x1dGUgZmlsZSBuYW1lIG9mIHRoZSBleGVjdXRpb24gcHJvcGVydGllcyBmaWxlIGJlaW5nIHVzZWQgYnkgdGhlIGNsaWVudDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIGdldEV4ZWN1dGlvblByb3BlcnRpZXNGaWxlTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgbGV0IGZ1bGx5UXVhbGlmaWVkTmFtZTogc3RyaW5nID0gbnVsbDtcclxuICAgIGxldCBsYXN0UGF0aFNlcGFyYXRvcjogbnVtYmVyID0gZnVsbHlRdWFsaWZpZWROYW1lLmxhc3RJbmRleE9mKCdcXFxcJyk7XHJcbiAgICByZXR1cm4gTlN0cmluZy5SZW1vdmUoZnVsbHlRdWFsaWZpZWROYW1lLCBsYXN0UGF0aFNlcGFyYXRvciArIDEsIGZ1bGx5UXVhbGlmaWVkTmFtZS5sZW5ndGggLSBsYXN0UGF0aFNlcGFyYXRvciAtIDEpICsgQ29uc3RJbnRlcmZhY2UuRVhFQ1VUSU9OX1BST1BFUlRJRVNfRklMRV9OQU1FO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBHZXQgY29udHJvbCdzIHBpY3R1cmVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljICBHZXRDb250cm9sUGljdHVyZU1hc2sodGFza0lkOiBzdHJpbmcsIGNvbnRyb2xOYW1lOiBzdHJpbmcpOiBQSUNcclxuICB7XHJcbiAgICBsZXQgcGljOiBQSUMgPSBudWxsO1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKHRhc2tJZCk7XHJcblxyXG4gICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG5cclxuICAgIGlmIChjb250cm9sTmFtZSAhPT0gbnVsbCkge1xyXG4gICAgICBjb250cm9sID0gdGFzay5nZXRGb3JtKCkuR2V0Q3RybChjb250cm9sTmFtZSk7XHJcbiAgICAgIHBpYyA9IGNvbnRyb2wuZ2V0UElDKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHBpYztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBHZXQgZm9ybWF0dGVkIHZhbHVlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyAgR2V0Rm9ybWF0dGVkVmFsdWUodGFza0lkOiBzdHJpbmcsIGNvbnRyb2xOYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBzdHJpbmdcclxuICB7XHJcbiAgICBsZXQgcGljOiBQSUMgPSBudWxsO1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKHRhc2tJZCk7XHJcblxyXG4gICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG4gICAgbGV0IG5ld1ZhbHVlOiBhbnkgPSB2YWx1ZTtcclxuXHJcbiAgICBpZiAoY29udHJvbE5hbWUgIT09IG51bGwpXHJcbiAgICAgIGNvbnRyb2wgPSB0YXNrLmdldEZvcm0oKS5HZXRDdHJsKGNvbnRyb2xOYW1lKTtcclxuICAgIGlmIChjb250cm9sICE9IG51bGwgJiYgY29udHJvbC5EYXRhVHlwZSA9PSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUMpIHtcclxuICAgICAgcGljID0gY29udHJvbC5nZXRQSUMoKTtcclxuXHJcbiAgICAgIGxldCBkaXNwVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xyXG4gICAgICBsZXQgIG5ld1BpYyA9IHBpYy5nZXRVbmZvcm1hdHRlZE51bWVyaWNQaWMoKTtcclxuXHJcbiAgICAgIGxldCBudW0gPSBEaXNwbGF5Q29udmVydG9yLkluc3RhbmNlLnRvTnVtKGRpc3BWYWx1ZSwgbmV3UGljLCAwKTtcclxuICAgICAgbmV3VmFsdWUgPSBEaXNwbGF5Q29udmVydG9yLkluc3RhbmNlLmZyb21OdW0obnVtLCBwaWMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1ZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCByYW5nZWQgdmFsdWUgZm9yIGlucHV0IHZhbHVlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgIEdldFJhbmdlZFZhbHVlKHRhc2tJZDogc3RyaW5nLCBjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogc3RyaW5nXHJcbiAge1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKHRhc2tJZCk7XHJcblxyXG4gICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG5cclxuICAgIGlmIChjb250cm9sTmFtZSAhPT0gbnVsbClcclxuICAgIHtcclxuICAgICAgY29udHJvbCA9ICB0YXNrLmdldEZvcm0oKS5HZXRDdHJsKGNvbnRyb2xOYW1lKTtcclxuICAgICAgcmV0dXJuIGNvbnRyb2wuZ2V0UmFuZ2VkVmFsdWUodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgdmFsaWRhdGUgdXNlciBpbnB1dCB2YWx1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljICBWYWxpZGF0ZUNvbnRyb2xWYWx1ZSh0YXNrSWQ6IHN0cmluZywgY29udHJvbE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHN0cmluZ1xyXG4gIHtcclxuICAgIGxldCB0YXNrOiBUYXNrID0gPFRhc2s+TUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5HZXRUYXNrQnlJRCh0YXNrSWQpO1xyXG5cclxuICAgIGxldCBjb250cm9sOiBNZ0NvbnRyb2wgPSBudWxsO1xyXG5cclxuICAgIGlmIChjb250cm9sTmFtZSAhPT0gbnVsbClcclxuICAgIHtcclxuICAgICAgY29udHJvbCA9ICB0YXNrLmdldEZvcm0oKS5HZXRDdHJsKGNvbnRyb2xOYW1lKSBhcyBNZ0NvbnRyb2w7XHJcbiAgICAgIHJldHVybiBjb250cm9sLnZhbGlkYXRlKHZhbHVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEdldCBmbGQgcmFuZ2VzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgR2V0RmxkUmFuZ2VzKHRhc2tJZDogc3RyaW5nLCBjb250cm9sTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCB0YXNrOiBUYXNrID0gPFRhc2s+TUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5HZXRUYXNrQnlJRCh0YXNrSWQpO1xyXG5cclxuICAgIGxldCBjb250cm9sOiBNZ0NvbnRyb2wgPSBudWxsO1xyXG5cclxuICAgIGlmIChjb250cm9sTmFtZSAhPT0gbnVsbClcclxuICAgIHtcclxuICAgICAgY29udHJvbCA9ICB0YXNrLmdldEZvcm0oKS5HZXRDdHJsKGNvbnRyb2xOYW1lKSBhcyBNZ0NvbnRyb2w7XHJcbiAgICAgIHJldHVybiBjb250cm9sLmdldFJhbmdlcygpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgUmV0dXJucyB3aGV0aGVyIGNsaWVudC9zZXJ2ZXIgY2FjaGUgZXhpc3RzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgVHJhbnNDYWNoZUV4aXN0cygpOiBib29sZWFuIHtcclxuICAgIGxldCBjbGllbnRUcmFuc0NhY2hlRXhpc3RzOiBib29sZWFuID0gQWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLmdldEN1cnJNR0RhdGEoKS5jbGllbnRUcmFuc2FjdGlvbkNhY2hlRXhpc3RzKCk7XHJcbiAgICBsZXQgc2VydmVyVHJhbnNhY3Rpb25DYWNoZUV4aXN0czogYm9vbGVhbiA9IEFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5nZXRDdXJyTUdEYXRhKCkuc2VydmVyVHJhbnNhY3Rpb25DYWNoZUV4aXN0cygpO1xyXG5cclxuICAgIHJldHVybiBjbGllbnRUcmFuc0NhY2hlRXhpc3RzIHx8IHNlcnZlclRyYW5zYWN0aW9uQ2FjaGVFeGlzdHM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFN1YnNjcmliZSBmb3IgZXZlbnRzIGRlZmluZWQgYXQgSHR0cENsaWVudEV2ZW50cyBhbmRcclxuICAvLy8gYXR0YWNoIGFwcHJvcHJpYXRlIGV2ZW50IGhhbmRsZXJzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIFJlZ2lzdGVyRGVsZWdhdGVzKCk6IHZvaWQge1xyXG4gICAgSHR0cENsaWVudEV2ZW50cy5HZXRFeGVjdXRpb25Qcm9wZXJ0eV9FdmVudCA9IFNlcnZlckNvbmZpZy5JbnN0YW5jZS5HZXRFeGVjdXRpb25Qcm9wZXJ0eS5iaW5kKFNlcnZlckNvbmZpZy5JbnN0YW5jZSk7XHJcbiAgICBIdHRwQ2xpZW50RXZlbnRzLkdldFJ1bnRpbWVDdHhJRF9FdmVudCA9IHRoaXMuR2V0UnVudGltZUN0eElELmJpbmQodGhpcyk7XHJcbiAgICBIdHRwQ2xpZW50RXZlbnRzLkdldEdsb2JhbFVuaXF1ZVNlc3Npb25JRF9FdmVudCA9IHRoaXMuR2V0R2xvYmFsVW5pcXVlU2Vzc2lvbklELmJpbmQodGhpcyk7XHJcbiAgICBIdHRwQ2xpZW50RXZlbnRzLlNob3VsZERpc3BsYXlHZW5lcmljRXJyb3JfRXZlbnQgPSBTZXJ2ZXJDb25maWcuSW5zdGFuY2UuU2hvdWxkRGlzcGxheUdlbmVyaWNFcnJvci5iaW5kKFNlcnZlckNvbmZpZy5JbnN0YW5jZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFJldHJpZXZlcyBydW50aW1lIGNvbnRleHQgSURcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgR2V0UnVudGltZUN0eElEKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gUnVudGltZUNvbnRleHRCYXNlLkluc3RhbmNlLkNvbnRleHRJRDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU2VuZCBhIHJlcXVlc3QgdG8gc2VydmVyIHRvIHRlcm1pbmF0ZSB0aGUgY29udGV4dCB1c2luZyBmZXRjaCBBUEkgd2l0aCBrZWVwLWFsaXZlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgVGVybWluYXRlQ29udGV4dFVzaW5nRmV0Y2hBUEkoKTogdm9pZCB7XHJcblxyXG4gICAgLy8gSWYgU2Vzc2lvbiBpcyByZS1pbml0aWFsaXppbmcgbWVhbnMgdGhlIGNvbnRleHQgaXMgbm90IGZvdW5kIGF0IHNlcnZlci5cclxuICAgIC8vIHRoZW4gdGhlcmUgaXMgbm8gcG9pbnQgaW4gdGVybWluYXRpbmcgY29udGV4dC5cclxuICAgIGlmIChSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvci5Jc1Nlc3Npb25SZUluaXRpYWxpemluZylcclxuICAgICAgcmV0dXJuO1xyXG4gICAgSHR0cE1hbmFnZXIuR2V0SW5zdGFuY2UoKS5Jc0Fib3J0aW5nTWFnaWNFbmdpbmUgPSB0cnVlO1xyXG5cclxuICAgIC8vIER1ZSB0byBwYXlsb2FkIGxpbWl0IG9mIGZldGNoIEFQSSwgc2VuZCBvbmx5IHRoZSBjb250ZXh0IHRlcm1pbmF0aW9uIGNvbW1hbmQgdG8gc2VydmVyXHJcbiAgICBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLmdldEN1cnJNR0RhdGEoKS5DbWRzVG9TZXJ2ZXIuQ2xlYXIoKTtcclxuXHJcbiAgICBsZXQgY29udGV4dFRlcm1pbmF0aW9uRXZlbnRDb21tYW5kOiBDb250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmQgPSBDb21tYW5kRmFjdG9yeS5cclxuICAgIENyZWF0ZUNvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZChNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLlN0YXJ0dXBNZ0RhdGEuZ2V0Rmlyc3RUYXNrKCkuZ2V0VGFza1RhZygpKTtcclxuXHJcbiAgICBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLmdldEN1cnJNR0RhdGEoKS5DbWRzVG9TZXJ2ZXIuQWRkKDxJQ2xpZW50Q29tbWFuZD5jb250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmQpO1xyXG5cclxuICAgIC8vIHJlc3BvbnNlIG5lZWQgbm90IHRvIGJlIGhhbmRsZWQgYXMgdGhlIGJyb3dzZXIgdW5sb2FkIGNhbm5vdCBiZSBzdG9wcGVkLCBzbyBubyBuZWVkIHRvIHdhaXRcclxuICAgIFJlbW90ZUNvbW1hbmRzUHJvY2Vzc29yLkdldEluc3RhbmNlKCkuRXhlY3V0ZShDb21tYW5kc1Byb2Nlc3NvckJhc2VfU2VuZGluZ0luc3RydWN0aW9uLk9OTFlfQ09NTUFORFMpO1xyXG4gIH1cclxufVxyXG4iXX0=
412
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50TWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvQ2xpZW50TWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRyxPQUFPLEVBQ0wsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUMvRSxZQUFZLEVBQ2IsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQ0wsUUFBUSxFQUNSLFdBQVcsRUFBRSxnQkFBZ0IsRUFDN0IsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsRUFDakIsY0FBYyxFQUVkLE9BQU8sRUFHUCxrQkFBa0IsRUFDbEIsTUFBTSxFQUNQLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSWhELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxF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T0FBTztRQUNULFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFHdkQsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUvRCxJQUFJLDhCQUE4QixHQUFtQyxjQUFjO1lBQ25GLG9DQUFvQyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUUxRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBaUIsOEJBQThCLENBQUMsQ0FBQztRQUczRyx1QkFBdUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsd0NBQXdDLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDeEcsQ0FBQzs7QUF0bEJjLHVCQUFTLEdBQWtCLElBQUksQ0FBQztBQVF2QiwwQ0FBNEIsR0FBVyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uRXhjZXB0aW9uLCBEYXRlVGltZSwgRGVidWcsIEV4Y2VwdGlvbiwgTlN0cmluZywgUmVmUGFyYW0gfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcblxyXG5pbXBvcnQge1xyXG4gIERhdGVUaW1lVXRpbHMsIEludGVybmFsSW50ZXJmYWNlLCBMb2dnZXIsIE1pc2MsIE9TRW52aXJvbm1lbnQsIFN0b3JhZ2VBdHRyaWJ1dGUsXHJcbiAgWE1MQ29uc3RhbnRzXHJcbn0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7XHJcbiAgQ29tbWFuZHMsXHJcbiAgQ29tbWFuZFR5cGUsIERpc3BsYXlDb252ZXJ0b3IsXHJcbiAgRXZlbnRzLFxyXG4gIEd1aUNvbnN0YW50cyxcclxuICBHdWlEYXRhQ29sbGVjdGlvbixcclxuICBHdWlFbnZpcm9ubWVudCxcclxuICBMYXN0Rm9jdXNlZFZhbCxcclxuICBNYW5hZ2VyLFxyXG4gIE1nQ29udHJvbEJhc2UsXHJcbiAgUElDLFxyXG4gIFJ1bnRpbWVDb250ZXh0QmFzZSxcclxuICBTdHlsZXNcclxufSBmcm9tICdAbWFnaWMteHBhL2d1aSc7XHJcbmltcG9ydCB7IEV2ZW50c01hbmFnZXIgfSBmcm9tICcuL2V2ZW50L0V2ZW50c01hbmFnZXInO1xyXG5pbXBvcnQgeyBHdWlFdmVudHNQcm9jZXNzb3IgfSBmcm9tICcuL0d1aUV2ZW50c1Byb2Nlc3Nvcic7XHJcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi9lbnYvRW52aXJvbm1lbnQnO1xyXG5pbXBvcnQgeyBMYW5ndWFnZURhdGEgfSBmcm9tICcuL2Vudi9MYW5ndWFnZURhdGEnO1xyXG5pbXBvcnQgeyBUYXNrc1RhYmxlIH0gZnJvbSAnLi90YXNrcy9UYXNrc1RhYmxlJztcclxuaW1wb3J0IHsgVGFibGVDYWNoZU1hbmFnZXIgfSBmcm9tICcuL3J0L1RhYmxlQ2FjaGVNYW5hZ2VyJztcclxuaW1wb3J0IHsgTWdDb250cm9sIH0gZnJvbSAnLi9ndWkvTWdDb250cm9sJztcclxuaW1wb3J0IHsgSUNsaWVudENvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL0lDbGllbnRDb21tYW5kJztcclxuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4vdGFza3MvVGFzayc7XHJcbmltcG9ydCB7IE1HRGF0YUNvbGxlY3Rpb24gfSBmcm9tICcuL3Rhc2tzL01HRGF0YUNvbGxlY3Rpb24nO1xyXG5pbXBvcnQgeyBVbmlxdWVJRFV0aWxzIH0gZnJvbSAnLi91dGlsL1VuaXF1ZUlEVXRpbHMnO1xyXG5pbXBvcnQgeyBIdHRwTWFuYWdlciB9IGZyb20gJy4vaHR0cC9IdHRwTWFuYWdlcic7XHJcbmltcG9ydCB7IENvbW1hbmRzVGFibGUgfSBmcm9tICcuL0NvbW1hbmRzVGFibGUnO1xyXG5pbXBvcnQgeyBSZW1vdGVDb21tYW5kc1Byb2Nlc3NvciB9IGZyb20gJy4vcmVtb3RlL1JlbW90ZUNvbW1hbmRzUHJvY2Vzc29yJztcclxuaW1wb3J0IHsgQ29uc3RJbnRlcmZhY2UgfSBmcm9tICcuL0NvbnN0SW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQ29tbWFuZHNQcm9jZXNzb3JCYXNlX1NlbmRpbmdJbnN0cnVjdGlvbiB9IGZyb20gJy4vQ29tbWFuZHNQcm9jZXNzb3JCYXNlJztcclxuaW1wb3J0IHsgQ29tbWFuZHNQcm9jZXNzb3JNYW5hZ2VyIH0gZnJvbSAnLi9Db21tYW5kc1Byb2Nlc3Nvck1hbmFnZXInO1xyXG5pbXBvcnQgeyBNR0RhdGEgfSBmcm9tICcuL3Rhc2tzL01HRGF0YSc7XHJcbmltcG9ydCB7IFNlcnZlckVycm9yIH0gZnJvbSAnLi9yZW1vdGUvU2VydmVyRXJyb3InO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50RXZlbnRzIH0gZnJvbSAnLi9odHRwL2NsaWVudC9IdHRwQ2xpZW50RXZlbnRzJztcclxuaW1wb3J0IHsgSUd1aUV2ZW50IH0gZnJvbSAnLi9icmlkZ2UvSUd1aUV2ZW50JztcclxuaW1wb3J0IHsgQ29tbWFuZEZhY3RvcnkgfSBmcm9tICcuL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0NvbW1hbmRGYWN0b3J5JztcclxuaW1wb3J0IHsgQ3VycmVudENsaWVudFZlcnNpb24gfSBmcm9tICcuL0N1cnJlbnRDbGllbnRWZXJzaW9uJztcclxuaW1wb3J0IHsgSVNlcnZlckNvbmZpZyB9IGZyb20gJy4vdXRpbC9JU2VydmVyQ29uZmlnJztcclxuaW1wb3J0IHsgRGF0YVZpZXcgfSBmcm9tICcuL2RhdGEvRGF0YVZpZXcnO1xyXG5pbXBvcnQgeyBMYXN0Rm9jdXNlZE1hbmFnZXIgfSBmcm9tICcuL3J0L0xhc3RGb2N1c2VkTWFuYWdlcic7XHJcbmltcG9ydCB7IEVudlBhcmFtc1RhYmxlIH0gZnJvbSAnLi9lbnYvRW52VmFyaWFibGVzVGFibGUnO1xyXG5pbXBvcnQgeyBHbG9iYWxQYXJhbXMgfSBmcm9tICcuL2V4cC9HbG9iYWxQYXJhbXNUYWJsZSc7XHJcbmltcG9ydCB7IE9wZW5VUkxDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9PcGVuVVJMQ29tbWFuZCc7XHJcbmltcG9ydCB7IFNlcnZlckNvbmZpZyB9IGZyb20gJy4vU2VydmVyQ29uZmlnJztcclxuaW1wb3J0IHsgQWNjZXNzSGVscGVyIH0gZnJvbSAnLi9BY2Nlc3NIZWxwZXInO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmQgfSBmcm9tICcuL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0NvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZCc7XHJcbmltcG9ydCB7R1VJTWFuYWdlcn0gZnJvbSBcIi4vR1VJTWFuYWdlclwiO1xyXG5cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIENsaWVudE1hbmFnZXIge1xyXG4gIHByaXZhdGUgX2d1aUV2ZW50c1Byb2Nlc3NvcjogR3VpRXZlbnRzUHJvY2Vzc29yID0gbnVsbDtcclxuXHJcblxyXG5cclxuICBwcml2YXRlIF90YWJsZUNhY2hlTWFuYWdlcjogVGFibGVDYWNoZU1hbmFnZXIgPSBudWxsO1xyXG4gIHByaXZhdGUgX2RlbGF5SW5Qcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlOyAgLy8gdHJ1ZSBpZiBkZWxheSBpcyBpbiBwcm9ncmVzc1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IENsaWVudE1hbmFnZXIgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIF9kZWJ1Z0NsaWVudDogc3RyaW5nID0gbnVsbDtcclxuICBwcml2YXRlIF9nbG9iYWxVbmlxdWVTZXNzaW9uSWQ6IHN0cmluZyA9IG51bGw7XHJcbi8vICBwcml2YXRlIF9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsOyAvLyBjb250cm9sIHdoZXJlIGxhc3QgcGFya2luZyB3YXMgYXR0ZW1wdGVkIGJ1dCB3ZSBkaWQgbm90IHBhcmsgb24gaXRcclxuICBwcml2YXRlIF9idXR0b25Jc0NsaWNrZWQgPSBmYWxzZTtcclxuXHJcblxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9leGVjdXRpb25Qcm9wZXJ0aWVzRmlsZU5hbWU6IHN0cmluZyA9IFwiLi9hc3NldHMvc2VydmVyLWNvbmZpZy5qc29uXCI7IC8vIHBhdGggb2YgdGhlIGV4ZWN1dGlvbiBwcm9wZXJ0aWVzIGZpbGUgZnJvbSBhc3NldHMgZm9sZGVyXHJcblxyXG4gIHN0YXRpYyBnZXQgSW5zdGFuY2UoKTogQ2xpZW50TWFuYWdlciB7XHJcbiAgICBpZiAoQ2xpZW50TWFuYWdlci5faW5zdGFuY2UgPT09IG51bGwpXHJcbiAgICAgIENsaWVudE1hbmFnZXIuX2luc3RhbmNlID0gbmV3IENsaWVudE1hbmFnZXIoKTtcclxuXHJcbiAgICByZXR1cm4gQ2xpZW50TWFuYWdlci5faW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICBwdWJsaWMgQWRkRXZlbnQoZ3VpRXZlbnQ6IElHdWlFdmVudCk6IHZvaWQge1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKGd1aUV2ZW50LlRhc2tJRCk7XHJcbiAgICBsZXQgbGluZUlkeDogbnVtYmVyID0gK2d1aUV2ZW50LkxpbmU7XHJcbiAgICBsZXQgY2xpY2tEYmxDbGlja1N1Y2NlZWRlZDpib29sZWFuID0gZmFsc2U7XHJcbiAgICBsZXQgZHZSb3dJZHg6IG51bWJlciA9IDA7XHJcblxyXG4gICAgaWYgKHRhc2sgIT0gbnVsbCkge1xyXG4gICAgICBsZXQgY29udHJvbDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcblxyXG4gICAgICBpZiAoZ3VpRXZlbnQuQ29udHJvbE5hbWUgIT09IG51bGwpXHJcbiAgICAgICAgY29udHJvbCA9IHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoZ3VpRXZlbnQuQ29udHJvbE5hbWUpO1xyXG5cclxuICAgICAgaWYgKGNvbnRyb2wgIT0gbnVsbCkge1xyXG4gICAgICAgIGxldCBkdjogRGF0YVZpZXcgPSA8RGF0YVZpZXc+dGFzay5EYXRhVmlldztcclxuICAgICAgICBpZiAoY29udHJvbC5Jc1RhYmxlQ2hpbGQpIHtcclxuICAgICAgICAgIGxpbmVJZHggLT0gZHYuUmVjb3Jkc0JlZm9yZUN1cnJlbnRWaWV3O1xyXG4gICAgICAgIH1cclxuICAgICAgICBzd2l0Y2ggKGd1aUV2ZW50LkV2ZW50VHlwZSkge1xyXG5cclxuICAgICAgICAgIGNhc2UgXCJjb2x1bW5Tb3J0XCI6XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sLmlzQ29sdW1uU29ydGFibGUoKSkge1xyXG4gICAgICAgICAgICAgIEV2ZW50cy5PbkNvbHVtbkNsaWNrKGNvbnRyb2wsIGd1aUV2ZW50LkxpbmUsIGd1aUV2ZW50LkNvbnRyb2xOYW1lKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJtb3VzZWRvd25cIjpcclxuICAgICAgICAgICAgLy8gRGVmZWN0IDE1MjI4OCAmIERlZmVjdCAxNTIyNjg6IFByb2JsZW06IFdoZW4gYnV0dG9uIGlzIGNsaWNrZWQsIHdlIGdldCBmb2N1cyBldmVudCBmaXJzdCBhbmQgaWYgbWVzc2FnZUJveCBpcyBvcGVuZWQgaGVyZSBsaWtlIHZlcmlmeSwgZXRjLlxyXG4gICAgICAgICAgICAvLyB3ZSBkbyBub3QgcmVjZWl2ZSBjbGljayBldmVudC4gSGVuY2UgZXZlbnRzIGFyZSBub3QgcHJvY2Vzc2VkLiBTb2x1dGlvbjogV2UgZG8gbmVlZCBjbGljayBoYW5kbGluZyBmb3IgYnV0dG9uIGFzIGl0IGlzIGNhbGxlZCB3aGVuIHdlIHBhcmtcclxuICAgICAgICAgICAgLy8gb24gYnV0dG9uIGFuZCBwcmVzcyBzcGFjZSBrZXkuIFdlIG5lZWQgZm9jdXMgZXZlbnQgaGFuZGxpbmcgZm9yIGV4ZWN1dGluZyBDUCAmIENTIHdoZW4gcGFya2VkIG9uIGJ1dHRvbiBieSB0YWIga2V5LiBTbyB3ZSBuZWVkIHRvIG1hbmFnZVxyXG4gICAgICAgICAgICAvLyBob3cgY2xpY2sgaXMgaGFuZGxlZC4gV2UgZG8gbm90IG5lZWQgZm9jdXMgZXZlbnQgaGFuZGxpbmcgd2hlbiB3ZSBjbGljayBvbiBidXR0b24sIHNvIG9uIG1vdXNlZG93biwgc2V0IGEgZmxhZyB3aGljaCB3aWxsIGJlIHVzZWQgaW4gZm9jdXNcclxuICAgICAgICAgICAgLy8gZXZlbnQgaGFuZGxpbmcgdG8gc2tpcCBpdHMgaGFuZGxpbmcuIFRoZW4gd2Ugd2lsbCByZWNlaXZlIGNsaWNrIGV2ZW50IHdoZXJlIHRoaXMgd2lsbCBiZSBhY3R1YWxseSBoYW5kbGVkIGFuZCBoZW5jZSB3b3JrLlxyXG4gICAgICAgICAgICBpZiAoY29udHJvbC5pc0J1dHRvbigpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fYnV0dG9uSXNDbGlja2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICghY29udHJvbC5pc1N1YmZvcm0oKSlcclxuICAgICAgICAgICAgICBFdmVudHMuR2V0UnVudGltZUNvbnRleHQoTWFuYWdlci5HZXRDdXJyZW50Q29udGV4dElEKCkpLkxhc3RDbGlja2VkQ3RybE5hbWUgPSBjb250cm9sLmdldE5hbWUoKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBcImNsaWNrXCI6XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sLmlzQnV0dG9uKCkgfHwgKGNvbnRyb2wuQ29ubmVjdGVkQ29udHJvbCAmJiBndWlFdmVudC5mcm9tQnV0dG9uKSl7XHJcbiAgICAgICAgICAgICAgRXZlbnRzLk9uU2VsZWN0aW9uKFwiXCIsIGNvbnRyb2wsIGxpbmVJZHgsIHRydWUpO1xyXG4gICAgICAgICAgICAgIEV2ZW50cy5HZXRSdW50aW1lQ29udGV4dChNYW5hZ2VyLkdldEN1cnJlbnRDb250ZXh0SUQoKSkuTGFzdENsaWNrZWRDdHJsTmFtZSA9IGNvbnRyb2wuZ2V0TmFtZSgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuX2J1dHRvbklzQ2xpY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIHNvcnRpbmcgc2hvdWxkIGJlIGhhbmRsZWQgb25seSBvbiBjb2x1bW4gY2xpY2sgYW5kIG5vdCBvbiByb3dEYXRhXHJcbiAgICAgICAgICAgIC8vIGVsc2UgaWYgKGNvbnRyb2wuVHlwZSA9PT0gTWdDb250cm9sVHlwZS5DVFJMX1RZUEVfQ09MVU1OKSB7XHJcbiAgICAgICAgICAgIC8vICAgRXZlbnRzLk9uQ29sdW1uQ2xpY2soY29udHJvbCwgZ3VpRXZlbnQuTGluZSwgZ3VpRXZlbnQuQ29udHJvbE5hbWUpO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIEV2ZW50cy5PbkZvY3VzKGNvbnRyb2wsIGxpbmVJZHgsIHRydWUsIGZhbHNlKTtcclxuICAgICAgICAgICAgICBsZXQgcHJvZHVjZUNsaWNrOiBib29sZWFuID0gY29udHJvbC5pc0J1dHRvbigpIHx8IGNvbnRyb2wuaXNUZXh0Q29udHJvbCgpIHx8IGNvbnRyb2wuaXNMYWJlbCgpIHx8IGNvbnRyb2wuaXNUYWJDb250cm9sKCkgfHwgY29udHJvbC5pc1RhYmxlQ29udHJvbCgpIHx8IGNvbnRyb2wuaXNDb21ib0JveCgpIHx8IGNvbnRyb2wuaXNJbWFnZUNvbnRyb2woKTtcclxuICAgICAgICAgICAgICBFdmVudHMuT25Nb3VzZURvd24oY29udHJvbC5nZXRGb3JtKCksIGNvbnRyb2wsIG51bGwsIHRydWUsIGxpbmVJZHgsIGZhbHNlLCBwcm9kdWNlQ2xpY2spO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcImZvY3VzXCI6XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5fYnV0dG9uSXNDbGlja2VkKVxyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIC8vIC8vIElmIHdlIGF0dGVtcHQgdG8gcGFyayBvbiBjb250cm9sIHdoZXJlIHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IHRvIHBhcmsgbGlrZSBpZiBjb250cm9sIGhhcyBleHByZXNzaW9uIG9yIHBhcmVudCB0YXNrIGZpZWxkLCBkbyBub3QgYWxsb3cgdG8gZm9jdXMgb24gaXQuXHJcbiAgICAgICAgICAgIC8vIC8vIFNldCBGb2N1cyBiYWNrIHRvIGxhc3RGb2N1c2VkQ29udHJvbC4gV2UgbmVlZCBfbGFzdEZhaWxlZEZvY3VzZWRDb250cm9sIGFzIHdlIGdldCBmb2N1cyBldmVudCBvbiBhIGNvbnRyb2wgdHdpY2UuIFNvIHRvIGF2b2lkIHRvIHNob3cgZXJyb3IgbXVsdGlwbGUgdGltZXMsXHJcbiAgICAgICAgICAgIC8vIC8vIG1haW50YWluIF9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2wuXHJcbiAgICAgICAgICAgIC8vIGlmIChjb250cm9sICE9PSB0aGlzLl9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2wgJiYgY29udHJvbC5IYXNFeHBPclBhcmVudFRhc2tGaWVsZCgpKSB7XHJcbiAgICAgICAgICAgIC8vICAgLy8gU2hvdyBlcnJvciBvbmx5IGZvciBjb250cm9scyBoYXZpbmcgRGF0YSBwcm9wZXJ0eSBhbmQgcGFya2FibGVcclxuICAgICAgICAgICAgLy8gICBpZihjb250cm9sLmlzTGlzdEJveCgpIHx8IGNvbnRyb2wuaXNDaGVja0JveCgpIHx8IGNvbnRyb2wuaXNDb21ib0JveCgpIHx8IGNvbnRyb2wuaXNUZXh0Q29udHJvbCgpIHx8IGNvbnRyb2wuaXNSYWRpbygpIHx8IGNvbnRyb2wuaXNUYWJDb250cm9sKCkpIHtcclxuICAgICAgICAgICAgLy8gICAgIENvbW1hbmRzLm1lc3NhZ2VCb3gobnVsbCwgXCJFcnJvclwiLCBcIkNvbnRyb2wgZWl0aGVyIGhhcyBleHByZXNzaW9uIG9yIGhhcyBwYXJlbnQgdGFzayB2YXJpYWJsZSBhdHRhY2hlZCB0byBpdC4gRmFpbGVkIHRvIHBhcmsgb24gY29udHJvbCB3aXRoIG5hbWU6IFwiICsgY29udHJvbC5OYW1lLCBTdHlsZXMuTVNHQk9YX0lDT05fRVJST1IgfCBTdHlsZXMuTVNHQk9YX0JVVFRPTl9PSyk7XHJcbiAgICAgICAgICAgIC8vICAgICAvLyBEZWZlY3QgMTUyNzI4OiBVc2UgbGFzdCBmb2N1c2VkIHRhc2sgaW5zdGVhZCBjb250cm9sIHRhc2sgYXMgY29udHJvbCBjYW4gYmUgZnJvbSBzdWJmb3JtLlxyXG4gICAgICAgICAgICAvLyAgICAgRm9jdXNNYW5hZ2VyLlNldEZvY3VzKExhc3RGb2N1c2VkTWFuYWdlci5JbnN0YW5jZS5nZXRMYXN0Rm9jdXNlZFRhc2soKSwgTGFzdEZvY3VzZWRNYW5hZ2VyLmdldExhc3RGb2N1c2VkQ29udHJvbCgpLCAwLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgIExhc3RGb2N1c2VkTWFuYWdlci5nZXRMYXN0Rm9jdXNlZENvbnRyb2woKSA9PT0gbnVsbCA/IHRydWUgOiBmYWxzZSk7XHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLl9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2wgPSBjb250cm9sO1xyXG4gICAgICAgICAgICAvLyAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAvL1xyXG4gICAgICAgICAgICAvLyB0aGlzLl9sYXN0RmFpbGVkRm9jdXNlZENvbnRyb2wgPSBudWxsO1xyXG5cclxuICAgICAgICAgICAgRXZlbnRzLk9uRm9jdXMoY29udHJvbCwgbGluZUlkeCwgdHJ1ZSwgZmFsc2UpO1xyXG5cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiZGJsY2xpY2tcIjpcclxuICAgICAgICAgICAgRXZlbnRzLk9uRGJsQ2xpY2soY29udHJvbCwgbGluZUlkeCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgXCJzZWxlY3Rpb25jaGFuZ2VkXCI6XHJcbiAgICAgICAgICAgIEV2ZW50cy5PblNlbGVjdGlvbihndWlFdmVudC5WYWx1ZSwgY29udHJvbCwgbGluZUlkeCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcImtleWRvd25cIjpcclxuICAgICAgICAgICAgRXZlbnRzLk9uS2V5RG93biggdGFzay5nZXRGb3JtKCksIGNvbnRyb2wsIGd1aUV2ZW50Lm1vZGlmaWVycywgZ3VpRXZlbnQua2V5Q29kZSwgMCwwLCAnJyxmYWxzZSwnJyx0cnVlICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcInNldGV4dGVybmFsdmFsdWVcIjpcclxuICAgICAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5BZGRFeHRlcm5hbFZhbHVlRXZlbnQoKDxNZ0NvbnRyb2w+Y29udHJvbCksIGd1aUV2ZW50LmV4dGVybmFsVmFsdWUsIGd1aUV2ZW50LnBhcmFtKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInVuaGFuZGxlZCBldmVudDogXFxcIlwiICsgZ3VpRXZlbnQuRXZlbnRUeXBlICsgXCJcXFwiXCIpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgc3dpdGNoIChndWlFdmVudC5FdmVudFR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgXCJmb2N1c09uTm9uTWFnaWNDb250cm9sXCI6XHJcbiAgICAgICAgICAgIGNvbnRyb2wgPSBMYXN0Rm9jdXNlZE1hbmFnZXIuZ2V0TGFzdEZvY3VzZWRDb250cm9sKCk7XHJcbiAgICAgICAgICAgIGlmIChjb250cm9sICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgRXZlbnRzLk9uRm9jdXNPbk5vbk1hZ2ljQ29udHJvbChjb250cm9sKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJjbGlja1wiOlxyXG4gICAgICAgICAgICBpZihndWlFdmVudC5Db250cm9sTmFtZSA9PT0gXCJtYWdpY1Jvd1wiKSB7XHJcbiAgICAgICAgICAgICAgZHZSb3dJZHggPSBndWlFdmVudC5MaW5lIC0gKDxEYXRhVmlldz50YXNrLkRhdGFWaWV3KS5SZWNvcmRzQmVmb3JlQ3VycmVudFZpZXc7XHJcbiAgICAgICAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhUYXNrQW5kQ29kZUFuZExpbmUodGFzaywgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFQ19QUkVGSVgsIGR2Um93SWR4KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJjbG9zZVwiOlxyXG4gICAgICAgICAgICBpZiAodGFzay5Jc1JvdXRlKCkpXHJcbiAgICAgICAgICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5BZGRSb3V0ZXJDbG9zZWRFdmVudCh0YXNrKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIEV2ZW50cy5DbG9zZUZvcm1FdmVudCh0YXNrLmdldEZvcm0oKSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcImRpc3Bvc2VcIjpcclxuICAgICAgICAgICAgTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5kZWxldGVNR0RhdGFUcmVlKHRhc2suZ2V0TWdkSUQoKSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcInJlc2l6ZVwiOlxyXG4gICAgICAgICAgICBFdmVudHMuVGFibGVSZXNpemVFdmVudCh0YXNrLmdldEZvcm0oKS5nZXRUYWJsZUN0cmwoKSwgZ3VpRXZlbnQuUGFnZVNpemUpO1xyXG4gICAgICAgICAgLy9jYXNlICdicmVhaycgaXMgbWlzc2luZyBmb3IgJ3Jlc2l6ZScgd2l0aCBpbnRlbnRpb24gdG8gZXhlY3V0ZSBnZXRSb3dzIHdpdGggdGhlIGRlc2lyZWQgZGF0YXZpZXcgcm93IGluZGV4LlxyXG4gICAgICAgICAgY2FzZSBcImdldFJvd3NcIjpcclxuICAgICAgICAgICAgZHZSb3dJZHggPSBsaW5lSWR4IC0gKDxEYXRhVmlldz50YXNrLkRhdGFWaWV3KS5SZWNvcmRzQmVmb3JlQ3VycmVudFZpZXc7XHJcbiAgICAgICAgICAgIGxldCBsYXN0Rm9jdXNlZFZhbDogTGFzdEZvY3VzZWRWYWwgPSB7Z3VpTWdDb250cm9sOiB0YXNrLmdldEZvcm0oKS5nZXRUYWJsZUN0cmwoKSwgTGluZTogZHZSb3dJZHgsIFZhbDogXCJcIn07XHJcbiAgICAgICAgICAgIEV2ZW50cy5PbkdldFJvd3NEYXRhKHRhc2suZ2V0Rm9ybSgpLmdldFRhYmxlQ3RybCgpLCBkdlJvd0lkeCwgdHJ1ZSwgbGFzdEZvY3VzZWRWYWwpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJSb3V0ZXJOYXZpZ2F0ZVwiOlxyXG4gICAgICAgICAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLkFkZFJvdXRlRXZlbnQodGFzaywgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1dFQkNMSUVOVF9ST1VURSwgZ3VpRXZlbnQuUm91dGVyUGF0aCwgZ3VpRXZlbnQuUm91dGVyT3V0bGV0TmFtZSxcclxuICAgICAgICAgICAgICBndWlFdmVudC5Sb3V0ZXJQYXJhbXMpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJzZXRleHRlcm5hbHZhbHVlXCI6XHJcbiAgICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUVycm9yVG9Mb2coTlN0cmluZy5Gb3JtYXQoXCJVbmFibGUgdG8gZmluZCB7MH06IFRyeWluZyB0byBzZXQgdmFsdWUgZm9yIGEgbm9uLWV4aXN0aW5nIGNvbnRyb2wuXCIsIGd1aUV2ZW50LkNvbnRyb2xOYW1lKSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coIFwidW5oYW5kbGVkIGV2ZW50OiBcXFwiXCIgKyBndWlFdmVudC5FdmVudFR5cGUgKyBcIlxcXCJcIik7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSAvL3Rhc2sgPT0gbnVsbFxyXG4gICAgICBzd2l0Y2ggKGd1aUV2ZW50LkV2ZW50VHlwZSkge1xyXG4gICAgICAgIGNhc2UgXCJjb25maXJtYXRpb25DbG9zZWRcIjpcclxuICAgICAgICAgIHRoaXMuQ29uZmlybWF0aW9uQ2xvc2VkKGd1aUV2ZW50LmtleUNvZGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHJhaXNlIGNhbGxiYWNrIG9uIGNsb3NpbmcgY29uZmlybWF0aW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBDb25maXJtYXRpb25DbG9zZWQocmVzOiBudW1iZXIpOiB2b2lkXHJcbiAge1xyXG4gICAgQ29tbWFuZHMuUmVzb2x2ZVByb21pc2UocmVzKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gdGhlIHdvcmsgdGhyZWFkJ3MgZW50cnkgbWV0aG9kXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBhc3luYyBXb3JrVGhyZWFkRXhlY3V0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKExvZ2dlci5JbnN0YW5jZS5TaG91bGRMb2coKSkge1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVUb0xvZyhcIlwiLCB0cnVlKTtcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlVG9Mb2coXCJTdGFydGVkIG9uIFwiICsgRGF0ZVRpbWVVdGlscy5Ub1N0cmluZyhEYXRlVGltZS5Ob3csIFhNTENvbnN0YW50cy5FUlJPUl9MT0dfREFURV9GT1JNQVQsIExvZ2dlci5JbnN0YW5jZSksIHRydWUpO1xyXG4gICAgICB0aGlzLldyaXRlRXhlY3V0aW9uUHJvcGVydGllc1RvTG9nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKGF3YWl0IENvbW1hbmRzUHJvY2Vzc29yTWFuYWdlci5TdGFydFNlc3Npb24oKSkge1xyXG4gICAgICAgIGxldCBtZ0RhdGFUYWI6IE1HRGF0YUNvbGxlY3Rpb24gPSBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlO1xyXG4gICAgICAgIGxldCBzdGFydHVwTWdEYXRhOiBNR0RhdGEgPSBtZ0RhdGFUYWIuU3RhcnR1cE1nRGF0YTtcclxuICAgICAgICBtZ0RhdGFUYWIuY3Vyck1nZElEID0gc3RhcnR1cE1nRGF0YS5HZXRJZCgpO1xyXG5cclxuICAgICAgICBsZXQgbm9uSW50ZXJhY3RpdmVUYXNrOiBUYXNrID0gbnVsbDtcclxuICAgICAgICBpZiAoIXN0YXJ0dXBNZ0RhdGEuSXNBYm9ydGluZylcclxuICAgICAgICAgIG5vbkludGVyYWN0aXZlVGFzayA9IGF3YWl0IFRhc2suU3RhcnRQcm9ncmFtKGZhbHNlLCBmYWxzZSk7XHJcblxyXG4gICAgICAgIGlmIChub25JbnRlcmFjdGl2ZVRhc2sgPT09IG51bGwpXHJcbiAgICAgICAgICBhd2FpdCBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLkV2ZW50c0xvb3Aoc3RhcnR1cE1nRGF0YSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgYXdhaXQgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5Ob25JbnRlcmFjdGl2ZUV2ZW50c0xvb3Aoc3RhcnR1cE1nRGF0YSwgbm9uSW50ZXJhY3RpdmVUYXNrKTtcclxuXHJcbiAgICAgICAgLy8gc2V0IHRoZSBcImVuZCBvZiB3b3JrXCIgZmxhZyBvbmx5IGZvciB0aGUgbWFpbiB3aW5kb3dcclxuICAgICAgICBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLnNldEVuZE9mV29yayh0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4KSB7XHJcbiAgICAgIGlmIChleCBpbnN0YW5jZW9mIEFwcGxpY2F0aW9uRXhjZXB0aW9uKSB7XHJcbiAgICAgICAgbGV0IGlzTm9SZXN1bHRFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChleCBpbnN0YW5jZW9mIFNlcnZlckVycm9yICYmICg8U2VydmVyRXJyb3I+ZXgpLkdldENvZGUoKSA9PT0gU2VydmVyRXJyb3IuSU5GX05PX1JFU1VMVClcclxuICAgICAgICAgIGlzTm9SZXN1bHRFcnJvciA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICghaXNOb1Jlc3VsdEVycm9yKVxyXG4gICAgICAgICAgYXdhaXQgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5Qcm9jZXNzQWJvcnRpbmdFcnJvcihleCk7XHJcblxyXG4gICAgICAgIEV2ZW50c01hbmFnZXIuSW5zdGFuY2Uuc2V0RW5kT2ZXb3JrKHRydWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aHJvdyBleDtcclxuICAgIH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICBhd2FpdCBFdmVudHNNYW5hZ2VyLkluc3RhbmNlLkNoZWNrQW5kU2hvd1NwaW5uZXIoZmFsc2UpO1xyXG5cclxuICAgICAgQ29tbWFuZHMuYWRkR2xvYmFsQ29tbWFuZChDb21tYW5kVHlwZS5FWElUX01BR0lDKTtcclxuICAgICAgQ29tbWFuZHMuYmVnaW5JbnZva2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gV3JpdGUgRXhlY3V0aW9uIHByb3BlcnRpZXMgdG8gbG9nLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgV3JpdGVFeGVjdXRpb25Qcm9wZXJ0aWVzVG9Mb2coKTogdm9pZCB7XHJcbiAgICBpZiAoTG9nZ2VyLkluc3RhbmNlLlNob3VsZExvZ1NlcnZlclJlbGF0ZWRNZXNzYWdlcygpKSB7XHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZVRvTG9nKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIiwgdHJ1ZSk7XHJcbiAgICAgIC8vIFdyaXRlIGhlYWRpbmdcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlVG9Mb2coXCJFeGVjdXRpb24gUHJvcGVydGllczpcIiwgdHJ1ZSk7XHJcblxyXG4gICAgICBsZXQgcHJvcHNTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShTZXJ2ZXJDb25maWcuSW5zdGFuY2UpO1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVUb0xvZyhwcm9wc1N0cmluZywgdHJ1ZSk7XHJcblxyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVUb0xvZyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIsIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgUnVudGltZUNvbnRleHRCYXNlLkluc3RhbmNlLkluaXQoUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuUkNfTk9fQ09OVEVYVF9JRCk7XHJcbiAgICBMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuSW5pdChNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlKTtcclxuICAgIExhc3RGb2N1c2VkTWFuYWdlci5JbnN0YW5jZS5MYXN0QWN0aW9uVGltZSA9IE1pc2MuZ2V0U3lzdGVtTWlsbGlzZWNvbmRzKCk7XHJcblxyXG5cclxuICAgIFJlbW90ZUNvbW1hbmRzUHJvY2Vzc29yLlNob3VsZFNjcmFtYmxlQW5kVW5zY3JhbWJsZU1lc3NhZ2VzID0gdHJ1ZTtcclxuXHJcblxyXG4gICAgLy8gVE9ETzogSG93IHRvIGdldCBQcm9jZXNzLkdldEN1cnJlbnRQcm9jZXNzKCkuSWQ/XHJcbiAgICB0aGlzLl9nbG9iYWxVbmlxdWVTZXNzaW9uSWQgPSBVbmlxdWVJRFV0aWxzLkdldFVuaXF1ZU1hY2hpbmVJRCgpICsgXCJfXCI7IC8vICsgUHJvY2Vzcy5HZXRDdXJyZW50UHJvY2VzcygpLklkO1xyXG5cclxuICAgIHRoaXMuUmVnaXN0ZXJEZWxlZ2F0ZXMoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gSW5pdGlhbGl6ZSB0aGUgZGF0YSBuZWVkZWQgYnkgdGhlIGd1aSBsaWJyYXJ5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IENsaWVudE1hbmFnZXIgaW5zdGFuY2U8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBJbml0R3VpTWFuYWdlcigpOiB2b2lkIHtcclxuICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlciA9IEV2ZW50c01hbmFnZXIuSW5zdGFuY2U7XHJcbiAgICBNYW5hZ2VyLkRlZmF1bHRTZXJ2ZXJOYW1lID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLmdldFNlcnZlcigpO1xyXG4gICAgTWFuYWdlci5EZWZhdWx0UHJvdG9jb2wgPSBTZXJ2ZXJDb25maWcuSW5zdGFuY2UuZ2V0UHJvdG9jb2woKTtcclxuICAgIEd1aUVudmlyb25tZW50LkVudmlyb25tZW50ID0gRW52aXJvbm1lbnQuSW5zdGFuY2U7XHJcbiAgICBHdWlEYXRhQ29sbGVjdGlvbi5NR0RhdGFUYWJsZSA9IE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2U7XHJcbiAgICBSdW50aW1lQ29udGV4dEJhc2Uubm9Db250ZXh0SWQgPSBSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvci5SQ19OT19DT05URVhUX0lEO1xyXG4gIH1cclxuXHJcbiAgLy8vIEluaXRpYWxpemUgZ2xvYmFsIGRhdGEgaW4gb2JqZWN0cyB1c2VkIHRvIG92ZXJjb21lIHRoZSBjaXJjdWxhciByZWZlcmVuY2VzIGlzc3VlXHJcbiAgcHJpdmF0ZSBJbml0Q2lyY3VsYXJSZWZlcmVuY2VzQnlwYXNzZXMoKSB7XHJcbiAgICBUYXNrc1RhYmxlLmNyZWF0ZU5ld3Rhc2sgPSBUYXNrLkNyZWF0ZVRhc2s7XHJcbiAgICBPcGVuVVJMQ29tbWFuZC5jcmVhdGVOZXdDb21tYW5kc1RhYmxlID0gQ29tbWFuZHNUYWJsZS5jcmVhdGVDb21tYW5kc1RhYmxlO1xyXG5cclxuICAgIEFjY2Vzc0hlbHBlci5ldmVudHNNYW5hZ2VyID0gRXZlbnRzTWFuYWdlci5JbnN0YW5jZTtcclxuICAgIEFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZSA9IE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2U7XHJcbiAgICBBY2Nlc3NIZWxwZXIuZW52UGFyYW1zVGFibGUgPSBFbnZQYXJhbXNUYWJsZS5JbnN0YW5jZTtcclxuICAgIEFjY2Vzc0hlbHBlci5nbG9iYWxQYXJhbXMgPSBHbG9iYWxQYXJhbXMuSW5zdGFuY2U7XHJcbiAgICBBY2Nlc3NIZWxwZXIubGFuZ3VhZ2VEYXRhID0gTGFuZ3VhZ2VEYXRhLkluc3RhbmNlO1xyXG4gICAgQWNjZXNzSGVscGVyLmVudmlyb25tZW50ID0gRW52aXJvbm1lbnQuSW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IEVudHJ5IHBvaW50IHRvIHRoZSBXZWIgQ2xpZW50IDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJhcmdzXCI+YXJyYXkgb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50czwvcGFyYW0+XHJcbiAgc3RhdGljIE1haW4oaHR0cENsaWVudDogSHR0cENsaWVudCk6IHZvaWQge1xyXG4gICAgLy8gVE9ETyA6IENoZWNrIGhvdyB0byBsb2FkIGZyb20gU3R1ZGlvIGkuZS4gRjdcclxuICAgIC8vIGlmIChhcmdzLmxlbmd0aCAhPT0gMCAmJiBOU3RyaW5nLlN0YXJ0c1dpdGgoYXJnc1swXSwgXCIvc3Bhd25haGVhZFwiKSkge1xyXG4gICAgLy8gICBDbGllbnRNYW5hZ2VyLl9zdGFydGVkRnJvbVN0dWRpbyA9IHRydWU7XHJcbiAgICAvLyAgIFN0dWRpb0xhdW5jaGVyLkluaXQoYXJncyk7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBlbHNlXHJcbiAgICBDbGllbnRNYW5hZ2VyLlN0YXJ0RXhlY3V0aW9uKGh0dHBDbGllbnQpO1xyXG5cclxuICAgIExvZ2dlci5JbnN0YW5jZS5GbHVzaCgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBUZXJtaW5hdGUgdGhlIGNsaWVudCBhbmQgdGVybWluYXRlIHRoZSBjb250ZXh0IDwvc3VtbWFyeT5cclxuICBzdGF0aWMgYXN5bmMgU3RvcEV4ZWN1dGlvbigpOiBQcm9taXNlIDx2b2lkPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBIdHRwTWFuYWdlci5HZXRJbnN0YW5jZSgpLklzQWJvcnRpbmdNYWdpY0VuZ2luZSA9IHRydWU7XHJcbiAgICAgIE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuU3RhcnR1cE1nRGF0YS5nZXRGaXJzdFRhc2soKS5DbG9zaW5nRm9ybVVJID0gdHJ1ZTtcclxuXHJcbiAgICAgIGF3YWl0IE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuU3RhcnR1cE1nRGF0YS5nZXRGaXJzdFRhc2soKS5lbmRUYXNrKHRydWUsIGZhbHNlLFxyXG4gICAgICAgIGZhbHNlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleDMpIHtcclxuICAgICAgaWYgKGV4MyBpbnN0YW5jZW9mIEFwcGxpY2F0aW9uRXhjZXB0aW9uKSB7XHJcbiAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2coZXgzKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhyb3cgZXgzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFzeW5jIFN0YXJ0RXhlY3V0aW9uKGh0dHBDbGllbnQ6SHR0cENsaWVudCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgSHR0cE1hbmFnZXIuc2V0TmF0aXZlSHR0cENsaWVudChodHRwQ2xpZW50KTtcclxuICAgIGxldCBsb2FkZWQ6IGJvb2xlYW4gPSBhd2FpdCBDbGllbnRNYW5hZ2VyLkluc3RhbmNlLkxvYWRFeGVjdXRpb25Qcm9wcygpO1xyXG5cclxuICAgIGlmIChsb2FkZWQpIHtcclxuICAgICAgQ2xpZW50TWFuYWdlci5JbnN0YW5jZS5fZ3VpRXZlbnRzUHJvY2Vzc29yID0gbmV3IEd1aUV2ZW50c1Byb2Nlc3NvcigpO1xyXG4gICAgICBDbGllbnRNYW5hZ2VyLkluc3RhbmNlLkluaXRHdWlNYW5hZ2VyKCk7XHJcbiAgICAgIENsaWVudE1hbmFnZXIuSW5zdGFuY2UuSW5pdENpcmN1bGFyUmVmZXJlbmNlc0J5cGFzc2VzKCk7XHJcbiAgICAgIGxldCB2ZXJzaW9uU3RyaW5nID0gQ3VycmVudENsaWVudFZlcnNpb24gPT09ICAnMC4wLjAuMCcgPyBcIkRldmVsb3BtZW50IG1vZGVcIiA6IFwiVmVyc2lvbiA6IFwiICsgQ3VycmVudENsaWVudFZlcnNpb24gO1xyXG5cclxuICAgICAgY29uc29sZS5sb2coXCJNYWdpYyBXZWIgQ2xpZW50LiBcIiArIHZlcnNpb25TdHJpbmcpO1xyXG5cclxuICAgICAgSHR0cE1hbmFnZXIuR2V0SW5zdGFuY2UoKS5IdHRwQ29tbXVuaWNhdGlvblRpbWVvdXRNUyA9IFNlcnZlckNvbmZpZy5JbnN0YW5jZS5HZXRGaXJzdEh0dHBSZXF1ZXN0VGltZW91dCgpO1xyXG5cclxuICAgICAgRXZlbnRzTWFuYWdlci5JbnN0YW5jZS5Jbml0KCk7XHJcblxyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuSW5pdGlhbGl6ZShSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvci5HZXRJbnN0YW5jZSgpLnBhcnNlTG9nTGV2ZWwoU2VydmVyQ29uZmlnLkluc3RhbmNlLmdldEludGVybmFsTG9nTGV2ZWwoKSksIFNlcnZlckNvbmZpZy5JbnN0YW5jZS5nZXRJbnRlcm5hbExvZ1N5bmMoKSwgZmFsc2UpO1xyXG5cclxuICAgICAgbGV0IG1nZDogTUdEYXRhID0gbmV3IE1HRGF0YShcclxuICAgICAgICBuZXcgQ29tbWFuZHNUYWJsZSgpLFxyXG4gICAgICAgIG5ldyBDb21tYW5kc1RhYmxlKCksXHJcbiAgICAgICAgMCwgbnVsbCwgZmFsc2UpO1xyXG4gICAgICBhd2FpdCBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLmFkZE1HRGF0YShtZ2QsIDAsIHRydWUpO1xyXG5cclxuICAgICAgYXdhaXQgQ2xpZW50TWFuYWdlci5JbnN0YW5jZS5Xb3JrVGhyZWFkRXhlY3V0aW9uKCk7XHJcblxyXG4gICAgICBpZiAoTG9nZ2VyLkluc3RhbmNlLlNob3VsZExvZygpKSB7XHJcbiAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlVG9Mb2coT1NFbnZpcm9ubWVudC5Fb2xTZXEgKyBcIkVuZGVkIG9uIFwiICsgRGF0ZVRpbWVVdGlscy5Ub1N0cmluZyhEYXRlVGltZS5Ob3csIFwiZGQvTU0veXl5eVwiLCBMb2dnZXIuSW5zdGFuY2UpICsgT1NFbnZpcm9ubWVudC5Fb2xTZXEgKyBPU0Vudmlyb25tZW50LkVvbFNlcSwgZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICB7XHJcbiAgICAgIGF3YWl0IEdVSU1hbmFnZXIuSW5zdGFuY2UuTWVzc2FnZUJveChcIkVycm9yXCIsIFwiRmFpbGVkIHRvIGxvYWQgc2VydmVyIGNvbmZpZ3VyYXRpb24gZmlsZSAoXCIgKyB0aGlzLl9leGVjdXRpb25Qcm9wZXJ0aWVzRmlsZU5hbWUgKyBcIilcIiwgU3R5bGVzLk1TR0JPWF9JQ09OX0VSUk9SIHwgU3R5bGVzLk1TR0JPWF9CVVRUT05fT0spO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBMb2FkcyB0aGUgZXhlY3V0aW9uIHByb3BlcnRpZXMgZmlsZSB0aGF0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzZXJ2ZXIsXHJcbiAgLy8vIGFwcGxpY2F0aW9uIGFuZCBwcm9ncmFtIHRvIGV4ZWN1dGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGFzeW5jIExvYWRFeGVjdXRpb25Qcm9wcygpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIC8vIHJldHVybiB0cnVlLCBpZiBzdWNjZXNzZnVsbHkgbG9hZGVkLlxyXG4gICAgbGV0IHJlc3BvbnNlOiBzdHJpbmcgPSBcIlwiO1xyXG4gICAgbGV0IHN1Y2NlZWRlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgLy8gaXNFcnJvciBjYW5ub3QgYmUgdHJ1ZSBoZXJlLCBiZWNhdXNlIGl0IGlzIHJldHVybmVkIGJ5IHJ1bnRpbWUgZW5naW5lIGFuZCB0byByZWFkIGV4ZWN1dGlvbiBwcm9wZXJ0aWVzLCB3ZSBkbyBub3QgcmVhY2ggdGhlIGVuZ2luZS5cclxuICAgICAgbGV0IGlzRXJyb3I6IFJlZlBhcmFtPGJvb2xlYW4+ID0gbmV3IFJlZlBhcmFtKGZhbHNlKTtcclxuICAgICAgcmVzcG9uc2UgPSBhd2FpdCBIdHRwTWFuYWdlci5HZXRJbnN0YW5jZSgpLkdldENvbnRlbnQoQ2xpZW50TWFuYWdlci5fZXhlY3V0aW9uUHJvcGVydGllc0ZpbGVOYW1lLCBudWxsLCBmYWxzZSwgaXNFcnJvcik7XHJcbiAgICAgIFNlcnZlckNvbmZpZy5JbnN0YW5jZS5Jbml0KEpTT04ucGFyc2UocmVzcG9uc2UpKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleCkge1xyXG4gICAgICBzdWNjZWVkZWQgPSBmYWxzZTtcclxuICAgICAgLy8gVE9ETzogc2hvdWxkIHdlIHdyaXRlIHRoZSBlcnJvciBtZXNzYWdlIHRvIGxvZz9cclxuICAgICAgLy8gVE9ETzogc2hvdWxkIHdlIGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZSBvbiB0aGUgYnJvd3Nlcj9cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3VjY2VlZGVkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyByZXR1cm4gYSBjb3B5IG9mIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBwcm9wZXJ0aWVzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+YSBjb3B5IG9mIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBwcm9wZXJ0aWVzPC9yZXR1cm5zPlxyXG4gIGNvcHlFeGVjdXRpb25Qcm9wcygpOiBJU2VydmVyQ29uZmlnIHtcclxuICAgIC8vcmV0dXJuIHRoaXMuX2V4ZWN1dGlvblByb3BzLkNsb25lKCk7XHJcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFwiY29weUV4ZWN1dGlvblByb3BzIG5vdCBpbXBsZW1lbnRlZFwiKTtcclxuICB9XHJcblxyXG4gIGdldERlYnVnQ2xpZW50KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVidWdDbGllbnQ7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHRVQgVVJMIHZhbHVlIG9mIHRoZSBleGVjdXRpb24gcHJvcGVydHlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgZ2V0VVJMRnJvbUV4ZWN1dGlvblByb3BlcnRpZXMoZXhlY3V0aW9uUHJvcE5hbWU6IHN0cmluZyk6IFVSTCB7XHJcbiAgICBsZXQgdXJsOiBVUkwgPSBudWxsO1xyXG4gICAgbGV0IHVybFN0cjogc3RyaW5nID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLkdldEV4ZWN1dGlvblByb3BlcnR5W2V4ZWN1dGlvblByb3BOYW1lXTtcclxuXHJcbiAgICBpZiAodXJsU3RyICE9PSBudWxsICYmIHR5cGVvZiB1cmxTdHIgIT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgLy8gaWYgcmVsYXRpdmUsIHByZWZpeCB3aXRoIHRoZSAncHJvdG9jb2w6Ly9zZXJ2ZXIvJyBmcm9tIHdoaWNoIHRoZSByaWNoLWNsaWVudCB3YXMgYWN0aXZhdGVkXHJcbiAgICAgIGlmICh1cmxTdHIuc3RhcnRzV2l0aChcIi9cIikpXHJcbiAgICAgICAgdXJsU3RyID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLmdldFByb3RvY29sKCkgKyBcIjovL1wiICsgU2VydmVyQ29uZmlnLkluc3RhbmNlLmdldFNlcnZlcigpICsgdXJsU3RyO1xyXG5cclxuICAgICAgdHJ5IHtcclxuICAgICAgICB1cmwgPSBuZXcgVVJMKHVybFN0cik7XHJcbiAgICAgICAgRGVidWcuQXNzZXJ0KHVybC5wcm90b2NvbCA9PT0gXCJodHRwOlwiIHx8IHVybC5wcm90b2NvbCA9PT0gXCJodHRwczpcIik7XHJcbiAgICAgIH1cclxuICAgICAgY2F0Y2ggKGV4KSB7XHJcbiAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2coZXgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXJsO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldExvZ29uV2luZG93SWNvblVSTCgpOiBVUkwge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0VVJMRnJvbUV4ZWN1dGlvblByb3BlcnRpZXMoR3VpQ29uc3RhbnRzLlNUUl9MT0dPX1dJTl9JQ09OX1VSTCk7XHJcbiAgfVxyXG5cclxuICBnZXRMb2dvbldpbmRvd0ltYWdlVVJMKCk6IFVSTCB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRVUkxGcm9tRXhlY3V0aW9uUHJvcGVydGllcyhHdWlDb25zdGFudHMuU1RSX0xPR09OX0lNQUdFX1VSTCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiB0cnVlIGlmIGRlbGF5IGlzIGluIHByb2dyZXNzPC9zdW1tYXJ5PlxyXG4gIGlzRGVsYXlJblByb2dyZXNzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlbGF5SW5Qcm9ncmVzcztcclxuICB9XHJcblxyXG4gIHNldERlbGF5SW5Qcm9ncmVzcyhkZWxheUluUHJvZ3Jlc3M6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX2RlbGF5SW5Qcm9ncmVzcyA9IGRlbGF5SW5Qcm9ncmVzcztcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+Z2xvYmFsIHVuaXF1ZSBJRCBvZiB0aGUgc2Vzc2lvbiA9ICdtYWNoaW5lIHVuaXF1ZSBJRCcgKyAncHJvY2VzcyBJRCc8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBHZXRHbG9iYWxVbmlxdWVTZXNzaW9uSUQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9nbG9iYWxVbmlxdWVTZXNzaW9uSWQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cmV0dXJuIHRoZSBhYnNvbHV0ZSBmaWxlIG5hbWUgb2YgdGhlIGV4ZWN1dGlvbiBwcm9wZXJ0aWVzIGZpbGUgYmVpbmcgdXNlZCBieSB0aGUgY2xpZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0RXhlY3V0aW9uUHJvcGVydGllc0ZpbGVOYW1lKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgZnVsbHlRdWFsaWZpZWROYW1lOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgbGV0IGxhc3RQYXRoU2VwYXJhdG9yOiBudW1iZXIgPSBmdWxseVF1YWxpZmllZE5hbWUubGFzdEluZGV4T2YoJ1xcXFwnKTtcclxuICAgIHJldHVybiBOU3RyaW5nLlJlbW92ZShmdWxseVF1YWxpZmllZE5hbWUsIGxhc3RQYXRoU2VwYXJhdG9yICsgMSwgZnVsbHlRdWFsaWZpZWROYW1lLmxlbmd0aCAtIGxhc3RQYXRoU2VwYXJhdG9yIC0gMSkgKyBDb25zdEludGVyZmFjZS5FWEVDVVRJT05fUFJPUEVSVElFU19GSUxFX05BTUU7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEdldCBjb250cm9sJ3MgcGljdHVyZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgIEdldENvbnRyb2xQaWN0dXJlTWFzayh0YXNrSWQ6IHN0cmluZywgY29udHJvbE5hbWU6IHN0cmluZyk6IFBJQ1xyXG4gIHtcclxuICAgIGxldCBwaWM6IFBJQyA9IG51bGw7XHJcbiAgICBsZXQgdGFzazogVGFzayA9IDxUYXNrPk1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuR2V0VGFza0J5SUQodGFza0lkKTtcclxuXHJcbiAgICBsZXQgY29udHJvbDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcblxyXG4gICAgaWYgKGNvbnRyb2xOYW1lICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnRyb2wgPSB0YXNrLmdldEZvcm0oKS5HZXRDdHJsKGNvbnRyb2xOYW1lKTtcclxuICAgICAgcGljID0gY29udHJvbC5nZXRQSUMoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcGljO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEdldCBmb3JtYXR0ZWQgdmFsdWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljICBHZXRGb3JtYXR0ZWRWYWx1ZSh0YXNrSWQ6IHN0cmluZywgY29udHJvbE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHN0cmluZ1xyXG4gIHtcclxuICAgIGxldCBwaWM6IFBJQyA9IG51bGw7XHJcbiAgICBsZXQgdGFzazogVGFzayA9IDxUYXNrPk1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuR2V0VGFza0J5SUQodGFza0lkKTtcclxuXHJcbiAgICBsZXQgY29udHJvbDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcbiAgICBsZXQgbmV3VmFsdWU6IGFueSA9IHZhbHVlO1xyXG5cclxuICAgIGlmIChjb250cm9sTmFtZSAhPT0gbnVsbClcclxuICAgICAgY29udHJvbCA9IHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpO1xyXG4gICAgaWYgKGNvbnRyb2wgIT0gbnVsbCAmJiBjb250cm9sLkRhdGFUeXBlID09IFN0b3JhZ2VBdHRyaWJ1dGUuTlVNRVJJQykge1xyXG4gICAgICBwaWMgPSBjb250cm9sLmdldFBJQygpO1xyXG5cclxuICAgICAgbGV0IGRpc3BWYWx1ZSA9IFN0cmluZyh2YWx1ZSk7XHJcbiAgICAgIGxldCAgbmV3UGljID0gcGljLmdldFVuZm9ybWF0dGVkTnVtZXJpY1BpYygpO1xyXG5cclxuICAgICAgbGV0IG51bSA9IERpc3BsYXlDb252ZXJ0b3IuSW5zdGFuY2UudG9OdW0oZGlzcFZhbHVlLCBuZXdQaWMsIDApO1xyXG4gICAgICBuZXdWYWx1ZSA9IERpc3BsYXlDb252ZXJ0b3IuSW5zdGFuY2UuZnJvbU51bShudW0sIHBpYyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHJhbmdlZCB2YWx1ZSBmb3IgaW5wdXQgdmFsdWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyAgR2V0UmFuZ2VkVmFsdWUodGFza0lkOiBzdHJpbmcsIGNvbnRyb2xOYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdcclxuICB7XHJcbiAgICBsZXQgdGFzazogVGFzayA9IDxUYXNrPk1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuR2V0VGFza0J5SUQodGFza0lkKTtcclxuXHJcbiAgICBsZXQgY29udHJvbDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcblxyXG4gICAgaWYgKGNvbnRyb2xOYW1lICE9PSBudWxsKVxyXG4gICAge1xyXG4gICAgICBjb250cm9sID0gIHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpO1xyXG4gICAgICByZXR1cm4gY29udHJvbC5nZXRSYW5nZWRWYWx1ZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICB2YWxpZGF0ZSB1c2VyIGlucHV0IHZhbHVlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgIFZhbGlkYXRlQ29udHJvbFZhbHVlKHRhc2tJZDogc3RyaW5nLCBjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogc3RyaW5nXHJcbiAge1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKHRhc2tJZCk7XHJcblxyXG4gICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbCA9IG51bGw7XHJcblxyXG4gICAgaWYgKGNvbnRyb2xOYW1lICE9PSBudWxsKVxyXG4gICAge1xyXG4gICAgICBjb250cm9sID0gIHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpIGFzIE1nQ29udHJvbDtcclxuICAgICAgcmV0dXJuIGNvbnRyb2wudmFsaWRhdGUodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgR2V0IGZsZCByYW5nZXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBHZXRGbGRSYW5nZXModGFza0lkOiBzdHJpbmcsIGNvbnRyb2xOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSA8VGFzaz5NR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLkdldFRhc2tCeUlEKHRhc2tJZCk7XHJcblxyXG4gICAgbGV0IGNvbnRyb2w6IE1nQ29udHJvbCA9IG51bGw7XHJcblxyXG4gICAgaWYgKGNvbnRyb2xOYW1lICE9PSBudWxsKVxyXG4gICAge1xyXG4gICAgICBjb250cm9sID0gIHRhc2suZ2V0Rm9ybSgpLkdldEN0cmwoY29udHJvbE5hbWUpIGFzIE1nQ29udHJvbDtcclxuICAgICAgcmV0dXJuIGNvbnRyb2wuZ2V0UmFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBSZXR1cm5zIHdoZXRoZXIgY2xpZW50L3NlcnZlciBjYWNoZSBleGlzdHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBUcmFuc0NhY2hlRXhpc3RzKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGNsaWVudFRyYW5zQ2FjaGVFeGlzdHM6IGJvb2xlYW4gPSBBY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuZ2V0Q3Vyck1HRGF0YSgpLmNsaWVudFRyYW5zYWN0aW9uQ2FjaGVFeGlzdHMoKTtcclxuICAgIGxldCBzZXJ2ZXJUcmFuc2FjdGlvbkNhY2hlRXhpc3RzOiBib29sZWFuID0gQWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLmdldEN1cnJNR0RhdGEoKS5zZXJ2ZXJUcmFuc2FjdGlvbkNhY2hlRXhpc3RzKCk7XHJcblxyXG4gICAgcmV0dXJuIGNsaWVudFRyYW5zQ2FjaGVFeGlzdHMgfHwgc2VydmVyVHJhbnNhY3Rpb25DYWNoZUV4aXN0cztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU3Vic2NyaWJlIGZvciBldmVudHMgZGVmaW5lZCBhdCBIdHRwQ2xpZW50RXZlbnRzIGFuZFxyXG4gIC8vLyBhdHRhY2ggYXBwcm9wcmlhdGUgZXZlbnQgaGFuZGxlcnNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgUmVnaXN0ZXJEZWxlZ2F0ZXMoKTogdm9pZCB7XHJcbiAgICBIdHRwQ2xpZW50RXZlbnRzLkdldEV4ZWN1dGlvblByb3BlcnR5X0V2ZW50ID0gU2VydmVyQ29uZmlnLkluc3RhbmNlLkdldEV4ZWN1dGlvblByb3BlcnR5LmJpbmQoU2VydmVyQ29uZmlnLkluc3RhbmNlKTtcclxuICAgIEh0dHBDbGllbnRFdmVudHMuR2V0UnVudGltZUN0eElEX0V2ZW50ID0gdGhpcy5HZXRSdW50aW1lQ3R4SUQuYmluZCh0aGlzKTtcclxuICAgIEh0dHBDbGllbnRFdmVudHMuR2V0R2xvYmFsVW5pcXVlU2Vzc2lvbklEX0V2ZW50ID0gdGhpcy5HZXRHbG9iYWxVbmlxdWVTZXNzaW9uSUQuYmluZCh0aGlzKTtcclxuICAgIEh0dHBDbGllbnRFdmVudHMuU2hvdWxkRGlzcGxheUdlbmVyaWNFcnJvcl9FdmVudCA9IFNlcnZlckNvbmZpZy5JbnN0YW5jZS5TaG91bGREaXNwbGF5R2VuZXJpY0Vycm9yLmJpbmQoU2VydmVyQ29uZmlnLkluc3RhbmNlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmV0cmlldmVzIHJ1bnRpbWUgY29udGV4dCBJRFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBHZXRSdW50aW1lQ3R4SUQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBSdW50aW1lQ29udGV4dEJhc2UuSW5zdGFuY2UuQ29udGV4dElEO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTZW5kIGEgcmVxdWVzdCB0byBzZXJ2ZXIgdG8gdGVybWluYXRlIHRoZSBjb250ZXh0IHVzaW5nIGZldGNoIEFQSSB3aXRoIGtlZXAtYWxpdmVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBUZXJtaW5hdGVDb250ZXh0VXNpbmdGZXRjaEFQSSgpOiB2b2lkIHtcclxuXHJcbiAgICAvLyBJZiBTZXNzaW9uIGlzIHJlLWluaXRpYWxpemluZyBtZWFucyB0aGUgY29udGV4dCBpcyBub3QgZm91bmQgYXQgc2VydmVyLlxyXG4gICAgLy8gdGhlbiB0aGVyZSBpcyBubyBwb2ludCBpbiB0ZXJtaW5hdGluZyBjb250ZXh0LlxyXG4gICAgaWYgKFJlbW90ZUNvbW1hbmRzUHJvY2Vzc29yLklzU2Vzc2lvblJlSW5pdGlhbGl6aW5nKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBIdHRwTWFuYWdlci5HZXRJbnN0YW5jZSgpLklzQWJvcnRpbmdNYWdpY0VuZ2luZSA9IHRydWU7XHJcblxyXG4gICAgLy8gRHVlIHRvIHBheWxvYWQgbGltaXQgb2YgZmV0Y2ggQVBJLCBzZW5kIG9ubHkgdGhlIGNvbnRleHQgdGVybWluYXRpb24gY29tbWFuZCB0byBzZXJ2ZXJcclxuICAgIE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuZ2V0Q3Vyck1HRGF0YSgpLkNtZHNUb1NlcnZlci5DbGVhcigpO1xyXG5cclxuICAgIGxldCBjb250ZXh0VGVybWluYXRpb25FdmVudENvbW1hbmQ6IENvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZCA9IENvbW1hbmRGYWN0b3J5LlxyXG4gICAgQ3JlYXRlQ29udGV4dFRlcm1pbmF0aW9uRXZlbnRDb21tYW5kKE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuU3RhcnR1cE1nRGF0YS5nZXRGaXJzdFRhc2soKS5nZXRUYXNrVGFnKCkpO1xyXG5cclxuICAgIE1HRGF0YUNvbGxlY3Rpb24uSW5zdGFuY2UuZ2V0Q3Vyck1HRGF0YSgpLkNtZHNUb1NlcnZlci5BZGQoPElDbGllbnRDb21tYW5kPmNvbnRleHRUZXJtaW5hdGlvbkV2ZW50Q29tbWFuZCk7XHJcblxyXG4gICAgLy8gcmVzcG9uc2UgbmVlZCBub3QgdG8gYmUgaGFuZGxlZCBhcyB0aGUgYnJvd3NlciB1bmxvYWQgY2Fubm90IGJlIHN0b3BwZWQsIHNvIG5vIG5lZWQgdG8gd2FpdFxyXG4gICAgUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuR2V0SW5zdGFuY2UoKS5FeGVjdXRlKENvbW1hbmRzUHJvY2Vzc29yQmFzZV9TZW5kaW5nSW5zdHJ1Y3Rpb24uT05MWV9DT01NQU5EUyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==