@esotericsoftware/spine-core 4.2.117 → 4.3.1
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/Animation.d.ts +426 -274
- package/dist/Animation.js +1174 -1210
- package/dist/AnimationState.d.ts +246 -201
- package/dist/AnimationState.js +508 -471
- package/dist/AnimationStateData.d.ts +12 -10
- package/dist/AnimationStateData.js +19 -20
- package/dist/AssetManagerBase.d.ts +27 -21
- package/dist/AssetManagerBase.js +67 -43
- package/dist/AtlasAttachmentLoader.d.ts +18 -12
- package/dist/AtlasAttachmentLoader.js +28 -39
- package/dist/Bone.d.ts +15 -109
- package/dist/Bone.js +22 -362
- package/dist/BoneData.d.ts +13 -28
- package/dist/BoneData.js +20 -29
- package/dist/BonePose.d.ts +132 -0
- package/dist/BonePose.js +456 -0
- package/dist/Constraint.d.ts +41 -0
- package/dist/Constraint.js +38 -0
- package/dist/ConstraintData.d.ts +16 -5
- package/dist/ConstraintData.js +15 -9
- package/dist/DrawOrder.d.ts +48 -0
- package/dist/DrawOrder.js +64 -0
- package/dist/Event.d.ts +11 -6
- package/dist/Event.js +10 -5
- package/dist/EventData.d.ts +10 -6
- package/dist/EventData.js +18 -7
- package/dist/IkConstraint.d.ts +23 -28
- package/dist/IkConstraint.js +122 -124
- package/dist/IkConstraintData.d.ts +14 -19
- package/dist/IkConstraintData.js +22 -23
- package/dist/IkConstraintPose.d.ts +49 -0
- package/dist/IkConstraintPose.js +55 -0
- package/dist/PathConstraint.d.ts +18 -23
- package/dist/PathConstraint.js +162 -139
- package/dist/PathConstraintData.d.ts +11 -14
- package/dist/PathConstraintData.js +14 -16
- package/dist/PathConstraintPose.d.ts +43 -0
- package/dist/PathConstraintPose.js +49 -0
- package/dist/Physics.d.ts +39 -0
- package/dist/Physics.js +41 -0
- package/dist/PhysicsConstraint.d.ts +26 -30
- package/dist/PhysicsConstraint.js +114 -94
- package/dist/PhysicsConstraintData.d.ts +28 -13
- package/dist/PhysicsConstraintData.js +35 -13
- package/dist/PhysicsConstraintPose.d.ts +47 -0
- package/dist/PhysicsConstraintPose.js +55 -0
- package/dist/Pose.d.ts +33 -0
- package/dist/Pose.js +30 -0
- package/dist/Posed.d.ts +58 -0
- package/dist/Posed.js +78 -0
- package/dist/PosedActive.d.ts +41 -0
- package/dist/{attachments/HasTextureRegion.js → PosedActive.js} +17 -2
- package/dist/PosedData.d.ts +40 -0
- package/dist/PosedData.js +45 -0
- package/dist/Skeleton.d.ts +110 -99
- package/dist/Skeleton.js +271 -449
- package/dist/SkeletonBinary.d.ts +1 -1
- package/dist/SkeletonBinary.js +655 -466
- package/dist/SkeletonBounds.d.ts +4 -4
- package/dist/SkeletonBounds.js +45 -46
- package/dist/SkeletonClipping.d.ts +26 -22
- package/dist/SkeletonClipping.js +654 -340
- package/dist/SkeletonData.d.ts +18 -35
- package/dist/SkeletonData.js +57 -97
- package/dist/SkeletonJson.d.ts +8 -6
- package/dist/SkeletonJson.js +895 -640
- package/dist/SkeletonRendererCore.d.ts +58 -0
- package/dist/SkeletonRendererCore.js +310 -0
- package/dist/Skin.d.ts +20 -16
- package/dist/Skin.js +58 -53
- package/dist/Slider.d.ts +46 -0
- package/dist/Slider.js +115 -0
- package/dist/SliderData.d.ts +58 -0
- package/dist/SliderData.js +59 -0
- package/dist/SliderPose.d.ts +37 -0
- package/dist/SliderPose.js +40 -0
- package/dist/Slot.d.ts +16 -38
- package/dist/Slot.js +37 -60
- package/dist/SlotData.d.ts +5 -12
- package/dist/SlotData.js +7 -15
- package/dist/SlotPose.d.ts +59 -0
- package/dist/SlotPose.js +81 -0
- package/dist/Texture.d.ts +1 -0
- package/dist/Texture.js +2 -1
- package/dist/TextureAtlas.d.ts +3 -3
- package/dist/TextureAtlas.js +49 -49
- package/dist/TransformConstraint.d.ts +16 -28
- package/dist/TransformConstraint.js +72 -209
- package/dist/TransformConstraintData.d.ts +108 -20
- package/dist/TransformConstraintData.js +274 -24
- package/dist/TransformConstraintPose.d.ts +45 -0
- package/dist/TransformConstraintPose.js +52 -0
- package/dist/Triangulator.d.ts +1 -1
- package/dist/Triangulator.js +91 -107
- package/dist/{Updatable.d.ts → Update.d.ts} +5 -12
- package/dist/Update.js +30 -0
- package/dist/Utils.d.ts +14 -3
- package/dist/Utils.js +80 -37
- package/dist/attachments/Attachment.d.ts +27 -19
- package/dist/attachments/Attachment.js +59 -35
- package/dist/attachments/AttachmentLoader.d.ts +14 -14
- package/dist/attachments/AttachmentLoader.js +1 -1
- package/dist/attachments/BoundingBoxAttachment.d.ts +1 -1
- package/dist/attachments/BoundingBoxAttachment.js +2 -2
- package/dist/attachments/ClippingAttachment.d.ts +10 -3
- package/dist/attachments/ClippingAttachment.js +12 -3
- package/dist/attachments/{HasTextureRegion.d.ts → HasSequence.d.ts} +11 -14
- package/dist/attachments/HasSequence.js +30 -0
- package/dist/attachments/MeshAttachment.d.ts +28 -35
- package/dist/attachments/MeshAttachment.js +85 -97
- package/dist/attachments/PathAttachment.d.ts +3 -3
- package/dist/attachments/PathAttachment.js +6 -6
- package/dist/attachments/PointAttachment.d.ts +11 -6
- package/dist/attachments/PointAttachment.js +8 -3
- package/dist/attachments/RegionAttachment.d.ts +25 -27
- package/dist/attachments/RegionAttachment.js +101 -113
- package/dist/attachments/Sequence.d.ts +31 -6
- package/dist/attachments/Sequence.js +79 -13
- package/dist/esm/spine-core.min.mjs +2 -2
- package/dist/esm/spine-core.mjs +7747 -6116
- package/dist/esm/spine-core.mjs.map +4 -4
- package/dist/iife/spine-core.js +7747 -6116
- package/dist/iife/spine-core.js.map +4 -4
- package/dist/iife/spine-core.min.js +2 -2
- package/dist/index.d.ts +32 -11
- package/dist/index.js +33 -12
- package/dist/polyfills.js +4 -5
- package/package.json +1 -1
- package/dist/Updatable.js +0 -30
package/dist/Skin.js
CHANGED
|
@@ -30,25 +30,30 @@ import { MeshAttachment } from "./attachments/MeshAttachment.js";
|
|
|
30
30
|
import { Color } from "./Utils.js";
|
|
31
31
|
/** Stores an entry in the skin consisting of the slot index, name, and attachment **/
|
|
32
32
|
export class SkinEntry {
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
/** The {@link Skeleton.slots} index. */
|
|
34
|
+
slotIndex = 0;
|
|
35
|
+
placeholder;
|
|
36
|
+
/** The attachment for this skin entry. */
|
|
35
37
|
attachment;
|
|
36
|
-
constructor(slotIndex = 0,
|
|
38
|
+
constructor(slotIndex = 0, placeholder, attachment) {
|
|
37
39
|
this.slotIndex = slotIndex;
|
|
38
|
-
this.
|
|
40
|
+
this.placeholder = placeholder;
|
|
39
41
|
this.attachment = attachment;
|
|
40
42
|
}
|
|
41
43
|
}
|
|
42
|
-
/** Stores attachments by slot index and
|
|
44
|
+
/** Stores attachments by slot index and placeholder name. Multiple {@link Skeleton} instances can use the same skins.
|
|
43
45
|
*
|
|
44
|
-
* See
|
|
46
|
+
* See {@link SkeletonData.defaultSkin}, {@link Skeleton.skin}, and
|
|
45
47
|
* [Runtime skins](http://esotericsoftware.com/spine-runtime-skins) in the Spine Runtimes Guide. */
|
|
46
48
|
export class Skin {
|
|
47
|
-
/** The skin's name,
|
|
49
|
+
/** The skin's name, unique across all skins in the skeleton.
|
|
50
|
+
*
|
|
51
|
+
* See {@link SkeletonData.findSkin}. */
|
|
48
52
|
name;
|
|
49
|
-
attachments =
|
|
50
|
-
bones =
|
|
51
|
-
|
|
53
|
+
attachments = [];
|
|
54
|
+
bones = [];
|
|
55
|
+
// biome-ignore lint/suspicious/noExplicitAny: reference runtime does not restrict to specific types
|
|
56
|
+
constraints = [];
|
|
52
57
|
/** The color of the skin as it was in Spine, or a default color if nonessential data was not exported. */
|
|
53
58
|
color = new Color(0.99607843, 0.61960787, 0.30980393, 1); // fe9e4fff
|
|
54
59
|
constructor(name) {
|
|
@@ -57,23 +62,23 @@ export class Skin {
|
|
|
57
62
|
this.name = name;
|
|
58
63
|
}
|
|
59
64
|
/** Adds an attachment to the skin for the specified slot index and name. */
|
|
60
|
-
setAttachment(slotIndex,
|
|
65
|
+
setAttachment(slotIndex, placeholder, attachment) {
|
|
61
66
|
if (!attachment)
|
|
62
67
|
throw new Error("attachment cannot be null.");
|
|
63
|
-
|
|
68
|
+
const attachments = this.attachments;
|
|
64
69
|
if (slotIndex >= attachments.length)
|
|
65
70
|
attachments.length = slotIndex + 1;
|
|
66
71
|
if (!attachments[slotIndex])
|
|
67
72
|
attachments[slotIndex] = {};
|
|
68
|
-
attachments[slotIndex][
|
|
73
|
+
attachments[slotIndex][placeholder] = attachment;
|
|
69
74
|
}
|
|
70
75
|
/** Adds all attachments, bones, and constraints from the specified skin to this skin. */
|
|
71
76
|
addSkin(skin) {
|
|
72
77
|
for (let i = 0; i < skin.bones.length; i++) {
|
|
73
|
-
|
|
78
|
+
const bone = skin.bones[i];
|
|
74
79
|
let contained = false;
|
|
75
80
|
for (let ii = 0; ii < this.bones.length; ii++) {
|
|
76
|
-
if (this.bones[ii]
|
|
81
|
+
if (this.bones[ii] === bone) {
|
|
77
82
|
contained = true;
|
|
78
83
|
break;
|
|
79
84
|
}
|
|
@@ -82,10 +87,10 @@ export class Skin {
|
|
|
82
87
|
this.bones.push(bone);
|
|
83
88
|
}
|
|
84
89
|
for (let i = 0; i < skin.constraints.length; i++) {
|
|
85
|
-
|
|
90
|
+
const constraint = skin.constraints[i];
|
|
86
91
|
let contained = false;
|
|
87
92
|
for (let ii = 0; ii < this.constraints.length; ii++) {
|
|
88
|
-
if (this.constraints[ii]
|
|
93
|
+
if (this.constraints[ii] === constraint) {
|
|
89
94
|
contained = true;
|
|
90
95
|
break;
|
|
91
96
|
}
|
|
@@ -93,20 +98,20 @@ export class Skin {
|
|
|
93
98
|
if (!contained)
|
|
94
99
|
this.constraints.push(constraint);
|
|
95
100
|
}
|
|
96
|
-
|
|
101
|
+
const attachments = skin.getAttachments();
|
|
97
102
|
for (let i = 0; i < attachments.length; i++) {
|
|
98
|
-
|
|
99
|
-
this.setAttachment(attachment.slotIndex, attachment.
|
|
103
|
+
const attachment = attachments[i];
|
|
104
|
+
this.setAttachment(attachment.slotIndex, attachment.placeholder, attachment.attachment);
|
|
100
105
|
}
|
|
101
106
|
}
|
|
102
107
|
/** Adds all bones and constraints and copies of all attachments from the specified skin to this skin. Mesh attachments are not
|
|
103
108
|
* copied, instead a new linked mesh is created. The attachment copies can be modified without affecting the originals. */
|
|
104
109
|
copySkin(skin) {
|
|
105
110
|
for (let i = 0; i < skin.bones.length; i++) {
|
|
106
|
-
|
|
111
|
+
const bone = skin.bones[i];
|
|
107
112
|
let contained = false;
|
|
108
113
|
for (let ii = 0; ii < this.bones.length; ii++) {
|
|
109
|
-
if (this.bones[ii]
|
|
114
|
+
if (this.bones[ii] === bone) {
|
|
110
115
|
contained = true;
|
|
111
116
|
break;
|
|
112
117
|
}
|
|
@@ -115,10 +120,10 @@ export class Skin {
|
|
|
115
120
|
this.bones.push(bone);
|
|
116
121
|
}
|
|
117
122
|
for (let i = 0; i < skin.constraints.length; i++) {
|
|
118
|
-
|
|
123
|
+
const constraint = skin.constraints[i];
|
|
119
124
|
let contained = false;
|
|
120
125
|
for (let ii = 0; ii < this.constraints.length; ii++) {
|
|
121
|
-
if (this.constraints[ii]
|
|
126
|
+
if (this.constraints[ii] === constraint) {
|
|
122
127
|
contained = true;
|
|
123
128
|
break;
|
|
124
129
|
}
|
|
@@ -126,40 +131,40 @@ export class Skin {
|
|
|
126
131
|
if (!contained)
|
|
127
132
|
this.constraints.push(constraint);
|
|
128
133
|
}
|
|
129
|
-
|
|
134
|
+
const attachments = skin.getAttachments();
|
|
130
135
|
for (let i = 0; i < attachments.length; i++) {
|
|
131
|
-
|
|
136
|
+
const attachment = attachments[i];
|
|
132
137
|
if (!attachment.attachment)
|
|
133
138
|
continue;
|
|
134
139
|
if (attachment.attachment instanceof MeshAttachment) {
|
|
135
140
|
attachment.attachment = attachment.attachment.newLinkedMesh();
|
|
136
|
-
this.setAttachment(attachment.slotIndex, attachment.
|
|
141
|
+
this.setAttachment(attachment.slotIndex, attachment.placeholder, attachment.attachment);
|
|
137
142
|
}
|
|
138
143
|
else {
|
|
139
144
|
attachment.attachment = attachment.attachment.copy();
|
|
140
|
-
this.setAttachment(attachment.slotIndex, attachment.
|
|
145
|
+
this.setAttachment(attachment.slotIndex, attachment.placeholder, attachment.attachment);
|
|
141
146
|
}
|
|
142
147
|
}
|
|
143
148
|
}
|
|
144
|
-
/** Returns the attachment for the specified slot index and
|
|
145
|
-
getAttachment(slotIndex,
|
|
146
|
-
|
|
147
|
-
return dictionary ? dictionary[
|
|
149
|
+
/** Returns the attachment for the specified slot index and placeholder, or null. */
|
|
150
|
+
getAttachment(slotIndex, placeholder) {
|
|
151
|
+
const dictionary = this.attachments[slotIndex];
|
|
152
|
+
return dictionary ? dictionary[placeholder] : null;
|
|
148
153
|
}
|
|
149
|
-
/** Removes the attachment in the skin for the specified slot index and
|
|
150
|
-
removeAttachment(slotIndex,
|
|
151
|
-
|
|
154
|
+
/** Removes the attachment in the skin for the specified slot index and placeholder, if any. */
|
|
155
|
+
removeAttachment(slotIndex, placeholder) {
|
|
156
|
+
const dictionary = this.attachments[slotIndex];
|
|
152
157
|
if (dictionary)
|
|
153
|
-
delete dictionary[
|
|
158
|
+
delete dictionary[placeholder];
|
|
154
159
|
}
|
|
155
160
|
/** Returns all attachments in this skin. */
|
|
156
161
|
getAttachments() {
|
|
157
|
-
|
|
158
|
-
for (
|
|
159
|
-
|
|
162
|
+
const entries = [];
|
|
163
|
+
for (let i = 0; i < this.attachments.length; i++) {
|
|
164
|
+
const slotAttachments = this.attachments[i];
|
|
160
165
|
if (slotAttachments) {
|
|
161
|
-
for (
|
|
162
|
-
|
|
166
|
+
for (const name in slotAttachments) {
|
|
167
|
+
const attachment = slotAttachments[name];
|
|
163
168
|
if (attachment)
|
|
164
169
|
entries.push(new SkinEntry(i, name, attachment));
|
|
165
170
|
}
|
|
@@ -169,10 +174,10 @@ export class Skin {
|
|
|
169
174
|
}
|
|
170
175
|
/** Returns all attachments in this skin for the specified slot index. */
|
|
171
176
|
getAttachmentsForSlot(slotIndex, attachments) {
|
|
172
|
-
|
|
177
|
+
const slotAttachments = this.attachments[slotIndex];
|
|
173
178
|
if (slotAttachments) {
|
|
174
|
-
for (
|
|
175
|
-
|
|
179
|
+
for (const name in slotAttachments) {
|
|
180
|
+
const attachment = slotAttachments[name];
|
|
176
181
|
if (attachment)
|
|
177
182
|
attachments.push(new SkinEntry(slotIndex, name, attachment));
|
|
178
183
|
}
|
|
@@ -188,16 +193,16 @@ export class Skin {
|
|
|
188
193
|
attachAll(skeleton, oldSkin) {
|
|
189
194
|
let slotIndex = 0;
|
|
190
195
|
for (let i = 0; i < skeleton.slots.length; i++) {
|
|
191
|
-
|
|
192
|
-
|
|
196
|
+
const slot = skeleton.slots[i];
|
|
197
|
+
const slotAttachment = slot.pose.getAttachment();
|
|
193
198
|
if (slotAttachment && slotIndex < oldSkin.attachments.length) {
|
|
194
|
-
|
|
195
|
-
for (
|
|
196
|
-
|
|
197
|
-
if (slotAttachment
|
|
198
|
-
|
|
199
|
+
const dictionary = oldSkin.attachments[slotIndex];
|
|
200
|
+
for (const placeholder in dictionary) {
|
|
201
|
+
const skinAttachment = dictionary[placeholder];
|
|
202
|
+
if (slotAttachment === skinAttachment) {
|
|
203
|
+
const attachment = this.getAttachment(slotIndex, placeholder);
|
|
199
204
|
if (attachment)
|
|
200
|
-
slot.setAttachment(attachment);
|
|
205
|
+
slot.pose.setAttachment(attachment);
|
|
201
206
|
break;
|
|
202
207
|
}
|
|
203
208
|
}
|
|
@@ -206,4 +211,4 @@ export class Skin {
|
|
|
206
211
|
}
|
|
207
212
|
}
|
|
208
213
|
}
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Ta2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUcvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFJakUsT0FBTyxFQUFFLEtBQUssRUFBYSxNQUFNLFlBQVksQ0FBQztBQUU5QyxzRkFBc0Y7QUFDdEYsTUFBTSxPQUFPLFNBQVM7SUFDRDtJQUE4QjtJQUFxQjtJQUF2RSxZQUFvQixZQUFvQixDQUFDLEVBQVMsSUFBWSxFQUFTLFVBQXNCO1FBQXpFLGNBQVMsR0FBVCxTQUFTLENBQVk7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUFJLENBQUM7Q0FDbEc7QUFFRDs7O21HQUdtRztBQUNuRyxNQUFNLE9BQU8sSUFBSTtJQUNoQix5RUFBeUU7SUFDekUsSUFBSSxDQUFTO0lBRWIsV0FBVyxHQUFHLElBQUksS0FBSyxFQUF5QixDQUFDO0lBQ2pELEtBQUssR0FBRyxLQUFLLEVBQVksQ0FBQztJQUMxQixXQUFXLEdBQUcsSUFBSSxLQUFLLEVBQWtCLENBQUM7SUFFMUMsMEdBQTBHO0lBQzFHLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVc7SUFFckUsWUFBYSxJQUFZO1FBQ3hCLElBQUksQ0FBQyxJQUFJO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLENBQUM7SUFFRCw0RUFBNEU7SUFDNUUsYUFBYSxDQUFFLFNBQWlCLEVBQUUsSUFBWSxFQUFFLFVBQXNCO1FBQ3JFLElBQUksQ0FBQyxVQUFVO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FB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QixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGlIQUFpSDtJQUNqSCxTQUFTLENBQUUsUUFBa0IsRUFBRSxPQUFhO1FBQzNDLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNsQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNoRCxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdCLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMxQyxJQUFJLGNBQWMsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDOUQsSUFBSSxVQUFVLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDaEQsS0FBSyxJQUFJLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQkFDNUIsSUFBSSxjQUFjLEdBQWUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNqRCxJQUFJLGNBQWMsSUFBSSxjQUFjLEVBQUUsQ0FBQzt3QkFDdEMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7d0JBQ3BELElBQUksVUFBVTs0QkFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUMvQyxNQUFNO29CQUNQLENBQUM7Z0JBQ0YsQ0FBQztZQUNGLENBQUM7WUFDRCxTQUFTLEVBQUUsQ0FBQztRQUNiLENBQUM7SUFDRixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEFwcmlsIDUsIDIwMjUuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyNSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZVxuICogb3Igb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9BdHRhY2htZW50LmpzXCI7XG5pbXBvcnQgeyBNZXNoQXR0YWNobWVudCB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL01lc2hBdHRhY2htZW50LmpzXCI7XG5pbXBvcnQgeyBCb25lRGF0YSB9IGZyb20gXCIuL0JvbmVEYXRhLmpzXCI7XG5pbXBvcnQgeyBDb25zdHJhaW50RGF0YSB9IGZyb20gXCIuL0NvbnN0cmFpbnREYXRhLmpzXCI7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gXCIuL1NrZWxldG9uLmpzXCI7XG5pbXBvcnQgeyBDb2xvciwgU3RyaW5nTWFwIH0gZnJvbSBcIi4vVXRpbHMuanNcIjtcblxuLyoqIFN0b3JlcyBhbiBlbnRyeSBpbiB0aGUgc2tpbiBjb25zaXN0aW5nIG9mIHRoZSBzbG90IGluZGV4LCBuYW1lLCBhbmQgYXR0YWNobWVudCAqKi9cbmV4cG9ydCBjbGFzcyBTa2luRW50cnkge1xuXHRjb25zdHJ1Y3RvciAocHVibGljIHNsb3RJbmRleDogbnVtYmVyID0gMCwgcHVibGljIG5hbWU6IHN0cmluZywgcHVibGljIGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQpIHsgfVxufVxuXG4vKiogU3RvcmVzIGF0dGFjaG1lbnRzIGJ5IHNsb3QgaW5kZXggYW5kIGF0dGFjaG1lbnQgbmFtZS5cbiAqXG4gKiBTZWUgU2tlbGV0b25EYXRhIHtAbGluayBTa2VsZXRvbkRhdGEjZGVmYXVsdFNraW59LCBTa2VsZXRvbiB7QGxpbmsgU2tlbGV0b24jc2tpbn0sIGFuZFxuICogW1J1bnRpbWUgc2tpbnNdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1ydW50aW1lLXNraW5zKSBpbiB0aGUgU3BpbmUgUnVudGltZXMgR3VpZGUuICovXG5leHBvcnQgY2xhc3MgU2tpbiB7XG5cdC8qKiBUaGUgc2tpbidzIG5hbWUsIHdoaWNoIGlzIHVuaXF1ZSBhY3Jvc3MgYWxsIHNraW5zIGluIHRoZSBza2VsZXRvbi4gKi9cblx0bmFtZTogc3RyaW5nO1xuXG5cdGF0dGFjaG1lbnRzID0gbmV3IEFycmF5PFN0cmluZ01hcDxBdHRhY2htZW50Pj4oKTtcblx0Ym9uZXMgPSBBcnJheTxCb25lRGF0YT4oKTtcblx0Y29uc3RyYWludHMgPSBuZXcgQXJyYXk8Q29uc3RyYWludERhdGE+KCk7XG5cblx0LyoqIFRoZSBjb2xvciBvZiB0aGUgc2tpbiBhcyBpdCB3YXMgaW4gU3BpbmUsIG9yIGEgZGVmYXVsdCBjb2xvciBpZiBub25lc3NlbnRpYWwgZGF0YSB3YXMgbm90IGV4cG9ydGVkLiAqL1xuXHRjb2xvciA9IG5ldyBDb2xvcigwLjk5NjA3ODQzLCAwLjYxOTYwNzg3LCAwLjMwOTgwMzkzLCAxKTsgLy8gZmU5ZTRmZmZcblxuXHRjb25zdHJ1Y3RvciAobmFtZTogc3RyaW5nKSB7XG5cdFx0aWYgKCFuYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJuYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHR0aGlzLm5hbWUgPSBuYW1lO1xuXHR9XG5cblx0LyoqIEFkZHMgYW4gYXR0YWNobWVudCB0byB0aGUgc2tpbiBmb3IgdGhlIHNwZWNpZmllZCBzbG90IGluZGV4IGFuZCBuYW1lLiAqL1xuXHRzZXRBdHRhY2htZW50IChzbG90SW5kZXg6IG51bWJlciwgbmFtZTogc3RyaW5nLCBhdHRhY2htZW50OiBBdHRhY2htZW50KSB7XG5cdFx0aWYgKCFhdHRhY2htZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJhdHRhY2htZW50IGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRsZXQgYXR0YWNobWVudHMgPSB0aGlzLmF0dGFjaG1lbnRzO1xuXHRcdGlmIChzbG90SW5kZXggPj0gYXR0YWNobWVudHMubGVuZ3RoKSBhdHRhY2htZW50cy5sZW5ndGggPSBzbG90SW5kZXggKyAxO1xuXHRcdGlmICghYXR0YWNobWVudHNbc2xvdEluZGV4XSkgYXR0YWNobWVudHNbc2xvdEluZGV4XSA9IHt9O1xuXHRcdGF0dGFjaG1lbnRzW3Nsb3RJbmRleF1bbmFtZV0gPSBhdHRhY2htZW50O1xuXHR9XG5cblx0LyoqIEFkZHMgYWxsIGF0dGFjaG1lbnRzLCBib25lcywgYW5kIGNvbnN0cmFpbnRzIGZyb20gdGhlIHNwZWNpZmllZCBza2luIHRvIHRoaXMgc2tpbi4gKi9cblx0YWRkU2tpbiAoc2tpbjogU2tpbikge1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2tpbi5ib25lcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IGJvbmUgPSBza2luLmJvbmVzW2ldO1xuXHRcdFx0bGV0IGNvbnRhaW5lZCA9IGZhbHNlO1xuXHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHRoaXMuYm9uZXMubGVuZ3RoOyBpaSsrKSB7XG5cdFx0XHRcdGlmICh0aGlzLmJvbmVzW2lpXSA9PSBib25lKSB7XG5cdFx0XHRcdFx0Y29udGFpbmVkID0gdHJ1ZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKCFjb250YWluZWQpIHRoaXMuYm9uZXMucHVzaChib25lKTtcblx0XHR9XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHNraW4uY29uc3RyYWludHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGxldCBjb25zdHJhaW50ID0gc2tpbi5jb25zdHJhaW50c1tpXTtcblx0XHRcdGxldCBjb250YWluZWQgPSBmYWxzZTtcblx0XHRcdGZvciAobGV0IGlpID0gMDsgaWkgPCB0aGlzLmNvbnN0cmFpbnRzLmxlbmd0aDsgaWkrKykge1xuXHRcdFx0XHRpZiAodGhpcy5jb25zdHJhaW50c1tpaV0gPT0gY29uc3RyYWludCkge1xuXHRcdFx0XHRcdGNvbnRhaW5lZCA9IHRydWU7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICghY29udGFpbmVkKSB0aGlzLmNvbnN0cmFpbnRzLnB1c2goY29uc3RyYWludCk7XG5cdFx0fVxuXG5cdFx0bGV0IGF0dGFjaG1lbnRzID0gc2tpbi5nZXRBdHRhY2htZW50cygpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYXR0YWNobWVudHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBhdHRhY2htZW50ID0gYXR0YWNobWVudHNbaV07XG5cdFx0XHR0aGlzLnNldEF0dGFjaG1lbnQoYXR0YWNobWVudC5zbG90SW5kZXgsIGF0dGFjaG1lbnQubmFtZSwgYXR0YWNobWVudC5hdHRhY2htZW50KTtcblx0XHR9XG5cdH1cblxuXHQvKiogQWRkcyBhbGwgYm9uZXMgYW5kIGNvbnN0cmFpbnRzIGFuZCBjb3BpZXMgb2YgYWxsIGF0dGFjaG1lbnRzIGZyb20gdGhlIHNwZWNpZmllZCBza2luIHRvIHRoaXMgc2tpbi4gTWVzaCBhdHRhY2htZW50cyBhcmUgbm90XG5cdCAqIGNvcGllZCwgaW5zdGVhZCBhIG5ldyBsaW5rZWQgbWVzaCBpcyBjcmVhdGVkLiBUaGUgYXR0YWNobWVudCBjb3BpZXMgY2FuIGJlIG1vZGlmaWVkIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBvcmlnaW5hbHMuICovXG5cdGNvcHlTa2luIChza2luOiBTa2luKSB7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBza2luLmJvbmVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgYm9uZSA9IHNraW4uYm9uZXNbaV07XG5cdFx0XHRsZXQgY29udGFpbmVkID0gZmFsc2U7XG5cdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgdGhpcy5ib25lcy5sZW5ndGg7IGlpKyspIHtcblx0XHRcdFx0aWYgKHRoaXMuYm9uZXNbaWldID09IGJvbmUpIHtcblx0XHRcdFx0XHRjb250YWluZWQgPSB0cnVlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWNvbnRhaW5lZCkgdGhpcy5ib25lcy5wdXNoKGJvbmUpO1xuXHRcdH1cblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2tpbi5jb25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IGNvbnN0cmFpbnQgPSBza2luLmNvbnN0cmFpbnRzW2ldO1xuXHRcdFx0bGV0IGNvbnRhaW5lZCA9IGZhbHNlO1xuXHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHRoaXMuY29uc3RyYWludHMubGVuZ3RoOyBpaSsrKSB7XG5cdFx0XHRcdGlmICh0aGlzLmNvbnN0cmFpbnRzW2lpXSA9PSBjb25zdHJhaW50KSB7XG5cdFx0XHRcdFx0Y29udGFpbmVkID0gdHJ1ZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKCFjb250YWluZWQpIHRoaXMuY29uc3RyYWludHMucHVzaChjb25zdHJhaW50KTtcblx0XHR9XG5cblx0XHRsZXQgYXR0YWNobWVudHMgPSBza2luLmdldEF0dGFjaG1lbnRzKCk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhdHRhY2htZW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGF0dGFjaG1lbnQgPSBhdHRhY2htZW50c1tpXTtcblx0XHRcdGlmICghYXR0YWNobWVudC5hdHRhY2htZW50KSBjb250aW51ZTtcblx0XHRcdGlmIChhdHRhY2htZW50LmF0dGFjaG1lbnQgaW5zdGFuY2VvZiBNZXNoQXR0YWNobWVudCkge1xuXHRcdFx0XHRhdHRhY2htZW50LmF0dGFjaG1lbnQgPSBhdHRhY2htZW50LmF0dGFjaG1lbnQubmV3TGlua2VkTWVzaCgpO1xuXHRcdFx0XHR0aGlzLnNldEF0dGFjaG1lbnQoYXR0YWNobWVudC5zbG90SW5kZXgsIGF0dGFjaG1lbnQubmFtZSwgYXR0YWNobWVudC5hdHRhY2htZW50KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGF0dGFjaG1lbnQuYXR0YWNobWVudCA9IGF0dGFjaG1lbnQuYXR0YWNobWVudC5jb3B5KCk7XG5cdFx0XHRcdHRoaXMuc2V0QXR0YWNobWVudChhdHRhY2htZW50LnNsb3RJbmRleCwgYXR0YWNobWVudC5uYW1lLCBhdHRhY2htZW50LmF0dGFjaG1lbnQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKiBSZXR1cm5zIHRoZSBhdHRhY2htZW50IGZvciB0aGUgc3BlY2lmaWVkIHNsb3QgaW5kZXggYW5kIG5hbWUsIG9yIG51bGwuICovXG5cdGdldEF0dGFjaG1lbnQgKHNsb3RJbmRleDogbnVtYmVyLCBuYW1lOiBzdHJpbmcpOiBBdHRhY2htZW50IHwgbnVsbCB7XG5cdFx0bGV0IGRpY3Rpb25hcnkgPSB0aGlzLmF0dGFjaG1lbnRzW3Nsb3RJbmRleF07XG5cdFx0cmV0dXJuIGRpY3Rpb25hcnkgPyBkaWN0aW9uYXJ5W25hbWVdIDogbnVsbDtcblx0fVxuXG5cdC8qKiBSZW1vdmVzIHRoZSBhdHRhY2htZW50IGluIHRoZSBza2luIGZvciB0aGUgc3BlY2lmaWVkIHNsb3QgaW5kZXggYW5kIG5hbWUsIGlmIGFueS4gKi9cblx0cmVtb3ZlQXR0YWNobWVudCAoc2xvdEluZGV4OiBudW1iZXIsIG5hbWU6IHN0cmluZykge1xuXHRcdGxldCBkaWN0aW9uYXJ5ID0gdGhpcy5hdHRhY2htZW50c1tzbG90SW5kZXhdO1xuXHRcdGlmIChkaWN0aW9uYXJ5KSBkZWxldGUgZGljdGlvbmFyeVtuYW1lXTtcblx0fVxuXG5cdC8qKiBSZXR1cm5zIGFsbCBhdHRhY2htZW50cyBpbiB0aGlzIHNraW4uICovXG5cdGdldEF0dGFjaG1lbnRzICgpOiBBcnJheTxTa2luRW50cnk+IHtcblx0XHRsZXQgZW50cmllcyA9IG5ldyBBcnJheTxTa2luRW50cnk+KCk7XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmF0dGFjaG1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgc2xvdEF0dGFjaG1lbnRzID0gdGhpcy5hdHRhY2htZW50c1tpXTtcblx0XHRcdGlmIChzbG90QXR0YWNobWVudHMpIHtcblx0XHRcdFx0Zm9yIChsZXQgbmFtZSBpbiBzbG90QXR0YWNobWVudHMpIHtcblx0XHRcdFx0XHRsZXQgYXR0YWNobWVudCA9IHNsb3RBdHRhY2htZW50c1tuYW1lXTtcblx0XHRcdFx0XHRpZiAoYXR0YWNobWVudCkgZW50cmllcy5wdXNoKG5ldyBTa2luRW50cnkoaSwgbmFtZSwgYXR0YWNobWVudCkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBlbnRyaWVzO1xuXHR9XG5cblx0LyoqIFJldHVybnMgYWxsIGF0dGFjaG1lbnRzIGluIHRoaXMgc2tpbiBmb3IgdGhlIHNwZWNpZmllZCBzbG90IGluZGV4LiAqL1xuXHRnZXRBdHRhY2htZW50c0ZvclNsb3QgKHNsb3RJbmRleDogbnVtYmVyLCBhdHRhY2htZW50czogQXJyYXk8U2tpbkVudHJ5Pikge1xuXHRcdGxldCBzbG90QXR0YWNobWVudHMgPSB0aGlzLmF0dGFjaG1lbnRzW3Nsb3RJbmRleF07XG5cdFx0aWYgKHNsb3RBdHRhY2htZW50cykge1xuXHRcdFx0Zm9yIChsZXQgbmFtZSBpbiBzbG90QXR0YWNobWVudHMpIHtcblx0XHRcdFx0bGV0IGF0dGFjaG1lbnQgPSBzbG90QXR0YWNobWVudHNbbmFtZV07XG5cdFx0XHRcdGlmIChhdHRhY2htZW50KSBhdHRhY2htZW50cy5wdXNoKG5ldyBTa2luRW50cnkoc2xvdEluZGV4LCBuYW1lLCBhdHRhY2htZW50KSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqIENsZWFycyBhbGwgYXR0YWNobWVudHMsIGJvbmVzLCBhbmQgY29uc3RyYWludHMuICovXG5cdGNsZWFyICgpIHtcblx0XHR0aGlzLmF0dGFjaG1lbnRzLmxlbmd0aCA9IDA7XG5cdFx0dGhpcy5ib25lcy5sZW5ndGggPSAwO1xuXHRcdHRoaXMuY29uc3RyYWludHMubGVuZ3RoID0gMDtcblx0fVxuXG5cdC8qKiBBdHRhY2ggZWFjaCBhdHRhY2htZW50IGluIHRoaXMgc2tpbiBpZiB0aGUgY29ycmVzcG9uZGluZyBhdHRhY2htZW50IGluIHRoZSBvbGQgc2tpbiBpcyBjdXJyZW50bHkgYXR0YWNoZWQuICovXG5cdGF0dGFjaEFsbCAoc2tlbGV0b246IFNrZWxldG9uLCBvbGRTa2luOiBTa2luKSB7XG5cdFx0bGV0IHNsb3RJbmRleCA9IDA7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBza2VsZXRvbi5zbG90cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IHNsb3QgPSBza2VsZXRvbi5zbG90c1tpXTtcblx0XHRcdGxldCBzbG90QXR0YWNobWVudCA9IHNsb3QuZ2V0QXR0YWNobWVudCgpO1xuXHRcdFx0aWYgKHNsb3RBdHRhY2htZW50ICYmIHNsb3RJbmRleCA8IG9sZFNraW4uYXR0YWNobWVudHMubGVuZ3RoKSB7XG5cdFx0XHRcdGxldCBkaWN0aW9uYXJ5ID0gb2xkU2tpbi5hdHRhY2htZW50c1tzbG90SW5kZXhdO1xuXHRcdFx0XHRmb3IgKGxldCBrZXkgaW4gZGljdGlvbmFyeSkge1xuXHRcdFx0XHRcdGxldCBza2luQXR0YWNobWVudDogQXR0YWNobWVudCA9IGRpY3Rpb25hcnlba2V5XTtcblx0XHRcdFx0XHRpZiAoc2xvdEF0dGFjaG1lbnQgPT0gc2tpbkF0dGFjaG1lbnQpIHtcblx0XHRcdFx0XHRcdGxldCBhdHRhY2htZW50ID0gdGhpcy5nZXRBdHRhY2htZW50KHNsb3RJbmRleCwga2V5KTtcblx0XHRcdFx0XHRcdGlmIChhdHRhY2htZW50KSBzbG90LnNldEF0dGFjaG1lbnQoYXR0YWNobWVudCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHNsb3RJbmRleCsrO1xuXHRcdH1cblx0fVxufVxuIl19
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Ta2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUcvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFLakUsT0FBTyxFQUFFLEtBQUssRUFBa0IsTUFBTSxZQUFZLENBQUM7QUFFbkQsc0ZBQXNGO0FBQ3RGLE1BQU0sT0FBTyxTQUFTO0lBRXJCLHdDQUF3QztJQUN4QyxTQUFTLEdBQVcsQ0FBQyxDQUFDO0lBRXRCLFdBQVcsQ0FBUztJQUVwQiwwQ0FBMEM7SUFDMUMsVUFBVSxDQUFZO0lBRXRCLFlBQWEsWUFBb0IsQ0FBQyxFQUFFLFdBQW1CLEVBQUUsVUFBc0I7UUFDOUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDOUIsQ0FBQztDQUNEO0FBRUQ7OzttR0FHbUc7QUFDbkcsTUFBTSxPQUFPLElBQUk7SUFDaEI7OzRDQUV3QztJQUN4QyxJQUFJLENBQVM7SUFFYixXQUFXLEdBQUcsRUFBNkIsQ0FBQztJQUM1QyxLQUFLLEdBQUcsRUFBZ0IsQ0FBQztJQUN6QixvR0FBb0c7SUFDcEcsV0FBVyxHQUFHLEVBQWdDLENBQUM7SUFFL0MsMEdBQTBHO0lBQzFHLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVc7SUFFckUsWUFBYSxJQUFZO1FBQ3hCLElBQUksQ0FBQyxJQUFJO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLENBQUM7SUFFRCw0RUFB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ZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHR5cGUgeyBBdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgTWVzaEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9NZXNoQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBCb25lRGF0YSB9IGZyb20gXCIuL0JvbmVEYXRhLmpzXCI7XG5pbXBvcnQgdHlwZSB7IENvbnN0cmFpbnREYXRhIH0gZnJvbSBcIi4vQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB0eXBlIHsgU2tlbGV0b24gfSBmcm9tIFwiLi9Ta2VsZXRvbi5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTa2VsZXRvbkRhdGEgfSBmcm9tIFwiLi9Ta2VsZXRvbkRhdGEuanNcIjtcbmltcG9ydCB7IENvbG9yLCB0eXBlIFN0cmluZ01hcCB9IGZyb20gXCIuL1V0aWxzLmpzXCI7XG5cbi8qKiBTdG9yZXMgYW4gZW50cnkgaW4gdGhlIHNraW4gY29uc2lzdGluZyBvZiB0aGUgc2xvdCBpbmRleCwgbmFtZSwgYW5kIGF0dGFjaG1lbnQgKiovXG5leHBvcnQgY2xhc3MgU2tpbkVudHJ5IHtcblxuXHQvKiogVGhlIHtAbGluayBTa2VsZXRvbi5zbG90c30gaW5kZXguICovXG5cdHNsb3RJbmRleDogbnVtYmVyID0gMDtcblxuXHRwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG5cdC8qKiBUaGUgYXR0YWNobWVudCBmb3IgdGhpcyBza2luIGVudHJ5LiAqL1xuXHRhdHRhY2htZW50OiBBdHRhY2htZW50XG5cblx0Y29uc3RydWN0b3IgKHNsb3RJbmRleDogbnVtYmVyID0gMCwgcGxhY2Vob2xkZXI6IHN0cmluZywgYXR0YWNobWVudDogQXR0YWNobWVudCkge1xuXHRcdHRoaXMuc2xvdEluZGV4ID0gc2xvdEluZGV4O1xuXHRcdHRoaXMucGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcjtcblx0XHR0aGlzLmF0dGFjaG1lbnQgPSBhdHRhY2htZW50O1xuXHR9XG59XG5cbi8qKiBTdG9yZXMgYXR0YWNobWVudHMgYnkgc2xvdCBpbmRleCBhbmQgcGxhY2Vob2xkZXIgbmFtZS4gTXVsdGlwbGUge0BsaW5rIFNrZWxldG9ufSBpbnN0YW5jZXMgY2FuIHVzZSB0aGUgc2FtZSBza2lucy5cbiAqXG4gKiBTZWUge0BsaW5rIFNrZWxldG9uRGF0YS5kZWZhdWx0U2tpbn0sIHtAbGluayBTa2VsZXRvbi5za2lufSwgYW5kXG4gKiBbUnVudGltZSBza2luc10oaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLXJ1bnRpbWUtc2tpbnMpIGluIHRoZSBTcGluZSBSdW50aW1lcyBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBTa2luIHtcblx0LyoqIFRoZSBza2luJ3MgbmFtZSwgdW5pcXVlIGFjcm9zcyBhbGwgc2tpbnMgaW4gdGhlIHNrZWxldG9uLlxuXHQgKlxuXHQgKiBTZWUge0BsaW5rIFNrZWxldG9uRGF0YS5maW5kU2tpbn0uICovXG5cdG5hbWU6IHN0cmluZztcblxuXHRhdHRhY2htZW50cyA9IFtdIGFzIFN0cmluZ01hcDxBdHRhY2htZW50PltdO1xuXHRib25lcyA9IFtdIGFzIEJvbmVEYXRhW107XG5cdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogcmVmZXJlbmNlIHJ1bnRpbWUgZG9lcyBub3QgcmVzdHJpY3QgdG8gc3BlY2lmaWMgdHlwZXNcblx0Y29uc3RyYWludHMgPSBbXSBhcyBDb25zdHJhaW50RGF0YTxhbnksIGFueT5bXTtcblxuXHQvKiogVGhlIGNvbG9yIG9mIHRoZSBza2luIGFzIGl0IHdhcyBpbiBTcGluZSwgb3IgYSBkZWZhdWx0IGNvbG9yIGlmIG5vbmVzc2VudGlhbCBkYXRhIHdhcyBub3QgZXhwb3J0ZWQuICovXG5cdGNvbG9yID0gbmV3IENvbG9yKDAuOTk2MDc4NDMsIDAuNjE5NjA3ODcsIDAuMzA5ODAzOTMsIDEpOyAvLyBmZTllNGZmZlxuXG5cdGNvbnN0cnVjdG9yIChuYW1lOiBzdHJpbmcpIHtcblx0XHRpZiAoIW5hbWUpIHRocm93IG5ldyBFcnJvcihcIm5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdHRoaXMubmFtZSA9IG5hbWU7XG5cdH1cblxuXHQvKiogQWRkcyBhbiBhdHRhY2htZW50IHRvIHRoZSBza2luIGZvciB0aGUgc3BlY2lmaWVkIHNsb3QgaW5kZXggYW5kIG5hbWUuICovXG5cdHNldEF0dGFjaG1lbnQgKHNsb3RJbmRleDogbnVtYmVyLCBwbGFjZWhvbGRlcjogc3RyaW5nLCBhdHRhY2htZW50OiBBdHRhY2htZW50KSB7XG5cdFx0aWYgKCFhdHRhY2htZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJhdHRhY2htZW50IGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRjb25zdCBhdHRhY2htZW50cyA9IHRoaXMuYXR0YWNobWVudHM7XG5cdFx0aWYgKHNsb3RJbmRleCA+PSBhdHRhY2htZW50cy5sZW5ndGgpIGF0dGFjaG1lbnRzLmxlbmd0aCA9IHNsb3RJbmRleCArIDE7XG5cdFx0aWYgKCFhdHRhY2htZW50c1tzbG90SW5kZXhdKSBhdHRhY2htZW50c1tzbG90SW5kZXhdID0ge307XG5cdFx0YXR0YWNobWVudHNbc2xvdEluZGV4XVtwbGFjZWhvbGRlcl0gPSBhdHRhY2htZW50O1xuXHR9XG5cblx0LyoqIEFkZHMgYWxsIGF0dGFjaG1lbnRzLCBib25lcywgYW5kIGNvbnN0cmFpbnRzIGZyb20gdGhlIHNwZWNpZmllZCBza2luIHRvIHRoaXMgc2tpbi4gKi9cblx0YWRkU2tpbiAoc2tpbjogU2tpbikge1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2tpbi5ib25lcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgYm9uZSA9IHNraW4uYm9uZXNbaV07XG5cdFx0XHRsZXQgY29udGFpbmVkID0gZmFsc2U7XG5cdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgdGhpcy5ib25lcy5sZW5ndGg7IGlpKyspIHtcblx0XHRcdFx0aWYgKHRoaXMuYm9uZXNbaWldID09PSBib25lKSB7XG5cdFx0XHRcdFx0Y29udGFpbmVkID0gdHJ1ZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKCFjb250YWluZWQpIHRoaXMuYm9uZXMucHVzaChib25lKTtcblx0XHR9XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHNraW4uY29uc3RyYWludHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGNvbnN0cmFpbnQgPSBza2luLmNvbnN0cmFpbnRzW2ldO1xuXHRcdFx0bGV0IGNvbnRhaW5lZCA9IGZhbHNlO1xuXHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHRoaXMuY29uc3RyYWludHMubGVuZ3RoOyBpaSsrKSB7XG5cdFx0XHRcdGlmICh0aGlzLmNvbnN0cmFpbnRzW2lpXSA9PT0gY29uc3RyYWludCkge1xuXHRcdFx0XHRcdGNvbnRhaW5lZCA9IHRydWU7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICghY29udGFpbmVkKSB0aGlzLmNvbnN0cmFpbnRzLnB1c2goY29uc3RyYWludCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgYXR0YWNobWVudHMgPSBza2luLmdldEF0dGFjaG1lbnRzKCk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhdHRhY2htZW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgYXR0YWNobWVudCA9IGF0dGFjaG1lbnRzW2ldO1xuXHRcdFx0dGhpcy5zZXRBdHRhY2htZW50KGF0dGFjaG1lbnQuc2xvdEluZGV4LCBhdHRhY2htZW50LnBsYWNlaG9sZGVyLCBhdHRhY2htZW50LmF0dGFjaG1lbnQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKiBBZGRzIGFsbCBib25lcyBhbmQgY29uc3RyYWludHMgYW5kIGNvcGllcyBvZiBhbGwgYXR0YWNobWVudHMgZnJvbSB0aGUgc3BlY2lmaWVkIHNraW4gdG8gdGhpcyBza2luLiBNZXNoIGF0dGFjaG1lbnRzIGFyZSBub3Rcblx0ICogY29waWVkLCBpbnN0ZWFkIGEgbmV3IGxpbmtlZCBtZXNoIGlzIGNyZWF0ZWQuIFRoZSBhdHRhY2htZW50IGNvcGllcyBjYW4gYmUgbW9kaWZpZWQgd2l0aG91dCBhZmZlY3RpbmcgdGhlIG9yaWdpbmFscy4gKi9cblx0Y29weVNraW4gKHNraW46IFNraW4pIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHNraW4uYm9uZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGJvbmUgPSBza2luLmJvbmVzW2ldO1xuXHRcdFx0bGV0IGNvbnRhaW5lZCA9IGZhbHNlO1xuXHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHRoaXMuYm9uZXMubGVuZ3RoOyBpaSsrKSB7XG5cdFx0XHRcdGlmICh0aGlzLmJvbmVzW2lpXSA9PT0gYm9uZSkge1xuXHRcdFx0XHRcdGNvbnRhaW5lZCA9IHRydWU7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICghY29udGFpbmVkKSB0aGlzLmJvbmVzLnB1c2goYm9uZSk7XG5cdFx0fVxuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBza2luLmNvbnN0cmFpbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBjb25zdHJhaW50ID0gc2tpbi5jb25zdHJhaW50c1tpXTtcblx0XHRcdGxldCBjb250YWluZWQgPSBmYWxzZTtcblx0XHRcdGZvciAobGV0IGlpID0gMDsgaWkgPCB0aGlzLmNvbnN0cmFpbnRzLmxlbmd0aDsgaWkrKykge1xuXHRcdFx0XHRpZiAodGhpcy5jb25zdHJhaW50c1tpaV0gPT09IGNvbnN0cmFpbnQpIHtcblx0XHRcdFx0XHRjb250YWluZWQgPSB0cnVlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWNvbnRhaW5lZCkgdGhpcy5jb25zdHJhaW50cy5wdXNoKGNvbnN0cmFpbnQpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGF0dGFjaG1lbnRzID0gc2tpbi5nZXRBdHRhY2htZW50cygpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYXR0YWNobWVudHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGF0dGFjaG1lbnQgPSBhdHRhY2htZW50c1tpXTtcblx0XHRcdGlmICghYXR0YWNobWVudC5hdHRhY2htZW50KSBjb250aW51ZTtcblx0XHRcdGlmIChhdHRhY2htZW50LmF0dGFjaG1lbnQgaW5zdGFuY2VvZiBNZXNoQXR0YWNobWVudCkge1xuXHRcdFx0XHRhdHRhY2htZW50LmF0dGFjaG1lbnQgPSBhdHRhY2htZW50LmF0dGFjaG1lbnQubmV3TGlua2VkTWVzaCgpO1xuXHRcdFx0XHR0aGlzLnNldEF0dGFjaG1lbnQoYXR0YWNobWVudC5zbG90SW5kZXgsIGF0dGFjaG1lbnQucGxhY2Vob2xkZXIsIGF0dGFjaG1lbnQuYXR0YWNobWVudCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRhdHRhY2htZW50LmF0dGFjaG1lbnQgPSBhdHRhY2htZW50LmF0dGFjaG1lbnQuY29weSgpO1xuXHRcdFx0XHR0aGlzLnNldEF0dGFjaG1lbnQoYXR0YWNobWVudC5zbG90SW5kZXgsIGF0dGFjaG1lbnQucGxhY2Vob2xkZXIsIGF0dGFjaG1lbnQuYXR0YWNobWVudCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqIFJldHVybnMgdGhlIGF0dGFjaG1lbnQgZm9yIHRoZSBzcGVjaWZpZWQgc2xvdCBpbmRleCBhbmQgcGxhY2Vob2xkZXIsIG9yIG51bGwuICovXG5cdGdldEF0dGFjaG1lbnQgKHNsb3RJbmRleDogbnVtYmVyLCBwbGFjZWhvbGRlcjogc3RyaW5nKTogQXR0YWNobWVudCB8IG51bGwge1xuXHRcdGNvbnN0IGRpY3Rpb25hcnkgPSB0aGlzLmF0dGFjaG1lbnRzW3Nsb3RJbmRleF07XG5cdFx0cmV0dXJuIGRpY3Rpb25hcnkgPyBkaWN0aW9uYXJ5W3BsYWNlaG9sZGVyXSA6IG51bGw7XG5cdH1cblxuXHQvKiogUmVtb3ZlcyB0aGUgYXR0YWNobWVudCBpbiB0aGUgc2tpbiBmb3IgdGhlIHNwZWNpZmllZCBzbG90IGluZGV4IGFuZCBwbGFjZWhvbGRlciwgaWYgYW55LiAqL1xuXHRyZW1vdmVBdHRhY2htZW50IChzbG90SW5kZXg6IG51bWJlciwgcGxhY2Vob2xkZXI6IHN0cmluZykge1xuXHRcdGNvbnN0IGRpY3Rpb25hcnkgPSB0aGlzLmF0dGFjaG1lbnRzW3Nsb3RJbmRleF07XG5cdFx0aWYgKGRpY3Rpb25hcnkpIGRlbGV0ZSBkaWN0aW9uYXJ5W3BsYWNlaG9sZGVyXTtcblx0fVxuXG5cdC8qKiBSZXR1cm5zIGFsbCBhdHRhY2htZW50cyBpbiB0aGlzIHNraW4uICovXG5cdGdldEF0dGFjaG1lbnRzICgpOiBBcnJheTxTa2luRW50cnk+IHtcblx0XHRjb25zdCBlbnRyaWVzOiBTa2luRW50cnlbXSA9IFtdO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hdHRhY2htZW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3Qgc2xvdEF0dGFjaG1lbnRzID0gdGhpcy5hdHRhY2htZW50c1tpXTtcblx0XHRcdGlmIChzbG90QXR0YWNobWVudHMpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBuYW1lIGluIHNsb3RBdHRhY2htZW50cykge1xuXHRcdFx0XHRcdGNvbnN0IGF0dGFjaG1lbnQgPSBzbG90QXR0YWNobWVudHNbbmFtZV07XG5cdFx0XHRcdFx0aWYgKGF0dGFjaG1lbnQpIGVudHJpZXMucHVzaChuZXcgU2tpbkVudHJ5KGksIG5hbWUsIGF0dGFjaG1lbnQpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZW50cmllcztcblx0fVxuXG5cdC8qKiBSZXR1cm5zIGFsbCBhdHRhY2htZW50cyBpbiB0aGlzIHNraW4gZm9yIHRoZSBzcGVjaWZpZWQgc2xvdCBpbmRleC4gKi9cblx0Z2V0QXR0YWNobWVudHNGb3JTbG90IChzbG90SW5kZXg6IG51bWJlciwgYXR0YWNobWVudHM6IEFycmF5PFNraW5FbnRyeT4pIHtcblx0XHRjb25zdCBzbG90QXR0YWNobWVudHMgPSB0aGlzLmF0dGFjaG1lbnRzW3Nsb3RJbmRleF07XG5cdFx0aWYgKHNsb3RBdHRhY2htZW50cykge1xuXHRcdFx0Zm9yIChjb25zdCBuYW1lIGluIHNsb3RBdHRhY2htZW50cykge1xuXHRcdFx0XHRjb25zdCBhdHRhY2htZW50ID0gc2xvdEF0dGFjaG1lbnRzW25hbWVdO1xuXHRcdFx0XHRpZiAoYXR0YWNobWVudCkgYXR0YWNobWVudHMucHVzaChuZXcgU2tpbkVudHJ5KHNsb3RJbmRleCwgbmFtZSwgYXR0YWNobWVudCkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKiBDbGVhcnMgYWxsIGF0dGFjaG1lbnRzLCBib25lcywgYW5kIGNvbnN0cmFpbnRzLiAqL1xuXHRjbGVhciAoKSB7XG5cdFx0dGhpcy5hdHRhY2htZW50cy5sZW5ndGggPSAwO1xuXHRcdHRoaXMuYm9uZXMubGVuZ3RoID0gMDtcblx0XHR0aGlzLmNvbnN0cmFpbnRzLmxlbmd0aCA9IDA7XG5cdH1cblxuXHQvKiogQXR0YWNoIGVhY2ggYXR0YWNobWVudCBpbiB0aGlzIHNraW4gaWYgdGhlIGNvcnJlc3BvbmRpbmcgYXR0YWNobWVudCBpbiB0aGUgb2xkIHNraW4gaXMgY3VycmVudGx5IGF0dGFjaGVkLiAqL1xuXHRhdHRhY2hBbGwgKHNrZWxldG9uOiBTa2VsZXRvbiwgb2xkU2tpbjogU2tpbikge1xuXHRcdGxldCBzbG90SW5kZXggPSAwO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2tlbGV0b24uc2xvdHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IHNsb3QgPSBza2VsZXRvbi5zbG90c1tpXTtcblx0XHRcdGNvbnN0IHNsb3RBdHRhY2htZW50ID0gc2xvdC5wb3NlLmdldEF0dGFjaG1lbnQoKTtcblx0XHRcdGlmIChzbG90QXR0YWNobWVudCAmJiBzbG90SW5kZXggPCBvbGRTa2luLmF0dGFjaG1lbnRzLmxlbmd0aCkge1xuXHRcdFx0XHRjb25zdCBkaWN0aW9uYXJ5ID0gb2xkU2tpbi5hdHRhY2htZW50c1tzbG90SW5kZXhdO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHBsYWNlaG9sZGVyIGluIGRpY3Rpb25hcnkpIHtcblx0XHRcdFx0XHRjb25zdCBza2luQXR0YWNobWVudDogQXR0YWNobWVudCA9IGRpY3Rpb25hcnlbcGxhY2Vob2xkZXJdO1xuXHRcdFx0XHRcdGlmIChzbG90QXR0YWNobWVudCA9PT0gc2tpbkF0dGFjaG1lbnQpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGF0dGFjaG1lbnQgPSB0aGlzLmdldEF0dGFjaG1lbnQoc2xvdEluZGV4LCBwbGFjZWhvbGRlcik7XG5cdFx0XHRcdFx0XHRpZiAoYXR0YWNobWVudCkgc2xvdC5wb3NlLnNldEF0dGFjaG1lbnQoYXR0YWNobWVudCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHNsb3RJbmRleCsrO1xuXHRcdH1cblx0fVxufVxuIl19
|
package/dist/Slider.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/******************************************************************************
|
|
2
|
+
* Spine Runtimes License Agreement
|
|
3
|
+
* Last updated April 5, 2025. Replaces all prior versions.
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2013-2025, Esoteric Software LLC
|
|
6
|
+
*
|
|
7
|
+
* Integration of the Spine Runtimes into software or otherwise creating
|
|
8
|
+
* derivative works of the Spine Runtimes is permitted under the terms and
|
|
9
|
+
* conditions of Section 2 of the Spine Editor License Agreement:
|
|
10
|
+
* http://esotericsoftware.com/spine-editor-license
|
|
11
|
+
*
|
|
12
|
+
* Otherwise, it is permitted to integrate the Spine Runtimes into software
|
|
13
|
+
* or otherwise create derivative works of the Spine Runtimes (collectively,
|
|
14
|
+
* "Products"), provided that each user of the Products must obtain their own
|
|
15
|
+
* Spine Editor license and redistribution of the Products in any form must
|
|
16
|
+
* include this license and copyright notice.
|
|
17
|
+
*
|
|
18
|
+
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
|
|
19
|
+
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
20
|
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
21
|
+
* DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
|
|
22
|
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
23
|
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
|
|
24
|
+
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
|
|
25
|
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
26
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
27
|
+
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
|
+
*****************************************************************************/
|
|
29
|
+
import type { Bone } from "./Bone.js";
|
|
30
|
+
import { Constraint } from "./Constraint.js";
|
|
31
|
+
import type { Physics } from "./Physics.js";
|
|
32
|
+
import type { Skeleton } from "./Skeleton.js";
|
|
33
|
+
import type { SliderData } from "./SliderData.js";
|
|
34
|
+
import { SliderPose } from "./SliderPose.js";
|
|
35
|
+
/** Applies an animation based on either the slider's {@link SliderPose.time} or a bone's transform property.
|
|
36
|
+
*
|
|
37
|
+
* See <a href="https://esotericsoftware.com/spine-sliders">Sliders</a> in the Spine User Guide. */
|
|
38
|
+
export declare class Slider extends Constraint<Slider, SliderData, SliderPose> {
|
|
39
|
+
private static readonly offsets;
|
|
40
|
+
/** When set, the bone's transform property is used to set the slider's {@link SliderPose.time}. */
|
|
41
|
+
bone: Bone | null;
|
|
42
|
+
constructor(data: SliderData, skeleton: Skeleton);
|
|
43
|
+
copy(skeleton: Skeleton): Slider;
|
|
44
|
+
update(skeleton: Skeleton, physics: Physics): void;
|
|
45
|
+
sort(skeleton: Skeleton): void;
|
|
46
|
+
}
|
package/dist/Slider.js
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/******************************************************************************
|
|
2
|
+
* Spine Runtimes License Agreement
|
|
3
|
+
* Last updated April 5, 2025. Replaces all prior versions.
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2013-2025, Esoteric Software LLC
|
|
6
|
+
*
|
|
7
|
+
* Integration of the Spine Runtimes into software or otherwise creating
|
|
8
|
+
* derivative works of the Spine Runtimes is permitted under the terms and
|
|
9
|
+
* conditions of Section 2 of the Spine Editor License Agreement:
|
|
10
|
+
* http://esotericsoftware.com/spine-editor-license
|
|
11
|
+
*
|
|
12
|
+
* Otherwise, it is permitted to integrate the Spine Runtimes into software
|
|
13
|
+
* or otherwise create derivative works of the Spine Runtimes (collectively,
|
|
14
|
+
* "Products"), provided that each user of the Products must obtain their own
|
|
15
|
+
* Spine Editor license and redistribution of the Products in any form must
|
|
16
|
+
* include this license and copyright notice.
|
|
17
|
+
*
|
|
18
|
+
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
|
|
19
|
+
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
20
|
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
21
|
+
* DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
|
|
22
|
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
23
|
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
|
|
24
|
+
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
|
|
25
|
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
26
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
27
|
+
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
|
+
*****************************************************************************/
|
|
29
|
+
import { DrawOrderFolderTimeline, DrawOrderTimeline, isConstraintTimeline, isSlotTimeline, PhysicsConstraintTimeline } from "./Animation.js";
|
|
30
|
+
import { Constraint } from "./Constraint.js";
|
|
31
|
+
import { SliderPose } from "./SliderPose.js";
|
|
32
|
+
/** Applies an animation based on either the slider's {@link SliderPose.time} or a bone's transform property.
|
|
33
|
+
*
|
|
34
|
+
* See <a href="https://esotericsoftware.com/spine-sliders">Sliders</a> in the Spine User Guide. */
|
|
35
|
+
export class Slider extends Constraint {
|
|
36
|
+
static offsets = [0, 0, 0, 0, 0, 0];
|
|
37
|
+
/** When set, the bone's transform property is used to set the slider's {@link SliderPose.time}. */
|
|
38
|
+
bone = null;
|
|
39
|
+
constructor(data, skeleton) {
|
|
40
|
+
super(data, new SliderPose(), new SliderPose());
|
|
41
|
+
if (!skeleton)
|
|
42
|
+
throw new Error("skeleton cannot be null.");
|
|
43
|
+
if (data.bone != null)
|
|
44
|
+
this.bone = skeleton.bones[data.bone.index];
|
|
45
|
+
}
|
|
46
|
+
copy(skeleton) {
|
|
47
|
+
var copy = new Slider(this.data, skeleton);
|
|
48
|
+
copy.pose.set(this.pose);
|
|
49
|
+
return copy;
|
|
50
|
+
}
|
|
51
|
+
update(skeleton, physics) {
|
|
52
|
+
const p = this.appliedPose;
|
|
53
|
+
if (p.mix === 0)
|
|
54
|
+
return;
|
|
55
|
+
const data = this.data, animation = data.animation, bone = this.bone;
|
|
56
|
+
if (bone !== null) {
|
|
57
|
+
if (!bone.active)
|
|
58
|
+
return;
|
|
59
|
+
if (data.local)
|
|
60
|
+
bone.appliedPose.validateLocalTransform(skeleton);
|
|
61
|
+
p.time = data.offset
|
|
62
|
+
+ (data.property.value(skeleton, bone.appliedPose, data.local, Slider.offsets) - data.property.offset) * data.scale;
|
|
63
|
+
if (data.loop)
|
|
64
|
+
p.time = animation.duration + (p.time % animation.duration);
|
|
65
|
+
else
|
|
66
|
+
p.time = Math.max(0, p.time);
|
|
67
|
+
}
|
|
68
|
+
const bones = skeleton.bones;
|
|
69
|
+
const indices = animation.bones;
|
|
70
|
+
for (let i = 0, n = animation.bones.length; i < n; i++)
|
|
71
|
+
bones[indices[i]].appliedPose.modifyLocal(skeleton);
|
|
72
|
+
animation.apply(skeleton, p.time, p.time, data.loop, null, p.mix, false, data.additive, false, true);
|
|
73
|
+
}
|
|
74
|
+
sort(skeleton) {
|
|
75
|
+
const bone = this.bone;
|
|
76
|
+
const data = this.data;
|
|
77
|
+
if (bone && !data.local)
|
|
78
|
+
skeleton.sortBone(bone);
|
|
79
|
+
skeleton._updateCache.push(this);
|
|
80
|
+
const bones = skeleton.bones;
|
|
81
|
+
const indices = data.animation.bones;
|
|
82
|
+
for (let i = 0, n = data.animation.bones.length; i < n; i++) {
|
|
83
|
+
const bone = bones[indices[i]];
|
|
84
|
+
bone.sorted = false;
|
|
85
|
+
skeleton.sortReset(bone.children);
|
|
86
|
+
skeleton.constrained(bone);
|
|
87
|
+
}
|
|
88
|
+
const timelines = data.animation.timelines;
|
|
89
|
+
const slots = skeleton.slots;
|
|
90
|
+
const constraints = skeleton.constraints;
|
|
91
|
+
const physics = skeleton.physics;
|
|
92
|
+
const physicsCount = skeleton.physics.length;
|
|
93
|
+
for (let i = 0, n = data.animation.timelines.length; i < n; i++) {
|
|
94
|
+
const t = timelines[i];
|
|
95
|
+
if (isSlotTimeline(t))
|
|
96
|
+
skeleton.constrained(slots[t.slotIndex]);
|
|
97
|
+
else if (t instanceof DrawOrderTimeline || t instanceof DrawOrderFolderTimeline)
|
|
98
|
+
skeleton.drawOrder.constrained();
|
|
99
|
+
else if (t instanceof PhysicsConstraintTimeline) {
|
|
100
|
+
if (t.constraintIndex === -1) {
|
|
101
|
+
for (let ii = 0; ii < physicsCount; ii++)
|
|
102
|
+
skeleton.constrained(physics[ii]);
|
|
103
|
+
}
|
|
104
|
+
else
|
|
105
|
+
skeleton.constrained(constraints[t.constraintIndex]);
|
|
106
|
+
}
|
|
107
|
+
else if (isConstraintTimeline(t)) {
|
|
108
|
+
const constraintIndex = t.constraintIndex;
|
|
109
|
+
if (constraintIndex !== -1)
|
|
110
|
+
skeleton.constrained(constraints[constraintIndex]);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2xpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NsaWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFFL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLG9CQUFvQixFQUFFLGNBQWMsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdJLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUk3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0M7O21HQUVtRztBQUNuRyxNQUFNLE9BQU8sTUFBTyxTQUFRLFVBQTBDO0lBQzdELE1BQU0sQ0FBVSxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXJELG1HQUFtRztJQUNuRyxJQUFJLEdBQWdCLElBQUksQ0FBQztJQUV6QixZQUFhLElBQWdCLEVBQUUsUUFBa0I7UUFDaEQsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLFVBQVUsRUFBRSxFQUFFLElBQUksVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsUUFBUTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUUzRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTSxJQUFJLENBQUUsUUFBa0I7UUFDOUIsSUFBSSxJQUFJLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRU0sTUFBTSxDQUFFLFFBQWtCLEVBQUUsT0FBZ0I7UUFDbEQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMzQixJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUFFLE9BQU87UUFFeEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNyRSxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTztZQUN6QixJQUFJLElBQUksQ0FBQyxLQUFLO2dCQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEUsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTTtrQkFDakIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDckgsSUFBSSxJQUFJLENBQUMsSUFBSTtnQkFDWixDQUFDLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7Z0JBRTVELENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQzdCLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDaEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3JELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXJELFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRUQsSUFBSSxDQUFFLFFBQWtCO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ3JDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztRQUMzQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQzdCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDekMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUNqQyxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUM3QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqRSxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsSUFBSSxjQUFjLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztpQkFDckMsSUFBSSxDQUFDLFlBQVksaUJBQWlCLElBQUksQ0FBQyxZQUFZLHVCQUF1QjtnQkFDOUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztpQkFDN0IsSUFBSSxDQUFDLFlBQVkseUJBQXlCLEVBQUUsQ0FBQztnQkFDakQsSUFBSSxDQUFDLENBQUMsZUFBZSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzlCLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxZQUFZLEVBQUUsRUFBRSxFQUFFO3dCQUN2QyxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNwQyxDQUFDOztvQkFDQSxRQUFRLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztZQUN2RCxDQUFDO2lCQUFNLElBQUksb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQztnQkFDMUMsSUFBSSxlQUFlLEtBQUssQ0FBQyxDQUFDO29CQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7WUFDaEYsQ0FBQztRQUNGLENBQUM7SUFDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBEcmF3T3JkZXJGb2xkZXJUaW1lbGluZSwgRHJhd09yZGVyVGltZWxpbmUsIGlzQ29uc3RyYWludFRpbWVsaW5lLCBpc1Nsb3RUaW1lbGluZSwgUGh5c2ljc0NvbnN0cmFpbnRUaW1lbGluZSB9IGZyb20gXCIuL0FuaW1hdGlvbi5qc1wiO1xuaW1wb3J0IHR5cGUgeyBCb25lIH0gZnJvbSBcIi4vQm9uZS5qc1wiO1xuaW1wb3J0IHsgQ29uc3RyYWludCB9IGZyb20gXCIuL0NvbnN0cmFpbnQuanNcIjtcbmltcG9ydCB0eXBlIHsgUGh5c2ljcyB9IGZyb20gXCIuL1BoeXNpY3MuanNcIjtcbmltcG9ydCB0eXBlIHsgU2tlbGV0b24gfSBmcm9tIFwiLi9Ta2VsZXRvbi5qc1wiO1xuaW1wb3J0IHR5cGUgeyBTbGlkZXJEYXRhIH0gZnJvbSBcIi4vU2xpZGVyRGF0YS5qc1wiO1xuaW1wb3J0IHsgU2xpZGVyUG9zZSB9IGZyb20gXCIuL1NsaWRlclBvc2UuanNcIjtcblxuLyoqIEFwcGxpZXMgYW4gYW5pbWF0aW9uIGJhc2VkIG9uIGVpdGhlciB0aGUgc2xpZGVyJ3Mge0BsaW5rIFNsaWRlclBvc2UudGltZX0gb3IgYSBib25lJ3MgdHJhbnNmb3JtIHByb3BlcnR5LlxuICpcbiAqIFNlZSA8YSBocmVmPVwiaHR0cHM6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1zbGlkZXJzXCI+U2xpZGVyczwvYT4gaW4gdGhlIFNwaW5lIFVzZXIgR3VpZGUuICovXG5leHBvcnQgY2xhc3MgU2xpZGVyIGV4dGVuZHMgQ29uc3RyYWludDxTbGlkZXIsIFNsaWRlckRhdGEsIFNsaWRlclBvc2U+IHtcblx0cHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgb2Zmc2V0cyA9IFswLCAwLCAwLCAwLCAwLCAwXTtcblxuXHQvKiogV2hlbiBzZXQsIHRoZSBib25lJ3MgdHJhbnNmb3JtIHByb3BlcnR5IGlzIHVzZWQgdG8gc2V0IHRoZSBzbGlkZXIncyB7QGxpbmsgU2xpZGVyUG9zZS50aW1lfS4gKi9cblx0Ym9uZTogQm9uZSB8IG51bGwgPSBudWxsO1xuXG5cdGNvbnN0cnVjdG9yIChkYXRhOiBTbGlkZXJEYXRhLCBza2VsZXRvbjogU2tlbGV0b24pIHtcblx0XHRzdXBlcihkYXRhLCBuZXcgU2xpZGVyUG9zZSgpLCBuZXcgU2xpZGVyUG9zZSgpKTtcblx0XHRpZiAoIXNrZWxldG9uKSB0aHJvdyBuZXcgRXJyb3IoXCJza2VsZXRvbiBjYW5ub3QgYmUgbnVsbC5cIik7XG5cblx0XHRpZiAoZGF0YS5ib25lICE9IG51bGwpIHRoaXMuYm9uZSA9IHNrZWxldG9uLmJvbmVzW2RhdGEuYm9uZS5pbmRleF07XG5cdH1cblxuXHRwdWJsaWMgY29weSAoc2tlbGV0b246IFNrZWxldG9uKSB7XG5cdFx0dmFyIGNvcHkgPSBuZXcgU2xpZGVyKHRoaXMuZGF0YSwgc2tlbGV0b24pO1xuXHRcdGNvcHkucG9zZS5zZXQodGhpcy5wb3NlKTtcblx0XHRyZXR1cm4gY29weTtcblx0fVxuXG5cdHB1YmxpYyB1cGRhdGUgKHNrZWxldG9uOiBTa2VsZXRvbiwgcGh5c2ljczogUGh5c2ljcykge1xuXHRcdGNvbnN0IHAgPSB0aGlzLmFwcGxpZWRQb3NlO1xuXHRcdGlmIChwLm1peCA9PT0gMCkgcmV0dXJuO1xuXG5cdFx0Y29uc3QgZGF0YSA9IHRoaXMuZGF0YSwgYW5pbWF0aW9uID0gZGF0YS5hbmltYXRpb24sIGJvbmUgPSB0aGlzLmJvbmU7XG5cdFx0aWYgKGJvbmUgIT09IG51bGwpIHtcblx0XHRcdGlmICghYm9uZS5hY3RpdmUpIHJldHVybjtcblx0XHRcdGlmIChkYXRhLmxvY2FsKSBib25lLmFwcGxpZWRQb3NlLnZhbGlkYXRlTG9jYWxUcmFuc2Zvcm0oc2tlbGV0b24pO1xuXHRcdFx0cC50aW1lID0gZGF0YS5vZmZzZXRcblx0XHRcdFx0KyAoZGF0YS5wcm9wZXJ0eS52YWx1ZShza2VsZXRvbiwgYm9uZS5hcHBsaWVkUG9zZSwgZGF0YS5sb2NhbCwgU2xpZGVyLm9mZnNldHMpIC0gZGF0YS5wcm9wZXJ0eS5vZmZzZXQpICogZGF0YS5zY2FsZTtcblx0XHRcdGlmIChkYXRhLmxvb3ApXG5cdFx0XHRcdHAudGltZSA9IGFuaW1hdGlvbi5kdXJhdGlvbiArIChwLnRpbWUgJSBhbmltYXRpb24uZHVyYXRpb24pO1xuXHRcdFx0ZWxzZVxuXHRcdFx0XHRwLnRpbWUgPSBNYXRoLm1heCgwLCBwLnRpbWUpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGJvbmVzID0gc2tlbGV0b24uYm9uZXM7XG5cdFx0Y29uc3QgaW5kaWNlcyA9IGFuaW1hdGlvbi5ib25lcztcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGFuaW1hdGlvbi5ib25lcy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHRib25lc1tpbmRpY2VzW2ldXS5hcHBsaWVkUG9zZS5tb2RpZnlMb2NhbChza2VsZXRvbik7XG5cblx0XHRhbmltYXRpb24uYXBwbHkoc2tlbGV0b24sIHAudGltZSwgcC50aW1lLCBkYXRhLmxvb3AsIG51bGwsIHAubWl4LCBmYWxzZSwgZGF0YS5hZGRpdGl2ZSwgZmFsc2UsIHRydWUpO1xuXHR9XG5cblx0c29ydCAoc2tlbGV0b246IFNrZWxldG9uKSB7XG5cdFx0Y29uc3QgYm9uZSA9IHRoaXMuYm9uZTtcblx0XHRjb25zdCBkYXRhID0gdGhpcy5kYXRhO1xuXHRcdGlmIChib25lICYmICFkYXRhLmxvY2FsKSBza2VsZXRvbi5zb3J0Qm9uZShib25lKTtcblx0XHRza2VsZXRvbi5fdXBkYXRlQ2FjaGUucHVzaCh0aGlzKTtcblxuXHRcdGNvbnN0IGJvbmVzID0gc2tlbGV0b24uYm9uZXM7XG5cdFx0Y29uc3QgaW5kaWNlcyA9IGRhdGEuYW5pbWF0aW9uLmJvbmVzO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gZGF0YS5hbmltYXRpb24uYm9uZXMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRjb25zdCBib25lID0gYm9uZXNbaW5kaWNlc1tpXV07XG5cdFx0XHRib25lLnNvcnRlZCA9IGZhbHNlO1xuXHRcdFx0c2tlbGV0b24uc29ydFJlc2V0KGJvbmUuY2hpbGRyZW4pO1xuXHRcdFx0c2tlbGV0b24uY29uc3RyYWluZWQoYm9uZSk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdGltZWxpbmVzID0gZGF0YS5hbmltYXRpb24udGltZWxpbmVzO1xuXHRcdGNvbnN0IHNsb3RzID0gc2tlbGV0b24uc2xvdHM7XG5cdFx0Y29uc3QgY29uc3RyYWludHMgPSBza2VsZXRvbi5jb25zdHJhaW50cztcblx0XHRjb25zdCBwaHlzaWNzID0gc2tlbGV0b24ucGh5c2ljcztcblx0XHRjb25zdCBwaHlzaWNzQ291bnQgPSBza2VsZXRvbi5waHlzaWNzLmxlbmd0aDtcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGRhdGEuYW5pbWF0aW9uLnRpbWVsaW5lcy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdGNvbnN0IHQgPSB0aW1lbGluZXNbaV07XG5cdFx0XHRpZiAoaXNTbG90VGltZWxpbmUodCkpXG5cdFx0XHRcdHNrZWxldG9uLmNvbnN0cmFpbmVkKHNsb3RzW3Quc2xvdEluZGV4XSk7XG5cdFx0XHRlbHNlIGlmICh0IGluc3RhbmNlb2YgRHJhd09yZGVyVGltZWxpbmUgfHwgdCBpbnN0YW5jZW9mIERyYXdPcmRlckZvbGRlclRpbWVsaW5lKVxuXHRcdFx0XHRza2VsZXRvbi5kcmF3T3JkZXIuY29uc3RyYWluZWQoKTtcblx0XHRcdGVsc2UgaWYgKHQgaW5zdGFuY2VvZiBQaHlzaWNzQ29uc3RyYWludFRpbWVsaW5lKSB7XG5cdFx0XHRcdGlmICh0LmNvbnN0cmFpbnRJbmRleCA9PT0gLTEpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgcGh5c2ljc0NvdW50OyBpaSsrKVxuXHRcdFx0XHRcdFx0c2tlbGV0b24uY29uc3RyYWluZWQocGh5c2ljc1tpaV0pO1xuXHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRza2VsZXRvbi5jb25zdHJhaW5lZChjb25zdHJhaW50c1t0LmNvbnN0cmFpbnRJbmRleF0pO1xuXHRcdFx0fSBlbHNlIGlmIChpc0NvbnN0cmFpbnRUaW1lbGluZSh0KSkge1xuXHRcdFx0XHRjb25zdCBjb25zdHJhaW50SW5kZXggPSB0LmNvbnN0cmFpbnRJbmRleDtcblx0XHRcdFx0aWYgKGNvbnN0cmFpbnRJbmRleCAhPT0gLTEpIHNrZWxldG9uLmNvbnN0cmFpbmVkKGNvbnN0cmFpbnRzW2NvbnN0cmFpbnRJbmRleF0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIl19
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/******************************************************************************
|
|
2
|
+
* Spine Runtimes License Agreement
|
|
3
|
+
* Last updated April 5, 2025. Replaces all prior versions.
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2013-2025, Esoteric Software LLC
|
|
6
|
+
*
|
|
7
|
+
* Integration of the Spine Runtimes into software or otherwise creating
|
|
8
|
+
* derivative works of the Spine Runtimes is permitted under the terms and
|
|
9
|
+
* conditions of Section 2 of the Spine Editor License Agreement:
|
|
10
|
+
* http://esotericsoftware.com/spine-editor-license
|
|
11
|
+
*
|
|
12
|
+
* Otherwise, it is permitted to integrate the Spine Runtimes into software
|
|
13
|
+
* or otherwise create derivative works of the Spine Runtimes (collectively,
|
|
14
|
+
* "Products"), provided that each user of the Products must obtain their own
|
|
15
|
+
* Spine Editor license and redistribution of the Products in any form must
|
|
16
|
+
* include this license and copyright notice.
|
|
17
|
+
*
|
|
18
|
+
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
|
|
19
|
+
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
20
|
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
21
|
+
* DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
|
|
22
|
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
23
|
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
|
|
24
|
+
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
|
|
25
|
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
26
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
27
|
+
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
|
+
*****************************************************************************/
|
|
29
|
+
import type { Animation } from "./Animation.js";
|
|
30
|
+
import type { BoneData } from "./BoneData.js";
|
|
31
|
+
import { ConstraintData } from "./ConstraintData.js";
|
|
32
|
+
import type { Skeleton } from "./Skeleton.js";
|
|
33
|
+
import { Slider } from "./Slider.js";
|
|
34
|
+
import { SliderPose } from "./SliderPose.js";
|
|
35
|
+
import type { FromProperty } from "./TransformConstraintData.js";
|
|
36
|
+
/** Stores the setup pose for a {@link Slider}.
|
|
37
|
+
*
|
|
38
|
+
* See <a href="https://esotericsoftware.com/spine-slider-constraints">Slider constraints</a> in the Spine User Guide. */
|
|
39
|
+
export declare class SliderData extends ConstraintData<Slider, SliderPose> {
|
|
40
|
+
/** The animation the slider will apply. */
|
|
41
|
+
animation: Animation;
|
|
42
|
+
/** When true, the animation is applied by adding it to the current pose rather than overwriting it. */
|
|
43
|
+
additive: boolean;
|
|
44
|
+
/** When true, the animation repeats after its duration, otherwise the last frame is used. */
|
|
45
|
+
loop: boolean;
|
|
46
|
+
/** When set, the bone's transform property is used to set the slider's {@link SliderPose.time}. */
|
|
47
|
+
bone: BoneData | null;
|
|
48
|
+
/** When a bone is set, the specified transform property is used to set the slider's {@link SliderPose.time}. */
|
|
49
|
+
property: FromProperty;
|
|
50
|
+
/** When a bone is set, this is the scale of the {@link property} value in relation to the slider time. */
|
|
51
|
+
scale: number;
|
|
52
|
+
/** When a bone is set, the offset is added to the property. */
|
|
53
|
+
offset: number;
|
|
54
|
+
/** When true and a bone is set, the bone's local transform property is read instead of its world transform. */
|
|
55
|
+
local: boolean;
|
|
56
|
+
constructor(name: string);
|
|
57
|
+
create(skeleton: Skeleton): Slider;
|
|
58
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/******************************************************************************
|
|
2
|
+
* Spine Runtimes License Agreement
|
|
3
|
+
* Last updated April 5, 2025. Replaces all prior versions.
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2013-2025, Esoteric Software LLC
|
|
6
|
+
*
|
|
7
|
+
* Integration of the Spine Runtimes into software or otherwise creating
|
|
8
|
+
* derivative works of the Spine Runtimes is permitted under the terms and
|
|
9
|
+
* conditions of Section 2 of the Spine Editor License Agreement:
|
|
10
|
+
* http://esotericsoftware.com/spine-editor-license
|
|
11
|
+
*
|
|
12
|
+
* Otherwise, it is permitted to integrate the Spine Runtimes into software
|
|
13
|
+
* or otherwise create derivative works of the Spine Runtimes (collectively,
|
|
14
|
+
* "Products"), provided that each user of the Products must obtain their own
|
|
15
|
+
* Spine Editor license and redistribution of the Products in any form must
|
|
16
|
+
* include this license and copyright notice.
|
|
17
|
+
*
|
|
18
|
+
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
|
|
19
|
+
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
20
|
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
21
|
+
* DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
|
|
22
|
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
23
|
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
|
|
24
|
+
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
|
|
25
|
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
26
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
27
|
+
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
|
+
*****************************************************************************/
|
|
29
|
+
import { ConstraintData } from "./ConstraintData.js";
|
|
30
|
+
import { Slider } from "./Slider.js";
|
|
31
|
+
import { SliderPose } from "./SliderPose.js";
|
|
32
|
+
/** Stores the setup pose for a {@link Slider}.
|
|
33
|
+
*
|
|
34
|
+
* See <a href="https://esotericsoftware.com/spine-slider-constraints">Slider constraints</a> in the Spine User Guide. */
|
|
35
|
+
export class SliderData extends ConstraintData {
|
|
36
|
+
/** The animation the slider will apply. */
|
|
37
|
+
animation;
|
|
38
|
+
/** When true, the animation is applied by adding it to the current pose rather than overwriting it. */
|
|
39
|
+
additive = false;
|
|
40
|
+
/** When true, the animation repeats after its duration, otherwise the last frame is used. */
|
|
41
|
+
loop = false;
|
|
42
|
+
/** When set, the bone's transform property is used to set the slider's {@link SliderPose.time}. */
|
|
43
|
+
bone = null;
|
|
44
|
+
/** When a bone is set, the specified transform property is used to set the slider's {@link SliderPose.time}. */
|
|
45
|
+
property;
|
|
46
|
+
/** When a bone is set, this is the scale of the {@link property} value in relation to the slider time. */
|
|
47
|
+
scale = 0;
|
|
48
|
+
/** When a bone is set, the offset is added to the property. */
|
|
49
|
+
offset = 0;
|
|
50
|
+
/** When true and a bone is set, the bone's local transform property is read instead of its world transform. */
|
|
51
|
+
local = false;
|
|
52
|
+
constructor(name) {
|
|
53
|
+
super(name, new SliderPose());
|
|
54
|
+
}
|
|
55
|
+
create(skeleton) {
|
|
56
|
+
return new Slider(this, skeleton);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2xpZGVyRGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9TbGlkZXJEYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUkvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHN0M7O3lIQUV5SDtBQUN6SCxNQUFNLE9BQU8sVUFBVyxTQUFRLGNBQWtDO0lBRWpFLDJDQUEyQztJQUMzQyxTQUFTLENBQWE7SUFFdEIsdUdBQXVHO0lBQ3ZHLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFakIsNkZBQTZGO0lBQzdGLElBQUksR0FBRyxLQUFLLENBQUM7SUFFYixtR0FBbUc7SUFDbkcsSUFBSSxHQUFvQixJQUFJLENBQUM7SUFFN0IsZ0hBQWdIO0lBQ2hILFFBQVEsQ0FBZ0I7SUFFeEIsMEdBQTBHO0lBQzFHLEtBQUssR0FBRyxDQUFDLENBQUM7SUFFViwrREFBK0Q7SUFDL0QsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVYLCtHQUErRztJQUMvRyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRWQsWUFBYSxJQUFZO1FBQ3hCLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTSxNQUFNLENBQUUsUUFBa0I7UUFDaEMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgdHlwZSB7IEFuaW1hdGlvbiB9IGZyb20gXCIuL0FuaW1hdGlvbi5qc1wiO1xuaW1wb3J0IHR5cGUgeyBCb25lRGF0YSB9IGZyb20gXCIuL0JvbmVEYXRhLmpzXCI7XG5pbXBvcnQgeyBDb25zdHJhaW50RGF0YSB9IGZyb20gXCIuL0NvbnN0cmFpbnREYXRhLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNrZWxldG9uIH0gZnJvbSBcIi4vU2tlbGV0b24uanNcIjtcbmltcG9ydCB7IFNsaWRlciB9IGZyb20gXCIuL1NsaWRlci5qc1wiO1xuaW1wb3J0IHsgU2xpZGVyUG9zZSB9IGZyb20gXCIuL1NsaWRlclBvc2UuanNcIjtcbmltcG9ydCB0eXBlIHsgRnJvbVByb3BlcnR5IH0gZnJvbSBcIi4vVHJhbnNmb3JtQ29uc3RyYWludERhdGEuanNcIjtcblxuLyoqIFN0b3JlcyB0aGUgc2V0dXAgcG9zZSBmb3IgYSB7QGxpbmsgU2xpZGVyfS5cbiAqXG4gKiBTZWUgPGEgaHJlZj1cImh0dHBzOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtc2xpZGVyLWNvbnN0cmFpbnRzXCI+U2xpZGVyIGNvbnN0cmFpbnRzPC9hPiBpbiB0aGUgU3BpbmUgVXNlciBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBTbGlkZXJEYXRhIGV4dGVuZHMgQ29uc3RyYWludERhdGE8U2xpZGVyLCBTbGlkZXJQb3NlPiB7XG5cblx0LyoqIFRoZSBhbmltYXRpb24gdGhlIHNsaWRlciB3aWxsIGFwcGx5LiAqL1xuXHRhbmltYXRpb24hOiBBbmltYXRpb247XG5cblx0LyoqIFdoZW4gdHJ1ZSwgdGhlIGFuaW1hdGlvbiBpcyBhcHBsaWVkIGJ5IGFkZGluZyBpdCB0byB0aGUgY3VycmVudCBwb3NlIHJhdGhlciB0aGFuIG92ZXJ3cml0aW5nIGl0LiAqL1xuXHRhZGRpdGl2ZSA9IGZhbHNlO1xuXG5cdC8qKiBXaGVuIHRydWUsIHRoZSBhbmltYXRpb24gcmVwZWF0cyBhZnRlciBpdHMgZHVyYXRpb24sIG90aGVyd2lzZSB0aGUgbGFzdCBmcmFtZSBpcyB1c2VkLiAqL1xuXHRsb29wID0gZmFsc2U7XG5cblx0LyoqIFdoZW4gc2V0LCB0aGUgYm9uZSdzIHRyYW5zZm9ybSBwcm9wZXJ0eSBpcyB1c2VkIHRvIHNldCB0aGUgc2xpZGVyJ3Mge0BsaW5rIFNsaWRlclBvc2UudGltZX0uICovXG5cdGJvbmU6IEJvbmVEYXRhIHwgbnVsbCA9IG51bGw7XG5cblx0LyoqIFdoZW4gYSBib25lIGlzIHNldCwgdGhlIHNwZWNpZmllZCB0cmFuc2Zvcm0gcHJvcGVydHkgaXMgdXNlZCB0byBzZXQgdGhlIHNsaWRlcidzIHtAbGluayBTbGlkZXJQb3NlLnRpbWV9LiAqL1xuXHRwcm9wZXJ0eSE6IEZyb21Qcm9wZXJ0eTtcblxuXHQvKiogV2hlbiBhIGJvbmUgaXMgc2V0LCB0aGlzIGlzIHRoZSBzY2FsZSBvZiB0aGUge0BsaW5rIHByb3BlcnR5fSB2YWx1ZSBpbiByZWxhdGlvbiB0byB0aGUgc2xpZGVyIHRpbWUuICovXG5cdHNjYWxlID0gMDtcblxuXHQvKiogV2hlbiBhIGJvbmUgaXMgc2V0LCB0aGUgb2Zmc2V0IGlzIGFkZGVkIHRvIHRoZSBwcm9wZXJ0eS4gKi9cblx0b2Zmc2V0ID0gMDtcblxuXHQvKiogV2hlbiB0cnVlIGFuZCBhIGJvbmUgaXMgc2V0LCB0aGUgYm9uZSdzIGxvY2FsIHRyYW5zZm9ybSBwcm9wZXJ0eSBpcyByZWFkIGluc3RlYWQgb2YgaXRzIHdvcmxkIHRyYW5zZm9ybS4gKi9cblx0bG9jYWwgPSBmYWxzZTtcblxuXHRjb25zdHJ1Y3RvciAobmFtZTogc3RyaW5nKSB7XG5cdFx0c3VwZXIobmFtZSwgbmV3IFNsaWRlclBvc2UoKSk7XG5cdH1cblxuXHRwdWJsaWMgY3JlYXRlIChza2VsZXRvbjogU2tlbGV0b24pIHtcblx0XHRyZXR1cm4gbmV3IFNsaWRlcih0aGlzLCBza2VsZXRvbik7XG5cdH1cbn1cbiJdfQ==
|