parse-server 6.4.0 → 6.5.0-beta.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 (188) hide show
  1. package/README.md +8 -6
  2. package/lib/AccountLockout.js +1 -1
  3. package/lib/Adapters/AdapterLoader.js +1 -1
  4. package/lib/Adapters/Analytics/AnalyticsAdapter.js +1 -1
  5. package/lib/Adapters/Auth/AuthAdapter.js +1 -1
  6. package/lib/Adapters/Auth/OAuth1Client.js +1 -1
  7. package/lib/Adapters/Auth/apple.js +1 -1
  8. package/lib/Adapters/Auth/facebook.js +1 -1
  9. package/lib/Adapters/Auth/gcenter.js +1 -1
  10. package/lib/Adapters/Auth/github.js +1 -1
  11. package/lib/Adapters/Auth/google.js +1 -1
  12. package/lib/Adapters/Auth/gpgames.js +1 -1
  13. package/lib/Adapters/Auth/httpsRequest.js +1 -1
  14. package/lib/Adapters/Auth/index.js +1 -1
  15. package/lib/Adapters/Auth/instagram.js +1 -1
  16. package/lib/Adapters/Auth/janraincapture.js +1 -1
  17. package/lib/Adapters/Auth/janrainengage.js +1 -1
  18. package/lib/Adapters/Auth/keycloak.js +1 -1
  19. package/lib/Adapters/Auth/ldap.js +1 -1
  20. package/lib/Adapters/Auth/line.js +1 -1
  21. package/lib/Adapters/Auth/linkedin.js +1 -1
  22. package/lib/Adapters/Auth/meetup.js +1 -1
  23. package/lib/Adapters/Auth/mfa.js +1 -1
  24. package/lib/Adapters/Auth/microsoft.js +1 -1
  25. package/lib/Adapters/Auth/oauth2.js +1 -1
  26. package/lib/Adapters/Auth/phantauth.js +1 -1
  27. package/lib/Adapters/Auth/qq.js +1 -1
  28. package/lib/Adapters/Auth/spotify.js +1 -1
  29. package/lib/Adapters/Auth/twitter.js +1 -1
  30. package/lib/Adapters/Auth/vkontakte.js +1 -1
  31. package/lib/Adapters/Auth/wechat.js +1 -1
  32. package/lib/Adapters/Auth/weibo.js +1 -1
  33. package/lib/Adapters/Cache/CacheAdapter.js +1 -1
  34. package/lib/Adapters/Cache/InMemoryCache.js +1 -1
  35. package/lib/Adapters/Cache/InMemoryCacheAdapter.js +1 -1
  36. package/lib/Adapters/Cache/LRUCache.js +1 -1
  37. package/lib/Adapters/Cache/NullCacheAdapter.js +1 -1
  38. package/lib/Adapters/Cache/RedisCacheAdapter.js +1 -1
  39. package/lib/Adapters/Cache/SchemaCache.js +1 -1
  40. package/lib/Adapters/Email/MailAdapter.js +1 -1
  41. package/lib/Adapters/Files/FilesAdapter.js +1 -1
  42. package/lib/Adapters/Files/GridFSBucketAdapter.js +1 -1
  43. package/lib/Adapters/Files/GridStoreAdapter.js +1 -1
  44. package/lib/Adapters/Logger/LoggerAdapter.js +1 -1
  45. package/lib/Adapters/Logger/WinstonLogger.js +1 -1
  46. package/lib/Adapters/Logger/WinstonLoggerAdapter.js +1 -1
  47. package/lib/Adapters/MessageQueue/EventEmitterMQ.js +1 -1
  48. package/lib/Adapters/PubSub/EventEmitterPubSub.js +1 -1
  49. package/lib/Adapters/PubSub/PubSubAdapter.js +6 -1
  50. package/lib/Adapters/PubSub/RedisPubSub.js +1 -1
  51. package/lib/Adapters/Push/PushAdapter.js +1 -1
  52. package/lib/Adapters/Storage/Mongo/MongoCollection.js +1 -1
  53. package/lib/Adapters/Storage/Mongo/MongoSchemaCollection.js +1 -1
  54. package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +3 -2
  55. package/lib/Adapters/Storage/Mongo/MongoTransform.js +10 -1
  56. package/lib/Adapters/Storage/Postgres/PostgresClient.js +1 -1
  57. package/lib/Adapters/Storage/Postgres/PostgresConfigParser.js +1 -1
  58. package/lib/Adapters/Storage/Postgres/PostgresStorageAdapter.js +4 -2
  59. package/lib/Adapters/Storage/Postgres/sql/index.js +1 -1
  60. package/lib/Adapters/WebSocketServer/WSAdapter.js +1 -1
  61. package/lib/Adapters/WebSocketServer/WSSAdapter.js +1 -1
  62. package/lib/Auth.js +1 -1
  63. package/lib/ClientSDK.js +1 -1
  64. package/lib/Config.js +1 -1
  65. package/lib/Controllers/AdaptableController.js +1 -1
  66. package/lib/Controllers/AnalyticsController.js +1 -1
  67. package/lib/Controllers/CacheController.js +1 -1
  68. package/lib/Controllers/DatabaseController.js +40 -12
  69. package/lib/Controllers/FilesController.js +1 -1
  70. package/lib/Controllers/HooksController.js +1 -1
  71. package/lib/Controllers/LiveQueryController.js +1 -1
  72. package/lib/Controllers/LoggerController.js +1 -1
  73. package/lib/Controllers/ParseGraphQLController.js +1 -1
  74. package/lib/Controllers/PushController.js +1 -1
  75. package/lib/Controllers/SchemaController.js +4 -1
  76. package/lib/Controllers/UserController.js +1 -1
  77. package/lib/Controllers/index.js +3 -2
  78. package/lib/Deprecator/Deprecator.js +1 -1
  79. package/lib/GraphQL/ParseGraphQLSchema.js +1 -1
  80. package/lib/GraphQL/ParseGraphQLServer.js +1 -1
  81. package/lib/GraphQL/helpers/objectsMutations.js +1 -1
  82. package/lib/GraphQL/helpers/objectsQueries.js +1 -1
  83. package/lib/GraphQL/loaders/defaultGraphQLMutations.js +1 -1
  84. package/lib/GraphQL/loaders/defaultGraphQLQueries.js +1 -1
  85. package/lib/GraphQL/loaders/defaultGraphQLTypes.js +1 -1
  86. package/lib/GraphQL/loaders/defaultRelaySchema.js +1 -1
  87. package/lib/GraphQL/loaders/filesMutations.js +1 -1
  88. package/lib/GraphQL/loaders/functionsMutations.js +1 -1
  89. package/lib/GraphQL/loaders/parseClassMutations.js +1 -1
  90. package/lib/GraphQL/loaders/parseClassQueries.js +1 -1
  91. package/lib/GraphQL/loaders/parseClassTypes.js +2 -2
  92. package/lib/GraphQL/loaders/schemaDirectives.js +1 -1
  93. package/lib/GraphQL/loaders/schemaMutations.js +1 -1
  94. package/lib/GraphQL/loaders/schemaQueries.js +1 -1
  95. package/lib/GraphQL/loaders/schemaTypes.js +1 -1
  96. package/lib/GraphQL/loaders/usersMutations.js +1 -1
  97. package/lib/GraphQL/loaders/usersQueries.js +1 -1
  98. package/lib/GraphQL/parseGraphQLUtils.js +1 -1
  99. package/lib/GraphQL/transformers/className.js +1 -1
  100. package/lib/GraphQL/transformers/constraintType.js +1 -1
  101. package/lib/GraphQL/transformers/inputType.js +1 -1
  102. package/lib/GraphQL/transformers/mutation.js +1 -1
  103. package/lib/GraphQL/transformers/outputType.js +1 -1
  104. package/lib/GraphQL/transformers/query.js +1 -1
  105. package/lib/GraphQL/transformers/schemaFields.js +1 -1
  106. package/lib/KeyPromiseQueue.js +1 -1
  107. package/lib/LiveQuery/Client.js +1 -1
  108. package/lib/LiveQuery/Id.js +1 -1
  109. package/lib/LiveQuery/ParseCloudCodePublisher.js +1 -1
  110. package/lib/LiveQuery/ParseLiveQueryServer.js +1 -1
  111. package/lib/LiveQuery/ParsePubSub.js +1 -1
  112. package/lib/LiveQuery/ParseWebSocketServer.js +1 -1
  113. package/lib/LiveQuery/QueryTools.js +1 -1
  114. package/lib/LiveQuery/RequestSchema.js +1 -1
  115. package/lib/LiveQuery/SessionTokenCache.js +1 -1
  116. package/lib/LiveQuery/Subscription.js +1 -1
  117. package/lib/LiveQuery/equalObjects.js +1 -1
  118. package/lib/Options/Definitions.js +20 -2
  119. package/lib/Options/docs.js +5 -2
  120. package/lib/Options/index.js +1 -1
  121. package/lib/Options/parsers.js +1 -1
  122. package/lib/Page.js +1 -1
  123. package/lib/ParseMessageQueue.js +1 -1
  124. package/lib/ParseServer.js +1 -1
  125. package/lib/ParseServerRESTController.js +1 -1
  126. package/lib/PromiseRouter.js +1 -1
  127. package/lib/Push/PushQueue.js +1 -1
  128. package/lib/Push/PushWorker.js +1 -1
  129. package/lib/Push/utils.js +1 -1
  130. package/lib/RestQuery.js +13 -8
  131. package/lib/RestWrite.js +21 -3
  132. package/lib/Routers/AggregateRouter.js +1 -1
  133. package/lib/Routers/AnalyticsRouter.js +1 -1
  134. package/lib/Routers/AudiencesRouter.js +1 -1
  135. package/lib/Routers/ClassesRouter.js +1 -1
  136. package/lib/Routers/CloudCodeRouter.js +1 -1
  137. package/lib/Routers/FeaturesRouter.js +1 -1
  138. package/lib/Routers/FilesRouter.js +2 -2
  139. package/lib/Routers/FunctionsRouter.js +1 -1
  140. package/lib/Routers/GlobalConfigRouter.js +1 -1
  141. package/lib/Routers/GraphQLRouter.js +1 -1
  142. package/lib/Routers/HooksRouter.js +1 -1
  143. package/lib/Routers/IAPValidationRouter.js +1 -1
  144. package/lib/Routers/InstallationsRouter.js +1 -1
  145. package/lib/Routers/LogsRouter.js +1 -1
  146. package/lib/Routers/PagesRouter.js +1 -1
  147. package/lib/Routers/PublicAPIRouter.js +1 -1
  148. package/lib/Routers/PurgeRouter.js +1 -1
  149. package/lib/Routers/PushRouter.js +1 -1
  150. package/lib/Routers/RolesRouter.js +1 -1
  151. package/lib/Routers/SchemasRouter.js +1 -1
  152. package/lib/Routers/SecurityRouter.js +1 -1
  153. package/lib/Routers/SessionsRouter.js +1 -1
  154. package/lib/Routers/UsersRouter.js +4 -4
  155. package/lib/SchemaMigrations/DefinedSchemas.js +1 -1
  156. package/lib/SchemaMigrations/Migrations.js +1 -1
  157. package/lib/Security/Check.js +1 -1
  158. package/lib/Security/CheckGroup.js +1 -1
  159. package/lib/Security/CheckGroups/CheckGroupDatabase.js +1 -1
  160. package/lib/Security/CheckGroups/CheckGroupServerConfig.js +1 -1
  161. package/lib/Security/CheckGroups/CheckGroups.js +1 -1
  162. package/lib/Security/CheckRunner.js +1 -1
  163. package/lib/SharedRest.js +1 -1
  164. package/lib/StatusHandler.js +1 -1
  165. package/lib/TestUtils.js +1 -1
  166. package/lib/Utils.js +1 -1
  167. package/lib/batch.js +1 -1
  168. package/lib/cache.js +1 -1
  169. package/lib/cli/definitions/parse-live-query-server.js +1 -1
  170. package/lib/cli/definitions/parse-server.js +1 -1
  171. package/lib/cli/parse-live-query-server.js +1 -1
  172. package/lib/cli/parse-server.js +1 -1
  173. package/lib/cli/utils/commander.js +1 -1
  174. package/lib/cli/utils/runner.js +1 -1
  175. package/lib/cloud-code/Parse.Cloud.js +1 -1
  176. package/lib/cryptoUtils.js +1 -1
  177. package/lib/defaults.js +1 -1
  178. package/lib/deprecated.js +1 -1
  179. package/lib/index.js +1 -1
  180. package/lib/logger.js +1 -1
  181. package/lib/middlewares.js +1 -1
  182. package/lib/password.js +1 -1
  183. package/lib/request.js +1 -1
  184. package/lib/requiredParameter.js +1 -1
  185. package/lib/rest.js +1 -1
  186. package/lib/triggers.js +3 -3
  187. package/lib/vendor/mongodbUrl.js +1 -1
  188. package/package.json +2 -2
