@esotericsoftware/spine-webgl 4.2.86 → 4.2.87

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/WebGL.d.ts CHANGED
@@ -26,12 +26,15 @@
26
26
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
27
  * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
28
  *****************************************************************************/
29
- import { Restorable } from "@esotericsoftware/spine-core";
30
- export declare class ManagedWebGLRenderingContext {
29
+ import { Disposable, type Restorable } from "@esotericsoftware/spine-core";
30
+ export declare class ManagedWebGLRenderingContext implements Disposable {
31
31
  canvas: HTMLCanvasElement | OffscreenCanvas;
32
32
  gl: WebGLRenderingContext;
33
33
  private restorables;
34
34
  constructor(canvasOrContext: HTMLCanvasElement | WebGLRenderingContext, contextConfig?: any);
35
+ private contextLostHandler;
36
+ private contextRestoredHandler;
37
+ dispose(): void;
35
38
  addRestorable(restorable: Restorable): void;
36
39
  removeRestorable(restorable: Restorable): void;
37
40
  }
package/dist/WebGL.js CHANGED
@@ -35,21 +35,26 @@ export class ManagedWebGLRenderingContext {
35
35
  let canvas = canvasOrContext;
36
36
  this.gl = (canvas.getContext("webgl2", contextConfig) || canvas.getContext("webgl", contextConfig));
37
37
  this.canvas = canvas;
38
- canvas.addEventListener("webglcontextlost", (e) => {
39
- let event = e;
40
- if (e)
41
- e.preventDefault();
42
- });
43
- canvas.addEventListener("webglcontextrestored", (e) => {
44
- for (let i = 0, n = this.restorables.length; i < n; i++)
45
- this.restorables[i].restore();
46
- });
38
+ canvas.addEventListener("webglcontextlost", this.contextLostHandler);
39
+ canvas.addEventListener("webglcontextrestored", this.contextRestoredHandler);
47
40
  }
48
41
  else {
49
42
  this.gl = canvasOrContext;
50
43
  this.canvas = this.gl.canvas;
51
44
  }
52
45
  }
46
+ contextLostHandler(e) {
47
+ if (e)
48
+ e.preventDefault();
49
+ }
50
+ contextRestoredHandler(e) {
51
+ for (let i = 0, n = this.restorables.length; i < n; i++)
52
+ this.restorables[i].restore();
53
+ }
54
+ dispose() {
55
+ this.canvas.removeEventListener("webglcontextlost", this.contextLostHandler);
56
+ this.canvas.removeEventListener("webglcontextrestored", this.contextRestoredHandler);
57
+ }
53
58
  addRestorable(restorable) {
54
59
  this.restorables.push(restorable);
55
60
  }
@@ -59,4 +64,4 @@ export class ManagedWebGLRenderingContext {
59
64
  this.restorables.splice(index, 1);
60
65
  }
