wacom 13.1.3 → 13.1.7
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/esm2020/lib/guard/meta.guard.mjs +1 -1
- package/esm2020/lib/services/mongo.service.mjs +26 -24
- package/esm2020/lib/services/render.service.mjs +16 -28
- package/fesm2015/wacom.mjs +40 -50
- package/fesm2015/wacom.mjs.map +1 -1
- package/fesm2020/wacom.mjs +40 -50
- package/fesm2020/wacom.mjs.map +1 -1
- package/lib/services/render.service.d.ts +3 -4
- package/package.json +1 -1
|
@@ -47,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
47
47
|
}, {
|
|
48
48
|
type: Optional
|
|
49
49
|
}] }]; } });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhY29tL3NyYy9saWIvZ3VhcmQvbWV0YS5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHN0QsT0FBTyxFQUFFLFlBQVksRUFBVSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBRzVFLE1BQU0sT0FBTyxTQUFTO0lBR3JCLFlBQTJCLFdBQXdCLEVBQ1IsTUFBYztRQUQ5QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNSLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDeEQsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3pCLElBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDO0lBQy9DLENBQUM7SUFDTSxXQUFXLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUMzRSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBQ08scUJBQXFCLENBQUMsT0FBWSxFQUFFO1FBQzNDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN2QixPQUFPO1NBQ1A7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEMsSUFBSSxJQUFJLEtBQUssT0FBTyxJQUFJLElBQUksS0FBSyxhQUFhLElBQUcsSUFBSSxLQUFLLE1BQU0sRUFBRTtnQkFDakUsT0FBTzthQUNQO1lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckQsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDOUMsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsS0FBSyxPQUFPLElBQUksR0FBRyxLQUFLLGFBQWEsSUFBSSxHQUFHLEtBQUssTUFBTSxFQUFFO2dCQUM5RSxPQUFPO2FBQ1A7WUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7O0FBL0JhLG9CQUFVLEdBQUcsV0FBWSxDQUFBO3NHQUQzQixTQUFTLDZDQUlaLFlBQVk7MEdBSlQsU0FBUzsyRkFBVCxTQUFTO2tCQURyQixVQUFVOzswQkFLUixNQUFNOzJCQUFDLFlBQVk7OzBCQUFHLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBNZXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL21ldGEuc2VydmljZSc7XG5pbXBvcnQgeyBDT05GSUdfVE9LRU4sIENvbmZpZywgREVGQVVMVF9DT05GSUcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNZXRhR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG5cdHB1YmxpYyBzdGF0aWMgSURFTlRJRklFUiA9ICdNZXRhR3VhcmQnO1xuXHRwcml2YXRlIF9tZXRhOiBhbnkgO1xuXHRwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBtZXRhU2VydmljZTogTWV0YVNlcnZpY2UsXG5cdFx0QEluamVjdChDT05GSUdfVE9LRU4pIEBPcHRpb25hbCgpIHByaXZhdGUgY29uZmlnOiBDb25maWcpIHtcblx0XHR0aGlzLl9tZXRhID0gY29uZmlnLm1ldGE7XG5cdFx0aWYoIXRoaXMuY29uZmlnKSB0aGlzLmNvbmZpZyA9IERFRkFVTFRfQ09ORklHO1xuXHR9XG5cdHB1YmxpYyBjYW5BY3RpdmF0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBib29sZWFuIHtcblx0XHR0aGlzLl9wcm9jZXNzUm91dGVNZXRhVGFncyhyb3V0ZS5kYXRhICYmIHJvdXRlLmRhdGFbJ21ldGEnXSk7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0cHJpdmF0ZSBfcHJvY2Vzc1JvdXRlTWV0YVRhZ3MobWV0YTogYW55ID0ge30pIHtcblx0XHRpZiAobWV0YS5kaXNhYmxlVXBkYXRlKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMubWV0YVNlcnZpY2Uuc2V0VGl0bGUobWV0YS50aXRsZSwgbWV0YS50aXRsZVN1ZmZpeCk7XG5cdFx0dGhpcy5tZXRhU2VydmljZS5zZXRMaW5rKG1ldGEubGluayk7XG5cdFx0T2JqZWN0LmtleXMobWV0YSkuZm9yRWFjaChwcm9wID0+IHtcblx0XHRcdGlmIChwcm9wID09PSAndGl0bGUnIHx8IHByb3AgPT09ICd0aXRsZVN1ZmZpeCd8fCBwcm9wID09PSAnbGluaycpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0T2JqZWN0LmtleXMobWV0YVtwcm9wXSkuZm9yRWFjaChrZXkgPT4ge1xuXHRcdFx0XHR0aGlzLm1ldGFTZXJ2aWNlLnNldFRhZyhrZXksIG1ldGFbcHJvcF1ba2V5XSwgcHJvcCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0XHRPYmplY3Qua2V5cyh0aGlzLl9tZXRhLmRlZmF1bHRzKS5mb3JFYWNoKGtleSA9PiB7XG5cdFx0XHRpZiAoa2V5IGluIG1ldGEgfHwga2V5ID09PSAndGl0bGUnIHx8IGtleSA9PT0gJ3RpdGxlU3VmZml4JyB8fCBrZXkgPT09ICdsaW5rJykge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR0aGlzLm1ldGFTZXJ2aWNlLnNldFRhZyhrZXksIHRoaXMuX21ldGEuZGVmYXVsdHNba2V5XSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -149,14 +149,14 @@ export class MongoService {
|
|
|
149
149
|
this.data['obj' + part][key] = {};
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
152
|
+
if (opts.fields) {
|
|
153
|
+
if (typeof opts.fields === 'string') {
|
|
154
|
+
opts.fields = opts.fields.split(' ');
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
if (!Array.isArray(opts.fields)) {
|
|
158
|
+
opts.fields = [];
|
|
159
|
+
}
|
|
160
160
|
}
|
|
161
161
|
;
|
|
162
162
|
create(part, doc = undefined, cb = undefined, opts = {}) {
|
|
@@ -245,16 +245,18 @@ export class MongoService {
|
|
|
245
245
|
for (let i = 0; i < resp.length; i++) {
|
|
246
246
|
this.push(part, resp[i]);
|
|
247
247
|
}
|
|
248
|
-
|
|
249
|
-
let
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
248
|
+
if (!opts.paginate) {
|
|
249
|
+
for (let i = 0; i < this.data['arr' + part].length; i++) {
|
|
250
|
+
let remove = true;
|
|
251
|
+
for (let j = 0; j < resp.length; j++) {
|
|
252
|
+
if (resp[j]._id === this.data['arr' + part][i]._id) {
|
|
253
|
+
remove = false;
|
|
254
|
+
break;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
if (remove) {
|
|
258
|
+
this.remove(part, this.data['arr' + part][i]);
|
|
254
259
|
}
|
|
255
|
-
}
|
|
256
|
-
if (remove) {
|
|
257
|
-
this.remove(part, this.data['arr' + part][i]);
|
|
258
260
|
}
|
|
259
261
|
}
|
|
260
262
|
if (typeof cb == 'function')
|
|
@@ -710,12 +712,12 @@ export class MongoService {
|
|
|
710
712
|
}
|
|
711
713
|
for (let i = 0; i < this.data['opts' + part].fields.length; i++) {
|
|
712
714
|
const field = this.data['opts' + part].fields[i];
|
|
713
|
-
if (!this.data['obj' + part][field]) {
|
|
714
|
-
this.data['obj' + part][field] = doc;
|
|
715
|
+
if (!this.data['obj' + part][doc[field]]) {
|
|
716
|
+
this.data['obj' + part][doc[field]] = doc;
|
|
715
717
|
continue;
|
|
716
718
|
}
|
|
717
719
|
for (let each in doc) {
|
|
718
|
-
this.data['obj' + part][field][each] = doc[each];
|
|
720
|
+
this.data['obj' + part][doc[field]][each] = doc[each];
|
|
719
721
|
}
|
|
720
722
|
}
|
|
721
723
|
if (this.data['opts' + part].groups) {
|
|
@@ -880,12 +882,12 @@ export class MongoService {
|
|
|
880
882
|
}
|
|
881
883
|
for (let i = 0; i < this.data['opts' + part].fields.length; i++) {
|
|
882
884
|
const field = this.data['opts' + part].fields[i];
|
|
883
|
-
if (!this.data['obj' + part][field]) {
|
|
884
|
-
this.data['obj' + part][field] = doc;
|
|
885
|
+
if (!this.data['obj' + part][doc[field]]) {
|
|
886
|
+
this.data['obj' + part][doc[field]] = doc;
|
|
885
887
|
continue;
|
|
886
888
|
}
|
|
887
889
|
for (let each in doc) {
|
|
888
|
-
this.data['obj' + part][field][each] = doc[each];
|
|
890
|
+
this.data['obj' + part][doc[field]][each] = doc[each];
|
|
889
891
|
}
|
|
890
892
|
}
|
|
891
893
|
}
|
|
@@ -932,4 +934,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
932
934
|
providedIn: 'root'
|
|
933
935
|
}]
|
|
934
936
|
}], ctorParameters: function () { return [{ type: i1.HttpService }, { type: i2.CoreService }]; } });
|
|
935
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ28uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhY29tL3NyYy9saWIvc2VydmljZXMvbW9uZ28uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBTzNDLE1BQU0sT0FBTyxZQUFZO0lBOHZCeEI7O01BRUU7SUFDRixZQUFvQixJQUFpQixFQUFVLElBQWlCO1FBQTVDLFNBQUksR0FBSixJQUFJLENBQWE7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFhO1FBaHdCaEU7Ozs7Ozs7O1VBUUU7UUFDTyxTQUFJLEdBQU8sRUFBRSxDQUFDO1FBQ2QsV0FBTSxHQUFRO1lBQ3JCLElBQUksRUFBRSxDQUFDLEtBQVMsRUFBRSxHQUFPLEVBQUUsRUFBRTtnQkFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLHdCQUF3QixDQUFDLENBQUM7WUFDbkQsQ0FBQztTQUNELENBQUM7UUE0ZkssVUFBSyxHQUFHLENBQUMsR0FBTyxFQUFFLEVBQU0sRUFBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBTyxFQUFDLEVBQUU7Z0JBQzFCLElBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFDO29CQUNYLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFPLEVBQUMsRUFBRTt3QkFDbkIsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7d0JBQ2QsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNULENBQUMsQ0FBQyxDQUFDO2lCQUNIOztvQkFBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUlLLGFBQVEsR0FBRyxDQUFDLEdBQU8sRUFBRSxFQUFNLEVBQUUsRUFBRTtZQUNy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RCxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDVCxDQUFDO0lBQUEsQ0FBQztJQUNLLE1BQU0sQ0FBQyxHQUFPLEVBQUUsRUFBTSxJQUFJLEVBQUUsQ0FBRSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBRSxDQUFDLENBQUMsQ0FBQztJQUFBLENBQUM7SUFDakQsUUFBUSxDQUFDLEdBQU8sRUFBRSxFQUFNO1FBQzlCLElBQUcsT0FBTyxHQUFHLElBQUksUUFBUSxFQUFDO1lBQ3pCLEdBQUcsR0FBRyxFQUFFLENBQUM7U0FDVDtRQUNELEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNULENBQUM7SUFBQSxDQUFDO0lBV0ssUUFBUSxDQUFDLEdBQU8sRUFBRSxFQUFNLElBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFBLENBQUM7SUFDckMsUUFBUSxDQUFDLEdBQU8sRUFBRSxFQUFNLElBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFBLENBQUM7SUFDckMsV0FBVyxDQUFDLEdBQU8sRUFBRSxFQUFNLElBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFBLENBQUM7SUFReEMsVUFBVSxDQUFDLEdBQU8sRUFBRSxFQUFNLEVBQUUsR0FBTyxJQUFHLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUN6Rzs7TUFFRTtJQUNPLE9BQU8sQ0FBQyxHQUFPLEVBQUUsS0FBUyxFQUFFLEdBQU87UUFDMUMsSUFBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDO1lBQ3hCLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLElB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QUcsSUFBSSxDQUFDO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzFELElBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUQsSUFBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM1RCxJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xFLElBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFDO1lBQ25DLEtBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFDO2dCQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDNUQ7U0FDRDtRQUNELElBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFDO1lBQ2xDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUN4QyxJQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUM7Z0JBQ25CLEtBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO29CQUNoQyxJQUFHLE9BQU8sQ0FBQyxJQUFJLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUM7d0JBQ2xELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUMxQztpQkFDRDthQUNEO2lCQUFLLElBQUcsT0FBTyxDQUFDLElBQUksUUFBUSxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLElBQUksRUFBQztnQkFDbEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDcEM7U0FDRDtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBQztZQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDMUQ7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ3ZDLElBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBQztZQUM1QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztnQkFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO2FBQ3JFO1NBQ0Q7UUFDRCxJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBQztZQUNoQyxLQUFJLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBQztnQkFDNUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMzQyxJQUFHLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxVQUFVLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7b0JBQUUsU0FBUztnQkFDNUQsSUFBRyxPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksVUFBVSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7b0JBQUUsU0FBUztnQkFDM0QsSUFBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDO29CQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7aUJB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O29CQUNqRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFO3dCQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUMxQyxNQUFNO3FCQUNOO2lCQUNEO2FBQ0Q7U0FDRDtJQUNGLENBQUM7SUFBQSxDQUFDOzt5R0E3dkJTLFlBQVk7NkdBQVosWUFBWSxjQUZaLE1BQU07MkZBRU4sWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4vaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IENvcmVTZXJ2aWNlIH0gZnJvbSAnLi9jb3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTW9uZ29TZXJ2aWNlIHtcblx0Lypcblx0Klx0RGF0YSB3aWxsIGJlIHN0b3JhZ2UgZm9yIGFsbCBpbmZvcm1hdGlvbiB3ZSBhcmUgcHVsbGluZyBmcm9tIHdhdyBjcnVkLlxuXHQqXHRkYXRhWydhcnInICsgcGFydF0gd2lsbCBob3N0IGFsbCBkb2NzIGZyb20gY29sbGVjdGlvbiBwYXJ0IGluIGFycmF5IGZvcm1cblx0Klx0ZGF0YVsnb2JqJyArIHBhcnRdIHdpbGwgaG9zdCBhbGwgZG9jcyBmcm9tIGNvbGxlY3Rpb24gcGFydCBpbiBvYmplY3QgZm9ybVxuXHQqXHRcdGFuZCBhbGwgZ3JvdXBzIGNvbGxlY2l0b25zIHByb3ZpZGVkXG5cdCpcdGRhdGFbJ29wdHMnICsgcGFydF0gd2lsbCBob3N0IG9wdGlvbnMgZm9yIGRvY3MgZnJvbSBjb2xsZWN0aW9uIHBhcnRcblx0Klx0XHRXaWxsIGJlIGluaXRpYWxpemVkIG9ubHkgaW5zaWRlIGdldFxuXHQqXHRcdFdpbGwgYmUgdXNlZCBpbnNpZGUgcHVzaFxuXHQqL1xuXHRcdHByaXZhdGUgZGF0YTphbnkgPSB7fTtcblx0XHRwcml2YXRlIHNvY2tldDogYW55ID0ge1xuXHRcdFx0ZW1pdDogKHdoaWNoOmFueSwgZG9jOmFueSkgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmxvZyh3aGljaCwgZG9jLCAnaXMgbm90IHVzZWQgb24gc29ja2V0cycpO1xuXHRcdFx0fVxuXHRcdH07XG5cdC8qXG5cdCpcdHdhdyBjcnVkIGNvbm5lY3QgZnVuY3Rpb25zXG5cdCovXG5cdFx0cHVibGljIGNvbmZpZyhwYXJ0OmFueSwgb3B0czphbnkpe1xuXHRcdFx0aWYodGhpcy5kYXRhWydvcHRzJyArIHBhcnRdKSByZXR1cm47XG5cdFx0XHRpZighdGhpcy5kYXRhWydhcnInICsgcGFydF0pIHRoaXMuZGF0YVsnYXJyJyArIHBhcnRdID0gW107XG5cdFx0XHRpZighdGhpcy5kYXRhWydvYmonICsgcGFydF0pIHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdID0ge307XG5cdFx0XHRpZih0aGlzLmRhdGFbJ29wdHMnICsgcGFydF0pe1xuXHRcdFx0XHRmb3IgKGxldCBlYWNoIGluIG9wdHMpe1xuXHRcdFx0XHQgICAgdGhpcy5kYXRhWydvcHRzJyArIHBhcnRdW2VhY2hdID0gb3B0c1tlYWNoXTtcblx0XHRcdFx0fVxuXHRcdFx0fWVsc2UgdGhpcy5kYXRhWydvcHRzJyArIHBhcnRdID0gb3B0cyA9IG9wdHN8fHt9O1xuXHRcdFx0aWYodHlwZW9mIG9wdHMudXNlID09PSAnc3RyaW5nJyl7XG5cdFx0XHRcdG9wdHMudXNlID0gb3B0cy51c2Uuc3BsaXQoJyAnKTtcblx0XHRcdH1cblx0XHRcdGlmKG9wdHMucXVlcnkpe1xuXHRcdFx0XHRmb3IobGV0IGtleSBpbiBvcHRzLnF1ZXJ5KXtcblx0XHRcdFx0XHRpZih0eXBlb2Ygb3B0cy5xdWVyeVtrZXldID09ICdmdW5jdGlvbicpe1xuXHRcdFx0XHRcdFx0b3B0cy5xdWVyeVtrZXldID0ge1xuXHRcdFx0XHRcdFx0XHRhbGxvdzogb3B0cy5xdWVyeVtrZXldXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV0gPSBbXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYob3B0cy5ncm91cHMpe1xuXHRcdFx0XHRpZih0eXBlb2Ygb3B0cy5ncm91cHMgPT09ICdzdHJpbmcnKXtcblx0XHRcdFx0XHRvcHRzLmdyb3VwcyA9IG9wdHMuZ3JvdXBzLnNwbGl0KCcgJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoQXJyYXkuaXNBcnJheShvcHRzLmdyb3Vwcykpe1xuXHRcdFx0XHRcdGxldCBhcnIgPSBvcHRzLmdyb3Vwcztcblx0XHRcdFx0XHRvcHRzLmdyb3VwcyA9IHt9O1xuXHRcdFx0XHRcdGZvcihsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspe1xuXHRcdFx0XHRcdFx0aWYodHlwZW9mIGFycltpXSA9PT0gJ3N0cmluZycpe1xuXHRcdFx0XHRcdFx0XHRvcHRzLmdyb3Vwc1thcnJbaV1dID0gdHJ1ZTtcblx0XHRcdFx0XHRcdH1lbHNlIHtcblx0XHRcdFx0XHRcdFx0Zm9yKGxldCBrZXkgaW4gYXJyW2ldKXtcblx0XHRcdFx0XHRcdFx0XHRpZih0eXBlb2YgYXJyW2ldW2tleV0gPT0gJ2Z1bmN0aW9uJyl7XG5cdFx0XHRcdFx0XHRcdFx0XHRhcnJbaV1ba2V5XSA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZmllbGQ6IGFycltpXVtrZXldXG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdG9wdHMuZ3JvdXBzW2tleV0gPSBhcnJbaV1ba2V5XTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRmb3IobGV0IGtleSBpbiBvcHRzLmdyb3Vwcyl7XG5cdFx0XHRcdFx0aWYodHlwZW9mIG9wdHMuZ3JvdXBzW2tleV0gPT0gJ2Jvb2xlYW4nKXtcblx0XHRcdFx0XHRcdGlmKG9wdHMuZ3JvdXBzW2tleV0pe1xuXHRcdFx0XHRcdFx0XHRvcHRzLmdyb3Vwc1trZXldID0ge1xuXHRcdFx0XHRcdFx0XHRcdGZpZWxkOiBmdW5jdGlvbihkb2M6YW55KXtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBkb2Nba2V5XTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0XHRkZWxldGUgb3B0cy5ncm91cHNba2V5XTtcblx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmKHR5cGVvZiBvcHRzLmdyb3Vwc1trZXldICE9ICdvYmplY3QnKXtcblx0XHRcdFx0XHRcdGRlbGV0ZSBvcHRzLmdyb3Vwc1trZXldO1xuXHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmKHR5cGVvZiBvcHRzLmdyb3Vwc1trZXldLmZpZWxkICE9ICdmdW5jdGlvbicpe1xuXHRcdFx0XHRcdFx0ZGVsZXRlIG9wdHMuZ3JvdXBzW2tleV07XG5cdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYoQXJyYXkuaXNBcnJheSh0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldKSl7XG5cdFx0XHRcdFx0XHRjb25zb2xlLndhcm4oJ1lvdSBjYW4gaGF2ZSBzYW1lIGZpZWxkIGdyb3VwcyB3aXRoIHF1ZXJ5LiBGaWVsZCAnK2tleSsnIGlzIG5vdCB1c2VkIGluIGdyb3Vwcy4nKTtcblx0XHRcdFx0XHRcdGRlbGV0ZSBvcHRzLmdyb3Vwc1trZXldO1xuXHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV0gPSB7fTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gaWYob3B0cy5maWVsZHMpIHtcblx0XHRcdC8vIFx0aWYgKHR5cGVvZiBvcHRzLmZpZWxkcyA9PT0gJ3N0cmluZycpIHtcblx0XHRcdC8vIFx0XHRvcHRzLmZpZWxkcyA9IG9wdHMuZmllbGRzLnNwbGl0KCcgJyk7XG5cdFx0XHQvLyBcdH1cblx0XHRcdC8vIH1cblx0XHRcdC8vIGlmICghQXJyYXkuaXNBcnJheShvcHRzLmZpZWxkcykpIHtcblx0XHRcdC8vIFx0b3B0cy5maWVsZHMgPSBbXTtcblx0XHRcdC8vIH1cblx0XHR9O1xuXHRcdHB1YmxpYyBjcmVhdGUocGFydDphbnksIGRvYzphbnk9dW5kZWZpbmVkLCBjYjphbnk9dW5kZWZpbmVkLCBvcHRzOmFueT17fSkge1xuXHRcdFx0aWYgKHR5cGVvZiBkb2MgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRpZihjYikgb3B0cyA9IGNiO1xuXHRcdFx0XHRjYiA9IGRvYztcblx0XHRcdFx0ZG9jID0ge307XG5cdFx0XHR9XG5cdFx0XHRpZih0eXBlb2Ygb3B0cyA9PSAnZnVuY3Rpb24nKXtcblx0XHRcdFx0b3B0cyA9IHtcblx0XHRcdFx0XHRlcnI6IG9wdHNcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdGlmKHR5cGVvZiBkb2MgIT0gJ29iamVjdCcpIGRvYz17fTtcblx0XHRcdGlmKGRvYy5fX19jcmVhdGVkICYmICFvcHRzLmFsbG93X211bHRpcGxlKSByZXR1cm47XG5cdFx0XHRkb2MuX19fY3JlYXRlZCA9IHRydWU7XG5cdFx0XHR0aGlzLmh0dHAucG9zdChvcHRzLnVybCB8fCAnL2FwaS8nICsgcGFydCArICcvY3JlYXRlJywgZG9jIHx8IHt9LCByZXNwID0+IHtcblx0XHRcdFx0aWYgKHJlc3ApIHtcblx0XHRcdFx0XHR0aGlzLnNvY2tldC5lbWl0KCdjcmVhdGUnLCB7XG5cdFx0XHRcdFx0XHRfaWQ6IHJlc3AuX2lkLFxuXHRcdFx0XHRcdFx0cGFydDogcGFydFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHRoaXMucHVzaChwYXJ0LCByZXNwKTtcblx0XHRcdFx0XHRpZiAodHlwZW9mIGNiID09ICdmdW5jdGlvbicpIGNiKHJlc3ApO1xuXHRcdFx0XHR9ZWxzZSBpZiAodHlwZW9mIGNiID09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRjYihmYWxzZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sIG9wdHMpO1xuXHRcdH07XG5cdFx0cHVibGljIGZldGNoKHBhcnQ6YW55LCBvcHRzOmFueT11bmRlZmluZWQsIGNiOmFueT11bmRlZmluZWQpIHtcblx0XHRcdGlmKG9wdHMucXVlcnkgJiYgb3B0cy5xdWVyeS5faWQgJiYgIW9wdHMuZm9yY2UgJiZcblx0XHRcdFx0dGhpcy5kYXRhWydvYmonICsgcGFydF1bb3B0cy5xdWVyeS5faWRdKXtcblx0XHRcdFx0cmV0dXJuIHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW29wdHMucXVlcnkuX2lkXTtcblx0XHRcdH1cblx0XHRcdGlmICh0eXBlb2Ygb3B0cyA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdGNiID0gb3B0cztcblx0XHRcdFx0b3B0cyA9IHt9O1xuXHRcdFx0fVxuXHRcdFx0aWYoIW9wdHMpIG9wdHMgPSB7fTtcblx0XHRcdHRoaXMuY29uZmlnKHBhcnQsIG9wdHMpOyAvLyByZW1vdmUgdGhpcyBpbiBmdXR1cmVcblx0XHRcdGxldCB1cmwgPSAnL2FwaS8nICsgcGFydCArICcvZmV0Y2gnKyhvcHRzLm5hbWV8fCcnKSwgZG9jOmFueTtcblx0XHRcdGlmKG9wdHMucXVlcnkgJiYgb3B0cy5xdWVyeS5faWQgJiYgdGhpcy5kYXRhWydvYmonICsgcGFydF1bb3B0cy5xdWVyeS5faWRdKXtcblx0XHRcdFx0ZG9jID0gdGhpcy5kYXRhWydvYmonICsgcGFydF1bb3B0cy5xdWVyeS5faWRdO1xuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdGRvYyA9IHt9O1xuXHRcdFx0XHRmb3IobGV0IGtleSBpbiB0aGlzLmRhdGFbJ29wdHMnK3BhcnRdLnJlcGxhY2Upe1xuXHRcdFx0XHRcdHRoaXMucmVwbGFjZShkb2MsIGtleSwgdGhpcy5kYXRhWydvcHRzJytwYXJ0XS5yZXBsYWNlW2tleV0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmh0dHAucG9zdChvcHRzLnVybCB8fCB1cmwsIChvcHRzLnF1ZXJ5fHx7fSksIHJlc3AgPT4ge1xuXHRcdFx0XHRpZighcmVzcCkgcmV0dXJuIGNiJiZjYihmYWxzZSk7XG5cdFx0XHRcdGZvciAobGV0IGVhY2ggaW4gcmVzcCl7XG5cdFx0XHRcdCAgICBkb2NbZWFjaF0gPSByZXNwW2VhY2hdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvciAobGV0IGVhY2ggaW4gZG9jKXtcblx0XHRcdFx0ICAgIGRvY1tlYWNoXSA9IHJlc3BbZWFjaF07XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5wdXNoKHBhcnQsIGRvYyk7XG5cdFx0XHRcdGlmIChyZXNwICYmIHR5cGVvZiBjYiA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0Y2IoZG9jKTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgb3B0cyk7XG5cdFx0XHRyZXR1cm4gZG9jO1xuXHRcdH07XG5cdFx0cHVibGljIGdldChwYXJ0OmFueSwgb3B0czphbnk9dW5kZWZpbmVkLCBjYjphbnk9dW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAodHlwZW9mIG9wdHMgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRjYiA9IG9wdHM7XG5cdFx0XHRcdG9wdHMgPSB7fTtcblx0XHRcdH1cblx0XHRcdGlmKCFvcHRzKSBvcHRzID0ge307XG5cdFx0XHR0aGlzLmNvbmZpZyhwYXJ0LCBvcHRzKTsgLy8gcmVtb3ZlIHRoaXMgaW4gZnV0dXJlXG5cdFx0XHRsZXQgdXJsID0gJy9hcGkvJyArIHBhcnQgKyAnL2dldCcrKG9wdHMubmFtZXx8JycpKyhvcHRzLnBhcmFtfHwnJyk7XG5cdFx0XHR0aGlzLmh0dHAuZ2V0KG9wdHMudXJsIHx8IHVybCwgcmVzcCA9PiB7XG5cdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KHJlc3ApKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCByZXNwLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnB1c2gocGFydCxyZXNwW2ldKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRhdGFbJ2FycicgKyBwYXJ0XS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0bGV0IHJlbW92ZSA9IHRydWU7XG5cdFx0XHRcdFx0XHRmb3IgKGxldCBqID0gMDsgaiA8IHJlc3AubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0aWYgKHJlc3Bbal0uX2lkID09PSB0aGlzLmRhdGFbJ2FycicgKyBwYXJ0XVtpXS5faWQpIHtcblx0XHRcdFx0XHRcdFx0XHRyZW1vdmUgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKHJlbW92ZSkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnJlbW92ZShwYXJ0LCB0aGlzLmRhdGFbJ2FycicgKyBwYXJ0XVtpXSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICh0eXBlb2YgY2IgPT0gJ2Z1bmN0aW9uJykgY2IodGhpcy5kYXRhWydhcnInICsgcGFydF0sIHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdLCBvcHRzLm5hbWV8fCcnLCByZXNwKTtcblx0XHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgY2IgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdGNiKHRoaXMuZGF0YVsnYXJyJyArIHBhcnRdLCB0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XSwgb3B0cy5uYW1lfHwnJywgcmVzcCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5kYXRhWydsb2FkZWQnK3BhcnRdPXRydWU7XG5cdFx0XHR9LCBvcHRzKTtcblx0XHRcdHJldHVybiB0aGlzLmRhdGFbJ2FycicgKyBwYXJ0XTtcblx0XHR9O1xuXHRcdHB1YmxpYyBzZXQocGFydDphbnksIG9wdHM6YW55PXVuZGVmaW5lZCwgcmVzcDphbnk9dW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShvcHRzKSkge1xuXHRcdFx0XHRyZXNwID0gb3B0cztcblx0XHRcdFx0b3B0cyA9IHVuZGVmaW5lZDtcblx0XHRcdH1cblx0XHRcdGlmKG9wdHMpIHRoaXMuY29uZmlnKHBhcnQsIG9wdHMpO1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkocmVzcCkpIHtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCByZXNwLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0dGhpcy5wdXNoKHBhcnQsIHJlc3BbaV0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRhcnI6IHRoaXMuZGF0YVsnYXJyJyArIHBhcnRdLFxuXHRcdFx0XHRvYmo6IHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdXG5cdFx0XHR9XG5cdFx0fTtcblx0XHRwcml2YXRlIHByZXBhcmVfdXBkYXRlKHBhcnQ6YW55LCBkb2M6YW55LCBvcHRzOmFueSl7XG5cdFx0XHRpZihvcHRzLmZpZWxkcyl7XG5cdFx0XHRcdGlmKHR5cGVvZiBvcHRzLmZpZWxkcyA9PT0gJ3N0cmluZycpIG9wdHMuZmllbGRzID0gb3B0cy5maWVsZHMuc3BsaXQoJyAnKTtcblx0XHRcdFx0bGV0IF9kb2M6YW55ID0ge307XG5cdFx0XHRcdGZvcihsZXQgaSA9IDA7IGkgPCBvcHRzLmZpZWxkcy5sZW5ndGg7IGkrKyl7XG5cdFx0XHRcdFx0X2RvY1tvcHRzLmZpZWxkc1tpXV0gPSBkb2Nbb3B0cy5maWVsZHNbaV1dO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRvYyA9IF9kb2M7XG5cdFx0XHR9ZWxzZSB0aGlzLnJlbmV3KHBhcnQsIGRvYyk7XG5cdFx0XHRpZih0eXBlb2Ygb3B0cy5yZXdyaXRlID09ICdvYmplY3QnICYmIE9iamVjdC52YWx1ZXMob3B0cy5yZXdyaXRlKS5sZW5ndGgpe1xuXHRcdFx0XHRkb2MgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRvYykpO1xuXHRcdFx0XHRmb3IobGV0IGtleSBpbiBvcHRzLnJld3JpdGUpe1xuXHRcdFx0XHRcdHRoaXMucmVwbGFjZShkb2MsIGtleSwgb3B0cy5yZXdyaXRlW2tleV0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZG9jO1xuXHRcdH07XG5cdFx0cHVibGljIHVwZGF0ZShwYXJ0OmFueSwgZG9jOmFueSwgb3B0czphbnk9dW5kZWZpbmVkLCBjYjphbnk9dW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAodHlwZW9mIG9wdHMgPT0gJ2Z1bmN0aW9uJyl7XG5cdFx0XHRcdGNiID0gb3B0cztcblx0XHRcdFx0b3B0cyA9IHt9O1xuXHRcdFx0fVxuXHRcdFx0aWYodHlwZW9mIG9wdHMgIT0gJ29iamVjdCcpIG9wdHMgPSB7fTtcblx0XHRcdGRvYyA9IHRoaXMucHJlcGFyZV91cGRhdGUocGFydCwgZG9jLCBvcHRzKTtcblx0XHRcdGxldCB1cmwgPSAnL2FwaS8nICsgcGFydCArICcvdXBkYXRlJyArIChvcHRzLm5hbWV8fCcnKTtcblx0XHRcdHRoaXMuaHR0cC5wb3N0KG9wdHMudXJsIHx8IHVybCwgZG9jLCByZXNwID0+IHtcblx0XHRcdFx0aWYocmVzcCl7XG5cdFx0XHRcdFx0dGhpcy5zb2NrZXQuZW1pdCgndXBkYXRlJywge1xuXHRcdFx0XHRcdFx0X2lkOiBkb2MuX2lkLFxuXHRcdFx0XHRcdFx0cGFydDogcGFydFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChyZXNwICYmIHR5cGVvZiBjYiA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0Y2IocmVzcCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGNiID09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRjYihmYWxzZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sIG9wdHMpO1xuXHRcdH07XG5cdFx0cHVibGljIHVuaXF1ZShwYXJ0OmFueSwgZG9jOmFueSwgb3B0czphbnk9dW5kZWZpbmVkLCBjYjphbnk9dW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAodHlwZW9mIG9wdHMgPT0gJ2Z1bmN0aW9uJyl7XG5cdFx0XHRcdGNiID0gb3B0cztcblx0XHRcdFx0b3B0cyA9IHt9O1xuXHRcdFx0fVxuXHRcdFx0aWYodHlwZW9mIG9wdHMgIT0gJ29iamVjdCcpIG9wdHMgPSB7fTtcblx0XHRcdGRvYyA9IHRoaXMucHJlcGFyZV91cGRhdGUocGFydCwgZG9jLCBvcHRzKTtcblx0XHRcdGxldCB1cmwgPSAnL2FwaS8nICsgcGFydCArICcvdW5pcXVlJyArIChvcHRzLm5hbWV8fCcnKTtcblx0XHRcdHRoaXMuaHR0cC5wb3N0KG9wdHMudXJsIHx8IHVybCwgZG9jLCByZXNwID0+IHtcblx0XHRcdFx0aWYocmVzcCl7XG5cdFx0XHRcdFx0dGhpcy5zb2NrZXQuZW1pdCgndXBkYXRlJywge1xuXHRcdFx0XHRcdFx0X2lkOiBkb2MuX2lkLFxuXHRcdFx0XHRcdFx0cGFydDogcGFydFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGxldCBjdXJyZW50X2RvYyA9IHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2RvYy5faWRdO1xuXHRcdFx0XHRcdGZvciAobGV0IGVhY2ggaW4gZG9jKXtcblx0XHRcdFx0XHQgICAgY3VycmVudF9kb2NbZWFjaF0gPSBkb2NbZWFjaF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMucmVuZXcocGFydCwgY3VycmVudF9kb2MpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChyZXNwICYmIHR5cGVvZiBjYiA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0Y2IocmVzcCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGNiID09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRjYihmYWxzZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sIG9wdHMpO1xuXHRcdH07XG5cdFx0cHVibGljIGRlbGV0ZShwYXJ0OmFueSwgZG9jOmFueSwgb3B0czphbnk9dW5kZWZpbmVkLCBjYjphbnk9dW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAodHlwZW9mIG9wdHMgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRjYiA9IG9wdHM7XG5cdFx0XHRcdG9wdHMgPSB7fTtcblx0XHRcdH1cblx0XHRcdGlmKHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0Jykgb3B0cyA9IHt9O1xuXHRcdFx0aWYob3B0cy5maWVsZHMpe1xuXHRcdFx0XHRpZih0eXBlb2Ygb3B0cy5maWVsZHMgPT09ICdzdHJpbmcnKSBvcHRzLmZpZWxkcyA9IG9wdHMuZmllbGRzLnNwbGl0KCcgJyk7XG5cdFx0XHRcdGxldCBfZG9jOmFueSA9IHt9O1xuXHRcdFx0XHRmb3IobGV0IGkgPSAwOyBpIDwgb3B0cy5maWVsZHMubGVuZ3RoOyBpKyspe1xuXHRcdFx0XHRcdF9kb2Nbb3B0cy5maWVsZHNbaV1dID0gZG9jW29wdHMuZmllbGRzW2ldXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkb2MgPSBfZG9jO1xuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdGRvYz17XG5cdFx0XHRcdFx0X2lkOmRvYy5faWRcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0bGV0IHVybCA9ICcvYXBpLycgKyBwYXJ0ICsgJy9kZWxldGUnICsgKG9wdHMubmFtZXx8JycpO1xuXHRcdFx0dGhpcy5odHRwLnBvc3Qob3B0cy51cmwgfHwgdXJsLCBkb2MsIHJlc3AgPT4ge1xuXHRcdFx0XHRpZiAocmVzcCkge1xuXHRcdFx0XHRcdHRoaXMuc29ja2V0LmVtaXQoJ2RlbGV0ZScsIHtcblx0XHRcdFx0XHRcdF9pZDogZG9jLl9pZCxcblx0XHRcdFx0XHRcdHBhcnQ6IHBhcnRcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR0aGlzLnJlbW92ZShwYXJ0LCBkb2MpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChyZXNwICYmIHR5cGVvZiBjYiA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0Y2IocmVzcCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGNiID09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRjYihmYWxzZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sIG9wdHMpO1xuXHRcdH07XG5cdFx0cHVibGljIF9pZChjYjphbnkpe1xuXHRcdFx0aWYodHlwZW9mIGNiID09ICdmdW5jdGlvbicpe1xuXHRcdFx0XHR0aGlzLmh0dHAuZ2V0KCcvd2F3L25ld0lkJywgY2IpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0cHVibGljIHRvX2lkKGRvY3M6YW55KXtcblx0XHRcdGlmKCFkb2NzKSByZXR1cm4gW107XG5cdFx0XHRpZihBcnJheS5pc0FycmF5KGRvY3MpKXtcblx0XHRcdFx0ZG9jcyA9IGRvY3Muc2xpY2UoKTtcblx0XHRcdH1lbHNlIGlmKHR5cGVvZiBkb2NzID09ICdvYmplY3QnKXtcblx0XHRcdFx0aWYoZG9jcy5faWQpIHJldHVybiBbZG9jcy5faWRdO1xuXHRcdFx0XHRsZXQgX2RvY3MgPSBbXTtcblx0XHRcdFx0Zm9yKGxldCBrZXkgaW4gZG9jcyl7XG5cdFx0XHRcdFx0aWYoZG9jc1trZXldKSBfZG9jcy5wdXNoKGRvY3Nba2V5XS5faWR8fGRvY3Nba2V5XSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZG9jcyA9IF9kb2NzO1xuXHRcdFx0fVxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBkb2NzLmxlbmd0aDsgKytpKSB7XG5cdFx0XHRcdGlmKGRvY3NbaV0pIGRvY3NbaV0gPSBkb2NzW2ldLl9pZCB8fCBkb2NzW2ldO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGRvY3M7XG5cdFx0fTtcblx0XHRwdWJsaWMgYWZ0ZXJXaGlsZShkb2M6YW55LCBjYjphbnksIHRpbWU9MTAwMCl7XG5cdFx0XHRpZih0eXBlb2YgY2IgPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdGltZSA9PSAnbnVtYmVyJyl7XG5cdFx0XHRcdGNsZWFyVGltZW91dChkb2MuX191cGRhdGVUaW1lb3V0KTtcblx0XHRcdFx0ZG9jLl9fdXBkYXRlVGltZW91dCA9IHNldFRpbWVvdXQoY2IsIHRpbWUpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0cHVibGljIHBvcHVsYXRlKGRvYzphbnksIGZpZWxkOmFueSwgcGFydDphbnkpOmFueXtcblx0XHRcdGlmKCFkb2N8fCFmaWVsZHx8IXBhcnQpIHJldHVybjtcblx0XHRcdGlmKEFycmF5LmlzQXJyYXkoZG9jKSl7XG5cdFx0XHRcdGZvcihsZXQgaSA9IDA7IGkgPCBkb2MubGVuZ3RoOyBpKyspe1xuXHRcdFx0XHRcdHRoaXMucG9wdWxhdGUoZG9jW2ldLCBmaWVsZCwgcGFydCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYodGhpcy5kYXRhWydsb2FkZWQnK3BhcnRdKXtcblx0XHRcdFx0aWYoQXJyYXkuaXNBcnJheShmaWVsZCkpe1xuXHRcdFx0XHRcdGZvcihsZXQgaSA9IDA7IGkgPCBmaWVsZC5sZW5ndGg7IGkrKyl7XG5cdFx0XHRcdFx0XHR0aGlzLnBvcHVsYXRlKGRvYywgZmllbGRbaV0sIHBhcnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1lbHNlIGlmKGZpZWxkLmluZGV4T2YoJy4nKT4tMSl7XG5cdFx0XHRcdFx0ZmllbGQgPSBmaWVsZC5zcGxpdCgnLicpO1xuXHRcdFx0XHRcdGxldCBzdWIgPSBmaWVsZC5zaGlmdCgpO1xuXHRcdFx0XHRcdGlmKHR5cGVvZiBkb2Nbc3ViXSAhPSAnb2JqZWN0JykgcmV0dXJuO1xuXHRcdFx0XHRcdHJldHVybiB0aGlzLnBvcHVsYXRlKGRvY1tzdWJdLCBmaWVsZC5qb2luKCcuJyksIHBhcnQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKEFycmF5LmlzQXJyYXkoZG9jW2ZpZWxkXSkpe1xuXHRcdFx0XHRcdGZvcihsZXQgaSA9IGRvY1tmaWVsZF0ubGVuZ3RoLTE7IGkgPj0gMDsgaS0tKXtcblx0XHRcdFx0XHRcdGlmKHRoaXMuZGF0YVsnb2JqJytwYXJ0XVtkb2NbZmllbGRdW2ldXSl7XG5cdFx0XHRcdFx0XHRcdGRvY1tmaWVsZF1baV0gPSB0aGlzLmRhdGFbJ29iaicrcGFydF1bZG9jW2ZpZWxkXVtpXV07XG5cdFx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdFx0ZG9jW2ZpZWxkXS5zcGxpY2UoaSwgMSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fWVsc2UgaWYodHlwZW9mIGRvY1tmaWVsZF0gPT09ICdzdHJpbmcnKXtcblx0XHRcdFx0XHRkb2NbZmllbGRdID0gdGhpcy5kYXRhWydvYmonK3BhcnRdW2RvY1tmaWVsZF1dIHx8IG51bGw7XG5cdFx0XHRcdH1lbHNlIHJldHVybjtcblx0XHRcdH1lbHNle1xuXHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+e1xuXHRcdFx0XHRcdHRoaXMucG9wdWxhdGUoZG9jLCBmaWVsZCwgcGFydCk7XG5cdFx0XHRcdH0sIDEwMCk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRwdWJsaWMgb24ocGFydHM6YW55LCBjYjphbnkpOmFueSB7XG4gICBcdFx0ICAgIGlmICh0eXBlb2YgcGFydHMgPT09ICdzdHJpbmcnKSB7XG4gICBcdFx0ICAgICAgICBwYXJ0cyA9IHBhcnRzLnNwbGl0KFwiIFwiKTtcbiAgIFx0XHQgICAgfVxuICAgXHRcdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICBcdFx0ICAgICAgICBpZiAoIXRoaXMuZGF0YVsnbG9hZGVkJytwYXJ0c1tpXV0pIHtcbiAgIFx0XHQgICAgICAgICAgICByZXR1cm4gc2V0VGltZW91dCggKCkgPT4ge1xuICAgXHRcdCAgICAgICAgICAgICAgICB0aGlzLm9uKHBhcnRzLCBjYik7XG4gICBcdFx0ICAgICAgICAgICAgfSwgMTAwKTtcbiAgIFx0XHQgICAgICAgIH1cbiAgIFx0XHQgICAgfVxuICAgXHRcdCAgICBjYih0aGlzLmRhdGEpO1xuICAgXHRcdH07XG4gICBcdFx0cHVibGljIHRyYWNrKGluZGV4OmFueSwgZG9jOmFueSl7IHJldHVybiBkb2MgJiYgZG9jLl9pZCAmJiBkb2MuX2lkIHx8IGluZGV4OyB9XG4gICBcdC8qXG5cdCpcdG1vbmdvIHNvcnQgZmlsdGVyc1xuXHQqL1xuICAgXHRcdHB1YmxpYyBzb3J0QXNjSWQoKXtcbiAgIFx0XHRcdHJldHVybiBmdW5jdGlvbihhOmFueSxiOmFueSl7XG4gICBcdFx0XHRcdGlmKGEuX2lkPmIuX2lkKSByZXR1cm4gMTtcbiAgIFx0XHRcdFx0ZWxzZSByZXR1cm4gLTE7XG4gICBcdFx0XHR9XG4gICBcdFx0fTtcbiAgIFx0XHRwdWJsaWMgc29ydERlc2NJZCgpe1xuICAgXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKGE6YW55LGI6YW55KXtcbiAgIFx0XHRcdFx0aWYoYS5faWQ8Yi5faWQpIHJldHVybiAxO1xuICAgXHRcdFx0XHRlbHNlIHJldHVybiAtMTtcbiAgIFx0XHRcdH1cbiAgIFx0XHR9O1xuICAgXHRcdHB1YmxpYyBzb3J0QXNjU3RyaW5nKG9wdHM6YW55KXtcbiAgIFx0XHRcdGlmKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJyl7XG4gICBcdFx0XHRcdG9wdHMgPSB7XG4gICBcdFx0XHRcdFx0ZmllbGQ6IG9wdHNcbiAgIFx0XHRcdFx0fVxuICAgXHRcdFx0fVxuICAgXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKGE6YW55LGI6YW55KXtcbiAgIFx0XHRcdFx0aWYoYVtvcHRzLmZpZWxkXS50b0xvd2VyQ2FzZSgpPmJbb3B0cy5maWVsZF0udG9Mb3dlckNhc2UoKSkgcmV0dXJuIDE7XG4gICBcdFx0XHRcdGVsc2UgaWYoYVtvcHRzLmZpZWxkXS50b0xvd2VyQ2FzZSgpPGJbb3B0cy5maWVsZF0udG9Mb3dlckNhc2UoKSB8fCAhb3B0cy5uZXh0KSByZXR1cm4gLTE7XG4gICBcdFx0XHRcdGVsc2UgcmV0dXJuIG9wdHMubmV4dChhLGIpO1xuICAgXHRcdFx0fVxuICAgXHRcdH1cbiAgIFx0XHRwdWJsaWMgc29ydERlc2NTdHJpbmcob3B0czphbnkpe1xuICAgXHRcdFx0aWYodHlwZW9mIG9wdHMgPT09ICdzdHJpbmcnKXtcbiAgIFx0XHRcdFx0b3B0cyA9IHtcbiAgIFx0XHRcdFx0XHRmaWVsZDogb3B0c1xuICAgXHRcdFx0XHR9XG4gICBcdFx0XHR9XG4gICBcdFx0XHRyZXR1cm4gZnVuY3Rpb24oYTphbnksYjphbnkpe1xuICAgXHRcdFx0XHRpZihhW29wdHMuZmllbGRdLnRvTG93ZXJDYXNlKCk8YltvcHRzLmZpZWxkXS50b0xvd2VyQ2FzZSgpKSByZXR1cm4gMTtcbiAgIFx0XHRcdFx0ZWxzZSBpZihhW29wdHMuZmllbGRdLnRvTG93ZXJDYXNlKCk+YltvcHRzLmZpZWxkXS50b0xvd2VyQ2FzZSgpIHx8ICFvcHRzLm5leHQpIHJldHVybiAtMTtcbiAgIFx0XHRcdFx0ZWxzZSByZXR1cm4gb3B0cy5uZXh0KGEsYik7XG4gICBcdFx0XHR9XG4gICBcdFx0fVxuICAgXHRcdHB1YmxpYyBzb3J0QXNjRGF0ZShvcHRzOmFueSl7XG4gICBcdFx0XHRpZih0eXBlb2Ygb3B0cyA9PT0gJ3N0cmluZycpe1xuICAgXHRcdFx0XHRvcHRzID0ge1xuICAgXHRcdFx0XHRcdGZpZWxkOiBvcHRzXG4gICBcdFx0XHRcdH1cbiAgIFx0XHRcdH1cbiAgIFx0XHRcdHJldHVybiBmdW5jdGlvbihhOmFueSxiOmFueSl7XG4gICBcdFx0XHRcdGlmKGFbb3B0cy5maWVsZF0uZ2V0VGltZSgpPmJbb3B0cy5maWVsZF0uZ2V0VGltZSgpKSByZXR1cm4gMTtcbiAgIFx0XHRcdFx0ZWxzZSBpZihhW29wdHMuZmllbGRdLmdldFRpbWUoKTxiW29wdHMuZmllbGRdLmdldFRpbWUoKSB8fCAhb3B0cy5uZXh0KSByZXR1cm4gLTE7XG4gICBcdFx0XHRcdGVsc2UgcmV0dXJuIG9wdHMubmV4dChhLGIpO1xuICAgXHRcdFx0fVxuICAgXHRcdH1cbiAgIFx0XHRwdWJsaWMgc29ydERlc2NEYXRlKG9wdHM6YW55KXtcbiAgIFx0XHRcdGlmKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJyl7XG4gICBcdFx0XHRcdG9wdHMgPSB7XG4gICBcdFx0XHRcdFx0ZmllbGQ6IG9wdHNcbiAgIFx0XHRcdFx0fVxuICAgXHRcdFx0fVxuICAgXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKGE6YW55LGI6YW55KXtcbiAgIFx0XHRcdFx0aWYoYVtvcHRzLmZpZWxkXS5nZXRUaW1lKCk8YltvcHRzLmZpZWxkXS5nZXRUaW1lKCkpIHJldHVybiAxO1xuICAgXHRcdFx0XHRlbHNlIGlmKGFbb3B0cy5maWVsZF0uZ2V0VGltZSgpPmJbb3B0cy5maWVsZF0uZ2V0VGltZSgpIHx8ICFvcHRzLm5leHQpIHJldHVybiAtMTtcbiAgIFx0XHRcdFx0ZWxzZSByZXR1cm4gb3B0cy5uZXh0KGEsYik7XG4gICBcdFx0XHR9XG4gICBcdFx0fVxuICAgXHRcdHB1YmxpYyBzb3J0QXNjTnVtYmVyKG9wdHM6YW55KXtcbiAgIFx0XHRcdGlmKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJyl7XG4gICBcdFx0XHRcdG9wdHMgPSB7XG4gICBcdFx0XHRcdFx0ZmllbGQ6IG9wdHNcbiAgIFx0XHRcdFx0fVxuICAgXHRcdFx0fVxuICAgXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKGE6YW55LGI6YW55KXtcbiAgIFx0XHRcdFx0aWYoYVtvcHRzLmZpZWxkXT5iW29wdHMuZmllbGRdKSByZXR1cm4gMTtcbiAgIFx0XHRcdFx0ZWxzZSBpZihhW29wdHMuZmllbGRdPGJbb3B0cy5maWVsZF0gfHwgIW9wdHMubmV4dCkgcmV0dXJuIC0xO1xuICAgXHRcdFx0XHRlbHNlIHJldHVybiBvcHRzLm5leHQoYSxiKTtcbiAgIFx0XHRcdH1cbiAgIFx0XHR9XG4gICBcdFx0cHVibGljIHNvcnREZXNjTnVtYmVyKG9wdHM6YW55KXtcbiAgIFx0XHRcdGlmKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJyl7XG4gICBcdFx0XHRcdG9wdHMgPSB7XG4gICBcdFx0XHRcdFx0ZmllbGQ6IG9wdHNcbiAgIFx0XHRcdFx0fVxuICAgXHRcdFx0fVxuICAgXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKGE6YW55LGI6YW55KXtcbiAgIFx0XHRcdFx0aWYoYVtvcHRzLmZpZWxkXTxiW29wdHMuZmllbGRdKSByZXR1cm4gMTtcbiAgIFx0XHRcdFx0ZWxzZSBpZihhW29wdHMuZmllbGRdPmJbb3B0cy5maWVsZF0gfHwgIW9wdHMubmV4dCkgcmV0dXJuIC0xO1xuICAgXHRcdFx0XHRlbHNlIHJldHVybiBvcHRzLm5leHQoYSxiKTtcbiAgIFx0XHRcdH1cbiAgIFx0XHR9XG4gICBcdFx0cHVibGljIHNvcnRBc2NCb29sZWFuKG9wdHM6YW55KXtcbiAgIFx0XHRcdGlmKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJyl7XG4gICBcdFx0XHRcdG9wdHMgPSB7XG4gICBcdFx0XHRcdFx0ZmllbGQ6IG9wdHNcbiAgIFx0XHRcdFx0fVxuICAgXHRcdFx0fVxuICAgXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKGE6YW55LGI6YW55KXtcbiAgIFx0XHRcdFx0aWYoIWFbb3B0cy5maWVsZF0mJmJbb3B0cy5maWVsZF0pIHJldHVybiAxO1xuICAgXHRcdFx0XHRlbHNlIGlmKGFbb3B0cy5maWVsZF0mJiFiW29wdHMuZmllbGRdIHx8ICFvcHRzLm5leHQpIHJldHVybiAtMTtcbiAgIFx0XHRcdFx0ZWxzZSByZXR1cm4gb3B0cy5uZXh0KGEsYik7XG4gICBcdFx0XHR9XG4gICBcdFx0fVxuICAgXHRcdHB1YmxpYyBzb3J0RGVzY0Jvb2xlYW4ob3B0czphbnkpe1xuICAgXHRcdFx0aWYodHlwZW9mIG9wdHMgPT09ICdzdHJpbmcnKXtcbiAgIFx0XHRcdFx0b3B0cyA9IHtcbiAgIFx0XHRcdFx0XHRmaWVsZDogb3B0c1xuICAgXHRcdFx0XHR9XG4gICBcdFx0XHR9XG4gICBcdFx0XHRyZXR1cm4gZnVuY3Rpb24oYTphbnksYjphbnkpe1xuICAgXHRcdFx0XHRpZihhW29wdHMuZmllbGRdJiYhYltvcHRzLmZpZWxkXSkgcmV0dXJuIDE7XG4gICBcdFx0XHRcdGVsc2UgaWYoIWFbb3B0cy5maWVsZF0mJmJbb3B0cy5maWVsZF0gfHwgIW9wdHMubmV4dCkgcmV0dXJuIC0xO1xuICAgXHRcdFx0XHRlbHNlIHJldHVybiBvcHRzLm5leHQoYSxiKTtcbiAgIFx0XHRcdH1cbiAgIFx0XHR9XG5cdC8qXG5cdCpcdG1vbmdvIHJlcGxhY2UgZmlsdGVyc1xuXHQqL1xuXHRcdHB1YmxpYyBiZUFycih2YWw6YW55LCBjYjphbnkpe1xuXHRcdFx0aWYoIUFycmF5LmlzQXJyYXkodmFsKSkgY2IoW10pO1xuXHRcdFx0ZWxzZSBjYih2YWwpO1xuXHRcdH07XG5cdFx0cHVibGljIGJlT2JqKHZhbDphbnksIGNiOmFueSl7XG5cdFx0XHRpZih0eXBlb2YgdmFsICE9ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkodmFsKSB8fCAhdmFsKXtcblx0XHRcdFx0dmFsID0ge307XG5cdFx0XHR9XG5cdFx0XHRjYih2YWwpO1xuXHRcdH07XG5cdFx0cHVibGljIGJlRGF0ZSh2YWw6YW55LCBjYjphbnkpIHsgY2IoIG5ldyBEYXRlKHZhbCkgKTsgfTtcblx0XHRwdWJsaWMgYmVTdHJpbmcodmFsOmFueSwgY2I6YW55KXtcblx0XHRcdGlmKHR5cGVvZiB2YWwgIT0gJ3N0cmluZycpe1xuXHRcdFx0XHR2YWwgPSAnJztcblx0XHRcdH1cblx0XHRcdGNiKHZhbCk7XG5cdFx0fTtcblx0XHRwdWJsaWMgYmVEb2MgPSAodmFsOmFueSwgY2I6YW55KT0+e1xuXHRcdFx0dGhpcy5iZU9iaih2YWwsICh2YWw6YW55KT0+e1xuXHRcdFx0XHRpZighdmFsLl9pZCl7XG5cdFx0XHRcdFx0dGhpcy5faWQoKF9pZDphbnkpPT57XG5cdFx0XHRcdFx0XHR2YWwuX2lkID0gX2lkO1xuXHRcdFx0XHRcdFx0Y2IodmFsKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fWVsc2UgY2IodmFsKTtcblx0XHRcdH0pO1xuXHRcdH07XG5cdFx0cHVibGljIGZvcmNlQXJyKHZhbDphbnksIGNiOmFueSl7IGNiKFtdKTsgfTtcblx0XHRwdWJsaWMgZm9yY2VPYmoodmFsOmFueSwgY2I6YW55KXsgY2Ioe30pOyB9O1xuXHRcdHB1YmxpYyBmb3JjZVN0cmluZyh2YWw6YW55LCBjYjphbnkpeyBjYignJyk7IH07XG5cdFx0cHVibGljIGZvcmNlRG9jID0gKHZhbDphbnksIGNiOmFueSkgPT4ge1xuXHRcdFx0dGhpcy5faWQoKF9pZDphbnkpPT57XG5cdFx0XHRcdGNiKHtcblx0XHRcdFx0XHRfaWQ6IF9pZFxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdH07XG5cdFx0cHVibGljIGdldENyZWF0ZWQodmFsOmFueSwgY2I6YW55LCBkb2M6YW55KXsgY2IobmV3IERhdGUocGFyc2VJbnQoZG9jLl9pZC5zdWJzdHJpbmcoMCw4KSwgMTYpKjEwMDApKTsgfTtcblx0Lypcblx0Klx0bW9uZ28gbG9jYWwgc3VwcG9ydCBmdW5jdGlvbnNcblx0Ki9cblx0XHRwcml2YXRlIHJlcGxhY2UoZG9jOmFueSwgdmFsdWU6YW55LCBycGw6YW55KTphbnl7XG5cdFx0XHRpZih2YWx1ZS5pbmRleE9mKCcuJyk+LTEpe1xuXHRcdFx0XHR2YWx1ZSA9IHZhbHVlLnNwbGl0KCcuJyk7XG5cdFx0XHRcdGxldCBzdWIgPSB2YWx1ZS5zaGlmdCgpO1xuXHRcdFx0XHRpZihkb2Nbc3ViXSAmJiAodHlwZW9mIGRvY1tzdWJdICE9ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoZG9jW3N1Yl0pKSlcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdGlmKCFkb2Nbc3ViXSkgZG9jW3N1Yl0gPSB7fTtcblx0XHRcdFx0cmV0dXJuIHRoaXMucmVwbGFjZShkb2Nbc3ViXSwgdmFsdWUuam9pbignLicpLCBycGwpO1xuXHRcdFx0fVxuXHRcdFx0aWYodHlwZW9mIHJwbCA9PSAnZnVuY3Rpb24nKXtcblx0XHRcdFx0cnBsKGRvY1t2YWx1ZV0sIGZ1bmN0aW9uKG5ld1ZhbHVlOmFueSl7XG5cdFx0XHRcdFx0ZG9jW3ZhbHVlXSA9IG5ld1ZhbHVlO1xuXHRcdFx0XHR9LCBkb2MpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0cHVibGljIHJlbmV3KHBhcnQ6YW55LCBkb2M6YW55KXtcblx0XHRcdGlmKCF0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtkb2MuX2lkXSkgcmV0dXJuIHRoaXMucHVzaChwYXJ0LCBkb2MpO1xuXHRcdFx0aWYodGhpcy5kYXRhWydvcHRzJytwYXJ0XS5yZXBsYWNlKXtcblx0XHRcdFx0Zm9yKGxldCBrZXkgaW4gdGhpcy5kYXRhWydvcHRzJytwYXJ0XS5yZXBsYWNlKXtcblx0XHRcdFx0XHR0aGlzLnJlcGxhY2UoZG9jLCBrZXksIHRoaXMuZGF0YVsnb3B0cycrcGFydF0ucmVwbGFjZVtrZXldKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Zm9yIChsZXQgZWFjaCBpbiB0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtkb2MuX2lkXSl7XG5cdFx0XHRcdHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2RvYy5faWRdW2VhY2hdID0gZG9jW2VhY2hdO1xuXHRcdFx0fVxuXHRcdFx0Zm9yIChsZXQgZWFjaCBpbiBkb2Mpe1xuXHRcdFx0XHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtkb2MuX2lkXVtlYWNoXSA9IGRvY1tlYWNoXTtcblx0XHRcdH1cblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kYXRhWydvcHRzJyArIHBhcnRdLmZpZWxkcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRjb25zdCBmaWVsZCA9IHRoaXMuZGF0YVsnb3B0cycgKyBwYXJ0XS5maWVsZHNbaV07XG5cdFx0XHRcdGlmICghdGhpcy5kYXRhWydvYmonICsgcGFydF1bZmllbGRdKSB7XG5cdFx0XHRcdFx0dGhpcy5kYXRhWydvYmonICsgcGFydF1bZmllbGRdID0gZG9jO1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvciAobGV0IGVhY2ggaW4gZG9jKSB7XG5cdFx0XHRcdFx0dGhpcy5kYXRhWydvYmonICsgcGFydF1bZmllbGRdW2VhY2hdID0gZG9jW2VhY2hdO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZih0aGlzLmRhdGFbJ29wdHMnK3BhcnRdLmdyb3Vwcyl7XG5cdFx0XHRcdGZvcihsZXQga2V5IGluIHRoaXMuZGF0YVsnb3B0cycrcGFydF0uZ3JvdXBzKXtcblx0XHRcdFx0XHRsZXQgdG9faGF2ZSA9IHRydWU7XG5cdFx0XHRcdFx0bGV0IGcgPSB0aGlzLmRhdGFbJ29wdHMnK3BhcnRdLmdyb3Vwc1trZXldO1xuXHRcdFx0XHRcdGlmKHR5cGVvZiBnLmlnbm9yZSA9PSAnZnVuY3Rpb24nICYmIGcuaWdub3JlKGRvYykpIHRvX2hhdmUgPSBmYWxzZTtcblx0XHRcdFx0XHRpZih0eXBlb2YgZy5hbGxvdyA9PSAnZnVuY3Rpb24nICYmICFnLmFsbG93KGRvYykpIHRvX2hhdmUgPSBmYWxzZTtcblx0XHRcdFx0XHRpZighdGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XSl7XG5cdFx0XHRcdFx0XHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldID0ge307XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGxldCBmaWVsZHM6YW55ID0ge307XG5cdFx0XHRcdFx0bGV0IHNldCA9IChmaWVsZDphbnkpID0+IHtcblx0XHRcdFx0XHRcdGZpZWxkc1tmaWVsZF0gPSB0cnVlO1xuXHRcdFx0XHRcdFx0aWYoIWZpZWxkKSByZXR1cm47XG5cdFx0XHRcdFx0XHRpZighQXJyYXkuaXNBcnJheSh0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldW2ZpZWxkXSkpe1xuXHRcdFx0XHRcdFx0XHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldW2ZpZWxkXSA9IFtdO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYodG9faGF2ZSl7XG5cdFx0XHRcdFx0XHRcdGZvciAobGV0IGkgPSB0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldW2ZpZWxkXS5sZW5ndGgtMTsgaSA+PSAwOyBpLS0pe1xuXHRcdFx0XHRcdFx0XHQgICAgaWYodGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XVtmaWVsZF1baV0uX2lkID09IGRvYy5faWQpIHJldHVybjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldW2ZpZWxkXS5wdXNoKGRvYyk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRmb3IgKGxldCBpID0gdGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XVtmaWVsZF0ubGVuZ3RoLTE7IGkgPj0gMDsgaS0tKXtcblx0XHRcdFx0XHRcdFx0ICAgIGlmKHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV1bZmllbGRdW2ldLl9pZCA9PSBkb2MuX2lkKXtcblx0XHRcdFx0XHRcdFx0ICAgIFx0dGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XVtmaWVsZF0uc3BsaWNlKGksIDEpO1xuXHRcdFx0XHRcdFx0XHQgICAgfVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZih0eXBlb2YgZy5zb3J0ID09ICdmdW5jdGlvbicpe1xuXHRcdFx0XHRcdFx0XHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldW2ZpZWxkXS5zb3J0KGcuc29ydCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHNldChnLmZpZWxkKGRvYywgc2V0LmJpbmQodGhpcykpKTtcblx0XHRcdFx0XHRmb3IgKGxldCBmaWVsZCBpbiB0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldKXtcblx0XHRcdFx0XHRcdGlmKGZpZWxkc1tmaWVsZF0pIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV1bZmllbGRdLmxlbmd0aC0xOyBpID49IDA7IGktLSl7XG5cdFx0XHRcdFx0XHRcdGlmKHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV1bZmllbGRdW2ldLl9pZCA9PSBkb2MuX2lkKXtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldW2ZpZWxkXS5zcGxpY2UoaSwgMSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmKHRoaXMuZGF0YVsnb3B0cycrcGFydF0ucXVlcnkpe1xuXHRcdFx0XHRmb3IobGV0IGtleSBpbiB0aGlzLmRhdGFbJ29wdHMnK3BhcnRdLnF1ZXJ5KXtcblx0XHRcdFx0XHRsZXQgdG9faGF2ZSA9IHRydWU7XG5cdFx0XHRcdFx0bGV0IHF1ZXJ5ID0gdGhpcy5kYXRhWydvcHRzJytwYXJ0XS5xdWVyeVtrZXldO1xuXHRcdFx0XHRcdGlmKHR5cGVvZiBxdWVyeS5pZ25vcmUgPT0gJ2Z1bmN0aW9uJyAmJiBxdWVyeS5pZ25vcmUoZG9jKSkgdG9faGF2ZSA9IGZhbHNlO1xuXHRcdFx0XHRcdGlmKHR5cGVvZiBxdWVyeS5hbGxvdyA9PSAnZnVuY3Rpb24nICYmICFxdWVyeS5hbGxvdyhkb2MpKSB0b19oYXZlID0gZmFsc2U7XG5cdFx0XHRcdFx0aWYoIXRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV0pe1xuXHRcdFx0XHRcdFx0dGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XSA9IFtdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZih0b19oYXZlKXtcblx0XHRcdFx0XHRcdGZvciAobGV0IGkgPSB0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldLmxlbmd0aC0xOyBpID49IDA7IGktLSl7XG5cdFx0XHRcdFx0XHQgICAgaWYodGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XVtpXS5faWQgPT0gZG9jLl9pZCkgcmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XS5wdXNoKGRvYyk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGZvciAobGV0IGkgPSB0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldLmxlbmd0aC0xOyBpID49IDA7IGktLSl7XG5cdFx0XHRcdFx0XHQgICAgaWYodGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XVtpXS5faWQgPT0gZG9jLl9pZCl7XG5cdFx0XHRcdFx0XHQgICAgXHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldLnNwbGljZShpLCAxKTtcblx0XHRcdFx0XHRcdCAgICB9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmKHR5cGVvZiBxdWVyeS5zb3J0ID09ICdmdW5jdGlvbicpe1xuXHRcdFx0XHRcdFx0dGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XS5zb3J0KHF1ZXJ5LnNvcnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdFx0cHVibGljIHB1c2gocGFydDphbnksIGRvYzphbnkpOmFueXtcblx0XHRcdGlmKCF0aGlzLmRhdGFbJ2FycicgKyBwYXJ0XSkgdGhpcy5kYXRhWydhcnInICsgcGFydF0gPSBbXTtcblx0XHRcdGlmKCF0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XSkgdGhpcy5kYXRhWydvYmonICsgcGFydF0gPSB7fTtcblx0XHRcdGlmKCF0aGlzLmRhdGFbJ29wdHMnICsgcGFydF0pIHRoaXMuZGF0YVsnb3B0cycgKyBwYXJ0XSA9IHt9O1xuXHRcdFx0aWYodGhpcy5kYXRhWydvYmonICsgcGFydF1bZG9jLl9pZF0pIHJldHVybiB0aGlzLnJlbmV3KHBhcnQsIGRvYyk7XG5cdFx0XHRpZih0aGlzLmRhdGFbJ29wdHMnICsgcGFydF0ucmVwbGFjZSl7XG5cdFx0XHRcdGZvcihsZXQga2V5IGluIHRoaXMuZGF0YVsnb3B0cycrcGFydF0ucmVwbGFjZSl7XG5cdFx0XHRcdFx0dGhpcy5yZXBsYWNlKGRvYywga2V5LCB0aGlzLmRhdGFbJ29wdHMnK3BhcnRdLnJlcGxhY2Vba2V5XSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmKHRoaXMuZGF0YVsnb3B0cycrcGFydF0ucG9wdWxhdGUpe1xuXHRcdFx0XHRsZXQgcCA9IHRoaXMuZGF0YVsnb3B0cycrcGFydF0ucG9wdWxhdGU7XG5cdFx0XHRcdGlmKEFycmF5LmlzQXJyYXkocCkpe1xuXHRcdFx0XHRcdGZvcihsZXQgaSA9IDA7IGkgPCBwLmxlbmd0aDsgaSsrKXtcblx0XHRcdFx0XHRcdGlmKHR5cGVvZiBwID09ICdvYmplY3QnICYmIHBbaV0uZmllbGQgJiYgcFtpXS5wYXJ0KXtcblx0XHRcdFx0XHRcdFx0dGhpcy5wb3B1bGF0ZShkb2MsIHBbaV0uZmllbGQsIHBbaV0ucGFydCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9ZWxzZSBpZih0eXBlb2YgcCA9PSAnb2JqZWN0JyAmJiBwLmZpZWxkICYmIHAucGFydCl7XG5cdFx0XHRcdFx0dGhpcy5wb3B1bGF0ZShkb2MsIHAuZmllbGQsIHAucGFydCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMuZGF0YVsnYXJyJyArIHBhcnRdLnB1c2goZG9jKTtcblx0XHRcdGlmKHRoaXMuZGF0YVsnb3B0cycrcGFydF0uc29ydCl7XG5cdFx0XHRcdHRoaXMuZGF0YVsnYXJyJyArIHBhcnRdLnNvcnQodGhpcy5kYXRhWydvcHRzJytwYXJ0XS5zb3J0KTtcblx0XHRcdH1cblx0XHRcdHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2RvYy5faWRdID0gZG9jO1xuXHRcdFx0aWYoQXJyYXkuaXNBcnJheSh0aGlzLmRhdGFbJ29wdHMnK3BhcnRdLnVzZSkpe1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0YVsnb3B0cycrcGFydF0udXNlLmxlbmd0aDsgaSsrKXtcblx0XHRcdFx0ICAgIHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2RvY1t0aGlzLmRhdGFbJ29wdHMnK3BhcnRdLnVzZVtpXV1dID0gZG9jO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZih0aGlzLmRhdGFbJ29wdHMnK3BhcnRdLmdyb3Vwcyl7XG5cdFx0XHRcdGZvcihsZXQga2V5IGluIHRoaXMuZGF0YVsnb3B0cycrcGFydF0uZ3JvdXBzKXtcblx0XHRcdFx0XHRsZXQgZyA9IHRoaXMuZGF0YVsnb3B0cycrcGFydF0uZ3JvdXBzW2tleV07XG5cdFx0XHRcdFx0aWYodHlwZW9mIGcuaWdub3JlID09ICdmdW5jdGlvbicgJiYgZy5pZ25vcmUoZG9jKSkgY29udGludWU7XG5cdFx0XHRcdFx0aWYodHlwZW9mIGcuYWxsb3cgPT0gJ2Z1bmN0aW9uJyAmJiAhZy5hbGxvdyhkb2MpKSBjb250aW51ZTtcblx0XHRcdFx0XHRpZighdGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XSl7XG5cdFx0XHRcdFx0XHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldID0ge307XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGxldCBzZXQgPSAoZmllbGQ6YW55KSA9PiB7XG5cdFx0XHRcdFx0XHRpZighZmllbGQpIHJldHVybjtcblx0XHRcdFx0XHRcdGlmKCFBcnJheS5pc0FycmF5KHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV1bZmllbGRdKSl7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV1bZmllbGRdID0gW107XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldW2ZpZWxkXS5wdXNoKGRvYyk7XG5cdFx0XHRcdFx0XHRpZih0eXBlb2YgZy5zb3J0ID09ICdmdW5jdGlvbicpe1xuXHRcdFx0XHRcdFx0XHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldW2ZpZWxkXS5zb3J0KGcuc29ydCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHNldChnLmZpZWxkKGRvYywgKGZpZWxkOmFueSk9Pntcblx0XHRcdFx0XHRcdHNldChmaWVsZCk7XG5cdFx0XHRcdFx0fSkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAodGhpcy5kYXRhWydvcHRzJyArIHBhcnRdLnF1ZXJ5KSB7XG5cdFx0XHRcdGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGFbJ29wdHMnICsgcGFydF0ucXVlcnkpIHtcblx0XHRcdFx0XHRsZXQgcXVlcnkgPSB0aGlzLmRhdGFbJ29wdHMnICsgcGFydF0ucXVlcnlba2V5XTtcblx0XHRcdFx0XHRpZiAodHlwZW9mIHF1ZXJ5Lmlnbm9yZSA9PSAnZnVuY3Rpb24nICYmIHF1ZXJ5Lmlnbm9yZShkb2MpKSBjb250aW51ZTtcblx0XHRcdFx0XHRpZiAodHlwZW9mIHF1ZXJ5LmFsbG93ID09ICdmdW5jdGlvbicgJiYgIXF1ZXJ5LmFsbG93KGRvYykpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdGlmICghdGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XSkge1xuXHRcdFx0XHRcdFx0dGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XSA9IFtdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldLnB1c2goZG9jKTtcblx0XHRcdFx0XHRpZiAodHlwZW9mIHF1ZXJ5LnNvcnQgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdFx0dGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XS5zb3J0KHF1ZXJ5LnNvcnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRhdGFbJ29wdHMnICsgcGFydF0uZmllbGRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IGZpZWxkID0gdGhpcy5kYXRhWydvcHRzJyArIHBhcnRdLmZpZWxkc1tpXTtcblx0XHRcdFx0aWYgKCF0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtmaWVsZF0pIHtcblx0XHRcdFx0XHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtmaWVsZF0gPSBkb2M7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0Zm9yIChsZXQgZWFjaCBpbiBkb2MpIHtcblx0XHRcdFx0XHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtmaWVsZF1bZWFjaF0gPSBkb2NbZWFjaF07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHRcdHB1YmxpYyByZW1vdmUocGFydDphbnksIGRvYzphbnkpe1xuXHRcdFx0aWYoIUFycmF5LmlzQXJyYXkodGhpcy5kYXRhWydhcnInICsgcGFydF0pKSByZXR1cm47XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0YVsnYXJyJyArIHBhcnRdLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGlmICh0aGlzLmRhdGFbJ2FycicgKyBwYXJ0XVtpXS5faWQgPT0gZG9jLl9pZCkge1xuXHRcdFx0XHRcdHRoaXMuZGF0YVsnYXJyJyArIHBhcnRdLnNwbGljZShpLCAxKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZGVsZXRlIHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2RvYy5faWRdO1xuXHRcdFx0aWYodGhpcy5kYXRhWydvcHRzJytwYXJ0XS5ncm91cHMpe1xuXHRcdFx0XHRmb3IobGV0IGtleSBpbiB0aGlzLmRhdGFbJ29wdHMnK3BhcnRdLmdyb3Vwcyl7XG5cdFx0XHRcdFx0Zm9yKGxldCBmaWVsZCBpbiB0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldKXtcblx0XHRcdFx0XHRcdGZvciAobGV0IGkgPSB0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldW2ZpZWxkXS5sZW5ndGgtMTsgaSA+PSAwIDsgaS0tKSB7XG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldW2ZpZWxkXVtpXS5faWQgPT0gZG9jLl9pZCkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV1bZmllbGRdLnNwbGljZShpLCAxKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYodGhpcy5kYXRhWydvcHRzJytwYXJ0XS5xdWVyeSl7XG5cdFx0XHRcdGZvcihsZXQga2V5IGluIHRoaXMuZGF0YVsnb3B0cycrcGFydF0ucXVlcnkpe1xuXHRcdFx0XHRcdGZvciAobGV0IGkgPSB0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldLmxlbmd0aC0xOyBpID49IDAgOyBpLS0pIHtcblx0XHRcdFx0XHRcdGlmICh0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldW2ldLl9pZCA9PSBkb2MuX2lkKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV0uc3BsaWNlKGksIDEpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHQvKlxuXHQqXHRFbmRvZiBNb25nbyBTZXJ2aWNlXG5cdCovXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cFNlcnZpY2UsIHByaXZhdGUgY29yZTogQ29yZVNlcnZpY2Upe1xuXHRcdHRoaXMuY29yZS5uZXh0KCdzb2NrZXQnLCAoc29ja2V0OmFueSk9Pntcblx0XHRcdHRoaXMuc29ja2V0ID0gc29ja2V0O1xuXHRcdFx0c29ja2V0Lm9uKCdjcmVhdGUnLCAoY3JlYXRlZDphbnkpID0+IHtcblx0XHRcdFx0dGhpcy5mZXRjaChjcmVhdGVkLnBhcnQsIHtcblx0XHRcdFx0XHRmb3JjZTogdHJ1ZSxcblx0XHRcdFx0XHRxdWVyeToge1xuXHRcdFx0XHRcdFx0X2lkOiBjcmVhdGVkLl9pZFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRcdHNvY2tldC5vbigndXBkYXRlJywgKHVwZGF0ZWQ6YW55KSA9PiB7XG5cdFx0XHRcdHRoaXMuZmV0Y2godXBkYXRlZC5wYXJ0LCB7XG5cdFx0XHRcdFx0Zm9yY2U6IHRydWUsXG5cdFx0XHRcdFx0cXVlcnk6IHtcblx0XHRcdFx0XHRcdF9pZDogdXBkYXRlZC5faWRcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0XHRzb2NrZXQub24oJ2RlbGV0ZScsIChkZWxldGVkOmFueSkgPT4ge1xuXHRcdFx0XHR0aGlzLnJlbW92ZShkZWxldGVkLnBhcnQsIGRlbGV0ZWQpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|
|
937
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ28uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dhY29tL3NyYy9saWIvc2VydmljZXMvbW9uZ28uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBTzNDLE1BQU0sT0FBTyxZQUFZO0lBZ3dCeEI7O01BRUU7SUFDRixZQUFvQixJQUFpQixFQUFVLElBQWlCO1FBQTVDLFNBQUksR0FBSixJQUFJLENBQWE7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFhO1FBbHdCaEU7Ozs7Ozs7O1VBUUU7UUFDTyxTQUFJLEdBQU8sRUFBRSxDQUFDO1FBQ2QsV0FBTSxHQUFRO1lBQ3JCLElBQUksRUFBRSxDQUFDLEtBQVMsRUFBRSxHQUFPLEVBQUUsRUFBRTtnQkFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLHdCQUF3QixDQUFDLENBQUM7WUFDbkQsQ0FBQztTQUNELENBQUM7UUE4ZkssVUFBSyxHQUFHLENBQUMsR0FBTyxFQUFFLEVBQU0sRUFBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBTyxFQUFDLEVBQUU7Z0JBQzFCLElBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFDO29CQUNYLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFPLEVBQUMsRUFBRTt3QkFDbkIsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7d0JBQ2QsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNULENBQUMsQ0FBQyxDQUFDO2lCQUNIOztvQkFBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUlLLGFBQVEsR0FBRyxDQUFDLEdBQU8sRUFBRSxFQUFNLEVBQUUsRUFBRTtZQUNy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QUFTLENBQUssRUFBQyxDQUFLO1lBQzFCLElBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFBRSxPQUFPLENBQUMsQ0FBQztpQkFDcEMsSUFBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtnQkFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDOztnQkFDeEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUE7SUFDRixDQUFDO0lBQ00sY0FBYyxDQUFDLElBQVE7UUFDN0IsSUFBRyxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUM7WUFDM0IsSUFBSSxHQUFHO2dCQUNOLEtBQUssRUFBRSxJQUFJO2FBQ1gsQ0FBQTtTQUNEO1FBQ0QsT0FBTyxVQUFTLENBQUssRUFBQyxDQUFLO1lBQzFCLElBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFBRSxPQUFPLENBQUMsQ0FBQztpQkFDcEMsSUFBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtnQkFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDOztnQkFDeEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUE7SUFDRixDQUFDO0lBQ00sY0FBYyxDQUFDLElBQVE7UUFDN0IsSUFBRyxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUM7WUFDM0IsSUFBSSxHQUFHO2dCQUNOLEtBQUssRUFBRSxJQUFJO2FBQ1gsQ0FBQTtTQUNEO1FBQ0QsT0FBTyxVQUFTLENB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QyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbEUsSUFBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUM7WUFDakMsS0FBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUM7Z0JBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUM1RDtTQUNEO1FBQ0QsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUM7WUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNuRDtRQUNELEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFDO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkQ7UUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNoRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFD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LElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFEO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUN2QyxJQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUM7WUFDNUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUM7Z0JBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQzthQUNyRTtTQUNEO1FBQ0QsSUFBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUM7WUFDaEMsS0FBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUM7Z0JBQzVDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDM0MsSUFBRyxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksVUFBVSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO29CQUFFLFNB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O2FBQ0Q7U0FDRDtRQUNELElBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFDO1lBQy9CLEtBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFDO2dCQUMzQyxLQUFLLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRyxDQUFDLEVBQUUsRUFBRTtvQkFDakUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRTt3QkFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDMUMsTUFBTTtxQkFDTjtpQkFDRDthQUNEO1NBQ0Q7SUFDRixDQUFDO0lBQUEsQ0FBQzs7eUdBL3ZCUyxZQUFZOzZHQUFaLFlBQVksY0FGWixNQUFNOzJGQUVOLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuL2h0dHAuc2VydmljZSc7XG5pbXBvcnQgeyBDb3JlU2VydmljZSB9IGZyb20gJy4vY29yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbkBJbmplY3RhYmxlKHtcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1vbmdvU2VydmljZSB7XG5cdC8qXG5cdCpcdERhdGEgd2lsbCBiZSBzdG9yYWdlIGZvciBhbGwgaW5mb3JtYXRpb24gd2UgYXJlIHB1bGxpbmcgZnJvbSB3YXcgY3J1ZC5cblx0Klx0ZGF0YVsnYXJyJyArIHBhcnRdIHdpbGwgaG9zdCBhbGwgZG9jcyBmcm9tIGNvbGxlY3Rpb24gcGFydCBpbiBhcnJheSBmb3JtXG5cdCpcdGRhdGFbJ29iaicgKyBwYXJ0XSB3aWxsIGhvc3QgYWxsIGRvY3MgZnJvbSBjb2xsZWN0aW9uIHBhcnQgaW4gb2JqZWN0IGZvcm1cblx0Klx0XHRhbmQgYWxsIGdyb3VwcyBjb2xsZWNpdG9ucyBwcm92aWRlZFxuXHQqXHRkYXRhWydvcHRzJyArIHBhcnRdIHdpbGwgaG9zdCBvcHRpb25zIGZvciBkb2NzIGZyb20gY29sbGVjdGlvbiBwYXJ0XG5cdCpcdFx0V2lsbCBiZSBpbml0aWFsaXplZCBvbmx5IGluc2lkZSBnZXRcblx0Klx0XHRXaWxsIGJlIHVzZWQgaW5zaWRlIHB1c2hcblx0Ki9cblx0XHRwcml2YXRlIGRhdGE6YW55ID0ge307XG5cdFx0cHJpdmF0ZSBzb2NrZXQ6IGFueSA9IHtcblx0XHRcdGVtaXQ6ICh3aGljaDphbnksIGRvYzphbnkpID0+IHtcblx0XHRcdFx0Y29uc29sZS5sb2cod2hpY2gsIGRvYywgJ2lzIG5vdCB1c2VkIG9uIHNvY2tldHMnKTtcblx0XHRcdH1cblx0XHR9O1xuXHQvKlxuXHQqXHR3YXcgY3J1ZCBjb25uZWN0IGZ1bmN0aW9uc1xuXHQqL1xuXHRcdHB1YmxpYyBjb25maWcocGFydDphbnksIG9wdHM6YW55KXtcblx0XHRcdGlmKHRoaXMuZGF0YVsnb3B0cycgKyBwYXJ0XSkgcmV0dXJuO1xuXHRcdFx0aWYoIXRoaXMuZGF0YVsnYXJyJyArIHBhcnRdKSB0aGlzLmRhdGFbJ2FycicgKyBwYXJ0XSA9IFtdO1xuXHRcdFx0aWYoIXRoaXMuZGF0YVsnb2JqJyArIHBhcnRdKSB0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XSA9IHt9O1xuXHRcdFx0aWYodGhpcy5kYXRhWydvcHRzJyArIHBhcnRdKXtcblx0XHRcdFx0Zm9yIChsZXQgZWFjaCBpbiBvcHRzKXtcblx0XHRcdFx0ICAgIHRoaXMuZGF0YVsnb3B0cycgKyBwYXJ0XVtlYWNoXSA9IG9wdHNbZWFjaF07XG5cdFx0XHRcdH1cblx0XHRcdH1lbHNlIHRoaXMuZGF0YVsnb3B0cycgKyBwYXJ0XSA9IG9wdHMgPSBvcHRzfHx7fTtcblx0XHRcdGlmKHR5cGVvZiBvcHRzLnVzZSA9PT0gJ3N0cmluZycpe1xuXHRcdFx0XHRvcHRzLnVzZSA9IG9wdHMudXNlLnNwbGl0KCcgJyk7XG5cdFx0XHR9XG5cdFx0XHRpZihvcHRzLnF1ZXJ5KXtcblx0XHRcdFx0Zm9yKGxldCBrZXkgaW4gb3B0cy5xdWVyeSl7XG5cdFx0XHRcdFx0aWYodHlwZW9mIG9wdHMucXVlcnlba2V5XSA9PSAnZnVuY3Rpb24nKXtcblx0XHRcdFx0XHRcdG9wdHMucXVlcnlba2V5XSA9IHtcblx0XHRcdFx0XHRcdFx0YWxsb3c6IG9wdHMucXVlcnlba2V5XVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldID0gW107XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmKG9wdHMuZ3JvdXBzKXtcblx0XHRcdFx0aWYodHlwZW9mIG9wdHMuZ3JvdXBzID09PSAnc3RyaW5nJyl7XG5cdFx0XHRcdFx0b3B0cy5ncm91cHMgPSBvcHRzLmdyb3Vwcy5zcGxpdCgnICcpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKEFycmF5LmlzQXJyYXkob3B0cy5ncm91cHMpKXtcblx0XHRcdFx0XHRsZXQgYXJyID0gb3B0cy5ncm91cHM7XG5cdFx0XHRcdFx0b3B0cy5ncm91cHMgPSB7fTtcblx0XHRcdFx0XHRmb3IobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKXtcblx0XHRcdFx0XHRcdGlmKHR5cGVvZiBhcnJbaV0gPT09ICdzdHJpbmcnKXtcblx0XHRcdFx0XHRcdFx0b3B0cy5ncm91cHNbYXJyW2ldXSA9IHRydWU7XG5cdFx0XHRcdFx0XHR9ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGZvcihsZXQga2V5IGluIGFycltpXSl7XG5cdFx0XHRcdFx0XHRcdFx0aWYodHlwZW9mIGFycltpXVtrZXldID09ICdmdW5jdGlvbicpe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXJyW2ldW2tleV0gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpZWxkOiBhcnJbaV1ba2V5XVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRvcHRzLmdyb3Vwc1trZXldID0gYXJyW2ldW2tleV07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Zm9yKGxldCBrZXkgaW4gb3B0cy5ncm91cHMpe1xuXHRcdFx0XHRcdGlmKHR5cGVvZiBvcHRzLmdyb3Vwc1trZXldID09ICdib29sZWFuJyl7XG5cdFx0XHRcdFx0XHRpZihvcHRzLmdyb3Vwc1trZXldKXtcblx0XHRcdFx0XHRcdFx0b3B0cy5ncm91cHNba2V5XSA9IHtcblx0XHRcdFx0XHRcdFx0XHRmaWVsZDogZnVuY3Rpb24oZG9jOmFueSl7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZG9jW2tleV07XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9ZWxzZXtcblx0XHRcdFx0XHRcdFx0ZGVsZXRlIG9wdHMuZ3JvdXBzW2tleV07XG5cdFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZih0eXBlb2Ygb3B0cy5ncm91cHNba2V5XSAhPSAnb2JqZWN0Jyl7XG5cdFx0XHRcdFx0XHRkZWxldGUgb3B0cy5ncm91cHNba2V5XTtcblx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZih0eXBlb2Ygb3B0cy5ncm91cHNba2V5XS5maWVsZCAhPSAnZnVuY3Rpb24nKXtcblx0XHRcdFx0XHRcdGRlbGV0ZSBvcHRzLmdyb3Vwc1trZXldO1xuXHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmKEFycmF5LmlzQXJyYXkodGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XSkpe1xuXHRcdFx0XHRcdFx0Y29uc29sZS53YXJuKCdZb3UgY2FuIGhhdmUgc2FtZSBmaWVsZCBncm91cHMgd2l0aCBxdWVyeS4gRmllbGQgJytrZXkrJyBpcyBub3QgdXNlZCBpbiBncm91cHMuJyk7XG5cdFx0XHRcdFx0XHRkZWxldGUgb3B0cy5ncm91cHNba2V5XTtcblx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldID0ge307XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmKG9wdHMuZmllbGRzKSB7XG5cdFx0XHRcdGlmICh0eXBlb2Ygb3B0cy5maWVsZHMgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0b3B0cy5maWVsZHMgPSBvcHRzLmZpZWxkcy5zcGxpdCgnICcpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkob3B0cy5maWVsZHMpKSB7XG5cdFx0XHRcdG9wdHMuZmllbGRzID0gW107XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRwdWJsaWMgY3JlYXRlKHBhcnQ6YW55LCBkb2M6YW55PXVuZGVmaW5lZCwgY2I6YW55PXVuZGVmaW5lZCwgb3B0czphbnk9e30pIHtcblx0XHRcdGlmICh0eXBlb2YgZG9jID09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0aWYoY2IpIG9wdHMgPSBjYjtcblx0XHRcdFx0Y2IgPSBkb2M7XG5cdFx0XHRcdGRvYyA9IHt9O1xuXHRcdFx0fVxuXHRcdFx0aWYodHlwZW9mIG9wdHMgPT0gJ2Z1bmN0aW9uJyl7XG5cdFx0XHRcdG9wdHMgPSB7XG5cdFx0XHRcdFx0ZXJyOiBvcHRzXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0XHRpZih0eXBlb2YgZG9jICE9ICdvYmplY3QnKSBkb2M9e307XG5cdFx0XHRpZihkb2MuX19fY3JlYXRlZCAmJiAhb3B0cy5hbGxvd19tdWx0aXBsZSkgcmV0dXJuO1xuXHRcdFx0ZG9jLl9fX2NyZWF0ZWQgPSB0cnVlO1xuXHRcdFx0dGhpcy5odHRwLnBvc3Qob3B0cy51cmwgfHwgJy9hcGkvJyArIHBhcnQgKyAnL2NyZWF0ZScsIGRvYyB8fCB7fSwgcmVzcCA9PiB7XG5cdFx0XHRcdGlmIChyZXNwKSB7XG5cdFx0XHRcdFx0dGhpcy5zb2NrZXQuZW1pdCgnY3JlYXRlJywge1xuXHRcdFx0XHRcdFx0X2lkOiByZXNwLl9pZCxcblx0XHRcdFx0XHRcdHBhcnQ6IHBhcnRcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR0aGlzLnB1c2gocGFydCwgcmVzcCk7XG5cdFx0XHRcdFx0aWYgKHR5cGVvZiBjYiA9PSAnZnVuY3Rpb24nKSBjYihyZXNwKTtcblx0XHRcdFx0fWVsc2UgaWYgKHR5cGVvZiBjYiA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0Y2IoZmFsc2UpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LCBvcHRzKTtcblx0XHR9O1xuXHRcdHB1YmxpYyBmZXRjaChwYXJ0OmFueSwgb3B0czphbnk9dW5kZWZpbmVkLCBjYjphbnk9dW5kZWZpbmVkKSB7XG5cdFx0XHRpZihvcHRzLnF1ZXJ5ICYmIG9wdHMucXVlcnkuX2lkICYmICFvcHRzLmZvcmNlICYmXG5cdFx0XHRcdHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW29wdHMucXVlcnkuX2lkXSl7XG5cdFx0XHRcdHJldHVybiB0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtvcHRzLnF1ZXJ5Ll9pZF07XG5cdFx0XHR9XG5cdFx0XHRpZiAodHlwZW9mIG9wdHMgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRjYiA9IG9wdHM7XG5cdFx0XHRcdG9wdHMgPSB7fTtcblx0XHRcdH1cblx0XHRcdGlmKCFvcHRzKSBvcHRzID0ge307XG5cdFx0XHR0aGlzLmNvbmZpZyhwYXJ0LCBvcHRzKTsgLy8gcmVtb3ZlIHRoaXMgaW4gZnV0dXJlXG5cdFx0XHRsZXQgdXJsID0gJy9hcGkvJyArIHBhcnQgKyAnL2ZldGNoJysob3B0cy5uYW1lfHwnJyksIGRvYzphbnk7XG5cdFx0XHRpZihvcHRzLnF1ZXJ5ICYmIG9wdHMucXVlcnkuX2lkICYmIHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW29wdHMucXVlcnkuX2lkXSl7XG5cdFx0XHRcdGRvYyA9IHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW29wdHMucXVlcnkuX2lkXTtcblx0XHRcdH1lbHNle1xuXHRcdFx0XHRkb2MgPSB7fTtcblx0XHRcdFx0Zm9yKGxldCBrZXkgaW4gdGhpcy5kYXRhWydvcHRzJytwYXJ0XS5yZXBsYWNlKXtcblx0XHRcdFx0XHR0aGlzLnJlcGxhY2UoZG9jLCBrZXksIHRoaXMuZGF0YVsnb3B0cycrcGFydF0ucmVwbGFjZVtrZXldKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dGhpcy5odHRwLnBvc3Qob3B0cy51cmwgfHwgdXJsLCAob3B0cy5xdWVyeXx8e30pLCByZXNwID0+IHtcblx0XHRcdFx0aWYoIXJlc3ApIHJldHVybiBjYiYmY2IoZmFsc2UpO1xuXHRcdFx0XHRmb3IgKGxldCBlYWNoIGluIHJlc3Ape1xuXHRcdFx0XHQgICAgZG9jW2VhY2hdID0gcmVzcFtlYWNoXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3IgKGxldCBlYWNoIGluIGRvYyl7XG5cdFx0XHRcdCAgICBkb2NbZWFjaF0gPSByZXNwW2VhY2hdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMucHVzaChwYXJ0LCBkb2MpO1xuXHRcdFx0XHRpZiAocmVzcCAmJiB0eXBlb2YgY2IgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdGNiKGRvYyk7XG5cdFx0XHRcdH1cblx0XHRcdH0sIG9wdHMpO1xuXHRcdFx0cmV0dXJuIGRvYztcblx0XHR9O1xuXHRcdHB1YmxpYyBnZXQocGFydDphbnksIG9wdHM6YW55PXVuZGVmaW5lZCwgY2I6YW55PXVuZGVmaW5lZCkge1xuXHRcdFx0aWYgKHR5cGVvZiBvcHRzID09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0Y2IgPSBvcHRzO1xuXHRcdFx0XHRvcHRzID0ge307XG5cdFx0XHR9XG5cdFx0XHRpZighb3B0cykgb3B0cyA9IHt9O1xuXHRcdFx0dGhpcy5jb25maWcocGFydCwgb3B0cyk7IC8vIHJlbW92ZSB0aGlzIGluIGZ1dHVyZVxuXHRcdFx0bGV0IHVybCA9ICcvYXBpLycgKyBwYXJ0ICsgJy9nZXQnKyhvcHRzLm5hbWV8fCcnKSsob3B0cy5wYXJhbXx8JycpO1xuXHRcdFx0dGhpcy5odHRwLmdldChvcHRzLnVybCB8fCB1cmwsIHJlc3AgPT4ge1xuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShyZXNwKSkge1xuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcmVzcC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0dGhpcy5wdXNoKHBhcnQscmVzcFtpXSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICghb3B0cy5wYWdpbmF0ZSkge1xuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRhdGFbJ2FycicgKyBwYXJ0XS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRsZXQgcmVtb3ZlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgaiA9IDA7IGogPCByZXNwLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3Bbal0uX2lkID09PSB0aGlzLmRhdGFbJ2FycicgKyBwYXJ0XVtpXS5faWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJlbW92ZSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmIChyZW1vdmUpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnJlbW92ZShwYXJ0LCB0aGlzLmRhdGFbJ2FycicgKyBwYXJ0XVtpXSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKHR5cGVvZiBjYiA9PSAnZnVuY3Rpb24nKSBjYih0aGlzLmRhdGFbJ2FycicgKyBwYXJ0XSwgdGhpcy5kYXRhWydvYmonICsgcGFydF0sIG9wdHMubmFtZXx8JycsIHJlc3ApO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBjYiA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0Y2IodGhpcy5kYXRhWydhcnInICsgcGFydF0sIHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdLCBvcHRzLm5hbWV8fCcnLCByZXNwKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLmRhdGFbJ2xvYWRlZCcrcGFydF09dHJ1ZTtcblx0XHRcdH0sIG9wdHMpO1xuXHRcdFx0cmV0dXJuIHRoaXMuZGF0YVsnYXJyJyArIHBhcnRdO1xuXHRcdH07XG5cdFx0cHVibGljIHNldChwYXJ0OmFueSwgb3B0czphbnk9dW5kZWZpbmVkLCByZXNwOmFueT11bmRlZmluZWQpIHtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KG9wdHMpKSB7XG5cdFx0XHRcdHJlc3AgPSBvcHRzO1xuXHRcdFx0XHRvcHRzID0gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXHRcdFx0aWYob3B0cykgdGhpcy5jb25maWcocGFydCwgb3B0cyk7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShyZXNwKSkge1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHJlc3AubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHR0aGlzLnB1c2gocGFydCwgcmVzcFtpXSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGFycjogdGhpcy5kYXRhWydhcnInICsgcGFydF0sXG5cdFx0XHRcdG9iajogdGhpcy5kYXRhWydvYmonICsgcGFydF1cblx0XHRcdH1cblx0XHR9O1xuXHRcdHByaXZhdGUgcHJlcGFyZV91cGRhdGUocGFydDphbnksIGRvYzphbnksIG9wdHM6YW55KXtcblx0XHRcdGlmKG9wdHMuZmllbGRzKXtcblx0XHRcdFx0aWYodHlwZW9mIG9wdHMuZmllbGRzID09PSAnc3RyaW5nJykgb3B0cy5maWVsZHMgPSBvcHRzLmZpZWxkcy5zcGxpdCgnICcpO1xuXHRcdFx0XHRsZXQgX2RvYzphbnkgPSB7fTtcblx0XHRcdFx0Zm9yKGxldCBpID0gMDsgaSA8IG9wdHMuZmllbGRzLmxlbmd0aDsgaSsrKXtcblx0XHRcdFx0XHRfZG9jW29wdHMuZmllbGRzW2ldXSA9IGRvY1tvcHRzLmZpZWxkc1tpXV07XG5cdFx0XHRcdH1cblx0XHRcdFx0ZG9jID0gX2RvYztcblx0XHRcdH1lbHNlIHRoaXMucmVuZXcocGFydCwgZG9jKTtcblx0XHRcdGlmKHR5cGVvZiBvcHRzLnJld3JpdGUgPT0gJ29iamVjdCcgJiYgT2JqZWN0LnZhbHVlcyhvcHRzLnJld3JpdGUpLmxlbmd0aCl7XG5cdFx0XHRcdGRvYyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZG9jKSk7XG5cdFx0XHRcdGZvcihsZXQga2V5IGluIG9wdHMucmV3cml0ZSl7XG5cdFx0XHRcdFx0dGhpcy5yZXBsYWNlKGRvYywga2V5LCBvcHRzLnJld3JpdGVba2V5XSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBkb2M7XG5cdFx0fTtcblx0XHRwdWJsaWMgdXBkYXRlKHBhcnQ6YW55LCBkb2M6YW55LCBvcHRzOmFueT11bmRlZmluZWQsIGNiOmFueT11bmRlZmluZWQpIHtcblx0XHRcdGlmICh0eXBlb2Ygb3B0cyA9PSAnZnVuY3Rpb24nKXtcblx0XHRcdFx0Y2IgPSBvcHRzO1xuXHRcdFx0XHRvcHRzID0ge307XG5cdFx0XHR9XG5cdFx0XHRpZih0eXBlb2Ygb3B0cyAhPSAnb2JqZWN0Jykgb3B0cyA9IHt9O1xuXHRcdFx0ZG9jID0gdGhpcy5wcmVwYXJlX3VwZGF0ZShwYXJ0LCBkb2MsIG9wdHMpO1xuXHRcdFx0bGV0IHVybCA9ICcvYXBpLycgKyBwYXJ0ICsgJy91cGRhdGUnICsgKG9wdHMubmFtZXx8JycpO1xuXHRcdFx0dGhpcy5odHRwLnBvc3Qob3B0cy51cmwgfHwgdXJsLCBkb2MsIHJlc3AgPT4ge1xuXHRcdFx0XHRpZihyZXNwKXtcblx0XHRcdFx0XHR0aGlzLnNvY2tldC5lbWl0KCd1cGRhdGUnLCB7XG5cdFx0XHRcdFx0XHRfaWQ6IGRvYy5faWQsXG5cdFx0XHRcdFx0XHRwYXJ0OiBwYXJ0XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHJlc3AgJiYgdHlwZW9mIGNiID09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRjYihyZXNwKTtcblx0XHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgY2IgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdGNiKGZhbHNlKTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgb3B0cyk7XG5cdFx0fTtcblx0XHRwdWJsaWMgdW5pcXVlKHBhcnQ6YW55LCBkb2M6YW55LCBvcHRzOmFueT11bmRlZmluZWQsIGNiOmFueT11bmRlZmluZWQpIHtcblx0XHRcdGlmICh0eXBlb2Ygb3B0cyA9PSAnZnVuY3Rpb24nKXtcblx0XHRcdFx0Y2IgPSBvcHRzO1xuXHRcdFx0XHRvcHRzID0ge307XG5cdFx0XHR9XG5cdFx0XHRpZih0eXBlb2Ygb3B0cyAhPSAnb2JqZWN0Jykgb3B0cyA9IHt9O1xuXHRcdFx0ZG9jID0gdGhpcy5wcmVwYXJlX3VwZGF0ZShwYXJ0LCBkb2MsIG9wdHMpO1xuXHRcdFx0bGV0IHVybCA9ICcvYXBpLycgKyBwYXJ0ICsgJy91bmlxdWUnICsgKG9wdHMubmFtZXx8JycpO1xuXHRcdFx0dGhpcy5odHRwLnBvc3Qob3B0cy51cmwgfHwgdXJsLCBkb2MsIHJlc3AgPT4ge1xuXHRcdFx0XHRpZihyZXNwKXtcblx0XHRcdFx0XHR0aGlzLnNvY2tldC5lbWl0KCd1cGRhdGUnLCB7XG5cdFx0XHRcdFx0XHRfaWQ6IGRvYy5faWQsXG5cdFx0XHRcdFx0XHRwYXJ0OiBwYXJ0XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0bGV0IGN1cnJlbnRfZG9jID0gdGhpcy5kYXRhWydvYmonICsgcGFydF1bZG9jLl9pZF07XG5cdFx0XHRcdFx0Zm9yIChsZXQgZWFjaCBpbiBkb2Mpe1xuXHRcdFx0XHRcdCAgICBjdXJyZW50X2RvY1tlYWNoXSA9IGRvY1tlYWNoXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5yZW5ldyhwYXJ0LCBjdXJyZW50X2RvYyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHJlc3AgJiYgdHlwZW9mIGNiID09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRjYihyZXNwKTtcblx0XHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgY2IgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdGNiKGZhbHNlKTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgb3B0cyk7XG5cdFx0fTtcblx0XHRwdWJsaWMgZGVsZXRlKHBhcnQ6YW55LCBkb2M6YW55LCBvcHRzOmFueT11bmRlZmluZWQsIGNiOmFueT11bmRlZmluZWQpIHtcblx0XHRcdGlmICh0eXBlb2Ygb3B0cyA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdGNiID0gb3B0cztcblx0XHRcdFx0b3B0cyA9IHt9O1xuXHRcdFx0fVxuXHRcdFx0aWYodHlwZW9mIG9wdHMgIT09ICdvYmplY3QnKSBvcHRzID0ge307XG5cdFx0XHRpZihvcHRzLmZpZWxkcyl7XG5cdFx0XHRcdGlmKHR5cGVvZiBvcHRzLmZpZWxkcyA9PT0gJ3N0cmluZycpIG9wdHMuZmllbGRzID0gb3B0cy5maWVsZHMuc3BsaXQoJyAnKTtcblx0XHRcdFx0bGV0IF9kb2M6YW55ID0ge307XG5cdFx0XHRcdGZvcihsZXQgaSA9IDA7IGkgPCBvcHRzLmZpZWxkcy5sZW5ndGg7IGkrKyl7XG5cdFx0XHRcdFx0X2RvY1tvcHRzLmZpZWxkc1tpXV0gPSBkb2Nbb3B0cy5maWVsZHNbaV1dO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRvYyA9IF9kb2M7XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0ZG9jPXtcblx0XHRcdFx0XHRfaWQ6ZG9jLl9pZFxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRsZXQgdXJsID0gJy9hcGkvJyArIHBhcnQgKyAnL2RlbGV0ZScgKyAob3B0cy5uYW1lfHwnJyk7XG5cdFx0XHR0aGlzLmh0dHAucG9zdChvcHRzLnVybCB8fCB1cmwsIGRvYywgcmVzcCA9PiB7XG5cdFx0XHRcdGlmIChyZXNwKSB7XG5cdFx0XHRcdFx0dGhpcy5zb2NrZXQuZW1pdCgnZGVsZXRlJywge1xuXHRcdFx0XHRcdFx0X2lkOiBkb2MuX2lkLFxuXHRcdFx0XHRcdFx0cGFydDogcGFydFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHRoaXMucmVtb3ZlKHBhcnQsIGRvYyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHJlc3AgJiYgdHlwZW9mIGNiID09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRjYihyZXNwKTtcblx0XHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgY2IgPT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdGNiKGZhbHNlKTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgb3B0cyk7XG5cdFx0fTtcblx0XHRwdWJsaWMgX2lkKGNiOmFueSl7XG5cdFx0XHRpZih0eXBlb2YgY2IgPT0gJ2Z1bmN0aW9uJyl7XG5cdFx0XHRcdHRoaXMuaHR0cC5nZXQoJy93YXcvbmV3SWQnLCBjYik7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRwdWJsaWMgdG9faWQoZG9jczphbnkpe1xuXHRcdFx0aWYoIWRvY3MpIHJldHVybiBbXTtcblx0XHRcdGlmKEFycmF5LmlzQXJyYXkoZG9jcykpe1xuXHRcdFx0XHRkb2NzID0gZG9jcy5zbGljZSgpO1xuXHRcdFx0fWVsc2UgaWYodHlwZW9mIGRvY3MgPT0gJ29iamVjdCcpe1xuXHRcdFx0XHRpZihkb2NzLl9pZCkgcmV0dXJuIFtkb2NzLl9pZF07XG5cdFx0XHRcdGxldCBfZG9jcyA9IFtdO1xuXHRcdFx0XHRmb3IobGV0IGtleSBpbiBkb2NzKXtcblx0XHRcdFx0XHRpZihkb2NzW2tleV0pIF9kb2NzLnB1c2goZG9jc1trZXldLl9pZHx8ZG9jc1trZXldKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkb2NzID0gX2RvY3M7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGRvY3MubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0aWYoZG9jc1tpXSkgZG9jc1tpXSA9IGRvY3NbaV0uX2lkIHx8IGRvY3NbaV07XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZG9jcztcblx0XHR9O1xuXHRcdHB1YmxpYyBhZnRlcldoaWxlKGRvYzphbnksIGNiOmFueSwgdGltZT0xMDAwKXtcblx0XHRcdGlmKHR5cGVvZiBjYiA9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB0aW1lID09ICdudW1iZXInKXtcblx0XHRcdFx0Y2xlYXJUaW1lb3V0KGRvYy5fX3VwZGF0ZVRpbWVvdXQpO1xuXHRcdFx0XHRkb2MuX191cGRhdGVUaW1lb3V0ID0gc2V0VGltZW91dChjYiwgdGltZSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRwdWJsaWMgcG9wdWxhdGUoZG9jOmFueSwgZmllbGQ6YW55LCBwYXJ0OmFueSk6YW55e1xuXHRcdFx0aWYoIWRvY3x8IWZpZWxkfHwhcGFydCkgcmV0dXJuO1xuXHRcdFx0aWYoQXJyYXkuaXNBcnJheShkb2MpKXtcblx0XHRcdFx0Zm9yKGxldCBpID0gMDsgaSA8IGRvYy5sZW5ndGg7IGkrKyl7XG5cdFx0XHRcdFx0dGhpcy5wb3B1bGF0ZShkb2NbaV0sIGZpZWxkLCBwYXJ0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZih0aGlzLmRhdGFbJ2xvYWRlZCcrcGFydF0pe1xuXHRcdFx0XHRpZihBcnJheS5pc0FycmF5KGZpZWxkKSl7XG5cdFx0XHRcdFx0Zm9yKGxldCBpID0gMDsgaSA8IGZpZWxkLmxlbmd0aDsgaSsrKXtcblx0XHRcdFx0XHRcdHRoaXMucG9wdWxhdGUoZG9jLCBmaWVsZFtpXSwgcGFydCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fWVsc2UgaWYoZmllbGQuaW5kZXhPZignLicpPi0xKXtcblx0XHRcdFx0XHRmaWVsZCA9IGZpZWxkLnNwbGl0KCcuJyk7XG5cdFx0XHRcdFx0bGV0IHN1YiA9IGZpZWxkLnNoaWZ0KCk7XG5cdFx0XHRcdFx0aWYodHlwZW9mIGRvY1tzdWJdICE9ICdvYmplY3QnKSByZXR1cm47XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMucG9wdWxhdGUoZG9jW3N1Yl0sIGZpZWxkLmpvaW4oJy4nKSwgcGFydCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoQXJyYXkuaXNBcnJheShkb2NbZmllbGRdKSl7XG5cdFx0XHRcdFx0Zm9yKGxldCBpID0gZG9jW2ZpZWxkXS5sZW5ndGgtMTsgaSA+PSAwOyBpLS0pe1xuXHRcdFx0XHRcdFx0aWYodGhpcy5kYXRhWydvYmonK3BhcnRdW2RvY1tmaWVsZF1baV1dKXtcblx0XHRcdFx0XHRcdFx0ZG9jW2ZpZWxkXVtpXSA9IHRoaXMuZGF0YVsnb2JqJytwYXJ0XVtkb2NbZmllbGRdW2ldXTtcblx0XHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0XHRkb2NbZmllbGRdLnNwbGljZShpLCAxKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9ZWxzZSBpZih0eXBlb2YgZG9jW2ZpZWxkXSA9PT0gJ3N0cmluZycpe1xuXHRcdFx0XHRcdGRvY1tmaWVsZF0gPSB0aGlzLmRhdGFbJ29iaicrcGFydF1bZG9jW2ZpZWxkXV0gfHwgbnVsbDtcblx0XHRcdFx0fWVsc2UgcmV0dXJuO1xuXHRcdFx0fWVsc2V7XG5cdFx0XHRcdHNldFRpbWVvdXQoKCkgPT57XG5cdFx0XHRcdFx0dGhpcy5wb3B1bGF0ZShkb2MsIGZpZWxkLCBwYXJ0KTtcblx0XHRcdFx0fSwgMTAwKTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdHB1YmxpYyBvbihwYXJ0czphbnksIGNiOmFueSk6YW55IHtcbiAgIFx0XHQgICAgaWYgKHR5cGVvZiBwYXJ0cyA9PT0gJ3N0cmluZycpIHtcbiAgIFx0XHQgICAgICAgIHBhcnRzID0gcGFydHMuc3BsaXQoXCIgXCIpO1xuICAgXHRcdCAgICB9XG4gICBcdFx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcbiAgIFx0XHQgICAgICAgIGlmICghdGhpcy5kYXRhWydsb2FkZWQnK3BhcnRzW2ldXSkge1xuICAgXHRcdCAgICAgICAgICAgIHJldHVybiBzZXRUaW1lb3V0KCAoKSA9PiB7XG4gICBcdFx0ICAgICAgICAgICAgICAgIHRoaXMub24ocGFydHMsIGNiKTtcbiAgIFx0XHQgICAgICAgICAgICB9LCAxMDApO1xuICAgXHRcdCAgICAgICAgfVxuICAgXHRcdCAgICB9XG4gICBcdFx0ICAgIGNiKHRoaXMuZGF0YSk7XG4gICBcdFx0fTtcbiAgIFx0XHRwdWJsaWMgdHJhY2soaW5kZXg6YW55LCBkb2M6YW55KXsgcmV0dXJuIGRvYyAmJiBkb2MuX2lkICYmIGRvYy5faWQgfHwgaW5kZXg7IH1cbiAgIFx0Lypcblx0Klx0bW9uZ28gc29ydCBmaWx0ZXJzXG5cdCovXG4gICBcdFx0cHVibGljIHNvcnRBc2NJZCgpe1xuICAgXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKGE6YW55LGI6YW55KXtcbiAgIFx0XHRcdFx0aWYoYS5faWQ+Yi5faWQpIHJldHVybiAxO1xuICAgXHRcdFx0XHRlbHNlIHJldHVybiAtMTtcbiAgIFx0XHRcdH1cbiAgIFx0XHR9O1xuICAgXHRcdHB1YmxpYyBzb3J0RGVzY0lkKCl7XG4gICBcdFx0XHRyZXR1cm4gZnVuY3Rpb24oYTphbnksYjphbnkpe1xuICAgXHRcdFx0XHRpZihhLl9pZDxiLl9pZCkgcmV0dXJuIDE7XG4gICBcdFx0XHRcdGVsc2UgcmV0dXJuIC0xO1xuICAgXHRcdFx0fVxuICAgXHRcdH07XG4gICBcdFx0cHVibGljIHNvcnRBc2NTdHJpbmcob3B0czphbnkpe1xuICAgXHRcdFx0aWYodHlwZW9mIG9wdHMgPT09ICdzdHJpbmcnKXtcbiAgIFx0XHRcdFx0b3B0cyA9IHtcbiAgIFx0XHRcdFx0XHRmaWVsZDogb3B0c1xuICAgXHRcdFx0XHR9XG4gICBcdFx0XHR9XG4gICBcdFx0XHRyZXR1cm4gZnVuY3Rpb24oYTphbnksYjphbnkpe1xuICAgXHRcdFx0XHRpZihhW29wdHMuZmllbGRdLnRvTG93ZXJDYXNlKCk+YltvcHRzLmZpZWxkXS50b0xvd2VyQ2FzZSgpKSByZXR1cm4gMTtcbiAgIFx0XHRcdFx0ZWxzZSBpZihhW29wdHMuZmllbGRdLnRvTG93ZXJDYXNlKCk8YltvcHRzLmZpZWxkXS50b0xvd2VyQ2FzZSgpIHx8ICFvcHRzLm5leHQpIHJldHVybiAtMTtcbiAgIFx0XHRcdFx0ZWxzZSByZXR1cm4gb3B0cy5uZXh0KGEsYik7XG4gICBcdFx0XHR9XG4gICBcdFx0fVxuICAgXHRcdHB1YmxpYyBzb3J0RGVzY1N0cmluZyhvcHRzOmFueSl7XG4gICBcdFx0XHRpZih0eXBlb2Ygb3B0cyA9PT0gJ3N0cmluZycpe1xuICAgXHRcdFx0XHRvcHRzID0ge1xuICAgXHRcdFx0XHRcdGZpZWxkOiBvcHRzXG4gICBcdFx0XHRcdH1cbiAgIFx0XHRcdH1cbiAgIFx0XHRcdHJldHVybiBmdW5jdGlvbihhOmFueSxiOmFueSl7XG4gICBcdFx0XHRcdGlmKGFbb3B0cy5maWVsZF0udG9Mb3dlckNhc2UoKTxiW29wdHMuZmllbGRdLnRvTG93ZXJDYXNlKCkpIHJldHVybiAxO1xuICAgXHRcdFx0XHRlbHNlIGlmKGFbb3B0cy5maWVsZF0udG9Mb3dlckNhc2UoKT5iW29wdHMuZmllbGRdLnRvTG93ZXJDYXNlKCkgfHwgIW9wdHMubmV4dCkgcmV0dXJuIC0xO1xuICAgXHRcdFx0XHRlbHNlIHJldHVybiBvcHRzLm5leHQoYSxiKTtcbiAgIFx0XHRcdH1cbiAgIFx0XHR9XG4gICBcdFx0cHVibGljIHNvcnRBc2NEYXRlKG9wdHM6YW55KXtcbiAgIFx0XHRcdGlmKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJyl7XG4gICBcdFx0XHRcdG9wdHMgPSB7XG4gICBcdFx0XHRcdFx0ZmllbGQ6IG9wdHNcbiAgIFx0XHRcdFx0fVxuICAgXHRcdFx0fVxuICAgXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKGE6YW55LGI6YW55KXtcbiAgIFx0XHRcdFx0aWYoYVtvcHRzLmZpZWxkXS5nZXRUaW1lKCk+YltvcHRzLmZpZWxkXS5nZXRUaW1lKCkpIHJldHVybiAxO1xuICAgXHRcdFx0XHRlbHNlIGlmKGFbb3B0cy5maWVsZF0uZ2V0VGltZSgpPGJbb3B0cy5maWVsZF0uZ2V0VGltZSgpIHx8ICFvcHRzLm5leHQpIHJldHVybiAtMTtcbiAgIFx0XHRcdFx0ZWxzZSByZXR1cm4gb3B0cy5uZXh0KGEsYik7XG4gICBcdFx0XHR9XG4gICBcdFx0fVxuICAgXHRcdHB1YmxpYyBzb3J0RGVzY0RhdGUob3B0czphbnkpe1xuICAgXHRcdFx0aWYodHlwZW9mIG9wdHMgPT09ICdzdHJpbmcnKXtcbiAgIFx0XHRcdFx0b3B0cyA9IHtcbiAgIFx0XHRcdFx0XHRmaWVsZDogb3B0c1xuICAgXHRcdFx0XHR9XG4gICBcdFx0XHR9XG4gICBcdFx0XHRyZXR1cm4gZnVuY3Rpb24oYTphbnksYjphbnkpe1xuICAgXHRcdFx0XHRpZihhW29wdHMuZmllbGRdLmdldFRpbWUoKTxiW29wdHMuZmllbGRdLmdldFRpbWUoKSkgcmV0dXJuIDE7XG4gICBcdFx0XHRcdGVsc2UgaWYoYVtvcHRzLmZpZWxkXS5nZXRUaW1lKCk+YltvcHRzLmZpZWxkXS5nZXRUaW1lKCkgfHwgIW9wdHMubmV4dCkgcmV0dXJuIC0xO1xuICAgXHRcdFx0XHRlbHNlIHJldHVybiBvcHRzLm5leHQoYSxiKTtcbiAgIFx0XHRcdH1cbiAgIFx0XHR9XG4gICBcdFx0cHVibGljIHNvcnRBc2NOdW1iZXIob3B0czphbnkpe1xuICAgXHRcdFx0aWYodHlwZW9mIG9wdHMgPT09ICdzdHJpbmcnKXtcbiAgIFx0XHRcdFx0b3B0cyA9IHtcbiAgIFx0XHRcdFx0XHRmaWVsZDogb3B0c1xuICAgXHRcdFx0XHR9XG4gICBcdFx0XHR9XG4gICBcdFx0XHRyZXR1cm4gZnVuY3Rpb24oYTphbnksYjphbnkpe1xuICAgXHRcdFx0XHRpZihhW29wdHMuZmllbGRdPmJbb3B0cy5maWVsZF0pIHJldHVybiAxO1xuICAgXHRcdFx0XHRlbHNlIGlmKGFbb3B0cy5maWVsZF08YltvcHRzLmZpZWxkXSB8fCAhb3B0cy5uZXh0KSByZXR1cm4gLTE7XG4gICBcdFx0XHRcdGVsc2UgcmV0dXJuIG9wdHMubmV4dChhLGIpO1xuICAgXHRcdFx0fVxuICAgXHRcdH1cbiAgIFx0XHRwdWJsaWMgc29ydERlc2NOdW1iZXIob3B0czphbnkpe1xuICAgXHRcdFx0aWYodHlwZW9mIG9wdHMgPT09ICdzdHJpbmcnKXtcbiAgIFx0XHRcdFx0b3B0cyA9IHtcbiAgIFx0XHRcdFx0XHRmaWVsZDogb3B0c1xuICAgXHRcdFx0XHR9XG4gICBcdFx0XHR9XG4gICBcdFx0XHRyZXR1cm4gZnVuY3Rpb24oYTphbnksYjphbnkpe1xuICAgXHRcdFx0XHRpZihhW29wdHMuZmllbGRdPGJbb3B0cy5maWVsZF0pIHJldHVybiAxO1xuICAgXHRcdFx0XHRlbHNlIGlmKGFbb3B0cy5maWVsZF0+YltvcHRzLmZpZWxkXSB8fCAhb3B0cy5uZXh0KSByZXR1cm4gLTE7XG4gICBcdFx0XHRcdGVsc2UgcmV0dXJuIG9wdHMubmV4dChhLGIpO1xuICAgXHRcdFx0fVxuICAgXHRcdH1cbiAgIFx0XHRwdWJsaWMgc29ydEFzY0Jvb2xlYW4ob3B0czphbnkpe1xuICAgXHRcdFx0aWYodHlwZW9mIG9wdHMgPT09ICdzdHJpbmcnKXtcbiAgIFx0XHRcdFx0b3B0cyA9IHtcbiAgIFx0XHRcdFx0XHRmaWVsZDogb3B0c1xuICAgXHRcdFx0XHR9XG4gICBcdFx0XHR9XG4gICBcdFx0XHRyZXR1cm4gZnVuY3Rpb24oYTphbnksYjphbnkpe1xuICAgXHRcdFx0XHRpZighYVtvcHRzLmZpZWxkXSYmYltvcHRzLmZpZWxkXSkgcmV0dXJuIDE7XG4gICBcdFx0XHRcdGVsc2UgaWYoYVtvcHRzLmZpZWxkXSYmIWJbb3B0cy5maWVsZF0gfHwgIW9wdHMubmV4dCkgcmV0dXJuIC0xO1xuICAgXHRcdFx0XHRlbHNlIHJldHVybiBvcHRzLm5leHQoYSxiKTtcbiAgIFx0XHRcdH1cbiAgIFx0XHR9XG4gICBcdFx0cHVibGljIHNvcnREZXNjQm9vbGVhbihvcHRzOmFueSl7XG4gICBcdFx0XHRpZih0eXBlb2Ygb3B0cyA9PT0gJ3N0cmluZycpe1xuICAgXHRcdFx0XHRvcHRzID0ge1xuICAgXHRcdFx0XHRcdGZpZWxkOiBvcHRzXG4gICBcdFx0XHRcdH1cbiAgIFx0XHRcdH1cbiAgIFx0XHRcdHJldHVybiBmdW5jdGlvbihhOmFueSxiOmFueSl7XG4gICBcdFx0XHRcdGlmKGFbb3B0cy5maWVsZF0mJiFiW29wdHMuZmllbGRdKSByZXR1cm4gMTtcbiAgIFx0XHRcdFx0ZWxzZSBpZighYVtvcHRzLmZpZWxkXSYmYltvcHRzLmZpZWxkXSB8fCAhb3B0cy5uZXh0KSByZXR1cm4gLTE7XG4gICBcdFx0XHRcdGVsc2UgcmV0dXJuIG9wdHMubmV4dChhLGIpO1xuICAgXHRcdFx0fVxuICAgXHRcdH1cblx0Lypcblx0Klx0bW9uZ28gcmVwbGFjZSBmaWx0ZXJzXG5cdCovXG5cdFx0cHVibGljIGJlQXJyKHZhbDphbnksIGNiOmFueSl7XG5cdFx0XHRpZighQXJyYXkuaXNBcnJheSh2YWwpKSBjYihbXSk7XG5cdFx0XHRlbHNlIGNiKHZhbCk7XG5cdFx0fTtcblx0XHRwdWJsaWMgYmVPYmoodmFsOmFueSwgY2I6YW55KXtcblx0XHRcdGlmKHR5cGVvZiB2YWwgIT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheSh2YWwpIHx8ICF2YWwpe1xuXHRcdFx0XHR2YWwgPSB7fTtcblx0XHRcdH1cblx0XHRcdGNiKHZhbCk7XG5cdFx0fTtcblx0XHRwdWJsaWMgYmVEYXRlKHZhbDphbnksIGNiOmFueSkgeyBjYiggbmV3IERhdGUodmFsKSApOyB9O1xuXHRcdHB1YmxpYyBiZVN0cmluZyh2YWw6YW55LCBjYjphbnkpe1xuXHRcdFx0aWYodHlwZW9mIHZhbCAhPSAnc3RyaW5nJyl7XG5cdFx0XHRcdHZhbCA9ICcnO1xuXHRcdFx0fVxuXHRcdFx0Y2IodmFsKTtcblx0XHR9O1xuXHRcdHB1YmxpYyBiZURvYyA9ICh2YWw6YW55LCBjYjphbnkpPT57XG5cdFx0XHR0aGlzLmJlT2JqKHZhbCwgKHZhbDphbnkpPT57XG5cdFx0XHRcdGlmKCF2YWwuX2lkKXtcblx0XHRcdFx0XHR0aGlzLl9pZCgoX2lkOmFueSk9Pntcblx0XHRcdFx0XHRcdHZhbC5faWQgPSBfaWQ7XG5cdFx0XHRcdFx0XHRjYih2YWwpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9ZWxzZSBjYih2YWwpO1xuXHRcdFx0fSk7XG5cdFx0fTtcblx0XHRwdWJsaWMgZm9yY2VBcnIodmFsOmFueSwgY2I6YW55KXsgY2IoW10pOyB9O1xuXHRcdHB1YmxpYyBmb3JjZU9iaih2YWw6YW55LCBjYjphbnkpeyBjYih7fSk7IH07XG5cdFx0cHVibGljIGZvcmNlU3RyaW5nKHZhbDphbnksIGNiOmFueSl7IGNiKCcnKTsgfTtcblx0XHRwdWJsaWMgZm9yY2VEb2MgPSAodmFsOmFueSwgY2I6YW55KSA9PiB7XG5cdFx0XHR0aGlzLl9pZCgoX2lkOmFueSk9Pntcblx0XHRcdFx0Y2Ioe1xuXHRcdFx0XHRcdF9pZDogX2lkXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fTtcblx0XHRwdWJsaWMgZ2V0Q3JlYXRlZCh2YWw6YW55LCBjYjphbnksIGRvYzphbnkpeyBjYihuZXcgRGF0ZShwYXJzZUludChkb2MuX2lkLnN1YnN0cmluZygwLDgpLCAxNikqMTAwMCkpOyB9O1xuXHQvKlxuXHQqXHRtb25nbyBsb2NhbCBzdXBwb3J0IGZ1bmN0aW9uc1xuXHQqL1xuXHRcdHByaXZhdGUgcmVwbGFjZShkb2M6YW55LCB2YWx1ZTphbnksIHJwbDphbnkpOmFueXtcblx0XHRcdGlmKHZhbHVlLmluZGV4T2YoJy4nKT4tMSl7XG5cdFx0XHRcdHZhbHVlID0gdmFsdWUuc3BsaXQoJy4nKTtcblx0XHRcdFx0bGV0IHN1YiA9IHZhbHVlLnNoaWZ0KCk7XG5cdFx0XHRcdGlmKGRvY1tzdWJdICYmICh0eXBlb2YgZG9jW3N1Yl0gIT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShkb2Nbc3ViXSkpKVxuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0aWYoIWRvY1tzdWJdKSBkb2Nbc3ViXSA9IHt9O1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5yZXBsYWNlKGRvY1tzdWJdLCB2YWx1ZS5qb2luKCcuJyksIHJwbCk7XG5cdFx0XHR9XG5cdFx0XHRpZih0eXBlb2YgcnBsID09ICdmdW5jdGlvbicpe1xuXHRcdFx0XHRycGwoZG9jW3ZhbHVlXSwgZnVuY3Rpb24obmV3VmFsdWU6YW55KXtcblx0XHRcdFx0XHRkb2NbdmFsdWVdID0gbmV3VmFsdWU7XG5cdFx0XHRcdH0sIGRvYyk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRwdWJsaWMgcmVuZXcocGFydDphbnksIGRvYzphbnkpe1xuXHRcdFx0aWYoIXRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2RvYy5faWRdKSByZXR1cm4gdGhpcy5wdXNoKHBhcnQsIGRvYyk7XG5cdFx0XHRpZih0aGlzLmRhdGFbJ29wdHMnK3BhcnRdLnJlcGxhY2Upe1xuXHRcdFx0XHRmb3IobGV0IGtleSBpbiB0aGlzLmRhdGFbJ29wdHMnK3BhcnRdLnJlcGxhY2Upe1xuXHRcdFx0XHRcdHRoaXMucmVwbGFjZShkb2MsIGtleSwgdGhpcy5kYXRhWydvcHRzJytwYXJ0XS5yZXBsYWNlW2tleV0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGxldCBlYWNoIGluIHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2RvYy5faWRdKXtcblx0XHRcdFx0dGhpcy5kYXRhWydvYmonICsgcGFydF1bZG9jLl9pZF1bZWFjaF0gPSBkb2NbZWFjaF07XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGxldCBlYWNoIGluIGRvYyl7XG5cdFx0XHRcdHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2RvYy5faWRdW2VhY2hdID0gZG9jW2VhY2hdO1xuXHRcdFx0fVxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRhdGFbJ29wdHMnICsgcGFydF0uZmllbGRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IGZpZWxkID0gdGhpcy5kYXRhWydvcHRzJyArIHBhcnRdLmZpZWxkc1tpXTtcblx0XHRcdFx0aWYgKCF0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtkb2NbZmllbGRdXSkge1xuXHRcdFx0XHRcdHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2RvY1tmaWVsZF1dID0gZG9jO1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvciAobGV0IGVhY2ggaW4gZG9jKSB7XG5cdFx0XHRcdFx0dGhpcy5kYXRhWydvYmonICsgcGFydF1bZG9jW2ZpZWxkXV1bZWFjaF0gPSBkb2NbZWFjaF07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmKHRoaXMuZGF0YVsnb3B0cycrcGFydF0uZ3JvdXBzKXtcblx0XHRcdFx0Zm9yKGxldCBrZXkgaW4gdGhpcy5kYXRhWydvcHRzJytwYXJ0XS5ncm91cHMpe1xuXHRcdFx0XHRcdGxldCB0b19oYXZlID0gdHJ1ZTtcblx0XHRcdFx0XHRsZXQgZyA9IHRoaXMuZGF0YVsnb3B0cycrcGFydF0uZ3JvdXBzW2tleV07XG5cdFx0XHRcdFx0aWYodHlwZW9mIGcuaWdub3JlID09ICdmdW5jdGlvbicgJiYgZy5pZ25vcmUoZG9jKSkgdG9faGF2ZSA9IGZhbHNlO1xuXHRcdFx0XHRcdGlmKHR5cGVvZiBnLmFsbG93ID09ICdmdW5jdGlvbicgJiYgIWcuYWxsb3coZG9jKSkgdG9faGF2ZSA9IGZhbHNlO1xuXHRcdFx0XHRcdGlmKCF0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldKXtcblx0XHRcdFx0XHRcdHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV0gPSB7fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0bGV0IGZpZWxkczphbnkgPSB7fTtcblx0XHRcdFx0XHRsZXQgc2V0ID0gKGZpZWxkOmFueSkgPT4ge1xuXHRcdFx0XHRcdFx0ZmllbGRzW2ZpZWxkXSA9IHRydWU7XG5cdFx0XHRcdFx0XHRpZighZmllbGQpIHJldHVybjtcblx0XHRcdFx0XHRcdGlmKCFBcnJheS5pc0FycmF5KHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV1bZmllbGRdKSl7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV1bZmllbGRdID0gW107XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZih0b19oYXZlKXtcblx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV1bZmllbGRdLmxlbmd0aC0xOyBpID49IDA7IGktLSl7XG5cdFx0XHRcdFx0XHRcdCAgICBpZih0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldW2ZpZWxkXVtpXS5faWQgPT0gZG9jLl9pZCkgcmV0dXJuO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV1bZmllbGRdLnB1c2goZG9jKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGZvciAobGV0IGkgPSB0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldW2ZpZWxkXS5sZW5ndGgtMTsgaSA+PSAwOyBpLS0pe1xuXHRcdFx0XHRcdFx0XHQgICAgaWYodGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XVtmaWVsZF1baV0uX2lkID09IGRvYy5faWQpe1xuXHRcdFx0XHRcdFx0XHQgICAgXHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldW2ZpZWxkXS5zcGxpY2UoaSwgMSk7XG5cdFx0XHRcdFx0XHRcdCAgICB9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmKHR5cGVvZiBnLnNvcnQgPT0gJ2Z1bmN0aW9uJyl7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV1bZmllbGRdLnNvcnQoZy5zb3J0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0c2V0KGcuZmllbGQoZG9jLCBzZXQuYmluZCh0aGlzKSkpO1xuXHRcdFx0XHRcdGZvciAobGV0IGZpZWxkIGluIHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV0pe1xuXHRcdFx0XHRcdFx0aWYoZmllbGRzW2ZpZWxkXSkgY29udGludWU7XG5cdFx0XHRcdFx0XHRmb3IgKGxldCBpID0gdGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XVtmaWVsZF0ubGVuZ3RoLTE7IGkgPj0gMDsgaS0tKXtcblx0XHRcdFx0XHRcdFx0aWYodGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XVtmaWVsZF1baV0uX2lkID09IGRvYy5faWQpe1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV1bZmllbGRdLnNwbGljZShpLCAxKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYodGhpcy5kYXRhWydvcHRzJytwYXJ0XS5xdWVyeSl7XG5cdFx0XHRcdGZvcihsZXQga2V5IGluIHRoaXMuZGF0YVsnb3B0cycrcGFydF0ucXVlcnkpe1xuXHRcdFx0XHRcdGxldCB0b19oYXZlID0gdHJ1ZTtcblx0XHRcdFx0XHRsZXQgcXVlcnkgPSB0aGlzLmRhdGFbJ29wdHMnK3BhcnRdLnF1ZXJ5W2tleV07XG5cdFx0XHRcdFx0aWYodHlwZW9mIHF1ZXJ5Lmlnbm9yZSA9PSAnZnVuY3Rpb24nICYmIHF1ZXJ5Lmlnbm9yZShkb2MpKSB0b19oYXZlID0gZmFsc2U7XG5cdFx0XHRcdFx0aWYodHlwZW9mIHF1ZXJ5LmFsbG93ID09ICdmdW5jdGlvbicgJiYgIXF1ZXJ5LmFsbG93KGRvYykpIHRvX2hhdmUgPSBmYWxzZTtcblx0XHRcdFx0XHRpZighdGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XSl7XG5cdFx0XHRcdFx0XHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldID0gW107XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmKHRvX2hhdmUpe1xuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV0ubGVuZ3RoLTE7IGkgPj0gMDsgaS0tKXtcblx0XHRcdFx0XHRcdCAgICBpZih0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldW2ldLl9pZCA9PSBkb2MuX2lkKSByZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldLnB1c2goZG9jKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV0ubGVuZ3RoLTE7IGkgPj0gMDsgaS0tKXtcblx0XHRcdFx0XHRcdCAgICBpZih0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldW2ldLl9pZCA9PSBkb2MuX2lkKXtcblx0XHRcdFx0XHRcdCAgICBcdHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV0uc3BsaWNlKGksIDEpO1xuXHRcdFx0XHRcdFx0ICAgIH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYodHlwZW9mIHF1ZXJ5LnNvcnQgPT0gJ2Z1bmN0aW9uJyl7XG5cdFx0XHRcdFx0XHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldLnNvcnQocXVlcnkuc29ydCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRwdWJsaWMgcHVzaChwYXJ0OmFueSwgZG9jOmFueSk6YW55e1xuXHRcdFx0aWYoIXRoaXMuZGF0YVsnYXJyJyArIHBhcnRdKSB0aGlzLmRhdGFbJ2FycicgKyBwYXJ0XSA9IFtdO1xuXHRcdFx0aWYoIXRoaXMuZGF0YVsnb2JqJyArIHBhcnRdKSB0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XSA9IHt9O1xuXHRcdFx0aWYoIXRoaXMuZGF0YVsnb3B0cycgKyBwYXJ0XSkgdGhpcy5kYXRhWydvcHRzJyArIHBhcnRdID0ge307XG5cdFx0XHRpZih0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtkb2MuX2lkXSkgcmV0dXJuIHRoaXMucmVuZXcocGFydCwgZG9jKTtcblx0XHRcdGlmKHRoaXMuZGF0YVsnb3B0cycgKyBwYXJ0XS5yZXBsYWNlKXtcblx0XHRcdFx0Zm9yKGxldCBrZXkgaW4gdGhpcy5kYXRhWydvcHRzJytwYXJ0XS5yZXBsYWNlKXtcblx0XHRcdFx0XHR0aGlzLnJlcGxhY2UoZG9jLCBrZXksIHRoaXMuZGF0YVsnb3B0cycrcGFydF0ucmVwbGFjZVtrZXldKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYodGhpcy5kYXRhWydvcHRzJytwYXJ0XS5wb3B1bGF0ZSl7XG5cdFx0XHRcdGxldCBwID0gdGhpcy5kYXRhWydvcHRzJytwYXJ0XS5wb3B1bGF0ZTtcblx0XHRcdFx0aWYoQXJyYXkuaXNBcnJheShwKSl7XG5cdFx0XHRcdFx0Zm9yKGxldCBpID0gMDsgaSA8IHAubGVuZ3RoOyBpKyspe1xuXHRcdFx0XHRcdFx0aWYodHlwZW9mIHAgPT0gJ29iamVjdCcgJiYgcFtpXS5maWVsZCAmJiBwW2ldLnBhcnQpe1xuXHRcdFx0XHRcdFx0XHR0aGlzLnBvcHVsYXRlKGRvYywgcFtpXS5maWVsZCwgcFtpXS5wYXJ0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1lbHNlIGlmKHR5cGVvZiBwID09ICdvYmplY3QnICYmIHAuZmllbGQgJiYgcC5wYXJ0KXtcblx0XHRcdFx0XHR0aGlzLnBvcHVsYXRlKGRvYywgcC5maWVsZCwgcC5wYXJ0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dGhpcy5kYXRhWydhcnInICsgcGFydF0ucHVzaChkb2MpO1xuXHRcdFx0aWYodGhpcy5kYXRhWydvcHRzJytwYXJ0XS5zb3J0KXtcblx0XHRcdFx0dGhpcy5kYXRhWydhcnInICsgcGFydF0uc29ydCh0aGlzLmRhdGFbJ29wdHMnK3BhcnRdLnNvcnQpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5kYXRhWydvYmonICsgcGFydF1bZG9jLl9pZF0gPSBkb2M7XG5cdFx0XHRpZihBcnJheS5pc0FycmF5KHRoaXMuZGF0YVsnb3B0cycrcGFydF0udXNlKSl7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kYXRhWydvcHRzJytwYXJ0XS51c2UubGVuZ3RoOyBpKyspe1xuXHRcdFx0XHQgICAgdGhpcy5kYXRhWydvYmonICsgcGFydF1bZG9jW3RoaXMuZGF0YVsnb3B0cycrcGFydF0udXNlW2ldXV0gPSBkb2M7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmKHRoaXMuZGF0YVsnb3B0cycrcGFydF0uZ3JvdXBzKXtcblx0XHRcdFx0Zm9yKGxldCBrZXkgaW4gdGhpcy5kYXRhWydvcHRzJytwYXJ0XS5ncm91cHMpe1xuXHRcdFx0XHRcdGxldCBnID0gdGhpcy5kYXRhWydvcHRzJytwYXJ0XS5ncm91cHNba2V5XTtcblx0XHRcdFx0XHRpZih0eXBlb2YgZy5pZ25vcmUgPT0gJ2Z1bmN0aW9uJyAmJiBnLmlnbm9yZShkb2MpKSBjb250aW51ZTtcblx0XHRcdFx0XHRpZih0eXBlb2YgZy5hbGxvdyA9PSAnZnVuY3Rpb24nICYmICFnLmFsbG93KGRvYykpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdGlmKCF0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldKXtcblx0XHRcdFx0XHRcdHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV0gPSB7fTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0bGV0IHNldCA9IChmaWVsZDphbnkpID0+IHtcblx0XHRcdFx0XHRcdGlmKCFmaWVsZCkgcmV0dXJuO1xuXHRcdFx0XHRcdFx0aWYoIUFycmF5LmlzQXJyYXkodGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XVtmaWVsZF0pKXtcblx0XHRcdFx0XHRcdFx0dGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XVtmaWVsZF0gPSBbXTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV1bZmllbGRdLnB1c2goZG9jKTtcblx0XHRcdFx0XHRcdGlmKHR5cGVvZiBnLnNvcnQgPT0gJ2Z1bmN0aW9uJyl7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV1bZmllbGRdLnNvcnQoZy5zb3J0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0c2V0KGcuZmllbGQoZG9jLCAoZmllbGQ6YW55KT0+e1xuXHRcdFx0XHRcdFx0c2V0KGZpZWxkKTtcblx0XHRcdFx0XHR9KSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICh0aGlzLmRhdGFbJ29wdHMnICsgcGFydF0ucXVlcnkpIHtcblx0XHRcdFx0Zm9yIChsZXQga2V5IGluIHRoaXMuZGF0YVsnb3B0cycgKyBwYXJ0XS5xdWVyeSkge1xuXHRcdFx0XHRcdGxldCBxdWVyeSA9IHRoaXMuZGF0YVsnb3B0cycgKyBwYXJ0XS5xdWVyeVtrZXldO1xuXHRcdFx0XHRcdGlmICh0eXBlb2YgcXVlcnkuaWdub3JlID09ICdmdW5jdGlvbicgJiYgcXVlcnkuaWdub3JlKGRvYykpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdGlmICh0eXBlb2YgcXVlcnkuYWxsb3cgPT0gJ2Z1bmN0aW9uJyAmJiAhcXVlcnkuYWxsb3coZG9jKSkgY29udGludWU7XG5cdFx0XHRcdFx0aWYgKCF0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldID0gW107XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV0ucHVzaChkb2MpO1xuXHRcdFx0XHRcdGlmICh0eXBlb2YgcXVlcnkuc29ydCA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtrZXldLnNvcnQocXVlcnkuc29ydCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0YVsnb3B0cycgKyBwYXJ0XS5maWVsZHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0Y29uc3QgZmllbGQgPSB0aGlzLmRhdGFbJ29wdHMnICsgcGFydF0uZmllbGRzW2ldO1xuXHRcdFx0XHRpZiAoIXRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2RvY1tmaWVsZF1dKSB7XG5cdFx0XHRcdFx0dGhpcy5kYXRhWydvYmonICsgcGFydF1bZG9jW2ZpZWxkXV0gPSBkb2M7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0Zm9yIChsZXQgZWFjaCBpbiBkb2MpIHtcblx0XHRcdFx0XHR0aGlzLmRhdGFbJ29iaicgKyBwYXJ0XVtkb2NbZmllbGRdXVtlYWNoXSA9IGRvY1tlYWNoXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdFx0cHVibGljIHJlbW92ZShwYXJ0OmFueSwgZG9jOmFueSl7XG5cdFx0XHRpZighQXJyYXkuaXNBcnJheSh0aGlzLmRhdGFbJ2FycicgKyBwYXJ0XSkpIHJldHVybjtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kYXRhWydhcnInICsgcGFydF0ubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKHRoaXMuZGF0YVsnYXJyJyArIHBhcnRdW2ldLl9pZCA9PSBkb2MuX2lkKSB7XG5cdFx0XHRcdFx0dGhpcy5kYXRhWydhcnInICsgcGFydF0uc3BsaWNlKGksIDEpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRkZWxldGUgdGhpcy5kYXRhWydvYmonICsgcGFydF1bZG9jLl9pZF07XG5cdFx0XHRpZih0aGlzLmRhdGFbJ29wdHMnK3BhcnRdLmdyb3Vwcyl7XG5cdFx0XHRcdGZvcihsZXQga2V5IGluIHRoaXMuZGF0YVsnb3B0cycrcGFydF0uZ3JvdXBzKXtcblx0XHRcdFx0XHRmb3IobGV0IGZpZWxkIGluIHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV0pe1xuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV1bZmllbGRdLmxlbmd0aC0xOyBpID49IDAgOyBpLS0pIHtcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV1bZmllbGRdW2ldLl9pZCA9PSBkb2MuX2lkKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XVtmaWVsZF0uc3BsaWNlKGksIDEpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZih0aGlzLmRhdGFbJ29wdHMnK3BhcnRdLnF1ZXJ5KXtcblx0XHRcdFx0Zm9yKGxldCBrZXkgaW4gdGhpcy5kYXRhWydvcHRzJytwYXJ0XS5xdWVyeSl7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV0ubGVuZ3RoLTE7IGkgPj0gMCA7IGktLSkge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuZGF0YVsnb2JqJyArIHBhcnRdW2tleV1baV0uX2lkID09IGRvYy5faWQpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5kYXRhWydvYmonICsgcGFydF1ba2V5XS5zcGxpY2UoaSwgMSk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdC8qXG5cdCpcdEVuZG9mIE1vbmdvIFNlcnZpY2Vcblx0Ki9cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZSwgcHJpdmF0ZSBjb3JlOiBDb3JlU2VydmljZSl7XG5cdFx0dGhpcy5jb3JlLm5leHQoJ3NvY2tldCcsIChzb2NrZXQ6YW55KT0+e1xuXHRcdFx0dGhpcy5zb2NrZXQgPSBzb2NrZXQ7XG5cdFx0XHRzb2NrZXQub24oJ2NyZWF0ZScsIChjcmVhdGVkOmFueSkgPT4ge1xuXHRcdFx0XHR0aGlzLmZldGNoKGNyZWF0ZWQucGFydCwge1xuXHRcdFx0XHRcdGZvcmNlOiB0cnVlLFxuXHRcdFx0XHRcdHF1ZXJ5OiB7XG5cdFx0XHRcdFx0XHRfaWQ6IGNyZWF0ZWQuX2lkXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdFx0c29ja2V0Lm9uKCd1cGRhdGUnLCAodXBkYXRlZDphbnkpID0+IHtcblx0XHRcdFx0dGhpcy5mZXRjaCh1cGRhdGVkLnBhcnQsIHtcblx0XHRcdFx0XHRmb3JjZTogdHJ1ZSxcblx0XHRcdFx0XHRxdWVyeToge1xuXHRcdFx0XHRcdFx0X2lkOiB1cGRhdGVkLl9pZFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRcdHNvY2tldC5vbignZGVsZXRlJywgKGRlbGV0ZWQ6YW55KSA9PiB7XG5cdFx0XHRcdHRoaXMucmVtb3ZlKGRlbGV0ZWQucGFydCwgZGVsZXRlZCk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufVxuIl19
|
|
@@ -2,36 +2,24 @@ import { Injectable } from '@angular/core';
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class RenderService {
|
|
4
4
|
constructor() {
|
|
5
|
-
this.
|
|
6
|
-
this.sectors = {};
|
|
5
|
+
this.pipes = {};
|
|
7
6
|
}
|
|
8
|
-
|
|
9
|
-
if (
|
|
10
|
-
this.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
on(event, cb) {
|
|
8
|
+
if (!this.pipes[event])
|
|
9
|
+
this.pipes[event] = [];
|
|
10
|
+
this.pipes[event].push(cb);
|
|
11
|
+
const index = this.pipes[event].length - 1;
|
|
12
|
+
return () => {
|
|
13
|
+
this.pipes[event][index] = false;
|
|
14
|
+
};
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
if (
|
|
16
|
+
render(event, param = null) {
|
|
17
|
+
if (!this.pipes[event])
|
|
18
18
|
return;
|
|
19
|
-
let
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
now = this.sectors[section];
|
|
24
|
-
cdr.markForCheck();
|
|
25
|
-
}
|
|
26
|
-
}, 500);
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
setInterval(() => {
|
|
30
|
-
if (now != this.now) {
|
|
31
|
-
now = this.now;
|
|
32
|
-
cdr.markForCheck();
|
|
33
|
-
}
|
|
34
|
-
}, 500);
|
|
19
|
+
for (let i = 0; i < this.pipes[event].length; i++) {
|
|
20
|
+
if (typeof this.pipes[event][i] === 'function') {
|
|
21
|
+
this.pipes[event][i](param);
|
|
22
|
+
}
|
|
35
23
|
}
|
|
36
24
|
}
|
|
37
25
|
}
|
|
@@ -43,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
43
31
|
providedIn: 'root'
|
|
44
32
|
}]
|
|
45
33
|
}], ctorParameters: function () { return []; } });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93YWNvbS9zcmMvbGliL3NlcnZpY2VzL3JlbmRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxhQUFhO0lBQ3pCO1FBQ1EsVUFBSyxHQUFPLEVBQUUsQ0FBQztJQURSLENBQUM7SUFFaEIsRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFPO1FBQ3hCLElBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQztRQUN6QyxPQUFPLEdBQUUsRUFBRTtZQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLENBQUMsQ0FBQztJQUNILENBQUM7SUFDRCxNQUFNLENBQUMsS0FBYSxFQUFFLEtBQUssR0FBQyxJQUFJO1FBQy9CLElBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU87UUFDOUIsS0FBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO1lBQ2hELElBQUcsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFVBQVUsRUFBQztnQkFDN0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM1QjtTQUNEO0lBQ0YsQ0FBQzs7MEdBbEJXLGFBQWE7OEdBQWIsYUFBYSxjQUZiLE1BQU07MkZBRU4sYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFJlbmRlclNlcnZpY2Uge1xuXHRjb25zdHJ1Y3RvcigpIHt9XG5cdHByaXZhdGUgcGlwZXM6YW55ID0ge307XG5cdG9uKGV2ZW50OiBzdHJpbmcsIGNiOiBhbnkpe1xuXHRcdGlmKCF0aGlzLnBpcGVzW2V2ZW50XSkgdGhpcy5waXBlc1tldmVudF0gPSBbXTtcblx0XHR0aGlzLnBpcGVzW2V2ZW50XS5wdXNoKGNiKTtcblx0XHRjb25zdCBpbmRleCA9IHRoaXMucGlwZXNbZXZlbnRdLmxlbmd0aC0xO1xuXHRcdHJldHVybiAoKT0+e1xuXHRcdFx0dGhpcy5waXBlc1tldmVudF1baW5kZXhdID0gZmFsc2U7XG5cdFx0fTtcblx0fVxuXHRyZW5kZXIoZXZlbnQ6IHN0cmluZywgcGFyYW09bnVsbCl7XG5cdFx0aWYoIXRoaXMucGlwZXNbZXZlbnRdKSByZXR1cm47XG5cdFx0Zm9yKGxldCBpID0gMDsgaSA8IHRoaXMucGlwZXNbZXZlbnRdLmxlbmd0aDsgaSsrKXtcblx0XHRcdGlmKHR5cGVvZiB0aGlzLnBpcGVzW2V2ZW50XVtpXSA9PT0gJ2Z1bmN0aW9uJyl7XG5cdFx0XHRcdHRoaXMucGlwZXNbZXZlbnRdW2ldKHBhcmFtKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiJdfQ==
|