parse-server 7.1.0-alpha.1 → 7.1.0-alpha.11

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 (193) hide show
  1. package/README.md +10 -11
  2. package/lib/AccountLockout.js +2 -2
  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 +2 -2
  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 +2 -2
  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 +2 -2
  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/utils.js +1 -1
  31. package/lib/Adapters/Auth/vkontakte.js +1 -1
  32. package/lib/Adapters/Auth/wechat.js +1 -1
  33. package/lib/Adapters/Auth/weibo.js +1 -1
  34. package/lib/Adapters/Cache/CacheAdapter.js +1 -1
  35. package/lib/Adapters/Cache/InMemoryCache.js +1 -1
  36. package/lib/Adapters/Cache/InMemoryCacheAdapter.js +1 -1
  37. package/lib/Adapters/Cache/LRUCache.js +2 -2
  38. package/lib/Adapters/Cache/NullCacheAdapter.js +1 -1
  39. package/lib/Adapters/Cache/RedisCacheAdapter.js +2 -2
  40. package/lib/Adapters/Cache/SchemaCache.js +1 -1
  41. package/lib/Adapters/Email/MailAdapter.js +1 -1
  42. package/lib/Adapters/Files/FilesAdapter.js +2 -2
  43. package/lib/Adapters/Files/GridFSBucketAdapter.js +2 -2
  44. package/lib/Adapters/Files/GridStoreAdapter.js +1 -1
  45. package/lib/Adapters/Logger/LoggerAdapter.js +1 -1
  46. package/lib/Adapters/Logger/WinstonLogger.js +3 -3
  47. package/lib/Adapters/Logger/WinstonLoggerAdapter.js +1 -1
  48. package/lib/Adapters/MessageQueue/EventEmitterMQ.js +2 -2
  49. package/lib/Adapters/PubSub/EventEmitterPubSub.js +2 -2
  50. package/lib/Adapters/PubSub/PubSubAdapter.js +1 -1
  51. package/lib/Adapters/PubSub/RedisPubSub.js +3 -3
  52. package/lib/Adapters/Push/PushAdapter.js +1 -1
  53. package/lib/Adapters/Storage/Mongo/MongoCollection.js +1 -1
  54. package/lib/Adapters/Storage/Mongo/MongoSchemaCollection.js +7 -7
  55. package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +7 -7
  56. package/lib/Adapters/Storage/Mongo/MongoTransform.js +4 -4
  57. package/lib/Adapters/Storage/Postgres/PostgresClient.js +1 -1
  58. package/lib/Adapters/Storage/Postgres/PostgresConfigParser.js +1 -1
  59. package/lib/Adapters/Storage/Postgres/PostgresStorageAdapter.js +4 -4
  60. package/lib/Adapters/Storage/Postgres/sql/index.js +1 -1
  61. package/lib/Adapters/Storage/StorageAdapter.js +1 -1
  62. package/lib/Adapters/WebSocketServer/WSAdapter.js +1 -1
  63. package/lib/Adapters/WebSocketServer/WSSAdapter.js +1 -1
  64. package/lib/Auth.js +17 -9
  65. package/lib/ClientSDK.js +1 -1
  66. package/lib/Config.js +10 -2
  67. package/lib/Controllers/AdaptableController.js +1 -1
  68. package/lib/Controllers/AnalyticsController.js +2 -2
  69. package/lib/Controllers/CacheController.js +2 -2
  70. package/lib/Controllers/DatabaseController.js +7 -7
  71. package/lib/Controllers/FilesController.js +2 -2
  72. package/lib/Controllers/HooksController.js +3 -3
  73. package/lib/Controllers/LiveQueryController.js +1 -1
  74. package/lib/Controllers/LoggerController.js +2 -2
  75. package/lib/Controllers/ParseGraphQLController.js +6 -6
  76. package/lib/Controllers/PushController.js +2 -2
  77. package/lib/Controllers/SchemaController.js +5 -5
  78. package/lib/Controllers/UserController.js +4 -4
  79. package/lib/Controllers/index.js +4 -4
  80. package/lib/Controllers/types.js +1 -1
  81. package/lib/Deprecator/Deprecations.js +1 -1
  82. package/lib/Deprecator/Deprecator.js +2 -2
  83. package/lib/GraphQL/ParseGraphQLSchema.js +3 -3
  84. package/lib/GraphQL/ParseGraphQLServer.js +3 -3
  85. package/lib/GraphQL/helpers/objectsMutations.js +2 -2
  86. package/lib/GraphQL/helpers/objectsQueries.js +2 -2
  87. package/lib/GraphQL/loaders/defaultGraphQLMutations.js +2 -2
  88. package/lib/GraphQL/loaders/defaultGraphQLQueries.js +2 -2
  89. package/lib/GraphQL/loaders/defaultGraphQLTypes.js +4 -4
  90. package/lib/GraphQL/loaders/defaultRelaySchema.js +5 -5
  91. package/lib/GraphQL/loaders/filesMutations.js +5 -5
  92. package/lib/GraphQL/loaders/functionsMutations.js +5 -5
  93. package/lib/GraphQL/loaders/parseClassMutations.js +5 -5
  94. package/lib/GraphQL/loaders/parseClassQueries.js +3 -3
  95. package/lib/GraphQL/loaders/parseClassTypes.js +5 -5
  96. package/lib/GraphQL/loaders/schemaDirectives.js +1 -1
  97. package/lib/GraphQL/loaders/schemaMutations.js +3 -3
  98. package/lib/GraphQL/loaders/schemaQueries.js +3 -3
  99. package/lib/GraphQL/loaders/schemaTypes.js +1 -1
  100. package/lib/GraphQL/loaders/usersMutations.js +5 -5
  101. package/lib/GraphQL/loaders/usersQueries.js +2 -2
  102. package/lib/GraphQL/parseGraphQLUtils.js +2 -2
  103. package/lib/GraphQL/transformers/className.js +1 -1
  104. package/lib/GraphQL/transformers/constraintType.js +2 -2
  105. package/lib/GraphQL/transformers/inputType.js +2 -2
  106. package/lib/GraphQL/transformers/mutation.js +5 -5
  107. package/lib/GraphQL/transformers/outputType.js +2 -2
  108. package/lib/GraphQL/transformers/query.js +3 -3
  109. package/lib/GraphQL/transformers/schemaFields.js +4 -4
  110. package/lib/KeyPromiseQueue.js +1 -1
  111. package/lib/LiveQuery/Client.js +2 -2
  112. package/lib/LiveQuery/Id.js +1 -1
  113. package/lib/LiveQuery/ParseCloudCodePublisher.js +2 -2
  114. package/lib/LiveQuery/ParseLiveQueryServer.js +2 -2
  115. package/lib/LiveQuery/ParsePubSub.js +1 -1
  116. package/lib/LiveQuery/ParseWebSocketServer.js +2 -2
  117. package/lib/LiveQuery/QueryTools.js +3 -2
  118. package/lib/LiveQuery/RequestSchema.js +1 -1
  119. package/lib/LiveQuery/SessionTokenCache.js +2 -2
  120. package/lib/LiveQuery/Subscription.js +2 -2
  121. package/lib/LiveQuery/equalObjects.js +1 -1
  122. package/lib/Options/Definitions.js +23 -8
  123. package/lib/Options/docs.js +2 -2
  124. package/lib/Options/index.js +1 -1
  125. package/lib/Options/parsers.js +1 -1
  126. package/lib/Page.js +1 -1
  127. package/lib/ParseMessageQueue.js +1 -1
  128. package/lib/ParseServer.js +53 -5
  129. package/lib/ParseServerRESTController.js +11 -6
  130. package/lib/PromiseRouter.js +2 -2
  131. package/lib/Push/PushQueue.js +2 -2
  132. package/lib/Push/PushWorker.js +3 -3
  133. package/lib/Push/utils.js +2 -2
  134. package/lib/RestQuery.js +1 -1
  135. package/lib/RestWrite.js +4 -4
  136. package/lib/Routers/AggregateRouter.js +3 -3
  137. package/lib/Routers/AnalyticsRouter.js +2 -2
  138. package/lib/Routers/AudiencesRouter.js +3 -3
  139. package/lib/Routers/ClassesRouter.js +2 -2
  140. package/lib/Routers/CloudCodeRouter.js +2 -2
  141. package/lib/Routers/FeaturesRouter.js +7 -3
  142. package/lib/Routers/FilesRouter.js +3 -3
  143. package/lib/Routers/FunctionsRouter.js +2 -2
  144. package/lib/Routers/GlobalConfigRouter.js +3 -3
  145. package/lib/Routers/GraphQLRouter.js +3 -3
  146. package/lib/Routers/HooksRouter.js +3 -3
  147. package/lib/Routers/IAPValidationRouter.js +2 -2
  148. package/lib/Routers/InstallationsRouter.js +2 -2
  149. package/lib/Routers/LogsRouter.js +3 -3
  150. package/lib/Routers/PagesRouter.js +2 -2
  151. package/lib/Routers/PublicAPIRouter.js +2 -2
  152. package/lib/Routers/PurgeRouter.js +3 -3
  153. package/lib/Routers/PushRouter.js +3 -3
  154. package/lib/Routers/RolesRouter.js +2 -2
  155. package/lib/Routers/SchemasRouter.js +3 -3
  156. package/lib/Routers/SecurityRouter.js +3 -3
  157. package/lib/Routers/SessionsRouter.js +2 -2
  158. package/lib/Routers/UsersRouter.js +4 -4
  159. package/lib/SchemaMigrations/DefinedSchemas.js +5 -5
  160. package/lib/SchemaMigrations/Migrations.js +1 -1
  161. package/lib/Security/Check.js +2 -2
  162. package/lib/Security/CheckGroup.js +1 -1
  163. package/lib/Security/CheckGroups/CheckGroupDatabase.js +2 -2
  164. package/lib/Security/CheckGroups/CheckGroupServerConfig.js +2 -2
  165. package/lib/Security/CheckGroups/CheckGroups.js +2 -2
  166. package/lib/Security/CheckRunner.js +3 -3
  167. package/lib/SharedRest.js +1 -1
  168. package/lib/StatusHandler.js +4 -4
  169. package/lib/TestUtils.js +2 -2
  170. package/lib/Utils.js +1 -1
  171. package/lib/batch.js +1 -1
  172. package/lib/cache.js +1 -1
  173. package/lib/cli/definitions/parse-live-query-server.js +1 -1
  174. package/lib/cli/definitions/parse-server.js +1 -1
  175. package/lib/cli/parse-live-query-server.js +2 -2
  176. package/lib/cli/parse-server.js +2 -2
  177. package/lib/cli/utils/commander.js +2 -2
  178. package/lib/cli/utils/runner.js +3 -3
  179. package/lib/cloud-code/Parse.Cloud.js +4 -4
  180. package/lib/cloud-code/Parse.Server.js +1 -1
  181. package/lib/cryptoUtils.js +1 -1
  182. package/lib/defaults.js +1 -1
  183. package/lib/deprecated.js +1 -1
  184. package/lib/index.js +3 -3
  185. package/lib/logger.js +2 -2
  186. package/lib/middlewares.js +4 -6
  187. package/lib/password.js +1 -1
  188. package/lib/request.js +2 -2
  189. package/lib/requiredParameter.js +1 -1
  190. package/lib/rest.js +1 -1
  191. package/lib/triggers.js +4 -4
  192. package/lib/vendor/mongodbUrl.js +1 -1
  193. package/package.json +17 -17
@@ -29,4 +29,4 @@ function sql(file) {
29
29
  }
30
30
  return qf;
31
31
  }
