@bizdoc/core 1.10.0-next.7 → 1.10.0-next.8
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.
@@ -223,23 +223,27 @@ export class CubeMatrixComponent {
|
|
223
223
|
let sum = 0, j = 0;
|
224
224
|
while (j < this.rows.length) {
|
225
225
|
let key = this.rows[j].key;
|
226
|
-
if (
|
227
|
-
|
228
|
-
|
229
|
-
sum += val;
|
230
|
-
}
|
231
|
-
else {
|
232
|
-
let row = data[key];
|
233
|
-
if (row) {
|
234
|
-
let val = row[c.key];
|
226
|
+
if (!key.startsWith('_sum')) {
|
227
|
+
if (isFunction(calculate)) {
|
228
|
+
let val = calculate(key, this.data);
|
235
229
|
if (val !== undefined)
|
236
230
|
sum += val;
|
237
|
-
|
238
|
-
|
231
|
+
}
|
232
|
+
else {
|
233
|
+
let row = data[key];
|
234
|
+
if (row) {
|
235
|
+
let val = row[c.key];
|
236
|
+
if (val !== undefined)
|
237
|
+
sum += val;
|
238
|
+
if (key === value)
|
239
|
+
break;
|
240
|
+
}
|
239
241
|
}
|
240
242
|
}
|
241
243
|
j++;
|
242
244
|
}
|
245
|
+
if (!data[name])
|
246
|
+
data[name] = {};
|
243
247
|
data[name][c.key] = sum;
|
244
248
|
total += sum;
|
245
249
|
});
|
@@ -362,4 +366,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
362
366
|
}], loadingChange: [{
|
363
367
|
type: Output
|
364
368
|
}] } });
|
365
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL21hdHJpeC90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2N1YmUvbWF0cml4L3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4SCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQWUsUUFBUSxFQUFhLE1BQU0saUJBQWlCLENBQUM7QUFLbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7O0FBRXhELE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQztBQUUxQiwyQkFBMkI7QUFPM0IsTUFBTSxPQUFPLG1CQUFtQjtJQXdEOUIsWUFDVSxHQUFrQixFQUNsQixRQUFxQixFQUNyQixRQUF3QixFQUN4QixHQUFzQjtRQUh0QixRQUFHLEdBQUgsR0FBRyxDQUFlO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDeEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUEzRHZCLGNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztRQW1DdEMsaUJBQVksR0FBWSxJ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QUFLO3NCQUFuQixLQUFLO3VCQUFDLE1BQU07Z0JBQ0csTUFBTTtzQkFBckIsS0FBSzt1QkFBQyxPQUFPO2dCQUNHLE9BQU87c0JBQXZCLEtBQUs7dUJBQUMsUUFBUTtnQkFFUCxRQUFRO3NCQURmLEtBQUs7dUJBQUMsU0FBUztnQkFFUCxLQUFLO3NCQUFiLEtBQUs7Z0JBRU8sR0FBRztzQkFBZixLQUFLO2dCQXdCRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUtLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBSXNCLFNBQVM7c0JBQXBDLE1BQU07dUJBQUMsU0FBUztnQkFDRSxhQUFhO3NCQUEvQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgZmlyc3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBpc0FycmF5LCBpc0Z1bmN0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBDdWJlU2VydmljZSwgbW9kZWxpemUsIFNjb3BlVHlwZSB9IGZyb20gJy4uL2N1YmUuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRhc291cmNlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvZGF0YXNvdXJjZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBeGVzTWFwLCBDdWJlLCBDdWJlQXhpcywgQ3ViZUluZGV4IH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBtYXRyaXhBbmltYXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL2FuaW1hdGlvbnMnO1xyXG5cclxuY29uc3QgTE9BRElOR19ERUxBWSA9IDIwMDtcclxuXHJcbi8qKiBjdWJlIG1hdHJpeCBjb21wb25lbnQqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1jdWJlLW1hdHJpeCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFttYXRyaXhBbmltYXRpb25dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdWJlTWF0cml4Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICByZWFkb25seSBQUkVDSVNJT04gPSB0aGlzLl9zZXJ2aWNlLmRpZ2l0c0luZm87XHJcbiAgQ1VSUkVOQ1k6IHN0cmluZztcclxuICBAVmlld0NoaWxkKCd0YWJsZScpIHRhYmxlRWxlbWVudDogRWxlbWVudFJlZjxIVE1MVGFibGVFbGVtZW50PjtcclxuICBASW5wdXQoJ2N1YmUnKSBfY3ViZT86IHN0cmluZztcclxuICBASW5wdXQoJ3hBeGlzJykgX3hBeGlzITogc3RyaW5nO1xyXG4gIEBJbnB1dCgnc2VyaWVzJykgX3NlcmllcyE6IHN0cmluZztcclxuICBASW5wdXQoJ2luZGljZXMnKVxyXG4gIHByaXZhdGUgX2luZGljZXM/OiBzdHJpbmdbXSB8IHN0cmluZztcclxuICBASW5wdXQoKSBzY29wZTogU2NvcGVUeXBlO1xyXG4gIHByaXZhdGUgX3N1bTogU3VtU2V0dGluZ3NbXTtcclxuICBASW5wdXQoKSBzZXQgc3VtKHZhbDogU3VtU2V0dGluZ3MgfCBTdW1TZXR0aW5nc1tdKSB7XHJcbiAgICBpZih2YWwpIHRoaXMuX3N1bSA9IChpc0FycmF5KHZhbCkgPyB2YWwgOiBbdmFsXSkuXHJcbiAgICAgIG1hcChzdW0gPT4ge1xyXG4gICAgICAgIGxldCB2YWx1ZTtcclxuICAgICAgICBpZiAoc3VtLnZhbHVlKVxyXG4gICAgICAgICAgdmFsdWUgPSBzdW0udmFsdWUudG9TdHJpbmcoKTtcclxuICAgICAgICBlbHNlIGlmIChzdW0uY2FsY3VsYXRlKVxyXG4gICAgICAgICAgc3dpdGNoIChzdW0uY2FsY3VsYXRlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcclxuICAgICAgICAgICAgICB2YWx1ZSA9ICdNJyArICgnMCcgKyBuZXcgRGF0ZSgpLmdldE1vbnRoKCkudG9TdHJpbmcoKSkuc2xpY2UoLTIpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICd5ZWFyJzpcclxuICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdxdWFydGVyJzpcclxuICAgICAgICAgICAgICB2YWx1ZSA9IE1hdGguY2VpbChuZXcgRGF0ZSgpLmdldE1vbnRoKCkgLyAzKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICB2YWx1ZSxcclxuICAgICAgICAgIC4uLnN1bVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBASW5wdXQoKSBmaWx0ZXJzOiBBeGVzTWFwO1xyXG4gIHByaXZhdGUgX2ludGVyYWN0aXZlOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xyXG4gIHB1YmxpYyBnZXQgaW50ZXJhY3RpdmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faW50ZXJhY3RpdmU7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBpbnRlcmFjdGl2ZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5faW50ZXJhY3RpdmUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gIH1cclxuICBAT3V0cHV0KCdleHBsb3JlJykgcmVhZG9ubHkgb25FeHBsb3JlID0gbmV3IEV2ZW50RW1pdHRlcjxBeGVzTWFwPigpO1xyXG4gIEBPdXRwdXQoKSByZWFkb25seSBsb2FkaW5nQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIHJvd3M6IEtleVZhbHVlW107XHJcbiAgY29sdW1uczogS2V5VmFsdWVbXTtcclxuICBpbmRpY2VzOiBDdWJlSW5kZXhbXTtcclxuICBkYXRhOiB7IFtzZXJpZXM6IHN0cmluZ106IHsgW3hBeGlzOiBzdHJpbmddOiBudW1iZXI7IH07IH07XHJcbiAgdG90YWxzOiB7IFt4QXhpczogc3RyaW5nXTogbnVtYmVyIH07XHJcbiAgY3ViZTogQ3ViZTtcclxuICB4QXhpczogQ3ViZUF4aXM7XHJcbiAgc2VyaWVzOiBDdWJlQXhpcztcclxuICBwcml2YXRlIF9wcmVwYXJlOiBQcm9taXNlPGFueT47XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IEN1YmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kczogRGF0YXNvdXJjZVNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snX2N1YmUnXSkge1xyXG4gICAgICB0aGlzLmN1YmUgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuY3ViZXMuZmluZChjID0+IGMubmFtZSA9PT0gdGhpcy5fY3ViZSk7XHJcbiAgICAgIHRoaXMuQ1VSUkVOQ1kgPSB0aGlzLmN1YmUuY3VycmVuY3lDb2RlIC8qfHwgdGhpcy5fc2VydmljZS5jdXJyZW5jeUNvZGUqLztcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5jdWJlKSB7XHJcbiAgICAgIHRoaXMuY3ViZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlc1swXTtcclxuICAgICAgdGhpcy5DVVJSRU5DWSA9IHRoaXMuY3ViZS5jdXJyZW5jeUNvZGUgLyp8fCB0aGlzLl9zZXJ2aWNlLmN1cnJlbmN5Q29kZSovO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ19pbmRpY2VzJ10pXHJcbiAgICAgIHRoaXMuaW5kaWNlcyA9IHRoaXMuY3ViZS5pbmRpY2VzLmZpbHRlcihpID0+IGlzQXJyYXkodGhpcy5faW5kaWNlcykgPyB0aGlzLl9pbmRpY2VzLmluZGV4T2YoaS5uYW1lKSA+IC0xIDogdGhpcy5faW5kaWNlcyA9PT0gaS5uYW1lKTtcclxuICAgIGlmIChjaGFuZ2VzWydfeEF4aXMnXSB8fCBjaGFuZ2VzWydfc2VyaWVzJ10pIHtcclxuICAgICAgdGhpcy54QXhpcyA9IHRoaXMuY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IHRoaXMuX3hBeGlzKTtcclxuICAgICAgdGhpcy5zZXJpZXMgPSB0aGlzLmN1YmUuYXhlcy5maW5kKGEgPT4gYS5uYW1lID09PSB0aGlzLl9zZXJpZXMpO1xyXG4gICAgICB0aGlzLl9wcmVwYXJlID0gZm9ya0pvaW4odGhpcy5fZHMuYWxsKHRoaXMuc2VyaWVzLmRhdGFUeXBlKS5waXBlKHRhcChyID0+XHJcbiAgICAgICAgdGhpcy5yb3dzID0gclxyXG4gICAgICApKSxcclxuICAgICAgICB0aGlzLl9kcy5hbGwodGhpcy54QXhpcy5kYXRhVHlwZSkucGlwZSh0YXAoYyA9PlxyXG4gICAgICAgICAgdGhpcy5jb2x1bW5zID0gY1xyXG4gICAgICAgICkpKS50b1Byb21pc2UoKS50aGVuKFxyXG4gICAgICAgICAgKCkgPT5cclxuICAgICAgICAgICAgdGhpcy5fc3VtICYmXHJcbiAgICAgICAgICAgIHRoaXMuX2FkZHN1bSgpKTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydmaWx0ZXJzJ10pXHJcbiAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gIH1cclxuICBwcml2YXRlIF9hZGRzdW0oKSB7XHJcbiAgICB0aGlzLl9zdW0uZm9yRWFjaCgocywgaSkgPT4ge1xyXG4gICAgICBsZXQgeyB2YWx1ZSwgYXhpcyB9ID0gcztcclxuICAgICAgY29uc3QgZWxlbWVudCA9IHtcclxuICAgICAgICBrZXk6ICdfc3VtXycgKyBpLFxyXG4gICAgICAgIHZhbHVlOiBzLnRpdGxlXHJcbiAgICAgIH0gYXMgS2V5VmFsdWU7XHJcbiAgICAgIGxldCBqID0gMDtcclxuICAgICAgaWYgKGF4aXMgPT09ICd4QXhpcycpIHtcclxuICAgICAgICB3aGlsZSAoaiA8IHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmNvbHVtbnNbal0ua2V5ID09PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbHVtbnMuc3BsaWNlKGogKyAxLCAwLCBlbGVtZW50KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBqKys7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChqID09PSB0aGlzLmNvbHVtbnMubGVuZ3RoKVxyXG4gICAgICAgICAgdGhpcy5jb2x1bW5zLnB1c2goZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgd2hpbGUgKGogPCB0aGlzLnJvd3MubGVuZ3RoKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5yb3dzW2pdLmtleSA9PT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3dzLnNwbGljZShqICsgMSwgMCwgZWxlbWVudCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaisrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaiA9PT0gdGhpcy5yb3dzLmxlbmd0aClcclxuICAgICAgICAgIHRoaXMucm93cy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlZnJlc2goKSB7XHJcbiAgICBjb25zdCBwcm9ncmVzc1Rhc2sgPSBzZXRUaW1lb3V0KCgpID0+XHJcbiAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5uZXh0KHRoaXMubG9hZGluZyA9IHRydWUpXHJcbiAgICAgICwgTE9BRElOR19ERUxBWSk7XHJcbiAgICB0aGlzLl9wcmVwYXJlLnRoZW4oKCkgPT4gdGhpcy5fc2VydmljZS5zZXJpZXModGhpcy5jdWJlLm5hbWUsIHRoaXMuX3hBeGlzLCB7XHJcbiAgICAgIHNlcmllczogdGhpcy5fc2VyaWVzLFxyXG4gICAgICBpbmRpY2VzOiB0aGlzLl9pbmRpY2VzLFxyXG4gICAgICBmaWx0ZXJzOiB0aGlzLmZpbHRlcnMsXHJcbiAgICAgIHNjb3BlOiB0aGlzLnNjb3BlXHJcbiAgICB9IGFzIGFueSkucGlwZShcclxuICAgICAgbW9kZWxpemUoKSwgZmlyc3QoKSkuc3Vic2NyaWJlKGQgPT4ge1xyXG4gICAgICAgIHRoaXMuX3N1bSAmJlxyXG4gICAgICAgICAgdGhpcy5fY2FsY3VsYXRlc3VtKGQpO1xyXG4gICAgICAgIHRoaXMuX3RvdGFscyhkKTtcclxuICAgICAgICB0aGlzLmRhdGEgPSBkO1xyXG4gICAgICB9LFxyXG4gICAgICAgIChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fc2IuZXJyb3IoZS5zdGF0dXMgPT09IDQwMSA/ICdVbmF1dGhvcml6ZWQnIDogbnVsbCk7XHJcbiAgICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHByb2dyZXNzVGFzayk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmdDaGFuZ2UubmV4dCh0aGlzLmxvYWRpbmcgPSBmYWxzZSk7XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3RvdGFscyhkYXRhOiB7IFtrZXk6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogbnVtYmVyOyB9OyB9KSB7XHJcbiAgICB0aGlzLnRvdGFscyA9IHt9O1xyXG4gICAgbGV0IGdyYW5kID0gMDtcclxuICAgIHRoaXMuaW5kaWNlcyAmJiB0aGlzLmluZGljZXMuZm9yRWFjaChpID0+IHtcclxuICAgICAgY29uc3QgaW5kZXggPSBkYXRhW2kubmFtZV07XHJcbiAgICAgIGlmICghaW5kZXgpIGRhdGFbaS5uYW1lXSA9IHt9O1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBsZXQgc3VtID0gMCwgeDtcclxuICAgICAgICBmb3IgKHggaW4gaW5kZXgpXHJcbiAgICAgICAgICBzdW0gKz0gaW5kZXhbeF07XHJcbiAgICAgICAgaW5kZXhbJ190b3RhbCddID0gc3VtO1xyXG4gICAgICAgIGdyYW5kICs9IHN1bTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJvd3MuZm9yRWFjaChyID0+IHtcclxuICAgICAgaWYgKCFkYXRhW3Iua2V5XSlcclxuICAgICAgICBkYXRhW3Iua2V5XSA9IHt9O1xyXG4gICAgICBjb25zdCBsaW5lID0gZGF0YVtyLmtleV07XHJcbiAgICAgIGxldCBzdW0gPSAwLCB4O1xyXG4gICAgICBpZiAobGluZSlcclxuICAgICAgICBmb3IgKHggaW4gbGluZSlcclxuICAgICAgICAgIHN1bSArPSBsaW5lW3hdO1xyXG4gICAgICBkYXRhW3Iua2V5XVsnX3RvdGFsJ10gPSBzdW07XHJcbiAgICAgIGdyYW5kIC09IHN1bTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5faW5kaWNlcyAmJiB0aGlzLmNvbHVtbnMuZm9yRWFjaChjID0+IHtcclxuICAgICAgbGV0IHN1bSA9IDAsIGtleTtcclxuICAgICAgZm9yIChrZXkgaW4gZGF0YSkge1xyXG4gICAgICAgIGNvbnN0IHZhbCA9IGRhdGFba2V5XVtjLmtleV07XHJcbiAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgc3VtICs9IHRoaXMuX2luZGljZXMuaW5kZXhPZihrZXkpID4gLTEgPyB2YWwgOiAtdmFsO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudG90YWxzW2Mua2V5XSA9IHN1bTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy50b3RhbHNbJ190b3RhbCddID0gZ3JhbmQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NhbGN1bGF0ZXN1bShkYXRhKSB7XHJcbiAgICB0aGlzLl9zdW0uZm9yRWFjaCgocywgaSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGF4aXMsIHZhbHVlLCBjYWxjdWxhdGUgfSA9IHMsIG5hbWUgPSAnX3N1bV8nICsgaTtcclxuICAgICAgaWYgKGF4aXMgPT09ICd4QXhpcycpIHtcclxuICAgICAgICBsZXQgdG90YWwgPSAwO1xyXG4gICAgICAgIHRoaXMucm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgcm93ID0gZGF0YVtyLmtleV07XHJcbiAgICAgICAgICBpZiAoIXJvdylcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgbGV0IHN1bSA9IDAsIGogPSAwO1xyXG4gICAgICAgICAgd2hpbGUgKGogPCB0aGlzLmNvbHVtbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGxldCBrZXkgPSB0aGlzLmNvbHVtbnNbal0ua2V5O1xyXG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihjYWxjdWxhdGUpKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbCA9IChjYWxjdWxhdGUgYXMgQ2FsY3VsYXRlRm4pKGtleSwgdGhpcy5kYXRhKTtcclxuICAgICAgICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICBzdW0gKz0gdmFsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGxldCB2YWwgPSByb3dba2V5XTtcclxuICAgICAgICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICBzdW0gKz0gdmFsO1xyXG4gICAgICAgICAgICAgIGlmIChrZXkgPT09IHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaisrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcm93W25hbWVdID0gc3VtO1xyXG4gICAgICAgICAgdG90YWwgKz0gc3VtO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuaW5kaWNlcyAmJiB0aGlzLmluZGljZXMuZm9yRWFjaChpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHJvdyA9IGRhdGFbaS5uYW1lXTtcclxuICAgICAgICAgIGlmICghcm93KVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICBsZXQgc3VtID0gMCwgaiA9IDA7XHJcbiAgICAgICAgICB3aGlsZSAoaiA8IHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgbGV0IGtleSA9IHRoaXMuY29sdW1uc1tqXS5rZXk7XHJcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGNhbGN1bGF0ZSkpIHtcclxuICAgICAgICAgICAgICBsZXQgdmFsID0gKGNhbGN1bGF0ZSBhcyBDYWxjdWxhdGVGbikoa2V5LCB0aGlzLmRhdGEpO1xyXG4gICAgICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgIHN1bSArPSB2YWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbCA9IHJvd1trZXldO1xyXG4gICAgICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgIHN1bSArPSB2YWw7XHJcbiAgICAgICAgICAgICAgaWYgKGtleSA9PT0gdmFsdWUpXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBqKys7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByb3dbbmFtZV0gPSBzdW07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy50b3RhbHNbbmFtZV0gPSB0b3RhbDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBsZXQgdG90YWwgPSAwO1xyXG4gICAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICAgICAgbGV0IHN1bSA9IDAsIGogPSAwO1xyXG4gICAgICAgICAgd2hpbGUgKGogPCB0aGlzLnJvd3MubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGxldCBrZXkgPSB0aGlzLnJvd3Nbal0ua2V5O1xyXG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihjYWxjdWxhdGUpKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbCA9IChjYWxjdWxhdGUgYXMgQ2FsY3VsYXRlRm4pKGtleSwgdGhpcy5kYXRhKTtcclxuICAgICAgICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICBzdW0gKz0gdmFsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGxldCByb3cgPSBkYXRhW2tleV07XHJcbiAgICAgICAgICAgICAgaWYgKHJvdykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbCA9IHJvd1tjLmtleV07XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgIHN1bSArPSB2YWw7XHJcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSB2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGorKztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRhdGFbbmFtZV1bYy5rZXldID0gc3VtO1xyXG4gICAgICAgICAgdG90YWwgKz0gc3VtO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGRhdGFbbmFtZV1bJ190b3RhbCddID0gdG90YWw7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBleHBsb3JlKHg6IHN0cmluZyB8IG51bWJlciB8IHN0cmluZ1tdIHwgbnVtYmVyW10sIHNlcmllczogc3RyaW5nIHwgbnVtYmVyIHwgc3RyaW5nW10gfCBudW1iZXJbXSkge1xyXG4gICAgaWYgKCF0aGlzLmludGVyYWN0aXZlKSByZXR1cm47XHJcbiAgICBjb25zdCBheGVzID0geyAuLi50aGlzLmZpbHRlcnMgfSBhcyBBeGVzTWFwO1xyXG4gICAgaWYgKHRoaXMuX3N1bSkge1xyXG4gICAgICBsZXQgaSA9IDA7XHJcbiAgICAgIHdoaWxlIChpIDwgdGhpcy5fc3VtLmxlbmd0aCkge1xyXG4gICAgICAgIGxldCB7IHZhbHVlLCBjYWxjdWxhdGUgfSA9IHRoaXMuX3N1bVtpXSwgbmFtZSA9ICdfc3VtXycgKyBpO1xyXG4gICAgICAgIGlmICh4ID09PSBuYW1lKSB7XHJcbiAgICAgICAgICB4ID0gW10gYXMgc3RyaW5nW107XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQga2V5ID0gdGhpcy5jb2x1bW5zW2ldLmtleTtcclxuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24oY2FsY3VsYXRlKSkge1xyXG4gICAgICAgICAgICAgIGxldCB2YWwgPSAoY2FsY3VsYXRlIGFzIChzdHJpbmcsIGRhdGEpID0+IG51bWJlcikoa2V5LCB0aGlzLmRhdGEpO1xyXG4gICAgICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgIHgucHVzaChrZXkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHgucHVzaChrZXkpO1xyXG4gICAgICAgICAgICAgIGlmIChrZXkgPT09IHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChzZXJpZXMgPT09IG5hbWUpIHtcclxuICAgICAgICAgIHNlcmllcyA9IFtdIGFzIHN0cmluZ1tdO1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGtleSA9IHRoaXMucm93c1tpXS5rZXk7XHJcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGNhbGN1bGF0ZSkpIHtcclxuICAgICAgICAgICAgICBsZXQgdmFsID0gKGNhbGN1bGF0ZSBhcyAoc3RyaW5nLCBkYXRhKSA9PiBudW1iZXIpKGtleSwgdGhpcy5kYXRhKTtcclxuICAgICAgICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICBzZXJpZXMucHVzaChrZXkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHNlcmllcy5wdXNoKGtleSk7XHJcbiAgICAgICAgICAgICAgaWYgKGtleSA9PT0gdmFsdWUpXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGkrKztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXhlc1t0aGlzLnhBeGlzLm5hbWVdID0geDtcclxuICAgIGF4ZXNbdGhpcy5zZXJpZXMubmFtZV0gPSBzZXJpZXM7XHJcbiAgICB0aGlzLm9uRXhwbG9yZS5lbWl0KGF4ZXMpO1xyXG4gIH1cclxuICBtb3ZlKHgsIHkpIHtcclxuICAgIGxldCByb3dJbmRleCA9IDA7XHJcbiAgICBmb3IgKGxldCBiID0gMDsgYiA8IHRoaXMudGFibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudEJvZGllcy5sZW5ndGg7IGIrKykge1xyXG4gICAgICBsZXQgdEJvZHkgPSB0aGlzLnRhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50LnRCb2RpZXMuaXRlbShiKTtcclxuICAgICAgZm9yIChsZXQgciA9IDA7IHIgPCB0Qm9keS5yb3dzLmxlbmd0aDsgcisrKSB7XHJcbiAgICAgICAgbGV0IHJvdyA9IHRCb2R5LnJvd3MuaXRlbShyKTtcclxuICAgICAgICBmb3IgKGxldCBjID0gMDsgYyA8IHJvdy5jZWxscy5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgICAgbGV0IGNlbGwgPSByb3cuY2VsbHMuaXRlbShjKTtcclxuICAgICAgICAgIGlmIChjID09PSB4KVxyXG4gICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5hZGQoJ2NlbGwteCcpO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5yZW1vdmUoJ2NlbGwteCcpO1xyXG4gICAgICAgICAgaWYgKHJvd0luZGV4ID09PSB5KVxyXG4gICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5hZGQoJ2NlbGwteScpO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5yZW1vdmUoJ2NlbGwteScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByb3dJbmRleCsrO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCB0Rm9vdCA9IHRoaXMudGFibGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudEZvb3QsIHJvdyA9IHRGb290LnJvd3NbMF07XHJcbiAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgcm93LmNlbGxzLmxlbmd0aDsgYysrKSB7XHJcbiAgICAgICAgbGV0IGNlbGwgPSByb3cuY2VsbHMuaXRlbShjKTtcclxuICAgICAgICBpZiAoYyA9PT0geClcclxuICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LmFkZCgnY2VsbC14Jyk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgY2VsbC5jbGFzc0xpc3QucmVtb3ZlKCdjZWxsLXgnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgU3VtU2V0dGluZ3MgPSB7XHJcbiAgdmFsdWU/OiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgYXhpczogJ3NlcmllcycgfCAneEF4aXMnO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgY2FsY3VsYXRlPzogJ3F1YXJ0ZXInIHwgJ3llYXInIHwgJ21vbnRoJyB8IENhbGN1bGF0ZUZuO1xyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQ2FsY3VsYXRlRm4ge1xyXG4gICh2YWx1ZTogc3RyaW5nLCBkYXRhOiB7IFtzZXJpZXM6IHN0cmluZ106IHsgW3hBeGlzOiBzdHJpbmddOiBudW1iZXI7IH07IH0pOiBudW1iZXI7XHJcbn1cclxuXHJcbnR5cGUgS2V5VmFsdWUgPSB7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgdmFsdWU6IGFueTtcclxufTtcclxuIiwiPHRhYmxlICN0YWJsZSBjbGFzcz1cIm1hdC10YWJsZSBjdWJlLXRhYmxlXCIgKG1vdXNlbGVhdmUpPVwibW92ZSgtMSwgLTEpXCIgKm5nSWY9XCJkYXRhXCI+XHJcbiAgPHRoZWFkPlxyXG4gICAgPCEtLSBoZWFkZXJzIC0tPlxyXG4gICAgPHRyIGNsYXNzPVwibWF0LXJvd1wiPlxyXG4gICAgICA8dGg+PC90aD5cclxuICAgICAgPHRoICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IHggPSBpbmRleFwiIChtb3VzZWVudGVyKT1cIm1vdmUoeCArIDEsIC0yKVwiIGNsYXNzPVwibWF0LWhlYWRlci1jZWxsXCI+XHJcbiAgICAgICAge3sgY29sdW1uLnZhbHVlIH19XHJcbiAgICAgIDwvdGg+XHJcbiAgICAgIDx0aD48L3RoPlxyXG4gICAgPC90cj5cclxuICA8L3RoZWFkPlxyXG4gIDx0Ym9keT5cclxuICAgIDwhLS0gaW5kaWNlcyAtLT5cclxuICAgIDx0ciBjbGFzcz1cIm1hdC1yb3cgY3ViZS1pbmRleFwiICpuZ0Zvcj1cImxldCBpbmRleCBvZiBpbmRpY2VzOyBsZXQgeSA9IGluZGV4XCI+XHJcbiAgICAgIDx0aCBjbGFzcz1cIm1hdC1oZWFkZXItY2VsbFwiIChtb3VzZWVudGVyKT1cIm1vdmUoMCwgeSlcIj57e2luZGV4LnRpdGxlfX08L3RoPlxyXG4gICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyBsZXQgeCA9IGluZGV4XCIgY2xhc3M9XCJtYXQtY2VsbCBmaWd1cmVcIiAobW91c2VlbnRlcik9XCJtb3ZlKHggKyAxLCB5KVwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YVtpbmRleC5uYW1lXSAmJiBkYXRhW2luZGV4Lm5hbWVdW2NvbHVtbi5rZXldOyBlbHNlIHplcm9cIj57eyBkYXRhW2luZGV4Lm5hbWVdW2NvbHVtbi5rZXldIHwgbnVtYmVyIDogUFJFQ0lTSU9OIH19PC9zcGFuPlxyXG4gICAgICA8L3RkPlxyXG4gICAgICA8dGggY2xhc3M9XCJtYXQtY2VsbCBmaWd1cmVcIiAobW91c2VlbnRlcik9XCJtb3ZlKDAsIHkpXCIgW25nU3dpdGNoXT1cIiFDVVJSRU5DWVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInRydWVcIj5cclxuICAgICAgICAgIHt7IGRhdGFbaW5kZXgubmFtZV1bJ190b3RhbCddIHwgbnVtYmVyIDogUFJFQ0lTSU9OIH19XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAge3sgZGF0YVtpbmRleC5uYW1lXVsnX3RvdGFsJ10gfCBjdXJyZW5jeSA6IENVUlJFTkNZOiAnc3ltYm9sJyA6IFBSRUNJU0lPTiB9fVxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3RoPlxyXG4gICAgPC90cj5cclxuICA8L3Rib2R5PlxyXG4gIDx0Ym9keT5cclxuICAgIDwhLS0gcm93cyAtLT5cclxuICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIHJvd3M7IGxldCB5ID0gaW5kZXhcIiBjbGFzcz1cIm1hdC1yb3dcIj5cclxuICAgICAgPHRoIGNsYXNzPVwibWF0LWhlYWRlci1jZWxsXCIgKG1vdXNlZW50ZXIpPVwibW92ZSgtMiwgeSArIGluZGljZXMubGVuZ3RoKVwiPnt7IHJvdy52YWx1ZSB9fTwvdGg+XHJcbiAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IGxldCB4ID0gaW5kZXhcIiBjbGFzcz1cIm1hdC1jZWxsIGZpZ3VyZVwiIChtb3VzZWVudGVyKT1cIm1vdmUoeCArIDEsIHkgKyBpbmRpY2VzLmxlbmd0aClcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YVtyb3cua2V5XSAmJiBkYXRhW3Jvdy5rZXldW2NvbHVtbi5rZXldICE9PSB1bmRlZmluZWQ7IGVsc2UgemVyb1wiPlxyXG4gICAgICAgICAgPHNwYW4gW2NsYXNzLmNsaWNrYWJsZV09XCJpbnRlcmFjdGl2ZVwiIChjbGljayk9XCJleHBsb3JlKGNvbHVtbi5rZXksIHJvdy5rZXkpXCI+XHJcbiAgICAgICAgICAgIHt7ZGF0YVtyb3cua2V5XVtjb2x1bW4ua2V5XSB8IG51bWJlciA6IFBSRUNJU0lPTiB9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3RkPlxyXG4gICAgICA8dGggY2xhc3M9XCJtYXQtY2VsbCBmaWd1cmVcIiAobW91c2VlbnRlcik9XCJtb3ZlKC0xLCB5ICsgaW5kaWNlcy5sZW5ndGgpXCIgW25nU3dpdGNoXT1cIiFDVVJSRU5DWVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cInRydWVcIj5cclxuICAgICAgICAgIHt7IGRhdGFbcm93LmtleV1bJ190b3RhbCddIHwgbnVtYmVyIDogUFJFQ0lTSU9OIH19XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAge3sgZGF0YVtyb3cua2V5XVsnX3RvdGFsJ10gfCBjdXJyZW5jeSA6IENVUlJFTkNZOiAnc3ltYm9sJyA6IFBSRUNJU0lPTiB9fVxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3RoPlxyXG4gICAgPC90cj5cclxuICA8L3Rib2R5PlxyXG4gIDx0Zm9vdD5cclxuICAgIDwhLS0gYXZhaWxhYmxlIC0tPlxyXG4gICAgPHRyPlxyXG4gICAgICA8dGg+PC90aD5cclxuICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IHggPSBpbmRleFwiIGNsYXNzPVwibWF0LWNlbGwgZmlndXJlXCIgKG1vdXNlZW50ZXIpPVwibW92ZSh4ICsgMSwgLTIpXCJcclxuICAgICAgICAgIFtjbGFzcy5uZWdhdGl2ZS1maWd1cmVdPVwidG90YWxzW2NvbHVtbi5rZXldIDwgMFwiPlxyXG4gICAgICAgIHt7dG90YWxzW2NvbHVtbi5rZXldIHwgY3VycmVuY3kgOiBDVVJSRU5DWTogJ3N5bWJvbCcgOiBQUkVDSVNJT04gfX1cclxuICAgICAgPC90ZD5cclxuICAgICAgPHRoIGNsYXNzPVwibWF0LWNlbGwgZmlndXJlXCI+e3t0b3RhbHNbJ190b3RhbCddIHwgY3VycmVuY3kgOiBDVVJSRU5DWTogJ3N5bWJvbCcgOiBQUkVDSVNJT04gfX08L3RoPlxyXG4gICAgPC90cj5cclxuICA8L3Rmb290PlxyXG48L3RhYmxlPlxyXG48bmctdGVtcGxhdGUgI3plcm8+XHJcbiAgMFxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
369
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jdWJlL21hdHJpeC90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2N1YmUvbWF0cml4L3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4SCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQWUsUUFBUSxFQUFhLE1BQU0saUJBQWlCLENBQUM7QUFLbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7O0FBRXhELE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQztBQUUxQiwyQkFBMkI7QUFPM0IsTUFBTSxPQUFPLG1CQUFtQjtJQXdEOUIsWUFDVSxHQUFrQixFQUNsQixRQUFxQixFQUNyQixRQUF3QixFQUN4QixHQUFzQjtRQUh0QixRQUFHLEdBQUgsR0FBRyxDQUFlO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDeEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUEzRHZCLGNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztRQW1DdEMsaUJBQVksR0FBWSxJ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QmhDLDQ3RkFnRUEsZ3NCRDVDYyxDQUFDLGVBQWUsQ0FBQzsyRkFFbEIsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLG9CQUFvQixjQUdsQixDQUFDLGVBQWUsQ0FBQzsyTEFLVCxZQUFZO3NCQUEvQixTQUFTO3VCQUFDLE9BQU87Z0JBQ0gsS0FBSztzQkFBbkIsS0FBSzt1QkFBQyxNQUFNO2dCQUNHLE1BQU07c0JBQXJCLEtBQUs7dUJBQUMsT0FBTztnQkFDRyxPQUFPO3NCQUF2QixLQUFLO3VCQUFDLFFBQVE7Z0JBRVAsUUFBUTtzQkFEZixLQUFLO3VCQUFDLFNBQVM7Z0JBRVAsS0FBSztzQkFBYixLQUFLO2dCQUVPLEdBQUc7c0JBQWYsS0FBSztnQkF3QkcsT0FBTztzQkFBZixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFLSyxXQUFXO3NCQURyQixLQUFLO2dCQUlzQixTQUFTO3NCQUFwQyxNQUFNO3VCQUFDLFNBQVM7Z0JBQ0UsYUFBYTtzQkFBL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIGZpcnN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgaXNBcnJheSwgaXNGdW5jdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgQ3ViZVNlcnZpY2UsIG1vZGVsaXplLCBTY29wZVR5cGUgfSBmcm9tICcuLi9jdWJlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2RhdGFzb3VyY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXhlc01hcCwgQ3ViZSwgQ3ViZUF4aXMsIEN1YmVJbmRleCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzJztcclxuaW1wb3J0IHsgbWF0cml4QW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9hbmltYXRpb25zJztcclxuXHJcbmNvbnN0IExPQURJTkdfREVMQVkgPSAyMDA7XHJcblxyXG4vKiogY3ViZSBtYXRyaXggY29tcG9uZW50Ki9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtY3ViZS1tYXRyaXgnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbbWF0cml4QW5pbWF0aW9uXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3ViZU1hdHJpeENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgcmVhZG9ubHkgUFJFQ0lTSU9OID0gdGhpcy5fc2VydmljZS5kaWdpdHNJbmZvO1xyXG4gIENVUlJFTkNZOiBzdHJpbmc7XHJcbiAgQFZpZXdDaGlsZCgndGFibGUnKSB0YWJsZUVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTFRhYmxlRWxlbWVudD47XHJcbiAgQElucHV0KCdjdWJlJykgX2N1YmU/OiBzdHJpbmc7XHJcbiAgQElucHV0KCd4QXhpcycpIF94QXhpcyE6IHN0cmluZztcclxuICBASW5wdXQoJ3NlcmllcycpIF9zZXJpZXMhOiBzdHJpbmc7XHJcbiAgQElucHV0KCdpbmRpY2VzJylcclxuICBwcml2YXRlIF9pbmRpY2VzPzogc3RyaW5nW10gfCBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2NvcGU6IFNjb3BlVHlwZTtcclxuICBwcml2YXRlIF9zdW06IFN1bVNldHRpbmdzW107XHJcbiAgQElucHV0KCkgc2V0IHN1bSh2YWw6IFN1bVNldHRpbmdzIHwgU3VtU2V0dGluZ3NbXSkge1xyXG4gICAgaWYgKHZhbCkgdGhpcy5fc3VtID0gKGlzQXJyYXkodmFsKSA/IHZhbCA6IFt2YWxdKS5cclxuICAgICAgbWFwKHN1bSA9PiB7XHJcbiAgICAgICAgbGV0IHZhbHVlO1xyXG4gICAgICAgIGlmIChzdW0udmFsdWUpXHJcbiAgICAgICAgICB2YWx1ZSA9IHN1bS52YWx1ZS50b1N0cmluZygpO1xyXG4gICAgICAgIGVsc2UgaWYgKHN1bS5jYWxjdWxhdGUpXHJcbiAgICAgICAgICBzd2l0Y2ggKHN1bS5jYWxjdWxhdGUpIHtcclxuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxyXG4gICAgICAgICAgICAgIHZhbHVlID0gJ00nICsgKCcwJyArIG5ldyBEYXRlKCkuZ2V0TW9udGgoKS50b1N0cmluZygpKS5zbGljZSgtMik7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxyXG4gICAgICAgICAgICAgIHZhbHVlID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOlxyXG4gICAgICAgICAgICAgIHZhbHVlID0gTWF0aC5jZWlsKG5ldyBEYXRlKCkuZ2V0TW9udGgoKSAvIDMpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHZhbHVlLFxyXG4gICAgICAgICAgLi4uc3VtXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGZpbHRlcnM6IEF4ZXNNYXA7XHJcbiAgcHJpdmF0ZSBfaW50ZXJhY3RpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgcHVibGljIGdldCBpbnRlcmFjdGl2ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pbnRlcmFjdGl2ZTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGludGVyYWN0aXZlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pbnRlcmFjdGl2ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgfVxyXG4gIEBPdXRwdXQoJ2V4cGxvcmUnKSByZWFkb25seSBvbkV4cGxvcmUgPSBuZXcgRXZlbnRFbWl0dGVyPEF4ZXNNYXA+KCk7XHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGxvYWRpbmdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgcm93czogS2V5VmFsdWVbXTtcclxuICBjb2x1bW5zOiBLZXlWYWx1ZVtdO1xyXG4gIGluZGljZXM6IEN1YmVJbmRleFtdO1xyXG4gIGRhdGE6IHsgW3Nlcmllczogc3RyaW5nXTogeyBbeEF4aXM6IHN0cmluZ106IG51bWJlcjsgfTsgfTtcclxuICB0b3RhbHM6IHsgW3hBeGlzOiBzdHJpbmddOiBudW1iZXIgfTtcclxuICBjdWJlOiBDdWJlO1xyXG4gIHhBeGlzOiBDdWJlQXhpcztcclxuICBzZXJpZXM6IEN1YmVBeGlzO1xyXG4gIHByaXZhdGUgX3ByZXBhcmU6IFByb21pc2U8YW55PjtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3NiOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2VydmljZTogQ3ViZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2RzOiBEYXRhc291cmNlU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydfY3ViZSddKSB7XHJcbiAgICAgIHRoaXMuY3ViZSA9IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS5jdWJlcy5maW5kKGMgPT4gYy5uYW1lID09PSB0aGlzLl9jdWJlKTtcclxuICAgICAgdGhpcy5DVVJSRU5DWSA9IHRoaXMuY3ViZS5jdXJyZW5jeUNvZGUgLyp8fCB0aGlzLl9zZXJ2aWNlLmN1cnJlbmN5Q29kZSovO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmN1YmUpIHtcclxuICAgICAgdGhpcy5jdWJlID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzWzBdO1xyXG4gICAgICB0aGlzLkNVUlJFTkNZID0gdGhpcy5jdWJlLmN1cnJlbmN5Q29kZSAvKnx8IHRoaXMuX3NlcnZpY2UuY3VycmVuY3lDb2RlKi87XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snX2luZGljZXMnXSlcclxuICAgICAgdGhpcy5pbmRpY2VzID0gdGhpcy5jdWJlLmluZGljZXMuZmlsdGVyKGkgPT4gaXNBcnJheSh0aGlzLl9pbmRpY2VzKSA/IHRoaXMuX2luZGljZXMuaW5kZXhPZihpLm5hbWUpID4gLTEgOiB0aGlzLl9pbmRpY2VzID09PSBpLm5hbWUpO1xyXG4gICAgaWYgKGNoYW5nZXNbJ194QXhpcyddIHx8IGNoYW5nZXNbJ19zZXJpZXMnXSkge1xyXG4gICAgICB0aGlzLnhBeGlzID0gdGhpcy5jdWJlLmF4ZXMuZmluZChhID0+IGEubmFtZSA9PT0gdGhpcy5feEF4aXMpO1xyXG4gICAgICB0aGlzLnNlcmllcyA9IHRoaXMuY3ViZS5heGVzLmZpbmQoYSA9PiBhLm5hbWUgPT09IHRoaXMuX3Nlcmllcyk7XHJcbiAgICAgIHRoaXMuX3ByZXBhcmUgPSBmb3JrSm9pbih0aGlzLl9kcy5hbGwodGhpcy5zZXJpZXMuZGF0YVR5cGUpLnBpcGUodGFwKHIgPT5cclxuICAgICAgICB0aGlzLnJvd3MgPSByXHJcbiAgICAgICkpLFxyXG4gICAgICAgIHRoaXMuX2RzLmFsbCh0aGlzLnhBeGlzLmRhdGFUeXBlKS5waXBlKHRhcChjID0+XHJcbiAgICAgICAgICB0aGlzLmNvbHVtbnMgPSBjXHJcbiAgICAgICAgKSkpLnRvUHJvbWlzZSgpLnRoZW4oXHJcbiAgICAgICAgICAoKSA9PlxyXG4gICAgICAgICAgICB0aGlzLl9zdW0gJiZcclxuICAgICAgICAgICAgdGhpcy5fYWRkc3VtKCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ2ZpbHRlcnMnXSlcclxuICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2FkZHN1bSgpIHtcclxuICAgIHRoaXMuX3N1bS5mb3JFYWNoKChzLCBpKSA9PiB7XHJcbiAgICAgIGxldCB7IHZhbHVlLCBheGlzIH0gPSBzO1xyXG4gICAgICBjb25zdCBlbGVtZW50ID0ge1xyXG4gICAgICAgIGtleTogJ19zdW1fJyArIGksXHJcbiAgICAgICAgdmFsdWU6IHMudGl0bGVcclxuICAgICAgfSBhcyBLZXlWYWx1ZTtcclxuICAgICAgbGV0IGogPSAwO1xyXG4gICAgICBpZiAoYXhpcyA9PT0gJ3hBeGlzJykge1xyXG4gICAgICAgIHdoaWxlIChqIDwgdGhpcy5jb2x1bW5zLmxlbmd0aCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuY29sdW1uc1tqXS5rZXkgPT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29sdW1ucy5zcGxpY2UoaiArIDEsIDAsIGVsZW1lbnQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGorKztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGogPT09IHRoaXMuY29sdW1ucy5sZW5ndGgpXHJcbiAgICAgICAgICB0aGlzLmNvbHVtbnMucHVzaChlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB3aGlsZSAoaiA8IHRoaXMucm93cy5sZW5ndGgpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnJvd3Nbal0ua2V5ID09PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnJvd3Muc3BsaWNlKGogKyAxLCAwLCBlbGVtZW50KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBqKys7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChqID09PSB0aGlzLnJvd3MubGVuZ3RoKVxyXG4gICAgICAgICAgdGhpcy5yb3dzLnB1c2goZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIGNvbnN0IHByb2dyZXNzVGFzayA9IHNldFRpbWVvdXQoKCkgPT5cclxuICAgICAgdGhpcy5sb2FkaW5nQ2hhbmdlLm5leHQodGhpcy5sb2FkaW5nID0gdHJ1ZSlcclxuICAgICAgLCBMT0FESU5HX0RFTEFZKTtcclxuICAgIHRoaXMuX3ByZXBhcmUudGhlbigoKSA9PiB0aGlzLl9zZXJ2aWNlLnNlcmllcyh0aGlzLmN1YmUubmFtZSwgdGhpcy5feEF4aXMsIHtcclxuICAgICAgc2VyaWVzOiB0aGlzLl9zZXJpZXMsXHJcbiAgICAgIGluZGljZXM6IHRoaXMuX2luZGljZXMsXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuZmlsdGVycyxcclxuICAgICAgc2NvcGU6IHRoaXMuc2NvcGVcclxuICAgIH0gYXMgYW55KS5waXBlKFxyXG4gICAgICBtb2RlbGl6ZSgpLCBmaXJzdCgpKS5zdWJzY3JpYmUoZCA9PiB7XHJcbiAgICAgICAgdGhpcy5fc3VtICYmXHJcbiAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVzdW0oZCk7XHJcbiAgICAgICAgdGhpcy5fdG90YWxzKGQpO1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IGQ7XHJcbiAgICAgIH0sXHJcbiAgICAgICAgKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9zYi5lcnJvcihlLnN0YXR1cyA9PT0gNDAxID8gJ1VuYXV0aG9yaXplZCcgOiBudWxsKTtcclxuICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICBjbGVhclRpbWVvdXQocHJvZ3Jlc3NUYXNrKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ0NoYW5nZS5uZXh0KHRoaXMubG9hZGluZyA9IGZhbHNlKTtcclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfdG90YWxzKGRhdGE6IHsgW2tleTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBudW1iZXI7IH07IH0pIHtcclxuICAgIHRoaXMudG90YWxzID0ge307XHJcbiAgICBsZXQgZ3JhbmQgPSAwO1xyXG4gICAgdGhpcy5pbmRpY2VzICYmIHRoaXMuaW5kaWNlcy5mb3JFYWNoKGkgPT4ge1xyXG4gICAgICBjb25zdCBpbmRleCA9IGRhdGFbaS5uYW1lXTtcclxuICAgICAgaWYgKCFpbmRleCkgZGF0YVtpLm5hbWVdID0ge307XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCBzdW0gPSAwLCB4O1xyXG4gICAgICAgIGZvciAoeCBpbiBpbmRleClcclxuICAgICAgICAgIHN1bSArPSBpbmRleFt4XTtcclxuICAgICAgICBpbmRleFsnX3RvdGFsJ10gPSBzdW07XHJcbiAgICAgICAgZ3JhbmQgKz0gc3VtO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMucm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICBpZiAoIWRhdGFbci5rZXldKVxyXG4gICAgICAgIGRhdGFbci5rZXldID0ge307XHJcbiAgICAgIGNvbnN0IGxpbmUgPSBkYXRhW3Iua2V5XTtcclxuICAgICAgbGV0IHN1bSA9IDAsIHg7XHJcbiAgICAgIGlmIChsaW5lKVxyXG4gICAgICAgIGZvciAoeCBpbiBsaW5lKVxyXG4gICAgICAgICAgc3VtICs9IGxpbmVbeF07XHJcbiAgICAgIGRhdGFbci5rZXldWydfdG90YWwnXSA9IHN1bTtcclxuICAgICAgZ3JhbmQgLT0gc3VtO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9pbmRpY2VzICYmIHRoaXMuY29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICBsZXQgc3VtID0gMCwga2V5O1xyXG4gICAgICBmb3IgKGtleSBpbiBkYXRhKSB7XHJcbiAgICAgICAgY29uc3QgdmFsID0gZGF0YVtrZXldW2Mua2V5XTtcclxuICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICBzdW0gKz0gdGhpcy5faW5kaWNlcy5pbmRleE9mKGtleSkgPiAtMSA/IHZhbCA6IC12YWw7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50b3RhbHNbYy5rZXldID0gc3VtO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRvdGFsc1snX3RvdGFsJ10gPSBncmFuZDtcclxuICB9XHJcbiAgcHJpdmF0ZSBfY2FsY3VsYXRlc3VtKGRhdGEpIHtcclxuICAgIHRoaXMuX3N1bS5mb3JFYWNoKChzLCBpKSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgYXhpcywgdmFsdWUsIGNhbGN1bGF0ZSB9ID0gcywgbmFtZSA9ICdfc3VtXycgKyBpO1xyXG4gICAgICBpZiAoYXhpcyA9PT0gJ3hBeGlzJykge1xyXG4gICAgICAgIGxldCB0b3RhbCA9IDA7XHJcbiAgICAgICAgdGhpcy5yb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgICAgICBjb25zdCByb3cgPSBkYXRhW3Iua2V5XTtcclxuICAgICAgICAgIGlmICghcm93KVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICBsZXQgc3VtID0gMCwgaiA9IDA7XHJcbiAgICAgICAgICB3aGlsZSAoaiA8IHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgbGV0IGtleSA9IHRoaXMuY29sdW1uc1tqXS5rZXk7XHJcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGNhbGN1bGF0ZSkpIHtcclxuICAgICAgICAgICAgICBsZXQgdmFsID0gKGNhbGN1bGF0ZSBhcyBDYWxjdWxhdGVGbikoa2V5LCB0aGlzLmRhdGEpO1xyXG4gICAgICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgIHN1bSArPSB2YWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbCA9IHJvd1trZXldO1xyXG4gICAgICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgIHN1bSArPSB2YWw7XHJcbiAgICAgICAgICAgICAgaWYgKGtleSA9PT0gdmFsdWUpXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBqKys7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByb3dbbmFtZV0gPSBzdW07XHJcbiAgICAgICAgICB0b3RhbCArPSBzdW07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5pbmRpY2VzICYmIHRoaXMuaW5kaWNlcy5mb3JFYWNoKGkgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgcm93ID0gZGF0YVtpLm5hbWVdO1xyXG4gICAgICAgICAgaWYgKCFyb3cpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIGxldCBzdW0gPSAwLCBqID0gMDtcclxuICAgICAgICAgIHdoaWxlIChqIDwgdGhpcy5jb2x1bW5zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBsZXQga2V5ID0gdGhpcy5jb2x1bW5zW2pdLmtleTtcclxuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24oY2FsY3VsYXRlKSkge1xyXG4gICAgICAgICAgICAgIGxldCB2YWwgPSAoY2FsY3VsYXRlIGFzIENhbGN1bGF0ZUZuKShrZXksIHRoaXMuZGF0YSk7XHJcbiAgICAgICAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgc3VtICs9IHZhbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBsZXQgdmFsID0gcm93W2tleV07XHJcbiAgICAgICAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgc3VtICs9IHZhbDtcclxuICAgICAgICAgICAgICBpZiAoa2V5ID09PSB2YWx1ZSlcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGorKztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJvd1tuYW1lXSA9IHN1bTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnRvdGFsc1tuYW1lXSA9IHRvdGFsO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGxldCB0b3RhbCA9IDA7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goYyA9PiB7XHJcbiAgICAgICAgICBsZXQgc3VtID0gMCwgaiA9IDA7XHJcbiAgICAgICAgICB3aGlsZSAoaiA8IHRoaXMucm93cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgbGV0IGtleSA9IHRoaXMucm93c1tqXS5rZXk7XHJcbiAgICAgICAgICAgIGlmICgha2V5LnN0YXJ0c1dpdGgoJ19zdW0nKSkge1xyXG4gICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGNhbGN1bGF0ZSkpIHtcclxuICAgICAgICAgICAgICAgIGxldCB2YWwgPSAoY2FsY3VsYXRlIGFzIENhbGN1bGF0ZUZuKShrZXksIHRoaXMuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICAgIHN1bSArPSB2YWw7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGV0IHJvdyA9IGRhdGFba2V5XTtcclxuICAgICAgICAgICAgICAgIGlmIChyb3cpIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IHZhbCA9IHJvd1tjLmtleV07XHJcbiAgICAgICAgICAgICAgICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICBzdW0gKz0gdmFsO1xyXG4gICAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSB2YWx1ZSlcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaisrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCFkYXRhW25hbWVdKSBkYXRhW25hbWVdID0ge307XHJcbiAgICAgICAgICBkYXRhW25hbWVdW2Mua2V5XSA9IHN1bTtcclxuICAgICAgICAgIHRvdGFsICs9IHN1bTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBkYXRhW25hbWVdWydfdG90YWwnXSA9IHRvdGFsO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZXhwbG9yZSh4OiBzdHJpbmcgfCBudW1iZXIgfCBzdHJpbmdbXSB8IG51bWJlcltdLCBzZXJpZXM6IHN0cmluZyB8IG51bWJlciB8IHN0cmluZ1tdIHwgbnVtYmVyW10pIHtcclxuICAgIGlmICghdGhpcy5pbnRlcmFjdGl2ZSkgcmV0dXJuO1xyXG4gICAgY29uc3QgYXhlcyA9IHsgLi4udGhpcy5maWx0ZXJzIH0gYXMgQXhlc01hcDtcclxuICAgIGlmICh0aGlzLl9zdW0pIHtcclxuICAgICAgbGV0IGkgPSAwO1xyXG4gICAgICB3aGlsZSAoaSA8IHRoaXMuX3N1bS5sZW5ndGgpIHtcclxuICAgICAgICBsZXQgeyB2YWx1ZSwgY2FsY3VsYXRlIH0gPSB0aGlzLl9zdW1baV0sIG5hbWUgPSAnX3N1bV8nICsgaTtcclxuICAgICAgICBpZiAoeCA9PT0gbmFtZSkge1xyXG4gICAgICAgICAgeCA9IFtdIGFzIHN0cmluZ1tdO1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGtleSA9IHRoaXMuY29sdW1uc1tpXS5rZXk7XHJcbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGNhbGN1bGF0ZSkpIHtcclxuICAgICAgICAgICAgICBsZXQgdmFsID0gKGNhbGN1bGF0ZSBhcyAoc3RyaW5nLCBkYXRhKSA9PiBudW1iZXIpKGtleSwgdGhpcy5kYXRhKTtcclxuICAgICAgICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICB4LnB1c2goa2V5KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB4LnB1c2goa2V5KTtcclxuICAgICAgICAgICAgICBpZiAoa2V5ID09PSB2YWx1ZSlcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoc2VyaWVzID09PSBuYW1lKSB7XHJcbiAgICAgICAgICBzZXJpZXMgPSBbXSBhcyBzdHJpbmdbXTtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBrZXkgPSB0aGlzLnJvd3NbaV0ua2V5O1xyXG4gICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihjYWxjdWxhdGUpKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbCA9IChjYWxjdWxhdGUgYXMgKHN0cmluZywgZGF0YSkgPT4gbnVtYmVyKShrZXksIHRoaXMuZGF0YSk7XHJcbiAgICAgICAgICAgICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgc2VyaWVzLnB1c2goa2V5KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBzZXJpZXMucHVzaChrZXkpO1xyXG4gICAgICAgICAgICAgIGlmIChrZXkgPT09IHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpKys7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGF4ZXNbdGhpcy54QXhpcy5uYW1lXSA9IHg7XHJcbiAgICBheGVzW3RoaXMuc2VyaWVzLm5hbWVdID0gc2VyaWVzO1xyXG4gICAgdGhpcy5vbkV4cGxvcmUuZW1pdChheGVzKTtcclxuICB9XHJcbiAgbW92ZSh4LCB5KSB7XHJcbiAgICBsZXQgcm93SW5kZXggPSAwO1xyXG4gICAgZm9yIChsZXQgYiA9IDA7IGIgPCB0aGlzLnRhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50LnRCb2RpZXMubGVuZ3RoOyBiKyspIHtcclxuICAgICAgbGV0IHRCb2R5ID0gdGhpcy50YWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudC50Qm9kaWVzLml0ZW0oYik7XHJcbiAgICAgIGZvciAobGV0IHIgPSAwOyByIDwgdEJvZHkucm93cy5sZW5ndGg7IHIrKykge1xyXG4gICAgICAgIGxldCByb3cgPSB0Qm9keS5yb3dzLml0ZW0ocik7XHJcbiAgICAgICAgZm9yIChsZXQgYyA9IDA7IGMgPCByb3cuY2VsbHMubGVuZ3RoOyBjKyspIHtcclxuICAgICAgICAgIGxldCBjZWxsID0gcm93LmNlbGxzLml0ZW0oYyk7XHJcbiAgICAgICAgICBpZiAoYyA9PT0geClcclxuICAgICAgICAgICAgY2VsbC5jbGFzc0xpc3QuYWRkKCdjZWxsLXgnKTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgY2VsbC5jbGFzc0xpc3QucmVtb3ZlKCdjZWxsLXgnKTtcclxuICAgICAgICAgIGlmIChyb3dJbmRleCA9PT0geSlcclxuICAgICAgICAgICAgY2VsbC5jbGFzc0xpc3QuYWRkKCdjZWxsLXknKTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgY2VsbC5jbGFzc0xpc3QucmVtb3ZlKCdjZWxsLXknKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcm93SW5kZXgrKztcclxuICAgICAgfVxyXG4gICAgICBsZXQgdEZvb3QgPSB0aGlzLnRhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50LnRGb290LCByb3cgPSB0Rm9vdC5yb3dzWzBdO1xyXG4gICAgICBmb3IgKGxldCBjID0gMDsgYyA8IHJvdy5jZWxscy5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgIGxldCBjZWxsID0gcm93LmNlbGxzLml0ZW0oYyk7XHJcbiAgICAgICAgaWYgKGMgPT09IHgpXHJcbiAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5hZGQoJ2NlbGwteCcpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIGNlbGwuY2xhc3NMaXN0LnJlbW92ZSgnY2VsbC14Jyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFN1bVNldHRpbmdzID0ge1xyXG4gIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIGF4aXM6ICdzZXJpZXMnIHwgJ3hBeGlzJztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGNhbGN1bGF0ZT86ICdxdWFydGVyJyB8ICd5ZWFyJyB8ICdtb250aCcgfCBDYWxjdWxhdGVGbjtcclxufVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIENhbGN1bGF0ZUZuIHtcclxuICAodmFsdWU6IHN0cmluZywgZGF0YTogeyBbc2VyaWVzOiBzdHJpbmddOiB7IFt4QXhpczogc3RyaW5nXTogbnVtYmVyOyB9OyB9KTogbnVtYmVyO1xyXG59XHJcblxyXG50eXBlIEtleVZhbHVlID0ge1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIHZhbHVlOiBhbnk7XHJcbn07XHJcbiIsIjx0YWJsZSAjdGFibGUgY2xhc3M9XCJtYXQtdGFibGUgY3ViZS10YWJsZVwiIChtb3VzZWxlYXZlKT1cIm1vdmUoLTEsIC0xKVwiICpuZ0lmPVwiZGF0YVwiPlxyXG4gIDx0aGVhZD5cclxuICAgIDwhLS0gaGVhZGVycyAtLT5cclxuICAgIDx0ciBjbGFzcz1cIm1hdC1yb3dcIj5cclxuICAgICAgPHRoPjwvdGg+XHJcbiAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IGxldCB4ID0gaW5kZXhcIiAobW91c2VlbnRlcik9XCJtb3ZlKHggKyAxLCAtMilcIiBjbGFzcz1cIm1hdC1oZWFkZXItY2VsbFwiPlxyXG4gICAgICAgIHt7IGNvbHVtbi52YWx1ZSB9fVxyXG4gICAgICA8L3RoPlxyXG4gICAgICA8dGg+PC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90aGVhZD5cclxuICA8dGJvZHk+XHJcbiAgICA8IS0tIGluZGljZXMgLS0+XHJcbiAgICA8dHIgY2xhc3M9XCJtYXQtcm93IGN1YmUtaW5kZXhcIiAqbmdGb3I9XCJsZXQgaW5kZXggb2YgaW5kaWNlczsgbGV0IHkgPSBpbmRleFwiPlxyXG4gICAgICA8dGggY2xhc3M9XCJtYXQtaGVhZGVyLWNlbGxcIiAobW91c2VlbnRlcik9XCJtb3ZlKDAsIHkpXCI+e3tpbmRleC50aXRsZX19PC90aD5cclxuICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IHggPSBpbmRleFwiIGNsYXNzPVwibWF0LWNlbGwgZmlndXJlXCIgKG1vdXNlZW50ZXIpPVwibW92ZSh4ICsgMSwgeSlcIj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGFbaW5kZXgubmFtZV0gJiYgZGF0YVtpbmRleC5uYW1lXVtjb2x1bW4ua2V5XTsgZWxzZSB6ZXJvXCI+e3sgZGF0YVtpbmRleC5uYW1lXVtjb2x1bW4ua2V5XSB8IG51bWJlciA6IFBSRUNJU0lPTiB9fTwvc3Bhbj5cclxuICAgICAgPC90ZD5cclxuICAgICAgPHRoIGNsYXNzPVwibWF0LWNlbGwgZmlndXJlXCIgKG1vdXNlZW50ZXIpPVwibW92ZSgwLCB5KVwiIFtuZ1N3aXRjaF09XCIhQ1VSUkVOQ1lcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCI+XHJcbiAgICAgICAgICB7eyBkYXRhW2luZGV4Lm5hbWVdWydfdG90YWwnXSB8IG51bWJlciA6IFBSRUNJU0lPTiB9fVxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgIHt7IGRhdGFbaW5kZXgubmFtZV1bJ190b3RhbCddIHwgY3VycmVuY3kgOiBDVVJSRU5DWTogJ3N5bWJvbCcgOiBQUkVDSVNJT04gfX1cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90Ym9keT5cclxuICA8dGJvZHk+XHJcbiAgICA8IS0tIHJvd3MgLS0+XHJcbiAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiByb3dzOyBsZXQgeSA9IGluZGV4XCIgY2xhc3M9XCJtYXQtcm93XCI+XHJcbiAgICAgIDx0aCBjbGFzcz1cIm1hdC1oZWFkZXItY2VsbFwiIChtb3VzZWVudGVyKT1cIm1vdmUoLTIsIHkgKyBpbmRpY2VzLmxlbmd0aClcIj57eyByb3cudmFsdWUgfX08L3RoPlxyXG4gICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyBsZXQgeCA9IGluZGV4XCIgY2xhc3M9XCJtYXQtY2VsbCBmaWd1cmVcIiAobW91c2VlbnRlcik9XCJtb3ZlKHggKyAxLCB5ICsgaW5kaWNlcy5sZW5ndGgpXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGFbcm93LmtleV0gJiYgZGF0YVtyb3cua2V5XVtjb2x1bW4ua2V5XSAhPT0gdW5kZWZpbmVkOyBlbHNlIHplcm9cIj5cclxuICAgICAgICAgIDxzcGFuIFtjbGFzcy5jbGlja2FibGVdPVwiaW50ZXJhY3RpdmVcIiAoY2xpY2spPVwiZXhwbG9yZShjb2x1bW4ua2V5LCByb3cua2V5KVwiPlxyXG4gICAgICAgICAgICB7e2RhdGFbcm93LmtleV1bY29sdW1uLmtleV0gfCBudW1iZXIgOiBQUkVDSVNJT04gfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC90ZD5cclxuICAgICAgPHRoIGNsYXNzPVwibWF0LWNlbGwgZmlndXJlXCIgKG1vdXNlZW50ZXIpPVwibW92ZSgtMSwgeSArIGluZGljZXMubGVuZ3RoKVwiIFtuZ1N3aXRjaF09XCIhQ1VSUkVOQ1lcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCI+XHJcbiAgICAgICAgICB7eyBkYXRhW3Jvdy5rZXldWydfdG90YWwnXSB8IG51bWJlciA6IFBSRUNJU0lPTiB9fVxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgIHt7IGRhdGFbcm93LmtleV1bJ190b3RhbCddIHwgY3VycmVuY3kgOiBDVVJSRU5DWTogJ3N5bWJvbCcgOiBQUkVDSVNJT04gfX1cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90Ym9keT5cclxuICA8dGZvb3Q+XHJcbiAgICA8IS0tIGF2YWlsYWJsZSAtLT5cclxuICAgIDx0cj5cclxuICAgICAgPHRoPjwvdGg+XHJcbiAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IGxldCB4ID0gaW5kZXhcIiBjbGFzcz1cIm1hdC1jZWxsIGZpZ3VyZVwiIChtb3VzZWVudGVyKT1cIm1vdmUoeCArIDEsIC0yKVwiXHJcbiAgICAgICAgICBbY2xhc3MubmVnYXRpdmUtZmlndXJlXT1cInRvdGFsc1tjb2x1bW4ua2V5XSA8IDBcIj5cclxuICAgICAgICB7e3RvdGFsc1tjb2x1bW4ua2V5XSB8IGN1cnJlbmN5IDogQ1VSUkVOQ1k6ICdzeW1ib2wnIDogUFJFQ0lTSU9OIH19XHJcbiAgICAgIDwvdGQ+XHJcbiAgICAgIDx0aCBjbGFzcz1cIm1hdC1jZWxsIGZpZ3VyZVwiPnt7dG90YWxzWydfdG90YWwnXSB8IGN1cnJlbmN5IDogQ1VSUkVOQ1k6ICdzeW1ib2wnIDogUFJFQ0lTSU9OIH19PC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90Zm9vdD5cclxuPC90YWJsZT5cclxuPG5nLXRlbXBsYXRlICN6ZXJvPlxyXG4gIDBcclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
package/fesm2015/bizdoc-core.mjs
CHANGED
@@ -14323,23 +14323,27 @@ class CubeMatrixComponent {
|
|
14323
14323
|
let sum = 0, j = 0;
|
14324
14324
|
while (j < this.rows.length) {
|
14325
14325
|
let key = this.rows[j].key;
|
14326
|
-
if (
|
14327
|
-
|
14328
|
-
|
14329
|
-
sum += val;
|
14330
|
-
}
|
14331
|
-
else {
|
14332
|
-
let row = data[key];
|
14333
|
-
if (row) {
|
14334
|
-
let val = row[c.key];
|
14326
|
+
if (!key.startsWith('_sum')) {
|
14327
|
+
if (isFunction(calculate)) {
|
14328
|
+
let val = calculate(key, this.data);
|
14335
14329
|
if (val !== undefined)
|
14336
14330
|
sum += val;
|
14337
|
-
|
14338
|
-
|
14331
|
+
}
|
14332
|
+
else {
|
14333
|
+
let row = data[key];
|
14334
|
+
if (row) {
|
14335
|
+
let val = row[c.key];
|
14336
|
+
if (val !== undefined)
|
14337
|
+
sum += val;
|
14338
|
+
if (key === value)
|
14339
|
+
break;
|
14340
|
+
}
|
14339
14341
|
}
|
14340
14342
|
}
|
14341
14343
|
j++;
|
14342
14344
|
}
|
14345
|
+
if (!data[name])
|
14346
|
+
data[name] = {};
|
14343
14347
|
data[name][c.key] = sum;
|
14344
14348
|
total += sum;
|
14345
14349
|
});
|