@esotericsoftware/spine-pixi-v8 4.2.102 → 4.2.103
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/SpinePipe.d.ts +2 -0
- package/dist/SpinePipe.js +32 -3
- package/dist/esm/spine-pixi-v8.min.mjs +4 -4
- package/dist/esm/spine-pixi-v8.mjs +1778 -1070
- package/dist/esm/spine-pixi-v8.mjs.map +4 -4
- package/dist/iife/spine-pixi-v8.js +1772 -1065
- package/dist/iife/spine-pixi-v8.js.map +4 -4
- package/dist/iife/spine-pixi-v8.min.js +4 -4
- package/package.json +3 -3
- package/dist/CanvasSkeletonRenderer.d.ts +0 -45
- package/dist/CanvasSkeletonRenderer.js +0 -252
package/dist/SpinePipe.d.ts
CHANGED
|
@@ -35,10 +35,12 @@ export declare class SpinePipe implements RenderPipe<Spine> {
|
|
|
35
35
|
readonly name: "spine";
|
|
36
36
|
};
|
|
37
37
|
renderer: Renderer;
|
|
38
|
+
private canvasSkeletonRenderer;
|
|
38
39
|
private gpuSpineData;
|
|
39
40
|
private readonly _destroyRenderableBound;
|
|
40
41
|
constructor(renderer: Renderer);
|
|
41
42
|
validateRenderable(spine: Spine): boolean;
|
|
43
|
+
execute(spine: Spine): void;
|
|
42
44
|
addRenderable(spine: Spine, instructionSet: InstructionSet): void;
|
|
43
45
|
updateRenderable(spine: Spine): void;
|
|
44
46
|
destroyRenderable(spine: Spine): void;
|
package/dist/SpinePipe.js
CHANGED
|
@@ -26,8 +26,8 @@
|
|
|
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 { MeshAttachment, RegionAttachment } from '@esotericsoftware/spine-
|
|
30
|
-
import { ExtensionType, extensions, } from 'pixi.js';
|
|
29
|
+
import { SkeletonRenderer as CanvasSkeletonRenderer, MeshAttachment, RegionAttachment } from '@esotericsoftware/spine-canvas';
|
|
30
|
+
import { ExtensionType, extensions, RendererType, } from 'pixi.js';
|
|
31
31
|
import { BatchableSpineSlot } from './BatchableSpineSlot.js';
|
|
32
32
|
const spineBlendModeMap = {
|
|
33
33
|
0: 'normal',
|
|
@@ -47,12 +47,16 @@ export class SpinePipe {
|
|
|
47
47
|
name: 'spine',
|
|
48
48
|
};
|
|
49
49
|
renderer;
|
|
50
|
+
canvasSkeletonRenderer;
|
|
50
51
|
gpuSpineData = {};
|
|
51
52
|
_destroyRenderableBound = this.destroyRenderable.bind(this);
|
|
52
53
|
constructor(renderer) {
|
|
53
54
|
this.renderer = renderer;
|
|
54
55
|
}
|
|
55
56
|
validateRenderable(spine) {
|
|
57
|
+
if (this.renderer.type === RendererType.CANVAS) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
56
60
|
spine._validateAndTransformAttachments();
|
|
57
61
|
// if spine attachments have changed or destroyed, we need to rebuild the batch!
|
|
58
62
|
if (spine.spineAttachmentsDirty) {
|
|
@@ -80,7 +84,31 @@ export class SpinePipe {
|
|
|
80
84
|
}
|
|
81
85
|
return false;
|
|
82
86
|
}
|
|
87
|
+
execute(spine) {
|
|
88
|
+
if (this.renderer.type === RendererType.CANVAS) {
|
|
89
|
+
const renderer = this.renderer;
|
|
90
|
+
const groupAlpha = ((spine.groupColorAlpha >>> 24) & 0xFF) / 255;
|
|
91
|
+
const contextSystem = renderer.canvasContext;
|
|
92
|
+
const context = contextSystem.activeContext;
|
|
93
|
+
context.save();
|
|
94
|
+
if (!this.canvasSkeletonRenderer) {
|
|
95
|
+
this.canvasSkeletonRenderer = new CanvasSkeletonRenderer(context);
|
|
96
|
+
this.canvasSkeletonRenderer.triangleRendering = true;
|
|
97
|
+
}
|
|
98
|
+
contextSystem.setContextTransform(spine.groupTransform, (renderer._roundPixels | spine._roundPixels) === 1);
|
|
99
|
+
const oldAlpha = spine.skeleton.color.a;
|
|
100
|
+
spine.skeleton.color.a *= groupAlpha;
|
|
101
|
+
this.canvasSkeletonRenderer.draw(spine.skeleton);
|
|
102
|
+
spine.skeleton.color.a = oldAlpha;
|
|
103
|
+
context.restore();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
83
106
|
addRenderable(spine, instructionSet) {
|
|
107
|
+
if (this.renderer.type === RendererType.CANVAS) {
|
|
108
|
+
this.renderer.renderPipes.batch.break(instructionSet);
|
|
109
|
+
instructionSet.add(spine);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
84
112
|
const gpuSpine = this._getSpineData(spine);
|
|
85
113
|
const batcher = this.renderer.renderPipes.batch;
|
|
86
114
|
const drawOrder = spine.skeleton.drawOrder;
|
|
@@ -140,6 +168,7 @@ export class SpinePipe {
|
|
|
140
168
|
destroy() {
|
|
141
169
|
this.gpuSpineData = null;
|
|
142
170
|
this.renderer = null;
|
|
171
|
+
this.canvasSkeletonRenderer = null;
|
|
143
172
|
}
|
|
144
173
|
_getSpineData(spine) {
|
|
145
174
|
return this.gpuSpineData[spine.uid] || this._initMeshData(spine);
|
|
@@ -151,4 +180,4 @@ export class SpinePipe {
|
|
|
151
180
|
}
|
|
152
181
|
}
|
|
153
182
|
extensions.add(SpinePipe);
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BpbmVQaXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NwaW5lUGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFFL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hGLE9BQU8sRUFFVSxhQUFhLEVBQzdCLFVBQVUsR0FJVixNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUc3RCxNQUFNLGlCQUFpQixHQUFnQztJQUN0RCxDQUFDLEVBQUUsUUFBUTtJQUNYLENBQUMsRUFBRSxLQUFLO0lBQ1IsQ0FBQyxFQUFFLFVBQVU7SUFDYixDQUFDLEVBQUUsUUFBUTtDQUNYLENBQUM7QUFJRixtQ0FBbUM7QUFDbkMsTUFBTSxPQUFPLFNBQVM7SUFDckIsY0FBYztJQUNkLE1BQU0sQ0FBQyxTQUFTLEdBQUc7UUFDbEIsSUFBSSxFQUFFO1lBQ0wsYUFBYSxDQUFDLFVBQVU7WUFDeEIsYUFBYSxDQUFDLFdBQVc7WUFDekIsYUFBYSxDQUFDLFdBQVc7U0FDekI7UUFDRCxJQUFJLEVBQUUsT0FBTztLQUNKLENBQUM7SUFFWCxRQUFRLENBQVc7SUFFWCxZQUFZLEdBQXdDLEVBQUUsQ0FBQztJQUM5Qyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBb0MsQ0FBQztJQUVoSCxZQUFhLFFBQWtCO1FBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzFCLENBQUM7SUFFRCxrQkFBa0IsQ0FBRSxLQUFZO1FBQy9CLEtBQUssQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1FBRXpDLGdGQUFnRjtRQUNoRixJQUFJLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sSUFBSSxDQUFDO1FBQ2Is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LEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ25ELEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsQ0FBQzs7QUFHRixVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBNZXNoQXR0YWNobWVudCwgUmVnaW9uQXR0YWNobWVudCB9IGZyb20gJ0Blc290ZXJpY3NvZnR3YXJlL3NwaW5lLWNvcmUnO1xuaW1wb3J0IHtcblx0dHlwZSBCTEVORF9NT0RFUyxcblx0dHlwZSBDb250YWluZXIsIEV4dGVuc2lvblR5cGUsXG5cdGV4dGVuc2lvbnMsXG5cdHR5cGUgSW5zdHJ1Y3Rpb25TZXQsXG5cdHR5cGUgUmVuZGVyZXIsXG5cdHR5cGUgUmVuZGVyUGlwZSxcbn0gZnJvbSAncGl4aS5qcyc7XG5pbXBvcnQgeyBCYXRjaGFibGVTcGluZVNsb3QgfSBmcm9tICcuL0JhdGNoYWJsZVNwaW5lU2xvdC5qcyc7XG5pbXBvcnQgdHlwZSB7IFNwaW5lIH0gZnJvbSAnLi9TcGluZS5qcyc7XG5cbmNvbnN0IHNwaW5lQmxlbmRNb2RlTWFwOiBSZWNvcmQ8bnVtYmVyLCBCTEVORF9NT0RFUz4gPSB7XG5cdDA6ICdub3JtYWwnLFxuXHQxOiAnYWRkJyxcblx0MjogJ211bHRpcGx5Jyxcblx0MzogJ3NjcmVlbidcbn07XG5cbnR5cGUgR3B1U3BpbmVEYXRhRWxlbWVudCA9IHsgc2xvdEJhdGNoZXM6IFJlY29yZDxzdHJpbmcsIEJhdGNoYWJsZVNwaW5lU2xvdCB8IHVuZGVmaW5lZD4gfTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbmV4cG9ydCBjbGFzcyBTcGluZVBpcGUgaW1wbGVtZW50cyBSZW5kZXJQaXBlPFNwaW5lPiB7XG5cdC8qKiBAaWdub3JlICovXG5cdHN0YXRpYyBleHRlbnNpb24gPSB7XG5cdFx0dHlwZTogW1xuXHRcdFx0RXh0ZW5zaW9uVHlwZS5XZWJHTFBpcGVzLFxuXHRcdFx0RXh0ZW5zaW9uVHlwZS5XZWJHUFVQaXBlcyxcblx0XHRcdEV4dGVuc2lvblR5cGUuQ2FudmFzUGlwZXMsXG5cdFx0XSxcblx0XHRuYW1lOiAnc3BpbmUnLFxuXHR9IGFzIGNvbnN0O1xuXG5cdHJlbmRlcmVyOiBSZW5kZXJlcjtcblxuXHRwcml2YXRlIGdwdVNwaW5lRGF0YTogUmVjb3JkPHN0cmluZywgR3B1U3BpbmVEYXRhRWxlbWVudD4gPSB7fTtcblx0cHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlbmRlcmFibGVCb3VuZCA9IHRoaXMuZGVzdHJveVJlbmRlcmFibGUuYmluZCh0aGlzKSBhcyAocmVuZGVyYWJsZTogQ29udGFpbmVyKSA9PiB2b2lkO1xuXG5cdGNvbnN0cnVjdG9yIChyZW5kZXJlcjogUmVuZGVyZXIpIHtcblx0XHR0aGlzLnJlbmRlcmVyID0gcmVuZGVyZXI7XG5cdH1cblxuXHR2YWxpZGF0ZVJlbmRlcmFibGUgKHNwaW5lOiBTcGluZSk6IGJvb2xlYW4ge1xuXHRcdHNwaW5lLl92YWxpZGF0ZUFuZFRyYW5zZm9ybUF0dGFjaG1lbnRzKCk7XG5cblx0XHQvLyBpZiBzcGluZSBhdHRhY2htZW50cyBoYXZlIGNoYW5nZWQgb3IgZGVzdHJveWVkLCB3ZSBuZWVkIHRvIHJlYnVpbGQgdGhlIGJhdGNoIVxuXHRcdGlmIChzcGluZS5zcGluZUF0dGFjaG1lbnRzRGlydHkpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdC8vIGlmIHRoZSB0ZXh0dXJlcyBoYXZlIGNoYW5nZWQsIHdlIG5lZWQgdG8gcmVidWlsZCB0aGUgYmF0Y2gsIGJ1dCBvbmx5IGlmIHRoZSB0ZXh0dXJlIGlzIG5vdCBhbHJlYWR5IGluIHRoZSBiYXRjaFxuXHRcdGVsc2UgaWYgKHNwaW5lLnNwaW5lVGV4dHVyZXNEaXJ0eSkge1xuXHRcdFx0Ly8gbG9vcCB0aHJvdWdoIGFuZCBzZWUgaWYgdGhlIHRleHR1cmVzIGhhdmUgY2hhbmdlZC4uXG5cdFx0XHRjb25zdCBkcmF3T3JkZXIgPSBzcGluZS5za2VsZXRvbi5kcmF3T3JkZXI7XG5cdFx0XHRjb25zdCBncHVTcGluZSA9IHRoaXMuZ3B1U3BpbmVEYXRhW3NwaW5lLnVpZF07XG5cblx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gZHJhd09yZGVyLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0XHRjb25zdCBzbG90ID0gZHJhd09yZGVyW2ldO1xuXHRcdFx0XHRjb25zdCBhdHRhY2htZW50ID0gc2xvdC5nZXRBdHRhY2htZW50KCk7XG5cblx0XHRcdFx0aWYgKGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBSZWdpb25BdHRhY2htZW50IHx8IGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBNZXNoQXR0YWNobWVudCkge1xuXHRcdFx0XHRcdGNvbnN0IGNhY2hlRGF0YSA9IHNwaW5lLl9nZXRDYWNoZWREYXRhKHNsb3QsIGF0dGFjaG1lbnQpO1xuXHRcdFx0XHRcdGNvbnN0IGJhdGNoYWJsZVNwaW5lU2xvdCA9IGdwdVNwaW5lLnNsb3RCYXRjaGVzW2NhY2hlRGF0YS5pZF07XG5cblx0XHRcdFx0XHRjb25zdCB0ZXh0dXJlID0gY2FjaGVEYXRhLnRleHR1cmU7XG5cblx0XHRcdFx0XHRpZiAodGV4dHVyZSAhPT0gYmF0Y2hhYmxlU3BpbmVTbG90Py50ZXh0dXJlKSB7XG5cdFx0XHRcdFx0XHRpZiAoIWJhdGNoYWJsZVNwaW5lU2xvdD8uX2JhdGNoZXIuY2hlY2tBbmRVcGRhdGVUZXh0dXJlKGJhdGNoYWJsZVNwaW5lU2xvdCwgdGV4dHVyZSkpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0YWRkUmVuZGVyYWJsZSAoc3BpbmU6IFNwaW5lLCBpbnN0cnVjdGlvblNldDogSW5zdHJ1Y3Rpb25TZXQpIHtcblx0XHRjb25zdCBncHVTcGluZSA9IHRoaXMuX2dldFNwaW5lRGF0YShzcGluZSk7XG5cblx0XHRjb25zdCBiYXRjaGVyID0gdGhpcy5yZW5kZXJlci5yZW5kZXJQaXBlcy5iYXRjaDtcblxuXHRcdGNvbnN0IGRyYXdPcmRlciA9IHNwaW5lLnNrZWxldG9uLmRyYXdPcmRlcjtcblxuXHRcdGNvbnN0IHJvdW5kUGl4ZWxzID0gKHRoaXMucmVuZGVyZXIuX3JvdW5kUGl4ZWxzIHwgc3BpbmUuX3JvdW5kUGl4ZWxzKSBhcyAwIHwgMTtcblxuXHRcdHNwaW5lLl92YWxpZGF0ZUFuZFRyYW5zZm9ybUF0dGFjaG1lbnRzKCk7XG5cblx0XHRzcGluZS5zcGluZUF0dGFjaG1lbnRzRGlydHkgPSBmYWxzZTtcblx0XHRzcGluZS5zcGluZVRleHR1cmVzRGlydHkgPSBmYWxzZTtcblxuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gZHJhd09yZGVyLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0Y29uc3Qgc2xvdCA9IGRyYXdPcmRlcltpXTtcblx0XHRcdGNvbnN0IGF0dGFjaG1lbnQgPSBzbG90LmdldEF0dGFjaG1lbnQoKTtcblx0XHRcdGNvbnN0IGJsZW5kTW9kZSA9IHNwaW5lQmxlbmRNb2RlTWFwW3Nsb3QuZGF0YS5ibGVuZE1vZGVdO1xuXHRcdFx0bGV0IHNraXBSZW5kZXIgPSBmYWxzZTtcblxuXHRcdFx0aWYgKGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBSZWdpb25BdHRhY2htZW50IHx8IGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBNZXNoQXR0YWNobWVudCkge1xuXHRcdFx0XHRjb25zdCBjYWNoZURhdGEgPSBzcGluZS5fZ2V0Q2FjaGVkRGF0YShzbG90LCBhdHRhY2htZW50KTtcblx0XHRcdFx0Y29uc3QgYmF0Y2hhYmxlU3BpbmVTbG90ID0gZ3B1U3BpbmUuc2xvdEJhdGNoZXNbY2FjaGVEYXRhLmlkXSB8fD0gbmV3IEJhdGNoYWJsZVNwaW5lU2xvdCgpO1xuXG5cdFx0XHRcdGJhdGNoYWJsZVNwaW5lU2xvdC5zZXREYXRhKFxuXHRcdFx0XHRcdHNwaW5lLFxuXHRcdFx0XHRcdGNhY2hlRGF0YSxcblx0XHRcdFx0XHRibGVuZE1vZGUsXG5cdFx0XHRcdFx0cm91bmRQaXhlbHNcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRza2lwUmVuZGVyID0gY2FjaGVEYXRhLnNraXBSZW5kZXI7XG5cdFx0XHRcdGlmICghc2tpcFJlbmRlcikge1xuXHRcdFx0XHRcdGJhdGNoZXIuYWRkVG9CYXRjaChiYXRjaGFibGVTcGluZVNsb3QsIGluc3RydWN0aW9uU2V0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBjb250YWluZXJBdHRhY2htZW50ID0gc3BpbmUuX3Nsb3RzT2JqZWN0W3Nsb3QuZGF0YS5uYW1lXTtcblxuXHRcdFx0aWYgKGNvbnRhaW5lckF0dGFjaG1lbnQpIHtcblx0XHRcdFx0Y29uc3QgY29udGFpbmVyID0gY29udGFpbmVyQXR0YWNobWVudC5jb250YWluZXI7XG5cblx0XHRcdFx0aWYgKCFza2lwUmVuZGVyKSB7XG5cdFx0XHRcdFx0Y29udGFpbmVyLmluY2x1ZGVJbkJ1aWxkID0gdHJ1ZTtcblx0XHRcdFx0XHQvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3BpeGlqcy9waXhpanMvYmxvYi9iNGMwNTBhNzkxZmU2NWU5NzllNDY3YzljYmEyYmRhMGMwMWExYzM1L3NyYy9zY2VuZS9jb250YWluZXIvdXRpbHMvY29sbGVjdEFsbFJlbmRlcmFibGVzLnRzI0wyOFxuXHRcdFx0XHRcdGNvbnRhaW5lci5jb2xsZWN0UmVuZGVyYWJsZXMoaW5zdHJ1Y3Rpb25TZXQsIHRoaXMucmVuZGVyZXIsIG51bGwhKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnRhaW5lci5pbmNsdWRlSW5CdWlsZCA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHVwZGF0ZVJlbmRlcmFibGUgKHNwaW5lOiBTcGluZSkge1xuXHRcdGNvbnN0IGdwdVNwaW5lID0gdGhpcy5ncHVTcGluZURhdGFbc3BpbmUudWlkXTtcblxuXHRcdHNwaW5lLl92YWxpZGF0ZUFuZFRyYW5zZm9ybUF0dGFjaG1lbnRzKCk7XG5cblx0XHRzcGluZS5zcGluZUF0dGFjaG1lbnRzRGlydHkgPSBmYWxzZTtcblx0XHRzcGluZS5zcGluZVRleHR1cmVzRGlydHkgPSBmYWxzZTtcblxuXHRcdGNvbnN0IGRyYXdPcmRlciA9IHNwaW5lLnNrZWxldG9uLmRyYXdPcmRlcjtcblxuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gZHJhd09yZGVyLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0Y29uc3Qgc2xvdCA9IGRyYXdPcmRlcltpXTtcblx0XHRcdGNvbnN0IGF0dGFjaG1lbnQgPSBzbG90LmdldEF0dGFjaG1lbnQoKTtcblxuXHRcdFx0aWYgKGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBSZWdpb25BdHRhY2htZW50IHx8IGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBNZXNoQXR0YWNobWVudCkge1xuXHRcdFx0XHRjb25zdCBjYWNoZURhdGEgPSBzcGluZS5fZ2V0Q2FjaGVkRGF0YShzbG90LCBhdHRhY2htZW50KTtcblxuXHRcdFx0XHRpZiAoIWNhY2hlRGF0YS5za2lwUmVuZGVyKSB7XG5cdFx0XHRcdFx0Y29uc3QgYmF0Y2hhYmxlU3BpbmVTbG90ID0gZ3B1U3BpbmUuc2xvdEJhdGNoZXNbY2FjaGVEYXRhLmlkXTtcblx0XHRcdFx0XHQvLyB3ZSBkaWRuJ3QgZmlndXJlIG91dCB3aHkgYmF0Y2hhYmxlU3BpbmVTbG90IG1pZ2h0IGJlIHVuZGVmaW5lZDogaHR0cHM6Ly9naXRodWIuY29tL0Vzb3RlcmljU29mdHdhcmUvc3BpbmUtcnVudGltZXMvaXNzdWVzLzI5OTFcblx0XHRcdFx0XHRiYXRjaGFibGVTcGluZVNsb3Q/Ll9iYXRjaGVyPy51cGRhdGVFbGVtZW50KGJhdGNoYWJsZVNwaW5lU2xvdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRkZXN0cm95UmVuZGVyYWJsZSAoc3BpbmU6IFNwaW5lKSB7XG5cdFx0dGhpcy5ncHVTcGluZURhdGFbc3BpbmUudWlkXSA9IG51bGwgYXMgYW55O1xuXHRcdHNwaW5lLm9mZignZGVzdHJveWVkJywgdGhpcy5fZGVzdHJveVJlbmRlcmFibGVCb3VuZCk7XG5cdH1cblxuXHRkZXN0cm95ICgpIHtcblx0XHR0aGlzLmdwdVNwaW5lRGF0YSA9IG51bGwgYXMgYW55O1xuXHRcdHRoaXMucmVuZGVyZXIgPSBudWxsIGFzIGFueTtcblx0fVxuXG5cdHByaXZhdGUgX2dldFNwaW5lRGF0YSAoc3BpbmU6IFNwaW5lKTogR3B1U3BpbmVEYXRhRWxlbWVudCB7XG5cdFx0cmV0dXJuIHRoaXMuZ3B1U3BpbmVEYXRhW3NwaW5lLnVpZF0gfHwgdGhpcy5faW5pdE1lc2hEYXRhKHNwaW5lKTtcblx0fVxuXG5cdHByaXZhdGUgX2luaXRNZXNoRGF0YSAoc3BpbmU6IFNwaW5lKTogR3B1U3BpbmVEYXRhRWxlbWVudCB7XG5cdFx0dGhpcy5ncHVTcGluZURhdGFbc3BpbmUudWlkXSA9IHsgc2xvdEJhdGNoZXM6IHt9IH07XG5cdFx0c3BpbmUub24oJ2Rlc3Ryb3llZCcsIHRoaXMuX2Rlc3Ryb3lSZW5kZXJhYmxlQm91bmQpO1xuXHRcdHJldHVybiB0aGlzLmdwdVNwaW5lRGF0YVtzcGluZS51aWRdO1xuXHR9XG59XG5cbmV4dGVuc2lvbnMuYWRkKFNwaW5lUGlwZSk7XG4iXX0=
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BpbmVQaXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NwaW5lUGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFFL0UsT0FBTyxFQUFFLGdCQUFnQixJQUFJLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlILE9BQU8sRUFHVSxhQUFhLEVBQzdCLFVBQVUsRUFJVixZQUFZLEdBQ1osTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHN0QsTUFBTSxpQkFBaUIsR0FBZ0M7SUFDdEQsQ0FBQyxFQUFFLFFBQVE7SUFDWCxDQUFDLEVBQUUsS0FBSztJQUNSLENBQUMsRUFBRSxVQUFVO0lBQ2IsQ0FBQyxFQUFFLFFBQVE7Q0FDWCxDQUFDO0FBSUYsbUNBQW1DO0FBQ25DLE1BQU0sT0FBTyxTQUFTO0lBQ3JCLGNBQWM7SUFDZCxNQUFNLENBQUMsU0FBUyxHQUFHO1FBQ2xCLElBQUksRUFBRTtZQUNMLGFBQWEsQ0FBQyxVQUFVO1lBQ3hCLGFBQWEsQ0FBQyxXQUFXO1lBQ3pCLGFBQWEsQ0FBQyxXQUFXO1NBQ3pCO1FBQ0QsSUFBSSxFQUFFLE9BQU87S0FDSixDQUFDO0lBRVgsUUFBUSxDQUFXO0lBQ1gsc0JBQXNCLENBQTBCO0lBRWhELFlBQVksR0FBd0MsRUFBRSxDQUFDO0lBQzlDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFvQyxDQUFDO0lBRWhILFlBQWEsUUFBa0I7UUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDMUIsQ0FBQztJQUVELGtCQUFrQixDQUFFLEtBQVk7UUFDL0IsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsTUFBTSxF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QUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsT0FBTztRQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBVyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBVyxDQUFDO1FBQzVCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFXLENBQUM7SUFDM0MsQ0FBQztJQUVPLGFBQWEsQ0FBRSxLQUFZO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU8sYUFBYSxDQUFFLEtBQVk7UUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDbkQsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDcEQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDOztBQUdGLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEFwcmlsIDUsIDIwMjUuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyNSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZVxuICogb3Igb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFNrZWxldG9uUmVuZGVyZXIgYXMgQ2FudmFzU2tlbGV0b25SZW5kZXJlciwgTWVzaEF0dGFjaG1lbnQsIFJlZ2lvbkF0dGFjaG1lbnQgfSBmcm9tICdAZXNvdGVyaWNzb2Z0d2FyZS9zcGluZS1jYW52YXMnO1xuaW1wb3J0IHtcblx0dHlwZSBCTEVORF9NT0RFUyxcblx0Q2FudmFzUmVuZGVyZXIsXG5cdHR5cGUgQ29udGFpbmVyLCBFeHRlbnNpb25UeXBlLFxuXHRleHRlbnNpb25zLFxuXHR0eXBlIEluc3RydWN0aW9uU2V0LFxuXHR0eXBlIFJlbmRlcmVyLFxuXHR0eXBlIFJlbmRlclBpcGUsXG5cdFJlbmRlcmVyVHlwZSxcbn0gZnJvbSAncGl4aS5qcyc7XG5pbXBvcnQgeyBCYXRjaGFibGVTcGluZVNsb3QgfSBmcm9tICcuL0JhdGNoYWJsZVNwaW5lU2xvdC5qcyc7XG5pbXBvcnQgdHlwZSB7IFNwaW5lIH0gZnJvbSAnLi9TcGluZS5qcyc7XG5cbmNvbnN0IHNwaW5lQmxlbmRNb2RlTWFwOiBSZWNvcmQ8bnVtYmVyLCBCTEVORF9NT0RFUz4gPSB7XG5cdDA6ICdub3JtYWwnLFxuXHQxOiAnYWRkJyxcblx0MjogJ211bHRpcGx5Jyxcblx0MzogJ3NjcmVlbidcbn07XG5cbnR5cGUgR3B1U3BpbmVEYXRhRWxlbWVudCA9IHsgc2xvdEJhdGNoZXM6IFJlY29yZDxzdHJpbmcsIEJhdGNoYWJsZVNwaW5lU2xvdCB8IHVuZGVmaW5lZD4gfTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbmV4cG9ydCBjbGFzcyBTcGluZVBpcGUgaW1wbGVtZW50cyBSZW5kZXJQaXBlPFNwaW5lPiB7XG5cdC8qKiBAaWdub3JlICovXG5cdHN0YXRpYyBleHRlbnNpb24gPSB7XG5cdFx0dHlwZTogW1xuXHRcdFx0RXh0ZW5zaW9uVHlwZS5XZWJHTFBpcGVzLFxuXHRcdFx0RXh0ZW5zaW9uVHlwZS5XZWJHUFVQaXBlcyxcblx0XHRcdEV4dGVuc2lvblR5cGUuQ2FudmFzUGlwZXMsXG5cdFx0XSxcblx0XHRuYW1lOiAnc3BpbmUnLFxuXHR9IGFzIGNvbnN0O1xuXG5cdHJlbmRlcmVyOiBSZW5kZXJlcjtcblx0cHJpdmF0ZSBjYW52YXNTa2VsZXRvblJlbmRlcmVyITogQ2FudmFzU2tlbGV0b25SZW5kZXJlcjtcblxuXHRwcml2YXRlIGdwdVNwaW5lRGF0YTogUmVjb3JkPHN0cmluZywgR3B1U3BpbmVEYXRhRWxlbWVudD4gPSB7fTtcblx0cHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlbmRlcmFibGVCb3VuZCA9IHRoaXMuZGVzdHJveVJlbmRlcmFibGUuYmluZCh0aGlzKSBhcyAocmVuZGVyYWJsZTogQ29udGFpbmVyKSA9PiB2b2lkO1xuXG5cdGNvbnN0cnVjdG9yIChyZW5kZXJlcjogUmVuZGVyZXIpIHtcblx0XHR0aGlzLnJlbmRlcmVyID0gcmVuZGVyZXI7XG5cdH1cblxuXHR2YWxpZGF0ZVJlbmRlcmFibGUgKHNwaW5lOiBTcGluZSk6IGJvb2xlYW4ge1xuXHRcdGlmICh0aGlzLnJlbmRlcmVyLnR5cGUgPT09IFJlbmRlcmVyVHlwZS5DQU5WQVMpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdHNwaW5lLl92YWxpZGF0ZUFuZFRyYW5zZm9ybUF0dGFjaG1lbnRzKCk7XG5cblx0XHQvLyBpZiBzcGluZSBhdHRhY2htZW50cyBoYXZlIGNoYW5nZWQgb3IgZGVzdHJveWVkLCB3ZSBuZWVkIHRvIHJlYnVpbGQgdGhlIGJhdGNoIVxuXHRcdGlmIChzcGluZS5zcGluZUF0dGFjaG1lbnRzRGlydHkpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdC8vIGlmIHRoZSB0ZXh0dXJlcyBoYXZlIGNoYW5nZWQsIHdlIG5lZWQgdG8gcmVidWlsZCB0aGUgYmF0Y2gsIGJ1dCBvbmx5IGlmIHRoZSB0ZXh0dXJlIGlzIG5vdCBhbHJlYWR5IGluIHRoZSBiYXRjaFxuXHRcdGVsc2UgaWYgKHNwaW5lLnNwaW5lVGV4dHVyZXNEaXJ0eSkge1xuXHRcdFx0Ly8gbG9vcCB0aHJvdWdoIGFuZCBzZWUgaWYgdGhlIHRleHR1cmVzIGhhdmUgY2hhbmdlZC4uXG5cdFx0XHRjb25zdCBkcmF3T3JkZXIgPSBzcGluZS5za2VsZXRvbi5kcmF3T3JkZXI7XG5cdFx0XHRjb25zdCBncHVTcGluZSA9IHRoaXMuZ3B1U3BpbmVEYXRhW3NwaW5lLnVpZF07XG5cblx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gZHJhd09yZGVyLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0XHRjb25zdCBzbG90ID0gZHJhd09yZGVyW2ldO1xuXHRcdFx0XHRjb25zdCBhdHRhY2htZW50ID0gc2xvdC5nZXRBdHRhY2htZW50KCk7XG5cblx0XHRcdFx0aWYgKGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBSZWdpb25BdHRhY2htZW50IHx8IGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBNZXNoQXR0YWNobWVudCkge1xuXHRcdFx0XHRcdGNvbnN0IGNhY2hlRGF0YSA9IHNwaW5lLl9nZXRDYWNoZWREYXRhKHNsb3QsIGF0dGFjaG1lbnQpO1xuXHRcdFx0XHRcdGNvbnN0IGJhdGNoYWJsZVNwaW5lU2xvdCA9IGdwdVNwaW5lLnNsb3RCYXRjaGVzW2NhY2hlRGF0YS5pZF07XG5cblx0XHRcdFx0XHRjb25zdCB0ZXh0dXJlID0gY2FjaGVEYXRhLnRleHR1cmU7XG5cblx0XHRcdFx0XHRpZiAodGV4dHVyZSAhPT0gYmF0Y2hhYmxlU3BpbmVTbG90Py50ZXh0dXJlKSB7XG5cdFx0XHRcdFx0XHRpZiAoIWJhdGNoYWJsZVNwaW5lU2xvdD8uX2JhdGNoZXIuY2hlY2tBbmRVcGRhdGVUZXh0dXJlKGJhdGNoYWJsZVNwaW5lU2xvdCwgdGV4dHVyZSkpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0ZXhlY3V0ZSAoc3BpbmU6IFNwaW5lKSB7XG5cdFx0aWYgKHRoaXMucmVuZGVyZXIudHlwZSA9PT0gUmVuZGVyZXJUeXBlLkNBTlZBUykge1xuXHRcdFx0Y29uc3QgcmVuZGVyZXIgPSAodGhpcy5yZW5kZXJlciBhcyBDYW52YXNSZW5kZXJlcik7XG5cdFx0XHRjb25zdCBncm91cEFscGhhID0gKChzcGluZS5ncm91cENvbG9yQWxwaGEgPj4+IDI0KSAmIDB4RkYpIC8gMjU1O1xuXHRcdFx0Y29uc3QgY29udGV4dFN5c3RlbSA9IHJlbmRlcmVyLmNhbnZhc0NvbnRleHQ7XG5cdFx0XHRjb25zdCBjb250ZXh0ID0gY29udGV4dFN5c3RlbS5hY3RpdmVDb250ZXh0O1xuXG5cdFx0XHRjb250ZXh0LnNhdmUoKTtcblxuXHRcdFx0aWYgKCF0aGlzLmNhbnZhc1NrZWxldG9uUmVuZGVyZXIpIHtcblx0XHRcdFx0dGhpcy5jYW52YXNTa2VsZXRvblJlbmRlcmVyID0gbmV3IENhbnZhc1NrZWxldG9uUmVuZGVyZXIoY29udGV4dCBhcyB1bmtub3duIGFzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCk7XG5cdFx0XHRcdHRoaXMuY2FudmFzU2tlbGV0b25SZW5kZXJlci50cmlhbmdsZVJlbmRlcmluZyA9IHRydWU7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnRleHRTeXN0ZW0uc2V0Q29udGV4dFRyYW5zZm9ybShzcGluZS5ncm91cFRyYW5zZm9ybSwgKHJlbmRlcmVyLl9yb3VuZFBpeGVscyB8IHNwaW5lLl9yb3VuZFBpeGVscykgPT09IDEpO1xuXG5cdFx0XHRjb25zdCBvbGRBbHBoYSA9IHNwaW5lLnNrZWxldG9uLmNvbG9yLmE7XG5cdFx0XHRzcGluZS5za2VsZXRvbi5jb2xvci5hICo9IGdyb3VwQWxwaGE7XG5cdFx0XHR0aGlzLmNhbnZhc1NrZWxldG9uUmVuZGVyZXIuZHJhdyhzcGluZS5za2VsZXRvbik7XG5cdFx0XHRzcGluZS5za2VsZXRvbi5jb2xvci5hID0gb2xkQWxwaGE7XG5cblx0XHRcdGNvbnRleHQucmVzdG9yZSgpO1xuXHRcdH1cblx0fVxuXG5cdGFkZFJlbmRlcmFibGUgKHNwaW5lOiBTcGluZSwgaW5zdHJ1Y3Rpb25TZXQ6IEluc3RydWN0aW9uU2V0KSB7XG5cdFx0aWYgKHRoaXMucmVuZGVyZXIudHlwZSA9PT0gUmVuZGVyZXJUeXBlLkNBTlZBUykge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5yZW5kZXJQaXBlcy5iYXRjaC5icmVhayhpbnN0cnVjdGlvblNldCk7XG5cdFx0XHRpbnN0cnVjdGlvblNldC5hZGQoc3BpbmUpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IGdwdVNwaW5lID0gdGhpcy5fZ2V0U3BpbmVEYXRhKHNwaW5lKTtcblxuXHRcdGNvbnN0IGJhdGNoZXIgPSB0aGlzLnJlbmRlcmVyLnJlbmRlclBpcGVzLmJhdGNoO1xuXG5cdFx0Y29uc3QgZHJhd09yZGVyID0gc3BpbmUuc2tlbGV0b24uZHJhd09yZGVyO1xuXG5cdFx0Y29uc3Qgcm91bmRQaXhlbHMgPSAodGhpcy5yZW5kZXJlci5fcm91bmRQaXhlbHMgfCBzcGluZS5fcm91bmRQaXhlbHMpIGFzIDAgfCAxO1xuXG5cdFx0c3BpbmUuX3ZhbGlkYXRlQW5kVHJhbnNmb3JtQXR0YWNobWVudHMoKTtcblxuXHRcdHNwaW5lLnNwaW5lQXR0YWNobWVudHNEaXJ0eSA9IGZhbHNlO1xuXHRcdHNwaW5lLnNwaW5lVGV4dHVyZXNEaXJ0eSA9IGZhbHNlO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBkcmF3T3JkZXIubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRjb25zdCBzbG90ID0gZHJhd09yZGVyW2ldO1xuXHRcdFx0Y29uc3QgYXR0YWNobWVudCA9IHNsb3QuZ2V0QXR0YWNobWVudCgpO1xuXHRcdFx0Y29uc3QgYmxlbmRNb2RlID0gc3BpbmVCbGVuZE1vZGVNYXBbc2xvdC5kYXRhLmJsZW5kTW9kZV07XG5cdFx0XHRsZXQgc2tpcFJlbmRlciA9IGZhbHNlO1xuXG5cdFx0XHRpZiAoYXR0YWNobWVudCBpbnN0YW5jZW9mIFJlZ2lvbkF0dGFjaG1lbnQgfHwgYXR0YWNobWVudCBpbnN0YW5jZW9mIE1lc2hBdHRhY2htZW50KSB7XG5cdFx0XHRcdGNvbnN0IGNhY2hlRGF0YSA9IHNwaW5lLl9nZXRDYWNoZWREYXRhKHNsb3QsIGF0dGFjaG1lbnQpO1xuXHRcdFx0XHRjb25zdCBiYXRjaGFibGVTcGluZVNsb3QgPSBncHVTcGluZS5zbG90QmF0Y2hlc1tjYWNoZURhdGEuaWRdIHx8PSBuZXcgQmF0Y2hhYmxlU3BpbmVTbG90KCk7XG5cblx0XHRcdFx0YmF0Y2hhYmxlU3BpbmVTbG90LnNldERhdGEoXG5cdFx0XHRcdFx0c3BpbmUsXG5cdFx0XHRcdFx0Y2FjaGVEYXRhLFxuXHRcdFx0XHRcdGJsZW5kTW9kZSxcblx0XHRcdFx0XHRyb3VuZFBpeGVsc1xuXHRcdFx0XHQpO1xuXG5cdFx0XHRcdHNraXBSZW5kZXIgPSBjYWNoZURhdGEuc2tpcFJlbmRlcjtcblx0XHRcdFx0aWYgKCFza2lwUmVuZGVyKSB7XG5cdFx0XHRcdFx0YmF0Y2hlci5hZGRUb0JhdGNoKGJhdGNoYWJsZVNwaW5lU2xvdCwgaW5zdHJ1Y3Rpb25TZXQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGNvbnRhaW5lckF0dGFjaG1lbnQgPSBzcGluZS5fc2xvdHNPYmplY3Rbc2xvdC5kYXRhLm5hbWVdO1xuXG5cdFx0XHRpZiAoY29udGFpbmVyQXR0YWNobWVudCkge1xuXHRcdFx0XHRjb25zdCBjb250YWluZXIgPSBjb250YWluZXJBdHRhY2htZW50LmNvbnRhaW5lcjtcblxuXHRcdFx0XHRpZiAoIXNraXBSZW5kZXIpIHtcblx0XHRcdFx0XHRjb250YWluZXIuaW5jbHVkZUluQnVpbGQgPSB0cnVlO1xuXHRcdFx0XHRcdC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcGl4aWpzL3BpeGlqcy9ibG9iL2I0YzA1MGE3OTFmZTY1ZTk3OWU0NjdjOWNiYTJiZGEwYzAxYTFjMzUvc3JjL3NjZW5lL2NvbnRhaW5lci91dGlscy9jb2xsZWN0QWxsUmVuZGVyYWJsZXMudHMjTDI4XG5cdFx0XHRcdFx0Y29udGFpbmVyLmNvbGxlY3RSZW5kZXJhYmxlcyhpbnN0cnVjdGlvblNldCwgdGhpcy5yZW5kZXJlciwgbnVsbCEpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29udGFpbmVyLmluY2x1ZGVJbkJ1aWxkID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0dXBkYXRlUmVuZGVyYWJsZSAoc3BpbmU6IFNwaW5lKSB7XG5cdFx0Y29uc3QgZ3B1U3BpbmUgPSB0aGlzLmdwdVNwaW5lRGF0YVtzcGluZS51aWRdO1xuXG5cdFx0c3BpbmUuX3ZhbGlkYXRlQW5kVHJhbnNmb3JtQXR0YWNobWVudHMoKTtcblxuXHRcdHNwaW5lLnNwaW5lQXR0YWNobWVudHNEaXJ0eSA9IGZhbHNlO1xuXHRcdHNwaW5lLnNwaW5lVGV4dHVyZXNEaXJ0eSA9IGZhbHNlO1xuXG5cdFx0Y29uc3QgZHJhd09yZGVyID0gc3BpbmUuc2tlbGV0b24uZHJhd09yZGVyO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBkcmF3T3JkZXIubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRjb25zdCBzbG90ID0gZHJhd09yZGVyW2ldO1xuXHRcdFx0Y29uc3QgYXR0YWNobWVudCA9IHNsb3QuZ2V0QXR0YWNobWVudCgpO1xuXG5cdFx0XHRpZiAoYXR0YWNobWVudCBpbnN0YW5jZW9mIFJlZ2lvbkF0dGFjaG1lbnQgfHwgYXR0YWNobWVudCBpbnN0YW5jZW9mIE1lc2hBdHRhY2htZW50KSB7XG5cdFx0XHRcdGNvbnN0IGNhY2hlRGF0YSA9IHNwaW5lLl9nZXRDYWNoZWREYXRhKHNsb3QsIGF0dGFjaG1lbnQpO1xuXG5cdFx0XHRcdGlmICghY2FjaGVEYXRhLnNraXBSZW5kZXIpIHtcblx0XHRcdFx0XHRjb25zdCBiYXRjaGFibGVTcGluZVNsb3QgPSBncHVTcGluZS5zbG90QmF0Y2hlc1tjYWNoZURhdGEuaWRdO1xuXHRcdFx0XHRcdC8vIHdlIGRpZG4ndCBmaWd1cmUgb3V0IHdoeSBiYXRjaGFibGVTcGluZVNsb3QgbWlnaHQgYmUgdW5kZWZpbmVkOiBodHRwczovL2dpdGh1Yi5jb20vRXNvdGVyaWNTb2Z0d2FyZS9zcGluZS1ydW50aW1lcy9pc3N1ZXMvMjk5MVxuXHRcdFx0XHRcdGJhdGNoYWJsZVNwaW5lU2xvdD8uX2JhdGNoZXI/LnVwZGF0ZUVsZW1lbnQoYmF0Y2hhYmxlU3BpbmVTbG90KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGRlc3Ryb3lSZW5kZXJhYmxlIChzcGluZTogU3BpbmUpIHtcblx0XHR0aGlzLmdwdVNwaW5lRGF0YVtzcGluZS51aWRdID0gbnVsbCBhcyBhbnk7XG5cdFx0c3BpbmUub2ZmKCdkZXN0cm95ZWQnLCB0aGlzLl9kZXN0cm95UmVuZGVyYWJsZUJvdW5kKTtcblx0fVxuXG5cdGRlc3Ryb3kgKCkge1xuXHRcdHRoaXMuZ3B1U3BpbmVEYXRhID0gbnVsbCBhcyBhbnk7XG5cdFx0dGhpcy5yZW5kZXJlciA9IG51bGwgYXMgYW55O1xuXHRcdHRoaXMuY2FudmFzU2tlbGV0b25SZW5kZXJlciA9IG51bGwgYXMgYW55O1xuXHR9XG5cblx0cHJpdmF0ZSBfZ2V0U3BpbmVEYXRhIChzcGluZTogU3BpbmUpOiBHcHVTcGluZURhdGFFbGVtZW50IHtcblx0XHRyZXR1cm4gdGhpcy5ncHVTcGluZURhdGFbc3BpbmUudWlkXSB8fCB0aGlzLl9pbml0TWVzaERhdGEoc3BpbmUpO1xuXHR9XG5cblx0cHJpdmF0ZSBfaW5pdE1lc2hEYXRhIChzcGluZTogU3BpbmUpOiBHcHVTcGluZURhdGFFbGVtZW50IHtcblx0XHR0aGlzLmdwdVNwaW5lRGF0YVtzcGluZS51aWRdID0geyBzbG90QmF0Y2hlczoge30gfTtcblx0XHRzcGluZS5vbignZGVzdHJveWVkJywgdGhpcy5fZGVzdHJveVJlbmRlcmFibGVCb3VuZCk7XG5cdFx0cmV0dXJuIHRoaXMuZ3B1U3BpbmVEYXRhW3NwaW5lLnVpZF07XG5cdH1cbn1cblxuZXh0ZW5zaW9ucy5hZGQoU3BpbmVQaXBlKTtcbiJdfQ==
|