32
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJRdWVyeUZpbGUiLCJyZXF1aXJlIiwicGF0aCIsIm1vZHVsZSIsImV4cG9ydHMiLCJhcnJheSIsImFkZCIsInNxbCIsImFkZFVuaXF1ZSIsImNvbnRhaW5zIiwiY29udGFpbnNBbGwiLCJjb250YWluc0FsbFJlZ2V4IiwicmVtb3ZlIiwibWlzYyIsImpzb25PYmplY3RTZXRLZXlzIiwiZmlsZSIsImZ1bGxQYXRoIiwiam9pbiIsIl9fZGlybmFtZSIsInFmIiwibWluaWZ5IiwiZXJyb3IiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQWRhcHRlcnMvU3RvcmFnZS9Qb3N0Z3Jlcy9zcWwvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgUXVlcnlGaWxlID0gcmVxdWlyZSgncGctcHJvbWlzZScpLlF1ZXJ5RmlsZTtcbnZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYXJyYXk6IHtcbiAgICBhZGQ6IHNxbCgnYXJyYXkvYWRkLnNxbCcpLFxuICAgIGFkZFVuaXF1ZTogc3FsKCdhcnJheS9hZGQtdW5pcXVlLnNxbCcpLFxuICAgIGNvbnRhaW5zOiBzcWwoJ2FycmF5L2NvbnRhaW5zLnNxbCcpLFxuICAgIGNvbnRhaW5zQWxsOiBzcWwoJ2FycmF5L2NvbnRhaW5zLWFsbC5zcWwnKSxcbiAgICBjb250YWluc0FsbFJlZ2V4OiBzcWwoJ2FycmF5L2NvbnRhaW5zLWFsbC1yZWdleC5zcWwnKSxcbiAgICByZW1vdmU6IHNxbCgnYXJyYXkvcmVtb3ZlLnNxbCcpLFxuICB9LFxuICBtaXNjOiB7XG4gICAganNvbk9iamVjdFNldEtleXM6IHNxbCgnbWlzYy9qc29uLW9iamVjdC1zZXQta2V5cy5zcWwnKSxcbiAgfSxcbn07XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIZWxwZXIgZm9yIGxpbmtpbmcgdG8gZXh0ZXJuYWwgcXVlcnkgZmlsZXM7XG5mdW5jdGlvbiBzcWwoZmlsZSkge1xuICB2YXIgZnVsbFBhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCBmaWxlKTsgLy8gZ2VuZXJhdGluZyBmdWxsIHBhdGg7XG5cbiAgdmFyIHFmID0gbmV3IFF1ZXJ5RmlsZShmdWxsUGF0aCwgeyBtaW5pZnk6IHRydWUgfSk7XG5cbiAgaWYgKHFmLmVycm9yKSB7XG4gICAgdGhyb3cgcWYuZXJyb3I7XG4gIH1cblxuICByZXR1cm4gcWY7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7O0FBRVosSUFBSUEsU0FBUyxHQUFHQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUNELFNBQVM7QUFDL0MsSUFBSUUsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBTSxDQUFDO0FBRTFCRSxNQUFNLENBQUNDLE9BQU8sR0FBRztFQUNmQyxLQUFLLEVBQUU7SUFDTEMsR0FBRyxFQUFFQyxHQUFHLENBQUMsZUFBZSxDQUFDO0lBQ3pCQyxTQUFTLEVBQUVELEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQztJQUN0Q0UsUUFBUSxFQUFFRixHQUFHLENBQUMsb0JBQW9CLENBQUM7SUFDbkNHLFdBQVcsRUFBRUgsR0FBRyxDQUFDLHdCQUF3QixDQUFDO0lBQzFDSSxnQkFBZ0IsRUFBRUosR0FBRyxDQUFDLDhCQUE4QixDQUFDO0lBQ3JESyxNQUFNLEVBQUVMLEdBQUcsQ0FBQyxrQkFBa0I7RUFDaEMsQ0FBQztFQUNETSxJQUFJLEVBQUU7SUFDSkMsaUJBQWlCLEVBQUVQLEdBQUcsQ0FBQywrQkFBK0I7RUFDeEQ7QUFDRixDQUFDOztBQUVEO0FBQ0E7QUFDQSxTQUFTQSxHQUFHQSxDQUFDUSxJQUFJLEVBQUU7RUFDakIsSUFBSUMsUUFBUSxHQUFHZCxJQUFJLENBQUNlLElBQUksQ0FBQ0MsU0FBUyxFQUFFSCxJQUFJLENBQUMsQ0FBQyxDQUFDOztFQUUzQyxJQUFJSSxFQUFFLEdBQUcsSUFBSW5CLFNBQVMsQ0FBQ2dCLFFBQVEsRUFBRTtJQUFFSSxNQUFNLEVBQUU7RUFBSyxDQUFDLENBQUM7RUFFbEQsSUFBSUQsRUFBRSxDQUFDRSxLQUFLLEVBQUU7SUFDWixNQUFNRixFQUFFLENBQUNFLEtBQUs7RUFDaEI7RUFFQSxPQUFPRixFQUFFO0FBQ1gifQ==
32
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJRdWVyeUZpbGUiLCJyZXF1aXJlIiwicGF0aCIsIm1vZHVsZSIsImV4cG9ydHMiLCJhcnJheSIsImFkZCIsInNxbCIsImFkZFVuaXF1ZSIsImNvbnRhaW5zIiwiY29udGFpbnNBbGwiLCJjb250YWluc0FsbFJlZ2V4IiwicmVtb3ZlIiwibWlzYyIsImpzb25PYmplY3RTZXRLZXlzIiwiZmlsZSIsImZ1bGxQYXRoIiwiam9pbiIsIl9fZGlybmFtZSIsInFmIiwibWluaWZ5IiwiZXJyb3IiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQWRhcHRlcnMvU3RvcmFnZS9Qb3N0Z3Jlcy9zcWwvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgUXVlcnlGaWxlID0gcmVxdWlyZSgncGctcHJvbWlzZScpLlF1ZXJ5RmlsZTtcbnZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYXJyYXk6IHtcbiAgICBhZGQ6IHNxbCgnYXJyYXkvYWRkLnNxbCcpLFxuICAgIGFkZFVuaXF1ZTogc3FsKCdhcnJheS9hZGQtdW5pcXVlLnNxbCcpLFxuICAgIGNvbnRhaW5zOiBzcWwoJ2FycmF5L2NvbnRhaW5zLnNxbCcpLFxuICAgIGNvbnRhaW5zQWxsOiBzcWwoJ2FycmF5L2NvbnRhaW5zLWFsbC5zcWwnKSxcbiAgICBjb250YWluc0FsbFJlZ2V4OiBzcWwoJ2FycmF5L2NvbnRhaW5zLWFsbC1yZWdleC5zcWwnKSxcbiAgICByZW1vdmU6IHNxbCgnYXJyYXkvcmVtb3ZlLnNxbCcpLFxuICB9LFxuICBtaXNjOiB7XG4gICAganNvbk9iamVjdFNldEtleXM6IHNxbCgnbWlzYy9qc29uLW9iamVjdC1zZXQta2V5cy5zcWwnKSxcbiAgfSxcbn07XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIZWxwZXIgZm9yIGxpbmtpbmcgdG8gZXh0ZXJuYWwgcXVlcnkgZmlsZXM7XG5mdW5jdGlvbiBzcWwoZmlsZSkge1xuICB2YXIgZnVsbFBhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCBmaWxlKTsgLy8gZ2VuZXJhdGluZyBmdWxsIHBhdGg7XG5cbiAgdmFyIHFmID0gbmV3IFF1ZXJ5RmlsZShmdWxsUGF0aCwgeyBtaW5pZnk6IHRydWUgfSk7XG5cbiAgaWYgKHFmLmVycm9yKSB7XG4gICAgdGhyb3cgcWYuZXJyb3I7XG4gIH1cblxuICByZXR1cm4gcWY7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7O0FBRVosSUFBSUEsU0FBUyxHQUFHQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUNELFNBQVM7QUFDL0MsSUFBSUUsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBTSxDQUFDO0FBRTFCRSxNQUFNLENBQUNDLE9BQU8sR0FBRztFQUNmQyxLQUFLLEVBQUU7SUFDTEMsR0FBRyxFQUFFQyxHQUFHLENBQUMsZUFBZSxDQUFDO0lBQ3pCQyxTQUFTLEVBQUVELEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQztJQUN0Q0UsUUFBUSxFQUFFRixHQUFHLENBQUMsb0JBQW9CLENBQUM7SUFDbkNHLFdBQVcsRUFBRUgsR0FBRyxDQUFDLHdCQUF3QixDQUFDO0lBQzFDSSxnQkFBZ0IsRUFBRUosR0FBRyxDQUFDLDhCQUE4QixDQUFDO0lBQ3JESyxNQUFNLEVBQUVMLEdBQUcsQ0FBQyxrQkFBa0I7RUFDaEMsQ0FBQztFQUNETSxJQUFJLEVBQUU7SUFDSkMsaUJBQWlCLEVBQUVQLEdBQUcsQ0FBQywrQkFBK0I7RUFDeEQ7QUFDRixDQUFDOztBQUVEO0FBQ0E7QUFDQSxTQUFTQSxHQUFHQSxDQUFDUSxJQUFJLEVBQUU7RUFDakIsSUFBSUMsUUFBUSxHQUFHZCxJQUFJLENBQUNlLElBQUksQ0FBQ0MsU0FBUyxFQUFFSCxJQUFJLENBQUMsQ0FBQyxDQUFDOztFQUUzQyxJQUFJSSxFQUFFLEdBQUcsSUFBSW5CLFNBQVMsQ0FBQ2dCLFFBQVEsRUFBRTtJQUFFSSxNQUFNLEVBQUU7RUFBSyxDQUFDLENBQUM7RUFFbEQsSUFBSUQsRUFBRSxDQUFDRSxLQUFLLEVBQUU7SUFDWixNQUFNRixFQUFFLENBQUNFLEtBQUs7RUFDaEI7RUFFQSxPQUFPRixFQUFFO0FBQ1giLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1,2 +1,2 @@
1
1
  "use strict";
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL1N0b3JhZ2UvU3RvcmFnZUFkYXB0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbmV4cG9ydCB0eXBlIFNjaGVtYVR5cGUgPSBhbnk7XG5leHBvcnQgdHlwZSBTdG9yYWdlQ2xhc3MgPSBhbnk7XG5leHBvcnQgdHlwZSBRdWVyeVR5cGUgPSBhbnk7XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5T3B0aW9ucyA9IHtcbiAgc2tpcD86IG51bWJlcixcbiAgbGltaXQ/OiBudW1iZXIsXG4gIGFjbD86IHN0cmluZ1tdLFxuICBzb3J0PzogeyBbc3RyaW5nXTogbnVtYmVyIH0sXG4gIGNvdW50PzogYm9vbGVhbiB8IG51bWJlcixcbiAga2V5cz86IHN0cmluZ1tdLFxuICBvcD86IHN0cmluZyxcbiAgZGlzdGluY3Q/OiBib29sZWFuLFxuICBwaXBlbGluZT86IGFueSxcbiAgcmVhZFByZWZlcmVuY2U/OiA/c3RyaW5nLFxuICBoaW50PzogP21peGVkLFxuICBleHBsYWluPzogQm9vbGVhbixcbiAgY2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbixcbiAgYWN0aW9uPzogc3RyaW5nLFxuICBhZGRzRmllbGQ/OiBib29sZWFuLFxuICBjb21tZW50Pzogc3RyaW5nLFxufTtcblxuZXhwb3J0IHR5cGUgVXBkYXRlUXVlcnlPcHRpb25zID0ge1xuICBtYW55PzogYm9vbGVhbixcbiAgdXBzZXJ0PzogYm9vbGVhbixcbn07XG5cbmV4cG9ydCB0eXBlIEZ1bGxRdWVyeU9wdGlvbnMgPSBRdWVyeU9wdGlvbnMgJiBVcGRhdGVRdWVyeU9wdGlvbnM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZUFkYXB0ZXIge1xuICBjYW5Tb3J0T25Kb2luVGFibGVzOiBib29sZWFuO1xuICBzY2hlbWFDYWNoZVR0bDogP251bWJlcjtcbiAgZW5hYmxlU2NoZW1hSG9va3M6IGJvb2xlYW47XG5cbiAgY2xhc3NFeGlzdHMoY2xhc3NOYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+O1xuICBzZXRDbGFzc0xldmVsUGVybWlzc2lvbnMoY2xhc3NOYW1lOiBzdHJpbmcsIGNscHM6IGFueSk6IFByb21pc2U8dm9pZD47XG4gIGNyZWF0ZUNsYXNzKGNsYXNzTmFtZTogc3RyaW5nLCBzY2hlbWE6IFNjaGVtYVR5cGUpOiBQcm9taXNlPHZvaWQ+O1xuICBhZGRGaWVsZElmTm90RXhpc3RzKGNsYXNzTmFtZTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZywgdHlwZTogYW55KTogUHJvbWlzZTx2b2lkPjtcbiAgdXBkYXRlRmllbGRPcHRpb25zKGNsYXNzTmFtZTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZywgdHlwZTogYW55KTogUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVBbGxDbGFzc2VzKGZhc3Q6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVGaWVsZHMoY2xhc3NOYW1lOiBzdHJpbmcsIHNjaGVtYTogU2NoZW1hVHlwZSwgZmllbGROYW1lczogQXJyYXk8c3RyaW5nPik6IFByb21pc2U8dm9pZD47XG4gIGdldEFsbENsYXNzZXMoKTogUHJvbWlzZTxTdG9yYWdlQ2xhc3NbXT47XG4gIGdldENsYXNzKGNsYXNzTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTdG9yYWdlQ2xhc3M+O1xuICBjcmVhdGVPYmplY3QoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIG9iamVjdDogYW55LFxuICAgIHRyYW5zYWN0aW9uYWxTZXNzaW9uOiA/YW55XG4gICk6IFByb21pc2U8YW55PjtcbiAgZGVsZXRlT2JqZWN0c0J5UXVlcnkoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIHF1ZXJ5OiBRdWVyeVR5cGUsXG4gICAgdHJhbnNhY3Rpb25hbFNlc3Npb246ID9hbnlcbiAgKTogUHJvbWlzZTx2b2lkPjtcbiAgdXBkYXRlT2JqZWN0c0J5UXVlcnkoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIHF1ZXJ5OiBRdWVyeVR5cGUsXG4gICAgdXBkYXRlOiBhbnksXG4gICAgdHJhbnNhY3Rpb25hbFNlc3Npb246ID9hbnlcbiAgKTogUHJvbWlzZTxbYW55XT47XG4gIGZpbmRPbmVBbmRVcGRhdGUoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIHF1ZXJ5OiBRdWVyeVR5cGUsXG4gICAgdXBkYXRlOiBhbnksXG4gICAgdHJhbnNhY3Rpb25hbFNlc3Npb246ID9hbnlcbiAgKTogUHJvbWlzZTxhbnk+O1xuICB1cHNlcnRPbmVPYmplY3QoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIHF1ZXJ5OiBRdWVyeVR5cGUsXG4gICAgdXBkYXRlOiBhbnksXG4gICAgdHJhbnNhY3Rpb25hbFNlc3Npb246ID9hbnlcbiAgKTogUHJvbWlzZTxhbnk+O1xuICBmaW5kKFxuICAgIGNsYXNzTmFtZTogc3RyaW5nLFxuICAgIHNjaGVtYTogU2NoZW1hVHlwZSxcbiAgICBxdWVyeTogUXVlcnlUeXBlLFxuICAgIG9wdGlvbnM6IFF1ZXJ5T3B0aW9uc1xuICApOiBQcm9taXNlPFthbnldPjtcbiAgZW5zdXJlSW5kZXgoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIGZpZWxkTmFtZXM6IHN0cmluZ1tdLFxuICAgIGluZGV4TmFtZT86IHN0cmluZyxcbiAgICBjYXNlU2Vuc2l0aXZlPzogYm9vbGVhbixcbiAgICBvcHRpb25zPzogT2JqZWN0XG4gICk6IFByb21pc2U8YW55PjtcbiAgZW5zdXJlVW5pcXVlbmVzcyhjbGFzc05hbWU6IHN0cmluZywgc2NoZW1hOiBTY2hlbWFUeXBlLCBmaWVsZE5hbWVzOiBBcnJheTxzdHJpbmc+KTogUHJvbWlzZTx2b2lkPjtcbiAgY291bnQoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIHF1ZXJ5OiBRdWVyeVR5cGUsXG4gICAgcmVhZFByZWZlcmVuY2U/OiBzdHJpbmcsXG4gICAgZXN0aW1hdGU/OiBib29sZWFuLFxuICAgIGhpbnQ/OiBtaXhlZCxcbiAgICBjb21tZW50Pzogc3RyaW5nXG4gICk6IFByb21pc2U8bnVtYmVyPjtcbiAgZGlzdGluY3QoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIHF1ZXJ5OiBRdWVyeVR5cGUsXG4gICAgZmllbGROYW1lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxhbnk+O1xuICBhZ2dyZWdhdGUoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBhbnksXG4gICAgcGlwZWxpbmU6IGFueSxcbiAgICByZWFkUHJlZmVyZW5jZTogP3N0cmluZyxcbiAgICBoaW50OiA/bWl4ZWQsXG4gICAgZXhwbGFpbj86IGJvb2xlYW4sXG4gICAgY29tbWVudD86IHN0cmluZ1xuICApOiBQcm9taXNlPGFueT47XG4gIHBlcmZvcm1Jbml0aWFsaXphdGlvbihvcHRpb25zOiA/YW55KTogUHJvbWlzZTx2b2lkPjtcbiAgd2F0Y2goY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkO1xuXG4gIC8vIEluZGV4aW5nXG4gIGNyZWF0ZUluZGV4ZXMoY2xhc3NOYW1lOiBzdHJpbmcsIGluZGV4ZXM6IGFueSwgY29ubjogP2FueSk6IFByb21pc2U8dm9pZD47XG4gIGdldEluZGV4ZXMoY2xhc3NOYW1lOiBzdHJpbmcsIGNvbm5lY3Rpb246ID9hbnkpOiBQcm9taXNlPHZvaWQ+O1xuICB1cGRhdGVTY2hlbWFXaXRoSW5kZXhlcygpOiBQcm9taXNlPHZvaWQ+O1xuICBzZXRJbmRleGVzV2l0aFNjaGVtYUZvcm1hdChcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgICBzdWJtaXR0ZWRJbmRleGVzOiBhbnksXG4gICAgZXhpc3RpbmdJbmRleGVzOiBhbnksXG4gICAgZmllbGRzOiBhbnksXG4gICAgY29ubjogP2FueVxuICApOiBQcm9taXNlPHZvaWQ+O1xuICBjcmVhdGVUcmFuc2FjdGlvbmFsU2Vzc2lvbigpOiBQcm9taXNlPGFueT47XG4gIGNvbW1pdFRyYW5zYWN0aW9uYWxTZXNzaW9uKHRyYW5zYWN0aW9uYWxTZXNzaW9uOiBhbnkpOiBQcm9taXNlPHZvaWQ+O1xuICBhYm9ydFRyYW5zYWN0aW9uYWxTZXNzaW9uKHRyYW5zYWN0aW9uYWxTZXNzaW9uOiBhbnkpOiBQcm9taXNlPHZvaWQ+O1xufVxuIl0sIm1hcHBpbmdzIjoiIn0=
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL1N0b3JhZ2UvU3RvcmFnZUFkYXB0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbmV4cG9ydCB0eXBlIFNjaGVtYVR5cGUgPSBhbnk7XG5leHBvcnQgdHlwZSBTdG9yYWdlQ2xhc3MgPSBhbnk7XG5leHBvcnQgdHlwZSBRdWVyeVR5cGUgPSBhbnk7XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5T3B0aW9ucyA9IHtcbiAgc2tpcD86IG51bWJlcixcbiAgbGltaXQ/OiBudW1iZXIsXG4gIGFjbD86IHN0cmluZ1tdLFxuICBzb3J0PzogeyBbc3RyaW5nXTogbnVtYmVyIH0sXG4gIGNvdW50PzogYm9vbGVhbiB8IG51bWJlcixcbiAga2V5cz86IHN0cmluZ1tdLFxuICBvcD86IHN0cmluZyxcbiAgZGlzdGluY3Q/OiBib29sZWFuLFxuICBwaXBlbGluZT86IGFueSxcbiAgcmVhZFByZWZlcmVuY2U/OiA/c3RyaW5nLFxuICBoaW50PzogP21peGVkLFxuICBleHBsYWluPzogQm9vbGVhbixcbiAgY2FzZUluc2Vuc2l0aXZlPzogYm9vbGVhbixcbiAgYWN0aW9uPzogc3RyaW5nLFxuICBhZGRzRmllbGQ/OiBib29sZWFuLFxuICBjb21tZW50Pzogc3RyaW5nLFxufTtcblxuZXhwb3J0IHR5cGUgVXBkYXRlUXVlcnlPcHRpb25zID0ge1xuICBtYW55PzogYm9vbGVhbixcbiAgdXBzZXJ0PzogYm9vbGVhbixcbn07XG5cbmV4cG9ydCB0eXBlIEZ1bGxRdWVyeU9wdGlvbnMgPSBRdWVyeU9wdGlvbnMgJiBVcGRhdGVRdWVyeU9wdGlvbnM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZUFkYXB0ZXIge1xuICBjYW5Tb3J0T25Kb2luVGFibGVzOiBib29sZWFuO1xuICBzY2hlbWFDYWNoZVR0bDogP251bWJlcjtcbiAgZW5hYmxlU2NoZW1hSG9va3M6IGJvb2xlYW47XG5cbiAgY2xhc3NFeGlzdHMoY2xhc3NOYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+O1xuICBzZXRDbGFzc0xldmVsUGVybWlzc2lvbnMoY2xhc3NOYW1lOiBzdHJpbmcsIGNscHM6IGFueSk6IFByb21pc2U8dm9pZD47XG4gIGNyZWF0ZUNsYXNzKGNsYXNzTmFtZTogc3RyaW5nLCBzY2hlbWE6IFNjaGVtYVR5cGUpOiBQcm9taXNlPHZvaWQ+O1xuICBhZGRGaWVsZElmTm90RXhpc3RzKGNsYXNzTmFtZTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZywgdHlwZTogYW55KTogUHJvbWlzZTx2b2lkPjtcbiAgdXBkYXRlRmllbGRPcHRpb25zKGNsYXNzTmFtZTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZywgdHlwZTogYW55KTogUHJvbWlzZTx2b2lkPjtcbiAgZGVsZXRlQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVBbGxDbGFzc2VzKGZhc3Q6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGVGaWVsZHMoY2xhc3NOYW1lOiBzdHJpbmcsIHNjaGVtYTogU2NoZW1hVHlwZSwgZmllbGROYW1lczogQXJyYXk8c3RyaW5nPik6IFByb21pc2U8dm9pZD47XG4gIGdldEFsbENsYXNzZXMoKTogUHJvbWlzZTxTdG9yYWdlQ2xhc3NbXT47XG4gIGdldENsYXNzKGNsYXNzTmFtZTogc3RyaW5nKTogUHJvbWlzZTxTdG9yYWdlQ2xhc3M+O1xuICBjcmVhdGVPYmplY3QoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIG9iamVjdDogYW55LFxuICAgIHRyYW5zYWN0aW9uYWxTZXNzaW9uOiA/YW55XG4gICk6IFByb21pc2U8YW55PjtcbiAgZGVsZXRlT2JqZWN0c0J5UXVlcnkoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIHF1ZXJ5OiBRdWVyeVR5cGUsXG4gICAgdHJhbnNhY3Rpb25hbFNlc3Npb246ID9hbnlcbiAgKTogUHJvbWlzZTx2b2lkPjtcbiAgdXBkYXRlT2JqZWN0c0J5UXVlcnkoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIHF1ZXJ5OiBRdWVyeVR5cGUsXG4gICAgdXBkYXRlOiBhbnksXG4gICAgdHJhbnNhY3Rpb25hbFNlc3Npb246ID9hbnlcbiAgKTogUHJvbWlzZTxbYW55XT47XG4gIGZpbmRPbmVBbmRVcGRhdGUoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIHF1ZXJ5OiBRdWVyeVR5cGUsXG4gICAgdXBkYXRlOiBhbnksXG4gICAgdHJhbnNhY3Rpb25hbFNlc3Npb246ID9hbnlcbiAgKTogUHJvbWlzZTxhbnk+O1xuICB1cHNlcnRPbmVPYmplY3QoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIHF1ZXJ5OiBRdWVyeVR5cGUsXG4gICAgdXBkYXRlOiBhbnksXG4gICAgdHJhbnNhY3Rpb25hbFNlc3Npb246ID9hbnlcbiAgKTogUHJvbWlzZTxhbnk+O1xuICBmaW5kKFxuICAgIGNsYXNzTmFtZTogc3RyaW5nLFxuICAgIHNjaGVtYTogU2NoZW1hVHlwZSxcbiAgICBxdWVyeTogUXVlcnlUeXBlLFxuICAgIG9wdGlvbnM6IFF1ZXJ5T3B0aW9uc1xuICApOiBQcm9taXNlPFthbnldPjtcbiAgZW5zdXJlSW5kZXgoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIGZpZWxkTmFtZXM6IHN0cmluZ1tdLFxuICAgIGluZGV4TmFtZT86IHN0cmluZyxcbiAgICBjYXNlU2Vuc2l0aXZlPzogYm9vbGVhbixcbiAgICBvcHRpb25zPzogT2JqZWN0XG4gICk6IFByb21pc2U8YW55PjtcbiAgZW5zdXJlVW5pcXVlbmVzcyhjbGFzc05hbWU6IHN0cmluZywgc2NoZW1hOiBTY2hlbWFUeXBlLCBmaWVsZE5hbWVzOiBBcnJheTxzdHJpbmc+KTogUHJvbWlzZTx2b2lkPjtcbiAgY291bnQoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIHF1ZXJ5OiBRdWVyeVR5cGUsXG4gICAgcmVhZFByZWZlcmVuY2U/OiBzdHJpbmcsXG4gICAgZXN0aW1hdGU/OiBib29sZWFuLFxuICAgIGhpbnQ/OiBtaXhlZCxcbiAgICBjb21tZW50Pzogc3RyaW5nXG4gICk6IFByb21pc2U8bnVtYmVyPjtcbiAgZGlzdGluY3QoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBTY2hlbWFUeXBlLFxuICAgIHF1ZXJ5OiBRdWVyeVR5cGUsXG4gICAgZmllbGROYW1lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxhbnk+O1xuICBhZ2dyZWdhdGUoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hOiBhbnksXG4gICAgcGlwZWxpbmU6IGFueSxcbiAgICByZWFkUHJlZmVyZW5jZTogP3N0cmluZyxcbiAgICBoaW50OiA/bWl4ZWQsXG4gICAgZXhwbGFpbj86IGJvb2xlYW4sXG4gICAgY29tbWVudD86IHN0cmluZ1xuICApOiBQcm9taXNlPGFueT47XG4gIHBlcmZvcm1Jbml0aWFsaXphdGlvbihvcHRpb25zOiA/YW55KTogUHJvbWlzZTx2b2lkPjtcbiAgd2F0Y2goY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkO1xuXG4gIC8vIEluZGV4aW5nXG4gIGNyZWF0ZUluZGV4ZXMoY2xhc3NOYW1lOiBzdHJpbmcsIGluZGV4ZXM6IGFueSwgY29ubjogP2FueSk6IFByb21pc2U8dm9pZD47XG4gIGdldEluZGV4ZXMoY2xhc3NOYW1lOiBzdHJpbmcsIGNvbm5lY3Rpb246ID9hbnkpOiBQcm9taXNlPHZvaWQ+O1xuICB1cGRhdGVTY2hlbWFXaXRoSW5kZXhlcygpOiBQcm9taXNlPHZvaWQ+O1xuICBzZXRJbmRleGVzV2l0aFNjaGVtYUZvcm1hdChcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgICBzdWJtaXR0ZWRJbmRleGVzOiBhbnksXG4gICAgZXhpc3RpbmdJbmRleGVzOiBhbnksXG4gICAgZmllbGRzOiBhbnksXG4gICAgY29ubjogP2FueVxuICApOiBQcm9taXNlPHZvaWQ+O1xuICBjcmVhdGVUcmFuc2FjdGlvbmFsU2Vzc2lvbigpOiBQcm9taXNlPGFueT47XG4gIGNvbW1pdFRyYW5zYWN0aW9uYWxTZXNzaW9uKHRyYW5zYWN0aW9uYWxTZXNzaW9uOiBhbnkpOiBQcm9taXNlPHZvaWQ+O1xuICBhYm9ydFRyYW5zYWN0aW9uYWxTZXNzaW9uKHRyYW5zYWN0aW9uYWxTZXNzaW9uOiBhbnkpOiBQcm9taXNlPHZvaWQ+O1xufVxuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
@@ -32,4 +32,4 @@ class WSAdapter extends _WSSAdapter.WSSAdapter {
32
32
  }
33
33
  exports.WSAdapter = WSAdapter;
34
34
  var _default = exports.default = WSAdapter;
35
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfV1NTQWRhcHRlciIsInJlcXVpcmUiLCJXZWJTb2NrZXRTZXJ2ZXIiLCJTZXJ2ZXIiLCJXU0FkYXB0ZXIiLCJXU1NBZGFwdGVyIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwib25MaXN0ZW4iLCJvbkNvbm5lY3Rpb24iLCJ3cyIsIm9uRXJyb3IiLCJlcnJvciIsInN0YXJ0Iiwid3NzIiwic2VydmVyIiwib24iLCJjbG9zZSIsImV4cG9ydHMiLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQWRhcHRlcnMvV2ViU29ja2V0U2VydmVyL1dTQWRhcHRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKmVzbGludCBuby11bnVzZWQtdmFyczogXCJvZmZcIiovXG5pbXBvcnQgeyBXU1NBZGFwdGVyIH0gZnJvbSAnLi9XU1NBZGFwdGVyJztcbmNvbnN0IFdlYlNvY2tldFNlcnZlciA9IHJlcXVpcmUoJ3dzJykuU2VydmVyO1xuXG4vKipcbiAqIFdyYXBwZXIgZm9yIHdzIG5vZGUgbW9kdWxlXG4gKi9cbmV4cG9ydCBjbGFzcyBXU0FkYXB0ZXIgZXh0ZW5kcyBXU1NBZGFwdGVyIHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogYW55KSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIG9uTGlzdGVuKCkge31cbiAgb25Db25uZWN0aW9uKHdzKSB7fVxuICBvbkVycm9yKGVycm9yKSB7fVxuICBzdGFydCgpIHtcbiAgICBjb25zdCB3c3MgPSBuZXcgV2ViU29ja2V0U2VydmVyKHsgc2VydmVyOiB0aGlzLm9wdGlvbnMuc2VydmVyIH0pO1xuICAgIHdzcy5vbignbGlzdGVuaW5nJywgdGhpcy5vbkxpc3Rlbik7XG4gICAgd3NzLm9uKCdjb25uZWN0aW9uJywgdGhpcy5vbkNvbm5lY3Rpb24pO1xuICAgIHdzcy5vbignZXJyb3InLCB0aGlzLm9uRXJyb3IpO1xuICB9XG4gIGNsb3NlKCkge31cbn1cblxuZXhwb3J0IGRlZmF1bHQgV1NBZGFwdGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUFEQTs7QUFFQSxNQUFNQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQ0UsTUFBTTs7QUFFNUM7QUFDQTtBQUNBO0FBQ08sTUFBTUMsU0FBUyxTQUFTQyxzQkFBVSxDQUFDO0VBQ3hDQyxXQUFXQSxDQUFDQyxPQUFZLEVBQUU7SUFDeEIsS0FBSyxDQUFDQSxPQUFPLENBQUM7SUFDZCxJQUFJLENBQUNBLE9BQU8sR0FBR0EsT0FBTztFQUN4QjtFQUVBQyxRQUFRQSxDQUFBLEVBQUcsQ0FBQztFQUNaQyxZQUFZQSxDQUFDQyxFQUFFLEVBQUUsQ0FBQztFQUNsQkMsT0FBT0EsQ0FBQ0MsS0FBSyxFQUFFLENBQUM7RUFDaEJDLEtBQUtBLENBQUEsRUFBRztJQUNOLE1BQU1DLEdBQUcsR0FBRyxJQUFJWixlQUFlLENBQUM7TUFBRWEsTUFBTSxFQUFFLElBQUksQ0FBQ1IsT0FBTyxDQUFDUTtJQUFPLENBQUMsQ0FBQztJQUNoRUQsR0FBRyxDQUFDRSxFQUFFLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQ1IsUUFBUSxDQUFDO0lBQ2xDTSxHQUFHLENBQUNFLEVBQUUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDUCxZQUFZLENBQUM7SUFDdkNLLEdBQUcsQ0FBQ0UsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUNMLE9BQU8sQ0FBQztFQUMvQjtFQUNBTSxLQUFLQSxDQUFBLEVBQUcsQ0FBQztBQUNYO0FBQUNDLE9BQUEsQ0FBQWQsU0FBQSxHQUFBQSxTQUFBO0FBQUEsSUFBQWUsUUFBQSxHQUFBRCxPQUFBLENBQUFFLE9BQUEsR0FFY2hCLFNBQVMifQ==
35
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfV1NTQWRhcHRlciIsInJlcXVpcmUiLCJXZWJTb2NrZXRTZXJ2ZXIiLCJTZXJ2ZXIiLCJXU0FkYXB0ZXIiLCJXU1NBZGFwdGVyIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwib25MaXN0ZW4iLCJvbkNvbm5lY3Rpb24iLCJ3cyIsIm9uRXJyb3IiLCJlcnJvciIsInN0YXJ0Iiwid3NzIiwic2VydmVyIiwib24iLCJjbG9zZSIsImV4cG9ydHMiLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQWRhcHRlcnMvV2ViU29ja2V0U2VydmVyL1dTQWRhcHRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKmVzbGludCBuby11bnVzZWQtdmFyczogXCJvZmZcIiovXG5pbXBvcnQgeyBXU1NBZGFwdGVyIH0gZnJvbSAnLi9XU1NBZGFwdGVyJztcbmNvbnN0IFdlYlNvY2tldFNlcnZlciA9IHJlcXVpcmUoJ3dzJykuU2VydmVyO1xuXG4vKipcbiAqIFdyYXBwZXIgZm9yIHdzIG5vZGUgbW9kdWxlXG4gKi9cbmV4cG9ydCBjbGFzcyBXU0FkYXB0ZXIgZXh0ZW5kcyBXU1NBZGFwdGVyIHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogYW55KSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIG9uTGlzdGVuKCkge31cbiAgb25Db25uZWN0aW9uKHdzKSB7fVxuICBvbkVycm9yKGVycm9yKSB7fVxuICBzdGFydCgpIHtcbiAgICBjb25zdCB3c3MgPSBuZXcgV2ViU29ja2V0U2VydmVyKHsgc2VydmVyOiB0aGlzLm9wdGlvbnMuc2VydmVyIH0pO1xuICAgIHdzcy5vbignbGlzdGVuaW5nJywgdGhpcy5vbkxpc3Rlbik7XG4gICAgd3NzLm9uKCdjb25uZWN0aW9uJywgdGhpcy5vbkNvbm5lY3Rpb24pO1xuICAgIHdzcy5vbignZXJyb3InLCB0aGlzLm9uRXJyb3IpO1xuICB9XG4gIGNsb3NlKCkge31cbn1cblxuZXhwb3J0IGRlZmF1bHQgV1NBZGFwdGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUFEQTs7QUFFQSxNQUFNQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQ0UsTUFBTTs7QUFFNUM7QUFDQTtBQUNBO0FBQ08sTUFBTUMsU0FBUyxTQUFTQyxzQkFBVSxDQUFDO0VBQ3hDQyxXQUFXQSxDQUFDQyxPQUFZLEVBQUU7SUFDeEIsS0FBSyxDQUFDQSxPQUFPLENBQUM7SUFDZCxJQUFJLENBQUNBLE9BQU8sR0FBR0EsT0FBTztFQUN4QjtFQUVBQyxRQUFRQSxDQUFBLEVBQUcsQ0FBQztFQUNaQyxZQUFZQSxDQUFDQyxFQUFFLEVBQUUsQ0FBQztFQUNsQkMsT0FBT0EsQ0FBQ0MsS0FBSyxFQUFFLENBQUM7RUFDaEJDLEtBQUtBLENBQUEsRUFBRztJQUNOLE1BQU1DLEdBQUcsR0FBRyxJQUFJWixlQUFlLENBQUM7TUFBRWEsTUFBTSxFQUFFLElBQUksQ0FBQ1IsT0FBTyxDQUFDUTtJQUFPLENBQUMsQ0FBQztJQUNoRUQsR0FBRyxDQUFDRSxFQUFFLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQ1IsUUFBUSxDQUFDO0lBQ2xDTSxHQUFHLENBQUNFLEVBQUUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDUCxZQUFZLENBQUM7SUFDdkNLLEdBQUcsQ0FBQ0UsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUNMLE9BQU8sQ0FBQztFQUMvQjtFQUNBTSxLQUFLQSxDQUFBLEVBQUcsQ0FBQztBQUNYO0FBQUNDLE9BQUEsQ0FBQWQsU0FBQSxHQUFBQSxTQUFBO0FBQUEsSUFBQWUsUUFBQSxHQUFBRCxPQUFBLENBQUFFLE9BQUEsR0FFY2hCLFNBQVMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -63,4 +63,4 @@ class WSSAdapter {
63
63
  }