@@ -43,4 +43,4 @@ class PurgeRouter extends _PromiseRouter.default {
43
43
  exports.PurgeRouter = PurgeRouter;
44
44
  var _default = PurgeRouter;
45
45
  exports.default = _default;
46
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQdXJnZVJvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJoYW5kbGVQdXJnZSIsInJlcSIsImF1dGgiLCJpc1JlYWRPbmx5IiwiUGFyc2UiLCJFcnJvciIsIk9QRVJBVElPTl9GT1JCSURERU4iLCJjb25maWciLCJkYXRhYmFzZSIsInB1cmdlQ29sbGVjdGlvbiIsInBhcmFtcyIsImNsYXNzTmFtZSIsInRoZW4iLCJjYWNoZUFkYXB0ZXIiLCJjYWNoZUNvbnRyb2xsZXIiLCJ1c2VyIiwiY2xlYXIiLCJyb2xlIiwicmVzcG9uc2UiLCJjYXRjaCIsImVycm9yIiwiY29kZSIsIk9CSkVDVF9OT1RfRk9VTkQiLCJtb3VudFJvdXRlcyIsInJvdXRlIiwibWlkZGxld2FyZSIsInByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL1JvdXRlcnMvUHVyZ2VSb3V0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb21pc2VSb3V0ZXIgZnJvbSAnLi4vUHJvbWlzZVJvdXRlcic7XG5pbXBvcnQgKiBhcyBtaWRkbGV3YXJlIGZyb20gJy4uL21pZGRsZXdhcmVzJztcbmltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcblxuZXhwb3J0IGNsYXNzIFB1cmdlUm91dGVyIGV4dGVuZHMgUHJvbWlzZVJvdXRlciB7XG4gIGhhbmRsZVB1cmdlKHJlcSkge1xuICAgIGlmIChyZXEuYXV0aC5pc1JlYWRPbmx5KSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgIFBhcnNlLkVycm9yLk9QRVJBVElPTl9GT1JCSURERU4sXG4gICAgICAgIFwicmVhZC1vbmx5IG1hc3RlcktleSBpc24ndCBhbGxvd2VkIHRvIHB1cmdlIGEgc2NoZW1hLlwiXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcmVxLmNvbmZpZy5kYXRhYmFzZVxuICAgICAgLnB1cmdlQ29sbGVjdGlvbihyZXEucGFyYW1zLmNsYXNzTmFtZSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdmFyIGNhY2hlQWRhcHRlciA9IHJlcS5jb25maWcuY2FjaGVDb250cm9sbGVyO1xuICAgICAgICBpZiAocmVxLnBhcmFtcy5jbGFzc05hbWUgPT0gJ19TZXNzaW9uJykge1xuICAgICAgICAgIGNhY2hlQWRhcHRlci51c2VyLmNsZWFyKCk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVxLnBhcmFtcy5jbGFzc05hbWUgPT0gJ19Sb2xlJykge1xuICAgICAgICAgIGNhY2hlQWRhcHRlci5yb2xlLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgcmVzcG9uc2U6IHt9IH07XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgaWYgKCFlcnJvciB8fCAoZXJyb3IgJiYgZXJyb3IuY29kZSA9PT0gUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCkpIHtcbiAgICAgICAgICByZXR1cm4geyByZXNwb25zZToge30gfTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pO1xuICB9XG5cbiAgbW91bnRSb3V0ZXMoKSB7XG4gICAgdGhpcy5yb3V0ZSgnREVMRVRFJywgJy9wdXJnZS86Y2xhc3NOYW1lJywgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZVB1cmdlKHJlcSk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHVyZ2VSb3V0ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUErQjtBQUFBO0FBQUE7QUFFeEIsTUFBTUEsV0FBVyxTQUFTQyxzQkFBYSxDQUFDO0VBQzdDQyxXQUFXLENBQUNDLEdBQUcsRUFBRTtJQUNmLElBQUlBLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDQyxVQUFVLEVBQUU7TUFDdkIsTUFBTSxJQUFJQyxhQUFLLENBQUNDLEtBQUssQ0FDbkJELGFBQUssQ0FBQ0MsS0FBSyxDQUFDQyxtQkFBbUIsRUFDL0Isc0RBQXNELENBQ3ZEO0lBQ0g7SUFDQSxPQUFPTCxHQUFHLENBQUNNLE1BQU0sQ0FBQ0MsUUFBUSxDQUN2QkMsZUFBZSxDQUFDUixHQUFHLENBQUNTLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDLENBQ3JDQyxJQUFJLENBQUMsTUFBTTtNQUNWLElBQUlDLFlBQVksR0FBR1osR0FBRyxDQUFDTSxNQUFNLENBQUNPLGVBQWU7TUFDN0MsSUFBSWIsR0FBRyxDQUFDUyxNQUFNLENBQUNDLFNBQVMsSUFBSSxVQUFVLEVBQUU7UUFDdENFLFlBQVksQ0FBQ0UsSUFBSSxDQUFDQyxLQUFLLEVBQUU7TUFDM0IsQ0FBQyxNQUFNLElBQUlmLEdBQUcsQ0FBQ1MsTUFBTSxDQUFDQyxTQUFTLElBQUksT0FBTyxFQUFFO1FBQzFDRSxZQUFZLENBQUNJLElBQUksQ0FBQ0QsS0FBSyxFQUFFO01BQzNCO01BQ0EsT0FBTztRQUFFRSxRQUFRLEVBQUUsQ0FBQztNQUFFLENBQUM7SUFDekIsQ0FBQyxDQUFDLENBQ0RDLEtBQUssQ0FBQ0MsS0FBSyxJQUFJO01BQ2QsSUFBSSxDQUFDQSxLQUFLLElBQUtBLEtBQUssSUFBSUEsS0FBSyxDQUFDQyxJQUFJLEtBQUtqQixhQUFLLENBQUNDLEtBQUssQ0FBQ2lCLGdCQUFpQixFQUFFO1FBQ3BFLE9BQU87VUFBRUosUUFBUSxFQUFFLENBQUM7UUFBRSxDQUFDO01BQ3pCO01BQ0EsTUFBTUUsS0FBSztJQUNiLENBQUMsQ0FBQztFQUNOO0VBRUFHLFdBQVcsR0FBRztJQUNaLElBQUksQ0FBQ0MsS0FBSyxDQUFDLFFBQVEsRUFBRSxtQkFBbUIsRUFBRUMsVUFBVSxDQUFDQyw2QkFBNkIsRUFBRXpCLEdBQUcsSUFBSTtNQUN6RixPQUFPLElBQUksQ0FBQ0QsV0FBVyxDQUFDQyxHQUFHLENBQUM7SUFDOUIsQ0FBQyxDQUFDO0VBQ0o7QUFDRjtBQUFDO0FBQUEsZUFFY0gsV0FBVztBQUFBIn0=
46
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwibWlkZGxld2FyZSIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX25vZGUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiUHVyZ2VSb3V0ZXIiLCJQcm9taXNlUm91dGVyIiwiaGFuZGxlUHVyZ2UiLCJyZXEiLCJhdXRoIiwiaXNSZWFkT25seSIsIlBhcnNlIiwiRXJyb3IiLCJPUEVSQVRJT05fRk9SQklEREVOIiwiY29uZmlnIiwiZGF0YWJhc2UiLCJwdXJnZUNvbGxlY3Rpb24iLCJwYXJhbXMiLCJjbGFzc05hbWUiLCJ0aGVuIiwiY2FjaGVBZGFwdGVyIiwiY2FjaGVDb250cm9sbGVyIiwidXNlciIsImNsZWFyIiwicm9sZSIsInJlc3BvbnNlIiwiY2F0Y2giLCJlcnJvciIsImNvZGUiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwibW91bnRSb3V0ZXMiLCJyb3V0ZSIsInByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzIiwiZXhwb3J0cyIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL1JvdXRlcnMvUHVyZ2VSb3V0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb21pc2VSb3V0ZXIgZnJvbSAnLi4vUHJvbWlzZVJvdXRlcic7XG5pbXBvcnQgKiBhcyBtaWRkbGV3YXJlIGZyb20gJy4uL21pZGRsZXdhcmVzJztcbmltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcblxuZXhwb3J0IGNsYXNzIFB1cmdlUm91dGVyIGV4dGVuZHMgUHJvbWlzZVJvdXRlciB7XG4gIGhhbmRsZVB1cmdlKHJlcSkge1xuICAgIGlmIChyZXEuYXV0aC5pc1JlYWRPbmx5KSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgIFBhcnNlLkVycm9yLk9QRVJBVElPTl9GT1JCSURERU4sXG4gICAgICAgIFwicmVhZC1vbmx5IG1hc3RlcktleSBpc24ndCBhbGxvd2VkIHRvIHB1cmdlIGEgc2NoZW1hLlwiXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcmVxLmNvbmZpZy5kYXRhYmFzZVxuICAgICAgLnB1cmdlQ29sbGVjdGlvbihyZXEucGFyYW1zLmNsYXNzTmFtZSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdmFyIGNhY2hlQWRhcHRlciA9IHJlcS5jb25maWcuY2FjaGVDb250cm9sbGVyO1xuICAgICAgICBpZiAocmVxLnBhcmFtcy5jbGFzc05hbWUgPT0gJ19TZXNzaW9uJykge1xuICAgICAgICAgIGNhY2hlQWRhcHRlci51c2VyLmNsZWFyKCk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVxLnBhcmFtcy5jbGFzc05hbWUgPT0gJ19Sb2xlJykge1xuICAgICAgICAgIGNhY2hlQWRhcHRlci5yb2xlLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgcmVzcG9uc2U6IHt9IH07XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgaWYgKCFlcnJvciB8fCAoZXJyb3IgJiYgZXJyb3IuY29kZSA9PT0gUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCkpIHtcbiAgICAgICAgICByZXR1cm4geyByZXNwb25zZToge30gfTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pO1xuICB9XG5cbiAgbW91bnRSb3V0ZXMoKSB7XG4gICAgdGhpcy5yb3V0ZSgnREVMRVRFJywgJy9wdXJnZS86Y2xhc3NOYW1lJywgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZVB1cmdlKHJlcSk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHVyZ2VSb3V0ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUErQixTQUFBSSx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtBQUFGLFdBQUE7QUFBQSxTQUFBSCx3QkFBQU8sR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLG9CQUFBQSxHQUFBLHdCQUFBQSxHQUFBLDRCQUFBRSxPQUFBLEVBQUFGLEdBQUEsVUFBQUcsS0FBQSxHQUFBUix3QkFBQSxDQUFBQyxXQUFBLE9BQUFPLEtBQUEsSUFBQUEsS0FBQSxDQUFBQyxHQUFBLENBQUFKLEdBQUEsWUFBQUcsS0FBQSxDQUFBRSxHQUFBLENBQUFMLEdBQUEsU0FBQU0sTUFBQSxXQUFBQyxxQkFBQSxHQUFBQyxNQUFBLENBQUFDLGNBQUEsSUFBQUQsTUFBQSxDQUFBRSx3QkFBQSxXQUFBQyxHQUFBLElBQUFYLEdBQUEsUUFBQVcsR0FBQSxrQkFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBZCxHQUFBLEVBQUFXLEdBQUEsU0FBQUksSUFBQSxHQUFBUixxQkFBQSxHQUFBQyxNQUFBLENBQUFFLHdCQUFBLENBQUFWLEdBQUEsRUFBQVcsR0FBQSxjQUFBSSxJQUFBLEtBQUFBLElBQUEsQ0FBQVYsR0FBQSxJQUFBVSxJQUFBLENBQUFDLEdBQUEsS0FBQVIsTUFBQSxDQUFBQyxjQUFBLENBQUFILE1BQUEsRUFBQUssR0FBQSxFQUFBSSxJQUFBLFlBQUFULE1BQUEsQ0FBQUssR0FBQSxJQUFBWCxHQUFBLENBQUFXLEdBQUEsU0FBQUwsTUFBQSxDQUFBSixPQUFBLEdBQUFGLEdBQUEsTUFBQUcsS0FBQSxJQUFBQSxLQUFBLENBQUFhLEdBQUEsQ0FBQWhCLEdBQUEsRUFBQU0sTUFBQSxZQUFBQSxNQUFBO0FBQUEsU0FBQWhCLHVCQUFBVSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRXhCLE1BQU1pQixXQUFXLFNBQVNDLHNCQUFhLENBQUM7RUFDN0NDLFdBQVdBLENBQUNDLEdBQUcsRUFBRTtJQUNmLElBQUlBLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDQyxVQUFVLEVBQUU7TUFDdkIsTUFBTSxJQUFJQyxhQUFLLENBQUNDLEtBQUssQ0FDbkJELGFBQUssQ0FBQ0MsS0FBSyxDQUFDQyxtQkFBbUIsRUFDL0Isc0RBQ0YsQ0FBQztJQUNIO0lBQ0EsT0FBT0wsR0FBRyxDQUFDTSxNQUFNLENBQUNDLFFBQVEsQ0FDdkJDLGVBQWUsQ0FBQ1IsR0FBRyxDQUFDUyxNQUFNLENBQUNDLFNBQVMsQ0FBQyxDQUNyQ0MsSUFBSSxDQUFDLE1BQU07TUFDVixJQUFJQyxZQUFZLEdBQUdaLEdBQUcsQ0FBQ00sTUFBTSxDQUFDTyxlQUFlO01BQzdDLElBQUliLEdBQUcsQ0FBQ1MsTUFBTSxDQUFDQyxTQUFTLElBQUksVUFBVSxFQUFFO1FBQ3RDRSxZQUFZLENBQUNFLElBQUksQ0FBQ0MsS0FBSyxDQUFDLENBQUM7TUFDM0IsQ0FBQyxNQUFNLElBQUlmLEdBQUcsQ0FBQ1MsTUFBTSxDQUFDQyxTQUFTLElBQUksT0FBTyxFQUFFO1FBQzFDRSxZQUFZLENBQUNJLElBQUksQ0FBQ0QsS0FBSyxDQUFDLENBQUM7TUFDM0I7TUFDQSxPQUFPO1FBQUVFLFFBQVEsRUFBRSxDQUFDO01BQUUsQ0FBQztJQUN6QixDQUFDLENBQUMsQ0FDREMsS0FBSyxDQUFDQyxLQUFLLElBQUk7TUFDZCxJQUFJLENBQUNBLEtBQUssSUFBS0EsS0FBSyxJQUFJQSxLQUFLLENBQUNDLElBQUksS0FBS2pCLGFBQUssQ0FBQ0MsS0FBSyxDQUFDaUIsZ0JBQWlCLEVBQUU7UUFDcEUsT0FBTztVQUFFSixRQUFRLEVBQUUsQ0FBQztRQUFFLENBQUM7TUFDekI7TUFDQSxNQUFNRSxLQUFLO0lBQ2IsQ0FBQyxDQUFDO0VBQ047RUFFQUcsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osSUFBSSxDQUFDQyxLQUFLLENBQUMsUUFBUSxFQUFFLG1CQUFtQixFQUFFbkQsVUFBVSxDQUFDb0QsNkJBQTZCLEVBQUV4QixHQUFHLElBQUk7TUFDekYsT0FBTyxJQUFJLENBQUNELFdBQVcsQ0FBQ0MsR0FBRyxDQUFDO0lBQzlCLENBQUMsQ0FBQztFQUNKO0FBQ0Y7QUFBQ3lCLE9BQUEsQ0FBQTVCLFdBQUEsR0FBQUEsV0FBQTtBQUFBLElBQUE2QixRQUFBLEdBRWM3QixXQUFXO0FBQUE0QixPQUFBLENBQUEzQyxPQUFBLEdBQUE0QyxRQUFBIn0=
@@ -73,4 +73,4 @@ class PushRouter extends _PromiseRouter.default {
73
73
  exports.PushRouter = PushRouter;
74
74
  var _default = PushRouter;
75
75
  exports.default = _default;
76
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQdXNoUm91dGVyIiwiUHJvbWlzZVJvdXRlciIsIm1vdW50Um91dGVzIiwicm91dGUiLCJtaWRkbGV3YXJlIiwicHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MiLCJoYW5kbGVQT1NUIiwicmVxIiwiYXV0aCIsImlzUmVhZE9ubHkiLCJQYXJzZSIsIkVycm9yIiwiT1BFUkFUSU9OX0ZPUkJJRERFTiIsInB1c2hDb250cm9sbGVyIiwiY29uZmlnIiwiUFVTSF9NSVNDT05GSUdVUkVEIiwid2hlcmUiLCJnZXRRdWVyeUNvbmRpdGlvbiIsInJlc29sdmUiLCJwcm9taXNlIiwiUHJvbWlzZSIsIl9yZXNvbHZlIiwicHVzaFN0YXR1c0lkIiwic2VuZFB1c2giLCJib2R5Iiwib2JqZWN0SWQiLCJoZWFkZXJzIiwicmVzcG9uc2UiLCJyZXN1bHQiLCJjYXRjaCIsImVyciIsImxvZ2dlckNvbnRyb2xsZXIiLCJlcnJvciIsImhhc1doZXJlIiwiaGFzQ2hhbm5lbHMiLCJjaGFubmVscyIsIiRpbiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL1B1c2hSb3V0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb21pc2VSb3V0ZXIgZnJvbSAnLi4vUHJvbWlzZVJvdXRlcic7XG5pbXBvcnQgKiBhcyBtaWRkbGV3YXJlIGZyb20gJy4uL21pZGRsZXdhcmVzJztcbmltcG9ydCB7IFBhcnNlIH0gZnJvbSAncGFyc2Uvbm9kZSc7XG5cbmV4cG9ydCBjbGFzcyBQdXNoUm91dGVyIGV4dGVuZHMgUHJvbWlzZVJvdXRlciB7XG4gIG1vdW50Um91dGVzKCkge1xuICAgIHRoaXMucm91dGUoJ1BPU1QnLCAnL3B1c2gnLCBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLCBQdXNoUm91dGVyLmhhbmRsZVBPU1QpO1xuICB9XG5cbiAgc3RhdGljIGhhbmRsZVBPU1QocmVxKSB7XG4gICAgaWYgKHJlcS5hdXRoLmlzUmVhZE9ubHkpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgUGFyc2UuRXJyb3IuT1BFUkFUSU9OX0ZPUkJJRERFTixcbiAgICAgICAgXCJyZWFkLW9ubHkgbWFzdGVyS2V5IGlzbid0IGFsbG93ZWQgdG8gc2VuZCBwdXNoIG5vdGlmaWNhdGlvbnMuXCJcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHB1c2hDb250cm9sbGVyID0gcmVxLmNvbmZpZy5wdXNoQ29udHJvbGxlcjtcbiAgICBpZiAoIXB1c2hDb250cm9sbGVyKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuUFVTSF9NSVNDT05GSUdVUkVELCAnUHVzaCBjb250cm9sbGVyIGlzIG5vdCBzZXQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB3aGVyZSA9IFB1c2hSb3V0ZXIuZ2V0UXVlcnlDb25kaXRpb24ocmVxKTtcbiAgICBsZXQgcmVzb2x2ZTtcbiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoX3Jlc29sdmUgPT4ge1xuICAgICAgcmVzb2x2ZSA9IF9yZXNvbHZlO1xuICAgIH0pO1xuICAgIGxldCBwdXNoU3RhdHVzSWQ7XG4gICAgcHVzaENvbnRyb2xsZXJcbiAgICAgIC5zZW5kUHVzaChyZXEuYm9keSwgd2hlcmUsIHJlcS5jb25maWcsIHJlcS5hdXRoLCBvYmplY3RJZCA9PiB7XG4gICAgICAgIHB1c2hTdGF0dXNJZCA9IG9iamVjdElkO1xuICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnWC1QYXJzZS1QdXNoLVN0YXR1cy1JZCc6IHB1c2hTdGF0dXNJZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3BvbnNlOiB7XG4gICAgICAgICAgICByZXN1bHQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgIHJlcS5jb25maWcubG9nZ2VyQ29udHJvbGxlci5lcnJvcihcbiAgICAgICAgICBgX1B1c2hTdGF0dXMgJHtwdXNoU3RhdHVzSWR9OiBlcnJvciB3aGlsZSBzZW5kaW5nIHB1c2hgLFxuICAgICAgICAgIGVyclxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHF1ZXJ5IGNvbmRpdGlvbiBmcm9tIHRoZSByZXF1ZXN0IGJvZHkuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSByZXEgQSByZXF1ZXN0IG9iamVjdFxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgcXVlcnkgY29uZGl0aW9uLCB0aGUgd2hlcmUgZmllbGQgaW4gYSBxdWVyeSBhcGkgY2FsbFxuICAgKi9cbiAgc3RhdGljIGdldFF1ZXJ5Q29uZGl0aW9uKHJlcSkge1xuICAgIGNvbnN0IGJvZHkgPSByZXEuYm9keSB8fCB7fTtcbiAgICBjb25zdCBoYXNXaGVyZSA9IHR5cGVvZiBib2R5LndoZXJlICE9PSAndW5kZWZpbmVkJztcbiAgICBjb25zdCBoYXNDaGFubmVscyA9IHR5cGVvZiBib2R5LmNoYW5uZWxzICE9PSAndW5kZWZpbmVkJztcblxuICAgIGxldCB3aGVyZTtcbiAgICBpZiAoaGFzV2hlcmUgJiYgaGFzQ2hhbm5lbHMpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgUGFyc2UuRXJyb3IuUFVTSF9NSVNDT05GSUdVUkVELFxuICAgICAgICAnQ2hhbm5lbHMgYW5kIHF1ZXJ5IGNhbiBub3QgYmUgc2V0IGF0IHRoZSBzYW1lIHRpbWUuJ1xuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGhhc1doZXJlKSB7XG4gICAgICB3aGVyZSA9IGJvZHkud2hlcmU7XG4gICAgfSBlbHNlIGlmIChoYXNDaGFubmVscykge1xuICAgICAgd2hlcmUgPSB7XG4gICAgICAgIGNoYW5uZWxzOiB7XG4gICAgICAgICAgJGluOiBib2R5LmNoYW5uZWxzLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5QVVNIX01JU0NPTkZJR1VSRUQsXG4gICAgICAgICdTZW5kaW5nIGEgcHVzaCByZXF1aXJlcyBlaXRoZXIgXCJjaGFubmVsc1wiIG9yIGEgXCJ3aGVyZVwiIHF1ZXJ5LidcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB3aGVyZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBQdXNoUm91dGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFBbUM7QUFBQTtBQUFBO0FBRTVCLE1BQU1BLFVBQVUsU0FBU0Msc0JBQWEsQ0FBQztFQUM1Q0MsV0FBVyxHQUFHO0lBQ1osSUFBSSxDQUFDQyxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRUMsVUFBVSxDQUFDQyw2QkFBNkIsRUFBRUwsVUFBVSxDQUFDTSxVQUFVLENBQUM7RUFDOUY7RUFFQSxPQUFPQSxVQUFVLENBQUNDLEdBQUcsRUFBRTtJQUNyQixJQUFJQSxHQUFHLENBQUNDLElBQUksQ0FBQ0MsVUFBVSxFQUFFO01BQ3ZCLE1BQU0sSUFBSUMsV0FBSyxDQUFDQyxLQUFLLENBQ25CRCxXQUFLLENBQUNDLEtBQUssQ0FBQ0MsbUJBQW1CLEVBQy9CLCtEQUErRCxDQUNoRTtJQUNIO0lBQ0EsTUFBTUMsY0FBYyxHQUFHTixHQUFHLENBQUNPLE1BQU0sQ0FBQ0QsY0FBYztJQUNoRCxJQUFJLENBQUNBLGNBQWMsRUFBRTtNQUNuQixNQUFNLElBQUlILFdBQUssQ0FBQ0MsS0FBSyxDQUFDRCxXQUFLLENBQUNDLEtBQUssQ0FBQ0ksa0JBQWtCLEVBQUUsNEJBQTRCLENBQUM7SUFDckY7SUFFQSxNQUFNQyxLQUFLLEdBQUdoQixVQUFVLENBQUNpQixpQkFBaUIsQ0FBQ1YsR0FBRyxDQUFDO0lBQy9DLElBQUlXLE9BQU87SUFDWCxNQUFNQyxPQUFPLEdBQUcsSUFBSUMsT0FBTyxDQUFDQyxRQUFRLElBQUk7TUFDdENILE9BQU8sR0FBR0csUUFBUTtJQUNwQixDQUFDLENBQUM7SUFDRixJQUFJQyxZQUFZO0lBQ2hCVCxjQUFjLENBQ1hVLFFBQVEsQ0FBQ2hCLEdBQUcsQ0FBQ2lCLElBQUksRUFBRVIsS0FBSyxFQUFFVCxHQUFHLENBQUNPLE1BQU0sRUFBRVAsR0FBRyxDQUFDQyxJQUFJLEVBQUVpQixRQUFRLElBQUk7TUFDM0RILFlBQVksR0FBR0csUUFBUTtNQUN2QlAsT0FBTyxDQUFDO1FBQ05RLE9BQU8sRUFBRTtVQUNQLHdCQUF3QixFQUFFSjtRQUM1QixDQUFDO1FBQ0RLLFFBQVEsRUFBRTtVQUNSQyxNQUFNLEVBQUU7UUFDVjtNQUNGLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUNEQyxLQUFLLENBQUNDLEdBQUcsSUFBSTtNQUNadkIsR0FBRyxDQUFDTyxNQUFNLENBQUNpQixnQkFBZ0IsQ0FBQ0MsS0FBSyxDQUM5QixlQUFjVixZQUFhLDRCQUEyQixFQUN2RFEsR0FBRyxDQUNKO0lBQ0gsQ0FBQyxDQUFDO0lBQ0osT0FBT1gsT0FBTztFQUNoQjs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsT0FBT0YsaUJBQWlCLENBQUNWLEdBQUcsRUFBRTtJQUM1QixNQUFNaUIsSUFBSSxHQUFHakIsR0FBRyxDQUFDaUIsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUMzQixNQUFNUyxRQUFRLEdBQUcsT0FBT1QsSUFBSSxDQUFDUixLQUFLLEtBQUssV0FBVztJQUNsRCxNQUFNa0IsV0FBVyxHQUFHLE9BQU9WLElBQUksQ0FBQ1csUUFBUSxLQUFLLFdBQVc7SUFFeEQsSUFBSW5CLEtBQUs7SUFDVCxJQUFJaUIsUUFBUSxJQUFJQyxXQUFXLEVBQUU7TUFDM0IsTUFBTSxJQUFJeEIsV0FBSyxDQUFDQyxLQUFLLENBQ25CRCxXQUFLLENBQUNDLEtBQUssQ0FBQ0ksa0JBQWtCLEVBQzlCLHFEQUFxRCxDQUN0RDtJQUNILENBQUMsTUFBTSxJQUFJa0IsUUFBUSxFQUFFO01BQ25CakIsS0FBSyxHQUFHUSxJQUFJLENBQUNSLEtBQUs7SUFDcEIsQ0FBQyxNQUFNLElBQUlrQixXQUFXLEVBQUU7TUFDdEJsQixLQUFLLEdBQUc7UUFDTm1CLFFBQVEsRUFBRTtVQUNSQyxHQUFHLEVBQUVaLElBQUksQ0FBQ1c7UUFDWjtNQUNGLENBQUM7SUFDSCxDQUFDLE1BQU07TUFDTCxNQUFNLElBQUl6QixXQUFLLENBQUNDLEtBQUssQ0FDbkJELFdBQUssQ0FBQ0MsS0FBSyxDQUFDSSxrQkFBa0IsRUFDOUIsK0RBQStELENBQ2hFO0lBQ0g7SUFDQSxPQUFPQyxLQUFLO0VBQ2Q7QUFDRjtBQUFDO0FBQUEsZUFFY2hCLFVBQVU7QUFBQSJ9
76
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwibWlkZGxld2FyZSIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX25vZGUiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiUHVzaFJvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJtb3VudFJvdXRlcyIsInJvdXRlIiwicHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MiLCJoYW5kbGVQT1NUIiwicmVxIiwiYXV0aCIsImlzUmVhZE9ubHkiLCJQYXJzZSIsIkVycm9yIiwiT1BFUkFUSU9OX0ZPUkJJRERFTiIsInB1c2hDb250cm9sbGVyIiwiY29uZmlnIiwiUFVTSF9NSVNDT05GSUdVUkVEIiwid2hlcmUiLCJnZXRRdWVyeUNvbmRpdGlvbiIsInJlc29sdmUiLCJwcm9taXNlIiwiUHJvbWlzZSIsIl9yZXNvbHZlIiwicHVzaFN0YXR1c0lkIiwic2VuZFB1c2giLCJib2R5Iiwib2JqZWN0SWQiLCJoZWFkZXJzIiwicmVzcG9uc2UiLCJyZXN1bHQiLCJjYXRjaCIsImVyciIsImxvZ2dlckNvbnRyb2xsZXIiLCJlcnJvciIsImhhc1doZXJlIiwiaGFzQ2hhbm5lbHMiLCJjaGFubmVscyIsIiRpbiIsImV4cG9ydHMiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL1B1c2hSb3V0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb21pc2VSb3V0ZXIgZnJvbSAnLi4vUHJvbWlzZVJvdXRlcic7XG5pbXBvcnQgKiBhcyBtaWRkbGV3YXJlIGZyb20gJy4uL21pZGRsZXdhcmVzJztcbmltcG9ydCB7IFBhcnNlIH0gZnJvbSAncGFyc2Uvbm9kZSc7XG5cbmV4cG9ydCBjbGFzcyBQdXNoUm91dGVyIGV4dGVuZHMgUHJvbWlzZVJvdXRlciB7XG4gIG1vdW50Um91dGVzKCkge1xuICAgIHRoaXMucm91dGUoJ1BPU1QnLCAnL3B1c2gnLCBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLCBQdXNoUm91dGVyLmhhbmRsZVBPU1QpO1xuICB9XG5cbiAgc3RhdGljIGhhbmRsZVBPU1QocmVxKSB7XG4gICAgaWYgKHJlcS5hdXRoLmlzUmVhZE9ubHkpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgUGFyc2UuRXJyb3IuT1BFUkFUSU9OX0ZPUkJJRERFTixcbiAgICAgICAgXCJyZWFkLW9ubHkgbWFzdGVyS2V5IGlzbid0IGFsbG93ZWQgdG8gc2VuZCBwdXNoIG5vdGlmaWNhdGlvbnMuXCJcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHB1c2hDb250cm9sbGVyID0gcmVxLmNvbmZpZy5wdXNoQ29udHJvbGxlcjtcbiAgICBpZiAoIXB1c2hDb250cm9sbGVyKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuUFVTSF9NSVNDT05GSUdVUkVELCAnUHVzaCBjb250cm9sbGVyIGlzIG5vdCBzZXQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB3aGVyZSA9IFB1c2hSb3V0ZXIuZ2V0UXVlcnlDb25kaXRpb24ocmVxKTtcbiAgICBsZXQgcmVzb2x2ZTtcbiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoX3Jlc29sdmUgPT4ge1xuICAgICAgcmVzb2x2ZSA9IF9yZXNvbHZlO1xuICAgIH0pO1xuICAgIGxldCBwdXNoU3RhdHVzSWQ7XG4gICAgcHVzaENvbnRyb2xsZXJcbiAgICAgIC5zZW5kUHVzaChyZXEuYm9keSwgd2hlcmUsIHJlcS5jb25maWcsIHJlcS5hdXRoLCBvYmplY3RJZCA9PiB7XG4gICAgICAgIHB1c2hTdGF0dXNJZCA9IG9iamVjdElkO1xuICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnWC1QYXJzZS1QdXNoLVN0YXR1cy1JZCc6IHB1c2hTdGF0dXNJZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3BvbnNlOiB7XG4gICAgICAgICAgICByZXN1bHQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgIHJlcS5jb25maWcubG9nZ2VyQ29udHJvbGxlci5lcnJvcihcbiAgICAgICAgICBgX1B1c2hTdGF0dXMgJHtwdXNoU3RhdHVzSWR9OiBlcnJvciB3aGlsZSBzZW5kaW5nIHB1c2hgLFxuICAgICAgICAgIGVyclxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHF1ZXJ5IGNvbmRpdGlvbiBmcm9tIHRoZSByZXF1ZXN0IGJvZHkuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSByZXEgQSByZXF1ZXN0IG9iamVjdFxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgcXVlcnkgY29uZGl0aW9uLCB0aGUgd2hlcmUgZmllbGQgaW4gYSBxdWVyeSBhcGkgY2FsbFxuICAgKi9cbiAgc3RhdGljIGdldFF1ZXJ5Q29uZGl0aW9uKHJlcSkge1xuICAgIGNvbnN0IGJvZHkgPSByZXEuYm9keSB8fCB7fTtcbiAgICBjb25zdCBoYXNXaGVyZSA9IHR5cGVvZiBib2R5LndoZXJlICE9PSAndW5kZWZpbmVkJztcbiAgICBjb25zdCBoYXNDaGFubmVscyA9IHR5cGVvZiBib2R5LmNoYW5uZWxzICE9PSAndW5kZWZpbmVkJztcblxuICAgIGxldCB3aGVyZTtcbiAgICBpZiAoaGFzV2hlcmUgJiYgaGFzQ2hhbm5lbHMpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgUGFyc2UuRXJyb3IuUFVTSF9NSVNDT05GSUdVUkVELFxuICAgICAgICAnQ2hhbm5lbHMgYW5kIHF1ZXJ5IGNhbiBub3QgYmUgc2V0IGF0IHRoZSBzYW1lIHRpbWUuJ1xuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGhhc1doZXJlKSB7XG4gICAgICB3aGVyZSA9IGJvZHkud2hlcmU7XG4gICAgfSBlbHNlIGlmIChoYXNDaGFubmVscykge1xuICAgICAgd2hlcmUgPSB7XG4gICAgICAgIGNoYW5uZWxzOiB7XG4gICAgICAgICAgJGluOiBib2R5LmNoYW5uZWxzLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5QVVNIX01JU0NPTkZJR1VSRUQsXG4gICAgICAgICdTZW5kaW5nIGEgcHVzaCByZXF1aXJlcyBlaXRoZXIgXCJjaGFubmVsc1wiIG9yIGEgXCJ3aGVyZVwiIHF1ZXJ5LidcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB3aGVyZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBQdXNoUm91dGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxjQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxLQUFBLEdBQUFILE9BQUE7QUFBbUMsU0FBQUkseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixX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
@@ -31,4 +31,4 @@ class RolesRouter extends _ClassesRouter.default {
31
31
  exports.RolesRouter = RolesRouter;
32
32
  var _default = RolesRouter;
33
33
  exports.default = _default;
34
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSb2xlc1JvdXRlciIsIkNsYXNzZXNSb3V0ZXIiLCJjbGFzc05hbWUiLCJtb3VudFJvdXRlcyIsInJvdXRlIiwicmVxIiwiaGFuZGxlRmluZCIsImhhbmRsZUdldCIsImhhbmRsZUNyZWF0ZSIsImhhbmRsZVVwZGF0ZSIsImhhbmRsZURlbGV0ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL1JvbGVzUm91dGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDbGFzc2VzUm91dGVyIGZyb20gJy4vQ2xhc3Nlc1JvdXRlcic7XG5cbmV4cG9ydCBjbGFzcyBSb2xlc1JvdXRlciBleHRlbmRzIENsYXNzZXNSb3V0ZXIge1xuICBjbGFzc05hbWUoKSB7XG4gICAgcmV0dXJuICdfUm9sZSc7XG4gIH1cblxuICBtb3VudFJvdXRlcygpIHtcbiAgICB0aGlzLnJvdXRlKCdHRVQnLCAnL3JvbGVzJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUZpbmQocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdHRVQnLCAnL3JvbGVzLzpvYmplY3RJZCcsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVHZXQocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdQT1NUJywgJy9yb2xlcycsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVDcmVhdGUocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdQVVQnLCAnL3JvbGVzLzpvYmplY3RJZCcsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVVcGRhdGUocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdERUxFVEUnLCAnL3JvbGVzLzpvYmplY3RJZCcsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVEZWxldGUocmVxKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBSb2xlc1JvdXRlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFBNEM7QUFFckMsTUFBTUEsV0FBVyxTQUFTQyxzQkFBYSxDQUFDO0VBQzdDQyxTQUFTLEdBQUc7SUFDVixPQUFPLE9BQU87RUFDaEI7RUFFQUMsV0FBVyxHQUFHO0lBQ1osSUFBSSxDQUFDQyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRUMsR0FBRyxJQUFJO01BQ2pDLE9BQU8sSUFBSSxDQUFDQyxVQUFVLENBQUNELEdBQUcsQ0FBQztJQUM3QixDQUFDLENBQUM7SUFDRixJQUFJLENBQUNELEtBQUssQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLEVBQUVDLEdBQUcsSUFBSTtNQUMzQyxPQUFPLElBQUksQ0FBQ0UsU0FBUyxDQUFDRixHQUFHLENBQUM7SUFDNUIsQ0FBQyxDQUFDO0lBQ0YsSUFBSSxDQUFDRCxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRUMsR0FBRyxJQUFJO01BQ2xDLE9BQU8sSUFBSSxDQUFDRyxZQUFZLENBQUNILEdBQUcsQ0FBQztJQUMvQixDQUFDLENBQUM7SUFDRixJQUFJLENBQUNELEtBQUssQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLEVBQUVDLEdBQUcsSUFBSTtNQUMzQyxPQUFPLElBQUksQ0FBQ0ksWUFBWSxDQUFDSixHQUFHLENBQUM7SUFDL0IsQ0FBQyxDQUFDO0lBQ0YsSUFBSSxDQUFDRCxLQUFLLENBQUMsUUFBUSxFQUFFLGtCQUFrQixFQUFFQyxHQUFHLElBQUk7TUFDOUMsT0FBTyxJQUFJLENBQUNLLFlBQVksQ0FBQ0wsR0FBRyxDQUFDO0lBQy9CLENBQUMsQ0FBQztFQUNKO0FBQ0Y7QUFBQztBQUFBLGVBRWNMLFdBQVc7QUFBQSJ9
34
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQ2xhc3Nlc1JvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJSb2xlc1JvdXRlciIsIkNsYXNzZXNSb3V0ZXIiLCJjbGFzc05hbWUiLCJtb3VudFJvdXRlcyIsInJvdXRlIiwicmVxIiwiaGFuZGxlRmluZCIsImhhbmRsZUdldCIsImhhbmRsZUNyZWF0ZSIsImhhbmRsZVVwZGF0ZSIsImhhbmRsZURlbGV0ZSIsImV4cG9ydHMiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL1JvbGVzUm91dGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDbGFzc2VzUm91dGVyIGZyb20gJy4vQ2xhc3Nlc1JvdXRlcic7XG5cbmV4cG9ydCBjbGFzcyBSb2xlc1JvdXRlciBleHRlbmRzIENsYXNzZXNSb3V0ZXIge1xuICBjbGFzc05hbWUoKSB7XG4gICAgcmV0dXJuICdfUm9sZSc7XG4gIH1cblxuICBtb3VudFJvdXRlcygpIHtcbiAgICB0aGlzLnJvdXRlKCdHRVQnLCAnL3JvbGVzJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUZpbmQocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdHRVQnLCAnL3JvbGVzLzpvYmplY3RJZCcsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVHZXQocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdQT1NUJywgJy9yb2xlcycsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVDcmVhdGUocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdQVVQnLCAnL3JvbGVzLzpvYmplY3RJZCcsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVVcGRhdGUocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdERUxFVEUnLCAnL3JvbGVzLzpvYmplY3RJZCcsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVEZWxldGUocmVxKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBSb2xlc1JvdXRlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsY0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQTRDLFNBQUFELHVCQUFBRSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRXJDLE1BQU1HLFdBQVcsU0FBU0Msc0JBQWEsQ0FBQztFQUM3Q0MsU0FBU0EsQ0FBQSxFQUFHO0lBQ1YsT0FBTyxPQUFPO0VBQ2hCO0VBRUFDLFdBQVdBLENBQUEsRUFBRztJQUNaLElBQUksQ0FBQ0MsS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUVDLEdBQUcsSUFBSTtNQUNqQyxPQUFPLElBQUksQ0FBQ0MsVUFBVSxDQUFDRCxHQUFHLENBQUM7SUFDN0IsQ0FBQyxDQUFDO0lBQ0YsSUFBSSxDQUFDRCxLQUFLLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFQyxHQUFHLElBQUk7TUFDM0MsT0FBTyxJQUFJLENBQUNFLFNBQVMsQ0FBQ0YsR0FBRyxDQUFDO0lBQzVCLENBQUMsQ0FBQztJQUNGLElBQUksQ0FBQ0QsS0FBSyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUVDLEdBQUcsSUFBSTtNQUNsQyxPQUFPLElBQUksQ0FBQ0csWUFBWSxDQUFDSCxHQUFHLENBQUM7SUFDL0IsQ0FBQyxDQUFDO0lBQ0YsSUFBSSxDQUFDRCxLQUFLLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFQyxHQUFHLElBQUk7TUFDM0MsT0FBTyxJQUFJLENBQUNJLFlBQVksQ0FBQ0osR0FBRyxDQUFDO0lBQy9CLENBQUMsQ0FBQztJQUNGLElBQUksQ0FBQ0QsS0FBSyxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsRUFBRUMsR0FBRyxJQUFJO01BQzlDLE9BQU8sSUFBSSxDQUFDSyxZQUFZLENBQUNMLEdBQUcsQ0FBQztJQUMvQixDQUFDLENBQUM7RUFDSjtBQUNGO0FBQUNNLE9BQUEsQ0FBQVgsV0FBQSxHQUFBQSxXQUFBO0FBQUEsSUFBQVksUUFBQSxHQUVjWixXQUFXO0FBQUFXLE9BQUEsQ0FBQVosT0FBQSxHQUFBYSxRQUFBIn0=
@@ -116,4 +116,4 @@ class SchemasRouter extends _PromiseRouter.default {
116
116
  }
117
117
  }
118
118
  exports.SchemasRouter = SchemasRouter;
119
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJTY2hlbWFDb250cm9sbGVyIiwiY2xhc3NOYW1lTWlzbWF0Y2hSZXNwb25zZSIsImJvZHlDbGFzcyIsInBhdGhDbGFzcyIsIkVycm9yIiwiSU5WQUxJRF9DTEFTU19OQU1FIiwiZ2V0QWxsU2NoZW1hcyIsInJlcSIsImNvbmZpZyIsImRhdGFiYXNlIiwibG9hZFNjaGVtYSIsImNsZWFyQ2FjaGUiLCJ0aGVuIiwic2NoZW1hQ29udHJvbGxlciIsImdldEFsbENsYXNzZXMiLCJzY2hlbWFzIiwicmVzcG9uc2UiLCJyZXN1bHRzIiwiZ2V0T25lU2NoZW1hIiwiY2xhc3NOYW1lIiwicGFyYW1zIiwic2NoZW1hIiwiY2F0Y2giLCJlcnJvciIsInVuZGVmaW5lZCIsIklOVEVSTkFMX1NFUlZFUl9FUlJPUiIsImNoZWNrSWZEZWZpbmVkU2NoZW1hc0lzVXNlZCIsImxvY2tTY2hlbWFzIiwiT1BFUkFUSU9OX0ZPUkJJRERFTiIsImludGVybmFsQ3JlYXRlU2NoZW1hIiwiYm9keSIsImNvbnRyb2xsZXIiLCJhZGRDbGFzc0lmTm90RXhpc3RzIiwiZmllbGRzIiwiY2xhc3NMZXZlbFBlcm1pc3Npb25zIiwiaW5kZXhlcyIsImludGVybmFsVXBkYXRlU2NoZW1hIiwidXBkYXRlQ2xhc3MiLCJjcmVhdGVTY2hlbWEiLCJhdXRoIiwiaXNSZWFkT25seSIsInBhdGgiLCJtb2RpZnlTY2hlbWEiLCJkZWxldGVTY2hlbWEiLCJjbGFzc05hbWVJc1ZhbGlkIiwiaW52YWxpZENsYXNzTmFtZU1lc3NhZ2UiLCJTY2hlbWFzUm91dGVyIiwiUHJvbWlzZVJvdXRlciIsIm1vdW50Um91dGVzIiwicm91dGUiLCJtaWRkbGV3YXJlIiwicHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9TY2hlbWFzUm91dGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHNjaGVtYXMuanNcblxudmFyIFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlLFxuICBTY2hlbWFDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vQ29udHJvbGxlcnMvU2NoZW1hQ29udHJvbGxlcicpO1xuXG5pbXBvcnQgUHJvbWlzZVJvdXRlciBmcm9tICcuLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCAqIGFzIG1pZGRsZXdhcmUgZnJvbSAnLi4vbWlkZGxld2FyZXMnO1xuXG5mdW5jdGlvbiBjbGFzc05hbWVNaXNtYXRjaFJlc3BvbnNlKGJvZHlDbGFzcywgcGF0aENsYXNzKSB7XG4gIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICBQYXJzZS5FcnJvci5JTlZBTElEX0NMQVNTX05BTUUsXG4gICAgYENsYXNzIG5hbWUgbWlzbWF0Y2ggYmV0d2VlbiAke2JvZHlDbGFzc30gYW5kICR7cGF0aENsYXNzfS5gXG4gICk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbFNjaGVtYXMocmVxKSB7XG4gIHJldHVybiByZXEuY29uZmlnLmRhdGFiYXNlXG4gICAgLmxvYWRTY2hlbWEoeyBjbGVhckNhY2hlOiB0cnVlIH0pXG4gICAgLnRoZW4oc2NoZW1hQ29udHJvbGxlciA9PiBzY2hlbWFDb250cm9sbGVyLmdldEFsbENsYXNzZXMoeyBjbGVhckNhY2hlOiB0cnVlIH0pKVxuICAgIC50aGVuKHNjaGVtYXMgPT4gKHsgcmVzcG9uc2U6IHsgcmVzdWx0czogc2NoZW1hcyB9IH0pKTtcbn1cblxuZnVuY3Rpb24gZ2V0T25lU2NoZW1hKHJlcSkge1xuICBjb25zdCBjbGFzc05hbWUgPSByZXEucGFyYW1zLmNsYXNzTmFtZTtcbiAgcmV0dXJuIHJlcS5jb25maWcuZGF0YWJhc2VcbiAgICAubG9hZFNjaGVtYSh7IGNsZWFyQ2FjaGU6IHRydWUgfSlcbiAgICAudGhlbihzY2hlbWFDb250cm9sbGVyID0+IHNjaGVtYUNvbnRyb2xsZXIuZ2V0T25lU2NoZW1hKGNsYXNzTmFtZSwgdHJ1ZSkpXG4gICAgLnRoZW4oc2NoZW1hID0+ICh7IHJlc3BvbnNlOiBzY2hlbWEgfSkpXG4gICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGlmIChlcnJvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX0NMQVNTX05BTUUsIGBDbGFzcyAke2NsYXNzTmFtZX0gZG9lcyBub3QgZXhpc3QuYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5URVJOQUxfU0VSVkVSX0VSUk9SLCAnRGF0YWJhc2UgYWRhcHRlciBlcnJvci4nKTtcbiAgICAgIH1cbiAgICB9KTtcbn1cblxuY29uc3QgY2hlY2tJZkRlZmluZWRTY2hlbWFzSXNVc2VkID0gcmVxID0+IHtcbiAgaWYgKHJlcS5jb25maWc/LnNjaGVtYT8ubG9ja1NjaGVtYXMgPT09IHRydWUpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICBQYXJzZS5FcnJvci5PUEVSQVRJT05fRk9SQklEREVOLFxuICAgICAgJ0Nhbm5vdCBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uIHdoZW4gc2NoZW1hcyBvcHRpb25zIGlzIHVzZWQuJ1xuICAgICk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBpbnRlcm5hbENyZWF0ZVNjaGVtYSA9IGFzeW5jIChjbGFzc05hbWUsIGJvZHksIGNvbmZpZykgPT4ge1xuICBjb25zdCBjb250cm9sbGVyID0gYXdhaXQgY29uZmlnLmRhdGFiYXNlLmxvYWRTY2hlbWEoeyBjbGVhckNhY2hlOiB0cnVlIH0pO1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNvbnRyb2xsZXIuYWRkQ2xhc3NJZk5vdEV4aXN0cyhcbiAgICBjbGFzc05hbWUsXG4gICAgYm9keS5maWVsZHMsXG4gICAgYm9keS5jbGFzc0xldmVsUGVybWlzc2lvbnMsXG4gICAgYm9keS5pbmRleGVzXG4gICk7XG4gIHJldHVybiB7XG4gICAgcmVzcG9uc2UsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgaW50ZXJuYWxVcGRhdGVTY2hlbWEgPSBhc3luYyAoY2xhc3NOYW1lLCBib2R5LCBjb25maWcpID0+IHtcbiAgY29uc3QgY29udHJvbGxlciA9IGF3YWl0IGNvbmZpZy5kYXRhYmFzZS5sb2FkU2NoZW1hKHsgY2xlYXJDYWNoZTogdHJ1ZSB9KTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjb250cm9sbGVyLnVwZGF0ZUNsYXNzKFxuICAgIGNsYXNzTmFtZSxcbiAgICBib2R5LmZpZWxkcyB8fCB7fSxcbiAgICBib2R5LmNsYXNzTGV2ZWxQZXJtaXNzaW9ucyxcbiAgICBib2R5LmluZGV4ZXMsXG4gICAgY29uZmlnLmRhdGFiYXNlXG4gICk7XG4gIHJldHVybiB7IHJlc3BvbnNlIH07XG59O1xuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVTY2hlbWEocmVxKSB7XG4gIGNoZWNrSWZEZWZpbmVkU2NoZW1hc0lzVXNlZChyZXEpO1xuICBpZiAocmVxLmF1dGguaXNSZWFkT25seSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLk9QRVJBVElPTl9GT1JCSURERU4sXG4gICAgICBcInJlYWQtb25seSBtYXN0ZXJLZXkgaXNuJ3QgYWxsb3dlZCB0byBjcmVhdGUgYSBzY2hlbWEuXCJcbiAgICApO1xuICB9XG4gIGlmIChyZXEucGFyYW1zLmNsYXNzTmFtZSAmJiByZXEuYm9keS5jbGFzc05hbWUpIHtcbiAgICBpZiAocmVxLnBhcmFtcy5jbGFzc05hbWUgIT0gcmVxLmJvZHkuY2xhc3NOYW1lKSB7XG4gICAgICByZXR1cm4gY2xhc3NOYW1lTWlzbWF0Y2hSZXNwb25zZShyZXEuYm9keS5jbGFzc05hbWUsIHJlcS5wYXJhbXMuY2xhc3NOYW1lKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBjbGFzc05hbWUgPSByZXEucGFyYW1zLmNsYXNzTmFtZSB8fCByZXEuYm9keS5jbGFzc05hbWU7XG4gIGlmICghY2xhc3NOYW1lKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKDEzNSwgYFBPU1QgJHtyZXEucGF0aH0gbmVlZHMgYSBjbGFzcyBuYW1lLmApO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IGludGVybmFsQ3JlYXRlU2NoZW1hKGNsYXNzTmFtZSwgcmVxLmJvZHksIHJlcS5jb25maWcpO1xufVxuXG5mdW5jdGlvbiBtb2RpZnlTY2hlbWEocmVxKSB7XG4gIGNoZWNrSWZEZWZpbmVkU2NoZW1hc0lzVXNlZChyZXEpO1xuICBpZiAocmVxLmF1dGguaXNSZWFkT25seSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLk9QRVJBVElPTl9GT1JCSURERU4sXG4gICAgICBcInJlYWQtb25seSBtYXN0ZXJLZXkgaXNuJ3QgYWxsb3dlZCB0byB1cGRhdGUgYSBzY2hlbWEuXCJcbiAgICApO1xuICB9XG4gIGlmIChyZXEuYm9keS5jbGFzc05hbWUgJiYgcmVxLmJvZHkuY2xhc3NOYW1lICE9IHJlcS5wYXJhbXMuY2xhc3NOYW1lKSB7XG4gICAgcmV0dXJuIGNsYXNzTmFtZU1pc21hdGNoUmVzcG9uc2UocmVxLmJvZHkuY2xhc3NOYW1lLCByZXEucGFyYW1zLmNsYXNzTmFtZSk7XG4gIH1cbiAgY29uc3QgY2xhc3NOYW1lID0gcmVxLnBhcmFtcy5jbGFzc05hbWU7XG5cbiAgcmV0dXJuIGludGVybmFsVXBkYXRlU2NoZW1hKGNsYXNzTmFtZSwgcmVxLmJvZHksIHJlcS5jb25maWcpO1xufVxuXG5jb25zdCBkZWxldGVTY2hlbWEgPSByZXEgPT4ge1xuICBpZiAocmVxLmF1dGguaXNSZWFkT25seSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLk9QRVJBVElPTl9GT1JCSURERU4sXG4gICAgICBcInJlYWQtb25seSBtYXN0ZXJLZXkgaXNuJ3QgYWxsb3dlZCB0byBkZWxldGUgYSBzY2hlbWEuXCJcbiAgICApO1xuICB9XG4gIGlmICghU2NoZW1hQ29udHJvbGxlci5jbGFzc05hbWVJc1ZhbGlkKHJlcS5wYXJhbXMuY2xhc3NOYW1lKSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLklOVkFMSURfQ0xBU1NfTkFNRSxcbiAgICAgIFNjaGVtYUNvbnRyb2xsZXIuaW52YWxpZENsYXNzTmFtZU1lc3NhZ2UocmVxLnBhcmFtcy5jbGFzc05hbWUpXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcmVxLmNvbmZpZy5kYXRhYmFzZS5kZWxldGVTY2hlbWEocmVxLnBhcmFtcy5jbGFzc05hbWUpLnRoZW4oKCkgPT4gKHsgcmVzcG9uc2U6IHt9IH0pKTtcbn07XG5cbmV4cG9ydCBjbGFzcyBTY2hlbWFzUm91dGVyIGV4dGVuZHMgUHJvbWlzZVJvdXRlciB7XG4gIG1vdW50Um91dGVzKCkge1xuICAgIHRoaXMucm91dGUoJ0dFVCcsICcvc2NoZW1hcycsIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsIGdldEFsbFNjaGVtYXMpO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnR0VUJyxcbiAgICAgICcvc2NoZW1hcy86Y2xhc3NOYW1lJyxcbiAgICAgIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICBnZXRPbmVTY2hlbWFcbiAgICApO1xuICAgIHRoaXMucm91dGUoJ1BPU1QnLCAnL3NjaGVtYXMnLCBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLCBjcmVhdGVTY2hlbWEpO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnUE9TVCcsXG4gICAgICAnL3NjaGVtYXMvOmNsYXNzTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgY3JlYXRlU2NoZW1hXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ1BVVCcsXG4gICAgICAnL3NjaGVtYXMvOmNsYXNzTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgbW9kaWZ5U2NoZW1hXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ0RFTEVURScsXG4gICAgICAnL3NjaGVtYXMvOmNsYXNzTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgZGVsZXRlU2NoZW1hXG4gICAgKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFLQTtBQUNBO0FBQTZDO0FBQUE7QUFBQTtBQU43Qzs7QUFFQSxJQUFJQSxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQ0QsS0FBSztFQUNyQ0UsZ0JBQWdCLEdBQUdELE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQztBQUsvRCxTQUFTRSx5QkFBeUIsQ0FBQ0MsU0FBUyxFQUFFQyxTQUFTLEVBQUU7RUFDdkQsTUFBTSxJQUFJTCxLQUFLLENBQUNNLEtBQUssQ0FDbkJOLEtBQUssQ0FBQ00sS0FBSyxDQUFDQyxrQkFBa0IsRUFDN0IsK0JBQThCSCxTQUFVLFFBQU9DLFNBQVUsR0FBRSxDQUM3RDtBQUNIO0FBRUEsU0FBU0csYUFBYSxDQUFDQyxHQUFHLEVBQUU7RUFDMUIsT0FBT0EsR0FBRyxDQUFDQyxNQUFNLENBQUNDLFFBQVEsQ0FDdkJDLFVBQVUsQ0FBQztJQUFFQyxVQUFVLEVBQUU7RUFBSyxDQUFDLENBQUMsQ0FDaENDLElBQUksQ0FBQ0MsZ0JBQWdCLElBQUlBLGdCQUFnQixDQUFDQyxhQUFhLENBQUM7SUFBRUgsVUFBVSxFQUFFO0VBQUssQ0FBQyxDQUFDLENBQUMsQ0FDOUVDLElBQUksQ0FBQ0csT0FBTyxLQUFLO0lBQUVDLFFBQVEsRUFBRTtNQUFFQyxPQUFPLEVBQUVGO0lBQVE7RUFBRSxDQUFDLENBQUMsQ0FBQztBQUMxRDtBQUVBLFNBQVNHLFlBQVksQ0FBQ1gsR0FBRyxFQUFFO0VBQ3pCLE1BQU1ZLFNBQVMsR0FBR1osR0FBRyxDQUFDYSxNQUFNLENBQUNE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
119
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwibWlkZGxld2FyZSIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIlBhcnNlIiwiU2NoZW1hQ29udHJvbGxlciIsImNsYXNzTmFtZU1pc21hdGNoUmVzcG9uc2UiLCJib2R5Q2xhc3MiLCJwYXRoQ2xhc3MiLCJFcnJvciIsIklOVkFMSURfQ0xBU1NfTkFNRSIsImdldEFsbFNjaGVtYXMiLCJyZXEiLCJjb25maWciLCJkYXRhYmFzZSIsImxvYWRTY2hlbWEiLCJjbGVhckNhY2hlIiwidGhlbiIsInNjaGVtYUNvbnRyb2xsZXIiLCJnZXRBbGxDbGFzc2VzIiwic2NoZW1hcyIsInJlc3BvbnNlIiwicmVzdWx0cyIsImdldE9uZVNjaGVtYSIsImNsYXNzTmFtZSIsInBhcmFtcyIsInNjaGVtYSIsImNhdGNoIiwiZXJyb3IiLCJ1bmRlZmluZWQiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiLCJjaGVja0lmRGVmaW5lZFNjaGVtYXNJc1VzZWQiLCJfcmVxJGNvbmZpZyIsIl9yZXEkY29uZmlnJHNjaGVtYSIsImxvY2tTY2hlbWFzIiwiT1BFUkFUSU9OX0ZPUkJJRERFTiIsImludGVybmFsQ3JlYXRlU2NoZW1hIiwiYm9keSIsImNvbnRyb2xsZXIiLCJhZGRDbGFzc0lmTm90RXhpc3RzIiwiZmllbGRzIiwiY2xhc3NMZXZlbFBlcm1pc3Npb25zIiwiaW5kZXhlcyIsImV4cG9ydHMiLCJpbnRlcm5hbFVwZGF0ZVNjaGVtYSIsInVwZGF0ZUNsYXNzIiwiY3JlYXRlU2NoZW1hIiwiYXV0aCIsImlzUmVhZE9ubHkiLCJwYXRoIiwibW9kaWZ5U2NoZW1hIiwiZGVsZXRlU2NoZW1hIiwiY2xhc3NOYW1lSXNWYWxpZCIsImludmFsaWRDbGFzc05hbWVNZXNzYWdlIiwiU2NoZW1hc1JvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJtb3VudFJvdXRlcyIsInJvdXRlIiwicHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9TY2hlbWFzUm91dGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHNjaGVtYXMuanNcblxudmFyIFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlLFxuICBTY2hlbWFDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vQ29udHJvbGxlcnMvU2NoZW1hQ29udHJvbGxlcicpO1xuXG5pbXBvcnQgUHJvbWlzZVJvdXRlciBmcm9tICcuLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCAqIGFzIG1pZGRsZXdhcmUgZnJvbSAnLi4vbWlkZGxld2FyZXMnO1xuXG5mdW5jdGlvbiBjbGFzc05hbWVNaXNtYXRjaFJlc3BvbnNlKGJvZHlDbGFzcywgcGF0aENsYXNzKSB7XG4gIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICBQYXJzZS5FcnJvci5JTlZBTElEX0NMQVNTX05BTUUsXG4gICAgYENsYXNzIG5hbWUgbWlzbWF0Y2ggYmV0d2VlbiAke2JvZHlDbGFzc30gYW5kICR7cGF0aENsYXNzfS5gXG4gICk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbFNjaGVtYXMocmVxKSB7XG4gIHJldHVybiByZXEuY29uZmlnLmRhdGFiYXNlXG4gICAgLmxvYWRTY2hlbWEoeyBjbGVhckNhY2hlOiB0cnVlIH0pXG4gICAgLnRoZW4oc2NoZW1hQ29udHJvbGxlciA9PiBzY2hlbWFDb250cm9sbGVyLmdldEFsbENsYXNzZXMoeyBjbGVhckNhY2hlOiB0cnVlIH0pKVxuICAgIC50aGVuKHNjaGVtYXMgPT4gKHsgcmVzcG9uc2U6IHsgcmVzdWx0czogc2NoZW1hcyB9IH0pKTtcbn1cblxuZnVuY3Rpb24gZ2V0T25lU2NoZW1hKHJlcSkge1xuICBjb25zdCBjbGFzc05hbWUgPSByZXEucGFyYW1zLmNsYXNzTmFtZTtcbiAgcmV0dXJuIHJlcS5jb25maWcuZGF0YWJhc2VcbiAgICAubG9hZFNjaGVtYSh7IGNsZWFyQ2FjaGU6IHRydWUgfSlcbiAgICAudGhlbihzY2hlbWFDb250cm9sbGVyID0+IHNjaGVtYUNvbnRyb2xsZXIuZ2V0T25lU2NoZW1hKGNsYXNzTmFtZSwgdHJ1ZSkpXG4gICAgLnRoZW4oc2NoZW1hID0+ICh7IHJlc3BvbnNlOiBzY2hlbWEgfSkpXG4gICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGlmIChlcnJvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX0NMQVNTX05BTUUsIGBDbGFzcyAke2NsYXNzTmFtZX0gZG9lcyBub3QgZXhpc3QuYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5URVJOQUxfU0VSVkVSX0VSUk9SLCAnRGF0YWJhc2UgYWRhcHRlciBlcnJvci4nKTtcbiAgICAgIH1cbiAgICB9KTtcbn1cblxuY29uc3QgY2hlY2tJZkRlZmluZWRTY2hlbWFzSXNVc2VkID0gcmVxID0+IHtcbiAgaWYgKHJlcS5jb25maWc/LnNjaGVtYT8ubG9ja1NjaGVtYXMgPT09IHRydWUpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICBQYXJzZS5FcnJvci5PUEVSQVRJT05fRk9SQklEREVOLFxuICAgICAgJ0Nhbm5vdCBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uIHdoZW4gc2NoZW1hcyBvcHRpb25zIGlzIHVzZWQuJ1xuICAgICk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBpbnRlcm5hbENyZWF0ZVNjaGVtYSA9IGFzeW5jIChjbGFzc05hbWUsIGJvZHksIGNvbmZpZykgPT4ge1xuICBjb25zdCBjb250cm9sbGVyID0gYXdhaXQgY29uZmlnLmRhdGFiYXNlLmxvYWRTY2hlbWEoeyBjbGVhckNhY2hlOiB0cnVlIH0pO1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNvbnRyb2xsZXIuYWRkQ2xhc3NJZk5vdEV4aXN0cyhcbiAgICBjbGFzc05hbWUsXG4gICAgYm9keS5maWVsZHMsXG4gICAgYm9keS5jbGFzc0xldmVsUGVybWlzc2lvbnMsXG4gICAgYm9keS5pbmRleGVzXG4gICk7XG4gIHJldHVybiB7XG4gICAgcmVzcG9uc2UsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgaW50ZXJuYWxVcGRhdGVTY2hlbWEgPSBhc3luYyAoY2xhc3NOYW1lLCBib2R5LCBjb25maWcpID0+IHtcbiAgY29uc3QgY29udHJvbGxlciA9IGF3YWl0IGNvbmZpZy5kYXRhYmFzZS5sb2FkU2NoZW1hKHsgY2xlYXJDYWNoZTogdHJ1ZSB9KTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjb250cm9sbGVyLnVwZGF0ZUNsYXNzKFxuICAgIGNsYXNzTmFtZSxcbiAgICBib2R5LmZpZWxkcyB8fCB7fSxcbiAgICBib2R5LmNsYXNzTGV2ZWxQZXJtaXNzaW9ucyxcbiAgICBib2R5LmluZGV4ZXMsXG4gICAgY29uZmlnLmRhdGFiYXNlXG4gICk7XG4gIHJldHVybiB7IHJlc3BvbnNlIH07XG59O1xuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVTY2hlbWEocmVxKSB7XG4gIGNoZWNrSWZEZWZpbmVkU2NoZW1hc0lzVXNlZChyZXEpO1xuICBpZiAocmVxLmF1dGguaXNSZWFkT25seSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLk9QRVJBVElPTl9GT1JCSURERU4sXG4gICAgICBcInJlYWQtb25seSBtYXN0ZXJLZXkgaXNuJ3QgYWxsb3dlZCB0byBjcmVhdGUgYSBzY2hlbWEuXCJcbiAgICApO1xuICB9XG4gIGlmIChyZXEucGFyYW1zLmNsYXNzTmFtZSAmJiByZXEuYm9keS5jbGFzc05hbWUpIHtcbiAgICBpZiAocmVxLnBhcmFtcy5jbGFzc05hbWUgIT0gcmVxLmJvZHkuY2xhc3NOYW1lKSB7XG4gICAgICByZXR1cm4gY2xhc3NOYW1lTWlzbWF0Y2hSZXNwb25zZShyZXEuYm9keS5jbGFzc05hbWUsIHJlcS5wYXJhbXMuY2xhc3NOYW1lKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBjbGFzc05hbWUgPSByZXEucGFyYW1zLmNsYXNzTmFtZSB8fCByZXEuYm9keS5jbGFzc05hbWU7XG4gIGlmICghY2xhc3NOYW1lKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKDEzNSwgYFBPU1QgJHtyZXEucGF0aH0gbmVlZHMgYSBjbGFzcyBuYW1lLmApO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IGludGVybmFsQ3JlYXRlU2NoZW1hKGNsYXNzTmFtZSwgcmVxLmJvZHksIHJlcS5jb25maWcpO1xufVxuXG5mdW5jdGlvbiBtb2RpZnlTY2hlbWEocmVxKSB7XG4gIGNoZWNrSWZEZWZpbmVkU2NoZW1hc0lzVXNlZChyZXEpO1xuICBpZiAocmVxLmF1dGguaXNSZWFkT25seSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLk9QRVJBVElPTl9GT1JCSURERU4sXG4gICAgICBcInJlYWQtb25seSBtYXN0ZXJLZXkgaXNuJ3QgYWxsb3dlZCB0byB1cGRhdGUgYSBzY2hlbWEuXCJcbiAgICApO1xuICB9XG4gIGlmIChyZXEuYm9keS5jbGFzc05hbWUgJiYgcmVxLmJvZHkuY2xhc3NOYW1lICE9IHJlcS5wYXJhbXMuY2xhc3NOYW1lKSB7XG4gICAgcmV0dXJuIGNsYXNzTmFtZU1pc21hdGNoUmVzcG9uc2UocmVxLmJvZHkuY2xhc3NOYW1lLCByZXEucGFyYW1zLmNsYXNzTmFtZSk7XG4gIH1cbiAgY29uc3QgY2xhc3NOYW1lID0gcmVxLnBhcmFtcy5jbGFzc05hbWU7XG5cbiAgcmV0dXJuIGludGVybmFsVXBkYXRlU2NoZW1hKGNsYXNzTmFtZSwgcmVxLmJvZHksIHJlcS5jb25maWcpO1xufVxuXG5jb25zdCBkZWxldGVTY2hlbWEgPSByZXEgPT4ge1xuICBpZiAocmVxLmF1dGguaXNSZWFkT25seSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLk9QRVJBVElPTl9GT1JCSURERU4sXG4gICAgICBcInJlYWQtb25seSBtYXN0ZXJLZXkgaXNuJ3QgYWxsb3dlZCB0byBkZWxldGUgYSBzY2hlbWEuXCJcbiAgICApO1xuICB9XG4gIGlmICghU2NoZW1hQ29udHJvbGxlci5jbGFzc05hbWVJc1ZhbGlkKHJlcS5wYXJhbXMuY2xhc3NOYW1lKSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLklOVkFMSURfQ0xBU1NfTkFNRSxcbiAgICAgIFNjaGVtYUNvbnRyb2xsZXIuaW52YWxpZENsYXNzTmFtZU1lc3NhZ2UocmVxLnBhcmFtcy5jbGFzc05hbWUpXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcmVxLmNvbmZpZy5kYXRhYmFzZS5kZWxldGVTY2hlbWEocmVxLnBhcmFtcy5jbGFzc05hbWUpLnRoZW4oKCkgPT4gKHsgcmVzcG9uc2U6IHt9IH0pKTtcbn07XG5cbmV4cG9ydCBjbGFzcyBTY2hlbWFzUm91dGVyIGV4dGVuZHMgUHJvbWlzZVJvdXRlciB7XG4gIG1vdW50Um91dGVzKCkge1xuICAgIHRoaXMucm91dGUoJ0dFVCcsICcvc2NoZW1hcycsIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsIGdldEFsbFNjaGVtYXMpO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnR0VUJyxcbiAgICAgICcvc2NoZW1hcy86Y2xhc3NOYW1lJyxcbiAgICAgIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICBnZXRPbmVTY2hlbWFcbiAgICApO1xuICAgIHRoaXMucm91dGUoJ1BPU1QnLCAnL3NjaGVtYXMnLCBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLCBjcmVhdGVTY2hlbWEpO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnUE9TVCcsXG4gICAgICAnL3NjaGVtYXMvOmNsYXNzTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgY3JlYXRlU2NoZW1hXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ1BVVCcsXG4gICAgICAnL3NjaGVtYXMvOmNsYXNzTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgbW9kaWZ5U2NoZW1hXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ0RFTEVURScsXG4gICAgICAnL3NjaGVtYXMvOmNsYXNzTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgZGVsZXRlU2NoZW1hXG4gICAgKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFLQSxJQUFBQSxjQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFBNkMsU0FBQUcseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQUYsd0JBQUFNLEdBQUEsRUFBQUosV0FBQSxTQUFB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
@@ -33,4 +33,4 @@ class SecurityRouter extends _PromiseRouter.default {
33
33
  exports.SecurityRouter = SecurityRouter;
34
34
  var _default = SecurityRouter;
35
35
  exports.default = _default;
36
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTZWN1cml0eVJvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJtb3VudFJvdXRlcyIsInJvdXRlIiwibWlkZGxld2FyZSIsInByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzIiwiX2VuZm9yY2VTZWN1cml0eUNoZWNrRW5hYmxlZCIsInJlcSIsInJlcG9ydCIsIkNoZWNrUnVubmVyIiwiY29uZmlnIiwic2VjdXJpdHkiLCJydW4iLCJzdGF0dXMiLCJyZXNwb25zZSIsImVuYWJsZUNoZWNrIiwiZXJyb3IiLCJFcnJvciIsIm1lc3NhZ2UiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9TZWN1cml0eVJvdXRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHJvbWlzZVJvdXRlciBmcm9tICcuLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCAqIGFzIG1pZGRsZXdhcmUgZnJvbSAnLi4vbWlkZGxld2FyZXMnO1xuaW1wb3J0IENoZWNrUnVubmVyIGZyb20gJy4uL1NlY3VyaXR5L0NoZWNrUnVubmVyJztcblxuZXhwb3J0IGNsYXNzIFNlY3VyaXR5Um91dGVyIGV4dGVuZHMgUHJvbWlzZVJvdXRlciB7XG4gIG1vdW50Um91dGVzKCkge1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnR0VUJyxcbiAgICAgICcvc2VjdXJpdHknLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIHRoaXMuX2VuZm9yY2VTZWN1cml0eUNoZWNrRW5hYmxlZCxcbiAgICAgIGFzeW5jIHJlcSA9PiB7XG4gICAgICAgIGNvbnN0IHJlcG9ydCA9IGF3YWl0IG5ldyBDaGVja1J1bm5lcihyZXEuY29uZmlnLnNlY3VyaXR5KS5ydW4oKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgICByZXNwb25zZTogcmVwb3J0LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBhc3luYyBfZW5mb3JjZVNlY3VyaXR5Q2hlY2tFbmFibGVkKHJlcSkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHJlcS5jb25maWc7XG4gICAgaWYgKCFjb25maWcuc2VjdXJpdHkgfHwgIWNvbmZpZy5zZWN1cml0eS5lbmFibGVDaGVjaykge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoKTtcbiAgICAgIGVycm9yLnN0YXR1cyA9IDQwOTtcbiAgICAgIGVycm9yLm1lc3NhZ2UgPSAnRW5hYmxlIFBhcnNlIFNlcnZlciBvcHRpb24gYHNlY3VyaXR5LmVuYWJsZUNoZWNrYCB0byBydW4gc2VjdXJpdHkgY2hlY2suJztcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTZWN1cml0eVJvdXRlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQWtEO0FBQUE7QUFBQTtBQUUzQyxNQUFNQSxjQUFjLFNBQVNDLHNCQUFhLENBQUM7RUFDaERDLFdBQVcsR0FBRztJQUNaLElBQUksQ0FBQ0MsS0FBSyxDQUNSLEtBQUssRUFDTCxXQUFXLEVBQ1hDLFVBQVUsQ0FBQ0MsNkJBQTZCLEVBQ3hDLElBQUksQ0FBQ0MsNEJBQTRCLEVBQ2pDLE1BQU1DLEdBQUcsSUFBSTtNQUNYLE1BQU1DLE1BQU0sR0FBRyxNQUFNLElBQUlDLG9CQUFXLENBQUNGLEdBQUcsQ0FBQ0csTUFBTSxDQUFDQyxRQUFRLENBQUMsQ0FBQ0MsR0FBRyxFQUFFO01BQy9ELE9BQU87UUFDTEMsTUFBTSxFQUFFLEdBQUc7UUFDWEMsUUFBUSxFQUFFTjtNQUNaLENBQUM7SUFDSCxDQUFDLENBQ0Y7RUFDSDtFQUVBLE1BQU1GLDRCQUE0QixDQUFDQyxHQUFHLEVBQUU7SUFDdEMsTUFBTUcsTUFBTSxHQUFHSCxHQUFHLENBQUNHLE1BQU07SUFDekIsSUFBSSxDQUFDQSxNQUFNLENBQUNDLFFBQVEsSUFBSSxDQUFDRCxNQUFNLENBQUNDLFFBQVEsQ0FBQ0ksV0FBVyxFQUFFO01BQ3BELE1BQU1DLEtBQUssR0FBRyxJQUFJQyxLQUFLLEVBQUU7TUFDekJELEtBQUssQ0FBQ0gsTUFBTSxHQUFHLEdBQUc7TUFDbEJHLEtBQUssQ0FBQ0UsT0FBTyxHQUFHLDBFQUEwRTtNQUMxRixNQUFNRixLQUFLO0lBQ2I7RUFDRjtBQUNGO0FBQUM7QUFBQSxlQUVjaEIsY0FBYztBQUFBIn0=
36
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUHJvbWlzZVJvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwibWlkZGxld2FyZSIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX0NoZWNrUnVubmVyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIlNlY3VyaXR5Um91dGVyIiwiUHJvbWlzZVJvdXRlciIsIm1vdW50Um91dGVzIiwicm91dGUiLCJwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyIsIl9lbmZvcmNlU2VjdXJpdHlDaGVja0VuYWJsZWQiLCJyZXEiLCJyZXBvcnQiLCJDaGVja1J1bm5lciIsImNvbmZpZyIsInNlY3VyaXR5IiwicnVuIiwic3RhdHVzIiwicmVzcG9uc2UiLCJlbmFibGVDaGVjayIsImVycm9yIiwiRXJyb3IiLCJtZXNzYWdlIiwiZXhwb3J0cyIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL1JvdXRlcnMvU2VjdXJpdHlSb3V0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb21pc2VSb3V0ZXIgZnJvbSAnLi4vUHJvbWlzZVJvdXRlcic7XG5pbXBvcnQgKiBhcyBtaWRkbGV3YXJlIGZyb20gJy4uL21pZGRsZXdhcmVzJztcbmltcG9ydCBDaGVja1J1bm5lciBmcm9tICcuLi9TZWN1cml0eS9DaGVja1J1bm5lcic7XG5cbmV4cG9ydCBjbGFzcyBTZWN1cml0eVJvdXRlciBleHRlbmRzIFByb21pc2VSb3V0ZXIge1xuICBtb3VudFJvdXRlcygpIHtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ0dFVCcsXG4gICAgICAnL3NlY3VyaXR5JyxcbiAgICAgIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICB0aGlzLl9lbmZvcmNlU2VjdXJpdHlDaGVja0VuYWJsZWQsXG4gICAgICBhc3luYyByZXEgPT4ge1xuICAgICAgICBjb25zdCByZXBvcnQgPSBhd2FpdCBuZXcgQ2hlY2tSdW5uZXIocmVxLmNvbmZpZy5zZWN1cml0eSkucnVuKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICAgICAgcmVzcG9uc2U6IHJlcG9ydCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgYXN5bmMgX2VuZm9yY2VTZWN1cml0eUNoZWNrRW5hYmxlZChyZXEpIHtcbiAgICBjb25zdCBjb25maWcgPSByZXEuY29uZmlnO1xuICAgIGlmICghY29uZmlnLnNlY3VyaXR5IHx8ICFjb25maWcuc2VjdXJpdHkuZW5hYmxlQ2hlY2spIHtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKCk7XG4gICAgICBlcnJvci5zdGF0dXMgPSA0MDk7XG4gICAgICBlcnJvci5tZXNzYWdlID0gJ0VuYWJsZSBQYXJzZSBTZXJ2ZXIgb3B0aW9uIGBzZWN1cml0eS5lbmFibGVDaGVja2AgdG8gcnVuIHNlY3VyaXR5IGNoZWNrLic7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU2VjdXJpdHlSb3V0ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFlBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FB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
@@ -90,4 +90,4 @@ class SessionsRouter extends _ClassesRouter.default {
90
90
  exports.SessionsRouter = SessionsRouter;
91
91
  var _default = SessionsRouter;
92
92
  exports.default = _default;
93
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTZXNzaW9uc1JvdXRlciIsIkNsYXNzZXNSb3V0ZXIiLCJjbGFzc05hbWUiLCJoYW5kbGVNZSIsInJlcSIsImluZm8iLCJzZXNzaW9uVG9rZW4iLCJQYXJzZSIsIkVycm9yIiwiSU5WQUxJRF9TRVNTSU9OX1RPS0VOIiwicmVzdCIsImZpbmQiLCJjb25maWciLCJBdXRoIiwibWFzdGVyIiwidW5kZWZpbmVkIiwiY2xpZW50U0RLIiwiY29udGV4dCIsInRoZW4iLCJyZXNwb25zZSIsInJlc3VsdHMiLCJsZW5ndGgiLCJoYW5kbGVVcGRhdGVUb1Jldm9jYWJsZVNlc3Npb24iLCJ1c2VyIiwiYXV0aCIsIk9CSkVDVF9OT1RfRk9VTkQiLCJzZXNzaW9uRGF0YSIsImNyZWF0ZVNlc3Npb24iLCJSZXN0V3JpdGUiLCJ1c2VySWQiLCJpZCIsImNyZWF0ZWRXaXRoIiwiYWN0aW9uIiwiaW5zdGFsbGF0aW9uSWQiLCJkYXRhYmFzZSIsInVwZGF0ZSIsIm9iamVjdElkIiwiX19vcCIsIlByb21pc2UiLCJyZXNvbHZlIiwibW91bnRSb3V0ZXMiLCJyb3V0ZSIsImhhbmRsZUZpbmQiLCJoYW5kbGVHZXQiLCJoYW5kbGVDcmVhdGUiLCJoYW5kbGVVcGRhdGUiLCJoYW5kbGVEZWxldGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9TZXNzaW9uc1JvdXRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ2xhc3Nlc1JvdXRlciBmcm9tICcuL0NsYXNzZXNSb3V0ZXInO1xuaW1wb3J0IFBhcnNlIGZyb20gJ3BhcnNlL25vZGUnO1xuaW1wb3J0IHJlc3QgZnJvbSAnLi4vcmVzdCc7XG5pbXBvcnQgQXV0aCBmcm9tICcuLi9BdXRoJztcbmltcG9ydCBSZXN0V3JpdGUgZnJvbSAnLi4vUmVzdFdyaXRlJztcblxuZXhwb3J0IGNsYXNzIFNlc3Npb25zUm91dGVyIGV4dGVuZHMgQ2xhc3Nlc1JvdXRlciB7XG4gIGNsYXNzTmFtZSgpIHtcbiAgICByZXR1cm4gJ19TZXNzaW9uJztcbiAgfVxuXG4gIGhhbmRsZU1lKHJlcSkge1xuICAgIC8vIFRPRE86IFZlcmlmeSBjb3JyZWN0IGJlaGF2aW9yXG4gICAgaWYgKCFyZXEuaW5mbyB8fCAhcmVxLmluZm8uc2Vzc2lvblRva2VuKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9TRVNTSU9OX1RPS0VOLCAnU2Vzc2lvbiB0b2tlbiByZXF1aXJlZC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3RcbiAgICAgIC5maW5kKFxuICAgICAgICByZXEuY29uZmlnLFxuICAgICAgICBBdXRoLm1hc3RlcihyZXEuY29uZmlnKSxcbiAgICAgICAgJ19TZXNzaW9uJyxcbiAgICAgICAgeyBzZXNzaW9uVG9rZW46IHJlcS5pbmZvLnNlc3Npb25Ub2tlbiB9LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHJlcS5pbmZvLmNsaWVudFNESyxcbiAgICAgICAgcmVxLmluZm8uY29udGV4dFxuICAgICAgKVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICBpZiAoIXJlc3BvbnNlLnJlc3VsdHMgfHwgcmVzcG9uc2UucmVzdWx0cy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1NFU1NJT05fVE9LRU4sICdTZXNzaW9uIHRva2VuIG5vdCBmb3VuZC4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZS5yZXN1bHRzWzBdLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gIH1cblxuICBoYW5kbGVVcGRhdGVUb1Jldm9jYWJsZVNlc3Npb24ocmVxKSB7XG4gICAgY29uc3QgY29uZmlnID0gcmVxLmNvbmZpZztcbiAgICBjb25zdCB1c2VyID0gcmVxLmF1dGgudXNlcjtcbiAgICAvLyBJc3N1ZSAjMjcyMFxuICAgIC8vIENhbGxpbmcgd2l0aG91dCBhIHNlc3Npb24gdG9rZW4gd291bGQgcmVzdWx0IGluIGEgbm90IGZvdW5kIHVzZXJcbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnaW52YWxpZCBzZXNzaW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IHsgc2Vzc2lvbkRhdGEsIGNyZWF0ZVNlc3Npb24gfSA9IFJlc3RXcml0ZS5jcmVhdGVTZXNzaW9uKGNvbmZpZywge1xuICAgICAgdXNlcklkOiB1c2VyLmlkLFxuICAgICAgY3JlYXRlZFdpdGg6IHtcbiAgICAgICAgYWN0aW9uOiAndXBncmFkZScsXG4gICAgICB9LFxuICAgICAgaW5zdGFsbGF0aW9uSWQ6IHJlcS5hdXRoLmluc3RhbGxhdGlvbklkLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNyZWF0ZVNlc3Npb24oKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAvLyBkZWxldGUgdGhlIHNlc3Npb24gdG9rZW4sIHVzZSB0aGUgZGIgdG8gc2tpcCBiZWZvcmVTYXZlXG4gICAgICAgIHJldHVybiBjb25maWcuZGF0YWJhc2UudXBkYXRlKFxuICAgICAgICAgICdfVXNlcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgb2JqZWN0SWQ6IHVzZXIuaWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZXNzaW9uVG9rZW46IHsgX19vcDogJ0RlbGV0ZScgfSxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IHNlc3Npb25EYXRhIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBtb3VudFJvdXRlcygpIHtcbiAgICB0aGlzLnJvdXRlKCdHRVQnLCAnL3Nlc3Npb25zL21lJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZU1lKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnR0VUJywgJy9zZXNzaW9ucycsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVGaW5kKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnR0VUJywgJy9zZXNzaW9ucy86b2JqZWN0SWQnLCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlR2V0KHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnUE9TVCcsICcvc2Vzc2lvbnMnLCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlQ3JlYXRlKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnUFVUJywgJy9zZXNzaW9ucy86b2JqZWN0SWQnLCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlVXBkYXRlKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnREVMRVRFJywgJy9zZXNzaW9ucy86b2JqZWN0SWQnLCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRGVsZXRlKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnUE9TVCcsICcvdXBncmFkZVRvUmV2b2NhYmxlU2Vzc2lvbicsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVVcGRhdGVUb1Jldm9jYWJsZVNlc3Npb24ocmVxKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTZXNzaW9uc1JvdXRlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFxQztBQUU5QixNQUFNQSxjQUFjLFNBQVNDLHNCQUFhLENBQUM7RUFDaERDLFNBQVMsR0FBRztJQUNWLE9BQU8sVUFBVTtFQUNuQjtFQUVBQyxRQUFRLENBQUNDLEdBQUcsRUFBRTtJQUNaO0lBQ0EsSUFBSSxDQUFDQSxHQUFHLENBQUNDLElBQUksSUFBSSxDQUFDRCxHQUFHLENBQUNDLElBQUksQ0FBQ0MsWUFB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
93
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQ2xhc3Nlc1JvdXRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX25vZGUiLCJfcmVzdCIsIl9BdXRoIiwiX1Jlc3RXcml0ZSIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiU2Vzc2lvbnNSb3V0ZXIiLCJDbGFzc2VzUm91dGVyIiwiY2xhc3NOYW1lIiwiaGFuZGxlTWUiLCJyZXEiLCJpbmZvIiwic2Vzc2lvblRva2VuIiwiUGFyc2UiLCJFcnJvciIsIklOVkFMSURfU0VTU0lPTl9UT0tFTiIsInJlc3QiLCJmaW5kIiwiY29uZmlnIiwiQXV0aCIsIm1hc3RlciIsInVuZGVmaW5lZCIsImNsaWVudFNESyIsImNvbnRleHQiLCJ0aGVuIiwicmVzcG9uc2UiLCJyZXN1bHRzIiwibGVuZ3RoIiwiaGFuZGxlVXBkYXRlVG9SZXZvY2FibGVTZXNzaW9uIiwidXNlciIsImF1dGgiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwic2Vzc2lvbkRhdGEiLCJjcmVhdGVTZXNzaW9uIiwiUmVzdFdyaXRlIiwidXNlcklkIiwiaWQiLCJjcmVhdGVkV2l0aCIsImFjdGlvbiIsImluc3RhbGxhdGlvbklkIiwiZGF0YWJhc2UiLCJ1cGRhdGUiLCJvYmplY3RJZCIsIl9fb3AiLCJQcm9taXNlIiwicmVzb2x2ZSIsIm1vdW50Um91dGVzIiwicm91dGUiLCJoYW5kbGVGaW5kIiwiaGFuZGxlR2V0IiwiaGFuZGxlQ3JlYXRlIiwiaGFuZGxlVXBkYXRlIiwiaGFuZGxlRGVsZXRlIiwiZXhwb3J0cyIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL1JvdXRlcnMvU2Vzc2lvbnNSb3V0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENsYXNzZXNSb3V0ZXIgZnJvbSAnLi9DbGFzc2VzUm91dGVyJztcbmltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcbmltcG9ydCByZXN0IGZyb20gJy4uL3Jlc3QnO1xuaW1wb3J0IEF1dGggZnJvbSAnLi4vQXV0aCc7XG5pbXBvcnQgUmVzdFdyaXRlIGZyb20gJy4uL1Jlc3RXcml0ZSc7XG5cbmV4cG9ydCBjbGFzcyBTZXNzaW9uc1JvdXRlciBleHRlbmRzIENsYXNzZXNSb3V0ZXIge1xuICBjbGFzc05hbWUoKSB7XG4gICAgcmV0dXJuICdfU2Vzc2lvbic7XG4gIH1cblxuICBoYW5kbGVNZShyZXEpIHtcbiAgICAvLyBUT0RPOiBWZXJpZnkgY29ycmVjdCBiZWhhdmlvclxuICAgIGlmICghcmVxLmluZm8gfHwgIXJlcS5pbmZvLnNlc3Npb25Ub2tlbikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfU0VTU0lPTl9UT0tFTiwgJ1Nlc3Npb24gdG9rZW4gcmVxdWlyZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiByZXN0XG4gICAgICAuZmluZChcbiAgICAgICAgcmVxLmNvbmZpZyxcbiAgICAgICAgQXV0aC5tYXN0ZXIocmVxLmNvbmZpZyksXG4gICAgICAgICdfU2Vzc2lvbicsXG4gICAgICAgIHsgc2Vzc2lvblRva2VuOiByZXEuaW5mby5zZXNzaW9uVG9rZW4gfSxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICByZXEuaW5mby5jbGllbnRTREssXG4gICAgICAgIHJlcS5pbmZvLmNvbnRleHRcbiAgICAgIClcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgaWYgKCFyZXNwb25zZS5yZXN1bHRzIHx8IHJlc3BvbnNlLnJlc3VsdHMubGVuZ3RoID09IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9TRVNTSU9OX1RPS0VOLCAnU2Vzc2lvbiB0b2tlbiBub3QgZm91bmQuJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNwb25zZTogcmVzcG9uc2UucmVzdWx0c1swXSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlVXBkYXRlVG9SZXZvY2FibGVTZXNzaW9uKHJlcSkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHJlcS5jb25maWc7XG4gICAgY29uc3QgdXNlciA9IHJlcS5hdXRoLnVzZXI7XG4gICAgLy8gSXNzdWUgIzI3MjBcbiAgICAvLyBDYWxsaW5nIHdpdGhvdXQgYSBzZXNzaW9uIHRva2VuIHdvdWxkIHJlc3VsdCBpbiBhIG5vdCBmb3VuZCB1c2VyXG4gICAgaWYgKCF1c2VyKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ2ludmFsaWQgc2Vzc2lvbicpO1xuICAgIH1cbiAgICBjb25zdCB7IHNlc3Npb25EYXRhLCBjcmVhdGVTZXNzaW9uIH0gPSBSZXN0V3JpdGUuY3JlYXRlU2Vzc2lvbihjb25maWcsIHtcbiAgICAgIHVzZXJJZDogdXNlci5pZCxcbiAgICAgIGNyZWF0ZWRXaXRoOiB7XG4gICAgICAgIGFjdGlvbjogJ3VwZ3JhZGUnLFxuICAgICAgfSxcbiAgICAgIGluc3RhbGxhdGlvbklkOiByZXEuYXV0aC5pbnN0YWxsYXRpb25JZCxcbiAgICB9KTtcblxuICAgIHJldHVybiBjcmVhdGVTZXNzaW9uKClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgLy8gZGVsZXRlIHRoZSBzZXNzaW9uIHRva2VuLCB1c2UgdGhlIGRiIHRvIHNraXAgYmVmb3JlU2F2ZVxuICAgICAgICByZXR1cm4gY29uZmlnLmRhdGFiYXNlLnVwZGF0ZShcbiAgICAgICAgICAnX1VzZXInLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG9iamVjdElkOiB1c2VyLmlkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2Vzc2lvblRva2VuOiB7IF9fb3A6ICdEZWxldGUnIH0sXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IHJlc3BvbnNlOiBzZXNzaW9uRGF0YSB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbW91bnRSb3V0ZXMoKSB7XG4gICAgdGhpcy5yb3V0ZSgnR0VUJywgJy9zZXNzaW9ucy9tZScsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVNZShyZXEpO1xuICAgIH0pO1xuICAgIHRoaXMucm91dGUoJ0dFVCcsICcvc2Vzc2lvbnMnLCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRmluZChyZXEpO1xuICAgIH0pO1xuICAgIHRoaXMucm91dGUoJ0dFVCcsICcvc2Vzc2lvbnMvOm9iamVjdElkJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUdldChyZXEpO1xuICAgIH0pO1xuICAgIHRoaXMucm91dGUoJ1BPU1QnLCAnL3Nlc3Npb25zJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUNyZWF0ZShyZXEpO1xuICAgIH0pO1xuICAgIHRoaXMucm91dGUoJ1BVVCcsICcvc2Vzc2lvbnMvOm9iamVjdElkJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZVVwZGF0ZShyZXEpO1xuICAgIH0pO1xuICAgIHRoaXMucm91dGUoJ0RFTEVURScsICcvc2Vzc2lvbnMvOm9iamVjdElkJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZURlbGV0ZShyZXEpO1xuICAgIH0pO1xuICAgIHRoaXMucm91dGUoJ1BPU1QnLCAnL3VwZ3JhZGVUb1Jldm9jYWJsZVNlc3Npb24nLCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlVXBkYXRlVG9SZXZvY2FibGVTZXNzaW9uKHJlcSk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU2Vzc2lvbnNSb3V0ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JB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
@@ -20,7 +20,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
20
20
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
21
21
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
22
22
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
23
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
23
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } // These methods handle the User-related routes.
24
24
  class UsersRouter extends _ClassesRouter.default {
25
25
  className() {
26
26
  return '_User';
@@ -222,7 +222,7 @@ class UsersRouter extends _ClassesRouter.default {
222
222
  // Before login trigger; throws if failure
223
223
  await (0, _triggers.maybeRunTrigger)(_triggers.Types.beforeLogin, req.auth, _node.default.User.fromJSON(Object.assign({
224
224
  className: '_User'
225
- }, user)), null, req.config);
225
+ }, user)), null, req.config, req.info.context);
226
226
 
227
227
  // If we have some new validated authData update directly
228
228
  if (validatedAuthData && Object.keys(validatedAuthData).length) {
@@ -250,7 +250,7 @@ class UsersRouter extends _ClassesRouter.default {
250
250
  }, user));
251
251
  await (0, _triggers.maybeRunTrigger)(_triggers.Types.afterLogin, _objectSpread(_objectSpread({}, req.auth), {}, {
252
252
  user: afterLoginUser
253
- }), afterLoginUser, null, req.config);
253
+ }), afterLoginUser, null, req.config, req.info.context);
254
254
  if (authDataResponse) {
255
255
  user.authDataResponse = authDataResponse;
256
256
  }
