every-plugin 0.4.9 → 0.4.10
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/build/rspack/index.cjs +42 -4
- package/dist/build/rspack/index.mjs +42 -4
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/dist/package-DVINhZcr.mjs +149 -0
- package/dist/package-J60H0cK8.cjs +154 -0
- package/dist/runtime/index.cjs +2 -2
- package/dist/runtime/index.mjs +2 -2
- package/dist/{runtime-Daw9Tlz6.mjs → runtime-BShulKmh.mjs} +2 -2
- package/dist/{runtime-CWCl3EIz.cjs → runtime-Yfumucan.cjs} +2 -2
- package/dist/testing/index.cjs +2 -2
- package/dist/testing/index.mjs +2 -2
- package/package.json +1 -1
- package/dist/package-BwFfsvZZ.mjs +0 -149
- package/dist/package-CSi-6ikY.cjs +0 -154
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { t as __commonJS } from "./chunk-QQAxy9l9.mjs";
|
|
2
|
+
|
|
3
|
+
//#region package.json
|
|
4
|
+
var require_package = /* @__PURE__ */ __commonJS({ "package.json": ((exports, module) => {
|
|
5
|
+
module.exports = {
|
|
6
|
+
"name": "every-plugin",
|
|
7
|
+
"version": "0.4.10",
|
|
8
|
+
"type": "module",
|
|
9
|
+
"main": "./dist/index.cjs",
|
|
10
|
+
"module": "./dist/index.mjs",
|
|
11
|
+
"types": "./dist/index.d.mts",
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": {
|
|
15
|
+
"import": "./dist/index.d.mts",
|
|
16
|
+
"require": "./dist/index.d.cts"
|
|
17
|
+
},
|
|
18
|
+
"import": "./dist/index.mjs",
|
|
19
|
+
"require": "./dist/index.cjs"
|
|
20
|
+
},
|
|
21
|
+
"./runtime": {
|
|
22
|
+
"types": {
|
|
23
|
+
"import": "./dist/runtime/index.d.mts",
|
|
24
|
+
"require": "./dist/runtime/index.d.cts"
|
|
25
|
+
},
|
|
26
|
+
"import": "./dist/runtime/index.mjs",
|
|
27
|
+
"require": "./dist/runtime/index.cjs"
|
|
28
|
+
},
|
|
29
|
+
"./testing": {
|
|
30
|
+
"types": {
|
|
31
|
+
"import": "./dist/testing/index.d.mts",
|
|
32
|
+
"require": "./dist/testing/index.d.cts"
|
|
33
|
+
},
|
|
34
|
+
"import": "./dist/testing/index.mjs",
|
|
35
|
+
"require": "./dist/testing/index.cjs"
|
|
36
|
+
},
|
|
37
|
+
"./normalize": {
|
|
38
|
+
"types": {
|
|
39
|
+
"import": "./dist/runtime/services/normalize.d.mts",
|
|
40
|
+
"require": "./dist/runtime/services/normalize.d.cts"
|
|
41
|
+
},
|
|
42
|
+
"import": "./dist/runtime/services/normalize.mjs",
|
|
43
|
+
"require": "./dist/runtime/services/normalize.cjs"
|
|
44
|
+
},
|
|
45
|
+
"./effect": {
|
|
46
|
+
"types": {
|
|
47
|
+
"import": "./dist/effect.d.mts",
|
|
48
|
+
"require": "./dist/effect.d.cts"
|
|
49
|
+
},
|
|
50
|
+
"import": "./dist/effect.mjs",
|
|
51
|
+
"require": "./dist/effect.cjs"
|
|
52
|
+
},
|
|
53
|
+
"./zod": {
|
|
54
|
+
"types": {
|
|
55
|
+
"import": "./dist/zod.d.mts",
|
|
56
|
+
"require": "./dist/zod.d.cts"
|
|
57
|
+
},
|
|
58
|
+
"import": "./dist/zod.mjs",
|
|
59
|
+
"require": "./dist/zod.cjs"
|
|
60
|
+
},
|
|
61
|
+
"./orpc": {
|
|
62
|
+
"types": {
|
|
63
|
+
"import": "./dist/orpc.d.mts",
|
|
64
|
+
"require": "./dist/orpc.d.cts"
|
|
65
|
+
},
|
|
66
|
+
"import": "./dist/orpc.mjs",
|
|
67
|
+
"require": "./dist/orpc.cjs"
|
|
68
|
+
},
|
|
69
|
+
"./errors": {
|
|
70
|
+
"types": {
|
|
71
|
+
"import": "./dist/errors.d.mts",
|
|
72
|
+
"require": "./dist/errors.d.cts"
|
|
73
|
+
},
|
|
74
|
+
"import": "./dist/errors.mjs",
|
|
75
|
+
"require": "./dist/errors.cjs"
|
|
76
|
+
},
|
|
77
|
+
"./build/rspack": {
|
|
78
|
+
"types": {
|
|
79
|
+
"import": "./dist/build/rspack/index.d.mts",
|
|
80
|
+
"require": "./dist/build/rspack/index.d.cts"
|
|
81
|
+
},
|
|
82
|
+
"import": "./dist/build/rspack/index.mjs",
|
|
83
|
+
"require": "./dist/build/rspack/index.cjs"
|
|
84
|
+
},
|
|
85
|
+
"./package.json": "./package.json"
|
|
86
|
+
},
|
|
87
|
+
"files": ["dist"],
|
|
88
|
+
"scripts": {
|
|
89
|
+
"build": "tsdown",
|
|
90
|
+
"build:test": "cd tests/fixtures/test-plugin && bun run build",
|
|
91
|
+
"test": "vitest run --config vitest.config.ts",
|
|
92
|
+
"test:unit": "vitest run --config vitest.config.ts",
|
|
93
|
+
"test:integration": "bun run build:test && vitest run --config vitest.integration.config.ts",
|
|
94
|
+
"test:all": "bun run test:unit && bun run test:integration",
|
|
95
|
+
"test:watch": "vitest --config vitest.config.ts --watch",
|
|
96
|
+
"typecheck": "tsc --noEmit"
|
|
97
|
+
},
|
|
98
|
+
"peerDependencies": {
|
|
99
|
+
"@rspack/core": "*",
|
|
100
|
+
"typescript": "^5.6.0"
|
|
101
|
+
},
|
|
102
|
+
"devDependencies": {
|
|
103
|
+
"@effect/language-service": "^0.38.4",
|
|
104
|
+
"@effect/vitest": "^0.25.1",
|
|
105
|
+
"@orpc/client": "^1.10.0",
|
|
106
|
+
"@orpc/openapi": "^1.10.4",
|
|
107
|
+
"@orpc/zod": "^1.10.0",
|
|
108
|
+
"@rspack/cli": "^1.5.8",
|
|
109
|
+
"@types/bun": "^1.3.0",
|
|
110
|
+
"@types/node": "^24.9.0",
|
|
111
|
+
"@vitest/ui": "3.2.4",
|
|
112
|
+
"bun-types": "^1.3.0",
|
|
113
|
+
"sirv": "^3.0.2",
|
|
114
|
+
"vite-tsconfig-paths": "^5.1.4",
|
|
115
|
+
"vitest": "^3.2.4"
|
|
116
|
+
},
|
|
117
|
+
"dependencies": {
|
|
118
|
+
"@better-fetch/fetch": "^1.1.18",
|
|
119
|
+
"@module-federation/enhanced": "^0.19.1",
|
|
120
|
+
"@module-federation/node": "^2.7.15",
|
|
121
|
+
"@module-federation/runtime-core": "^0.19.1",
|
|
122
|
+
"@orpc/contract": "^1.10.0",
|
|
123
|
+
"@orpc/experimental-publisher": "^1.10.0",
|
|
124
|
+
"@orpc/server": "^1.10.0",
|
|
125
|
+
"effect": "3.18.1",
|
|
126
|
+
"zod": "4.1.5"
|
|
127
|
+
},
|
|
128
|
+
"keywords": [
|
|
129
|
+
"plugin",
|
|
130
|
+
"module-federation",
|
|
131
|
+
"orpc",
|
|
132
|
+
"zod",
|
|
133
|
+
"typescript"
|
|
134
|
+
],
|
|
135
|
+
"author": "plugin.every.near",
|
|
136
|
+
"license": "MIT",
|
|
137
|
+
"repository": {
|
|
138
|
+
"type": "git",
|
|
139
|
+
"url": "https://github.com/near-everything/every-plugin.git"
|
|
140
|
+
},
|
|
141
|
+
"bugs": { "url": "https://github.com/near-everything/every-plugin/issues" },
|
|
142
|
+
"homepage": "https://plugin.everything.dev",
|
|
143
|
+
"workspaces": ["tests/fixtures/*"]
|
|
144
|
+
};
|
|
145
|
+
}) });
|
|
146
|
+
|
|
147
|
+
//#endregion
|
|
148
|
+
export { require_package as t };
|
|
149
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS1EVklOaFpjci5tanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vcGFja2FnZS5qc29uIl0sInNvdXJjZXNDb250ZW50IjpbIntcblx0XCJuYW1lXCI6IFwiZXZlcnktcGx1Z2luXCIsXG5cdFwidmVyc2lvblwiOiBcIjAuNC4xMFwiLFxuXHRcInR5cGVcIjogXCJtb2R1bGVcIixcblx0XCJtYWluXCI6IFwiLi9kaXN0L2luZGV4LmNqc1wiLFxuXHRcIm1vZHVsZVwiOiBcIi4vZGlzdC9pbmRleC5tanNcIixcblx0XCJ0eXBlc1wiOiBcIi4vZGlzdC9pbmRleC5kLm10c1wiLFxuXHRcImV4cG9ydHNcIjoge1xuXHRcdFwiLlwiOiB7XG5cdFx0XHRcInR5cGVzXCI6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvaW5kZXguZC5tdHNcIixcblx0XHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L2luZGV4LmQuY3RzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC9pbmRleC5tanNcIixcblx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9pbmRleC5janNcIlxuXHRcdH0sXG5cdFx0XCIuL3J1bnRpbWVcIjoge1xuXHRcdFx0XCJ0eXBlc1wiOiB7XG5cdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L3J1bnRpbWUvaW5kZXguZC5tdHNcIixcblx0XHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L3J1bnRpbWUvaW5kZXguZC5jdHNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L3J1bnRpbWUvaW5kZXgubWpzXCIsXG5cdFx0XHRcInJlcXVpcmVcIjogXCIuL2Rpc3QvcnVudGltZS9pbmRleC5janNcIlxuXHRcdH0sXG5cdFx0XCIuL3Rlc3RpbmdcIjoge1xuXHRcdFx0XCJ0eXBlc1wiOiB7XG5cdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L3Rlc3RpbmcvaW5kZXguZC5tdHNcIixcblx0XHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L3Rlc3RpbmcvaW5kZXguZC5jdHNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L3Rlc3RpbmcvaW5kZXgubWpzXCIsXG5cdFx0XHRcInJlcXVpcmVcIjogXCIuL2Rpc3QvdGVzdGluZy9pbmRleC5janNcIlxuXHRcdH0sXG5cdFx0XCIuL25vcm1hbGl6ZVwiOiB7XG5cdFx0XHRcInR5cGVzXCI6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvcnVudGltZS9zZXJ2aWNlcy9ub3JtYWxpemUuZC5tdHNcIixcblx0XHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L3J1bnRpbWUvc2VydmljZXMvbm9ybWFsaXplLmQuY3RzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC9ydW50aW1lL3NlcnZpY2VzL25vcm1hbGl6ZS5tanNcIixcblx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9ydW50aW1lL3NlcnZpY2VzL25vcm1hbGl6ZS5janNcIlxuXHRcdH0sXG5cdFx0XCIuL2VmZmVjdFwiOiB7XG5cdFx0XHRcInR5cGVzXCI6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvZWZmZWN0LmQubXRzXCIsXG5cdFx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9lZmZlY3QuZC5jdHNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L2VmZmVjdC5tanNcIixcblx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9lZmZlY3QuY2pzXCJcblx0XHR9LFxuXHRcdFwiLi96b2RcIjoge1xuXHRcdFx0XCJ0eXBlc1wiOiB7XG5cdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L3pvZC5kLm10c1wiLFxuXHRcdFx0XHRcInJlcXVpcmVcIjogXCIuL2Rpc3Qvem9kLmQuY3RzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC96b2QubWpzXCIsXG5cdFx0XHRcInJlcXVpcmVcIjogXCIuL2Rpc3Qvem9kLmNqc1wiXG5cdFx0fSxcblx0XHRcIi4vb3JwY1wiOiB7XG5cdFx0XHRcInR5cGVzXCI6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3Qvb3JwYy5kLm10c1wiLFxuXHRcdFx0XHRcInJlcXVpcmVcIjogXCIuL2Rpc3Qvb3JwYy5kLmN0c1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3Qvb3JwYy5tanNcIixcblx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9vcnBjLmNqc1wiXG5cdFx0fSxcblx0XHRcIi4vZXJyb3JzXCI6IHtcblx0XHRcdFwidHlwZXNcIjoge1xuXHRcdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC9lcnJvcnMuZC5tdHNcIixcblx0XHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L2Vycm9ycy5kLmN0c1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvZXJyb3JzLm1qc1wiLFxuXHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L2Vycm9ycy5janNcIlxuXHRcdH0sXG5cdFx0XCIuL2J1aWxkL3JzcGFja1wiOiB7XG5cdFx0XHRcInR5cGVzXCI6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvYnVpbGQvcnNwYWNrL2luZGV4LmQubXRzXCIsXG5cdFx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9idWlsZC9yc3BhY2svaW5kZXguZC5jdHNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L2J1aWxkL3JzcGFjay9pbmRleC5tanNcIixcblx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9idWlsZC9yc3BhY2svaW5kZXguY2pzXCJcblx0XHR9LFxuXHRcdFwiLi9wYWNrYWdlLmpzb25cIjogXCIuL3BhY2thZ2UuanNvblwiXG5cdH0sXG5cdFwiZmlsZXNcIjogW1xuXHRcdFwiZGlzdFwiXG5cdF0sXG5cdFwic2NyaXB0c1wiOiB7XG5cdFx0XCJidWlsZFwiOiBcInRzZG93blwiLFxuXHRcdFwiYnVpbGQ6dGVzdFwiOiBcImNkIHRlc3RzL2ZpeHR1cmVzL3Rlc3QtcGx1Z2luICYmIGJ1biBydW4gYnVpbGRcIixcblx0XHRcInRlc3RcIjogXCJ2aXRlc3QgcnVuIC0tY29uZmlnIHZpdGVzdC5jb25maWcudHNcIixcblx0XHRcInRlc3Q6dW5pdFwiOiBcInZpdGVzdCBydW4gLS1jb25maWcgdml0ZXN0LmNvbmZpZy50c1wiLFxuXHRcdFwidGVzdDppbnRlZ3JhdGlvblwiOiBcImJ1biBydW4gYnVpbGQ6dGVzdCAmJiB2aXRlc3QgcnVuIC0tY29uZmlnIHZpdGVzdC5pbnRlZ3JhdGlvbi5jb25maWcudHNcIixcblx0XHRcInRlc3Q6YWxsXCI6IFwiYnVuIHJ1biB0ZXN0OnVuaXQgJiYgYnVuIHJ1biB0ZXN0OmludGVncmF0aW9uXCIsXG5cdFx0XCJ0ZXN0OndhdGNoXCI6IFwidml0ZXN0IC0tY29uZmlnIHZpdGVzdC5jb25maWcudHMgLS13YXRjaFwiLFxuXHRcdFwidHlwZWNoZWNrXCI6IFwidHNjIC0tbm9FbWl0XCJcblx0fSxcblx0XCJwZWVyRGVwZW5kZW5jaWVzXCI6IHtcblx0XHRcIkByc3BhY2svY29yZVwiOiBcIipcIixcblx0XHRcInR5cGVzY3JpcHRcIjogXCJeNS42LjBcIlxuXHR9LFxuXHRcImRldkRlcGVuZGVuY2llc1wiOiB7XG5cdFx0XCJAZWZmZWN0L2xhbmd1YWdlLXNlcnZpY2VcIjogXCJeMC4zOC40XCIsXG5cdFx0XCJAZWZmZWN0L3ZpdGVzdFwiOiBcIl4wLjI1LjFcIixcblx0XHRcIkBvcnBjL2NsaWVudFwiOiBcIl4xLjEwLjBcIixcblx0XHRcIkBvcnBjL29wZW5hcGlcIjogXCJeMS4xMC40XCIsXG5cdFx0XCJAb3JwYy96b2RcIjogXCJeMS4xMC4wXCIsXG5cdFx0XCJAcnNwYWNrL2NsaVwiOiBcIl4xLjUuOFwiLFxuXHRcdFwiQHR5cGVzL2J1blwiOiBcIl4xLjMuMFwiLFxuXHRcdFwiQHR5cGVzL25vZGVcIjogXCJeMjQuOS4wXCIsXG5cdFx0XCJAdml0ZXN0L3VpXCI6IFwiMy4yLjRcIixcblx0XHRcImJ1bi10eXBlc1wiOiBcIl4xLjMuMFwiLFxuXHRcdFwic2lydlwiOiBcIl4zLjAuMlwiLFxuXHRcdFwidml0ZS10c2NvbmZpZy1wYXRoc1wiOiBcIl41LjEuNFwiLFxuXHRcdFwidml0ZXN0XCI6IFwiXjMuMi40XCJcblx0fSxcblx0XCJkZXBlbmRlbmNpZXNcIjoge1xuXHRcdFwiQGJldHRlci1mZXRjaC9mZXRjaFwiOiBcIl4xLjEuMThcIixcblx0XHRcIkBtb2R1bGUtZmVkZXJhdGlvbi9lbmhhbmNlZFwiOiBcIl4wLjE5LjFcIixcblx0XHRcIkBtb2R1bGUtZmVkZXJhdGlvbi9ub2RlXCI6IFwiXjIuNy4xNVwiLFxuXHRcdFwiQG1vZHVsZS1mZWRlcmF0aW9uL3J1bnRpbWUtY29yZVwiOiBcIl4wLjE5LjFcIixcblx0XHRcIkBvcnBjL2NvbnRyYWN0XCI6IFwiXjEuMTAuMFwiLFxuXHRcdFwiQG9ycGMvZXhwZXJpbWVudGFsLXB1Ymxpc2hlclwiOiBcIl4xLjEwLjBcIixcblx0XHRcIkBvcnBjL3NlcnZlclwiOiBcIl4xLjEwLjBcIixcblx0XHRcImVmZmVjdFwiOiBcIjMuMTguMVwiLFxuXHRcdFwiem9kXCI6IFwiNC4xLjVcIlxuXHR9LFxuXHRcImtleXdvcmRzXCI6IFtcblx0XHRcInBsdWdpblwiLFxuXHRcdFwibW9kdWxlLWZlZGVyYXRpb25cIixcblx0XHRcIm9ycGNcIixcblx0XHRcInpvZFwiLFxuXHRcdFwidHlwZXNjcmlwdFwiXG5cdF0sXG5cdFwiYXV0aG9yXCI6IFwicGx1Z2luLmV2ZXJ5Lm5lYXJcIixcblx0XCJsaWNlbnNlXCI6IFwiTUlUXCIsXG5cdFwicmVwb3NpdG9yeVwiOiB7XG5cdFx0XCJ0eXBlXCI6IFwiZ2l0XCIsXG5cdFx0XCJ1cmxcIjogXCJodHRwczovL2dpdGh1Yi5jb20vbmVhci1ldmVyeXRoaW5nL2V2ZXJ5LXBsdWdpbi5naXRcIlxuXHR9LFxuXHRcImJ1Z3NcIjoge1xuXHRcdFwidXJsXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL25lYXItZXZlcnl0aGluZy9ldmVyeS1wbHVnaW4vaXNzdWVzXCJcblx0fSxcblx0XCJob21lcGFnZVwiOiBcImh0dHBzOi8vcGx1Z2luLmV2ZXJ5dGhpbmcuZGV2XCIsXG5cdFwid29ya3NwYWNlc1wiOiBbXG5cdFx0XCJ0ZXN0cy9maXh0dXJlcy8qXCJcblx0XVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O2tCQUFBO0VBQ0MsUUFBUTtFQUNSLFdBQVc7RUFDWCxRQUFRO0VBQ1IsUUFBUTtFQUNSLFVBQVU7RUFDVixTQUFTO0VBQ1QsV0FBVztHQUNWLEtBQUs7SUFDSixTQUFTO0tBQ1IsVUFBVTtLQUNWLFdBQVc7S0FDWDtJQUNELFVBQVU7SUFDVixXQUFXO0lBQ1g7R0FDRCxhQUFhO0lBQ1osU0FBUztLQUNSLFVBQVU7S0FDVixXQUFXO0tBQ1g7SUFDRCxVQUFVO0lBQ1YsV0FBVztJQUNYO0dBQ0QsYUFBYTtJQUNaLFNBQVM7S0FDUixVQUFVO0tBQ1YsV0FBVztLQUNYO0lBQ0QsVUFBVTtJQUNWLFdBQVc7SUFDWDtHQUNELGVBQWU7SUFDZCxTQUFTO0tBQ1IsVUFBVTtLQUNWLFdBQVc7S0FDWDtJQUNELFVBQVU7SUFDVixXQUFXO0lBQ1g7R0FDRCxZQUFZO0lBQ1gsU0FBUztLQUNSLFVBQVU7S0FDVixXQUFXO0tBQ1g7SUFDRCxVQUFVO0lBQ1YsV0FBVztJQUNYO0dBQ0QsU0FBUztJQUNSLFNBQVM7S0FDUixVQUFVO0tBQ1YsV0FBVztLQUNYO0lBQ0QsVUFBVTtJQUNWLFdBQVc7SUFDWDtHQUNELFVBQVU7SUFDVCxTQUFTO0tBQ1IsVUFBVTtLQUNWLFdBQVc7S0FDWDtJQUNELFVBQVU7SUFDVixXQUFXO0lBQ1g7R0FDRCxZQUFZO0lBQ1gsU0FBUztLQUNSLFVBQVU7S0FDVixXQUFXO0tBQ1g7SUFDRCxVQUFVO0lBQ1YsV0FBVztJQUNYO0dBQ0Qsa0JBQWtCO0lBQ2pCLFNBQVM7S0FDUixVQUFVO0tBQ1YsV0FBVztLQUNYO0lBQ0QsVUFBVTtJQUNWLFdBQVc7SUFDWDtHQUNELGtCQUFrQjtHQUNsQjtFQUNELFNBQVMsQ0FDUixPQUNBO0VBQ0QsV0FBVztHQUNWLFNBQVM7R0FDVCxjQUFjO0dBQ2QsUUFBUTtHQUNSLGFBQWE7R0FDYixvQkFBb0I7R0FDcEIsWUFBWTtHQUNaLGNBQWM7R0FDZCxhQUFhO0dBQ2I7RUFDRCxvQkFBb0I7R0FDbkIsZ0JBQWdCO0dBQ2hCLGNBQWM7R0FDZDtFQUNELG1CQUFtQjtHQUNsQiw0QkFBNEI7R0FDNUIsa0JBQWtCO0dBQ2xCLGdCQUFnQjtHQUNoQixpQkFBaUI7R0FDakIsYUFBYTtHQUNiLGVBQWU7R0FDZixjQUFjO0dBQ2QsZUFBZTtHQUNmLGNBQWM7R0FDZCxhQUFhO0dBQ2IsUUFBUTtHQUNSLHVCQUF1QjtHQUN2QixVQUFVO0dBQ1Y7RUFDRCxnQkFBZ0I7R0FDZix1QkFBdUI7R0FDdkIsK0JBQStCO0dBQy9CLDJCQUEyQjtHQUMzQixtQ0FBbUM7R0FDbkMsa0JBQWtCO0dBQ2xCLGdDQUFnQztHQUNoQyxnQkFBZ0I7R0FDaEIsVUFBVTtHQUNWLE9BQU87R0FDUDtFQUNELFlBQVk7R0FDWDtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0E7RUFDRCxVQUFVO0VBQ1YsV0FBVztFQUNYLGNBQWM7R0FDYixRQUFRO0dBQ1IsT0FBTztHQUNQO0VBQ0QsUUFBUSxFQUNQLE9BQU8sMERBQ1A7RUFDRCxZQUFZO0VBQ1osY0FBYyxDQUNiLG1CQUNBO0VBQ0QifQ==
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-zltIcp7o.cjs');
|
|
2
|
+
|
|
3
|
+
//#region package.json
|
|
4
|
+
var require_package = /* @__PURE__ */ require_chunk.__commonJS({ "package.json": ((exports, module) => {
|
|
5
|
+
module.exports = {
|
|
6
|
+
"name": "every-plugin",
|
|
7
|
+
"version": "0.4.10",
|
|
8
|
+
"type": "module",
|
|
9
|
+
"main": "./dist/index.cjs",
|
|
10
|
+
"module": "./dist/index.mjs",
|
|
11
|
+
"types": "./dist/index.d.mts",
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": {
|
|
15
|
+
"import": "./dist/index.d.mts",
|
|
16
|
+
"require": "./dist/index.d.cts"
|
|
17
|
+
},
|
|
18
|
+
"import": "./dist/index.mjs",
|
|
19
|
+
"require": "./dist/index.cjs"
|
|
20
|
+
},
|
|
21
|
+
"./runtime": {
|
|
22
|
+
"types": {
|
|
23
|
+
"import": "./dist/runtime/index.d.mts",
|
|
24
|
+
"require": "./dist/runtime/index.d.cts"
|
|
25
|
+
},
|
|
26
|
+
"import": "./dist/runtime/index.mjs",
|
|
27
|
+
"require": "./dist/runtime/index.cjs"
|
|
28
|
+
},
|
|
29
|
+
"./testing": {
|
|
30
|
+
"types": {
|
|
31
|
+
"import": "./dist/testing/index.d.mts",
|
|
32
|
+
"require": "./dist/testing/index.d.cts"
|
|
33
|
+
},
|
|
34
|
+
"import": "./dist/testing/index.mjs",
|
|
35
|
+
"require": "./dist/testing/index.cjs"
|
|
36
|
+
},
|
|
37
|
+
"./normalize": {
|
|
38
|
+
"types": {
|
|
39
|
+
"import": "./dist/runtime/services/normalize.d.mts",
|
|
40
|
+
"require": "./dist/runtime/services/normalize.d.cts"
|
|
41
|
+
},
|
|
42
|
+
"import": "./dist/runtime/services/normalize.mjs",
|
|
43
|
+
"require": "./dist/runtime/services/normalize.cjs"
|
|
44
|
+
},
|
|
45
|
+
"./effect": {
|
|
46
|
+
"types": {
|
|
47
|
+
"import": "./dist/effect.d.mts",
|
|
48
|
+
"require": "./dist/effect.d.cts"
|
|
49
|
+
},
|
|
50
|
+
"import": "./dist/effect.mjs",
|
|
51
|
+
"require": "./dist/effect.cjs"
|
|
52
|
+
},
|
|
53
|
+
"./zod": {
|
|
54
|
+
"types": {
|
|
55
|
+
"import": "./dist/zod.d.mts",
|
|
56
|
+
"require": "./dist/zod.d.cts"
|
|
57
|
+
},
|
|
58
|
+
"import": "./dist/zod.mjs",
|
|
59
|
+
"require": "./dist/zod.cjs"
|
|
60
|
+
},
|
|
61
|
+
"./orpc": {
|
|
62
|
+
"types": {
|
|
63
|
+
"import": "./dist/orpc.d.mts",
|
|
64
|
+
"require": "./dist/orpc.d.cts"
|
|
65
|
+
},
|
|
66
|
+
"import": "./dist/orpc.mjs",
|
|
67
|
+
"require": "./dist/orpc.cjs"
|
|
68
|
+
},
|
|
69
|
+
"./errors": {
|
|
70
|
+
"types": {
|
|
71
|
+
"import": "./dist/errors.d.mts",
|
|
72
|
+
"require": "./dist/errors.d.cts"
|
|
73
|
+
},
|
|
74
|
+
"import": "./dist/errors.mjs",
|
|
75
|
+
"require": "./dist/errors.cjs"
|
|
76
|
+
},
|
|
77
|
+
"./build/rspack": {
|
|
78
|
+
"types": {
|
|
79
|
+
"import": "./dist/build/rspack/index.d.mts",
|
|
80
|
+
"require": "./dist/build/rspack/index.d.cts"
|
|
81
|
+
},
|
|
82
|
+
"import": "./dist/build/rspack/index.mjs",
|
|
83
|
+
"require": "./dist/build/rspack/index.cjs"
|
|
84
|
+
},
|
|
85
|
+
"./package.json": "./package.json"
|
|
86
|
+
},
|
|
87
|
+
"files": ["dist"],
|
|
88
|
+
"scripts": {
|
|
89
|
+
"build": "tsdown",
|
|
90
|
+
"build:test": "cd tests/fixtures/test-plugin && bun run build",
|
|
91
|
+
"test": "vitest run --config vitest.config.ts",
|
|
92
|
+
"test:unit": "vitest run --config vitest.config.ts",
|
|
93
|
+
"test:integration": "bun run build:test && vitest run --config vitest.integration.config.ts",
|
|
94
|
+
"test:all": "bun run test:unit && bun run test:integration",
|
|
95
|
+
"test:watch": "vitest --config vitest.config.ts --watch",
|
|
96
|
+
"typecheck": "tsc --noEmit"
|
|
97
|
+
},
|
|
98
|
+
"peerDependencies": {
|
|
99
|
+
"@rspack/core": "*",
|
|
100
|
+
"typescript": "^5.6.0"
|
|
101
|
+
},
|
|
102
|
+
"devDependencies": {
|
|
103
|
+
"@effect/language-service": "^0.38.4",
|
|
104
|
+
"@effect/vitest": "^0.25.1",
|
|
105
|
+
"@orpc/client": "^1.10.0",
|
|
106
|
+
"@orpc/openapi": "^1.10.4",
|
|
107
|
+
"@orpc/zod": "^1.10.0",
|
|
108
|
+
"@rspack/cli": "^1.5.8",
|
|
109
|
+
"@types/bun": "^1.3.0",
|
|
110
|
+
"@types/node": "^24.9.0",
|
|
111
|
+
"@vitest/ui": "3.2.4",
|
|
112
|
+
"bun-types": "^1.3.0",
|
|
113
|
+
"sirv": "^3.0.2",
|
|
114
|
+
"vite-tsconfig-paths": "^5.1.4",
|
|
115
|
+
"vitest": "^3.2.4"
|
|
116
|
+
},
|
|
117
|
+
"dependencies": {
|
|
118
|
+
"@better-fetch/fetch": "^1.1.18",
|
|
119
|
+
"@module-federation/enhanced": "^0.19.1",
|
|
120
|
+
"@module-federation/node": "^2.7.15",
|
|
121
|
+
"@module-federation/runtime-core": "^0.19.1",
|
|
122
|
+
"@orpc/contract": "^1.10.0",
|
|
123
|
+
"@orpc/experimental-publisher": "^1.10.0",
|
|
124
|
+
"@orpc/server": "^1.10.0",
|
|
125
|
+
"effect": "3.18.1",
|
|
126
|
+
"zod": "4.1.5"
|
|
127
|
+
},
|
|
128
|
+
"keywords": [
|
|
129
|
+
"plugin",
|
|
130
|
+
"module-federation",
|
|
131
|
+
"orpc",
|
|
132
|
+
"zod",
|
|
133
|
+
"typescript"
|
|
134
|
+
],
|
|
135
|
+
"author": "plugin.every.near",
|
|
136
|
+
"license": "MIT",
|
|
137
|
+
"repository": {
|
|
138
|
+
"type": "git",
|
|
139
|
+
"url": "https://github.com/near-everything/every-plugin.git"
|
|
140
|
+
},
|
|
141
|
+
"bugs": { "url": "https://github.com/near-everything/every-plugin/issues" },
|
|
142
|
+
"homepage": "https://plugin.everything.dev",
|
|
143
|
+
"workspaces": ["tests/fixtures/*"]
|
|
144
|
+
};
|
|
145
|
+
}) });
|
|
146
|
+
|
|
147
|
+
//#endregion
|
|
148
|
+
Object.defineProperty(exports, 'require_package', {
|
|
149
|
+
enumerable: true,
|
|
150
|
+
get: function () {
|
|
151
|
+
return require_package;
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS1KNjBIMGNLOC5janMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vcGFja2FnZS5qc29uIl0sInNvdXJjZXNDb250ZW50IjpbIntcblx0XCJuYW1lXCI6IFwiZXZlcnktcGx1Z2luXCIsXG5cdFwidmVyc2lvblwiOiBcIjAuNC4xMFwiLFxuXHRcInR5cGVcIjogXCJtb2R1bGVcIixcblx0XCJtYWluXCI6IFwiLi9kaXN0L2luZGV4LmNqc1wiLFxuXHRcIm1vZHVsZVwiOiBcIi4vZGlzdC9pbmRleC5tanNcIixcblx0XCJ0eXBlc1wiOiBcIi4vZGlzdC9pbmRleC5kLm10c1wiLFxuXHRcImV4cG9ydHNcIjoge1xuXHRcdFwiLlwiOiB7XG5cdFx0XHRcInR5cGVzXCI6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvaW5kZXguZC5tdHNcIixcblx0XHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L2luZGV4LmQuY3RzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC9pbmRleC5tanNcIixcblx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9pbmRleC5janNcIlxuXHRcdH0sXG5cdFx0XCIuL3J1bnRpbWVcIjoge1xuXHRcdFx0XCJ0eXBlc1wiOiB7XG5cdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L3J1bnRpbWUvaW5kZXguZC5tdHNcIixcblx0XHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L3J1bnRpbWUvaW5kZXguZC5jdHNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L3J1bnRpbWUvaW5kZXgubWpzXCIsXG5cdFx0XHRcInJlcXVpcmVcIjogXCIuL2Rpc3QvcnVudGltZS9pbmRleC5janNcIlxuXHRcdH0sXG5cdFx0XCIuL3Rlc3RpbmdcIjoge1xuXHRcdFx0XCJ0eXBlc1wiOiB7XG5cdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L3Rlc3RpbmcvaW5kZXguZC5tdHNcIixcblx0XHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L3Rlc3RpbmcvaW5kZXguZC5jdHNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L3Rlc3RpbmcvaW5kZXgubWpzXCIsXG5cdFx0XHRcInJlcXVpcmVcIjogXCIuL2Rpc3QvdGVzdGluZy9pbmRleC5janNcIlxuXHRcdH0sXG5cdFx0XCIuL25vcm1hbGl6ZVwiOiB7XG5cdFx0XHRcInR5cGVzXCI6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvcnVudGltZS9zZXJ2aWNlcy9ub3JtYWxpemUuZC5tdHNcIixcblx0XHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L3J1bnRpbWUvc2VydmljZXMvbm9ybWFsaXplLmQuY3RzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC9ydW50aW1lL3NlcnZpY2VzL25vcm1hbGl6ZS5tanNcIixcblx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9ydW50aW1lL3NlcnZpY2VzL25vcm1hbGl6ZS5janNcIlxuXHRcdH0sXG5cdFx0XCIuL2VmZmVjdFwiOiB7XG5cdFx0XHRcInR5cGVzXCI6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvZWZmZWN0LmQubXRzXCIsXG5cdFx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9lZmZlY3QuZC5jdHNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L2VmZmVjdC5tanNcIixcblx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9lZmZlY3QuY2pzXCJcblx0XHR9LFxuXHRcdFwiLi96b2RcIjoge1xuXHRcdFx0XCJ0eXBlc1wiOiB7XG5cdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L3pvZC5kLm10c1wiLFxuXHRcdFx0XHRcInJlcXVpcmVcIjogXCIuL2Rpc3Qvem9kLmQuY3RzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC96b2QubWpzXCIsXG5cdFx0XHRcInJlcXVpcmVcIjogXCIuL2Rpc3Qvem9kLmNqc1wiXG5cdFx0fSxcblx0XHRcIi4vb3JwY1wiOiB7XG5cdFx0XHRcInR5cGVzXCI6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3Qvb3JwYy5kLm10c1wiLFxuXHRcdFx0XHRcInJlcXVpcmVcIjogXCIuL2Rpc3Qvb3JwYy5kLmN0c1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3Qvb3JwYy5tanNcIixcblx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9vcnBjLmNqc1wiXG5cdFx0fSxcblx0XHRcIi4vZXJyb3JzXCI6IHtcblx0XHRcdFwidHlwZXNcIjoge1xuXHRcdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC9lcnJvcnMuZC5tdHNcIixcblx0XHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L2Vycm9ycy5kLmN0c1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvZXJyb3JzLm1qc1wiLFxuXHRcdFx0XCJyZXF1aXJlXCI6IFwiLi9kaXN0L2Vycm9ycy5janNcIlxuXHRcdH0sXG5cdFx0XCIuL2J1aWxkL3JzcGFja1wiOiB7XG5cdFx0XHRcInR5cGVzXCI6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvYnVpbGQvcnNwYWNrL2luZGV4LmQubXRzXCIsXG5cdFx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9idWlsZC9yc3BhY2svaW5kZXguZC5jdHNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L2J1aWxkL3JzcGFjay9pbmRleC5tanNcIixcblx0XHRcdFwicmVxdWlyZVwiOiBcIi4vZGlzdC9idWlsZC9yc3BhY2svaW5kZXguY2pzXCJcblx0XHR9LFxuXHRcdFwiLi9wYWNrYWdlLmpzb25cIjogXCIuL3BhY2thZ2UuanNvblwiXG5cdH0sXG5cdFwiZmlsZXNcIjogW1xuXHRcdFwiZGlzdFwiXG5cdF0sXG5cdFwic2NyaXB0c1wiOiB7XG5cdFx0XCJidWlsZFwiOiBcInRzZG93blwiLFxuXHRcdFwiYnVpbGQ6dGVzdFwiOiBcImNkIHRlc3RzL2ZpeHR1cmVzL3Rlc3QtcGx1Z2luICYmIGJ1biBydW4gYnVpbGRcIixcblx0XHRcInRlc3RcIjogXCJ2aXRlc3QgcnVuIC0tY29uZmlnIHZpdGVzdC5jb25maWcudHNcIixcblx0XHRcInRlc3Q6dW5pdFwiOiBcInZpdGVzdCBydW4gLS1jb25maWcgdml0ZXN0LmNvbmZpZy50c1wiLFxuXHRcdFwidGVzdDppbnRlZ3JhdGlvblwiOiBcImJ1biBydW4gYnVpbGQ6dGVzdCAmJiB2aXRlc3QgcnVuIC0tY29uZmlnIHZpdGVzdC5pbnRlZ3JhdGlvbi5jb25maWcudHNcIixcblx0XHRcInRlc3Q6YWxsXCI6IFwiYnVuIHJ1biB0ZXN0OnVuaXQgJiYgYnVuIHJ1biB0ZXN0OmludGVncmF0aW9uXCIsXG5cdFx0XCJ0ZXN0OndhdGNoXCI6IFwidml0ZXN0IC0tY29uZmlnIHZpdGVzdC5jb25maWcudHMgLS13YXRjaFwiLFxuXHRcdFwidHlwZWNoZWNrXCI6IFwidHNjIC0tbm9FbWl0XCJcblx0fSxcblx0XCJwZWVyRGVwZW5kZW5jaWVzXCI6IHtcblx0XHRcIkByc3BhY2svY29yZVwiOiBcIipcIixcblx0XHRcInR5cGVzY3JpcHRcIjogXCJeNS42LjBcIlxuXHR9LFxuXHRcImRldkRlcGVuZGVuY2llc1wiOiB7XG5cdFx0XCJAZWZmZWN0L2xhbmd1YWdlLXNlcnZpY2VcIjogXCJeMC4zOC40XCIsXG5cdFx0XCJAZWZmZWN0L3ZpdGVzdFwiOiBcIl4wLjI1LjFcIixcblx0XHRcIkBvcnBjL2NsaWVudFwiOiBcIl4xLjEwLjBcIixcblx0XHRcIkBvcnBjL29wZW5hcGlcIjogXCJeMS4xMC40XCIsXG5cdFx0XCJAb3JwYy96b2RcIjogXCJeMS4xMC4wXCIsXG5cdFx0XCJAcnNwYWNrL2NsaVwiOiBcIl4xLjUuOFwiLFxuXHRcdFwiQHR5cGVzL2J1blwiOiBcIl4xLjMuMFwiLFxuXHRcdFwiQHR5cGVzL25vZGVcIjogXCJeMjQuOS4wXCIsXG5cdFx0XCJAdml0ZXN0L3VpXCI6IFwiMy4yLjRcIixcblx0XHRcImJ1bi10eXBlc1wiOiBcIl4xLjMuMFwiLFxuXHRcdFwic2lydlwiOiBcIl4zLjAuMlwiLFxuXHRcdFwidml0ZS10c2NvbmZpZy1wYXRoc1wiOiBcIl41LjEuNFwiLFxuXHRcdFwidml0ZXN0XCI6IFwiXjMuMi40XCJcblx0fSxcblx0XCJkZXBlbmRlbmNpZXNcIjoge1xuXHRcdFwiQGJldHRlci1mZXRjaC9mZXRjaFwiOiBcIl4xLjEuMThcIixcblx0XHRcIkBtb2R1bGUtZmVkZXJhdGlvbi9lbmhhbmNlZFwiOiBcIl4wLjE5LjFcIixcblx0XHRcIkBtb2R1bGUtZmVkZXJhdGlvbi9ub2RlXCI6IFwiXjIuNy4xNVwiLFxuXHRcdFwiQG1vZHVsZS1mZWRlcmF0aW9uL3J1bnRpbWUtY29yZVwiOiBcIl4wLjE5LjFcIixcblx0XHRcIkBvcnBjL2NvbnRyYWN0XCI6IFwiXjEuMTAuMFwiLFxuXHRcdFwiQG9ycGMvZXhwZXJpbWVudGFsLXB1Ymxpc2hlclwiOiBcIl4xLjEwLjBcIixcblx0XHRcIkBvcnBjL3NlcnZlclwiOiBcIl4xLjEwLjBcIixcblx0XHRcImVmZmVjdFwiOiBcIjMuMTguMVwiLFxuXHRcdFwiem9kXCI6IFwiNC4xLjVcIlxuXHR9LFxuXHRcImtleXdvcmRzXCI6IFtcblx0XHRcInBsdWdpblwiLFxuXHRcdFwibW9kdWxlLWZlZGVyYXRpb25cIixcblx0XHRcIm9ycGNcIixcblx0XHRcInpvZFwiLFxuXHRcdFwidHlwZXNjcmlwdFwiXG5cdF0sXG5cdFwiYXV0aG9yXCI6IFwicGx1Z2luLmV2ZXJ5Lm5lYXJcIixcblx0XCJsaWNlbnNlXCI6IFwiTUlUXCIsXG5cdFwicmVwb3NpdG9yeVwiOiB7XG5cdFx0XCJ0eXBlXCI6IFwiZ2l0XCIsXG5cdFx0XCJ1cmxcIjogXCJodHRwczovL2dpdGh1Yi5jb20vbmVhci1ldmVyeXRoaW5nL2V2ZXJ5LXBsdWdpbi5naXRcIlxuXHR9LFxuXHRcImJ1Z3NcIjoge1xuXHRcdFwidXJsXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL25lYXItZXZlcnl0aGluZy9ldmVyeS1wbHVnaW4vaXNzdWVzXCJcblx0fSxcblx0XCJob21lcGFnZVwiOiBcImh0dHBzOi8vcGx1Z2luLmV2ZXJ5dGhpbmcuZGV2XCIsXG5cdFwid29ya3NwYWNlc1wiOiBbXG5cdFx0XCJ0ZXN0cy9maXh0dXJlcy8qXCJcblx0XVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O2tCQUFBO0VBQ0MsUUFBUTtFQUNSLFdBQVc7RUFDWCxRQUFRO0VBQ1IsUUFBUTtFQUNSLFVBQVU7RUFDVixTQUFTO0VBQ1QsV0FBVztHQUNWLEtBQUs7SUFDSixTQUFTO0tBQ1IsVUFBVTtLQUNWLFdBQVc7S0FDWDtJQUNELFVBQVU7SUFDVixXQUFXO0lBQ1g7R0FDRCxhQUFhO0lBQ1osU0FBUztLQUNSLFVBQVU7S0FDVixXQUFXO0tBQ1g7SUFDRCxVQUFVO0lBQ1YsV0FBVztJQUNYO0dBQ0QsYUFBYTtJQUNaLFNBQVM7S0FDUixVQUFVO0tBQ1YsV0FBVztLQUNYO0lBQ0QsVUFBVTtJQUNWLFdBQVc7SUFDWDtHQUNELGVBQWU7SUFDZCxTQUFTO0tBQ1IsVUFBVTtLQUNWLFdBQVc7S0FDWDtJQUNELFVBQVU7SUFDVixXQUFXO0lBQ1g7R0FDRCxZQUFZO0lBQ1gsU0FBUztLQUNSLFVBQVU7S0FDVixXQUFXO0tBQ1g7SUFDRCxVQUFVO0lBQ1YsV0FBVztJQUNYO0dBQ0QsU0FBUztJQUNSLFNBQVM7S0FDUixVQUFVO0tBQ1YsV0FBVztLQUNYO0lBQ0QsVUFBVTtJQUNWLFdBQVc7SUFDWDtHQUNELFVBQVU7SUFDVCxTQUFTO0tBQ1IsVUFBVTtLQUNWLFdBQVc7S0FDWDtJQUNELFVBQVU7SUFDVixXQUFXO0lBQ1g7R0FDRCxZQUFZO0lBQ1gsU0FBUztLQUNSLFVBQVU7S0FDVixXQUFXO0tBQ1g7SUFDRCxVQUFVO0lBQ1YsV0FBVztJQUNYO0dBQ0Qsa0JBQWtCO0lBQ2pCLFNBQVM7S0FDUixVQUFVO0tBQ1YsV0FBVztLQUNYO0lBQ0QsVUFBVTtJQUNWLFdBQVc7SUFDWDtHQUNELGtCQUFrQjtHQUNsQjtFQUNELFNBQVMsQ0FDUixPQUNBO0VBQ0QsV0FBVztHQUNWLFNBQVM7R0FDVCxjQUFjO0dBQ2QsUUFBUTtHQUNSLGFBQWE7R0FDYixvQkFBb0I7R0FDcEIsWUFBWTtHQUNaLGNBQWM7R0FDZCxhQUFhO0dBQ2I7RUFDRCxvQkFBb0I7R0FDbkIsZ0JBQWdCO0dBQ2hCLGNBQWM7R0FDZDtFQUNELG1CQUFtQjtHQUNsQiw0QkFBNEI7R0FDNUIsa0JBQWtCO0dBQ2xCLGdCQUFnQjtHQUNoQixpQkFBaUI7R0FDakIsYUFBYTtHQUNiLGVBQWU7R0FDZixjQUFjO0dBQ2QsZUFBZTtHQUNmLGNBQWM7R0FDZCxhQUFhO0dBQ2IsUUFBUTtHQUNSLHVCQUF1QjtHQUN2QixVQUFVO0dBQ1Y7RUFDRCxnQkFBZ0I7R0FDZix1QkFBdUI7R0FDdkIsK0JBQStCO0dBQy9CLDJCQUEyQjtHQUMzQixtQ0FBbUM7R0FDbkMsa0JBQWtCO0dBQ2xCLGdDQUFnQztHQUNoQyxnQkFBZ0I7R0FDaEIsVUFBVTtHQUNWLE9BQU87R0FDUDtFQUNELFlBQVk7R0FDWDtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0E7RUFDRCxVQUFVO0VBQ1YsV0FBVztFQUNYLGNBQWM7R0FDYixRQUFRO0dBQ1IsT0FBTztHQUNQO0VBQ0QsUUFBUSxFQUNQLE9BQU8sMERBQ1A7RUFDRCxZQUFZO0VBQ1osY0FBYyxDQUNiLG1CQUNBO0VBQ0QifQ==
|
package/dist/runtime/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const require_runtime = require('../runtime-
|
|
1
|
+
const require_runtime = require('../runtime-Yfumucan.cjs');
|
|
2
2
|
require('../normalize-D4Qh0wVk.cjs');
|
|
3
|
-
require('../package-
|
|
3
|
+
require('../package-J60H0cK8.cjs');
|
|
4
4
|
|
|
5
5
|
exports.PluginRuntime = require_runtime.PluginRuntime;
|
|
6
6
|
exports.createPluginRuntime = require_runtime.createPluginRuntime;
|
package/dist/runtime/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as createPluginRuntime, t as PluginRuntime } from "../runtime-
|
|
1
|
+
import { n as createPluginRuntime, t as PluginRuntime } from "../runtime-BShulKmh.mjs";
|
|
2
2
|
import "../normalize-D7nae0Hn.mjs";
|
|
3
|
-
import "../package-
|
|
3
|
+
import "../package-DVINhZcr.mjs";
|
|
4
4
|
|
|
5
5
|
export { PluginRuntime, createPluginRuntime };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { i as __toESM } from "./chunk-QQAxy9l9.mjs";
|
|
2
2
|
import { t as getNormalizedRemoteName } from "./normalize-D7nae0Hn.mjs";
|
|
3
|
-
import { t as require_package } from "./package-
|
|
3
|
+
import { t as require_package } from "./package-DVINhZcr.mjs";
|
|
4
4
|
import { Cause, Context, Data, Effect, Exit, Hash, Layer, ManagedRuntime, Option, Ref, Scope } from "effect";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import { createRouterClient } from "@orpc/server";
|
|
@@ -455,4 +455,4 @@ function createPluginRuntime(config) {
|
|
|
455
455
|
|
|
456
456
|
//#endregion
|
|
457
457
|
export { PluginRegistryTag as a, SecretsService as c, ModuleFederationError as d, PluginLoaderService as i, PluginLifecycleService as l, createPluginRuntime as n, RegistryService as o, PluginService as r, SecretsConfigTag as s, PluginRuntime as t, ModuleFederationService as u };
|
|
458
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1EYXc5VGx6Ni5tanMiLCJuYW1lcyI6WyJwa2ciLCJlcnJvciIsInJ1bnRpbWU6IE1hbmFnZWRSdW50aW1lLk1hbmFnZWRSdW50aW1lPFBsdWdpblNlcnZpY2UsIG5ldmVyPiIsInJlZ2lzdHJ5OiBQbHVnaW5SZWdpc3RyeSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lL2Vycm9ycy50cyIsIi4uL3NyYy9ydW50aW1lL3NlcnZpY2VzL21vZHVsZS1mZWRlcmF0aW9uLnNlcnZpY2UudHMiLCIuLi9zcmMvcnVudGltZS9zZXJ2aWNlcy9wbHVnaW4tbGlmZWN5Y2xlLnNlcnZpY2UudHMiLCIuLi9zcmMvcnVudGltZS92YWxpZGF0aW9uLnRzIiwiLi4vc3JjL3J1bnRpbWUvc2VydmljZXMvc2VjcmV0cy5zZXJ2aWNlLnRzIiwiLi4vc3JjL3J1bnRpbWUvc2VydmljZXMvcGx1Z2luLWxvYWRlci5zZXJ2aWNlLnRzIiwiLi4vc3JjL3J1bnRpbWUvc2VydmljZXMvcGx1Z2luLnNlcnZpY2UudHMiLCIuLi9zcmMvcnVudGltZS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPUlBDRXJyb3IgfSBmcm9tIFwiQG9ycGMvY29udHJhY3RcIjtcbmltcG9ydCB7IERhdGEgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5SdW50aW1lRXJyb3IgZXh0ZW5kcyBEYXRhLlRhZ2dlZEVycm9yKFwiUGx1Z2luUnVudGltZUVycm9yXCIpPHtcblx0cmVhZG9ubHkgcGx1Z2luSWQ/OiBzdHJpbmc7XG5cdHJlYWRvbmx5IG9wZXJhdGlvbj86IHN0cmluZztcblx0cmVhZG9ubHkgcHJvY2VkdXJlTmFtZT86IHN0cmluZztcblx0cmVhZG9ubHkgY2F1c2U/OiBFcnJvcjtcblx0cmVhZG9ubHkgcmV0cnlhYmxlOiBib29sZWFuO1xufT4geyB9XG5cbmV4cG9ydCBjbGFzcyBNb2R1bGVGZWRlcmF0aW9uRXJyb3IgZXh0ZW5kcyBEYXRhLlRhZ2dlZEVycm9yKFxuXHRcIk1vZHVsZUZlZGVyYXRpb25FcnJvclwiLFxuKTx7XG5cdHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG5cdHJlYWRvbmx5IHJlbW90ZVVybDogc3RyaW5nO1xuXHRyZWFkb25seSBjYXVzZT86IEVycm9yO1xufT4geyB9XG5cbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBEYXRhLlRhZ2dlZEVycm9yKFwiVmFsaWRhdGlvbkVycm9yXCIpPHtcblx0cmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcblx0cmVhZG9ubHkgc3RhZ2U6IFwiY29uZmlnXCIgfCBcImlucHV0XCIgfCBcIm91dHB1dFwiIHwgXCJzdGF0ZVwiO1xuXHRyZWFkb25seSB6b2RFcnJvcjogei5ab2RFcnJvcjtcbn0+IHsgfVxuXG4vLyBIZWxwZXIgdG8gZGV0ZXJtaW5lIGlmIGFuIG9SUEMgZXJyb3IgY29kZSBpcyByZXRyeWFibGVcbmV4cG9ydCBjb25zdCBpc1JldHJ5YWJsZU9SUENDb2RlID0gKGNvZGU6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuXHRzd2l0Y2ggKGNvZGUpIHtcblx0XHRjYXNlICdUT09fTUFOWV9SRVFVRVNUUyc6XG5cdFx0Y2FzZSAnU0VSVklDRV9VTkFWQUlMQUJMRSc6XG5cdFx0Y2FzZSAnQkFEX0dBVEVXQVknOlxuXHRcdGNhc2UgJ0dBVEVXQVlfVElNRU9VVCc6XG5cdFx0Y2FzZSAnVElNRU9VVCc6XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59O1xuXG4vLyBDb252ZXJ0IE9SUEMgZXJyb3JzIGZyb20gcGx1Z2luIHByb2NlZHVyZXMgdG8gUGx1Z2luUnVudGltZUVycm9yXG5leHBvcnQgY29uc3Qgd3JhcE9SUENFcnJvciA9IChcblx0b3JwY0Vycm9yOiBPUlBDRXJyb3I8c3RyaW5nLCB1bmtub3duPixcblx0cGx1Z2luSWQ/OiBzdHJpbmcsXG5cdHByb2NlZHVyZU5hbWU/OiBzdHJpbmcsXG5cdG9wZXJhdGlvbj86IHN0cmluZ1xuKTogUGx1Z2luUnVudGltZUVycm9yID0+IHtcblx0cmV0dXJuIG5ldyBQbHVnaW5SdW50aW1lRXJyb3Ioe1xuXHRcdHBsdWdpbklkLFxuXHRcdG9wZXJhdGlvbixcblx0XHRwcm9jZWR1cmVOYW1lLFxuXHRcdHJldHJ5YWJsZTogaXNSZXRyeWFibGVPUlBDQ29kZShvcnBjRXJyb3IuY29kZSksXG5cdFx0Y2F1c2U6IG9ycGNFcnJvciBhcyBFcnJvclxuXHR9KTtcbn07XG5cbi8vIFVuaXZlcnNhbCBlcnJvciBjb252ZXJ0ZXIgZm9yIHRoZSBydW50aW1lXG5leHBvcnQgY29uc3QgdG9QbHVnaW5SdW50aW1lRXJyb3IgPSAoXG5cdGVycm9yOiB1bmtub3duLFxuXHRwbHVnaW5JZD86IHN0cmluZyxcblx0cHJvY2VkdXJlTmFtZT86IHN0cmluZyxcblx0b3BlcmF0aW9uPzogc3RyaW5nLFxuXHRkZWZhdWx0UmV0cnlhYmxlID0gZmFsc2Vcbik6IFBsdWdpblJ1bnRpbWVFcnJvciA9PiB7XG5cdGlmIChlcnJvciBpbnN0YW5jZW9mIE9SUENFcnJvcikge1xuXHRcdHJldHVybiB3cmFwT1JQQ0Vycm9yKGVycm9yLCBwbHVnaW5JZCwgcHJvY2VkdXJlTmFtZSwgb3BlcmF0aW9uKTtcblx0fVxuXG5cdGlmIChlcnJvciBpbnN0YW5jZW9mIFBsdWdpblJ1bnRpbWVFcnJvcikge1xuXHRcdHJldHVybiBlcnJvcjsgLy8gQWxyZWFkeSBjb252ZXJ0ZWRcblx0fVxuXG5cdHJldHVybiBuZXcgUGx1Z2luUnVudGltZUVycm9yKHtcblx0XHRwbHVnaW5JZCxcblx0XHRvcGVyYXRpb24sXG5cdFx0cHJvY2VkdXJlTmFtZSxcblx0XHRyZXRyeWFibGU6IGRlZmF1bHRSZXRyeWFibGUsXG5cdFx0Y2F1c2U6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKVxuXHR9KTtcbn07XG4iLCJpbXBvcnQgeyBiZXR0ZXJGZXRjaCB9IGZyb20gXCJAYmV0dGVyLWZldGNoL2ZldGNoXCI7XG5pbXBvcnQge1xuXHRjcmVhdGVJbnN0YW5jZSxcblx0Z2V0SW5zdGFuY2UsXG59IGZyb20gXCJAbW9kdWxlLWZlZGVyYXRpb24vZW5oYW5jZWQvcnVudGltZVwiO1xuaW1wb3J0IHsgc2V0R2xvYmFsRmVkZXJhdGlvbkluc3RhbmNlIH0gZnJvbSBcIkBtb2R1bGUtZmVkZXJhdGlvbi9ydW50aW1lLWNvcmVcIjtcbmltcG9ydCB7IEVmZmVjdCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB0eXBlIHsgQW55UGx1Z2luIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBNb2R1bGVGZWRlcmF0aW9uRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBnZXROb3JtYWxpemVkUmVtb3RlTmFtZSB9IGZyb20gXCIuL25vcm1hbGl6ZVwiO1xuXG50eXBlIFJlbW90ZU1vZHVsZSA9IFxuICB8IChuZXcgKCkgPT4gQW55UGx1Z2luKVxuICB8IHsgZGVmYXVsdDogbmV3ICgpID0+IEFueVBsdWdpbiB9O1xuXG5pbXBvcnQgcGtnIGZyb20gXCIuLi8uLi8uLi9wYWNrYWdlLmpzb25cIjtcblxuY29uc3QgY3JlYXRlTW9kdWxlRmVkZXJhdGlvbkluc3RhbmNlID0gRWZmZWN0LmNhY2hlZChcblx0RWZmZWN0LnN5bmMoKCkgPT4ge1xuXHRcdHRyeSB7XG5cdFx0XHRsZXQgaW5zdGFuY2UgPSBnZXRJbnN0YW5jZSgpO1xuXG5cdFx0XHRpZiAoIWluc3RhbmNlKSB7XG5cdFx0XHRcdGluc3RhbmNlID0gY3JlYXRlSW5zdGFuY2Uoe1xuXHRcdFx0XHRcdG5hbWU6IFwiaG9zdFwiLFxuXHRcdFx0XHRcdHJlbW90ZXM6IFtdLFxuXHRcdFx0XHRcdHNoYXJlZDoge1xuXHRcdFx0XHRcdFx0XCJldmVyeS1wbHVnaW5cIjoge1xuXHRcdFx0XHRcdFx0XHR2ZXJzaW9uOiBwa2cudmVyc2lvbixcblx0XHRcdFx0XHRcdFx0c2hhcmVDb25maWc6IHtcblx0XHRcdFx0XHRcdFx0XHRzaW5nbGV0b246IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0cmVxdWlyZWRWZXJzaW9uOiBgXiR7cGtnLnZlcnNpb259YCxcblx0XHRcdFx0XHRcdFx0XHRlYWdlcjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRzdHJpY3RWZXJzaW9uOiBmYWxzZSwgLy8gQWxsb3cgYmlkaXJlY3Rpb25hbCB2ZXJzaW9uIGNvbXBhdGliaWxpdHlcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRlZmZlY3Q6IHtcblx0XHRcdFx0XHRcdFx0dmVyc2lvbjogcGtnLmRlcGVuZGVuY2llcy5lZmZlY3QsXG5cdFx0XHRcdFx0XHRcdHNoYXJlQ29uZmlnOiB7XG5cdFx0XHRcdFx0XHRcdFx0c2luZ2xldG9uOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkVmVyc2lvbjogXCJeMy4xOC4wXCIsIC8vIEFsbG93IGFueSAzLjE4LnggcGF0Y2ggdmVyc2lvblxuXHRcdFx0XHRcdFx0XHRcdGVhZ2VyOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdHN0cmljdFZlcnNpb246IGZhbHNlLCAvLyBBbGxvdyB2ZXJzaW9uIGZsZXhpYmlsaXR5IGZvciBjb21wYXRpYmlsaXR5XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0em9kOiB7XG5cdFx0XHRcdFx0XHRcdHZlcnNpb246IHBrZy5kZXBlbmRlbmNpZXMuem9kLFxuXHRcdFx0XHRcdFx0XHRzaGFyZUNvbmZpZzoge1xuXHRcdFx0XHRcdFx0XHRcdHNpbmdsZXRvbjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZFZlcnNpb246IFwiXjQuMS4wXCIsIC8vIEFsbG93IGFueSA0LjEueCBwYXRjaCB2ZXJzaW9uXG5cdFx0XHRcdFx0XHRcdFx0ZWFnZXI6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0c3RyaWN0VmVyc2lvbjogZmFsc2UsIC8vIEFsbG93IHZlcnNpb24gZmxleGliaWxpdHkgZm9yIGNvbXBhdGliaWxpdHlcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcIkBvcnBjL2NvbnRyYWN0XCI6IHtcblx0XHRcdFx0XHRcdFx0dmVyc2lvbjogcGtnLmRlcGVuZGVuY2llc1tcIkBvcnBjL2NvbnRyYWN0XCJdLFxuXHRcdFx0XHRcdFx0XHRzaGFyZUNvbmZpZzoge1xuXHRcdFx0XHRcdFx0XHRcdHNpbmdsZXRvbjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZFZlcnNpb246IFwiXjEuOC4wXCIsIC8vIEFsbG93IGFueSAxLjgueCBwYXRjaCB2ZXJzaW9uXG5cdFx0XHRcdFx0XHRcdFx0ZWFnZXI6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0c3RyaWN0VmVyc2lvbjogZmFsc2UsIC8vIEFsbG93IHZlcnNpb24gZmxleGliaWxpdHkgZm9yIGNvbXBhdGliaWxpdHlcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcIkBvcnBjL3NlcnZlclwiOiB7XG5cdFx0XHRcdFx0XHRcdHZlcnNpb246IHBrZy5kZXBlbmRlbmNpZXNbXCJAb3JwYy9zZXJ2ZXJcIl0sXG5cdFx0XHRcdFx0XHRcdHNoYXJlQ29uZmlnOiB7XG5cdFx0XHRcdFx0XHRcdFx0c2luZ2xldG9uOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkVmVyc2lvbjogXCJeMS44LjBcIiwgLy8gQWxsb3cgYW55IDEuOC54IHBhdGNoIHZlcnNpb25cblx0XHRcdFx0XHRcdFx0XHRlYWdlcjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRzdHJpY3RWZXJzaW9uOiBmYWxzZSwgLy8gQWxsb3cgdmVyc2lvbiBmbGV4aWJpbGl0eSBmb3IgY29tcGF0aWJpbGl0eVxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdHNldEdsb2JhbEZlZGVyYXRpb25JbnN0YW5jZShpbnN0YW5jZSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBpbnN0YW5jZTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBNb2R1bGUgRmVkZXJhdGlvbjogJHtlcnJvcn1gKTtcblx0XHR9XG5cdH0pLFxuKTtcblxuZXhwb3J0IGNsYXNzIE1vZHVsZUZlZGVyYXRpb25TZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlNlcnZpY2U8TW9kdWxlRmVkZXJhdGlvblNlcnZpY2U+KCkoXCJNb2R1bGVGZWRlcmF0aW9uU2VydmljZVwiLCB7XG5cdGVmZmVjdDogRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdGNvbnN0IG1mID0geWllbGQqIEVmZmVjdC5mbGF0dGVuKGNyZWF0ZU1vZHVsZUZlZGVyYXRpb25JbnN0YW5jZSk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0cmVnaXN0ZXJSZW1vdGU6IChwbHVnaW5JZDogc3RyaW5nLCB1cmw6IHN0cmluZykgPT5cblx0XHRcdFx0RWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGBbTUZdIFJlZ2lzdGVyaW5nICR7cGx1Z2luSWR9YCk7XG5cblx0XHRcdFx0XHQvLyBDaGVjayBpZiByZW1vdGUgaXMgYXZhaWxhYmxlXG5cdFx0XHRcdFx0Y29uc3QgeyBlcnJvciB9ID0geWllbGQqIEVmZmVjdC50cnlQcm9taXNlKHtcblx0XHRcdFx0XHRcdHRyeTogKCkgPT4gYmV0dGVyRmV0Y2godXJsLCB7IG1ldGhvZDogXCJIRUFEXCIgfSksXG5cdFx0XHRcdFx0XHRjYXRjaDogKGVycm9yKTogTW9kdWxlRmVkZXJhdGlvbkVycm9yID0+XG5cdFx0XHRcdFx0XHRcdG5ldyBNb2R1bGVGZWRlcmF0aW9uRXJyb3Ioe1xuXHRcdFx0XHRcdFx0XHRcdHBsdWdpbklkLFxuXHRcdFx0XHRcdFx0XHRcdHJlbW90ZVVybDogdXJsLFxuXHRcdFx0XHRcdFx0XHRcdGNhdXNlOlxuXHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpLFxuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdGlmIChlcnJvcikge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYFtNRl0g4p2MIFJlbW90ZSBub3QgYXZhaWxhYmxlIGZvciAke3BsdWdpbklkfWApO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHlpZWxkKiBFZmZlY3QuZmFpbChcblx0XHRcdFx0XHRcdFx0bmV3IE1vZHVsZUZlZGVyYXRpb25FcnJvcih7XG5cdFx0XHRcdFx0XHRcdFx0cGx1Z2luSWQsXG5cdFx0XHRcdFx0XHRcdFx0cmVtb3RlVXJsOiB1cmwsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6IG5ldyBFcnJvcihgUmVtb3RlIG5vdCBhdmFpbGFibGUgKCR7dXJsfSk6ICR7SlNPTi5zdHJpbmdpZnkoZXJyb3IpfWApLFxuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y29uc3QgcmVtb3RlTmFtZSA9IGdldE5vcm1hbGl6ZWRSZW1vdGVOYW1lKHBsdWdpbklkKTtcblxuXHRcdFx0XHRcdHlpZWxkKiBFZmZlY3QudHJ5KHtcblx0XHRcdFx0XHRcdHRyeTogKCkgPT4gbWYucmVnaXN0ZXJSZW1vdGVzKFt7IG5hbWU6IHJlbW90ZU5hbWUsIGVudHJ5OiB1cmwgfV0pLFxuXHRcdFx0XHRcdFx0Y2F0Y2g6IChlcnJvcik6IE1vZHVsZUZlZGVyYXRpb25FcnJvciA9PlxuXHRcdFx0XHRcdFx0XHRuZXcgTW9kdWxlRmVkZXJhdGlvbkVycm9yKHtcblx0XHRcdFx0XHRcdFx0XHRwbHVnaW5JZCxcblx0XHRcdFx0XHRcdFx0XHRyZW1vdGVVcmw6IHVybCxcblx0XHRcdFx0XHRcdFx0XHRjYXVzZTpcblx0XHRcdFx0XHRcdFx0XHRcdGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKSxcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRjb25zb2xlLmxvZyhgW01GXSDinIUgUmVnaXN0ZXJlZCAke3BsdWdpbklkfWApO1xuXHRcdFx0XHR9KSxcblxuXHRcdFx0bG9hZFJlbW90ZUNvbnN0cnVjdG9yOiAocGx1Z2luSWQ6IHN0cmluZywgdXJsOiBzdHJpbmcpID0+XG5cdFx0XHRcdEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRcdFx0XHRjb25zdCByZW1vdGVOYW1lID0gZ2V0Tm9ybWFsaXplZFJlbW90ZU5hbWUocGx1Z2luSWQpO1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGBbTUZdIExvYWRpbmcgcmVtb3RlICR7cmVtb3RlTmFtZX1gKTtcblx0XHRcdFx0XHRjb25zdCBtb2R1bGVQYXRoID0gYCR7cmVtb3RlTmFtZX0vcGx1Z2luYDtcblxuXHRcdFx0XHRcdHJldHVybiB5aWVsZCogRWZmZWN0LnRyeVByb21pc2Uoe1xuXHRcdFx0XHRcdFx0dHJ5OiBhc3luYyAoKSA9PiB7XG5cblx0XHRcdFx0XHRcdFx0Y29uc3QgY29udGFpbmVyID0gYXdhaXQgbWYubG9hZFJlbW90ZTxSZW1vdGVNb2R1bGU+KG1vZHVsZVBhdGgpO1xuXHRcdFx0XHRcdFx0XHRpZiAoIWNvbnRhaW5lcikge1xuXHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgTm8gY29udGFpbmVyIHJldHVybmVkIGZvciAke21vZHVsZVBhdGh9YCk7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0IG11bHRpcGxlIGV4cG9ydCBwYXR0ZXJuczogZGlyZWN0IGZ1bmN0aW9uLCBkZWZhdWx0IGV4cG9ydCwgbmFtZWQgZXhwb3J0c1xuXHRcdFx0XHRcdFx0XHRjb25zdCBDb25zdHJ1Y3RvciA9XG5cdFx0XHRcdFx0XHRcdFx0dHlwZW9mIGNvbnRhaW5lciA9PT0gXCJmdW5jdGlvblwiXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IGNvbnRhaW5lciAgLy8gRGlyZWN0IGZ1bmN0aW9uIGV4cG9ydFxuXHRcdFx0XHRcdFx0XHRcdFx0OiBjb250YWluZXIuZGVmYXVsdFxuXHRcdFx0XHRcdFx0XHRcdFx0PyBjb250YWluZXIuZGVmYXVsdCAgLy8gRGVmYXVsdCBleHBvcnRcblx0XHRcdFx0XHRcdFx0XHRcdDogT2JqZWN0LnZhbHVlcyhjb250YWluZXIpLmZpbmQoICAvLyBOYW1lZCBleHBvcnQgZmFsbGJhY2tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZXhwKSA9PiB0eXBlb2YgZXhwID09PSBcImZ1bmN0aW9uXCIgJiYgZXhwLnByb3RvdHlwZT8uY29uc3RydWN0b3IgPT09IGV4cFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHRcdGlmICghQ29uc3RydWN0b3IgfHwgdHlwZW9mIENvbnN0cnVjdG9yICE9PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBjb250YWluZXJJbmZvID0gdHlwZW9mIGNvbnRhaW5lciA9PT0gXCJvYmplY3RcIlxuXHRcdFx0XHRcdFx0XHRcdFx0PyBgQXZhaWxhYmxlIGV4cG9ydHM6ICR7T2JqZWN0LmtleXMoY29udGFpbmVyKS5qb2luKCcsICcpfWBcblx0XHRcdFx0XHRcdFx0XHRcdDogYENvbnRhaW5lciB0eXBlOiAke3R5cGVvZiBjb250YWluZXJ9YDtcblxuXHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0XHRcdFx0XHRcdGBObyB2YWxpZCBwbHVnaW4gY29uc3RydWN0b3IgZm91bmQgZm9yICcke3BsdWdpbklkfScuXFxuYCArXG5cdFx0XHRcdFx0XHRcdFx0XHRgU3VwcG9ydGVkIHBhdHRlcm5zOlxcbmAgK1xuXHRcdFx0XHRcdFx0XHRcdFx0YCAgLSBleHBvcnQgY29uc3QgWW91clBsdWdpbiA9IGNyZWF0ZVBsdWdpbih7Li4ufSlcXG5gICtcblx0XHRcdFx0XHRcdFx0XHRcdGAgIC0gZXhwb3J0IGRlZmF1bHQgY3JlYXRlUGx1Z2luKHsuLi59KVxcbmAgK1xuXHRcdFx0XHRcdFx0XHRcdFx0YCR7Y29udGFpbmVySW5mb31gLFxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHQvLyBWYWxpZGF0ZSBpdCBsb29rcyBsaWtlIGEgcGx1Z2luIGNvbnN0cnVjdG9yIChoYXMgYmluZGluZyBwcm9wZXJ0eSlcblx0XHRcdFx0XHRcdFx0aWYgKCEoQ29uc3RydWN0b3IgYXMgYW55KS5iaW5kaW5nKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgY29udGFpbmVySW5mbyA9IHR5cGVvZiBjb250YWluZXIgPT09IFwib2JqZWN0XCJcblx0XHRcdFx0XHRcdFx0XHRcdD8gYEZvdW5kIGV4cG9ydHM6ICR7T2JqZWN0LmtleXMoY29udGFpbmVyKS5qb2luKCcsICcpfWBcblx0XHRcdFx0XHRcdFx0XHRcdDogYENvbnRhaW5lciB0eXBlOiAke3R5cGVvZiBjb250YWluZXJ9YDtcblxuXHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0XHRcdFx0XHRcdGBJbnZhbGlkIHBsdWdpbiBjb25zdHJ1Y3RvciBmb3IgJyR7cGx1Z2luSWR9Jy4gYCArXG5cdFx0XHRcdFx0XHRcdFx0XHRgVGhlIGV4cG9ydGVkIHZhbHVlIG11c3QgYmUgY3JlYXRlZCB3aXRoIGNyZWF0ZVBsdWdpbigpLiBgICtcblx0XHRcdFx0XHRcdFx0XHRcdGBGb3VuZCBhIGZ1bmN0aW9uIGJ1dCBpdCdzIG1pc3NpbmcgdGhlIHJlcXVpcmVkICdiaW5kaW5nJyBwcm9wZXJ0eS5cXG5gICtcblx0XHRcdFx0XHRcdFx0XHRcdGAke2NvbnRhaW5lckluZm99YCxcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYFtNRl0g4pyFIExvYWRlZCBjb25zdHJ1Y3RvciBmb3IgJHtwbHVnaW5JZH1gKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIENvbnN0cnVjdG9yO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGNhdGNoOiAoZXJyb3IpOiBNb2R1bGVGZWRlcmF0aW9uRXJyb3IgPT5cblx0XHRcdFx0XHRcdFx0bmV3IE1vZHVsZUZlZGVyYXRpb25FcnJvcih7XG5cdFx0XHRcdFx0XHRcdFx0cGx1Z2luSWQsXG5cdFx0XHRcdFx0XHRcdFx0cmVtb3RlVXJsOiB1cmwsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6XG5cdFx0XHRcdFx0XHRcdFx0XHRlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSksXG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KSxcblx0XHR9O1xuXHR9KSxcbn0pIHt9XG4iLCJpbXBvcnQgeyBFZmZlY3QsIFJlZiB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB0eXBlIHsgQW55UGx1Z2luLCBJbml0aWFsaXplZFBsdWdpbiB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgdG9QbHVnaW5SdW50aW1lRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5MaWZlY3ljbGVTZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlNlcnZpY2U8UGx1Z2luTGlmZWN5Y2xlU2VydmljZT4oKShcIlBsdWdpbkxpZmVjeWNsZVNlcnZpY2VcIiwge1xuICBlZmZlY3Q6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcbiAgICBjb25zdCBhY3RpdmVQbHVnaW5zID0geWllbGQqIFJlZi5tYWtlKG5ldyBTZXQ8SW5pdGlhbGl6ZWRQbHVnaW48QW55UGx1Z2luPj4oKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVnaXN0ZXI6IDxUIGV4dGVuZHMgQW55UGx1Z2luPihwbHVnaW46IEluaXRpYWxpemVkUGx1Z2luPFQ+KSA9PlxuICAgICAgICBSZWYudXBkYXRlKGFjdGl2ZVBsdWdpbnMsIHBsdWdpbnMgPT5cbiAgICAgICAgICBuZXcgU2V0KHBsdWdpbnMpLmFkZChwbHVnaW4gYXMgSW5pdGlhbGl6ZWRQbHVnaW48QW55UGx1Z2luPilcbiAgICAgICAgKSxcblxuICAgICAgdW5yZWdpc3RlcjogKHBsdWdpbjogSW5pdGlhbGl6ZWRQbHVnaW48QW55UGx1Z2luPikgPT5cbiAgICAgICAgUmVmLnVwZGF0ZShhY3RpdmVQbHVnaW5zLCBwbHVnaW5zID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdTZXQgPSBuZXcgU2V0KHBsdWdpbnMpO1xuICAgICAgICAgIG5ld1NldC5kZWxldGUocGx1Z2luKTtcbiAgICAgICAgICByZXR1cm4gbmV3U2V0O1xuICAgICAgICB9KSxcblxuICAgICAgc2h1dGRvd246IChwbHVnaW46IEluaXRpYWxpemVkUGx1Z2luPEFueVBsdWdpbj4pID0+XG4gICAgICAgIEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAvLyBSZW1vdmUgZnJvbSBhY3RpdmUgcGx1Z2luc1xuICAgICAgICAgIHlpZWxkKiBSZWYudXBkYXRlKGFjdGl2ZVBsdWdpbnMsIHBsdWdpbnMgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3U2V0ID0gbmV3IFNldChwbHVnaW5zKTtcbiAgICAgICAgICAgIG5ld1NldC5kZWxldGUocGx1Z2luKTtcbiAgICAgICAgICAgIHJldHVybiBuZXdTZXQ7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvLyBTaHV0ZG93biB0aGUgcGx1Z2luXG4gICAgICAgICAgeWllbGQqIHBsdWdpbi5wbHVnaW4uc2h1dGRvd24oKS5waXBlKFxuICAgICAgICAgICAgRWZmZWN0Lm1hcEVycm9yKGVycm9yID0+XG4gICAgICAgICAgICAgIHRvUGx1Z2luUnVudGltZUVycm9yKGVycm9yLCBwbHVnaW4ucGx1Z2luLmlkLCB1bmRlZmluZWQsIFwic2h1dGRvd24tcGx1Z2luXCIsIGZhbHNlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuXG4gICAgICBjbGVhbnVwOiAoKSA9PlxuICAgICAgICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgY29uc3QgcGx1Z2lucyA9IHlpZWxkKiBSZWYuZ2V0KGFjdGl2ZVBsdWdpbnMpO1xuXG4gICAgICAgICAgLy8gU2h1dGRvd24gYWxsIGFjdGl2ZSBwbHVnaW5zIGNvbmN1cnJlbnRseVxuICAgICAgICAgIHlpZWxkKiBFZmZlY3QuZm9yRWFjaChcbiAgICAgICAgICAgIHBsdWdpbnMsXG4gICAgICAgICAgICBwbHVnaW4gPT5cbiAgICAgICAgICAgICAgcGx1Z2luLnBsdWdpbi5zaHV0ZG93bigpLnBpcGUoXG4gICAgICAgICAgICAgICAgRWZmZWN0Lm1hcEVycm9yKGVycm9yID0+XG4gICAgICAgICAgICAgICAgICB0b1BsdWdpblJ1bnRpbWVFcnJvcihlcnJvciwgcGx1Z2luLnBsdWdpbi5pZCwgdW5kZWZpbmVkLCBcImNsZWFudXAtc2h1dGRvd25cIiwgZmFsc2UpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBFZmZlY3QuY2F0Y2hBbGwoZXJyb3IgPT5cbiAgICAgICAgICAgICAgICAgIEVmZmVjdC5sb2dFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYEZhaWxlZCB0byBzaHV0ZG93biBwbHVnaW4gJHtwbHVnaW4ucGx1Z2luLmlkfSBkdXJpbmcgY2xlYW51cGAsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICB7IHBsdWdpbklkOiBwbHVnaW4ucGx1Z2luLmlkIH1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB7IGNvbmN1cnJlbmN5OiBcInVuYm91bmRlZFwiIH1cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLy8gQ2xlYXIgdGhlIGFjdGl2ZSBwbHVnaW5zIHNldFxuICAgICAgICAgIHlpZWxkKiBSZWYuc2V0KGFjdGl2ZVBsdWdpbnMsIG5ldyBTZXQoKSk7XG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgRWZmZWN0LmNhdGNoQWxsKCgpID0+IEVmZmVjdC52b2lkKSAvLyBDb252ZXJ0IGVycm9ycyB0byB2b2lkIGZvciBjbGVhbnVwXG4gICAgICAgICksXG4gICAgfTtcbiAgfSksXG59KSB7IH1cbiIsImltcG9ydCB7IEVmZmVjdCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB0eXBlIHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGUgPSA8VD4oXG5cdHNjaGVtYTogei5ab2RTY2hlbWE8VD4sXG5cdGRhdGE6IHVua25vd24sXG5cdHBsdWdpbklkOiBzdHJpbmcsXG5cdHN0YWdlOiBcImNvbmZpZ1wiIHwgXCJpbnB1dFwiIHwgXCJvdXRwdXRcIiB8IFwic3RhdGVcIixcbik6IEVmZmVjdC5FZmZlY3Q8VCwgVmFsaWRhdGlvbkVycm9yPiA9PlxuXHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0Y29uc3QgcmVzdWx0ID0gc2NoZW1hLnNhZmVQYXJzZShkYXRhKTtcblx0XHRpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcblx0XHRcdHJldHVybiByZXN1bHQuZGF0YTtcblx0XHR9XG5cdFx0cmV0dXJuIHlpZWxkKiBFZmZlY3QuZmFpbChcblx0XHRcdG5ldyBWYWxpZGF0aW9uRXJyb3Ioe1xuXHRcdFx0XHRwbHVnaW5JZCxcblx0XHRcdFx0c3RhZ2UsXG5cdFx0XHRcdHpvZEVycm9yOiByZXN1bHQuZXJyb3IsXG5cdFx0XHR9KSxcblx0XHQpO1xuXHR9KTtcbiIsImltcG9ydCB7IENvbnRleHQsIEVmZmVjdCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgdHlwZSB7IFNlY3JldHNDb25maWcgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IFBsdWdpblJ1bnRpbWVFcnJvciB9IGZyb20gXCIuLi9lcnJvcnNcIjtcblxuY29uc3QgY29uZmlnU2NoZW1hID0gei5vYmplY3Qoe1xuXHRzZWNyZXRzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSlcbn0pLmxvb3NlKCk7XG5cbmV4cG9ydCBjbGFzcyBTZWNyZXRzQ29uZmlnVGFnIGV4dGVuZHMgQ29udGV4dC5UYWcoXCJTZWNyZXRzQ29uZmlnXCIpPFxuXHRTZWNyZXRzQ29uZmlnVGFnLFxuXHRTZWNyZXRzQ29uZmlnXG4+KCkgeyB9XG5cbmV4cG9ydCBjbGFzcyBTZWNyZXRzU2VydmljZSBleHRlbmRzIEVmZmVjdC5TZXJ2aWNlPFNlY3JldHNTZXJ2aWNlPigpKFwiU2VjcmV0c1NlcnZpY2VcIiwge1xuXHRlZmZlY3Q6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRjb25zdCBzZWNyZXRzID0geWllbGQqIFNlY3JldHNDb25maWdUYWc7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0aHlkcmF0ZVNlY3JldHM6IDxUPihjb25maWc6IFQpID0+XG5cdFx0XHRcdEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRcdFx0XHRjb25zdCBwYXJzZVJlc3VsdCA9IGNvbmZpZ1NjaGVtYS5wYXJzZShjb25maWcpO1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRjb25zdCBjb25maWdTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShwYXJzZVJlc3VsdCk7XG5cdFx0XHRcdFx0XHRsZXQgaHlkcmF0ZWRTdHJpbmcgPSBjb25maWdTdHJpbmc7XG5cblx0XHRcdFx0XHRcdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNlY3JldHMpKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHBhdHRlcm4gPSBuZXcgUmVnRXhwKGB7eyR7a2V5fX19YCwgXCJnXCIpO1xuXHRcdFx0XHRcdFx0XHRoeWRyYXRlZFN0cmluZyA9IGh5ZHJhdGVkU3RyaW5nLnJlcGxhY2UocGF0dGVybiwgU3RyaW5nKHZhbHVlKSk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHJldHVybiBKU09OLnBhcnNlKGh5ZHJhdGVkU3RyaW5nKSBhcyBUO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4geWllbGQqIEVmZmVjdC5mYWlsKFxuXHRcdFx0XHRcdFx0XHRuZXcgUGx1Z2luUnVudGltZUVycm9yKHtcblx0XHRcdFx0XHRcdFx0XHRvcGVyYXRpb246IFwiaHlkcmF0ZS1zZWNyZXRzXCIsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6XG5cdFx0XHRcdFx0XHRcdFx0XHRlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSksXG5cdFx0XHRcdFx0XHRcdFx0cmV0cnlhYmxlOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0fTtcblx0fSksXG59KSB7IH1cbiIsImltcG9ydCB0eXBlIHsgSW5mZXJTY2hlbWFJbnB1dCwgSW5mZXJTY2hlbWFPdXRwdXQgfSBmcm9tIFwiQG9ycGMvY29udHJhY3RcIjtcbmltcG9ydCB7IENvbnRleHQsIEVmZmVjdCwgU2NvcGUgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEFueVBsdWdpbixcblx0SW5pdGlhbGl6ZWRQbHVnaW4sXG5cdExvYWRlZFBsdWdpbixcblx0UGx1Z2luSW5zdGFuY2UsXG5cdFBsdWdpblJlZ2lzdHJ5XG59IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgUGx1Z2luUnVudGltZUVycm9yLCB0b1BsdWdpblJ1bnRpbWVFcnJvciB9IGZyb20gXCIuLi9lcnJvcnNcIjtcbmltcG9ydCB7IHZhbGlkYXRlIH0gZnJvbSBcIi4uL3ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IE1vZHVsZUZlZGVyYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4vbW9kdWxlLWZlZGVyYXRpb24uc2VydmljZVwiO1xuaW1wb3J0IHsgU2VjcmV0c1NlcnZpY2UgfSBmcm9tIFwiLi9zZWNyZXRzLnNlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIFBsdWdpblJlZ2lzdHJ5VGFnIGV4dGVuZHMgQ29udGV4dC5UYWcoXCJQbHVnaW5SZWdpc3RyeVwiKTxcblx0UGx1Z2luUmVnaXN0cnlUYWcsXG5cdFBsdWdpblJlZ2lzdHJ5XG4+KCkgeyB9XG5cbmV4cG9ydCBjbGFzcyBSZWdpc3RyeVNlcnZpY2UgZXh0ZW5kcyBFZmZlY3QuU2VydmljZTxSZWdpc3RyeVNlcnZpY2U+KCkoXCJSZWdpc3RyeVNlcnZpY2VcIiwge1xuXHRlZmZlY3Q6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRjb25zdCByZWdpc3RyeSA9IHlpZWxkKiBQbHVnaW5SZWdpc3RyeVRhZztcblxuXHRcdHJldHVybiB7XG5cdFx0XHRnZXQ6IChwbHVnaW5JZDogc3RyaW5nKSA9PlxuXHRcdFx0XHRFZmZlY3QuZnJvbU51bGxhYmxlKHJlZ2lzdHJ5W3BsdWdpbklkXSkucGlwZShcblx0XHRcdFx0XHRFZmZlY3QubWFwRXJyb3IoKCkgPT5cblx0XHRcdFx0XHRcdG5ldyBQbHVnaW5SdW50aW1lRXJyb3Ioe1xuXHRcdFx0XHRcdFx0XHRwbHVnaW5JZCxcblx0XHRcdFx0XHRcdFx0b3BlcmF0aW9uOiBcInZhbGlkYXRlLXBsdWdpbi1pZFwiLFxuXHRcdFx0XHRcdFx0XHRjYXVzZTogbmV3IEVycm9yKGBQbHVnaW4gJHtwbHVnaW5JZH0gbm90IGZvdW5kIGluIHJlZ2lzdHJ5YCksXG5cdFx0XHRcdFx0XHRcdHJldHJ5YWJsZTogZmFsc2UsXG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHQpLFxuXHRcdH07XG5cdH0pLFxufSkgeyB9XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5Mb2FkZXJTZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlNlcnZpY2U8UGx1Z2luTG9hZGVyU2VydmljZT4oKShcIlBsdWdpbkxvYWRlclNlcnZpY2VcIiwge1xuXHRlZmZlY3Q6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRjb25zdCBtb2R1bGVGZWRlcmF0aW9uU2VydmljZSA9IHlpZWxkKiBNb2R1bGVGZWRlcmF0aW9uU2VydmljZTtcblx0XHRjb25zdCBzZWNyZXRzU2VydmljZSA9IHlpZWxkKiBTZWNyZXRzU2VydmljZTtcblx0XHRjb25zdCByZWdpc3RyeVNlcnZpY2UgPSB5aWVsZCogUmVnaXN0cnlTZXJ2aWNlO1xuXG5cdFx0Y29uc3QgcmVzb2x2ZVVybCA9IChiYXNlVXJsOiBzdHJpbmcsIHZlcnNpb24/OiBzdHJpbmcpOiBzdHJpbmcgPT5cblx0XHRcdHZlcnNpb24gJiYgdmVyc2lvbiAhPT0gXCJsYXRlc3RcIlxuXHRcdFx0XHQ/IGJhc2VVcmwucmVwbGFjZShcIkBsYXRlc3RcIiwgYEAke3ZlcnNpb259YClcblx0XHRcdFx0OiBiYXNlVXJsO1xuXG5cdFx0Y29uc3QgZ2V0TWV0YWRhdGEgPSAocGx1Z2luSWQ6IHN0cmluZykgPT4gcmVnaXN0cnlTZXJ2aWNlLmdldChwbHVnaW5JZCk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0bG9hZFBsdWdpbjogKHBsdWdpbklkOiBzdHJpbmcpID0+XG5cdFx0XHRcdEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRcdFx0XHRjb25zdCBtZXRhZGF0YSA9IHlpZWxkKiBnZXRNZXRhZGF0YShwbHVnaW5JZCk7XG5cdFx0XHRcdFx0Y29uc3QgdXJsID0gcmVzb2x2ZVVybChtZXRhZGF0YS5yZW1vdGVVcmwpO1xuXG5cdFx0XHRcdFx0eWllbGQqIG1vZHVsZUZlZGVyYXRpb25TZXJ2aWNlLnJlZ2lzdGVyUmVtb3RlKHBsdWdpbklkLCB1cmwpLnBpcGUoXG5cdFx0XHRcdFx0XHRFZmZlY3QubWFwRXJyb3IoKGVycm9yKSA9PlxuXHRcdFx0XHRcdFx0XHR0b1BsdWdpblJ1bnRpbWVFcnJvcihlcnJvci5jYXVzZSwgcGx1Z2luSWQsIHVuZGVmaW5lZCwgXCJyZWdpc3Rlci1yZW1vdGVcIiwgdHJ1ZSksXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHR5aWVsZCogRWZmZWN0LmxvZ0RlYnVnKFwiTG9hZGluZyBwbHVnaW5cIiwgeyBwbHVnaW5JZCwgdXJsIH0pO1xuXG5cdFx0XHRcdFx0Y29uc3QgY3RvciA9IHlpZWxkKiBtb2R1bGVGZWRlcmF0aW9uU2VydmljZS5sb2FkUmVtb3RlQ29uc3RydWN0b3IocGx1Z2luSWQsIHVybCkucGlwZShcblx0XHRcdFx0XHRcdEVmZmVjdC5tYXBFcnJvcigoZXJyb3IpID0+XG5cdFx0XHRcdFx0XHRcdHRvUGx1Z2luUnVudGltZUVycm9yKGVycm9yLmNhdXNlLCBwbHVnaW5JZCwgdW5kZWZpbmVkLCBcImxvYWQtcmVtb3RlXCIsIGZhbHNlKSxcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRjdG9yLFxuXHRcdFx0XHRcdFx0bWV0YWRhdGE6IG1ldGFkYXRhLFxuXHRcdFx0XHRcdH0gc2F0aXNmaWVzIExvYWRlZFBsdWdpbjtcblx0XHRcdFx0fSksXG5cblx0XHRcdGluc3RhbnRpYXRlUGx1Z2luOiA8VCBleHRlbmRzIEFueVBsdWdpbj4oXG5cdFx0XHRcdHBsdWdpbklkOiBzdHJpbmcsXG5cdFx0XHRcdGxvYWRlZFBsdWdpbjogTG9hZGVkUGx1Z2luPFQ+LFxuXHRcdFx0KSA9PlxuXHRcdFx0XHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRcdFx0Y29uc3QgaW5zdGFuY2UgPSB5aWVsZCogRWZmZWN0LnRyeSgoKSA9PiBuZXcgbG9hZGVkUGx1Z2luLmN0b3IoKSkucGlwZShcblx0XHRcdFx0XHRcdEVmZmVjdC5tYXBFcnJvcigoZXJyb3IpID0+XG5cdFx0XHRcdFx0XHRcdHRvUGx1Z2luUnVudGltZUVycm9yKFxuXHRcdFx0XHRcdFx0XHRcdGVycm9yLFxuXHRcdFx0XHRcdFx0XHRcdHBsdWdpbklkLFxuXHRcdFx0XHRcdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0XHRcdFx0XHRcImluc3RhbnRpYXRlLXBsdWdpblwiLFxuXHRcdFx0XHRcdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0KGluc3RhbmNlLmlkIGFzIHN0cmluZykgPSBwbHVnaW5JZDtcblxuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRwbHVnaW46IGluc3RhbmNlLFxuXHRcdFx0XHRcdFx0bWV0YWRhdGE6IGxvYWRlZFBsdWdpbi5tZXRhZGF0YSxcblx0XHRcdFx0XHR9IHNhdGlzZmllcyBQbHVnaW5JbnN0YW5jZTxUPjtcblx0XHRcdFx0fSksXG5cblx0XHRcdGluaXRpYWxpemVQbHVnaW46IDxUIGV4dGVuZHMgQW55UGx1Z2luPihcblx0XHRcdFx0cGx1Z2luSW5zdGFuY2U6IFBsdWdpbkluc3RhbmNlPFQ+LFxuXHRcdFx0XHRjb25maWc6IHsgdmFyaWFibGVzOiBJbmZlclNjaGVtYUlucHV0PFRbXCJjb25maWdTY2hlbWFcIl1bXCJ2YXJpYWJsZXNcIl0+OyBzZWNyZXRzOiBJbmZlclNjaGVtYUlucHV0PFRbXCJjb25maWdTY2hlbWFcIl1bXCJzZWNyZXRzXCJdPiB9LFxuXHRcdFx0KSA9PlxuXHRcdFx0XHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRcdFx0Y29uc3QgeyBwbHVnaW4gfSA9IHBsdWdpbkluc3RhbmNlO1xuXG5cdFx0XHRcdFx0Ly8gVmFsaWRhdGUgYW5kIGh5ZHJhdGUgY29uZmlnXG5cdFx0XHRcdFx0Y29uc3QgdmFsaWRhdGVkVmFyaWFibGVzID0geWllbGQqIHZhbGlkYXRlKFxuXHRcdFx0XHRcdFx0cGx1Z2luLmNvbmZpZ1NjaGVtYS52YXJpYWJsZXMgYXMgei5ab2RTY2hlbWE8SW5mZXJTY2hlbWFPdXRwdXQ8VFtcImNvbmZpZ1NjaGVtYVwiXVtcInZhcmlhYmxlc1wiXT4+LFxuXHRcdFx0XHRcdFx0Y29uZmlnLnZhcmlhYmxlcyxcblx0XHRcdFx0XHRcdHBsdWdpbi5pZCxcblx0XHRcdFx0XHRcdFwiY29uZmlnXCIsXG5cdFx0XHRcdFx0KS5waXBlKFxuXHRcdFx0XHRcdFx0RWZmZWN0Lm1hcEVycm9yKCh2YWxpZGF0aW9uRXJyb3IpID0+XG5cdFx0XHRcdFx0XHRcdG5ldyBQbHVnaW5SdW50aW1lRXJyb3Ioe1xuXHRcdFx0XHRcdFx0XHRcdHBsdWdpbklkOiBwbHVnaW4uaWQsXG5cdFx0XHRcdFx0XHRcdFx0b3BlcmF0aW9uOiBcInZhbGlkYXRlLWNvbmZpZ1wiLFxuXHRcdFx0XHRcdFx0XHRcdGNhdXNlOiB2YWxpZGF0aW9uRXJyb3Iuem9kRXJyb3IsXG5cdFx0XHRcdFx0XHRcdFx0cmV0cnlhYmxlOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHQvLyBWYWxpZGF0ZSBzZWNyZXRzXG5cdFx0XHRcdFx0Y29uc3QgdmFsaWRhdGVkU2VjcmV0cyA9IHlpZWxkKiB2YWxpZGF0ZShcblx0XHRcdFx0XHRcdHBsdWdpbi5jb25maWdTY2hlbWEuc2VjcmV0cyBhcyB6LlpvZFNjaGVtYTxJbmZlclNjaGVtYU91dHB1dDxUW1wiY29uZmlnU2NoZW1hXCJdW1wic2VjcmV0c1wiXT4+LFxuXHRcdFx0XHRcdFx0Y29uZmlnLnNlY3JldHMsXG5cdFx0XHRcdFx0XHRwbHVnaW4uaWQsXG5cdFx0XHRcdFx0XHRcImNvbmZpZ1wiLFxuXHRcdFx0XHRcdCkucGlwZShcblx0XHRcdFx0XHRcdEVmZmVjdC5tYXBFcnJvcigodmFsaWRhdGlvbkVycm9yKSA9PlxuXHRcdFx0XHRcdFx0XHRuZXcgUGx1Z2luUnVudGltZUVycm9yKHtcblx0XHRcdFx0XHRcdFx0XHRwbHVnaW5JZDogcGx1Z2luLmlkLFxuXHRcdFx0XHRcdFx0XHRcdG9wZXJhdGlvbjogXCJ2YWxpZGF0ZS1zZWNyZXRzXCIsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6IHZhbGlkYXRpb25FcnJvci56b2RFcnJvcixcblx0XHRcdFx0XHRcdFx0XHRyZXRyeWFibGU6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdC8vIEh5ZHJhdGUgc2VjcmV0cyBpbiB2YXJpYWJsZXNcblx0XHRcdFx0XHRjb25zdCBoeWRyYXRlZENvbmZpZyA9IHlpZWxkKiBzZWNyZXRzU2VydmljZS5oeWRyYXRlU2VjcmV0cyh7XG5cdFx0XHRcdFx0XHR2YXJpYWJsZXM6IHZhbGlkYXRlZFZhcmlhYmxlcyxcblx0XHRcdFx0XHRcdHNlY3JldHM6IHZhbGlkYXRlZFNlY3JldHMsXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRjb25zdCBfdmFyaWFibGVzID0geWllbGQqIHZhbGlkYXRlKFxuXHRcdFx0XHRcdFx0cGx1Z2luLmNvbmZpZ1NjaGVtYS52YXJpYWJsZXMgYXMgei5ab2RTY2hlbWE8SW5mZXJTY2hlbWFPdXRwdXQ8VFtcImNvbmZpZ1NjaGVtYVwiXVtcInZhcmlhYmxlc1wiXT4+LFxuXHRcdFx0XHRcdFx0aHlkcmF0ZWRDb25maWcudmFyaWFibGVzLFxuXHRcdFx0XHRcdFx0cGx1Z2luLmlkLFxuXHRcdFx0XHRcdFx0XCJjb25maWdcIixcblx0XHRcdFx0XHQpLnBpcGUoXG5cdFx0XHRcdFx0XHRFZmZlY3QubWFwRXJyb3IoKHZhbGlkYXRpb25FcnJvcikgPT5cblx0XHRcdFx0XHRcdFx0bmV3IFBsdWdpblJ1bnRpbWVFcnJvcih7XG5cdFx0XHRcdFx0XHRcdFx0cGx1Z2luSWQ6IHBsdWdpbi5pZCxcblx0XHRcdFx0XHRcdFx0XHRvcGVyYXRpb246IFwidmFsaWRhdGUtaHlkcmF0ZWQtY29uZmlnXCIsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6IHZhbGlkYXRpb25FcnJvci56b2RFcnJvcixcblx0XHRcdFx0XHRcdFx0XHRyZXRyeWFibGU6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdC8vIENyZWF0ZSBhIGxvbmctbGl2ZWQgc2NvcGUgZm9yIHRoaXMgcGx1Z2luIGluc3RhbmNlXG5cdFx0XHRcdFx0Y29uc3Qgc2NvcGUgPSB5aWVsZCogU2NvcGUubWFrZSgpO1xuXG5cdFx0XHRcdFx0Ly8gSW5pdGlhbGl6ZSBwbHVnaW4gd2l0aGluIHRoZSBzY29wZVxuXHRcdFx0XHRcdGNvbnN0IGNvbnRleHQgPSB5aWVsZCogcGx1Z2luLmluaXRpYWxpemUoeyB2YXJpYWJsZXM6IF92YXJpYWJsZXMsIHNlY3JldHM6IGh5ZHJhdGVkQ29uZmlnLnNlY3JldHMgfSkucGlwZShcblx0XHRcdFx0XHRcdEVmZmVjdC5wcm92aWRlU2VydmljZShTY29wZS5TY29wZSwgc2NvcGUpLFxuXHRcdFx0XHRcdFx0RWZmZWN0Lm1hcEVycm9yKChlcnJvcikgPT5cblx0XHRcdFx0XHRcdFx0dG9QbHVnaW5SdW50aW1lRXJyb3IoZXJyb3IsIHBsdWdpbi5pZCwgdW5kZWZpbmVkLCBcImluaXRpYWxpemUtcGx1Z2luXCIsIGZhbHNlKSxcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdHBsdWdpbixcblx0XHRcdFx0XHRcdG1ldGFkYXRhOiBwbHVnaW5JbnN0YW5jZS5tZXRhZGF0YSxcblx0XHRcdFx0XHRcdGNvbmZpZzogeyB2YXJpYWJsZXM6IF92YXJpYWJsZXMsIHNlY3JldHM6IGh5ZHJhdGVkQ29uZmlnLnNlY3JldHMgfSxcblx0XHRcdFx0XHRcdGNvbnRleHQsXG5cdFx0XHRcdFx0XHRzY29wZSxcblx0XHRcdFx0XHR9IHNhdGlzZmllcyBJbml0aWFsaXplZFBsdWdpbjxUPjtcblx0XHRcdFx0fSksXG5cdFx0fTtcblx0fSksXG59KSB7XG59XG4iLCJpbXBvcnQgeyBFZmZlY3QsIEV4aXQsIExheWVyLCBTY29wZSB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB0eXBlIHtcblx0QW55UGx1Z2luLFxuXHRJbml0aWFsaXplZFBsdWdpbixcblx0UGx1Z2luUmVnaXN0cnksXG5cdFNlY3JldHNDb25maWdcbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBNb2R1bGVGZWRlcmF0aW9uU2VydmljZSB9IGZyb20gXCIuL21vZHVsZS1mZWRlcmF0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7IFBsdWdpbkxpZmVjeWNsZVNlcnZpY2UgfSBmcm9tIFwiLi9wbHVnaW4tbGlmZWN5Y2xlLnNlcnZpY2VcIjtcbmltcG9ydCB7IFBsdWdpbkxvYWRlclNlcnZpY2UsIFBsdWdpblJlZ2lzdHJ5VGFnLCBSZWdpc3RyeVNlcnZpY2UgfSBmcm9tIFwiLi9wbHVnaW4tbG9hZGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7IFNlY3JldHNDb25maWdUYWcsIFNlY3JldHNTZXJ2aWNlIH0gZnJvbSBcIi4vc2VjcmV0cy5zZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5TZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlNlcnZpY2U8UGx1Z2luU2VydmljZT4oKShcIlBsdWdpblNlcnZpY2VcIiwge1xuXHRzY29wZWQ6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRjb25zdCBsb2FkZXIgPSB5aWVsZCogUGx1Z2luTG9hZGVyU2VydmljZTtcblx0XHRjb25zdCBsaWZlY3ljbGUgPSB5aWVsZCogUGx1Z2luTGlmZWN5Y2xlU2VydmljZTtcblxuXHRcdHJldHVybiB7XG5cdFx0XHRsb2FkUGx1Z2luOiBsb2FkZXIubG9hZFBsdWdpbixcblx0XHRcdGluc3RhbnRpYXRlUGx1Z2luOiBsb2FkZXIuaW5zdGFudGlhdGVQbHVnaW4sXG5cdFx0XHRpbml0aWFsaXplUGx1Z2luOiBsb2FkZXIuaW5pdGlhbGl6ZVBsdWdpbixcblx0XHRcdHNodXRkb3duUGx1Z2luOiAocGx1Z2luOiBJbml0aWFsaXplZFBsdWdpbjxBbnlQbHVnaW4+KSA9PlxuXHRcdFx0XHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRcdFx0Ly8gU2h1dGRvd24gdGhlIHBsdWdpbiBmaXJzdCAoZ3JhY2VmdWwgY2xlYW51cClcblx0XHRcdFx0XHR5aWVsZCogcGx1Z2luLnBsdWdpbi5zaHV0ZG93bigpLnBpcGUoXG5cdFx0XHRcdFx0XHRFZmZlY3QuY2F0Y2hBbGwoKCkgPT4gRWZmZWN0LnZvaWQpXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdC8vIENsb3NlIHRoZSBwbHVnaW4gc2NvcGUgdG8gaW50ZXJydXB0IGZpYmVycyBhbmQgcmVsZWFzZSByZXNvdXJjZXNcblx0XHRcdFx0XHR5aWVsZCogU2NvcGUuY2xvc2UocGx1Z2luLnNjb3BlLCBFeGl0LnN1Y2NlZWQodW5kZWZpbmVkKSk7XG5cblx0XHRcdFx0XHQvLyBVbnJlZ2lzdGVyIGZyb20gbGlmZWN5Y2xlIHRyYWNraW5nXG5cdFx0XHRcdFx0eWllbGQqIGxpZmVjeWNsZS51bnJlZ2lzdGVyKHBsdWdpbik7XG5cdFx0XHRcdH0pLFxuXHRcdFx0Y2xlYW51cDogbGlmZWN5Y2xlLmNsZWFudXAsXG5cdFx0fTtcblx0fSksXG59KSB7XG5cdHN0YXRpYyBMaXZlID0gKHJlZ2lzdHJ5OiBQbHVnaW5SZWdpc3RyeSwgc2VjcmV0czogU2VjcmV0c0NvbmZpZykgPT4ge1xuXHRcdGNvbnN0IGNvbnRleHRMYXllciA9IExheWVyLm1lcmdlQWxsKFxuXHRcdFx0TGF5ZXIuc3VjY2VlZChQbHVnaW5SZWdpc3RyeVRhZywgcmVnaXN0cnkpLFxuXHRcdFx0TGF5ZXIuc3VjY2VlZChTZWNyZXRzQ29uZmlnVGFnLCBzZWNyZXRzKSxcblx0XHQpO1xuXG5cdFx0Y29uc3Qgc2VydmljZXNMYXllciA9IExheWVyLm1lcmdlQWxsKFxuXHRcdFx0TW9kdWxlRmVkZXJhdGlvblNlcnZpY2UuRGVmYXVsdCxcblx0XHRcdFNlY3JldHNTZXJ2aWNlLkRlZmF1bHQsXG5cdFx0XHRSZWdpc3RyeVNlcnZpY2UuRGVmYXVsdCxcblx0XHRcdFBsdWdpbkxpZmVjeWNsZVNlcnZpY2UuRGVmYXVsdCxcblx0XHQpLnBpcGUoXG5cdFx0XHRMYXllci5wcm92aWRlKGNvbnRleHRMYXllcilcblx0XHQpO1xuXG5cdFx0cmV0dXJuIFBsdWdpblNlcnZpY2UuRGVmYXVsdC5waXBlKFxuXHRcdFx0TGF5ZXIucHJvdmlkZShQbHVnaW5Mb2FkZXJTZXJ2aWNlLkRlZmF1bHQpLFxuXHRcdFx0TGF5ZXIucHJvdmlkZShzZXJ2aWNlc0xheWVyKVxuXHRcdCk7XG5cdH1cbn1cbiIsImltcG9ydCB7IGNyZWF0ZVJvdXRlckNsaWVudCB9IGZyb20gXCJAb3JwYy9zZXJ2ZXJcIjtcbmltcG9ydCB7IENhdXNlLCBFZmZlY3QsIEV4aXQsIEhhc2gsIE1hbmFnZWRSdW50aW1lLCBPcHRpb24gfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgdHlwZSB7XG5cdEFueVBsdWdpbixcblx0SW5pdGlhbGl6ZWRQbHVnaW4sXG5cdExvYWRlZFBsdWdpbixcblx0UGx1Z2luQ2xpZW50VHlwZSxcblx0UGx1Z2luQ29uZmlnSW5wdXQsXG5cdFBsdWdpbkluc3RhbmNlLFxuXHRQbHVnaW5SZWdpc3RyeSxcblx0UGx1Z2luUm91dGVyVHlwZSxcblx0UGx1Z2luUnVudGltZUNvbmZpZyxcblx0UmVnaXN0ZXJlZFBsdWdpbixcblx0UmVnaXN0ZXJlZFBsdWdpbnMsXG5cdFVzZVBsdWdpblJlc3VsdFxufSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IFBsdWdpblJ1bnRpbWVFcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuaW1wb3J0IHsgUGx1Z2luU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL3BsdWdpbi5zZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5SdW50aW1lPFIgZXh0ZW5kcyBSZWdpc3RlcmVkUGx1Z2lucyA9IFJlZ2lzdGVyZWRQbHVnaW5zPiB7XG5cdHByaXZhdGUgcGx1Z2luQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgRWZmZWN0LkVmZmVjdDxJbml0aWFsaXplZFBsdWdpbjxBbnlQbHVnaW4+LCBQbHVnaW5SdW50aW1lRXJyb3I+PigpO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgcnVudGltZTogTWFuYWdlZFJ1bnRpbWUuTWFuYWdlZFJ1bnRpbWU8UGx1Z2luU2VydmljZSwgbmV2ZXI+LFxuXHRcdHByaXZhdGUgcmVnaXN0cnk6IFBsdWdpblJlZ2lzdHJ5XG5cdCkgeyB9XG5cblx0cHJpdmF0ZSBnZW5lcmF0ZUNhY2hlS2V5KHBsdWdpbklkOiBzdHJpbmcsIGNvbmZpZzogdW5rbm93bik6IHN0cmluZyB7XG5cdFx0Y29uc3QgY29uZmlnSGFzaCA9IEhhc2guc3RydWN0dXJlKGNvbmZpZyBhcyBvYmplY3QpLnRvU3RyaW5nKCk7XG5cdFx0cmV0dXJuIGAke3BsdWdpbklkfToke2NvbmZpZ0hhc2h9YDtcblx0fVxuXG5cdHByaXZhdGUgdmFsaWRhdGVQbHVnaW5JZChcblx0XHRwbHVnaW5JZDogc3RyaW5nXG5cdCk6IEVmZmVjdC5FZmZlY3Q8c3RyaW5nLCBQbHVnaW5SdW50aW1lRXJyb3I+IHtcblx0XHRpZiAoIShwbHVnaW5JZCBpbiB0aGlzLnJlZ2lzdHJ5KSkge1xuXHRcdFx0cmV0dXJuIEVmZmVjdC5mYWlsKG5ldyBQbHVnaW5SdW50aW1lRXJyb3Ioe1xuXHRcdFx0XHRwbHVnaW5JZDogU3RyaW5nKHBsdWdpbklkKSxcblx0XHRcdFx0b3BlcmF0aW9uOiBcInZhbGlkYXRlLXBsdWdpbi1pZFwiLFxuXHRcdFx0XHRjYXVzZTogbmV3IEVycm9yKGBQbHVnaW4gSUQgJyR7U3RyaW5nKHBsdWdpbklkKX0nIG5vdCBmb3VuZCBpbiByZWdpc3RyeS5gKSxcblx0XHRcdFx0cmV0cnlhYmxlOiBmYWxzZSxcblx0XHRcdH0pKTtcblx0XHR9XG5cdFx0cmV0dXJuIEVmZmVjdC5zdWNjZWVkKFN0cmluZyhwbHVnaW5JZCkpO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBydW5Qcm9taXNlPEEsIEU+KFxuXHRcdGVmZmVjdDogRWZmZWN0LkVmZmVjdDxBLCBFLCBQbHVnaW5TZXJ2aWNlPlxuXHQpOiBQcm9taXNlPEE+IHtcblx0XHRjb25zdCBleGl0ID0gYXdhaXQgdGhpcy5ydW50aW1lLnJ1blByb21pc2VFeGl0KGVmZmVjdCk7XG5cblx0XHRpZiAoRXhpdC5pc0ZhaWx1cmUoZXhpdCkpIHtcblx0XHRcdGNvbnN0IGVycm9yID0gQ2F1c2UuZmFpbHVyZU9wdGlvbihleGl0LmNhdXNlKTtcblx0XHRcdGlmIChPcHRpb24uaXNTb21lKGVycm9yKSkge1xuXHRcdFx0XHR0aHJvdyBlcnJvci52YWx1ZTtcblx0XHRcdH1cblx0XHRcdHRocm93IENhdXNlLnNxdWFzaChleGl0LmNhdXNlKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZXhpdC52YWx1ZTtcblx0fVxuXG5cdGFzeW5jIHVzZVBsdWdpbjxLIGV4dGVuZHMga2V5b2YgUmVnaXN0ZXJlZFBsdWdpbnMgJiBzdHJpbmc+KFxuXHRcdHBsdWdpbklkOiBLLFxuXHRcdGNvbmZpZzogUGx1Z2luQ29uZmlnSW5wdXQ8UltLXT5cblx0KTogUHJvbWlzZTxVc2VQbHVnaW5SZXN1bHQ8Sz4+IHtcblx0XHRjb25zdCBjYWNoZUtleSA9IHRoaXMuZ2VuZXJhdGVDYWNoZUtleShwbHVnaW5JZCwgY29uZmlnKTtcblxuXHRcdGxldCBjYWNoZWRQbHVnaW4gPSB0aGlzLnBsdWdpbkNhY2hlLmdldChjYWNoZUtleSk7XG5cdFx0aWYgKCFjYWNoZWRQbHVnaW4pIHtcblx0XHRcdGNvbnN0IG9wZXJhdGlvbiA9IEVmZmVjdC5nZW4odGhpcywgZnVuY3Rpb24qICgpIHtcblx0XHRcdFx0Y29uc3QgcGx1Z2luU2VydmljZSA9IHlpZWxkKiBQbHVnaW5TZXJ2aWNlO1xuXHRcdFx0XHRjb25zdCB2YWxpZGF0ZWRJZCA9IHlpZWxkKiB0aGlzLnZhbGlkYXRlUGx1Z2luSWQocGx1Z2luSWQpO1xuXG5cdFx0XHRcdC8vIExvYWQg4oaSIEluc3RhbnRpYXRlIOKGkiBJbml0aWFsaXplXG5cdFx0XHRcdGNvbnN0IGN0b3IgPSB5aWVsZCogcGx1Z2luU2VydmljZS5sb2FkUGx1Z2luKHZhbGlkYXRlZElkKTtcblx0XHRcdFx0Y29uc3QgaW5zdGFuY2UgPSB5aWVsZCogcGx1Z2luU2VydmljZS5pbnN0YW50aWF0ZVBsdWdpbihwbHVnaW5JZCwgY3Rvcik7XG5cdFx0XHRcdGNvbnN0IGluaXRpYWxpemVkID0geWllbGQqIHBsdWdpblNlcnZpY2UuaW5pdGlhbGl6ZVBsdWdpbihpbnN0YW5jZSwgY29uZmlnKTtcblxuXHRcdFx0XHRyZXR1cm4gaW5pdGlhbGl6ZWQ7XG5cdFx0XHR9KS5waXBlKEVmZmVjdC5wcm92aWRlKHRoaXMucnVudGltZSkpO1xuXG5cdFx0XHRjYWNoZWRQbHVnaW4gPSBFZmZlY3QuY2FjaGVkKG9wZXJhdGlvbikucGlwZShFZmZlY3QuZmxhdHRlbik7XG5cdFx0XHR0aGlzLnBsdWdpbkNhY2hlLnNldChjYWNoZUtleSwgY2FjaGVkUGx1Z2luKTtcblx0XHR9XG5cblx0XHRjb25zdCBpbml0aWFsaXplZCA9IGF3YWl0IHRoaXMucnVuUHJvbWlzZShjYWNoZWRQbHVnaW4pO1xuXHRcdGNvbnN0IHJvdXRlciA9IGluaXRpYWxpemVkLnBsdWdpbi5jcmVhdGVSb3V0ZXIoaW5pdGlhbGl6ZWQuY29udGV4dCk7XG5cdFx0Y29uc3QgY2xpZW50ID0gY3JlYXRlUm91dGVyQ2xpZW50KHJvdXRlcik7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0cm91dGVyOiByb3V0ZXIgYXMgUGx1Z2luUm91dGVyVHlwZTxSW0tdPixcblx0XHRcdGNsaWVudDogY2xpZW50IGFzIFBsdWdpbkNsaWVudFR5cGU8UltLXT4sXG5cdFx0XHRtZXRhZGF0YTogaW5pdGlhbGl6ZWQubWV0YWRhdGEsXG5cdFx0XHRpbml0aWFsaXplZDogaW5pdGlhbGl6ZWQgYXMgSW5pdGlhbGl6ZWRQbHVnaW48UmVnaXN0ZXJlZFBsdWdpbjxLPj5cblx0XHR9IGFzIFVzZVBsdWdpblJlc3VsdDxLPjtcblx0fVxuXG5cdGFzeW5jIGxvYWRQbHVnaW48SyBleHRlbmRzIGtleW9mIFJlZ2lzdGVyZWRQbHVnaW5zICYgc3RyaW5nPihcblx0XHRwbHVnaW5JZDogS1xuXHQpOiBQcm9taXNlPExvYWRlZFBsdWdpbjxSZWdpc3RlcmVkUGx1Z2luPEs+Pj4ge1xuXHRcdGNvbnN0IGVmZmVjdCA9IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRcdGNvbnN0IHBsdWdpblNlcnZpY2UgPSB5aWVsZCogUGx1Z2luU2VydmljZTtcblx0XHRcdHJldHVybiB5aWVsZCogcGx1Z2luU2VydmljZS5sb2FkUGx1Z2luKHBsdWdpbklkKTtcblx0XHR9KTtcblx0XHRyZXR1cm4gdGhpcy5ydW5Qcm9taXNlKGVmZmVjdCkgYXMgUHJvbWlzZTxMb2FkZWRQbHVnaW48UmVnaXN0ZXJlZFBsdWdpbjxLPj4+O1xuXHR9XG5cblx0YXN5bmMgaW5zdGFudGlhdGVQbHVnaW48SyBleHRlbmRzIGtleW9mIFJlZ2lzdGVyZWRQbHVnaW5zICYgc3RyaW5nPihcblx0XHRwbHVnaW5JZDogSyxcblx0XHRsb2FkZWRQbHVnaW46IExvYWRlZFBsdWdpbjxSZWdpc3RlcmVkUGx1Z2luPEs+PlxuXHQpOiBQcm9taXNlPFBsdWdpbkluc3RhbmNlPFJlZ2lzdGVyZWRQbHVnaW48Sz4+PiB7XG5cdFx0Y29uc3QgZWZmZWN0ID0gRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdFx0Y29uc3QgcGx1Z2luU2VydmljZSA9IHlpZWxkKiBQbHVnaW5TZXJ2aWNlO1xuXHRcdFx0cmV0dXJuIHlpZWxkKiBwbHVnaW5TZXJ2aWNlLmluc3RhbnRpYXRlUGx1Z2luKHBsdWdpbklkLCBsb2FkZWRQbHVnaW4pO1xuXHRcdH0pO1xuXHRcdHJldHVybiB0aGlzLnJ1blByb21pc2UoZWZmZWN0KSBhcyBQcm9taXNlPFBsdWdpbkluc3RhbmNlPFJlZ2lzdGVyZWRQbHVnaW48Sz4+Pjtcblx0fVxuXG5cdGFzeW5jIGluaXRpYWxpemVQbHVnaW48VCBleHRlbmRzIEFueVBsdWdpbj4oXG5cdFx0aW5zdGFuY2U6IFBsdWdpbkluc3RhbmNlPFQ+LFxuXHRcdGNvbmZpZzogYW55XG5cdCk6IFByb21pc2U8SW5pdGlhbGl6ZWRQbHVnaW48VD4+IHtcblx0XHRjb25zdCBlZmZlY3QgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRjb25zdCBwbHVnaW5TZXJ2aWNlID0geWllbGQqIFBsdWdpblNlcnZpY2U7XG5cdFx0XHRyZXR1cm4geWllbGQqIHBsdWdpblNlcnZpY2UuaW5pdGlhbGl6ZVBsdWdpbihpbnN0YW5jZSwgY29uZmlnKTtcblx0XHR9KTtcblx0XHRyZXR1cm4gdGhpcy5ydW5Qcm9taXNlKGVmZmVjdCk7XG5cdH1cblxuXHRhc3luYyBzaHV0ZG93bigpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBlZmZlY3QgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRjb25zdCBwbHVnaW5TZXJ2aWNlID0geWllbGQqIFBsdWdpblNlcnZpY2U7XG5cdFx0XHR5aWVsZCogcGx1Z2luU2VydmljZS5jbGVhbnVwKCk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRoaXMucnVuUHJvbWlzZShlZmZlY3QpO1xuXHR9XG5cblx0YXN5bmMgZXZpY3RQbHVnaW48SyBleHRlbmRzIGtleW9mIFJlZ2lzdGVyZWRQbHVnaW5zICYgc3RyaW5nPihcblx0XHRwbHVnaW5JZDogSyxcblx0XHRjb25maWc6IFBsdWdpbkNvbmZpZ0lucHV0PFJlZ2lzdGVyZWRQbHVnaW5zW0tdPlxuXHQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBjYWNoZUtleSA9IHRoaXMuZ2VuZXJhdGVDYWNoZUtleShwbHVnaW5JZCwgY29uZmlnKTtcblxuXHRcdGNvbnN0IGVmZmVjdCA9IEVmZmVjdC5nZW4odGhpcywgZnVuY3Rpb24qICgpIHtcblx0XHRcdGNvbnN0IHBsdWdpblNlcnZpY2UgPSB5aWVsZCogUGx1Z2luU2VydmljZTtcblx0XHRcdGNvbnN0IGNhY2hlZFBsdWdpbiA9IHRoaXMucGx1Z2luQ2FjaGUuZ2V0KGNhY2hlS2V5KTtcblxuXHRcdFx0aWYgKGNhY2hlZFBsdWdpbikge1xuXHRcdFx0XHR0aGlzLnBsdWdpbkNhY2hlLmRlbGV0ZShjYWNoZUtleSk7XG5cblx0XHRcdFx0Y29uc3QgcGx1Z2luUmVzdWx0ID0geWllbGQqIGNhY2hlZFBsdWdpbi5waXBlKFxuXHRcdFx0XHRcdEVmZmVjdC5jYXRjaEFsbCgoKSA9PiBFZmZlY3Quc3VjY2VlZChudWxsKSlcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRpZiAocGx1Z2luUmVzdWx0KSB7XG5cdFx0XHRcdFx0eWllbGQqIHBsdWdpblNlcnZpY2Uuc2h1dGRvd25QbHVnaW4ocGx1Z2luUmVzdWx0KS5waXBlKFxuXHRcdFx0XHRcdFx0RWZmZWN0LmNhdGNoQWxsKCgpID0+IEVmZmVjdC52b2lkKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KS5waXBlKEVmZmVjdC5jYXRjaEFsbCgoKSA9PiBFZmZlY3Qudm9pZCkpO1xuXG5cdFx0cmV0dXJuIHRoaXMucnVuUHJvbWlzZShlZmZlY3QpO1xuXHR9XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHJlbW90ZSBVUkwgdG8gZW5zdXJlIGl0IHBvaW50cyB0byByZW1vdGVFbnRyeS5qc1xuICogSWYgdGhlIFVSTCBkb2Vzbid0IGVuZCB3aXRoIGEgZmlsZSBleHRlbnNpb24sIGFwcGVuZHMgL3JlbW90ZUVudHJ5LmpzXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVJlbW90ZVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG5cdGlmICh1cmwuZW5kc1dpdGgoJy5qcycpKSByZXR1cm4gdXJsOyAvLyBBbHJlYWR5IGEgZmlsZVxuXHRyZXR1cm4gYCR7dXJsLmVuZHNXaXRoKCcvJykgPyB1cmwuc2xpY2UoMCwgLTEpIDogdXJsfS9yZW1vdGVFbnRyeS5qc2A7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQbHVnaW5SdW50aW1lKFxuXHRjb25maWc6IFBsdWdpblJ1bnRpbWVDb25maWdcbik6IFBsdWdpblJ1bnRpbWUge1xuXHRjb25zdCBzZWNyZXRzID0gY29uZmlnLnNlY3JldHMgfHwge307XG5cblx0Ly8gTm9ybWFsaXplIGFsbCByZW1vdGUgVVJMcyBpbiB0aGUgcmVnaXN0cnlcblx0Y29uc3Qgbm9ybWFsaXplZFJlZ2lzdHJ5ID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuXHRcdE9iamVjdC5lbnRyaWVzKGNvbmZpZy5yZWdpc3RyeSkubWFwKChbcGx1Z2luSWQsIGVudHJ5XSkgPT4gW1xuXHRcdFx0cGx1Z2luSWQsXG5cdFx0XHR7XG5cdFx0XHRcdC4uLmVudHJ5LFxuXHRcdFx0XHRyZW1vdGVVcmw6IG5vcm1hbGl6ZVJlbW90ZVVybChlbnRyeS5yZW1vdGVVcmwpXG5cdFx0XHR9XG5cdFx0XSlcblx0KSBhcyBQbHVnaW5SZWdpc3RyeTtcblxuXHRjb25zdCBsYXllciA9IFBsdWdpblNlcnZpY2UuTGl2ZShub3JtYWxpemVkUmVnaXN0cnksIHNlY3JldHMpO1xuXHRjb25zdCBydW50aW1lID0gTWFuYWdlZFJ1bnRpbWUubWFrZShsYXllcik7XG5cblx0cmV0dXJuIG5ldyBQbHVnaW5SdW50aW1lKHJ1bnRpbWUsIG5vcm1hbGl6ZWRSZWdpc3RyeSk7XG59Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFJQSxJQUFhLHFCQUFiLGNBQXdDLEtBQUssWUFBWSxxQkFBcUIsQ0FNM0U7QUFFSCxJQUFhLHdCQUFiLGNBQTJDLEtBQUssWUFDL0Msd0JBQ0EsQ0FJRTtBQUVILElBQWEsa0JBQWIsY0FBcUMsS0FBSyxZQUFZLGtCQUFrQixDQUlyRTtBQUdILE1BQWEsdUJBQXVCLFNBQTBCO0FBQzdELFNBQVEsTUFBUjtFQUNDLEtBQUs7RUFDTCxLQUFLO0VBQ0wsS0FBSztFQUNMLEtBQUs7RUFDTCxLQUFLLFVBQ0osUUFBTztFQUNSLFFBQ0MsUUFBTzs7O0FBS1YsTUFBYSxpQkFDWixXQUNBLFVBQ0EsZUFDQSxjQUN3QjtBQUN4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
|
|
458
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1CU2h1bEttaC5tanMiLCJuYW1lcyI6WyJwa2ciLCJlcnJvciIsInJ1bnRpbWU6IE1hbmFnZWRSdW50aW1lLk1hbmFnZWRSdW50aW1lPFBsdWdpblNlcnZpY2UsIG5ldmVyPiIsInJlZ2lzdHJ5OiBQbHVnaW5SZWdpc3RyeSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lL2Vycm9ycy50cyIsIi4uL3NyYy9ydW50aW1lL3NlcnZpY2VzL21vZHVsZS1mZWRlcmF0aW9uLnNlcnZpY2UudHMiLCIuLi9zcmMvcnVudGltZS9zZXJ2aWNlcy9wbHVnaW4tbGlmZWN5Y2xlLnNlcnZpY2UudHMiLCIuLi9zcmMvcnVudGltZS92YWxpZGF0aW9uLnRzIiwiLi4vc3JjL3J1bnRpbWUvc2VydmljZXMvc2VjcmV0cy5zZXJ2aWNlLnRzIiwiLi4vc3JjL3J1bnRpbWUvc2VydmljZXMvcGx1Z2luLWxvYWRlci5zZXJ2aWNlLnRzIiwiLi4vc3JjL3J1bnRpbWUvc2VydmljZXMvcGx1Z2luLnNlcnZpY2UudHMiLCIuLi9zcmMvcnVudGltZS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPUlBDRXJyb3IgfSBmcm9tIFwiQG9ycGMvY29udHJhY3RcIjtcbmltcG9ydCB7IERhdGEgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5SdW50aW1lRXJyb3IgZXh0ZW5kcyBEYXRhLlRhZ2dlZEVycm9yKFwiUGx1Z2luUnVudGltZUVycm9yXCIpPHtcblx0cmVhZG9ubHkgcGx1Z2luSWQ/OiBzdHJpbmc7XG5cdHJlYWRvbmx5IG9wZXJhdGlvbj86IHN0cmluZztcblx0cmVhZG9ubHkgcHJvY2VkdXJlTmFtZT86IHN0cmluZztcblx0cmVhZG9ubHkgY2F1c2U/OiBFcnJvcjtcblx0cmVhZG9ubHkgcmV0cnlhYmxlOiBib29sZWFuO1xufT4geyB9XG5cbmV4cG9ydCBjbGFzcyBNb2R1bGVGZWRlcmF0aW9uRXJyb3IgZXh0ZW5kcyBEYXRhLlRhZ2dlZEVycm9yKFxuXHRcIk1vZHVsZUZlZGVyYXRpb25FcnJvclwiLFxuKTx7XG5cdHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG5cdHJlYWRvbmx5IHJlbW90ZVVybDogc3RyaW5nO1xuXHRyZWFkb25seSBjYXVzZT86IEVycm9yO1xufT4geyB9XG5cbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBEYXRhLlRhZ2dlZEVycm9yKFwiVmFsaWRhdGlvbkVycm9yXCIpPHtcblx0cmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcblx0cmVhZG9ubHkgc3RhZ2U6IFwiY29uZmlnXCIgfCBcImlucHV0XCIgfCBcIm91dHB1dFwiIHwgXCJzdGF0ZVwiO1xuXHRyZWFkb25seSB6b2RFcnJvcjogei5ab2RFcnJvcjtcbn0+IHsgfVxuXG4vLyBIZWxwZXIgdG8gZGV0ZXJtaW5lIGlmIGFuIG9SUEMgZXJyb3IgY29kZSBpcyByZXRyeWFibGVcbmV4cG9ydCBjb25zdCBpc1JldHJ5YWJsZU9SUENDb2RlID0gKGNvZGU6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuXHRzd2l0Y2ggKGNvZGUpIHtcblx0XHRjYXNlICdUT09fTUFOWV9SRVFVRVNUUyc6XG5cdFx0Y2FzZSAnU0VSVklDRV9VTkFWQUlMQUJMRSc6XG5cdFx0Y2FzZSAnQkFEX0dBVEVXQVknOlxuXHRcdGNhc2UgJ0dBVEVXQVlfVElNRU9VVCc6XG5cdFx0Y2FzZSAnVElNRU9VVCc6XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59O1xuXG4vLyBDb252ZXJ0IE9SUEMgZXJyb3JzIGZyb20gcGx1Z2luIHByb2NlZHVyZXMgdG8gUGx1Z2luUnVudGltZUVycm9yXG5leHBvcnQgY29uc3Qgd3JhcE9SUENFcnJvciA9IChcblx0b3JwY0Vycm9yOiBPUlBDRXJyb3I8c3RyaW5nLCB1bmtub3duPixcblx0cGx1Z2luSWQ/OiBzdHJpbmcsXG5cdHByb2NlZHVyZU5hbWU/OiBzdHJpbmcsXG5cdG9wZXJhdGlvbj86IHN0cmluZ1xuKTogUGx1Z2luUnVudGltZUVycm9yID0+IHtcblx0cmV0dXJuIG5ldyBQbHVnaW5SdW50aW1lRXJyb3Ioe1xuXHRcdHBsdWdpbklkLFxuXHRcdG9wZXJhdGlvbixcblx0XHRwcm9jZWR1cmVOYW1lLFxuXHRcdHJldHJ5YWJsZTogaXNSZXRyeWFibGVPUlBDQ29kZShvcnBjRXJyb3IuY29kZSksXG5cdFx0Y2F1c2U6IG9ycGNFcnJvciBhcyBFcnJvclxuXHR9KTtcbn07XG5cbi8vIFVuaXZlcnNhbCBlcnJvciBjb252ZXJ0ZXIgZm9yIHRoZSBydW50aW1lXG5leHBvcnQgY29uc3QgdG9QbHVnaW5SdW50aW1lRXJyb3IgPSAoXG5cdGVycm9yOiB1bmtub3duLFxuXHRwbHVnaW5JZD86IHN0cmluZyxcblx0cHJvY2VkdXJlTmFtZT86IHN0cmluZyxcblx0b3BlcmF0aW9uPzogc3RyaW5nLFxuXHRkZWZhdWx0UmV0cnlhYmxlID0gZmFsc2Vcbik6IFBsdWdpblJ1bnRpbWVFcnJvciA9PiB7XG5cdGlmIChlcnJvciBpbnN0YW5jZW9mIE9SUENFcnJvcikge1xuXHRcdHJldHVybiB3cmFwT1JQQ0Vycm9yKGVycm9yLCBwbHVnaW5JZCwgcHJvY2VkdXJlTmFtZSwgb3BlcmF0aW9uKTtcblx0fVxuXG5cdGlmIChlcnJvciBpbnN0YW5jZW9mIFBsdWdpblJ1bnRpbWVFcnJvcikge1xuXHRcdHJldHVybiBlcnJvcjsgLy8gQWxyZWFkeSBjb252ZXJ0ZWRcblx0fVxuXG5cdHJldHVybiBuZXcgUGx1Z2luUnVudGltZUVycm9yKHtcblx0XHRwbHVnaW5JZCxcblx0XHRvcGVyYXRpb24sXG5cdFx0cHJvY2VkdXJlTmFtZSxcblx0XHRyZXRyeWFibGU6IGRlZmF1bHRSZXRyeWFibGUsXG5cdFx0Y2F1c2U6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKVxuXHR9KTtcbn07XG4iLCJpbXBvcnQgeyBiZXR0ZXJGZXRjaCB9IGZyb20gXCJAYmV0dGVyLWZldGNoL2ZldGNoXCI7XG5pbXBvcnQge1xuXHRjcmVhdGVJbnN0YW5jZSxcblx0Z2V0SW5zdGFuY2UsXG59IGZyb20gXCJAbW9kdWxlLWZlZGVyYXRpb24vZW5oYW5jZWQvcnVudGltZVwiO1xuaW1wb3J0IHsgc2V0R2xvYmFsRmVkZXJhdGlvbkluc3RhbmNlIH0gZnJvbSBcIkBtb2R1bGUtZmVkZXJhdGlvbi9ydW50aW1lLWNvcmVcIjtcbmltcG9ydCB7IEVmZmVjdCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB0eXBlIHsgQW55UGx1Z2luIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBNb2R1bGVGZWRlcmF0aW9uRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBnZXROb3JtYWxpemVkUmVtb3RlTmFtZSB9IGZyb20gXCIuL25vcm1hbGl6ZVwiO1xuXG50eXBlIFJlbW90ZU1vZHVsZSA9IFxuICB8IChuZXcgKCkgPT4gQW55UGx1Z2luKVxuICB8IHsgZGVmYXVsdDogbmV3ICgpID0+IEFueVBsdWdpbiB9O1xuXG5pbXBvcnQgcGtnIGZyb20gXCIuLi8uLi8uLi9wYWNrYWdlLmpzb25cIjtcblxuY29uc3QgY3JlYXRlTW9kdWxlRmVkZXJhdGlvbkluc3RhbmNlID0gRWZmZWN0LmNhY2hlZChcblx0RWZmZWN0LnN5bmMoKCkgPT4ge1xuXHRcdHRyeSB7XG5cdFx0XHRsZXQgaW5zdGFuY2UgPSBnZXRJbnN0YW5jZSgpO1xuXG5cdFx0XHRpZiAoIWluc3RhbmNlKSB7XG5cdFx0XHRcdGluc3RhbmNlID0gY3JlYXRlSW5zdGFuY2Uoe1xuXHRcdFx0XHRcdG5hbWU6IFwiaG9zdFwiLFxuXHRcdFx0XHRcdHJlbW90ZXM6IFtdLFxuXHRcdFx0XHRcdHNoYXJlZDoge1xuXHRcdFx0XHRcdFx0XCJldmVyeS1wbHVnaW5cIjoge1xuXHRcdFx0XHRcdFx0XHR2ZXJzaW9uOiBwa2cudmVyc2lvbixcblx0XHRcdFx0XHRcdFx0c2hhcmVDb25maWc6IHtcblx0XHRcdFx0XHRcdFx0XHRzaW5nbGV0b246IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0cmVxdWlyZWRWZXJzaW9uOiBgXiR7cGtnLnZlcnNpb259YCxcblx0XHRcdFx0XHRcdFx0XHRlYWdlcjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRzdHJpY3RWZXJzaW9uOiBmYWxzZSwgLy8gQWxsb3cgYmlkaXJlY3Rpb25hbCB2ZXJzaW9uIGNvbXBhdGliaWxpdHlcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRlZmZlY3Q6IHtcblx0XHRcdFx0XHRcdFx0dmVyc2lvbjogcGtnLmRlcGVuZGVuY2llcy5lZmZlY3QsXG5cdFx0XHRcdFx0XHRcdHNoYXJlQ29uZmlnOiB7XG5cdFx0XHRcdFx0XHRcdFx0c2luZ2xldG9uOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkVmVyc2lvbjogXCJeMy4xOC4wXCIsIC8vIEFsbG93IGFueSAzLjE4LnggcGF0Y2ggdmVyc2lvblxuXHRcdFx0XHRcdFx0XHRcdGVhZ2VyOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdHN0cmljdFZlcnNpb246IGZhbHNlLCAvLyBBbGxvdyB2ZXJzaW9uIGZsZXhpYmlsaXR5IGZvciBjb21wYXRpYmlsaXR5XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0em9kOiB7XG5cdFx0XHRcdFx0XHRcdHZlcnNpb246IHBrZy5kZXBlbmRlbmNpZXMuem9kLFxuXHRcdFx0XHRcdFx0XHRzaGFyZUNvbmZpZzoge1xuXHRcdFx0XHRcdFx0XHRcdHNpbmdsZXRvbjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZFZlcnNpb246IFwiXjQuMS4wXCIsIC8vIEFsbG93IGFueSA0LjEueCBwYXRjaCB2ZXJzaW9uXG5cdFx0XHRcdFx0XHRcdFx0ZWFnZXI6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0c3RyaWN0VmVyc2lvbjogZmFsc2UsIC8vIEFsbG93IHZlcnNpb24gZmxleGliaWxpdHkgZm9yIGNvbXBhdGliaWxpdHlcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcIkBvcnBjL2NvbnRyYWN0XCI6IHtcblx0XHRcdFx0XHRcdFx0dmVyc2lvbjogcGtnLmRlcGVuZGVuY2llc1tcIkBvcnBjL2NvbnRyYWN0XCJdLFxuXHRcdFx0XHRcdFx0XHRzaGFyZUNvbmZpZzoge1xuXHRcdFx0XHRcdFx0XHRcdHNpbmdsZXRvbjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZFZlcnNpb246IFwiXjEuOC4wXCIsIC8vIEFsbG93IGFueSAxLjgueCBwYXRjaCB2ZXJzaW9uXG5cdFx0XHRcdFx0XHRcdFx0ZWFnZXI6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0c3RyaWN0VmVyc2lvbjogZmFsc2UsIC8vIEFsbG93IHZlcnNpb24gZmxleGliaWxpdHkgZm9yIGNvbXBhdGliaWxpdHlcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcIkBvcnBjL3NlcnZlclwiOiB7XG5cdFx0XHRcdFx0XHRcdHZlcnNpb246IHBrZy5kZXBlbmRlbmNpZXNbXCJAb3JwYy9zZXJ2ZXJcIl0sXG5cdFx0XHRcdFx0XHRcdHNoYXJlQ29uZmlnOiB7XG5cdFx0XHRcdFx0XHRcdFx0c2luZ2xldG9uOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkVmVyc2lvbjogXCJeMS44LjBcIiwgLy8gQWxsb3cgYW55IDEuOC54IHBhdGNoIHZlcnNpb25cblx0XHRcdFx0XHRcdFx0XHRlYWdlcjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRzdHJpY3RWZXJzaW9uOiBmYWxzZSwgLy8gQWxsb3cgdmVyc2lvbiBmbGV4aWJpbGl0eSBmb3IgY29tcGF0aWJpbGl0eVxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdHNldEdsb2JhbEZlZGVyYXRpb25JbnN0YW5jZShpbnN0YW5jZSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBpbnN0YW5jZTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBNb2R1bGUgRmVkZXJhdGlvbjogJHtlcnJvcn1gKTtcblx0XHR9XG5cdH0pLFxuKTtcblxuZXhwb3J0IGNsYXNzIE1vZHVsZUZlZGVyYXRpb25TZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlNlcnZpY2U8TW9kdWxlRmVkZXJhdGlvblNlcnZpY2U+KCkoXCJNb2R1bGVGZWRlcmF0aW9uU2VydmljZVwiLCB7XG5cdGVmZmVjdDogRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdGNvbnN0IG1mID0geWllbGQqIEVmZmVjdC5mbGF0dGVuKGNyZWF0ZU1vZHVsZUZlZGVyYXRpb25JbnN0YW5jZSk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0cmVnaXN0ZXJSZW1vdGU6IChwbHVnaW5JZDogc3RyaW5nLCB1cmw6IHN0cmluZykgPT5cblx0XHRcdFx0RWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGBbTUZdIFJlZ2lzdGVyaW5nICR7cGx1Z2luSWR9YCk7XG5cblx0XHRcdFx0XHQvLyBDaGVjayBpZiByZW1vdGUgaXMgYXZhaWxhYmxlXG5cdFx0XHRcdFx0Y29uc3QgeyBlcnJvciB9ID0geWllbGQqIEVmZmVjdC50cnlQcm9taXNlKHtcblx0XHRcdFx0XHRcdHRyeTogKCkgPT4gYmV0dGVyRmV0Y2godXJsLCB7IG1ldGhvZDogXCJIRUFEXCIgfSksXG5cdFx0XHRcdFx0XHRjYXRjaDogKGVycm9yKTogTW9kdWxlRmVkZXJhdGlvbkVycm9yID0+XG5cdFx0XHRcdFx0XHRcdG5ldyBNb2R1bGVGZWRlcmF0aW9uRXJyb3Ioe1xuXHRcdFx0XHRcdFx0XHRcdHBsdWdpbklkLFxuXHRcdFx0XHRcdFx0XHRcdHJlbW90ZVVybDogdXJsLFxuXHRcdFx0XHRcdFx0XHRcdGNhdXNlOlxuXHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yIDogbmV3IEVycm9yKFN0cmluZyhlcnJvcikpLFxuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdGlmIChlcnJvcikge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYFtNRl0g4p2MIFJlbW90ZSBub3QgYXZhaWxhYmxlIGZvciAke3BsdWdpbklkfWApO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHlpZWxkKiBFZmZlY3QuZmFpbChcblx0XHRcdFx0XHRcdFx0bmV3IE1vZHVsZUZlZGVyYXRpb25FcnJvcih7XG5cdFx0XHRcdFx0XHRcdFx0cGx1Z2luSWQsXG5cdFx0XHRcdFx0XHRcdFx0cmVtb3RlVXJsOiB1cmwsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6IG5ldyBFcnJvcihgUmVtb3RlIG5vdCBhdmFpbGFibGUgKCR7dXJsfSk6ICR7SlNPTi5zdHJpbmdpZnkoZXJyb3IpfWApLFxuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y29uc3QgcmVtb3RlTmFtZSA9IGdldE5vcm1hbGl6ZWRSZW1vdGVOYW1lKHBsdWdpbklkKTtcblxuXHRcdFx0XHRcdHlpZWxkKiBFZmZlY3QudHJ5KHtcblx0XHRcdFx0XHRcdHRyeTogKCkgPT4gbWYucmVnaXN0ZXJSZW1vdGVzKFt7IG5hbWU6IHJlbW90ZU5hbWUsIGVudHJ5OiB1cmwgfV0pLFxuXHRcdFx0XHRcdFx0Y2F0Y2g6IChlcnJvcik6IE1vZHVsZUZlZGVyYXRpb25FcnJvciA9PlxuXHRcdFx0XHRcdFx0XHRuZXcgTW9kdWxlRmVkZXJhdGlvbkVycm9yKHtcblx0XHRcdFx0XHRcdFx0XHRwbHVnaW5JZCxcblx0XHRcdFx0XHRcdFx0XHRyZW1vdGVVcmw6IHVybCxcblx0XHRcdFx0XHRcdFx0XHRjYXVzZTpcblx0XHRcdFx0XHRcdFx0XHRcdGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKSxcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRjb25zb2xlLmxvZyhgW01GXSDinIUgUmVnaXN0ZXJlZCAke3BsdWdpbklkfWApO1xuXHRcdFx0XHR9KSxcblxuXHRcdFx0bG9hZFJlbW90ZUNvbnN0cnVjdG9yOiAocGx1Z2luSWQ6IHN0cmluZywgdXJsOiBzdHJpbmcpID0+XG5cdFx0XHRcdEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRcdFx0XHRjb25zdCByZW1vdGVOYW1lID0gZ2V0Tm9ybWFsaXplZFJlbW90ZU5hbWUocGx1Z2luSWQpO1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGBbTUZdIExvYWRpbmcgcmVtb3RlICR7cmVtb3RlTmFtZX1gKTtcblx0XHRcdFx0XHRjb25zdCBtb2R1bGVQYXRoID0gYCR7cmVtb3RlTmFtZX0vcGx1Z2luYDtcblxuXHRcdFx0XHRcdHJldHVybiB5aWVsZCogRWZmZWN0LnRyeVByb21pc2Uoe1xuXHRcdFx0XHRcdFx0dHJ5OiBhc3luYyAoKSA9PiB7XG5cblx0XHRcdFx0XHRcdFx0Y29uc3QgY29udGFpbmVyID0gYXdhaXQgbWYubG9hZFJlbW90ZTxSZW1vdGVNb2R1bGU+KG1vZHVsZVBhdGgpO1xuXHRcdFx0XHRcdFx0XHRpZiAoIWNvbnRhaW5lcikge1xuXHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgTm8gY29udGFpbmVyIHJldHVybmVkIGZvciAke21vZHVsZVBhdGh9YCk7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0IG11bHRpcGxlIGV4cG9ydCBwYXR0ZXJuczogZGlyZWN0IGZ1bmN0aW9uLCBkZWZhdWx0IGV4cG9ydCwgbmFtZWQgZXhwb3J0c1xuXHRcdFx0XHRcdFx0XHRjb25zdCBDb25zdHJ1Y3RvciA9XG5cdFx0XHRcdFx0XHRcdFx0dHlwZW9mIGNvbnRhaW5lciA9PT0gXCJmdW5jdGlvblwiXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IGNvbnRhaW5lciAgLy8gRGlyZWN0IGZ1bmN0aW9uIGV4cG9ydFxuXHRcdFx0XHRcdFx0XHRcdFx0OiBjb250YWluZXIuZGVmYXVsdFxuXHRcdFx0XHRcdFx0XHRcdFx0PyBjb250YWluZXIuZGVmYXVsdCAgLy8gRGVmYXVsdCBleHBvcnRcblx0XHRcdFx0XHRcdFx0XHRcdDogT2JqZWN0LnZhbHVlcyhjb250YWluZXIpLmZpbmQoICAvLyBOYW1lZCBleHBvcnQgZmFsbGJhY2tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoZXhwKSA9PiB0eXBlb2YgZXhwID09PSBcImZ1bmN0aW9uXCIgJiYgZXhwLnByb3RvdHlwZT8uY29uc3RydWN0b3IgPT09IGV4cFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHRcdGlmICghQ29uc3RydWN0b3IgfHwgdHlwZW9mIENvbnN0cnVjdG9yICE9PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBjb250YWluZXJJbmZvID0gdHlwZW9mIGNvbnRhaW5lciA9PT0gXCJvYmplY3RcIlxuXHRcdFx0XHRcdFx0XHRcdFx0PyBgQXZhaWxhYmxlIGV4cG9ydHM6ICR7T2JqZWN0LmtleXMoY29udGFpbmVyKS5qb2luKCcsICcpfWBcblx0XHRcdFx0XHRcdFx0XHRcdDogYENvbnRhaW5lciB0eXBlOiAke3R5cGVvZiBjb250YWluZXJ9YDtcblxuXHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0XHRcdFx0XHRcdGBObyB2YWxpZCBwbHVnaW4gY29uc3RydWN0b3IgZm91bmQgZm9yICcke3BsdWdpbklkfScuXFxuYCArXG5cdFx0XHRcdFx0XHRcdFx0XHRgU3VwcG9ydGVkIHBhdHRlcm5zOlxcbmAgK1xuXHRcdFx0XHRcdFx0XHRcdFx0YCAgLSBleHBvcnQgY29uc3QgWW91clBsdWdpbiA9IGNyZWF0ZVBsdWdpbih7Li4ufSlcXG5gICtcblx0XHRcdFx0XHRcdFx0XHRcdGAgIC0gZXhwb3J0IGRlZmF1bHQgY3JlYXRlUGx1Z2luKHsuLi59KVxcbmAgK1xuXHRcdFx0XHRcdFx0XHRcdFx0YCR7Y29udGFpbmVySW5mb31gLFxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHQvLyBWYWxpZGF0ZSBpdCBsb29rcyBsaWtlIGEgcGx1Z2luIGNvbnN0cnVjdG9yIChoYXMgYmluZGluZyBwcm9wZXJ0eSlcblx0XHRcdFx0XHRcdFx0aWYgKCEoQ29uc3RydWN0b3IgYXMgYW55KS5iaW5kaW5nKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgY29udGFpbmVySW5mbyA9IHR5cGVvZiBjb250YWluZXIgPT09IFwib2JqZWN0XCJcblx0XHRcdFx0XHRcdFx0XHRcdD8gYEZvdW5kIGV4cG9ydHM6ICR7T2JqZWN0LmtleXMoY29udGFpbmVyKS5qb2luKCcsICcpfWBcblx0XHRcdFx0XHRcdFx0XHRcdDogYENvbnRhaW5lciB0eXBlOiAke3R5cGVvZiBjb250YWluZXJ9YDtcblxuXHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0XHRcdFx0XHRcdGBJbnZhbGlkIHBsdWdpbiBjb25zdHJ1Y3RvciBmb3IgJyR7cGx1Z2luSWR9Jy4gYCArXG5cdFx0XHRcdFx0XHRcdFx0XHRgVGhlIGV4cG9ydGVkIHZhbHVlIG11c3QgYmUgY3JlYXRlZCB3aXRoIGNyZWF0ZVBsdWdpbigpLiBgICtcblx0XHRcdFx0XHRcdFx0XHRcdGBGb3VuZCBhIGZ1bmN0aW9uIGJ1dCBpdCdzIG1pc3NpbmcgdGhlIHJlcXVpcmVkICdiaW5kaW5nJyBwcm9wZXJ0eS5cXG5gICtcblx0XHRcdFx0XHRcdFx0XHRcdGAke2NvbnRhaW5lckluZm99YCxcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYFtNRl0g4pyFIExvYWRlZCBjb25zdHJ1Y3RvciBmb3IgJHtwbHVnaW5JZH1gKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIENvbnN0cnVjdG9yO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGNhdGNoOiAoZXJyb3IpOiBNb2R1bGVGZWRlcmF0aW9uRXJyb3IgPT5cblx0XHRcdFx0XHRcdFx0bmV3IE1vZHVsZUZlZGVyYXRpb25FcnJvcih7XG5cdFx0XHRcdFx0XHRcdFx0cGx1Z2luSWQsXG5cdFx0XHRcdFx0XHRcdFx0cmVtb3RlVXJsOiB1cmwsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6XG5cdFx0XHRcdFx0XHRcdFx0XHRlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSksXG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KSxcblx0XHR9O1xuXHR9KSxcbn0pIHt9XG4iLCJpbXBvcnQgeyBFZmZlY3QsIFJlZiB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB0eXBlIHsgQW55UGx1Z2luLCBJbml0aWFsaXplZFBsdWdpbiB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgdG9QbHVnaW5SdW50aW1lRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzXCI7XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5MaWZlY3ljbGVTZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlNlcnZpY2U8UGx1Z2luTGlmZWN5Y2xlU2VydmljZT4oKShcIlBsdWdpbkxpZmVjeWNsZVNlcnZpY2VcIiwge1xuICBlZmZlY3Q6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcbiAgICBjb25zdCBhY3RpdmVQbHVnaW5zID0geWllbGQqIFJlZi5tYWtlKG5ldyBTZXQ8SW5pdGlhbGl6ZWRQbHVnaW48QW55UGx1Z2luPj4oKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVnaXN0ZXI6IDxUIGV4dGVuZHMgQW55UGx1Z2luPihwbHVnaW46IEluaXRpYWxpemVkUGx1Z2luPFQ+KSA9PlxuICAgICAgICBSZWYudXBkYXRlKGFjdGl2ZVBsdWdpbnMsIHBsdWdpbnMgPT5cbiAgICAgICAgICBuZXcgU2V0KHBsdWdpbnMpLmFkZChwbHVnaW4gYXMgSW5pdGlhbGl6ZWRQbHVnaW48QW55UGx1Z2luPilcbiAgICAgICAgKSxcblxuICAgICAgdW5yZWdpc3RlcjogKHBsdWdpbjogSW5pdGlhbGl6ZWRQbHVnaW48QW55UGx1Z2luPikgPT5cbiAgICAgICAgUmVmLnVwZGF0ZShhY3RpdmVQbHVnaW5zLCBwbHVnaW5zID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdTZXQgPSBuZXcgU2V0KHBsdWdpbnMpO1xuICAgICAgICAgIG5ld1NldC5kZWxldGUocGx1Z2luKTtcbiAgICAgICAgICByZXR1cm4gbmV3U2V0O1xuICAgICAgICB9KSxcblxuICAgICAgc2h1dGRvd246IChwbHVnaW46IEluaXRpYWxpemVkUGx1Z2luPEFueVBsdWdpbj4pID0+XG4gICAgICAgIEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAvLyBSZW1vdmUgZnJvbSBhY3RpdmUgcGx1Z2luc1xuICAgICAgICAgIHlpZWxkKiBSZWYudXBkYXRlKGFjdGl2ZVBsdWdpbnMsIHBsdWdpbnMgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3U2V0ID0gbmV3IFNldChwbHVnaW5zKTtcbiAgICAgICAgICAgIG5ld1NldC5kZWxldGUocGx1Z2luKTtcbiAgICAgICAgICAgIHJldHVybiBuZXdTZXQ7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvLyBTaHV0ZG93biB0aGUgcGx1Z2luXG4gICAgICAgICAgeWllbGQqIHBsdWdpbi5wbHVnaW4uc2h1dGRvd24oKS5waXBlKFxuICAgICAgICAgICAgRWZmZWN0Lm1hcEVycm9yKGVycm9yID0+XG4gICAgICAgICAgICAgIHRvUGx1Z2luUnVudGltZUVycm9yKGVycm9yLCBwbHVnaW4ucGx1Z2luLmlkLCB1bmRlZmluZWQsIFwic2h1dGRvd24tcGx1Z2luXCIsIGZhbHNlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuXG4gICAgICBjbGVhbnVwOiAoKSA9PlxuICAgICAgICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgY29uc3QgcGx1Z2lucyA9IHlpZWxkKiBSZWYuZ2V0KGFjdGl2ZVBsdWdpbnMpO1xuXG4gICAgICAgICAgLy8gU2h1dGRvd24gYWxsIGFjdGl2ZSBwbHVnaW5zIGNvbmN1cnJlbnRseVxuICAgICAgICAgIHlpZWxkKiBFZmZlY3QuZm9yRWFjaChcbiAgICAgICAgICAgIHBsdWdpbnMsXG4gICAgICAgICAgICBwbHVnaW4gPT5cbiAgICAgICAgICAgICAgcGx1Z2luLnBsdWdpbi5zaHV0ZG93bigpLnBpcGUoXG4gICAgICAgICAgICAgICAgRWZmZWN0Lm1hcEVycm9yKGVycm9yID0+XG4gICAgICAgICAgICAgICAgICB0b1BsdWdpblJ1bnRpbWVFcnJvcihlcnJvciwgcGx1Z2luLnBsdWdpbi5pZCwgdW5kZWZpbmVkLCBcImNsZWFudXAtc2h1dGRvd25cIiwgZmFsc2UpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBFZmZlY3QuY2F0Y2hBbGwoZXJyb3IgPT5cbiAgICAgICAgICAgICAgICAgIEVmZmVjdC5sb2dFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYEZhaWxlZCB0byBzaHV0ZG93biBwbHVnaW4gJHtwbHVnaW4ucGx1Z2luLmlkfSBkdXJpbmcgY2xlYW51cGAsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICB7IHBsdWdpbklkOiBwbHVnaW4ucGx1Z2luLmlkIH1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB7IGNvbmN1cnJlbmN5OiBcInVuYm91bmRlZFwiIH1cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLy8gQ2xlYXIgdGhlIGFjdGl2ZSBwbHVnaW5zIHNldFxuICAgICAgICAgIHlpZWxkKiBSZWYuc2V0KGFjdGl2ZVBsdWdpbnMsIG5ldyBTZXQoKSk7XG4gICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgRWZmZWN0LmNhdGNoQWxsKCgpID0+IEVmZmVjdC52b2lkKSAvLyBDb252ZXJ0IGVycm9ycyB0byB2b2lkIGZvciBjbGVhbnVwXG4gICAgICAgICksXG4gICAgfTtcbiAgfSksXG59KSB7IH1cbiIsImltcG9ydCB7IEVmZmVjdCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB0eXBlIHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGUgPSA8VD4oXG5cdHNjaGVtYTogei5ab2RTY2hlbWE8VD4sXG5cdGRhdGE6IHVua25vd24sXG5cdHBsdWdpbklkOiBzdHJpbmcsXG5cdHN0YWdlOiBcImNvbmZpZ1wiIHwgXCJpbnB1dFwiIHwgXCJvdXRwdXRcIiB8IFwic3RhdGVcIixcbik6IEVmZmVjdC5FZmZlY3Q8VCwgVmFsaWRhdGlvbkVycm9yPiA9PlxuXHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0Y29uc3QgcmVzdWx0ID0gc2NoZW1hLnNhZmVQYXJzZShkYXRhKTtcblx0XHRpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcblx0XHRcdHJldHVybiByZXN1bHQuZGF0YTtcblx0XHR9XG5cdFx0cmV0dXJuIHlpZWxkKiBFZmZlY3QuZmFpbChcblx0XHRcdG5ldyBWYWxpZGF0aW9uRXJyb3Ioe1xuXHRcdFx0XHRwbHVnaW5JZCxcblx0XHRcdFx0c3RhZ2UsXG5cdFx0XHRcdHpvZEVycm9yOiByZXN1bHQuZXJyb3IsXG5cdFx0XHR9KSxcblx0XHQpO1xuXHR9KTtcbiIsImltcG9ydCB7IENvbnRleHQsIEVmZmVjdCB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgdHlwZSB7IFNlY3JldHNDb25maWcgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IFBsdWdpblJ1bnRpbWVFcnJvciB9IGZyb20gXCIuLi9lcnJvcnNcIjtcblxuY29uc3QgY29uZmlnU2NoZW1hID0gei5vYmplY3Qoe1xuXHRzZWNyZXRzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSlcbn0pLmxvb3NlKCk7XG5cbmV4cG9ydCBjbGFzcyBTZWNyZXRzQ29uZmlnVGFnIGV4dGVuZHMgQ29udGV4dC5UYWcoXCJTZWNyZXRzQ29uZmlnXCIpPFxuXHRTZWNyZXRzQ29uZmlnVGFnLFxuXHRTZWNyZXRzQ29uZmlnXG4+KCkgeyB9XG5cbmV4cG9ydCBjbGFzcyBTZWNyZXRzU2VydmljZSBleHRlbmRzIEVmZmVjdC5TZXJ2aWNlPFNlY3JldHNTZXJ2aWNlPigpKFwiU2VjcmV0c1NlcnZpY2VcIiwge1xuXHRlZmZlY3Q6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRjb25zdCBzZWNyZXRzID0geWllbGQqIFNlY3JldHNDb25maWdUYWc7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0aHlkcmF0ZVNlY3JldHM6IDxUPihjb25maWc6IFQpID0+XG5cdFx0XHRcdEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRcdFx0XHRjb25zdCBwYXJzZVJlc3VsdCA9IGNvbmZpZ1NjaGVtYS5wYXJzZShjb25maWcpO1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRjb25zdCBjb25maWdTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShwYXJzZVJlc3VsdCk7XG5cdFx0XHRcdFx0XHRsZXQgaHlkcmF0ZWRTdHJpbmcgPSBjb25maWdTdHJpbmc7XG5cblx0XHRcdFx0XHRcdGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNlY3JldHMpKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHBhdHRlcm4gPSBuZXcgUmVnRXhwKGB7eyR7a2V5fX19YCwgXCJnXCIpO1xuXHRcdFx0XHRcdFx0XHRoeWRyYXRlZFN0cmluZyA9IGh5ZHJhdGVkU3RyaW5nLnJlcGxhY2UocGF0dGVybiwgU3RyaW5nKHZhbHVlKSk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHJldHVybiBKU09OLnBhcnNlKGh5ZHJhdGVkU3RyaW5nKSBhcyBUO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4geWllbGQqIEVmZmVjdC5mYWlsKFxuXHRcdFx0XHRcdFx0XHRuZXcgUGx1Z2luUnVudGltZUVycm9yKHtcblx0XHRcdFx0XHRcdFx0XHRvcGVyYXRpb246IFwiaHlkcmF0ZS1zZWNyZXRzXCIsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6XG5cdFx0XHRcdFx0XHRcdFx0XHRlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSksXG5cdFx0XHRcdFx0XHRcdFx0cmV0cnlhYmxlOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSksXG5cdFx0fTtcblx0fSksXG59KSB7IH1cbiIsImltcG9ydCB0eXBlIHsgSW5mZXJTY2hlbWFJbnB1dCwgSW5mZXJTY2hlbWFPdXRwdXQgfSBmcm9tIFwiQG9ycGMvY29udHJhY3RcIjtcbmltcG9ydCB7IENvbnRleHQsIEVmZmVjdCwgU2NvcGUgfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEFueVBsdWdpbixcblx0SW5pdGlhbGl6ZWRQbHVnaW4sXG5cdExvYWRlZFBsdWdpbixcblx0UGx1Z2luSW5zdGFuY2UsXG5cdFBsdWdpblJlZ2lzdHJ5XG59IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgUGx1Z2luUnVudGltZUVycm9yLCB0b1BsdWdpblJ1bnRpbWVFcnJvciB9IGZyb20gXCIuLi9lcnJvcnNcIjtcbmltcG9ydCB7IHZhbGlkYXRlIH0gZnJvbSBcIi4uL3ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IE1vZHVsZUZlZGVyYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4vbW9kdWxlLWZlZGVyYXRpb24uc2VydmljZVwiO1xuaW1wb3J0IHsgU2VjcmV0c1NlcnZpY2UgfSBmcm9tIFwiLi9zZWNyZXRzLnNlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIFBsdWdpblJlZ2lzdHJ5VGFnIGV4dGVuZHMgQ29udGV4dC5UYWcoXCJQbHVnaW5SZWdpc3RyeVwiKTxcblx0UGx1Z2luUmVnaXN0cnlUYWcsXG5cdFBsdWdpblJlZ2lzdHJ5XG4+KCkgeyB9XG5cbmV4cG9ydCBjbGFzcyBSZWdpc3RyeVNlcnZpY2UgZXh0ZW5kcyBFZmZlY3QuU2VydmljZTxSZWdpc3RyeVNlcnZpY2U+KCkoXCJSZWdpc3RyeVNlcnZpY2VcIiwge1xuXHRlZmZlY3Q6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRjb25zdCByZWdpc3RyeSA9IHlpZWxkKiBQbHVnaW5SZWdpc3RyeVRhZztcblxuXHRcdHJldHVybiB7XG5cdFx0XHRnZXQ6IChwbHVnaW5JZDogc3RyaW5nKSA9PlxuXHRcdFx0XHRFZmZlY3QuZnJvbU51bGxhYmxlKHJlZ2lzdHJ5W3BsdWdpbklkXSkucGlwZShcblx0XHRcdFx0XHRFZmZlY3QubWFwRXJyb3IoKCkgPT5cblx0XHRcdFx0XHRcdG5ldyBQbHVnaW5SdW50aW1lRXJyb3Ioe1xuXHRcdFx0XHRcdFx0XHRwbHVnaW5JZCxcblx0XHRcdFx0XHRcdFx0b3BlcmF0aW9uOiBcInZhbGlkYXRlLXBsdWdpbi1pZFwiLFxuXHRcdFx0XHRcdFx0XHRjYXVzZTogbmV3IEVycm9yKGBQbHVnaW4gJHtwbHVnaW5JZH0gbm90IGZvdW5kIGluIHJlZ2lzdHJ5YCksXG5cdFx0XHRcdFx0XHRcdHJldHJ5YWJsZTogZmFsc2UsXG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHQpLFxuXHRcdH07XG5cdH0pLFxufSkgeyB9XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5Mb2FkZXJTZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlNlcnZpY2U8UGx1Z2luTG9hZGVyU2VydmljZT4oKShcIlBsdWdpbkxvYWRlclNlcnZpY2VcIiwge1xuXHRlZmZlY3Q6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRjb25zdCBtb2R1bGVGZWRlcmF0aW9uU2VydmljZSA9IHlpZWxkKiBNb2R1bGVGZWRlcmF0aW9uU2VydmljZTtcblx0XHRjb25zdCBzZWNyZXRzU2VydmljZSA9IHlpZWxkKiBTZWNyZXRzU2VydmljZTtcblx0XHRjb25zdCByZWdpc3RyeVNlcnZpY2UgPSB5aWVsZCogUmVnaXN0cnlTZXJ2aWNlO1xuXG5cdFx0Y29uc3QgcmVzb2x2ZVVybCA9IChiYXNlVXJsOiBzdHJpbmcsIHZlcnNpb24/OiBzdHJpbmcpOiBzdHJpbmcgPT5cblx0XHRcdHZlcnNpb24gJiYgdmVyc2lvbiAhPT0gXCJsYXRlc3RcIlxuXHRcdFx0XHQ/IGJhc2VVcmwucmVwbGFjZShcIkBsYXRlc3RcIiwgYEAke3ZlcnNpb259YClcblx0XHRcdFx0OiBiYXNlVXJsO1xuXG5cdFx0Y29uc3QgZ2V0TWV0YWRhdGEgPSAocGx1Z2luSWQ6IHN0cmluZykgPT4gcmVnaXN0cnlTZXJ2aWNlLmdldChwbHVnaW5JZCk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0bG9hZFBsdWdpbjogKHBsdWdpbklkOiBzdHJpbmcpID0+XG5cdFx0XHRcdEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRcdFx0XHRjb25zdCBtZXRhZGF0YSA9IHlpZWxkKiBnZXRNZXRhZGF0YShwbHVnaW5JZCk7XG5cdFx0XHRcdFx0Y29uc3QgdXJsID0gcmVzb2x2ZVVybChtZXRhZGF0YS5yZW1vdGVVcmwpO1xuXG5cdFx0XHRcdFx0eWllbGQqIG1vZHVsZUZlZGVyYXRpb25TZXJ2aWNlLnJlZ2lzdGVyUmVtb3RlKHBsdWdpbklkLCB1cmwpLnBpcGUoXG5cdFx0XHRcdFx0XHRFZmZlY3QubWFwRXJyb3IoKGVycm9yKSA9PlxuXHRcdFx0XHRcdFx0XHR0b1BsdWdpblJ1bnRpbWVFcnJvcihlcnJvci5jYXVzZSwgcGx1Z2luSWQsIHVuZGVmaW5lZCwgXCJyZWdpc3Rlci1yZW1vdGVcIiwgdHJ1ZSksXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHR5aWVsZCogRWZmZWN0LmxvZ0RlYnVnKFwiTG9hZGluZyBwbHVnaW5cIiwgeyBwbHVnaW5JZCwgdXJsIH0pO1xuXG5cdFx0XHRcdFx0Y29uc3QgY3RvciA9IHlpZWxkKiBtb2R1bGVGZWRlcmF0aW9uU2VydmljZS5sb2FkUmVtb3RlQ29uc3RydWN0b3IocGx1Z2luSWQsIHVybCkucGlwZShcblx0XHRcdFx0XHRcdEVmZmVjdC5tYXBFcnJvcigoZXJyb3IpID0+XG5cdFx0XHRcdFx0XHRcdHRvUGx1Z2luUnVudGltZUVycm9yKGVycm9yLmNhdXNlLCBwbHVnaW5JZCwgdW5kZWZpbmVkLCBcImxvYWQtcmVtb3RlXCIsIGZhbHNlKSxcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRjdG9yLFxuXHRcdFx0XHRcdFx0bWV0YWRhdGE6IG1ldGFkYXRhLFxuXHRcdFx0XHRcdH0gc2F0aXNmaWVzIExvYWRlZFBsdWdpbjtcblx0XHRcdFx0fSksXG5cblx0XHRcdGluc3RhbnRpYXRlUGx1Z2luOiA8VCBleHRlbmRzIEFueVBsdWdpbj4oXG5cdFx0XHRcdHBsdWdpbklkOiBzdHJpbmcsXG5cdFx0XHRcdGxvYWRlZFBsdWdpbjogTG9hZGVkUGx1Z2luPFQ+LFxuXHRcdFx0KSA9PlxuXHRcdFx0XHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRcdFx0Y29uc3QgaW5zdGFuY2UgPSB5aWVsZCogRWZmZWN0LnRyeSgoKSA9PiBuZXcgbG9hZGVkUGx1Z2luLmN0b3IoKSkucGlwZShcblx0XHRcdFx0XHRcdEVmZmVjdC5tYXBFcnJvcigoZXJyb3IpID0+XG5cdFx0XHRcdFx0XHRcdHRvUGx1Z2luUnVudGltZUVycm9yKFxuXHRcdFx0XHRcdFx0XHRcdGVycm9yLFxuXHRcdFx0XHRcdFx0XHRcdHBsdWdpbklkLFxuXHRcdFx0XHRcdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0XHRcdFx0XHRcImluc3RhbnRpYXRlLXBsdWdpblwiLFxuXHRcdFx0XHRcdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0KGluc3RhbmNlLmlkIGFzIHN0cmluZykgPSBwbHVnaW5JZDtcblxuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRwbHVnaW46IGluc3RhbmNlLFxuXHRcdFx0XHRcdFx0bWV0YWRhdGE6IGxvYWRlZFBsdWdpbi5tZXRhZGF0YSxcblx0XHRcdFx0XHR9IHNhdGlzZmllcyBQbHVnaW5JbnN0YW5jZTxUPjtcblx0XHRcdFx0fSksXG5cblx0XHRcdGluaXRpYWxpemVQbHVnaW46IDxUIGV4dGVuZHMgQW55UGx1Z2luPihcblx0XHRcdFx0cGx1Z2luSW5zdGFuY2U6IFBsdWdpbkluc3RhbmNlPFQ+LFxuXHRcdFx0XHRjb25maWc6IHsgdmFyaWFibGVzOiBJbmZlclNjaGVtYUlucHV0PFRbXCJjb25maWdTY2hlbWFcIl1bXCJ2YXJpYWJsZXNcIl0+OyBzZWNyZXRzOiBJbmZlclNjaGVtYUlucHV0PFRbXCJjb25maWdTY2hlbWFcIl1bXCJzZWNyZXRzXCJdPiB9LFxuXHRcdFx0KSA9PlxuXHRcdFx0XHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRcdFx0Y29uc3QgeyBwbHVnaW4gfSA9IHBsdWdpbkluc3RhbmNlO1xuXG5cdFx0XHRcdFx0Ly8gVmFsaWRhdGUgYW5kIGh5ZHJhdGUgY29uZmlnXG5cdFx0XHRcdFx0Y29uc3QgdmFsaWRhdGVkVmFyaWFibGVzID0geWllbGQqIHZhbGlkYXRlKFxuXHRcdFx0XHRcdFx0cGx1Z2luLmNvbmZpZ1NjaGVtYS52YXJpYWJsZXMgYXMgei5ab2RTY2hlbWE8SW5mZXJTY2hlbWFPdXRwdXQ8VFtcImNvbmZpZ1NjaGVtYVwiXVtcInZhcmlhYmxlc1wiXT4+LFxuXHRcdFx0XHRcdFx0Y29uZmlnLnZhcmlhYmxlcyxcblx0XHRcdFx0XHRcdHBsdWdpbi5pZCxcblx0XHRcdFx0XHRcdFwiY29uZmlnXCIsXG5cdFx0XHRcdFx0KS5waXBlKFxuXHRcdFx0XHRcdFx0RWZmZWN0Lm1hcEVycm9yKCh2YWxpZGF0aW9uRXJyb3IpID0+XG5cdFx0XHRcdFx0XHRcdG5ldyBQbHVnaW5SdW50aW1lRXJyb3Ioe1xuXHRcdFx0XHRcdFx0XHRcdHBsdWdpbklkOiBwbHVnaW4uaWQsXG5cdFx0XHRcdFx0XHRcdFx0b3BlcmF0aW9uOiBcInZhbGlkYXRlLWNvbmZpZ1wiLFxuXHRcdFx0XHRcdFx0XHRcdGNhdXNlOiB2YWxpZGF0aW9uRXJyb3Iuem9kRXJyb3IsXG5cdFx0XHRcdFx0XHRcdFx0cmV0cnlhYmxlOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHQvLyBWYWxpZGF0ZSBzZWNyZXRzXG5cdFx0XHRcdFx0Y29uc3QgdmFsaWRhdGVkU2VjcmV0cyA9IHlpZWxkKiB2YWxpZGF0ZShcblx0XHRcdFx0XHRcdHBsdWdpbi5jb25maWdTY2hlbWEuc2VjcmV0cyBhcyB6LlpvZFNjaGVtYTxJbmZlclNjaGVtYU91dHB1dDxUW1wiY29uZmlnU2NoZW1hXCJdW1wic2VjcmV0c1wiXT4+LFxuXHRcdFx0XHRcdFx0Y29uZmlnLnNlY3JldHMsXG5cdFx0XHRcdFx0XHRwbHVnaW4uaWQsXG5cdFx0XHRcdFx0XHRcImNvbmZpZ1wiLFxuXHRcdFx0XHRcdCkucGlwZShcblx0XHRcdFx0XHRcdEVmZmVjdC5tYXBFcnJvcigodmFsaWRhdGlvbkVycm9yKSA9PlxuXHRcdFx0XHRcdFx0XHRuZXcgUGx1Z2luUnVudGltZUVycm9yKHtcblx0XHRcdFx0XHRcdFx0XHRwbHVnaW5JZDogcGx1Z2luLmlkLFxuXHRcdFx0XHRcdFx0XHRcdG9wZXJhdGlvbjogXCJ2YWxpZGF0ZS1zZWNyZXRzXCIsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6IHZhbGlkYXRpb25FcnJvci56b2RFcnJvcixcblx0XHRcdFx0XHRcdFx0XHRyZXRyeWFibGU6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdC8vIEh5ZHJhdGUgc2VjcmV0cyBpbiB2YXJpYWJsZXNcblx0XHRcdFx0XHRjb25zdCBoeWRyYXRlZENvbmZpZyA9IHlpZWxkKiBzZWNyZXRzU2VydmljZS5oeWRyYXRlU2VjcmV0cyh7XG5cdFx0XHRcdFx0XHR2YXJpYWJsZXM6IHZhbGlkYXRlZFZhcmlhYmxlcyxcblx0XHRcdFx0XHRcdHNlY3JldHM6IHZhbGlkYXRlZFNlY3JldHMsXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRjb25zdCBfdmFyaWFibGVzID0geWllbGQqIHZhbGlkYXRlKFxuXHRcdFx0XHRcdFx0cGx1Z2luLmNvbmZpZ1NjaGVtYS52YXJpYWJsZXMgYXMgei5ab2RTY2hlbWE8SW5mZXJTY2hlbWFPdXRwdXQ8VFtcImNvbmZpZ1NjaGVtYVwiXVtcInZhcmlhYmxlc1wiXT4+LFxuXHRcdFx0XHRcdFx0aHlkcmF0ZWRDb25maWcudmFyaWFibGVzLFxuXHRcdFx0XHRcdFx0cGx1Z2luLmlkLFxuXHRcdFx0XHRcdFx0XCJjb25maWdcIixcblx0XHRcdFx0XHQpLnBpcGUoXG5cdFx0XHRcdFx0XHRFZmZlY3QubWFwRXJyb3IoKHZhbGlkYXRpb25FcnJvcikgPT5cblx0XHRcdFx0XHRcdFx0bmV3IFBsdWdpblJ1bnRpbWVFcnJvcih7XG5cdFx0XHRcdFx0XHRcdFx0cGx1Z2luSWQ6IHBsdWdpbi5pZCxcblx0XHRcdFx0XHRcdFx0XHRvcGVyYXRpb246IFwidmFsaWRhdGUtaHlkcmF0ZWQtY29uZmlnXCIsXG5cdFx0XHRcdFx0XHRcdFx0Y2F1c2U6IHZhbGlkYXRpb25FcnJvci56b2RFcnJvcixcblx0XHRcdFx0XHRcdFx0XHRyZXRyeWFibGU6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdC8vIENyZWF0ZSBhIGxvbmctbGl2ZWQgc2NvcGUgZm9yIHRoaXMgcGx1Z2luIGluc3RhbmNlXG5cdFx0XHRcdFx0Y29uc3Qgc2NvcGUgPSB5aWVsZCogU2NvcGUubWFrZSgpO1xuXG5cdFx0XHRcdFx0Ly8gSW5pdGlhbGl6ZSBwbHVnaW4gd2l0aGluIHRoZSBzY29wZVxuXHRcdFx0XHRcdGNvbnN0IGNvbnRleHQgPSB5aWVsZCogcGx1Z2luLmluaXRpYWxpemUoeyB2YXJpYWJsZXM6IF92YXJpYWJsZXMsIHNlY3JldHM6IGh5ZHJhdGVkQ29uZmlnLnNlY3JldHMgfSkucGlwZShcblx0XHRcdFx0XHRcdEVmZmVjdC5wcm92aWRlU2VydmljZShTY29wZS5TY29wZSwgc2NvcGUpLFxuXHRcdFx0XHRcdFx0RWZmZWN0Lm1hcEVycm9yKChlcnJvcikgPT5cblx0XHRcdFx0XHRcdFx0dG9QbHVnaW5SdW50aW1lRXJyb3IoZXJyb3IsIHBsdWdpbi5pZCwgdW5kZWZpbmVkLCBcImluaXRpYWxpemUtcGx1Z2luXCIsIGZhbHNlKSxcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdHBsdWdpbixcblx0XHRcdFx0XHRcdG1ldGFkYXRhOiBwbHVnaW5JbnN0YW5jZS5tZXRhZGF0YSxcblx0XHRcdFx0XHRcdGNvbmZpZzogeyB2YXJpYWJsZXM6IF92YXJpYWJsZXMsIHNlY3JldHM6IGh5ZHJhdGVkQ29uZmlnLnNlY3JldHMgfSxcblx0XHRcdFx0XHRcdGNvbnRleHQsXG5cdFx0XHRcdFx0XHRzY29wZSxcblx0XHRcdFx0XHR9IHNhdGlzZmllcyBJbml0aWFsaXplZFBsdWdpbjxUPjtcblx0XHRcdFx0fSksXG5cdFx0fTtcblx0fSksXG59KSB7XG59XG4iLCJpbXBvcnQgeyBFZmZlY3QsIEV4aXQsIExheWVyLCBTY29wZSB9IGZyb20gXCJlZmZlY3RcIjtcbmltcG9ydCB0eXBlIHtcblx0QW55UGx1Z2luLFxuXHRJbml0aWFsaXplZFBsdWdpbixcblx0UGx1Z2luUmVnaXN0cnksXG5cdFNlY3JldHNDb25maWdcbn0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBNb2R1bGVGZWRlcmF0aW9uU2VydmljZSB9IGZyb20gXCIuL21vZHVsZS1mZWRlcmF0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7IFBsdWdpbkxpZmVjeWNsZVNlcnZpY2UgfSBmcm9tIFwiLi9wbHVnaW4tbGlmZWN5Y2xlLnNlcnZpY2VcIjtcbmltcG9ydCB7IFBsdWdpbkxvYWRlclNlcnZpY2UsIFBsdWdpblJlZ2lzdHJ5VGFnLCBSZWdpc3RyeVNlcnZpY2UgfSBmcm9tIFwiLi9wbHVnaW4tbG9hZGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7IFNlY3JldHNDb25maWdUYWcsIFNlY3JldHNTZXJ2aWNlIH0gZnJvbSBcIi4vc2VjcmV0cy5zZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5TZXJ2aWNlIGV4dGVuZHMgRWZmZWN0LlNlcnZpY2U8UGx1Z2luU2VydmljZT4oKShcIlBsdWdpblNlcnZpY2VcIiwge1xuXHRzY29wZWQ6IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRjb25zdCBsb2FkZXIgPSB5aWVsZCogUGx1Z2luTG9hZGVyU2VydmljZTtcblx0XHRjb25zdCBsaWZlY3ljbGUgPSB5aWVsZCogUGx1Z2luTGlmZWN5Y2xlU2VydmljZTtcblxuXHRcdHJldHVybiB7XG5cdFx0XHRsb2FkUGx1Z2luOiBsb2FkZXIubG9hZFBsdWdpbixcblx0XHRcdGluc3RhbnRpYXRlUGx1Z2luOiBsb2FkZXIuaW5zdGFudGlhdGVQbHVnaW4sXG5cdFx0XHRpbml0aWFsaXplUGx1Z2luOiBsb2FkZXIuaW5pdGlhbGl6ZVBsdWdpbixcblx0XHRcdHNodXRkb3duUGx1Z2luOiAocGx1Z2luOiBJbml0aWFsaXplZFBsdWdpbjxBbnlQbHVnaW4+KSA9PlxuXHRcdFx0XHRFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRcdFx0Ly8gU2h1dGRvd24gdGhlIHBsdWdpbiBmaXJzdCAoZ3JhY2VmdWwgY2xlYW51cClcblx0XHRcdFx0XHR5aWVsZCogcGx1Z2luLnBsdWdpbi5zaHV0ZG93bigpLnBpcGUoXG5cdFx0XHRcdFx0XHRFZmZlY3QuY2F0Y2hBbGwoKCkgPT4gRWZmZWN0LnZvaWQpXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdC8vIENsb3NlIHRoZSBwbHVnaW4gc2NvcGUgdG8gaW50ZXJydXB0IGZpYmVycyBhbmQgcmVsZWFzZSByZXNvdXJjZXNcblx0XHRcdFx0XHR5aWVsZCogU2NvcGUuY2xvc2UocGx1Z2luLnNjb3BlLCBFeGl0LnN1Y2NlZWQodW5kZWZpbmVkKSk7XG5cblx0XHRcdFx0XHQvLyBVbnJlZ2lzdGVyIGZyb20gbGlmZWN5Y2xlIHRyYWNraW5nXG5cdFx0XHRcdFx0eWllbGQqIGxpZmVjeWNsZS51bnJlZ2lzdGVyKHBsdWdpbik7XG5cdFx0XHRcdH0pLFxuXHRcdFx0Y2xlYW51cDogbGlmZWN5Y2xlLmNsZWFudXAsXG5cdFx0fTtcblx0fSksXG59KSB7XG5cdHN0YXRpYyBMaXZlID0gKHJlZ2lzdHJ5OiBQbHVnaW5SZWdpc3RyeSwgc2VjcmV0czogU2VjcmV0c0NvbmZpZykgPT4ge1xuXHRcdGNvbnN0IGNvbnRleHRMYXllciA9IExheWVyLm1lcmdlQWxsKFxuXHRcdFx0TGF5ZXIuc3VjY2VlZChQbHVnaW5SZWdpc3RyeVRhZywgcmVnaXN0cnkpLFxuXHRcdFx0TGF5ZXIuc3VjY2VlZChTZWNyZXRzQ29uZmlnVGFnLCBzZWNyZXRzKSxcblx0XHQpO1xuXG5cdFx0Y29uc3Qgc2VydmljZXNMYXllciA9IExheWVyLm1lcmdlQWxsKFxuXHRcdFx0TW9kdWxlRmVkZXJhdGlvblNlcnZpY2UuRGVmYXVsdCxcblx0XHRcdFNlY3JldHNTZXJ2aWNlLkRlZmF1bHQsXG5cdFx0XHRSZWdpc3RyeVNlcnZpY2UuRGVmYXVsdCxcblx0XHRcdFBsdWdpbkxpZmVjeWNsZVNlcnZpY2UuRGVmYXVsdCxcblx0XHQpLnBpcGUoXG5cdFx0XHRMYXllci5wcm92aWRlKGNvbnRleHRMYXllcilcblx0XHQpO1xuXG5cdFx0cmV0dXJuIFBsdWdpblNlcnZpY2UuRGVmYXVsdC5waXBlKFxuXHRcdFx0TGF5ZXIucHJvdmlkZShQbHVnaW5Mb2FkZXJTZXJ2aWNlLkRlZmF1bHQpLFxuXHRcdFx0TGF5ZXIucHJvdmlkZShzZXJ2aWNlc0xheWVyKVxuXHRcdCk7XG5cdH1cbn1cbiIsImltcG9ydCB7IGNyZWF0ZVJvdXRlckNsaWVudCB9IGZyb20gXCJAb3JwYy9zZXJ2ZXJcIjtcbmltcG9ydCB7IENhdXNlLCBFZmZlY3QsIEV4aXQsIEhhc2gsIE1hbmFnZWRSdW50aW1lLCBPcHRpb24gfSBmcm9tIFwiZWZmZWN0XCI7XG5pbXBvcnQgdHlwZSB7XG5cdEFueVBsdWdpbixcblx0SW5pdGlhbGl6ZWRQbHVnaW4sXG5cdExvYWRlZFBsdWdpbixcblx0UGx1Z2luQ2xpZW50VHlwZSxcblx0UGx1Z2luQ29uZmlnSW5wdXQsXG5cdFBsdWdpbkluc3RhbmNlLFxuXHRQbHVnaW5SZWdpc3RyeSxcblx0UGx1Z2luUm91dGVyVHlwZSxcblx0UGx1Z2luUnVudGltZUNvbmZpZyxcblx0UmVnaXN0ZXJlZFBsdWdpbixcblx0UmVnaXN0ZXJlZFBsdWdpbnMsXG5cdFVzZVBsdWdpblJlc3VsdFxufSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IFBsdWdpblJ1bnRpbWVFcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuaW1wb3J0IHsgUGx1Z2luU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL3BsdWdpbi5zZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW5SdW50aW1lPFIgZXh0ZW5kcyBSZWdpc3RlcmVkUGx1Z2lucyA9IFJlZ2lzdGVyZWRQbHVnaW5zPiB7XG5cdHByaXZhdGUgcGx1Z2luQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgRWZmZWN0LkVmZmVjdDxJbml0aWFsaXplZFBsdWdpbjxBbnlQbHVnaW4+LCBQbHVnaW5SdW50aW1lRXJyb3I+PigpO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgcnVudGltZTogTWFuYWdlZFJ1bnRpbWUuTWFuYWdlZFJ1bnRpbWU8UGx1Z2luU2VydmljZSwgbmV2ZXI+LFxuXHRcdHByaXZhdGUgcmVnaXN0cnk6IFBsdWdpblJlZ2lzdHJ5XG5cdCkgeyB9XG5cblx0cHJpdmF0ZSBnZW5lcmF0ZUNhY2hlS2V5KHBsdWdpbklkOiBzdHJpbmcsIGNvbmZpZzogdW5rbm93bik6IHN0cmluZyB7XG5cdFx0Y29uc3QgY29uZmlnSGFzaCA9IEhhc2guc3RydWN0dXJlKGNvbmZpZyBhcyBvYmplY3QpLnRvU3RyaW5nKCk7XG5cdFx0cmV0dXJuIGAke3BsdWdpbklkfToke2NvbmZpZ0hhc2h9YDtcblx0fVxuXG5cdHByaXZhdGUgdmFsaWRhdGVQbHVnaW5JZChcblx0XHRwbHVnaW5JZDogc3RyaW5nXG5cdCk6IEVmZmVjdC5FZmZlY3Q8c3RyaW5nLCBQbHVnaW5SdW50aW1lRXJyb3I+IHtcblx0XHRpZiAoIShwbHVnaW5JZCBpbiB0aGlzLnJlZ2lzdHJ5KSkge1xuXHRcdFx0cmV0dXJuIEVmZmVjdC5mYWlsKG5ldyBQbHVnaW5SdW50aW1lRXJyb3Ioe1xuXHRcdFx0XHRwbHVnaW5JZDogU3RyaW5nKHBsdWdpbklkKSxcblx0XHRcdFx0b3BlcmF0aW9uOiBcInZhbGlkYXRlLXBsdWdpbi1pZFwiLFxuXHRcdFx0XHRjYXVzZTogbmV3IEVycm9yKGBQbHVnaW4gSUQgJyR7U3RyaW5nKHBsdWdpbklkKX0nIG5vdCBmb3VuZCBpbiByZWdpc3RyeS5gKSxcblx0XHRcdFx0cmV0cnlhYmxlOiBmYWxzZSxcblx0XHRcdH0pKTtcblx0XHR9XG5cdFx0cmV0dXJuIEVmZmVjdC5zdWNjZWVkKFN0cmluZyhwbHVnaW5JZCkpO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBydW5Qcm9taXNlPEEsIEU+KFxuXHRcdGVmZmVjdDogRWZmZWN0LkVmZmVjdDxBLCBFLCBQbHVnaW5TZXJ2aWNlPlxuXHQpOiBQcm9taXNlPEE+IHtcblx0XHRjb25zdCBleGl0ID0gYXdhaXQgdGhpcy5ydW50aW1lLnJ1blByb21pc2VFeGl0KGVmZmVjdCk7XG5cblx0XHRpZiAoRXhpdC5pc0ZhaWx1cmUoZXhpdCkpIHtcblx0XHRcdGNvbnN0IGVycm9yID0gQ2F1c2UuZmFpbHVyZU9wdGlvbihleGl0LmNhdXNlKTtcblx0XHRcdGlmIChPcHRpb24uaXNTb21lKGVycm9yKSkge1xuXHRcdFx0XHR0aHJvdyBlcnJvci52YWx1ZTtcblx0XHRcdH1cblx0XHRcdHRocm93IENhdXNlLnNxdWFzaChleGl0LmNhdXNlKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZXhpdC52YWx1ZTtcblx0fVxuXG5cdGFzeW5jIHVzZVBsdWdpbjxLIGV4dGVuZHMga2V5b2YgUmVnaXN0ZXJlZFBsdWdpbnMgJiBzdHJpbmc+KFxuXHRcdHBsdWdpbklkOiBLLFxuXHRcdGNvbmZpZzogUGx1Z2luQ29uZmlnSW5wdXQ8UltLXT5cblx0KTogUHJvbWlzZTxVc2VQbHVnaW5SZXN1bHQ8Sz4+IHtcblx0XHRjb25zdCBjYWNoZUtleSA9IHRoaXMuZ2VuZXJhdGVDYWNoZUtleShwbHVnaW5JZCwgY29uZmlnKTtcblxuXHRcdGxldCBjYWNoZWRQbHVnaW4gPSB0aGlzLnBsdWdpbkNhY2hlLmdldChjYWNoZUtleSk7XG5cdFx0aWYgKCFjYWNoZWRQbHVnaW4pIHtcblx0XHRcdGNvbnN0IG9wZXJhdGlvbiA9IEVmZmVjdC5nZW4odGhpcywgZnVuY3Rpb24qICgpIHtcblx0XHRcdFx0Y29uc3QgcGx1Z2luU2VydmljZSA9IHlpZWxkKiBQbHVnaW5TZXJ2aWNlO1xuXHRcdFx0XHRjb25zdCB2YWxpZGF0ZWRJZCA9IHlpZWxkKiB0aGlzLnZhbGlkYXRlUGx1Z2luSWQocGx1Z2luSWQpO1xuXG5cdFx0XHRcdC8vIExvYWQg4oaSIEluc3RhbnRpYXRlIOKGkiBJbml0aWFsaXplXG5cdFx0XHRcdGNvbnN0IGN0b3IgPSB5aWVsZCogcGx1Z2luU2VydmljZS5sb2FkUGx1Z2luKHZhbGlkYXRlZElkKTtcblx0XHRcdFx0Y29uc3QgaW5zdGFuY2UgPSB5aWVsZCogcGx1Z2luU2VydmljZS5pbnN0YW50aWF0ZVBsdWdpbihwbHVnaW5JZCwgY3Rvcik7XG5cdFx0XHRcdGNvbnN0IGluaXRpYWxpemVkID0geWllbGQqIHBsdWdpblNlcnZpY2UuaW5pdGlhbGl6ZVBsdWdpbihpbnN0YW5jZSwgY29uZmlnKTtcblxuXHRcdFx0XHRyZXR1cm4gaW5pdGlhbGl6ZWQ7XG5cdFx0XHR9KS5waXBlKEVmZmVjdC5wcm92aWRlKHRoaXMucnVudGltZSkpO1xuXG5cdFx0XHRjYWNoZWRQbHVnaW4gPSBFZmZlY3QuY2FjaGVkKG9wZXJhdGlvbikucGlwZShFZmZlY3QuZmxhdHRlbik7XG5cdFx0XHR0aGlzLnBsdWdpbkNhY2hlLnNldChjYWNoZUtleSwgY2FjaGVkUGx1Z2luKTtcblx0XHR9XG5cblx0XHRjb25zdCBpbml0aWFsaXplZCA9IGF3YWl0IHRoaXMucnVuUHJvbWlzZShjYWNoZWRQbHVnaW4pO1xuXHRcdGNvbnN0IHJvdXRlciA9IGluaXRpYWxpemVkLnBsdWdpbi5jcmVhdGVSb3V0ZXIoaW5pdGlhbGl6ZWQuY29udGV4dCk7XG5cdFx0Y29uc3QgY2xpZW50ID0gY3JlYXRlUm91dGVyQ2xpZW50KHJvdXRlcik7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0cm91dGVyOiByb3V0ZXIgYXMgUGx1Z2luUm91dGVyVHlwZTxSW0tdPixcblx0XHRcdGNsaWVudDogY2xpZW50IGFzIFBsdWdpbkNsaWVudFR5cGU8UltLXT4sXG5cdFx0XHRtZXRhZGF0YTogaW5pdGlhbGl6ZWQubWV0YWRhdGEsXG5cdFx0XHRpbml0aWFsaXplZDogaW5pdGlhbGl6ZWQgYXMgSW5pdGlhbGl6ZWRQbHVnaW48UmVnaXN0ZXJlZFBsdWdpbjxLPj5cblx0XHR9IGFzIFVzZVBsdWdpblJlc3VsdDxLPjtcblx0fVxuXG5cdGFzeW5jIGxvYWRQbHVnaW48SyBleHRlbmRzIGtleW9mIFJlZ2lzdGVyZWRQbHVnaW5zICYgc3RyaW5nPihcblx0XHRwbHVnaW5JZDogS1xuXHQpOiBQcm9taXNlPExvYWRlZFBsdWdpbjxSZWdpc3RlcmVkUGx1Z2luPEs+Pj4ge1xuXHRcdGNvbnN0IGVmZmVjdCA9IEVmZmVjdC5nZW4oZnVuY3Rpb24qICgpIHtcblx0XHRcdGNvbnN0IHBsdWdpblNlcnZpY2UgPSB5aWVsZCogUGx1Z2luU2VydmljZTtcblx0XHRcdHJldHVybiB5aWVsZCogcGx1Z2luU2VydmljZS5sb2FkUGx1Z2luKHBsdWdpbklkKTtcblx0XHR9KTtcblx0XHRyZXR1cm4gdGhpcy5ydW5Qcm9taXNlKGVmZmVjdCkgYXMgUHJvbWlzZTxMb2FkZWRQbHVnaW48UmVnaXN0ZXJlZFBsdWdpbjxLPj4+O1xuXHR9XG5cblx0YXN5bmMgaW5zdGFudGlhdGVQbHVnaW48SyBleHRlbmRzIGtleW9mIFJlZ2lzdGVyZWRQbHVnaW5zICYgc3RyaW5nPihcblx0XHRwbHVnaW5JZDogSyxcblx0XHRsb2FkZWRQbHVnaW46IExvYWRlZFBsdWdpbjxSZWdpc3RlcmVkUGx1Z2luPEs+PlxuXHQpOiBQcm9taXNlPFBsdWdpbkluc3RhbmNlPFJlZ2lzdGVyZWRQbHVnaW48Sz4+PiB7XG5cdFx0Y29uc3QgZWZmZWN0ID0gRWZmZWN0LmdlbihmdW5jdGlvbiogKCkge1xuXHRcdFx0Y29uc3QgcGx1Z2luU2VydmljZSA9IHlpZWxkKiBQbHVnaW5TZXJ2aWNlO1xuXHRcdFx0cmV0dXJuIHlpZWxkKiBwbHVnaW5TZXJ2aWNlLmluc3RhbnRpYXRlUGx1Z2luKHBsdWdpbklkLCBsb2FkZWRQbHVnaW4pO1xuXHRcdH0pO1xuXHRcdHJldHVybiB0aGlzLnJ1blByb21pc2UoZWZmZWN0KSBhcyBQcm9taXNlPFBsdWdpbkluc3RhbmNlPFJlZ2lzdGVyZWRQbHVnaW48Sz4+Pjtcblx0fVxuXG5cdGFzeW5jIGluaXRpYWxpemVQbHVnaW48VCBleHRlbmRzIEFueVBsdWdpbj4oXG5cdFx0aW5zdGFuY2U6IFBsdWdpbkluc3RhbmNlPFQ+LFxuXHRcdGNvbmZpZzogYW55XG5cdCk6IFByb21pc2U8SW5pdGlhbGl6ZWRQbHVnaW48VD4+IHtcblx0XHRjb25zdCBlZmZlY3QgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRjb25zdCBwbHVnaW5TZXJ2aWNlID0geWllbGQqIFBsdWdpblNlcnZpY2U7XG5cdFx0XHRyZXR1cm4geWllbGQqIHBsdWdpblNlcnZpY2UuaW5pdGlhbGl6ZVBsdWdpbihpbnN0YW5jZSwgY29uZmlnKTtcblx0XHR9KTtcblx0XHRyZXR1cm4gdGhpcy5ydW5Qcm9taXNlKGVmZmVjdCk7XG5cdH1cblxuXHRhc3luYyBzaHV0ZG93bigpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBlZmZlY3QgPSBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG5cdFx0XHRjb25zdCBwbHVnaW5TZXJ2aWNlID0geWllbGQqIFBsdWdpblNlcnZpY2U7XG5cdFx0XHR5aWVsZCogcGx1Z2luU2VydmljZS5jbGVhbnVwKCk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRoaXMucnVuUHJvbWlzZShlZmZlY3QpO1xuXHR9XG5cblx0YXN5bmMgZXZpY3RQbHVnaW48SyBleHRlbmRzIGtleW9mIFJlZ2lzdGVyZWRQbHVnaW5zICYgc3RyaW5nPihcblx0XHRwbHVnaW5JZDogSyxcblx0XHRjb25maWc6IFBsdWdpbkNvbmZpZ0lucHV0PFJlZ2lzdGVyZWRQbHVnaW5zW0tdPlxuXHQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBjYWNoZUtleSA9IHRoaXMuZ2VuZXJhdGVDYWNoZUtleShwbHVnaW5JZCwgY29uZmlnKTtcblxuXHRcdGNvbnN0IGVmZmVjdCA9IEVmZmVjdC5nZW4odGhpcywgZnVuY3Rpb24qICgpIHtcblx0XHRcdGNvbnN0IHBsdWdpblNlcnZpY2UgPSB5aWVsZCogUGx1Z2luU2VydmljZTtcblx0XHRcdGNvbnN0IGNhY2hlZFBsdWdpbiA9IHRoaXMucGx1Z2luQ2FjaGUuZ2V0KGNhY2hlS2V5KTtcblxuXHRcdFx0aWYgKGNhY2hlZFBsdWdpbikge1xuXHRcdFx0XHR0aGlzLnBsdWdpbkNhY2hlLmRlbGV0ZShjYWNoZUtleSk7XG5cblx0XHRcdFx0Y29uc3QgcGx1Z2luUmVzdWx0ID0geWllbGQqIGNhY2hlZFBsdWdpbi5waXBlKFxuXHRcdFx0XHRcdEVmZmVjdC5jYXRjaEFsbCgoKSA9PiBFZmZlY3Quc3VjY2VlZChudWxsKSlcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRpZiAocGx1Z2luUmVzdWx0KSB7XG5cdFx0XHRcdFx0eWllbGQqIHBsdWdpblNlcnZpY2Uuc2h1dGRvd25QbHVnaW4ocGx1Z2luUmVzdWx0KS5waXBlKFxuXHRcdFx0XHRcdFx0RWZmZWN0LmNhdGNoQWxsKCgpID0+IEVmZmVjdC52b2lkKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KS5waXBlKEVmZmVjdC5jYXRjaEFsbCgoKSA9PiBFZmZlY3Qudm9pZCkpO1xuXG5cdFx0cmV0dXJuIHRoaXMucnVuUHJvbWlzZShlZmZlY3QpO1xuXHR9XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHJlbW90ZSBVUkwgdG8gZW5zdXJlIGl0IHBvaW50cyB0byByZW1vdGVFbnRyeS5qc1xuICogSWYgdGhlIFVSTCBkb2Vzbid0IGVuZCB3aXRoIGEgZmlsZSBleHRlbnNpb24sIGFwcGVuZHMgL3JlbW90ZUVudHJ5LmpzXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVJlbW90ZVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG5cdGlmICh1cmwuZW5kc1dpdGgoJy5qcycpKSByZXR1cm4gdXJsOyAvLyBBbHJlYWR5IGEgZmlsZVxuXHRyZXR1cm4gYCR7dXJsLmVuZHNXaXRoKCcvJykgPyB1cmwuc2xpY2UoMCwgLTEpIDogdXJsfS9yZW1vdGVFbnRyeS5qc2A7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQbHVnaW5SdW50aW1lKFxuXHRjb25maWc6IFBsdWdpblJ1bnRpbWVDb25maWdcbik6IFBsdWdpblJ1bnRpbWUge1xuXHRjb25zdCBzZWNyZXRzID0gY29uZmlnLnNlY3JldHMgfHwge307XG5cblx0Ly8gTm9ybWFsaXplIGFsbCByZW1vdGUgVVJMcyBpbiB0aGUgcmVnaXN0cnlcblx0Y29uc3Qgbm9ybWFsaXplZFJlZ2lzdHJ5ID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuXHRcdE9iamVjdC5lbnRyaWVzKGNvbmZpZy5yZWdpc3RyeSkubWFwKChbcGx1Z2luSWQsIGVudHJ5XSkgPT4gW1xuXHRcdFx0cGx1Z2luSWQsXG5cdFx0XHR7XG5cdFx0XHRcdC4uLmVudHJ5LFxuXHRcdFx0XHRyZW1vdGVVcmw6IG5vcm1hbGl6ZVJlbW90ZVVybChlbnRyeS5yZW1vdGVVcmwpXG5cdFx0XHR9XG5cdFx0XSlcblx0KSBhcyBQbHVnaW5SZWdpc3RyeTtcblxuXHRjb25zdCBsYXllciA9IFBsdWdpblNlcnZpY2UuTGl2ZShub3JtYWxpemVkUmVnaXN0cnksIHNlY3JldHMpO1xuXHRjb25zdCBydW50aW1lID0gTWFuYWdlZFJ1bnRpbWUubWFrZShsYXllcik7XG5cblx0cmV0dXJuIG5ldyBQbHVnaW5SdW50aW1lKHJ1bnRpbWUsIG5vcm1hbGl6ZWRSZWdpc3RyeSk7XG59Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFJQSxJQUFhLHFCQUFiLGNBQXdDLEtBQUssWUFBWSxxQkFBcUIsQ0FNM0U7QUFFSCxJQUFhLHdCQUFiLGNBQTJDLEtBQUssWUFDL0Msd0JBQ0EsQ0FJRTtBQUVILElBQWEsa0JBQWIsY0FBcUMsS0FBSyxZQUFZLGtCQUFrQixDQUlyRTtBQUdILE1BQWEsdUJBQXVCLFNBQTBCO0FBQzdELFNBQVEsTUFBUjtFQUNDLEtBQUs7RUFDTCxLQUFLO0VBQ0wsS0FBSztFQUNMLEtBQUs7RUFDTCxLQUFLLFVBQ0osUUFBTztFQUNSLFFBQ0MsUUFBTzs7O0FBS1YsTUFBYSxpQkFDWixXQUNBLFVBQ0EsZUFDQSxjQUN3QjtBQUN4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
|