64
64
  exports.WSSAdapter = WSSAdapter;
65
65
  var _default = exports.default = WSSAdapter;
66
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJXU1NBZGFwdGVyIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwib25MaXN0ZW4iLCJvbkNvbm5lY3Rpb24iLCJvbkVycm9yIiwic3RhcnQiLCJjbG9zZSIsImV4cG9ydHMiLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQWRhcHRlcnMvV2ViU29ja2V0U2VydmVyL1dTU0FkYXB0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyplc2xpbnQgbm8tdW51c2VkLXZhcnM6IFwib2ZmXCIqL1xuLy8gV2ViU29ja2V0U2VydmVyIEFkYXB0ZXJcbi8vXG4vLyBBZGFwdGVyIGNsYXNzZXMgbXVzdCBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6XG4vLyAqIG9uTGlzdGVuKClcbi8vICogb25Db25uZWN0aW9uKHdzKVxuLy8gKiBvbkVycm9yKGVycm9yKVxuLy8gKiBzdGFydCgpXG4vLyAqIGNsb3NlKClcbi8vXG4vLyBEZWZhdWx0IGlzIFdTQWRhcHRlci4gVGhlIGFib3ZlIGZ1bmN0aW9ucyB3aWxsIGJlIGJpbmRlZC5cblxuLyoqXG4gKiBAaW50ZXJmYWNlXG4gKiBAbWVtYmVyb2YgbW9kdWxlOkFkYXB0ZXJzXG4gKi9cbmV4cG9ydCBjbGFzcyBXU1NBZGFwdGVyIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0ge2h0dHAuU2VydmVyfGh0dHBzLlNlcnZlcn0gc2VydmVyXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgdGhpcy5vbkxpc3RlbiA9ICgpID0+IHt9O1xuICAgIHRoaXMub25Db25uZWN0aW9uID0gKCkgPT4ge307XG4gICAgdGhpcy5vbkVycm9yID0gKCkgPT4ge307XG4gIH1cblxuICAvLyAvKipcbiAgLy8gICogRW1pdHRlZCB3aGVuIHRoZSB1bmRlcmx5aW5nIHNlcnZlciBoYXMgYmVlbiBib3VuZC5cbiAgLy8gICovXG4gIC8vIG9uTGlzdGVuKCkge31cblxuICAvLyAvKipcbiAgLy8gICogRW1pdHRlZCB3aGVuIHRoZSBoYW5kc2hha2UgaXMgY29tcGxldGUuXG4gIC8vICAqXG4gIC8vICAqIEBwYXJhbSB7V2ViU29ja2V0fSB3cyAtIFJGQyA2NDU1IFdlYlNvY2tldC5cbiAgLy8gICovXG4gIC8vIG9uQ29ubmVjdGlvbih3cykge31cblxuICAvLyAvKipcbiAgLy8gICogRW1pdHRlZCB3aGVuIGVycm9yIGV2ZW50IGlzIGNhbGxlZC5cbiAgLy8gICpcbiAgLy8gICogQHBhcmFtIHtFcnJvcn0gZXJyb3IgLSBXZWJTb2NrZXRTZXJ2ZXIgZXJyb3JcbiAgLy8gICovXG4gIC8vIG9uRXJyb3IoZXJyb3IpIHt9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgQ29ubmVjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICovXG4gIHN0YXJ0KG9wdGlvbnMpIHt9XG5cbiAgLyoqXG4gICAqIENsb3NlcyBzZXJ2ZXIuXG4gICAqL1xuICBjbG9zZSgpIHt9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFdTU0FkYXB0ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNQSxVQUFVLENBQUM7RUFDdEI7QUFDRjtBQUNBO0VBQ0VDLFdBQVdBLENBQUNDLE9BQU8sRUFBRTtJQUNuQixJQUFJLENBQUNDLFFBQVEsR0FBRyxNQUFNLENBQUMsQ0FBQztJQUN4QixJQUFJLENBQUNDLFlBQVksR0FBRyxNQUFNLENBQUMsQ0FBQztJQUM1QixJQUFJLENBQUNDLE9BQU8sR0FBRyxNQUFNLENBQUMsQ0FBQztFQUN6Qjs7RUFFQTtFQUNBO0VBQ0E7RUFDQTs7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztFQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7RUFDRUMsS0FBS0EsQ0FBQ0osT0FBTyxFQUFFLENBQUM7O0VBRWhCO0FBQ0Y7QUFDQTtFQUNFSyxLQUFLQSxDQUFBLEVBQUcsQ0FBQztBQUNYO0FBQUNDLE9BQUEsQ0FBQVIsVUFBQSxHQUFBQSxVQUFBO0FBQUEsSUFBQVMsUUFBQSxHQUFBRCxPQUFBLENBQUFFLE9BQUEsR0FFY1YsVUFBVSJ9
66
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJXU1NBZGFwdGVyIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwib25MaXN0ZW4iLCJvbkNvbm5lY3Rpb24iLCJvbkVycm9yIiwic3RhcnQiLCJjbG9zZSIsImV4cG9ydHMiLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQWRhcHRlcnMvV2ViU29ja2V0U2VydmVyL1dTU0FkYXB0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyplc2xpbnQgbm8tdW51c2VkLXZhcnM6IFwib2ZmXCIqL1xuLy8gV2ViU29ja2V0U2VydmVyIEFkYXB0ZXJcbi8vXG4vLyBBZGFwdGVyIGNsYXNzZXMgbXVzdCBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6XG4vLyAqIG9uTGlzdGVuKClcbi8vICogb25Db25uZWN0aW9uKHdzKVxuLy8gKiBvbkVycm9yKGVycm9yKVxuLy8gKiBzdGFydCgpXG4vLyAqIGNsb3NlKClcbi8vXG4vLyBEZWZhdWx0IGlzIFdTQWRhcHRlci4gVGhlIGFib3ZlIGZ1bmN0aW9ucyB3aWxsIGJlIGJpbmRlZC5cblxuLyoqXG4gKiBAaW50ZXJmYWNlXG4gKiBAbWVtYmVyb2YgbW9kdWxlOkFkYXB0ZXJzXG4gKi9cbmV4cG9ydCBjbGFzcyBXU1NBZGFwdGVyIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0ge2h0dHAuU2VydmVyfGh0dHBzLlNlcnZlcn0gc2VydmVyXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgdGhpcy5vbkxpc3RlbiA9ICgpID0+IHt9O1xuICAgIHRoaXMub25Db25uZWN0aW9uID0gKCkgPT4ge307XG4gICAgdGhpcy5vbkVycm9yID0gKCkgPT4ge307XG4gIH1cblxuICAvLyAvKipcbiAgLy8gICogRW1pdHRlZCB3aGVuIHRoZSB1bmRlcmx5aW5nIHNlcnZlciBoYXMgYmVlbiBib3VuZC5cbiAgLy8gICovXG4gIC8vIG9uTGlzdGVuKCkge31cblxuICAvLyAvKipcbiAgLy8gICogRW1pdHRlZCB3aGVuIHRoZSBoYW5kc2hha2UgaXMgY29tcGxldGUuXG4gIC8vICAqXG4gIC8vICAqIEBwYXJhbSB7V2ViU29ja2V0fSB3cyAtIFJGQyA2NDU1IFdlYlNvY2tldC5cbiAgLy8gICovXG4gIC8vIG9uQ29ubmVjdGlvbih3cykge31cblxuICAvLyAvKipcbiAgLy8gICogRW1pdHRlZCB3aGVuIGVycm9yIGV2ZW50IGlzIGNhbGxlZC5cbiAgLy8gICpcbiAgLy8gICogQHBhcmFtIHtFcnJvcn0gZXJyb3IgLSBXZWJTb2NrZXRTZXJ2ZXIgZXJyb3JcbiAgLy8gICovXG4gIC8vIG9uRXJyb3IoZXJyb3IpIHt9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgQ29ubmVjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICovXG4gIHN0YXJ0KG9wdGlvbnMpIHt9XG5cbiAgLyoqXG4gICAqIENsb3NlcyBzZXJ2ZXIuXG4gICAqL1xuICBjbG9zZSgpIHt9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFdTU0FkYXB0ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNQSxVQUFVLENBQUM7RUFDdEI7QUFDRjtBQUNBO0VBQ0VDLFdBQVdBLENBQUNDLE9BQU8sRUFBRTtJQUNuQixJQUFJLENBQUNDLFFBQVEsR0FBRyxNQUFNLENBQUMsQ0FBQztJQUN4QixJQUFJLENBQUNDLFlBQVksR0FBRyxNQUFNLENBQUMsQ0FBQztJQUM1QixJQUFJLENBQUNDLE9BQU8sR0FBRyxNQUFNLENBQUMsQ0FBQztFQUN6Qjs7RUFFQTtFQUNBO0VBQ0E7RUFDQTs7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztFQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7RUFDRUMsS0FBS0EsQ0FBQ0osT0FBTyxFQUFFLENBQUM7O0VBRWhCO0FBQ0Y7QUFDQTtFQUNFSyxLQUFLQSxDQUFBLEVBQUcsQ0FBQztBQUNYO0FBQUNDLE9BQUEsQ0FBQVIsVUFBQSxHQUFBQSxVQUFBO0FBQUEsSUFBQVMsUUFBQSxHQUFBRCxPQUFBLENBQUFFLE9BQUEsR0FFY1YsVUFBVSIsImlnbm9yZUxpc3QiOltdfQ==
package/lib/Auth.js CHANGED
@@ -5,11 +5,11 @@ var _triggers = require("./triggers");
5
5
  var _logger = require("./logger");
6
6
  var _RestQuery = _interopRequireDefault(require("./RestQuery"));
7
7
  var _RestWrite = _interopRequireDefault(require("./RestWrite"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
9
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10
10
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11
- 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; }
12
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
11
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
12
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
13
13
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
14
14
  const Parse = require('parse/node');
15
15
  // An Auth object tells you who is requesting something and whether
@@ -86,6 +86,17 @@ function nobody(config) {
86
86
  isMaster: false
87
87
  });
88
88
  }
89
+
90
+ /**
91
+ * Checks whether session should be updated based on last update time & session length.
92
+ */
93
+ function shouldUpdateSessionExpiry(config, session) {
94
+ const resetAfter = config.sessionLength / 2;
95
+ const lastUpdated = new Date(session === null || session === void 0 ? void 0 : session.updatedAt);
96
+ const skipRange = new Date();
97
+ skipRange.setTime(skipRange.getTime() - resetAfter * 1000);
98
+ return lastUpdated <= skipRange;
99
+ }
89
100
  const throttle = {};