@@ -575,4 +575,4 @@ class UsersRouter extends _ClassesRouter.default {
575
575
  exports.UsersRouter = UsersRouter;
576
576
  var _default = UsersRouter;
577
577
  exports.default = _default;
578
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJVc2Vyc1JvdXRlciIsIkNsYXNzZXNSb3V0ZXIiLCJjbGFzc05hbWUiLCJyZW1vdmVIaWRkZW5Qcm9wZXJ0aWVzIiwib2JqIiwia2V5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwidGVzdCIsIl9zYW5pdGl6ZUF1dGhEYXRhIiwidXNlciIsInBhc3N3b3JkIiwiYXV0aERhdGEiLCJrZXlzIiwiZm9yRWFjaCIsInByb3ZpZGVyIiwibGVuZ3RoIiwiX2F1dGhlbnRpY2F0ZVVzZXJGcm9tUmVxdWVzdCIsInJlcSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicGF5bG9hZCIsImJvZHkiLCJ1c2VybmFtZSIsInF1ZXJ5IiwiZW1haWwiLCJQYXJzZSIsIkVycm9yIiwiVVNFUk5BTUVfTUlTU0lORyIsIlBBU1NXT1JEX01JU1NJTkciLCJPQkpFQ1RfTk9UX0ZPVU5EIiwiaXNWYWxpZFBhc3N3b3JkIiwiJG9yIiwiY29uZmlnIiwiZGF0YWJhc2UiLCJmaW5kIiwiQXV0aCIsIm1haW50ZW5hbmNlIiwidGhlbiIsInJlc3VsdHMiLCJsb2dnZXJDb250cm9sbGVyIiwid2FybiIsImZpbHRlciIsInBhc3N3b3JkQ3J5cHRvIiwiY29tcGFyZSIsImNvcnJlY3QiLCJhY2NvdW50TG9ja291dFBvbGljeSIsIkFjY291bnRMb2Nrb3V0IiwiaGFuZGxlTG9naW5BdHRlbXB0IiwiYXV0aCIsImlzTWFzdGVyIiwiQUNMIiwidmVyaWZ5VXNlckVtYWlscyIsInByZXZlbnRMb2dpbldpdGhVbnZlcmlmaWVkRW1haWwiLCJlbWFpbFZlcmlmaWVkIiwiRU1BSUxfTk9UX0ZPVU5EIiwiY2F0Y2giLCJlcnJvciIsImhhbmRsZU1lIiwiaW5mbyIsInNlc3Npb25Ub2tlbiIsIklOVkFMSURfU0VTU0lPTl9UT0tFTiIsInJlc3QiLCJtYXN0ZXIiLCJpbmNsdWRlIiwiY2xpZW50U0RLIiwiY29udGV4dCIsInJlc3BvbnNlIiwiaGFuZGxlTG9nSW4iLCJjaGVja0lmVXNlckhhc1Byb3ZpZGVkQ29uZmlndXJlZFByb3ZpZGVyc0ZvckxvZ2luIiwiYXV0aERhdGFSZXNwb25zZSIsInZhbGlkYXRlZEF1dGhEYXRhIiwicmVzIiwiaGFuZGxlQXV0aERhdGFWYWxpZGF0aW9uIiwiUmVzdFdyaXRlIiwib2JqZWN0SWQiLCJwYXNzd29yZFBvbGljeSIsIm1heFBhc3N3b3JkQWdlIiwiY2hhbmdlZEF0IiwiX3Bhc3N3b3JkX2NoYW5nZWRfYXQiLCJEYXRlIiwidXBkYXRlIiwiX2VuY29kZSIsIl9fdHlwZSIsImlzbyIsImV4cGlyZXNBdCIsImdldFRpbWUiLCJmaWxlc0NvbnRyb2xsZXIiLCJleHBhbmRGaWxlc0luT2JqZWN0IiwibWF5YmVSdW5UcmlnZ2VyIiwiVHJpZ2dlclR5cGVzIiwiYmVmb3JlTG9naW4iLCJVc2VyIiwiZnJvbUpTT04iLCJhc3NpZ24iLCJzZXNzaW9uRGF0YSIsImNyZWF0ZVNlc3Npb24iLCJ1c2VySWQiLCJjcmVhdGVkV2l0aCIsImFjdGlvbiIsImF1dGhQcm92aWRlciIsImluc3RhbGxhdGlvbklkIiwiYWZ0ZXJMb2dpblVzZXIiLCJhZnRlckxvZ2luIiwiYXV0aERhdGFNYW5hZ2VyIiwicnVuQWZ0ZXJGaW5kIiwiaGFuZGxlTG9nSW5BcyIsIk9QRVJBVElPTl9GT1JCSURERU4iLCJJTlZBTElEX1ZBTFVFIiwicXVlcnlSZXN1bHRzIiwiaGFuZGxlVmVyaWZ5UGFzc3dvcmQiLCJoYW5kbGVMb2dPdXQiLCJzdWNjZXNzIiwicmVjb3JkcyIsInVuZGVmaW5lZCIsImRlbCIsImFmdGVyTG9nb3V0IiwiU2Vzc2lvbiIsIl90aHJvd09uQmFkRW1haWxDb25maWciLCJDb25maWciLCJ2YWxpZGF0ZUVtYWlsQ29uZmlndXJhdGlvbiIsImVtYWlsQWRhcHRlciIsInVzZXJDb250cm9sbGVyIiwiYWRhcHRlciIsImFwcE5hbWUiLCJwdWJsaWNTZXJ2ZXJVUkwiLCJlbWFpbFZlcmlmeVRva2VuVmFsaWRpdHlEdXJhdGlvbiIsImVtYWlsVmVyaWZ5VG9rZW5SZXVzZUlmVmFsaWQiLCJlIiwiSU5URVJOQUxfU0VSVkVSX0VSUk9SIiwiaGFuZGxlUmVzZXRSZXF1ZXN0IiwiRU1BSUxfTUlTU0lORyIsIklOVkFMSURfRU1BSUxfQUREUkVTUyIsInNlbmRQYXNzd29yZFJlc2V0RW1haWwiLCJlcnIiLCJjb2RlIiwicmVzZXRQYXNzd29yZFN1Y2Nlc3NPbkludmFsaWRFbWFpbCIsIm1lc3NhZ2UiLCJoYW5kbGVWZXJpZmljYXRpb25FbWFpbFJlcXVlc3QiLCJPVEhFUl9DQVVTRSIsInNlbmQiLCJyZWdlbmVyYXRlRW1haWxWZXJpZnlUb2tlbiIsInNlbmRWZXJpZmljYXRpb25FbWFpbCIsImhhbmRsZUNoYWxsZW5nZSIsImNoYWxsZW5nZURhdGEiLCJyZXF1ZXN0IiwicGFyc2VVc2VyIiwiaWQiLCJmaW5kVXNlcnNXaXRoQXV0aERhdGEiLCJnZXRSZXF1ZXN0T2JqZWN0IiwiaXNDaGFsbGVuZ2UiLCJ2YWxpZGF0b3IiLCJnZXRWYWxpZGF0b3JGb3JQcm92aWRlciIsInZhbGlkYXRvclJlc3BvbnNlIiwibG9nZ2VyIiwiYWNjIiwic29ydCIsImF1dGhBZGFwdGVyIiwiY2hhbGxlbmdlIiwicHJvdmlkZXJDaGFsbGVuZ2VSZXNwb25zZSIsInJlc29sdmVFcnJvciIsIlNDUklQVF9GQUlMRUQiLCJ1c2VyU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsImF1dGhlbnRpY2F0aW9uU3RlcCIsIm1vdW50Um91dGVzIiwicm91dGUiLCJoYW5kbGVGaW5kIiwicHJvbWlzZUVuc3VyZUlkZW1wb3RlbmN5IiwiaGFuZGxlQ3JlYXRlIiwiaGFuZGxlR2V0IiwiaGFuZGxlVXBkYXRlIiwiaGFuZGxlRGVsZXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL1JvdXRlcnMvVXNlcnNSb3V0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhlc2UgbWV0aG9kcyBoYW5kbGUgdGhlIFVzZXItcmVsYXRlZCByb3V0ZXMuXG5cbmltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcbmltcG9ydCBDb25maWcgZnJvbSAnLi4vQ29uZmlnJztcbmltcG9ydCBBY2NvdW50TG9ja291dCBmcm9tICcuLi9BY2NvdW50TG9ja291dCc7XG5pbXBvcnQgQ2xhc3Nlc1JvdXRlciBmcm9tICcuL0NsYXNzZXNSb3V0ZXInO1xuaW1wb3J0IHJlc3QgZnJvbSAnLi4vcmVzdCc7XG5pbXBvcnQgQXV0aCBmcm9tICcuLi9BdXRoJztcbmltcG9ydCBwYXNzd29yZENyeXB0byBmcm9tICcuLi9wYXNzd29yZCc7XG5pbXBvcnQge1xuICBtYXliZVJ1blRyaWdnZXIsXG4gIFR5cGVzIGFzIFRyaWdnZXJUeXBlcyxcbiAgZ2V0UmVxdWVzdE9iamVjdCxcbiAgcmVzb2x2ZUVycm9yLFxufSBmcm9tICcuLi90cmlnZ2Vycyc7XG5pbXBvcnQgeyBwcm9taXNlRW5zdXJlSWRlbXBvdGVuY3kgfSBmcm9tICcuLi9taWRkbGV3YXJlcyc7XG5pbXBvcnQgUmVzdFdyaXRlIGZyb20gJy4uL1Jlc3RXcml0ZSc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi9sb2dnZXInO1xuXG5leHBvcnQgY2xhc3MgVXNlcnNSb3V0ZXIgZXh0ZW5kcyBDbGFzc2VzUm91dGVyIHtcbiAgY2xhc3NOYW1lKCkge1xuICAgIHJldHVybiAnX1VzZXInO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYWxsIFwiX1wiIHByZWZpeGVkIHByb3BlcnRpZXMgZnJvbSBhbiBvYmplY3QsIGV4Y2VwdCBcIl9fdHlwZVwiXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogQW4gb2JqZWN0LlxuICAgKi9cbiAgc3RhdGljIHJlbW92ZUhpZGRlblByb3BlcnRpZXMob2JqKSB7XG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgLy8gUmVnZXhwIGNvbWVzIGZyb20gUGFyc2UuT2JqZWN0LnByb3RvdHlwZS52YWxpZGF0ZVxuICAgICAgICBpZiAoa2V5ICE9PSAnX190eXBlJyAmJiAhL15bQS1aYS16XVswLTlBLVphLXpfXSokLy50ZXN0KGtleSkpIHtcbiAgICAgICAgICBkZWxldGUgb2JqW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgcmV0cmlldmluZyBhIHVzZXIgZGlyZWN0bHkgZnJvbSB0aGUgZGF0YWJhc2UsIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZVxuICAgKiBwYXNzd29yZCBmcm9tIHRoZSBvYmplY3QgKGZvciBzZWN1cml0eSksIGFuZCBmaXggYW4gaXNzdWUgc29tZSBTREtzIGhhdmVcbiAgICogd2l0aCBudWxsIHZhbHVlc1xuICAgKi9cbiAgX3Nhbml0aXplQXV0aERhdGEodXNlcikge1xuICAgIGRlbGV0ZSB1c2VyLnBhc3N3b3JkO1xuXG4gICAgLy8gU29tZXRpbWVzIHRoZSBhdXRoRGF0YSBzdGlsbCBoYXMgbnVsbCBvbiB0aGF0IGtleXNcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcGFyc2UtY29tbXVuaXR5L3BhcnNlLXNlcnZlci9pc3N1ZXMvOTM1XG4gICAgaWYgKHVzZXIuYXV0aERhdGEpIHtcbiAgICAgIE9iamVjdC5rZXlzKHVzZXIuYXV0aERhdGEpLmZvckVhY2gocHJvdmlkZXIgPT4ge1xuICAgICAgICBpZiAodXNlci5hdXRoRGF0YVtwcm92aWRlcl0gPT09IG51bGwpIHtcbiAgICAgICAgICBkZWxldGUgdXNlci5hdXRoRGF0YVtwcm92aWRlcl07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKE9iamVjdC5rZXlzKHVzZXIuYXV0aERhdGEpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIGRlbGV0ZSB1c2VyLmF1dGhEYXRhO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYSBwYXNzd29yZCByZXF1ZXN0IGluIGxvZ2luIGFuZCB2ZXJpZnlQYXNzd29yZFxuICAgKiBAcGFyYW0ge09iamVjdH0gcmVxIFRoZSByZXF1ZXN0XG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFVzZXIgb2JqZWN0XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfYXV0aGVudGljYXRlVXNlckZyb21SZXF1ZXN0KHJlcSkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAvLyBVc2UgcXVlcnkgcGFyYW1ldGVycyBpbnN0ZWFkIGlmIHByb3ZpZGVkIGluIHVybFxuICAgICAgbGV0IHBheWxvYWQgPSByZXEuYm9keTtcbiAgICAgIGlmIChcbiAgICAgICAgKCFwYXlsb2FkLnVzZXJuYW1lICYmIHJlcS5xdWVyeSAmJiByZXEucXVlcnkudXNlcm5hbWUpIHx8XG4gICAgICAgICghcGF5bG9hZC5lbWFpbCAmJiByZXEucXVlcnkgJiYgcmVxLnF1ZXJ5LmVtYWlsKVxuICAgICAgKSB7XG4gICAgICAgIHBheWxvYWQgPSByZXEucXVlcnk7XG4gICAgICB9XG4gICAgICBjb25zdCB7IHVzZXJuYW1lLCBlbWFpbCwgcGFzc3dvcmQgfSA9IHBheWxvYWQ7XG5cbiAgICAgIC8vIFRPRE86IHVzZSB0aGUgcmlnaHQgZXJyb3IgY29kZXMgLyBkZXNjcmlwdGlvbnMuXG4gICAgICBpZiAoIXVzZXJuYW1lICYmICFlbWFpbCkge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuVVNFUk5BTUVfTUlTU0lORywgJ3VzZXJuYW1lL2VtYWlsIGlzIHJlcXVpcmVkLicpO1xuICAgICAgfVxuICAgICAgaWYgKCFwYXNzd29yZCkge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuUEFTU1dPUkRfTUlTU0lORywgJ3Bhc3N3b3JkIGlzIHJlcXVpcmVkLicpO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgcGFzc3dvcmQgIT09ICdzdHJpbmcnIHx8XG4gICAgICAgIChlbWFpbCAmJiB0eXBlb2YgZW1haWwgIT09ICdzdHJpbmcnKSB8fFxuICAgICAgICAodXNlcm5hbWUgJiYgdHlwZW9mIHVzZXJuYW1lICE9PSAnc3RyaW5nJylcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ0ludmFsaWQgdXNlcm5hbWUvcGFzc3dvcmQuJyk7XG4gICAgICB9XG5cbiAgICAgIGxldCB1c2VyO1xuICAgICAgbGV0IGlzVmFsaWRQYXNzd29yZCA9IGZhbHNlO1xuICAgICAgbGV0IHF1ZXJ5O1xuICAgICAgaWYgKGVtYWlsICYmIHVzZXJuYW1lKSB7XG4gICAgICAgIHF1ZXJ5ID0geyBlbWFpbCwgdXNlcm5hbWUgfTtcbiAgICAgIH0gZWxzZSBpZiAoZW1haWwpIHtcbiAgICAgICAgcXVlcnkgPSB7IGVtYWlsIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBxdWVyeSA9IHsgJG9yOiBbeyB1c2VybmFtZSB9LCB7IGVtYWlsOiB1c2VybmFtZSB9XSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlcS5jb25maWcuZGF0YWJhc2VcbiAgICAgICAgLmZpbmQoJ19Vc2VyJywgcXVlcnksIHt9LCBBdXRoLm1haW50ZW5hbmNlKHJlcS5jb25maWcpKVxuICAgICAgICAudGhlbihyZXN1bHRzID0+IHtcbiAgICAgICAgICBpZiAoIXJlc3VsdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ0ludmFsaWQgdXNlcm5hbWUvcGFzc3dvcmQuJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgLy8gY29ybmVyIGNhc2Ugd2hlcmUgdXNlcjEgaGFzIHVzZXJuYW1lID09IHVzZXIyIGVtYWlsXG4gICAgICAgICAgICByZXEuY29uZmlnLmxvZ2dlckNvbnRyb2xsZXIud2FybihcbiAgICAgICAgICAgICAgXCJUaGVyZSBpcyBhIHVzZXIgd2hpY2ggZW1haWwgaXMgdGhlIHNhbWUgYXMgYW5vdGhlciB1c2VyJ3MgdXNlcm5hbWUsIGxvZ2dpbmcgaW4gYmFzZWQgb24gdXNlcm5hbWVcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHVzZXIgPSByZXN1bHRzLmZpbHRlcih1c2VyID0+IHVzZXIudXNlcm5hbWUgPT09IHVzZXJuYW1lKVswXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXNlciA9IHJlc3VsdHNbMF07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHBhc3N3b3JkQ3J5cHRvLmNvbXBhcmUocGFzc3dvcmQsIHVzZXIucGFzc3dvcmQpO1xuICAgICAgICB9KVxuICAgICAgICAudGhlbihjb3JyZWN0ID0+IHtcbiAgICAgICAgICBpc1ZhbGlkUGFzc3dvcmQgPSBjb3JyZWN0O1xuICAgICAgICAgIGNvbnN0IGFjY291bnRMb2Nrb3V0UG9saWN5ID0gbmV3IEFjY291bnRMb2Nrb3V0KHVzZXIsIHJlcS5jb25maWcpO1xuICAgICAgICAgIHJldHVybiBhY2NvdW50TG9ja291dFBvbGljeS5oYW5kbGVMb2dpbkF0dGVtcHQoaXNWYWxpZFBhc3N3b3JkKTtcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIGlmICghaXNWYWxpZFBhc3N3b3JkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ0ludmFsaWQgdXNlcm5hbWUvcGFzc3dvcmQuJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEVuc3VyZSB0aGUgdXNlciBpc24ndCBsb2NrZWQgb3V0XG4gICAgICAgICAgLy8gQSBsb2NrZWQgb3V0IHVzZXIgd29uJ3QgYmUgYWJsZSB0byBsb2dpblxuICAgICAgICAgIC8vIFRvIGxvY2sgYSB1c2VyIG91dCwganVzdCBzZXQgdGhlIEFDTCB0byBgbWFzdGVyS2V5YCBvbmx5ICAoe30pLlxuICAgICAgICAgIC8vIEVtcHR5IEFDTCBpcyBPS1xuICAgICAgICAgIGlmICghcmVxLmF1dGguaXNNYXN0ZXIgJiYgdXNlci5BQ0wgJiYgT2JqZWN0LmtleXModXNlci5BQ0wpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ0ludmFsaWQgdXNlcm5hbWUvcGFzc3dvcmQuJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHJlcS5jb25maWcudmVyaWZ5VXNlckVtYWlscyAmJlxuICAgICAgICAgICAgcmVxLmNvbmZpZy5wcmV2ZW50TG9naW5XaXRoVW52ZXJpZmllZEVtYWlsICYmXG4gICAgICAgICAgICAhdXNlci5lbWFpbFZlcmlmaWVkXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuRU1BSUxfTk9UX0ZPVU5ELCAnVXNlciBlbWFpbCBpcyBub3QgdmVyaWZpZWQuJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fc2FuaXRpemVBdXRoRGF0YSh1c2VyKTtcblxuICAgICAgICAgIHJldHVybiByZXNvbHZlKHVzZXIpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZU1lKHJlcSkge1xuICAgIGlmICghcmVxLmluZm8gfHwgIXJlcS5pbmZvLnNlc3Npb25Ub2tlbikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfU0VTU0lPTl9UT0tFTiwgJ0ludmFsaWQgc2Vzc2lvbiB0b2tlbicpO1xuICAgIH1cbiAgICBjb25zdCBzZXNzaW9uVG9rZW4gPSByZXEuaW5mby5zZXNzaW9uVG9rZW47XG4gICAgcmV0dXJuIHJlc3RcbiAgICAgIC5maW5kKFxuICAgICAgICByZXEuY29uZmlnLFxuICAgICAgICBBdXRoLm1hc3RlcihyZXEuY29uZmlnKSxcbiAgICAgICAgJ19TZXNzaW9uJyxcbiAgICAgICAgeyBzZXNzaW9uVG9rZW4gfSxcbiAgICAgICAgeyBpbmNsdWRlOiAndXNlcicgfSxcbiAgICAgICAgcmVxLmluZm8uY2xpZW50U0RLLFxuICAgICAgICByZXEuaW5mby5jb250ZXh0XG4gICAgICApXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgIGlmICghcmVzcG9uc2UucmVzdWx0cyB8fCByZXNwb25zZS5yZXN1bHRzLmxlbmd0aCA9PSAwIHx8ICFyZXNwb25zZS5yZXN1bHRzWzBdLnVzZXIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9TRVNTSU9OX1RPS0VOLCAnSW52YWxpZCBzZXNzaW9uIHRva2VuJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdXNlciA9IHJlc3BvbnNlLnJlc3VsdHNbMF0udXNlcjtcbiAgICAgICAgICAvLyBTZW5kIHRva2VuIGJhY2sgb24gdGhlIGxvZ2luLCBiZWNhdXNlIFNES3MgZXhwZWN0IHRoYXQuXG4gICAgICAgICAgdXNlci5zZXNzaW9uVG9rZW4gPSBzZXNzaW9uVG9rZW47XG5cbiAgICAgICAgICAvLyBSZW1vdmUgaGlkZGVuIHByb3BlcnRpZXMuXG4gICAgICAgICAgVXNlcnNSb3V0ZXIucmVtb3ZlSGlkZGVuUHJvcGVydGllcyh1c2VyKTtcbiAgICAgICAgICByZXR1cm4geyByZXNwb25zZTogdXNlciB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZUxvZ0luKHJlcSkge1xuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLl9hdXRoZW50aWNhdGVVc2VyRnJvbVJlcXVlc3QocmVxKTtcbiAgICBjb25zdCBhdXRoRGF0YSA9IHJlcS5ib2R5ICYmIHJlcS5ib2R5LmF1dGhEYXRhO1xuICAgIC8vIENoZWNrIGlmIHVzZXIgaGFzIHByb3ZpZGVkIHRoZWlyIHJlcXVpcmVkIGF1dGggcHJvdmlkZXJzXG4gICAgQXV0aC5jaGVja0lmVXNlckhhc1Byb3ZpZGVkQ29uZmlndXJlZFByb3ZpZGVyc0ZvckxvZ2luKFxuICAgICAgcmVxLFxuICAgICAgYXV0aERhdGEsXG4gICAgICB1c2VyLmF1dGhEYXRhLFxuICAgICAgcmVxLmNvbmZpZ1xuICAgICk7XG5cbiAgICBsZXQgYXV0aERhdGFSZXNwb25zZTtcbiAgICBsZXQgdmFsaWRhdGVkQXV0aERhdGE7XG4gICAgaWYgKGF1dGhEYXRhKSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBBdXRoLmhhbmRsZUF1dGhEYXRhVmFsaWRhdGlvbihcbiAgICAgICAgYXV0aERhdGEsXG4gICAgICAgIG5ldyBSZXN0V3JpdGUoXG4gICAgICAgICAgcmVxLmNvbmZpZyxcbiAgICAgICAgICByZXEuYXV0aCxcbiAgICAgICAgICAnX1VzZXInLFxuICAgICAgICAgIHsgb2JqZWN0SWQ6IHVzZXIub2JqZWN0SWQgfSxcbiAgICAgICAgICByZXEuYm9keSxcbiAgICAgICAgICB1c2VyLFxuICAgICAgICAgIHJlcS5pbmZvLmNsaWVudFNESyxcbiAgICAgICAgICByZXEuaW5mby5jb250ZXh0XG4gICAgICAgICksXG4gICAgICAgIHVzZXJcbiAgICAgICk7XG4gICAgICBhdXRoRGF0YVJlc3BvbnNlID0gcmVzLmF1dGhEYXRhUmVzcG9uc2U7XG4gICAgICB2YWxpZGF0ZWRBdXRoRGF0YSA9IHJlcy5hdXRoRGF0YTtcbiAgICB9XG5cbiAgICAvLyBoYW5kbGUgcGFzc3dvcmQgZXhwaXJ5IHBvbGljeVxuICAgIGlmIChyZXEuY29uZmlnLnBhc3N3b3JkUG9saWN5ICYmIHJlcS5jb25maWcucGFzc3dvcmRQb2xpY3kubWF4UGFzc3dvcmRBZ2UpIHtcbiAgICAgIGxldCBjaGFuZ2VkQXQgPSB1c2VyLl9wYXNzd29yZF9jaGFuZ2VkX2F0O1xuXG4gICAgICBpZiAoIWNoYW5nZWRBdCkge1xuICAgICAgICAvLyBwYXNzd29yZCB3YXMgY3JlYXRlZCBiZWZvcmUgZXhwaXJ5IHBvbGljeSB3YXMgZW5hYmxlZC5cbiAgICAgICAgLy8gc2ltcGx5IHVwZGF0ZSBfVXNlciBvYmplY3Qgc28gdGhhdCBpdCB3aWxsIHN0YXJ0IGVuZm9yY2luZyBmcm9tIG5vd1xuICAgICAgICBjaGFuZ2VkQXQgPSBuZXcgRGF0ZSgpO1xuICAgICAgICByZXEuY29uZmlnLmRhdGFiYXNlLnVwZGF0ZShcbiAgICAgICAgICAnX1VzZXInLFxuICAgICAgICAgIHsgdXNlcm5hbWU6IHVzZXIudXNlcm5hbWUgfSxcbiAgICAgICAgICB7IF9wYXNzd29yZF9jaGFuZ2VkX2F0OiBQYXJzZS5fZW5jb2RlKGNoYW5nZWRBdCkgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY2hlY2sgd2hldGhlciB0aGUgcGFzc3dvcmQgaGFzIGV4cGlyZWRcbiAgICAgICAgaWYgKGNoYW5nZWRBdC5fX3R5cGUgPT0gJ0RhdGUnKSB7XG4gICAgICAgICAgY2hhbmdlZEF0ID0gbmV3IERhdGUoY2hhbmdlZEF0Lmlzbyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBleHBpcnkgdGltZS5cbiAgICAgICAgY29uc3QgZXhwaXJlc0F0ID0gbmV3IERhdGUoXG4gICAgICAgICAgY2hhbmdlZEF0LmdldFRpbWUoKSArIDg2NDAwMDAwICogcmVxLmNvbmZpZy5wYXNzd29yZFBvbGljeS5tYXhQYXNzd29yZEFnZVxuICAgICAgICApO1xuICAgICAgICBpZiAoZXhwaXJlc0F0IDwgbmV3IERhdGUoKSlcbiAgICAgICAgICAvLyBmYWlsIG9mIGN1cnJlbnQgdGltZSBpcyBwYXN0IHBhc3N3b3JkIGV4cGlyeSB0aW1lXG4gICAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgICAgUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCxcbiAgICAgICAgICAgICdZb3VyIHBhc3N3b3JkIGhhcyBleHBpcmVkLiBQbGVhc2UgcmVzZXQgeW91ciBwYXNzd29yZC4nXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgaGlkZGVuIHByb3BlcnRpZXMuXG4gICAgVXNlcnNSb3V0ZXIucmVtb3ZlSGlkZGVuUHJvcGVydGllcyh1c2VyKTtcblxuICAgIHJlcS5jb25maWcuZmlsZXNDb250cm9sbGVyLmV4cGFuZEZpbGVzSW5PYmplY3QocmVxLmNvbmZpZywgdXNlcik7XG5cbiAgICAvLyBCZWZvcmUgbG9naW4gdHJpZ2dlcjsgdGhyb3dzIGlmIGZhaWx1cmVcbiAgICBhd2FpdCBtYXliZVJ1blRyaWdnZXIoXG4gICAgICBUcmlnZ2VyVHlwZXMuYmVmb3JlTG9naW4sXG4gICAgICByZXEuYXV0aCxcbiAgICAgIFBhcnNlLlVzZXIuZnJvbUpTT04oT2JqZWN0LmFzc2lnbih7IGNsYXNzTmFtZTogJ19Vc2VyJyB9LCB1c2VyKSksXG4gICAgICBudWxsLFxuICAgICAgcmVxLmNvbmZpZ1xuICAgICk7XG5cbiAgICAvLyBJZiB3ZSBoYXZlIHNvbWUgbmV3IHZhbGlkYXRlZCBhdXRoRGF0YSB1cGRhdGUgZGlyZWN0bHlcbiAgICBpZiAodmFsaWRhdGVkQXV0aERhdGEgJiYgT2JqZWN0LmtleXModmFsaWRhdGVkQXV0aERhdGEpLmxlbmd0aCkge1xuICAgICAgYXdhaXQgcmVxLmNvbmZpZy5kYXRhYmFzZS51cGRhdGUoXG4gICAgICAgICdfVXNlcicsXG4gICAgICAgIHsgb2JqZWN0SWQ6IHVzZXIub2JqZWN0SWQgfSxcbiAgICAgICAgeyBhdXRoRGF0YTogdmFsaWRhdGVkQXV0aERhdGEgfSxcbiAgICAgICAge31cbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBzZXNzaW9uRGF0YSwgY3JlYXRlU2Vzc2lvbiB9ID0gUmVzdFdyaXRlLmNyZWF0ZVNlc3Npb24ocmVxLmNvbmZpZywge1xuICAgICAgdXNlcklkOiB1c2VyLm9iamVjdElkLFxuICAgICAgY3JlYXRlZFdpdGg6IHtcbiAgICAgICAgYWN0aW9uOiAnbG9naW4nLFxuICAgICAgICBhdXRoUHJvdmlkZXI6ICdwYXNzd29yZCcsXG4gICAgICB9LFxuICAgICAgaW5zdGFsbGF0aW9uSWQ6IHJlcS5pbmZvLmluc3RhbGxhdGlvbklkLFxuICAgIH0pO1xuXG4gICAgdXNlci5zZXNzaW9uVG9rZW4gPSBzZXNzaW9uRGF0YS5zZXNzaW9uVG9rZW47XG5cbiAgICBhd2FpdCBjcmVhdGVTZXNzaW9uKCk7XG5cbiAgICBjb25zdCBhZnRlckxvZ2luVXNlciA9IFBhcnNlLlVzZXIuZnJvbUpTT04oT2JqZWN0LmFzc2lnbih7IGNsYXNzTmFtZTogJ19Vc2VyJyB9LCB1c2VyKSk7XG4gICAgYXdhaXQgbWF5YmVSdW5UcmlnZ2VyKFxuICAgICAgVHJpZ2dlclR5cGVzLmFmdGVyTG9naW4sXG4gICAgICB7IC4uLnJlcS5hdXRoLCB1c2VyOiBhZnRlckxvZ2luVXNlciB9LFxuICAgICAgYWZ0ZXJMb2dpblVzZXIsXG4gICAgICBudWxsLFxuICAgICAgcmVxLmNvbmZpZ1xuICAgICk7XG5cbiAgICBpZiAoYXV0aERhdGFSZXNwb25zZSkge1xuICAgICAgdXNlci5hdXRoRGF0YVJlc3BvbnNlID0gYXV0aERhdGFSZXNwb25zZTtcbiAgICB9XG4gICAgYXdhaXQgcmVxLmNvbmZpZy5hdXRoRGF0YU1hbmFnZXIucnVuQWZ0ZXJGaW5kKHJlcSwgdXNlci5hdXRoRGF0YSk7XG5cbiAgICByZXR1cm4geyByZXNwb25zZTogdXNlciB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgYWxsb3dzIG1hc3Rlci1rZXkgY2xpZW50cyB0byBjcmVhdGUgdXNlciBzZXNzaW9ucyB3aXRob3V0IGFjY2VzcyB0b1xuICAgKiB1c2VyIGNyZWRlbnRpYWxzLiBUaGlzIGVuYWJsZXMgc3lzdGVtcyB0aGF0IGNhbiBhdXRoZW50aWNhdGUgYWNjZXNzIGFub3RoZXJcbiAgICogd2F5IChBUEkga2V5LCBhcHAgYWRtaW5pc3RyYXRvcnMpIHRvIGFjdCBvbiBhIHVzZXIncyBiZWhhbGYuXG4gICAqXG4gICAqIFdlIGNyZWF0ZSBhIG5ldyBzZXNzaW9uIHJhdGhlciB0aGFuIGxvb2tpbmcgZm9yIGFuIGV4aXN0aW5nIHNlc3Npb247IHdlXG4gICAqIHdhbnQgdGhpcyB0byB3b3JrIGluIHNpdHVhdGlvbnMgd2hlcmUgdGhlIHVzZXIgaXMgbG9nZ2VkIG91dCBvbiBhbGxcbiAgICogZGV2aWNlcywgc2luY2UgdGhpcyBjYW4gYmUgdXNlZCBieSBhdXRvbWF0ZWQgc3lzdGVtcyBhY3Rpbmcgb24gdGhlIHVzZXInc1xuICAgKiBiZWhhbGYuXG4gICAqXG4gICAqIEZvciB0aGUgbW9tZW50LCB3ZSdyZSBvbWl0dGluZyBldmVudCBob29rcyBhbmQgbG9ja291dCBjaGVja3MsIHNpbmNlXG4gICAqIGltbWVkaWF0ZSB1c2UgY2FzZXMgc3VnZ2VzdCAvbG9naW5BcyBjb3VsZCBiZSB1c2VkIGZvciBzZW1hbnRpY2FsbHlcbiAgICogZGlmZmVyZW50IHJlYXNvbnMgZnJvbSAvbG9naW5cbiAgICovXG4gIGFzeW5jIGhhbmRsZUxvZ0luQXMocmVxKSB7XG4gICAgaWYgKCFyZXEuYXV0aC5pc01hc3Rlcikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9QRVJBVElPTl9GT1JCSURERU4sICdtYXN0ZXIga2V5IGlzIHJlcXVpcmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcklkID0gcmVxLmJvZHkudXNlcklkIHx8IHJlcS5xdWVyeS51c2VySWQ7XG4gICAgaWYgKCF1c2VySWQpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgUGFyc2UuRXJyb3IuSU5WQUxJRF9WQUxVRSxcbiAgICAgICAgJ3VzZXJJZCBtdXN0IG5vdCBiZSBlbXB0eSwgbnVsbCwgb3IgdW5kZWZpbmVkJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBxdWVyeVJlc3VsdHMgPSBhd2FpdCByZXEuY29uZmlnLmRhdGFiYXNlLmZpbmQoJ19Vc2VyJywgeyBvYmplY3RJZDogdXNlcklkIH0pO1xuICAgIGNvbnN0IHVzZXIgPSBxdWVyeVJlc3VsdHNbMF07XG4gICAgaWYgKCF1c2VyKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ3VzZXIgbm90IGZvdW5kJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc2FuaXRpemVBdXRoRGF0YSh1c2VyKTtcblxuICAgIGNvbnN0IHsgc2Vzc2lvbkRhdGEsIGNyZWF0ZVNlc3Npb24gfSA9IFJlc3RXcml0ZS5jcmVhdGVTZXNzaW9uKHJlcS5jb25maWcsIHtcbiAgICAgIHVzZXJJZCxcbiAgICAgIGNyZWF0ZWRXaXRoOiB7XG4gICAgICAgIGFjdGlvbjogJ2xvZ2luJyxcbiAgICAgICAgYXV0aFByb3ZpZGVyOiAnbWFzdGVya2V5JyxcbiAgICAgIH0sXG4gICAgICBpbnN0YWxsYXRpb25JZDogcmVxLmluZm8uaW5zdGFsbGF0aW9uSWQsXG4gICAgfSk7XG5cbiAgICB1c2VyLnNlc3Npb25Ub2tlbiA9IHNlc3Npb25EYXRhLnNlc3Npb25Ub2tlbjtcblxuICAgIGF3YWl0IGNyZWF0ZVNlc3Npb24oKTtcblxuICAgIHJldHVybiB7IHJlc3BvbnNlOiB1c2VyIH07XG4gIH1cblxuICBoYW5kbGVWZXJpZnlQYXNzd29yZChyZXEpIHtcbiAgICByZXR1cm4gdGhpcy5fYXV0aGVudGljYXRlVXNlckZyb21SZXF1ZXN0KHJlcSlcbiAgICAgIC50aGVuKHVzZXIgPT4ge1xuICAgICAgICAvLyBSZW1vdmUgaGlkZGVuIHByb3BlcnRpZXMuXG4gICAgICAgIFVzZXJzUm91dGVyLnJlbW92ZUhpZGRlblByb3BlcnRpZXModXNlcik7XG5cbiAgICAgICAgcmV0dXJuIHsgcmVzcG9uc2U6IHVzZXIgfTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgaGFuZGxlTG9nT3V0KHJlcSkge1xuICAgIGNvbnN0IHN1Y2Nlc3MgPSB7IHJlc3BvbnNlOiB7fSB9O1xuICAgIGlmIChyZXEuaW5mbyAmJiByZXEuaW5mby5zZXNzaW9uVG9rZW4pIHtcbiAgICAgIGNvbnN0IHJlY29yZHMgPSBhd2FpdCByZXN0LmZpbmQoXG4gICAgICAgIHJlcS5jb25maWcsXG4gICAgICAgIEF1dGgubWFzdGVyKHJlcS5jb25maWcpLFxuICAgICAgICAnX1Nlc3Npb24nLFxuICAgICAgICB7IHNlc3Npb25Ub2tlbjogcmVxLmluZm8uc2Vzc2lvblRva2VuIH0sXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgcmVxLmluZm8uY2xpZW50U0RLLFxuICAgICAgICByZXEuaW5mby5jb250ZXh0XG4gICAgICApO1xuICAgICAgaWYgKHJlY29yZHMucmVzdWx0cyAmJiByZWNvcmRzLnJlc3VsdHMubGVuZ3RoKSB7XG4gICAgICAgIGF3YWl0IHJlc3QuZGVsKFxuICAgICAgICAgIHJlcS5jb25maWcsXG4gICAgICAgICAgQXV0aC5tYXN0ZXIocmVxLmNvbmZpZyksXG4gICAgICAgICAgJ19TZXNzaW9uJyxcbiAgICAgICAgICByZWNvcmRzLnJlc3VsdHNbMF0ub2JqZWN0SWQsXG4gICAgICAgICAgcmVxLmluZm8uY29udGV4dFxuICAgICAgICApO1xuICAgICAgICBhd2FpdCBtYXliZVJ1blRyaWdnZXIoXG4gICAgICAgICAgVHJpZ2dlclR5cGVzLmFmdGVyTG9nb3V0LFxuICAgICAgICAgIHJlcS5hdXRoLFxuICAgICAgICAgIFBhcnNlLlNlc3Npb24uZnJvbUpTT04oT2JqZWN0LmFzc2lnbih7IGNsYXNzTmFtZTogJ19TZXNzaW9uJyB9LCByZWNvcmRzLnJlc3VsdHNbMF0pKSxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIHJlcS5jb25maWdcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH1cblxuICBfdGhyb3dPbkJhZEVtYWlsQ29uZmlnKHJlcSkge1xuICAgIHRyeSB7XG4gICAgICBDb25maWcudmFsaWRhdGVFbWFpbENvbmZpZ3VyYXRpb24oe1xuICAgICAgICBlbWFpbEFkYXB0ZXI6IHJlcS5jb25maWcudXNlckNvbnRyb2xsZXIuYWRhcHRlcixcbiAgICAgICAgYXBwTmFtZTogcmVxLmNvbmZpZy5hcHBOYW1lLFxuICAgICAgICBwdWJsaWNTZXJ2ZXJVUkw6IHJlcS5jb25maWcucHVibGljU2VydmVyVVJMLFxuICAgICAgICBlbWFpbFZlcmlmeVRva2VuVmFsaWRpdHlEdXJhdGlvbjogcmVxLmNvbmZpZy5lbWFpbFZlcmlmeVRva2VuVmFsaWRpdHlEdXJhdGlvbixcbiAgICAgICAgZW1haWxWZXJpZnlUb2tlblJldXNlSWZWYWxpZDogcmVxLmNvbmZpZy5lbWFpbFZlcmlmeVRva2VuUmV1c2VJZlZhbGlkLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKHR5cGVvZiBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAvLyBNYXliZSB3ZSBuZWVkIGEgQmFkIENvbmZpZ3VyYXRpb24gZXJyb3IsIGJ1dCB0aGUgU0RLcyB3b24ndCB1bmRlcnN0YW5kIGl0LiBGb3Igbm93LCBJbnRlcm5hbCBTZXJ2ZXIgRXJyb3IuXG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgICBQYXJzZS5FcnJvci5JTlRFUk5BTF9TRVJWRVJfRVJST1IsXG4gICAgICAgICAgJ0FuIGFwcE5hbWUsIHB1YmxpY1NlcnZlclVSTCwgYW5kIGVtYWlsQWRhcHRlciBhcmUgcmVxdWlyZWQgZm9yIHBhc3N3b3JkIHJlc2V0IGFuZCBlbWFpbCB2ZXJpZmljYXRpb24gZnVuY3Rpb25hbGl0eS4nXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGhhbmRsZVJlc2V0UmVxdWVzdChyZXEpIHtcbiAgICB0aGlzLl90aHJvd09uQmFkRW1haWxDb25maWcocmVxKTtcblxuICAgIGNvbnN0IHsgZW1haWwgfSA9IHJlcS5ib2R5O1xuICAgIGlmICghZW1haWwpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5FTUFJTF9NSVNTSU5HLCAneW91IG11c3QgcHJvdmlkZSBhbiBlbWFpbCcpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGVtYWlsICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5JTlZBTElEX0VNQUlMX0FERFJFU1MsXG4gICAgICAgICd5b3UgbXVzdCBwcm92aWRlIGEgdmFsaWQgZW1haWwgc3RyaW5nJ1xuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgdXNlckNvbnRyb2xsZXIgPSByZXEuY29uZmlnLnVzZXJDb250cm9sbGVyO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB1c2VyQ29udHJvbGxlci5zZW5kUGFzc3dvcmRSZXNldEVtYWlsKGVtYWlsKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlc3BvbnNlOiB7fSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoZXJyLmNvZGUgPT09IFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQpIHtcbiAgICAgICAgaWYgKHJlcS5jb25maWcucGFzc3dvcmRQb2xpY3k/LnJlc2V0UGFzc3dvcmRTdWNjZXNzT25JbnZhbGlkRW1haWwgPz8gdHJ1ZSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXNwb25zZToge30sXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlcnIubWVzc2FnZSA9IGBBIHVzZXIgd2l0aCB0aGF0IGVtYWlsIGRvZXMgbm90IGV4aXN0LmA7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaGFuZGxlVmVyaWZpY2F0aW9uRW1haWxSZXF1ZXN0KHJlcSkge1xuICAgIHRoaXMuX3Rocm93T25CYWRFbWFpbENvbmZpZyhyZXEpO1xuXG4gICAgY29uc3QgeyBlbWFpbCB9ID0gcmVxLmJvZHk7XG4gICAgaWYgKCFlbWFpbCkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLkVNQUlMX01JU1NJTkcsICd5b3UgbXVzdCBwcm92aWRlIGFuIGVtYWlsJyk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZW1haWwgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgIFBhcnNlLkVycm9yLklOVkFMSURfRU1BSUxfQUREUkVTUyxcbiAgICAgICAgJ3lvdSBtdXN0IHByb3ZpZGUgYSB2YWxpZCBlbWFpbCBzdHJpbmcnXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCByZXEuY29uZmlnLmRhdGFiYXNlLmZpbmQoJ19Vc2VyJywgeyBlbWFpbDogZW1haWwgfSk7XG4gICAgaWYgKCFyZXN1bHRzLmxlbmd0aCB8fCByZXN1bHRzLmxlbmd0aCA8IDEpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5FTUFJTF9OT1RfRk9VTkQsIGBObyB1c2VyIGZvdW5kIHdpdGggZW1haWwgJHtlbWFpbH1gKTtcbiAgICB9XG4gICAgY29uc3QgdXNlciA9IHJlc3VsdHNbMF07XG5cbiAgICAvLyByZW1vdmUgcGFzc3dvcmQgZmllbGQsIG1lc3NlcyB3aXRoIHNhdmluZyBvbiBwb3N0Z3Jlc1xuICAgIGRlbGV0ZSB1c2VyLnBhc3N3b3JkO1xuXG4gICAgaWYgKHVzZXIuZW1haWxWZXJpZmllZCkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9USEVSX0NBVVNFLCBgRW1haWwgJHtlbWFpbH0gaXMgYWxyZWFkeSB2ZXJpZmllZC5gKTtcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyQ29udHJvbGxlciA9IHJlcS5jb25maWcudXNlckNvbnRyb2xsZXI7XG4gICAgY29uc3Qgc2VuZCA9IGF3YWl0IHVzZXJDb250cm9sbGVyLnJlZ2VuZXJhdGVFbWFpbFZlcmlmeVRva2VuKHVzZXIsIHJlcS5hdXRoLmlzTWFzdGVyKTtcbiAgICBpZiAoc2VuZCkge1xuICAgICAgdXNlckNvbnRyb2xsZXIuc2VuZFZlcmlmaWNhdGlvbkVtYWlsKHVzZXIsIHJlcSk7XG4gICAgfVxuICAgIHJldHVybiB7IHJlc3BvbnNlOiB7fSB9O1xuICB9XG5cbiAgYXN5bmMgaGFuZGxlQ2hhbGxlbmdlKHJlcSkge1xuICAgIGNvbnN0IHsgdXNlcm5hbWUsIGVtYWlsLCBwYXNzd29yZCwgYXV0aERhdGEsIGNoYWxsZW5nZURhdGEgfSA9IHJlcS5ib2R5O1xuXG4gICAgLy8gaWYgdXNlcm5hbWUgb3IgZW1haWwgcHJvdmlkZWQgd2l0aCBwYXNzd29yZCB0cnkgdG8gYXV0aGVudGljYXRlIHRoZSB1c2VyIGJ5IHVzZXJuYW1lXG4gICAgbGV0IHVzZXI7XG4gICAgaWYgKHVzZXJuYW1lIHx8IGVtYWlsKSB7XG4gICAgICBpZiAoIXBhc3N3b3JkKSB7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgICBQYXJzZS5FcnJvci5PVEhFUl9DQVVTRSxcbiAgICAgICAgICAnWW91IHByb3ZpZGVkIHVzZXJuYW1lIG9yIGVtYWlsLCB5b3UgbmVlZCB0byBhbHNvIHByb3ZpZGUgcGFzc3dvcmQuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdXNlciA9IGF3YWl0IHRoaXMuX2F1dGhlbnRpY2F0ZVVzZXJGcm9tUmVxdWVzdChyZXEpO1xuICAgIH1cblxuICAgIGlmICghY2hhbGxlbmdlRGF0YSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9USEVSX0NBVVNFLCAnTm90aGluZyB0byBjaGFsbGVuZ2UuJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjaGFsbGVuZ2VEYXRhICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9USEVSX0NBVVNFLCAnY2hhbGxlbmdlRGF0YSBzaG91bGQgYmUgYW4gb2JqZWN0LicpO1xuICAgIH1cblxuICAgIGxldCByZXF1ZXN0O1xuICAgIGxldCBwYXJzZVVzZXI7XG5cbiAgICAvLyBUcnkgdG8gZmluZCB1c2VyIGJ5IGF1dGhEYXRhXG4gICAgaWYgKGF1dGhEYXRhKSB7XG4gICAgICBpZiAodHlwZW9mIGF1dGhEYXRhICE9PSAnb2JqZWN0Jykge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT1RIRVJfQ0FVU0UsICdhdXRoRGF0YSBzaG91bGQgYmUgYW4gb2JqZWN0LicpO1xuICAgICAgfVxuICAgICAgaWYgKHVzZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgIFBhcnNlLkVycm9yLk9USEVSX0NBVVNFLFxuICAgICAgICAgICdZb3UgY2Fubm90IHByb3ZpZGUgdXNlcm5hbWUvZW1haWwgYW5kIGF1dGhEYXRhLCBvbmx5IHVzZSBvbmUgaWRlbnRpZmljYXRpb24gbWV0aG9kLidcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKE9iamVjdC5rZXlzKGF1dGhEYXRhKS5maWx0ZXIoa2V5ID0+IGF1dGhEYXRhW2tleV0uaWQpLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgIFBhcnNlLkVycm9yLk9USEVSX0NBVVNFLFxuICAgICAgICAgICdZb3UgY2Fubm90IHByb3ZpZGUgbW9yZSB0aGFuIG9uZSBhdXRoRGF0YSBwcm92aWRlciB3aXRoIGFuIGlkLidcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IEF1dGguZmluZFVzZXJzV2l0aEF1dGhEYXRhKHJlcS5jb25maWcsIGF1dGhEYXRhKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFyZXN1bHRzWzBdIHx8IHJlc3VsdHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnVXNlciBub3QgZm91bmQuJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRmluZCB0aGUgcHJvdmlkZXIgdXNlZCB0byBmaW5kIHRoZSB1c2VyXG4gICAgICAgIGNvbnN0IHByb3ZpZGVyID0gT2JqZWN0LmtleXMoYXV0aERhdGEpLmZpbmQoa2V5ID0+IGF1dGhEYXRhW2tleV0uaWQpO1xuXG4gICAgICAgIHBhcnNlVXNlciA9IFBhcnNlLlVzZXIuZnJvbUpTT04oeyBjbGFzc05hbWU6ICdfVXNlcicsIC4uLnJlc3VsdHNbMF0gfSk7XG4gICAgICAgIHJlcXVlc3QgPSBnZXRSZXF1ZXN0T2JqZWN0KHVuZGVmaW5lZCwgcmVxLmF1dGgsIHBhcnNlVXNlciwgcGFyc2VVc2VyLCByZXEuY29uZmlnKTtcbiAgICAgICAgcmVxdWVzdC5pc0NoYWxsZW5nZSA9IHRydWU7XG4gICAgICAgIC8vIFZhbGlkYXRlIGF1dGhEYXRhIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHVzZXIgdG8gYXZvaWQgYnJ1dGUtZm9yY2UgYXR0YWNrIG9uIGBpZGBcbiAgICAgICAgY29uc3QgeyB2YWxpZGF0b3IgfSA9IHJlcS5jb25maWcuYXV0aERhdGFNYW5hZ2VyLmdldFZhbGlkYXRvckZvclByb3ZpZGVyKHByb3ZpZGVyKTtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9yUmVzcG9uc2UgPSBhd2FpdCB2YWxpZGF0b3IoYXV0aERhdGFbcHJvdmlkZXJdLCByZXEsIHBhcnNlVXNlciwgcmVxdWVzdCk7XG4gICAgICAgIGlmICh2YWxpZGF0b3JSZXNwb25zZSAmJiB2YWxpZGF0b3JSZXNwb25zZS52YWxpZGF0b3IpIHtcbiAgICAgICAgICBhd2FpdCB2YWxpZGF0b3JSZXNwb25zZS52YWxpZGF0b3IoKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBSZXdyaXRlIHRoZSBlcnJvciB0byBhdm9pZCBndWVzcyBpZCBhdHRhY2tcbiAgICAgICAgbG9nZ2VyLmVycm9yKGUpO1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ1VzZXIgbm90IGZvdW5kLicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcGFyc2VVc2VyKSB7XG4gICAgICBwYXJzZVVzZXIgPSB1c2VyID8gUGFyc2UuVXNlci5mcm9tSlNPTih7IGNsYXNzTmFtZTogJ19Vc2VyJywgLi4udXNlciB9KSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgIHJlcXVlc3QgPSBnZXRSZXF1ZXN0T2JqZWN0KHVuZGVmaW5lZCwgcmVxLmF1dGgsIHBhcnNlVXNlciwgcGFyc2VVc2VyLCByZXEuY29uZmlnKTtcbiAgICAgIHJlcXVlc3QuaXNDaGFsbGVuZ2UgPSB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBhY2MgPSB7fTtcbiAgICAvLyBFeGVjdXRlIGNoYWxsZW5nZSBzdGVwLWJ5LXN0ZXAgd2l0aCBjb25zaXN0ZW50IG9yZGVyIGZvciBiZXR0ZXIgZXJyb3IgZmVlZGJhY2tcbiAgICAvLyBhbmQgdG8gYXZvaWQgdG8gdHJpZ2dlciBvdGhlcnMgY2hhbGxlbmdlcyBpZiBvbmUgb2YgdGhlbSBmYWlsc1xuICAgIGZvciAoY29uc3QgcHJvdmlkZXIgb2YgT2JqZWN0LmtleXMoY2hhbGxlbmdlRGF0YSkuc29ydCgpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBhdXRoQWRhcHRlciA9IHJlcS5jb25maWcuYXV0aERhdGFNYW5hZ2VyLmdldFZhbGlkYXRvckZvclByb3ZpZGVyKHByb3ZpZGVyKTtcbiAgICAgICAgaWYgKCFhdXRoQWRhcHRlcikge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBhZGFwdGVyOiB7IGNoYWxsZW5nZSB9LFxuICAgICAgICB9ID0gYXV0aEFkYXB0ZXI7XG4gICAgICAgIGlmICh0eXBlb2YgY2hhbGxlbmdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgY29uc3QgcHJvdmlkZXJDaGFsbGVuZ2VSZXNwb25zZSA9IGF3YWl0IGNoYWxsZW5nZShcbiAgICAgICAgICAgIGNoYWxsZW5nZURhdGFbcHJvdmlkZXJdLFxuICAgICAgICAgICAgYXV0aERhdGEgJiYgYXV0aERhdGFbcHJvdmlkZXJdLFxuICAgICAgICAgICAgcmVxLmNvbmZpZy5hdXRoW3Byb3ZpZGVyXSxcbiAgICAgICAgICAgIHJlcXVlc3RcbiAgICAgICAgICApO1xuICAgICAgICAgIGFjY1twcm92aWRlcl0gPSBwcm92aWRlckNoYWxsZW5nZVJlc3BvbnNlIHx8IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zdCBlID0gcmVzb2x2ZUVycm9yKGVyciwge1xuICAgICAgICAgIGNvZGU6IFBhcnNlLkVycm9yLlNDUklQVF9GQUlMRUQsXG4gICAgICAgICAgbWVzc2FnZTogJ0NoYWxsZW5nZSBmYWlsZWQuIFVua25vd24gZXJyb3IuJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHVzZXJTdHJpbmcgPSByZXEuYXV0aCAmJiByZXEuYXV0aC51c2VyID8gcmVxLmF1dGgudXNlci5pZCA6IHVuZGVmaW5lZDtcbiAgICAgICAgbG9nZ2VyLmVycm9yKFxuICAgICAgICAgIGBGYWlsZWQgcnVubmluZyBhdXRoIHN0ZXAgY2hhbGxlbmdlIGZvciAke3Byb3ZpZGVyfSBmb3IgdXNlciAke3VzZXJTdHJpbmd9IHdpdGggRXJyb3I6IGAgK1xuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZSksXG4gICAgICAgICAge1xuICAgICAgICAgICAgYXV0aGVudGljYXRpb25TdGVwOiAnY2hhbGxlbmdlJyxcbiAgICAgICAgICAgIGVycm9yOiBlLFxuICAgICAgICAgICAgdXNlcjogdXNlclN0cmluZyxcbiAgICAgICAgICAgIHByb3ZpZGVyLFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgcmVzcG9uc2U6IHsgY2hhbGxlbmdlRGF0YTogYWNjIH0gfTtcbiAgfVxuXG4gIG1vdW50Um91dGVzKCkge1xuICAgIHRoaXMucm91dGUoJ0dFVCcsICcvdXNlcnMnLCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRmluZChyZXEpO1xuICAgIH0pO1xuICAgIHRoaXMucm91dGUoJ1BPU1QnLCAnL3VzZXJzJywgcHJvbWlzZUVuc3VyZUlkZW1wb3RlbmN5LCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlQ3JlYXRlKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnR0VUJywgJy91c2Vycy9tZScsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVNZShyZXEpO1xuICAgIH0pO1xuICAgIHRoaXMucm91dGUoJ0dFVCcsICcvdXNlcnMvOm9iamVjdElkJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUdldChyZXEpO1xuICAgIH0pO1xuICAgIHRoaXMucm91dGUoJ1BVVCcsICcvdXNlcnMvOm9iamVjdElkJywgcHJvbWlzZUVuc3VyZUlkZW1wb3RlbmN5LCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlVXBkYXRlKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnREVMRVRFJywgJy91c2Vycy86b2JqZWN0SWQnLCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRGVsZXRlKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnR0VUJywgJy9sb2dpbicsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVMb2dJbihyZXEpO1xuICAgIH0pO1xuICAgIHRoaXMucm91dGUoJ1BPU1QnLCAnL2xvZ2luJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUxvZ0luKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnUE9TVCcsICcvbG9naW5BcycsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVMb2dJbkFzKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnUE9TVCcsICcvbG9nb3V0JywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUxvZ091dChyZXEpO1xuICAgIH0pO1xuICAgIHRoaXMucm91dGUoJ1BPU1QnLCAnL3JlcXVlc3RQYXNzd29yZFJlc2V0JywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZVJlc2V0UmVxdWVzdChyZXEpO1xuICAgIH0pO1xuICAgIHRoaXMucm91dGUoJ1BPU1QnLCAnL3ZlcmlmaWNhdGlvbkVtYWlsUmVxdWVzdCcsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVWZXJpZmljYXRpb25FbWFpbFJlcXVlc3QocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdHRVQnLCAnL3ZlcmlmeVBhc3N3b3JkJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZVZlcmlmeVBhc3N3b3JkKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnUE9TVCcsICcvY2hhbGxlbmdlJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUNoYWxsZW5nZShyZXEpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFVzZXJzUm91dGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQW1DO0FBQUE7QUFBQTtBQUFBO0FB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
578
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX0NvbmZpZyIsIl9BY2NvdW50TG9ja291dCIsIl9DbGFzc2VzUm91dGVyIiwiX3Jlc3QiLCJfQXV0aCIsIl9wYXNzd29yZCIsIl90cmlnZ2VycyIsIl9taWRkbGV3YXJlcyIsIl9SZXN0V3JpdGUiLCJfbG9nZ2VyIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJvd25LZXlzIiwib2JqZWN0IiwiZW51bWVyYWJsZU9ubHkiLCJrZXlzIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9scyIsImZpbHRlciIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImZvckVhY2giLCJrZXkiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiYXJnIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwidW5kZWZpbmVkIiwicmVzIiwiY2FsbCIsIlR5cGVFcnJvciIsIk51bWJlciIsIlVzZXJzUm91dGVyIiwiQ2xhc3Nlc1JvdXRlciIsImNsYXNzTmFtZSIsInJlbW92ZUhpZGRlblByb3BlcnRpZXMiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInRlc3QiLCJfc2FuaXRpemVBdXRoRGF0YSIsInVzZXIiLCJwYXNzd29yZCIsImF1dGhEYXRhIiwicHJvdmlkZXIiLCJfYXV0aGVudGljYXRlVXNlckZyb21SZXF1ZXN0IiwicmVxIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJwYXlsb2FkIiwiYm9keSIsInVzZXJuYW1lIiwicXVlcnkiLCJlbWFpbCIsIlBhcnNlIiwiRXJyb3IiLCJVU0VSTkFNRV9NSVNTSU5HIiwiUEFTU1dPUkRfTUlTU0lORyIsIk9CSkVDVF9OT1RfRk9VTkQiLCJpc1ZhbGlkUGFzc3dvcmQiLCIkb3IiLCJjb25maWciLCJkYXRhYmFzZSIsImZpbmQiLCJBdXRoIiwibWFpbnRlbmFuY2UiLCJ0aGVuIiwicmVzdWx0cyIsImxvZ2dlckNvbnRyb2xsZXIiLCJ3YXJuIiwicGFzc3dvcmRDcnlwdG8iLCJjb21wYXJlIiwiY29ycmVjdCIsImFjY291bnRMb2Nrb3V0UG9saWN5IiwiQWNjb3VudExvY2tvdXQiLCJoYW5kbGVMb2dpbkF0dGVtcHQiLCJhdXRoIiwiaXNNYXN0ZXIiLCJBQ0wiLCJ2ZXJpZnlVc2VyRW1haWxzIiwicHJldmVudExvZ2luV2l0aFVudmVyaWZpZWRFbWFpbCIsImVtYWlsVmVyaWZpZWQiLCJFTUFJTF9OT1RfRk9VTkQiLCJjYXRjaCIsImVycm9yIiwiaGFuZGxlTWUiLCJpbmZvIiwic2Vzc2lvblRva2VuIiwiSU5WQUxJRF9TRVNTSU9OX1RPS0VOIiwicmVzdCIsIm1hc3RlciIsImluY2x1ZGUiLCJjbGllbnRTREsiLCJjb250ZXh0IiwicmVzcG9uc2UiLCJoYW5kbGVMb2dJbiIsImNoZWNrSWZVc2VySGFzUHJvdmlkZWRDb25maWd1cmVkUHJvdmlkZXJzRm9yTG9naW4iLCJhdXRoRGF0YVJlc3BvbnNlIiwidmFsaWRhdGVkQXV0aERhdGEiLCJoYW5kbGVBdXRoRGF0YVZhbGlkYXRpb24iLCJSZXN0V3JpdGUiLCJvYmplY3RJZCIsInBhc3N3b3JkUG9saWN5IiwibWF4UGFzc3dvcmRBZ2UiLCJjaGFuZ2VkQXQiLCJfcGFzc3dvcmRfY2hhbmdlZF9hdCIsIkRhdGUiLCJ1cGRhdGUiLCJfZW5jb2RlIiwiX190eXBlIiwiaXNvIiwiZXhwaXJlc0F0IiwiZ2V0VGltZSIsImZpbGVzQ29udHJvbGxlciIsImV4cGFuZEZpbGVzSW5PYmplY3QiLCJtYXliZVJ1blRyaWdnZXIiLCJUcmlnZ2VyVHlwZXMiLCJiZWZvcmVMb2dpbiIsIlVzZXIiLCJmcm9tSlNPTiIsImFzc2lnbiIsInNlc3Npb25EYXRhIiwiY3JlYXRlU2Vzc2lvbiIsInVzZXJJZCIsImNyZWF0ZWRXaXRoIiwiYWN0aW9uIiwiYXV0aFByb3ZpZGVyIiwiaW5zdGFsbGF0aW9uSWQiLCJhZnRlckxvZ2luVXNlciIsImFmdGVyTG9naW4iLCJhdXRoRGF0YU1hbmFnZXIiLCJydW5BZnRlckZpbmQiLCJoYW5kbGVMb2dJbkFzIiwiT1BFUkFUSU9OX0ZPUkJJRERFTiIsIklOVkFMSURfVkFMVUUiLCJxdWVyeVJlc3VsdHMiLCJoYW5kbGVWZXJpZnlQYXNzd29yZCIsImhhbmRsZUxvZ091dCIsInN1Y2Nlc3MiLCJyZWNvcmRzIiwiZGVsIiwiYWZ0ZXJMb2dvdXQiLCJTZXNzaW9uIiwiX3Rocm93T25CYWRFbWFpbENvbmZpZyIsIkNvbmZpZyIsInZhbGlkYXRlRW1haWxDb25maWd1cmF0aW9uIiwiZW1haWxBZGFwdGVyIiwidXNlckNvbnRyb2xsZXIiLCJhZGFwdGVyIiwiYXBwTmFtZSIsInB1YmxpY1NlcnZlclVSTCIsImVtYWlsVmVyaWZ5VG9rZW5WYWxpZGl0eUR1cmF0aW9uIiwiZW1haWxWZXJpZnlUb2tlblJldXNlSWZWYWxpZCIsImUiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiLCJoYW5kbGVSZXNldFJlcXVlc3QiLCJFTUFJTF9NSVNTSU5HIiwiSU5WQUxJRF9FTUFJTF9BRERSRVNTIiwic2VuZFBhc3N3b3JkUmVzZXRFbWFpbCIsImVyciIsImNvZGUiLCJfcmVxJGNvbmZpZyRwYXNzd29yZFAiLCJyZXNldFBhc3N3b3JkU3VjY2Vzc09uSW52YWxpZEVtYWlsIiwibWVzc2FnZSIsImhhbmRsZVZlcmlmaWNhdGlvbkVtYWlsUmVxdWVzdCIsIk9USEVSX0NBVVNFIiwic2VuZCIsInJlZ2VuZXJhdGVFbWFpbFZlcmlmeVRva2VuIiwic2VuZFZlcmlmaWNhdGlvbkVtYWlsIiwiaGFuZGxlQ2hhbGxlbmdlIiwiY2hhbGxlbmdlRGF0YSIsInJlcXVlc3QiLCJwYXJzZVVzZXIiLCJpZCIsImZpbmRVc2Vyc1dpdGhBdXRoRGF0YSIsImdldFJlcXVlc3RPYmplY3QiLCJpc0NoYWxsZW5nZSIsInZhbGlkYXRvciIsImdldFZhbGlkYXRvckZvclByb3ZpZGVyIiwidmFsaWRhdG9yUmVzcG9uc2UiLCJsb2dnZXIiLCJhY2MiLCJzb3J0IiwiYXV0aEFkYXB0ZXIiLCJjaGFsbGVuZ2UiLCJwcm92aWRlckNoYWxsZW5nZVJlc3BvbnNlIiwicmVzb2x2ZUVycm9yIiwiU0NSSVBUX0ZBSUxFRCIsInVzZXJTdHJpbmciLCJKU09OIiwic3RyaW5naWZ5IiwiYXV0aGVudGljYXRpb25TdGVwIiwibW91bnRSb3V0ZXMiLCJyb3V0ZSIsImhhbmRsZUZpbmQiLCJwcm9taXNlRW5zdXJlSWRlbXBvdGVuY3kiLCJoYW5kbGVDcmVhdGUiLCJoYW5kbGVHZXQiLCJoYW5kbGVVcGRhdGUiLCJoYW5kbGVEZWxldGUiLCJleHBvcnRzIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9Vc2Vyc1JvdXRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGVzZSBtZXRob2RzIGhhbmRsZSB0aGUgVXNlci1yZWxhdGVkIHJvdXRlcy5cblxuaW1wb3J0IFBhcnNlIGZyb20gJ3BhcnNlL25vZGUnO1xuaW1wb3J0IENvbmZpZyBmcm9tICcuLi9Db25maWcnO1xuaW1wb3J0IEFjY291bnRMb2Nrb3V0IGZyb20gJy4uL0FjY291bnRMb2Nrb3V0JztcbmltcG9ydCBDbGFzc2VzUm91dGVyIGZyb20gJy4vQ2xhc3Nlc1JvdXRlcic7XG5pbXBvcnQgcmVzdCBmcm9tICcuLi9yZXN0JztcbmltcG9ydCBBdXRoIGZyb20gJy4uL0F1dGgnO1xuaW1wb3J0IHBhc3N3b3JkQ3J5cHRvIGZyb20gJy4uL3Bhc3N3b3JkJztcbmltcG9ydCB7XG4gIG1heWJlUnVuVHJpZ2dlcixcbiAgVHlwZXMgYXMgVHJpZ2dlclR5cGVzLFxuICBnZXRSZXF1ZXN0T2JqZWN0LFxuICByZXNvbHZlRXJyb3IsXG59IGZyb20gJy4uL3RyaWdnZXJzJztcbmltcG9ydCB7IHByb21pc2VFbnN1cmVJZGVtcG90ZW5jeSB9IGZyb20gJy4uL21pZGRsZXdhcmVzJztcbmltcG9ydCBSZXN0V3JpdGUgZnJvbSAnLi4vUmVzdFdyaXRlJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL2xvZ2dlcic7XG5cbmV4cG9ydCBjbGFzcyBVc2Vyc1JvdXRlciBleHRlbmRzIENsYXNzZXNSb3V0ZXIge1xuICBjbGFzc05hbWUoKSB7XG4gICAgcmV0dXJuICdfVXNlcic7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhbGwgXCJfXCIgcHJlZml4ZWQgcHJvcGVydGllcyBmcm9tIGFuIG9iamVjdCwgZXhjZXB0IFwiX190eXBlXCJcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iaiBBbiBvYmplY3QuXG4gICAqL1xuICBzdGF0aWMgcmVtb3ZlSGlkZGVuUHJvcGVydGllcyhvYmopIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAvLyBSZWdleHAgY29tZXMgZnJvbSBQYXJzZS5PYmplY3QucHJvdG90eXBlLnZhbGlkYXRlXG4gICAgICAgIGlmIChrZXkgIT09ICdfX3R5cGUnICYmICEvXltBLVphLXpdWzAtOUEtWmEtel9dKiQvLnRlc3Qoa2V5KSkge1xuICAgICAgICAgIGRlbGV0ZSBvYmpba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciByZXRyaWV2aW5nIGEgdXNlciBkaXJlY3RseSBmcm9tIHRoZSBkYXRhYmFzZSwgd2UgbmVlZCB0byByZW1vdmUgdGhlXG4gICAqIHBhc3N3b3JkIGZyb20gdGhlIG9iamVjdCAoZm9yIHNlY3VyaXR5KSwgYW5kIGZpeCBhbiBpc3N1ZSBzb21lIFNES3MgaGF2ZVxuICAgKiB3aXRoIG51bGwgdmFsdWVzXG4gICAqL1xuICBfc2FuaXRpemVBdXRoRGF0YSh1c2VyKSB7XG4gICAgZGVsZXRlIHVzZXIucGFzc3dvcmQ7XG5cbiAgICAvLyBTb21ldGltZXMgdGhlIGF1dGhEYXRhIHN0aWxsIGhhcyBudWxsIG9uIHRoYXQga2V5c1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJzZS1jb21tdW5pdHkvcGFyc2Utc2VydmVyL2lzc3Vlcy85MzVcbiAgICBpZiAodXNlci5hdXRoRGF0YSkge1xuICAgICAgT2JqZWN0LmtleXModXNlci5hdXRoRGF0YSkuZm9yRWFjaChwcm92aWRlciA9PiB7XG4gICAgICAgIGlmICh1c2VyLmF1dGhEYXRhW3Byb3ZpZGVyXSA9PT0gbnVsbCkge1xuICAgICAgICAgIGRlbGV0ZSB1c2VyLmF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoT2JqZWN0LmtleXModXNlci5hdXRoRGF0YSkubGVuZ3RoID09IDApIHtcbiAgICAgICAgZGVsZXRlIHVzZXIuYXV0aERhdGE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhIHBhc3N3b3JkIHJlcXVlc3QgaW4gbG9naW4gYW5kIHZlcmlmeVBhc3N3b3JkXG4gICAqIEBwYXJhbSB7T2JqZWN0fSByZXEgVGhlIHJlcXVlc3RcbiAgICogQHJldHVybnMge09iamVjdH0gVXNlciBvYmplY3RcbiAgICogQHByaXZhdGVcbiAgICovXG4gIF9hdXRoZW50aWNhdGVVc2VyRnJvbVJlcXVlc3QocmVxKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIC8vIFVzZSBxdWVyeSBwYXJhbWV0ZXJzIGluc3RlYWQgaWYgcHJvdmlkZWQgaW4gdXJsXG4gICAgICBsZXQgcGF5bG9hZCA9IHJlcS5ib2R5O1xuICAgICAgaWYgKFxuICAgICAgICAoIXBheWxvYWQudXNlcm5hbWUgJiYgcmVxLnF1ZXJ5ICYmIHJlcS5xdWVyeS51c2VybmFtZSkgfHxcbiAgICAgICAgKCFwYXlsb2FkLmVtYWlsICYmIHJlcS5xdWVyeSAmJiByZXEucXVlcnkuZW1haWwpXG4gICAgICApIHtcbiAgICAgICAgcGF5bG9hZCA9IHJlcS5xdWVyeTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgdXNlcm5hbWUsIGVtYWlsLCBwYXNzd29yZCB9ID0gcGF5bG9hZDtcblxuICAgICAgLy8gVE9ETzogdXNlIHRoZSByaWdodCBlcnJvciBjb2RlcyAvIGRlc2NyaXB0aW9ucy5cbiAgICAgIGlmICghdXNlcm5hbWUgJiYgIWVtYWlsKSB7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5VU0VSTkFNRV9NSVNTSU5HLCAndXNlcm5hbWUvZW1haWwgaXMgcmVxdWlyZWQuJyk7XG4gICAgICB9XG4gICAgICBpZiAoIXBhc3N3b3JkKSB7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5QQVNTV09SRF9NSVNTSU5HLCAncGFzc3dvcmQgaXMgcmVxdWlyZWQuJyk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBwYXNzd29yZCAhPT0gJ3N0cmluZycgfHxcbiAgICAgICAgKGVtYWlsICYmIHR5cGVvZiBlbWFpbCAhPT0gJ3N0cmluZycpIHx8XG4gICAgICAgICh1c2VybmFtZSAmJiB0eXBlb2YgdXNlcm5hbWUgIT09ICdzdHJpbmcnKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnSW52YWxpZCB1c2VybmFtZS9wYXNzd29yZC4nKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHVzZXI7XG4gICAgICBsZXQgaXNWYWxpZFBhc3N3b3JkID0gZmFsc2U7XG4gICAgICBsZXQgcXVlcnk7XG4gICAgICBpZiAoZW1haWwgJiYgdXNlcm5hbWUpIHtcbiAgICAgICAgcXVlcnkgPSB7IGVtYWlsLCB1c2VybmFtZSB9O1xuICAgICAgfSBlbHNlIGlmIChlbWFpbCkge1xuICAgICAgICBxdWVyeSA9IHsgZW1haWwgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXJ5ID0geyAkb3I6IFt7IHVzZXJuYW1lIH0sIHsgZW1haWw6IHVzZXJuYW1lIH1dIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVxLmNvbmZpZy5kYXRhYmFzZVxuICAgICAgICAuZmluZCgnX1VzZXInLCBxdWVyeSwge30sIEF1dGgubWFpbnRlbmFuY2UocmVxLmNvbmZpZykpXG4gICAgICAgIC50aGVuKHJlc3VsdHMgPT4ge1xuICAgICAgICAgIGlmICghcmVzdWx0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnSW52YWxpZCB1c2VybmFtZS9wYXNzd29yZC4nKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVzdWx0cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAvLyBjb3JuZXIgY2FzZSB3aGVyZSB1c2VyMSBoYXMgdXNlcm5hbWUgPT0gdXNlcjIgZW1haWxcbiAgICAgICAgICAgIHJlcS5jb25maWcubG9nZ2VyQ29udHJvbGxlci53YXJuKFxuICAgICAgICAgICAgICBcIlRoZXJlIGlzIGEgdXNlciB3aGljaCBlbWFpbCBpcyB0aGUgc2FtZSBhcyBhbm90aGVyIHVzZXIncyB1c2VybmFtZSwgbG9nZ2luZyBpbiBiYXNlZCBvbiB1c2VybmFtZVwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdXNlciA9IHJlc3VsdHMuZmlsdGVyKHVzZXIgPT4gdXNlci51c2VybmFtZSA9PT0gdXNlcm5hbWUpWzBdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1c2VyID0gcmVzdWx0c1swXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcGFzc3dvcmRDcnlwdG8uY29tcGFyZShwYXNzd29yZCwgdXNlci5wYXNzd29yZCk7XG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKGNvcnJlY3QgPT4ge1xuICAgICAgICAgIGlzVmFsaWRQYXNzd29yZCA9IGNvcnJlY3Q7XG4gICAgICAgICAgY29uc3QgYWNjb3VudExvY2tvdXRQb2xpY3kgPSBuZXcgQWNjb3VudExvY2tvdXQodXNlciwgcmVxLmNvbmZpZyk7XG4gICAgICAgICAgcmV0dXJuIGFjY291bnRMb2Nrb3V0UG9saWN5LmhhbmRsZUxvZ2luQXR0ZW1wdChpc1ZhbGlkUGFzc3dvcmQpO1xuICAgICAgICB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgaWYgKCFpc1ZhbGlkUGFzc3dvcmQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnSW52YWxpZCB1c2VybmFtZS9wYXNzd29yZC4nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gRW5zdXJlIHRoZSB1c2VyIGlzbid0IGxvY2tlZCBvdXRcbiAgICAgICAgICAvLyBBIGxvY2tlZCBvdXQgdXNlciB3b24ndCBiZSBhYmxlIHRvIGxvZ2luXG4gICAgICAgICAgLy8gVG8gbG9jayBhIHVzZXIgb3V0LCBqdXN0IHNldCB0aGUgQUNMIHRvIGBtYXN0ZXJLZXlgIG9ubHkgICh7fSkuXG4gICAgICAgICAgLy8gRW1wdHkgQUNMIGlzIE9LXG4gICAgICAgICAgaWYgKCFyZXEuYXV0aC5pc01hc3RlciAmJiB1c2VyLkFDTCAmJiBPYmplY3Qua2V5cyh1c2VyLkFDTCkubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnSW52YWxpZCB1c2VybmFtZS9wYXNzd29yZC4nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgcmVxLmNvbmZpZy52ZXJpZnlVc2VyRW1haWxzICYmXG4gICAgICAgICAgICByZXEuY29uZmlnLnByZXZlbnRMb2dpbldpdGhVbnZlcmlmaWVkRW1haWwgJiZcbiAgICAgICAgICAgICF1c2VyLmVtYWlsVmVyaWZpZWRcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5FTUFJTF9OT1RfRk9VTkQsICdVc2VyIGVtYWlsIGlzIG5vdCB2ZXJpZmllZC4nKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9zYW5pdGl6ZUF1dGhEYXRhKHVzZXIpO1xuXG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUodXNlcik7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlTWUocmVxKSB7XG4gICAgaWYgKCFyZXEuaW5mbyB8fCAhcmVxLmluZm8uc2Vzc2lvblRva2VuKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9TRVNTSU9OX1RPS0VOLCAnSW52YWxpZCBzZXNzaW9uIHRva2VuJyk7XG4gICAgfVxuICAgIGNvbnN0IHNlc3Npb25Ub2tlbiA9IHJlcS5pbmZvLnNlc3Npb25Ub2tlbjtcbiAgICByZXR1cm4gcmVzdFxuICAgICAgLmZpbmQoXG4gICAgICAgIHJlcS5jb25maWcsXG4gICAgICAgIEF1dGgubWFzdGVyKHJlcS5jb25maWcpLFxuICAgICAgICAnX1Nlc3Npb24nLFxuICAgICAgICB7IHNlc3Npb25Ub2tlbiB9LFxuICAgICAgICB7IGluY2x1ZGU6ICd1c2VyJyB9LFxuICAgICAgICByZXEuaW5mby5jbGllbnRTREssXG4gICAgICAgIHJlcS5pbmZvLmNvbnRleHRcbiAgICAgIClcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgaWYgKCFyZXNwb25zZS5yZXN1bHRzIHx8IHJlc3BvbnNlLnJlc3VsdHMubGVuZ3RoID09IDAgfHwgIXJlc3BvbnNlLnJlc3VsdHNbMF0udXNlcikge1xuICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1NFU1NJT05fVE9LRU4sICdJbnZhbGlkIHNlc3Npb24gdG9rZW4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB1c2VyID0gcmVzcG9uc2UucmVzdWx0c1swXS51c2VyO1xuICAgICAgICAgIC8vIFNlbmQgdG9rZW4gYmFjayBvbiB0aGUgbG9naW4sIGJlY2F1c2UgU0RLcyBleHBlY3QgdGhhdC5cbiAgICAgICAgICB1c2VyLnNlc3Npb25Ub2tlbiA9IHNlc3Npb25Ub2tlbjtcblxuICAgICAgICAgIC8vIFJlbW92ZSBoaWRkZW4gcHJvcGVydGllcy5cbiAgICAgICAgICBVc2Vyc1JvdXRlci5yZW1vdmVIaWRkZW5Qcm9wZXJ0aWVzKHVzZXIpO1xuICAgICAgICAgIHJldHVybiB7IHJlc3BvbnNlOiB1c2VyIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgaGFuZGxlTG9nSW4ocmVxKSB7XG4gICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMuX2F1dGhlbnRpY2F0ZVVzZXJGcm9tUmVxdWVzdChyZXEpO1xuICAgIGNvbnN0IGF1dGhEYXRhID0gcmVxLmJvZHkgJiYgcmVxLmJvZHkuYXV0aERhdGE7XG4gICAgLy8gQ2hlY2sgaWYgdXNlciBoYXMgcHJvdmlkZWQgdGhlaXIgcmVxdWlyZWQgYXV0aCBwcm92aWRlcnNcbiAgICBBdXRoLmNoZWNrSWZVc2VySGFzUHJvdmlkZWRDb25maWd1cmVkUHJvdmlkZXJzRm9yTG9naW4oXG4gICAgICByZXEsXG4gICAgICBhdXRoRGF0YSxcbiAgICAgIHVzZXIuYXV0aERhdGEsXG4gICAgICByZXEuY29uZmlnXG4gICAgKTtcblxuICAgIGxldCBhdXRoRGF0YVJlc3BvbnNlO1xuICAgIGxldCB2YWxpZGF0ZWRBdXRoRGF0YTtcbiAgICBpZiAoYXV0aERhdGEpIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IEF1dGguaGFuZGxlQXV0aERhdGFWYWxpZGF0aW9uKFxuICAgICAgICBhdXRoRGF0YSxcbiAgICAgICAgbmV3IFJlc3RXcml0ZShcbiAgICAgICAgICByZXEuY29uZmlnLFxuICAgICAgICAgIHJlcS5hdXRoLFxuICAgICAgICAgICdfVXNlcicsXG4gICAgICAgICAgeyBvYmplY3RJZDogdXNlci5vYmplY3RJZCB9LFxuICAgICAgICAgIHJlcS5ib2R5LFxuICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgcmVxLmluZm8uY2xpZW50U0RLLFxuICAgICAgICAgIHJlcS5pbmZvLmNvbnRleHRcbiAgICAgICAgKSxcbiAgICAgICAgdXNlclxuICAgICAgKTtcbiAgICAgIGF1dGhEYXRhUmVzcG9uc2UgPSByZXMuYXV0aERhdGFSZXNwb25zZTtcbiAgICAgIHZhbGlkYXRlZEF1dGhEYXRhID0gcmVzLmF1dGhEYXRhO1xuICAgIH1cblxuICAgIC8vIGhhbmRsZSBwYXNzd29yZCBleHBpcnkgcG9saWN5XG4gICAgaWYgKHJlcS5jb25maWcucGFzc3dvcmRQb2xpY3kgJiYgcmVxLmNvbmZpZy5wYXNzd29yZFBvbGljeS5tYXhQYXNzd29yZEFnZSkge1xuICAgICAgbGV0IGNoYW5nZWRBdCA9IHVzZXIuX3Bhc3N3b3JkX2NoYW5nZWRfYXQ7XG5cbiAgICAgIGlmICghY2hhbmdlZEF0KSB7XG4gICAgICAgIC8vIHBhc3N3b3JkIHdhcyBjcmVhdGVkIGJlZm9yZSBleHBpcnkgcG9saWN5IHdhcyBlbmFibGVkLlxuICAgICAgICAvLyBzaW1wbHkgdXBkYXRlIF9Vc2VyIG9iamVjdCBzbyB0aGF0IGl0IHdpbGwgc3RhcnQgZW5mb3JjaW5nIGZyb20gbm93XG4gICAgICAgIGNoYW5nZWRBdCA9IG5ldyBEYXRlKCk7XG4gICAgICAgIHJlcS5jb25maWcuZGF0YWJhc2UudXBkYXRlKFxuICAgICAgICAgICdfVXNlcicsXG4gICAgICAgICAgeyB1c2VybmFtZTogdXNlci51c2VybmFtZSB9LFxuICAgICAgICAgIHsgX3Bhc3N3b3JkX2NoYW5nZWRfYXQ6IFBhcnNlLl9lbmNvZGUoY2hhbmdlZEF0KSB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjaGVjayB3aGV0aGVyIHRoZSBwYXNzd29yZCBoYXMgZXhwaXJlZFxuICAgICAgICBpZiAoY2hhbmdlZEF0Ll9fdHlwZSA9PSAnRGF0ZScpIHtcbiAgICAgICAgICBjaGFuZ2VkQXQgPSBuZXcgRGF0ZShjaGFuZ2VkQXQuaXNvKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGV4cGlyeSB0aW1lLlxuICAgICAgICBjb25zdCBleHBpcmVzQXQgPSBuZXcgRGF0ZShcbiAgICAgICAgICBjaGFuZ2VkQXQuZ2V0VGltZSgpICsgODY0MDAwMDAgKiByZXEuY29uZmlnLnBhc3N3b3JkUG9saWN5Lm1heFBhc3N3b3JkQWdlXG4gICAgICAgICk7XG4gICAgICAgIGlmIChleHBpcmVzQXQgPCBuZXcgRGF0ZSgpKVxuICAgICAgICAgIC8vIGZhaWwgb2YgY3VycmVudCB0aW1lIGlzIHBhc3QgcGFzc3dvcmQgZXhwaXJ5IHRpbWVcbiAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgICAgICBQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELFxuICAgICAgICAgICAgJ1lvdXIgcGFzc3dvcmQgaGFzIGV4cGlyZWQuIFBsZWFzZSByZXNldCB5b3VyIHBhc3N3b3JkLidcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlbW92ZSBoaWRkZW4gcHJvcGVydGllcy5cbiAgICBVc2Vyc1JvdXRlci5yZW1vdmVIaWRkZW5Qcm9wZXJ0aWVzKHVzZXIpO1xuXG4gICAgcmVxLmNvbmZpZy5maWxlc0NvbnRyb2xsZXIuZXhwYW5kRmlsZXNJbk9iamVjdChyZXEuY29uZmlnLCB1c2VyKTtcblxuICAgIC8vIEJlZm9yZSBsb2dpbiB0cmlnZ2VyOyB0aHJvd3MgaWYgZmFpbHVyZVxuICAgIGF3YWl0IG1heWJlUnVuVHJpZ2dlcihcbiAgICAgIFRyaWdnZXJUeXBlcy5iZWZvcmVMb2dpbixcbiAgICAgIHJlcS5hdXRoLFxuICAgICAgUGFyc2UuVXNlci5mcm9tSlNPTihPYmplY3QuYXNzaWduKHsgY2xhc3NOYW1lOiAnX1VzZXInIH0sIHVzZXIpKSxcbiAgICAgIG51bGwsXG4gICAgICByZXEuY29uZmlnLFxuICAgICAgcmVxLmluZm8uY29udGV4dFxuICAgICk7XG5cbiAgICAvLyBJZiB3ZSBoYXZlIHNvbWUgbmV3IHZhbGlkYXRlZCBhdXRoRGF0YSB1cGRhdGUgZGlyZWN0bHlcbiAgICBpZiAodmFsaWRhdGVkQXV0aERhdGEgJiYgT2JqZWN0LmtleXModmFsaWRhdGVkQXV0aERhdGEpLmxlbmd0aCkge1xuICAgICAgYXdhaXQgcmVxLmNvbmZpZy5kYXRhYmFzZS51cGRhdGUoXG4gICAgICAgICdfVXNlcicsXG4gICAgICAgIHsgb2JqZWN0SWQ6IHVzZXIub2JqZWN0SWQgfSxcbiAgICAgICAgeyBhdXRoRGF0YTogdmFsaWRhdGVkQXV0aERhdGEgfSxcbiAgICAgICAge31cbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBzZXNzaW9uRGF0YSwgY3JlYXRlU2Vzc2lvbiB9ID0gUmVzdFdyaXRlLmNyZWF0ZVNlc3Npb24ocmVxLmNvbmZpZywge1xuICAgICAgdXNlcklkOiB1c2VyLm9iamVjdElkLFxuICAgICAgY3JlYXRlZFdpdGg6IHtcbiAgICAgICAgYWN0aW9uOiAnbG9naW4nLFxuICAgICAgICBhdXRoUHJvdmlkZXI6ICdwYXNzd29yZCcsXG4gICAgICB9LFxuICAgICAgaW5zdGFsbGF0aW9uSWQ6IHJlcS5pbmZvLmluc3RhbGxhdGlvbklkLFxuICAgIH0pO1xuXG4gICAgdXNlci5zZXNzaW9uVG9rZW4gPSBzZXNzaW9uRGF0YS5zZXNzaW9uVG9rZW47XG5cbiAgICBhd2FpdCBjcmVhdGVTZXNzaW9uKCk7XG5cbiAgICBjb25zdCBhZnRlckxvZ2luVXNlciA9IFBhcnNlLlVzZXIuZnJvbUpTT04oT2JqZWN0LmFzc2lnbih7IGNsYXNzTmFtZTogJ19Vc2VyJyB9LCB1c2VyKSk7XG4gICAgYXdhaXQgbWF5YmVSdW5UcmlnZ2VyKFxuICAgICAgVHJpZ2dlclR5cGVzLmFmdGVyTG9naW4sXG4gICAgICB7IC4uLnJlcS5hdXRoLCB1c2VyOiBhZnRlckxvZ2luVXNlciB9LFxuICAgICAgYWZ0ZXJMb2dpblVzZXIsXG4gICAgICBudWxsLFxuICAgICAgcmVxLmNvbmZpZyxcbiAgICAgIHJlcS5pbmZvLmNvbnRleHRcbiAgICApO1xuXG4gICAgaWYgKGF1dGhEYXRhUmVzcG9uc2UpIHtcbiAgICAgIHVzZXIuYXV0aERhdGFSZXNwb25zZSA9IGF1dGhEYXRhUmVzcG9uc2U7XG4gICAgfVxuICAgIGF3YWl0IHJlcS5jb25maWcuYXV0aERhdGFNYW5hZ2VyLnJ1bkFmdGVyRmluZChyZXEsIHVzZXIuYXV0aERhdGEpO1xuXG4gICAgcmV0dXJuIHsgcmVzcG9uc2U6IHVzZXIgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGFsbG93cyBtYXN0ZXIta2V5IGNsaWVudHMgdG8gY3JlYXRlIHVzZXIgc2Vzc2lvbnMgd2l0aG91dCBhY2Nlc3MgdG9cbiAgICogdXNlciBjcmVkZW50aWFscy4gVGhpcyBlbmFibGVzIHN5c3RlbXMgdGhhdCBjYW4gYXV0aGVudGljYXRlIGFjY2VzcyBhbm90aGVyXG4gICAqIHdheSAoQVBJIGtleSwgYXBwIGFkbWluaXN0cmF0b3JzKSB0byBhY3Qgb24gYSB1c2VyJ3MgYmVoYWxmLlxuICAgKlxuICAgKiBXZSBjcmVhdGUgYSBuZXcgc2Vzc2lvbiByYXRoZXIgdGhhbiBsb29raW5nIGZvciBhbiBleGlzdGluZyBzZXNzaW9uOyB3ZVxuICAgKiB3YW50IHRoaXMgdG8gd29yayBpbiBzaXR1YXRpb25zIHdoZXJlIHRoZSB1c2VyIGlzIGxvZ2dlZCBvdXQgb24gYWxsXG4gICAqIGRldmljZXMsIHNpbmNlIHRoaXMgY2FuIGJlIHVzZWQgYnkgYXV0b21hdGVkIHN5c3RlbXMgYWN0aW5nIG9uIHRoZSB1c2VyJ3NcbiAgICogYmVoYWxmLlxuICAgKlxuICAgKiBGb3IgdGhlIG1vbWVudCwgd2UncmUgb21pdHRpbmcgZXZlbnQgaG9va3MgYW5kIGxvY2tvdXQgY2hlY2tzLCBzaW5jZVxuICAgKiBpbW1lZGlhdGUgdXNlIGNhc2VzIHN1Z2dlc3QgL2xvZ2luQXMgY291bGQgYmUgdXNlZCBmb3Igc2VtYW50aWNhbGx5XG4gICAqIGRpZmZlcmVudCByZWFzb25zIGZyb20gL2xvZ2luXG4gICAqL1xuICBhc3luYyBoYW5kbGVMb2dJbkFzKHJlcSkge1xuICAgIGlmICghcmVxLmF1dGguaXNNYXN0ZXIpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PUEVSQVRJT05fRk9SQklEREVOLCAnbWFzdGVyIGtleSBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZXJJZCA9IHJlcS5ib2R5LnVzZXJJZCB8fCByZXEucXVlcnkudXNlcklkO1xuICAgIGlmICghdXNlcklkKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgIFBhcnNlLkVycm9yLklOVkFMSURfVkFMVUUsXG4gICAgICAgICd1c2VySWQgbXVzdCBub3QgYmUgZW1wdHksIG51bGwsIG9yIHVuZGVmaW5lZCdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgcXVlcnlSZXN1bHRzID0gYXdhaXQgcmVxLmNvbmZpZy5kYXRhYmFzZS5maW5kKCdfVXNlcicsIHsgb2JqZWN0SWQ6IHVzZXJJZCB9KTtcbiAgICBjb25zdCB1c2VyID0gcXVlcnlSZXN1bHRzWzBdO1xuICAgIGlmICghdXNlcikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICd1c2VyIG5vdCBmb3VuZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3Nhbml0aXplQXV0aERhdGEodXNlcik7XG5cbiAgICBjb25zdCB7IHNlc3Npb25EYXRhLCBjcmVhdGVTZXNzaW9uIH0gPSBSZXN0V3JpdGUuY3JlYXRlU2Vzc2lvbihyZXEuY29uZmlnLCB7XG4gICAgICB1c2VySWQsXG4gICAgICBjcmVhdGVkV2l0aDoge1xuICAgICAgICBhY3Rpb246ICdsb2dpbicsXG4gICAgICAgIGF1dGhQcm92aWRlcjogJ21hc3RlcmtleScsXG4gICAgICB9LFxuICAgICAgaW5zdGFsbGF0aW9uSWQ6IHJlcS5pbmZvLmluc3RhbGxhdGlvbklkLFxuICAgIH0pO1xuXG4gICAgdXNlci5zZXNzaW9uVG9rZW4gPSBzZXNzaW9uRGF0YS5zZXNzaW9uVG9rZW47XG5cbiAgICBhd2FpdCBjcmVhdGVTZXNzaW9uKCk7XG5cbiAgICByZXR1cm4geyByZXNwb25zZTogdXNlciB9O1xuICB9XG5cbiAgaGFuZGxlVmVyaWZ5UGFzc3dvcmQocmVxKSB7XG4gICAgcmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0ZVVzZXJGcm9tUmVxdWVzdChyZXEpXG4gICAgICAudGhlbih1c2VyID0+IHtcbiAgICAgICAgLy8gUmVtb3ZlIGhpZGRlbiBwcm9wZXJ0aWVzLlxuICAgICAgICBVc2Vyc1JvdXRlci5yZW1vdmVIaWRkZW5Qcm9wZXJ0aWVzKHVzZXIpO1xuXG4gICAgICAgIHJldHVybiB7IHJlc3BvbnNlOiB1c2VyIH07XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZUxvZ091dChyZXEpIHtcbiAgICBjb25zdCBzdWNjZXNzID0geyByZXNwb25zZToge30gfTtcbiAgICBpZiAocmVxLmluZm8gJiYgcmVxLmluZm8uc2Vzc2lvblRva2VuKSB7XG4gICAgICBjb25zdCByZWNvcmRzID0gYXdhaXQgcmVzdC5maW5kKFxuICAgICAgICByZXEuY29uZmlnLFxuICAgICAgICBBdXRoLm1hc3RlcihyZXEuY29uZmlnKSxcbiAgICAgICAgJ19TZXNzaW9uJyxcbiAgICAgICAgeyBzZXNzaW9uVG9rZW46IHJlcS5pbmZvLnNlc3Npb25Ub2tlbiB9LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHJlcS5pbmZvLmNsaWVudFNESyxcbiAgICAgICAgcmVxLmluZm8uY29udGV4dFxuICAgICAgKTtcbiAgICAgIGlmIChyZWNvcmRzLnJlc3VsdHMgJiYgcmVjb3Jkcy5yZXN1bHRzLmxlbmd0aCkge1xuICAgICAgICBhd2FpdCByZXN0LmRlbChcbiAgICAgICAgICByZXEuY29uZmlnLFxuICAgICAgICAgIEF1dGgubWFzdGVyKHJlcS5jb25maWcpLFxuICAgICAgICAgICdfU2Vzc2lvbicsXG4gICAgICAgICAgcmVjb3Jkcy5yZXN1bHRzWzBdLm9iamVjdElkLFxuICAgICAgICAgIHJlcS5pbmZvLmNvbnRleHRcbiAgICAgICAgKTtcbiAgICAgICAgYXdhaXQgbWF5YmVSdW5UcmlnZ2VyKFxuICAgICAgICAgIFRyaWdnZXJUeXBlcy5hZnRlckxvZ291dCxcbiAgICAgICAgICByZXEuYXV0aCxcbiAgICAgICAgICBQYXJzZS5TZXNzaW9uLmZyb21KU09OKE9iamVjdC5hc3NpZ24oeyBjbGFzc05hbWU6ICdfU2Vzc2lvbicgfSwgcmVjb3Jkcy5yZXN1bHRzWzBdKSksXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICByZXEuY29uZmlnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9XG5cbiAgX3Rocm93T25CYWRFbWFpbENvbmZpZyhyZXEpIHtcbiAgICB0cnkge1xuICAgICAgQ29uZmlnLnZhbGlkYXRlRW1haWxDb25maWd1cmF0aW9uKHtcbiAgICAgICAgZW1haWxBZGFwdGVyOiByZXEuY29uZmlnLnVzZXJDb250cm9sbGVyLmFkYXB0ZXIsXG4gICAgICAgIGFwcE5hbWU6IHJlcS5jb25maWcuYXBwTmFtZSxcbiAgICAgICAgcHVibGljU2VydmVyVVJMOiByZXEuY29uZmlnLnB1YmxpY1NlcnZlclVSTCxcbiAgICAgICAgZW1haWxWZXJpZnlUb2tlblZhbGlkaXR5RHVyYXRpb246IHJlcS5jb25maWcuZW1haWxWZXJpZnlUb2tlblZhbGlkaXR5RHVyYXRpb24sXG4gICAgICAgIGVtYWlsVmVyaWZ5VG9rZW5SZXVzZUlmVmFsaWQ6IHJlcS5jb25maWcuZW1haWxWZXJpZnlUb2tlblJldXNlSWZWYWxpZCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICh0eXBlb2YgZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgLy8gTWF5YmUgd2UgbmVlZCBhIEJhZCBDb25maWd1cmF0aW9uIGVycm9yLCBidXQgdGhlIFNES3Mgd29uJ3QgdW5kZXJzdGFuZCBpdC4gRm9yIG5vdywgSW50ZXJuYWwgU2VydmVyIEVycm9yLlxuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgICAgUGFyc2UuRXJyb3IuSU5URVJOQUxfU0VSVkVSX0VSUk9SLFxuICAgICAgICAgICdBbiBhcHBOYW1lLCBwdWJsaWNTZXJ2ZXJVUkwsIGFuZCBlbWFpbEFkYXB0ZXIgYXJlIHJlcXVpcmVkIGZvciBwYXNzd29yZCByZXNldCBhbmQgZW1haWwgdmVyaWZpY2F0aW9uIGZ1bmN0aW9uYWxpdHkuJ1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBoYW5kbGVSZXNldFJlcXVlc3QocmVxKSB7XG4gICAgdGhpcy5fdGhyb3dPbkJhZEVtYWlsQ29uZmlnKHJlcSk7XG5cbiAgICBjb25zdCB7IGVtYWlsIH0gPSByZXEuYm9keTtcbiAgICBpZiAoIWVtYWlsKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuRU1BSUxfTUlTU0lORywgJ3lvdSBtdXN0IHByb3ZpZGUgYW4gZW1haWwnKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBlbWFpbCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgUGFyc2UuRXJyb3IuSU5WQUxJRF9FTUFJTF9BRERSRVNTLFxuICAgICAgICAneW91IG11c3QgcHJvdmlkZSBhIHZhbGlkIGVtYWlsIHN0cmluZydcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHVzZXJDb250cm9sbGVyID0gcmVxLmNvbmZpZy51c2VyQ29udHJvbGxlcjtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdXNlckNvbnRyb2xsZXIuc2VuZFBhc3N3b3JkUmVzZXRFbWFpbChlbWFpbCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXNwb25zZToge30sXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyci5jb2RlID09PSBQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5EKSB7XG4gICAgICAgIGlmIChyZXEuY29uZmlnLnBhc3N3b3JkUG9saWN5Py5yZXNldFBhc3N3b3JkU3VjY2Vzc09uSW52YWxpZEVtYWlsID8/IHRydWUpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzcG9uc2U6IHt9LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgZXJyLm1lc3NhZ2UgPSBgQSB1c2VyIHdpdGggdGhhdCBlbWFpbCBkb2VzIG5vdCBleGlzdC5gO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGhhbmRsZVZlcmlmaWNhdGlvbkVtYWlsUmVxdWVzdChyZXEpIHtcbiAgICB0aGlzLl90aHJvd09uQmFkRW1haWxDb25maWcocmVxKTtcblxuICAgIGNvbnN0IHsgZW1haWwgfSA9IHJlcS5ib2R5O1xuICAgIGlmICghZW1haWwpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5FTUFJTF9NSVNTSU5HLCAneW91IG11c3QgcHJvdmlkZSBhbiBlbWFpbCcpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGVtYWlsICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5JTlZBTElEX0VNQUlMX0FERFJFU1MsXG4gICAgICAgICd5b3UgbXVzdCBwcm92aWRlIGEgdmFsaWQgZW1haWwgc3RyaW5nJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgcmVxLmNvbmZpZy5kYXRhYmFzZS5maW5kKCdfVXNlcicsIHsgZW1haWw6IGVtYWlsIH0pO1xuICAgIGlmICghcmVzdWx0cy5sZW5ndGggfHwgcmVzdWx0cy5sZW5ndGggPCAxKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuRU1BSUxfTk9UX0ZPVU5ELCBgTm8gdXNlciBmb3VuZCB3aXRoIGVtYWlsICR7ZW1haWx9YCk7XG4gICAgfVxuICAgIGNvbnN0IHVzZXIgPSByZXN1bHRzWzBdO1xuXG4gICAgLy8gcmVtb3ZlIHBhc3N3b3JkIGZpZWxkLCBtZXNzZXMgd2l0aCBzYXZpbmcgb24gcG9zdGdyZXNcbiAgICBkZWxldGUgdXNlci5wYXNzd29yZDtcblxuICAgIGlmICh1c2VyLmVtYWlsVmVyaWZpZWQpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PVEhFUl9DQVVTRSwgYEVtYWlsICR7ZW1haWx9IGlzIGFscmVhZHkgdmVyaWZpZWQuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlckNvbnRyb2xsZXIgPSByZXEuY29uZmlnLnVzZXJDb250cm9sbGVyO1xuICAgIGNvbnN0IHNlbmQgPSBhd2FpdCB1c2VyQ29udHJvbGxlci5yZWdlbmVyYXRlRW1haWxWZXJpZnlUb2tlbih1c2VyLCByZXEuYXV0aC5pc01hc3Rlcik7XG4gICAgaWYgKHNlbmQpIHtcbiAgICAgIHVzZXJDb250cm9sbGVyLnNlbmRWZXJpZmljYXRpb25FbWFpbCh1c2VyLCByZXEpO1xuICAgIH1cbiAgICByZXR1cm4geyByZXNwb25zZToge30gfTtcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZUNoYWxsZW5nZShyZXEpIHtcbiAgICBjb25zdCB7IHVzZXJuYW1lLCBlbWFpbCwgcGFzc3dvcmQsIGF1dGhEYXRhLCBjaGFsbGVuZ2VEYXRhIH0gPSByZXEuYm9keTtcblxuICAgIC8vIGlmIHVzZXJuYW1lIG9yIGVtYWlsIHByb3ZpZGVkIHdpdGggcGFzc3dvcmQgdHJ5IHRvIGF1dGhlbnRpY2F0ZSB0aGUgdXNlciBieSB1c2VybmFtZVxuICAgIGxldCB1c2VyO1xuICAgIGlmICh1c2VybmFtZSB8fCBlbWFpbCkge1xuICAgICAgaWYgKCFwYXNzd29yZCkge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgICAgUGFyc2UuRXJyb3IuT1RIRVJfQ0FVU0UsXG4gICAgICAgICAgJ1lvdSBwcm92aWRlZCB1c2VybmFtZSBvciBlbWFpbCwgeW91IG5lZWQgdG8gYWxzbyBwcm92aWRlIHBhc3N3b3JkLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHVzZXIgPSBhd2FpdCB0aGlzLl9hdXRoZW50aWNhdGVVc2VyRnJvbVJlcXVlc3QocmVxKTtcbiAgICB9XG5cbiAgICBpZiAoIWNoYWxsZW5nZURhdGEpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PVEhFUl9DQVVTRSwgJ05vdGhpbmcgdG8gY2hhbGxlbmdlLicpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY2hhbGxlbmdlRGF0YSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PVEhFUl9DQVVTRSwgJ2NoYWxsZW5nZURhdGEgc2hvdWxkIGJlIGFuIG9iamVjdC4nKTtcbiAgICB9XG5cbiAgICBsZXQgcmVxdWVzdDtcbiAgICBsZXQgcGFyc2VVc2VyO1xuXG4gICAgLy8gVHJ5IHRvIGZpbmQgdXNlciBieSBhdXRoRGF0YVxuICAgIGlmIChhdXRoRGF0YSkge1xuICAgICAgaWYgKHR5cGVvZiBhdXRoRGF0YSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9USEVSX0NBVVNFLCAnYXV0aERhdGEgc2hvdWxkIGJlIGFuIG9iamVjdC4nKTtcbiAgICAgIH1cbiAgICAgIGlmICh1c2VyKSB7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgICBQYXJzZS5FcnJvci5PVEhFUl9DQVVTRSxcbiAgICAgICAgICAnWW91IGNhbm5vdCBwcm92aWRlIHVzZXJuYW1lL2VtYWlsIGFuZCBhdXRoRGF0YSwgb25seSB1c2Ugb25lIGlkZW50aWZpY2F0aW9uIG1ldGhvZC4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyhhdXRoRGF0YSkuZmlsdGVyKGtleSA9PiBhdXRoRGF0YVtrZXldLmlkKS5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgICBQYXJzZS5FcnJvci5PVEhFUl9DQVVTRSxcbiAgICAgICAgICAnWW91IGNhbm5vdCBwcm92aWRlIG1vcmUgdGhhbiBvbmUgYXV0aERhdGEgcHJvdmlkZXIgd2l0aCBhbiBpZC4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBBdXRoLmZpbmRVc2Vyc1dpdGhBdXRoRGF0YShyZXEuY29uZmlnLCBhdXRoRGF0YSk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghcmVzdWx0c1swXSB8fCByZXN1bHRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ1VzZXIgbm90IGZvdW5kLicpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEZpbmQgdGhlIHByb3ZpZGVyIHVzZWQgdG8gZmluZCB0aGUgdXNlclxuICAgICAgICBjb25zdCBwcm92aWRlciA9IE9iamVjdC5rZXlzKGF1dGhEYXRhKS5maW5kKGtleSA9PiBhdXRoRGF0YVtrZXldLmlkKTtcblxuICAgICAgICBwYXJzZVVzZXIgPSBQYXJzZS5Vc2VyLmZyb21KU09OKHsgY2xhc3NOYW1lOiAnX1VzZXInLCAuLi5yZXN1bHRzWzBdIH0pO1xuICAgICAgICByZXF1ZXN0ID0gZ2V0UmVxdWVzdE9iamVjdCh1bmRlZmluZWQsIHJlcS5hdXRoLCBwYXJzZVVzZXIsIHBhcnNlVXNlciwgcmVxLmNvbmZpZyk7XG4gICAgICAgIHJlcXVlc3QuaXNDaGFsbGVuZ2UgPSB0cnVlO1xuICAgICAgICAvLyBWYWxpZGF0ZSBhdXRoRGF0YSB1c2VkIHRvIGlkZW50aWZ5IHRoZSB1c2VyIHRvIGF2b2lkIGJydXRlLWZvcmNlIGF0dGFjayBvbiBgaWRgXG4gICAgICAgIGNvbnN0IHsgdmFsaWRhdG9yIH0gPSByZXEuY29uZmlnLmF1dGhEYXRhTWFuYWdlci5nZXRWYWxpZGF0b3JGb3JQcm92aWRlcihwcm92aWRlcik7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvclJlc3BvbnNlID0gYXdhaXQgdmFsaWRhdG9yKGF1dGhEYXRhW3Byb3ZpZGVyXSwgcmVxLCBwYXJzZVVzZXIsIHJlcXVlc3QpO1xuICAgICAgICBpZiAodmFsaWRhdG9yUmVzcG9uc2UgJiYgdmFsaWRhdG9yUmVzcG9uc2UudmFsaWRhdG9yKSB7XG4gICAgICAgICAgYXdhaXQgdmFsaWRhdG9yUmVzcG9uc2UudmFsaWRhdG9yKCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gUmV3cml0ZSB0aGUgZXJyb3IgdG8gYXZvaWQgZ3Vlc3MgaWQgYXR0YWNrXG4gICAgICAgIGxvZ2dlci5lcnJvcihlKTtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdVc2VyIG5vdCBmb3VuZC4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXBhcnNlVXNlcikge1xuICAgICAgcGFyc2VVc2VyID0gdXNlciA/IFBhcnNlLlVzZXIuZnJvbUpTT04oeyBjbGFzc05hbWU6ICdfVXNlcicsIC4uLnVzZXIgfSkgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKCFyZXF1ZXN0KSB7XG4gICAgICByZXF1ZXN0ID0gZ2V0UmVxdWVzdE9iamVjdCh1bmRlZmluZWQsIHJlcS5hdXRoLCBwYXJzZVVzZXIsIHBhcnNlVXNlciwgcmVxLmNvbmZpZyk7XG4gICAgICByZXF1ZXN0LmlzQ2hhbGxlbmdlID0gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgYWNjID0ge307XG4gICAgLy8gRXhlY3V0ZSBjaGFsbGVuZ2Ugc3RlcC1ieS1zdGVwIHdpdGggY29uc2lzdGVudCBvcmRlciBmb3IgYmV0dGVyIGVycm9yIGZlZWRiYWNrXG4gICAgLy8gYW5kIHRvIGF2b2lkIHRvIHRyaWdnZXIgb3RoZXJzIGNoYWxsZW5nZXMgaWYgb25lIG9mIHRoZW0gZmFpbHNcbiAgICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIE9iamVjdC5rZXlzKGNoYWxsZW5nZURhdGEpLnNvcnQoKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYXV0aEFkYXB0ZXIgPSByZXEuY29uZmlnLmF1dGhEYXRhTWFuYWdlci5nZXRWYWxpZGF0b3JGb3JQcm92aWRlcihwcm92aWRlcik7XG4gICAgICAgIGlmICghYXV0aEFkYXB0ZXIpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgYWRhcHRlcjogeyBjaGFsbGVuZ2UgfSxcbiAgICAgICAgfSA9IGF1dGhBZGFwdGVyO1xuICAgICAgICBpZiAodHlwZW9mIGNoYWxsZW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGNvbnN0IHByb3ZpZGVyQ2hhbGxlbmdlUmVzcG9uc2UgPSBhd2FpdCBjaGFsbGVuZ2UoXG4gICAgICAgICAgICBjaGFsbGVuZ2VEYXRhW3Byb3ZpZGVyXSxcbiAgICAgICAgICAgIGF1dGhEYXRhICYmIGF1dGhEYXRhW3Byb3ZpZGVyXSxcbiAgICAgICAgICAgIHJlcS5jb25maWcuYXV0aFtwcm92aWRlcl0sXG4gICAgICAgICAgICByZXF1ZXN0XG4gICAgICAgICAgKTtcbiAgICAgICAgICBhY2NbcHJvdmlkZXJdID0gcHJvdmlkZXJDaGFsbGVuZ2VSZXNwb25zZSB8fCB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc3QgZSA9IHJlc29sdmVFcnJvcihlcnIsIHtcbiAgICAgICAgICBjb2RlOiBQYXJzZS5FcnJvci5TQ1JJUFRfRkFJTEVELFxuICAgICAgICAgIG1lc3NhZ2U6ICdDaGFsbGVuZ2UgZmFpbGVkLiBVbmtub3duIGVycm9yLicsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB1c2VyU3RyaW5nID0gcmVxLmF1dGggJiYgcmVxLmF1dGgudXNlciA/IHJlcS5hdXRoLnVzZXIuaWQgOiB1bmRlZmluZWQ7XG4gICAgICAgIGxvZ2dlci5lcnJvcihcbiAgICAgICAgICBgRmFpbGVkIHJ1bm5pbmcgYXV0aCBzdGVwIGNoYWxsZW5nZSBmb3IgJHtwcm92aWRlcn0gZm9yIHVzZXIgJHt1c2VyU3RyaW5nfSB3aXRoIEVycm9yOiBgICtcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGUpLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGF1dGhlbnRpY2F0aW9uU3RlcDogJ2NoYWxsZW5nZScsXG4gICAgICAgICAgICBlcnJvcjogZSxcbiAgICAgICAgICAgIHVzZXI6IHVzZXJTdHJpbmcsXG4gICAgICAgICAgICBwcm92aWRlcixcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHJlc3BvbnNlOiB7IGNoYWxsZW5nZURhdGE6IGFjYyB9IH07XG4gIH1cblxuICBtb3VudFJvdXRlcygpIHtcbiAgICB0aGlzLnJvdXRlKCdHRVQnLCAnL3VzZXJzJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUZpbmQocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdQT1NUJywgJy91c2VycycsIHByb21pc2VFbnN1cmVJZGVtcG90ZW5jeSwgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUNyZWF0ZShyZXEpO1xuICAgIH0pO1xuICAgIHRoaXMucm91dGUoJ0dFVCcsICcvdXNlcnMvbWUnLCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlTWUocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdHRVQnLCAnL3VzZXJzLzpvYmplY3RJZCcsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVHZXQocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdQVVQnLCAnL3VzZXJzLzpvYmplY3RJZCcsIHByb21pc2VFbnN1cmVJZGVtcG90ZW5jeSwgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZVVwZGF0ZShyZXEpO1xuICAgIH0pO1xuICAgIHRoaXMucm91dGUoJ0RFTEVURScsICcvdXNlcnMvOm9iamVjdElkJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZURlbGV0ZShyZXEpO1xuICAgIH0pO1xuICAgIHRoaXMucm91dGUoJ0dFVCcsICcvbG9naW4nLCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlTG9nSW4ocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdQT1NUJywgJy9sb2dpbicsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVMb2dJbihyZXEpO1xuICAgIH0pO1xuICAgIHRoaXMucm91dGUoJ1BPU1QnLCAnL2xvZ2luQXMnLCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlTG9nSW5BcyhyZXEpO1xuICAgIH0pO1xuICAgIHRoaXMucm91dGUoJ1BPU1QnLCAnL2xvZ291dCcsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVMb2dPdXQocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdQT1NUJywgJy9yZXF1ZXN0UGFzc3dvcmRSZXNldCcsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVSZXNldFJlcXVlc3QocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdQT1NUJywgJy92ZXJpZmljYXRpb25FbWFpbFJlcXVlc3QnLCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlVmVyaWZpY2F0aW9uRW1haWxSZXF1ZXN0KHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnR0VUJywgJy92ZXJpZnlQYXNzd29yZCcsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVWZXJpZnlQYXNzd29yZChyZXEpO1xuICAgIH0pO1xuICAgIHRoaXMucm91dGUoJ1BPU1QnLCAnL2NoYWxsZW5nZScsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVDaGFsbGVuZ2UocmVxKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBVc2Vyc1JvdXRlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsZUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsY0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksS0FBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssS0FBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sU0FBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8s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