speechrecorderng 3.9.10 → 3.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,7 +9,7 @@ For backwards compatibility to server REST API v1 set the property `apiVersion:
9
9
 
10
10
  ### Install NPM package
11
11
  Speechrecorder module is available as NPM package.
12
- Add `"speechrecorderng": "3.9.8"` to the `dependencies` array property in the `package.json` file of your application. Run `npm install` to install the package.
12
+ Add `"speechrecorderng": "3.10.0"` to the `dependencies` array property in the `package.json` file of your application. Run `npm install` to install the package.
13
13
  ### Module integration
14
14
  Add SpeechRecorderNg module to imports property of your `AppModule` annotation. The module main component `SpeechRecorder` should be activated by an Angular route.
15
15
 
@@ -5,13 +5,16 @@ export class AudioFormat {
5
5
  }
6
6
  }
7
7
  export class PCMAudioFormat extends AudioFormat {
8
- constructor(sampleRate, channelCount, sampleSize, sampleSizeInBits) {
8
+ constructor(sampleRate, channelCount, sampleSize, sampleSizeInBits, encodingFloat = false) {
9
9
  super(sampleRate, channelCount);
10
+ this.encodingFloat = false;
10
11
  this.sampleSize = sampleSize;
11
12
  this.sampleSizeInBits = sampleSizeInBits;
13
+ this.encodingFloat = encodingFloat;
12
14
  }
13
15
  toString() {
14
- return 'Audio format: PCM,' + this.sampleRate + ' Hz,' + this.channelCount + ' channels, ' + this.sampleSizeInBits + ' bits';
16
+ const encStr = this.encodingFloat ? 'Encoding: float,' : '';
17
+ return 'Audio format: PCM,' + encStr + this.sampleRate + ' Hz,' + this.channelCount + ' channels, ' + this.sampleSizeInBits + ' bits';
15
18
  }
16
19
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL2Zvcm1hdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDSSxNQUFNLE9BQU8sV0FBVztJQUdwQixZQUFZLFVBQWtCLEVBQUUsWUFBb0I7UUFDaEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDckMsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLGNBQWUsU0FBUSxXQUFXO0lBRzNDLFlBQVksVUFBa0IsRUFBRSxZQUFvQixFQUFFLFVBQWtCLEVBQUUsZ0JBQXdCO1FBQzlGLEtBQUssQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0lBQzdDLENBQUM7SUFFRCxRQUFRO1FBQ0osT0FBTyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO0lBQ2pJLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4gICAgZXhwb3J0IGNsYXNzIEF1ZGlvRm9ybWF0IHtcclxuICAgICAgICBzYW1wbGVSYXRlOiBudW1iZXI7XHJcbiAgICAgICAgY2hhbm5lbENvdW50OiBudW1iZXI7XHJcbiAgICAgICAgY29uc3RydWN0b3Ioc2FtcGxlUmF0ZTogbnVtYmVyLCBjaGFubmVsQ291bnQ6IG51bWJlcikge1xyXG4gICAgICAgICAgICB0aGlzLnNhbXBsZVJhdGUgPSBzYW1wbGVSYXRlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5uZWxDb3VudCA9IGNoYW5uZWxDb3VudDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGNsYXNzIFBDTUF1ZGlvRm9ybWF0IGV4dGVuZHMgQXVkaW9Gb3JtYXQge1xyXG4gICAgICAgIHNhbXBsZVNpemU6IG51bWJlcjtcclxuICAgICAgICBzYW1wbGVTaXplSW5CaXRzOiBudW1iZXI7XHJcbiAgICAgICAgY29uc3RydWN0b3Ioc2FtcGxlUmF0ZTogbnVtYmVyLCBjaGFubmVsQ291bnQ6IG51bWJlciwgc2FtcGxlU2l6ZTogbnVtYmVyLCBzYW1wbGVTaXplSW5CaXRzOiBudW1iZXIpIHtcclxuICAgICAgICAgICAgc3VwZXIoc2FtcGxlUmF0ZSwgY2hhbm5lbENvdW50KTtcclxuICAgICAgICAgICAgdGhpcy5zYW1wbGVTaXplID0gc2FtcGxlU2l6ZTtcclxuICAgICAgICAgICAgdGhpcy5zYW1wbGVTaXplSW5CaXRzID0gc2FtcGxlU2l6ZUluQml0cztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRvU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICAgICAgICAgIHJldHVybiAnQXVkaW8gZm9ybWF0OiBQQ00sJyArIHRoaXMuc2FtcGxlUmF0ZSArICcgSHosJyArIHRoaXMuY2hhbm5lbENvdW50ICsgJyBjaGFubmVscywgJyArIHRoaXMuc2FtcGxlU2l6ZUluQml0cyArICcgYml0cyc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuIl19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL2Zvcm1hdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDSSxNQUFNLE9BQU8sV0FBVztJQUdwQixZQUFZLFVBQWtCLEVBQUUsWUFBb0I7UUFDaEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDckMsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLGNBQWUsU0FBUSxXQUFXO0lBSTNDLFlBQVksVUFBa0IsRUFBRSxZQUFvQixFQUFFLFVBQWtCLEVBQUUsZ0JBQXdCLEVBQUMsYUFBYSxHQUFDLEtBQUs7UUFDbEgsS0FBSyxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUpwQyxrQkFBYSxHQUFTLEtBQUssQ0FBQztRQUt4QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsR0FBQyxhQUFhLENBQUM7SUFDckMsQ0FBQztJQUVELFFBQVE7UUFDSixNQUFNLE1BQU0sR0FBQyxJQUFJLENBQUMsYUFBYSxDQUFBLENBQUMsQ0FBQSxrQkFBa0IsQ0FBQSxDQUFDLENBQUEsRUFBRSxDQUFDO1FBRXRELE9BQU8sb0JBQW9CLEdBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUM7SUFDeEksQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbiAgICBleHBvcnQgY2xhc3MgQXVkaW9Gb3JtYXQge1xyXG4gICAgICAgIHNhbXBsZVJhdGU6IG51bWJlcjtcclxuICAgICAgICBjaGFubmVsQ291bnQ6IG51bWJlcjtcclxuICAgICAgICBjb25zdHJ1Y3RvcihzYW1wbGVSYXRlOiBudW1iZXIsIGNoYW5uZWxDb3VudDogbnVtYmVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbm5lbENvdW50ID0gY2hhbm5lbENvdW50O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgY2xhc3MgUENNQXVkaW9Gb3JtYXQgZXh0ZW5kcyBBdWRpb0Zvcm1hdCB7XHJcbiAgICAgICAgZW5jb2RpbmdGbG9hdDpib29sZWFuPWZhbHNlO1xyXG4gICAgICAgIHNhbXBsZVNpemU6IG51bWJlcjtcclxuICAgICAgICBzYW1wbGVTaXplSW5CaXRzOiBudW1iZXI7XHJcbiAgICAgICAgY29uc3RydWN0b3Ioc2FtcGxlUmF0ZTogbnVtYmVyLCBjaGFubmVsQ291bnQ6IG51bWJlciwgc2FtcGxlU2l6ZTogbnVtYmVyLCBzYW1wbGVTaXplSW5CaXRzOiBudW1iZXIsZW5jb2RpbmdGbG9hdD1mYWxzZSkge1xyXG4gICAgICAgICAgICBzdXBlcihzYW1wbGVSYXRlLCBjaGFubmVsQ291bnQpO1xyXG4gICAgICAgICAgICB0aGlzLnNhbXBsZVNpemUgPSBzYW1wbGVTaXplO1xyXG4gICAgICAgICAgICB0aGlzLnNhbXBsZVNpemVJbkJpdHMgPSBzYW1wbGVTaXplSW5CaXRzO1xyXG4gICAgICAgICAgICB0aGlzLmVuY29kaW5nRmxvYXQ9ZW5jb2RpbmdGbG9hdDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRvU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVuY1N0cj10aGlzLmVuY29kaW5nRmxvYXQ/J0VuY29kaW5nOiBmbG9hdCwnOicnO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuICdBdWRpbyBmb3JtYXQ6IFBDTSwnK2VuY1N0ciArIHRoaXMuc2FtcGxlUmF0ZSArICcgSHosJyArIHRoaXMuY2hhbm5lbENvdW50ICsgJyBjaGFubmVscywgJyArIHRoaXMuc2FtcGxlU2l6ZUluQml0cyArICcgYml0cyc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuIl19
@@ -2,5 +2,6 @@ export class WavFileFormat {
2
2
  static { this.RIFF_KEY = 'RIFF'; }
3
3
  static { this.WAV_KEY = 'WAVE'; }
4
4
  static { this.PCM = 0x0001; }
5
+ static { this.WAVE_FORMAT_IEEE_FLOAT = 0x0003; }
5
6
  }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F2Zm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL2ltcGwvd2F2Zm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVFLE1BQU0sT0FBTyxhQUFhO2FBQ04sYUFBUSxHQUFVLE1BQU0sQ0FBQzthQUN6QixZQUFPLEdBQVUsTUFBTSxDQUFDO2FBQ3hCLFFBQUcsR0FBVyxNQUFNLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuXHJcbiAgZXhwb3J0IGNsYXNzIFdhdkZpbGVGb3JtYXQge1xyXG4gICAgICBzdGF0aWMgcmVhZG9ubHkgUklGRl9LRVk6c3RyaW5nID0gJ1JJRkYnO1xyXG4gICAgICBzdGF0aWMgcmVhZG9ubHkgV0FWX0tFWTpzdHJpbmcgPSAnV0FWRSc7XHJcbiAgICAgIHN0YXRpYyByZWFkb25seSBQQ006bnVtYmVyID0gIDB4MDAwMTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiJdfQ==
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F2Zm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL2ltcGwvd2F2Zm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVFLE1BQU0sT0FBTyxhQUFhO2FBQ04sYUFBUSxHQUFVLE1BQU0sQ0FBQzthQUN6QixZQUFPLEdBQVUsTUFBTSxDQUFDO2FBQ3hCLFFBQUcsR0FBVyxNQUFNLENBQUM7YUFDckIsMkJBQXNCLEdBQVUsTUFBTSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcblxyXG4gIGV4cG9ydCBjbGFzcyBXYXZGaWxlRm9ybWF0IHtcclxuICAgICAgc3RhdGljIHJlYWRvbmx5IFJJRkZfS0VZOnN0cmluZyA9ICdSSUZGJztcclxuICAgICAgc3RhdGljIHJlYWRvbmx5IFdBVl9LRVk6c3RyaW5nID0gJ1dBVkUnO1xyXG4gICAgICBzdGF0aWMgcmVhZG9ubHkgUENNOm51bWJlciA9ICAweDAwMDE7XHJcbiAgICAgIHN0YXRpYyByZWFkb25seSBXQVZFX0ZPUk1BVF9JRUVFX0ZMT0FUOm51bWJlciA9IDB4MDAwMztcclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiJdfQ==
@@ -98,7 +98,7 @@ export class WavReader {
98
98
  parseFmtChunk() {
99
99
  let pcmAf = null;
100
100
  const fmt = this.br.readUint16LE();
101
- if (fmt === WavFileFormat.PCM) {
101
+ if (fmt === WavFileFormat.PCM || fmt == WavFileFormat.WAVE_FORMAT_IEEE_FLOAT) {
102
102
  const channels = this.br.readUint16LE();
103
103
  const sampleRate = this.br.readUint32LE();
104
104
  // skip bandwidth
@@ -107,7 +107,7 @@ export class WavReader {
107
107
  const frameSize = this.br.readUint16LE();
108
108
  // sample size in bits (PCM format only)
109
109
  const sampleSizeInBits = this.br.readUint16LE();
110
- pcmAf = new PCMAudioFormat(sampleRate, channels, frameSize / channels, sampleSizeInBits);
110
+ pcmAf = new PCMAudioFormat(sampleRate, channels, frameSize / channels, sampleSizeInBits, (fmt === WavFileFormat.WAVE_FORMAT_IEEE_FLOAT));
111
111
  }
112
112
  return pcmAf;
113
113
  }
@@ -119,11 +119,21 @@ export class WavReader {
119
119
  for (let ch = 0; ch < this.format.channelCount; ch++) {
120
120
  chsArr[ch] = new Float32Array(sampleCount);
121
121
  }
122
- if (this.format.sampleSize == 2) {
123
- for (let i = 0; i < this.totalLength / 2; i++) {
122
+ if (this.format.encodingFloat) {
123
+ // Not tested yet!
124
+ for (let i = 0; i < this.totalLength / 4; i++) {
124
125
  for (let ch = 0; ch < this.format.channelCount; ch++) {
125
- const s16Ampl = this.br.readInt16LE();
126
- chsArr[ch][i] = s16Ampl / 32768;
126
+ chsArr[ch][i] = this.br.readFloat32();
127
+ }
128
+ }
129
+ }
130
+ else {
131
+ if (this.format.sampleSize == 2) {
132
+ for (let i = 0; i < this.totalLength / 2; i++) {
133
+ for (let ch = 0; ch < this.format.channelCount; ch++) {
134
+ const s16Ampl = this.br.readInt16LE();
135
+ chsArr[ch][i] = s16Ampl / 32768;
136
+ }
127
137
  }
128
138
  }
129
139
  }
@@ -131,4 +141,4 @@ export class WavReader {
131
141
  return chsArr;
132
142
  }
133
143
  }
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F2cmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL2ltcGwvd2F2cmVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUVwRCxNQUFNLE9BQU8sU0FBUztJQU9sQixZQUFZLElBQWdCO1FBSnBCLFdBQU0sR0FBdUIsSUFBSSxDQUFDO1FBQ2xDLGdCQUFXLEdBQVEsQ0FBQyxDQUFDO1FBQ3JCLG9CQUFlLEdBQWEsSUFBSSxDQUFDO1FBR3JDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU8sVUFBVTtRQUNkLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksRUFBRSxLQUFLLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQyxNQUFNLE1BQU0sR0FBQyw2QkFBNkIsR0FBRSxFQUFFLENBQUM7WUFDL0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsR0FBQyxFQUFFLEdBQUMsY0FBYyxHQUFDLENB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QUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztnQkFDckQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDOUMsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7d0JBQ3JELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7d0JBQ3RDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNsQyxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdhdkZpbGVGb3JtYXQgfSBmcm9tICcuL3dhdmZvcm1hdCdcclxuaW1wb3J0IHsgUENNQXVkaW9Gb3JtYXQgfSBmcm9tICcuLi9mb3JtYXQnXHJcbmltcG9ydCB7IEJpbmFyeUJ5dGVSZWFkZXIgfSBmcm9tICcuLi8uLi9pby9CaW5hcnlSZWFkZXInXHJcblxyXG4gICAgZXhwb3J0IGNsYXNzIFdhdlJlYWRlciB7XHJcblxyXG4gICAgICAgIHByaXZhdGUgYnI6QmluYXJ5Qnl0ZVJlYWRlcjtcclxuICAgICAgICBwcml2YXRlIGZvcm1hdDpQQ01BdWRpb0Zvcm1hdCB8IG51bGw9bnVsbDtcclxuICAgICAgICBwcml2YXRlIHRvdGFsTGVuZ3RoOm51bWJlcj0wO1xyXG4gICAgICAgIHByaXZhdGUgZGF0YUNodW5rTGVuZ3RoOm51bWJlcnxudWxsPW51bGw7XHJcblxyXG4gICAgICAgIGNvbnN0cnVjdG9yKGRhdGE6QXJyYXlCdWZmZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5iciA9IG5ldyBCaW5hcnlCeXRlUmVhZGVyKGRhdGEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkSGVhZGVyKCl7XHJcbiAgICAgICAgICAgIGNvbnN0IHJoID0gdGhpcy5ici5yZWFkQXNjaWkoNCk7XHJcbiAgICAgICAgICAgIGlmIChyaCAhPT0gV2F2RmlsZUZvcm1hdC5SSUZGX0tFWSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXJyTXNnPVwiRXhwZWN0ZWQgUklGRiBoZWFkZXIsIG5vdDogXCIrIHJoO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVyck1zZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgY2wgPSB0aGlzLmJyLnJlYWRVaW50MzJMRSgpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5ici5wb3MgKyBjbCAhPT0gdGhpcy5ici5sZW5ndGgoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiV3JvbmcgY2h1bmtzaXplIGluIFJJRkYgaGVhZGVyOiBcIitjbCtcIiAoZXhwZWN0ZWQ6IFwiKyh0aGlzLmJyLmxlbmd0aCgpIC0gdGhpcy5ici5wb3MpKyBcIiApXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxMZW5ndGggPSBjbDtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHJ0ID0gdGhpcy5ici5yZWFkQXNjaWkoNCk7XHJcbiAgICAgICAgICAgIGlmIChydCAhPT0gV2F2RmlsZUZvcm1hdC5XQVZfS0VZKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJNc2c9XCJFeHBlY3RlZCBcIitXYXZGaWxlRm9ybWF0LldBVl9LRVkrXCIgbm90OiBcIisgcnQ7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyTXNnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmVhZEZvcm1hdCgpOlBDTUF1ZGlvRm9ybWF0fG51bGx7XHJcbiAgICAgICAgICAgIHRoaXMuYnIucG9zPTA7XHJcbiAgICAgICAgICAgIHRoaXMucmVhZEhlYWRlcigpO1xyXG4gICAgICAgICAgY29uc3QgcyA9IHRoaXMubmF2aWdhdGVUb0NodW5rKCdmbXQgJyk7XHJcbiAgICAgICAgICBpZiAoIXMpIHtcclxuICAgICAgICAgICAgbGV0IGVyck1zZz1cIldBViBmaWxlIGRvZXMgbm90IGNvbnRhaW4gYSBmbXQgY2h1bmtcIjtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVyck1zZyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0ID0gdGhpcy5wYXJzZUZtdENodW5rKCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHByaXZhdGUgX2ZyYW1lTGVuZ3RoKCk6bnVtYmVyfG51bGx7XHJcbiAgICAgICAgICBsZXQgZmw6bnVtYmVyfG51bGw9bnVsbDtcclxuICAgICAgICAgIGlmKHRoaXMuZm9ybWF0ICYmIHRoaXMuZGF0YUNodW5rTGVuZ3RoIT1udWxsKSB7XHJcbiAgICAgICAgICAgIGZsID0gdGhpcy5kYXRhQ2h1bmtMZW5ndGggLyB0aGlzLmZvcm1hdC5jaGFubmVsQ291bnQgLyB0aGlzLmZvcm1hdC5zYW1wbGVTaXplO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGZsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZnJhbWVMZW5ndGgoKTpudW1iZXJ8bnVsbCB7XHJcbiAgICAgICAgICBsZXQgZmw6bnVtYmVyfG51bGw9dGhpcy5fZnJhbWVMZW5ndGgoKTtcclxuICAgICAgICAgIGlmKGZsPT09bnVsbCl7XHJcbiAgICAgICAgICAgIHRoaXMucmVhZEZvcm1hdCgpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFDaHVua0xlbmd0aD10aGlzLm5hdmlnYXRlVG9DaHVuaygnZGF0YScpO1xyXG4gICAgICAgICAgICBmbD10aGlzLl9mcmFtZUxlbmd0aCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGZsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gTm90IHRlc3RlZCB5ZXQhISFcclxuICAgICAgICByZWFkKCk6QXVkaW9CdWZmZXIgfCBudWxse1xyXG4gICAgICAgICAgICB0aGlzLmJyLnBvcz0wO1xyXG4gICAgICAgICAgICBsZXQgYWI6QXVkaW9CdWZmZXJ8bnVsbD1udWxsO1xyXG4gICAgICAgICAgICB0aGlzLnJlYWRIZWFkZXIoKTtcclxuICAgICAgICAgICAgbGV0IHMgPSB0aGlzLm5hdmlnYXRlVG9DaHVuaygnZm10ICcpO1xyXG4gICAgICAgICAgICBpZiAoIXMpIHtcclxuICAgICAgICAgICAgICAgIGxldCBlcnJNc2c9XCJXQVYgZmlsZSBkb2VzIG5vdCBjb250YWluIGEgZm10IGNodW5rXCI7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyTXNnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmZvcm1hdCA9IHRoaXMucGFyc2VGbXRDaHVuaygpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFDaHVua0xlbmd0aCA9IHRoaXMubmF2aWdhdGVUb0NodW5rKCdkYXRhJyk7XHJcbiAgICAgICAgICAgIGxldCBjaHNBcnIgPSB0aGlzLnJlYWREYXRhKCk7XHJcbiAgICAgICAgICAgIGxldCBzcj10aGlzLmZvcm1hdD8uc2FtcGxlUmF0ZTtcclxuICAgICAgICAgICAgbGV0IG5DaHM9dGhpcy5mb3JtYXQ/LmNoYW5uZWxDb3VudDtcclxuICAgICAgICAgICAgaWYoc3IgJiYgY2hzQXJyICYmIG5DaHMgJiYgbkNocz4wICYmIG5DaHM9PWNoc0Fycj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBhYiA9IG5ldyBBdWRpb0J1ZmZlcih7XHJcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoOiBjaHNBcnJbMF0ubGVuZ3RoLFxyXG4gICAgICAgICAgICAgICAgICAgIG51bWJlck9mQ2hhbm5lbHM6IHRoaXMuZm9ybWF0Py5jaGFubmVsQ291bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZTogc3JcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBjaD0wO2NoPG5DaHM7Y2grKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGFiLmNvcHlUb0NoYW5uZWwoY2hzQXJyW2NoXSwgY2gpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBhYjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHByaXZhdGUgbmF2aWdhdGVUb0NodW5rKGNodW5rU3RyaW5nOnN0cmluZyk6bnVtYmVyIHtcclxuICAgICAgICAgICAgLy8gcG9zaXRpb24gYWZ0ZXIgUklGRiBoZWFkZXJcclxuICAgICAgICAgIC8vIFRPRE8gYXNzdW1lcyBubyBvdGhlciBjaHVua3MgZXhjZXB0ICdkYXRhJ1xyXG4gICAgICAgICAgICB0aGlzLmJyLnBvcyA9IDEyO1xyXG4gICAgICAgICAgICBsZXQgY2hrU3RyID0gbnVsbDtcclxuICAgICAgICAgICAgbGV0IGNoa0xlbiA9IC0xO1xyXG4gICAgICAgICAgICB3aGlsZSAoIXRoaXMuYnIuZW9mKCkpIHtcclxuICAgICAgICAgICAgICAgIGNoa1N0ciA9IHRoaXMuYnIucmVhZEFzY2lpKDQpO1xyXG4gICAgICAgICAgICAgICAgY2hrTGVuID0gdGhpcy5ici5yZWFkVWludDMyTEUoKTtcclxuICAgICAgICAgICAgICAgIGlmIChjaHVua1N0cmluZyA9PT0gY2hrU3RyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoa0xlbjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuYnIucG9zICs9IGNoa0xlbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gY2hrTGVuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcHJpdmF0ZSBwYXJzZUZtdENodW5rKCk6UENNQXVkaW9Gb3JtYXQgfCBudWxsIHtcclxuICAgICAgICAgICAgbGV0IHBjbUFmOlBDTUF1ZGlvRm9ybWF0fG51bGw9bnVsbDtcclxuICAgICAgICAgICAgY29uc3QgZm10ID0gdGhpcy5ici5yZWFkVWludDE2TEUoKTtcclxuICAgICAgICAgICAgaWYgKGZtdCA9PT0gV2F2RmlsZUZvcm1hdC5QQ00pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoYW5uZWxzID0gdGhpcy5ici5yZWFkVWludDE2TEUoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNhbXBsZVJhdGUgPSB0aGlzLmJyLnJlYWRVaW50MzJMRSgpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIHNraXAgYmFuZHdpZHRoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmJyLnNraXAoNCk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gZnJhbWUgc2l6ZVxyXG4gICAgICAgICAgICAgICAgY29uc3QgZnJhbWVTaXplID0gdGhpcy5ici5yZWFkVWludDE2TEUoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBzYW1wbGUgc2l6ZSBpbiBiaXRzIChQQ00gZm9ybWF0IG9ubHkpXHJcbiAgICAgICAgICAgICAgICBjb25zdCBzYW1wbGVTaXplSW5CaXRzID0gdGhpcy5ici5yZWFkVWludDE2TEUoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBwY21BZj1uZXcgUENNQXVkaW9Gb3JtYXQoc2FtcGxlUmF0ZSwgY2hhbm5lbHMsIGZyYW1lU2l6ZSAvIGNoYW5uZWxzLCBzYW1wbGVTaXplSW5CaXRzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcGNtQWY7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwcml2YXRlIHJlYWREYXRhKCk6QXJyYXk8RmxvYXQzMkFycmF5PiB8IG51bGx7XHJcbiAgICAgICAgICAgIGxldCBjaHNBcnI9bnVsbDtcclxuICAgICAgICAgICAgaWYodGhpcy5mb3JtYXQpIHtcclxuICAgICAgICAgICAgICBjaHNBcnIgPSBuZXcgQXJyYXk8RmxvYXQzMkFycmF5Pih0aGlzLmZvcm1hdC5jaGFubmVsQ291bnQpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHNhbXBsZUNvdW50ID0gdGhpcy50b3RhbExlbmd0aCAvIHRoaXMuZm9ybWF0LmNoYW5uZWxDb3VudCAvIHRoaXMuZm9ybWF0LnNhbXBsZVNpemU7XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IHRoaXMuZm9ybWF0LmNoYW5uZWxDb3VudDsgY2grKykge1xyXG4gICAgICAgICAgICAgICAgY2hzQXJyW2NoXSA9IG5ldyBGbG9hdDMyQXJyYXkoc2FtcGxlQ291bnQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAodGhpcy5mb3JtYXQuc2FtcGxlU2l6ZSA9PSAyKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudG90YWxMZW5ndGggLyAyOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IHRoaXMuZm9ybWF0LmNoYW5uZWxDb3VudDsgY2grKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHMxNkFtcGwgPSB0aGlzLmJyLnJlYWRJbnQxNkxFKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hzQXJyW2NoXVtpXSA9IHMxNkFtcGwgLyAzMjc2ODtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gY2hzQXJyO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiJdfQ==
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F2cmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL2ltcGwvd2F2cmVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUVwRCxNQUFNLE9BQU8sU0FBUztJQU9sQixZQUFZLElBQWdCO1FBSnBCLFdBQU0sR0FBdUIsSUFBSSxDQUFDO1FBQ2xDLGdCQUFXLEdBQVEsQ0FBQyxDQUFDO1FBQ3JCLG9CQUFlLEdBQWEsSUFBSSxDQUFDO1FBR3JDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU8sVUFBVTtRQUNkLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksRUFBRSxLQUFLLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQyxNQUFNLE1BQU0sR0FBQyw2QkFBNkIsR0FBRSxFQUFFLENBQUM7WUFDL0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsR0FBQyxFQUFFLEdBQUMsY0FBYyxHQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pILENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUV0QixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxJQUFJLEVBQUUsS0FBSyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0IsTUFBTSxNQUFNLEdBQUMsV0FBVyxHQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUMsUUFBUSxHQUFFLEVBQUUsQ0FBQztZQUM1RCxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFDLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNQLElBQUksTUFBTSxHQUFDLHVDQUF1QyxDQUFDO1lBQ25ELE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLEVBQUUsR0FBYSxJQUFJLENBQUM7UUFDeEIsSUFBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUUsSUFBSSxFQUFFLENBQUM7WUFDN0MsRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDaEYsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLEVBQUUsR0FBYSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdkMsSUFBRyxFQUFFLEtBQUcsSUFBSSxFQUFDLENBQUM7WUFDWixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGVBQWUsR0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xELEVBQUUsR0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDekIsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELG9CQUFvQjtJQUNwQixJQUFJO1FBQ0EsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUMsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxFQUFFLEdBQWtCLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDTCxJQUFJLE1BQU0sR0FBQyx1Q0FBdUMsQ0FBQztZQUNuRCxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEQsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdCLElBQUksRUFBRSxHQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDO1FBQy9CLElBQUksSUFBSSxHQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDO1FBQ25DLElBQUcsRUFBRSxJQUFJLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxHQUFDLENBQUMsSUFBSSxJQUFJLElBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3hELEVBQUUsR0FBRyxJQUFJLFdBQVcsQ0FBQztnQkFDakIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNO2dCQUN4QixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLFlBQVk7Z0JBQzNDLFVBQVUsRUFBRSxFQUFFO2FBQ2pCLENBQUMsQ0FBQztZQUNILEtBQUksSUFBSSxFQUFFLEdBQUMsQ0FBQyxFQUFDLEVBQUUsR0FBQyxJQUFJLEVBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztnQkFDeEIsRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDckMsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFTyxlQUFlLENBQUMsV0FBa0I7UUFDdEMsNkJBQTZCO1FBQy9CLDZDQUE2QztRQUMzQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDcEIsTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2hDLElBQUksV0FBVyxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUN6QixPQUFPLE1BQU0sQ0FBQztZQUNsQixDQUFDO1lBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDO1FBQzFCLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU8sYUFBYTtRQUNqQixJQUFJLEtBQUssR0FBcUIsSUFBSSxDQUFDO1FBQ25DLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkMsSUFBSSxHQUFHLEtBQUssYUFBYSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUUsYUFBYSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDekUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBRTFDLGlCQUFpQjtZQUNqQixJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVoQixhQUFhO1lBQ2IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUV6Qyx3Q0FBd0M7WUFDeEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBRWhELEtBQUssR0FBQyxJQUFJLGNBQWMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsR0FBRyxRQUFRLEVBQUUsZ0JBQWdCLEVBQUMsQ0FBQyxHQUFHLEtBQUcsYUFBYSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztRQUN4SSxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVPLFFBQVE7UUFDWixJQUFJLE1BQU0sR0FBQyxJQUFJLENBQUM7UUFDaEIsSUFBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZixNQUFNLEdBQUcsSUFBSSxLQUFLLENBQWUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMzRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1lBQ3pGLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO2dCQUNyRCxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUNELElBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUMsQ0FBQztnQkFDNUIsa0JBQWtCO2dCQUNsQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDOUMsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7d0JBQ3JELE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUN0QyxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO2lCQUFLLENBQUM7Z0JBQ0wsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDaEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7d0JBQzlDLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDOzRCQUNyRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDOzRCQUN0QyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQzt3QkFDbEMsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdhdkZpbGVGb3JtYXQgfSBmcm9tICcuL3dhdmZvcm1hdCdcclxuaW1wb3J0IHsgUENNQXVkaW9Gb3JtYXQgfSBmcm9tICcuLi9mb3JtYXQnXHJcbmltcG9ydCB7IEJpbmFyeUJ5dGVSZWFkZXIgfSBmcm9tICcuLi8uLi9pby9CaW5hcnlSZWFkZXInXHJcblxyXG4gICAgZXhwb3J0IGNsYXNzIFdhdlJlYWRlciB7XHJcblxyXG4gICAgICAgIHByaXZhdGUgYnI6QmluYXJ5Qnl0ZVJlYWRlcjtcclxuICAgICAgICBwcml2YXRlIGZvcm1hdDpQQ01BdWRpb0Zvcm1hdCB8IG51bGw9bnVsbDtcclxuICAgICAgICBwcml2YXRlIHRvdGFsTGVuZ3RoOm51bWJlcj0wO1xyXG4gICAgICAgIHByaXZhdGUgZGF0YUNodW5rTGVuZ3RoOm51bWJlcnxudWxsPW51bGw7XHJcblxyXG4gICAgICAgIGNvbnN0cnVjdG9yKGRhdGE6QXJyYXlCdWZmZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5iciA9IG5ldyBCaW5hcnlCeXRlUmVhZGVyKGRhdGEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkSGVhZGVyKCl7XHJcbiAgICAgICAgICAgIGNvbnN0IHJoID0gdGhpcy5ici5yZWFkQXNjaWkoNCk7XHJcbiAgICAgICAgICAgIGlmIChyaCAhPT0gV2F2RmlsZUZvcm1hdC5SSUZGX0tFWSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXJyTXNnPVwiRXhwZWN0ZWQgUklGRiBoZWFkZXIsIG5vdDogXCIrIHJoO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVyck1zZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgY2wgPSB0aGlzLmJyLnJlYWRVaW50MzJMRSgpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5ici5wb3MgKyBjbCAhPT0gdGhpcy5ici5sZW5ndGgoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiV3JvbmcgY2h1bmtzaXplIGluIFJJRkYgaGVhZGVyOiBcIitjbCtcIiAoZXhwZWN0ZWQ6IFwiKyh0aGlzLmJyLmxlbmd0aCgpIC0gdGhpcy5ici5wb3MpKyBcIiApXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxMZW5ndGggPSBjbDtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHJ0ID0gdGhpcy5ici5yZWFkQXNjaWkoNCk7XHJcbiAgICAgICAgICAgIGlmIChydCAhPT0gV2F2RmlsZUZvcm1hdC5XQVZfS0VZKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJNc2c9XCJFeHBlY3RlZCBcIitXYXZGaWxlRm9ybWF0LldBVl9LRVkrXCIgbm90OiBcIisgcnQ7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyTXNnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmVhZEZvcm1hdCgpOlBDTUF1ZGlvRm9ybWF0fG51bGx7XHJcbiAgICAgICAgICAgIHRoaXMuYnIucG9zPTA7XHJcbiAgICAgICAgICAgIHRoaXMucmVhZEhlYWRlcigpO1xyXG4gICAgICAgICAgY29uc3QgcyA9IHRoaXMubmF2aWdhdGVUb0NodW5rKCdmbXQgJyk7XHJcbiAgICAgICAgICBpZiAoIXMpIHtcclxuICAgICAgICAgICAgbGV0IGVyck1zZz1cIldBViBmaWxlIGRvZXMgbm90IGNvbnRhaW4gYSBmbXQgY2h1bmtcIjtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVyck1zZyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0ID0gdGhpcy5wYXJzZUZtdENodW5rKCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHByaXZhdGUgX2ZyYW1lTGVuZ3RoKCk6bnVtYmVyfG51bGx7XHJcbiAgICAgICAgICBsZXQgZmw6bnVtYmVyfG51bGw9bnVsbDtcclxuICAgICAgICAgIGlmKHRoaXMuZm9ybWF0ICYmIHRoaXMuZGF0YUNodW5rTGVuZ3RoIT1udWxsKSB7XHJcbiAgICAgICAgICAgIGZsID0gdGhpcy5kYXRhQ2h1bmtMZW5ndGggLyB0aGlzLmZvcm1hdC5jaGFubmVsQ291bnQgLyB0aGlzLmZvcm1hdC5zYW1wbGVTaXplO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGZsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZnJhbWVMZW5ndGgoKTpudW1iZXJ8bnVsbCB7XHJcbiAgICAgICAgICBsZXQgZmw6bnVtYmVyfG51bGw9dGhpcy5fZnJhbWVMZW5ndGgoKTtcclxuICAgICAgICAgIGlmKGZsPT09bnVsbCl7XHJcbiAgICAgICAgICAgIHRoaXMucmVhZEZvcm1hdCgpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFDaHVua0xlbmd0aD10aGlzLm5hdmlnYXRlVG9DaHVuaygnZGF0YScpO1xyXG4gICAgICAgICAgICBmbD10aGlzLl9mcmFtZUxlbmd0aCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGZsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gTm90IHRlc3RlZCB5ZXQhISFcclxuICAgICAgICByZWFkKCk6QXVkaW9CdWZmZXIgfCBudWxse1xyXG4gICAgICAgICAgICB0aGlzLmJyLnBvcz0wO1xyXG4gICAgICAgICAgICBsZXQgYWI6QXVkaW9CdWZmZXJ8bnVsbD1udWxsO1xyXG4gICAgICAgICAgICB0aGlzLnJlYWRIZWFkZXIoKTtcclxuICAgICAgICAgICAgbGV0IHMgPSB0aGlzLm5hdmlnYXRlVG9DaHVuaygnZm10ICcpO1xyXG4gICAgICAgICAgICBpZiAoIXMpIHtcclxuICAgICAgICAgICAgICAgIGxldCBlcnJNc2c9XCJXQVYgZmlsZSBkb2VzIG5vdCBjb250YWluIGEgZm10IGNodW5rXCI7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyTXNnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmZvcm1hdCA9IHRoaXMucGFyc2VGbXRDaHVuaygpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFDaHVua0xlbmd0aCA9IHRoaXMubmF2aWdhdGVUb0NodW5rKCdkYXRhJyk7XHJcbiAgICAgICAgICAgIGxldCBjaHNBcnIgPSB0aGlzLnJlYWREYXRhKCk7XHJcbiAgICAgICAgICAgIGxldCBzcj10aGlzLmZvcm1hdD8uc2FtcGxlUmF0ZTtcclxuICAgICAgICAgICAgbGV0IG5DaHM9dGhpcy5mb3JtYXQ/LmNoYW5uZWxDb3VudDtcclxuICAgICAgICAgICAgaWYoc3IgJiYgY2hzQXJyICYmIG5DaHMgJiYgbkNocz4wICYmIG5DaHM9PWNoc0Fycj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBhYiA9IG5ldyBBdWRpb0J1ZmZlcih7XHJcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoOiBjaHNBcnJbMF0ubGVuZ3RoLFxyXG4gICAgICAgICAgICAgICAgICAgIG51bWJlck9mQ2hhbm5lbHM6IHRoaXMuZm9ybWF0Py5jaGFubmVsQ291bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZTogc3JcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBjaD0wO2NoPG5DaHM7Y2grKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGFiLmNvcHlUb0NoYW5uZWwoY2hzQXJyW2NoXSwgY2gpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBhYjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHByaXZhdGUgbmF2aWdhdGVUb0NodW5rKGNodW5rU3RyaW5nOnN0cmluZyk6bnVtYmVyIHtcclxuICAgICAgICAgICAgLy8gcG9zaXRpb24gYWZ0ZXIgUklGRiBoZWFkZXJcclxuICAgICAgICAgIC8vIFRPRE8gYXNzdW1lcyBubyBvdGhlciBjaHVua3MgZXhjZXB0ICdkYXRhJ1xyXG4gICAgICAgICAgICB0aGlzLmJyLnBvcyA9IDEyO1xyXG4gICAgICAgICAgICBsZXQgY2hrU3RyID0gbnVsbDtcclxuICAgICAgICAgICAgbGV0IGNoa0xlbiA9IC0xO1xyXG4gICAgICAgICAgICB3aGlsZSAoIXRoaXMuYnIuZW9mKCkpIHtcclxuICAgICAgICAgICAgICAgIGNoa1N0ciA9IHRoaXMuYnIucmVhZEFzY2lpKDQpO1xyXG4gICAgICAgICAgICAgICAgY2hrTGVuID0gdGhpcy5ici5yZWFkVWludDMyTEUoKTtcclxuICAgICAgICAgICAgICAgIGlmIChjaHVua1N0cmluZyA9PT0gY2hrU3RyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoa0xlbjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuYnIucG9zICs9IGNoa0xlbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gY2hrTGVuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcHJpdmF0ZSBwYXJzZUZtdENodW5rKCk6UENNQXVkaW9Gb3JtYXQgfCBudWxsIHtcclxuICAgICAgICAgICAgbGV0IHBjbUFmOlBDTUF1ZGlvRm9ybWF0fG51bGw9bnVsbDtcclxuICAgICAgICAgICAgY29uc3QgZm10ID0gdGhpcy5ici5yZWFkVWludDE2TEUoKTtcclxuICAgICAgICAgICAgaWYgKGZtdCA9PT0gV2F2RmlsZUZvcm1hdC5QQ00gfHwgZm10PT1XYXZGaWxlRm9ybWF0LldBVkVfRk9STUFUX0lFRUVfRkxPQVQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNoYW5uZWxzID0gdGhpcy5ici5yZWFkVWludDE2TEUoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNhbXBsZVJhdGUgPSB0aGlzLmJyLnJlYWRVaW50MzJMRSgpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIHNraXAgYmFuZHdpZHRoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmJyLnNraXAoNCk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gZnJhbWUgc2l6ZVxyXG4gICAgICAgICAgICAgICAgY29uc3QgZnJhbWVTaXplID0gdGhpcy5ici5yZWFkVWludDE2TEUoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBzYW1wbGUgc2l6ZSBpbiBiaXRzIChQQ00gZm9ybWF0IG9ubHkpXHJcbiAgICAgICAgICAgICAgICBjb25zdCBzYW1wbGVTaXplSW5CaXRzID0gdGhpcy5ici5yZWFkVWludDE2TEUoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBwY21BZj1uZXcgUENNQXVkaW9Gb3JtYXQoc2FtcGxlUmF0ZSwgY2hhbm5lbHMsIGZyYW1lU2l6ZSAvIGNoYW5uZWxzLCBzYW1wbGVTaXplSW5CaXRzLChmbXQ9PT1XYXZGaWxlRm9ybWF0LldBVkVfRk9STUFUX0lFRUVfRkxPQVQpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcGNtQWY7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwcml2YXRlIHJlYWREYXRhKCk6QXJyYXk8RmxvYXQzMkFycmF5PiB8IG51bGx7XHJcbiAgICAgICAgICAgIGxldCBjaHNBcnI9bnVsbDtcclxuICAgICAgICAgICAgaWYodGhpcy5mb3JtYXQpIHtcclxuICAgICAgICAgICAgICBjaHNBcnIgPSBuZXcgQXJyYXk8RmxvYXQzMkFycmF5Pih0aGlzLmZvcm1hdC5jaGFubmVsQ291bnQpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHNhbXBsZUNvdW50ID0gdGhpcy50b3RhbExlbmd0aCAvIHRoaXMuZm9ybWF0LmNoYW5uZWxDb3VudCAvIHRoaXMuZm9ybWF0LnNhbXBsZVNpemU7XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IHRoaXMuZm9ybWF0LmNoYW5uZWxDb3VudDsgY2grKykge1xyXG4gICAgICAgICAgICAgICAgY2hzQXJyW2NoXSA9IG5ldyBGbG9hdDMyQXJyYXkoc2FtcGxlQ291bnQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZih0aGlzLmZvcm1hdC5lbmNvZGluZ0Zsb2F0KXtcclxuICAgICAgICAgICAgICAgIC8vIE5vdCB0ZXN0ZWQgeWV0IVxyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRvdGFsTGVuZ3RoIC8gNDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCB0aGlzLmZvcm1hdC5jaGFubmVsQ291bnQ7IGNoKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjaHNBcnJbY2hdW2ldPXRoaXMuYnIucmVhZEZsb2F0MzIoKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1lbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvcm1hdC5zYW1wbGVTaXplID09IDIpIHtcclxuICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRvdGFsTGVuZ3RoIC8gMjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IHRoaXMuZm9ybWF0LmNoYW5uZWxDb3VudDsgY2grKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgczE2QW1wbCA9IHRoaXMuYnIucmVhZEludDE2TEUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNoc0FycltjaF1baV0gPSBzMTZBbXBsIC8gMzI3Njg7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBjaHNBcnI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcblxyXG5cclxuIl19
@@ -1,10 +1,28 @@
1
1
  import { WavFileFormat } from './wavformat';
2
2
  import { BinaryByteWriter } from '../../io/BinaryWriter';
3
3
  import { WorkerHelper } from "../../utils/utils";
4
+ export var SampleSize;
5
+ (function (SampleSize) {
6
+ SampleSize[SampleSize["INT16"] = 16] = "INT16";
7
+ SampleSize[SampleSize["INT32"] = 32] = "INT32";
8
+ })(SampleSize || (SampleSize = {}));
4
9
  export class WavWriter {
5
- static { this.DEFAULT_SAMPLE_SIZE_BYTES = 2; }
6
- constructor() {
10
+ static { this.DEFAULT_SAMPLE_SIZE = SampleSize.INT16; }
11
+ constructor(encodingFloat, sampleSize) {
12
+ this.sampleSizeInBytes = WavWriter.DEFAULT_SAMPLE_SIZE.valueOf() / 8;
13
+ this.encodingFloat = false;
14
+ this.sampleSize = WavWriter.DEFAULT_SAMPLE_SIZE;
15
+ this.sampleSizeInBits = this.sampleSize.valueOf();
7
16
  this.workerURL = null;
17
+ if (encodingFloat !== undefined && encodingFloat !== null) {
18
+ this.encodingFloat = encodingFloat;
19
+ this.sampleSize = SampleSize.INT32;
20
+ }
21
+ else if (sampleSize) {
22
+ this.sampleSize = sampleSize;
23
+ }
24
+ this.sampleSizeInBits = this.sampleSize.valueOf();
25
+ this.sampleSizeInBytes = Math.round(this.sampleSizeInBits / 8);
8
26
  this.bw = new BinaryByteWriter();
9
27
  }
10
28
  /*
@@ -13,16 +31,28 @@ export class WavWriter {
13
31
  workerFunction() {
14
32
  self.onmessage = function (msg) {
15
33
  const valView = new DataView(msg.data.buf, msg.data.bufPos);
34
+ const sampleSizeInbytes = Math.round(msg.data.sampleSizeInBits / 8);
16
35
  let bufPos = 0;
17
- let hDynIntRange = 1 << (msg.data.sampleSizeInBits - 1);
36
+ const hDynIntRange = 1 << (msg.data.sampleSizeInBits - 1);
18
37
  for (let s = 0; s < msg.data.frameLength; s++) {
19
38
  // interleaved channel data
20
39
  for (let ch = 0; ch < msg.data.chs; ch++) {
21
- let srcPos = (ch * msg.data.frameLength) + s;
22
- let valFlt = msg.data.audioData[srcPos];
23
- let valInt = Math.round(valFlt * hDynIntRange);
24
- valView.setInt16(bufPos, valInt, true);
25
- bufPos += 2;
40
+ const srcPos = (ch * msg.data.frameLength) + s;
41
+ const valFlt = msg.data.audioData[srcPos];
42
+ if (msg.data.encodingFloat === true) {
43
+ valView.setFloat32(bufPos, valFlt, true);
44
+ bufPos += 4;
45
+ }
46
+ else {
47
+ const valInt = Math.round(valFlt * hDynIntRange);
48
+ if (msg.data.sampleSizeInBits === 32) {
49
+ valView.setInt32(bufPos, valInt, true);
50
+ }
51
+ else {
52
+ valView.setInt16(bufPos, valInt, true);
53
+ }
54
+ bufPos += sampleSizeInbytes;
55
+ }
26
56
  }
27
57
  }
28
58
  postMessage({ buf: msg.data.buf }, [msg.data.buf]);
@@ -30,27 +60,60 @@ export class WavWriter {
30
60
  };
31
61
  }
32
62
  writeFmtChunk(audioBuffer) {
33
- this.bw.writeUint16(WavFileFormat.PCM, true);
34
- let frameSize = WavWriter.DEFAULT_SAMPLE_SIZE_BYTES * audioBuffer.numberOfChannels; // fixed 16-bit for now
63
+ if (this.encodingFloat === true) {
64
+ this.bw.writeUint16(WavFileFormat.WAVE_FORMAT_IEEE_FLOAT, true);
65
+ }
66
+ else {
67
+ this.bw.writeUint16(WavFileFormat.PCM, true);
68
+ }
69
+ const frameSize = this.sampleSizeInBytes * audioBuffer.numberOfChannels;
35
70
  this.bw.writeUint16(audioBuffer.numberOfChannels, true);
36
71
  this.bw.writeUint32(audioBuffer.sampleRate, true);
37
72
  // dwAvgBytesPerSec
38
73
  this.bw.writeUint32(frameSize * audioBuffer.sampleRate, true);
39
74
  this.bw.writeUint16(frameSize, true);
40
75
  // sample size in bits (PCM format only)
41
- this.bw.writeUint16(WavWriter.DEFAULT_SAMPLE_SIZE_BYTES * 8, true);
76
+ this.bw.writeUint16(this.sampleSizeInBits, true);
77
+ if (this.encodingFloat === true) {
78
+ this.bw.writeUint16(0, true);
79
+ }
80
+ }
81
+ writeFactChunk(audioBuffer) {
82
+ const ch0 = audioBuffer.getChannelData(0);
83
+ let sampleLen = 0;
84
+ if (ch0) {
85
+ sampleLen = ch0.length;
86
+ }
87
+ this.bw.writeUint32(sampleLen, true);
42
88
  }
43
89
  writeDataChunk(audioBuffer) {
44
- let chData0 = audioBuffer.getChannelData(0);
45
- let dataLen = chData0.length;
46
- let hDynIntRange = 1 << ((WavWriter.DEFAULT_SAMPLE_SIZE_BYTES * 8) - 1);
47
- for (let s = 0; s < dataLen; s++) {
48
- // interleaved channel data
49
- for (let ch = 0; ch < audioBuffer.numberOfChannels; ch++) {
50
- let chData = audioBuffer.getChannelData(ch);
51
- let valFlt = chData[s];
52
- let valInt = Math.round(valFlt * hDynIntRange);
53
- this.bw.writeInt16(valInt, true);
90
+ const chData0 = audioBuffer.getChannelData(0);
91
+ const dataLen = chData0.length;
92
+ if (this.encodingFloat === true) {
93
+ for (let s = 0; s < dataLen; s++) {
94
+ // interleaved channel data
95
+ for (let ch = 0; ch < audioBuffer.numberOfChannels; ch++) {
96
+ const chData = audioBuffer.getChannelData(ch);
97
+ const valFlt = chData[s];
98
+ this.bw.writeFloat(valFlt);
99
+ }
100
+ }
101
+ }
102
+ else {
103
+ const hDynIntRange = 1 << ((this.sampleSizeInBits) - 1);
104
+ for (let s = 0; s < dataLen; s++) {
105
+ // interleaved channel data
106
+ for (let ch = 0; ch < audioBuffer.numberOfChannels; ch++) {
107
+ const chData = audioBuffer.getChannelData(ch);
108
+ const valFlt = chData[s];
109
+ const valInt = Math.round(valFlt * hDynIntRange);
110
+ if (this.sampleSize === SampleSize.INT16) {
111
+ this.bw.writeInt16(valInt, true);
112
+ }
113
+ else if (this.sampleSize === SampleSize.INT32) {
114
+ this.bw.writeInt32(valInt, true);
115
+ }
116
+ }
54
117
  }
55
118
  }
56
119
  }
@@ -59,14 +122,14 @@ export class WavWriter {
59
122
  this.bw.writeUint32(chkLen, true);
60
123
  }
61
124
  writeAsync(audioBuffer, callback) {
62
- let dataChkByteLen = this.writeHeader(audioBuffer);
125
+ const dataChkByteLen = this.writeHeader(audioBuffer);
63
126
  if (!this.workerURL) {
64
127
  this.workerURL = WorkerHelper.buildWorkerBlobURL(this.workerFunction);
65
128
  }
66
- let wo = new Worker(this.workerURL);
67
- let chs = audioBuffer.numberOfChannels;
68
- let frameLength = audioBuffer.getChannelData(0).length;
69
- let ad = new Float32Array(chs * frameLength);
129
+ const wo = new Worker(this.workerURL);
130
+ const chs = audioBuffer.numberOfChannels;
131
+ const frameLength = audioBuffer.getChannelData(0).length;
132
+ const ad = new Float32Array(chs * frameLength);
70
133
  for (let ch = 0; ch < chs; ch++) {
71
134
  ad.set(audioBuffer.getChannelData(ch), ch * frameLength);
72
135
  }
@@ -76,8 +139,7 @@ export class WavWriter {
76
139
  callback(me.data.buf);
77
140
  wo.terminate();
78
141
  };
79
- //TODO Fixed sample size of 16 bits
80
- wo.postMessage({ sampleSizeInBits: 16, chs: chs, frameLength: frameLength, audioData: ad, buf: this.bw.buf, bufPos: this.bw.pos }, [ad.buffer, this.bw.buf]);
142
+ wo.postMessage({ encodingFloat: this.encodingFloat, sampleSizeInBits: this.sampleSizeInBits, chs: chs, frameLength: frameLength, audioData: ad, buf: this.bw.buf, bufPos: this.bw.pos }, [ad.buffer, this.bw.buf]);
81
143
  }
82
144
  write(audioBuffer) {
83
145
  this.writeHeader(audioBuffer);
@@ -91,15 +153,31 @@ export class WavWriter {
91
153
  const abChs = audioBuffer.numberOfChannels;
92
154
  if (abChs > 0) {
93
155
  const abCh0 = audioBuffer.getChannelData(0);
94
- dataChkByteLen = abCh0.length * WavWriter.DEFAULT_SAMPLE_SIZE_BYTES * abChs;
156
+ dataChkByteLen = abCh0.length * this.sampleSizeInBytes * abChs;
95
157
  }
96
- const wavChunkByteLen = (4 + 4) * 3 + 16 + dataChkByteLen;
158
+ let headerCnts = 3; //Wave,fmt and data
159
+ let fmtChunkSize = 16;
160
+ let factChunkSize = 4;
161
+ if (this.encodingFloat === true) {
162
+ fmtChunkSize = 18;
163
+ headerCnts++; // fact
164
+ } // Float encoding requires fmt extension (with zero length)
165
+ let wavChunkByteLen = (4 + 4) * headerCnts;
166
+ wavChunkByteLen += fmtChunkSize;
167
+ wavChunkByteLen += factChunkSize;
168
+ wavChunkByteLen += dataChkByteLen;
169
+ console.debug("Write WAV header: Wav chunk len: " + wavChunkByteLen);
97
170
  this.bw.writeUint32(wavChunkByteLen, true); // must be set to file length-8 later
98
171
  this.bw.writeAscii(WavFileFormat.WAV_KEY);
99
- this.writeChunkHeader('fmt ', 16);
172
+ this.writeChunkHeader('fmt ', fmtChunkSize);
100
173
  this.writeFmtChunk(audioBuffer);
174
+ if (this.encodingFloat === true) {
175
+ console.debug("Write WAV header: Write 'fact' chunk.");
176
+ this.writeChunkHeader('fact', 4);
177
+ this.writeFactChunk(audioBuffer);
178
+ }
101
179
  this.writeChunkHeader('data', dataChkByteLen);
102
180
  return dataChkByteLen;
103
181
  }
104
182
  }
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F2d3JpdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL2ltcGwvd2F2d3JpdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDeEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBSTVDLE1BQU0sT0FBTyxTQUFTO2FBRUosOEJBQXlCLEdBQVUsQ0FBQyxBQUFYLENBQVk7SUFHckQ7UUFEUSxjQUFTLEdBQWMsSUFBSSxDQUFDO1FBRWxDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDWixJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsR0FBZ0I7WUFFekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUUzRCxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDZixJQUFJLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3hELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUM5QywyQkFBMkI7Z0JBRTNCLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVB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QyxJQUFJLENBQUMsQ0FBQyxDQUFDLHFDQUFxQztRQUNoRixJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUMsY0FBYyxDQUFDLENBQUM7UUFDN0MsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdhdkZpbGVGb3JtYXQgfSBmcm9tICcuL3dhdmZvcm1hdCdcclxuaW1wb3J0IHsgQmluYXJ5Qnl0ZVdyaXRlciB9IGZyb20gJy4uLy4uL2lvL0JpbmFyeVdyaXRlcidcclxuaW1wb3J0IHtXb3JrZXJIZWxwZXJ9IGZyb20gXCIuLi8uLi91dGlscy91dGlsc1wiO1xyXG5kZWNsYXJlIGZ1bmN0aW9uIHBvc3RNZXNzYWdlIChtZXNzYWdlOmFueSwgdHJhbnNmZXI6QXJyYXk8YW55Pik6dm9pZDtcclxuXHJcblxyXG4gICBleHBvcnQgY2xhc3MgV2F2V3JpdGVyIHtcclxuXHJcbiAgICAgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfU0FNUExFX1NJWkVfQllURVM6bnVtYmVyID0gMjtcclxuICAgICBwcml2YXRlIGJ3OkJpbmFyeUJ5dGVXcml0ZXI7XHJcbiAgICAgcHJpdmF0ZSB3b3JrZXJVUkw6IHN0cmluZ3xudWxsPW51bGw7XHJcbiAgICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICB0aGlzLmJ3ID0gbmV3IEJpbmFyeUJ5dGVXcml0ZXIoKTtcclxuICAgICB9XHJcblxyXG4gICAgIC8qXHJcbiAgICAgICogIE1ldGhvZCB1c2VkIGFzIHdvcmtlciBjb2RlLlxyXG4gICAgICAqL1xyXG4gICAgIHdvcmtlckZ1bmN0aW9uKCkge1xyXG4gICAgICAgc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAobXNnOk1lc3NhZ2VFdmVudCkge1xyXG5cclxuICAgICAgICAgY29uc3QgdmFsVmlldyA9IG5ldyBEYXRhVmlldyhtc2cuZGF0YS5idWYsbXNnLmRhdGEuYnVmUG9zKTtcclxuXHJcbiAgICAgICAgIGxldCBidWZQb3MgPSAwO1xyXG4gICAgICAgICBsZXQgaER5bkludFJhbmdlID0gMSA8PCAobXNnLmRhdGEuc2FtcGxlU2l6ZUluQml0cyAtIDEpO1xyXG4gICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8IG1zZy5kYXRhLmZyYW1lTGVuZ3RoOyBzKyspIHtcclxuICAgICAgICAgICAvLyBpbnRlcmxlYXZlZCBjaGFubmVsIGRhdGFcclxuXHJcbiAgICAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IG1zZy5kYXRhLmNoczsgY2grKykge1xyXG4gICAgICAgICAgICAgbGV0IHNyY1Bvcz0oY2gqbXNnLmRhdGEuZnJhbWVMZW5ndGgpK3M7XHJcbiAgICAgICAgICAgICBsZXQgdmFsRmx0ID0gbXNnLmRhdGEuYXVkaW9EYXRhW3NyY1Bvc107XHJcbiAgICAgICAgICAgICBsZXQgdmFsSW50ID0gTWF0aC5yb3VuZCh2YWxGbHQgKiBoRHluSW50UmFuZ2UpO1xyXG4gICAgICAgICAgICAgdmFsVmlldy5zZXRJbnQxNihidWZQb3MsIHZhbEludCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICBidWZQb3MrPTI7XHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICB9XHJcbiAgICAgICAgIHBvc3RNZXNzYWdlKHtidWY6bXNnLmRhdGEuYnVmfSwgW21zZy5kYXRhLmJ1Zl0pO1xyXG4gICAgICAgICAvL3NlbGYuY2xvc2UoKVxyXG4gICAgICAgfVxyXG4gICAgIH1cclxuXHJcblxyXG4gICAgIHdyaXRlRm10Q2h1bmsoYXVkaW9CdWZmZXI6QXVkaW9CdWZmZXIpe1xyXG5cclxuICAgICAgIHRoaXMuYncud3JpdGVVaW50MTYoV2F2RmlsZUZvcm1hdC5QQ00sdHJ1ZSk7XHJcbiAgICAgICBsZXQgZnJhbWVTaXplPVdhdldyaXRlci5ERUZBVUxUX1NBTVBMRV9TSVpFX0JZVEVTKmF1ZGlvQnVmZmVyLm51bWJlck9mQ2hhbm5lbHM7IC8vIGZpeGVkIDE2LWJpdCBmb3Igbm93XHJcbiAgICAgICB0aGlzLmJ3LndyaXRlVWludDE2KGF1ZGlvQnVmZmVyLm51bWJlck9mQ2hhbm5lbHMsdHJ1ZSk7XHJcbiAgICAgICB0aGlzLmJ3LndyaXRlVWludDMyKGF1ZGlvQnVmZmVyLnNhbXBsZVJhdGUsdHJ1ZSk7XHJcbiAgICAgICAgIC8vIGR3QXZnQnl0ZXNQZXJTZWNcclxuICAgICAgIHRoaXMuYncud3JpdGVVaW50MzIoZnJhbWVTaXplKmF1ZGlvQnVmZmVyLnNhbXBsZVJhdGUsdHJ1ZSk7XHJcbiAgICAgICB0aGlzLmJ3LndyaXRlVWludDE2KGZyYW1lU2l6ZSx0cnVlKTtcclxuICAgICAgIC8vIHNhbXBsZSBzaXplIGluIGJpdHMgKFBDTSBmb3JtYXQgb25seSlcclxuICAgICAgIHRoaXMuYncud3JpdGVVaW50MTYoV2F2V3JpdGVyLkRFRkFVTFRfU0FNUExFX1NJWkVfQllURVMqOCx0cnVlKTtcclxuICAgICB9XHJcblxyXG4gICAgIHdyaXRlRGF0YUNodW5rKGF1ZGlvQnVmZmVyOkF1ZGlvQnVmZmVyKXtcclxuXHJcbiAgICAgICBsZXQgY2hEYXRhMD1hdWRpb0J1ZmZlci5nZXRDaGFubmVsRGF0YSgwKTtcclxuICAgICAgIGxldCBkYXRhTGVuPWNoRGF0YTAubGVuZ3RoO1xyXG4gICAgICAgIGxldCBoRHluSW50UmFuZ2U9MSA8PCAoKFdhdldyaXRlci5ERUZBVUxUX1NBTVBMRV9TSVpFX0JZVEVTKjgpLTEpO1xyXG4gICAgICAgZm9yKGxldCBzPTA7czxkYXRhTGVuO3MrKykge1xyXG4gICAgICAgICAvLyBpbnRlcmxlYXZlZCBjaGFubmVsIGRhdGFcclxuICAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IGF1ZGlvQnVmZmVyLm51bWJlck9mQ2hhbm5lbHM7IGNoKyspIHtcclxuICAgICAgICAgICBsZXQgY2hEYXRhID0gYXVkaW9CdWZmZXIuZ2V0Q2hhbm5lbERhdGEoY2gpO1xyXG4gICAgICAgICAgIGxldCB2YWxGbHQ9Y2hEYXRhW3NdO1xyXG4gICAgICAgICAgIGxldCB2YWxJbnQ9TWF0aC5yb3VuZCh2YWxGbHQqaER5bkludFJhbmdlKTtcclxuICAgICAgICAgICB0aGlzLmJ3LndyaXRlSW50MTYodmFsSW50LHRydWUpO1xyXG4gICAgICAgICB9XHJcbiAgICAgICB9XHJcblxyXG4gICAgIH1cclxuXHJcbiAgICAgd3JpdGVDaHVua0hlYWRlcihuYW1lOnN0cmluZyxjaGtMZW46bnVtYmVyKXtcclxuICAgICAgIHRoaXMuYncud3JpdGVBc2NpaShuYW1lKTtcclxuICAgICAgIHRoaXMuYncud3JpdGVVaW50MzIoY2hrTGVuLHRydWUpO1xyXG4gICAgIH1cclxuXHJcbiAgICAgd3JpdGVBc3luYyhhdWRpb0J1ZmZlcjpBdWRpb0J1ZmZlcixjYWxsYmFjazogKHdhdkZpbGVEYXRhOlVpbnQ4QXJyYXkpPT4gYW55KXtcclxuXHJcbiAgICAgICBsZXQgZGF0YUNoa0J5dGVMZW49dGhpcy53cml0ZUhlYWRlcihhdWRpb0J1ZmZlcik7XHJcbiAgICAgICBpZiAoIXRoaXMud29ya2VyVVJMKSB7XHJcbiAgICAgICAgIHRoaXMud29ya2VyVVJMID0gV29ya2VySGVscGVyLmJ1aWxkV29ya2VyQmxvYlVSTCh0aGlzLndvcmtlckZ1bmN0aW9uKVxyXG4gICAgICAgIH1cclxuICAgICAgIGxldCB3byA9IG5ldyBXb3JrZXIodGhpcy53b3JrZXJVUkwpO1xyXG5cclxuICAgICAgIGxldCBjaHMgPSBhdWRpb0J1ZmZlci5udW1iZXJPZkNoYW5uZWxzO1xyXG5cclxuICAgICAgIGxldCBmcmFtZUxlbmd0aCA9IGF1ZGlvQnVmZmVyLmdldENoYW5uZWxEYXRhKDApLmxlbmd0aDtcclxuICAgICAgIGxldCBhZCA9IG5ldyBGbG9hdDMyQXJyYXkoY2hzICogZnJhbWVMZW5ndGgpO1xyXG4gICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IGNoczsgY2grKykge1xyXG4gICAgICAgICBhZC5zZXQoYXVkaW9CdWZmZXIuZ2V0Q2hhbm5lbERhdGEoY2gpLCBjaCAqIGZyYW1lTGVuZ3RoKTtcclxuICAgICAgIH1cclxuICAgICAgICAgLy8gZW5zdXJlQ2FwYWNpdHkgYmxvY2tzICEhIVxyXG4gICAgICAgdGhpcy5idy5lbnN1cmVDYXBhY2l0eShkYXRhQ2hrQnl0ZUxlbik7XHJcbiAgICAgICB3by5vbm1lc3NhZ2UgPSAobWUpID0+IHtcclxuICAgICAgICAgY2FsbGJhY2sobWUuZGF0YS5idWYpO1xyXG4gICAgICAgICB3by50ZXJtaW5hdGUoKTtcclxuICAgICAgIH1cclxuICAgICAgIC8vVE9ETyBGaXhlZCBzYW1wbGUgc2l6ZSBvZiAxNiBiaXRzXHJcbiAgICAgICB3by5wb3N0TWVzc2FnZSh7c2FtcGxlU2l6ZUluQml0czoxNiwgY2hzOiBjaHMsIGZyYW1lTGVuZ3RoOiBmcmFtZUxlbmd0aCwgYXVkaW9EYXRhOiBhZCxidWY6dGhpcy5idy5idWYsYnVmUG9zOnRoaXMuYncucG9zfSwgW2FkLmJ1ZmZlcix0aGlzLmJ3LmJ1Zl0pO1xyXG5cclxuICAgICB9XHJcblxyXG4gICAgIHdyaXRlKGF1ZGlvQnVmZmVyOkF1ZGlvQnVmZmVyKTpVaW50OEFycmF5e1xyXG4gICAgICAgdGhpcy53cml0ZUhlYWRlcihhdWRpb0J1ZmZlcik7XHJcbiAgICAgICB0aGlzLndyaXRlRGF0YUNodW5rKGF1ZGlvQnVmZmVyKTtcclxuICAgICAgIHJldHVybiB0aGlzLmJ3LmZpbmlzaCgpO1xyXG4gICAgIH1cclxuXHJcblxyXG4gICAgICB3cml0ZUhlYWRlcihhdWRpb0J1ZmZlcjpBdWRpb0J1ZmZlcik6bnVtYmVye1xyXG4gICAgICAgIHRoaXMuYncud3JpdGVBc2NpaShXYXZGaWxlRm9ybWF0LlJJRkZfS0VZKTtcclxuICAgICAgICBsZXQgZGF0YUNoa0J5dGVMZW49MDtcclxuICAgICAgICAvL2NvbnN0IGRhdGFDaGtCeXRlTGVuPWF1ZGlvQnVmZmVyLmdldENoYW5uZWxEYXRhKDApLmxlbmd0aCpXYXZXcml0ZXIuREVGQVVMVF9TQU1QTEVfU0laRV9CWVRFUyphdWRpb0J1ZmZlci5udW1iZXJPZkNoYW5uZWxzO1xyXG4gICAgICAgIGNvbnN0IGFiQ2hzPWF1ZGlvQnVmZmVyLm51bWJlck9mQ2hhbm5lbHM7XHJcbiAgICAgICAgaWYoYWJDaHM+MCl7XHJcbiAgICAgICAgICBjb25zdCBhYkNoMD1hdWRpb0J1ZmZlci5nZXRDaGFubmVsRGF0YSgwKTtcclxuICAgICAgICAgIGRhdGFDaGtCeXRlTGVuPWFiQ2gwLmxlbmd0aCpXYXZXcml0ZXIuREVGQVVMVF9TQU1QTEVfU0laRV9CWVRFUyphYkNocztcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgd2F2Q2h1bmtCeXRlTGVuPSg0KzQpKjMrMTYrZGF0YUNoa0J5dGVMZW47XHJcbiAgICAgICAgdGhpcy5idy53cml0ZVVpbnQzMih3YXZDaHVua0J5dGVMZW4sdHJ1ZSk7IC8vIG11c3QgYmUgc2V0IHRvIGZpbGUgbGVuZ3RoLTggbGF0ZXJcclxuICAgICAgICB0aGlzLmJ3LndyaXRlQXNjaWkoV2F2RmlsZUZvcm1hdC5XQVZfS0VZKTtcclxuICAgICAgICB0aGlzLndyaXRlQ2h1bmtIZWFkZXIoJ2ZtdCAnLDE2KTtcclxuICAgICAgICB0aGlzLndyaXRlRm10Q2h1bmsoYXVkaW9CdWZmZXIpO1xyXG4gICAgICAgIHRoaXMud3JpdGVDaHVua0hlYWRlcignZGF0YScsZGF0YUNoa0J5dGVMZW4pO1xyXG4gICAgICAgIHJldHVybiBkYXRhQ2hrQnl0ZUxlbjtcclxuICAgICAgfVxyXG5cclxuICAgfVxyXG5cclxuXHJcblxyXG4iXX0=
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F2d3JpdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2F1ZGlvL2ltcGwvd2F2d3JpdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDeEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBSS9DLE1BQU0sQ0FBTixJQUFZLFVBQThCO0FBQTFDLFdBQVksVUFBVTtJQUFFLDhDQUFRLENBQUE7SUFBQyw4Q0FBUSxDQUFBO0FBQUEsQ0FBQyxFQUE5QixVQUFVLEtBQVYsVUFBVSxRQUFvQjtBQUN2QyxNQUFNLE9BQU8sU0FBUzthQUVKLHdCQUFtQixHQUFjLFVBQVUsQ0FBQyxLQUFLLEFBQTlCLENBQStCO0lBUWxFLFlBQVksYUFBc0IsRUFBQyxVQUFzQjtRQVB4QyxzQkFBaUIsR0FBUSxTQUFTLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLEdBQUMsQ0FBQyxDQUFDO1FBQzVFLGtCQUFhLEdBQVMsS0FBSyxDQUFDO1FBQzVCLGVBQVUsR0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUM7UUFDekMscUJBQWdCLEdBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUUzQyxjQUFTLEdBQWMsSUFBSSxDQUFDO1FBR2xDLElBQUcsYUFBYSxLQUFHLFNBQVMsSUFBSSxhQUFhLEtBQUcsSUFBSSxFQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLGFBQWEsR0FBQyxhQUFhLENBQUM7WUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQ25DLENBQUM7YUFBSyxJQUFHLFVBQVUsRUFBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxVQUFV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QztRQUUxQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEMsSUFBRyxJQUFJLENBQUMsYUFBYSxLQUFHLElBQUksRUFBQyxDQUFDO1lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUMsY0FBYyxDQUFDLENBQUM7UUFDN0MsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdhdkZpbGVGb3JtYXQgfSBmcm9tICcuL3dhdmZvcm1hdCdcclxuaW1wb3J0IHsgQmluYXJ5Qnl0ZVdyaXRlciB9IGZyb20gJy4uLy4uL2lvL0JpbmFyeVdyaXRlcidcclxuaW1wb3J0IHtXb3JrZXJIZWxwZXJ9IGZyb20gXCIuLi8uLi91dGlscy91dGlsc1wiO1xyXG5kZWNsYXJlIGZ1bmN0aW9uIHBvc3RNZXNzYWdlIChtZXNzYWdlOmFueSwgdHJhbnNmZXI6QXJyYXk8YW55Pik6dm9pZDtcclxuXHJcblxyXG5leHBvcnQgZW51bSBTYW1wbGVTaXplIHtJTlQxNj0xNixJTlQzMj0zMn1cclxuICAgZXhwb3J0IGNsYXNzIFdhdldyaXRlciB7XHJcblxyXG4gICAgIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1NBTVBMRV9TSVpFOlNhbXBsZVNpemUgPSBTYW1wbGVTaXplLklOVDE2O1xyXG4gICAgIHByaXZhdGUgcmVhZG9ubHkgc2FtcGxlU2l6ZUluQnl0ZXM6bnVtYmVyPVdhdldyaXRlci5ERUZBVUxUX1NBTVBMRV9TSVpFLnZhbHVlT2YoKS84O1xyXG4gICAgIHByaXZhdGUgZW5jb2RpbmdGbG9hdDpib29sZWFuPWZhbHNlO1xyXG4gICAgIHByaXZhdGUgc2FtcGxlU2l6ZT1XYXZXcml0ZXIuREVGQVVMVF9TQU1QTEVfU0laRTtcclxuICAgICBwcml2YXRlIHNhbXBsZVNpemVJbkJpdHM9dGhpcy5zYW1wbGVTaXplLnZhbHVlT2YoKTtcclxuICAgICBwcml2YXRlIGJ3OkJpbmFyeUJ5dGVXcml0ZXI7XHJcbiAgICAgcHJpdmF0ZSB3b3JrZXJVUkw6IHN0cmluZ3xudWxsPW51bGw7XHJcblxyXG4gICAgIGNvbnN0cnVjdG9yKGVuY29kaW5nRmxvYXQ/OmJvb2xlYW4sc2FtcGxlU2l6ZT86U2FtcGxlU2l6ZSkge1xyXG4gICAgICAgaWYoZW5jb2RpbmdGbG9hdCE9PXVuZGVmaW5lZCAmJiBlbmNvZGluZ0Zsb2F0IT09bnVsbCl7XHJcbiAgICAgICAgIHRoaXMuZW5jb2RpbmdGbG9hdD1lbmNvZGluZ0Zsb2F0O1xyXG4gICAgICAgICB0aGlzLnNhbXBsZVNpemU9U2FtcGxlU2l6ZS5JTlQzMjtcclxuICAgICAgIH1lbHNlIGlmKHNhbXBsZVNpemUpe1xyXG4gICAgICAgICB0aGlzLnNhbXBsZVNpemU9c2FtcGxlU2l6ZTtcclxuICAgICAgIH1cclxuICAgICAgIHRoaXMuc2FtcGxlU2l6ZUluQml0cz10aGlzLnNhbXBsZVNpemUudmFsdWVPZigpO1xyXG4gICAgICAgdGhpcy5zYW1wbGVTaXplSW5CeXRlcz1NYXRoLnJvdW5kKHRoaXMuc2FtcGxlU2l6ZUluQml0cy84KTtcclxuXHJcbiAgICAgICB0aGlzLmJ3ID0gbmV3IEJpbmFyeUJ5dGVXcml0ZXIoKTtcclxuICAgICB9XHJcblxyXG4gICAgIC8qXHJcbiAgICAgICogIE1ldGhvZCB1c2VkIGFzIHdvcmtlciBjb2RlLlxyXG4gICAgICAqL1xyXG4gICAgIHdvcmtlckZ1bmN0aW9uKCkge1xyXG4gICAgICAgc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAobXNnOk1lc3NhZ2VFdmVudCkge1xyXG5cclxuICAgICAgICAgY29uc3QgdmFsVmlldyA9IG5ldyBEYXRhVmlldyhtc2cuZGF0YS5idWYsbXNnLmRhdGEuYnVmUG9zKTtcclxuICAgICAgICAgY29uc3Qgc2FtcGxlU2l6ZUluYnl0ZXM9TWF0aC5yb3VuZChtc2cuZGF0YS5zYW1wbGVTaXplSW5CaXRzLzgpO1xyXG4gICAgICAgICBsZXQgYnVmUG9zID0gMDtcclxuICAgICAgICAgY29uc3QgaER5bkludFJhbmdlID0gMSA8PCAobXNnLmRhdGEuc2FtcGxlU2l6ZUluQml0cyAtIDEpO1xyXG4gICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8IG1zZy5kYXRhLmZyYW1lTGVuZ3RoOyBzKyspIHtcclxuICAgICAgICAgICAvLyBpbnRlcmxlYXZlZCBjaGFubmVsIGRhdGFcclxuXHJcbiAgICAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IG1zZy5kYXRhLmNoczsgY2grKykge1xyXG4gICAgICAgICAgICAgY29uc3Qgc3JjUG9zPShjaCptc2cuZGF0YS5mcmFtZUxlbmd0aCkrcztcclxuICAgICAgICAgICAgIGNvbnN0IHZhbEZsdCA9IG1zZy5kYXRhLmF1ZGlvRGF0YVtzcmNQb3NdO1xyXG4gICAgICAgICAgICAgaWYobXNnLmRhdGEuZW5jb2RpbmdGbG9hdD09PXRydWUpe1xyXG4gICAgICAgICAgICAgICB2YWxWaWV3LnNldEZsb2F0MzIoYnVmUG9zLHZhbEZsdCx0cnVlKTtcclxuICAgICAgICAgICAgICAgYnVmUG9zKz00O1xyXG4gICAgICAgICAgICAgfWVsc2Uge1xyXG4gICAgICAgICAgICAgICBjb25zdCB2YWxJbnQgPSBNYXRoLnJvdW5kKHZhbEZsdCAqIGhEeW5JbnRSYW5nZSk7XHJcbiAgICAgICAgICAgICAgIGlmIChtc2cuZGF0YS5zYW1wbGVTaXplSW5CaXRzID09PSAzMikge1xyXG4gICAgICAgICAgICAgICAgIHZhbFZpZXcuc2V0SW50MzIoYnVmUG9zLCB2YWxJbnQsIHRydWUpO1xyXG4gICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgIHZhbFZpZXcuc2V0SW50MTYoYnVmUG9zLCB2YWxJbnQsIHRydWUpO1xyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIGJ1ZlBvcys9c2FtcGxlU2l6ZUluYnl0ZXM7XHJcbiAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgIH1cclxuICAgICAgICAgfVxyXG4gICAgICAgICBwb3N0TWVzc2FnZSh7YnVmOm1zZy5kYXRhLmJ1Zn0sIFttc2cuZGF0YS5idWZdKTtcclxuICAgICAgICAgLy9zZWxmLmNsb3NlKClcclxuICAgICAgIH1cclxuICAgICB9XHJcblxyXG5cclxuICAgICB3cml0ZUZtdENodW5rKGF1ZGlvQnVmZmVyOkF1ZGlvQnVmZmVyKXtcclxuXHJcbiAgICAgICBpZih0aGlzLmVuY29kaW5nRmxvYXQ9PT10cnVlKXtcclxuICAgICAgICAgdGhpcy5idy53cml0ZVVpbnQxNihXYXZGaWxlRm9ybWF0LldBVkVfRk9STUFUX0lFRUVfRkxPQVQsIHRydWUpO1xyXG4gICAgICAgfWVsc2Uge1xyXG4gICAgICAgICB0aGlzLmJ3LndyaXRlVWludDE2KFdhdkZpbGVGb3JtYXQuUENNLCB0cnVlKTtcclxuICAgICAgIH1cclxuICAgICAgIGNvbnN0IGZyYW1lU2l6ZT10aGlzLnNhbXBsZVNpemVJbkJ5dGVzKmF1ZGlvQnVmZmVyLm51bWJlck9mQ2hhbm5lbHM7XHJcbiAgICAgICB0aGlzLmJ3LndyaXRlVWludDE2KGF1ZGlvQnVmZmVyLm51bWJlck9mQ2hhbm5lbHMsdHJ1ZSk7XHJcbiAgICAgICB0aGlzLmJ3LndyaXRlVWludDMyKGF1ZGlvQnVmZmVyLnNhbXBsZVJhdGUsdHJ1ZSk7XHJcbiAgICAgICAgIC8vIGR3QXZnQnl0ZXNQZXJTZWNcclxuICAgICAgIHRoaXMuYncud3JpdGVVaW50MzIoZnJhbWVTaXplKmF1ZGlvQnVmZmVyLnNhbXBsZVJhdGUsdHJ1ZSk7XHJcbiAgICAgICB0aGlzLmJ3LndyaXRlVWludDE2KGZyYW1lU2l6ZSx0cnVlKTtcclxuICAgICAgIC8vIHNhbXBsZSBzaXplIGluIGJpdHMgKFBDTSBmb3JtYXQgb25seSlcclxuICAgICAgIHRoaXMuYncud3JpdGVVaW50MTYodGhpcy5zYW1wbGVTaXplSW5CaXRzLHRydWUpO1xyXG4gICAgICAgaWYodGhpcy5lbmNvZGluZ0Zsb2F0PT09dHJ1ZSl7XHJcbiAgICAgICAgIHRoaXMuYncud3JpdGVVaW50MTYoMCx0cnVlKTtcclxuICAgICAgIH1cclxuICAgICB9XHJcblxyXG4gICAgIHdyaXRlRmFjdENodW5rKGF1ZGlvQnVmZmVyOkF1ZGlvQnVmZmVyKXtcclxuICAgICAgIGNvbnN0IGNoMD1hdWRpb0J1ZmZlci5nZXRDaGFubmVsRGF0YSgwKTtcclxuICAgICAgIGxldCBzYW1wbGVMZW49MDtcclxuICAgICAgIGlmKGNoMCl7XHJcbiAgICAgICAgIHNhbXBsZUxlbj1jaDAubGVuZ3RoO1xyXG4gICAgICAgfVxyXG4gICAgICAgIHRoaXMuYncud3JpdGVVaW50MzIoc2FtcGxlTGVuLHRydWUpO1xyXG4gICAgIH1cclxuXHJcbiAgICAgd3JpdGVEYXRhQ2h1bmsoYXVkaW9CdWZmZXI6QXVkaW9CdWZmZXIpe1xyXG5cclxuICAgICAgIGNvbnN0IGNoRGF0YTA9YXVkaW9CdWZmZXIuZ2V0Q2hhbm5lbERhdGEoMCk7XHJcbiAgICAgICBjb25zdCBkYXRhTGVuPWNoRGF0YTAubGVuZ3RoO1xyXG4gICAgICAgaWYodGhpcy5lbmNvZGluZ0Zsb2F0PT09dHJ1ZSl7XHJcbiAgICAgICAgIGZvciAobGV0IHMgPSAwOyBzIDwgZGF0YUxlbjsgcysrKSB7XHJcbiAgICAgICAgICAgLy8gaW50ZXJsZWF2ZWQgY2hhbm5lbCBkYXRhXHJcbiAgICAgICAgICAgZm9yIChsZXQgY2ggPSAwOyBjaCA8IGF1ZGlvQnVmZmVyLm51bWJlck9mQ2hhbm5lbHM7IGNoKyspIHtcclxuICAgICAgICAgICAgIGNvbnN0IGNoRGF0YSA9IGF1ZGlvQnVmZmVyLmdldENoYW5uZWxEYXRhKGNoKTtcclxuICAgICAgICAgICAgIGNvbnN0IHZhbEZsdCA9IGNoRGF0YVtzXTtcclxuICAgICAgICAgICAgIHRoaXMuYncud3JpdGVGbG9hdCh2YWxGbHQpO1xyXG4gICAgICAgICAgIH1cclxuICAgICAgICAgfVxyXG4gICAgICAgfWVsc2Uge1xyXG4gICAgICAgICBjb25zdCBoRHluSW50UmFuZ2UgPSAxIDw8ICgodGhpcy5zYW1wbGVTaXplSW5CaXRzKSAtIDEpO1xyXG4gICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8IGRhdGFMZW47IHMrKykge1xyXG4gICAgICAgICAgIC8vIGludGVybGVhdmVkIGNoYW5uZWwgZGF0YVxyXG4gICAgICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCBhdWRpb0J1ZmZlci5udW1iZXJPZkNoYW5uZWxzOyBjaCsrKSB7XHJcbiAgICAgICAgICAgICBjb25zdCBjaERhdGEgPSBhdWRpb0J1ZmZlci5nZXRDaGFubmVsRGF0YShjaCk7XHJcbiAgICAgICAgICAgICBjb25zdCB2YWxGbHQgPSBjaERhdGFbc107XHJcbiAgICAgICAgICAgICBjb25zdCB2YWxJbnQgPSBNYXRoLnJvdW5kKHZhbEZsdCAqIGhEeW5JbnRSYW5nZSk7XHJcbiAgICAgICAgICAgICBpZiAodGhpcy5zYW1wbGVTaXplID09PSBTYW1wbGVTaXplLklOVDE2KSB7XHJcbiAgICAgICAgICAgICAgIHRoaXMuYncud3JpdGVJbnQxNih2YWxJbnQsIHRydWUpO1xyXG4gICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNhbXBsZVNpemUgPT09IFNhbXBsZVNpemUuSU5UMzIpIHtcclxuICAgICAgICAgICAgICAgdGhpcy5idy53cml0ZUludDMyKHZhbEludCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICB9XHJcbiAgICAgICB9XHJcblxyXG4gICAgIH1cclxuXHJcbiAgICAgd3JpdGVDaHVua0hlYWRlcihuYW1lOnN0cmluZyxjaGtMZW46bnVtYmVyKXtcclxuICAgICAgIHRoaXMuYncud3JpdGVBc2NpaShuYW1lKTtcclxuICAgICAgIHRoaXMuYncud3JpdGVVaW50MzIoY2hrTGVuLHRydWUpO1xyXG4gICAgIH1cclxuXHJcbiAgICAgd3JpdGVBc3luYyhhdWRpb0J1ZmZlcjpBdWRpb0J1ZmZlcixjYWxsYmFjazogKHdhdkZpbGVEYXRhOlVpbnQ4QXJyYXkpPT4gYW55KXtcclxuXHJcbiAgICAgICBjb25zdCBkYXRhQ2hrQnl0ZUxlbj10aGlzLndyaXRlSGVhZGVyKGF1ZGlvQnVmZmVyKTtcclxuICAgICAgIGlmICghdGhpcy53b3JrZXJVUkwpIHtcclxuICAgICAgICAgdGhpcy53b3JrZXJVUkwgPSBXb3JrZXJIZWxwZXIuYnVpbGRXb3JrZXJCbG9iVVJMKHRoaXMud29ya2VyRnVuY3Rpb24pXHJcbiAgICAgICAgfVxyXG4gICAgICAgY29uc3Qgd28gPSBuZXcgV29ya2VyKHRoaXMud29ya2VyVVJMKTtcclxuXHJcbiAgICAgICBjb25zdCBjaHMgPSBhdWRpb0J1ZmZlci5udW1iZXJPZkNoYW5uZWxzO1xyXG5cclxuICAgICAgIGNvbnN0IGZyYW1lTGVuZ3RoID0gYXVkaW9CdWZmZXIuZ2V0Q2hhbm5lbERhdGEoMCkubGVuZ3RoO1xyXG4gICAgICAgY29uc3QgYWQgPSBuZXcgRmxvYXQzMkFycmF5KGNocyAqIGZyYW1lTGVuZ3RoKTtcclxuICAgICAgIGZvciAobGV0IGNoID0gMDsgY2ggPCBjaHM7IGNoKyspIHtcclxuICAgICAgICAgYWQuc2V0KGF1ZGlvQnVmZmVyLmdldENoYW5uZWxEYXRhKGNoKSwgY2ggKiBmcmFtZUxlbmd0aCk7XHJcbiAgICAgICB9XHJcbiAgICAgICAgIC8vIGVuc3VyZUNhcGFjaXR5IGJsb2NrcyAhISFcclxuICAgICAgIHRoaXMuYncuZW5zdXJlQ2FwYWNpdHkoZGF0YUNoa0J5dGVMZW4pO1xyXG4gICAgICAgd28ub25tZXNzYWdlID0gKG1lKSA9PiB7XHJcbiAgICAgICAgIGNhbGxiYWNrKG1lLmRhdGEuYnVmKTtcclxuICAgICAgICAgd28udGVybWluYXRlKCk7XHJcbiAgICAgICB9XHJcblxyXG5cclxuICAgICAgIHdvLnBvc3RNZXNzYWdlKHtlbmNvZGluZ0Zsb2F0OnRoaXMuZW5jb2RpbmdGbG9hdCxzYW1wbGVTaXplSW5CaXRzOnRoaXMuc2FtcGxlU2l6ZUluQml0cywgY2hzOiBjaHMsIGZyYW1lTGVuZ3RoOiBmcmFtZUxlbmd0aCwgYXVkaW9EYXRhOiBhZCxidWY6dGhpcy5idy5idWYsYnVmUG9zOnRoaXMuYncucG9zfSwgW2FkLmJ1ZmZlcix0aGlzLmJ3LmJ1Zl0pO1xyXG5cclxuICAgICB9XHJcblxyXG4gICAgIHdyaXRlKGF1ZGlvQnVmZmVyOkF1ZGlvQnVmZmVyKTpVaW50OEFycmF5e1xyXG4gICAgICAgdGhpcy53cml0ZUhlYWRlcihhdWRpb0J1ZmZlcik7XHJcbiAgICAgICB0aGlzLndyaXRlRGF0YUNodW5rKGF1ZGlvQnVmZmVyKTtcclxuICAgICAgIHJldHVybiB0aGlzLmJ3LmZpbmlzaCgpO1xyXG4gICAgIH1cclxuXHJcblxyXG4gICAgICB3cml0ZUhlYWRlcihhdWRpb0J1ZmZlcjpBdWRpb0J1ZmZlcik6bnVtYmVye1xyXG4gICAgICAgIHRoaXMuYncud3JpdGVBc2NpaShXYXZGaWxlRm9ybWF0LlJJRkZfS0VZKTtcclxuICAgICAgICBsZXQgZGF0YUNoa0J5dGVMZW49MDtcclxuICAgICAgICAvL2NvbnN0IGRhdGFDaGtCeXRlTGVuPWF1ZGlvQnVmZmVyLmdldENoYW5uZWxEYXRhKDApLmxlbmd0aCpXYXZXcml0ZXIuREVGQVVMVF9TQU1QTEVfU0laRV9CWVRFUyphdWRpb0J1ZmZlci5udW1iZXJPZkNoYW5uZWxzO1xyXG4gICAgICAgIGNvbnN0IGFiQ2hzPWF1ZGlvQnVmZmVyLm51bWJlck9mQ2hhbm5lbHM7XHJcbiAgICAgICAgaWYoYWJDaHM+MCl7XHJcbiAgICAgICAgICBjb25zdCBhYkNoMD1hdWRpb0J1ZmZlci5nZXRDaGFubmVsRGF0YSgwKTtcclxuICAgICAgICAgIGRhdGFDaGtCeXRlTGVuPWFiQ2gwLmxlbmd0aCp0aGlzLnNhbXBsZVNpemVJbkJ5dGVzKmFiQ2hzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgaGVhZGVyQ250cz0zOyAvL1dhdmUsZm10IGFuZCBkYXRhXHJcblxyXG4gICAgICAgIGxldCBmbXRDaHVua1NpemU9MTY7XHJcbiAgICAgICAgbGV0IGZhY3RDaHVua1NpemU9NDtcclxuICAgICAgICBpZih0aGlzLmVuY29kaW5nRmxvYXQ9PT10cnVlKXtcclxuICAgICAgICAgIGZtdENodW5rU2l6ZT0xODtcclxuICAgICAgICAgIGhlYWRlckNudHMrKzsgLy8gZmFjdFxyXG4gICAgICAgIH0vLyBGbG9hdCBlbmNvZGluZyByZXF1aXJlcyBmbXQgZXh0ZW5zaW9uICh3aXRoIHplcm8gbGVuZ3RoKVxyXG4gICAgICAgIGxldCB3YXZDaHVua0J5dGVMZW49KDQrNCkqaGVhZGVyQ250cztcclxuXHJcbiAgICAgICAgd2F2Q2h1bmtCeXRlTGVuKz1mbXRDaHVua1NpemU7XHJcbiAgICAgICAgd2F2Q2h1bmtCeXRlTGVuKz1mYWN0Q2h1bmtTaXplO1xyXG4gICAgICAgIHdhdkNodW5rQnl0ZUxlbis9ZGF0YUNoa0J5dGVMZW47XHJcblxyXG4gICAgICAgIGNvbnNvbGUuZGVidWcoXCJXcml0ZSBXQVYgaGVhZGVyOiBXYXYgY2h1bmsgbGVuOiBcIit3YXZDaHVua0J5dGVMZW4pO1xyXG4gICAgICAgIHRoaXMuYncud3JpdGVVaW50MzIod2F2Q2h1bmtCeXRlTGVuLHRydWUpOyAvLyBtdXN0IGJlIHNldCB0byBmaWxlIGxlbmd0aC04IGxhdGVyXHJcbiAgICAgICAgdGhpcy5idy53cml0ZUFzY2lpKFdhdkZpbGVGb3JtYXQuV0FWX0tFWSk7XHJcblxyXG4gICAgICAgIHRoaXMud3JpdGVDaHVua0hlYWRlcignZm10ICcsZm10Q2h1bmtTaXplKTtcclxuICAgICAgICB0aGlzLndyaXRlRm10Q2h1bmsoYXVkaW9CdWZmZXIpO1xyXG4gICAgICAgIGlmKHRoaXMuZW5jb2RpbmdGbG9hdD09PXRydWUpe1xyXG4gICAgICAgICAgY29uc29sZS5kZWJ1ZyhcIldyaXRlIFdBViBoZWFkZXI6IFdyaXRlICdmYWN0JyBjaHVuay5cIik7XHJcbiAgICAgICAgICB0aGlzLndyaXRlQ2h1bmtIZWFkZXIoJ2ZhY3QnLDQpO1xyXG4gICAgICAgICAgdGhpcy53cml0ZUZhY3RDaHVuayhhdWRpb0J1ZmZlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMud3JpdGVDaHVua0hlYWRlcignZGF0YScsZGF0YUNoa0J5dGVMZW4pO1xyXG4gICAgICAgIHJldHVybiBkYXRhQ2hrQnl0ZUxlbjtcclxuICAgICAgfVxyXG5cclxuICAgfVxyXG5cclxuXHJcblxyXG4iXX0=
@@ -81,5 +81,13 @@ export class BinaryByteReader {
81
81
  // this._pos=this._pos+4;
82
82
  return val;
83
83
  }
84
+ readFloat32() {
85
+ const seg = new Float32Array(1);
86
+ let i;
87
+ for (i = 0; i < 4; i++) {
88
+ seg[i] = this.buf[this._pos++];
89
+ }
90
+ return seg[0];
91
+ }
84
92
  }
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmluYXJ5UmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2lvL0JpbmFyeVJlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDSSxNQUFNLE9BQU8sZ0JBQWdCO0lBS3pCLFlBQVksR0FBZ0I7UUFDeEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksR0FBRyxDQUFDLEdBQVc7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTTtRQUNGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVELEdBQUc7UUFDQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFJLENBQUMsU0FBaUI7UUFDbEIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFZO1FBQ2xCLElBQUksQ0FBQyxDQUFDO1FBQ04sSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN4QixHQUFHLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFD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WixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2Qsc0VBQXNFO1FBQ3RFLHlCQUF5QjtRQUN6QixPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7Q0FHSiIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4gICAgZXhwb3J0IGNsYXNzIEJpbmFyeUJ5dGVSZWFkZXIge1xyXG4gICAgICAgIGJ1ZjogVWludDhBcnJheTtcclxuICAgICAgICBzYnVmOiBJbnQ4QXJyYXk7XHJcbiAgICAgICAgcHJpdmF0ZSBfcG9zOiBudW1iZXI7XHJcblxyXG4gICAgICAgIGNvbnN0cnVjdG9yKGJ1ZjogQXJyYXlCdWZmZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5idWYgPSBuZXcgVWludDhBcnJheShidWYpO1xyXG4gICAgICAgICAgICB0aGlzLnNidWYgPSBuZXcgSW50OEFycmF5KGJ1Zik7XHJcbiAgICAgICAgICAgIHRoaXMuX3BvcyA9IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBnZXQgcG9zKCk6IG51bWJlciB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wb3M7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXQgcG9zKHBvczogbnVtYmVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BvcyA9IHBvcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxlbmd0aCgpOiBudW1iZXIge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5idWYuYnl0ZUxlbmd0aDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVvZigpOiBib29sZWFuIHtcclxuICAgICAgICAgICAgcmV0dXJuICh0aGlzLl9wb3MgPj0gdGhpcy5idWYuYnl0ZUxlbmd0aCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBza2lwKGJ5dGVDb3VuZDogbnVtYmVyKXtcclxuICAgICAgICAgICAgdGhpcy5wb3MgKz0gNDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJlYWRBc2NpaShzaXplOiBudW1iZXIpOiBTdHJpbmcge1xyXG4gICAgICAgICAgICBsZXQgaTtcclxuICAgICAgICAgICAgbGV0IHR4dCA9ICcnO1xyXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0eHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSh0aGlzLmJ1Zlt0aGlzLl9wb3MrK10pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0eHQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZWFkSW50OCgpOiBudW1iZXIge1xyXG4gICAgICAgICAgICByZXR1cm4gKHRoaXMuYnVmW3RoaXMuX3BvcysrXSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZWFkSW50MTZCRSgpOiBudW1iZXIge1xyXG4gICAgICAgICAgICBjb25zdCBiMCA9IHRoaXMuc2J1Zlt0aGlzLl9wb3MrK107XHJcbiAgICAgICAgICAgIGNvbnN0IGIxID0gdGhpcy5idWZbdGhpcy5fcG9zKytdO1xyXG4gICAgICAgICAgICBjb25zdCB2YWwgPSAoIGIwIDw8IDggKSB8IGIxO1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZWFkSW50MTZMRSgpOiBudW1iZXIge1xyXG4gICAgICAgICAgICBjb25zdCBiMCA9IHRoaXMuYnVmW3RoaXMuX3BvcysrXTtcclxuICAgICAgICAgICAgY29uc3QgYjEgPSB0aGlzLnNidWZbdGhpcy5fcG9zKytdO1xyXG4gICAgICAgICAgICBjb25zdCB2YWwgPSAoIGIxIDw8IDggKSB8IGIwO1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZWFkVWludDE2TEUoKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgY29uc3Qgc2VnID0gbmV3IFVpbnQ4QXJyYXkoMik7XHJcbiAgICAgICAgICAgIGxldCBpOiBudW1iZXI7XHJcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAyOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHNlZ1tpXSA9IHRoaXMuYnVmW3RoaXMuX3BvcysrXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgdmFsID0gMDtcclxuICAgICAgICAgICAgdmFsIHw9IHNlZ1sxXSA8PCA4O1xyXG4gICAgICAgICAgICB2YWwgfD0gc2VnWzBdO1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmVhZEludDMyQkUoKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgY29uc3Qgc2VnID0gbmV3IFVpbnQ4QXJyYXkoNCk7XHJcbiAgICAgICAgICAgIGxldCBpOiBudW1iZXI7XHJcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHNlZ1tpXSA9IHRoaXMuYnVmW3RoaXMuX3BvcysrXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCB2YWwgPSBzZWdbMF0gPDwgMjQgfCBzZWdbMV0gPDwgMTYgfCBzZWdbMl0gPDwgOCB8IHNlZ1szXTtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJlYWRVaW50MzJMRSgpOiBudW1iZXIge1xyXG4gICAgICAgICAgICAgLy8gdGhpcyBkaXJjZXQgZGF0YSB2aWV3IGRvZXMgbm90IHdvcmsgd2l0aCBub2RlanM6IGFsbCBhdmx1ZXMgYXJlIHplcm9cclxuICAgICAgICAgICAgLy8gdmFyIHNlZz1uZXcgVWludDhBcnJheSh0aGlzLmJ1Zix0aGlzLl9wb3MsNCk7XHJcbiAgICAgICAgICAgIC8vIC4uLiBjb3B5IHZhbHVlIGJ5IHZhbHVlXHJcbiAgICAgICAgICAgIGNvbnN0IHNlZyA9IG5ldyBVaW50OEFycmF5KDQpO1xyXG4gICAgICAgICAgICBsZXQgaTogbnVtYmVyO1xyXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBzZWdbaV0gPSB0aGlzLmJ1Zlt0aGlzLl9wb3MrK107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJsZW46XCIsIHNlZy5sZW5ndGgsIFwiIFwiLCBzZWcuYnl0ZUxlbmd0aCwgXCIgXCIsIHNlZ1swXSwgXCIgXCIsIHNlZ1sxXSwgXCIgXCIsIHNlZ1syXSwgXCIgXCIsIHNlZ1szXSk7XHJcbiAgICAgICAgICAgIGxldCB2YWwgPSAwO1xyXG4gICAgICAgICAgICB2YWwgfD0gc2VnWzNdIDw8IDI0O1xyXG4gICAgICAgICAgICB2YWwgfD0gc2VnWzJdIDw8IDE2O1xyXG4gICAgICAgICAgICB2YWwgfD0gc2VnWzFdIDw8IDg7XHJcbiAgICAgICAgICAgIHZhbCB8PSBzZWdbMF07XHJcbiAgICAgICAgICAgIC8vIHZhciB2YWwgPSA8IDI0KHNlZ1szXSA8KSB8IChzZWdbMl0gPDwgMTYpIHwgKHNlZ1sxXSA8PCA4KSB8IHNlZ1swXTtcclxuICAgICAgICAgICAgLy8gdGhpcy5fcG9zPXRoaXMuX3Bvcys0O1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG4iXX0=
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmluYXJ5UmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2lvL0JpbmFyeVJlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDSSxNQUFNLE9BQU8sZ0JBQWdCO0lBS3pCLFlBQVksR0FBZ0I7UUFDeEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksR0FBRyxDQUFDLEdBQVc7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTTtRQUNGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVELEdBQUc7UUFDQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFJLENBQUMsU0FBaUI7UUFDbEIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFZO1FBQ2xCLElBQUksQ0FBQyxDQUFDO1FBQ04sSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN4QixHQUFHLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFD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WixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2Qsc0VBQXNFO1FBQ3RFLHlCQUF5QjtRQUN6QixPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxHQUFHLEdBQUMsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFTLENBQUM7UUFDZCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQixDQUFDO0NBR0oiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuICAgIGV4cG9ydCBjbGFzcyBCaW5hcnlCeXRlUmVhZGVyIHtcclxuICAgICAgICBidWY6IFVpbnQ4QXJyYXk7XHJcbiAgICAgICAgc2J1ZjogSW50OEFycmF5O1xyXG4gICAgICAgIHByaXZhdGUgX3BvczogbnVtYmVyO1xyXG5cclxuICAgICAgICBjb25zdHJ1Y3RvcihidWY6IEFycmF5QnVmZmVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYnVmID0gbmV3IFVpbnQ4QXJyYXkoYnVmKTtcclxuICAgICAgICAgICAgdGhpcy5zYnVmID0gbmV3IEludDhBcnJheShidWYpO1xyXG4gICAgICAgICAgICB0aGlzLl9wb3MgPSAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZ2V0IHBvcygpOiBudW1iZXIge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcG9zO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2V0IHBvcyhwb3M6IG51bWJlcikge1xyXG4gICAgICAgICAgICB0aGlzLl9wb3MgPSBwb3M7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZW5ndGgoKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVmLmJ5dGVMZW5ndGg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlb2YoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgICAgIHJldHVybiAodGhpcy5fcG9zID49IHRoaXMuYnVmLmJ5dGVMZW5ndGgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2tpcChieXRlQ291bmQ6IG51bWJlcil7XHJcbiAgICAgICAgICAgIHRoaXMucG9zICs9IDQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZWFkQXNjaWkoc2l6ZTogbnVtYmVyKTogU3RyaW5nIHtcclxuICAgICAgICAgICAgbGV0IGk7XHJcbiAgICAgICAgICAgIGxldCB0eHQgPSAnJztcclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdHh0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUodGhpcy5idWZbdGhpcy5fcG9zKytdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdHh0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmVhZEludDgoKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgcmV0dXJuICh0aGlzLmJ1Zlt0aGlzLl9wb3MrK10pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmVhZEludDE2QkUoKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgY29uc3QgYjAgPSB0aGlzLnNidWZbdGhpcy5fcG9zKytdO1xyXG4gICAgICAgICAgICBjb25zdCBiMSA9IHRoaXMuYnVmW3RoaXMuX3BvcysrXTtcclxuICAgICAgICAgICAgY29uc3QgdmFsID0gKCBiMCA8PCA4ICkgfCBiMTtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVhZEludDE2TEUoKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgY29uc3QgYjAgPSB0aGlzLmJ1Zlt0aGlzLl9wb3MrK107XHJcbiAgICAgICAgICAgIGNvbnN0IGIxID0gdGhpcy5zYnVmW3RoaXMuX3BvcysrXTtcclxuICAgICAgICAgICAgY29uc3QgdmFsID0gKCBiMSA8PCA4ICkgfCBiMDtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVhZFVpbnQxNkxFKCk6IG51bWJlciB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlZyA9IG5ldyBVaW50OEFycmF5KDIpO1xyXG4gICAgICAgICAgICBsZXQgaTogbnVtYmVyO1xyXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBzZWdbaV0gPSB0aGlzLmJ1Zlt0aGlzLl9wb3MrK107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHZhbCA9IDA7XHJcbiAgICAgICAgICAgIHZhbCB8PSBzZWdbMV0gPDwgODtcclxuICAgICAgICAgICAgdmFsIHw9IHNlZ1swXTtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJlYWRJbnQzMkJFKCk6IG51bWJlciB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlZyA9IG5ldyBVaW50OEFycmF5KDQpO1xyXG4gICAgICAgICAgICBsZXQgaTogbnVtYmVyO1xyXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBzZWdbaV0gPSB0aGlzLmJ1Zlt0aGlzLl9wb3MrK107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgdmFsID0gc2VnWzBdIDw8IDI0IHwgc2VnWzFdIDw8IDE2IHwgc2VnWzJdIDw8IDggfCBzZWdbM107XHJcbiAgICAgICAgICAgIHJldHVybiB2YWw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZWFkVWludDMyTEUoKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgIC8vIHRoaXMgZGlyY2V0IGRhdGEgdmlldyBkb2VzIG5vdCB3b3JrIHdpdGggbm9kZWpzOiBhbGwgYXZsdWVzIGFyZSB6ZXJvXHJcbiAgICAgICAgICAgIC8vIHZhciBzZWc9bmV3IFVpbnQ4QXJyYXkodGhpcy5idWYsdGhpcy5fcG9zLDQpO1xyXG4gICAgICAgICAgICAvLyAuLi4gY29weSB2YWx1ZSBieSB2YWx1ZVxyXG4gICAgICAgICAgICBjb25zdCBzZWcgPSBuZXcgVWludDhBcnJheSg0KTtcclxuICAgICAgICAgICAgbGV0IGk6IG51bWJlcjtcclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgc2VnW2ldID0gdGhpcy5idWZbdGhpcy5fcG9zKytdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwibGVuOlwiLCBzZWcubGVuZ3RoLCBcIiBcIiwgc2VnLmJ5dGVMZW5ndGgsIFwiIFwiLCBzZWdbMF0sIFwiIFwiLCBzZWdbMV0sIFwiIFwiLCBzZWdbMl0sIFwiIFwiLCBzZWdbM10pO1xyXG4gICAgICAgICAgICBsZXQgdmFsID0gMDtcclxuICAgICAgICAgICAgdmFsIHw9IHNlZ1szXSA8PCAyNDtcclxuICAgICAgICAgICAgdmFsIHw9IHNlZ1syXSA8PCAxNjtcclxuICAgICAgICAgICAgdmFsIHw9IHNlZ1sxXSA8PCA4O1xyXG4gICAgICAgICAgICB2YWwgfD0gc2VnWzBdO1xyXG4gICAgICAgICAgICAvLyB2YXIgdmFsID0gPCAyNChzZWdbM10gPCkgfCAoc2VnWzJdIDw8IDE2KSB8IChzZWdbMV0gPDwgOCkgfCBzZWdbMF07XHJcbiAgICAgICAgICAgIC8vIHRoaXMuX3Bvcz10aGlzLl9wb3MrNDtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJlYWRGbG9hdDMyKCk6bnVtYmVye1xyXG4gICAgICAgICAgY29uc3Qgc2VnPW5ldyBGbG9hdDMyQXJyYXkoMSk7XHJcbiAgICAgICAgICBsZXQgaTogbnVtYmVyO1xyXG4gICAgICAgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykge1xyXG4gICAgICAgICAgICBzZWdbaV0gPSB0aGlzLmJ1Zlt0aGlzLl9wb3MrK107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gc2VnWzBdO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG4iXX0=
@@ -52,6 +52,12 @@ export class BinaryByteWriter {
52
52
  valView.setInt32(0, val, le);
53
53
  this._pos += 4;
54
54
  }
55
+ writeFloat(val) {
56
+ this.ensureCapacity(4);
57
+ const valView = new DataView(this.buf, this._pos, 4);
58
+ valView.setFloat32(0, val, true);
59
+ this._pos += 4;
60
+ }
55
61
  finish() {
56
62
  const finalArr = new Uint8Array(this._pos);
57
63
  const dv = new DataView(this.buf, 0, this._pos);
@@ -71,4 +77,4 @@ export class BinaryByteWriter {
71
77
  }
72
78
  }
73
79
  }
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmluYXJ5V3JpdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2lvL0JpbmFyeVdyaXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDSSxNQUFNLE9BQU8sZ0JBQWdCO2FBQ2xCLHFCQUFnQixHQUFHLElBQUksQ0FBQztJQUkvQjtRQUNJLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO1FBQy9DLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELElBQUksR0FBRztRQUNILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQWdCO1FBRTdCLE9BQVEsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUcsQ0FBQztZQUNyRCxtQkFBbUI7WUFDakIsSUFBSSxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUM7WUFDNUMsSUFBSSxHQUFHLEdBQUcsUUFBUSxFQUFFLENBQUM7Z0JBQ2pCLEdBQUcsR0FBRyxRQUFRLENBQUM7WUFDbkIsQ0FBQztZQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztZQUU1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuQixJQUFJ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QyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDakMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQyxJQUFJLFNBQVMsR0FBRyxDQUFDLElBQUksU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDO2dCQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxHQUFHLENBQUMsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDekUsQ0FBQztZQUNELElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuICAgIGV4cG9ydCBjbGFzcyBCaW5hcnlCeXRlV3JpdGVyIHtcclxuICAgICAgICBzdGF0aWMgREVGQVVMVF9TSVpFX0lOQyA9IDEwMjQ7XHJcbiAgICAgICAgYnVmOiBBcnJheUJ1ZmZlcjtcclxuICAgICAgICBwcml2YXRlIF9wb3M6IG51bWJlcjtcclxuXHJcbiAgICAgICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNpemUgPSBCaW5hcnlCeXRlV3JpdGVyLkRFRkFVTFRfU0laRV9JTkM7XHJcbiAgICAgICAgICAgIHRoaXMuYnVmID0gbmV3IEFycmF5QnVmZmVyKHNpemUpO1xyXG4gICAgICAgICAgICB0aGlzLl9wb3MgPSAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZ2V0IHBvcygpOiBudW1iZXIge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcG9zO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZW5zdXJlQ2FwYWNpdHkobnVtQnl0ZXM6IG51bWJlcikge1xyXG5cclxuICAgICAgICAgIHdoaWxlICggdGhpcy5fcG9zICsgbnVtQnl0ZXMgPj0gdGhpcy5idWYuYnl0ZUxlbmd0aCApIHtcclxuICAgICAgICAgICAgLy8gYnVmZmVyIGluY3JlbWVudFxyXG4gICAgICAgICAgICAgIGxldCBpbmMgPSBCaW5hcnlCeXRlV3JpdGVyLkRFRkFVTFRfU0laRV9JTkM7XHJcbiAgICAgICAgICAgICAgaWYgKGluYyA8IG51bUJ5dGVzKSB7XHJcbiAgICAgICAgICAgICAgICAgIGluYyA9IG51bUJ5dGVzO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBjb25zdCBuZXdTaXplID0gdGhpcy5idWYuYnl0ZUxlbmd0aCArIGluYztcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGFyck9sZCA9IG5ldyBVaW50OEFycmF5KHRoaXMuYnVmLCAwLCB0aGlzLl9wb3MpO1xyXG4gICAgICAgICAgICBjb25zdCBhcnJOZXcgPSBuZXcgVWludDhBcnJheShuZXdTaXplKTtcclxuICAgICAgICAgICAgYXJyTmV3LnNldChhcnJPbGQpO1xyXG4gICAgICAgICAgICB0aGlzLmJ1ZiA9IGFyck5ldy5idWZmZXI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB3cml0ZVVpbnQ4KHZhbDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgICB0aGlzLmVuc3VyZUNhcGFjaXR5KDEpO1xyXG4gICAgICAgICAgY29uc3QgdmFsVmlldyA9IG5ldyBEYXRhVmlldyh0aGlzLmJ1ZiwgdGhpcy5fcG9zLCAxKTtcclxuICAgICAgICAgIHZhbFZpZXcuc2V0VWludDgoMCwgdmFsKTtcclxuICAgICAgICAgIHRoaXMuX3BvcysrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIHdyaXRlVWludDE2KHZhbDogbnVtYmVyLCBsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZW5zdXJlQ2FwYWNpdHkoMik7XHJcbiAgICAgICAgY29uc3QgdmFsVmlldyA9IG5ldyBEYXRhVmlldyh0aGlzLmJ1ZiwgdGhpcy5fcG9zLCAyKTtcclxuICAgICAgICB2YWxWaWV3LnNldFVpbnQxNigwLCB2YWwsIGxlKTtcclxuICAgICAgICB0aGlzLl9wb3MgKz0gMjtcclxuXHJcbiAgICAgIH1cclxuICAgICAgd3JpdGVJbnQxNih2YWw6IG51bWJlciwgbGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmVuc3VyZUNhcGFjaXR5KDIpO1xyXG4gICAgICAgIGNvbnN0IHZhbFZpZXcgPSBuZXcgRGF0YVZpZXcodGhpcy5idWYsIHRoaXMuX3BvcywgMik7XHJcbiAgICAgICAgdmFsVmlldy5zZXRJbnQxNigwLCB2YWwsIGxlKTtcclxuICAgICAgICB0aGlzLl9wb3MgKz0gMjtcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIHdyaXRlVWludDMyKHZhbDogbnVtYmVyLCBsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZW5zdXJlQ2FwYWNpdHkoNCk7XHJcbiAgICAgICAgY29uc3QgdmFsVmlldyA9IG5ldyBEYXRhVmlldyh0aGlzLmJ1ZiwgdGhpcy5fcG9zLCA0KTtcclxuICAgICAgICB2YWxWaWV3LnNldFVpbnQzMigwLCB2YWwsIGxlKTtcclxuICAgICAgICB0aGlzLl9wb3MgKz0gNDtcclxuICAgICAgfVxyXG5cclxuICAgICAgd3JpdGVJbnQzMih2YWw6IG51bWJlciwgbGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmVuc3VyZUNhcGFjaXR5KDQpO1xyXG4gICAgICAgIGNvbnN0IHZhbFZpZXcgPSBuZXcgRGF0YVZpZXcodGhpcy5idWYsIHRoaXMuX3BvcywgNCk7XHJcbiAgICAgICAgdmFsVmlldy5zZXRJbnQzMigwLCB2YWwsIGxlKTtcclxuICAgICAgICB0aGlzLl9wb3MgKz0gNDtcclxuICAgICAgfVxyXG4gICAgICAgIGZpbmlzaCgpOiBVaW50OEFycmF5IHtcclxuICAgICAgICAgIGNvbnN0IGZpbmFsQXJyID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5fcG9zKTtcclxuICAgICAgICAgIGNvbnN0IGR2ID0gbmV3IERhdGFWaWV3KHRoaXMuYnVmLCAwLCB0aGlzLl9wb3MpO1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9wb3M7IGkrKykge1xyXG4gICAgICAgICAgICBmaW5hbEFycltpXSA9IGR2LmdldFVpbnQ4KGkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGZpbmFsQXJyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgd3JpdGVBc2NpaSh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICAgICAgbGV0IGk7XHJcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgYXNjaWlDb2RlID0gdGV4dC5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgICAgICAgIGlmIChhc2NpaUNvZGUgPCAwIHx8IGFzY2lpQ29kZSA+IDI1NSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgYW4gQVNDSUkgY2hhcmFjdGVyIGF0IGNoYXIgJyArIGkgKyAnIGluICcgKyB0ZXh0KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy53cml0ZVVpbnQ4KGFzY2lpQ29kZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuIl19
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmluYXJ5V3JpdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3BlZWNocmVjb3JkZXJuZy9zcmMvbGliL2lvL0JpbmFyeVdyaXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDSSxNQUFNLE9BQU8sZ0JBQWdCO2FBQ2xCLHFCQUFnQixHQUFHLElBQUksQ0FBQztJQUkvQjtRQUNJLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDO1FBQy9DLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELElBQUksR0FBRztRQUNILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQWdCO1FBRTdCLE9BQVEsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUcsQ0FBQztZQUNyRCxtQkFBbUI7WUFDakIsSUFBSSxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUM7WUFDNUMsSUFBSSxHQUFHLEdBQUcsUUFBUSxFQUFFLENBQUM7Z0JBQ2pCLEdBQUcsR0FBRyxRQUFRLENBQUM7WUFDbkIsQ0FBQztZQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztZQUU1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuQixJQUFJ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QztRQUNoRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ25DLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVk7UUFDbkIsSUFBSSxDQUFDLENBQUM7UUFDTixLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLElBQUksU0FBUyxHQUFHLENBQUMsSUFBSSxTQUFTLEdBQUcsR0FBRyxFQUFFLENBQUM7Z0JBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQztZQUN6RSxDQUFDO1lBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4gICAgZXhwb3J0IGNsYXNzIEJpbmFyeUJ5dGVXcml0ZXIge1xyXG4gICAgICAgIHN0YXRpYyBERUZBVUxUX1NJWkVfSU5DID0gMTAyNDtcclxuICAgICAgICBidWY6IEFycmF5QnVmZmVyO1xyXG4gICAgICAgIHByaXZhdGUgX3BvczogbnVtYmVyO1xyXG5cclxuICAgICAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IEJpbmFyeUJ5dGVXcml0ZXIuREVGQVVMVF9TSVpFX0lOQztcclxuICAgICAgICAgICAgdGhpcy5idWYgPSBuZXcgQXJyYXlCdWZmZXIoc2l6ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX3BvcyA9IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBnZXQgcG9zKCk6IG51bWJlciB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wb3M7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbnN1cmVDYXBhY2l0eShudW1CeXRlczogbnVtYmVyKSB7XHJcblxyXG4gICAgICAgICAgd2hpbGUgKCB0aGlzLl9wb3MgKyBudW1CeXRlcyA+PSB0aGlzLmJ1Zi5ieXRlTGVuZ3RoICkge1xyXG4gICAgICAgICAgICAvLyBidWZmZXIgaW5jcmVtZW50XHJcbiAgICAgICAgICAgICAgbGV0IGluYyA9IEJpbmFyeUJ5dGVXcml0ZXIuREVGQVVMVF9TSVpFX0lOQztcclxuICAgICAgICAgICAgICBpZiAoaW5jIDwgbnVtQnl0ZXMpIHtcclxuICAgICAgICAgICAgICAgICAgaW5jID0gbnVtQnl0ZXM7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGNvbnN0IG5ld1NpemUgPSB0aGlzLmJ1Zi5ieXRlTGVuZ3RoICsgaW5jO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgYXJyT2xkID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5idWYsIDAsIHRoaXMuX3Bvcyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGFyck5ldyA9IG5ldyBVaW50OEFycmF5KG5ld1NpemUpO1xyXG4gICAgICAgICAgICBhcnJOZXcuc2V0KGFyck9sZCk7XHJcbiAgICAgICAgICAgIHRoaXMuYnVmID0gYXJyTmV3LmJ1ZmZlcjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHdyaXRlVWludDgodmFsOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICAgIHRoaXMuZW5zdXJlQ2FwYWNpdHkoMSk7XHJcbiAgICAgICAgICBjb25zdCB2YWxWaWV3ID0gbmV3IERhdGFWaWV3KHRoaXMuYnVmLCB0aGlzLl9wb3MsIDEpO1xyXG4gICAgICAgICAgdmFsVmlldy5zZXRVaW50OCgwLCB2YWwpO1xyXG4gICAgICAgICAgdGhpcy5fcG9zKys7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgd3JpdGVVaW50MTYodmFsOiBudW1iZXIsIGxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5lbnN1cmVDYXBhY2l0eSgyKTtcclxuICAgICAgICBjb25zdCB2YWxWaWV3ID0gbmV3IERhdGFWaWV3KHRoaXMuYnVmLCB0aGlzLl9wb3MsIDIpO1xyXG4gICAgICAgIHZhbFZpZXcuc2V0VWludDE2KDAsIHZhbCwgbGUpO1xyXG4gICAgICAgIHRoaXMuX3BvcyArPSAyO1xyXG5cclxuICAgICAgfVxyXG4gICAgICB3cml0ZUludDE2KHZhbDogbnVtYmVyLCBsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZW5zdXJlQ2FwYWNpdHkoMik7XHJcbiAgICAgICAgY29uc3QgdmFsVmlldyA9IG5ldyBEYXRhVmlldyh0aGlzLmJ1ZiwgdGhpcy5fcG9zLCAyKTtcclxuICAgICAgICB2YWxWaWV3LnNldEludDE2KDAsIHZhbCwgbGUpO1xyXG4gICAgICAgIHRoaXMuX3BvcyArPSAyO1xyXG4gICAgICB9XHJcblxyXG5cclxuICAgICAgd3JpdGVVaW50MzIodmFsOiBudW1iZXIsIGxlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5lbnN1cmVDYXBhY2l0eSg0KTtcclxuICAgICAgICBjb25zdCB2YWxWaWV3ID0gbmV3IERhdGFWaWV3KHRoaXMuYnVmLCB0aGlzLl9wb3MsIDQpO1xyXG4gICAgICAgIHZhbFZpZXcuc2V0VWludDMyKDAsIHZhbCwgbGUpO1xyXG4gICAgICAgIHRoaXMuX3BvcyArPSA0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICB3cml0ZUludDMyKHZhbDogbnVtYmVyLCBsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZW5zdXJlQ2FwYWNpdHkoNCk7XHJcbiAgICAgICAgY29uc3QgdmFsVmlldyA9IG5ldyBEYXRhVmlldyh0aGlzLmJ1ZiwgdGhpcy5fcG9zLCA0KTtcclxuICAgICAgICB2YWxWaWV3LnNldEludDMyKDAsIHZhbCwgbGUpO1xyXG4gICAgICAgIHRoaXMuX3BvcyArPSA0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICB3cml0ZUZsb2F0KHZhbDpudW1iZXIpe1xyXG4gICAgICAgICAgdGhpcy5lbnN1cmVDYXBhY2l0eSg0KTtcclxuICAgICAgICAgIGNvbnN0IHZhbFZpZXcgPSBuZXcgRGF0YVZpZXcodGhpcy5idWYsIHRoaXMuX3BvcywgNCk7XHJcbiAgICAgICAgICB2YWxWaWV3LnNldEZsb2F0MzIoMCwgdmFsLHRydWUpO1xyXG4gICAgICAgICAgdGhpcy5fcG9zICs9IDQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICAgZmluaXNoKCk6IFVpbnQ4QXJyYXkge1xyXG4gICAgICAgICAgY29uc3QgZmluYWxBcnIgPSBuZXcgVWludDhBcnJheSh0aGlzLl9wb3MpO1xyXG4gICAgICAgICAgY29uc3QgZHYgPSBuZXcgRGF0YVZpZXcodGhpcy5idWYsIDAsIHRoaXMuX3Bvcyk7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX3BvczsgaSsrKSB7XHJcbiAgICAgICAgICAgIGZpbmFsQXJyW2ldID0gZHYuZ2V0VWludDgoaSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gZmluYWxBcnI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB3cml0ZUFzY2lpKHRleHQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgICAgICBsZXQgaTtcclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRleHQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBjb25zdCBhc2NpaUNvZGUgPSB0ZXh0LmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgICAgICAgaWYgKGFzY2lpQ29kZSA8IDAgfHwgYXNjaWlDb2RlID4gMjU1KSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBhbiBBU0NJSSBjaGFyYWN0ZXIgYXQgY2hhciAnICsgaSArICcgaW4gJyArIHRleHQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLndyaXRlVWludDgoYXNjaWlDb2RlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4iXX0=
@@ -33,6 +33,11 @@ export var AudioStorageType;
33
33
  AudioStorageType["MEM_ENTIRE_AUTO_NET_CHUNKED"] = "MEM_ENTIRE_AUTO_NET_CHUNKED";
34
34
  AudioStorageType["MEM_CHUNKED_AUTO_NET_CHUNKED"] = "MEM_CHUNKED_AUTO_NET_CHUNKED";
35
35
  })(AudioStorageType || (AudioStorageType = {}));
36
+ export var AudioStorageFormatEncoding;
37
+ (function (AudioStorageFormatEncoding) {
38
+ AudioStorageFormatEncoding["PCM_SIGNED"] = "PCM_SIGNED";
39
+ AudioStorageFormatEncoding["PCM_FLOAT"] = "PCM_FLOAT";
40
+ })(AudioStorageFormatEncoding || (AudioStorageFormatEncoding = {}));
36
41
  export class ProjectUtil {
37
42
  static { this.DEFAULT_AUDIO_CHANNEL_COUNT = 2; }
38
43
  static audioChannelCount(project) {
@@ -46,4 +51,4 @@ export class ProjectUtil {
46
51
  return chs;
47
52
  }
48
53
  }
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9zcGVlY2hyZWNvcmRlci9wcm9qZWN0L3Byb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0JBLE1BQU0sQ0FBTixJQUFZLGNBQTRDO0FBQXhELFdBQVksY0FBYztJQUFFLGlDQUFhLENBQUE7SUFBQyxpQ0FBYSxDQUFBO0FBQUEsQ0FBQyxFQUE1QyxjQUFjLEtBQWQsY0FBYyxRQUE4QjtBQUFBLENBQUM7QUFFekQsTUFBTSxDQUFOLElBQVksUUFBMEU7QUFBdEYsV0FBWSxRQUFRO0lBQUUsMkJBQWEsQ0FBQTtJQUFDLDJCQUFhLENBQUE7SUFBQywrQkFBaUIsQ0FBQTtJQUFDLCtCQUFpQixDQUFBO0FBQUEsQ0FBQyxFQUExRSxRQUFRLEtBQVIsUUFBUSxRQUFrRTtBQUN0RixNQUFNLENBQU4sSUFBWSxXQUFpQztBQUE3QyxXQUFZLFdBQVc7SUFBRSxvQ0FBbUIsQ0FBQTtBQUFBLENBQUMsRUFBakMsV0FBVyxLQUFYLFdBQVcsUUFBc0I7QUFBQSxDQUFDO0FBQzlDLE1BQU0sQ0FBTixJQUFZLE9BQXlGO0FBQXJHLFdBQVksT0FBTztJQUFFLDhCQUFpQixDQUFBO0lBQUMsZ0NBQW1CLENBQUE7SUFBQyw0QkFBZSxDQUFBO0lBQUMsd0JBQVcsQ0FBQTtJQUFDLDBCQUFhLENBQUE7QUFBQSxDQUFDLEVBQXpGLE9BQU8sS0FBUCxPQUFPLFFBQWtGO0FBRXJHLE1BQU0sQ0FBTixJQUFZLGdCQU9YO0FBUEQsV0FBWSxnQkFBZ0I7SUFDMUIsNkNBQXVCLENBQUE7SUFDdkIsK0NBQXlCLENBQUE7SUFDekIsNkNBQXVCLENBQUE7SUFDdkIsK0NBQXlCLENBQUE7SUFDekIsK0VBQXlELENBQUE7SUFDekQsaUZBQTJELENBQUE7QUFDN0QsQ0FBQyxFQVBXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFPM0I7QUF3QkQsTUFBTSxPQUFPLFdBQVc7YUFFQyxnQ0FBMkIsR0FBQyxDQUFDLENBQUM7SUFFckQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLE9BQWU7UUFDdEMsSUFBSSxHQUFHLEdBQUMsV0FBVyxDQUFDLDJCQUEyQixDQUFDO1FBQ2hELElBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFDLENBQUM7WUFDN0IsR0FBRyxHQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQztRQUNuRCxDQUFDO2FBQUssSUFBRyxPQUFPLENBQUMsV0FBVyxFQUFDLENBQUM7WUFDNUIsR0FBRyxHQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO1FBQ25DLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuZXhwb3J0IGludGVyZmFjZSBBdWRpb0Zvcm1hdCB7XHJcbiAgY2hhbm5lbHM6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNZWRpYUNhcHR1cmVGb3JtYXQge1xyXG4gIGF1ZGlvQ2hhbm5lbENvdW50OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXVkaW9EZXZpY2Uge1xyXG4gIG5hbWUgOiBzdHJpbmcsXHJcbiAgcGxheWJhY2sgOiBib29sZWFuLFxyXG4gIHJlZ2V4IDogYm9vbGVhblxyXG59XHJcblxyXG5cclxuZXhwb3J0IGVudW0gQ29uc3RyYWludFR5cGUge0V4YWN0PSdFWEFDVCcsSWRlYWw9J0lERUFMJ307XHJcblxyXG5leHBvcnQgZW51bSBQbGF0Zm9ybSB7TGludXg9J0xJTlVYJyxtYWNPUz0nTUFDT1MnLFdpbmRvd3M9J1dJTkRPV1MnLEFuZHJvaWQ9J0FORFJPSUQnfVxyXG5leHBvcnQgZW51bSBCcm93c2VyQmFzZSB7Q2hyb21pdW09J0NIUk9NSVVNJ307XHJcbmV4cG9ydCBlbnVtIEJyb3dzZXIge0ZpcmVmb3g9J0ZJUkVGT1gnLENocm9taXVtPSdDSFJPTUlVTScsQ2hyb21lPSdDSFJPTUUnLEVkZ2U9J0VER0UnLE9wZXJhPSdPUEVSQSd9XHJcblxyXG5leHBvcnQgZW51bSBBdWRpb1N0b3JhZ2VUeXBlIHtcclxuICBNRU1fRU5USVJFPSdNRU1fRU5USVJFJyxcclxuICBNRU1fQ0hVTktFRD0nTUVNX0NIVU5LRUQnLFxyXG4gIERCX0NIVU5LRUQ9J0RCX0NIVU5LRUQnLFxyXG4gIE5FVF9DSFVOS0VEPSdORVRfQ0hVTktFRCcsXHJcbiAgTUVNX0VOVElSRV9BVVRPX05FVF9DSFVOS0VEPSdNRU1fRU5USVJFX0FVVE9fTkVUX0NIVU5LRUQnLFxyXG4gIE1FTV9DSFVOS0VEX0FVVE9fTkVUX0NIVU5LRUQ9J01FTV9DSFVOS0VEX0FVVE9fTkVUX0NIVU5LRUQnXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXV0b0dhaW5Db250cm9sQ29uZmlnIHtcclxuICB2YWx1ZTogYm9vbGVhbixcclxuICAvL2NvbnN0cmFpbnRUeXBlIDogQ29uc3RyYWludFR5cGUsXHJcbiAgcGxhdGZvcm06IFBsYXRmb3JtLFxyXG4gIC8vYnJvd3NlckJhc2U6QnJvd3NlckJhc2UsXHJcbiAgLy9icm93c2VyOkJyb3dzZXJcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0IHtcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgcmVjb3JkaW5nRGV2aWNlV2FrZUxvY2s/OmJvb2xlYW4sXHJcbiAgYXVkaW9Gb3JtYXQ/OiBBdWRpb0Zvcm1hdCxcclxuICBtZWRpYUNhcHR1cmVGb3JtYXQ/OiBNZWRpYUNhcHR1cmVGb3JtYXQsXHJcbiAgYXV0b0dhaW5Db250cm9sQ29uZmlncz86QXJyYXk8QXV0b0dhaW5Db250cm9sQ29uZmlnPixcclxuICBhbGxvd0VjaG9DYW5jZWxsYXRpb24/OmJvb2xlYW4sXHJcbiAgYXVkaW9EZXZpY2VzPzogQXJyYXk8QXVkaW9EZXZpY2U+LFxyXG4gIGNodW5rZWRSZWNvcmRpbmc/OiBib29sZWFuLFxyXG4gIGNsaWVudEF1ZGlvU3RvcmFnZVR5cGU/OkF1ZGlvU3RvcmFnZVR5cGUsXHJcbiAgc2hvd1Nlc3Npb25Db21wbGV0ZU1lc3NhZ2U/OmJvb2xlYW47XHJcbn1cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgUHJvamVjdFV0aWwge1xyXG5cclxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfQVVESU9fQ0hBTk5FTF9DT1VOVD0yO1xyXG5cclxuICBzdGF0aWMgYXVkaW9DaGFubmVsQ291bnQocHJvamVjdDpQcm9qZWN0KTogbnVtYmVye1xyXG4gICAgbGV0IGNocz1Qcm9qZWN0VXRpbC5ERUZBVUxUX0FVRElPX0NIQU5ORUxfQ09VTlQ7XHJcbiAgICBpZihwcm9qZWN0Lm1lZGlhQ2FwdHVyZUZvcm1hdCl7XHJcbiAgICAgIGNocz1wcm9qZWN0Lm1lZGlhQ2FwdHVyZUZvcm1hdC5hdWRpb0NoYW5uZWxDb3VudDtcclxuICAgIH1lbHNlIGlmKHByb2plY3QuYXVkaW9Gb3JtYXQpe1xyXG4gICAgICBjaHM9cHJvamVjdC5hdWRpb0Zvcm1hdC5jaGFubmVscztcclxuICAgIH1cclxuICAgIHJldHVybiBjaHM7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcblxyXG4iXX0=
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NwZWVjaHJlY29yZGVybmcvc3JjL2xpYi9zcGVlY2hyZWNvcmRlci9wcm9qZWN0L3Byb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUJBLE1BQU0sQ0FBTixJQUFZLGNBQTRDO0FBQXhELFdBQVksY0FBYztJQUFFLGlDQUFhLENBQUE7SUFBQyxpQ0FBYSxDQUFBO0FBQUEsQ0FBQyxFQUE1QyxjQUFjLEtBQWQsY0FBYyxRQUE4QjtBQUFBLENBQUM7QUFFekQsTUFBTSxDQUFOLElBQVksUUFBMEU7QUFBdEYsV0FBWSxRQUFRO0lBQUUsMkJBQWEsQ0FBQTtJQUFDLDJCQUFhLENBQUE7SUFBQywrQkFBaUIsQ0FBQTtJQUFDLCtCQUFpQixDQUFBO0FBQUEsQ0FBQyxFQUExRSxRQUFRLEtBQVIsUUFBUSxRQUFrRTtBQUN0RixNQUFNLENBQU4sSUFBWSxXQUFpQztBQUE3QyxXQUFZLFdBQVc7SUFBRSxvQ0FBbUIsQ0FBQTtBQUFBLENBQUMsRUFBakMsV0FBVyxLQUFYLFdBQVcsUUFBc0I7QUFBQSxDQUFDO0FBQzlDLE1BQU0sQ0FBTixJQUFZLE9BQXlGO0FBQXJHLFdBQVksT0FBTztJQUFFLDhCQUFpQixDQUFBO0lBQUMsZ0NBQW1CLENBQUE7SUFBQyw0QkFBZSxDQUFBO0lBQUMsd0JBQVcsQ0FBQTtJQUFDLDBCQUFhLENBQUE7QUFBQSxDQUFDLEVBQXpGLE9BQU8sS0FBUCxPQUFPLFFBQWtGO0FBRXJHLE1BQU0sQ0FBTixJQUFZLGdCQU9YO0FBUEQsV0FBWSxnQkFBZ0I7SUFDMUIsNkNBQXVCLENBQUE7SUFDdkIsK0NBQXlCLENBQUE7SUFDekIsNkNBQXVCLENBQUE7SUFDdkIsK0NBQXlCLENBQUE7SUFDekIsK0VBQXlELENBQUE7SUFDekQsaUZBQTJELENBQUE7QUFDN0QsQ0FBQyxFQVBXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFPM0I7QUFFRCxNQUFNLENBQU4sSUFBWSwwQkFHWDtBQUhELFdBQVksMEJBQTBCO0lBQ3BDLHVEQUF1QixDQUFBO0lBQ3ZCLHFEQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFIVywwQkFBMEIsS0FBMUIsMEJBQTBCLFFBR3JDO0FBK0JELE1BQU0sT0FBTyxXQUFXO2FBRUMsZ0NBQTJCLEdBQUMsQ0FBQyxDQUFDO0lBRXJELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxPQUFlO1FBQ3RDLElBQUksR0FBRyxHQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQztRQUNoRCxJQUFHLE9BQU8sQ0FBQyxrQkFBa0IsRUFBQyxDQUFDO1lBQzdCLEdBQUcsR0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUM7UUFDbkQsQ0FBQzthQUFLLElBQUcsT0FBTyxDQUFDLFdBQVcsRUFBQyxDQUFDO1lBQzVCLEdBQUcsR0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTYW1wbGVTaXplfSBmcm9tIFwiLi4vLi4vYXVkaW8vaW1wbC93YXZ3cml0ZXJcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXVkaW9Gb3JtYXQge1xyXG4gIGNoYW5uZWxzOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVkaWFDYXB0dXJlRm9ybWF0IHtcclxuICBhdWRpb0NoYW5uZWxDb3VudDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEF1ZGlvRGV2aWNlIHtcclxuICBuYW1lIDogc3RyaW5nLFxyXG4gIHBsYXliYWNrIDogYm9vbGVhbixcclxuICByZWdleCA6IGJvb2xlYW5cclxufVxyXG5cclxuXHJcbmV4cG9ydCBlbnVtIENvbnN0cmFpbnRUeXBlIHtFeGFjdD0nRVhBQ1QnLElkZWFsPSdJREVBTCd9O1xyXG5cclxuZXhwb3J0IGVudW0gUGxhdGZvcm0ge0xpbnV4PSdMSU5VWCcsbWFjT1M9J01BQ09TJyxXaW5kb3dzPSdXSU5ET1dTJyxBbmRyb2lkPSdBTkRST0lEJ31cclxuZXhwb3J0IGVudW0gQnJvd3NlckJhc2Uge0Nocm9taXVtPSdDSFJPTUlVTSd9O1xyXG5leHBvcnQgZW51bSBCcm93c2VyIHtGaXJlZm94PSdGSVJFRk9YJyxDaHJvbWl1bT0nQ0hST01JVU0nLENocm9tZT0nQ0hST01FJyxFZGdlPSdFREdFJyxPcGVyYT0nT1BFUkEnfVxyXG5cclxuZXhwb3J0IGVudW0gQXVkaW9TdG9yYWdlVHlwZSB7XHJcbiAgTUVNX0VOVElSRT0nTUVNX0VOVElSRScsXHJcbiAgTUVNX0NIVU5LRUQ9J01FTV9DSFVOS0VEJyxcclxuICBEQl9DSFVOS0VEPSdEQl9DSFVOS0VEJyxcclxuICBORVRfQ0hVTktFRD0nTkVUX0NIVU5LRUQnLFxyXG4gIE1FTV9FTlRJUkVfQVVUT19ORVRfQ0hVTktFRD0nTUVNX0VOVElSRV9BVVRPX05FVF9DSFVOS0VEJyxcclxuICBNRU1fQ0hVTktFRF9BVVRPX05FVF9DSFVOS0VEPSdNRU1fQ0hVTktFRF9BVVRPX05FVF9DSFVOS0VEJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBBdWRpb1N0b3JhZ2VGb3JtYXRFbmNvZGluZyB7XHJcbiAgUENNX1NJR05FRD0nUENNX1NJR05FRCcsXHJcbiAgUENNX0ZMT0FUPSdQQ01fRkxPQVQnLFxyXG59XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNZWRpYVN0b3JhZ2VGb3JtYXQge1xyXG4gIGF1ZGlvRW5jb2Rpbmc/OkF1ZGlvU3RvcmFnZUZvcm1hdEVuY29kaW5nO1xyXG4gIGF1ZGlvUENNc2FtcGxlU2l6ZUluQml0cz86IFNhbXBsZVNpemU7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXV0b0dhaW5Db250cm9sQ29uZmlnIHtcclxuICB2YWx1ZTogYm9vbGVhbixcclxuICAvL2NvbnN0cmFpbnRUeXBlIDogQ29uc3RyYWludFR5cGUsXHJcbiAgcGxhdGZvcm06IFBsYXRmb3JtLFxyXG4gIC8vYnJvd3NlckJhc2U6QnJvd3NlckJhc2UsXHJcbiAgLy9icm93c2VyOkJyb3dzZXJcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcm9qZWN0IHtcclxuICBuYW1lOiBzdHJpbmcsXHJcbiAgcmVjb3JkaW5nRGV2aWNlV2FrZUxvY2s/OmJvb2xlYW4sXHJcbiAgYXVkaW9Gb3JtYXQ/OiBBdWRpb0Zvcm1hdCxcclxuICBtZWRpYUNhcHR1cmVGb3JtYXQ/OiBNZWRpYUNhcHR1cmVGb3JtYXQsXHJcbiAgYXV0b0dhaW5Db250cm9sQ29uZmlncz86QXJyYXk8QXV0b0dhaW5Db250cm9sQ29uZmlnPixcclxuICBhbGxvd0VjaG9DYW5jZWxsYXRpb24/OmJvb2xlYW4sXHJcbiAgYXVkaW9EZXZpY2VzPzogQXJyYXk8QXVkaW9EZXZpY2U+LFxyXG4gIGNodW5rZWRSZWNvcmRpbmc/OiBib29sZWFuLFxyXG4gIGNsaWVudEF1ZGlvU3RvcmFnZVR5cGU/OkF1ZGlvU3RvcmFnZVR5cGUsXHJcbiAgbWVkaWFTdG9yYWdlRm9ybWF0PzpNZWRpYVN0b3JhZ2VGb3JtYXQsXHJcbiAgc2hvd1Nlc3Npb25Db21wbGV0ZU1lc3NhZ2U/OmJvb2xlYW47XHJcbn1cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgUHJvamVjdFV0aWwge1xyXG5cclxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfQVVESU9fQ0hBTk5FTF9DT1VOVD0yO1xyXG5cclxuICBzdGF0aWMgYXVkaW9DaGFubmVsQ291bnQocHJvamVjdDpQcm9qZWN0KTogbnVtYmVye1xyXG4gICAgbGV0IGNocz1Qcm9qZWN0VXRpbC5ERUZBVUxUX0FVRElPX0NIQU5ORUxfQ09VTlQ7XHJcbiAgICBpZihwcm9qZWN0Lm1lZGlhQ2FwdHVyZUZvcm1hdCl7XHJcbiAgICAgIGNocz1wcm9qZWN0Lm1lZGlhQ2FwdHVyZUZvcm1hdC5hdWRpb0NoYW5uZWxDb3VudDtcclxuICAgIH1lbHNlIGlmKHByb2plY3QuYXVkaW9Gb3JtYXQpe1xyXG4gICAgICBjaHM9cHJvamVjdC5hdWRpb0Zvcm1hdC5jaGFubmVscztcclxuICAgIH1cclxuICAgIHJldHVybiBjaHM7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcblxyXG4iXX0=