@jax-data-science/sci-image-visualizer 0.2.13 → 0.2.15
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/esm2022/lib/toolbar/segmentation/yolo-detect-tool.service.mjs +8 -3
- package/esm2022/lib/toolbar/segmentation/yolo-model-registry.mjs +32 -2
- package/esm2022/lib/visualizer.component.mjs +4 -1
- package/fesm2022/jax-data-science-sci-image-visualizer.mjs +41 -3
- package/fesm2022/jax-data-science-sci-image-visualizer.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -143,9 +143,14 @@ export class YoloDetectToolService {
|
|
|
143
143
|
if (!ctx)
|
|
144
144
|
return null;
|
|
145
145
|
ctx.drawImage(bitmap, 0, 0);
|
|
146
|
-
|
|
146
|
+
// Read the dimensions BEFORE close(): closing an ImageBitmap zeroes its
|
|
147
|
+
// width/height, so returning them afterwards yields a 0x0 image with a
|
|
148
|
+
// full pixel buffer — inference then runs on nothing and finds nothing.
|
|
149
|
+
const width = bitmap.width;
|
|
150
|
+
const height = bitmap.height;
|
|
151
|
+
const out = ctx.getImageData(0, 0, width, height);
|
|
147
152
|
bitmap.close?.();
|
|
148
|
-
return { data: out.data, width
|
|
153
|
+
return { data: out.data, width, height };
|
|
149
154
|
}
|
|
150
155
|
catch {
|
|
151
156
|
return null;
|
|
@@ -177,4 +182,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
|
|
|
177
182
|
type: Inject,
|
|
178
183
|
args: [TILE_ACCESS_PORT]
|
|
179
184
|
}] }] });
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieW9sby1kZXRlY3QtdG9vbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90b29sYmFyL3NlZ21lbnRhdGlvbi95b2xvLWRldGVjdC10b29sLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZELE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFhLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUF1QixNQUFNLHdDQUF3QyxDQUFDOztBQUkvRjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE1BQU0sT0FBTyxxQkFBcUI7SUFLaEM7SUFDRTs7d0RBRW9EO0lBQ04sYUFBb0MsSUFBSTtRQUF4QyxlQUFVLEdBQVYsVUFBVSxDQUE4QjtRQVIvRSxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDMUMsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzVDLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBT2xELENBQUM7SUFFSjs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFlBQVksQ0FDaEIsR0FBZ0IsRUFDaEIsU0FBNkIsRUFDN0IsT0FBK0IsRUFBRTtRQUVqQyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FB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WSxFQUFFLFNBQWlCO1FBQzlELE1BQU0sSUFBSSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFFbkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUM1QixNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNyQiw2RUFBNkU7UUFDN0UseUNBQXlDO1FBQ3pDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ3pCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OEdBektVLHFCQUFxQixrQkFTVixnQkFBZ0I7a0hBVDNCLHFCQUFxQixjQURSLE1BQU07OzJGQUNuQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFVN0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFJlZ2lvbiwgUG9seWdvbiwgUmVjdGFuZ2xlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3JlZ2lvbic7XG5pbXBvcnQgeyBUSUxFX0FDQ0VTU19QT1JULCB0eXBlIFRpbGVBY2Nlc3NQb3J0IH0gZnJvbSAnLi4vLi4vY29udHJhY3RzL3BvcnRzL3RpbGUtYWNjZXNzLnBvcnQnO1xuaW1wb3J0IHR5cGUgeyBJVmlzdWFsaXplciB9IGZyb20gJy4uLy4uL2NvbnRyYWN0cy92aXN1YWxpemVyLmNvbnRyYWN0JztcbmltcG9ydCB0eXBlIHsgSUluc3RhbmNlU2VnbWVudGVyLCBJbnN0YW5jZVNlZ21lbnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29udHJhY3RzL2luc3RhbmNlLXNlZ21lbnRlci5jb250cmFjdCc7XG5cbi8qKlxuICogWU9MTyBvYmplY3QgZGV0ZWN0aW9uIG92ZXIgdGhlIGN1cnJlbnQgdmlldy5cbiAqXG4gKiBUaGUgY29tcGxlbWVudCB0byB7QGxpbmsgQ2VsbFNlZ21lbnRUb29sU2VydmljZX06IGNlbGxwb3NlIGF1dG8tc2VnbWVudHMgY2VsbHNcbiAqIGluc2lkZSBhIGJveCB5b3UgZHJhdywgd2hlcmVhcyBhIGRldGVjdG9yIGlzIG1lYW50IHRvIGZpbmQgb2JqZWN0cyBhY3Jvc3MgYVxuICogZmllbGQuIFNvIHRoaXMgdGFrZXMgbm8gcHJvbXB0IOKAlCBpdCBydW5zIG9uIHdoYXRldmVyIGlzIG9uIHNjcmVlbiBhbmQgdHVybnNcbiAqIGV2ZXJ5IGRldGVjdGlvbiBpbnRvIGEgcmVnaW9uLlxuICpcbiAqIERldGVjdGlvbnMgY29tZSBiYWNrIGluIHRoZSBkaXNwbGF5ZWQgaW1hZ2UncyBwaXhlbHM7IHRoZXkgYXJlIG1hcHBlZCBvbnRvXG4gKiB0aGUgZnVsbC1yZXNvbHV0aW9uIGltYWdlIHRocm91Z2ggdGhlIHZpZXdlcidzIG93biBzb3VyY2UgcmVjdCwgc28gdGhlIHJlZ2lvbnNcbiAqIGxhbmQgd2hlcmUgdGhlIG9iamVjdHMgYWN0dWFsbHkgYXJlIHJhdGhlciB0aGFuIGF0IHZpZXctbG9jYWwgY29vcmRpbmF0ZXMuXG4gKlxuICogRXhwb3NlcyB0aGUgc2FtZSBgc3RhdHVzJGAgLyBgYnVzeSRgIC8gYHByb2dyZXNzJGAgc3VyZmFjZSBhcyB0aGUgY2VsbHBvc2VcbiAqIHRvb2wgc28gdGhlIGhvc3QncyBzaGFyZWQgc2VnbWVudGF0aW9uIHRvYXN0IGRyaXZlcyBpdCB1bmNoYW5nZWQuXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgWW9sb0RldGVjdFRvb2xTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgc3RhdHVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGJ1c3kkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHByb2dyZXNzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigtMSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLyoqIFNlcnZlci1zaWRlIGNyb3AsIHNvIGRldGVjdGlvbiBjYW4gcnVuIGF0IHRoZSBtb2RlbCdzIHNjYWxlIHJhdGhlciB0aGFuXG4gICAgICogIHRoZSB2aWV3ZXIncy4gT3B0aW9uYWw6IHdpdGhvdXQgaXQgdGhlIHRvb2wgZmFsbHMgYmFjayB0byB0aGUgZGlzcGxheWVkXG4gICAgICogIHBpeGVscywgd2hpY2ggaXMgY29ycmVjdCBidXQgc2NhbGUtZGVwZW5kZW50LiAqL1xuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVElMRV9BQ0NFU1NfUE9SVCkgcHJpdmF0ZSB0aWxlQWNjZXNzOiBUaWxlQWNjZXNzUG9ydCB8IG51bGwgPSBudWxsLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIERldGVjdCBpbiB0aGUgY3VycmVudCB2aWV3IGFuZCBhcHBlbmQgdGhlIHJlc3VsdHMgYXMgcmVnaW9ucy5cbiAgICpcbiAgICogQHJldHVybnMgdGhlIG51bWJlciBvZiByZWdpb25zIGFkZGVkLlxuICAgKi9cbiAgYXN5bmMgZGV0ZWN0SW5WaWV3KFxuICAgIHZpejogSVZpc3VhbGl6ZXIsXG4gICAgc2VnbWVudGVyOiBJSW5zdGFuY2VTZWdtZW50ZXIsXG4gICAgb3B0czogSW5zdGFuY2VTZWdtZW50T3B0aW9ucyA9IHt9LFxuICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHBpeGVscyA9IHZpei5nZXREaXNwbGF5ZWRQaXhlbERhdGE/LigpO1xuICAgIGlmICghcGl4ZWxzIHx8IHBpeGVscy53aWR0aCA9PT0gMCB8fCBwaXhlbHMuaGVpZ2h0ID09PSAwKSB7XG4gICAgICB0aGlzLnN0YXR1cyQubmV4dCgnTm8gaW1hZ2Ugb24gc2NyZWVuIHRvIGRldGVjdCBpbi4nKTtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHRoaXMuYnVzeSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLnByb2dyZXNzJC5uZXh0KC0xKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVjdCA9IHZpei5nZXREaXNwbGF5ZWRTb3VyY2VSZWN0Py4oKSA/PyBudWxsO1xuICAgICAgY29uc3QgdGFyZ2V0ID0gTnVtYmVyKG9wdHMuZG93bnNhbXBsaW5nRmFjdG9yID8/IDApIHx8IDA7XG4gICAgICBjb25zdCB2aWV3RmFjdG9yID0gcmVjdCAmJiBwaXhlbHMud2lkdGggPiAwID8gcmVjdC53aWR0aCAvIHBpeGVscy53aWR0aCA6IDE7XG5cbiAgICAgIC8vIFJlLWNyb3AgYXQgdGhlIG1vZGVsJ3Mgc2NhbGUgd2hlbiB0aGUgdmlldyBpcyBjb2Fyc2VyIHRoYW4gaXQgd2FudHMuXG4gICAgICAvLyBUaGUgaW1hZ2UgaXMgdGlsZS1iYWNrZWQsIHNvIHRoYXQgZGV0YWlsIGV4aXN0cyBzZXJ2ZXItc2lkZSBldmVuIHRob3VnaFxuICAgICAgLy8gdGhlIGRpc3BsYXllZCBwaXhlbHMgaGF2ZSBkaXNjYXJkZWQgaXQuXG4gICAgICBsZXQgc291cmNlID0geyBkYXRhOiBwaXhlbHMuZGF0YSwgd2lkdGg6IHBpeGVscy53aWR0aCwgaGVpZ2h0OiBwaXhlbHMuaGVpZ2h0IH07XG4gICAgICBpZiAocmVjdCAmJiB0YXJnZXQgPiAwICYmIHRhcmdldCA8IHZpZXdGYWN0b3IgKiAwLjk4KSB7XG4gICAgICAgIHRoaXMuc3RhdHVzJC5uZXh0KCdGZXRjaGluZyBpbWFnZSBhdCBtb2RlbCByZXNvbHV0aW9u4oCmJyk7XG4gICAgICAgIGNvbnN0IGhpID0gYXdhaXQgdGhpcy5mZXRjaENyb3BBdFNjYWxlKHJlY3QsIHRhcmdldCk7XG4gICAgICAgIGlmIChoaSkgc291cmNlID0gaGk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNlZ21lbnRlci5zZWdtZW50SW5zdGFuY2VzKHNvdXJjZSwgb3B0cywge1xuICAgICAgICBvblByb2dyZXNzOiAoZikgPT4gdGhpcy5wcm9ncmVzcyQubmV4dChmKSxcbiAgICAgICAgb25TdGF0dXM6IChzKSA9PiB0aGlzLnN0YXR1cyQubmV4dChzKSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBWaWV3IHBpeGVscyAtPiBmdWxsLXJlc29sdXRpb24gaW1hZ2UgcGl4ZWxzLiBXaXRob3V0IHRoaXMgZXZlcnkgcmVnaW9uXG4gICAgICAvLyB3b3VsZCBzaXQgYXQgdmlldy1sb2NhbCBjb29yZGluYXRlcywgaS5lLiB0aGUgd3JvbmcgcGxhY2Ugb24gdGhlIHNsaWRlXG4gICAgICAvLyBmb3IgYW55IHpvb21lZCBvciBwYW5uZWQgdmlldy5cbiAgICAgIGNvbnN0IG9mZnNldFggPSByZWN0ID8gcmVjdC54IDogMDtcbiAgICAgIGNvbnN0IG9mZnNldFkgPSByZWN0ID8gcmVjdC55IDogMDtcbiAgICAgIC8vIEFnYWluc3QgdGhlIHBpeGVscyBhY3R1YWxseSBpbmZlcnJlZCBvbiwgd2hpY2ggbWF5IGJlIHRoZSByZS1jcm9wLlxuICAgICAgY29uc3QgcmF0aW9YID0gcmVjdCAmJiBzb3VyY2Uud2lkdGggPiAwID8gcmVjdC53aWR0aCAvIHNvdXJjZS53aWR0aCA6IDE7XG4gICAgICBjb25zdCByYXRpb1kgPSByZWN0ICYmIHNvdXJjZS5oZWlnaHQgPiAwID8gcmVjdC5oZWlnaHQgLyBzb3VyY2UuaGVpZ2h0IDogMTtcblxuICAgICAgY29uc3QgYWRkZWQ6IFJlZ2lvbltdID0gW107XG4gICAgICBmb3IgKGNvbnN0IGRldCBvZiByZXN1bHQuZGV0ZWN0aW9ucykge1xuICAgICAgICBpZiAoZGV0LnBvbHlnb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBvbHkgb2YgZGV0LnBvbHlnb25zKSB7XG4gICAgICAgICAgICBpZiAocG9seS5leHRlcmlvci5sZW5ndGggPCAzKSBjb250aW51ZTtcbiAgICAgICAgICAgIGFkZGVkLnB1c2goXG4gICAgICAgICAgICAgIHRoaXMubWFrZVJlZ2lvbihcbiAgICAgICAgICAgICAgICBwb2x5LmV4dGVyaW9yLm1hcCgoW3hdKSA9PiBNYXRoLnJvdW5kKG9mZnNldFggKyB4ICogcmF0aW9YKSksXG4gICAgICAgICAgICAgICAgcG9seS5leHRlcmlvci5tYXAoKFssIHldKSA9PiBNYXRoLnJvdW5kKG9mZnNldFkgKyB5ICogcmF0aW9ZKSksXG4gICAgICAgICAgICAgICAgZGV0LmNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIERldGVjdGlvbiBtb2RlIHlpZWxkcyBubyBvdXRsaW5lOyB0aGUgYm94IGlzIHN0aWxsIHRoZSByZXN1bHQsIGFuZFxuICAgICAgICAvLyBtYXRjaGVzIHdoYXQgdGhlIHNlcnZlciB3cml0ZXMgYXMgYSBcImRldGVjdGlvblwiIGZlYXR1cmUuXG4gICAgICAgIGNvbnN0IFt4MSwgeTEsIHgyLCB5Ml0gPSBkZXQuYm94O1xuICAgICAgICBpZiAoeDIgLSB4MSA8PSAwIHx8IHkyIC0geTEgPD0gMCkgY29udGludWU7XG4gICAgICAgIGFkZGVkLnB1c2goXG4gICAgICAgICAgdGhpcy5tYWtlUmVnaW9uKFxuICAgICAgICAgICAgW3gxLCB4MiwgeDIsIHgxXS5tYXAoKHgpID0+IE1hdGgucm91bmQob2Zmc2V0WCArIHggKiByYXRpb1gpKSxcbiAgICAgICAgICAgIFt5MSwgeTEsIHkyLCB5Ml0ubWFwKCh5KSA9PiBNYXRoLnJvdW5kKG9mZnNldFkgKyB5ICogcmF0aW9ZKSksXG4gICAgICAgICAgICBkZXQuY2xhc3NOYW1lLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhZGRlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5zdGF0dXMkLm5leHQoJ05vIG9iamVjdHMgZGV0ZWN0ZWQuJyk7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuXG4gICAgICAvLyBBcHBlbmQuIEEgZGV0ZWN0aW9uIHJ1biBtdXN0IG5vdCBkaXNjYXJkIGFubm90YXRpb25zIGRyYXduIGJ5IGhhbmQgb3JcbiAgICAgIC8vIHByb2R1Y2VkIGJ5IGFub3RoZXIgdG9vbC5cbiAgICAgIHZpei5zZXRSZWdpb25zKFsuLi4odml6LmdldFJlZ2lvbnMoKSA/PyBbXSksIC4uLmFkZGVkXSk7XG4gICAgICB0aGlzLnN0YXR1cyQubmV4dChgQWRkZWQgJHthZGRlZC5sZW5ndGh9IHJlZ2lvbihzKS5gKTtcbiAgICAgIHJldHVybiBhZGRlZC5sZW5ndGg7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLnN0YXR1cyQubmV4dChlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ1lPTE8gZGV0ZWN0aW9uIGZhaWxlZC4nKTtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmJ1c3kkLm5leHQoZmFsc2UpO1xuICAgICAgdGhpcy5wcm9ncmVzcyQubmV4dCgtMSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlLWNyb3AgYHJlY3RgIGF0IGAxL3RhcmdldGAgb2YgZnVsbCByZXNvbHV0aW9uLiBSZXR1cm5zIG51bGwgb24gYW55XG4gICAqIGZhaWx1cmUsIHNvIHRoZSBjYWxsZXIgZmFsbHMgYmFjayB0byB0aGUgZGlzcGxheWVkIHBpeGVscyDigJQgYSBjb2Fyc2VyIGNyb3BcbiAgICogYmVhdHMgYSBmYWlsZWQgcnVuLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaENyb3BBdFNjYWxlKFxuICAgIHJlY3Q6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0sXG4gICAgdGFyZ2V0OiBudW1iZXIsXG4gICk6IFByb21pc2U8eyBkYXRhOiBVaW50OENsYW1wZWRBcnJheTsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB8IG51bGw+IHtcbiAgICBpZiAoIXRoaXMudGlsZUFjY2VzcykgcmV0dXJuIG51bGw7XG4gICAgbGV0IHcgPSBNYXRoLnJvdW5kKHJlY3Qud2lkdGggLyB0YXJnZXQpO1xuICAgIGxldCBoID0gTWF0aC5yb3VuZChyZWN0LmhlaWdodCAvIHRhcmdldCk7XG5cbiAgICAvLyBBIGZhY3RvciBvZiAxIG92ZXIgYSB3aG9sZS1zbGlkZSBST0kgd291bGQgYXNrIGZvciBodW5kcmVkcyBvZiBtZWdhcGl4ZWxzLlxuICAgIGNvbnN0IE1BWF9QSVhFTFMgPSAxNl83NzdfMjE2OyAvLyA0MDk2wrJcbiAgICBjb25zdCBwaXhlbHMgPSB3ICogaDtcbiAgICBpZiAocGl4ZWxzID4gTUFYX1BJWEVMUykge1xuICAgICAgY29uc3QgayA9IE1hdGguc3FydChNQVhfUElYRUxTIC8gcGl4ZWxzKTtcbiAgICAgIHcgPSBNYXRoLnJvdW5kKHcgKiBrKTtcbiAgICAgIGggPSBNYXRoLnJvdW5kKGggKiBrKTtcbiAgICB9XG4gICAgaWYgKHcgPCA2NCB8fCBoIDwgNjQpIHJldHVybiBudWxsO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJvaSA9IHtcbiAgICAgICAgeDogTWF0aC5yb3VuZChyZWN0LngpLFxuICAgICAgICB5OiBNYXRoLnJvdW5kKHJlY3QueSksXG4gICAgICAgIHdpZHRoOiBNYXRoLnJvdW5kKHJlY3Qud2lkdGgpLFxuICAgICAgICBoZWlnaHQ6IE1hdGgucm91bmQocmVjdC5oZWlnaHQpLFxuICAgICAgfSBhcyBSZWN0YW5nbGU7XG4gICAgICBjb25zdCBzY3JlZW4gPSB7IHg6IDAsIHk6IDAsIHdpZHRoOiB3LCBoZWlnaHQ6IGggfSBhcyBSZWN0YW5nbGU7XG4gICAgICBjb25zdCBieXRlcyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMudGlsZUFjY2Vzcy56b29tT25SZWdpb24ocm9pLCBzY3JlZW4sIDApKTtcbiAgICAgIGlmICghYnl0ZXMgfHwgYnl0ZXMuYnl0ZUxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgICAgIGNvbnN0IGJpdG1hcCA9IGF3YWl0IGNyZWF0ZUltYWdlQml0bWFwKG5ldyBCbG9iKFtieXRlc10pKTtcbiAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgY2FudmFzLndpZHRoID0gYml0bWFwLndpZHRoO1xuICAgICAgY2FudmFzLmhlaWdodCA9IGJpdG1hcC5oZWlnaHQ7XG4gICAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgIGlmICghY3R4KSByZXR1cm4gbnVsbDtcbiAgICAgIGN0eC5kcmF3SW1hZ2UoYml0bWFwLCAwLCAwKTtcbiAgICAgIGNvbnN0IG91dCA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgYml0bWFwLndpZHRoLCBiaXRtYXAuaGVpZ2h0KTtcbiAgICAgIGJpdG1hcC5jbG9zZT8uKCk7XG4gICAgICByZXR1cm4geyBkYXRhOiBvdXQuZGF0YSwgd2lkdGg6IGJpdG1hcC53aWR0aCwgaGVpZ2h0OiBiaXRtYXAuaGVpZ2h0IH07XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1ha2VSZWdpb24oeHM6IG51bWJlcltdLCB5czogbnVtYmVyW10sIGNsYXNzTmFtZTogc3RyaW5nKTogUmVnaW9uIHtcbiAgICBjb25zdCBwb2x5ID0gbmV3IFBvbHlnb24oKTtcbiAgICBwb2x5Lm5wb2ludHMgPSB4cy5sZW5ndGg7XG4gICAgcG9seS54cG9pbnRzID0geHM7XG4gICAgcG9seS55cG9pbnRzID0geXM7XG4gICAgcG9seS5jb29yZGluYXRlcyA9IHhzLm1hcCgoeCwgaSkgPT4gW3gsIHlzW2ldXSk7XG4gICAgcG9seS5jbG9zZWQgPSB0cnVlO1xuXG4gICAgY29uc3QgcmVnaW9uID0gbmV3IFJlZ2lvbigpO1xuICAgIHJlZ2lvbi5ib3VuZHMgPSBwb2x5O1xuICAgIC8vIFRoZSBjbGFzcyBuYW1lIGRyaXZlcyBwcmVzZXQgY29sb3VyIHJlc29sdXRpb247IGxlYXZpbmcgYGNvbG9yYCB1bnNldCBsZXRzXG4gICAgLy8gYW4gZXhpc3RpbmcgcHJlc2V0IGZvciB0aGlzIGNsYXNzIHdpbi5cbiAgICByZWdpb24ubGFiZWwgPSBjbGFzc05hbWU7XG4gICAgcmV0dXJuIHJlZ2lvbjtcbiAgfVxufVxuIl19
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieW9sby1kZXRlY3QtdG9vbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90b29sYmFyL3NlZ21lbnRhdGlvbi95b2xvLWRldGVjdC10b29sLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZELE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFhLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUF1QixNQUFNLHdDQUF3QyxDQUFDOztBQUkvRjs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE1BQU0sT0FBTyxxQkFBcUI7SUFLaEM7SUFDRTs7d0RBRW9EO0lBQ04sYUFBb0MsSUFBSTtRQUF4QyxlQUFVLEdBQVYsVUFBVSxDQUE4QjtRQVIvRSxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDMUMsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzVDLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBT2xELENBQUM7SUFFSjs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFlBQVksQ0FDaEIsR0FBZ0IsRUFDaEIsU0FBNkIsRUFDN0IsT0FBK0IsRUFBRTtRQUVqQyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1lBQ3RELE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLHNCQUFzQixFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUM7WUFDcEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekQsTUFBTSxVQUFVLEdBQUcsSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUU1RSx1RUFBdUU7WUFDdkUsMEVBQTBFO1lBQzFFLDBDQUEwQztZQUMxQyxJQUFJLE1BQU0sR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDL0UsSUFBSSxJQUFJLElBQUksTUFBTSxHQUFHLENBQUMsSUFBSSxNQUFNLEdBQUcsVUFBVSxHQUFHLElBQUksRUFBRSxDQUFDO2dCQUNyRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO2dCQUN6RCxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ3JELElBQUksRUFBRTtvQkFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLENBQUM7WUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUM1RCxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDekMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDdEMsQ0FBQyxDQUFDO1lBRUgseUVBQXlFO1lBQ3pFLHlFQUF5RTtZQUN6RSxpQ0FBaUM7WUFDakMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMscUVBQXFFO1lBQ3JFLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUzRSxNQUFNLEtBQUssR0FBYSxFQUFFLENBQUM7WUFDM0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3BDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzVCLEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO3dCQUNoQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUM7NEJBQUUsU0FBUzt3QkFDdkMsS0FBSyxDQUFDLElBQUksQ0FDUixJQUFJLENBQUMsVUFBVSxDQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFDOUQsR0FBRyxDQUFDLFNBQVMsQ0FDZCxDQUNGLENBQUM7b0JBQ0osQ0FBQztvQkFDRCxTQUFTO2dCQUNYLENBQUM7Z0JBQ0QscUVBQXFFO2dCQUNyRSwyREFBMkQ7Z0JBQzNELE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO2dCQUNqQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQztvQkFBRSxTQUFTO2dCQUMzQyxLQUFLLENBQUMsSUFBSSxDQUNSLElBQUksQ0FBQyxVQUFVLENBQ2IsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUM3RCxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQzdELEdBQUcsQ0FBQyxTQUFTLENBQ2QsQ0FDRixDQUFDO1lBQ0osQ0FBQztZQUVELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztnQkFDMUMsT0FBTyxDQUFDLENBQUM7WUFDWCxDQUFDO1lBRUQsd0VBQXdFO1lBQ3hFLDRCQUE0QjtZQUM1QixHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLENBQUMsTUFBTSxhQUFhLENBQUMsQ0FBQztZQUN0RCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDdEIsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQ2pGLE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxLQUFLLENBQUMsZ0JBQWdCLENBQzVCLElBQTZELEVBQzdELE1BQWM7UUFFZCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBRXpDLDZFQUE2RTtRQUM3RSxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsQ0FBQyxRQUFRO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsSUFBSSxNQUFNLEdBQUcsVUFBVSxFQUFFLENBQUM7WUFDeEIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUM7WUFDekMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBQ0QsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFbEMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLEdBQUc7Z0JBQ1YsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDckIsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDckIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDN0IsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUNuQixDQUFDO1lBQ2YsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFlLENBQUM7WUFDaEUsTUFBTSxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxDQUFDO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBRWxELE1BQU0sTUFBTSxHQUFHLE1BQU0saUJBQWlCLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRCxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDNUIsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQzlCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFDdEIsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVCLHdFQUF3RTtZQUN4RSx1RUFBdUU7WUFDdkUsd0VBQXdFO1lBQ3hFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDM0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUM3QixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2xELE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDM0MsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFTyxVQUFVLENBQUMsRUFBWSxFQUFFLEVBQVksRUFBRSxTQUFpQjtRQUM5RCxNQUFNLElBQUksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBRW5CLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7UUFDNUIsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDckIsNkVBQTZFO1FBQzdFLHlDQUF5QztRQUN6QyxNQUFNLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUN6QixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzhHQTlLVSxxQkFBcUIsa0JBU1YsZ0JBQWdCO2tIQVQzQixxQkFBcUIsY0FEUixNQUFNOzsyRkFDbkIscUJBQXFCO2tCQURqQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBVTdCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBSZWdpb24sIFBvbHlnb24sIFJlY3RhbmdsZSB9IGZyb20gJy4uLy4uL21vZGVscy9yZWdpb24nO1xuaW1wb3J0IHsgVElMRV9BQ0NFU1NfUE9SVCwgdHlwZSBUaWxlQWNjZXNzUG9ydCB9IGZyb20gJy4uLy4uL2NvbnRyYWN0cy9wb3J0cy90aWxlLWFjY2Vzcy5wb3J0JztcbmltcG9ydCB0eXBlIHsgSVZpc3VhbGl6ZXIgfSBmcm9tICcuLi8uLi9jb250cmFjdHMvdmlzdWFsaXplci5jb250cmFjdCc7XG5pbXBvcnQgdHlwZSB7IElJbnN0YW5jZVNlZ21lbnRlciwgSW5zdGFuY2VTZWdtZW50T3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvbnRyYWN0cy9pbnN0YW5jZS1zZWdtZW50ZXIuY29udHJhY3QnO1xuXG4vKipcbiAqIFlPTE8gb2JqZWN0IGRldGVjdGlvbiBvdmVyIHRoZSBjdXJyZW50IHZpZXcuXG4gKlxuICogVGhlIGNvbXBsZW1lbnQgdG8ge0BsaW5rIENlbGxTZWdtZW50VG9vbFNlcnZpY2V9OiBjZWxscG9zZSBhdXRvLXNlZ21lbnRzIGNlbGxzXG4gKiBpbnNpZGUgYSBib3ggeW91IGRyYXcsIHdoZXJlYXMgYSBkZXRlY3RvciBpcyBtZWFudCB0byBmaW5kIG9iamVjdHMgYWNyb3NzIGFcbiAqIGZpZWxkLiBTbyB0aGlzIHRha2VzIG5vIHByb21wdCDigJQgaXQgcnVucyBvbiB3aGF0ZXZlciBpcyBvbiBzY3JlZW4gYW5kIHR1cm5zXG4gKiBldmVyeSBkZXRlY3Rpb24gaW50byBhIHJlZ2lvbi5cbiAqXG4gKiBEZXRlY3Rpb25zIGNvbWUgYmFjayBpbiB0aGUgZGlzcGxheWVkIGltYWdlJ3MgcGl4ZWxzOyB0aGV5IGFyZSBtYXBwZWQgb250b1xuICogdGhlIGZ1bGwtcmVzb2x1dGlvbiBpbWFnZSB0aHJvdWdoIHRoZSB2aWV3ZXIncyBvd24gc291cmNlIHJlY3QsIHNvIHRoZSByZWdpb25zXG4gKiBsYW5kIHdoZXJlIHRoZSBvYmplY3RzIGFjdHVhbGx5IGFyZSByYXRoZXIgdGhhbiBhdCB2aWV3LWxvY2FsIGNvb3JkaW5hdGVzLlxuICpcbiAqIEV4cG9zZXMgdGhlIHNhbWUgYHN0YXR1cyRgIC8gYGJ1c3kkYCAvIGBwcm9ncmVzcyRgIHN1cmZhY2UgYXMgdGhlIGNlbGxwb3NlXG4gKiB0b29sIHNvIHRoZSBob3N0J3Mgc2hhcmVkIHNlZ21lbnRhdGlvbiB0b2FzdCBkcml2ZXMgaXQgdW5jaGFuZ2VkLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFlvbG9EZXRlY3RUb29sU2VydmljZSB7XG4gIHJlYWRvbmx5IHN0YXR1cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICByZWFkb25seSBidXN5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBwcm9ncmVzcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oLTEpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8qKiBTZXJ2ZXItc2lkZSBjcm9wLCBzbyBkZXRlY3Rpb24gY2FuIHJ1biBhdCB0aGUgbW9kZWwncyBzY2FsZSByYXRoZXIgdGhhblxuICAgICAqICB0aGUgdmlld2VyJ3MuIE9wdGlvbmFsOiB3aXRob3V0IGl0IHRoZSB0b29sIGZhbGxzIGJhY2sgdG8gdGhlIGRpc3BsYXllZFxuICAgICAqICBwaXhlbHMsIHdoaWNoIGlzIGNvcnJlY3QgYnV0IHNjYWxlLWRlcGVuZGVudC4gKi9cbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFRJTEVfQUNDRVNTX1BPUlQpIHByaXZhdGUgdGlsZUFjY2VzczogVGlsZUFjY2Vzc1BvcnQgfCBudWxsID0gbnVsbCxcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBEZXRlY3QgaW4gdGhlIGN1cnJlbnQgdmlldyBhbmQgYXBwZW5kIHRoZSByZXN1bHRzIGFzIHJlZ2lvbnMuXG4gICAqXG4gICAqIEByZXR1cm5zIHRoZSBudW1iZXIgb2YgcmVnaW9ucyBhZGRlZC5cbiAgICovXG4gIGFzeW5jIGRldGVjdEluVmlldyhcbiAgICB2aXo6IElWaXN1YWxpemVyLFxuICAgIHNlZ21lbnRlcjogSUluc3RhbmNlU2VnbWVudGVyLFxuICAgIG9wdHM6IEluc3RhbmNlU2VnbWVudE9wdGlvbnMgPSB7fSxcbiAgKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBwaXhlbHMgPSB2aXouZ2V0RGlzcGxheWVkUGl4ZWxEYXRhPy4oKTtcbiAgICBpZiAoIXBpeGVscyB8fCBwaXhlbHMud2lkdGggPT09IDAgfHwgcGl4ZWxzLmhlaWdodCA9PT0gMCkge1xuICAgICAgdGhpcy5zdGF0dXMkLm5leHQoJ05vIGltYWdlIG9uIHNjcmVlbiB0byBkZXRlY3QgaW4uJyk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICB0aGlzLmJ1c3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5wcm9ncmVzcyQubmV4dCgtMSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlY3QgPSB2aXouZ2V0RGlzcGxheWVkU291cmNlUmVjdD8uKCkgPz8gbnVsbDtcbiAgICAgIGNvbnN0IHRhcmdldCA9IE51bWJlcihvcHRzLmRvd25zYW1wbGluZ0ZhY3RvciA/PyAwKSB8fCAwO1xuICAgICAgY29uc3Qgdmlld0ZhY3RvciA9IHJlY3QgJiYgcGl4ZWxzLndpZHRoID4gMCA/IHJlY3Qud2lkdGggLyBwaXhlbHMud2lkdGggOiAxO1xuXG4gICAgICAvLyBSZS1jcm9wIGF0IHRoZSBtb2RlbCdzIHNjYWxlIHdoZW4gdGhlIHZpZXcgaXMgY29hcnNlciB0aGFuIGl0IHdhbnRzLlxuICAgICAgLy8gVGhlIGltYWdlIGlzIHRpbGUtYmFja2VkLCBzbyB0aGF0IGRldGFpbCBleGlzdHMgc2VydmVyLXNpZGUgZXZlbiB0aG91Z2hcbiAgICAgIC8vIHRoZSBkaXNwbGF5ZWQgcGl4ZWxzIGhhdmUgZGlzY2FyZGVkIGl0LlxuICAgICAgbGV0IHNvdXJjZSA9IHsgZGF0YTogcGl4ZWxzLmRhdGEsIHdpZHRoOiBwaXhlbHMud2lkdGgsIGhlaWdodDogcGl4ZWxzLmhlaWdodCB9O1xuICAgICAgaWYgKHJlY3QgJiYgdGFyZ2V0ID4gMCAmJiB0YXJnZXQgPCB2aWV3RmFjdG9yICogMC45OCkge1xuICAgICAgICB0aGlzLnN0YXR1cyQubmV4dCgnRmV0Y2hpbmcgaW1hZ2UgYXQgbW9kZWwgcmVzb2x1dGlvbuKApicpO1xuICAgICAgICBjb25zdCBoaSA9IGF3YWl0IHRoaXMuZmV0Y2hDcm9wQXRTY2FsZShyZWN0LCB0YXJnZXQpO1xuICAgICAgICBpZiAoaGkpIHNvdXJjZSA9IGhpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzZWdtZW50ZXIuc2VnbWVudEluc3RhbmNlcyhzb3VyY2UsIG9wdHMsIHtcbiAgICAgICAgb25Qcm9ncmVzczogKGYpID0+IHRoaXMucHJvZ3Jlc3MkLm5leHQoZiksXG4gICAgICAgIG9uU3RhdHVzOiAocykgPT4gdGhpcy5zdGF0dXMkLm5leHQocyksXG4gICAgICB9KTtcblxuICAgICAgLy8gVmlldyBwaXhlbHMgLT4gZnVsbC1yZXNvbHV0aW9uIGltYWdlIHBpeGVscy4gV2l0aG91dCB0aGlzIGV2ZXJ5IHJlZ2lvblxuICAgICAgLy8gd291bGQgc2l0IGF0IHZpZXctbG9jYWwgY29vcmRpbmF0ZXMsIGkuZS4gdGhlIHdyb25nIHBsYWNlIG9uIHRoZSBzbGlkZVxuICAgICAgLy8gZm9yIGFueSB6b29tZWQgb3IgcGFubmVkIHZpZXcuXG4gICAgICBjb25zdCBvZmZzZXRYID0gcmVjdCA/IHJlY3QueCA6IDA7XG4gICAgICBjb25zdCBvZmZzZXRZID0gcmVjdCA/IHJlY3QueSA6IDA7XG4gICAgICAvLyBBZ2FpbnN0IHRoZSBwaXhlbHMgYWN0dWFsbHkgaW5mZXJyZWQgb24sIHdoaWNoIG1heSBiZSB0aGUgcmUtY3JvcC5cbiAgICAgIGNvbnN0IHJhdGlvWCA9IHJlY3QgJiYgc291cmNlLndpZHRoID4gMCA/IHJlY3Qud2lkdGggLyBzb3VyY2Uud2lkdGggOiAxO1xuICAgICAgY29uc3QgcmF0aW9ZID0gcmVjdCAmJiBzb3VyY2UuaGVpZ2h0ID4gMCA/IHJlY3QuaGVpZ2h0IC8gc291cmNlLmhlaWdodCA6IDE7XG5cbiAgICAgIGNvbnN0IGFkZGVkOiBSZWdpb25bXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBkZXQgb2YgcmVzdWx0LmRldGVjdGlvbnMpIHtcbiAgICAgICAgaWYgKGRldC5wb2x5Z29ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBwb2x5IG9mIGRldC5wb2x5Z29ucykge1xuICAgICAgICAgICAgaWYgKHBvbHkuZXh0ZXJpb3IubGVuZ3RoIDwgMykgY29udGludWU7XG4gICAgICAgICAgICBhZGRlZC5wdXNoKFxuICAgICAgICAgICAgICB0aGlzLm1ha2VSZWdpb24oXG4gICAgICAgICAgICAgICAgcG9seS5leHRlcmlvci5tYXAoKFt4XSkgPT4gTWF0aC5yb3VuZChvZmZzZXRYICsgeCAqIHJhdGlvWCkpLFxuICAgICAgICAgICAgICAgIHBvbHkuZXh0ZXJpb3IubWFwKChbLCB5XSkgPT4gTWF0aC5yb3VuZChvZmZzZXRZICsgeSAqIHJhdGlvWSkpLFxuICAgICAgICAgICAgICAgIGRldC5jbGFzc05hbWUsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBEZXRlY3Rpb24gbW9kZSB5aWVsZHMgbm8gb3V0bGluZTsgdGhlIGJveCBpcyBzdGlsbCB0aGUgcmVzdWx0LCBhbmRcbiAgICAgICAgLy8gbWF0Y2hlcyB3aGF0IHRoZSBzZXJ2ZXIgd3JpdGVzIGFzIGEgXCJkZXRlY3Rpb25cIiBmZWF0dXJlLlxuICAgICAgICBjb25zdCBbeDEsIHkxLCB4MiwgeTJdID0gZGV0LmJveDtcbiAgICAgICAgaWYgKHgyIC0geDEgPD0gMCB8fCB5MiAtIHkxIDw9IDApIGNvbnRpbnVlO1xuICAgICAgICBhZGRlZC5wdXNoKFxuICAgICAgICAgIHRoaXMubWFrZVJlZ2lvbihcbiAgICAgICAgICAgIFt4MSwgeDIsIHgyLCB4MV0ubWFwKCh4KSA9PiBNYXRoLnJvdW5kKG9mZnNldFggKyB4ICogcmF0aW9YKSksXG4gICAgICAgICAgICBbeTEsIHkxLCB5MiwgeTJdLm1hcCgoeSkgPT4gTWF0aC5yb3VuZChvZmZzZXRZICsgeSAqIHJhdGlvWSkpLFxuICAgICAgICAgICAgZGV0LmNsYXNzTmFtZSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoYWRkZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuc3RhdHVzJC5uZXh0KCdObyBvYmplY3RzIGRldGVjdGVkLicpO1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgLy8gQXBwZW5kLiBBIGRldGVjdGlvbiBydW4gbXVzdCBub3QgZGlzY2FyZCBhbm5vdGF0aW9ucyBkcmF3biBieSBoYW5kIG9yXG4gICAgICAvLyBwcm9kdWNlZCBieSBhbm90aGVyIHRvb2wuXG4gICAgICB2aXouc2V0UmVnaW9ucyhbLi4uKHZpei5nZXRSZWdpb25zKCkgPz8gW10pLCAuLi5hZGRlZF0pO1xuICAgICAgdGhpcy5zdGF0dXMkLm5leHQoYEFkZGVkICR7YWRkZWQubGVuZ3RofSByZWdpb24ocykuYCk7XG4gICAgICByZXR1cm4gYWRkZWQubGVuZ3RoO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5zdGF0dXMkLm5leHQoZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdZT0xPIGRldGVjdGlvbiBmYWlsZWQuJyk7XG4gICAgICByZXR1cm4gMDtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5idXN5JC5uZXh0KGZhbHNlKTtcbiAgICAgIHRoaXMucHJvZ3Jlc3MkLm5leHQoLTEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZS1jcm9wIGByZWN0YCBhdCBgMS90YXJnZXRgIG9mIGZ1bGwgcmVzb2x1dGlvbi4gUmV0dXJucyBudWxsIG9uIGFueVxuICAgKiBmYWlsdXJlLCBzbyB0aGUgY2FsbGVyIGZhbGxzIGJhY2sgdG8gdGhlIGRpc3BsYXllZCBwaXhlbHMg4oCUIGEgY29hcnNlciBjcm9wXG4gICAqIGJlYXRzIGEgZmFpbGVkIHJ1bi5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hDcm9wQXRTY2FsZShcbiAgICByZWN0OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9LFxuICAgIHRhcmdldDogbnVtYmVyLFxuICApOiBQcm9taXNlPHsgZGF0YTogVWludDhDbGFtcGVkQXJyYXk7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0gfCBudWxsPiB7XG4gICAgaWYgKCF0aGlzLnRpbGVBY2Nlc3MpIHJldHVybiBudWxsO1xuICAgIGxldCB3ID0gTWF0aC5yb3VuZChyZWN0LndpZHRoIC8gdGFyZ2V0KTtcbiAgICBsZXQgaCA9IE1hdGgucm91bmQocmVjdC5oZWlnaHQgLyB0YXJnZXQpO1xuXG4gICAgLy8gQSBmYWN0b3Igb2YgMSBvdmVyIGEgd2hvbGUtc2xpZGUgUk9JIHdvdWxkIGFzayBmb3IgaHVuZHJlZHMgb2YgbWVnYXBpeGVscy5cbiAgICBjb25zdCBNQVhfUElYRUxTID0gMTZfNzc3XzIxNjsgLy8gNDA5NsKyXG4gICAgY29uc3QgcGl4ZWxzID0gdyAqIGg7XG4gICAgaWYgKHBpeGVscyA+IE1BWF9QSVhFTFMpIHtcbiAgICAgIGNvbnN0IGsgPSBNYXRoLnNxcnQoTUFYX1BJWEVMUyAvIHBpeGVscyk7XG4gICAgICB3ID0gTWF0aC5yb3VuZCh3ICogayk7XG4gICAgICBoID0gTWF0aC5yb3VuZChoICogayk7XG4gICAgfVxuICAgIGlmICh3IDwgNjQgfHwgaCA8IDY0KSByZXR1cm4gbnVsbDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByb2kgPSB7XG4gICAgICAgIHg6IE1hdGgucm91bmQocmVjdC54KSxcbiAgICAgICAgeTogTWF0aC5yb3VuZChyZWN0LnkpLFxuICAgICAgICB3aWR0aDogTWF0aC5yb3VuZChyZWN0LndpZHRoKSxcbiAgICAgICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHJlY3QuaGVpZ2h0KSxcbiAgICAgIH0gYXMgUmVjdGFuZ2xlO1xuICAgICAgY29uc3Qgc2NyZWVuID0geyB4OiAwLCB5OiAwLCB3aWR0aDogdywgaGVpZ2h0OiBoIH0gYXMgUmVjdGFuZ2xlO1xuICAgICAgY29uc3QgYnl0ZXMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnRpbGVBY2Nlc3Muem9vbU9uUmVnaW9uKHJvaSwgc2NyZWVuLCAwKSk7XG4gICAgICBpZiAoIWJ5dGVzIHx8IGJ5dGVzLmJ5dGVMZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gICAgICBjb25zdCBiaXRtYXAgPSBhd2FpdCBjcmVhdGVJbWFnZUJpdG1hcChuZXcgQmxvYihbYnl0ZXNdKSk7XG4gICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgIGNhbnZhcy53aWR0aCA9IGJpdG1hcC53aWR0aDtcbiAgICAgIGNhbnZhcy5oZWlnaHQgPSBiaXRtYXAuaGVpZ2h0O1xuICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICBpZiAoIWN0eCkgcmV0dXJuIG51bGw7XG4gICAgICBjdHguZHJhd0ltYWdlKGJpdG1hcCwgMCwgMCk7XG4gICAgICAvLyBSZWFkIHRoZSBkaW1lbnNpb25zIEJFRk9SRSBjbG9zZSgpOiBjbG9zaW5nIGFuIEltYWdlQml0bWFwIHplcm9lcyBpdHNcbiAgICAgIC8vIHdpZHRoL2hlaWdodCwgc28gcmV0dXJuaW5nIHRoZW0gYWZ0ZXJ3YXJkcyB5aWVsZHMgYSAweDAgaW1hZ2Ugd2l0aCBhXG4gICAgICAvLyBmdWxsIHBpeGVsIGJ1ZmZlciDigJQgaW5mZXJlbmNlIHRoZW4gcnVucyBvbiBub3RoaW5nIGFuZCBmaW5kcyBub3RoaW5nLlxuICAgICAgY29uc3Qgd2lkdGggPSBiaXRtYXAud2lkdGg7XG4gICAgICBjb25zdCBoZWlnaHQgPSBiaXRtYXAuaGVpZ2h0O1xuICAgICAgY29uc3Qgb3V0ID0gY3R4LmdldEltYWdlRGF0YSgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIGJpdG1hcC5jbG9zZT8uKCk7XG4gICAgICByZXR1cm4geyBkYXRhOiBvdXQuZGF0YSwgd2lkdGgsIGhlaWdodCB9O1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYWtlUmVnaW9uKHhzOiBudW1iZXJbXSwgeXM6IG51bWJlcltdLCBjbGFzc05hbWU6IHN0cmluZyk6IFJlZ2lvbiB7XG4gICAgY29uc3QgcG9seSA9IG5ldyBQb2x5Z29uKCk7XG4gICAgcG9seS5ucG9pbnRzID0geHMubGVuZ3RoO1xuICAgIHBvbHkueHBvaW50cyA9IHhzO1xuICAgIHBvbHkueXBvaW50cyA9IHlzO1xuICAgIHBvbHkuY29vcmRpbmF0ZXMgPSB4cy5tYXAoKHgsIGkpID0+IFt4LCB5c1tpXV0pO1xuICAgIHBvbHkuY2xvc2VkID0gdHJ1ZTtcblxuICAgIGNvbnN0IHJlZ2lvbiA9IG5ldyBSZWdpb24oKTtcbiAgICByZWdpb24uYm91bmRzID0gcG9seTtcbiAgICAvLyBUaGUgY2xhc3MgbmFtZSBkcml2ZXMgcHJlc2V0IGNvbG91ciByZXNvbHV0aW9uOyBsZWF2aW5nIGBjb2xvcmAgdW5zZXQgbGV0c1xuICAgIC8vIGFuIGV4aXN0aW5nIHByZXNldCBmb3IgdGhpcyBjbGFzcyB3aW4uXG4gICAgcmVnaW9uLmxhYmVsID0gY2xhc3NOYW1lO1xuICAgIHJldHVybiByZWdpb247XG4gIH1cbn1cbiJdfQ==
|
|
@@ -28,6 +28,36 @@ const EYE_DEFAULTS = {
|
|
|
28
28
|
overlapX: 0,
|
|
29
29
|
overlapY: 0,
|
|
30
30
|
};
|
|
31
|
+
/**
|
|
32
|
+
* The retina is an elongated band spanning the whole field, so it crosses tile
|
|
33
|
+
* seams wherever they fall.
|
|
34
|
+
*
|
|
35
|
+
* With no overlap the tiles butt together at fixed boundaries: a structure
|
|
36
|
+
* sitting across a seam is cut in half, each tile sees only a slice, and the
|
|
37
|
+
* slice often fails to clear the confidence threshold — so the object vanishes
|
|
38
|
+
* exactly where the seam lands. Observed as multi-thousand-pixel holes in the
|
|
39
|
+
* middle of an otherwise continuous retina, which closed once overlap was
|
|
40
|
+
* raised.
|
|
41
|
+
*
|
|
42
|
+
* An object of size `s` is guaranteed to sit wholly inside some tile only when
|
|
43
|
+
* the overlap is at least `s / tileSize`; at 60% that covers anything up to
|
|
44
|
+
* ~307px of a 512px tile. The server's own table uses 0 here and has the same
|
|
45
|
+
* blind spot — this deliberately diverges from it.
|
|
46
|
+
*/
|
|
47
|
+
const RETINA_DEFAULTS = {
|
|
48
|
+
confidence: 0.6,
|
|
49
|
+
iouThreshold: 0.5,
|
|
50
|
+
// Cross-tile merging uses intersection-over-*smaller*, so at 0.3 a fragment is
|
|
51
|
+
// discarded once 30% of its own area is covered by a larger box — even when
|
|
52
|
+
// most of it lies outside. On a band detected as a chain of overlapping
|
|
53
|
+
// fragments that deletes the middle ones. Measured on one slide: 0.3 gave two
|
|
54
|
+
// boxes covering 75% of the band with a 3150px hole through it; 0.8 gave four
|
|
55
|
+
// boxes covering 100% with no hole, at the cost of two overlapping pairs.
|
|
56
|
+
// Matches the value jit-ui already sends the server for this checkpoint.
|
|
57
|
+
mergeThreshold: 0.8,
|
|
58
|
+
overlapX: 60,
|
|
59
|
+
overlapY: 60,
|
|
60
|
+
};
|
|
31
61
|
// Embryos are large, touch each other, and are imaged at native scale — hence
|
|
32
62
|
// the heavy overlap and the far looser merge thresholds.
|
|
33
63
|
const EMBRYO_DEFAULTS = {
|
|
@@ -48,7 +78,7 @@ export const YOLO_MODELS = [
|
|
|
48
78
|
id: 'yolov8x-seg-retina',
|
|
49
79
|
label: 'Retina',
|
|
50
80
|
modelUrl: `${HF}/yolov8x-seg-retina-onnx/resolve/main/model.fp16w.onnx`,
|
|
51
|
-
defaults: { ...
|
|
81
|
+
defaults: { ...RETINA_DEFAULTS },
|
|
52
82
|
},
|
|
53
83
|
{
|
|
54
84
|
id: 'yolov8x-seg-embryo-m2',
|
|
@@ -96,4 +126,4 @@ export function setDefaultYoloModel(id) {
|
|
|
96
126
|
export function getDefaultYoloModelId() {
|
|
97
127
|
return defaultModelId;
|
|
98
128
|
}
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieW9sby1tb2RlbC1yZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdG9vbGJhci9zZWdtZW50YXRpb24veW9sby1tb2RlbC1yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBc0JILE1BQU0sRUFBRSxHQUFHLGtDQUFrQyxDQUFDO0FBRTlDLE1BQU0sWUFBWSxHQUFHO0lBQ25CLFVBQVUsRUFBRSxHQUFHO0lBQ2YsWUFBWSxFQUFFLEdBQUc7SUFDakIsY0FBYyxFQUFFLEdBQUc7SUFDbkIsUUFBUSxFQUFFLENBQUM7SUFDWCxRQUFRLEVBQUUsQ0FBQztDQUNaLENBQUM7QUFFRiw4RUFBOEU7QUFDOUUseURBQXlEO0FBQ3pELE1BQU0sZUFBZSxHQUFHO0lBQ3RCLFVBQVUsRUFBRSxHQUFHO0lBQ2YsWUFBWSxFQUFFLEdBQUc7SUFDakIsY0FBYyxFQUFFLEdBQUc7SUFDbkIsUUFBUSxFQUFFLEVBQUU7SUFDWixRQUFRLEVBQUUsRUFBRTtDQUNiLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQW1CO0lBQ3pDO1FBQ0UsRUFBRSxFQUFFLHdCQUF3QjtRQUM1QixLQUFLLEVBQUUsYUFBYTtRQUNwQixRQUFRLEVBQUUsR0FBRyxFQUFFLDREQUE0RDtRQUMzRSxRQUFRLEVBQUUsRUFBRSxHQUFHLFlBQVksRUFBRTtLQUM5QjtJQUNEO1FBQ0UsRUFBRSxFQUFFLG9CQUFvQjtRQUN4QixLQUFLLEVBQUUsUUFBUTtRQUNmLFFBQVEsRUFBRSxHQUFHLEVBQUUsd0RBQXdEO1FBQ3ZFLFFBQVEsRUFBRSxFQUFFLEdBQUcsWUFBWSxFQUFFO0tBQzlCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsdUJBQXVCO1FBQzNCLEtBQUssRUFBRSxhQUFhO1FBQ3BCLFFBQVEsRUFBRSxHQUFHLEVBQUUsMkRBQTJEO1FBQzFFLFFBQVEsRUFBRSxFQUFFLEdBQUcsZUFBZSxFQUFFO0tBQ2pDO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsdUJBQXVCO1FBQzNCLEtBQUssRUFBRSxhQUFhO1FBQ3BCLFFBQVEsRUFBRSxHQUFHLEVBQUUsMkRBQTJEO1FBQzFFLFFBQVEsRUFBRSxFQUFFLEdBQUcsZUFBZSxFQUFFO0tBQ2pDO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLHdCQUF3QixDQUFDO0FBRTlELElBQUksY0FBYyxHQUFHLHFCQUFxQixDQUFDO0FBRTNDLDZFQUE2RTtBQUM3RSxNQUFNLFVBQVUsWUFBWSxDQUFDLEVBQVU7SUFDckMsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRCwyREFBMkQ7QUFDM0QsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEVBQVU7SUFDekMsTUFBTSxDQUFDLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsRUFBVSxFQUFFLElBQTZDO0lBQ3hGLE1BQU0sQ0FBQyxHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQixJQUFJLENBQUMsQ0FBQztRQUFFLE9BQU87SUFDZixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUztRQUFFLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUM1RCxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUztRQUFFLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUMzRCxDQUFDO0FBRUQsK0RBQStEO0FBQy9ELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxFQUFVO0lBQzVDLElBQUksWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUFFLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFDNUMsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUI7SUFDbkMsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVnaXN0cnkgb2YgWU9MT3Y4LXNlZyBpbnN0YW5jZS1zZWdtZW50YXRpb24gbW9kZWxzLlxuICpcbiAqIE1pcnJvcnMge0BsaW5rIFNBTV9NT0RFTFN9OiBwdWJsaWMgSEYtaG9zdGVkIE9OTlggYnkgZGVmYXVsdCBzbyB0aGUgdG9vbCB3b3Jrc1xuICogb3V0IG9mIHRoZSBib3ggaW4gYW55IGhvc3QsIHJlcG9pbnRhYmxlIGF0IHByaXZhdGUgaG9zdGluZyB2aWFcbiAqIHtAbGluayBzZXRZb2xvTW9kZWxVcmxzfS5cbiAqXG4gKiBFYWNoIGVudHJ5IGNhcnJpZXMgdGhlIHBlci1tb2RlbCAqZGVmYXVsdHMqIHRoZSBzZXJ2ZXItc2lkZSB3b3JrZXIgdXNlcyBmb3JcbiAqIHRoYXQgY2hlY2twb2ludC4gVGhlc2UgYXJlIHByb3BlcnRpZXMgb2YgaG93IHRoZSBtb2RlbCB3YXMgdHJhaW5lZCAob2JqZWN0XG4gKiBzY2FsZSwgZXhwZWN0ZWQgY3Jvd2RpbmcpLCBub3QgVUkgcHJlZmVyZW5jZXMg4oCUIHRoZSBlbWJyeW8gbW9kZWxzIHdhbnQgaGVhdnlcbiAqIDYwJSB0aWxlIG92ZXJsYXAgYW5kIGxvb3NlIG1lcmdlIHRocmVzaG9sZHMgYmVjYXVzZSB0aGVpciBvYmplY3RzIGFyZSBsYXJnZVxuICogYW5kIHRvdWNoLCB3aGlsZSB0aGUgZXllIG1vZGVscyB3ZXJlIHRyYWluZWQgb24gc3BhcnNlLCBkb3duc2FtcGxlZCBmaWVsZHMuXG4gKiBLZWVwaW5nIHRoZW0gaGVyZSBtZWFucyBhIGhvc3QgdGhhdCBqdXN0IHBpY2tzIGEgbW9kZWwgZ2V0cyBzYW5lIGJlaGF2aW91clxuICogd2l0aG91dCBoYXZpbmcgdG8ga25vdyBhbnkgb2YgdGhhdC5cbiAqXG4gKiBXZWlnaHRzIHBvaW50IGF0IHRoZSBgbW9kZWwuZnAxNncub25ueGAgdmFyaWFudCBkZWxpYmVyYXRlbHkuIFRoZSBgLmZwMTZgXG4gKiB2YXJpYW50IGFjY3VtdWxhdGVzIGluIGhhbGYgcHJlY2lzaW9uIG9uIFdlYkdQVSBhbmQsIGF0IHRoZSB4LXNjYWxlIHRoZXNlXG4gKiBtb2RlbHMgdXNlLCBwcm9kdWNlcyBtYXRlcmlhbGx5IHdyb25nIGJveGVzOyBgZnAxNndgIHN0b3JlcyB3ZWlnaHRzIGluIGZwMTZcbiAqIGFuZCBjb21wdXRlcyBpbiBmcDMyLCBzbyBpdCBpcyBoYWxmIHRoZSBkb3dubG9hZCBhdCBpZGVudGljYWwgYWNjdXJhY3kuXG4gKlxuICogRXhwb3J0IHRvb2xpbmc6IHRoZSBzaWJsaW5nIGBicm93c2VyLW9ubngtdG9vbHNgIHByb2plY3QuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBZb2xvTW9kZWxEZWYge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICAvKiogVVJMIG9mIHRoZSBgLm9ubnhgIHdlaWdodHMuIEVtcHR5IGRpc2FibGVzIHRoZSBtb2RlbC4gKi9cbiAgbW9kZWxVcmw6IHN0cmluZztcbiAgLyoqXG4gICAqIFVSTCBvZiB0aGUgYG1vZGVsLmpzb25gIHNpZGVjYXIuIE9taXQgdG8gdXNlIGBtb2RlbC5qc29uYCBhbG9uZ3NpZGUgdGhlXG4gICAqIHdlaWdodHMsIHdoaWNoIGlzIGhvdyBldmVyeSBwdWJsaXNoZWQgcmVwbyBpcyBsYWlkIG91dC5cbiAgICovXG4gIG1ldGFVcmw/OiBzdHJpbmc7XG4gIC8qKiBQZXItbW9kZWwgZGVmYXVsdHMsIGZyb20gdGhlIHNlcnZlciB3b3JrZXIncyBtb2RlbCB0YWJsZS4gKi9cbiAgZGVmYXVsdHM6IHtcbiAgICBjb25maWRlbmNlOiBudW1iZXI7XG4gICAgaW91VGhyZXNob2xkOiBudW1iZXI7XG4gICAgbWVyZ2VUaHJlc2hvbGQ6IG51bWJlcjtcbiAgICBvdmVybGFwWDogbnVtYmVyO1xuICAgIG92ZXJsYXBZOiBudW1iZXI7XG4gIH07XG59XG5cbmNvbnN0IEhGID0gJ2h0dHBzOi8vaHVnZ2luZ2ZhY2UuY28vQmFsbG9uOTk5JztcblxuY29uc3QgRVlFX0RFRkFVTFRTID0ge1xuICBjb25maWRlbmNlOiAwLjYsXG4gIGlvdVRocmVzaG9sZDogMC41LFxuICBtZXJnZVRocmVzaG9sZDogMC4zLFxuICBvdmVybGFwWDogMCxcbiAgb3ZlcmxhcFk6IDAsXG59O1xuXG4vLyBFbWJyeW9zIGFyZSBsYXJnZSwgdG91Y2ggZWFjaCBvdGhlciwgYW5kIGFyZSBpbWFnZWQgYXQgbmF0aXZlIHNjYWxlIOKAlCBoZW5jZVxuLy8gdGhlIGhlYXZ5IG92ZXJsYXAgYW5kIHRoZSBmYXIgbG9vc2VyIG1lcmdlIHRocmVzaG9sZHMuXG5jb25zdCBFTUJSWU9fREVGQVVMVFMgPSB7XG4gIGNvbmZpZGVuY2U6IDAuNixcbiAgaW91VGhyZXNob2xkOiAwLjgsXG4gIG1lcmdlVGhyZXNob2xkOiAwLjgsXG4gIG92ZXJsYXBYOiA2MCxcbiAgb3ZlcmxhcFk6IDYwLFxufTtcblxuZXhwb3J0IGNvbnN0IFlPTE9fTU9ERUxTOiBZb2xvTW9kZWxEZWZbXSA9IFtcbiAge1xuICAgIGlkOiAneW9sb3Y4eC1zZWctb3B0aWNuZXJ2ZScsXG4gICAgbGFiZWw6ICdPcHRpYyBuZXJ2ZScsXG4gICAgbW9kZWxVcmw6IGAke0hGfS95b2xvdjh4LXNlZy1vcHRpY25lcnZlLW9ubngvcmVzb2x2ZS9tYWluL21vZGVsLmZwMTZ3Lm9ubnhgLFxuICAgIGRlZmF1bHRzOiB7IC4uLkVZRV9ERUZBVUxUUyB9LFxuICB9LFxuICB7XG4gICAgaWQ6ICd5b2xvdjh4LXNlZy1yZXRpbmEnLFxuICAgIGxhYmVsOiAnUmV0aW5hJyxcbiAgICBtb2RlbFVybDogYCR7SEZ9L3lvbG92OHgtc2VnLXJldGluYS1vbm54L3Jlc29sdmUvbWFpbi9tb2RlbC5mcDE2dy5vbm54YCxcbiAgICBkZWZhdWx0czogeyAuLi5FWUVfREVGQVVMVFMgfSxcbiAgfSxcbiAge1xuICAgIGlkOiAneW9sb3Y4eC1zZWctZW1icnlvLW0yJyxcbiAgICBsYWJlbDogJ0VtYnJ5byAoTTIpJyxcbiAgICBtb2RlbFVybDogYCR7SEZ9L3lvbG92OHgtc2VnLWVtYnJ5by1tMi1vbm54L3Jlc29sdmUvbWFpbi9tb2RlbC5mcDE2dy5vbm54YCxcbiAgICBkZWZhdWx0czogeyAuLi5FTUJSWU9fREVGQVVMVFMgfSxcbiAgfSxcbiAge1xuICAgIGlkOiAneW9sb3Y4eC1zZWctZW1icnlvLW0zJyxcbiAgICBsYWJlbDogJ0VtYnJ5byAoTTMpJyxcbiAgICBtb2RlbFVybDogYCR7SEZ9L3lvbG92OHgtc2VnLWVtYnJ5by1tMy1vbm54L3Jlc29sdmUvbWFpbi9tb2RlbC5mcDE2dy5vbm54YCxcbiAgICBkZWZhdWx0czogeyAuLi5FTUJSWU9fREVGQVVMVFMgfSxcbiAgfSxcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1lPTE9fTU9ERUxfSUQgPSAneW9sb3Y4eC1zZWctb3B0aWNuZXJ2ZSc7XG5cbmxldCBkZWZhdWx0TW9kZWxJZCA9IERFRkFVTFRfWU9MT19NT0RFTF9JRDtcblxuLyoqIExvb2sgdXAgYSBtb2RlbCBkZWZpbml0aW9uIGJ5IGlkLiBSZXR1cm5zIHVuZGVmaW5lZCBmb3IgYW4gdW5rbm93biBpZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRZb2xvTW9kZWwoaWQ6IHN0cmluZyk6IFlvbG9Nb2RlbERlZiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBZT0xPX01PREVMUy5maW5kKChtKSA9PiBtLmlkID09PSBpZCk7XG59XG5cbi8qKiBXaGV0aGVyIGEgbW9kZWwgaGFzIGEgdXNhYmxlIHdlaWdodHMgVVJMIGNvbmZpZ3VyZWQuICovXG5leHBvcnQgZnVuY3Rpb24gaXNZb2xvTW9kZWxSZWFkeShpZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IG0gPSBnZXRZb2xvTW9kZWwoaWQpO1xuICByZXR1cm4gISFtICYmIG0ubW9kZWxVcmwudHJpbSgpLmxlbmd0aCA+IDA7XG59XG5cbi8qKlxuICogUmVwb2ludCBhIG1vZGVsIGF0IGRpZmZlcmVudCBob3N0aW5nIChlLmcuIGEgR0NTIGJ1Y2tldCBvciBhIHNhbWUtb3JpZ2luXG4gKiBwcm94eSkuIENhbGwgb25jZSBhdCBhcHAgaW5pdCwgYmVmb3JlIHRoZSBmaXJzdCBydW4uIEFuIGVtcHR5IGBtb2RlbFVybGBcbiAqIGRpc2FibGVzIHRoZSBtb2RlbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFlvbG9Nb2RlbFVybHMoaWQ6IHN0cmluZywgdXJsczogeyBtb2RlbFVybD86IHN0cmluZzsgbWV0YVVybD86IHN0cmluZyB9KTogdm9pZCB7XG4gIGNvbnN0IG0gPSBnZXRZb2xvTW9kZWwoaWQpO1xuICBpZiAoIW0pIHJldHVybjtcbiAgaWYgKHVybHMubW9kZWxVcmwgIT09IHVuZGVmaW5lZCkgbS5tb2RlbFVybCA9IHVybHMubW9kZWxVcmw7XG4gIGlmICh1cmxzLm1ldGFVcmwgIT09IHVuZGVmaW5lZCkgbS5tZXRhVXJsID0gdXJscy5tZXRhVXJsO1xufVxuXG4vKiogQ2hhbmdlIHdoaWNoIG1vZGVsIHJ1bnMgd2hlbiBhIGNhbGxlciBkb2VzIG5vdCBuYW1lIG9uZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXREZWZhdWx0WW9sb01vZGVsKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKGdldFlvbG9Nb2RlbChpZCkpIGRlZmF1bHRNb2RlbElkID0gaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0WW9sb01vZGVsSWQoKTogc3RyaW5nIHtcbiAgcmV0dXJuIGRlZmF1bHRNb2RlbElkO1xufVxuIl19
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieW9sby1tb2RlbC1yZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdG9vbGJhci9zZWdtZW50YXRpb24veW9sby1tb2RlbC1yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBc0JILE1BQU0sRUFBRSxHQUFHLGtDQUFrQyxDQUFDO0FBRTlDLE1BQU0sWUFBWSxHQUFHO0lBQ25CLFVBQVUsRUFBRSxHQUFHO0lBQ2YsWUFBWSxFQUFFLEdBQUc7SUFDakIsY0FBYyxFQUFFLEdBQUc7SUFDbkIsUUFBUSxFQUFFLENBQUM7SUFDWCxRQUFRLEVBQUUsQ0FBQztDQUNaLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLGVBQWUsR0FBRztJQUN0QixVQUFVLEVBQUUsR0FBRztJQUNmLFlBQVksRUFBRSxHQUFHO0lBQ2pCLCtFQUErRTtJQUMvRSw0RUFBNEU7SUFDNUUsd0VBQXdFO0lBQ3hFLDhFQUE4RTtJQUM5RSw4RUFBOEU7SUFDOUUsMEVBQTBFO0lBQzFFLHlFQUF5RTtJQUN6RSxjQUFjLEVBQUUsR0FBRztJQUNuQixRQUFRLEVBQUUsRUFBRTtJQUNaLFFBQVEsRUFBRSxFQUFFO0NBQ2IsQ0FBQztBQUVGLDhFQUE4RTtBQUM5RSx5REFBeUQ7QUFDekQsTUFBTSxlQUFlLEdBQUc7SUFDdEIsVUFBVSxFQUFFLEdBQUc7SUFDZixZQUFZLEVBQUUsR0FBRztJQUNqQixjQUFjLEVBQUUsR0FBRztJQUNuQixRQUFRLEVBQUUsRUFBRTtJQUNaLFFBQVEsRUFBRSxFQUFFO0NBQ2IsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBbUI7SUFDekM7UUFDRSxFQUFFLEVBQUUsd0JBQXdCO1FBQzVCLEtBQUssRUFBRSxhQUFhO1FBQ3BCLFFBQVEsRUFBRSxHQUFHLEVBQUUsNERBQTREO1FBQzNFLFFBQVEsRUFBRSxFQUFFLEdBQUcsWUFBWSxFQUFFO0tBQzlCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsb0JBQW9CO1FBQ3hCLEtBQUssRUFBRSxRQUFRO1FBQ2YsUUFBUSxFQUFFLEdBQUcsRUFBRSx3REFBd0Q7UUFDdkUsUUFBUSxFQUFFLEVBQUUsR0FBRyxlQUFlLEVBQUU7S0FDakM7SUFDRDtRQUNFLEVBQUUsRUFBRSx1QkFBdUI7UUFDM0IsS0FBSyxFQUFFLGFBQWE7UUFDcEIsUUFBUSxFQUFFLEdBQUcsRUFBRSwyREFBMkQ7UUFDMUUsUUFBUSxFQUFFLEVBQUUsR0FBRyxlQUFlLEVBQUU7S0FDakM7SUFDRDtRQUNFLEVBQUUsRUFBRSx1QkFBdUI7UUFDM0IsS0FBSyxFQUFFLGFBQWE7UUFDcEIsUUFBUSxFQUFFLEdBQUcsRUFBRSwyREFBMkQ7UUFDMUUsUUFBUSxFQUFFLEVBQUUsR0FBRyxlQUFlLEVBQUU7S0FDakM7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsd0JBQXdCLENBQUM7QUFFOUQsSUFBSSxjQUFjLEdBQUcscUJBQXFCLENBQUM7QUFFM0MsNkVBQTZFO0FBQzdFLE1BQU0sVUFBVSxZQUFZLENBQUMsRUFBVTtJQUNyQyxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUVELDJEQUEyRDtBQUMzRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsRUFBVTtJQUN6QyxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxFQUFVLEVBQUUsSUFBNkM7SUFDeEYsTUFBTSxDQUFDLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLElBQUksQ0FBQyxDQUFDO1FBQUUsT0FBTztJQUNmLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTO1FBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzVELElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTO1FBQUUsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQzNELENBQUM7QUFFRCwrREFBK0Q7QUFDL0QsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEVBQVU7SUFDNUMsSUFBSSxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQUUsY0FBYyxHQUFHLEVBQUUsQ0FBQztBQUM1QyxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQjtJQUNuQyxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZWdpc3RyeSBvZiBZT0xPdjgtc2VnIGluc3RhbmNlLXNlZ21lbnRhdGlvbiBtb2RlbHMuXG4gKlxuICogTWlycm9ycyB7QGxpbmsgU0FNX01PREVMU306IHB1YmxpYyBIRi1ob3N0ZWQgT05OWCBieSBkZWZhdWx0IHNvIHRoZSB0b29sIHdvcmtzXG4gKiBvdXQgb2YgdGhlIGJveCBpbiBhbnkgaG9zdCwgcmVwb2ludGFibGUgYXQgcHJpdmF0ZSBob3N0aW5nIHZpYVxuICoge0BsaW5rIHNldFlvbG9Nb2RlbFVybHN9LlxuICpcbiAqIEVhY2ggZW50cnkgY2FycmllcyB0aGUgcGVyLW1vZGVsICpkZWZhdWx0cyogdGhlIHNlcnZlci1zaWRlIHdvcmtlciB1c2VzIGZvclxuICogdGhhdCBjaGVja3BvaW50LiBUaGVzZSBhcmUgcHJvcGVydGllcyBvZiBob3cgdGhlIG1vZGVsIHdhcyB0cmFpbmVkIChvYmplY3RcbiAqIHNjYWxlLCBleHBlY3RlZCBjcm93ZGluZyksIG5vdCBVSSBwcmVmZXJlbmNlcyDigJQgdGhlIGVtYnJ5byBtb2RlbHMgd2FudCBoZWF2eVxuICogNjAlIHRpbGUgb3ZlcmxhcCBhbmQgbG9vc2UgbWVyZ2UgdGhyZXNob2xkcyBiZWNhdXNlIHRoZWlyIG9iamVjdHMgYXJlIGxhcmdlXG4gKiBhbmQgdG91Y2gsIHdoaWxlIHRoZSBleWUgbW9kZWxzIHdlcmUgdHJhaW5lZCBvbiBzcGFyc2UsIGRvd25zYW1wbGVkIGZpZWxkcy5cbiAqIEtlZXBpbmcgdGhlbSBoZXJlIG1lYW5zIGEgaG9zdCB0aGF0IGp1c3QgcGlja3MgYSBtb2RlbCBnZXRzIHNhbmUgYmVoYXZpb3VyXG4gKiB3aXRob3V0IGhhdmluZyB0byBrbm93IGFueSBvZiB0aGF0LlxuICpcbiAqIFdlaWdodHMgcG9pbnQgYXQgdGhlIGBtb2RlbC5mcDE2dy5vbm54YCB2YXJpYW50IGRlbGliZXJhdGVseS4gVGhlIGAuZnAxNmBcbiAqIHZhcmlhbnQgYWNjdW11bGF0ZXMgaW4gaGFsZiBwcmVjaXNpb24gb24gV2ViR1BVIGFuZCwgYXQgdGhlIHgtc2NhbGUgdGhlc2VcbiAqIG1vZGVscyB1c2UsIHByb2R1Y2VzIG1hdGVyaWFsbHkgd3JvbmcgYm94ZXM7IGBmcDE2d2Agc3RvcmVzIHdlaWdodHMgaW4gZnAxNlxuICogYW5kIGNvbXB1dGVzIGluIGZwMzIsIHNvIGl0IGlzIGhhbGYgdGhlIGRvd25sb2FkIGF0IGlkZW50aWNhbCBhY2N1cmFjeS5cbiAqXG4gKiBFeHBvcnQgdG9vbGluZzogdGhlIHNpYmxpbmcgYGJyb3dzZXItb25ueC10b29sc2AgcHJvamVjdC5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIFlvbG9Nb2RlbERlZiB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIC8qKiBVUkwgb2YgdGhlIGAub25ueGAgd2VpZ2h0cy4gRW1wdHkgZGlzYWJsZXMgdGhlIG1vZGVsLiAqL1xuICBtb2RlbFVybDogc3RyaW5nO1xuICAvKipcbiAgICogVVJMIG9mIHRoZSBgbW9kZWwuanNvbmAgc2lkZWNhci4gT21pdCB0byB1c2UgYG1vZGVsLmpzb25gIGFsb25nc2lkZSB0aGVcbiAgICogd2VpZ2h0cywgd2hpY2ggaXMgaG93IGV2ZXJ5IHB1Ymxpc2hlZCByZXBvIGlzIGxhaWQgb3V0LlxuICAgKi9cbiAgbWV0YVVybD86IHN0cmluZztcbiAgLyoqIFBlci1tb2RlbCBkZWZhdWx0cywgZnJvbSB0aGUgc2VydmVyIHdvcmtlcidzIG1vZGVsIHRhYmxlLiAqL1xuICBkZWZhdWx0czoge1xuICAgIGNvbmZpZGVuY2U6IG51bWJlcjtcbiAgICBpb3VUaHJlc2hvbGQ6IG51bWJlcjtcbiAgICBtZXJnZVRocmVzaG9sZDogbnVtYmVyO1xuICAgIG92ZXJsYXBYOiBudW1iZXI7XG4gICAgb3ZlcmxhcFk6IG51bWJlcjtcbiAgfTtcbn1cblxuY29uc3QgSEYgPSAnaHR0cHM6Ly9odWdnaW5nZmFjZS5jby9CYWxsb245OTknO1xuXG5jb25zdCBFWUVfREVGQVVMVFMgPSB7XG4gIGNvbmZpZGVuY2U6IDAuNixcbiAgaW91VGhyZXNob2xkOiAwLjUsXG4gIG1lcmdlVGhyZXNob2xkOiAwLjMsXG4gIG92ZXJsYXBYOiAwLFxuICBvdmVybGFwWTogMCxcbn07XG5cbi8qKlxuICogVGhlIHJldGluYSBpcyBhbiBlbG9uZ2F0ZWQgYmFuZCBzcGFubmluZyB0aGUgd2hvbGUgZmllbGQsIHNvIGl0IGNyb3NzZXMgdGlsZVxuICogc2VhbXMgd2hlcmV2ZXIgdGhleSBmYWxsLlxuICpcbiAqIFdpdGggbm8gb3ZlcmxhcCB0aGUgdGlsZXMgYnV0dCB0b2dldGhlciBhdCBmaXhlZCBib3VuZGFyaWVzOiBhIHN0cnVjdHVyZVxuICogc2l0dGluZyBhY3Jvc3MgYSBzZWFtIGlzIGN1dCBpbiBoYWxmLCBlYWNoIHRpbGUgc2VlcyBvbmx5IGEgc2xpY2UsIGFuZCB0aGVcbiAqIHNsaWNlIG9mdGVuIGZhaWxzIHRvIGNsZWFyIHRoZSBjb25maWRlbmNlIHRocmVzaG9sZCDigJQgc28gdGhlIG9iamVjdCB2YW5pc2hlc1xuICogZXhhY3RseSB3aGVyZSB0aGUgc2VhbSBsYW5kcy4gT2JzZXJ2ZWQgYXMgbXVsdGktdGhvdXNhbmQtcGl4ZWwgaG9sZXMgaW4gdGhlXG4gKiBtaWRkbGUgb2YgYW4gb3RoZXJ3aXNlIGNvbnRpbnVvdXMgcmV0aW5hLCB3aGljaCBjbG9zZWQgb25jZSBvdmVybGFwIHdhc1xuICogcmFpc2VkLlxuICpcbiAqIEFuIG9iamVjdCBvZiBzaXplIGBzYCBpcyBndWFyYW50ZWVkIHRvIHNpdCB3aG9sbHkgaW5zaWRlIHNvbWUgdGlsZSBvbmx5IHdoZW5cbiAqIHRoZSBvdmVybGFwIGlzIGF0IGxlYXN0IGBzIC8gdGlsZVNpemVgOyBhdCA2MCUgdGhhdCBjb3ZlcnMgYW55dGhpbmcgdXAgdG9cbiAqIH4zMDdweCBvZiBhIDUxMnB4IHRpbGUuIFRoZSBzZXJ2ZXIncyBvd24gdGFibGUgdXNlcyAwIGhlcmUgYW5kIGhhcyB0aGUgc2FtZVxuICogYmxpbmQgc3BvdCDigJQgdGhpcyBkZWxpYmVyYXRlbHkgZGl2ZXJnZXMgZnJvbSBpdC5cbiAqL1xuY29uc3QgUkVUSU5BX0RFRkFVTFRTID0ge1xuICBjb25maWRlbmNlOiAwLjYsXG4gIGlvdVRocmVzaG9sZDogMC41LFxuICAvLyBDcm9zcy10aWxlIG1lcmdpbmcgdXNlcyBpbnRlcnNlY3Rpb24tb3Zlci0qc21hbGxlciosIHNvIGF0IDAuMyBhIGZyYWdtZW50IGlzXG4gIC8vIGRpc2NhcmRlZCBvbmNlIDMwJSBvZiBpdHMgb3duIGFyZWEgaXMgY292ZXJlZCBieSBhIGxhcmdlciBib3gg4oCUIGV2ZW4gd2hlblxuICAvLyBtb3N0IG9mIGl0IGxpZXMgb3V0c2lkZS4gT24gYSBiYW5kIGRldGVjdGVkIGFzIGEgY2hhaW4gb2Ygb3ZlcmxhcHBpbmdcbiAgLy8gZnJhZ21lbnRzIHRoYXQgZGVsZXRlcyB0aGUgbWlkZGxlIG9uZXMuIE1lYXN1cmVkIG9uIG9uZSBzbGlkZTogMC4zIGdhdmUgdHdvXG4gIC8vIGJveGVzIGNvdmVyaW5nIDc1JSBvZiB0aGUgYmFuZCB3aXRoIGEgMzE1MHB4IGhvbGUgdGhyb3VnaCBpdDsgMC44IGdhdmUgZm91clxuICAvLyBib3hlcyBjb3ZlcmluZyAxMDAlIHdpdGggbm8gaG9sZSwgYXQgdGhlIGNvc3Qgb2YgdHdvIG92ZXJsYXBwaW5nIHBhaXJzLlxuICAvLyBNYXRjaGVzIHRoZSB2YWx1ZSBqaXQtdWkgYWxyZWFkeSBzZW5kcyB0aGUgc2VydmVyIGZvciB0aGlzIGNoZWNrcG9pbnQuXG4gIG1lcmdlVGhyZXNob2xkOiAwLjgsXG4gIG92ZXJsYXBYOiA2MCxcbiAgb3ZlcmxhcFk6IDYwLFxufTtcblxuLy8gRW1icnlvcyBhcmUgbGFyZ2UsIHRvdWNoIGVhY2ggb3RoZXIsIGFuZCBhcmUgaW1hZ2VkIGF0IG5hdGl2ZSBzY2FsZSDigJQgaGVuY2Vcbi8vIHRoZSBoZWF2eSBvdmVybGFwIGFuZCB0aGUgZmFyIGxvb3NlciBtZXJnZSB0aHJlc2hvbGRzLlxuY29uc3QgRU1CUllPX0RFRkFVTFRTID0ge1xuICBjb25maWRlbmNlOiAwLjYsXG4gIGlvdVRocmVzaG9sZDogMC44LFxuICBtZXJnZVRocmVzaG9sZDogMC44LFxuICBvdmVybGFwWDogNjAsXG4gIG92ZXJsYXBZOiA2MCxcbn07XG5cbmV4cG9ydCBjb25zdCBZT0xPX01PREVMUzogWW9sb01vZGVsRGVmW10gPSBbXG4gIHtcbiAgICBpZDogJ3lvbG92OHgtc2VnLW9wdGljbmVydmUnLFxuICAgIGxhYmVsOiAnT3B0aWMgbmVydmUnLFxuICAgIG1vZGVsVXJsOiBgJHtIRn0veW9sb3Y4eC1zZWctb3B0aWNuZXJ2ZS1vbm54L3Jlc29sdmUvbWFpbi9tb2RlbC5mcDE2dy5vbm54YCxcbiAgICBkZWZhdWx0czogeyAuLi5FWUVfREVGQVVMVFMgfSxcbiAgfSxcbiAge1xuICAgIGlkOiAneW9sb3Y4eC1zZWctcmV0aW5hJyxcbiAgICBsYWJlbDogJ1JldGluYScsXG4gICAgbW9kZWxVcmw6IGAke0hGfS95b2xvdjh4LXNlZy1yZXRpbmEtb25ueC9yZXNvbHZlL21haW4vbW9kZWwuZnAxNncub25ueGAsXG4gICAgZGVmYXVsdHM6IHsgLi4uUkVUSU5BX0RFRkFVTFRTIH0sXG4gIH0sXG4gIHtcbiAgICBpZDogJ3lvbG92OHgtc2VnLWVtYnJ5by1tMicsXG4gICAgbGFiZWw6ICdFbWJyeW8gKE0yKScsXG4gICAgbW9kZWxVcmw6IGAke0hGfS95b2xvdjh4LXNlZy1lbWJyeW8tbTItb25ueC9yZXNvbHZlL21haW4vbW9kZWwuZnAxNncub25ueGAsXG4gICAgZGVmYXVsdHM6IHsgLi4uRU1CUllPX0RFRkFVTFRTIH0sXG4gIH0sXG4gIHtcbiAgICBpZDogJ3lvbG92OHgtc2VnLWVtYnJ5by1tMycsXG4gICAgbGFiZWw6ICdFbWJyeW8gKE0zKScsXG4gICAgbW9kZWxVcmw6IGAke0hGfS95b2xvdjh4LXNlZy1lbWJyeW8tbTMtb25ueC9yZXNvbHZlL21haW4vbW9kZWwuZnAxNncub25ueGAsXG4gICAgZGVmYXVsdHM6IHsgLi4uRU1CUllPX0RFRkFVTFRTIH0sXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9ZT0xPX01PREVMX0lEID0gJ3lvbG92OHgtc2VnLW9wdGljbmVydmUnO1xuXG5sZXQgZGVmYXVsdE1vZGVsSWQgPSBERUZBVUxUX1lPTE9fTU9ERUxfSUQ7XG5cbi8qKiBMb29rIHVwIGEgbW9kZWwgZGVmaW5pdGlvbiBieSBpZC4gUmV0dXJucyB1bmRlZmluZWQgZm9yIGFuIHVua25vd24gaWQuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0WW9sb01vZGVsKGlkOiBzdHJpbmcpOiBZb2xvTW9kZWxEZWYgfCB1bmRlZmluZWQge1xuICByZXR1cm4gWU9MT19NT0RFTFMuZmluZCgobSkgPT4gbS5pZCA9PT0gaWQpO1xufVxuXG4vKiogV2hldGhlciBhIG1vZGVsIGhhcyBhIHVzYWJsZSB3ZWlnaHRzIFVSTCBjb25maWd1cmVkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzWW9sb01vZGVsUmVhZHkoaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBtID0gZ2V0WW9sb01vZGVsKGlkKTtcbiAgcmV0dXJuICEhbSAmJiBtLm1vZGVsVXJsLnRyaW0oKS5sZW5ndGggPiAwO1xufVxuXG4vKipcbiAqIFJlcG9pbnQgYSBtb2RlbCBhdCBkaWZmZXJlbnQgaG9zdGluZyAoZS5nLiBhIEdDUyBidWNrZXQgb3IgYSBzYW1lLW9yaWdpblxuICogcHJveHkpLiBDYWxsIG9uY2UgYXQgYXBwIGluaXQsIGJlZm9yZSB0aGUgZmlyc3QgcnVuLiBBbiBlbXB0eSBgbW9kZWxVcmxgXG4gKiBkaXNhYmxlcyB0aGUgbW9kZWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRZb2xvTW9kZWxVcmxzKGlkOiBzdHJpbmcsIHVybHM6IHsgbW9kZWxVcmw/OiBzdHJpbmc7IG1ldGFVcmw/OiBzdHJpbmcgfSk6IHZvaWQge1xuICBjb25zdCBtID0gZ2V0WW9sb01vZGVsKGlkKTtcbiAgaWYgKCFtKSByZXR1cm47XG4gIGlmICh1cmxzLm1vZGVsVXJsICE9PSB1bmRlZmluZWQpIG0ubW9kZWxVcmwgPSB1cmxzLm1vZGVsVXJsO1xuICBpZiAodXJscy5tZXRhVXJsICE9PSB1bmRlZmluZWQpIG0ubWV0YVVybCA9IHVybHMubWV0YVVybDtcbn1cblxuLyoqIENoYW5nZSB3aGljaCBtb2RlbCBydW5zIHdoZW4gYSBjYWxsZXIgZG9lcyBub3QgbmFtZSBvbmUuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RGVmYXVsdFlvbG9Nb2RlbChpZDogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChnZXRZb2xvTW9kZWwoaWQpKSBkZWZhdWx0TW9kZWxJZCA9IGlkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFlvbG9Nb2RlbElkKCk6IHN0cmluZyB7XG4gIHJldHVybiBkZWZhdWx0TW9kZWxJZDtcbn1cbiJdfQ==
|