90
101
  const renewSessionIfNeeded = async ({
91
102
  config,
@@ -98,7 +109,6 @@ const renewSessionIfNeeded = async ({
98
109
  clearTimeout(throttle[sessionToken]);
99
110
  throttle[sessionToken] = setTimeout(async () => {
100
111
  try {
101
- var _session;
102
112
  if (!session) {
103
113
  const query = await (0, _RestQuery.default)({
104
114
  method: _RestQuery.default.Method.get,
@@ -118,10 +128,7 @@ const renewSessionIfNeeded = async ({
118
128
  } = await query.execute();
119
129
  session = results[0];
120
130
  }
121
- const lastUpdated = new Date((_session = session) === null || _session === void 0 ? void 0 : _session.updatedAt);
122
- const yesterday = new Date();
123
- yesterday.setDate(yesterday.getDate() - 1);
124
- if (lastUpdated > yesterday || !session) {
131
+ if (!shouldUpdateSessionExpiry(config, session) || !session) {
125
132
  return;
126
133
  }
127
134
  const expiresAt = config.generateSessionExpiresAt();
@@ -587,6 +594,7 @@ module.exports = {
587
594
  maintenance,
588
595
  nobody,
589
596
  readOnly,
597
+ shouldUpdateSessionExpiry,
590
598
  getAuthForSessionToken,
591
599
  getAuthForLegacySessionToken,
592
600
  findUsersWithAuthData,
@@ -594,4 +602,4 @@ module.exports = {
594
602
  checkIfUserHasProvidedConfiguredProvidersForLogin,
595
603
  handleAuthDataValidation
596
604
  };
597
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXRpbCIsInJlcXVpcmUiLCJfdHJpZ2dlcnMiLCJfbG9nZ2VyIiwiX1Jlc3RRdWVyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfUmVzdFdyaXRlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5Iiwia2V5IiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIk51bWJlciIsIlBhcnNlIiwiQXV0aCIsImNvbmZpZyIsImNhY2hlQ29udHJvbGxlciIsInVuZGVmaW5lZCIsImlzTWFzdGVyIiwiaXNNYWludGVuYW5jZSIsImlzUmVhZE9ubHkiLCJ1c2VyIiwiaW5zdGFsbGF0aW9uSWQiLCJ1c2VyUm9sZXMiLCJmZXRjaGVkUm9sZXMiLCJyb2xlUHJvbWlzZSIsInByb3RvdHlwZSIsImlzVW5hdXRoZW50aWNhdGVkIiwibWFzdGVyIiwibWFpbnRlbmFuY2UiLCJyZWFkT25seSIsIm5vYm9keSIsInRocm90dGxlIiwicmVuZXdTZXNzaW9uSWZOZWVkZWQiLCJzZXNzaW9uIiwic2Vzc2lvblRva2VuIiwiZXh0ZW5kU2Vzc2lvbk9uVXNlIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsIl9zZXNzaW9uIiwicXVlcnkiLCJSZXN0UXVlcnkiLCJtZXRob2QiLCJNZXRob2QiLCJnZXQiLCJhdXRoIiwicnVuQmVmb3JlRmluZCIsImNsYXNzTmFtZSIsInJlc3RXaGVyZSIsInJlc3RPcHRpb25zIiwibGltaXQiLCJyZXN1bHRzIiwiZXhlY3V0ZSIsImxhc3RVcGRhdGVkIiwiRGF0ZSIsInVwZGF0ZWRBdCIsInllc3RlcmRheSIsInNldERhdGUiLCJnZXREYXRlIiwiZXhwaXJlc0F0IiwiZ2VuZXJhdGVTZXNzaW9uRXhwaXJlc0F0IiwiUmVzdFdyaXRlIiwib2JqZWN0SWQiLCJfZW5jb2RlIiwiY29kZSIsIkVycm9yIiwiT0JKRUNUX05PVF9GT1VORCIsImxvZ2dlciIsImVycm9yIiwiZ2V0QXV0aEZvclNlc3Npb25Ub2tlbiIsInVzZXJKU09OIiwiY2FjaGVkVXNlciIsImZyb21KU09OIiwiUHJvbWlzZSIsInJlc29sdmUiLCJpbmNsdWRlIiwiUXVlcnkiLCJTZXNzaW9uIiwiZXF1YWxUbyIsImZpbmQiLCJ1c2VNYXN0ZXJLZXkiLCJtYXAiLCJ0b0pTT04iLCJJTlZBTElEX1NFU1NJT05fVE9LRU4iLCJub3ciLCJpc28iLCJwYXNzd29yZCIsInB1dCIsInVzZXJPYmplY3QiLCJnZXRBdXRoRm9yTGVnYWN5U2Vzc2lvblRva2VuIiwiX3Nlc3Npb25fdG9rZW4iLCJ0aGVuIiwicmVzcG9uc2UiLCJnZXRVc2VyUm9sZXMiLCJfbG9hZFJvbGVzIiwiZ2V0Um9sZXNGb3JVc2VyIiwidXNlcnMiLCJfX3R5cGUiLCJpZCIsImVhY2giLCJyZXN1bHQiLCJSb2xlIiwiY2FjaGVkUm9sZXMiLCJyb2xlIiwiY2FjaGVSb2xlcyIsInJvbGVzTWFwIiwicmVkdWNlIiwibSIsIm5hbWVzIiwibmFtZSIsImlkcyIsInJvbGVOYW1lcyIsIl9nZXRBbGxSb2xlc05hbWVzRm9yUm9sZUlkcyIsIkFycmF5IiwiY2xlYXJSb2xlQ2FjaGUiLCJkZWwiLCJnZXRSb2xlc0J5SWRzIiwiaW5zIiwiY29udGFpbmVkSW4iLCJyb2xlcyIsIiRpbiIsInJvbGVJRHMiLCJxdWVyaWVkUm9sZXMiLCJyb2xlSUQiLCJ3YXNRdWVyaWVkIiwiU2V0IiwicmVzdWx0TWFwIiwibWVtbyIsImNvbmNhdCIsImZpbmRVc2Vyc1dpdGhBdXRoRGF0YSIsImF1dGhEYXRhIiwicHJvdmlkZXJzIiwicHJvdmlkZXIiLCJxdWVyeUtleSIsInEiLCJkYXRhYmFzZSIsIiRvciIsImhhc011dGF0ZWRBdXRoRGF0YSIsInVzZXJBdXRoRGF0YSIsIm11dGF0ZWRBdXRoRGF0YSIsInByb3ZpZGVyRGF0YSIsInVzZXJQcm92aWRlckF1dGhEYXRhIiwiaXNEZWVwU3RyaWN0RXF1YWwiLCJjaGVja0lmVXNlckhhc1Byb3ZpZGVkQ29uZmlndXJlZFByb3ZpZGVyc0ZvckxvZ2luIiwicmVxIiwic2F2ZWRVc2VyUHJvdmlkZXJzIiwiYWRhcHRlciIsImF1dGhEYXRhTWFuYWdlciIsImdldFZhbGlkYXRvckZvclByb3ZpZGVyIiwiaGFzUHJvdmlkZWRBU29sb1Byb3ZpZGVyIiwic29tZSIsInBvbGljeSIsImFkZGl0aW9uUHJvdmlkZXJzTm90Rm91bmQiLCJoYXNQcm92aWRlZEF0TGVhc3RPbmVBZGRpdGlvbmFsUHJvdmlkZXIiLCJyZXF1ZXN0T2JqZWN0IiwiaXAiLCJPVEhFUl9DQVVTRSIsImpvaW4iLCJoYW5kbGVBdXRoRGF0YVZhbGlkYXRpb24iLCJmb3VuZFVzZXIiLCJVc2VyIiwiZ2V0VXNlcklkIiwiZmV0Y2giLCJ1cGRhdGVkT2JqZWN0IiwiYnVpbGRQYXJzZU9iamVjdHMiLCJnZXRSZXF1ZXN0T2JqZWN0IiwiYWNjIiwiYXV0aERhdGFSZXNwb25zZSIsImF1dGhLZXlzIiwic29ydCIsInZhbGlkYXRvciIsImF1dGhQcm92aWRlciIsImVuYWJsZWQiLCJVTlNVUFBPUlRFRF9TRVJWSUNFIiwidmFsaWRhdGlvblJlc3VsdCIsInRyaWdnZXJOYW1lIiwiZG9Ob3RTYXZlIiwic2F2ZSIsImVyciIsInJlc29sdmVFcnJvciIsIlNDUklQVF9GQUlMRUQiLCJtZXNzYWdlIiwidXNlclN0cmluZyIsImRhdGEiLCJKU09OIiwic3RyaW5naWZ5IiwiYXV0aGVudGljYXRpb25TdGVwIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9BdXRoLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpO1xuaW1wb3J0IHsgaXNEZWVwU3RyaWN0RXF1YWwgfSBmcm9tICd1dGlsJztcbmltcG9ydCB7IGdldFJlcXVlc3RPYmplY3QsIHJlc29sdmVFcnJvciB9IGZyb20gJy4vdHJpZ2dlcnMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IFJlc3RRdWVyeSBmcm9tICcuL1Jlc3RRdWVyeSc7XG5pbXBvcnQgUmVzdFdyaXRlIGZyb20gJy4vUmVzdFdyaXRlJztcblxuLy8gQW4gQXV0aCBvYmplY3QgdGVsbHMgeW91IHdobyBpcyByZXF1ZXN0aW5nIHNvbWV0aGluZyBhbmQgd2hldGhlclxuLy8gdGhlIG1hc3RlciBrZXkgd2FzIHVzZWQuXG4vLyB1c2VyT2JqZWN0IGlzIGEgUGFyc2UuVXNlciBhbmQgY2FuIGJlIG51bGwgaWYgdGhlcmUncyBubyB1c2VyLlxuZnVuY3Rpb24gQXV0aCh7XG4gIGNvbmZpZyxcbiAgY2FjaGVDb250cm9sbGVyID0gdW5kZWZpbmVkLFxuICBpc01hc3RlciA9IGZhbHNlLFxuICBpc01haW50ZW5hbmNlID0gZmFsc2UsXG4gIGlzUmVhZE9ubHkgPSBmYWxzZSxcbiAgdXNlcixcbiAgaW5zdGFsbGF0aW9uSWQsXG59KSB7XG4gIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICB0aGlzLmNhY2hlQ29udHJvbGxlciA9IGNhY2hlQ29udHJvbGxlciB8fCAoY29uZmlnICYmIGNvbmZpZy5jYWNoZUNvbnRyb2xsZXIpO1xuICB0aGlzLmluc3RhbGxhdGlvbklkID0gaW5zdGFsbGF0aW9uSWQ7XG4gIHRoaXMuaXNNYXN0ZXIgPSBpc01hc3RlcjtcbiAgdGhpcy5pc01haW50ZW5hbmNlID0gaXNNYWludGVuYW5jZTtcbiAgdGhpcy51c2VyID0gdXNlcjtcbiAgdGhpcy5pc1JlYWRPbmx5ID0gaXNSZWFkT25seTtcblxuICAvLyBBc3N1bWluZyBhIHVzZXJzIHJvbGVzIHdvbid0IGNoYW5nZSBkdXJpbmcgYSBzaW5nbGUgcmVxdWVzdCwgd2UnbGxcbiAgLy8gb25seSBsb2FkIHRoZW0gb25jZS5cbiAgdGhpcy51c2VyUm9sZXMgPSBbXTtcbiAgdGhpcy5mZXRjaGVkUm9sZXMgPSBmYWxzZTtcbiAgdGhpcy5yb2xlUHJvbWlzZSA9IG51bGw7XG59XG5cbi8vIFdoZXRoZXIgdGhpcyBhdXRoIGNvdWxkIHBvc3NpYmx5IG1vZGlmeSB0aGUgZ2l2ZW4gdXNlciBpZC5cbi8vIEl0IHN0aWxsIGNvdWxkIGJlIGZvcmJpZGRlbiB2aWEgQUNMcyBldmVuIGlmIHRoaXMgcmV0dXJucyB0cnVlLlxuQXV0aC5wcm90b3R5cGUuaXNVbmF1dGhlbnRpY2F0ZWQgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmlzTWFzdGVyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0aGlzLmlzTWFpbnRlbmFuY2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHRoaXMudXNlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8vIEEgaGVscGVyIHRvIGdldCBhIG1hc3Rlci1sZXZlbCBBdXRoIG9iamVjdFxuZnVuY3Rpb24gbWFzdGVyKGNvbmZpZykge1xuICByZXR1cm4gbmV3IEF1dGgoeyBjb25maWcsIGlzTWFzdGVyOiB0cnVlIH0pO1xufVxuXG4vLyBBIGhlbHBlciB0byBnZXQgYSBtYWludGVuYW5jZS1sZXZlbCBBdXRoIG9iamVjdFxuZnVuY3Rpb24gbWFpbnRlbmFuY2UoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgQXV0aCh7IGNvbmZpZywgaXNNYWludGVuYW5jZTogdHJ1ZSB9KTtcbn1cblxuLy8gQSBoZWxwZXIgdG8gZ2V0IGEgbWFzdGVyLWxldmVsIEF1dGggb2JqZWN0XG5mdW5jdGlvbiByZWFkT25seShjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBBdXRoKHsgY29uZmlnLCBpc01hc3RlcjogdHJ1ZSwgaXNSZWFkT25seTogdHJ1ZSB9KTtcbn1cblxuLy8gQSBoZWxwZXIgdG8gZ2V0IGEgbm9ib2R5LWxldmVsIEF1dGggb2JqZWN0XG5mdW5jdGlvbiBub2JvZHkoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgQXV0aCh7IGNvbmZpZywgaXNNYXN0ZXI6IGZhbHNlIH0pO1xufVxuXG5jb25zdCB0aHJvdHRsZSA9IHt9O1xuY29uc3QgcmVuZXdTZXNzaW9uSWZOZWVkZWQgPSBhc3luYyAoeyBjb25maWcsIHNlc3Npb24sIHNlc3Npb25Ub2tlbiB9KSA9PiB7XG4gIGlmICghY29uZmlnPy5leHRlbmRTZXNzaW9uT25Vc2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY2xlYXJUaW1lb3V0KHRocm90dGxlW3Nlc3Npb25Ub2tlbl0pO1xuICB0aHJvdHRsZVtzZXNzaW9uVG9rZW5dID0gc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghc2Vzc2lvbikge1xuICAgICAgICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmdldCxcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgYXV0aDogbWFzdGVyKGNvbmZpZyksXG4gICAgICAgICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgICAgICAgY2xhc3NOYW1lOiAnX1Nlc3Npb24nLFxuICAgICAgICAgIHJlc3RXaGVyZTogeyBzZXNzaW9uVG9rZW4gfSxcbiAgICAgICAgICByZXN0T3B0aW9uczogeyBsaW1pdDogMSB9LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgeyByZXN1bHRzIH0gPSBhd2FpdCBxdWVyeS5leGVjdXRlKCk7XG4gICAgICAgIHNlc3Npb24gPSByZXN1bHRzWzBdO1xuICAgICAgfVxuICAgICAgY29uc3QgbGFzdFVwZGF0ZWQgPSBuZXcgRGF0ZShzZXNzaW9uPy51cGRhdGVkQXQpO1xuICAgICAgY29uc3QgeWVzdGVyZGF5ID0gbmV3IERhdGUoKTtcbiAgICAgIHllc3RlcmRheS5zZXREYXRlKHllc3RlcmRheS5nZXREYXRlKCkgLSAxKTtcbiAgICAgIGlmIChsYXN0VXBkYXRlZCA+IHllc3RlcmRheSB8fCAhc2Vzc2lvbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBleHBpcmVzQXQgPSBjb25maWcuZ2VuZXJhdGVTZXNzaW9uRXhwaXJlc0F0KCk7XG4gICAgICBhd2FpdCBuZXcgUmVzdFdyaXRlKFxuICAgICAgICBjb25maWcsXG4gICAgICAgIG1hc3Rlcihjb25maWcpLFxuICAgICAgICAnX1Nlc3Npb24nLFxuICAgICAgICB7IG9iamVjdElkOiBzZXNzaW9uLm9iamVjdElkIH0sXG4gICAgICAgIHsgZXhwaXJlc0F0OiBQYXJzZS5fZW5jb2RlKGV4cGlyZXNBdCkgfVxuICAgICAgKS5leGVjdXRlKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGU/LmNvZGUgIT09IFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdDb3VsZCBub3QgdXBkYXRlIHNlc3Npb24gZXhwaXJ5OiAnLCBlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIDUwMCk7XG59O1xuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIEF1dGggb2JqZWN0XG5jb25zdCBnZXRBdXRoRm9yU2Vzc2lvblRva2VuID0gYXN5bmMgZnVuY3Rpb24gKHtcbiAgY29uZmlnLFxuICBjYWNoZUNvbnRyb2xsZXIsXG4gIHNlc3Npb25Ub2tlbixcbiAgaW5zdGFsbGF0aW9uSWQsXG59KSB7XG4gIGNhY2hlQ29udHJvbGxlciA9IGNhY2hlQ29udHJvbGxlciB8fCAoY29uZmlnICYmIGNvbmZpZy5jYWNoZUNvbnRyb2xsZXIpO1xuICBpZiAoY2FjaGVDb250cm9sbGVyKSB7XG4gICAgY29uc3QgdXNlckpTT04gPSBhd2FpdCBjYWNoZUNvbnRyb2xsZXIudXNlci5nZXQoc2Vzc2lvblRva2VuKTtcbiAgICBpZiAodXNlckpTT04pIHtcbiAgICAgIGNvbnN0IGNhY2hlZFVzZXIgPSBQYXJzZS5PYmplY3QuZnJvbUpTT04odXNlckpTT04pO1xuICAgICAgcmVuZXdTZXNzaW9uSWZOZWVkZWQoeyBjb25maWcsIHNlc3Npb25Ub2tlbiB9KTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoXG4gICAgICAgIG5ldyBBdXRoKHtcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgY2FjaGVDb250cm9sbGVyLFxuICAgICAgICAgIGlzTWFzdGVyOiBmYWxzZSxcbiAgICAgICAgICBpbnN0YWxsYXRpb25JZCxcbiAgICAgICAgICB1c2VyOiBjYWNoZWRVc2VyLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBsZXQgcmVzdWx0cztcbiAgaWYgKGNvbmZpZykge1xuICAgIGNvbnN0IHJlc3RPcHRpb25zID0ge1xuICAgICAgbGltaXQ6IDEsXG4gICAgICBpbmNsdWRlOiAndXNlcicsXG4gICAgfTtcbiAgICBjb25zdCBSZXN0UXVlcnkgPSByZXF1aXJlKCcuL1Jlc3RRdWVyeScpO1xuICAgIGNvbnN0IHF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICAgIG1ldGhvZDogUmVzdFF1ZXJ5Lk1ldGhvZC5nZXQsXG4gICAgICBjb25maWcsXG4gICAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgICAgIGF1dGg6IG1hc3Rlcihjb25maWcpLFxuICAgICAgY2xhc3NOYW1lOiAnX1Nlc3Npb24nLFxuICAgICAgcmVzdFdoZXJlOiB7IHNlc3Npb25Ub2tlbiB9LFxuICAgICAgcmVzdE9wdGlvbnMsXG4gICAgfSk7XG4gICAgcmVzdWx0cyA9IChhd2FpdCBxdWVyeS5leGVjdXRlKCkpLnJlc3VsdHM7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0cyA9IChcbiAgICAgIGF3YWl0IG5ldyBQYXJzZS5RdWVyeShQYXJzZS5TZXNzaW9uKVxuICAgICAgICAubGltaXQoMSlcbiAgICAgICAgLmluY2x1ZGUoJ3VzZXInKVxuICAgICAgICAuZXF1YWxUbygnc2Vzc2lvblRva2VuJywgc2Vzc2lvblRva2VuKVxuICAgICAgICAuZmluZCh7IHVzZU1hc3RlcktleTogdHJ1ZSB9KVxuICAgICkubWFwKG9iaiA9PiBvYmoudG9KU09OKCkpO1xuICB9XG5cbiAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSAxIHx8ICFyZXN1bHRzWzBdWyd1c2VyJ10pIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9TRVNTSU9OX1RPS0VOLCAnSW52YWxpZCBzZXNzaW9uIHRva2VuJyk7XG4gIH1cbiAgY29uc3Qgc2Vzc2lvbiA9IHJlc3VsdHNbMF07XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCksXG4gICAgZXhwaXJlc0F0ID0gc2Vzc2lvbi5leHBpcmVzQXQgPyBuZXcgRGF0ZShzZXNzaW9uLmV4cGlyZXNBdC5pc28pIDogdW5kZWZpbmVkO1xuICBpZiAoZXhwaXJlc0F0IDwgbm93KSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfU0VTU0lPTl9UT0tFTiwgJ1Nlc3Npb24gdG9rZW4gaXMgZXhwaXJlZC4nKTtcbiAgfVxuICBjb25zdCBvYmogPSBzZXNzaW9uLnVzZXI7XG4gIGRlbGV0ZSBvYmoucGFzc3dvcmQ7XG4gIG9ialsnY2xhc3NOYW1lJ10gPSAnX1VzZXInO1xuICBvYmpbJ3Nlc3Npb25Ub2tlbiddID0gc2Vzc2lvblRva2VuO1xuICBpZiAoY2FjaGVDb250cm9sbGVyKSB7XG4gICAgY2FjaGVDb250cm9sbGVyLnVzZXIucHV0KHNlc3Npb25Ub2tlbiwgb2JqKTtcbiAgfVxuICByZW5ld1Nlc3Npb25JZk5lZWRlZCh7IGNvbmZpZywgc2Vzc2lvbiwgc2Vzc2lvblRva2VuIH0pO1xuICBjb25zdCB1c2VyT2JqZWN0ID0gUGFyc2UuT2JqZWN0LmZyb21KU09OKG9iaik7XG4gIHJldHVybiBuZXcgQXV0aCh7XG4gICAgY29uZmlnLFxuICAgIGNhY2hlQ29udHJvbGxlcixcbiAgICBpc01hc3RlcjogZmFsc2UsXG4gICAgaW5zdGFsbGF0aW9uSWQsXG4gICAgdXNlcjogdXNlck9iamVjdCxcbiAgfSk7XG59O1xuXG52YXIgZ2V0QXV0aEZvckxlZ2FjeVNlc3Npb25Ub2tlbiA9IGFzeW5jIGZ1bmN0aW9uICh7IGNvbmZpZywgc2Vzc2lvblRva2VuLCBpbnN0YWxsYXRpb25JZCB9KSB7XG4gIHZhciByZXN0T3B0aW9ucyA9IHtcbiAgICBsaW1pdDogMSxcbiAgfTtcbiAgY29uc3QgUmVzdFF1ZXJ5ID0gcmVxdWlyZSgnLi9SZXN0UXVlcnknKTtcbiAgdmFyIHF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICBtZXRob2Q6IFJlc3RRdWVyeS5NZXRob2QuZ2V0LFxuICAgIGNvbmZpZyxcbiAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgICBhdXRoOiBtYXN0ZXIoY29uZmlnKSxcbiAgICBjbGFzc05hbWU6ICdfVXNlcicsXG4gICAgcmVzdFdoZXJlOiB7IF9zZXNzaW9uX3Rva2VuOiBzZXNzaW9uVG9rZW4gfSxcbiAgICByZXN0T3B0aW9ucyxcbiAgfSk7XG4gIHJldHVybiBxdWVyeS5leGVjdXRlKCkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgdmFyIHJlc3VsdHMgPSByZXNwb25zZS5yZXN1bHRzO1xuICAgIGlmIChyZXN1bHRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfU0VTU0lPTl9UT0tFTiwgJ2ludmFsaWQgbGVnYWN5IHNlc3Npb24gdG9rZW4nKTtcbiAgICB9XG4gICAgY29uc3Qgb2JqID0gcmVzdWx0c1swXTtcbiAgICBvYmouY2xhc3NOYW1lID0gJ19Vc2VyJztcbiAgICBjb25zdCB1c2VyT2JqZWN0ID0gUGFyc2UuT2JqZWN0LmZyb21KU09OKG9iaik7XG4gICAgcmV0dXJuIG5ldyBBdXRoKHtcbiAgICAgIGNvbmZpZyxcbiAgICAgIGlzTWFzdGVyOiBmYWxzZSxcbiAgICAgIGluc3RhbGxhdGlvbklkLFxuICAgICAgdXNlcjogdXNlck9iamVjdCxcbiAgICB9KTtcbiAgfSk7XG59O1xuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IG9mIHJvbGUgbmFtZXNcbkF1dGgucHJvdG90eXBlLmdldFVzZXJSb2xlcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuaXNNYXN0ZXIgfHwgdGhpcy5pc01haW50ZW5hbmNlIHx8ICF0aGlzLnVzZXIpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcbiAgfVxuICBpZiAodGhpcy5mZXRjaGVkUm9sZXMpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMudXNlclJvbGVzKTtcbiAgfVxuICBpZiAodGhpcy5yb2xlUHJvbWlzZSkge1xuICAgIHJldHVybiB0aGlzLnJvbGVQcm9taXNlO1xuICB9XG4gIHRoaXMucm9sZVByb21pc2UgPSB0aGlzLl9sb2FkUm9sZXMoKTtcbiAgcmV0dXJuIHRoaXMucm9sZVByb21pc2U7XG59O1xuXG5BdXRoLnByb3RvdHlwZS5nZXRSb2xlc0ZvclVzZXIgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIC8vU3RhY2sgYWxsIFBhcnNlLlJvbGVcbiAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICBpZiAodGhpcy5jb25maWcpIHtcbiAgICBjb25zdCByZXN0V2hlcmUgPSB7XG4gICAgICB1c2Vyczoge1xuICAgICAgICBfX3R5cGU6ICdQb2ludGVyJyxcbiAgICAgICAgY2xhc3NOYW1lOiAnX1VzZXInLFxuICAgICAgICBvYmplY3RJZDogdGhpcy51c2VyLmlkLFxuICAgICAgfSxcbiAgICB9O1xuICAgIGNvbnN0IFJlc3RRdWVyeSA9IHJlcXVpcmUoJy4vUmVzdFF1ZXJ5Jyk7XG4gICAgY29uc3QgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmZpbmQsXG4gICAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICBhdXRoOiBtYXN0ZXIodGhpcy5jb25maWcpLFxuICAgICAgY2xhc3NOYW1lOiAnX1JvbGUnLFxuICAgICAgcmVzdFdoZXJlLFxuICAgIH0pO1xuICAgIGF3YWl0IHF1ZXJ5LmVhY2gocmVzdWx0ID0+IHJlc3VsdHMucHVzaChyZXN1bHQpKTtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBuZXcgUGFyc2UuUXVlcnkoUGFyc2UuUm9sZSlcbiAgICAgIC5lcXVhbFRvKCd1c2VycycsIHRoaXMudXNlcilcbiAgICAgIC5lYWNoKHJlc3VsdCA9PiByZXN1bHRzLnB1c2gocmVzdWx0LnRvSlNPTigpKSwgeyB1c2VNYXN0ZXJLZXk6IHRydWUgfSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vLyBJdGVyYXRlcyB0aHJvdWdoIHRoZSByb2xlIHRyZWUgYW5kIGNvbXBpbGVzIGEgdXNlcidzIHJvbGVzXG5BdXRoLnByb3RvdHlwZS5fbG9hZFJvbGVzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5jYWNoZUNvbnRyb2xsZXIpIHtcbiAgICBjb25zdCBjYWNoZWRSb2xlcyA9IGF3YWl0IHRoaXMuY2FjaGVDb250cm9sbGVyLnJvbGUuZ2V0KHRoaXMudXNlci5pZCk7XG4gICAgaWYgKGNhY2hlZFJvbGVzICE9IG51bGwpIHtcbiAgICAgIHRoaXMuZmV0Y2hlZFJvbGVzID0gdHJ1ZTtcbiAgICAgIHRoaXMudXNlclJvbGVzID0gY2FjaGVkUm9sZXM7XG4gICAgICByZXR1cm4gY2FjaGVkUm9sZXM7XG4gICAgfVxuICB9XG5cbiAgLy8gRmlyc3QgZ2V0IHRoZSByb2xlIGlkcyB0aGlzIHVzZXIgaXMgZGlyZWN0bHkgYSBtZW1iZXIgb2ZcbiAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuZ2V0Um9sZXNGb3JVc2VyKCk7XG4gIGlmICghcmVzdWx0cy5sZW5ndGgpIHtcbiAgICB0aGlzLnVzZXJSb2xlcyA9IFtdO1xuICAgIHRoaXMuZmV0Y2hlZFJvbGVzID0gdHJ1ZTtcbiAgICB0aGlzLnJvbGVQcm9taXNlID0gbnVsbDtcblxuICAgIHRoaXMuY2FjaGVSb2xlcygpO1xuICAgIHJldHVybiB0aGlzLnVzZXJSb2xlcztcbiAgfVxuXG4gIGNvbnN0IHJvbGVzTWFwID0gcmVzdWx0cy5yZWR1Y2UoXG4gICAgKG0sIHIpID0+IHtcbiAgICAgIG0ubmFtZXMucHVzaChyLm5hbWUpO1xuICAgICAgbS5pZHMucHVzaChyLm9iamVjdElkKTtcbiAgICAgIHJldHVybiBtO1xuICAgIH0sXG4gICAgeyBpZHM6IFtdLCBuYW1lczogW10gfVxuICApO1xuXG4gIC8vIHJ1biB0aGUgcmVjdXJzaXZlIGZpbmRpbmdcbiAgY29uc3Qgcm9sZU5hbWVzID0gYXdhaXQgdGhpcy5fZ2V0QWxsUm9sZXNOYW1lc0ZvclJvbGVJZHMocm9sZXNNYXAuaWRzLCByb2xlc01hcC5uYW1lcyk7XG4gIHRoaXMudXNlclJvbGVzID0gcm9sZU5hbWVzLm1hcChyID0+IHtcbiAgICByZXR1cm4gJ3JvbGU6JyArIHI7XG4gIH0pO1xuICB0aGlzLmZldGNoZWRSb2xlcyA9IHRydWU7XG4gIHRoaXMucm9sZVByb21pc2UgPSBudWxsO1xuICB0aGlzLmNhY2hlUm9sZXMoKTtcbiAgcmV0dXJuIHRoaXMudXNlclJvbGVzO1xufTtcblxuQXV0aC5wcm90b3R5cGUuY2FjaGVSb2xlcyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzLmNhY2hlQ29udHJvbGxlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB0aGlzLmNhY2hlQ29udHJvbGxlci5yb2xlLnB1dCh0aGlzLnVzZXIuaWQsIEFycmF5KC4uLnRoaXMudXNlclJvbGVzKSk7XG4gIHJldHVybiB0cnVlO1xufTtcblxuQXV0aC5wcm90b3R5cGUuY2xlYXJSb2xlQ2FjaGUgPSBmdW5jdGlvbiAoc2Vzc2lvblRva2VuKSB7XG4gIGlmICghdGhpcy5jYWNoZUNvbnRyb2xsZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdGhpcy5jYWNoZUNvbnRyb2xsZXIucm9sZS5kZWwodGhpcy51c2VyLmlkKTtcbiAgdGhpcy5jYWNoZUNvbnRyb2xsZXIudXNlci5kZWwoc2Vzc2lvblRva2VuKTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5BdXRoLnByb3RvdHlwZS5nZXRSb2xlc0J5SWRzID0gYXN5bmMgZnVuY3Rpb24gKGlucykge1xuICBjb25zdCByZXN1bHRzID0gW107XG4gIC8vIEJ1aWxkIGFuIE9SIHF1ZXJ5IGFjcm9zcyBhbGwgcGFyZW50Um9sZXNcbiAgaWYgKCF0aGlzLmNvbmZpZykge1xuICAgIGF3YWl0IG5ldyBQYXJzZS5RdWVyeShQYXJzZS5Sb2xlKVxuICAgICAgLmNvbnRhaW5lZEluKFxuICAgICAgICAncm9sZXMnLFxuICAgICAgICBpbnMubWFwKGlkID0+IHtcbiAgICAgICAgICBjb25zdCByb2xlID0gbmV3IFBhcnNlLk9iamVjdChQYXJzZS5Sb2xlKTtcbiAgICAgICAgICByb2xlLmlkID0gaWQ7XG4gICAgICAgICAgcmV0dXJuIHJvbGU7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuZWFjaChyZXN1bHQgPT4gcmVzdWx0cy5wdXNoKHJlc3VsdC50b0pTT04oKSksIHsgdXNlTWFzdGVyS2V5OiB0cnVlIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHJvbGVzID0gaW5zLm1hcChpZCA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBfX3R5cGU6ICdQb2ludGVyJyxcbiAgICAgICAgY2xhc3NOYW1lOiAnX1JvbGUnLFxuICAgICAgICBvYmplY3RJZDogaWQsXG4gICAgICB9O1xuICAgIH0pO1xuICAgIGNvbnN0IHJlc3RXaGVyZSA9IHsgcm9sZXM6IHsgJGluOiByb2xlcyB9IH07XG4gICAgY29uc3QgUmVzdFF1ZXJ5ID0gcmVxdWlyZSgnLi9SZXN0UXVlcnknKTtcbiAgICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgICBtZXRob2Q6IFJlc3RRdWVyeS5NZXRob2QuZmluZCxcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgICAgIGF1dGg6IG1hc3Rlcih0aGlzLmNvbmZpZyksXG4gICAgICBjbGFzc05hbWU6ICdfUm9sZScsXG4gICAgICByZXN0V2hlcmUsXG4gICAgfSk7XG4gICAgYXdhaXQgcXVlcnkuZWFjaChyZXN1bHQgPT4gcmVzdWx0cy5wdXNoKHJlc3VsdCkpO1xuICB9XG4gIHJldHVybiByZXN1bHRzO1xufTtcblxuLy8gR2l2ZW4gYSBsaXN0IG9mIHJvbGVJZHMsIGZpbmQgYWxsIHRoZSBwYXJlbnQgcm9sZXMsIHJldHVybnMgYSBwcm9taXNlIHdpdGggYWxsIG5hbWVzXG5BdXRoLnByb3RvdHlwZS5fZ2V0QWxsUm9sZXNOYW1lc0ZvclJvbGVJZHMgPSBmdW5jdGlvbiAocm9sZUlEcywgbmFtZXMgPSBbXSwgcXVlcmllZFJvbGVzID0ge30pIHtcbiAgY29uc3QgaW5zID0gcm9sZUlEcy5maWx0ZXIocm9sZUlEID0+IHtcbiAgICBjb25zdCB3YXNRdWVyaWVkID0gcXVlcmllZFJvbGVzW3JvbGVJRF0gIT09IHRydWU7XG4gICAgcXVlcmllZFJvbGVzW3JvbGVJRF0gPSB0cnVlO1xuICAgIHJldHVybiB3YXNRdWVyaWVkO1xuICB9KTtcblxuICAvLyBhbGwgcm9sZXMgYXJlIGFjY291bnRlZCBmb3IsIHJldHVybiB0aGUgbmFtZXNcbiAgaWYgKGlucy5sZW5ndGggPT0gMCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoWy4uLm5ldyBTZXQobmFtZXMpXSk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5nZXRSb2xlc0J5SWRzKGlucylcbiAgICAudGhlbihyZXN1bHRzID0+IHtcbiAgICAgIC8vIE5vdGhpbmcgZm91bmRcbiAgICAgIGlmICghcmVzdWx0cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuYW1lcyk7XG4gICAgICB9XG4gICAgICAvLyBNYXAgdGhlIHJlc3VsdHMgd2l0aCBhbGwgSWRzIGFuZCBuYW1lc1xuICAgICAgY29uc3QgcmVzdWx0TWFwID0gcmVzdWx0cy5yZWR1Y2UoXG4gICAgICAgIChtZW1vLCByb2xlKSA9PiB7XG4gICAgICAgICAgbWVtby5uYW1lcy5wdXNoKHJvbGUubmFtZSk7XG4gICAgICAgICAgbWVtby5pZHMucHVzaChyb2xlLm9iamVjdElkKTtcbiAgICAgICAgICByZXR1cm4gbWVtbztcbiAgICAgICAgfSxcbiAgICAgICAgeyBpZHM6IFtdLCBuYW1lczogW10gfVxuICAgICAgKTtcbiAgICAgIC8vIHN0b3JlIHRoZSBuZXcgZm91bmQgbmFtZXNcbiAgICAgIG5hbWVzID0gbmFtZXMuY29uY2F0KHJlc3VsdE1hcC5uYW1lcyk7XG4gICAgICAvLyBmaW5kIHRoZSBuZXh0IG9uZXMsIGNpcmN1bGFyIHJvbGVzIHdpbGwgYmUgY3V0XG4gICAgICByZXR1cm4gdGhpcy5fZ2V0QWxsUm9sZXNOYW1lc0ZvclJvbGVJZHMocmVzdWx0TWFwLmlkcywgbmFtZXMsIHF1ZXJpZWRSb2xlcyk7XG4gICAgfSlcbiAgICAudGhlbihuYW1lcyA9PiB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFsuLi5uZXcgU2V0KG5hbWVzKV0pO1xuICAgIH0pO1xufTtcblxuY29uc3QgZmluZFVzZXJzV2l0aEF1dGhEYXRhID0gKGNvbmZpZywgYXV0aERhdGEpID0+IHtcbiAgY29uc3QgcHJvdmlkZXJzID0gT2JqZWN0LmtleXMoYXV0aERhdGEpO1xuICBjb25zdCBxdWVyeSA9IHByb3ZpZGVyc1xuICAgIC5yZWR1Y2UoKG1lbW8sIHByb3ZpZGVyKSA9PiB7XG4gICAgICBpZiAoIWF1dGhEYXRhW3Byb3ZpZGVyXSB8fCAoYXV0aERhdGEgJiYgIWF1dGhEYXRhW3Byb3ZpZGVyXS5pZCkpIHtcbiAgICAgICAgcmV0dXJuIG1lbW87XG4gICAgICB9XG4gICAgICBjb25zdCBxdWVyeUtleSA9IGBhdXRoRGF0YS4ke3Byb3ZpZGVyfS5pZGA7XG4gICAgICBjb25zdCBxdWVyeSA9IHt9O1xuICAgICAgcXVlcnlbcXVlcnlLZXldID0gYXV0aERhdGFbcHJvdmlkZXJdLmlkO1xuICAgICAgbWVtby5wdXNoKHF1ZXJ5KTtcbiAgICAgIHJldHVybiBtZW1vO1xuICAgIH0sIFtdKVxuICAgIC5maWx0ZXIocSA9PiB7XG4gICAgICByZXR1cm4gdHlwZW9mIHEgIT09ICd1bmRlZmluZWQnO1xuICAgIH0pO1xuXG4gIHJldHVybiBxdWVyeS5sZW5ndGggPiAwXG4gICAgPyBjb25maWcuZGF0YWJhc2UuZmluZCgnX1VzZXInLCB7ICRvcjogcXVlcnkgfSwgeyBsaW1pdDogMiB9KVxuICAgIDogUHJvbWlzZS5yZXNvbHZlKFtdKTtcbn07XG5cbmNvbnN0IGhhc011dGF0ZWRBdXRoRGF0YSA9IChhdXRoRGF0YSwgdXNlckF1dGhEYXRhKSA9PiB7XG4gIGlmICghdXNlckF1dGhEYXRhKSByZXR1cm4geyBoYXNNdXRhdGVkQXV0aERhdGE6IHRydWUsIG11dGF0ZWRBdXRoRGF0YTogYXV0aERhdGEgfTtcbiAgY29uc3QgbXV0YXRlZEF1dGhEYXRhID0ge307XG4gIE9iamVjdC5rZXlzKGF1dGhEYXRhKS5mb3JFYWNoKHByb3ZpZGVyID0+IHtcbiAgICAvLyBBbm9ueW1vdXMgcHJvdmlkZXIgaXMgbm90IGhhbmRsZWQgdGhpcyB3YXlcbiAgICBpZiAocHJvdmlkZXIgPT09ICdhbm9ueW1vdXMnKSByZXR1cm47XG4gICAgY29uc3QgcHJvdmlkZXJEYXRhID0gYXV0aERhdGFbcHJvdmlkZXJdO1xuICAgIGNvbnN0IHVzZXJQcm92aWRlckF1dGhEYXRhID0gdXNlckF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICBpZiAoIWlzRGVlcFN0cmljdEVxdWFsKHByb3ZpZGVyRGF0YSwgdXNlclByb3ZpZGVyQXV0aERhdGEpKSB7XG4gICAgICBtdXRhdGVkQXV0aERhdGFbcHJvdmlkZXJdID0gcHJvdmlkZXJEYXRhO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGhhc011dGF0ZWRBdXRoRGF0YSA9IE9iamVjdC5rZXlzKG11dGF0ZWRBdXRoRGF0YSkubGVuZ3RoICE9PSAwO1xuICByZXR1cm4geyBoYXNNdXRhdGVkQXV0aERhdGEsIG11dGF0ZWRBdXRoRGF0YSB9O1xufTtcblxuY29uc3QgY2hlY2tJZlVzZXJIYXNQcm92aWRlZENvbmZpZ3VyZWRQcm92aWRlcnNGb3JMb2dpbiA9IChcbiAgcmVxID0ge30sXG4gIGF1dGhEYXRhID0ge30sXG4gIHVzZXJBdXRoRGF0YSA9IHt9LFxuICBjb25maWdcbikgPT4ge1xuICBjb25zdCBzYXZlZFVzZXJQcm92aWRlcnMgPSBPYmplY3Qua2V5cyh1c2VyQXV0aERhdGEpLm1hcChwcm92aWRlciA9PiAoe1xuICAgIG5hbWU6IHByb3ZpZGVyLFxuICAgIGFkYXB0ZXI6IGNvbmZpZy5hdXRoRGF0YU1hbmFnZXIuZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIocHJvdmlkZXIpLmFkYXB0ZXIsXG4gIH0pKTtcblxuICBjb25zdCBoYXNQcm92aWRlZEFTb2xvUHJvdmlkZXIgPSBzYXZlZFVzZXJQcm92aWRlcnMuc29tZShcbiAgICBwcm92aWRlciA9PlxuICAgICAgcHJvdmlkZXIgJiYgcHJvdmlkZXIuYWRhcHRlciAmJiBwcm92aWRlci5hZGFwdGVyLnBvbGljeSA9PT0gJ3NvbG8nICYmIGF1dGhEYXRhW3Byb3ZpZGVyLm5hbWVdXG4gICk7XG5cbiAgLy8gU29sbyBwcm92aWRlcnMgY2FuIGJlIGNvbnNpZGVyZWQgYXMgc2FmZSwgc28gd2UgZG8gbm90IGhhdmUgdG8gY2hlY2sgaWYgdGhlIHVzZXIgbmVlZHNcbiAgLy8gdG8gcHJvdmlkZSBhbiBhZGRpdGlvbmFsIHByb3ZpZGVyIHRvIGxvZ2luLiBBbiBhdXRoIGFkYXB0ZXIgd2l0aCBcInNvbG9cIiAobGlrZSB3ZWJhdXRobikgbWVhbnNcbiAgLy8gbm8gXCJhZGRpdGlvbmFsXCIgYXV0aCBuZWVkcyB0byBiZSBwcm92aWRlZCB0byBsb2dpbiAobGlrZSBPVFAsIE1GQSlcbiAgaWYgKGhhc1Byb3ZpZGVkQVNvbG9Qcm92aWRlcikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGFkZGl0aW9uUHJvdmlkZXJzTm90Rm91bmQgPSBbXTtcbiAgY29uc3QgaGFzUHJvdmlkZWRBdExlYXN0T25lQWRkaXRpb25hbFByb3ZpZGVyID0gc2F2ZWRVc2VyUHJvdmlkZXJzLnNvbWUocHJvdmlkZXIgPT4ge1xuICAgIGxldCBwb2xpY3kgPSBwcm92aWRlci5hZGFwdGVyLnBvbGljeTtcbiAgICBpZiAodHlwZW9mIHBvbGljeSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVxdWVzdE9iamVjdCA9IHtcbiAgICAgICAgaXA6IHJlcS5jb25maWcuaXAsXG4gICAgICAgIHVzZXI6IHJlcS5hdXRoLnVzZXIsXG4gICAgICAgIG1hc3RlcjogcmVxLmF1dGguaXNNYXN0ZXIsXG4gICAgICB9O1xuICAgICAgcG9saWN5ID0gcG9saWN5LmNhbGwocHJvdmlkZXIuYWRhcHRlciwgcmVxdWVzdE9iamVjdCwgdXNlckF1dGhEYXRhW3Byb3ZpZGVyLm5hbWVdKTtcbiAgICB9XG4gICAgaWYgKHBvbGljeSA9PT0gJ2FkZGl0aW9uYWwnKSB7XG4gICAgICBpZiAoYXV0aERhdGFbcHJvdmlkZXIubmFtZV0pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBQdXNoIG1pc3NpbmcgcHJvdmlkZXIgZm9yIGVycm9yIG1lc3NhZ2VcbiAgICAgICAgYWRkaXRpb25Qcm92aWRlcnNOb3RGb3VuZC5wdXNoKHByb3ZpZGVyLm5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIGlmIChoYXNQcm92aWRlZEF0TGVhc3RPbmVBZGRpdGlvbmFsUHJvdmlkZXIgfHwgIWFkZGl0aW9uUHJvdmlkZXJzTm90Rm91bmQubGVuZ3RoKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgIFBhcnNlLkVycm9yLk9USEVSX0NBVVNFLFxuICAgIGBNaXNzaW5nIGFkZGl0aW9uYWwgYXV0aERhdGEgJHthZGRpdGlvblByb3ZpZGVyc05vdEZvdW5kLmpvaW4oJywnKX1gXG4gICk7XG59O1xuXG4vLyBWYWxpZGF0ZSBlYWNoIGF1dGhEYXRhIHN0ZXAtYnktc3RlcCBhbmQgcmV0dXJuIHRoZSBwcm92aWRlciByZXNwb25zZXNcbmNvbnN0IGhhbmRsZUF1dGhEYXRhVmFsaWRhdGlvbiA9IGFzeW5jIChhdXRoRGF0YSwgcmVxLCBmb3VuZFVzZXIpID0+IHtcbiAgbGV0IHVzZXI7XG4gIGlmIChmb3VuZFVzZXIpIHtcbiAgICB1c2VyID0gUGFyc2UuVXNlci5mcm9tSlNPTih7IGNsYXNzTmFtZTogJ19Vc2VyJywgLi4uZm91bmRVc2VyIH0pO1xuICAgIC8vIEZpbmQgdXNlciBieSBzZXNzaW9uIGFuZCBjdXJyZW50IG9iamVjdElkOyBvbmx5IHBhc3MgdXNlciBpZiBpdCdzIHRoZSBjdXJyZW50IHVzZXIgb3IgbWFzdGVyIGtleSBpcyBwcm92aWRlZFxuICB9IGVsc2UgaWYgKFxuICAgIChyZXEuYXV0aCAmJlxuICAgICAgcmVxLmF1dGgudXNlciAmJlxuICAgICAgdHlwZW9mIHJlcS5nZXRVc2VySWQgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgIHJlcS5nZXRVc2VySWQoKSA9PT0gcmVxLmF1dGgudXNlci5pZCkgfHxcbiAgICAocmVxLmF1dGggJiYgcmVxLmF1dGguaXNNYXN0ZXIgJiYgdHlwZW9mIHJlcS5nZXRVc2VySWQgPT09ICdmdW5jdGlvbicgJiYgcmVxLmdldFVzZXJJZCgpKVxuICApIHtcbiAgICB1c2VyID0gbmV3IFBhcnNlLlVzZXIoKTtcbiAgICB1c2VyLmlkID0gcmVxLmF1dGguaXNNYXN0ZXIgPyByZXEuZ2V0VXNlcklkKCkgOiByZXEuYXV0aC51c2VyLmlkO1xuICAgIGF3YWl0IHVzZXIuZmV0Y2goeyB1c2VNYXN0ZXJLZXk6IHRydWUgfSk7XG4gIH1cblxuICBjb25zdCB7IHVwZGF0ZWRPYmplY3QgfSA9IHJlcS5idWlsZFBhcnNlT2JqZWN0cygpO1xuICBjb25zdCByZXF1ZXN0T2JqZWN0ID0gZ2V0UmVxdWVzdE9iamVjdCh1bmRlZmluZWQsIHJlcS5hdXRoLCB1cGRhdGVkT2JqZWN0LCB1c2VyLCByZXEuY29uZmlnKTtcbiAgLy8gUGVyZm9ybSB2YWxpZGF0aW9uIGFzIHN0ZXAtYnktc3RlcCBwaXBlbGluZSBmb3IgYmV0dGVyIGVycm9yIGNvbnNpc3RlbmN5XG4gIC8vIGFuZCBhbHNvIHRvIGF2b2lkIHRvIHRyaWdnZXIgYSBwcm92aWRlciAobGlrZSBPVFAgU01TKSBpZiBhbm90aGVyIG9uZSBmYWlsc1xuICBjb25zdCBhY2MgPSB7IGF1dGhEYXRhOiB7fSwgYXV0aERhdGFSZXNwb25zZToge30gfTtcbiAgY29uc3QgYXV0aEtleXMgPSBPYmplY3Qua2V5cyhhdXRoRGF0YSkuc29ydCgpO1xuICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIGF1dGhLZXlzKSB7XG4gICAgbGV0IG1ldGhvZCA9ICcnO1xuICAgIHRyeSB7XG4gICAgICBpZiAoYXV0aERhdGFbcHJvdmlkZXJdID09PSBudWxsKSB7XG4gICAgICAgIGFjYy5hdXRoRGF0YVtwcm92aWRlcl0gPSBudWxsO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgdmFsaWRhdG9yIH0gPSByZXEuY29uZmlnLmF1dGhEYXRhTWFuYWdlci5nZXRWYWxpZGF0b3JGb3JQcm92aWRlcihwcm92aWRlcik7XG4gICAgICBjb25zdCBhdXRoUHJvdmlkZXIgPSAocmVxLmNvbmZpZy5hdXRoIHx8IHt9KVtwcm92aWRlcl0gfHwge307XG4gICAgICBpZiAoIXZhbGlkYXRvciB8fCBhdXRoUHJvdmlkZXIuZW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgIFBhcnNlLkVycm9yLlVOU1VQUE9SVEVEX1NFUlZJQ0UsXG4gICAgICAgICAgJ1RoaXMgYXV0aGVudGljYXRpb24gbWV0aG9kIGlzIHVuc3VwcG9ydGVkLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0ID0gYXdhaXQgdmFsaWRhdG9yKGF1dGhEYXRhW3Byb3ZpZGVyXSwgcmVxLCB1c2VyLCByZXF1ZXN0T2JqZWN0KTtcbiAgICAgIG1ldGhvZCA9IHZhbGlkYXRpb25SZXN1bHQgJiYgdmFsaWRhdGlvblJlc3VsdC5tZXRob2Q7XG4gICAgICByZXF1ZXN0T2JqZWN0LnRyaWdnZXJOYW1lID0gbWV0aG9kO1xuICAgICAgaWYgKHZhbGlkYXRpb25SZXN1bHQgJiYgdmFsaWRhdGlvblJlc3VsdC52YWxpZGF0b3IpIHtcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdCA9IGF3YWl0IHZhbGlkYXRpb25SZXN1bHQudmFsaWRhdG9yKCk7XG4gICAgICB9XG4gICAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQpIHtcbiAgICAgICAgYWNjLmF1dGhEYXRhW3Byb3ZpZGVyXSA9IGF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIU9iamVjdC5rZXlzKHZhbGlkYXRpb25SZXN1bHQpLmxlbmd0aCkge1xuICAgICAgICBhY2MuYXV0aERhdGFbcHJvdmlkZXJdID0gYXV0aERhdGFbcHJvdmlkZXJdO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbGlkYXRpb25SZXN1bHQucmVzcG9uc2UpIHtcbiAgICAgICAgYWNjLmF1dGhEYXRhUmVzcG9uc2VbcHJvdmlkZXJdID0gdmFsaWRhdGlvblJlc3VsdC5yZXNwb25zZTtcbiAgICAgIH1cbiAgICAgIC8vIFNvbWUgYXV0aCBwcm92aWRlcnMgYWZ0ZXIgaW5pdGlhbGl6YXRpb24gd2lsbCBhdm9pZCB0byByZXBsYWNlIGF1dGhEYXRhIGFscmVhZHkgc3RvcmVkXG4gICAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQuZG9Ob3RTYXZlKSB7XG4gICAgICAgIGFjYy5hdXRoRGF0YVtwcm92aWRlcl0gPSB2YWxpZGF0aW9uUmVzdWx0LnNhdmUgfHwgYXV0aERhdGFbcHJvdmlkZXJdO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc3QgZSA9IHJlc29sdmVFcnJvcihlcnIsIHtcbiAgICAgICAgY29kZTogUGFyc2UuRXJyb3IuU0NSSVBUX0ZBSUxFRCxcbiAgICAgICAgbWVzc2FnZTogJ0F1dGggZmFpbGVkLiBVbmtub3duIGVycm9yLicsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHVzZXJTdHJpbmcgPVxuICAgICAgICByZXEuYXV0aCAmJiByZXEuYXV0aC51c2VyID8gcmVxLmF1dGgudXNlci5pZCA6IHJlcS5kYXRhLm9iamVjdElkIHx8IHVuZGVmaW5lZDtcbiAgICAgIGxvZ2dlci5lcnJvcihcbiAgICAgICAgYEZhaWxlZCBydW5uaW5nIGF1dGggc3RlcCAke21ldGhvZH0gZm9yICR7cHJvdmlkZXJ9IGZvciB1c2VyICR7dXNlclN0cmluZ30gd2l0aCBFcnJvcjogYCArXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZSksXG4gICAgICAgIHtcbiAgICAgICAgICBhdXRoZW50aWNhdGlvblN0ZXA6IG1ldGhvZCxcbiAgICAgICAgICBlcnJvcjogZSxcbiAgICAgICAgICB1c2VyOiB1c2VyU3RyaW5nLFxuICAgICAgICAgIHByb3ZpZGVyLFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFjYztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBBdXRoLFxuICBtYXN0ZXIsXG4gIG1haW50ZW5hbmNlLFxuICBub2JvZHksXG4gIHJlYWRPbmx5LFxuICBnZXRBdXRoRm9yU2Vzc2lvblRva2VuLFxuICBnZXRBdXRoRm9yTGVnYWN5U2Vzc2lvblRva2VuLFxuICBmaW5kVXNlcnNXaXRoQXV0aERhdGEsXG4gIGhhc011dGF0ZWRBdXRoRGF0YSxcbiAgY2hlY2tJZlVzZXJIYXNQcm92aWRlZENvbmZpZ3VyZWRQcm92aWRlcnNGb3JMb2dpbixcbiAgaGFuZGxlQXV0aERhdGFWYWxpZGF0aW9uLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFDQSxJQUFBQSxLQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxVQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFELHNCQUFBLENBQUFKLE9BQUE7QUFBb0MsU0FBQUksdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFBQSxTQUFBRyxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFBSixDQUFBO0FBQUEsU0FBQVUsY0FBQVosQ0FBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEsVUFBQUMsQ0FBQSxXQUFBVyxTQUFBLENBQUFaLENBQUEsSUFBQVksU0FBQSxDQUFB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
605
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXRpbCIsInJlcXVpcmUiLCJfdHJpZ2dlcnMiLCJfbG9nZ2VyIiwiX1Jlc3RRdWVyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfUmVzdFdyaXRlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIlBhcnNlIiwiQXV0aCIsImNvbmZpZyIsImNhY2hlQ29udHJvbGxlciIsInVuZGVmaW5lZCIsImlzTWFzdGVyIiwiaXNNYWludGVuYW5jZSIsImlzUmVhZE9ubHkiLCJ1c2VyIiwiaW5zdGFsbGF0aW9uSWQiLCJ1c2VyUm9sZXMiLCJmZXRjaGVkUm9sZXMiLCJyb2xlUHJvbWlzZSIsInByb3RvdHlwZSIsImlzVW5hdXRoZW50aWNhdGVkIiwibWFzdGVyIiwibWFpbnRlbmFuY2UiLCJyZWFkT25seSIsIm5vYm9keSIsInNob3VsZFVwZGF0ZVNlc3Npb25FeHBpcnkiLCJzZXNzaW9uIiwicmVzZXRBZnRlciIsInNlc3Npb25MZW5ndGgiLCJsYXN0VXBkYXRlZCIsIkRhdGUiLCJ1cGRhdGVkQXQiLCJza2lwUmFuZ2UiLCJzZXRUaW1lIiwiZ2V0VGltZSIsInRocm90dGxlIiwicmVuZXdTZXNzaW9uSWZOZWVkZWQiLCJzZXNzaW9uVG9rZW4iLCJleHRlbmRTZXNzaW9uT25Vc2UiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwicXVlcnkiLCJSZXN0UXVlcnkiLCJtZXRob2QiLCJNZXRob2QiLCJnZXQiLCJhdXRoIiwicnVuQmVmb3JlRmluZCIsImNsYXNzTmFtZSIsInJlc3RXaGVyZSIsInJlc3RPcHRpb25zIiwibGltaXQiLCJyZXN1bHRzIiwiZXhlY3V0ZSIsImV4cGlyZXNBdCIsImdlbmVyYXRlU2Vzc2lvbkV4cGlyZXNBdCIsIlJlc3RXcml0ZSIsIm9iamVjdElkIiwiX2VuY29kZSIsImNvZGUiLCJFcnJvciIsIk9CSkVDVF9OT1RfRk9VTkQiLCJsb2dnZXIiLCJlcnJvciIsImdldEF1dGhGb3JTZXNzaW9uVG9rZW4iLCJ1c2VySlNPTiIsImNhY2hlZFVzZXIiLCJmcm9tSlNPTiIsIlByb21pc2UiLCJyZXNvbHZlIiwiaW5jbHVkZSIsIlF1ZXJ5IiwiU2Vzc2lvbiIsImVxdWFsVG8iLCJmaW5kIiwidXNlTWFzdGVyS2V5IiwibWFwIiwib2JqIiwidG9KU09OIiwiSU5WQUxJRF9TRVNTSU9OX1RPS0VOIiwibm93IiwiaXNvIiwicGFzc3dvcmQiLCJwdXQiLCJ1c2VyT2JqZWN0IiwiZ2V0QXV0aEZvckxlZ2FjeVNlc3Npb25Ub2tlbiIsIl9zZXNzaW9uX3Rva2VuIiwidGhlbiIsInJlc3BvbnNlIiwiZ2V0VXNlclJvbGVzIiwiX2xvYWRSb2xlcyIsImdldFJvbGVzRm9yVXNlciIsInVzZXJzIiwiX190eXBlIiwiaWQiLCJlYWNoIiwicmVzdWx0IiwiUm9sZSIsImNhY2hlZFJvbGVzIiwicm9sZSIsImNhY2hlUm9sZXMiLCJyb2xlc01hcCIsInJlZHVjZSIsIm0iLCJuYW1lcyIsIm5hbWUiLCJpZHMiLCJyb2xlTmFtZXMiLCJfZ2V0QWxsUm9sZXNOYW1lc0ZvclJvbGVJZHMiLCJBcnJheSIsImNsZWFyUm9sZUNhY2hlIiwiZGVsIiwiZ2V0Um9sZXNCeUlkcyIsImlucyIsImNvbnRhaW5lZEluIiwicm9sZXMiLCIkaW4iLCJyb2xlSURzIiwicXVlcmllZFJvbGVzIiwicm9sZUlEIiwid2FzUXVlcmllZCIsIlNldCIsInJlc3VsdE1hcCIsIm1lbW8iLCJjb25jYXQiLCJmaW5kVXNlcnNXaXRoQXV0aERhdGEiLCJhdXRoRGF0YSIsInByb3ZpZGVycyIsInByb3ZpZGVyIiwicXVlcnlLZXkiLCJxIiwiZGF0YWJhc2UiLCIkb3IiLCJoYXNNdXRhdGVkQXV0aERhdGEiLCJ1c2VyQXV0aERhdGEiLCJtdXRhdGVkQXV0aERhdGEiLCJwcm92aWRlckRhdGEiLCJ1c2VyUHJvdmlkZXJBdXRoRGF0YSIsImlzRGVlcFN0cmljdEVxdWFsIiwiY2hlY2tJZlVzZXJIYXNQcm92aWRlZENvbmZpZ3VyZWRQcm92aWRlcnNGb3JMb2dpbiIsInJlcSIsInNhdmVkVXNlclByb3ZpZGVycyIsImFkYXB0ZXIiLCJhdXRoRGF0YU1hbmFnZXIiLCJnZXRWYWxpZGF0b3JGb3JQcm92aWRlciIsImhhc1Byb3ZpZGVkQVNvbG9Qcm92aWRlciIsInNvbWUiLCJwb2xpY3kiLCJhZGRpdGlvblByb3ZpZGVyc05vdEZvdW5kIiwiaGFzUHJvdmlkZWRBdExlYXN0T25lQWRkaXRpb25hbFByb3ZpZGVyIiwicmVxdWVzdE9iamVjdCIsImlwIiwiT1RIRVJfQ0FVU0UiLCJqb2luIiwiaGFuZGxlQXV0aERhdGFWYWxpZGF0aW9uIiwiZm91bmRVc2VyIiwiVXNlciIsImdldFVzZXJJZCIsImZldGNoIiwidXBkYXRlZE9iamVjdCIsImJ1aWxkUGFyc2VPYmplY3RzIiwiZ2V0UmVxdWVzdE9iamVjdCIsImFjYyIsImF1dGhEYXRhUmVzcG9uc2UiLCJhdXRoS2V5cyIsInNvcnQiLCJ2YWxpZGF0b3IiLCJhdXRoUHJvdmlkZXIiLCJlbmFibGVkIiwiVU5TVVBQT1JURURfU0VSVklDRSIsInZhbGlkYXRpb25SZXN1bHQiLCJ0cmlnZ2VyTmFtZSIsImRvTm90U2F2ZSIsInNhdmUiLCJlcnIiLCJyZXNvbHZlRXJyb3IiLCJTQ1JJUFRfRkFJTEVEIiwibWVzc2FnZSIsInVzZXJTdHJpbmciLCJkYXRhIiwiSlNPTiIsInN0cmluZ2lmeSIsImF1dGhlbnRpY2F0aW9uU3RlcCIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvQXV0aC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKTtcbmltcG9ydCB7IGlzRGVlcFN0cmljdEVxdWFsIH0gZnJvbSAndXRpbCc7XG5pbXBvcnQgeyBnZXRSZXF1ZXN0T2JqZWN0LCByZXNvbHZlRXJyb3IgfSBmcm9tICcuL3RyaWdnZXJzJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBSZXN0UXVlcnkgZnJvbSAnLi9SZXN0UXVlcnknO1xuaW1wb3J0IFJlc3RXcml0ZSBmcm9tICcuL1Jlc3RXcml0ZSc7XG5cbi8vIEFuIEF1dGggb2JqZWN0IHRlbGxzIHlvdSB3aG8gaXMgcmVxdWVzdGluZyBzb21ldGhpbmcgYW5kIHdoZXRoZXJcbi8vIHRoZSBtYXN0ZXIga2V5IHdhcyB1c2VkLlxuLy8gdXNlck9iamVjdCBpcyBhIFBhcnNlLlVzZXIgYW5kIGNhbiBiZSBudWxsIGlmIHRoZXJlJ3Mgbm8gdXNlci5cbmZ1bmN0aW9uIEF1dGgoe1xuICBjb25maWcsXG4gIGNhY2hlQ29udHJvbGxlciA9IHVuZGVmaW5lZCxcbiAgaXNNYXN0ZXIgPSBmYWxzZSxcbiAgaXNNYWludGVuYW5jZSA9IGZhbHNlLFxuICBpc1JlYWRPbmx5ID0gZmFsc2UsXG4gIHVzZXIsXG4gIGluc3RhbGxhdGlvbklkLFxufSkge1xuICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgdGhpcy5jYWNoZUNvbnRyb2xsZXIgPSBjYWNoZUNvbnRyb2xsZXIgfHwgKGNvbmZpZyAmJiBjb25maWcuY2FjaGVDb250cm9sbGVyKTtcbiAgdGhpcy5pbnN0YWxsYXRpb25JZCA9IGluc3RhbGxhdGlvbklkO1xuICB0aGlzLmlzTWFzdGVyID0gaXNNYXN0ZXI7XG4gIHRoaXMuaXNNYWludGVuYW5jZSA9IGlzTWFpbnRlbmFuY2U7XG4gIHRoaXMudXNlciA9IHVzZXI7XG4gIHRoaXMuaXNSZWFkT25seSA9IGlzUmVhZE9ubHk7XG5cbiAgLy8gQXNzdW1pbmcgYSB1c2VycyByb2xlcyB3b24ndCBjaGFuZ2UgZHVyaW5nIGEgc2luZ2xlIHJlcXVlc3QsIHdlJ2xsXG4gIC8vIG9ubHkgbG9hZCB0aGVtIG9uY2UuXG4gIHRoaXMudXNlclJvbGVzID0gW107XG4gIHRoaXMuZmV0Y2hlZFJvbGVzID0gZmFsc2U7XG4gIHRoaXMucm9sZVByb21pc2UgPSBudWxsO1xufVxuXG4vLyBXaGV0aGVyIHRoaXMgYXV0aCBjb3VsZCBwb3NzaWJseSBtb2RpZnkgdGhlIGdpdmVuIHVzZXIgaWQuXG4vLyBJdCBzdGlsbCBjb3VsZCBiZSBmb3JiaWRkZW4gdmlhIEFDTHMgZXZlbiBpZiB0aGlzIHJldHVybnMgdHJ1ZS5cbkF1dGgucHJvdG90eXBlLmlzVW5hdXRoZW50aWNhdGVkID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5pc01hc3Rlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodGhpcy5pc01haW50ZW5hbmNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0aGlzLnVzZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vLyBBIGhlbHBlciB0byBnZXQgYSBtYXN0ZXItbGV2ZWwgQXV0aCBvYmplY3RcbmZ1bmN0aW9uIG1hc3Rlcihjb25maWcpIHtcbiAgcmV0dXJuIG5ldyBBdXRoKHsgY29uZmlnLCBpc01hc3RlcjogdHJ1ZSB9KTtcbn1cblxuLy8gQSBoZWxwZXIgdG8gZ2V0IGEgbWFpbnRlbmFuY2UtbGV2ZWwgQXV0aCBvYmplY3RcbmZ1bmN0aW9uIG1haW50ZW5hbmNlKGNvbmZpZykge1xuICByZXR1cm4gbmV3IEF1dGgoeyBjb25maWcsIGlzTWFpbnRlbmFuY2U6IHRydWUgfSk7XG59XG5cbi8vIEEgaGVscGVyIHRvIGdldCBhIG1hc3Rlci1sZXZlbCBBdXRoIG9iamVjdFxuZnVuY3Rpb24gcmVhZE9ubHkoY29uZmlnKSB7XG4gIHJldHVybiBuZXcgQXV0aCh7IGNvbmZpZywgaXNNYXN0ZXI6IHRydWUsIGlzUmVhZE9ubHk6IHRydWUgfSk7XG59XG5cbi8vIEEgaGVscGVyIHRvIGdldCBhIG5vYm9keS1sZXZlbCBBdXRoIG9iamVjdFxuZnVuY3Rpb24gbm9ib2R5KGNvbmZpZykge1xuICByZXR1cm4gbmV3IEF1dGgoeyBjb25maWcsIGlzTWFzdGVyOiBmYWxzZSB9KTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBzZXNzaW9uIHNob3VsZCBiZSB1cGRhdGVkIGJhc2VkIG9uIGxhc3QgdXBkYXRlIHRpbWUgJiBzZXNzaW9uIGxlbmd0aC5cbiAqL1xuZnVuY3Rpb24gc2hvdWxkVXBkYXRlU2Vzc2lvbkV4cGlyeShjb25maWcsIHNlc3Npb24pIHtcbiAgY29uc3QgcmVzZXRBZnRlciA9IGNvbmZpZy5zZXNzaW9uTGVuZ3RoIC8gMjtcbiAgY29uc3QgbGFzdFVwZGF0ZWQgPSBuZXcgRGF0ZShzZXNzaW9uPy51cGRhdGVkQXQpO1xuICBjb25zdCBza2lwUmFuZ2UgPSBuZXcgRGF0ZSgpO1xuICBza2lwUmFuZ2Uuc2V0VGltZShza2lwUmFuZ2UuZ2V0VGltZSgpIC0gcmVzZXRBZnRlciAqIDEwMDApO1xuICByZXR1cm4gbGFzdFVwZGF0ZWQgPD0gc2tpcFJhbmdlO1xufVxuXG5jb25zdCB0aHJvdHRsZSA9IHt9O1xuY29uc3QgcmVuZXdTZXNzaW9uSWZOZWVkZWQgPSBhc3luYyAoeyBjb25maWcsIHNlc3Npb24sIHNlc3Npb25Ub2tlbiB9KSA9PiB7XG4gIGlmICghY29uZmlnPy5leHRlbmRTZXNzaW9uT25Vc2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY2xlYXJUaW1lb3V0KHRocm90dGxlW3Nlc3Npb25Ub2tlbl0pO1xuICB0aHJvdHRsZVtzZXNzaW9uVG9rZW5dID0gc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghc2Vzc2lvbikge1xuICAgICAgICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmdldCxcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgYXV0aDogbWFzdGVyKGNvbmZpZyksXG4gICAgICAgICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgICAgICAgY2xhc3NOYW1lOiAnX1Nlc3Npb24nLFxuICAgICAgICAgIHJlc3RXaGVyZTogeyBzZXNzaW9uVG9rZW4gfSxcbiAgICAgICAgICByZXN0T3B0aW9uczogeyBsaW1pdDogMSB9LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgeyByZXN1bHRzIH0gPSBhd2FpdCBxdWVyeS5leGVjdXRlKCk7XG4gICAgICAgIHNlc3Npb24gPSByZXN1bHRzWzBdO1xuICAgICAgfVxuICAgICAgaWYgKCFzaG91bGRVcGRhdGVTZXNzaW9uRXhwaXJ5KGNvbmZpZywgc2Vzc2lvbikgfHwgIXNlc3Npb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgZXhwaXJlc0F0ID0gY29uZmlnLmdlbmVyYXRlU2Vzc2lvbkV4cGlyZXNBdCgpO1xuICAgICAgYXdhaXQgbmV3IFJlc3RXcml0ZShcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBtYXN0ZXIoY29uZmlnKSxcbiAgICAgICAgJ19TZXNzaW9uJyxcbiAgICAgICAgeyBvYmplY3RJZDogc2Vzc2lvbi5vYmplY3RJZCB9LFxuICAgICAgICB7IGV4cGlyZXNBdDogUGFyc2UuX2VuY29kZShleHBpcmVzQXQpIH1cbiAgICAgICkuZXhlY3V0ZSgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlPy5jb2RlICE9PSBQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5EKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcignQ291bGQgbm90IHVwZGF0ZSBzZXNzaW9uIGV4cGlyeTogJywgZSk7XG4gICAgICB9XG4gICAgfVxuICB9LCA1MDApO1xufTtcblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBBdXRoIG9iamVjdFxuY29uc3QgZ2V0QXV0aEZvclNlc3Npb25Ub2tlbiA9IGFzeW5jIGZ1bmN0aW9uICh7XG4gIGNvbmZpZyxcbiAgY2FjaGVDb250cm9sbGVyLFxuICBzZXNzaW9uVG9rZW4sXG4gIGluc3RhbGxhdGlvbklkLFxufSkge1xuICBjYWNoZUNvbnRyb2xsZXIgPSBjYWNoZUNvbnRyb2xsZXIgfHwgKGNvbmZpZyAmJiBjb25maWcuY2FjaGVDb250cm9sbGVyKTtcbiAgaWYgKGNhY2hlQ29udHJvbGxlcikge1xuICAgIGNvbnN0IHVzZXJKU09OID0gYXdhaXQgY2FjaGVDb250cm9sbGVyLnVzZXIuZ2V0KHNlc3Npb25Ub2tlbik7XG4gICAgaWYgKHVzZXJKU09OKSB7XG4gICAgICBjb25zdCBjYWNoZWRVc2VyID0gUGFyc2UuT2JqZWN0LmZyb21KU09OKHVzZXJKU09OKTtcbiAgICAgIHJlbmV3U2Vzc2lvbklmTmVlZGVkKHsgY29uZmlnLCBzZXNzaW9uVG9rZW4gfSk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICBuZXcgQXV0aCh7XG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGNhY2hlQ29udHJvbGxlcixcbiAgICAgICAgICBpc01hc3RlcjogZmFsc2UsXG4gICAgICAgICAgaW5zdGFsbGF0aW9uSWQsXG4gICAgICAgICAgdXNlcjogY2FjaGVkVXNlcixcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbGV0IHJlc3VsdHM7XG4gIGlmIChjb25maWcpIHtcbiAgICBjb25zdCByZXN0T3B0aW9ucyA9IHtcbiAgICAgIGxpbWl0OiAxLFxuICAgICAgaW5jbHVkZTogJ3VzZXInLFxuICAgIH07XG4gICAgY29uc3QgUmVzdFF1ZXJ5ID0gcmVxdWlyZSgnLi9SZXN0UXVlcnknKTtcbiAgICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgICBtZXRob2Q6IFJlc3RRdWVyeS5NZXRob2QuZ2V0LFxuICAgICAgY29uZmlnLFxuICAgICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgICBhdXRoOiBtYXN0ZXIoY29uZmlnKSxcbiAgICAgIGNsYXNzTmFtZTogJ19TZXNzaW9uJyxcbiAgICAgIHJlc3RXaGVyZTogeyBzZXNzaW9uVG9rZW4gfSxcbiAgICAgIHJlc3RPcHRpb25zLFxuICAgIH0pO1xuICAgIHJlc3VsdHMgPSAoYXdhaXQgcXVlcnkuZXhlY3V0ZSgpKS5yZXN1bHRzO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdHMgPSAoXG4gICAgICBhd2FpdCBuZXcgUGFyc2UuUXVlcnkoUGFyc2UuU2Vzc2lvbilcbiAgICAgICAgLmxpbWl0KDEpXG4gICAgICAgIC5pbmNsdWRlKCd1c2VyJylcbiAgICAgICAgLmVxdWFsVG8oJ3Nlc3Npb25Ub2tlbicsIHNlc3Npb25Ub2tlbilcbiAgICAgICAgLmZpbmQoeyB1c2VNYXN0ZXJLZXk6IHRydWUgfSlcbiAgICApLm1hcChvYmogPT4gb2JqLnRvSlNPTigpKTtcbiAgfVxuXG4gIGlmIChyZXN1bHRzLmxlbmd0aCAhPT0gMSB8fCAhcmVzdWx0c1swXVsndXNlciddKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfU0VTU0lPTl9UT0tFTiwgJ0ludmFsaWQgc2Vzc2lvbiB0b2tlbicpO1xuICB9XG4gIGNvbnN0IHNlc3Npb24gPSByZXN1bHRzWzBdO1xuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLFxuICAgIGV4cGlyZXNBdCA9IHNlc3Npb24uZXhwaXJlc0F0ID8gbmV3IERhdGUoc2Vzc2lvbi5leHBpcmVzQXQuaXNvKSA6IHVuZGVmaW5lZDtcbiAgaWYgKGV4cGlyZXNBdCA8IG5vdykge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1NFU1NJT05fVE9LRU4sICdTZXNzaW9uIHRva2VuIGlzIGV4cGlyZWQuJyk7XG4gIH1cbiAgY29uc3Qgb2JqID0gc2Vzc2lvbi51c2VyO1xuICBkZWxldGUgb2JqLnBhc3N3b3JkO1xuICBvYmpbJ2NsYXNzTmFtZSddID0gJ19Vc2VyJztcbiAgb2JqWydzZXNzaW9uVG9rZW4nXSA9IHNlc3Npb25Ub2tlbjtcbiAgaWYgKGNhY2hlQ29udHJvbGxlcikge1xuICAgIGNhY2hlQ29udHJvbGxlci51c2VyLnB1dChzZXNzaW9uVG9rZW4sIG9iaik7XG4gIH1cbiAgcmVuZXdTZXNzaW9uSWZOZWVkZWQoeyBjb25maWcsIHNlc3Npb24sIHNlc3Npb25Ub2tlbiB9KTtcbiAgY29uc3QgdXNlck9iamVjdCA9IFBhcnNlLk9iamVjdC5mcm9tSlNPTihvYmopO1xuICByZXR1cm4gbmV3IEF1dGgoe1xuICAgIGNvbmZpZyxcbiAgICBjYWNoZUNvbnRyb2xsZXIsXG4gICAgaXNNYXN0ZXI6IGZhbHNlLFxuICAgIGluc3RhbGxhdGlvbklkLFxuICAgIHVzZXI6IHVzZXJPYmplY3QsXG4gIH0pO1xufTtcblxudmFyIGdldEF1dGhGb3JMZWdhY3lTZXNzaW9uVG9rZW4gPSBhc3luYyBmdW5jdGlvbiAoeyBjb25maWcsIHNlc3Npb25Ub2tlbiwgaW5zdGFsbGF0aW9uSWQgfSkge1xuICB2YXIgcmVzdE9wdGlvbnMgPSB7XG4gICAgbGltaXQ6IDEsXG4gIH07XG4gIGNvbnN0IFJlc3RRdWVyeSA9IHJlcXVpcmUoJy4vUmVzdFF1ZXJ5Jyk7XG4gIHZhciBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmdldCxcbiAgICBjb25maWcsXG4gICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgYXV0aDogbWFzdGVyKGNvbmZpZyksXG4gICAgY2xhc3NOYW1lOiAnX1VzZXInLFxuICAgIHJlc3RXaGVyZTogeyBfc2Vzc2lvbl90b2tlbjogc2Vzc2lvblRva2VuIH0sXG4gICAgcmVzdE9wdGlvbnMsXG4gIH0pO1xuICByZXR1cm4gcXVlcnkuZXhlY3V0ZSgpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgIHZhciByZXN1bHRzID0gcmVzcG9uc2UucmVzdWx0cztcbiAgICBpZiAocmVzdWx0cy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1NFU1NJT05fVE9LRU4sICdpbnZhbGlkIGxlZ2FjeSBzZXNzaW9uIHRva2VuJyk7XG4gICAgfVxuICAgIGNvbnN0IG9iaiA9IHJlc3VsdHNbMF07XG4gICAgb2JqLmNsYXNzTmFtZSA9ICdfVXNlcic7XG4gICAgY29uc3QgdXNlck9iamVjdCA9IFBhcnNlLk9iamVjdC5mcm9tSlNPTihvYmopO1xuICAgIHJldHVybiBuZXcgQXV0aCh7XG4gICAgICBjb25maWcsXG4gICAgICBpc01hc3RlcjogZmFsc2UsXG4gICAgICBpbnN0YWxsYXRpb25JZCxcbiAgICAgIHVzZXI6IHVzZXJPYmplY3QsXG4gICAgfSk7XG4gIH0pO1xufTtcblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBvZiByb2xlIG5hbWVzXG5BdXRoLnByb3RvdHlwZS5nZXRVc2VyUm9sZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmlzTWFzdGVyIHx8IHRoaXMuaXNNYWludGVuYW5jZSB8fCAhdGhpcy51c2VyKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gIH1cbiAgaWYgKHRoaXMuZmV0Y2hlZFJvbGVzKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLnVzZXJSb2xlcyk7XG4gIH1cbiAgaWYgKHRoaXMucm9sZVByb21pc2UpIHtcbiAgICByZXR1cm4gdGhpcy5yb2xlUHJvbWlzZTtcbiAgfVxuICB0aGlzLnJvbGVQcm9taXNlID0gdGhpcy5fbG9hZFJvbGVzKCk7XG4gIHJldHVybiB0aGlzLnJvbGVQcm9taXNlO1xufTtcblxuQXV0aC5wcm90b3R5cGUuZ2V0Um9sZXNGb3JVc2VyID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAvL1N0YWNrIGFsbCBQYXJzZS5Sb2xlXG4gIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgY29uc3QgcmVzdFdoZXJlID0ge1xuICAgICAgdXNlcnM6IHtcbiAgICAgICAgX190eXBlOiAnUG9pbnRlcicsXG4gICAgICAgIGNsYXNzTmFtZTogJ19Vc2VyJyxcbiAgICAgICAgb2JqZWN0SWQ6IHRoaXMudXNlci5pZCxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCBSZXN0UXVlcnkgPSByZXF1aXJlKCcuL1Jlc3RRdWVyeScpO1xuICAgIGNvbnN0IHF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICAgIG1ldGhvZDogUmVzdFF1ZXJ5Lk1ldGhvZC5maW5kLFxuICAgICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgYXV0aDogbWFzdGVyKHRoaXMuY29uZmlnKSxcbiAgICAgIGNsYXNzTmFtZTogJ19Sb2xlJyxcbiAgICAgIHJlc3RXaGVyZSxcbiAgICB9KTtcbiAgICBhd2FpdCBxdWVyeS5lYWNoKHJlc3VsdCA9PiByZXN1bHRzLnB1c2gocmVzdWx0KSk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgbmV3IFBhcnNlLlF1ZXJ5KFBhcnNlLlJvbGUpXG4gICAgICAuZXF1YWxUbygndXNlcnMnLCB0aGlzLnVzZXIpXG4gICAgICAuZWFjaChyZXN1bHQgPT4gcmVzdWx0cy5wdXNoKHJlc3VsdC50b0pTT04oKSksIHsgdXNlTWFzdGVyS2V5OiB0cnVlIH0pO1xuICB9XG4gIHJldHVybiByZXN1bHRzO1xufTtcblxuLy8gSXRlcmF0ZXMgdGhyb3VnaCB0aGUgcm9sZSB0cmVlIGFuZCBjb21waWxlcyBhIHVzZXIncyByb2xlc1xuQXV0aC5wcm90b3R5cGUuX2xvYWRSb2xlcyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGVDb250cm9sbGVyKSB7XG4gICAgY29uc3QgY2FjaGVkUm9sZXMgPSBhd2FpdCB0aGlzLmNhY2hlQ29udHJvbGxlci5yb2xlLmdldCh0aGlzLnVzZXIuaWQpO1xuICAgIGlmIChjYWNoZWRSb2xlcyAhPSBudWxsKSB7XG4gICAgICB0aGlzLmZldGNoZWRSb2xlcyA9IHRydWU7XG4gICAgICB0aGlzLnVzZXJSb2xlcyA9IGNhY2hlZFJvbGVzO1xuICAgICAgcmV0dXJuIGNhY2hlZFJvbGVzO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZpcnN0IGdldCB0aGUgcm9sZSBpZHMgdGhpcyB1c2VyIGlzIGRpcmVjdGx5IGEgbWVtYmVyIG9mXG4gIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLmdldFJvbGVzRm9yVXNlcigpO1xuICBpZiAoIXJlc3VsdHMubGVuZ3RoKSB7XG4gICAgdGhpcy51c2VyUm9sZXMgPSBbXTtcbiAgICB0aGlzLmZldGNoZWRSb2xlcyA9IHRydWU7XG4gICAgdGhpcy5yb2xlUHJvbWlzZSA9IG51bGw7XG5cbiAgICB0aGlzLmNhY2hlUm9sZXMoKTtcbiAgICByZXR1cm4gdGhpcy51c2VyUm9sZXM7XG4gIH1cblxuICBjb25zdCByb2xlc01hcCA9IHJlc3VsdHMucmVkdWNlKFxuICAgIChtLCByKSA9PiB7XG4gICAgICBtLm5hbWVzLnB1c2goci5uYW1lKTtcbiAgICAgIG0uaWRzLnB1c2goci5vYmplY3RJZCk7XG4gICAgICByZXR1cm4gbTtcbiAgICB9LFxuICAgIHsgaWRzOiBbXSwgbmFtZXM6IFtdIH1cbiAgKTtcblxuICAvLyBydW4gdGhlIHJlY3Vyc2l2ZSBmaW5kaW5nXG4gIGNvbnN0IHJvbGVOYW1lcyA9IGF3YWl0IHRoaXMuX2dldEFsbFJvbGVzTmFtZXNGb3JSb2xlSWRzKHJvbGVzTWFwLmlkcywgcm9sZXNNYXAubmFtZXMpO1xuICB0aGlzLnVzZXJSb2xlcyA9IHJvbGVOYW1lcy5tYXAociA9PiB7XG4gICAgcmV0dXJuICdyb2xlOicgKyByO1xuICB9KTtcbiAgdGhpcy5mZXRjaGVkUm9sZXMgPSB0cnVlO1xuICB0aGlzLnJvbGVQcm9taXNlID0gbnVsbDtcbiAgdGhpcy5jYWNoZVJvbGVzKCk7XG4gIHJldHVybiB0aGlzLnVzZXJSb2xlcztcbn07XG5cbkF1dGgucHJvdG90eXBlLmNhY2hlUm9sZXMgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghdGhpcy5jYWNoZUNvbnRyb2xsZXIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdGhpcy5jYWNoZUNvbnRyb2xsZXIucm9sZS5wdXQodGhpcy51c2VyLmlkLCBBcnJheSguLi50aGlzLnVzZXJSb2xlcykpO1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkF1dGgucHJvdG90eXBlLmNsZWFyUm9sZUNhY2hlID0gZnVuY3Rpb24gKHNlc3Npb25Ub2tlbikge1xuICBpZiAoIXRoaXMuY2FjaGVDb250cm9sbGVyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRoaXMuY2FjaGVDb250cm9sbGVyLnJvbGUuZGVsKHRoaXMudXNlci5pZCk7XG4gIHRoaXMuY2FjaGVDb250cm9sbGVyLnVzZXIuZGVsKHNlc3Npb25Ub2tlbik7XG4gIHJldHVybiB0cnVlO1xufTtcblxuQXV0aC5wcm90b3R5cGUuZ2V0Um9sZXNCeUlkcyA9IGFzeW5jIGZ1bmN0aW9uIChpbnMpIHtcbiAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAvLyBCdWlsZCBhbiBPUiBxdWVyeSBhY3Jvc3MgYWxsIHBhcmVudFJvbGVzXG4gIGlmICghdGhpcy5jb25maWcpIHtcbiAgICBhd2FpdCBuZXcgUGFyc2UuUXVlcnkoUGFyc2UuUm9sZSlcbiAgICAgIC5jb250YWluZWRJbihcbiAgICAgICAgJ3JvbGVzJyxcbiAgICAgICAgaW5zLm1hcChpZCA9PiB7XG4gICAgICAgICAgY29uc3Qgcm9sZSA9IG5ldyBQYXJzZS5PYmplY3QoUGFyc2UuUm9sZSk7XG4gICAgICAgICAgcm9sZS5pZCA9IGlkO1xuICAgICAgICAgIHJldHVybiByb2xlO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLmVhY2gocmVzdWx0ID0+IHJlc3VsdHMucHVzaChyZXN1bHQudG9KU09OKCkpLCB7IHVzZU1hc3RlcktleTogdHJ1ZSB9KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCByb2xlcyA9IGlucy5tYXAoaWQgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX190eXBlOiAnUG9pbnRlcicsXG4gICAgICAgIGNsYXNzTmFtZTogJ19Sb2xlJyxcbiAgICAgICAgb2JqZWN0SWQ6IGlkLFxuICAgICAgfTtcbiAgICB9KTtcbiAgICBjb25zdCByZXN0V2hlcmUgPSB7IHJvbGVzOiB7ICRpbjogcm9sZXMgfSB9O1xuICAgIGNvbnN0IFJlc3RRdWVyeSA9IHJlcXVpcmUoJy4vUmVzdFF1ZXJ5Jyk7XG4gICAgY29uc3QgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmZpbmQsXG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgICBhdXRoOiBtYXN0ZXIodGhpcy5jb25maWcpLFxuICAgICAgY2xhc3NOYW1lOiAnX1JvbGUnLFxuICAgICAgcmVzdFdoZXJlLFxuICAgIH0pO1xuICAgIGF3YWl0IHF1ZXJ5LmVhY2gocmVzdWx0ID0+IHJlc3VsdHMucHVzaChyZXN1bHQpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbi8vIEdpdmVuIGEgbGlzdCBvZiByb2xlSWRzLCBmaW5kIGFsbCB0aGUgcGFyZW50IHJvbGVzLCByZXR1cm5zIGEgcHJvbWlzZSB3aXRoIGFsbCBuYW1lc1xuQXV0aC5wcm90b3R5cGUuX2dldEFsbFJvbGVzTmFtZXNGb3JSb2xlSWRzID0gZnVuY3Rpb24gKHJvbGVJRHMsIG5hbWVzID0gW10sIHF1ZXJpZWRSb2xlcyA9IHt9KSB7XG4gIGNvbnN0IGlucyA9IHJvbGVJRHMuZmlsdGVyKHJvbGVJRCA9PiB7XG4gICAgY29uc3Qgd2FzUXVlcmllZCA9IHF1ZXJpZWRSb2xlc1tyb2xlSURdICE9PSB0cnVlO1xuICAgIHF1ZXJpZWRSb2xlc1tyb2xlSURdID0gdHJ1ZTtcbiAgICByZXR1cm4gd2FzUXVlcmllZDtcbiAgfSk7XG5cbiAgLy8gYWxsIHJvbGVzIGFyZSBhY2NvdW50ZWQgZm9yLCByZXR1cm4gdGhlIG5hbWVzXG4gIGlmIChpbnMubGVuZ3RoID09IDApIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFsuLi5uZXcgU2V0KG5hbWVzKV0pO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuZ2V0Um9sZXNCeUlkcyhpbnMpXG4gICAgLnRoZW4ocmVzdWx0cyA9PiB7XG4gICAgICAvLyBOb3RoaW5nIGZvdW5kXG4gICAgICBpZiAoIXJlc3VsdHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmFtZXMpO1xuICAgICAgfVxuICAgICAgLy8gTWFwIHRoZSByZXN1bHRzIHdpdGggYWxsIElkcyBhbmQgbmFtZXNcbiAgICAgIGNvbnN0IHJlc3VsdE1hcCA9IHJlc3VsdHMucmVkdWNlKFxuICAgICAgICAobWVtbywgcm9sZSkgPT4ge1xuICAgICAgICAgIG1lbW8ubmFtZXMucHVzaChyb2xlLm5hbWUpO1xuICAgICAgICAgIG1lbW8uaWRzLnB1c2gocm9sZS5vYmplY3RJZCk7XG4gICAgICAgICAgcmV0dXJuIG1lbW87XG4gICAgICAgIH0sXG4gICAgICAgIHsgaWRzOiBbXSwgbmFtZXM6IFtdIH1cbiAgICAgICk7XG4gICAgICAvLyBzdG9yZSB0aGUgbmV3IGZvdW5kIG5hbWVzXG4gICAgICBuYW1lcyA9IG5hbWVzLmNvbmNhdChyZXN1bHRNYXAubmFtZXMpO1xuICAgICAgLy8gZmluZCB0aGUgbmV4dCBvbmVzLCBjaXJjdWxhciByb2xlcyB3aWxsIGJlIGN1dFxuICAgICAgcmV0dXJuIHRoaXMuX2dldEFsbFJvbGVzTmFtZXNGb3JSb2xlSWRzKHJlc3VsdE1hcC5pZHMsIG5hbWVzLCBxdWVyaWVkUm9sZXMpO1xuICAgIH0pXG4gICAgLnRoZW4obmFtZXMgPT4ge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbLi4ubmV3IFNldChuYW1lcyldKTtcbiAgICB9KTtcbn07XG5cbmNvbnN0IGZpbmRVc2Vyc1dpdGhBdXRoRGF0YSA9IChjb25maWcsIGF1dGhEYXRhKSA9PiB7XG4gIGNvbnN0IHByb3ZpZGVycyA9IE9iamVjdC5rZXlzKGF1dGhEYXRhKTtcbiAgY29uc3QgcXVlcnkgPSBwcm92aWRlcnNcbiAgICAucmVkdWNlKChtZW1vLCBwcm92aWRlcikgPT4ge1xuICAgICAgaWYgKCFhdXRoRGF0YVtwcm92aWRlcl0gfHwgKGF1dGhEYXRhICYmICFhdXRoRGF0YVtwcm92aWRlcl0uaWQpKSB7XG4gICAgICAgIHJldHVybiBtZW1vO1xuICAgICAgfVxuICAgICAgY29uc3QgcXVlcnlLZXkgPSBgYXV0aERhdGEuJHtwcm92aWRlcn0uaWRgO1xuICAgICAgY29uc3QgcXVlcnkgPSB7fTtcbiAgICAgIHF1ZXJ5W3F1ZXJ5S2V5XSA9IGF1dGhEYXRhW3Byb3ZpZGVyXS5pZDtcbiAgICAgIG1lbW8ucHVzaChxdWVyeSk7XG4gICAgICByZXR1cm4gbWVtbztcbiAgICB9LCBbXSlcbiAgICAuZmlsdGVyKHEgPT4ge1xuICAgICAgcmV0dXJuIHR5cGVvZiBxICE9PSAndW5kZWZpbmVkJztcbiAgICB9KTtcblxuICByZXR1cm4gcXVlcnkubGVuZ3RoID4gMFxuICAgID8gY29uZmlnLmRhdGFiYXNlLmZpbmQoJ19Vc2VyJywgeyAkb3I6IHF1ZXJ5IH0sIHsgbGltaXQ6IDIgfSlcbiAgICA6IFByb21pc2UucmVzb2x2ZShbXSk7XG59O1xuXG5jb25zdCBoYXNNdXRhdGVkQXV0aERhdGEgPSAoYXV0aERhdGEsIHVzZXJBdXRoRGF0YSkgPT4ge1xuICBpZiAoIXVzZXJBdXRoRGF0YSkgcmV0dXJuIHsgaGFzTXV0YXRlZEF1dGhEYXRhOiB0cnVlLCBtdXRhdGVkQXV0aERhdGE6IGF1dGhEYXRhIH07XG4gIGNvbnN0IG11dGF0ZWRBdXRoRGF0YSA9IHt9O1xuICBPYmplY3Qua2V5cyhhdXRoRGF0YSkuZm9yRWFjaChwcm92aWRlciA9PiB7XG4gICAgLy8gQW5vbnltb3VzIHByb3ZpZGVyIGlzIG5vdCBoYW5kbGVkIHRoaXMgd2F5XG4gICAgaWYgKHByb3ZpZGVyID09PSAnYW5vbnltb3VzJykgcmV0dXJuO1xuICAgIGNvbnN0IHByb3ZpZGVyRGF0YSA9IGF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICBjb25zdCB1c2VyUHJvdmlkZXJBdXRoRGF0YSA9IHVzZXJBdXRoRGF0YVtwcm92aWRlcl07XG4gICAgaWYgKCFpc0RlZXBTdHJpY3RFcXVhbChwcm92aWRlckRhdGEsIHVzZXJQcm92aWRlckF1dGhEYXRhKSkge1xuICAgICAgbXV0YXRlZEF1dGhEYXRhW3Byb3ZpZGVyXSA9IHByb3ZpZGVyRGF0YTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYXNNdXRhdGVkQXV0aERhdGEgPSBPYmplY3Qua2V5cyhtdXRhdGVkQXV0aERhdGEpLmxlbmd0aCAhPT0gMDtcbiAgcmV0dXJuIHsgaGFzTXV0YXRlZEF1dGhEYXRhLCBtdXRhdGVkQXV0aERhdGEgfTtcbn07XG5cbmNvbnN0IGNoZWNrSWZVc2VySGFzUHJvdmlkZWRDb25maWd1cmVkUHJvdmlkZXJzRm9yTG9naW4gPSAoXG4gIHJlcSA9IHt9LFxuICBhdXRoRGF0YSA9IHt9LFxuICB1c2VyQXV0aERhdGEgPSB7fSxcbiAgY29uZmlnXG4pID0+IHtcbiAgY29uc3Qgc2F2ZWRVc2VyUHJvdmlkZXJzID0gT2JqZWN0LmtleXModXNlckF1dGhEYXRhKS5tYXAocHJvdmlkZXIgPT4gKHtcbiAgICBuYW1lOiBwcm92aWRlcixcbiAgICBhZGFwdGVyOiBjb25maWcuYXV0aERhdGFNYW5hZ2VyLmdldFZhbGlkYXRvckZvclByb3ZpZGVyKHByb3ZpZGVyKS5hZGFwdGVyLFxuICB9KSk7XG5cbiAgY29uc3QgaGFzUHJvdmlkZWRBU29sb1Byb3ZpZGVyID0gc2F2ZWRVc2VyUHJvdmlkZXJzLnNvbWUoXG4gICAgcHJvdmlkZXIgPT5cbiAgICAgIHByb3ZpZGVyICYmIHByb3ZpZGVyLmFkYXB0ZXIgJiYgcHJvdmlkZXIuYWRhcHRlci5wb2xpY3kgPT09ICdzb2xvJyAmJiBhdXRoRGF0YVtwcm92aWRlci5uYW1lXVxuICApO1xuXG4gIC8vIFNvbG8gcHJvdmlkZXJzIGNhbiBiZSBjb25zaWRlcmVkIGFzIHNhZmUsIHNvIHdlIGRvIG5vdCBoYXZlIHRvIGNoZWNrIGlmIHRoZSB1c2VyIG5lZWRzXG4gIC8vIHRvIHByb3ZpZGUgYW4gYWRkaXRpb25hbCBwcm92aWRlciB0byBsb2dpbi4gQW4gYXV0aCBhZGFwdGVyIHdpdGggXCJzb2xvXCIgKGxpa2Ugd2ViYXV0aG4pIG1lYW5zXG4gIC8vIG5vIFwiYWRkaXRpb25hbFwiIGF1dGggbmVlZHMgdG8gYmUgcHJvdmlkZWQgdG8gbG9naW4gKGxpa2UgT1RQLCBNRkEpXG4gIGlmIChoYXNQcm92aWRlZEFTb2xvUHJvdmlkZXIpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhZGRpdGlvblByb3ZpZGVyc05vdEZvdW5kID0gW107XG4gIGNvbnN0IGhhc1Byb3ZpZGVkQXRMZWFzdE9uZUFkZGl0aW9uYWxQcm92aWRlciA9IHNhdmVkVXNlclByb3ZpZGVycy5zb21lKHByb3ZpZGVyID0+IHtcbiAgICBsZXQgcG9saWN5ID0gcHJvdmlkZXIuYWRhcHRlci5wb2xpY3k7XG4gICAgaWYgKHR5cGVvZiBwb2xpY3kgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IHJlcXVlc3RPYmplY3QgPSB7XG4gICAgICAgIGlwOiByZXEuY29uZmlnLmlwLFxuICAgICAgICB1c2VyOiByZXEuYXV0aC51c2VyLFxuICAgICAgICBtYXN0ZXI6IHJlcS5hdXRoLmlzTWFzdGVyLFxuICAgICAgfTtcbiAgICAgIHBvbGljeSA9IHBvbGljeS5jYWxsKHByb3ZpZGVyLmFkYXB0ZXIsIHJlcXVlc3RPYmplY3QsIHVzZXJBdXRoRGF0YVtwcm92aWRlci5uYW1lXSk7XG4gICAgfVxuICAgIGlmIChwb2xpY3kgPT09ICdhZGRpdGlvbmFsJykge1xuICAgICAgaWYgKGF1dGhEYXRhW3Byb3ZpZGVyLm5hbWVdKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUHVzaCBtaXNzaW5nIHByb3ZpZGVyIGZvciBlcnJvciBtZXNzYWdlXG4gICAgICAgIGFkZGl0aW9uUHJvdmlkZXJzTm90Rm91bmQucHVzaChwcm92aWRlci5uYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBpZiAoaGFzUHJvdmlkZWRBdExlYXN0T25lQWRkaXRpb25hbFByb3ZpZGVyIHx8ICFhZGRpdGlvblByb3ZpZGVyc05vdEZvdW5kLmxlbmd0aCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICBQYXJzZS5FcnJvci5PVEhFUl9DQVVTRSxcbiAgICBgTWlzc2luZyBhZGRpdGlvbmFsIGF1dGhEYXRhICR7YWRkaXRpb25Qcm92aWRlcnNOb3RGb3VuZC5qb2luKCcsJyl9YFxuICApO1xufTtcblxuLy8gVmFsaWRhdGUgZWFjaCBhdXRoRGF0YSBzdGVwLWJ5LXN0ZXAgYW5kIHJldHVybiB0aGUgcHJvdmlkZXIgcmVzcG9uc2VzXG5jb25zdCBoYW5kbGVBdXRoRGF0YVZhbGlkYXRpb24gPSBhc3luYyAoYXV0aERhdGEsIHJlcSwgZm91bmRVc2VyKSA9PiB7XG4gIGxldCB1c2VyO1xuICBpZiAoZm91bmRVc2VyKSB7XG4gICAgdXNlciA9IFBhcnNlLlVzZXIuZnJvbUpTT04oeyBjbGFzc05hbWU6ICdfVXNlcicsIC4uLmZvdW5kVXNlciB9KTtcbiAgICAvLyBGaW5kIHVzZXIgYnkgc2Vzc2lvbiBhbmQgY3VycmVudCBvYmplY3RJZDsgb25seSBwYXNzIHVzZXIgaWYgaXQncyB0aGUgY3VycmVudCB1c2VyIG9yIG1hc3RlciBrZXkgaXMgcHJvdmlkZWRcbiAgfSBlbHNlIGlmIChcbiAgICAocmVxLmF1dGggJiZcbiAgICAgIHJlcS5hdXRoLnVzZXIgJiZcbiAgICAgIHR5cGVvZiByZXEuZ2V0VXNlcklkID09PSAnZnVuY3Rpb24nICYmXG4gICAgICByZXEuZ2V0VXNlcklkKCkgPT09IHJlcS5hdXRoLnVzZXIuaWQpIHx8XG4gICAgKHJlcS5hdXRoICYmIHJlcS5hdXRoLmlzTWFzdGVyICYmIHR5cGVvZiByZXEuZ2V0VXNlcklkID09PSAnZnVuY3Rpb24nICYmIHJlcS5nZXRVc2VySWQoKSlcbiAgKSB7XG4gICAgdXNlciA9IG5ldyBQYXJzZS5Vc2VyKCk7XG4gICAgdXNlci5pZCA9IHJlcS5hdXRoLmlzTWFzdGVyID8gcmVxLmdldFVzZXJJZCgpIDogcmVxLmF1dGgudXNlci5pZDtcbiAgICBhd2FpdCB1c2VyLmZldGNoKHsgdXNlTWFzdGVyS2V5OiB0cnVlIH0pO1xuICB9XG5cbiAgY29uc3QgeyB1cGRhdGVkT2JqZWN0IH0gPSByZXEuYnVpbGRQYXJzZU9iamVjdHMoKTtcbiAgY29uc3QgcmVxdWVzdE9iamVjdCA9IGdldFJlcXVlc3RPYmplY3QodW5kZWZpbmVkLCByZXEuYXV0aCwgdXBkYXRlZE9iamVjdCwgdXNlciwgcmVxLmNvbmZpZyk7XG4gIC8vIFBlcmZvcm0gdmFsaWRhdGlvbiBhcyBzdGVwLWJ5LXN0ZXAgcGlwZWxpbmUgZm9yIGJldHRlciBlcnJvciBjb25zaXN0ZW5jeVxuICAvLyBhbmQgYWxzbyB0byBhdm9pZCB0byB0cmlnZ2VyIGEgcHJvdmlkZXIgKGxpa2UgT1RQIFNNUykgaWYgYW5vdGhlciBvbmUgZmFpbHNcbiAgY29uc3QgYWNjID0geyBhdXRoRGF0YToge30sIGF1dGhEYXRhUmVzcG9uc2U6IHt9IH07XG4gIGNvbnN0IGF1dGhLZXlzID0gT2JqZWN0LmtleXMoYXV0aERhdGEpLnNvcnQoKTtcbiAgZm9yIChjb25zdCBwcm92aWRlciBvZiBhdXRoS2V5cykge1xuICAgIGxldCBtZXRob2QgPSAnJztcbiAgICB0cnkge1xuICAgICAgaWYgKGF1dGhEYXRhW3Byb3ZpZGVyXSA9PT0gbnVsbCkge1xuICAgICAgICBhY2MuYXV0aERhdGFbcHJvdmlkZXJdID0gbnVsbDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCB7IHZhbGlkYXRvciB9ID0gcmVxLmNvbmZpZy5hdXRoRGF0YU1hbmFnZXIuZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIocHJvdmlkZXIpO1xuICAgICAgY29uc3QgYXV0aFByb3ZpZGVyID0gKHJlcS5jb25maWcuYXV0aCB8fCB7fSlbcHJvdmlkZXJdIHx8IHt9O1xuICAgICAgaWYgKCF2YWxpZGF0b3IgfHwgYXV0aFByb3ZpZGVyLmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgICBQYXJzZS5FcnJvci5VTlNVUFBPUlRFRF9TRVJWSUNFLFxuICAgICAgICAgICdUaGlzIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBpcyB1bnN1cHBvcnRlZC4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBsZXQgdmFsaWRhdGlvblJlc3VsdCA9IGF3YWl0IHZhbGlkYXRvcihhdXRoRGF0YVtwcm92aWRlcl0sIHJlcSwgdXNlciwgcmVxdWVzdE9iamVjdCk7XG4gICAgICBtZXRob2QgPSB2YWxpZGF0aW9uUmVzdWx0ICYmIHZhbGlkYXRpb25SZXN1bHQubWV0aG9kO1xuICAgICAgcmVxdWVzdE9iamVjdC50cmlnZ2VyTmFtZSA9IG1ldGhvZDtcbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0ICYmIHZhbGlkYXRpb25SZXN1bHQudmFsaWRhdG9yKSB7XG4gICAgICAgIHZhbGlkYXRpb25SZXN1bHQgPSBhd2FpdCB2YWxpZGF0aW9uUmVzdWx0LnZhbGlkYXRvcigpO1xuICAgICAgfVxuICAgICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0KSB7XG4gICAgICAgIGFjYy5hdXRoRGF0YVtwcm92aWRlcl0gPSBhdXRoRGF0YVtwcm92aWRlcl07XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFPYmplY3Qua2V5cyh2YWxpZGF0aW9uUmVzdWx0KS5sZW5ndGgpIHtcbiAgICAgICAgYWNjLmF1dGhEYXRhW3Byb3ZpZGVyXSA9IGF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LnJlc3BvbnNlKSB7XG4gICAgICAgIGFjYy5hdXRoRGF0YVJlc3BvbnNlW3Byb3ZpZGVyXSA9IHZhbGlkYXRpb25SZXN1bHQucmVzcG9uc2U7XG4gICAgICB9XG4gICAgICAvLyBTb21lIGF1dGggcHJvdmlkZXJzIGFmdGVyIGluaXRpYWxpemF0aW9uIHdpbGwgYXZvaWQgdG8gcmVwbGFjZSBhdXRoRGF0YSBhbHJlYWR5IHN0b3JlZFxuICAgICAgaWYgKCF2YWxpZGF0aW9uUmVzdWx0LmRvTm90U2F2ZSkge1xuICAgICAgICBhY2MuYXV0aERhdGFbcHJvdmlkZXJdID0gdmFsaWRhdGlvblJlc3VsdC5zYXZlIHx8IGF1dGhEYXRhW3Byb3ZpZGVyXTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnN0IGUgPSByZXNvbHZlRXJyb3IoZXJyLCB7XG4gICAgICAgIGNvZGU6IFBhcnNlLkVycm9yLlNDUklQVF9GQUlMRUQsXG4gICAgICAgIG1lc3NhZ2U6ICdBdXRoIGZhaWxlZC4gVW5rbm93biBlcnJvci4nLFxuICAgICAgfSk7XG4gICAgICBjb25zdCB1c2VyU3RyaW5nID1cbiAgICAgICAgcmVxLmF1dGggJiYgcmVxLmF1dGgudXNlciA/IHJlcS5hdXRoLnVzZXIuaWQgOiByZXEuZGF0YS5vYmplY3RJZCB8fCB1bmRlZmluZWQ7XG4gICAgICBsb2dnZXIuZXJyb3IoXG4gICAgICAgIGBGYWlsZWQgcnVubmluZyBhdXRoIHN0ZXAgJHttZXRob2R9IGZvciAke3Byb3ZpZGVyfSBmb3IgdXNlciAke3VzZXJTdHJpbmd9IHdpdGggRXJyb3I6IGAgK1xuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGUpLFxuICAgICAgICB7XG4gICAgICAgICAgYXV0aGVudGljYXRpb25TdGVwOiBtZXRob2QsXG4gICAgICAgICAgZXJyb3I6IGUsXG4gICAgICAgICAgdXNlcjogdXNlclN0cmluZyxcbiAgICAgICAgICBwcm92aWRlcixcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG4gIHJldHVybiBhY2M7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgQXV0aCxcbiAgbWFzdGVyLFxuICBtYWludGVuYW5jZSxcbiAgbm9ib2R5LFxuICByZWFkT25seSxcbiAgc2hvdWxkVXBkYXRlU2Vzc2lvbkV4cGlyeSxcbiAgZ2V0QXV0aEZvclNlc3Npb25Ub2tlbixcbiAgZ2V0QXV0aEZvckxlZ2FjeVNlc3Npb25Ub2tlbixcbiAgZmluZFVzZXJzV2l0aEF1dGhEYXRhLFxuICBoYXNNdXRhdGVkQXV0aERhdGEsXG4gIGNoZWNrSWZVc2VySGFzUHJvdmlkZWRDb25maWd1cmVkUHJvdmlkZXJzRm9yTG9naW4sXG4gIGhhbmRsZUF1dGhEYXRhVmFsaWRhdGlvbixcbn07XG4iXSwibWFwcGluZ3MiOiI7O0FBQ0EsSUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsU0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsVUFBQSxHQUFBQyxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQUssVUFBQSxHQUFBRCxzQkFBQSxDQUFBSixPQUFBO0FBQW9DLFNBQUFJLHVCQUFBRSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBQUEsU0FBQUcsUUFBQUgsQ0FBQSxFQUFBSSxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFQLENBQUEsT0FBQU0sTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFB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
package/lib/ClientSDK.js CHANGED
@@ -36,4 +36,4 @@ module.exports = {
36
36
  supportsForwardDelete,
37
37
  fromString
38
38
  };
39
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZW12ZXIiLCJyZXF1aXJlIiwiY29tcGF0aWJsZSIsImNvbXBhdGlibGVTREsiLCJjbGllbnRTREsiLCJmcm9tU3RyaW5nIiwiY2xpZW50VmVyc2lvbiIsInZlcnNpb24iLCJjb21wYXRpYmxpdHlWZXJzaW9uIiwic2RrIiwic2F0aXNmaWVzIiwic3VwcG9ydHNGb3J3YXJkRGVsZXRlIiwianMiLCJ2ZXJzaW9uUkUiLCJtYXRjaCIsInRvTG93ZXJDYXNlIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9DbGllbnRTREsuanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHNlbXZlciA9IHJlcXVpcmUoJ3NlbXZlcicpO1xuXG5mdW5jdGlvbiBjb21wYXRpYmxlKGNvbXBhdGlibGVTREspIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChjbGllbnRTREspIHtcbiAgICBpZiAodHlwZW9mIGNsaWVudFNESyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNsaWVudFNESyA9IGZyb21TdHJpbmcoY2xpZW50U0RLKTtcbiAgICB9XG4gICAgLy8gUkVTVCBBUEksIG9yIGN1c3RvbSBTREtcbiAgICBpZiAoIWNsaWVudFNESykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGNsaWVudFZlcnNpb24gPSBjbGllbnRTREsudmVyc2lvbjtcbiAgICBjb25zdCBjb21wYXRpYmxpdHlWZXJzaW9uID0gY29tcGF0aWJsZVNES1tjbGllbnRTREsuc2RrXTtcbiAgICByZXR1cm4gc2VtdmVyLnNhdGlzZmllcyhjbGllbnRWZXJzaW9uLCBjb21wYXRpYmxpdHlWZXJzaW9uKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc3VwcG9ydHNGb3J3YXJkRGVsZXRlKGNsaWVudFNESykge1xuICByZXR1cm4gY29tcGF0aWJsZSh7XG4gICAganM6ICc+PTEuOS4wJyxcbiAgfSkoY2xpZW50U0RLKTtcbn1cblxuZnVuY3Rpb24gZnJvbVN0cmluZyh2ZXJzaW9uKSB7XG4gIGNvbnN0IHZlcnNpb25SRSA9IC8oWy1hLXpBLVpdKykoWzAtOVxcLl0rKS87XG4gIGNvbnN0IG1hdGNoID0gdmVyc2lvbi50b0xvd2VyQ2FzZSgpLm1hdGNoKHZlcnNpb25SRSk7XG4gIGlmIChtYXRjaCAmJiBtYXRjaC5sZW5ndGggPT09IDMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2RrOiBtYXRjaFsxXSxcbiAgICAgIHZlcnNpb246IG1hdGNoWzJdLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNvbXBhdGlibGUsXG4gIHN1cHBvcnRzRm9yd2FyZERlbGV0ZSxcbiAgZnJvbVN0cmluZyxcbn07XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBSUEsTUFBTSxHQUFHQyxPQUFPLENBQUMsUUFBUSxDQUFDO0FBRTlCLFNBQVNDLFVBQVVBLENBQUNDLGFBQWEsRUFBRTtFQUNqQyxPQUFPLFVBQVVDLFNBQVMsRUFBRTtJQUMxQixJQUFJLE9BQU9BLFNBQVMsS0FBSyxRQUFRLEVBQUU7TUFDakNBLFNBQVMsR0FBR0MsVUFBVSxDQUFDRCxTQUFTLENBQUM7SUFDbkM7SUFDQTtJQUNBLElBQUksQ0FBQ0EsU0FBUyxFQUFFO01BQ2QsT0FBTyxJQUFJO0lBQ2I7SUFDQSxNQUFNRSxhQUFhLEdBQUdGLFNBQVMsQ0FBQ0csT0FBTztJQUN2QyxNQUFNQyxtQkFBbUIsR0FBR0wsYUFBYSxDQUFDQyxTQUFTLENBQUNLLEdBQUcsQ0FBQztJQUN4RCxPQUFPVCxNQUFNLENBQUNVLFNBQVMsQ0FBQ0osYUFBYSxFQUFFRSxtQkFBbUIsQ0FBQztFQUM3RCxDQUFDO0FBQ0g7QUFFQSxTQUFTRyxxQkFBcUJBLENBQUNQLFNBQVMsRUFBRTtFQUN4QyxPQUFPRixVQUFVLENBQUM7SUFDaEJVLEVBQUUsRUFBRTtFQUNOLENBQUMsQ0FBQyxDQUFDUixTQUFTLENBQUM7QUFDZjtBQUVBLFNBQVNDLFVBQVVBLENBQUNFLE9BQU8sRUFBRTtFQUMzQixNQUFNTSxTQUFTLEdBQUcsd0JBQXdCO0VBQzFDLE1BQU1DLEtBQUssR0FBR1AsT0FBTyxDQUFDUSxXQUFXLENBQUMsQ0FBQyxDQUFDRCxLQUFLLENBQUNELFNBQVMsQ0FBQztFQUNwRCxJQUFJQyxLQUFLLElBQUlBLEtBQUssQ0FBQ0UsTUFBTSxLQUFLLENBQUMsRUFBRTtJQUMvQixPQUFPO01BQ0xQLEdBQUcsRUFBRUssS0FBSyxDQUFDLENBQUMsQ0FBQztNQUNiUCxPQUFPLEVBQUVPLEtBQUssQ0FBQyxDQUFDO0lBQ2xCLENBQUM7RUFDSDtFQUNBLE9BQU9HLFNBQVM7QUFDbEI7QUFFQUMsTUFBTSxDQUFDQyxPQUFPLEdBQUc7RUFDZmpCLFVBQVU7RUFDVlMscUJBQXFCO0VBQ3JCTjtBQUNGLENBQUMifQ==
39
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZW12ZXIiLCJyZXF1aXJlIiwiY29tcGF0aWJsZSIsImNvbXBhdGlibGVTREsiLCJjbGllbnRTREsiLCJmcm9tU3RyaW5nIiwiY2xpZW50VmVyc2lvbiIsInZlcnNpb24iLCJjb21wYXRpYmxpdHlWZXJzaW9uIiwic2RrIiwic2F0aXNmaWVzIiwic3VwcG9ydHNGb3J3YXJkRGVsZXRlIiwianMiLCJ2ZXJzaW9uUkUiLCJtYXRjaCIsInRvTG93ZXJDYXNlIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9DbGllbnRTREsuanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHNlbXZlciA9IHJlcXVpcmUoJ3NlbXZlcicpO1xuXG5mdW5jdGlvbiBjb21wYXRpYmxlKGNvbXBhdGlibGVTREspIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChjbGllbnRTREspIHtcbiAgICBpZiAodHlwZW9mIGNsaWVudFNESyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNsaWVudFNESyA9IGZyb21TdHJpbmcoY2xpZW50U0RLKTtcbiAgICB9XG4gICAgLy8gUkVTVCBBUEksIG9yIGN1c3RvbSBTREtcbiAgICBpZiAoIWNsaWVudFNESykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGNsaWVudFZlcnNpb24gPSBjbGllbnRTREsudmVyc2lvbjtcbiAgICBjb25zdCBjb21wYXRpYmxpdHlWZXJzaW9uID0gY29tcGF0aWJsZVNES1tjbGllbnRTREsuc2RrXTtcbiAgICByZXR1cm4gc2VtdmVyLnNhdGlzZmllcyhjbGllbnRWZXJzaW9uLCBjb21wYXRpYmxpdHlWZXJzaW9uKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc3VwcG9ydHNGb3J3YXJkRGVsZXRlKGNsaWVudFNESykge1xuICByZXR1cm4gY29tcGF0aWJsZSh7XG4gICAganM6ICc+PTEuOS4wJyxcbiAgfSkoY2xpZW50U0RLKTtcbn1cblxuZnVuY3Rpb24gZnJvbVN0cmluZyh2ZXJzaW9uKSB7XG4gIGNvbnN0IHZlcnNpb25SRSA9IC8oWy1hLXpBLVpdKykoWzAtOVxcLl0rKS87XG4gIGNvbnN0IG1hdGNoID0gdmVyc2lvbi50b0xvd2VyQ2FzZSgpLm1hdGNoKHZlcnNpb25SRSk7XG4gIGlmIChtYXRjaCAmJiBtYXRjaC5sZW5ndGggPT09IDMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2RrOiBtYXRjaFsxXSxcbiAgICAgIHZlcnNpb246IG1hdGNoWzJdLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNvbXBhdGlibGUsXG4gIHN1cHBvcnRzRm9yd2FyZERlbGV0ZSxcbiAgZnJvbVN0cmluZyxcbn07XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBSUEsTUFBTSxHQUFHQyxPQUFPLENBQUMsUUFBUSxDQUFDO0FBRTlCLFNBQVNDLFVBQVVBLENBQUNDLGFBQWEsRUFBRTtFQUNqQyxPQUFPLFVBQVVDLFNBQVMsRUFBRTtJQUMxQixJQUFJLE9BQU9BLFNBQVMsS0FBSyxRQUFRLEVBQUU7TUFDakNBLFNBQVMsR0FBR0MsVUFBVSxDQUFDRCxTQUFTLENBQUM7SUFDbkM7SUFDQTtJQUNBLElBQUksQ0FBQ0EsU0FBUyxFQUFFO01BQ2QsT0FBTyxJQUFJO0lBQ2I7SUFDQSxNQUFNRSxhQUFhLEdBQUdGLFNBQVMsQ0FBQ0csT0FBTztJQUN2QyxNQUFNQyxtQkFBbUIsR0FBR0wsYUFBYSxDQUFDQyxTQUFTLENBQUNLLEdBQUcsQ0FBQztJQUN4RCxPQUFPVCxNQUFNLENBQUNVLFNBQVMsQ0FBQ0osYUFBYSxFQUFFRSxtQkFBbUIsQ0FBQztFQUM3RCxDQUFDO0FBQ0g7QUFFQSxTQUFTRyxxQkFBcUJBLENBQUNQLFNBQVMsRUFBRTtFQUN4QyxPQUFPRixVQUFVLENBQUM7SUFDaEJVLEVBQUUsRUFBRTtFQUNOLENBQUMsQ0FBQyxDQUFDUixTQUFTLENBQUM7QUFDZjtBQUVBLFNBQVNDLFVBQVVBLENBQUNFLE9BQU8sRUFBRTtFQUMzQixNQUFNTSxTQUFTLEdBQUcsd0JBQXdCO0VBQzFDLE1BQU1DLEtBQUssR0FBR1AsT0FBTyxDQUFDUSxXQUFXLENBQUMsQ0FBQyxDQUFDRCxLQUFLLENBQUNELFNBQVMsQ0FBQztFQUNwRCxJQUFJQyxLQUFLLElBQUlBLEtBQUssQ0FBQ0UsTUFBTSxLQUFLLENBQUMsRUFBRTtJQUMvQixPQUFPO01BQ0xQLEdBQUcsRUFBRUssS0FBSyxDQUFDLENBQUMsQ0FBQztNQUNiUCxPQUFPLEVBQUVPLEtBQUssQ0FBQyxDQUFDO0lBQ2xCLENBQUM7RUFDSDtFQUNBLE9BQU9HLFNBQVM7QUFDbEI7QUFFQUMsTUFBTSxDQUFDQyxPQUFPLEdBQUc7RUFDZmpCLFVBQVU7RUFDVlMscUJBQXFCO0VBQ3JCTjtBQUNGLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=