61
66
  }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2ViR0wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvV2ViR0wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBSS9FLE1BQU0sT0FBTyw0QkFBNEI7SUFDakMsTUFBTSxDQUFzQztJQUM1QyxFQUFFLENBQXdCO0lBQ3pCLFdBQVcsR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO0lBRTlDLFlBQWEsZUFBMEQsRUFBRSxnQkFBcUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQzlHLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZSxZQUFZLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLHNCQUFzQixLQUFLLFdBQVcsSUFBSSxlQUFlLFlBQVksc0JBQXNCLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbkssSUFBSSxNQUFNLEdBQXNCLGVBQWUsQ0FBQztZQUNoRCxJQUFJLENBQUMsRUFBRSxHQUEwQixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDM0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDckIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBTSxFQUFFLEVBQUU7Z0JBQ3RELElBQUksS0FBSyxHQUFzQixDQUFDLENBQUM7Z0JBQ2pDLElBQUksQ0FBQztvQkFBRSxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7WUFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFNLEVBQUUsRUFBRTtnQkFDMUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO29CQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDUCxJQUFJLENBQUMsRUFBRSxHQUFHLGVBQWUsQ0FBQztZQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQzlCLENBQUM7SUFDRixDQUFDO0lBRUQsYUFBYSxDQUFFLFVBQXNCO1FBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxnQkFBZ0IsQ0FBRSxVQUFzQjtRQUN2QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7WUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSZXN0b3JhYmxlIH0gZnJvbSBcIkBlc290ZXJpY3NvZnR3YXJlL3NwaW5lLWNvcmVcIjtcblxuZXhwb3J0IGNsYXNzIE1hbmFnZWRXZWJHTFJlbmRlcmluZ0NvbnRleHQge1xuXHRwdWJsaWMgY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCB8IE9mZnNjcmVlbkNhbnZhcztcblx0cHVibGljIGdsOiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ7XG5cdHByaXZhdGUgcmVzdG9yYWJsZXMgPSBuZXcgQXJyYXk8UmVzdG9yYWJsZT4oKTtcblxuXHRjb25zdHJ1Y3RvciAoY2FudmFzT3JDb250ZXh0OiBIVE1MQ2FudmFzRWxlbWVudCB8IFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgY29udGV4dENvbmZpZzogYW55ID0geyBhbHBoYTogXCJ0cnVlXCIgfSkge1xuXHRcdGlmICghKChjYW52YXNPckNvbnRleHQgaW5zdGFuY2VvZiBXZWJHTFJlbmRlcmluZ0NvbnRleHQpIHx8ICh0eXBlb2YgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCAhPT0gJ3VuZGVmaW5lZCcgJiYgY2FudmFzT3JDb250ZXh0IGluc3RhbmNlb2YgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCkpKSB7XG5cdFx0XHRsZXQgY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCA9IGNhbnZhc09yQ29udGV4dDtcblx0XHRcdHRoaXMuZ2wgPSA8V2ViR0xSZW5kZXJpbmdDb250ZXh0PihjYW52YXMuZ2V0Q29udGV4dChcIndlYmdsMlwiLCBjb250ZXh0Q29uZmlnKSB8fCBjYW52YXMuZ2V0Q29udGV4dChcIndlYmdsXCIsIGNvbnRleHRDb25maWcpKTtcblx0XHRcdHRoaXMuY2FudmFzID0gY2FudmFzO1xuXHRcdFx0Y2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoXCJ3ZWJnbGNvbnRleHRsb3N0XCIsIChlOiBhbnkpID0+IHtcblx0XHRcdFx0bGV0IGV2ZW50ID0gPFdlYkdMQ29udGV4dEV2ZW50PmU7XG5cdFx0XHRcdGlmIChlKSBlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHR9KTtcblx0XHRcdGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKFwid2ViZ2xjb250ZXh0cmVzdG9yZWRcIiwgKGU6IGFueSkgPT4ge1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHRoaXMucmVzdG9yYWJsZXMubGVuZ3RoOyBpIDwgbjsgaSsrKVxuXHRcdFx0XHRcdHRoaXMucmVzdG9yYWJsZXNbaV0ucmVzdG9yZSgpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZ2wgPSBjYW52YXNPckNvbnRleHQ7XG5cdFx0XHR0aGlzLmNhbnZhcyA9IHRoaXMuZ2wuY2FudmFzO1xuXHRcdH1cblx0fVxuXG5cdGFkZFJlc3RvcmFibGUgKHJlc3RvcmFibGU6IFJlc3RvcmFibGUpIHtcblx0XHR0aGlzLnJlc3RvcmFibGVzLnB1c2gocmVzdG9yYWJsZSk7XG5cdH1cblxuXHRyZW1vdmVSZXN0b3JhYmxlIChyZXN0b3JhYmxlOiBSZXN0b3JhYmxlKSB7XG5cdFx0bGV0IGluZGV4ID0gdGhpcy5yZXN0b3JhYmxlcy5pbmRleE9mKHJlc3RvcmFibGUpO1xuXHRcdGlmIChpbmRleCA+IC0xKSB0aGlzLnJlc3RvcmFibGVzLnNwbGljZShpbmRleCwgMSk7XG5cdH1cbn1cbiJdfQ==
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2ViR0wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvV2ViR0wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBSS9FLE1BQU0sT0FBTyw0QkFBNEI7SUFDakMsTUFBTSxDQUFzQztJQUM1QyxFQUFFLENBQXdCO0lBQ3pCLFdBQVcsR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO0lBRTlDLFlBQWEsZUFBMEQsRUFBRSxnQkFBcUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQzlHLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZSxZQUFZLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLHNCQUFzQixLQUFLLFdBQVcsSUFBSSxlQUFlLFlBQVksc0JBQXNCLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbkssSUFBSSxNQUFNLEdBQXNCLGVBQWUsQ0FBQztZQUNoRCxJQUFJLENBQUMsRUFBRSxHQUEwQixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDM0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDckIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUM5RSxDQUFDO2FBQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxFQUFFLEdBQUcsZUFBZSxDQUFDO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDOUIsQ0FBQztJQUNGLENBQUM7SUFFTyxrQkFBa0IsQ0FBRSxDQUFRO1FBQ25DLElBQUksQ0FBQztZQUFFLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8sc0JBQXNCLENBQUUsQ0FBUTtRQUN2QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDdEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsT0FBTztRQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsYUFBYSxDQUFFLFVBQXNCO1FBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxnQkFBZ0IsQ0FBRSxVQUFzQjtRQUN2QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7WUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztDQUVEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBEaXNwb3NhYmxlLCB0eXBlIFJlc3RvcmFibGUgfSBmcm9tIFwiQGVzb3Rlcmljc29mdHdhcmUvc3BpbmUtY29yZVwiO1xuXG5leHBvcnQgY2xhc3MgTWFuYWdlZFdlYkdMUmVuZGVyaW5nQ29udGV4dCBpbXBsZW1lbnRzIERpc3Bvc2FibGUge1xuXHRwdWJsaWMgY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCB8IE9mZnNjcmVlbkNhbnZhcztcblx0cHVibGljIGdsOiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ7XG5cdHByaXZhdGUgcmVzdG9yYWJsZXMgPSBuZXcgQXJyYXk8UmVzdG9yYWJsZT4oKTtcblxuXHRjb25zdHJ1Y3RvciAoY2FudmFzT3JDb250ZXh0OiBIVE1MQ2FudmFzRWxlbWVudCB8IFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgY29udGV4dENvbmZpZzogYW55ID0geyBhbHBoYTogXCJ0cnVlXCIgfSkge1xuXHRcdGlmICghKChjYW52YXNPckNvbnRleHQgaW5zdGFuY2VvZiBXZWJHTFJlbmRlcmluZ0NvbnRleHQpIHx8ICh0eXBlb2YgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCAhPT0gJ3VuZGVmaW5lZCcgJiYgY2FudmFzT3JDb250ZXh0IGluc3RhbmNlb2YgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCkpKSB7XG5cdFx0XHRsZXQgY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCA9IGNhbnZhc09yQ29udGV4dDtcblx0XHRcdHRoaXMuZ2wgPSA8V2ViR0xSZW5kZXJpbmdDb250ZXh0PihjYW52YXMuZ2V0Q29udGV4dChcIndlYmdsMlwiLCBjb250ZXh0Q29uZmlnKSB8fCBjYW52YXMuZ2V0Q29udGV4dChcIndlYmdsXCIsIGNvbnRleHRDb25maWcpKTtcblx0XHRcdHRoaXMuY2FudmFzID0gY2FudmFzO1xuXHRcdFx0Y2FudmFzLmFkZEV2ZW50TGlzdGVuZXIoXCJ3ZWJnbGNvbnRleHRsb3N0XCIsIHRoaXMuY29udGV4dExvc3RIYW5kbGVyKTtcblx0XHRcdGNhbnZhcy5hZGRFdmVudExpc3RlbmVyKFwid2ViZ2xjb250ZXh0cmVzdG9yZWRcIiwgdGhpcy5jb250ZXh0UmVzdG9yZWRIYW5kbGVyKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5nbCA9IGNhbnZhc09yQ29udGV4dDtcblx0XHRcdHRoaXMuY2FudmFzID0gdGhpcy5nbC5jYW52YXM7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBjb250ZXh0TG9zdEhhbmRsZXIgKGU6IEV2ZW50KSB7XG5cdFx0aWYgKGUpIGUucHJldmVudERlZmF1bHQoKTtcblx0fVxuXG5cdHByaXZhdGUgY29udGV4dFJlc3RvcmVkSGFuZGxlciAoZTogRXZlbnQpIHtcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHRoaXMucmVzdG9yYWJsZXMubGVuZ3RoOyBpIDwgbjsgaSsrKVxuXHRcdFx0dGhpcy5yZXN0b3JhYmxlc1tpXS5yZXN0b3JlKCk7XG5cdH1cblxuXHRkaXNwb3NlICgpOiB2b2lkIHtcblx0XHR0aGlzLmNhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKFwid2ViZ2xjb250ZXh0bG9zdFwiLCB0aGlzLmNvbnRleHRMb3N0SGFuZGxlcik7XG5cdFx0dGhpcy5jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIndlYmdsY29udGV4dHJlc3RvcmVkXCIsIHRoaXMuY29udGV4dFJlc3RvcmVkSGFuZGxlcik7XG5cdH1cblxuXHRhZGRSZXN0b3JhYmxlIChyZXN0b3JhYmxlOiBSZXN0b3JhYmxlKSB7XG5cdFx0dGhpcy5yZXN0b3JhYmxlcy5wdXNoKHJlc3RvcmFibGUpO1xuXHR9XG5cblx0cmVtb3ZlUmVzdG9yYWJsZSAocmVzdG9yYWJsZTogUmVzdG9yYWJsZSkge1xuXHRcdGxldCBpbmRleCA9IHRoaXMucmVzdG9yYWJsZXMuaW5kZXhPZihyZXN0b3JhYmxlKTtcblx0XHRpZiAoaW5kZXggPiAtMSkgdGhpcy5yZXN0b3JhYmxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXHR9XG5cbn1cbiJdfQ==