@aerokit/sdk 12.77.0 → 12.79.0
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.
- package/dist/cjs/bpm/process.js +4 -1
- package/dist/cjs/bpm/tasks.js +3 -1
- package/dist/cjs/bpm/tracer.js +3 -1
- package/dist/cjs/cms/cmis.js +105 -177
- package/dist/cjs/db/database.js +5 -1
- package/dist/cjs/db/query.js +19 -1
- package/dist/cjs/db/repository.js +2 -1
- package/dist/cjs/db/sql.js +5 -2
- package/dist/cjs/etcd/client.js +4 -1
- package/dist/cjs/http/errors/ForbiddenError.js +9 -9
- package/dist/cjs/http/errors/ValidationError.js +9 -9
- package/dist/cjs/http/request.js +2 -1
- package/dist/cjs/http/response.js +102 -188
- package/dist/cjs/http/rs/resource-http-controller.js +4 -1
- package/dist/cjs/http/rs/resource-mappings.js +6 -3
- package/dist/cjs/http/rs/resource-method.js +10 -1
- package/dist/cjs/http/rs/resource.js +11 -1
- package/dist/cjs/http/upload.js +3 -1
- package/dist/cjs/io/files.js +5 -7
- package/dist/cjs/io/streams.js +5 -1
- package/dist/cjs/io/zip.js +4 -1
- package/dist/cjs/job/scheduler.js +4 -1
- package/dist/cjs/kafka/consumer.js +3 -2
- package/dist/cjs/kafka/producer.js +3 -1
- package/dist/cjs/log/logging.js +2 -1
- package/dist/cjs/mail/client.js +2 -1
- package/dist/cjs/messaging/consumer.js +3 -1
- package/dist/cjs/messaging/producer.js +3 -1
- package/dist/cjs/mongodb/client.js +26 -1
- package/dist/cjs/mongodb/dao.js +3 -1
- package/dist/cjs/net/soap.js +15 -1
- package/dist/cjs/net/websockets.js +5 -1
- package/dist/cjs/platform/engines.js +2 -1
- package/dist/cjs/platform/os.js +7 -9
- package/dist/cjs/platform/problems.js +7 -13
- package/dist/cjs/platform/registry.js +4 -1
- package/dist/cjs/platform/repository.js +4 -1
- package/dist/cjs/platform/workspace.js +8 -1
- package/dist/cjs/redis/client.js +2 -1
- package/dist/cjs/security/oauth.js +2 -1
- package/dist/cjs/template/engines.js +6 -1
- package/dist/dts/db/query.d.ts +10 -0
- package/dist/esm/bpm/process.mjs +4 -1
- package/dist/esm/bpm/tasks.mjs +3 -1
- package/dist/esm/bpm/tracer.mjs +3 -1
- package/dist/esm/cms/cmis.mjs +105 -177
- package/dist/esm/db/database.mjs +5 -1
- package/dist/esm/db/query.mjs +19 -1
- package/dist/esm/db/repository.mjs +2 -1
- package/dist/esm/db/sql.mjs +5 -2
- package/dist/esm/etcd/client.mjs +4 -1
- package/dist/esm/http/errors/ForbiddenError.mjs +9 -9
- package/dist/esm/http/errors/ValidationError.mjs +9 -9
- package/dist/esm/http/request.mjs +2 -1
- package/dist/esm/http/response.mjs +102 -188
- package/dist/esm/http/rs/resource-http-controller.mjs +4 -1
- package/dist/esm/http/rs/resource-mappings.mjs +6 -3
- package/dist/esm/http/rs/resource-method.mjs +10 -1
- package/dist/esm/http/rs/resource.mjs +11 -1
- package/dist/esm/http/upload.mjs +3 -1
- package/dist/esm/io/files.mjs +5 -7
- package/dist/esm/io/streams.mjs +5 -1
- package/dist/esm/io/zip.mjs +4 -1
- package/dist/esm/job/scheduler.mjs +4 -1
- package/dist/esm/kafka/consumer.mjs +3 -2
- package/dist/esm/kafka/producer.mjs +3 -1
- package/dist/esm/log/logging.mjs +2 -1
- package/dist/esm/mail/client.mjs +2 -1
- package/dist/esm/messaging/consumer.mjs +3 -1
- package/dist/esm/messaging/producer.mjs +3 -1
- package/dist/esm/mongodb/client.mjs +26 -1
- package/dist/esm/mongodb/dao.mjs +3 -1
- package/dist/esm/net/soap.mjs +15 -1
- package/dist/esm/net/websockets.mjs +5 -1
- package/dist/esm/platform/engines.mjs +2 -1
- package/dist/esm/platform/os.mjs +7 -9
- package/dist/esm/platform/problems.mjs +7 -13
- package/dist/esm/platform/registry.mjs +4 -1
- package/dist/esm/platform/repository.mjs +4 -1
- package/dist/esm/platform/workspace.mjs +8 -1
- package/dist/esm/redis/client.mjs +2 -1
- package/dist/esm/security/oauth.mjs +2 -1
- package/dist/esm/template/engines.mjs +6 -1
- package/package.json +1 -1
package/dist/cjs/bpm/tracer.js
CHANGED
|
@@ -23,6 +23,8 @@ module.exports = __toCommonJS(tracer_exports);
|
|
|
23
23
|
var import_bpm = require("@aerokit/sdk/bpm");
|
|
24
24
|
var import_log = require("@aerokit/sdk/log");
|
|
25
25
|
class Tracer {
|
|
26
|
+
startTime;
|
|
27
|
+
logger;
|
|
26
28
|
constructor() {
|
|
27
29
|
this.startTime = /* @__PURE__ */ new Date();
|
|
28
30
|
this.logger = import_log.Logging.getLogger("bpm.tracer");
|
|
@@ -59,4 +61,4 @@ class Tracer {
|
|
|
59
61
|
return "[no-execution-context]";
|
|
60
62
|
}
|
|
61
63
|
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2JwbS90cmFjZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IFByb2Nlc3MgfSBmcm9tICdAYWVyb2tpdC9zZGsvYnBtJztcbmltcG9ydCB7IExvZ2dpbmcsIExvZ2dlciB9IGZyb20gXCJAYWVyb2tpdC9zZGsvbG9nXCI7XG5cbmV4cG9ydCBjbGFzcyBUcmFjZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhcnRUaW1lOiBEYXRlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXI7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zdGFydFRpbWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB0aGlzLmxvZ2dlciA9IExvZ2dpbmcuZ2V0TG9nZ2VyKCdicG0udHJhY2VyJyk7XG4gICAgICAgIHRoaXMubG9nKCdTdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvZyhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhgJHt0aGlzLmdldElkKCl9IC0gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyB3YXJuKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGAke3RoaXMuZ2V0SWQoKX0gLSAke21lc3NhZ2UgPz8gJyd9YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGVycm9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgJHt0aGlzLmdldElkKCl9IC0gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wbGV0ZShtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCBzZWNvbmRzID0gTWF0aC5jZWlsKChlbmRUaW1lLmdldFRpbWUoKSAtIHRoaXMuc3RhcnRUaW1lLmdldFRpbWUoKSkgLyAxMDAwKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhgJHt0aGlzLmdldElkKCl9IC0gQ29tcGxldGVkIGFmdGVyICR7c2Vjb25kc30gc2Vjb25kcy4gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBmYWlsKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZW5kVGltZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGNvbnN0IHNlY29uZHMgPSBNYXRoLmNlaWwoKGVuZFRpbWUuZ2V0VGltZSgpIC0gdGhpcy5zdGFydFRpbWUuZ2V0VGltZSgpKSAvIDEwMDApO1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgJHt0aGlzLmdldElkKCl9IC0gRmFpbGVkIGFmdGVyICR7c2Vjb25kc30gc2Vjb25kcy4gJHttZXNzYWdlID8/
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2JwbS90cmFjZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IFByb2Nlc3MgfSBmcm9tICdAYWVyb2tpdC9zZGsvYnBtJztcbmltcG9ydCB7IExvZ2dpbmcsIExvZ2dlciB9IGZyb20gXCJAYWVyb2tpdC9zZGsvbG9nXCI7XG5cbmV4cG9ydCBjbGFzcyBUcmFjZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhcnRUaW1lOiBEYXRlO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBMb2dnZXI7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zdGFydFRpbWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICB0aGlzLmxvZ2dlciA9IExvZ2dpbmcuZ2V0TG9nZ2VyKCdicG0udHJhY2VyJyk7XG4gICAgICAgIHRoaXMubG9nKCdTdGFydGVkJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvZyhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhgJHt0aGlzLmdldElkKCl9IC0gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyB3YXJuKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGAke3RoaXMuZ2V0SWQoKX0gLSAke21lc3NhZ2UgPz8gJyd9YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGVycm9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgJHt0aGlzLmdldElkKCl9IC0gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wbGV0ZShtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCBzZWNvbmRzID0gTWF0aC5jZWlsKChlbmRUaW1lLmdldFRpbWUoKSAtIHRoaXMuc3RhcnRUaW1lLmdldFRpbWUoKSkgLyAxMDAwKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhgJHt0aGlzLmdldElkKCl9IC0gQ29tcGxldGVkIGFmdGVyICR7c2Vjb25kc30gc2Vjb25kcy4gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBmYWlsKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgZW5kVGltZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGNvbnN0IHNlY29uZHMgPSBNYXRoLmNlaWwoKGVuZFRpbWUuZ2V0VGltZSgpIC0gdGhpcy5zdGFydFRpbWUuZ2V0VGltZSgpKSAvIDEwMDApO1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgJHt0aGlzLmdldElkKCl9IC0gRmFpbGVkIGFmdGVyICR7c2Vjb25kc30gc2Vjb25kcy4gJHttZXNzYWdlID8/ICcnfWApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SWQoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZXhlY3V0aW9uQ29udGV4dCA9IFByb2Nlc3MuZ2V0RXhlY3V0aW9uQ29udGV4dCgpO1xuICAgICAgICBpZiAoZXhlY3V0aW9uQ29udGV4dCkge1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc0RlZmluaXRpb25JZCA9IGV4ZWN1dGlvbkNvbnRleHQuZ2V0UHJvY2Vzc0RlZmluaXRpb25JZCgpO1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc0luc3RhbmNlSWQgPSBleGVjdXRpb25Db250ZXh0LmdldFByb2Nlc3NJbnN0YW5jZUlkKCk7XG4gICAgICAgICAgICBjb25zdCBidXNpbmVzc0tleSA9IGV4ZWN1dGlvbkNvbnRleHQuZ2V0UHJvY2Vzc0luc3RhbmNlQnVzaW5lc3NLZXkoKTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2aXR5SWQgPSBleGVjdXRpb25Db250ZXh0LmdldEN1cnJlbnRBY3Rpdml0eUlkKCk7XG4gICAgICAgICAgICByZXR1cm4gYFske3Byb2Nlc3NEZWZpbml0aW9uSWR9XVske3Byb2Nlc3NJbnN0YW5jZUlkfV1bJHtidXNpbmVzc0tleX1dWyR7YWN0aXZpdHlJZH1dYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ1tuby1leGVjdXRpb24tY29udGV4dF0nO1xuICAgIH1cbn0iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxpQkFBd0I7QUFDeEIsaUJBQWdDO0FBRXpCLE1BQU0sT0FBTztBQUFBLEVBQ0M7QUFBQSxFQUNBO0FBQUEsRUFFakIsY0FBYztBQUNWLFNBQUssWUFBWSxvQkFBSSxLQUFLO0FBQzFCLFNBQUssU0FBUyxtQkFBUSxVQUFVLFlBQVk7QUFDNUMsU0FBSyxJQUFJLFNBQVM7QUFBQSxFQUN0QjtBQUFBLEVBRU8sSUFBSSxTQUFpQjtBQUN4QixTQUFLLE9BQU8sS0FBSyxHQUFHLEtBQUssTUFBTSxDQUFDLE1BQU0sV0FBVyxFQUFFLEVBQUU7QUFBQSxFQUN6RDtBQUFBLEVBRU8sS0FBSyxTQUFpQjtBQUN6QixTQUFLLE9BQU8sS0FBSyxHQUFHLEtBQUssTUFBTSxDQUFDLE1BQU0sV0FBVyxFQUFFLEVBQUU7QUFBQSxFQUN6RDtBQUFBLEVBRU8sTUFBTSxTQUFpQjtBQUMxQixTQUFLLE9BQU8sTUFBTSxHQUFHLEtBQUssTUFBTSxDQUFDLE1BQU0sV0FBVyxFQUFFLEVBQUU7QUFBQSxFQUMxRDtBQUFBLEVBRU8sU0FBUyxTQUFrQjtBQUM5QixVQUFNLFVBQVUsb0JBQUksS0FBSztBQUN6QixVQUFNLFVBQVUsS0FBSyxNQUFNLFFBQVEsUUFBUSxJQUFJLEtBQUssVUFBVSxRQUFRLEtBQUssR0FBSTtBQUMvRSxTQUFLLE9BQU8sS0FBSyxHQUFHLEtBQUssTUFBTSxDQUFDLHNCQUFzQixPQUFPLGFBQWEsV0FBVyxFQUFFLEVBQUU7QUFBQSxFQUM3RjtBQUFBLEVBRU8sS0FBSyxTQUFrQjtBQUMxQixVQUFNLFVBQVUsb0JBQUksS0FBSztBQUN6QixVQUFNLFVBQVUsS0FBSyxNQUFNLFFBQVEsUUFBUSxJQUFJLEtBQUssVUFBVSxRQUFRLEtBQUssR0FBSTtBQUMvRSxTQUFLLE9BQU8sTUFBTSxHQUFHLEtBQUssTUFBTSxDQUFDLG1CQUFtQixPQUFPLGFBQWEsV0FBVyxFQUFFLEVBQUU7QUFBQSxFQUMzRjtBQUFBLEVBRVEsUUFBZ0I7QUFDcEIsVUFBTSxtQkFBbUIsbUJBQVEsb0JBQW9CO0FBQ3JELFFBQUksa0JBQWtCO0FBQ2xCLFlBQU0sc0JBQXNCLGlCQUFpQix1QkFBdUI7QUFDcEUsWUFBTSxvQkFBb0IsaUJBQWlCLHFCQUFxQjtBQUNoRSxZQUFNLGNBQWMsaUJBQWlCLDhCQUE4QjtBQUNuRSxZQUFNLGFBQWEsaUJBQWlCLHFCQUFxQjtBQUN6RCxhQUFPLElBQUksbUJBQW1CLEtBQUssaUJBQWlCLEtBQUssV0FBVyxLQUFLLFVBQVU7QUFBQSxJQUN2RjtBQUNBLFdBQU87QUFBQSxFQUNYO0FBQ0o7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
package/dist/cjs/cms/cmis.js
CHANGED
|
@@ -37,182 +37,100 @@ const CmisFacade = Java.type("org.eclipse.dirigible.components.api.cms.CmisFacad
|
|
|
37
37
|
const Gson = Java.type("com.google.gson.Gson");
|
|
38
38
|
const HashMap = Java.type("java.util.HashMap");
|
|
39
39
|
class Cmis {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
static
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
static
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
static
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
static
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
static
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
static
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
static
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
static
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
static
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
static
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
static
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
static
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
static
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
}
|
|
135
|
-
static {
|
|
136
|
-
/** CMIS property: MIME type of the content stream. */
|
|
137
|
-
this.CONTENT_STREAM_MIME_TYPE = "cmis:contentStreamMimeType";
|
|
138
|
-
}
|
|
139
|
-
static {
|
|
140
|
-
/** CMIS property: Original file name of the content stream. */
|
|
141
|
-
this.CONTENT_STREAM_FILE_NAME = "cmis:contentStreamFileName";
|
|
142
|
-
}
|
|
143
|
-
static {
|
|
144
|
-
/** CMIS property: ID of the content stream. */
|
|
145
|
-
this.CONTENT_STREAM_ID = "cmis:contentStreamId";
|
|
146
|
-
}
|
|
147
|
-
static {
|
|
148
|
-
// ---- Folder CMIS Properties ----
|
|
149
|
-
/** CMIS property: Object ID of the parent folder. */
|
|
150
|
-
this.PARENT_ID = "cmis:parentId";
|
|
151
|
-
}
|
|
152
|
-
static {
|
|
153
|
-
/** CMIS property: List of allowed object type IDs for children. */
|
|
154
|
-
this.ALLOWED_CHILD_OBJECT_TYPE_IDS = "cmis:allowedChildObjectTypeIds";
|
|
155
|
-
}
|
|
156
|
-
static {
|
|
157
|
-
/** CMIS property: Path of the folder in the repository. */
|
|
158
|
-
this.PATH = "cmis:path";
|
|
159
|
-
}
|
|
160
|
-
static {
|
|
161
|
-
// ---- Relationship CMIS Properties ----
|
|
162
|
-
/** CMIS property: Object ID of the relationship source. */
|
|
163
|
-
this.SOURCE_ID = "cmis:sourceId";
|
|
164
|
-
}
|
|
165
|
-
static {
|
|
166
|
-
/** CMIS property: Object ID of the relationship target. */
|
|
167
|
-
this.TARGET_ID = "cmis:targetId";
|
|
168
|
-
}
|
|
169
|
-
static {
|
|
170
|
-
// ---- Policy CMIS Properties ----
|
|
171
|
-
/** CMIS property: Text content of the policy. */
|
|
172
|
-
this.POLICY_TEXT = "cmis:policyText";
|
|
173
|
-
}
|
|
174
|
-
static {
|
|
175
|
-
// ---- Versioning States ----
|
|
176
|
-
/** CMIS Versioning State: No versioning. */
|
|
177
|
-
this.VERSIONING_STATE_NONE = "none";
|
|
178
|
-
}
|
|
179
|
-
static {
|
|
180
|
-
/** CMIS Versioning State: Create a new major version. */
|
|
181
|
-
this.VERSIONING_STATE_MAJOR = "major";
|
|
182
|
-
}
|
|
183
|
-
static {
|
|
184
|
-
/** CMIS Versioning State: Create a new minor version. */
|
|
185
|
-
this.VERSIONING_STATE_MINOR = "minor";
|
|
186
|
-
}
|
|
187
|
-
static {
|
|
188
|
-
/** CMIS Versioning State: Document is checked out. */
|
|
189
|
-
this.VERSIONING_STATE_CHECKEDOUT = "checkedout";
|
|
190
|
-
}
|
|
191
|
-
static {
|
|
192
|
-
// ---- Object Types ----
|
|
193
|
-
/** CMIS Object Type ID: Document. */
|
|
194
|
-
this.OBJECT_TYPE_DOCUMENT = "cmis:document";
|
|
195
|
-
}
|
|
196
|
-
static {
|
|
197
|
-
/** CMIS Object Type ID: Folder. */
|
|
198
|
-
this.OBJECT_TYPE_FOLDER = "cmis:folder";
|
|
199
|
-
}
|
|
200
|
-
static {
|
|
201
|
-
/** CMIS Object Type ID: Relationship. */
|
|
202
|
-
this.OBJECT_TYPE_RELATIONSHIP = "cmis:relationship";
|
|
203
|
-
}
|
|
204
|
-
static {
|
|
205
|
-
/** CMIS Object Type ID: Policy. */
|
|
206
|
-
this.OBJECT_TYPE_POLICY = "cmis:policy";
|
|
207
|
-
}
|
|
208
|
-
static {
|
|
209
|
-
/** CMIS Object Type ID: Item. */
|
|
210
|
-
this.OBJECT_TYPE_ITEM = "cmis:item";
|
|
211
|
-
}
|
|
212
|
-
static {
|
|
213
|
-
/** CMIS Object Type ID: Secondary. */
|
|
214
|
-
this.OBJECT_TYPE_SECONDARY = "cmis:secondary";
|
|
215
|
-
}
|
|
40
|
+
// CONSTANTS
|
|
41
|
+
/**
|
|
42
|
+
* CMIS method constant for read operations.
|
|
43
|
+
*/
|
|
44
|
+
static METHOD_READ = "READ";
|
|
45
|
+
/**
|
|
46
|
+
* CMIS method constant for write operations.
|
|
47
|
+
*/
|
|
48
|
+
static METHOD_WRITE = "WRITE";
|
|
49
|
+
// ---- Base CMIS Properties ----
|
|
50
|
+
/** CMIS property: Object name. */
|
|
51
|
+
static NAME = "cmis:name";
|
|
52
|
+
/** CMIS property: Unique object identifier. */
|
|
53
|
+
static OBJECT_ID = "cmis:objectId";
|
|
54
|
+
/** CMIS property: Object type identifier. */
|
|
55
|
+
static OBJECT_TYPE_ID = "cmis:objectTypeId";
|
|
56
|
+
/** CMIS property: Base object type identifier. */
|
|
57
|
+
static BASE_TYPE_ID = "cmis:baseTypeId";
|
|
58
|
+
/** CMIS property: User who created the object. */
|
|
59
|
+
static CREATED_BY = "cmis:createdBy";
|
|
60
|
+
/** CMIS property: Timestamp of object creation. */
|
|
61
|
+
static CREATION_DATE = "cmis:creationDate";
|
|
62
|
+
/** CMIS property: User who last modified the object. */
|
|
63
|
+
static LAST_MODIFIED_BY = "cmis:lastModifiedBy";
|
|
64
|
+
/** CMIS property: Timestamp of last modification. */
|
|
65
|
+
static LAST_MODIFICATION_DATE = "cmis:lastModificationDate";
|
|
66
|
+
/** CMIS property: Change token for object change tracking. */
|
|
67
|
+
static CHANGE_TOKEN = "cmis:changeToken";
|
|
68
|
+
// ---- Document CMIS Properties ----
|
|
69
|
+
/** CMIS property: Indicates if the document is immutable. */
|
|
70
|
+
static IS_IMMUTABLE = "cmis:isImmutable";
|
|
71
|
+
/** CMIS property: Indicates if the document is the latest version in the version series. */
|
|
72
|
+
static IS_LATEST_VERSION = "cmis:isLatestVersion";
|
|
73
|
+
/** CMIS property: Indicates if the document is a major version. */
|
|
74
|
+
static IS_MAJOR_VERSION = "cmis:isMajorVersion";
|
|
75
|
+
/** CMIS property: Indicates if the document is the latest major version. */
|
|
76
|
+
static IS_LATEST_MAJOR_VERSION = "cmis:isLatestMajorVersion";
|
|
77
|
+
/** CMIS property: Label of the document version. */
|
|
78
|
+
static VERSION_LABEL = "cmis:versionLabel";
|
|
79
|
+
/** CMIS property: ID of the version series. */
|
|
80
|
+
static VERSION_SERIES_ID = "cmis:versionSeriesId";
|
|
81
|
+
/** CMIS property: Indicates if the version series is checked out. */
|
|
82
|
+
static IS_VERSION_SERIES_CHECKED_OUT = "cmis:isVersionSeriesCheckedOut";
|
|
83
|
+
/** CMIS property: User who checked out the version series. */
|
|
84
|
+
static VERSION_SERIES_CHECKED_OUT_BY = "cmis:versionSeriesCheckedOutBy";
|
|
85
|
+
/** CMIS property: ID of the checked-out document object. */
|
|
86
|
+
static VERSION_SERIES_CHECKED_OUT_ID = "cmis:versionSeriesCheckedOutId";
|
|
87
|
+
/** CMIS property: Comment associated with the check-in operation. */
|
|
88
|
+
static CHECKIN_COMMENT = "cmis:checkinComment";
|
|
89
|
+
/** CMIS property: Length of the content stream in bytes. */
|
|
90
|
+
static CONTENT_STREAM_LENGTH = "cmis:contentStreamLength";
|
|
91
|
+
/** CMIS property: MIME type of the content stream. */
|
|
92
|
+
static CONTENT_STREAM_MIME_TYPE = "cmis:contentStreamMimeType";
|
|
93
|
+
/** CMIS property: Original file name of the content stream. */
|
|
94
|
+
static CONTENT_STREAM_FILE_NAME = "cmis:contentStreamFileName";
|
|
95
|
+
/** CMIS property: ID of the content stream. */
|
|
96
|
+
static CONTENT_STREAM_ID = "cmis:contentStreamId";
|
|
97
|
+
// ---- Folder CMIS Properties ----
|
|
98
|
+
/** CMIS property: Object ID of the parent folder. */
|
|
99
|
+
static PARENT_ID = "cmis:parentId";
|
|
100
|
+
/** CMIS property: List of allowed object type IDs for children. */
|
|
101
|
+
static ALLOWED_CHILD_OBJECT_TYPE_IDS = "cmis:allowedChildObjectTypeIds";
|
|
102
|
+
/** CMIS property: Path of the folder in the repository. */
|
|
103
|
+
static PATH = "cmis:path";
|
|
104
|
+
// ---- Relationship CMIS Properties ----
|
|
105
|
+
/** CMIS property: Object ID of the relationship source. */
|
|
106
|
+
static SOURCE_ID = "cmis:sourceId";
|
|
107
|
+
/** CMIS property: Object ID of the relationship target. */
|
|
108
|
+
static TARGET_ID = "cmis:targetId";
|
|
109
|
+
// ---- Policy CMIS Properties ----
|
|
110
|
+
/** CMIS property: Text content of the policy. */
|
|
111
|
+
static POLICY_TEXT = "cmis:policyText";
|
|
112
|
+
// ---- Versioning States ----
|
|
113
|
+
/** CMIS Versioning State: No versioning. */
|
|
114
|
+
static VERSIONING_STATE_NONE = "none";
|
|
115
|
+
/** CMIS Versioning State: Create a new major version. */
|
|
116
|
+
static VERSIONING_STATE_MAJOR = "major";
|
|
117
|
+
/** CMIS Versioning State: Create a new minor version. */
|
|
118
|
+
static VERSIONING_STATE_MINOR = "minor";
|
|
119
|
+
/** CMIS Versioning State: Document is checked out. */
|
|
120
|
+
static VERSIONING_STATE_CHECKEDOUT = "checkedout";
|
|
121
|
+
// ---- Object Types ----
|
|
122
|
+
/** CMIS Object Type ID: Document. */
|
|
123
|
+
static OBJECT_TYPE_DOCUMENT = "cmis:document";
|
|
124
|
+
/** CMIS Object Type ID: Folder. */
|
|
125
|
+
static OBJECT_TYPE_FOLDER = "cmis:folder";
|
|
126
|
+
/** CMIS Object Type ID: Relationship. */
|
|
127
|
+
static OBJECT_TYPE_RELATIONSHIP = "cmis:relationship";
|
|
128
|
+
/** CMIS Object Type ID: Policy. */
|
|
129
|
+
static OBJECT_TYPE_POLICY = "cmis:policy";
|
|
130
|
+
/** CMIS Object Type ID: Item. */
|
|
131
|
+
static OBJECT_TYPE_ITEM = "cmis:item";
|
|
132
|
+
/** CMIS Object Type ID: Secondary. */
|
|
133
|
+
static OBJECT_TYPE_SECONDARY = "cmis:secondary";
|
|
216
134
|
/**
|
|
217
135
|
* Gets a new CMIS session instance to interact with the repository.
|
|
218
136
|
* @returns A new {@link Session} instance.
|
|
@@ -233,6 +151,7 @@ class Cmis {
|
|
|
233
151
|
}
|
|
234
152
|
}
|
|
235
153
|
class Session {
|
|
154
|
+
native;
|
|
236
155
|
constructor(native) {
|
|
237
156
|
this.native = native;
|
|
238
157
|
}
|
|
@@ -337,6 +256,7 @@ class Session {
|
|
|
337
256
|
}
|
|
338
257
|
}
|
|
339
258
|
class RepositoryInfo {
|
|
259
|
+
native;
|
|
340
260
|
constructor(native) {
|
|
341
261
|
this.native = native;
|
|
342
262
|
}
|
|
@@ -356,6 +276,8 @@ class RepositoryInfo {
|
|
|
356
276
|
}
|
|
357
277
|
}
|
|
358
278
|
class Folder {
|
|
279
|
+
native;
|
|
280
|
+
path;
|
|
359
281
|
constructor(native, path) {
|
|
360
282
|
this.native = native;
|
|
361
283
|
this.path = path;
|
|
@@ -505,6 +427,7 @@ class Folder {
|
|
|
505
427
|
}
|
|
506
428
|
}
|
|
507
429
|
class CmisObject {
|
|
430
|
+
native;
|
|
508
431
|
constructor(native) {
|
|
509
432
|
this.native = native;
|
|
510
433
|
}
|
|
@@ -559,6 +482,7 @@ class CmisObject {
|
|
|
559
482
|
}
|
|
560
483
|
}
|
|
561
484
|
class ObjectFactory {
|
|
485
|
+
native;
|
|
562
486
|
constructor(native) {
|
|
563
487
|
this.native = native;
|
|
564
488
|
}
|
|
@@ -576,6 +500,7 @@ class ObjectFactory {
|
|
|
576
500
|
}
|
|
577
501
|
}
|
|
578
502
|
class ContentStream {
|
|
503
|
+
native;
|
|
579
504
|
constructor(native) {
|
|
580
505
|
this.native = native;
|
|
581
506
|
}
|
|
@@ -596,6 +521,8 @@ class ContentStream {
|
|
|
596
521
|
}
|
|
597
522
|
}
|
|
598
523
|
class Document {
|
|
524
|
+
native;
|
|
525
|
+
path;
|
|
599
526
|
constructor(native, path) {
|
|
600
527
|
this.native = native;
|
|
601
528
|
this.path = path;
|
|
@@ -672,6 +599,7 @@ class Document {
|
|
|
672
599
|
}
|
|
673
600
|
}
|
|
674
601
|
class TypeDefinition {
|
|
602
|
+
native;
|
|
675
603
|
constructor(native) {
|
|
676
604
|
this.native = native;
|
|
677
605
|
}
|
|
@@ -686,4 +614,4 @@ class TypeDefinition {
|
|
|
686
614
|
if (typeof module !== "undefined") {
|
|
687
615
|
module.exports = Cmis;
|
|
688
616
|
}
|
|
689
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Ntcy9jbWlzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEFQSSBDTUlTXG4gKiAqIE5vdGU6IFRoaXMgbW9kdWxlIGlzIHN1cHBvcnRlZCBvbmx5IHdpdGggdGhlIE1vemlsbGEgUmhpbm8gZW5naW5lXG4gKiAqIFByb3ZpZGVzIHN0YXRpYyBhY2Nlc3MgdG8gdGhlIENNSVMgKENvbnRlbnQgTWFuYWdlbWVudCBJbnRlcm9wZXJhYmlsaXR5IFNlcnZpY2VzKSByZXBvc2l0b3J5IHNlc3Npb24gYW5kIHV0aWxpdHkgY29uc3RhbnRzLlxuICovXG5cbmltcG9ydCAqIGFzIHN0cmVhbXMgZnJvbSBcIkBhZXJva2l0L3Nkay9pby9zdHJlYW1zXCI7XG5jb25zdCBDbWlzRmFjYWRlID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuYXBpLmNtcy5DbWlzRmFjYWRlXCIpO1xuY29uc3QgR3NvbiA9IEphdmEudHlwZShcImNvbS5nb29nbGUuZ3Nvbi5Hc29uXCIpO1xuY29uc3QgSGFzaE1hcCA9IEphdmEudHlwZShcImphdmEudXRpbC5IYXNoTWFwXCIpO1xuXG5leHBvcnQgY2xhc3MgQ21pcyB7XG5cblx0Ly8gQ09OU1RBTlRTXG5cdC8qKlxuXHQgKiBDTUlTIG1ldGhvZCBjb25zdGFudCBmb3IgcmVhZCBvcGVyYXRpb25zLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBNRVRIT0RfUkVBRCA9IFwiUkVBRFwiO1xuXHQvKipcblx0ICogQ01JUyBtZXRob2QgY29uc3RhbnQgZm9yIHdyaXRlIG9wZXJhdGlvbnMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1FVEhPRF9XUklURSA9IFwiV1JJVEVcIjtcblxuXHQvLyAtLS0tIEJhc2UgQ01JUyBQcm9wZXJ0aWVzIC0tLS1cblx0LyoqIENNSVMgcHJvcGVydHk6IE9iamVjdCBuYW1lLiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5BTUUgPSBcImNtaXM6bmFtZVwiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogVW5pcXVlIG9iamVjdCBpZGVudGlmaWVyLiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE9CSkVDVF9JRCA9IFwiY21pczpvYmplY3RJZFwiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogT2JqZWN0IHR5cGUgaWRlbnRpZmllci4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBPQkpFQ1RfVFlQRV9JRCA9IFwiY21pczpvYmplY3RUeXBlSWRcIjtcblx0LyoqIENNSVMgcHJvcGVydHk6IEJhc2Ugb2JqZWN0IHR5cGUgaWRlbnRpZmllci4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBCQVNFX1RZUEVfSUQgPSBcImNtaXM6YmFzZVR5cGVJZFwiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogVXNlciB3aG8gY3JlYXRlZCB0aGUgb2JqZWN0LiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENSRUFURURfQlkgPSBcImNtaXM6Y3JlYXRlZEJ5XCI7XG5cdC8qKiBDTUlTIHByb3BlcnR5OiBUaW1lc3RhbXAgb2Ygb2JqZWN0IGNyZWF0aW9uLiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENSRUFUSU9OX0RBVEUgPSBcImNtaXM6Y3JlYXRpb25EYXRlXCI7XG5cdC8qKiBDTUlTIHByb3BlcnR5OiBVc2VyIHdobyBsYXN0IG1vZGlmaWVkIHRoZSBvYmplY3QuICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTEFTVF9NT0RJRklFRF9CWSA9IFwiY21pczpsYXN0TW9kaWZpZWRCeVwiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogVGltZXN0YW1wIG9mIGxhc3QgbW9kaWZpY2F0aW9uLiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExBU1RfTU9ESUZJQ0FUSU9OX0RBVEUgPSBcImNtaXM6bGFzdE1vZGlmaWNhdGlvbkRhdGVcIjtcblx0LyoqIENNSVMgcHJvcGVydHk6IENoYW5nZSB0b2tlbiBmb3Igb2JqZWN0IGNoYW5nZSB0cmFja2luZy4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBDSEFOR0VfVE9LRU4gPSBcImNtaXM6Y2hhbmdlVG9rZW5cIjtcblxuXHQvLyAtLS0tIERvY3VtZW50IENNSVMgUHJvcGVydGllcyAtLS0tXG5cdC8qKiBDTUlTIHByb3BlcnR5OiBJbmRpY2F0ZXMgaWYgdGhlIGRvY3VtZW50IGlzIGltbXV0YWJsZS4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBJU19JTU1VVEFCTEUgPSBcImNtaXM6aXNJbW11dGFibGVcIjtcblx0LyoqIENNSVMgcHJvcGVydHk6IEluZGljYXRlcyBpZiB0aGUgZG9jdW1lbnQgaXMgdGhlIGxhdGVzdCB2ZXJzaW9uIGluIHRoZSB2ZXJzaW9uIHNlcmllcy4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBJU19MQVRFU1RfVkVSU0lPTiA9IFwiY21pczppc0xhdGVzdFZlcnNpb25cIjtcblx0LyoqIENNSVMgcHJvcGVydHk6IEluZGljYXRlcyBpZiB0aGUgZG9jdW1lbnQgaXMgYSBtYWpvciB2ZXJzaW9uLiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IElTX01BSk9SX1ZFUlNJT04gPSBcImNtaXM6aXNNYWpvclZlcnNpb25cIjtcblx0LyoqIENNSVMgcHJvcGVydHk6IEluZGljYXRlcyBpZiB0aGUgZG9jdW1lbnQgaXMgdGhlIGxhdGVzdCBtYWpvciB2ZXJzaW9uLiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IElTX0xBVEVTVF9NQUpPUl9WRVJTSU9OID0gXCJjbWlzOmlzTGF0ZXN0TWFqb3JWZXJzaW9uXCI7XG5cdC8qKiBDTUlTIHByb3BlcnR5OiBMYWJlbCBvZiB0aGUgZG9jdW1lbnQgdmVyc2lvbi4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBWRVJTSU9OX0xBQkVMID0gXCJjbWlzOnZlcnNpb25MYWJlbFwiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogSUQgb2YgdGhlIHZlcnNpb24gc2VyaWVzLiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFZFUlNJT05fU0VSSUVTX0lEID0gXCJjbWlzOnZlcnNpb25TZXJpZXNJZFwiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogSW5kaWNhdGVzIGlmIHRoZSB2ZXJzaW9uIHNlcmllcyBpcyBjaGVja2VkIG91dC4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBJU19WRVJTSU9OX1NFUklFU19DSEVDS0VEX09VVCA9IFwiY21pczppc1ZlcnNpb25TZXJpZXNDaGVja2VkT3V0XCI7XG5cdC8qKiBDTUlTIHByb3BlcnR5OiBVc2VyIHdobyBjaGVja2VkIG91dCB0aGUgdmVyc2lvbiBzZXJpZXMuICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVkVSU0lPTl9TRVJJRVNfQ0hFQ0tFRF9PVVRfQlkgPSBcImNtaXM6dmVyc2lvblNlcmllc0NoZWNrZWRPdXRCeVwiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogSUQgb2YgdGhlIGNoZWNrZWQtb3V0IGRvY3VtZW50IG9iamVjdC4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBWRVJTSU9OX1NFUklFU19DSEVDS0VEX09VVF9JRCA9IFwiY21pczp2ZXJzaW9uU2VyaWVzQ2hlY2tlZE91dElkXCI7XG5cdC8qKiBDTUlTIHByb3BlcnR5OiBDb21tZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgY2hlY2staW4gb3BlcmF0aW9uLiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENIRUNLSU5fQ09NTUVOVCA9IFwiY21pczpjaGVja2luQ29tbWVudFwiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogTGVuZ3RoIG9mIHRoZSBjb250ZW50IHN0cmVhbSBpbiBieXRlcy4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBDT05URU5UX1NUUkVBTV9MRU5HVEggPSBcImNtaXM6Y29udGVudFN0cmVhbUxlbmd0aFwiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogTUlNRSB0eXBlIG9mIHRoZSBjb250ZW50IHN0cmVhbS4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBDT05URU5UX1NUUkVBTV9NSU1FX1RZUEUgPSBcImNtaXM6Y29udGVudFN0cmVhbU1pbWVUeXBlXCI7XG5cdC8qKiBDTUlTIHByb3BlcnR5OiBPcmlnaW5hbCBmaWxlIG5hbWUgb2YgdGhlIGNvbnRlbnQgc3RyZWFtLiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPTlRFTlRfU1RSRUFNX0ZJTEVfTkFNRSA9IFwiY21pczpjb250ZW50U3RyZWFtRmlsZU5hbWVcIjtcblx0LyoqIENNSVMgcHJvcGVydHk6IElEIG9mIHRoZSBjb250ZW50IHN0cmVhbS4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBDT05URU5UX1NUUkVBTV9JRCA9IFwiY21pczpjb250ZW50U3RyZWFtSWRcIjtcblxuXHQvLyAtLS0tIEZvbGRlciBDTUlTIFByb3BlcnRpZXMgLS0tLVxuXHQvKiogQ01JUyBwcm9wZXJ0eTogT2JqZWN0IElEIG9mIHRoZSBwYXJlbnQgZm9sZGVyLiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBBUkVOVF9JRCA9IFwiY21pczpwYXJlbnRJZFwiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogTGlzdCBvZiBhbGxvd2VkIG9iamVjdCB0eXBlIElEcyBmb3IgY2hpbGRyZW4uICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUxMT1dFRF9DSElMRF9PQkpFQ1RfVFlQRV9JRFMgPSBcImNtaXM6YWxsb3dlZENoaWxkT2JqZWN0VHlwZUlkc1wiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogUGF0aCBvZiB0aGUgZm9sZGVyIGluIHRoZSByZXBvc2l0b3J5LiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBBVEggPSBcImNtaXM6cGF0aFwiO1xuXG5cdC8vIC0tLS0gUmVsYXRpb25zaGlwIENNSVMgUHJvcGVydGllcyAtLS0tXG5cdC8qKiBDTUlTIHByb3BlcnR5OiBPYmplY3QgSUQgb2YgdGhlIHJlbGF0aW9uc2hpcCBzb3VyY2UuICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU09VUkNFX0lEID0gXCJjbWlzOnNvdXJjZUlkXCI7XG5cdC8qKiBDTUlTIHByb3BlcnR5OiBPYmplY3QgSUQgb2YgdGhlIHJlbGF0aW9uc2hpcCB0YXJnZXQuICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVEFSR0VUX0lEID0gXCJjbWlzOnRhcmdldElkXCI7XG5cblx0Ly8gLS0tLSBQb2xpY3kgQ01JUyBQcm9wZXJ0aWVzIC0tLS1cblx0LyoqIENNSVMgcHJvcGVydHk6IFRleHQgY29udGVudCBvZiB0aGUgcG9saWN5LiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBPTElDWV9URVhUID0gXCJjbWlzOnBvbGljeVRleHRcIjtcblxuXHQvLyAtLS0tIFZlcnNpb25pbmcgU3RhdGVzIC0tLS1cblx0LyoqIENNSVMgVmVyc2lvbmluZyBTdGF0ZTogTm8gdmVyc2lvbmluZy4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBWRVJTSU9OSU5HX1NUQVRFX05PTkUgPSBcIm5vbmVcIjtcblx0LyoqIENNSVMgVmVyc2lvbmluZyBTdGF0ZTogQ3JlYXRlIGEgbmV3IG1ham9yIHZlcnNpb24uICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVkVSU0lPTklOR19TVEFURV9NQUpPUiA9IFwibWFqb3JcIjtcblx0LyoqIENNSVMgVmVyc2lvbmluZyBTdGF0ZTogQ3JlYXRlIGEgbmV3IG1pbm9yIHZlcnNpb24uICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVkVSU0lPTklOR19TVEFURV9NSU5PUiA9IFwibWlub3JcIjtcblx0LyoqIENNSVMgVmVyc2lvbmluZyBTdGF0ZTogRG9jdW1lbnQgaXMgY2hlY2tlZCBvdXQuICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVkVSU0lPTklOR19TVEFURV9DSEVDS0VET1VUID0gXCJjaGVja2Vkb3V0XCI7XG5cblx0Ly8gLS0tLSBPYmplY3QgVHlwZXMgLS0tLVxuXHQvKiogQ01JUyBPYmplY3QgVHlwZSBJRDogRG9jdW1lbnQuICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT0JKRUNUX1RZUEVfRE9DVU1FTlQgPSBcImNtaXM6ZG9jdW1lbnRcIjtcblx0LyoqIENNSVMgT2JqZWN0IFR5cGUgSUQ6IEZvbGRlci4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBPQkpFQ1RfVFlQRV9GT0xERVIgPSBcImNtaXM6Zm9sZGVyXCI7XG5cdC8qKiBDTUlTIE9iamVjdCBUeXBlIElEOiBSZWxhdGlvbnNoaXAuICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT0JKRUNUX1RZUEVfUkVMQVRJT05TSElQID0gXCJjbWlzOnJlbGF0aW9uc2hpcFwiO1xuXHQvKiogQ01JUyBPYmplY3QgVHlwZSBJRDogUG9saWN5LiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE9CSkVDVF9UWVBFX1BPTElDWSA9IFwiY21pczpwb2xpY3lcIjtcblx0LyoqIENNSVMgT2JqZWN0IFR5cGUgSUQ6IEl0ZW0uICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT0JKRUNUX1RZUEVfSVRFTSA9IFwiY21pczppdGVtXCI7XG5cdC8qKiBDTUlTIE9iamVjdCBUeXBlIElEOiBTZWNvbmRhcnkuICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT0JKRUNUX1RZUEVfU0VDT05EQVJZID0gXCJjbWlzOnNlY29uZGFyeVwiO1xuXG5cdC8qKlxuXHQgKiBHZXRzIGEgbmV3IENNSVMgc2Vzc2lvbiBpbnN0YW5jZSB0byBpbnRlcmFjdCB3aXRoIHRoZSByZXBvc2l0b3J5LlxuXHQgKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgU2Vzc2lvbn0gaW5zdGFuY2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldFNlc3Npb24oKTogU2Vzc2lvbiB7XG5cdFx0Y29uc3QgbmF0aXZlID0gQ21pc0ZhY2FkZS5nZXRTZXNzaW9uKCk7XG5cdFx0cmV0dXJuIG5ldyBTZXNzaW9uKG5hdGl2ZSk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIGFjY2VzcyBjb250cm9sIGRlZmluaXRpb25zIGZvciBhIHNwZWNpZmljIHBhdGggYW5kIG1ldGhvZC5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggb2YgdGhlIENNSVMgb2JqZWN0LlxuXHQgKiBAcGFyYW0gbWV0aG9kIFRoZSBvcGVyYXRpb24gbWV0aG9kIChlLmcuLCB7QGxpbmsgQ21pcy5NRVRIT0RfUkVBRH0sIHtAbGluayBDbWlzLk1FVEhPRF9XUklURX0pLlxuXHQgKiBAcmV0dXJucyBBIGxpc3Qgb2YgYWNjZXNzIGRlZmluaXRpb25zLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRBY2Nlc3NEZWZpbml0aW9ucyhwYXRoOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nKTogQWNjZXNzRGVmaW5pdGlvbltdIHtcblx0XHRjb25zdCBhY2Nlc3NEZWZpbml0aW9ucyA9IENtaXNGYWNhZGUuZ2V0QWNjZXNzRGVmaW5pdGlvbnMocGF0aCwgbWV0aG9kKTtcblx0XHRyZXR1cm4gSlNPTi5wYXJzZShuZXcgR3NvbigpLnRvSnNvbihhY2Nlc3NEZWZpbml0aW9ucykpO1xuXHR9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBhY2Nlc3MgY29udHJvbCBlbnRyeSAoQUNFKSBmb3IgYSBDTUlTIG9iamVjdCwgZGV0YWlsaW5nXG4gKiB3aG8gaGFzIHdoYXQgcGVybWlzc2lvbnMgb24gYSBwYXRoLlxuICovXG5pbnRlcmZhY2UgQWNjZXNzRGVmaW5pdGlvbiB7XG5cdC8qKiBHZXRzIHRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGFjY2VzcyBkZWZpbml0aW9uLiAqL1xuXHRnZXRJZCgpOiBzdHJpbmc7XG5cdC8qKiBHZXRzIHRoZSBzY29wZSBvZiB0aGUgZGVmaW5pdGlvbiAoZS5nLiwgJ3VzZXInLCAnZ3JvdXAnKS4gKi9cblx0Z2V0U2NvcGUoKTogc3RyaW5nO1xuXHQvKiogR2V0cyB0aGUgcGF0aCBvZiB0aGUgQ01JUyBvYmplY3QgdGhpcyBkZWZpbml0aW9uIGFwcGxpZXMgdG8uICovXG5cdGdldFBhdGgoKTogc3RyaW5nO1xuXHQvKiogR2V0cyB0aGUgbWV0aG9kL29wZXJhdGlvbiB0aGlzIGRlZmluaXRpb24gYXBwbGllcyB0byAoZS5nLiwgJ1JFQUQnLCAnV1JJVEUnKS4gKi9cblx0Z2V0TWV0aG9kKCk6IHN0cmluZztcblx0LyoqIEdldHMgdGhlIHNlY3VyaXR5IHJvbGUgKGUuZy4sICdBZG1pbmlzdHJhdG9yJywgJ1ZpZXdlcicpLiAqL1xuXHRnZXRSb2xlKCk6IHN0cmluZztcbn1cblxuLyoqXG4gKiBTZXNzaW9uIG9iamVjdFxuICogKiBSZXByZXNlbnRzIGFuIGFjdGl2ZSBjb25uZWN0aW9uIHRvIGEgQ01JUyByZXBvc2l0b3J5LCB1c2VkIGFzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBDTUlTIG9wZXJhdGlvbnMuXG4gKi9cbmNsYXNzIFNlc3Npb24ge1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0Y29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcblx0XHR0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZXBvc2l0b3J5IHRoaXMgc2Vzc2lvbiBpcyBjb25uZWN0ZWQgdG8uXG5cdCAqIEByZXR1cm5zIFJlcG9zaXRvcnkgbWV0YWRhdGEuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0UmVwb3NpdG9yeUluZm8oKTogUmVwb3NpdG9yeUluZm8ge1xuXHRcdGNvbnN0IG5hdGl2ZSA9IHRoaXMubmF0aXZlLmdldFJlcG9zaXRvcnlJbmZvKCk7XG5cdFx0cmV0dXJuIG5ldyBSZXBvc2l0b3J5SW5mbyhuYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHJvb3QgZm9sZGVyIG9mIHRoZSByZXBvc2l0b3J5LlxuXHQgKiBAcmV0dXJucyBUaGUgcm9vdCB7QGxpbmsgRm9sZGVyfSBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0Um9vdEZvbGRlcigpOiBGb2xkZXIge1xuXHRcdGNvbnN0IG5hdGl2ZSA9IHRoaXMubmF0aXZlLmdldFJvb3RGb2xkZXIoKTtcblx0XHRyZXR1cm4gbmV3IEZvbGRlcihuYXRpdmUsIG51bGwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIG9iamVjdCBmYWN0b3J5IGZvciBjcmVhdGluZyBuZXcgQ01JUyBvYmplY3RzIGxpa2UgQ29udGVudFN0cmVhbS5cblx0ICogQHJldHVybnMgQW4ge0BsaW5rIE9iamVjdEZhY3Rvcnl9IGluc3RhbmNlLlxuXHQgKi9cblx0cHVibGljIGdldE9iamVjdEZhY3RvcnkoKTogT2JqZWN0RmFjdG9yeSB7XG5cdFx0Y29uc3QgbmF0aXZlID0gdGhpcy5uYXRpdmUuZ2V0T2JqZWN0RmFjdG9yeSgpO1xuXHRcdHJldHVybiBuZXcgT2JqZWN0RmFjdG9yeShuYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyBhIENNSVMgb2JqZWN0IChEb2N1bWVudCBvciBGb2xkZXIpIGJ5IGl0cyB1bmlxdWUgSUQuXG5cdCAqIEBwYXJhbSBvYmplY3RJZCBUaGUgdW5pcXVlIElEIG9mIHRoZSBvYmplY3QuXG5cdCAqIEByZXR1cm5zIEEge0BsaW5rIERvY3VtZW50fSBvciB7QGxpbmsgRm9sZGVyfSBpbnN0YW5jZS5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgb2JqZWN0IHR5cGUgaXMgdW5zdXBwb3J0ZWQuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0T2JqZWN0KG9iamVjdElkOiBzdHJpbmcpOiBGb2xkZXIgfCBEb2N1bWVudCB7XG5cdFx0Y29uc3Qgb2JqZWN0SW5zdGFuY2UgPSB0aGlzLm5hdGl2ZS5nZXRPYmplY3Qob2JqZWN0SWQpO1xuXHRcdGNvbnN0IG9iamVjdEluc3RhbmNlVHlwZSA9IG9iamVjdEluc3RhbmNlLmdldFR5cGUoKTtcblx0XHRjb25zdCBvYmplY3RJbnN0YW5jZVR5cGVJZCA9IG9iamVjdEluc3RhbmNlVHlwZS5nZXRJZCgpO1xuXHRcdGlmIChvYmplY3RJbnN0YW5jZVR5cGVJZCA9PT0gQ21pcy5PQkpFQ1RfVFlQRV9ET0NVTUVOVCkge1xuXHRcdFx0cmV0dXJuIG5ldyBEb2N1bWVudChvYmplY3RJbnN0YW5jZSwgbnVsbCk7XG5cdFx0fSBlbHNlIGlmIChvYmplY3RJbnN0YW5jZVR5cGVJZCA9PT0gQ21pcy5PQkpFQ1RfVFlQRV9GT0xERVIpIHtcblx0XHRcdHJldHVybiBuZXcgRm9sZGVyKG9iamVjdEluc3RhbmNlLCBudWxsKTtcblx0XHR9XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgQ01JUyBvYmplY3QgdHlwZTogXCIgKyBvYmplY3RJbnN0YW5jZVR5cGVJZCk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIGEgQ01JUyBvYmplY3QgKERvY3VtZW50IG9yIEZvbGRlcikgYnkgaXRzIHBhdGguXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBvYmplY3QgaW4gdGhlIHJlcG9zaXRvcnkgKGUuZy4sIFwiL3BhdGgvdG8vb2JqZWN0XCIpLlxuXHQgKiBAcmV0dXJucyBBIHtAbGluayBEb2N1bWVudH0gb3Ige0BsaW5rIEZvbGRlcn0gaW5zdGFuY2UuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgcmVhZCBhY2Nlc3MgaXMgbm90IGFsbG93ZWQgb3IgdGhlIG9iamVjdCB0eXBlIGlzIHVuc3VwcG9ydGVkLlxuXHQgKi9cblx0cHVibGljIGdldE9iamVjdEJ5UGF0aChwYXRoOiBzdHJpbmcpOiBGb2xkZXIgfCBEb2N1bWVudCB7XG5cdFx0Y29uc3QgYWxsb3dlZCA9IENtaXNGYWNhZGUuaXNBbGxvd2VkKHBhdGgsIENtaXMuTUVUSE9EX1JFQUQpO1xuXHRcdGlmICghYWxsb3dlZCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiUmVhZCBhY2Nlc3Mgbm90IGFsbG93ZWQgb246IFwiICsgcGF0aCk7XG5cdFx0fVxuXHRcdGNvbnN0IG9iamVjdEluc3RhbmNlID0gdGhpcy5uYXRpdmUuZ2V0T2JqZWN0QnlQYXRoKHBhdGgpO1xuXHRcdGNvbnN0IG9iamVjdEluc3RhbmNlVHlwZSA9IG9iamVjdEluc3RhbmNlLmdldFR5cGUoKTtcblx0XHRjb25zdCBvYmplY3RJbnN0YW5jZVR5cGVJZCA9IG9iamVjdEluc3RhbmNlVHlwZS5nZXRJZCgpO1xuXHRcdGlmIChvYmplY3RJbnN0YW5jZVR5cGVJZCA9PT0gQ21pcy5PQkpFQ1RfVFlQRV9ET0NVTUVOVCkge1xuXHRcdFx0cmV0dXJuIG5ldyBEb2N1bWVudChvYmplY3RJbnN0YW5jZSwgcGF0aCk7XG5cdFx0fSBlbHNlIGlmIChvYmplY3RJbnN0YW5jZVR5cGVJZCA9PT0gQ21pcy5PQkpFQ1RfVFlQRV9GT0xERVIpIHtcblx0XHRcdHJldHVybiBuZXcgRm9sZGVyKG9iamVjdEluc3RhbmNlLCBwYXRoKTtcblx0XHR9XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgQ01JUyBvYmplY3QgdHlwZTogXCIgKyBvYmplY3RJbnN0YW5jZVR5cGVJZCk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIGZvbGRlciBzdHJ1Y3R1cmUgcmVjdXJzaXZlbHkgYmFzZWQgb24gYSBwYXRoLiBUaGlzIGlzIGEgY29udmVuaWVuY2UgbWV0aG9kIHRoYXRcblx0ICogY3JlYXRlcyBhbGwgbm9uLWV4aXN0ZW50IHBhcmVudCBmb2xkZXJzLlxuXHQgKiBFeGFtcGxlOiBgY3JlYXRlRm9sZGVyKFwiL25ldy9wYXRoL3N0cnVjdHVyZVwiKWBcblx0ICogQHBhcmFtIGxvY2F0aW9uIFRoZSBwYXRoIG9mIHRoZSBmb2xkZXIgdG8gY3JlYXRlLlxuXHQgKiBAcmV0dXJucyBUaGUgbmV3bHkgY3JlYXRlZCAob3IgZXhpc3RpbmcpIGlubmVybW9zdCB7QGxpbmsgRm9sZGVyfSBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgY3JlYXRlRm9sZGVyKGxvY2F0aW9uOiBzdHJpbmcpOiBGb2xkZXIge1xuXHRcdGlmIChsb2NhdGlvbi5zdGFydHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0bG9jYXRpb24gPSBsb2NhdGlvbi5zdWJzdHJpbmcoMSwgbG9jYXRpb24ubGVuZ3RoKTtcblx0XHR9XG5cdFx0aWYgKGxvY2F0aW9uLmVuZHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0bG9jYXRpb24gPSBsb2NhdGlvbi5zdWJzdHJpbmcoMCwgbG9jYXRpb24ubGVuZ3RoIC0gMSk7XG5cdFx0fVxuXHRcdGNvbnN0IHNlZ21lbnRzID0gbG9jYXRpb24uc3BsaXQoXCIvXCIpO1xuXHRcdGxldCBmb2xkZXIgPSB0aGlzLmdldFJvb3RGb2xkZXIoKTtcblx0XHRmb3IgKGNvbnN0IG5leHQgb2Ygc2VnbWVudHMpIHtcblx0XHRcdGNvbnN0IHByb3BlcnRpZXMgPSB7XG5cdFx0XHRcdFtDbWlzLk9CSkVDVF9UWVBFX0lEXTogQ21pcy5PQkpFQ1RfVFlQRV9GT0xERVIsXG5cdFx0XHRcdFtDbWlzLk5BTUVdOiBuZXh0XG5cdFx0XHR9O1xuXHRcdFx0Zm9sZGVyID0gZm9sZGVyLmNyZWF0ZUZvbGRlcihwcm9wZXJ0aWVzKTtcblx0XHR9XG5cdFx0cmV0dXJuIGZvbGRlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3IGRvY3VtZW50IGF0IHRoZSBzcGVjaWZpZWQgbG9jYXRpb24uIFRoaXMgbWV0aG9kIGVuc3VyZXMgdGhlIHBhcmVudCBmb2xkZXIgc3RydWN0dXJlIGV4aXN0cy5cblx0ICogQHBhcmFtIGxvY2F0aW9uIFRoZSBwYXRoIG9mIHRoZSBwYXJlbnQgZm9sZGVyIChlLmcuLCBcIi9wYXRoL3RvL2ZvbGRlclwiKS5cblx0ICogQHBhcmFtIHByb3BlcnRpZXMgQSBtYXAgb2YgQ01JUyBwcm9wZXJ0aWVzIGZvciB0aGUgbmV3IGRvY3VtZW50IChtdXN0IGluY2x1ZGUge0BsaW5rIENtaXMuTkFNRX0pLlxuXHQgKiBAcGFyYW0gY29udGVudFN0cmVhbSBUaGUgY29udGVudCBzdHJlYW0gY29udGFpbmluZyB0aGUgZG9jdW1lbnQncyBiaW5hcnkgZGF0YS5cblx0ICogQHBhcmFtIHZlcnNpb25pbmdTdGF0ZSBUaGUgdmVyc2lvbmluZyBzdGF0ZSAoZS5nLiwge0BsaW5rIENtaXMuVkVSU0lPTklOR19TVEFURV9NQUpPUn0pLlxuXHQgKiBAcmV0dXJucyBUaGUgbmV3bHkgY3JlYXRlZCB7QGxpbmsgRG9jdW1lbnR9IG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBjcmVhdGVEb2N1bWVudChsb2NhdGlvbjogc3RyaW5nLCBwcm9wZXJ0aWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBjb250ZW50U3RyZWFtOiBDb250ZW50U3RyZWFtLCB2ZXJzaW9uaW5nU3RhdGU6IHN0cmluZyk6IERvY3VtZW50IHtcblx0XHRjb25zdCBmb2xkZXIgPSB0aGlzLmNyZWF0ZUZvbGRlcihsb2NhdGlvbik7XG5cdFx0cmV0dXJuIGZvbGRlci5jcmVhdGVEb2N1bWVudChwcm9wZXJ0aWVzLCBjb250ZW50U3RyZWFtLCB2ZXJzaW9uaW5nU3RhdGUpO1xuXHR9XG5cbn1cblxuLyoqXG4gKiBSZXBvc2l0b3J5SW5mbyBvYmplY3RcbiAqICogUHJvdmlkZXMgYmFzaWMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbm5lY3RlZCBDTUlTIHJlcG9zaXRvcnkuXG4gKi9cbmNsYXNzIFJlcG9zaXRvcnlJbmZvIHtcblxuXHRwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG5cdGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmUgPSBuYXRpdmU7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHJlcG9zaXRvcnkuXG5cdCAqIEByZXR1cm5zIFRoZSByZXBvc2l0b3J5IElELlxuXHQgKi9cblx0cHVibGljIGdldElkKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldElkKCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgbmFtZSBvZiB0aGUgcmVwb3NpdG9yeS5cblx0ICogQHJldHVybnMgVGhlIHJlcG9zaXRvcnkgbmFtZS5cblx0ICovXG5cdHB1YmxpYyBnZXROYW1lKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE5hbWUoKTtcblx0fVxufVxuXG4vKipcbiAqIEZvbGRlciBvYmplY3RcbiAqICogUmVwcmVzZW50cyBhIENNSVMgZm9sZGVyIG9iamVjdCwgYWxsb3dpbmcgb3BlcmF0aW9ucyBsaWtlIGNyZWF0aW5nIGNoaWxkcmVuLCBkZWxldGluZywgYW5kIHJlbmFtaW5nLlxuICovXG5leHBvcnQgY2xhc3MgRm9sZGVyIHtcblx0cHJpdmF0ZSByZWFkb25seSBuYXRpdmU6IGFueTtcblx0cHJpdmF0ZSBwYXRoOiBhbnk7XG5cblx0Y29uc3RydWN0b3IobmF0aXZlOiBhbnksIHBhdGg6IGFueSkge1xuXHRcdHRoaXMubmF0aXZlID0gbmF0aXZlO1xuXHRcdHRoaXMucGF0aCA9IHBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGZvbGRlci5cblx0ICogQHJldHVybnMgVGhlIGZvbGRlciBJRC5cblx0ICovXG5cdHB1YmxpYyBnZXRJZCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRJZCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIG5hbWUgb2YgdGhlIGZvbGRlci5cblx0ICogQHJldHVybnMgVGhlIGZvbGRlciBuYW1lLlxuXHQgKi9cblx0cHVibGljIGdldE5hbWUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TmFtZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgZm9sZGVyIHdpdGhpbiB0aGlzIGZvbGRlci5cblx0ICogQHBhcmFtIHByb3BlcnRpZXMgQSBtYXAgb2YgQ01JUyBwcm9wZXJ0aWVzIGZvciB0aGUgbmV3IGZvbGRlciAobXVzdCBpbmNsdWRlIHtAbGluayBDbWlzLk5BTUV9KS5cblx0ICogQHJldHVybnMgVGhlIG5ld2x5IGNyZWF0ZWQge0BsaW5rIEZvbGRlcn0gb2JqZWN0LlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHdyaXRlIGFjY2VzcyBpcyBub3QgYWxsb3dlZC5cblx0ICovXG5cdHB1YmxpYyBjcmVhdGVGb2xkZXIocHJvcGVydGllczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IEZvbGRlciB7XG5cdFx0dmFyIGFsbG93ZWQgPSBDbWlzRmFjYWRlLmlzQWxsb3dlZCh0aGlzLmdldFBhdGgoKSwgQ21pcy5NRVRIT0RfV1JJVEUpO1xuXHRcdGlmICghYWxsb3dlZCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiV3JpdGUgYWNjZXNzIG5vdCBhbGxvd2VkIG9uOiBcIiArIHRoaXMuZ2V0UGF0aCgpKTtcblx0XHR9XG5cdFx0dmFyIG1hcEluc3RhbmNlID0gbmV3IEhhc2hNYXAoKTtcblx0XHRmb3IgKHZhciBwcm9wZXJ0eSBpbiBwcm9wZXJ0aWVzKSB7XG5cdFx0XHRpZiAocHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcblx0XHRcdFx0bWFwSW5zdGFuY2UucHV0KHByb3BlcnR5LCBwcm9wZXJ0aWVzW3Byb3BlcnR5XSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHZhciBuYXRpdmUgPSB0aGlzLm5hdGl2ZS5jcmVhdGVGb2xkZXIobWFwSW5zdGFuY2UpO1xuXHRcdHZhciBmb2xkZXIgPSBuZXcgRm9sZGVyKG5hdGl2ZSwgbnVsbCk7XG5cdFx0cmV0dXJuIGZvbGRlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3IGRvY3VtZW50IHdpdGhpbiB0aGlzIGZvbGRlci5cblx0ICogQHBhcmFtIHByb3BlcnRpZXMgQSBtYXAgb2YgQ01JUyBwcm9wZXJ0aWVzIGZvciB0aGUgbmV3IGRvY3VtZW50IChtdXN0IGluY2x1ZGUge0BsaW5rIENtaXMuTkFNRX0pLlxuXHQgKiBAcGFyYW0gY29udGVudFN0cmVhbSBUaGUgY29udGVudCBzdHJlYW0gY29udGFpbmluZyB0aGUgZG9jdW1lbnQncyBiaW5hcnkgZGF0YS5cblx0ICogQHBhcmFtIHZlcnNpb25pbmdTdGF0ZSBUaGUgdmVyc2lvbmluZyBzdGF0ZSAoZS5nLiwge0BsaW5rIENtaXMuVkVSU0lPTklOR19TVEFURV9NQUpPUn0pLlxuXHQgKiBAcmV0dXJucyBUaGUgbmV3bHkgY3JlYXRlZCB7QGxpbmsgRG9jdW1lbnR9IG9iamVjdC5cblx0ICogQHRocm93cyBFcnJvciBpZiB3cml0ZSBhY2Nlc3MgaXMgbm90IGFsbG93ZWQuXG5cdCAqL1xuXHRwdWJsaWMgY3JlYXRlRG9jdW1lbnQocHJvcGVydGllczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY29udGVudFN0cmVhbTogQ29udGVudFN0cmVhbSwgdmVyc2lvbmluZ1N0YXRlOiBzdHJpbmcpOiBEb2N1bWVudCB7XG5cdFx0Y29uc3QgYWxsb3dlZCA9IENtaXNGYWNhZGUuaXNBbGxvd2VkKHRoaXMuZ2V0UGF0aCgpLCBDbWlzLk1FVEhPRF9XUklURSk7XG5cdFx0aWYgKCFhbGxvd2VkKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJXcml0ZSBhY2Nlc3Mgbm90IGFsbG93ZWQgb246IFwiICsgdGhpcy5nZXRQYXRoKCkpO1xuXHRcdH1cblx0XHRjb25zdCBtYXBJbnN0YW5jZSA9IG5ldyBIYXNoTWFwKCk7XG5cdFx0Zm9yIChjb25zdCBwcm9wZXJ0eSBpbiBwcm9wZXJ0aWVzKSB7XG5cdFx0XHRpZiAocHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcblx0XHRcdFx0bWFwSW5zdGFuY2UucHV0KHByb3BlcnR5LCBwcm9wZXJ0aWVzW3Byb3BlcnR5XSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGNvbnN0IHN0YXRlID0gQ21pc0ZhY2FkZS5nZXRWZXJzaW9uaW5nU3RhdGUodmVyc2lvbmluZ1N0YXRlKTtcblxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRjb25zdCBuYXRpdmUgPSB0aGlzLm5hdGl2ZS5jcmVhdGVEb2N1bWVudChtYXBJbnN0YW5jZSwgY29udGVudFN0cmVhbS5uYXRpdmUsIHN0YXRlKTtcblx0XHRyZXR1cm4gbmV3IERvY3VtZW50KG5hdGl2ZSwgbnVsbCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY2hpbGRyZW4gb2YgdGhpcyBmb2xkZXIuXG5cdCAqIEByZXR1cm5zIEEgbGlzdCBvZiBnZW5lcmljIHtAbGluayBDbWlzT2JqZWN0fSB3cmFwcGVycyBmb3IgdGhlIGNoaWxkcmVuLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHJlYWQgYWNjZXNzIGlzIG5vdCBhbGxvd2VkLlxuXHQgKi9cblx0cHVibGljIGdldENoaWxkcmVuKCk6IENtaXNPYmplY3RbXSB7XG5cdFx0Y29uc3QgYWxsb3dlZCA9IENtaXNGYWNhZGUuaXNBbGxvd2VkKHRoaXMuZ2V0UGF0aCgpLCBDbWlzLk1FVEhPRF9SRUFEKTtcblx0XHRpZiAoIWFsbG93ZWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIlJlYWQgYWNjZXNzIG5vdCBhbGxvd2VkIG9uOiBcIiArIHRoaXMuZ2V0UGF0aCgpKTtcblx0XHR9XG5cdFx0Y29uc3QgY2hpbGRyZW4gPSBbXTtcblx0XHRjb25zdCBjaGlsZHJlbkluc3RhbmNlID0gdGhpcy5uYXRpdmUuZ2V0Q2hpbGRyZW4oKTtcblx0XHRjb25zdCBjaGlsZHJlbkluc3RhbmNlSXRlcmF0b3IgPSBjaGlsZHJlbkluc3RhbmNlLml0ZXJhdG9yKCk7XG5cdFx0d2hpbGUgKGNoaWxkcmVuSW5zdGFuY2VJdGVyYXRvci5oYXNOZXh0KCkpIHtcblx0XHRcdGNvbnN0IGNtaXNPYmplY3RJbnN0YW5jZSA9IGNoaWxkcmVuSW5zdGFuY2VJdGVyYXRvci5uZXh0KCk7XG5cdFx0XHRjb25zdCBjbWlzT2JqZWN0ID0gbmV3IENtaXNPYmplY3QoY21pc09iamVjdEluc3RhbmNlKTtcblx0XHRcdGNoaWxkcmVuLnB1c2goY21pc09iamVjdCk7XG5cdFx0fVxuXHRcdHJldHVybiBjaGlsZHJlbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBwYXRoIG9mIHRoZSBmb2xkZXIuXG5cdCAqIEByZXR1cm5zIFRoZSBmb2xkZXIgcGF0aC5cblx0ICovXG5cdHB1YmxpYyBnZXRQYXRoKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMucGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhpcyBmb2xkZXIgaXMgdGhlIHJvb3QgZm9sZGVyIG9mIHRoZSByZXBvc2l0b3J5LlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIGl0IGlzIHRoZSByb290IGZvbGRlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKi9cblx0cHVibGljIGlzUm9vdEZvbGRlcigpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNSb290Rm9sZGVyKCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgcGFyZW50IGZvbGRlciBvZiB0aGlzIGZvbGRlci5cblx0ICogQHJldHVybnMgVGhlIHBhcmVudCB7QGxpbmsgRm9sZGVyfSBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0Rm9sZGVyUGFyZW50KCk6IEZvbGRlciB7XG5cdFx0Y29uc3QgbmF0aXZlID0gdGhpcy5uYXRpdmUuZ2V0Rm9sZGVyUGFyZW50KCk7XG5cdFx0cmV0dXJuIG5ldyBGb2xkZXIobmF0aXZlLCBudWxsKTtcblx0fTtcblxuXHQvKipcblx0ICogRGVsZXRlcyB0aGlzIGZvbGRlciAobXVzdCBiZSBlbXB0eSB0byBzdWNjZWVkKS5cblx0ICogQHRocm93cyBFcnJvciBpZiB3cml0ZSBhY2Nlc3MgaXMgbm90IGFsbG93ZWQuXG5cdCAqL1xuXHRwdWJsaWMgZGVsZXRlKCk6IHZvaWQge1xuXHRcdGNvbnN0IGFsbG93ZWQgPSBDbWlzRmFjYWRlLmlzQWxsb3dlZCh0aGlzLmdldFBhdGgoKSwgQ21pcy5NRVRIT0RfV1JJVEUpO1xuXHRcdGlmICghYWxsb3dlZCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiV3JpdGUgYWNjZXNzIG5vdCBhbGxvd2VkIG9uOiBcIiArIHRoaXMuZ2V0UGF0aCgpKTtcblx0XHR9XG5cdFx0dGhpcy5uYXRpdmUuZGVsZXRlKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFJlbmFtZXMgdGhpcyBmb2xkZXIuXG5cdCAqIEBwYXJhbSBuZXdOYW1lIFRoZSBuZXcgbmFtZSBmb3IgdGhlIGZvbGRlci5cblx0ICogQHRocm93cyBFcnJvciBpZiB3cml0ZSBhY2Nlc3MgaXMgbm90IGFsbG93ZWQuXG5cdCAqL1xuXHRwdWJsaWMgcmVuYW1lKG5ld05hbWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IGFsbG93ZWQgPSBDbWlzRmFjYWRlLmlzQWxsb3dlZCh0aGlzLmdldFBhdGgoKSwgQ21pcy5NRVRIT0RfV1JJVEUpO1xuXHRcdGlmICghYWxsb3dlZCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiV3JpdGUgYWNjZXNzIG5vdCBhbGxvd2VkIG9uOiBcIiArIHRoaXMuZ2V0UGF0aCgpKTtcblx0XHR9XG5cdFx0dGhpcy5uYXRpdmUucmVuYW1lKG5ld05hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlbGV0ZXMgdGhpcyBmb2xkZXIgYW5kIGFsbCBpdHMgY29udGVudHMgcmVjdXJzaXZlbHkuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgd3JpdGUgYWNjZXNzIGlzIG5vdCBhbGxvd2VkLlxuXHQgKi9cblx0cHVibGljIGRlbGV0ZVRyZWUoKTogdm9pZCB7XG5cdFx0Y29uc3QgYWxsb3dlZCA9IENtaXNGYWNhZGUuaXNBbGxvd2VkKHRoaXMuZ2V0UGF0aCgpLCBDbWlzLk1FVEhPRF9XUklURSk7XG5cdFx0aWYgKCFhbGxvd2VkKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJXcml0ZSBhY2Nlc3Mgbm90IGFsbG93ZWQgb246IFwiICsgdGhpcy5nZXRQYXRoKCkpO1xuXHRcdH1cblx0XHRjb25zdCB1bmlmaWVkT2JqZWN0RGVsZXRlID0gQ21pc0ZhY2FkZS5nZXRVbmlmaWVkT2JqZWN0RGVsZXRlKCk7XG5cdFx0dGhpcy5uYXRpdmUuZGVsZXRlVHJlZSh0cnVlLCB1bmlmaWVkT2JqZWN0RGVsZXRlLCB0cnVlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSB0eXBlIGRlZmluaXRpb24gb2YgdGhlIGZvbGRlci5cblx0ICogQHJldHVybnMgVGhlIGZvbGRlcidzIHtAbGluayBUeXBlRGVmaW5pdGlvbn0uXG5cdCAqL1xuXHRwdWJsaWMgZ2V0VHlwZSgpOiBUeXBlRGVmaW5pdGlvbiB7XG5cdFx0Y29uc3QgbmF0aXZlID0gdGhpcy5uYXRpdmUuZ2V0VHlwZSgpO1xuXHRcdHJldHVybiBuZXcgVHlwZURlZmluaXRpb24obmF0aXZlKTtcblx0fVxufVxuXG4vKipcbiAqIENtaXNPYmplY3Qgb2JqZWN0XG4gKiAqIEEgZ2VuZXJpYyB3cmFwcGVyIGZvciBDTUlTIG9iamVjdHMsIHVzZWQgcHJpbWFyaWx5IGZvciBjaGlsZHJlbiBsaXN0cy5cbiAqL1xuY2xhc3MgQ21pc09iamVjdCB7XG5cblx0cHJpdmF0ZSByZWFkb25seSBuYXRpdmU6IGFueTtcblxuXHRjb25zdHJ1Y3RvcihuYXRpdmU6IGFueSkge1xuXHRcdHRoaXMubmF0aXZlID0gbmF0aXZlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBvYmplY3QuXG5cdCAqIEByZXR1cm5zIFRoZSBvYmplY3QgSUQuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0SWQoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0SWQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBuYW1lIG9mIHRoZSBvYmplY3QuXG5cdCAqIEByZXR1cm5zIFRoZSBvYmplY3QgbmFtZS5cblx0ICovXG5cdHB1YmxpYyBnZXROYW1lKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE5hbWUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBwYXRoIG9mIHRoZSBDTUlTIG9iamVjdC4gSGFuZGxlcyBkaWZmZXJlbmNlcyBpbiBuYXRpdmUgQ01JUyBpbXBsZW1lbnRhdGlvbnMuXG5cdCAqIEByZXR1cm5zIFRoZSBvYmplY3QgcGF0aC5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgcGF0aCBjYW5ub3QgYmUgZGV0ZXJtaW5lZC5cblx0ICovXG5cdHB1YmxpYyBnZXRQYXRoKCk6IHN0cmluZyB7XG5cdFx0Ly90aGlzIGlzIGNhdXNlZCBieSBoYXZpbmcgZGlmZmVyZW50IHVuZGVybHlpbmcgbmF0aXZlIG9iamVjdHMgaW4gZGlmZmVyZW50IGVudmlyb25tZW50cy5cblx0XHRpZiAodGhpcy5uYXRpdmUuZ2V0UGF0aCkge1xuXHRcdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldFBhdGgoKTtcblx0XHR9XG5cblx0XHQvL0FwYWNoZSBDaGVtaXN0cnkgQ21pc09iamVjdCBoYXMgbm8gZ2V0UGF0aCgpIGJ1dCBnZXRQYXRocygpIC0gaHR0cHM6Ly9jaGVtaXN0cnkuYXBhY2hlLm9yZy9kb2NzL2NtaXMtc2FtcGxlcy9zYW1wbGVzL3JldHJpZXZlLW9iamVjdHMvaW5kZXguaHRtbFxuXHRcdGlmICh0aGlzLm5hdGl2ZS5nZXRQYXRocykge1xuXHRcdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldFBhdGhzKClbMF07XG5cdFx0fVxuXG5cdFx0dGhyb3cgbmV3IEVycm9yKGBQYXRoIG5vdCBmb3VuZCBmb3IgQ21pc09iamVjdCB3aXRoIGlkICR7dGhpcy5nZXRJZCgpfWApO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHR5cGUgZGVmaW5pdGlvbiBvZiB0aGUgb2JqZWN0LlxuXHQgKiBAcmV0dXJucyBUaGUgb2JqZWN0J3Mge0BsaW5rIFR5cGVEZWZpbml0aW9ufS5cblx0ICovXG5cdHB1YmxpYyBnZXRUeXBlKCk6IFR5cGVEZWZpbml0aW9uIHtcblx0XHRjb25zdCBuYXRpdmUgPSB0aGlzLm5hdGl2ZS5nZXRUeXBlKCk7XG5cdFx0cmV0dXJuIG5ldyBUeXBlRGVmaW5pdGlvbihuYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlbGV0ZXMgdGhlIENNSVMgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGRlbGV0ZSgpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5kZWxldGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW5hbWVzIHRoZSBDTUlTIG9iamVjdC5cblx0ICogQHBhcmFtIG5ld05hbWUgVGhlIG5ldyBuYW1lIGZvciB0aGUgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHJlbmFtZShuZXdOYW1lOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5yZW5hbWUobmV3TmFtZSk7XG5cdH1cblxufVxuXG4vKipcbiAqIE9iamVjdEZhY3Rvcnkgb2JqZWN0XG4gKiAqIFByb3ZpZGVzIG1ldGhvZHMgdG8gY3JlYXRlIGNvbnRlbnQgc3RyZWFtcy5cbiAqL1xuY2xhc3MgT2JqZWN0RmFjdG9yeSB7XG5cblx0cHJpdmF0ZSByZWFkb25seSBuYXRpdmU6IGFueTtcblxuXHRjb25zdHJ1Y3RvcihuYXRpdmU6IGFueSkge1xuXHRcdHRoaXMubmF0aXZlID0gbmF0aXZlO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgY29udGVudCBzdHJlYW0gaW5zdGFuY2UgdGhhdCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgb3IgdXBkYXRlIGRvY3VtZW50IGNvbnRlbnQuXG5cdCAqIEBwYXJhbSBmaWxlbmFtZSBUaGUgbmFtZSBvZiB0aGUgZmlsZS5cblx0ICogQHBhcmFtIGxlbmd0aCBUaGUgc2l6ZSBvZiB0aGUgY29udGVudCBzdHJlYW0gaW4gYnl0ZXMuXG5cdCAqIEBwYXJhbSBtaW1ldHlwZSBUaGUgTUlNRSB0eXBlIG9mIHRoZSBjb250ZW50LlxuXHQgKiBAcGFyYW0gaW5wdXRTdHJlYW0gVGhlIGlucHV0IHN0cmVhbSBjb250YWluaW5nIHRoZSBkYXRhLlxuXHQgKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgQ29udGVudFN0cmVhbX0gb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGNyZWF0ZUNvbnRlbnRTdHJlYW0oZmlsZW5hbWU6IHN0cmluZywgbGVuZ3RoOiBudW1iZXIsIG1pbWV0eXBlOiBzdHJpbmcsIGlucHV0U3RyZWFtOiBzdHJlYW1zLklucHV0U3RyZWFtKTogQ29udGVudFN0cmVhbSB7XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGNvbnN0IG5hdGl2ZSA9IHRoaXMubmF0aXZlLmNyZWF0ZUNvbnRlbnRTdHJlYW0oZmlsZW5hbWUsIGxlbmd0aCwgbWltZXR5cGUsIGlucHV0U3RyZWFtLm5hdGl2ZSk7XG5cdFx0cmV0dXJuIG5ldyBDb250ZW50U3RyZWFtKG5hdGl2ZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBDb250ZW50U3RyZWFtIG9iamVjdFxuICogKiBSZXByZXNlbnRzIHRoZSBiaW5hcnkgY29udGVudCBzdHJlYW0gb2YgYSBDTUlTIERvY3VtZW50LlxuICovXG5jbGFzcyBDb250ZW50U3RyZWFtIHtcblxuXHRwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG5cdGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmUgPSBuYXRpdmU7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgSmF2YS1iYWNrZWQgaW5wdXQgc3RyZWFtIGZvciByZWFkaW5nIHRoZSBjb250ZW50LlxuXHQgKiBAcmV0dXJucyBBbiB7QGxpbmsgc3RyZWFtcy5JbnB1dFN0cmVhbX0gd3JhcHBlci5cblx0ICovXG5cdHB1YmxpYyBnZXRTdHJlYW0oKTogc3RyZWFtcy5JbnB1dFN0cmVhbSB7XG5cdFx0Y29uc3QgbmF0aXZlID0gdGhpcy5uYXRpdmUuZ2V0U3RyZWFtKCk7XG5cdFx0cmV0dXJuIG5ldyBzdHJlYW1zLklucHV0U3RyZWFtKG5hdGl2ZSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgTUlNRSB0eXBlIG9mIHRoZSBjb250ZW50IHN0cmVhbS5cblx0ICogQHJldHVybnMgVGhlIE1JTUUgdHlwZSBzdHJpbmcuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0TWltZVR5cGUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TWltZVR5cGUoKTtcblx0fVxufVxuXG4vKipcbiAqIERvY3VtZW50IG9iamVjdFxuICogKiBSZXByZXNlbnRzIGEgQ01JUyBkb2N1bWVudCBvYmplY3QsIGFsbG93aW5nIG9wZXJhdGlvbnMgbGlrZSByZWFkaW5nIGNvbnRlbnQsIGRlbGV0aW5nLCBhbmQgcmVuYW1pbmcuXG4gKi9cbmV4cG9ydCBjbGFzcyBEb2N1bWVudCB7XG5cblx0cHJpdmF0ZSByZWFkb25seSBuYXRpdmU6IGFueTtcblx0cHJpdmF0ZSBwYXRoOiBzdHJpbmc7XG5cblx0Y29uc3RydWN0b3IobmF0aXZlOiBhbnksIHBhdGg6IHN0cmluZykge1xuXHRcdHRoaXMubmF0aXZlID0gbmF0aXZlO1xuXHRcdHRoaXMucGF0aCA9IHBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGRvY3VtZW50LlxuXHQgKiBAcmV0dXJucyBUaGUgZG9jdW1lbnQgSUQuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0SWQoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0SWQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBuYW1lIG9mIHRoZSBkb2N1bWVudC5cblx0ICogQHJldHVybnMgVGhlIGRvY3VtZW50IG5hbWUuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0TmFtZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXROYW1lKCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgdHlwZSBkZWZpbml0aW9uIG9mIHRoZSBkb2N1bWVudC5cblx0ICogQHJldHVybnMgVGhlIGRvY3VtZW50J3Mge0BsaW5rIFR5cGVEZWZpbml0aW9ufS5cblx0ICovXG5cdHB1YmxpYyBnZXRUeXBlKCk6IFR5cGVEZWZpbml0aW9uIHtcblx0XHRjb25zdCBuYXRpdmUgPSB0aGlzLm5hdGl2ZS5nZXRUeXBlKCk7XG5cdFx0cmV0dXJuIG5ldyBUeXBlRGVmaW5pdGlvbihuYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHBhdGggb2YgdGhlIGRvY3VtZW50LlxuXHQgKiBAcmV0dXJucyBUaGUgZG9jdW1lbnQgcGF0aC5cblx0ICovXG5cdHB1YmxpYyBnZXRQYXRoKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMucGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWxldGVzIHRoaXMgZG9jdW1lbnQuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgd3JpdGUgYWNjZXNzIGlzIG5vdCBhbGxvd2VkLlxuXHQgKi9cblx0cHVibGljIGRlbGV0ZSgpOiB2b2lkIHtcblx0XHRjb25zdCBhbGxvd2VkID0gQ21pc0ZhY2FkZS5pc0FsbG93ZWQodGhpcy5nZXRQYXRoKCksIENtaXMuTUVUSE9EX1dSSVRFKTtcblx0XHRpZiAoIWFsbG93ZWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIldyaXRlIGFjY2VzcyBub3QgYWxsb3dlZCBvbjogXCIgKyB0aGlzLmdldFBhdGgoKSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5kZWxldGUodHJ1ZSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgYmluYXJ5IGNvbnRlbnQgc3RyZWFtIG9mIHRoZSBkb2N1bWVudC5cblx0ICogQHJldHVybnMgVGhlIHtAbGluayBDb250ZW50U3RyZWFtfSBvYmplY3QsIG9yIGBudWxsYCBpZiB0aGUgZG9jdW1lbnQgaGFzIG5vIGNvbnRlbnQuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0Q29udGVudFN0cmVhbSgpOiBDb250ZW50U3RyZWFtIHwgbnVsbCB7XG5cdFx0Y29uc3QgbmF0aXZlID0gdGhpcy5uYXRpdmUuZ2V0Q29udGVudFN0cmVhbSgpO1xuXHRcdGlmIChuYXRpdmUgIT09IG51bGwpIHtcblx0XHRcdHJldHVybiBuZXcgQ29udGVudFN0cmVhbShuYXRpdmUpO1xuXHRcdH1cblx0XHRyZXR1cm4gbnVsbDtcblx0fTtcblxuXHQvKipcblx0ICogR2V0cyB0aGUgc2l6ZSBvZiB0aGUgZG9jdW1lbnQncyBjb250ZW50IHN0cmVhbSBpbiBieXRlcy5cblx0ICogQHJldHVybnMgVGhlIHNpemUgaW4gYnl0ZXMuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0U2l6ZSgpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRTaXplKCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVuYW1lcyB0aGlzIGRvY3VtZW50LlxuXHQgKiBAcGFyYW0gbmV3TmFtZSBUaGUgbmV3IG5hbWUgZm9yIHRoZSBkb2N1bWVudC5cblx0ICogQHRocm93cyBFcnJvciBpZiB3cml0ZSBhY2Nlc3MgaXMgbm90IGFsbG93ZWQuXG5cdCAqL1xuXHRwdWJsaWMgcmVuYW1lKG5ld05hbWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IGFsbG93ZWQgPSBDbWlzRmFjYWRlLmlzQWxsb3dlZCh0aGlzLmdldFBhdGgoKSwgQ21pcy5NRVRIT0RfV1JJVEUpO1xuXHRcdGlmICghYWxsb3dlZCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiV3JpdGUgYWNjZXNzIG5vdCBhbGxvd2VkIG9uOiBcIiArIHRoaXMuZ2V0UGF0aCgpKTtcblx0XHR9XG5cdFx0dGhpcy5uYXRpdmUucmVuYW1lKG5ld05hbWUpO1xuXHR9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgZGVmaW5pdGlvbiBvZiBhIENNSVMgb2JqZWN0IHR5cGUgKGUuZy4sIGNtaXM6ZG9jdW1lbnQsIGNtaXM6Zm9sZGVyKS5cbiAqL1xuY2xhc3MgVHlwZURlZmluaXRpb24ge1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0Y29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcblx0XHR0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSB1bmlxdWUgSUQgb2YgdGhlIG9iamVjdCB0eXBlIChlLmcuLCAnY21pczpkb2N1bWVudCcpLlxuXHQgKiBAcmV0dXJucyBUaGUgdHlwZSBJRC5cblx0ICovXG5cdHB1YmxpYyBnZXRJZCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRJZCgpO1xuXHR9XG59XG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuXHQvLyBAdHMtaWdub3JlXG5cdG1vZHVsZS5leHBvcnRzID0gQ21pcztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsY0FBeUI7QUFDekIsTUFBTSxhQUFhLEtBQUssS0FBSyxxREFBcUQ7QUFDbEYsTUFBTSxPQUFPLEtBQUssS0FBSyxzQkFBc0I7QUFDN0MsTUFBTSxVQUFVLEtBQUssS0FBSyxtQkFBbUI7QUFFdEMsTUFBTSxLQUFLO0FBQUEsRUFNakI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFNBQXVCLGNBQWM7QUFBQTtBQUFBLEVBSXJDO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0FBdUIsZUFBZTtBQUFBO0FBQUEsRUFJdEM7QUFBQTtBQUFBO0FBQUEsU0FBdUIsT0FBTztBQUFBO0FBQUEsRUFFOUI7QUFBQTtBQUFBLFNBQXVCLFlBQVk7QUFBQTtBQUFBLEVBRW5DO0FBQUE7QUFBQSxTQUF1QixpQkFBaUI7QUFBQTtBQUFBLEVBRXhDO0FBQUE7QUFBQSxTQUF1QixlQUFlO0FBQUE7QUFBQSxFQUV0QztBQUFBO0FBQUEsU0FBdUIsYUFBYTtBQUFBO0FBQUEsRUFFcEM7QUFBQTtBQUFBLFNBQXVCLGdCQUFnQjtBQUFBO0FBQUEsRUFFdkM7QUFBQTtBQUFBLFNBQXVCLG1CQUFtQjtBQUFBO0FBQUEsRUFFMUM7QUFBQTtBQUFBLFNBQXVCLHlCQUF5QjtBQUFBO0FBQUEsRUFFaEQ7QUFBQTtBQUFBLFNBQXVCLGVBQWU7QUFBQTtBQUFBLEVBSXRDO0FBQUE7QUFBQTtBQUFBLFNBQXVCLGVBQWU7QUFBQTtBQUFBLEVBRXRDO0FBQUE7QUFBQSxTQUF1QixvQkFBb0I7QUFBQTtBQUFBLEVBRTNDO0FBQUE7QUFBQSxTQUF1QixtQkFBbUI7QUFBQTtBQUFBLEVBRTFDO0FBQUE7QUFBQSxTQUF1QiwwQkFBMEI7QUFBQTtBQUFBLEVBRWpEO0FBQUE7QUFBQSxTQUF1QixnQkFBZ0I7QUFBQTtBQUFBLEVBRXZDO0FBQUE7QUFBQSxTQUF1QixvQkFBb0I7QUFBQTtBQUFBLEVBRTNDO0FBQUE7QUFBQSxTQUF1QixnQ0FBZ0M7QUFBQTtBQUFBLEVBRXZEO0FBQUE7QUFBQSxTQUF1QixnQ0FBZ0M7QUFBQTtBQUFBLEVBRXZEO0FBQUE7QUFBQSxTQUF1QixnQ0FBZ0M7QUFBQTtBQUFBLEVBRXZEO0FBQUE7QUFBQSxTQUF1QixrQkFBa0I7QUFBQTtBQUFBLEVBRXpDO0FBQUE7QUFBQSxTQUF1Qix3QkFBd0I7QUFBQTtBQUFBLEVBRS9DO0FBQUE7QUFBQSxTQUF1QiwyQkFBMkI7QUFBQTtBQUFBLEVBRWxEO0FBQUE7QUFBQSxTQUF1QiwyQkFBMkI7QUFBQTtBQUFBLEVBRWxEO0FBQUE7QUFBQSxTQUF1QixvQkFBb0I7QUFBQTtBQUFBLEVBSTNDO0FBQUE7QUFBQTtBQUFBLFNBQXVCLFlBQVk7QUFBQTtBQUFBLEVBRW5DO0FBQUE7QUFBQSxTQUF1QixnQ0FBZ0M7QUFBQTtBQUFBLEVBRXZEO0FBQUE7QUFBQSxTQUF1QixPQUFPO0FBQUE7QUFBQSxFQUk5QjtBQUFBO0FBQUE7QUFBQSxTQUF1QixZQUFZO0FBQUE7QUFBQSxFQUVuQztBQUFBO0FBQUEsU0FBdUIsWUFBWTtBQUFBO0FBQUEsRUFJbkM7QUFBQTtBQUFBO0FBQUEsU0FBdUIsY0FBYztBQUFBO0FBQUEsRUFJckM7QUFBQTtBQUFBO0FBQUEsU0FBdUIsd0JBQXdCO0FBQUE7QUFBQSxFQUUvQztBQUFBO0FBQUEsU0FBdUIseUJBQXlCO0FBQUE7QUFBQSxFQUVoRDtBQUFBO0FBQUEsU0FBdUIseUJBQXlCO0FBQUE7QUFBQSxFQUVoRDtBQUFBO0FBQUEsU0FBdUIsOEJBQThCO0FBQUE7QUFBQSxFQUlyRDtBQUFBO0FBQUE7QUFBQSxTQUF1Qix1QkFBdUI7QUFBQTtBQUFBLEVBRTlDO0FBQUE7QUFBQSxTQUF1QixxQkFBcUI7QUFBQTtBQUFBLEVBRTVDO0FBQUE7QUFBQSxTQUF1QiwyQkFBMkI7QUFBQTtBQUFBLEVBRWxEO0FBQUE7QUFBQSxTQUF1QixxQkFBcUI7QUFBQTtBQUFBLEVBRTVDO0FBQUE7QUFBQSxTQUF1QixtQkFBbUI7QUFBQTtBQUFBLEVBRTFDO0FBQUE7QUFBQSxTQUF1Qix3QkFBd0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNL0MsT0FBYyxhQUFzQjtBQUNuQyxVQUFNLFNBQVMsV0FBVyxXQUFXO0FBQ3JDLFdBQU8sSUFBSSxRQUFRLE1BQU07QUFBQSxFQUMxQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUUEsT0FBYyxxQkFBcUIsTUFBYyxRQUFvQztBQUNwRixVQUFNLG9CQUFvQixXQUFXLHFCQUFxQixNQUFNLE1BQU07QUFDdEUsV0FBTyxLQUFLLE1BQU0sSUFBSSxLQUFLLEVBQUUsT0FBTyxpQkFBaUIsQ0FBQztBQUFBLEVBQ3ZEO0FBQ0Q7QUF1QkEsTUFBTSxRQUFRO0FBQUEsRUFJYixZQUFZLFFBQWE7QUFDeEIsU0FBSyxTQUFTO0FBQUEsRUFDZjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNTyxvQkFBb0M7QUFDMUMsVUFBTSxTQUFTLEtBQUssT0FBTyxrQkFBa0I7QUFDN0MsV0FBTyxJQUFJLGVBQWUsTUFBTTtBQUFBLEVBQ2pDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1PLGdCQUF3QjtBQUM5QixVQUFNLFNBQVMsS0FBSyxPQUFPLGNBQWM7QUFDekMsV0FBTyxJQUFJLE9BQU8sUUFBUSxJQUFJO0FBQUEsRUFDL0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTU8sbUJBQWtDO0FBQ3hDLFVBQU0sU0FBUyxLQUFLLE9BQU8saUJBQWlCO0FBQzVDLFdBQU8sSUFBSSxjQUFjLE1BQU07QUFBQSxFQUNoQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sVUFBVSxVQUFxQztBQUNyRCxVQUFNLGlCQUFpQixLQUFLLE9BQU8sVUFBVSxRQUFRO0FBQ3JELFVBQU0scUJBQXFCLGVBQWUsUUFBUTtBQUNsRCxVQUFNLHVCQUF1QixtQkFBbUIsTUFBTTtBQUN0RCxRQUFJLHlCQUF5QixLQUFLLHNCQUFzQjtBQUN2RCxhQUFPLElBQUksU0FBUyxnQkFBZ0IsSUFBSTtBQUFBLElBQ3pDLFdBQVcseUJBQXlCLEtBQUssb0JBQW9CO0FBQzVELGFBQU8sSUFBSSxPQUFPLGdCQUFnQixJQUFJO0FBQUEsSUFDdkM7QUFDQSxVQUFNLElBQUksTUFBTSxtQ0FBbUMsb0JBQW9CO0FBQUEsRUFDeEU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLGdCQUFnQixNQUFpQztBQUN2RCxVQUFNLFVBQVUsV0FBVyxVQUFVLE1BQU0sS0FBSyxXQUFXO0FBQzNELFFBQUksQ0FBQyxTQUFTO0FBQ2IsWUFBTSxJQUFJLE1BQU0saUNBQWlDLElBQUk7QUFBQSxJQUN0RDtBQUNBLFVBQU0saUJBQWlCLEtBQUssT0FBTyxnQkFBZ0IsSUFBSTtBQUN2RCxVQUFNLHFCQUFxQixlQUFlLFFBQVE7QUFDbEQsVUFBTSx1QkFBdUIsbUJBQW1CLE1BQU07QUFDdEQsUUFBSSx5QkFBeUIsS0FBSyxzQkFBc0I7QUFDdkQsYUFBTyxJQUFJLFNBQVMsZ0JBQWdCLElBQUk7QUFBQSxJQUN6QyxXQUFXLHlCQUF5QixLQUFLLG9CQUFvQjtBQUM1RCxhQUFPLElBQUksT0FBTyxnQkFBZ0IsSUFBSTtBQUFBLElBQ3ZDO0FBQ0EsVUFBTSxJQUFJLE1BQU0sbUNBQW1DLG9CQUFvQjtBQUFBLEVBQ3hFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNPLGFBQWEsVUFBMEI7QUFDN0MsUUFBSSxTQUFTLFdBQVcsR0FBRyxHQUFHO0FBQzdCLGlCQUFXLFNBQVMsVUFBVSxHQUFHLFNBQVMsTUFBTTtBQUFBLElBQ2pEO0FBQ0EsUUFBSSxTQUFTLFNBQVMsR0FBRyxHQUFHO0FBQzNCLGlCQUFXLFNBQVMsVUFBVSxHQUFHLFNBQVMsU0FBUyxDQUFDO0FBQUEsSUFDckQ7QUFDQSxVQUFNLFdBQVcsU0FBUyxNQUFNLEdBQUc7QUFDbkMsUUFBSSxTQUFTLEtBQUssY0FBYztBQUNoQyxlQUFXLFFBQVEsVUFBVTtBQUM1QixZQUFNLGFBQWE7QUFBQSxRQUNsQixDQUFDLEtBQUssY0FBYyxHQUFHLEtBQUs7QUFBQSxRQUM1QixDQUFDLEtBQUssSUFBSSxHQUFHO0FBQUEsTUFDZDtBQUNBLGVBQVMsT0FBTyxhQUFhLFVBQVU7QUFBQSxJQUN4QztBQUNBLFdBQU87QUFBQSxFQUNSO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBVU8sZUFBZSxVQUFrQixZQUFvQyxlQUE4QixpQkFBbUM7QUFDNUksVUFBTSxTQUFTLEtBQUssYUFBYSxRQUFRO0FBQ3pDLFdBQU8sT0FBTyxlQUFlLFlBQVksZUFBZSxlQUFlO0FBQUEsRUFDeEU7QUFFRDtBQU1BLE1BQU0sZUFBZTtBQUFBLEVBSXBCLFlBQVksUUFBYTtBQUN4QixTQUFLLFNBQVM7QUFBQSxFQUNmO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1PLFFBQWdCO0FBQ3RCLFdBQU8sS0FBSyxPQUFPLE1BQU07QUFBQSxFQUMxQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNTyxVQUFrQjtBQUN4QixXQUFPLEtBQUssT0FBTyxRQUFRO0FBQUEsRUFDNUI7QUFDRDtBQU1PLE1BQU0sT0FBTztBQUFBLEVBSW5CLFlBQVksUUFBYSxNQUFXO0FBQ25DLFNBQUssU0FBUztBQUNkLFNBQUssT0FBTztBQUFBLEVBQ2I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTU8sUUFBZ0I7QUFDdEIsV0FBTyxLQUFLLE9BQU8sTUFBTTtBQUFBLEVBQzFCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1PLFVBQWtCO0FBQ3hCLFdBQU8sS0FBSyxPQUFPLFFBQVE7QUFBQSxFQUM1QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sYUFBYSxZQUE0QztBQUMvRCxRQUFJLFVBQVUsV0FBVyxVQUFVLEtBQUssUUFBUSxHQUFHLEtBQUssWUFBWTtBQUNwRSxRQUFJLENBQUMsU0FBUztBQUNiLFlBQU0sSUFBSSxNQUFNLGtDQUFrQyxLQUFLLFFBQVEsQ0FBQztBQUFBLElBQ2pFO0FBQ0EsUUFBSSxjQUFjLElBQUksUUFBUTtBQUM5QixhQUFTLFlBQVksWUFBWTtBQUNoQyxVQUFJLFdBQVcsZUFBZSxRQUFRLEdBQUc7QUFDeEMsb0JBQVksSUFBSSxVQUFVLFdBQVcsUUFBUSxDQUFDO0FBQUEsTUFDL0M7QUFBQSxJQUNEO0FBQ0EsUUFBSSxTQUFTLEtBQUssT0FBTyxhQUFhLFdBQVc7QUFDakQsUUFBSSxTQUFTLElBQUksT0FBTyxRQUFRLElBQUk7QUFDcEMsV0FBTztBQUFBLEVBQ1I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFVTyxlQUFlLFlBQW9DLGVBQThCLGlCQUFtQztBQUMxSCxVQUFNLFVBQVUsV0FBVyxVQUFVLEtBQUssUUFBUSxHQUFHLEtBQUssWUFBWTtBQUN0RSxRQUFJLENBQUMsU0FBUztBQUNiLFlBQU0sSUFBSSxNQUFNLGtDQUFrQyxLQUFLLFFBQVEsQ0FBQztBQUFBLElBQ2pFO0FBQ0EsVUFBTSxjQUFjLElBQUksUUFBUTtBQUNoQyxlQUFXLFlBQVksWUFBWTtBQUNsQyxVQUFJLFdBQVcsZUFBZSxRQUFRLEdBQUc7QUFDeEMsb0JBQVksSUFBSSxVQUFVLFdBQVcsUUFBUSxDQUFDO0FBQUEsTUFDL0M7QUFBQSxJQUNEO0FBQ0EsVUFBTSxRQUFRLFdBQVcsbUJBQW1CLGVBQWU7QUFHM0QsVUFBTSxTQUFTLEtBQUssT0FBTyxlQUFlLGFBQWEsY0FBYyxRQUFRLEtBQUs7QUFDbEYsV0FBTyxJQUFJLFNBQVMsUUFBUSxJQUFJO0FBQUEsRUFDakM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxjQUE0QjtBQUNsQyxVQUFNLFVBQVUsV0FBVyxVQUFVLEtBQUssUUFBUSxHQUFHLEtBQUssV0FBVztBQUNyRSxRQUFJLENBQUMsU0FBUztBQUNiLFlBQU0sSUFBSSxNQUFNLGlDQUFpQyxLQUFLLFFBQVEsQ0FBQztBQUFBLElBQ2hFO0FBQ0EsVUFBTSxXQUFXLENBQUM7QUFDbEIsVUFBTSxtQkFBbUIsS0FBSyxPQUFPLFlBQVk7QUFDakQsVUFBTSwyQkFBMkIsaUJBQWlCLFNBQVM7QUFDM0QsV0FBTyx5QkFBeUIsUUFBUSxHQUFHO0FBQzFDLFlBQU0scUJBQXFCLHlCQUF5QixLQUFLO0FBQ3pELFlBQU0sYUFBYSxJQUFJLFdBQVcsa0JBQWtCO0FBQ3BELGVBQVMsS0FBSyxVQUFVO0FBQUEsSUFDekI7QUFDQSxXQUFPO0FBQUEsRUFDUjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNTyxVQUFrQjtBQUN4QixXQUFPLEtBQUs7QUFBQSxFQUNiO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1PLGVBQXdCO0FBQzlCLFdBQU8sS0FBSyxPQUFPLGFBQWE7QUFBQSxFQUNqQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNTyxrQkFBMEI7QUFDaEMsVUFBTSxTQUFTLEtBQUssT0FBTyxnQkFBZ0I7QUFDM0MsV0FBTyxJQUFJLE9BQU8sUUFBUSxJQUFJO0FBQUEsRUFDL0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTU8sU0FBZTtBQUNyQixVQUFNLFVBQVUsV0FBVyxVQUFVLEtBQUssUUFBUSxHQUFHLEtBQUssWUFBWTtBQUN0RSxRQUFJLENBQUMsU0FBUztBQUNiLFlBQU0sSUFBSSxNQUFNLGtDQUFrQyxLQUFLLFFBQVEsQ0FBQztBQUFBLElBQ2pFO0FBQ0EsU0FBSyxPQUFPLE9BQU87QUFBQSxFQUNwQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9PLE9BQU8sU0FBdUI7QUFDcEMsVUFBTSxVQUFVLFdBQVcsVUFBVSxLQUFLLFFBQVEsR0FBRyxLQUFLLFlBQVk7QUFDdEUsUUFBSSxDQUFDLFNBQVM7QUFDYixZQUFNLElBQUksTUFBTSxrQ0FBa0MsS0FBSyxRQUFRLENBQUM7QUFBQSxJQUNqRTtBQUNBLFNBQUssT0FBTyxPQUFPLE9BQU87QUFBQSxFQUMzQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNTyxhQUFtQjtBQUN6QixVQUFNLFVBQVUsV0FBVyxVQUFVLEtBQUssUUFBUSxHQUFHLEtBQUssWUFBWTtBQUN0RSxRQUFJLENBQUMsU0FBUztBQUNiLFlBQU0sSUFBSSxNQUFNLGtDQUFrQyxLQUFLLFFBQVEsQ0FBQztBQUFBLElBQ2pFO0FBQ0EsVUFBTSxzQkFBc0IsV0FBVyx1QkFBdUI7QUFDOUQsU0FBSyxPQUFPLFdBQVcsTUFBTSxxQkFBcUIsSUFBSTtBQUFBLEVBQ3ZEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1PLFVBQTBCO0FBQ2hDLFVBQU0sU0FBUyxLQUFLLE9BQU8sUUFBUTtBQUNuQyxXQUFPLElBQUksZUFBZSxNQUFNO0FBQUEsRUFDakM7QUFDRDtBQU1BLE1BQU0sV0FBVztBQUFBLEVBSWhCLFlBQVksUUFBYTtBQUN4QixTQUFLLFNBQVM7QUFBQSxFQUNmO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1PLFFBQWdCO0FBQ3RCLFdBQU8sS0FBSyxPQUFPLE1BQU07QUFBQSxFQUMxQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNTyxVQUFrQjtBQUN4QixXQUFPLEtBQUssT0FBTyxRQUFRO0FBQUEsRUFDNUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxVQUFrQjtBQUV4QixRQUFJLEtBQUssT0FBTyxTQUFTO0FBQ3hCLGFBQU8sS0FBSyxPQUFPLFFBQVE7QUFBQSxJQUM1QjtBQUdBLFFBQUksS0FBSyxPQUFPLFVBQVU7QUFDekIsYUFBTyxLQUFLLE9BQU8sU0FBUyxFQUFFLENBQUM7QUFBQSxJQUNoQztBQUVBLFVBQU0sSUFBSSxNQUFNLHlDQUF5QyxLQUFLLE1BQU0sQ0FBQyxFQUFFO0FBQUEsRUFDeEU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTU8sVUFBMEI7QUFDaEMsVUFBTSxTQUFTLEtBQUssT0FBTyxRQUFRO0FBQ25DLFdBQU8sSUFBSSxlQUFlLE1BQU07QUFBQSxFQUNqQztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS08sU0FBZTtBQUNyQixTQUFLLE9BQU8sT0FBTztBQUFBLEVBQ3BCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1PLE9BQU8sU0FBdUI7QUFDcEMsU0FBSyxPQUFPLE9BQU8sT0FBTztBQUFBLEVBQzNCO0FBRUQ7QUFNQSxNQUFNLGNBQWM7QUFBQSxFQUluQixZQUFZLFFBQWE7QUFDeEIsU0FBSyxTQUFTO0FBQUEsRUFDZjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVVPLG9CQUFvQixVQUFrQixRQUFnQixVQUFrQixhQUFpRDtBQUUvSCxVQUFNLFNBQVMsS0FBSyxPQUFPLG9CQUFvQixVQUFVLFFBQVEsVUFBVSxZQUFZLE1BQU07QUFDN0YsV0FBTyxJQUFJLGNBQWMsTUFBTTtBQUFBLEVBQ2hDO0FBQ0Q7QUFNQSxNQUFNLGNBQWM7QUFBQSxFQUluQixZQUFZLFFBQWE7QUFDeEIsU0FBSyxTQUFTO0FBQUEsRUFDZjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNTyxZQUFpQztBQUN2QyxVQUFNLFNBQVMsS0FBSyxPQUFPLFVBQVU7QUFDckMsV0FBTyxJQUFJLFFBQVEsWUFBWSxNQUFNO0FBQUEsRUFDdEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTU8sY0FBc0I7QUFDNUIsV0FBTyxLQUFLLE9BQU8sWUFBWTtBQUFBLEVBQ2hDO0FBQ0Q7QUFNTyxNQUFNLFNBQVM7QUFBQSxFQUtyQixZQUFZLFFBQWEsTUFBYztBQUN0QyxTQUFLLFNBQVM7QUFDZCxTQUFLLE9BQU87QUFBQSxFQUNiO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1PLFFBQWdCO0FBQ3RCLFdBQU8sS0FBSyxPQUFPLE1BQU07QUFBQSxFQUMxQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNTyxVQUFrQjtBQUN4QixXQUFPLEtBQUssT0FBTyxRQUFRO0FBQUEsRUFDNUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTU8sVUFBMEI7QUFDaEMsVUFBTSxTQUFTLEtBQUssT0FBTyxRQUFRO0FBQ25DLFdBQU8sSUFBSSxlQUFlLE1BQU07QUFBQSxFQUNqQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNTyxVQUFrQjtBQUN4QixXQUFPLEtBQUs7QUFBQSxFQUNiO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1PLFNBQWU7QUFDckIsVUFBTSxVQUFVLFdBQVcsVUFBVSxLQUFLLFFBQVEsR0FBRyxLQUFLLFlBQVk7QUFDdEUsUUFBSSxDQUFDLFNBQVM7QUFDYixZQUFNLElBQUksTUFBTSxrQ0FBa0MsS0FBSyxRQUFRLENBQUM7QUFBQSxJQUNqRTtBQUNBLFdBQU8sS0FBSyxPQUFPLE9BQU8sSUFBSTtBQUFBLEVBQy9CO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1PLG1CQUF5QztBQUMvQyxVQUFNLFNBQVMsS0FBSyxPQUFPLGlCQUFpQjtBQUM1QyxRQUFJLFdBQVcsTUFBTTtBQUNwQixhQUFPLElBQUksY0FBYyxNQUFNO0FBQUEsSUFDaEM7QUFDQSxXQUFPO0FBQUEsRUFDUjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNTyxVQUFrQjtBQUN4QixXQUFPLEtBQUssT0FBTyxRQUFRO0FBQUEsRUFDNUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxPQUFPLFNBQXVCO0FBQ3BDLFVBQU0sVUFBVSxXQUFXLFVBQVUsS0FBSyxRQUFRLEdBQUcsS0FBSyxZQUFZO0FBQ3RFLFFBQUksQ0FBQyxTQUFTO0FBQ2IsWUFBTSxJQUFJLE1BQU0sa0NBQWtDLEtBQUssUUFBUSxDQUFDO0FBQUEsSUFDakU7QUFDQSxTQUFLLE9BQU8sT0FBTyxPQUFPO0FBQUEsRUFDM0I7QUFDRDtBQUtBLE1BQU0sZUFBZTtBQUFBLEVBSXBCLFlBQVksUUFBYTtBQUN4QixTQUFLLFNBQVM7QUFBQSxFQUNmO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1PLFFBQWdCO0FBQ3RCLFdBQU8sS0FBSyxPQUFPLE1BQU07QUFBQSxFQUMxQjtBQUNEO0FBR0EsSUFBSSxPQUFPLFdBQVcsYUFBYTtBQUVsQyxTQUFPLFVBQVU7QUFDbEI7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
617
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Ntcy9jbWlzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEFQSSBDTUlTXG4gKiAqIE5vdGU6IFRoaXMgbW9kdWxlIGlzIHN1cHBvcnRlZCBvbmx5IHdpdGggdGhlIE1vemlsbGEgUmhpbm8gZW5naW5lXG4gKiAqIFByb3ZpZGVzIHN0YXRpYyBhY2Nlc3MgdG8gdGhlIENNSVMgKENvbnRlbnQgTWFuYWdlbWVudCBJbnRlcm9wZXJhYmlsaXR5IFNlcnZpY2VzKSByZXBvc2l0b3J5IHNlc3Npb24gYW5kIHV0aWxpdHkgY29uc3RhbnRzLlxuICovXG5cbmltcG9ydCAqIGFzIHN0cmVhbXMgZnJvbSBcIkBhZXJva2l0L3Nkay9pby9zdHJlYW1zXCI7XG5jb25zdCBDbWlzRmFjYWRlID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbXBvbmVudHMuYXBpLmNtcy5DbWlzRmFjYWRlXCIpO1xuY29uc3QgR3NvbiA9IEphdmEudHlwZShcImNvbS5nb29nbGUuZ3Nvbi5Hc29uXCIpO1xuY29uc3QgSGFzaE1hcCA9IEphdmEudHlwZShcImphdmEudXRpbC5IYXNoTWFwXCIpO1xuXG5leHBvcnQgY2xhc3MgQ21pcyB7XG5cblx0Ly8gQ09OU1RBTlRTXG5cdC8qKlxuXHQgKiBDTUlTIG1ldGhvZCBjb25zdGFudCBmb3IgcmVhZCBvcGVyYXRpb25zLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBNRVRIT0RfUkVBRCA9IFwiUkVBRFwiO1xuXHQvKipcblx0ICogQ01JUyBtZXRob2QgY29uc3RhbnQgZm9yIHdyaXRlIG9wZXJhdGlvbnMuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1FVEhPRF9XUklURSA9IFwiV1JJVEVcIjtcblxuXHQvLyAtLS0tIEJhc2UgQ01JUyBQcm9wZXJ0aWVzIC0tLS1cblx0LyoqIENNSVMgcHJvcGVydHk6IE9iamVjdCBuYW1lLiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5BTUUgPSBcImNtaXM6bmFtZVwiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogVW5pcXVlIG9iamVjdCBpZGVudGlmaWVyLiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE9CSkVDVF9JRCA9IFwiY21pczpvYmplY3RJZFwiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogT2JqZWN0IHR5cGUgaWRlbnRpZmllci4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBPQkpFQ1RfVFlQRV9JRCA9IFwiY21pczpvYmplY3RUeXBlSWRcIjtcblx0LyoqIENNSVMgcHJvcGVydHk6IEJhc2Ugb2JqZWN0IHR5cGUgaWRlbnRpZmllci4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBCQVNFX1RZUEVfSUQgPSBcImNtaXM6YmFzZVR5cGVJZFwiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogVXNlciB3aG8gY3JlYXRlZCB0aGUgb2JqZWN0LiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENSRUFURURfQlkgPSBcImNtaXM6Y3JlYXRlZEJ5XCI7XG5cdC8qKiBDTUlTIHByb3BlcnR5OiBUaW1lc3RhbXAgb2Ygb2JqZWN0IGNyZWF0aW9uLiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENSRUFUSU9OX0RBVEUgPSBcImNtaXM6Y3JlYXRpb25EYXRlXCI7XG5cdC8qKiBDTUlTIHByb3BlcnR5OiBVc2VyIHdobyBsYXN0IG1vZGlmaWVkIHRoZSBvYmplY3QuICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTEFTVF9NT0RJRklFRF9CWSA9IFwiY21pczpsYXN0TW9kaWZpZWRCeVwiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogVGltZXN0YW1wIG9mIGxhc3QgbW9kaWZpY2F0aW9uLiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExBU1RfTU9ESUZJQ0FUSU9OX0RBVEUgPSBcImNtaXM6bGFzdE1vZGlmaWNhdGlvbkRhdGVcIjtcblx0LyoqIENNSVMgcHJvcGVydHk6IENoYW5nZSB0b2tlbiBmb3Igb2JqZWN0IGNoYW5nZSB0cmFja2luZy4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBDSEFOR0VfVE9LRU4gPSBcImNtaXM6Y2hhbmdlVG9rZW5cIjtcblxuXHQvLyAtLS0tIERvY3VtZW50IENNSVMgUHJvcGVydGllcyAtLS0tXG5cdC8qKiBDTUlTIHByb3BlcnR5OiBJbmRpY2F0ZXMgaWYgdGhlIGRvY3VtZW50IGlzIGltbXV0YWJsZS4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBJU19JTU1VVEFCTEUgPSBcImNtaXM6aXNJbW11dGFibGVcIjtcblx0LyoqIENNSVMgcHJvcGVydHk6IEluZGljYXRlcyBpZiB0aGUgZG9jdW1lbnQgaXMgdGhlIGxhdGVzdCB2ZXJzaW9uIGluIHRoZSB2ZXJzaW9uIHNlcmllcy4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBJU19MQVRFU1RfVkVSU0lPTiA9IFwiY21pczppc0xhdGVzdFZlcnNpb25cIjtcblx0LyoqIENNSVMgcHJvcGVydHk6IEluZGljYXRlcyBpZiB0aGUgZG9jdW1lbnQgaXMgYSBtYWpvciB2ZXJzaW9uLiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IElTX01BSk9SX1ZFUlNJT04gPSBcImNtaXM6aXNNYWpvclZlcnNpb25cIjtcblx0LyoqIENNSVMgcHJvcGVydHk6IEluZGljYXRlcyBpZiB0aGUgZG9jdW1lbnQgaXMgdGhlIGxhdGVzdCBtYWpvciB2ZXJzaW9uLiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IElTX0xBVEVTVF9NQUpPUl9WRVJTSU9OID0gXCJjbWlzOmlzTGF0ZXN0TWFqb3JWZXJzaW9uXCI7XG5cdC8qKiBDTUlTIHByb3BlcnR5OiBMYWJlbCBvZiB0aGUgZG9jdW1lbnQgdmVyc2lvbi4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBWRVJTSU9OX0xBQkVMID0gXCJjbWlzOnZlcnNpb25MYWJlbFwiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogSUQgb2YgdGhlIHZlcnNpb24gc2VyaWVzLiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFZFUlNJT05fU0VSSUVTX0lEID0gXCJjbWlzOnZlcnNpb25TZXJpZXNJZFwiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogSW5kaWNhdGVzIGlmIHRoZSB2ZXJzaW9uIHNlcmllcyBpcyBjaGVja2VkIG91dC4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBJU19WRVJTSU9OX1NFUklFU19DSEVDS0VEX09VVCA9IFwiY21pczppc1ZlcnNpb25TZXJpZXNDaGVja2VkT3V0XCI7XG5cdC8qKiBDTUlTIHByb3BlcnR5OiBVc2VyIHdobyBjaGVja2VkIG91dCB0aGUgdmVyc2lvbiBzZXJpZXMuICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVkVSU0lPTl9TRVJJRVNfQ0hFQ0tFRF9PVVRfQlkgPSBcImNtaXM6dmVyc2lvblNlcmllc0NoZWNrZWRPdXRCeVwiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogSUQgb2YgdGhlIGNoZWNrZWQtb3V0IGRvY3VtZW50IG9iamVjdC4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBWRVJTSU9OX1NFUklFU19DSEVDS0VEX09VVF9JRCA9IFwiY21pczp2ZXJzaW9uU2VyaWVzQ2hlY2tlZE91dElkXCI7XG5cdC8qKiBDTUlTIHByb3BlcnR5OiBDb21tZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgY2hlY2staW4gb3BlcmF0aW9uLiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENIRUNLSU5fQ09NTUVOVCA9IFwiY21pczpjaGVja2luQ29tbWVudFwiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogTGVuZ3RoIG9mIHRoZSBjb250ZW50IHN0cmVhbSBpbiBieXRlcy4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBDT05URU5UX1NUUkVBTV9MRU5HVEggPSBcImNtaXM6Y29udGVudFN0cmVhbUxlbmd0aFwiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogTUlNRSB0eXBlIG9mIHRoZSBjb250ZW50IHN0cmVhbS4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBDT05URU5UX1NUUkVBTV9NSU1FX1RZUEUgPSBcImNtaXM6Y29udGVudFN0cmVhbU1pbWVUeXBlXCI7XG5cdC8qKiBDTUlTIHByb3BlcnR5OiBPcmlnaW5hbCBmaWxlIG5hbWUgb2YgdGhlIGNvbnRlbnQgc3RyZWFtLiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPTlRFTlRfU1RSRUFNX0ZJTEVfTkFNRSA9IFwiY21pczpjb250ZW50U3RyZWFtRmlsZU5hbWVcIjtcblx0LyoqIENNSVMgcHJvcGVydHk6IElEIG9mIHRoZSBjb250ZW50IHN0cmVhbS4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBDT05URU5UX1NUUkVBTV9JRCA9IFwiY21pczpjb250ZW50U3RyZWFtSWRcIjtcblxuXHQvLyAtLS0tIEZvbGRlciBDTUlTIFByb3BlcnRpZXMgLS0tLVxuXHQvKiogQ01JUyBwcm9wZXJ0eTogT2JqZWN0IElEIG9mIHRoZSBwYXJlbnQgZm9sZGVyLiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBBUkVOVF9JRCA9IFwiY21pczpwYXJlbnRJZFwiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogTGlzdCBvZiBhbGxvd2VkIG9iamVjdCB0eXBlIElEcyBmb3IgY2hpbGRyZW4uICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUxMT1dFRF9DSElMRF9PQkpFQ1RfVFlQRV9JRFMgPSBcImNtaXM6YWxsb3dlZENoaWxkT2JqZWN0VHlwZUlkc1wiO1xuXHQvKiogQ01JUyBwcm9wZXJ0eTogUGF0aCBvZiB0aGUgZm9sZGVyIGluIHRoZSByZXBvc2l0b3J5LiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBBVEggPSBcImNtaXM6cGF0aFwiO1xuXG5cdC8vIC0tLS0gUmVsYXRpb25zaGlwIENNSVMgUHJvcGVydGllcyAtLS0tXG5cdC8qKiBDTUlTIHByb3BlcnR5OiBPYmplY3QgSUQgb2YgdGhlIHJlbGF0aW9uc2hpcCBzb3VyY2UuICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU09VUkNFX0lEID0gXCJjbWlzOnNvdXJjZUlkXCI7XG5cdC8qKiBDTUlTIHByb3BlcnR5OiBPYmplY3QgSUQgb2YgdGhlIHJlbGF0aW9uc2hpcCB0YXJnZXQuICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVEFSR0VUX0lEID0gXCJjbWlzOnRhcmdldElkXCI7XG5cblx0Ly8gLS0tLSBQb2xpY3kgQ01JUyBQcm9wZXJ0aWVzIC0tLS1cblx0LyoqIENNSVMgcHJvcGVydHk6IFRleHQgY29udGVudCBvZiB0aGUgcG9saWN5LiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBPTElDWV9URVhUID0gXCJjbWlzOnBvbGljeVRleHRcIjtcblxuXHQvLyAtLS0tIFZlcnNpb25pbmcgU3RhdGVzIC0tLS1cblx0LyoqIENNSVMgVmVyc2lvbmluZyBTdGF0ZTogTm8gdmVyc2lvbmluZy4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBWRVJTSU9OSU5HX1NUQVRFX05PTkUgPSBcIm5vbmVcIjtcblx0LyoqIENNSVMgVmVyc2lvbmluZyBTdGF0ZTogQ3JlYXRlIGEgbmV3IG1ham9yIHZlcnNpb24uICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVkVSU0lPTklOR19TVEFURV9NQUpPUiA9IFwibWFqb3JcIjtcblx0LyoqIENNSVMgVmVyc2lvbmluZyBTdGF0ZTogQ3JlYXRlIGEgbmV3IG1pbm9yIHZlcnNpb24uICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVkVSU0lPTklOR19TVEFURV9NSU5PUiA9IFwibWlub3JcIjtcblx0LyoqIENNSVMgVmVyc2lvbmluZyBTdGF0ZTogRG9jdW1lbnQgaXMgY2hlY2tlZCBvdXQuICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVkVSU0lPTklOR19TVEFURV9DSEVDS0VET1VUID0gXCJjaGVja2Vkb3V0XCI7XG5cblx0Ly8gLS0tLSBPYmplY3QgVHlwZXMgLS0tLVxuXHQvKiogQ01JUyBPYmplY3QgVHlwZSBJRDogRG9jdW1lbnQuICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT0JKRUNUX1RZUEVfRE9DVU1FTlQgPSBcImNtaXM6ZG9jdW1lbnRcIjtcblx0LyoqIENNSVMgT2JqZWN0IFR5cGUgSUQ6IEZvbGRlci4gKi9cblx0cHVibGljIHN0YXRpYyByZWFkb25seSBPQkpFQ1RfVFlQRV9GT0xERVIgPSBcImNtaXM6Zm9sZGVyXCI7XG5cdC8qKiBDTUlTIE9iamVjdCBUeXBlIElEOiBSZWxhdGlvbnNoaXAuICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT0JKRUNUX1RZUEVfUkVMQVRJT05TSElQID0gXCJjbWlzOnJlbGF0aW9uc2hpcFwiO1xuXHQvKiogQ01JUyBPYmplY3QgVHlwZSBJRDogUG9saWN5LiAqL1xuXHRwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE9CSkVDVF9UWVBFX1BPTElDWSA9IFwiY21pczpwb2xpY3lcIjtcblx0LyoqIENNSVMgT2JqZWN0IFR5cGUgSUQ6IEl0ZW0uICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT0JKRUNUX1RZUEVfSVRFTSA9IFwiY21pczppdGVtXCI7XG5cdC8qKiBDTUlTIE9iamVjdCBUeXBlIElEOiBTZWNvbmRhcnkuICovXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT0JKRUNUX1RZUEVfU0VDT05EQVJZID0gXCJjbWlzOnNlY29uZGFyeVwiO1xuXG5cdC8qKlxuXHQgKiBHZXRzIGEgbmV3IENNSVMgc2Vzc2lvbiBpbnN0YW5jZSB0byBpbnRlcmFjdCB3aXRoIHRoZSByZXBvc2l0b3J5LlxuXHQgKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgU2Vzc2lvbn0gaW5zdGFuY2UuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGdldFNlc3Npb24oKTogU2Vzc2lvbiB7XG5cdFx0Y29uc3QgbmF0aXZlID0gQ21pc0ZhY2FkZS5nZXRTZXNzaW9uKCk7XG5cdFx0cmV0dXJuIG5ldyBTZXNzaW9uKG5hdGl2ZSk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIGFjY2VzcyBjb250cm9sIGRlZmluaXRpb25zIGZvciBhIHNwZWNpZmljIHBhdGggYW5kIG1ldGhvZC5cblx0ICogQHBhcmFtIHBhdGggVGhlIHBhdGggb2YgdGhlIENNSVMgb2JqZWN0LlxuXHQgKiBAcGFyYW0gbWV0aG9kIFRoZSBvcGVyYXRpb24gbWV0aG9kIChlLmcuLCB7QGxpbmsgQ21pcy5NRVRIT0RfUkVBRH0sIHtAbGluayBDbWlzLk1FVEhPRF9XUklURX0pLlxuXHQgKiBAcmV0dXJucyBBIGxpc3Qgb2YgYWNjZXNzIGRlZmluaXRpb25zLlxuXHQgKi9cblx0cHVibGljIHN0YXRpYyBnZXRBY2Nlc3NEZWZpbml0aW9ucyhwYXRoOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nKTogQWNjZXNzRGVmaW5pdGlvbltdIHtcblx0XHRjb25zdCBhY2Nlc3NEZWZpbml0aW9ucyA9IENtaXNGYWNhZGUuZ2V0QWNjZXNzRGVmaW5pdGlvbnMocGF0aCwgbWV0aG9kKTtcblx0XHRyZXR1cm4gSlNPTi5wYXJzZShuZXcgR3NvbigpLnRvSnNvbihhY2Nlc3NEZWZpbml0aW9ucykpO1xuXHR9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBhY2Nlc3MgY29udHJvbCBlbnRyeSAoQUNFKSBmb3IgYSBDTUlTIG9iamVjdCwgZGV0YWlsaW5nXG4gKiB3aG8gaGFzIHdoYXQgcGVybWlzc2lvbnMgb24gYSBwYXRoLlxuICovXG5pbnRlcmZhY2UgQWNjZXNzRGVmaW5pdGlvbiB7XG5cdC8qKiBHZXRzIHRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGFjY2VzcyBkZWZpbml0aW9uLiAqL1xuXHRnZXRJZCgpOiBzdHJpbmc7XG5cdC8qKiBHZXRzIHRoZSBzY29wZSBvZiB0aGUgZGVmaW5pdGlvbiAoZS5nLiwgJ3VzZXInLCAnZ3JvdXAnKS4gKi9cblx0Z2V0U2NvcGUoKTogc3RyaW5nO1xuXHQvKiogR2V0cyB0aGUgcGF0aCBvZiB0aGUgQ01JUyBvYmplY3QgdGhpcyBkZWZpbml0aW9uIGFwcGxpZXMgdG8uICovXG5cdGdldFBhdGgoKTogc3RyaW5nO1xuXHQvKiogR2V0cyB0aGUgbWV0aG9kL29wZXJhdGlvbiB0aGlzIGRlZmluaXRpb24gYXBwbGllcyB0byAoZS5nLiwgJ1JFQUQnLCAnV1JJVEUnKS4gKi9cblx0Z2V0TWV0aG9kKCk6IHN0cmluZztcblx0LyoqIEdldHMgdGhlIHNlY3VyaXR5IHJvbGUgKGUuZy4sICdBZG1pbmlzdHJhdG9yJywgJ1ZpZXdlcicpLiAqL1xuXHRnZXRSb2xlKCk6IHN0cmluZztcbn1cblxuLyoqXG4gKiBTZXNzaW9uIG9iamVjdFxuICogKiBSZXByZXNlbnRzIGFuIGFjdGl2ZSBjb25uZWN0aW9uIHRvIGEgQ01JUyByZXBvc2l0b3J5LCB1c2VkIGFzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBDTUlTIG9wZXJhdGlvbnMuXG4gKi9cbmNsYXNzIFNlc3Npb24ge1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0Y29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcblx0XHR0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZXBvc2l0b3J5IHRoaXMgc2Vzc2lvbiBpcyBjb25uZWN0ZWQgdG8uXG5cdCAqIEByZXR1cm5zIFJlcG9zaXRvcnkgbWV0YWRhdGEuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0UmVwb3NpdG9yeUluZm8oKTogUmVwb3NpdG9yeUluZm8ge1xuXHRcdGNvbnN0IG5hdGl2ZSA9IHRoaXMubmF0aXZlLmdldFJlcG9zaXRvcnlJbmZvKCk7XG5cdFx0cmV0dXJuIG5ldyBSZXBvc2l0b3J5SW5mbyhuYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHJvb3QgZm9sZGVyIG9mIHRoZSByZXBvc2l0b3J5LlxuXHQgKiBAcmV0dXJucyBUaGUgcm9vdCB7QGxpbmsgRm9sZGVyfSBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0Um9vdEZvbGRlcigpOiBGb2xkZXIge1xuXHRcdGNvbnN0IG5hdGl2ZSA9IHRoaXMubmF0aXZlLmdldFJvb3RGb2xkZXIoKTtcblx0XHRyZXR1cm4gbmV3IEZvbGRlcihuYXRpdmUsIG51bGwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIG9iamVjdCBmYWN0b3J5IGZvciBjcmVhdGluZyBuZXcgQ01JUyBvYmplY3RzIGxpa2UgQ29udGVudFN0cmVhbS5cblx0ICogQHJldHVybnMgQW4ge0BsaW5rIE9iamVjdEZhY3Rvcnl9IGluc3RhbmNlLlxuXHQgKi9cblx0cHVibGljIGdldE9iamVjdEZhY3RvcnkoKTogT2JqZWN0RmFjdG9yeSB7XG5cdFx0Y29uc3QgbmF0aXZlID0gdGhpcy5uYXRpdmUuZ2V0T2JqZWN0RmFjdG9yeSgpO1xuXHRcdHJldHVybiBuZXcgT2JqZWN0RmFjdG9yeShuYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyBhIENNSVMgb2JqZWN0IChEb2N1bWVudCBvciBGb2xkZXIpIGJ5IGl0cyB1bmlxdWUgSUQuXG5cdCAqIEBwYXJhbSBvYmplY3RJZCBUaGUgdW5pcXVlIElEIG9mIHRoZSBvYmplY3QuXG5cdCAqIEByZXR1cm5zIEEge0BsaW5rIERvY3VtZW50fSBvciB7QGxpbmsgRm9sZGVyfSBpbnN0YW5jZS5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgb2JqZWN0IHR5cGUgaXMgdW5zdXBwb3J0ZWQuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0T2JqZWN0KG9iamVjdElkOiBzdHJpbmcpOiBGb2xkZXIgfCBEb2N1bWVudCB7XG5cdFx0Y29uc3Qgb2JqZWN0SW5zdGFuY2UgPSB0aGlzLm5hdGl2ZS5nZXRPYmplY3Qob2JqZWN0SWQpO1xuXHRcdGNvbnN0IG9iamVjdEluc3RhbmNlVHlwZSA9IG9iamVjdEluc3RhbmNlLmdldFR5cGUoKTtcblx0XHRjb25zdCBvYmplY3RJbnN0YW5jZVR5cGVJZCA9IG9iamVjdEluc3RhbmNlVHlwZS5nZXRJZCgpO1xuXHRcdGlmIChvYmplY3RJbnN0YW5jZVR5cGVJZCA9PT0gQ21pcy5PQkpFQ1RfVFlQRV9ET0NVTUVOVCkge1xuXHRcdFx0cmV0dXJuIG5ldyBEb2N1bWVudChvYmplY3RJbnN0YW5jZSwgbnVsbCk7XG5cdFx0fSBlbHNlIGlmIChvYmplY3RJbnN0YW5jZVR5cGVJZCA9PT0gQ21pcy5PQkpFQ1RfVFlQRV9GT0xERVIpIHtcblx0XHRcdHJldHVybiBuZXcgRm9sZGVyKG9iamVjdEluc3RhbmNlLCBudWxsKTtcblx0XHR9XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgQ01JUyBvYmplY3QgdHlwZTogXCIgKyBvYmplY3RJbnN0YW5jZVR5cGVJZCk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIGEgQ01JUyBvYmplY3QgKERvY3VtZW50IG9yIEZvbGRlcikgYnkgaXRzIHBhdGguXG5cdCAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBvYmplY3QgaW4gdGhlIHJlcG9zaXRvcnkgKGUuZy4sIFwiL3BhdGgvdG8vb2JqZWN0XCIpLlxuXHQgKiBAcmV0dXJucyBBIHtAbGluayBEb2N1bWVudH0gb3Ige0BsaW5rIEZvbGRlcn0gaW5zdGFuY2UuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgcmVhZCBhY2Nlc3MgaXMgbm90IGFsbG93ZWQgb3IgdGhlIG9iamVjdCB0eXBlIGlzIHVuc3VwcG9ydGVkLlxuXHQgKi9cblx0cHVibGljIGdldE9iamVjdEJ5UGF0aChwYXRoOiBzdHJpbmcpOiBGb2xkZXIgfCBEb2N1bWVudCB7XG5cdFx0Y29uc3QgYWxsb3dlZCA9IENtaXNGYWNhZGUuaXNBbGxvd2VkKHBhdGgsIENtaXMuTUVUSE9EX1JFQUQpO1xuXHRcdGlmICghYWxsb3dlZCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiUmVhZCBhY2Nlc3Mgbm90IGFsbG93ZWQgb246IFwiICsgcGF0aCk7XG5cdFx0fVxuXHRcdGNvbnN0IG9iamVjdEluc3RhbmNlID0gdGhpcy5uYXRpdmUuZ2V0T2JqZWN0QnlQYXRoKHBhdGgpO1xuXHRcdGNvbnN0IG9iamVjdEluc3RhbmNlVHlwZSA9IG9iamVjdEluc3RhbmNlLmdldFR5cGUoKTtcblx0XHRjb25zdCBvYmplY3RJbnN0YW5jZVR5cGVJZCA9IG9iamVjdEluc3RhbmNlVHlwZS5nZXRJZCgpO1xuXHRcdGlmIChvYmplY3RJbnN0YW5jZVR5cGVJZCA9PT0gQ21pcy5PQkpFQ1RfVFlQRV9ET0NVTUVOVCkge1xuXHRcdFx0cmV0dXJuIG5ldyBEb2N1bWVudChvYmplY3RJbnN0YW5jZSwgcGF0aCk7XG5cdFx0fSBlbHNlIGlmIChvYmplY3RJbnN0YW5jZVR5cGVJZCA9PT0gQ21pcy5PQkpFQ1RfVFlQRV9GT0xERVIpIHtcblx0XHRcdHJldHVybiBuZXcgRm9sZGVyKG9iamVjdEluc3RhbmNlLCBwYXRoKTtcblx0XHR9XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgQ01JUyBvYmplY3QgdHlwZTogXCIgKyBvYmplY3RJbnN0YW5jZVR5cGVJZCk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIGZvbGRlciBzdHJ1Y3R1cmUgcmVjdXJzaXZlbHkgYmFzZWQgb24gYSBwYXRoLiBUaGlzIGlzIGEgY29udmVuaWVuY2UgbWV0aG9kIHRoYXRcblx0ICogY3JlYXRlcyBhbGwgbm9uLWV4aXN0ZW50IHBhcmVudCBmb2xkZXJzLlxuXHQgKiBFeGFtcGxlOiBgY3JlYXRlRm9sZGVyKFwiL25ldy9wYXRoL3N0cnVjdHVyZVwiKWBcblx0ICogQHBhcmFtIGxvY2F0aW9uIFRoZSBwYXRoIG9mIHRoZSBmb2xkZXIgdG8gY3JlYXRlLlxuXHQgKiBAcmV0dXJucyBUaGUgbmV3bHkgY3JlYXRlZCAob3IgZXhpc3RpbmcpIGlubmVybW9zdCB7QGxpbmsgRm9sZGVyfSBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgY3JlYXRlRm9sZGVyKGxvY2F0aW9uOiBzdHJpbmcpOiBGb2xkZXIge1xuXHRcdGlmIChsb2NhdGlvbi5zdGFydHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0bG9jYXRpb24gPSBsb2NhdGlvbi5zdWJzdHJpbmcoMSwgbG9jYXRpb24ubGVuZ3RoKTtcblx0XHR9XG5cdFx0aWYgKGxvY2F0aW9uLmVuZHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0bG9jYXRpb24gPSBsb2NhdGlvbi5zdWJzdHJpbmcoMCwgbG9jYXRpb24ubGVuZ3RoIC0gMSk7XG5cdFx0fVxuXHRcdGNvbnN0IHNlZ21lbnRzID0gbG9jYXRpb24uc3BsaXQoXCIvXCIpO1xuXHRcdGxldCBmb2xkZXIgPSB0aGlzLmdldFJvb3RGb2xkZXIoKTtcblx0XHRmb3IgKGNvbnN0IG5leHQgb2Ygc2VnbWVudHMpIHtcblx0XHRcdGNvbnN0IHByb3BlcnRpZXMgPSB7XG5cdFx0XHRcdFtDbWlzLk9CSkVDVF9UWVBFX0lEXTogQ21pcy5PQkpFQ1RfVFlQRV9GT0xERVIsXG5cdFx0XHRcdFtDbWlzLk5BTUVdOiBuZXh0XG5cdFx0XHR9O1xuXHRcdFx0Zm9sZGVyID0gZm9sZGVyLmNyZWF0ZUZvbGRlcihwcm9wZXJ0aWVzKTtcblx0XHR9XG5cdFx0cmV0dXJuIGZvbGRlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3IGRvY3VtZW50IGF0IHRoZSBzcGVjaWZpZWQgbG9jYXRpb24uIFRoaXMgbWV0aG9kIGVuc3VyZXMgdGhlIHBhcmVudCBmb2xkZXIgc3RydWN0dXJlIGV4aXN0cy5cblx0ICogQHBhcmFtIGxvY2F0aW9uIFRoZSBwYXRoIG9mIHRoZSBwYXJlbnQgZm9sZGVyIChlLmcuLCBcIi9wYXRoL3RvL2ZvbGRlclwiKS5cblx0ICogQHBhcmFtIHByb3BlcnRpZXMgQSBtYXAgb2YgQ01JUyBwcm9wZXJ0aWVzIGZvciB0aGUgbmV3IGRvY3VtZW50IChtdXN0IGluY2x1ZGUge0BsaW5rIENtaXMuTkFNRX0pLlxuXHQgKiBAcGFyYW0gY29udGVudFN0cmVhbSBUaGUgY29udGVudCBzdHJlYW0gY29udGFpbmluZyB0aGUgZG9jdW1lbnQncyBiaW5hcnkgZGF0YS5cblx0ICogQHBhcmFtIHZlcnNpb25pbmdTdGF0ZSBUaGUgdmVyc2lvbmluZyBzdGF0ZSAoZS5nLiwge0BsaW5rIENtaXMuVkVSU0lPTklOR19TVEFURV9NQUpPUn0pLlxuXHQgKiBAcmV0dXJucyBUaGUgbmV3bHkgY3JlYXRlZCB7QGxpbmsgRG9jdW1lbnR9IG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBjcmVhdGVEb2N1bWVudChsb2NhdGlvbjogc3RyaW5nLCBwcm9wZXJ0aWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBjb250ZW50U3RyZWFtOiBDb250ZW50U3RyZWFtLCB2ZXJzaW9uaW5nU3RhdGU6IHN0cmluZyk6IERvY3VtZW50IHtcblx0XHRjb25zdCBmb2xkZXIgPSB0aGlzLmNyZWF0ZUZvbGRlcihsb2NhdGlvbik7XG5cdFx0cmV0dXJuIGZvbGRlci5jcmVhdGVEb2N1bWVudChwcm9wZXJ0aWVzLCBjb250ZW50U3RyZWFtLCB2ZXJzaW9uaW5nU3RhdGUpO1xuXHR9XG5cbn1cblxuLyoqXG4gKiBSZXBvc2l0b3J5SW5mbyBvYmplY3RcbiAqICogUHJvdmlkZXMgYmFzaWMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbm5lY3RlZCBDTUlTIHJlcG9zaXRvcnkuXG4gKi9cbmNsYXNzIFJlcG9zaXRvcnlJbmZvIHtcblxuXHRwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG5cdGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmUgPSBuYXRpdmU7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHJlcG9zaXRvcnkuXG5cdCAqIEByZXR1cm5zIFRoZSByZXBvc2l0b3J5IElELlxuXHQgKi9cblx0cHVibGljIGdldElkKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldElkKCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgbmFtZSBvZiB0aGUgcmVwb3NpdG9yeS5cblx0ICogQHJldHVybnMgVGhlIHJlcG9zaXRvcnkgbmFtZS5cblx0ICovXG5cdHB1YmxpYyBnZXROYW1lKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE5hbWUoKTtcblx0fVxufVxuXG4vKipcbiAqIEZvbGRlciBvYmplY3RcbiAqICogUmVwcmVzZW50cyBhIENNSVMgZm9sZGVyIG9iamVjdCwgYWxsb3dpbmcgb3BlcmF0aW9ucyBsaWtlIGNyZWF0aW5nIGNoaWxkcmVuLCBkZWxldGluZywgYW5kIHJlbmFtaW5nLlxuICovXG5leHBvcnQgY2xhc3MgRm9sZGVyIHtcblx0cHJpdmF0ZSByZWFkb25seSBuYXRpdmU6IGFueTtcblx0cHJpdmF0ZSBwYXRoOiBhbnk7XG5cblx0Y29uc3RydWN0b3IobmF0aXZlOiBhbnksIHBhdGg6IGFueSkge1xuXHRcdHRoaXMubmF0aXZlID0gbmF0aXZlO1xuXHRcdHRoaXMucGF0aCA9IHBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGZvbGRlci5cblx0ICogQHJldHVybnMgVGhlIGZvbGRlciBJRC5cblx0ICovXG5cdHB1YmxpYyBnZXRJZCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRJZCgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIG5hbWUgb2YgdGhlIGZvbGRlci5cblx0ICogQHJldHVybnMgVGhlIGZvbGRlciBuYW1lLlxuXHQgKi9cblx0cHVibGljIGdldE5hbWUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TmFtZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgZm9sZGVyIHdpdGhpbiB0aGlzIGZvbGRlci5cblx0ICogQHBhcmFtIHByb3BlcnRpZXMgQSBtYXAgb2YgQ01JUyBwcm9wZXJ0aWVzIGZvciB0aGUgbmV3IGZvbGRlciAobXVzdCBpbmNsdWRlIHtAbGluayBDbWlzLk5BTUV9KS5cblx0ICogQHJldHVybnMgVGhlIG5ld2x5IGNyZWF0ZWQge0BsaW5rIEZvbGRlcn0gb2JqZWN0LlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHdyaXRlIGFjY2VzcyBpcyBub3QgYWxsb3dlZC5cblx0ICovXG5cdHB1YmxpYyBjcmVhdGVGb2xkZXIocHJvcGVydGllczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IEZvbGRlciB7XG5cdFx0dmFyIGFsbG93ZWQgPSBDbWlzRmFjYWRlLmlzQWxsb3dlZCh0aGlzLmdldFBhdGgoKSwgQ21pcy5NRVRIT0RfV1JJVEUpO1xuXHRcdGlmICghYWxsb3dlZCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiV3JpdGUgYWNjZXNzIG5vdCBhbGxvd2VkIG9uOiBcIiArIHRoaXMuZ2V0UGF0aCgpKTtcblx0XHR9XG5cdFx0dmFyIG1hcEluc3RhbmNlID0gbmV3IEhhc2hNYXAoKTtcblx0XHRmb3IgKHZhciBwcm9wZXJ0eSBpbiBwcm9wZXJ0aWVzKSB7XG5cdFx0XHRpZiAocHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcblx0XHRcdFx0bWFwSW5zdGFuY2UucHV0KHByb3BlcnR5LCBwcm9wZXJ0aWVzW3Byb3BlcnR5XSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHZhciBuYXRpdmUgPSB0aGlzLm5hdGl2ZS5jcmVhdGVGb2xkZXIobWFwSW5zdGFuY2UpO1xuXHRcdHZhciBmb2xkZXIgPSBuZXcgRm9sZGVyKG5hdGl2ZSwgbnVsbCk7XG5cdFx0cmV0dXJuIGZvbGRlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3IGRvY3VtZW50IHdpdGhpbiB0aGlzIGZvbGRlci5cblx0ICogQHBhcmFtIHByb3BlcnRpZXMgQSBtYXAgb2YgQ01JUyBwcm9wZXJ0aWVzIGZvciB0aGUgbmV3IGRvY3VtZW50IChtdXN0IGluY2x1ZGUge0BsaW5rIENtaXMuTkFNRX0pLlxuXHQgKiBAcGFyYW0gY29udGVudFN0cmVhbSBUaGUgY29udGVudCBzdHJlYW0gY29udGFpbmluZyB0aGUgZG9jdW1lbnQncyBiaW5hcnkgZGF0YS5cblx0ICogQHBhcmFtIHZlcnNpb25pbmdTdGF0ZSBUaGUgdmVyc2lvbmluZyBzdGF0ZSAoZS5nLiwge0BsaW5rIENtaXMuVkVSU0lPTklOR19TVEFURV9NQUpPUn0pLlxuXHQgKiBAcmV0dXJucyBUaGUgbmV3bHkgY3JlYXRlZCB7QGxpbmsgRG9jdW1lbnR9IG9iamVjdC5cblx0ICogQHRocm93cyBFcnJvciBpZiB3cml0ZSBhY2Nlc3MgaXMgbm90IGFsbG93ZWQuXG5cdCAqL1xuXHRwdWJsaWMgY3JlYXRlRG9jdW1lbnQocHJvcGVydGllczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgY29udGVudFN0cmVhbTogQ29udGVudFN0cmVhbSwgdmVyc2lvbmluZ1N0YXRlOiBzdHJpbmcpOiBEb2N1bWVudCB7XG5cdFx0Y29uc3QgYWxsb3dlZCA9IENtaXNGYWNhZGUuaXNBbGxvd2VkKHRoaXMuZ2V0UGF0aCgpLCBDbWlzLk1FVEhPRF9XUklURSk7XG5cdFx0aWYgKCFhbGxvd2VkKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJXcml0ZSBhY2Nlc3Mgbm90IGFsbG93ZWQgb246IFwiICsgdGhpcy5nZXRQYXRoKCkpO1xuXHRcdH1cblx0XHRjb25zdCBtYXBJbnN0YW5jZSA9IG5ldyBIYXNoTWFwKCk7XG5cdFx0Zm9yIChjb25zdCBwcm9wZXJ0eSBpbiBwcm9wZXJ0aWVzKSB7XG5cdFx0XHRpZiAocHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eSkpIHtcblx0XHRcdFx0bWFwSW5zdGFuY2UucHV0KHByb3BlcnR5LCBwcm9wZXJ0aWVzW3Byb3BlcnR5XSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGNvbnN0IHN0YXRlID0gQ21pc0ZhY2FkZS5nZXRWZXJzaW9uaW5nU3RhdGUodmVyc2lvbmluZ1N0YXRlKTtcblxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRjb25zdCBuYXRpdmUgPSB0aGlzLm5hdGl2ZS5jcmVhdGVEb2N1bWVudChtYXBJbnN0YW5jZSwgY29udGVudFN0cmVhbS5uYXRpdmUsIHN0YXRlKTtcblx0XHRyZXR1cm4gbmV3IERvY3VtZW50KG5hdGl2ZSwgbnVsbCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY2hpbGRyZW4gb2YgdGhpcyBmb2xkZXIuXG5cdCAqIEByZXR1cm5zIEEgbGlzdCBvZiBnZW5lcmljIHtAbGluayBDbWlzT2JqZWN0fSB3cmFwcGVycyBmb3IgdGhlIGNoaWxkcmVuLlxuXHQgKiBAdGhyb3dzIEVycm9yIGlmIHJlYWQgYWNjZXNzIGlzIG5vdCBhbGxvd2VkLlxuXHQgKi9cblx0cHVibGljIGdldENoaWxkcmVuKCk6IENtaXNPYmplY3RbXSB7XG5cdFx0Y29uc3QgYWxsb3dlZCA9IENtaXNGYWNhZGUuaXNBbGxvd2VkKHRoaXMuZ2V0UGF0aCgpLCBDbWlzLk1FVEhPRF9SRUFEKTtcblx0XHRpZiAoIWFsbG93ZWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIlJlYWQgYWNjZXNzIG5vdCBhbGxvd2VkIG9uOiBcIiArIHRoaXMuZ2V0UGF0aCgpKTtcblx0XHR9XG5cdFx0Y29uc3QgY2hpbGRyZW4gPSBbXTtcblx0XHRjb25zdCBjaGlsZHJlbkluc3RhbmNlID0gdGhpcy5uYXRpdmUuZ2V0Q2hpbGRyZW4oKTtcblx0XHRjb25zdCBjaGlsZHJlbkluc3RhbmNlSXRlcmF0b3IgPSBjaGlsZHJlbkluc3RhbmNlLml0ZXJhdG9yKCk7XG5cdFx0d2hpbGUgKGNoaWxkcmVuSW5zdGFuY2VJdGVyYXRvci5oYXNOZXh0KCkpIHtcblx0XHRcdGNvbnN0IGNtaXNPYmplY3RJbnN0YW5jZSA9IGNoaWxkcmVuSW5zdGFuY2VJdGVyYXRvci5uZXh0KCk7XG5cdFx0XHRjb25zdCBjbWlzT2JqZWN0ID0gbmV3IENtaXNPYmplY3QoY21pc09iamVjdEluc3RhbmNlKTtcblx0XHRcdGNoaWxkcmVuLnB1c2goY21pc09iamVjdCk7XG5cdFx0fVxuXHRcdHJldHVybiBjaGlsZHJlbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBwYXRoIG9mIHRoZSBmb2xkZXIuXG5cdCAqIEByZXR1cm5zIFRoZSBmb2xkZXIgcGF0aC5cblx0ICovXG5cdHB1YmxpYyBnZXRQYXRoKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMucGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgdGhpcyBmb2xkZXIgaXMgdGhlIHJvb3QgZm9sZGVyIG9mIHRoZSByZXBvc2l0b3J5LlxuXHQgKiBAcmV0dXJucyBUcnVlIGlmIGl0IGlzIHRoZSByb290IGZvbGRlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgKi9cblx0cHVibGljIGlzUm9vdEZvbGRlcigpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuaXNSb290Rm9sZGVyKCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgcGFyZW50IGZvbGRlciBvZiB0aGlzIGZvbGRlci5cblx0ICogQHJldHVybnMgVGhlIHBhcmVudCB7QGxpbmsgRm9sZGVyfSBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0Rm9sZGVyUGFyZW50KCk6IEZvbGRlciB7XG5cdFx0Y29uc3QgbmF0aXZlID0gdGhpcy5uYXRpdmUuZ2V0Rm9sZGVyUGFyZW50KCk7XG5cdFx0cmV0dXJuIG5ldyBGb2xkZXIobmF0aXZlLCBudWxsKTtcblx0fTtcblxuXHQvKipcblx0ICogRGVsZXRlcyB0aGlzIGZvbGRlciAobXVzdCBiZSBlbXB0eSB0byBzdWNjZWVkKS5cblx0ICogQHRocm93cyBFcnJvciBpZiB3cml0ZSBhY2Nlc3MgaXMgbm90IGFsbG93ZWQuXG5cdCAqL1xuXHRwdWJsaWMgZGVsZXRlKCk6IHZvaWQge1xuXHRcdGNvbnN0IGFsbG93ZWQgPSBDbWlzRmFjYWRlLmlzQWxsb3dlZCh0aGlzLmdldFBhdGgoKSwgQ21pcy5NRVRIT0RfV1JJVEUpO1xuXHRcdGlmICghYWxsb3dlZCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiV3JpdGUgYWNjZXNzIG5vdCBhbGxvd2VkIG9uOiBcIiArIHRoaXMuZ2V0UGF0aCgpKTtcblx0XHR9XG5cdFx0dGhpcy5uYXRpdmUuZGVsZXRlKCk7XG5cdH07XG5cblx0LyoqXG5cdCAqIFJlbmFtZXMgdGhpcyBmb2xkZXIuXG5cdCAqIEBwYXJhbSBuZXdOYW1lIFRoZSBuZXcgbmFtZSBmb3IgdGhlIGZvbGRlci5cblx0ICogQHRocm93cyBFcnJvciBpZiB3cml0ZSBhY2Nlc3MgaXMgbm90IGFsbG93ZWQuXG5cdCAqL1xuXHRwdWJsaWMgcmVuYW1lKG5ld05hbWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IGFsbG93ZWQgPSBDbWlzRmFjYWRlLmlzQWxsb3dlZCh0aGlzLmdldFBhdGgoKSwgQ21pcy5NRVRIT0RfV1JJVEUpO1xuXHRcdGlmICghYWxsb3dlZCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiV3JpdGUgYWNjZXNzIG5vdCBhbGxvd2VkIG9uOiBcIiArIHRoaXMuZ2V0UGF0aCgpKTtcblx0XHR9XG5cdFx0dGhpcy5uYXRpdmUucmVuYW1lKG5ld05hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlbGV0ZXMgdGhpcyBmb2xkZXIgYW5kIGFsbCBpdHMgY29udGVudHMgcmVjdXJzaXZlbHkuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgd3JpdGUgYWNjZXNzIGlzIG5vdCBhbGxvd2VkLlxuXHQgKi9cblx0cHVibGljIGRlbGV0ZVRyZWUoKTogdm9pZCB7XG5cdFx0Y29uc3QgYWxsb3dlZCA9IENtaXNGYWNhZGUuaXNBbGxvd2VkKHRoaXMuZ2V0UGF0aCgpLCBDbWlzLk1FVEhPRF9XUklURSk7XG5cdFx0aWYgKCFhbGxvd2VkKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJXcml0ZSBhY2Nlc3Mgbm90IGFsbG93ZWQgb246IFwiICsgdGhpcy5nZXRQYXRoKCkpO1xuXHRcdH1cblx0XHRjb25zdCB1bmlmaWVkT2JqZWN0RGVsZXRlID0gQ21pc0ZhY2FkZS5nZXRVbmlmaWVkT2JqZWN0RGVsZXRlKCk7XG5cdFx0dGhpcy5uYXRpdmUuZGVsZXRlVHJlZSh0cnVlLCB1bmlmaWVkT2JqZWN0RGVsZXRlLCB0cnVlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSB0eXBlIGRlZmluaXRpb24gb2YgdGhlIGZvbGRlci5cblx0ICogQHJldHVybnMgVGhlIGZvbGRlcidzIHtAbGluayBUeXBlRGVmaW5pdGlvbn0uXG5cdCAqL1xuXHRwdWJsaWMgZ2V0VHlwZSgpOiBUeXBlRGVmaW5pdGlvbiB7XG5cdFx0Y29uc3QgbmF0aXZlID0gdGhpcy5uYXRpdmUuZ2V0VHlwZSgpO1xuXHRcdHJldHVybiBuZXcgVHlwZURlZmluaXRpb24obmF0aXZlKTtcblx0fVxufVxuXG4vKipcbiAqIENtaXNPYmplY3Qgb2JqZWN0XG4gKiAqIEEgZ2VuZXJpYyB3cmFwcGVyIGZvciBDTUlTIG9iamVjdHMsIHVzZWQgcHJpbWFyaWx5IGZvciBjaGlsZHJlbiBsaXN0cy5cbiAqL1xuY2xhc3MgQ21pc09iamVjdCB7XG5cblx0cHJpdmF0ZSByZWFkb25seSBuYXRpdmU6IGFueTtcblxuXHRjb25zdHJ1Y3RvcihuYXRpdmU6IGFueSkge1xuXHRcdHRoaXMubmF0aXZlID0gbmF0aXZlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBvYmplY3QuXG5cdCAqIEByZXR1cm5zIFRoZSBvYmplY3QgSUQuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0SWQoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0SWQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBuYW1lIG9mIHRoZSBvYmplY3QuXG5cdCAqIEByZXR1cm5zIFRoZSBvYmplY3QgbmFtZS5cblx0ICovXG5cdHB1YmxpYyBnZXROYW1lKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldE5hbWUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBwYXRoIG9mIHRoZSBDTUlTIG9iamVjdC4gSGFuZGxlcyBkaWZmZXJlbmNlcyBpbiBuYXRpdmUgQ01JUyBpbXBsZW1lbnRhdGlvbnMuXG5cdCAqIEByZXR1cm5zIFRoZSBvYmplY3QgcGF0aC5cblx0ICogQHRocm93cyBFcnJvciBpZiB0aGUgcGF0aCBjYW5ub3QgYmUgZGV0ZXJtaW5lZC5cblx0ICovXG5cdHB1YmxpYyBnZXRQYXRoKCk6IHN0cmluZyB7XG5cdFx0Ly90aGlzIGlzIGNhdXNlZCBieSBoYXZpbmcgZGlmZmVyZW50IHVuZGVybHlpbmcgbmF0aXZlIG9iamVjdHMgaW4gZGlmZmVyZW50IGVudmlyb25tZW50cy5cblx0XHRpZiAodGhpcy5uYXRpdmUuZ2V0UGF0aCkge1xuXHRcdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldFBhdGgoKTtcblx0XHR9XG5cblx0XHQvL0FwYWNoZSBDaGVtaXN0cnkgQ21pc09iamVjdCBoYXMgbm8gZ2V0UGF0aCgpIGJ1dCBnZXRQYXRocygpIC0gaHR0cHM6Ly9jaGVtaXN0cnkuYXBhY2hlLm9yZy9kb2NzL2NtaXMtc2FtcGxlcy9zYW1wbGVzL3JldHJpZXZlLW9iamVjdHMvaW5kZXguaHRtbFxuXHRcdGlmICh0aGlzLm5hdGl2ZS5nZXRQYXRocykge1xuXHRcdFx0cmV0dXJuIHRoaXMubmF0aXZlLmdldFBhdGhzKClbMF07XG5cdFx0fVxuXG5cdFx0dGhyb3cgbmV3IEVycm9yKGBQYXRoIG5vdCBmb3VuZCBmb3IgQ21pc09iamVjdCB3aXRoIGlkICR7dGhpcy5nZXRJZCgpfWApO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHR5cGUgZGVmaW5pdGlvbiBvZiB0aGUgb2JqZWN0LlxuXHQgKiBAcmV0dXJucyBUaGUgb2JqZWN0J3Mge0BsaW5rIFR5cGVEZWZpbml0aW9ufS5cblx0ICovXG5cdHB1YmxpYyBnZXRUeXBlKCk6IFR5cGVEZWZpbml0aW9uIHtcblx0XHRjb25zdCBuYXRpdmUgPSB0aGlzLm5hdGl2ZS5nZXRUeXBlKCk7XG5cdFx0cmV0dXJuIG5ldyBUeXBlRGVmaW5pdGlvbihuYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERlbGV0ZXMgdGhlIENNSVMgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGRlbGV0ZSgpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5kZWxldGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW5hbWVzIHRoZSBDTUlTIG9iamVjdC5cblx0ICogQHBhcmFtIG5ld05hbWUgVGhlIG5ldyBuYW1lIGZvciB0aGUgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHJlbmFtZShuZXdOYW1lOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLm5hdGl2ZS5yZW5hbWUobmV3TmFtZSk7XG5cdH1cblxufVxuXG4vKipcbiAqIE9iamVjdEZhY3Rvcnkgb2JqZWN0XG4gKiAqIFByb3ZpZGVzIG1ldGhvZHMgdG8gY3JlYXRlIGNvbnRlbnQgc3RyZWFtcy5cbiAqL1xuY2xhc3MgT2JqZWN0RmFjdG9yeSB7XG5cblx0cHJpdmF0ZSByZWFkb25seSBuYXRpdmU6IGFueTtcblxuXHRjb25zdHJ1Y3RvcihuYXRpdmU6IGFueSkge1xuXHRcdHRoaXMubmF0aXZlID0gbmF0aXZlO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgY29udGVudCBzdHJlYW0gaW5zdGFuY2UgdGhhdCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgb3IgdXBkYXRlIGRvY3VtZW50IGNvbnRlbnQuXG5cdCAqIEBwYXJhbSBmaWxlbmFtZSBUaGUgbmFtZSBvZiB0aGUgZmlsZS5cblx0ICogQHBhcmFtIGxlbmd0aCBUaGUgc2l6ZSBvZiB0aGUgY29udGVudCBzdHJlYW0gaW4gYnl0ZXMuXG5cdCAqIEBwYXJhbSBtaW1ldHlwZSBUaGUgTUlNRSB0eXBlIG9mIHRoZSBjb250ZW50LlxuXHQgKiBAcGFyYW0gaW5wdXRTdHJlYW0gVGhlIGlucHV0IHN0cmVhbSBjb250YWluaW5nIHRoZSBkYXRhLlxuXHQgKiBAcmV0dXJucyBBIG5ldyB7QGxpbmsgQ29udGVudFN0cmVhbX0gb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGNyZWF0ZUNvbnRlbnRTdHJlYW0oZmlsZW5hbWU6IHN0cmluZywgbGVuZ3RoOiBudW1iZXIsIG1pbWV0eXBlOiBzdHJpbmcsIGlucHV0U3RyZWFtOiBzdHJlYW1zLklucHV0U3RyZWFtKTogQ29udGVudFN0cmVhbSB7XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGNvbnN0IG5hdGl2ZSA9IHRoaXMubmF0aXZlLmNyZWF0ZUNvbnRlbnRTdHJlYW0oZmlsZW5hbWUsIGxlbmd0aCwgbWltZXR5cGUsIGlucHV0U3RyZWFtLm5hdGl2ZSk7XG5cdFx0cmV0dXJuIG5ldyBDb250ZW50U3RyZWFtKG5hdGl2ZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBDb250ZW50U3RyZWFtIG9iamVjdFxuICogKiBSZXByZXNlbnRzIHRoZSBiaW5hcnkgY29udGVudCBzdHJlYW0gb2YgYSBDTUlTIERvY3VtZW50LlxuICovXG5jbGFzcyBDb250ZW50U3RyZWFtIHtcblxuXHRwcml2YXRlIHJlYWRvbmx5IG5hdGl2ZTogYW55O1xuXG5cdGNvbnN0cnVjdG9yKG5hdGl2ZTogYW55KSB7XG5cdFx0dGhpcy5uYXRpdmUgPSBuYXRpdmU7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgSmF2YS1iYWNrZWQgaW5wdXQgc3RyZWFtIGZvciByZWFkaW5nIHRoZSBjb250ZW50LlxuXHQgKiBAcmV0dXJucyBBbiB7QGxpbmsgc3RyZWFtcy5JbnB1dFN0cmVhbX0gd3JhcHBlci5cblx0ICovXG5cdHB1YmxpYyBnZXRTdHJlYW0oKTogc3RyZWFtcy5JbnB1dFN0cmVhbSB7XG5cdFx0Y29uc3QgbmF0aXZlID0gdGhpcy5uYXRpdmUuZ2V0U3RyZWFtKCk7XG5cdFx0cmV0dXJuIG5ldyBzdHJlYW1zLklucHV0U3RyZWFtKG5hdGl2ZSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgTUlNRSB0eXBlIG9mIHRoZSBjb250ZW50IHN0cmVhbS5cblx0ICogQHJldHVybnMgVGhlIE1JTUUgdHlwZSBzdHJpbmcuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0TWltZVR5cGUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0TWltZVR5cGUoKTtcblx0fVxufVxuXG4vKipcbiAqIERvY3VtZW50IG9iamVjdFxuICogKiBSZXByZXNlbnRzIGEgQ01JUyBkb2N1bWVudCBvYmplY3QsIGFsbG93aW5nIG9wZXJhdGlvbnMgbGlrZSByZWFkaW5nIGNvbnRlbnQsIGRlbGV0aW5nLCBhbmQgcmVuYW1pbmcuXG4gKi9cbmV4cG9ydCBjbGFzcyBEb2N1bWVudCB7XG5cblx0cHJpdmF0ZSByZWFkb25seSBuYXRpdmU6IGFueTtcblx0cHJpdmF0ZSBwYXRoOiBzdHJpbmc7XG5cblx0Y29uc3RydWN0b3IobmF0aXZlOiBhbnksIHBhdGg6IHN0cmluZykge1xuXHRcdHRoaXMubmF0aXZlID0gbmF0aXZlO1xuXHRcdHRoaXMucGF0aCA9IHBhdGg7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGRvY3VtZW50LlxuXHQgKiBAcmV0dXJucyBUaGUgZG9jdW1lbnQgSUQuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0SWQoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5uYXRpdmUuZ2V0SWQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBuYW1lIG9mIHRoZSBkb2N1bWVudC5cblx0ICogQHJldHVybnMgVGhlIGRvY3VtZW50IG5hbWUuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0TmFtZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXROYW1lKCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgdHlwZSBkZWZpbml0aW9uIG9mIHRoZSBkb2N1bWVudC5cblx0ICogQHJldHVybnMgVGhlIGRvY3VtZW50J3Mge0BsaW5rIFR5cGVEZWZpbml0aW9ufS5cblx0ICovXG5cdHB1YmxpYyBnZXRUeXBlKCk6IFR5cGVEZWZpbml0aW9uIHtcblx0XHRjb25zdCBuYXRpdmUgPSB0aGlzLm5hdGl2ZS5nZXRUeXBlKCk7XG5cdFx0cmV0dXJuIG5ldyBUeXBlRGVmaW5pdGlvbihuYXRpdmUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHBhdGggb2YgdGhlIGRvY3VtZW50LlxuXHQgKiBAcmV0dXJucyBUaGUgZG9jdW1lbnQgcGF0aC5cblx0ICovXG5cdHB1YmxpYyBnZXRQYXRoKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMucGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWxldGVzIHRoaXMgZG9jdW1lbnQuXG5cdCAqIEB0aHJvd3MgRXJyb3IgaWYgd3JpdGUgYWNjZXNzIGlzIG5vdCBhbGxvd2VkLlxuXHQgKi9cblx0cHVibGljIGRlbGV0ZSgpOiB2b2lkIHtcblx0XHRjb25zdCBhbGxvd2VkID0gQ21pc0ZhY2FkZS5pc0FsbG93ZWQodGhpcy5nZXRQYXRoKCksIENtaXMuTUVUSE9EX1dSSVRFKTtcblx0XHRpZiAoIWFsbG93ZWQpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIldyaXRlIGFjY2VzcyBub3QgYWxsb3dlZCBvbjogXCIgKyB0aGlzLmdldFBhdGgoKSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5kZWxldGUodHJ1ZSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgYmluYXJ5IGNvbnRlbnQgc3RyZWFtIG9mIHRoZSBkb2N1bWVudC5cblx0ICogQHJldHVybnMgVGhlIHtAbGluayBDb250ZW50U3RyZWFtfSBvYmplY3QsIG9yIGBudWxsYCBpZiB0aGUgZG9jdW1lbnQgaGFzIG5vIGNvbnRlbnQuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0Q29udGVudFN0cmVhbSgpOiBDb250ZW50U3RyZWFtIHwgbnVsbCB7XG5cdFx0Y29uc3QgbmF0aXZlID0gdGhpcy5uYXRpdmUuZ2V0Q29udGVudFN0cmVhbSgpO1xuXHRcdGlmIChuYXRpdmUgIT09IG51bGwpIHtcblx0XHRcdHJldHVybiBuZXcgQ29udGVudFN0cmVhbShuYXRpdmUpO1xuXHRcdH1cblx0XHRyZXR1cm4gbnVsbDtcblx0fTtcblxuXHQvKipcblx0ICogR2V0cyB0aGUgc2l6ZSBvZiB0aGUgZG9jdW1lbnQncyBjb250ZW50IHN0cmVhbSBpbiBieXRlcy5cblx0ICogQHJldHVybnMgVGhlIHNpemUgaW4gYnl0ZXMuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0U2l6ZSgpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRTaXplKCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVuYW1lcyB0aGlzIGRvY3VtZW50LlxuXHQgKiBAcGFyYW0gbmV3TmFtZSBUaGUgbmV3IG5hbWUgZm9yIHRoZSBkb2N1bWVudC5cblx0ICogQHRocm93cyBFcnJvciBpZiB3cml0ZSBhY2Nlc3MgaXMgbm90IGFsbG93ZWQuXG5cdCAqL1xuXHRwdWJsaWMgcmVuYW1lKG5ld05hbWU6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IGFsbG93ZWQgPSBDbWlzRmFjYWRlLmlzQWxsb3dlZCh0aGlzLmdldFBhdGgoKSwgQ21pcy5NRVRIT0RfV1JJVEUpO1xuXHRcdGlmICghYWxsb3dlZCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiV3JpdGUgYWNjZXNzIG5vdCBhbGxvd2VkIG9uOiBcIiArIHRoaXMuZ2V0UGF0aCgpKTtcblx0XHR9XG5cdFx0dGhpcy5uYXRpdmUucmVuYW1lKG5ld05hbWUpO1xuXHR9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgZGVmaW5pdGlvbiBvZiBhIENNSVMgb2JqZWN0IHR5cGUgKGUuZy4sIGNtaXM6ZG9jdW1lbnQsIGNtaXM6Zm9sZGVyKS5cbiAqL1xuY2xhc3MgVHlwZURlZmluaXRpb24ge1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgbmF0aXZlOiBhbnk7XG5cblx0Y29uc3RydWN0b3IobmF0aXZlOiBhbnkpIHtcblx0XHR0aGlzLm5hdGl2ZSA9IG5hdGl2ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSB1bmlxdWUgSUQgb2YgdGhlIG9iamVjdCB0eXBlIChlLmcuLCAnY21pczpkb2N1bWVudCcpLlxuXHQgKiBAcmV0dXJucyBUaGUgdHlwZSBJRC5cblx0ICovXG5cdHB1YmxpYyBnZXRJZCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLm5hdGl2ZS5nZXRJZCgpO1xuXHR9XG59XG5cbi8vIEB0cy1pZ25vcmVcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykge1xuXHQvLyBAdHMtaWdub3JlXG5cdG1vZHVsZS5leHBvcnRzID0gQ21pcztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsY0FBeUI7QUFDekIsTUFBTSxhQUFhLEtBQUssS0FBSyxxREFBcUQ7QUFDbEYsTUFBTSxPQUFPLEtBQUssS0FBSyxzQkFBc0I7QUFDN0MsTUFBTSxVQUFVLEtBQUssS0FBSyxtQkFBbUI7QUFFdEMsTUFBTSxLQUFLO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1qQixPQUF1QixjQUFjO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJckMsT0FBdUIsZUFBZTtBQUFBO0FBQUE7QUFBQSxFQUl0QyxPQUF1QixPQUFPO0FBQUE7QUFBQSxFQUU5QixPQUF1QixZQUFZO0FBQUE7QUFBQSxFQUVuQyxPQUF1QixpQkFBaUI7QUFBQTtBQUFBLEVBRXhDLE9BQXVCLGVBQWU7QUFBQTtBQUFBLEVBRXRDLE9BQXVCLGFBQWE7QUFBQTtBQUFBLEVBRXBDLE9BQXVCLGdCQUFnQjtBQUFBO0FBQUEsRUFFdkMsT0FBdUIsbUJBQW1CO0FBQUE7QUFBQSxFQUUxQyxPQUF1Qix5QkFBeUI7QUFBQTtBQUFBLEVBRWhELE9BQXVCLGVBQWU7QUFBQTtBQUFBO0FBQUEsRUFJdEMsT0FBdUIsZUFBZTtBQUFBO0FBQUEsRUFFdEMsT0FBdUIsb0JBQW9CO0FBQUE7QUFBQSxFQUUzQyxPQUF1QixtQkFBbUI7QUFBQTtBQUFBLEVBRTFDLE9BQXVCLDBCQUEwQjtBQUFBO0FBQUEsRUFFakQsT0FB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
|