Commit b42b48f9 authored by Li MingZhe's avatar Li MingZhe

fix: 底部宽度

parent 90456d83
No preview for this file type
No preview for this file type
No preview for this file type
{
"ver": "2.0.1",
"uuid": "c28e2c01-0a4a-4b28-b44e-7cf7c68f0ccf",
"downloadMode": 0,
"duration": 4.04898,
"subMetas": {}
}
\ No newline at end of file
...@@ -15,6 +15,9 @@ ...@@ -15,6 +15,9 @@
"_children": [ "_children": [
{ {
"__id__": 2 "__id__": 2
},
{
"__id__": 61
} }
], ],
"_active": false, "_active": false,
...@@ -90,13 +93,13 @@ ...@@ -90,13 +93,13 @@
"_active": true, "_active": true,
"_components": [ "_components": [
{ {
"__id__": 54 "__id__": 58
}, },
{ {
"__id__": 55 "__id__": 59
}, },
{ {
"__id__": 56 "__id__": 60
} }
], ],
"_prefab": null, "_prefab": null,
...@@ -1888,12 +1891,18 @@ ...@@ -1888,12 +1891,18 @@
}, },
{ {
"__id__": 51 "__id__": 51
},
{
"__id__": 53
},
{
"__id__": 55
} }
], ],
"_active": false, "_active": false,
"_components": [ "_components": [
{ {
"__id__": 53 "__id__": 57
} }
], ],
"_prefab": null, "_prefab": null,
...@@ -2212,6 +2221,166 @@ ...@@ -2212,6 +2221,166 @@
"preload": true, "preload": true,
"_id": "e4FqxYDQ5DMavcb/jH9rzz" "_id": "e4FqxYDQ5DMavcb/jH9rzz"
}, },
{
"__type__": "cc.Node",
"_name": "good_job",
"_objFlags": 0,
"_parent": {
"__id__": 46
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 54
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 0,
"height": 0
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "b03Nppl/VKso2zq2OL3kda"
},
{
"__type__": "cc.AudioSource",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 53
},
"_enabled": true,
"_clip": {
"__uuid__": "067e45c4-be38-4fd0-8274-0f92703002ad"
},
"_volume": 1,
"_mute": false,
"_loop": false,
"playOnLoad": false,
"preload": false,
"_id": "bbofmPuftAVKY+pqncTW9+"
},
{
"__type__": "cc.Node",
"_name": "end_audio",
"_objFlags": 0,
"_parent": {
"__id__": 46
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 56
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 0,
"height": 0
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "f9Xp2kmx5M3pGLqSKdv+QB"
},
{
"__type__": "cc.AudioSource",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 55
},
"_enabled": true,
"_clip": {
"__uuid__": "c28e2c01-0a4a-4b28-b44e-7cf7c68f0ccf"
},
"_volume": 1,
"_mute": false,
"_loop": false,
"playOnLoad": false,
"preload": false,
"_id": "96JW6kSV1BEp9LJP+HKIe5"
},
{ {
"__type__": "cc.Sprite", "__type__": "cc.Sprite",
"_name": "", "_name": "",
...@@ -2299,5 +2468,452 @@ ...@@ -2299,5 +2468,452 @@
"baseWidth": 1280, "baseWidth": 1280,
"baseHeight": 720, "baseHeight": 720,
"_id": "28v7Et3UdB3JZRlTOtLFi9" "_id": "28v7Et3UdB3JZRlTOtLFi9"
},
{
"__type__": "cc.Node",
"_name": "RibbonNodeBase",
"_objFlags": 0,
"_parent": {
"__id__": 1
},
"_children": [
{
"__id__": 62
},
{
"__id__": 64
},
{
"__id__": 66
},
{
"__id__": 68
}
],
"_active": true,
"_components": [],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 0,
"height": 0
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "abKXvlMl9MLJXGAhTbrllV"
},
{
"__type__": "cc.Node",
"_name": "sahua",
"_objFlags": 0,
"_parent": {
"__id__": 61
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 63
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 16,
"g": 167,
"b": 219,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 36,
"height": 24
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
-206.8,
-188.973,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "cbo/P1vN1GMaGPst/uBwdV"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 62
},
"_enabled": true,
"_materials": [
{
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
}
],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": {
"__uuid__": "0735e431-fa61-49b9-a3b4-8927ff5ce7f4"
},
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "e3iQhXncdP37Wf2N0MhHhr"
},
{
"__type__": "cc.Node",
"_name": "sahua",
"_objFlags": 0,
"_parent": {
"__id__": 61
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 65
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 0,
"g": 255,
"b": 0,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 36,
"height": 24
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
-206.8,
-188.973,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "a0dpvCWhtB+rS9BGbu73Up"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 64
},
"_enabled": true,
"_materials": [
{
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
}
],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": {
"__uuid__": "0735e431-fa61-49b9-a3b4-8927ff5ce7f4"
},
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "b4Fj2EaepNp4tRhYija9rM"
},
{
"__type__": "cc.Node",
"_name": "sahua",
"_objFlags": 0,
"_parent": {
"__id__": 61
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 67
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 0,
"g": 0,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 36,
"height": 24
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
-206.8,
-188.973,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "e5KPfOTCxHkKYR6nJm4UMd"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 66
},
"_enabled": true,
"_materials": [
{
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
}
],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": {
"__uuid__": "0735e431-fa61-49b9-a3b4-8927ff5ce7f4"
},
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "55rPOIigxP1J/a+4mCtvOq"
},
{
"__type__": "cc.Node",
"_name": "sahua",
"_objFlags": 0,
"_parent": {
"__id__": 61
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 69
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 0,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 36,
"height": 24
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
-206.8,
-188.973,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "f7+eEkJf5P8rVS8RYOdYtF"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 68
},
"_enabled": true,
"_materials": [
{
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
}
],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": {
"__uuid__": "0735e431-fa61-49b9-a3b4-8927ff5ce7f4"
},
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "43uRcDj/JLZ5GAFgBSEPYc"
} }
] ]
\ No newline at end of file
/**
* Copyright (c) 2014-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
!(function (global) {
"use strict";
var Op = Object.prototype;
var hasOwn = Op.hasOwnProperty;
var undefined; // More compressible than void 0.
var $Symbol = typeof Symbol === "function" ? Symbol : {};
var iteratorSymbol = $Symbol.iterator || "@@iterator";
var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
var inModule = typeof module === "object";
var runtime = global.regeneratorRuntime;
if (runtime) {
if (inModule) {
// If regeneratorRuntime is defined globally and we're in a module,
// make the exports object identical to regeneratorRuntime.
module.exports = runtime;
}
// Don't bother evaluating the rest of this file if the runtime was
// already defined globally.
return;
}
// Define the runtime globally (as expected by generated code) as either
// module.exports (if we're in a module) or a new, empty object.
runtime = global.regeneratorRuntime = inModule ? module.exports : {};
function wrap(innerFn, outerFn, self, tryLocsList) {
// If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
var generator = Object.create(protoGenerator.prototype);
var context = new Context(tryLocsList || []);
// The ._invoke method unifies the implementations of the .next,
// .throw, and .return methods.
generator._invoke = makeInvokeMethod(innerFn, self, context);
return generator;
}
runtime.wrap = wrap;
// Try/catch helper to minimize deoptimizations. Returns a completion
// record like context.tryEntries[i].completion. This interface could
// have been (and was previously) designed to take a closure to be
// invoked without arguments, but in all the cases we care about we
// already have an existing method we want to call, so there's no need
// to create a new function object. We can even get away with assuming
// the method takes exactly one argument, since that happens to be true
// in every case, so we don't have to touch the arguments object. The
// only additional allocation required is the completion record, which
// has a stable shape and so hopefully should be cheap to allocate.
function tryCatch(fn, obj, arg) {
try {
return { type: "normal", arg: fn.call(obj, arg) };
} catch (err) {
return { type: "throw", arg: err };
}
}
var GenStateSuspendedStart = "suspendedStart";
var GenStateSuspendedYield = "suspendedYield";
var GenStateExecuting = "executing";
var GenStateCompleted = "completed";
// Returning this object from the innerFn has the same effect as
// breaking out of the dispatch switch statement.
var ContinueSentinel = {};
// Dummy constructor functions that we use as the .constructor and
// .constructor.prototype properties for functions that return Generator
// objects. For full spec compliance, you may wish to configure your
// minifier not to mangle the names of these two functions.
function Generator() { }
function GeneratorFunction() { }
function GeneratorFunctionPrototype() { }
// This is a polyfill for %IteratorPrototype% for environments that
// don't natively support it.
var IteratorPrototype = {};
IteratorPrototype[iteratorSymbol] = function () {
return this;
};
var getProto = Object.getPrototypeOf;
var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
if (NativeIteratorPrototype &&
NativeIteratorPrototype !== Op &&
hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
// This environment has a native %IteratorPrototype%; use it instead
// of the polyfill.
IteratorPrototype = NativeIteratorPrototype;
}
var Gp = GeneratorFunctionPrototype.prototype =
Generator.prototype = Object.create(IteratorPrototype);
GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
GeneratorFunctionPrototype.constructor = GeneratorFunction;
GeneratorFunctionPrototype[toStringTagSymbol] =
GeneratorFunction.displayName = "GeneratorFunction";
// Helper for defining the .next, .throw, and .return methods of the
// Iterator interface in terms of a single ._invoke method.
function defineIteratorMethods(prototype) {
["next", "throw", "return"].forEach(function (method) {
prototype[method] = function (arg) {
return this._invoke(method, arg);
};
});
}
runtime.isGeneratorFunction = function (genFun) {
var ctor = typeof genFun === "function" && genFun.constructor;
return ctor
? ctor === GeneratorFunction ||
// For the native GeneratorFunction constructor, the best we can
// do is to check its .name property.
(ctor.displayName || ctor.name) === "GeneratorFunction"
: false;
};
runtime.mark = function (genFun) {
if (Object.setPrototypeOf) {
Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
} else {
genFun.__proto__ = GeneratorFunctionPrototype;
if (!(toStringTagSymbol in genFun)) {
genFun[toStringTagSymbol] = "GeneratorFunction";
}
}
genFun.prototype = Object.create(Gp);
return genFun;
};
// Within the body of any async function, `await x` is transformed to
// `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
// `hasOwn.call(value, "__await")` to determine if the yielded value is
// meant to be awaited.
runtime.awrap = function (arg) {
return { __await: arg };
};
function AsyncIterator(generator) {
function invoke(method, arg, resolve, reject) {
var record = tryCatch(generator[method], generator, arg);
if (record.type === "throw") {
reject(record.arg);
} else {
var result = record.arg;
var value = result.value;
if (value &&
typeof value === "object" &&
hasOwn.call(value, "__await")) {
return Promise.resolve(value.__await).then(function (value) {
invoke("next", value, resolve, reject);
}, function (err) {
invoke("throw", err, resolve, reject);
});
}
return Promise.resolve(value).then(function (unwrapped) {
// When a yielded Promise is resolved, its final value becomes
// the .value of the Promise<{value,done}> result for the
// current iteration. If the Promise is rejected, however, the
// result for this iteration will be rejected with the same
// reason. Note that rejections of yielded Promises are not
// thrown back into the generator function, as is the case
// when an awaited Promise is rejected. This difference in
// behavior between yield and await is important, because it
// allows the consumer to decide what to do with the yielded
// rejection (swallow it and continue, manually .throw it back
// into the generator, abandon iteration, whatever). With
// await, by contrast, there is no opportunity to examine the
// rejection reason outside the generator function, so the
// only option is to throw it from the await expression, and
// let the generator function handle the exception.
result.value = unwrapped;
resolve(result);
}, reject);
}
}
var previousPromise;
function enqueue(method, arg) {
function callInvokeWithMethodAndArg() {
return new Promise(function (resolve, reject) {
invoke(method, arg, resolve, reject);
});
}
return previousPromise =
// If enqueue has been called before, then we want to wait until
// all previous Promises have been resolved before calling invoke,
// so that results are always delivered in the correct order. If
// enqueue has not been called before, then it is important to
// call invoke immediately, without waiting on a callback to fire,
// so that the async generator function has the opportunity to do
// any necessary setup in a predictable way. This predictability
// is why the Promise constructor synchronously invokes its
// executor callback, and why async functions synchronously
// execute code before the first await. Since we implement simple
// async functions in terms of async generators, it is especially
// important to get this right, even though it requires care.
previousPromise ? previousPromise.then(
callInvokeWithMethodAndArg,
// Avoid propagating failures to Promises returned by later
// invocations of the iterator.
callInvokeWithMethodAndArg
) : callInvokeWithMethodAndArg();
}
// Define the unified helper method that is used to implement .next,
// .throw, and .return (see defineIteratorMethods).
this._invoke = enqueue;
}
defineIteratorMethods(AsyncIterator.prototype);
AsyncIterator.prototype[asyncIteratorSymbol] = function () {
return this;
};
runtime.AsyncIterator = AsyncIterator;
// Note that simple async functions are implemented on top of
// AsyncIterator objects; they just return a Promise for the value of
// the final result produced by the iterator.
runtime.async = function (innerFn, outerFn, self, tryLocsList) {
var iter = new AsyncIterator(
wrap(innerFn, outerFn, self, tryLocsList)
);
return runtime.isGeneratorFunction(outerFn)
? iter // If outerFn is a generator, return the full iterator.
: iter.next().then(function (result) {
return result.done ? result.value : iter.next();
});
};
function makeInvokeMethod(innerFn, self, context) {
var state = GenStateSuspendedStart;
return function invoke(method, arg) {
if (state === GenStateExecuting) {
throw new Error("Generator is already running");
}
if (state === GenStateCompleted) {
if (method === "throw") {
throw arg;
}
// Be forgiving, per 25.3.3.3.3 of the spec:
// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
return doneResult();
}
context.method = method;
context.arg = arg;
while (true) {
var delegate = context.delegate;
if (delegate) {
var delegateResult = maybeInvokeDelegate(delegate, context);
if (delegateResult) {
if (delegateResult === ContinueSentinel) continue;
return delegateResult;
}
}
if (context.method === "next") {
// Setting context._sent for legacy support of Babel's
// function.sent implementation.
context.sent = context._sent = context.arg;
} else if (context.method === "throw") {
if (state === GenStateSuspendedStart) {
state = GenStateCompleted;
throw context.arg;
}
context.dispatchException(context.arg);
} else if (context.method === "return") {
context.abrupt("return", context.arg);
}
state = GenStateExecuting;
var record = tryCatch(innerFn, self, context);
if (record.type === "normal") {
// If an exception is thrown from innerFn, we leave state ===
// GenStateExecuting and loop back for another invocation.
state = context.done
? GenStateCompleted
: GenStateSuspendedYield;
if (record.arg === ContinueSentinel) {
continue;
}
return {
value: record.arg,
done: context.done
};
} else if (record.type === "throw") {
state = GenStateCompleted;
// Dispatch the exception by looping back around to the
// context.dispatchException(context.arg) call above.
context.method = "throw";
context.arg = record.arg;
}
}
};
}
// Call delegate.iterator[context.method](context.arg) and handle the
// result, either by returning a { value, done } result from the
// delegate iterator, or by modifying context.method and context.arg,
// setting context.delegate to null, and returning the ContinueSentinel.
function maybeInvokeDelegate(delegate, context) {
var method = delegate.iterator[context.method];
if (method === undefined) {
// A .throw or .return when the delegate iterator has no .throw
// method always terminates the yield* loop.
context.delegate = null;
if (context.method === "throw") {
if (delegate.iterator.return) {
// If the delegate iterator has a return method, give it a
// chance to clean up.
context.method = "return";
context.arg = undefined;
maybeInvokeDelegate(delegate, context);
if (context.method === "throw") {
// If maybeInvokeDelegate(context) changed context.method from
// "return" to "throw", let that override the TypeError below.
return ContinueSentinel;
}
}
context.method = "throw";
context.arg = new TypeError(
"The iterator does not provide a 'throw' method");
}
return ContinueSentinel;
}
var record = tryCatch(method, delegate.iterator, context.arg);
if (record.type === "throw") {
context.method = "throw";
context.arg = record.arg;
context.delegate = null;
return ContinueSentinel;
}
var info = record.arg;
if (!info) {
context.method = "throw";
context.arg = new TypeError("iterator result is not an object");
context.delegate = null;
return ContinueSentinel;
}
if (info.done) {
// Assign the result of the finished delegate to the temporary
// variable specified by delegate.resultName (see delegateYield).
context[delegate.resultName] = info.value;
// Resume execution at the desired location (see delegateYield).
context.next = delegate.nextLoc;
// If context.method was "throw" but the delegate handled the
// exception, let the outer generator proceed normally. If
// context.method was "next", forget context.arg since it has been
// "consumed" by the delegate iterator. If context.method was
// "return", allow the original .return call to continue in the
// outer generator.
if (context.method !== "return") {
context.method = "next";
context.arg = undefined;
}
} else {
// Re-yield the result returned by the delegate method.
return info;
}
// The delegate iterator is finished, so forget it and continue with
// the outer generator.
context.delegate = null;
return ContinueSentinel;
}
// Define Generator.prototype.{next,throw,return} in terms of the
// unified ._invoke helper method.
defineIteratorMethods(Gp);
Gp[toStringTagSymbol] = "Generator";
// A Generator should always return itself as the iterator object when the
// @@iterator function is called on it. Some browsers' implementations of the
// iterator prototype chain incorrectly implement this, causing the Generator
// object to not be returned from this call. This ensures that doesn't happen.
// See https://github.com/facebook/regenerator/issues/274 for more details.
Gp[iteratorSymbol] = function () {
return this;
};
Gp.toString = function () {
return "[object Generator]";
};
function pushTryEntry(locs) {
var entry = { tryLoc: locs[0] };
if (1 in locs) {
entry.catchLoc = locs[1];
}
if (2 in locs) {
entry.finallyLoc = locs[2];
entry.afterLoc = locs[3];
}
this.tryEntries.push(entry);
}
function resetTryEntry(entry) {
var record = entry.completion || {};
record.type = "normal";
delete record.arg;
entry.completion = record;
}
function Context(tryLocsList) {
// The root entry object (effectively a try statement without a catch
// or a finally block) gives us a place to store values thrown from
// locations where there is no enclosing try statement.
this.tryEntries = [{ tryLoc: "root" }];
tryLocsList.forEach(pushTryEntry, this);
this.reset(true);
}
runtime.keys = function (object) {
var keys = [];
for (var key in object) {
keys.push(key);
}
keys.reverse();
// Rather than returning an object with a next method, we keep
// things simple and return the next function itself.
return function next() {
while (keys.length) {
var key = keys.pop();
if (key in object) {
next.value = key;
next.done = false;
return next;
}
}
// To avoid creating an additional object, we just hang the .value
// and .done properties off the next function object itself. This
// also ensures that the minifier will not anonymize the function.
next.done = true;
return next;
};
};
function values(iterable) {
if (iterable) {
var iteratorMethod = iterable[iteratorSymbol];
if (iteratorMethod) {
return iteratorMethod.call(iterable);
}
if (typeof iterable.next === "function") {
return iterable;
}
if (!isNaN(iterable.length)) {
var i = -1, next = function next() {
while (++i < iterable.length) {
if (hasOwn.call(iterable, i)) {
next.value = iterable[i];
next.done = false;
return next;
}
}
next.value = undefined;
next.done = true;
return next;
};
return next.next = next;
}
}
// Return an iterator with no values.
return { next: doneResult };
}
runtime.values = values;
function doneResult() {
return { value: undefined, done: true };
}
Context.prototype = {
constructor: Context,
reset: function (skipTempReset) {
this.prev = 0;
this.next = 0;
// Resetting context._sent for legacy support of Babel's
// function.sent implementation.
this.sent = this._sent = undefined;
this.done = false;
this.delegate = null;
this.method = "next";
this.arg = undefined;
this.tryEntries.forEach(resetTryEntry);
if (!skipTempReset) {
for (var name in this) {
// Not sure about the optimal order of these conditions:
if (name.charAt(0) === "t" &&
hasOwn.call(this, name) &&
!isNaN(+name.slice(1))) {
this[name] = undefined;
}
}
}
},
stop: function () {
this.done = true;
var rootEntry = this.tryEntries[0];
var rootRecord = rootEntry.completion;
if (rootRecord.type === "throw") {
throw rootRecord.arg;
}
return this.rval;
},
dispatchException: function (exception) {
if (this.done) {
throw exception;
}
var context = this;
function handle(loc, caught) {
record.type = "throw";
record.arg = exception;
context.next = loc;
if (caught) {
// If the dispatched exception was caught by a catch block,
// then let that catch block handle the exception normally.
context.method = "next";
context.arg = undefined;
}
return !!caught;
}
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
var record = entry.completion;
if (entry.tryLoc === "root") {
// Exception thrown outside of any try block that could handle
// it, so set the completion value of the entire function to
// throw the exception.
return handle("end");
}
if (entry.tryLoc <= this.prev) {
var hasCatch = hasOwn.call(entry, "catchLoc");
var hasFinally = hasOwn.call(entry, "finallyLoc");
if (hasCatch && hasFinally) {
if (this.prev < entry.catchLoc) {
return handle(entry.catchLoc, true);
} else if (this.prev < entry.finallyLoc) {
return handle(entry.finallyLoc);
}
} else if (hasCatch) {
if (this.prev < entry.catchLoc) {
return handle(entry.catchLoc, true);
}
} else if (hasFinally) {
if (this.prev < entry.finallyLoc) {
return handle(entry.finallyLoc);
}
} else {
throw new Error("try statement without catch or finally");
}
}
}
},
abrupt: function (type, arg) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.tryLoc <= this.prev &&
hasOwn.call(entry, "finallyLoc") &&
this.prev < entry.finallyLoc) {
var finallyEntry = entry;
break;
}
}
if (finallyEntry &&
(type === "break" ||
type === "continue") &&
finallyEntry.tryLoc <= arg &&
arg <= finallyEntry.finallyLoc) {
// Ignore the finally entry if control is not jumping to a
// location outside the try/catch block.
finallyEntry = null;
}
var record = finallyEntry ? finallyEntry.completion : {};
record.type = type;
record.arg = arg;
if (finallyEntry) {
this.method = "next";
this.next = finallyEntry.finallyLoc;
return ContinueSentinel;
}
return this.complete(record);
},
complete: function (record, afterLoc) {
if (record.type === "throw") {
throw record.arg;
}
if (record.type === "break" ||
record.type === "continue") {
this.next = record.arg;
} else if (record.type === "return") {
this.rval = this.arg = record.arg;
this.method = "return";
this.next = "end";
} else if (record.type === "normal" && afterLoc) {
this.next = afterLoc;
}
return ContinueSentinel;
},
finish: function (finallyLoc) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.finallyLoc === finallyLoc) {
this.complete(entry.completion, entry.afterLoc);
resetTryEntry(entry);
return ContinueSentinel;
}
}
},
"catch": function (tryLoc) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.tryLoc === tryLoc) {
var record = entry.completion;
if (record.type === "throw") {
var thrown = record.arg;
resetTryEntry(entry);
}
return thrown;
}
}
// The context.catch method must only be called with a location
// argument that corresponds to a known catch block.
throw new Error("illegal catch attempt");
},
delegateYield: function (iterable, resultName, nextLoc) {
this.delegate = {
iterator: values(iterable),
resultName: resultName,
nextLoc: nextLoc
};
if (this.method === "next") {
// Deliberately forget the last sent value so that we don't
// accidentally pass it on to the delegate.
this.arg = undefined;
}
return ContinueSentinel;
}
};
})(
// In sloppy mode, unbound `this` refers to the global object, fallback to
// Function constructor if we're in global strict mode. That is sadly a form
// of indirect eval which violates Content Security Policy.
(function () { return this })() || Function("return this")()
);
{
"ver": "1.0.8",
"uuid": "5e66e21b-b845-488b-8dda-1bcb83c5262d",
"isPlugin": false,
"loadPluginInWeb": true,
"loadPluginInNative": true,
"loadPluginInEditor": false,
"subMetas": {}
}
\ No newline at end of file
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
// Learn life-cycle callbacks: // Learn life-cycle callbacks:
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html // - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
import { localPosTolocalPos } from "./util"; import { localPosTolocalPos, playAudio, showTrebleFirework} from "./util";
cc.Class({ cc.Class({
extends: cc.Component, extends: cc.Component,
...@@ -182,9 +182,12 @@ cc.Class({ ...@@ -182,9 +182,12 @@ cc.Class({
}, },
_wrongAudioSource: null, _wrongAudioSource: null,
_gjAudioSource: null,
_endAudio: null,
initAudio() { initAudio() {
this._wrongAudioSource = cc.find('Canvas/res/wrong_audio').getComponent(cc.AudioSource); this._wrongAudioSource = cc.find('Canvas/res/wrong_audio').getComponent(cc.AudioSource);
this._gbAudioSource = cc.find('Canvas/res/good_job').getComponent(cc.AudioSource); this._gjAudioSource = cc.find('Canvas/res/good_job').getComponent(cc.AudioSource);
this._endAudio = cc.find('Canvas/res/end_audio').getComponent(cc.AudioSource);
}, },
initListener() { initListener() {
...@@ -560,6 +563,7 @@ cc.Class({ ...@@ -560,6 +563,7 @@ cc.Class({
mask.type = cc.Mask.Type.RECT; mask.type = cc.Mask.Type.RECT;
}, },
bottomPicArr: null,
initBottomPart() { initBottomPart() {
const bgBottom = cc.find('Canvas/bgBottom'); const bgBottom = cc.find('Canvas/bgBottom');
...@@ -572,6 +576,7 @@ cc.Class({ ...@@ -572,6 +576,7 @@ cc.Class({
} }
}); });
script.setItemData(picArr); script.setItemData(picArr);
this.bottomPicArr = picArr;
}, },
getBottomPicArr() { getBottomPicArr() {
...@@ -860,7 +865,15 @@ cc.Class({ ...@@ -860,7 +865,15 @@ cc.Class({
cc.audioEngine.stopAllEffects(); cc.audioEngine.stopAllEffects();
const audioID = cc.audioEngine.playEffect(animaNode.audioClip, false, 0.8); const audioID = cc.audioEngine.playEffect(animaNode.audioClip, false, 0.8);
cc.audioEngine.setFinishCallback(audioID, () => { cc.audioEngine.setFinishCallback(audioID, () => {
this._gbAudioSource.play();
const gjId = cc.audioEngine.playEffect(this._gjAudioSource.clip, false, 0.8);
cc.audioEngine.setFinishCallback(gjId, () => {
const isEnd = this.checkGameEnd();
if (isEnd) {
this.gameEnd();
}
});
}); });
} }
...@@ -876,6 +889,31 @@ cc.Class({ ...@@ -876,6 +889,31 @@ cc.Class({
}, },
checkGameEnd() {
for (let i=0; i<this.hotzoneCircleArr.length; i++) {
if (this.hotzoneCircleArr[i].active) {
return false;
}
}
return true;
},
gameEnd() {
console.log('this.gameEnd');
this.playEndEffect();
},
playEndEffect() {
playAudio(this._endAudio.clip, 0.8);
const camera = cc.find('Canvas/Main Camera');
camera.zIndex = 100;
showTrebleFirework(camera, cc.find('RibbonNodeBase').children);
},
_curShowItem: null, _curShowItem: null,
bottomItemClick(item) { bottomItemClick(item) {
......
...@@ -70,9 +70,229 @@ export function setSprNodeMaxLen(sprNode, maxW, maxH) { ...@@ -70,9 +70,229 @@ export function setSprNodeMaxLen(sprNode, maxW, maxH) {
sprNode.scale = Math.round(s * 1000) / 1000; sprNode.scale = Math.round(s * 1000) / 1000;
} }
export function localPosTolocalPos(baseNode, targetNode) { export function localPosTolocalPos(baseNode, targetNode) {
const worldPos = targetNode.parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y)); const worldPos = targetNode.parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y));
const localPos = baseNode.parent.convertToNodeSpaceAR(cc.v2(worldPos.x, worldPos.y)); const localPos = baseNode.parent.convertToNodeSpaceAR(cc.v2(worldPos.x, worldPos.y));
return localPos; return localPos;
}
export function getScaleRateBy2Node(baseNode, targetNode, maxFlag = true) {
const worldRect1 = targetNode.getBoundingBoxToWorld();
const worldRect2 = baseNode.getBoundingBoxToWorld();
const sx = worldRect1.width / worldRect2.width;
const sy = worldRect1.height / worldRect2.height;
if (maxFlag) {
return Math.max(sx, sy);
} else {
return Math.min(sx, sy);
}
}
export function asyncCCLoad(resources) {
return new Promise((resolve, reject) => {
try {
cc.loader.load(resources, (error, assets) => {
resolve(assets)
});
} catch (e) {
reject(e);
}
});
}
export function loadDragonBones(image, atlas, ske, callback) {
Promise.all([
asyncCCLoad(image),
asyncCCLoad({ url: atlas, type: 'txt' }),
asyncCCLoad({ url: ske, type: 'txt' })
]).then(([texture, atlasJson, dragonBonesJson]) => {
callback(texture, atlasJson, dragonBonesJson);
}).catch((e) => {
console.log(e);
});
}
export async function playAudio(clip, volume = 1) {
return new Promise((resolve, reject) => {
try {
if (!clip) {
resolve();
return;
}
const id = cc.audioEngine.play(clip, false, volume);
cc.audioEngine.setFinishCallback(id, () => {
resolve();
});
} catch (e) {
reject(e);
}
});
}
export async function asyncDelay(time) {
return new Promise((resolve, reject) => {
try {
setTimeout(() => {
resolve();
}, time * 1000);
} catch (e) {
reject(e);
}
})
}
export class FireworkSettings {
baseNode; // 父节点
nodeList; // 火花节点的array
pos; // 发射点
side; // 发射方向
range; // 扩散范围
number; // 发射数量
scalseRange; // 缩放范围
constructor(baseNode, nodeList,
pos = cc.v2(0, 0),
side = cc.v2(0, 100),
range = 50,
number = 100,
scalseRange = 0
) {
this.baseNode = baseNode;
this.nodeList = nodeList;
this.pos = pos;
this.side = side;
this.range = range;
this.number = number;
this.scalseRange = scalseRange;
}
static copy(firework) {
return new FireworkSettings(
firework.baseNode,
firework.nodeList,
firework.pos,
firework.side,
firework.range,
firework.number,
);
}
}
export async function showFireworks(fireworkSettings) {
const { baseNode, nodeList, pos, side, range, number, scalseRange } = fireworkSettings;
new Array(number).fill(' ').forEach(async (_, i) => {
let rabbonNode = new cc.Node();
rabbonNode.parent = baseNode;
rabbonNode.x = pos.x;
rabbonNode.y = pos.y;
rabbonNode.angle = 60 * Math.random() - 30;
let node = cc.instantiate(nodeList[RandomInt(nodeList.length)]);
node.parent = rabbonNode;
node.active = true;
node.x = 0;
node.y = 0;
node.angle = 0;
node.scale = (Math.random() - 0.5) * scalseRange + 1;
const rate = Math.random();
const angle = Math.PI * (Math.random() * 2 - 1);
await asyncTweenBy(rabbonNode, 0.3, {
x: side.x * rate + Math.cos(angle) * range * rate,
y: side.y * rate + Math.sin(angle) * range * rate
}, {
easing: 'quadIn'
});
cc.tween(rabbonNode)
.by(8, { y: -2000 })
.start();
cc.tween(rabbonNode)
.to(5, { scale: (Math.random() - 0.5) * scalseRange + 1 })
.start();
rabbonFall(rabbonNode);
await asyncDelay(Math.random());
cc.tween(node)
.by(0.15, { x: -10, angle: -10 })
.by(0.3, { x: 20, angle: 20 })
.by(0.15, { x: -10, angle: -10 })
.union()
.repeatForever()
.start();
cc.tween(rabbonNode)
.delay(5)
.to(0.3, { opacity: 0 })
.call(() => {
node.stopAllActions();
node.active = false;
node.parent = null;
node = null;
})
.start();
});
}
async function rabbonFall(node) {
const time = 1 + Math.random();
const offsetX = RandomInt(-200, 200) * time;
await asyncTweenBy(node, time, { x: offsetX, angle: offsetX * 60 / 200 });
rabbonFall(node);
}
export async function asyncTweenTo(node, duration, obj, ease = undefined) {
return new Promise((resolve, reject) => {
try {
cc.tween(node)
.to(duration, obj, ease)
.call(() => {
resolve();
})
.start();
} catch (e) {
reject(e);
}
});
}
export async function asyncTweenBy(node, duration, obj, ease = undefined) {
return new Promise((resolve, reject) => {
try {
cc.tween(node)
.by(duration, obj, ease)
.call(() => {
resolve();
})
.start();
} catch (e) {
reject(e);
}
});
}
export function showTrebleFirework(baseNode, rabbonList) {
const middle = new FireworkSettings(baseNode, rabbonList);
middle.pos = cc.v2(0, -400);
middle.side = cc.v2(0, 1000);
middle.range = 200;
middle.number = 100;
middle.scalseRange = 0.4;
const left = FireworkSettings.copy(middle);
left.pos = cc.v2(-600, -400);
left.side = cc.v2(200, 1000);
const right = FireworkSettings.copy(middle);
right.pos = cc.v2(600, -400);
right.side = cc.v2(-200, 1000);
showFireworks(middle);
showFireworks(left);
showFireworks(right);
} }
{
"ver": "2.3.5",
"uuid": "ab873eda-ffb5-46e2-8e57-b0892030d3df",
"type": "sprite",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"width": 36,
"height": 24,
"platformSettings": {},
"subMetas": {
"bg_sahua": {
"ver": "1.0.4",
"uuid": "0735e431-fa61-49b9-a3b4-8927ff5ce7f4",
"rawTextureUuid": "ab873eda-ffb5-46e2-8e57-b0892030d3df",
"trimType": "auto",
"trimThreshold": 1,
"rotated": false,
"offsetX": 0,
"offsetY": 0,
"trimX": 0,
"trimY": 0,
"width": 36,
"height": 24,
"rawWidth": 36,
"rawHeight": 24,
"borderTop": 0,
"borderBottom": 0,
"borderLeft": 0,
"borderRight": 0,
"subMetas": {}
}
}
}
\ No newline at end of file
{
"__type__": "cc.SpriteFrame",
"content": {
"name": "bg_sahua",
"texture": "ab873eda-ffb5-46e2-8e57-b0892030d3df",
"atlas": "",
"rect": [
0,
0,
36,
24
],
"offset": [
0,
0
],
"originalSize": [
36,
24
],
"capInsets": [
0,
0,
0,
0
]
}
}
\ No newline at end of file
...@@ -189,9 +189,12 @@ cc.Class({ ...@@ -189,9 +189,12 @@ cc.Class({
}); });
}, },
_wrongAudioSource: null, _wrongAudioSource: null,
_gjAudioSource: null,
_endAudio: null,
initAudio: function initAudio() { initAudio: function initAudio() {
this._wrongAudioSource = cc.find('Canvas/res/wrong_audio').getComponent(cc.AudioSource); this._wrongAudioSource = cc.find('Canvas/res/wrong_audio').getComponent(cc.AudioSource);
this._gbAudioSource = cc.find('Canvas/res/good_job').getComponent(cc.AudioSource); this._gjAudioSource = cc.find('Canvas/res/good_job').getComponent(cc.AudioSource);
this._endAudio = cc.find('Canvas/res/end_audio').getComponent(cc.AudioSource);
}, },
initListener: function initListener() { initListener: function initListener() {
var _this6 = this; var _this6 = this;
...@@ -498,6 +501,7 @@ cc.Class({ ...@@ -498,6 +501,7 @@ cc.Class({
var mask = node.addComponent(cc.Mask); var mask = node.addComponent(cc.Mask);
mask.type = cc.Mask.Type.RECT; mask.type = cc.Mask.Type.RECT;
}, },
bottomPicArr: null,
initBottomPart: function initBottomPart() { initBottomPart: function initBottomPart() {
var bgBottom = cc.find('Canvas/bgBottom'); var bgBottom = cc.find('Canvas/bgBottom');
var script = bgBottom.getComponent('bgBottom'); var script = bgBottom.getComponent('bgBottom');
...@@ -508,6 +512,7 @@ cc.Class({ ...@@ -508,6 +512,7 @@ cc.Class({
} }
}); });
script.setItemData(picArr); script.setItemData(picArr);
this.bottomPicArr = picArr;
}, },
getBottomPicArr: function getBottomPicArr() { getBottomPicArr: function getBottomPicArr() {
var arr = []; // for (let i = 0; i < this.hotzoneCircleArr.length; i++) { var arr = []; // for (let i = 0; i < this.hotzoneCircleArr.length; i++) {
...@@ -764,7 +769,14 @@ cc.Class({ ...@@ -764,7 +769,14 @@ cc.Class({
cc.audioEngine.stopAllEffects(); cc.audioEngine.stopAllEffects();
var audioID = cc.audioEngine.playEffect(animaNode.audioClip, false, 0.8); var audioID = cc.audioEngine.playEffect(animaNode.audioClip, false, 0.8);
cc.audioEngine.setFinishCallback(audioID, function () { cc.audioEngine.setFinishCallback(audioID, function () {
_this9._gbAudioSource.play(); var gjId = cc.audioEngine.playEffect(_this9._gjAudioSource.clip, false, 0.8);
cc.audioEngine.setFinishCallback(gjId, function () {
var isEnd = _this9.checkGameEnd();
if (isEnd) {
_this9.gameEnd();
}
});
}); });
} }
...@@ -777,6 +789,25 @@ cc.Class({ ...@@ -777,6 +789,25 @@ cc.Class({
}); });
}); });
}, },
checkGameEnd: function checkGameEnd() {
for (var i = 0; i < this.hotzoneCircleArr.length; i++) {
if (this.hotzoneCircleArr[i].active) {
return false;
}
}
return true;
},
gameEnd: function gameEnd() {
console.log('this.gameEnd');
this.playEndEffect();
},
playEndEffect: function playEndEffect() {
(0, _util.playAudio)(this._endAudio.clip, 0.8);
var camera = cc.find('Canvas/Main Camera');
camera.zIndex = 100;
(0, _util.showTrebleFirework)(camera, cc.find('RibbonNodeBase').children);
},
_curShowItem: null, _curShowItem: null,
bottomItemClick: function bottomItemClick(item) { bottomItemClick: function bottomItemClick(item) {
var _this10 = this; var _this10 = this;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -12,6 +12,20 @@ exports.RandomInt = RandomInt; ...@@ -12,6 +12,20 @@ exports.RandomInt = RandomInt;
exports.randomSortByArr = randomSortByArr; exports.randomSortByArr = randomSortByArr;
exports.setSprNodeMaxLen = setSprNodeMaxLen; exports.setSprNodeMaxLen = setSprNodeMaxLen;
exports.localPosTolocalPos = localPosTolocalPos; exports.localPosTolocalPos = localPosTolocalPos;
exports.getScaleRateBy2Node = getScaleRateBy2Node;
exports.asyncCCLoad = asyncCCLoad;
exports.loadDragonBones = loadDragonBones;
exports.playAudio = playAudio;
exports.asyncDelay = asyncDelay;
exports.showFireworks = showFireworks;
exports.asyncTweenTo = asyncTweenTo;
exports.asyncTweenBy = asyncTweenBy;
exports.showTrebleFirework = showTrebleFirework;
exports.FireworkSettings = void 0;
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
function getPosByAngle(angle, len) { function getPosByAngle(angle, len) {
var radian = angle * Math.PI / 180; var radian = angle * Math.PI / 180;
...@@ -106,4 +120,387 @@ function localPosTolocalPos(baseNode, targetNode) { ...@@ -106,4 +120,387 @@ function localPosTolocalPos(baseNode, targetNode) {
return localPos; return localPos;
} }
function getScaleRateBy2Node(baseNode, targetNode, maxFlag) {
if (maxFlag === void 0) {
maxFlag = true;
}
var worldRect1 = targetNode.getBoundingBoxToWorld();
var worldRect2 = baseNode.getBoundingBoxToWorld();
var sx = worldRect1.width / worldRect2.width;
var sy = worldRect1.height / worldRect2.height;
if (maxFlag) {
return Math.max(sx, sy);
} else {
return Math.min(sx, sy);
}
}
function asyncCCLoad(resources) {
return new Promise(function (resolve, reject) {
try {
cc.loader.load(resources, function (error, assets) {
resolve(assets);
});
} catch (e) {
reject(e);
}
});
}
function loadDragonBones(image, atlas, ske, callback) {
Promise.all([asyncCCLoad(image), asyncCCLoad({
url: atlas,
type: 'txt'
}), asyncCCLoad({
url: ske,
type: 'txt'
})]).then(function (_ref) {
var texture = _ref[0],
atlasJson = _ref[1],
dragonBonesJson = _ref[2];
callback(texture, atlasJson, dragonBonesJson);
})["catch"](function (e) {
console.log(e);
});
}
function playAudio(_x, _x2) {
return _playAudio.apply(this, arguments);
}
function _playAudio() {
_playAudio = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(clip, volume) {
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (volume === void 0) {
volume = 1;
}
return _context.abrupt("return", new Promise(function (resolve, reject) {
try {
if (!clip) {
resolve();
return;
}
var id = cc.audioEngine.play(clip, false, volume);
cc.audioEngine.setFinishCallback(id, function () {
resolve();
});
} catch (e) {
reject(e);
}
}));
case 2:
case "end":
return _context.stop();
}
}
}, _callee);
}));
return _playAudio.apply(this, arguments);
}
function asyncDelay(_x3) {
return _asyncDelay.apply(this, arguments);
}
function _asyncDelay() {
_asyncDelay = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(time) {
return regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
return _context2.abrupt("return", new Promise(function (resolve, reject) {
try {
setTimeout(function () {
resolve();
}, time * 1000);
} catch (e) {
reject(e);
}
}));
case 1:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
return _asyncDelay.apply(this, arguments);
}
var FireworkSettings = /*#__PURE__*/function () {
// 父节点
// 火花节点的array
// 发射点
// 发射方向
// 扩散范围
// 发射数量
// 缩放范围
function FireworkSettings(baseNode, nodeList, pos, side, range, number, scalseRange) {
if (pos === void 0) {
pos = cc.v2(0, 0);
}
if (side === void 0) {
side = cc.v2(0, 100);
}
if (range === void 0) {
range = 50;
}
if (number === void 0) {
number = 100;
}
if (scalseRange === void 0) {
scalseRange = 0;
}
this.baseNode = void 0;
this.nodeList = void 0;
this.pos = void 0;
this.side = void 0;
this.range = void 0;
this.number = void 0;
this.scalseRange = void 0;
this.baseNode = baseNode;
this.nodeList = nodeList;
this.pos = pos;
this.side = side;
this.range = range;
this.number = number;
this.scalseRange = scalseRange;
}
FireworkSettings.copy = function copy(firework) {
return new FireworkSettings(firework.baseNode, firework.nodeList, firework.pos, firework.side, firework.range, firework.number);
};
return FireworkSettings;
}();
exports.FireworkSettings = FireworkSettings;
function showFireworks(_x4) {
return _showFireworks.apply(this, arguments);
}
function _showFireworks() {
_showFireworks = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(fireworkSettings) {
var baseNode, nodeList, pos, side, range, number, scalseRange;
return regeneratorRuntime.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
baseNode = fireworkSettings.baseNode, nodeList = fireworkSettings.nodeList, pos = fireworkSettings.pos, side = fireworkSettings.side, range = fireworkSettings.range, number = fireworkSettings.number, scalseRange = fireworkSettings.scalseRange;
new Array(number).fill(' ').forEach( /*#__PURE__*/function () {
var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(_, i) {
var rabbonNode, node, rate, angle;
return regeneratorRuntime.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
rabbonNode = new cc.Node();
rabbonNode.parent = baseNode;
rabbonNode.x = pos.x;
rabbonNode.y = pos.y;
rabbonNode.angle = 60 * Math.random() - 30;
node = cc.instantiate(nodeList[RandomInt(nodeList.length)]);
node.parent = rabbonNode;
node.active = true;
node.x = 0;
node.y = 0;
node.angle = 0;
node.scale = (Math.random() - 0.5) * scalseRange + 1;
rate = Math.random();
angle = Math.PI * (Math.random() * 2 - 1);
_context3.next = 16;
return asyncTweenBy(rabbonNode, 0.3, {
x: side.x * rate + Math.cos(angle) * range * rate,
y: side.y * rate + Math.sin(angle) * range * rate
}, {
easing: 'quadIn'
});
case 16:
cc.tween(rabbonNode).by(8, {
y: -2000
}).start();
cc.tween(rabbonNode).to(5, {
scale: (Math.random() - 0.5) * scalseRange + 1
}).start();
rabbonFall(rabbonNode);
_context3.next = 21;
return asyncDelay(Math.random());
case 21:
cc.tween(node).by(0.15, {
x: -10,
angle: -10
}).by(0.3, {
x: 20,
angle: 20
}).by(0.15, {
x: -10,
angle: -10
}).union().repeatForever().start();
cc.tween(rabbonNode).delay(5).to(0.3, {
opacity: 0
}).call(function () {
node.stopAllActions();
node.active = false;
node.parent = null;
node = null;
}).start();
case 23:
case "end":
return _context3.stop();
}
}
}, _callee3);
}));
return function (_x14, _x15) {
return _ref2.apply(this, arguments);
};
}());
case 2:
case "end":
return _context4.stop();
}
}
}, _callee4);
}));
return _showFireworks.apply(this, arguments);
}
function rabbonFall(_x5) {
return _rabbonFall.apply(this, arguments);
}
function _rabbonFall() {
_rabbonFall = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(node) {
var time, offsetX;
return regeneratorRuntime.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
time = 1 + Math.random();
offsetX = RandomInt(-200, 200) * time;
_context5.next = 4;
return asyncTweenBy(node, time, {
x: offsetX,
angle: offsetX * 60 / 200
});
case 4:
rabbonFall(node);
case 5:
case "end":
return _context5.stop();
}
}
}, _callee5);
}));
return _rabbonFall.apply(this, arguments);
}
function asyncTweenTo(_x6, _x7, _x8, _x9) {
return _asyncTweenTo.apply(this, arguments);
}
function _asyncTweenTo() {
_asyncTweenTo = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(node, duration, obj, ease) {
return regeneratorRuntime.wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
if (ease === void 0) {
ease = undefined;
}
return _context6.abrupt("return", new Promise(function (resolve, reject) {
try {
cc.tween(node).to(duration, obj, ease).call(function () {
resolve();
}).start();
} catch (e) {
reject(e);
}
}));
case 2:
case "end":
return _context6.stop();
}
}
}, _callee6);
}));
return _asyncTweenTo.apply(this, arguments);
}
function asyncTweenBy(_x10, _x11, _x12, _x13) {
return _asyncTweenBy.apply(this, arguments);
}
function _asyncTweenBy() {
_asyncTweenBy = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(node, duration, obj, ease) {
return regeneratorRuntime.wrap(function _callee7$(_context7) {
while (1) {
switch (_context7.prev = _context7.next) {
case 0:
if (ease === void 0) {
ease = undefined;
}
return _context7.abrupt("return", new Promise(function (resolve, reject) {
try {
cc.tween(node).by(duration, obj, ease).call(function () {
resolve();
}).start();
} catch (e) {
reject(e);
}
}));
case 2:
case "end":
return _context7.stop();
}
}
}, _callee7);
}));
return _asyncTweenBy.apply(this, arguments);
}
function showTrebleFirework(baseNode, rabbonList) {
var middle = new FireworkSettings(baseNode, rabbonList);
middle.pos = cc.v2(0, -400);
middle.side = cc.v2(0, 1000);
middle.range = 200;
middle.number = 100;
middle.scalseRange = 0.4;
var left = FireworkSettings.copy(middle);
left.pos = cc.v2(-600, -400);
left.side = cc.v2(200, 1000);
var right = FireworkSettings.copy(middle);
right.pos = cc.v2(600, -400);
right.side = cc.v2(-200, 1000);
showFireworks(middle);
showFireworks(left);
showFireworks(right);
}
cc._RF.pop(); cc._RF.pop();
\ No newline at end of file
{"version":3,"sources":["assets/mz_003/script/util.js"],"names":["getPosByAngle","angle","len","radian","Math","PI","x","sin","y","cos","getAngleByPos","px","py","mx","my","abs","z","sqrt","pow","radina","acos","floor","exchangeNodePos","baseNode","targetNode","convertToNodeSpaceAR","_parent","convertToWorldSpaceAR","cc","v2","RandomInt","a","b","max","min","random","randomSortByArr","arr","newArr","tmpArr","concat","length","randomIndex","push","splice","setSprNodeMaxLen","sprNode","maxW","maxH","sx","width","sy","height","s","scale","round","localPosTolocalPos","worldPos","parent","localPos"],"mappings":"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","sourceRoot":"/","sourcesContent":["export function getPosByAngle(angle, len) {\n\n const radian = angle * Math.PI / 180;\n const x = Math.sin(radian) * len;\n const y = Math.cos(radian) * len;\n\n return { x, y };\n\n}\n\nexport function getAngleByPos(px, py, mx, my) {\n\n const x = Math.abs(px - mx);\n const y = Math.abs(py - my);\n\n const z = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n const cos = y / z;\n const radina = Math.acos(cos); // 用反三角函数求弧度\n let angle = Math.floor(180 / (Math.PI / radina) * 100) / 100; // 将弧度转换成角度\n\n if (mx > px && my > py) {// 鼠标在第四象限\n angle = 180 - angle;\n }\n if (mx === px && my > py) {// 鼠标在y轴负方向上\n angle = 180;\n }\n if (mx > px && my === py) {// 鼠标在x轴正方向上\n angle = 90;\n }\n if (mx < px && my > py) {// 鼠标在第三象限\n angle = 180 + angle;\n }\n if (mx < px && my === py) {// 鼠标在x轴负方向\n angle = 270;\n }\n if (mx < px && my < py) {// 鼠标在第二象限\n angle = 360 - angle;\n }\n\n // console.log('angle: ', angle);\n return angle;\n\n}\n\nexport function exchangeNodePos(baseNode, targetNode) {\n return baseNode.convertToNodeSpaceAR(targetNode._parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y)));\n}\n\nexport function RandomInt(a, b = 0) {\n let max = Math.max(a, b);\n let min = Math.min(a, b);\n return Math.floor(Math.random() * (max - min) + min);\n}\n\nexport function randomSortByArr(arr) {\n const newArr = [];\n const tmpArr = arr.concat();\n while (tmpArr.length > 0) {\n const randomIndex = Math.floor(tmpArr.length * Math.random());\n newArr.push(tmpArr[randomIndex]);\n tmpArr.splice(randomIndex, 1);\n }\n return newArr;\n}\n\nexport function setSprNodeMaxLen(sprNode, maxW, maxH) {\n const sx = maxW / sprNode.width;\n const sy = maxH / sprNode.height;\n const s = Math.min(sx, sy);\n sprNode.scale = Math.round(s * 1000) / 1000;\n}\n\n\nexport function localPosTolocalPos(baseNode, targetNode) {\n\tconst worldPos = targetNode.parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y));\n\tconst localPos = baseNode.parent.convertToNodeSpaceAR(cc.v2(worldPos.x, worldPos.y));\n\treturn localPos;\n}\n"]} {"version":3,"sources":["assets/mz_003/script/util.js"],"names":["getPosByAngle","angle","len","radian","Math","PI","x","sin","y","cos","getAngleByPos","px","py","mx","my","abs","z","sqrt","pow","radina","acos","floor","exchangeNodePos","baseNode","targetNode","convertToNodeSpaceAR","_parent","convertToWorldSpaceAR","cc","v2","RandomInt","a","b","max","min","random","randomSortByArr","arr","newArr","tmpArr","concat","length","randomIndex","push","splice","setSprNodeMaxLen","sprNode","maxW","maxH","sx","width","sy","height","s","scale","round","localPosTolocalPos","worldPos","parent","localPos","getScaleRateBy2Node","maxFlag","worldRect1","getBoundingBoxToWorld","worldRect2","asyncCCLoad","resources","Promise","resolve","reject","loader","load","error","assets","e","loadDragonBones","image","atlas","ske","callback","all","url","type","then","texture","atlasJson","dragonBonesJson","console","log","playAudio","clip","volume","id","audioEngine","play","setFinishCallback","asyncDelay","time","setTimeout","FireworkSettings","nodeList","pos","side","range","number","scalseRange","copy","firework","showFireworks","fireworkSettings","Array","fill","forEach","_","i","rabbonNode","Node","node","instantiate","active","rate","asyncTweenBy","easing","tween","by","start","to","rabbonFall","union","repeatForever","delay","opacity","call","stopAllActions","offsetX","asyncTweenTo","duration","obj","ease","undefined","showTrebleFirework","rabbonList","middle","left","right"],"mappings":"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","sourceRoot":"/","sourcesContent":["export function getPosByAngle(angle, len) {\n\n const radian = angle * Math.PI / 180;\n const x = Math.sin(radian) * len;\n const y = Math.cos(radian) * len;\n\n return { x, y };\n\n}\n\nexport function getAngleByPos(px, py, mx, my) {\n\n const x = Math.abs(px - mx);\n const y = Math.abs(py - my);\n\n const z = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n const cos = y / z;\n const radina = Math.acos(cos); // 用反三角函数求弧度\n let angle = Math.floor(180 / (Math.PI / radina) * 100) / 100; // 将弧度转换成角度\n\n if (mx > px && my > py) {// 鼠标在第四象限\n angle = 180 - angle;\n }\n if (mx === px && my > py) {// 鼠标在y轴负方向上\n angle = 180;\n }\n if (mx > px && my === py) {// 鼠标在x轴正方向上\n angle = 90;\n }\n if (mx < px && my > py) {// 鼠标在第三象限\n angle = 180 + angle;\n }\n if (mx < px && my === py) {// 鼠标在x轴负方向\n angle = 270;\n }\n if (mx < px && my < py) {// 鼠标在第二象限\n angle = 360 - angle;\n }\n\n // console.log('angle: ', angle);\n return angle;\n\n}\n\nexport function exchangeNodePos(baseNode, targetNode) {\n return baseNode.convertToNodeSpaceAR(targetNode._parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y)));\n}\n\nexport function RandomInt(a, b = 0) {\n let max = Math.max(a, b);\n let min = Math.min(a, b);\n return Math.floor(Math.random() * (max - min) + min);\n}\n\nexport function randomSortByArr(arr) {\n const newArr = [];\n const tmpArr = arr.concat();\n while (tmpArr.length > 0) {\n const randomIndex = Math.floor(tmpArr.length * Math.random());\n newArr.push(tmpArr[randomIndex]);\n tmpArr.splice(randomIndex, 1);\n }\n return newArr;\n}\n\nexport function setSprNodeMaxLen(sprNode, maxW, maxH) {\n const sx = maxW / sprNode.width;\n const sy = maxH / sprNode.height;\n const s = Math.min(sx, sy);\n sprNode.scale = Math.round(s * 1000) / 1000;\n}\n\nexport function localPosTolocalPos(baseNode, targetNode) {\n const worldPos = targetNode.parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y));\n const localPos = baseNode.parent.convertToNodeSpaceAR(cc.v2(worldPos.x, worldPos.y));\n return localPos;\n}\n\nexport function getScaleRateBy2Node(baseNode, targetNode, maxFlag = true) {\n const worldRect1 = targetNode.getBoundingBoxToWorld();\n const worldRect2 = baseNode.getBoundingBoxToWorld();\n\n const sx = worldRect1.width / worldRect2.width;\n const sy = worldRect1.height / worldRect2.height;\n if (maxFlag) {\n return Math.max(sx, sy);\n } else {\n return Math.min(sx, sy);\n }\n}\n\nexport function asyncCCLoad(resources) {\n return new Promise((resolve, reject) => {\n try {\n cc.loader.load(resources, (error, assets) => {\n resolve(assets)\n });\n } catch (e) {\n reject(e);\n }\n });\n}\n\nexport function loadDragonBones(image, atlas, ske, callback) {\n Promise.all([\n asyncCCLoad(image),\n asyncCCLoad({ url: atlas, type: 'txt' }),\n asyncCCLoad({ url: ske, type: 'txt' })\n ]).then(([texture, atlasJson, dragonBonesJson]) => {\n callback(texture, atlasJson, dragonBonesJson);\n }).catch((e) => {\n console.log(e);\n });\n}\n\nexport async function playAudio(clip, volume = 1) {\n return new Promise((resolve, reject) => {\n try {\n if (!clip) {\n resolve();\n return;\n }\n const id = cc.audioEngine.play(clip, false, volume);\n cc.audioEngine.setFinishCallback(id, () => {\n resolve();\n });\n } catch (e) {\n reject(e);\n }\n });\n}\n\nexport async function asyncDelay(time) {\n return new Promise((resolve, reject) => {\n try {\n setTimeout(() => {\n resolve();\n }, time * 1000);\n } catch (e) {\n reject(e);\n }\n })\n}\n\nexport class FireworkSettings {\n baseNode; // 父节点\n nodeList; // 火花节点的array\n pos; // 发射点\n side; // 发射方向\n range; // 扩散范围\n number; // 发射数量\n scalseRange; // 缩放范围\n constructor(baseNode, nodeList,\n pos = cc.v2(0, 0),\n side = cc.v2(0, 100),\n range = 50,\n number = 100,\n scalseRange = 0\n ) {\n this.baseNode = baseNode;\n this.nodeList = nodeList;\n this.pos = pos;\n this.side = side;\n this.range = range;\n this.number = number;\n this.scalseRange = scalseRange;\n }\n\n static copy(firework) {\n return new FireworkSettings(\n firework.baseNode,\n firework.nodeList,\n firework.pos,\n firework.side,\n firework.range,\n firework.number,\n );\n }\n}\n\nexport async function showFireworks(fireworkSettings) {\n const { baseNode, nodeList, pos, side, range, number, scalseRange } = fireworkSettings;\n new Array(number).fill(' ').forEach(async (_, i) => {\n\n let rabbonNode = new cc.Node();\n rabbonNode.parent = baseNode;\n rabbonNode.x = pos.x;\n rabbonNode.y = pos.y;\n rabbonNode.angle = 60 * Math.random() - 30;\n\n let node = cc.instantiate(nodeList[RandomInt(nodeList.length)]);\n node.parent = rabbonNode;\n node.active = true;\n node.x = 0;\n node.y = 0;\n node.angle = 0;\n node.scale = (Math.random() - 0.5) * scalseRange + 1;\n\n const rate = Math.random();\n const angle = Math.PI * (Math.random() * 2 - 1);\n\n await asyncTweenBy(rabbonNode, 0.3, {\n x: side.x * rate + Math.cos(angle) * range * rate,\n y: side.y * rate + Math.sin(angle) * range * rate\n }, {\n easing: 'quadIn'\n });\n\n cc.tween(rabbonNode)\n .by(8, { y: -2000 })\n .start();\n\n cc.tween(rabbonNode)\n .to(5, { scale: (Math.random() - 0.5) * scalseRange + 1 })\n .start();\n\n rabbonFall(rabbonNode);\n\n await asyncDelay(Math.random());\n cc.tween(node)\n .by(0.15, { x: -10, angle: -10 })\n .by(0.3, { x: 20, angle: 20 })\n .by(0.15, { x: -10, angle: -10 })\n .union()\n .repeatForever()\n .start();\n\n cc.tween(rabbonNode)\n .delay(5)\n .to(0.3, { opacity: 0 })\n .call(() => {\n node.stopAllActions();\n node.active = false;\n node.parent = null;\n node = null;\n })\n .start();\n });\n}\n\nasync function rabbonFall(node) {\n const time = 1 + Math.random();\n const offsetX = RandomInt(-200, 200) * time;\n await asyncTweenBy(node, time, { x: offsetX, angle: offsetX * 60 / 200 });\n rabbonFall(node);\n}\n\n\nexport async function asyncTweenTo(node, duration, obj, ease = undefined) {\n return new Promise((resolve, reject) => {\n try {\n cc.tween(node)\n .to(duration, obj, ease)\n .call(() => {\n resolve();\n })\n .start();\n } catch (e) {\n reject(e);\n }\n });\n}\n\nexport async function asyncTweenBy(node, duration, obj, ease = undefined) {\n return new Promise((resolve, reject) => {\n try {\n cc.tween(node)\n .by(duration, obj, ease)\n .call(() => {\n resolve();\n })\n .start();\n } catch (e) {\n reject(e);\n }\n });\n}\n\nexport function showTrebleFirework(baseNode, rabbonList) {\n const middle = new FireworkSettings(baseNode, rabbonList);\n middle.pos = cc.v2(0, -400);\n middle.side = cc.v2(0, 1000);\n middle.range = 200;\n middle.number = 100;\n middle.scalseRange = 0.4;\n\n const left = FireworkSettings.copy(middle);\n left.pos = cc.v2(-600, -400);\n left.side = cc.v2(200, 1000);\n\n const right = FireworkSettings.copy(middle);\n right.pos = cc.v2(600, -400);\n right.side = cc.v2(-200, 1000);\n\n showFireworks(middle);\n showFireworks(left);\n showFireworks(right);\n}\n"]}
\ No newline at end of file \ No newline at end of file
"use strict";
cc._RF.push(module, '5e66eIbuEVIi43aG8uDxSYt', 'runtime');
// mz_003/script/runtime.js
"use strict";
/**
* Copyright (c) 2014-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
!function (global) {
"use strict";
var Op = Object.prototype;
var hasOwn = Op.hasOwnProperty;
var undefined; // More compressible than void 0.
var $Symbol = typeof Symbol === "function" ? Symbol : {};
var iteratorSymbol = $Symbol.iterator || "@@iterator";
var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
var inModule = typeof module === "object";
var runtime = global.regeneratorRuntime;
if (runtime) {
if (inModule) {
// If regeneratorRuntime is defined globally and we're in a module,
// make the exports object identical to regeneratorRuntime.
module.exports = runtime;
} // Don't bother evaluating the rest of this file if the runtime was
// already defined globally.
return;
} // Define the runtime globally (as expected by generated code) as either
// module.exports (if we're in a module) or a new, empty object.
runtime = global.regeneratorRuntime = inModule ? module.exports : {};
function wrap(innerFn, outerFn, self, tryLocsList) {
// If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
var generator = Object.create(protoGenerator.prototype);
var context = new Context(tryLocsList || []); // The ._invoke method unifies the implementations of the .next,
// .throw, and .return methods.
generator._invoke = makeInvokeMethod(innerFn, self, context);
return generator;
}
runtime.wrap = wrap; // Try/catch helper to minimize deoptimizations. Returns a completion
// record like context.tryEntries[i].completion. This interface could
// have been (and was previously) designed to take a closure to be
// invoked without arguments, but in all the cases we care about we
// already have an existing method we want to call, so there's no need
// to create a new function object. We can even get away with assuming
// the method takes exactly one argument, since that happens to be true
// in every case, so we don't have to touch the arguments object. The
// only additional allocation required is the completion record, which
// has a stable shape and so hopefully should be cheap to allocate.
function tryCatch(fn, obj, arg) {
try {
return {
type: "normal",
arg: fn.call(obj, arg)
};
} catch (err) {
return {
type: "throw",
arg: err
};
}
}
var GenStateSuspendedStart = "suspendedStart";
var GenStateSuspendedYield = "suspendedYield";
var GenStateExecuting = "executing";
var GenStateCompleted = "completed"; // Returning this object from the innerFn has the same effect as
// breaking out of the dispatch switch statement.
var ContinueSentinel = {}; // Dummy constructor functions that we use as the .constructor and
// .constructor.prototype properties for functions that return Generator
// objects. For full spec compliance, you may wish to configure your
// minifier not to mangle the names of these two functions.
function Generator() {}
function GeneratorFunction() {}
function GeneratorFunctionPrototype() {} // This is a polyfill for %IteratorPrototype% for environments that
// don't natively support it.
var IteratorPrototype = {};
IteratorPrototype[iteratorSymbol] = function () {
return this;
};
var getProto = Object.getPrototypeOf;
var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
// This environment has a native %IteratorPrototype%; use it instead
// of the polyfill.
IteratorPrototype = NativeIteratorPrototype;
}
var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
GeneratorFunctionPrototype.constructor = GeneratorFunction;
GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction"; // Helper for defining the .next, .throw, and .return methods of the
// Iterator interface in terms of a single ._invoke method.
function defineIteratorMethods(prototype) {
["next", "throw", "return"].forEach(function (method) {
prototype[method] = function (arg) {
return this._invoke(method, arg);
};
});
}
runtime.isGeneratorFunction = function (genFun) {
var ctor = typeof genFun === "function" && genFun.constructor;
return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can
// do is to check its .name property.
(ctor.displayName || ctor.name) === "GeneratorFunction" : false;
};
runtime.mark = function (genFun) {
if (Object.setPrototypeOf) {
Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
} else {
genFun.__proto__ = GeneratorFunctionPrototype;
if (!(toStringTagSymbol in genFun)) {
genFun[toStringTagSymbol] = "GeneratorFunction";
}
}
genFun.prototype = Object.create(Gp);
return genFun;
}; // Within the body of any async function, `await x` is transformed to
// `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
// `hasOwn.call(value, "__await")` to determine if the yielded value is
// meant to be awaited.
runtime.awrap = function (arg) {
return {
__await: arg
};
};
function AsyncIterator(generator) {
function invoke(method, arg, resolve, reject) {
var record = tryCatch(generator[method], generator, arg);
if (record.type === "throw") {
reject(record.arg);
} else {
var result = record.arg;
var value = result.value;
if (value && typeof value === "object" && hasOwn.call(value, "__await")) {
return Promise.resolve(value.__await).then(function (value) {
invoke("next", value, resolve, reject);
}, function (err) {
invoke("throw", err, resolve, reject);
});
}
return Promise.resolve(value).then(function (unwrapped) {
// When a yielded Promise is resolved, its final value becomes
// the .value of the Promise<{value,done}> result for the
// current iteration. If the Promise is rejected, however, the
// result for this iteration will be rejected with the same
// reason. Note that rejections of yielded Promises are not
// thrown back into the generator function, as is the case
// when an awaited Promise is rejected. This difference in
// behavior between yield and await is important, because it
// allows the consumer to decide what to do with the yielded
// rejection (swallow it and continue, manually .throw it back
// into the generator, abandon iteration, whatever). With
// await, by contrast, there is no opportunity to examine the
// rejection reason outside the generator function, so the
// only option is to throw it from the await expression, and
// let the generator function handle the exception.
result.value = unwrapped;
resolve(result);
}, reject);
}
}
var previousPromise;
function enqueue(method, arg) {
function callInvokeWithMethodAndArg() {
return new Promise(function (resolve, reject) {
invoke(method, arg, resolve, reject);
});
}
return previousPromise = // If enqueue has been called before, then we want to wait until
// all previous Promises have been resolved before calling invoke,
// so that results are always delivered in the correct order. If
// enqueue has not been called before, then it is important to
// call invoke immediately, without waiting on a callback to fire,
// so that the async generator function has the opportunity to do
// any necessary setup in a predictable way. This predictability
// is why the Promise constructor synchronously invokes its
// executor callback, and why async functions synchronously
// execute code before the first await. Since we implement simple
// async functions in terms of async generators, it is especially
// important to get this right, even though it requires care.
previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later
// invocations of the iterator.
callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
} // Define the unified helper method that is used to implement .next,
// .throw, and .return (see defineIteratorMethods).
this._invoke = enqueue;
}
defineIteratorMethods(AsyncIterator.prototype);
AsyncIterator.prototype[asyncIteratorSymbol] = function () {
return this;
};
runtime.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of
// AsyncIterator objects; they just return a Promise for the value of
// the final result produced by the iterator.
runtime.async = function (innerFn, outerFn, self, tryLocsList) {
var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList));
return runtime.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator.
: iter.next().then(function (result) {
return result.done ? result.value : iter.next();
});
};
function makeInvokeMethod(innerFn, self, context) {
var state = GenStateSuspendedStart;
return function invoke(method, arg) {
if (state === GenStateExecuting) {
throw new Error("Generator is already running");
}
if (state === GenStateCompleted) {
if (method === "throw") {
throw arg;
} // Be forgiving, per 25.3.3.3.3 of the spec:
// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
return doneResult();
}
context.method = method;
context.arg = arg;
while (true) {
var delegate = context.delegate;
if (delegate) {
var delegateResult = maybeInvokeDelegate(delegate, context);
if (delegateResult) {
if (delegateResult === ContinueSentinel) continue;
return delegateResult;
}
}
if (context.method === "next") {
// Setting context._sent for legacy support of Babel's
// function.sent implementation.
context.sent = context._sent = context.arg;
} else if (context.method === "throw") {
if (state === GenStateSuspendedStart) {
state = GenStateCompleted;
throw context.arg;
}
context.dispatchException(context.arg);
} else if (context.method === "return") {
context.abrupt("return", context.arg);
}
state = GenStateExecuting;
var record = tryCatch(innerFn, self, context);
if (record.type === "normal") {
// If an exception is thrown from innerFn, we leave state ===
// GenStateExecuting and loop back for another invocation.
state = context.done ? GenStateCompleted : GenStateSuspendedYield;
if (record.arg === ContinueSentinel) {
continue;
}
return {
value: record.arg,
done: context.done
};
} else if (record.type === "throw") {
state = GenStateCompleted; // Dispatch the exception by looping back around to the
// context.dispatchException(context.arg) call above.
context.method = "throw";
context.arg = record.arg;
}
}
};
} // Call delegate.iterator[context.method](context.arg) and handle the
// result, either by returning a { value, done } result from the
// delegate iterator, or by modifying context.method and context.arg,
// setting context.delegate to null, and returning the ContinueSentinel.
function maybeInvokeDelegate(delegate, context) {
var method = delegate.iterator[context.method];
if (method === undefined) {
// A .throw or .return when the delegate iterator has no .throw
// method always terminates the yield* loop.
context.delegate = null;
if (context.method === "throw") {
if (delegate.iterator["return"]) {
// If the delegate iterator has a return method, give it a
// chance to clean up.
context.method = "return";
context.arg = undefined;
maybeInvokeDelegate(delegate, context);
if (context.method === "throw") {
// If maybeInvokeDelegate(context) changed context.method from
// "return" to "throw", let that override the TypeError below.
return ContinueSentinel;
}
}
context.method = "throw";
context.arg = new TypeError("The iterator does not provide a 'throw' method");
}
return ContinueSentinel;
}
var record = tryCatch(method, delegate.iterator, context.arg);
if (record.type === "throw") {
context.method = "throw";
context.arg = record.arg;
context.delegate = null;
return ContinueSentinel;
}
var info = record.arg;
if (!info) {
context.method = "throw";
context.arg = new TypeError("iterator result is not an object");
context.delegate = null;
return ContinueSentinel;
}
if (info.done) {
// Assign the result of the finished delegate to the temporary
// variable specified by delegate.resultName (see delegateYield).
context[delegate.resultName] = info.value; // Resume execution at the desired location (see delegateYield).
context.next = delegate.nextLoc; // If context.method was "throw" but the delegate handled the
// exception, let the outer generator proceed normally. If
// context.method was "next", forget context.arg since it has been
// "consumed" by the delegate iterator. If context.method was
// "return", allow the original .return call to continue in the
// outer generator.
if (context.method !== "return") {
context.method = "next";
context.arg = undefined;
}
} else {
// Re-yield the result returned by the delegate method.
return info;
} // The delegate iterator is finished, so forget it and continue with
// the outer generator.
context.delegate = null;
return ContinueSentinel;
} // Define Generator.prototype.{next,throw,return} in terms of the
// unified ._invoke helper method.
defineIteratorMethods(Gp);
Gp[toStringTagSymbol] = "Generator"; // A Generator should always return itself as the iterator object when the
// @@iterator function is called on it. Some browsers' implementations of the
// iterator prototype chain incorrectly implement this, causing the Generator
// object to not be returned from this call. This ensures that doesn't happen.
// See https://github.com/facebook/regenerator/issues/274 for more details.
Gp[iteratorSymbol] = function () {
return this;
};
Gp.toString = function () {
return "[object Generator]";
};
function pushTryEntry(locs) {
var entry = {
tryLoc: locs[0]
};
if (1 in locs) {
entry.catchLoc = locs[1];
}
if (2 in locs) {
entry.finallyLoc = locs[2];
entry.afterLoc = locs[3];
}
this.tryEntries.push(entry);
}
function resetTryEntry(entry) {
var record = entry.completion || {};
record.type = "normal";
delete record.arg;
entry.completion = record;
}
function Context(tryLocsList) {
// The root entry object (effectively a try statement without a catch
// or a finally block) gives us a place to store values thrown from
// locations where there is no enclosing try statement.
this.tryEntries = [{
tryLoc: "root"
}];
tryLocsList.forEach(pushTryEntry, this);
this.reset(true);
}
runtime.keys = function (object) {
var keys = [];
for (var key in object) {
keys.push(key);
}
keys.reverse(); // Rather than returning an object with a next method, we keep
// things simple and return the next function itself.
return function next() {
while (keys.length) {
var key = keys.pop();
if (key in object) {
next.value = key;
next.done = false;
return next;
}
} // To avoid creating an additional object, we just hang the .value
// and .done properties off the next function object itself. This
// also ensures that the minifier will not anonymize the function.
next.done = true;
return next;
};
};
function values(iterable) {
if (iterable) {
var iteratorMethod = iterable[iteratorSymbol];
if (iteratorMethod) {
return iteratorMethod.call(iterable);
}
if (typeof iterable.next === "function") {
return iterable;
}
if (!isNaN(iterable.length)) {
var i = -1,
next = function next() {
while (++i < iterable.length) {
if (hasOwn.call(iterable, i)) {
next.value = iterable[i];
next.done = false;
return next;
}
}
next.value = undefined;
next.done = true;
return next;
};
return next.next = next;
}
} // Return an iterator with no values.
return {
next: doneResult
};
}
runtime.values = values;
function doneResult() {
return {
value: undefined,
done: true
};
}
Context.prototype = {
constructor: Context,
reset: function reset(skipTempReset) {
this.prev = 0;
this.next = 0; // Resetting context._sent for legacy support of Babel's
// function.sent implementation.
this.sent = this._sent = undefined;
this.done = false;
this.delegate = null;
this.method = "next";
this.arg = undefined;
this.tryEntries.forEach(resetTryEntry);
if (!skipTempReset) {
for (var name in this) {
// Not sure about the optimal order of these conditions:
if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {
this[name] = undefined;
}
}
}
},
stop: function stop() {
this.done = true;
var rootEntry = this.tryEntries[0];
var rootRecord = rootEntry.completion;
if (rootRecord.type === "throw") {
throw rootRecord.arg;
}
return this.rval;
},
dispatchException: function dispatchException(exception) {
if (this.done) {
throw exception;
}
var context = this;
function handle(loc, caught) {
record.type = "throw";
record.arg = exception;
context.next = loc;
if (caught) {
// If the dispatched exception was caught by a catch block,
// then let that catch block handle the exception normally.
context.method = "next";
context.arg = undefined;
}
return !!caught;
}
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
var record = entry.completion;
if (entry.tryLoc === "root") {
// Exception thrown outside of any try block that could handle
// it, so set the completion value of the entire function to
// throw the exception.
return handle("end");
}
if (entry.tryLoc <= this.prev) {
var hasCatch = hasOwn.call(entry, "catchLoc");
var hasFinally = hasOwn.call(entry, "finallyLoc");
if (hasCatch && hasFinally) {
if (this.prev < entry.catchLoc) {
return handle(entry.catchLoc, true);
} else if (this.prev < entry.finallyLoc) {
return handle(entry.finallyLoc);
}
} else if (hasCatch) {
if (this.prev < entry.catchLoc) {
return handle(entry.catchLoc, true);
}
} else if (hasFinally) {
if (this.prev < entry.finallyLoc) {
return handle(entry.finallyLoc);
}
} else {
throw new Error("try statement without catch or finally");
}
}
}
},
abrupt: function abrupt(type, arg) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
var finallyEntry = entry;
break;
}
}
if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {
// Ignore the finally entry if control is not jumping to a
// location outside the try/catch block.
finallyEntry = null;
}
var record = finallyEntry ? finallyEntry.completion : {};
record.type = type;
record.arg = arg;
if (finallyEntry) {
this.method = "next";
this.next = finallyEntry.finallyLoc;
return ContinueSentinel;
}
return this.complete(record);
},
complete: function complete(record, afterLoc) {
if (record.type === "throw") {
throw record.arg;
}
if (record.type === "break" || record.type === "continue") {
this.next = record.arg;
} else if (record.type === "return") {
this.rval = this.arg = record.arg;
this.method = "return";
this.next = "end";
} else if (record.type === "normal" && afterLoc) {
this.next = afterLoc;
}
return ContinueSentinel;
},
finish: function finish(finallyLoc) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.finallyLoc === finallyLoc) {
this.complete(entry.completion, entry.afterLoc);
resetTryEntry(entry);
return ContinueSentinel;
}
}
},
"catch": function _catch(tryLoc) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.tryLoc === tryLoc) {
var record = entry.completion;
if (record.type === "throw") {
var thrown = record.arg;
resetTryEntry(entry);
}
return thrown;
}
} // The context.catch method must only be called with a location
// argument that corresponds to a known catch block.
throw new Error("illegal catch attempt");
},
delegateYield: function delegateYield(iterable, resultName, nextLoc) {
this.delegate = {
iterator: values(iterable),
resultName: resultName,
nextLoc: nextLoc
};
if (this.method === "next") {
// Deliberately forget the last sent value so that we don't
// accidentally pass it on to the delegate.
this.arg = undefined;
}
return ContinueSentinel;
}
};
}( // In sloppy mode, unbound `this` refers to the global object, fallback to
// Function constructor if we're in global strict mode. That is sadly a form
// of indirect eval which violates Content Security Policy.
function () {
return this;
}() || Function("return this")());
cc._RF.pop();
\ No newline at end of file
{"version":3,"sources":["assets/mz_003/script/runtime.js"],"names":["global","Op","Object","prototype","hasOwn","hasOwnProperty","undefined","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","inModule","module","runtime","regeneratorRuntime","exports","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","fn","obj","arg","type","call","err","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","constructor","displayName","defineIteratorMethods","forEach","method","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","invoke","resolve","reject","record","result","value","Promise","then","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","async","iter","next","done","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","info","resultName","nextLoc","toString","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","keys","object","key","reverse","length","pop","iterable","iteratorMethod","isNaN","i","skipTempReset","prev","charAt","slice","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","Function"],"mappings":"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","sourceRoot":"/","sourcesContent":["/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function (global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() { }\n function GeneratorFunction() { }\n function GeneratorFunctionPrototype() { }\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n prototype[method] = function (arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function (genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function (genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function (arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function (unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function (innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (!info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function () {\n return this;\n };\n\n Gp.toString = function () {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function (object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function (skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function () {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function (exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function (type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function (record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function (finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function (tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function (iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function () { return this })() || Function(\"return this\")()\n);\n"]}
\ No newline at end of file
{
"__type__": "cc.Texture2D",
"content": "0,9729,9729,33071,33071,0,0,1"
}
\ No newline at end of file
{
"__type__": "cc.AudioClip",
"_name": "end",
"_objFlags": 0,
"_native": ".mp3",
"duration": 4.04898,
"loadMode": 0
}
\ No newline at end of file
...@@ -16,6 +16,9 @@ ...@@ -16,6 +16,9 @@
"_children": [ "_children": [
{ {
"__id__": 2 "__id__": 2
},
{
"__id__": 61
} }
], ],
"_active": false, "_active": false,
...@@ -91,13 +94,13 @@ ...@@ -91,13 +94,13 @@
"_active": true, "_active": true,
"_components": [ "_components": [
{ {
"__id__": 54 "__id__": 58
}, },
{ {
"__id__": 55 "__id__": 59
}, },
{ {
"__id__": 56 "__id__": 60
} }
], ],
"_prefab": null, "_prefab": null,
...@@ -1889,12 +1892,18 @@ ...@@ -1889,12 +1892,18 @@
}, },
{ {
"__id__": 51 "__id__": 51
},
{
"__id__": 53
},
{
"__id__": 55
} }
], ],
"_active": false, "_active": false,
"_components": [ "_components": [
{ {
"__id__": 53 "__id__": 57
} }
], ],
"_prefab": null, "_prefab": null,
...@@ -2213,6 +2222,166 @@ ...@@ -2213,6 +2222,166 @@
"preload": true, "preload": true,
"_id": "e4FqxYDQ5DMavcb/jH9rzz" "_id": "e4FqxYDQ5DMavcb/jH9rzz"
}, },
{
"__type__": "cc.Node",
"_name": "good_job",
"_objFlags": 0,
"_parent": {
"__id__": 46
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 54
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 0,
"height": 0
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "b03Nppl/VKso2zq2OL3kda"
},
{
"__type__": "cc.AudioSource",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 53
},
"_enabled": true,
"_clip": {
"__uuid__": "067e45c4-be38-4fd0-8274-0f92703002ad"
},
"_volume": 1,
"_mute": false,
"_loop": false,
"playOnLoad": false,
"preload": false,
"_id": "bbofmPuftAVKY+pqncTW9+"
},
{
"__type__": "cc.Node",
"_name": "end_audio",
"_objFlags": 0,
"_parent": {
"__id__": 46
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 56
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 0,
"height": 0
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "f9Xp2kmx5M3pGLqSKdv+QB"
},
{
"__type__": "cc.AudioSource",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 55
},
"_enabled": true,
"_clip": {
"__uuid__": "c28e2c01-0a4a-4b28-b44e-7cf7c68f0ccf"
},
"_volume": 1,
"_mute": false,
"_loop": false,
"playOnLoad": false,
"preload": false,
"_id": "96JW6kSV1BEp9LJP+HKIe5"
},
{ {
"__type__": "cc.Sprite", "__type__": "cc.Sprite",
"_name": "", "_name": "",
...@@ -2300,5 +2469,452 @@ ...@@ -2300,5 +2469,452 @@
"baseWidth": 1280, "baseWidth": 1280,
"baseHeight": 720, "baseHeight": 720,
"_id": "28v7Et3UdB3JZRlTOtLFi9" "_id": "28v7Et3UdB3JZRlTOtLFi9"
},
{
"__type__": "cc.Node",
"_name": "RibbonNodeBase",
"_objFlags": 0,
"_parent": {
"__id__": 1
},
"_children": [
{
"__id__": 62
},
{
"__id__": 64
},
{
"__id__": 66
},
{
"__id__": 68
}
],
"_active": true,
"_components": [],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 0,
"height": 0
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "abKXvlMl9MLJXGAhTbrllV"
},
{
"__type__": "cc.Node",
"_name": "sahua",
"_objFlags": 0,
"_parent": {
"__id__": 61
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 63
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 16,
"g": 167,
"b": 219,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 36,
"height": 24
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
-206.8,
-188.973,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "cbo/P1vN1GMaGPst/uBwdV"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 62
},
"_enabled": true,
"_materials": [
{
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
}
],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": {
"__uuid__": "0735e431-fa61-49b9-a3b4-8927ff5ce7f4"
},
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "e3iQhXncdP37Wf2N0MhHhr"
},
{
"__type__": "cc.Node",
"_name": "sahua",
"_objFlags": 0,
"_parent": {
"__id__": 61
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 65
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 0,
"g": 255,
"b": 0,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 36,
"height": 24
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
-206.8,
-188.973,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "a0dpvCWhtB+rS9BGbu73Up"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 64
},
"_enabled": true,
"_materials": [
{
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
}
],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": {
"__uuid__": "0735e431-fa61-49b9-a3b4-8927ff5ce7f4"
},
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "b4Fj2EaepNp4tRhYija9rM"
},
{
"__type__": "cc.Node",
"_name": "sahua",
"_objFlags": 0,
"_parent": {
"__id__": 61
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 67
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 0,
"g": 0,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 36,
"height": 24
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
-206.8,
-188.973,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "e5KPfOTCxHkKYR6nJm4UMd"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 66
},
"_enabled": true,
"_materials": [
{
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
}
],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": {
"__uuid__": "0735e431-fa61-49b9-a3b4-8927ff5ce7f4"
},
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "55rPOIigxP1J/a+4mCtvOq"
},
{
"__type__": "cc.Node",
"_name": "sahua",
"_objFlags": 0,
"_parent": {
"__id__": 61
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 69
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 0,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 36,
"height": 24
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
-206.8,
-188.973,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "f7+eEkJf5P8rVS8RYOdYtF"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 68
},
"_enabled": true,
"_materials": [
{
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
}
],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": {
"__uuid__": "0735e431-fa61-49b9-a3b4-8927ff5ce7f4"
},
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "43uRcDj/JLZ5GAFgBSEPYc"
} }
] ]
\ No newline at end of file
{ {
"9836134e-b892-4283-b6b2-78b5acf3ed45": { "9836134e-b892-4283-b6b2-78b5acf3ed45": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931385, "meta": 1611284421849,
"relativePath": "effects" "relativePath": "effects"
}, },
"430eccbf-bf2c-4e6e-8c0c-884bbb487f32": { "430eccbf-bf2c-4e6e-8c0c-884bbb487f32": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931410, "meta": 1611284421860,
"relativePath": "effects/__builtin-editor-gizmo-line.effect" "relativePath": "effects/__builtin-editor-gizmo-line.effect"
}, },
"6c5cf6e1-b044-4eac-9431-835644d57381": { "6c5cf6e1-b044-4eac-9431-835644d57381": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931417, "meta": 1611284421869,
"relativePath": "effects/__builtin-editor-gizmo-unlit.effect" "relativePath": "effects/__builtin-editor-gizmo-unlit.effect"
}, },
"115286d1-2e10-49ee-aab4-341583f607e8": { "115286d1-2e10-49ee-aab4-341583f607e8": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931443, "meta": 1611284421888,
"relativePath": "effects/__builtin-editor-gizmo.effect" "relativePath": "effects/__builtin-editor-gizmo.effect"
}, },
"abc2cb62-7852-4525-a90d-d474487b88f2": { "abc2cb62-7852-4525-a90d-d474487b88f2": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931531, "meta": 1611284421950,
"relativePath": "effects/builtin-phong.effect" "relativePath": "effects/builtin-phong.effect"
}, },
"e2f00085-c597-422d-9759-52c360279106": { "e2f00085-c597-422d-9759-52c360279106": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931592, "meta": 1611284422023,
"relativePath": "effects/builtin-toon.effect" "relativePath": "effects/builtin-toon.effect"
}, },
"f8e6b000-5643-4b86-9080-aa680ce1f599": { "f8e6b000-5643-4b86-9080-aa680ce1f599": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931593, "meta": 1611284422029,
"relativePath": "image" "relativePath": "image"
}, },
"e851e89b-faa2-4484-bea6-5c01dd9f06e2": { "e851e89b-faa2-4484-bea6-5c01dd9f06e2": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931615, "meta": 1611284422053,
"relativePath": "image/default_btn_normal.png" "relativePath": "image/default_btn_normal.png"
}, },
"71561142-4c83-4933-afca-cb7a17f67053": { "71561142-4c83-4933-afca-cb7a17f67053": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931616, "meta": 1611284422056,
"relativePath": "image/default_btn_disabled.png" "relativePath": "image/default_btn_disabled.png"
}, },
"b43ff3c2-02bb-4874-81f7-f2dea6970f18": { "b43ff3c2-02bb-4874-81f7-f2dea6970f18": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931627, "meta": 1611284422073,
"relativePath": "image/default_btn_pressed.png" "relativePath": "image/default_btn_pressed.png"
}, },
"edd215b9-2796-4a05-aaf5-81f96c9281ce": { "edd215b9-2796-4a05-aaf5-81f96c9281ce": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931626, "meta": 1611284422071,
"relativePath": "image/default_editbox_bg.png" "relativePath": "image/default_editbox_bg.png"
}, },
"d81ec8ad-247c-4e62-aa3c-d35c4193c7af": { "d81ec8ad-247c-4e62-aa3c-d35c4193c7af": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931637, "meta": 1611284422093,
"relativePath": "image/default_panel.png" "relativePath": "image/default_panel.png"
}, },
"99170b0b-d210-46f1-b213-7d9e3f23098a": { "99170b0b-d210-46f1-b213-7d9e3f23098a": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931638, "meta": 1611284422091,
"relativePath": "image/default_progressbar_bg.png" "relativePath": "image/default_progressbar_bg.png"
}, },
"cfef78f1-c8df-49b7-8ed0-4c953ace2621": { "cfef78f1-c8df-49b7-8ed0-4c953ace2621": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931648, "meta": 1611284422107,
"relativePath": "image/default_progressbar.png" "relativePath": "image/default_progressbar.png"
}, },
"567dcd80-8bf4-4535-8a5a-313f1caf078a": { "567dcd80-8bf4-4535-8a5a-313f1caf078a": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931649, "meta": 1611284422108,
"relativePath": "image/default_radio_button_off.png" "relativePath": "image/default_radio_button_off.png"
}, },
"9d60001f-b5f4-4726-a629-2659e3ded0b8": { "9d60001f-b5f4-4726-a629-2659e3ded0b8": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931666, "meta": 1611284422121,
"relativePath": "image/default_radio_button_on.png" "relativePath": "image/default_radio_button_on.png"
}, },
"4bab67cb-18e6-4099-b840-355f0473f890": { "4bab67cb-18e6-4099-b840-355f0473f890": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931663, "meta": 1611284422122,
"relativePath": "image/default_scrollbar_bg.png" "relativePath": "image/default_scrollbar_bg.png"
}, },
"617323dd-11f4-4dd3-8eec-0caf6b3b45b9": { "617323dd-11f4-4dd3-8eec-0caf6b3b45b9": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931681, "meta": 1611284422154,
"relativePath": "image/default_scrollbar_vertical_bg.png" "relativePath": "image/default_scrollbar_vertical_bg.png"
}, },
"d6d3ca85-4681-47c1-b5dd-d036a9d39ea2": { "d6d3ca85-4681-47c1-b5dd-d036a9d39ea2": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931682, "meta": 1611284422155,
"relativePath": "image/default_scrollbar_vertical.png" "relativePath": "image/default_scrollbar_vertical.png"
}, },
"0275e94c-56a7-410f-bd1a-fc7483f7d14a": { "0275e94c-56a7-410f-bd1a-fc7483f7d14a": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931692, "meta": 1611284422164,
"relativePath": "image/default_sprite_splash.png" "relativePath": "image/default_sprite_splash.png"
}, },
"0291c134-b3da-4098-b7b5-e397edbe947f": { "0291c134-b3da-4098-b7b5-e397edbe947f": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931694, "meta": 1611284422166,
"relativePath": "image/default_scrollbar.png" "relativePath": "image/default_scrollbar.png"
}, },
"6e056173-d285-473c-b206-40a7fff5386e": { "6e056173-d285-473c-b206-40a7fff5386e": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931707, "meta": 1611284422177,
"relativePath": "image/default_sprite.png" "relativePath": "image/default_sprite.png"
}, },
"73a0903d-d80e-4e3c-aa67-f999543c08f5": { "73a0903d-d80e-4e3c-aa67-f999543c08f5": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931708, "meta": 1611284422178,
"relativePath": "image/default_toggle_checkmark.png" "relativePath": "image/default_toggle_checkmark.png"
}, },
"d29077ba-1627-4a72-9579-7b56a235340c": { "d29077ba-1627-4a72-9579-7b56a235340c": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931721, "meta": 1611284422192,
"relativePath": "image/default_toggle_normal.png" "relativePath": "image/default_toggle_normal.png"
}, },
"c25b9d50-c8fc-4d27-beeb-6e7c1f2e5c0f": { "c25b9d50-c8fc-4d27-beeb-6e7c1f2e5c0f": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931720, "meta": 1611284422191,
"relativePath": "image/default_toggle_disabled.png" "relativePath": "image/default_toggle_disabled.png"
}, },
"b181c1e4-0a72-4a91-bfb0-ae6f36ca60bd": { "b181c1e4-0a72-4a91-bfb0-ae6f36ca60bd": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931732, "meta": 1611284422204,
"relativePath": "image/default_toggle_pressed.png" "relativePath": "image/default_toggle_pressed.png"
}, },
"5c3eedba-6c41-4c0c-9ba7-d91f813cbd1c": { "5c3eedba-6c41-4c0c-9ba7-d91f813cbd1c": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931733, "meta": 1611284422205,
"relativePath": "materials" "relativePath": "materials"
}, },
"c4480a0a-6ac5-443f-8b40-361a14257fc8": { "c4480a0a-6ac5-443f-8b40-361a14257fc8": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281932176, "meta": 1611284422789,
"relativePath": "materials/builtin-phong.mtl" "relativePath": "materials/builtin-phong.mtl"
}, },
"fc09f9bd-2cce-4605-b630-8145ef809ed6": { "fc09f9bd-2cce-4605-b630-8145ef809ed6": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931736, "meta": 1611284422208,
"relativePath": "misc" "relativePath": "misc"
}, },
"2be36297-9abb-4fee-8049-9ed5e271da8a": { "2be36297-9abb-4fee-8049-9ed5e271da8a": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931739, "meta": 1611284422211,
"relativePath": "misc/default_video.mp4" "relativePath": "misc/default_video.mp4"
}, },
"db019bf7-f71c-4111-98cf-918ea180cb48": { "db019bf7-f71c-4111-98cf-918ea180cb48": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931740, "meta": 1611284422212,
"relativePath": "model" "relativePath": "model"
}, },
"e39e96e6-6f6e-413f-bcf1-ac7679bb648a": { "e39e96e6-6f6e-413f-bcf1-ac7679bb648a": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931741, "meta": 1611284422213,
"relativePath": "model/prefab" "relativePath": "model/prefab"
}, },
"a87cc147-01b2-43f8-8e42-a7ca90b0c757": { "a87cc147-01b2-43f8-8e42-a7ca90b0c757": {
"asset": 1599374686636, "asset": 1599374686636,
"meta": 1611281931743, "meta": 1611284422215,
"relativePath": "model/prefab/box.prefab" "relativePath": "model/prefab/box.prefab"
}, },
"600301aa-3357-4a10-b086-84f011fa32ba": { "600301aa-3357-4a10-b086-84f011fa32ba": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931746, "meta": 1611284422218,
"relativePath": "image/default-particle.png" "relativePath": "image/default-particle.png"
}, },
"fe1417b6-fe6b-46a4-ae7c-9fd331f33a2a": { "fe1417b6-fe6b-46a4-ae7c-9fd331f33a2a": {
"asset": 1599374686639, "asset": 1599374686639,
"meta": 1611281931745, "meta": 1611284422217,
"relativePath": "model/prefab/capsule.prefab" "relativePath": "model/prefab/capsule.prefab"
}, },
"b5fc2cf2-7942-483d-be1f-bbeadc4714ad": { "b5fc2cf2-7942-483d-be1f-bbeadc4714ad": {
"asset": 1599374686640, "asset": 1599374686640,
"meta": 1611281931748, "meta": 1611284422219,
"relativePath": "model/prefab/cone.prefab" "relativePath": "model/prefab/cone.prefab"
}, },
"1c5e4038-953a-44c2-b620-0bbfc6170477": { "1c5e4038-953a-44c2-b620-0bbfc6170477": {
"asset": 1599374686642, "asset": 1599374686642,
"meta": 1611281931749, "meta": 1611284422221,
"relativePath": "model/prefab/cylinder.prefab" "relativePath": "model/prefab/cylinder.prefab"
}, },
"3f376125-a699-40ca-ad05-04d662eaa1f2": { "3f376125-a699-40ca-ad05-04d662eaa1f2": {
"asset": 1599374686643, "asset": 1599374686643,
"meta": 1611281931750, "meta": 1611284422222,
"relativePath": "model/prefab/plane.prefab" "relativePath": "model/prefab/plane.prefab"
}, },
"6c9ef10d-b479-420b-bfe6-39cdda6a8ae0": { "6c9ef10d-b479-420b-bfe6-39cdda6a8ae0": {
"asset": 1599374686645, "asset": 1599374686645,
"meta": 1611281931751, "meta": 1611284422224,
"relativePath": "model/prefab/quad.prefab" "relativePath": "model/prefab/quad.prefab"
}, },
"2d9a4b85-b0ab-4c46-84c5-18f393ab2058": { "2d9a4b85-b0ab-4c46-84c5-18f393ab2058": {
"asset": 1599374686646, "asset": 1599374686646,
"meta": 1611281931753, "meta": 1611284422225,
"relativePath": "model/prefab/sphere.prefab" "relativePath": "model/prefab/sphere.prefab"
}, },
"de510076-056b-484f-b94c-83bef217d0e1": { "de510076-056b-484f-b94c-83bef217d0e1": {
"asset": 1599374686668, "asset": 1599374686668,
"meta": 1611281931761, "meta": 1611284422236,
"relativePath": "model/prefab/torus.prefab" "relativePath": "model/prefab/torus.prefab"
}, },
"f6e6dd15-71d1-4ffe-ace7-24fd39942c05": { "f6e6dd15-71d1-4ffe-ace7-24fd39942c05": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931762, "meta": 1611284422237,
"relativePath": "obsolete" "relativePath": "obsolete"
}, },
"8a96b965-2dc0-4e03-aa90-3b79cb93b5b4": { "8a96b965-2dc0-4e03-aa90-3b79cb93b5b4": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931775, "meta": 1611284422252,
"relativePath": "obsolete/atom.png" "relativePath": "obsolete/atom.png"
}, },
"f743d2b6-b7ea-4c14-a55b-547ed4d0a045": { "f743d2b6-b7ea-4c14-a55b-547ed4d0a045": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931776, "meta": 1611284422255,
"relativePath": "particle" "relativePath": "particle"
}, },
"b8223619-7e38-47c4-841f-9160c232495a": { "b8223619-7e38-47c4-841f-9160c232495a": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281932192, "meta": 1611284422818,
"relativePath": "obsolete/atom.plist" "relativePath": "obsolete/atom.plist"
}, },
"d0a82d39-bede-46c4-b698-c81ff0dedfff": { "d0a82d39-bede-46c4-b698-c81ff0dedfff": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931786, "meta": 1611284422270,
"relativePath": "particle/atom.png" "relativePath": "particle/atom.png"
}, },
"ae6c6c98-11e4-452f-8758-75f5c6a56e83": { "ae6c6c98-11e4-452f-8758-75f5c6a56e83": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931786, "meta": 1611284422271,
"relativePath": "prefab" "relativePath": "prefab"
}, },
"897ef7a1-4860-4f64-968d-f5924b18668a": { "897ef7a1-4860-4f64-968d-f5924b18668a": {
"asset": 1599374686692, "asset": 1599374686692,
"meta": 1611281931788, "meta": 1611284422275,
"relativePath": "prefab/2d-camera.prefab" "relativePath": "prefab/2d-camera.prefab"
}, },
"b2687ac4-099e-403c-a192-ff477686f4f5": { "b2687ac4-099e-403c-a192-ff477686f4f5": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281932194, "meta": 1611284422819,
"relativePath": "particle/atom.plist" "relativePath": "particle/atom.plist"
}, },
"70d7cdb0-04cd-41bb-9480-c06a4785f386": { "70d7cdb0-04cd-41bb-9480-c06a4785f386": {
"asset": 1599374686694, "asset": 1599374686694,
"meta": 1611281931789, "meta": 1611284422280,
"relativePath": "prefab/3d-camera.prefab" "relativePath": "prefab/3d-camera.prefab"
}, },
"70bbeb73-6dc2-4ee4-8faf-76b3a0e34ec4": { "70bbeb73-6dc2-4ee4-8faf-76b3a0e34ec4": {
"asset": 1599374686696, "asset": 1599374686696,
"meta": 1611281931792, "meta": 1611284422285,
"relativePath": "prefab/3d-particle.prefab" "relativePath": "prefab/3d-particle.prefab"
}, },
"ed88f13d-fcad-4848-aa35-65a2cb973584": { "ed88f13d-fcad-4848-aa35-65a2cb973584": {
"asset": 1599374686699, "asset": 1599374686699,
"meta": 1611281931793, "meta": 1611284422287,
"relativePath": "prefab/3d-stage.prefab" "relativePath": "prefab/3d-stage.prefab"
}, },
"972b9a4d-47ee-4c74-b5c3-61d8a69bc29f": { "972b9a4d-47ee-4c74-b5c3-61d8a69bc29f": {
"asset": 1599374686701, "asset": 1599374686701,
"meta": 1611281931795, "meta": 1611284422289,
"relativePath": "prefab/button.prefab" "relativePath": "prefab/button.prefab"
}, },
"2c937608-2562-40ea-b264-7395df6f0cea": { "2c937608-2562-40ea-b264-7395df6f0cea": {
"asset": 1599374686703, "asset": 1599374686703,
"meta": 1611281931796, "meta": 1611284422291,
"relativePath": "prefab/canvas.prefab" "relativePath": "prefab/canvas.prefab"
}, },
"61aeb05b-3b32-452b-8eed-2b76deeed554": { "61aeb05b-3b32-452b-8eed-2b76deeed554": {
"asset": 1599374686704, "asset": 1599374686704,
"meta": 1611281931798, "meta": 1611284422293,
"relativePath": "prefab/editbox.prefab" "relativePath": "prefab/editbox.prefab"
}, },
"27756ebb-3d33-44b0-9b96-e858fadd4dd4": { "27756ebb-3d33-44b0-9b96-e858fadd4dd4": {
"asset": 1599374686706, "asset": 1599374686706,
"meta": 1611281931799, "meta": 1611284422295,
"relativePath": "prefab/label.prefab" "relativePath": "prefab/label.prefab"
}, },
"785a442c-3ceb-45be-a46e-7317f625f3b9": { "785a442c-3ceb-45be-a46e-7317f625f3b9": {
"asset": 1599374686711, "asset": 1599374686711,
"meta": 1611281931802, "meta": 1611284422297,
"relativePath": "prefab/layout.prefab" "relativePath": "prefab/layout.prefab"
}, },
"a3ee0214-b432-4865-9666-4a3211814282": { "a3ee0214-b432-4865-9666-4a3211814282": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931802, "meta": 1611284422297,
"relativePath": "prefab/light" "relativePath": "prefab/light"
}, },
"61906da3-7003-4bda-9abc-5769c76faee4": { "61906da3-7003-4bda-9abc-5769c76faee4": {
"asset": 1599374686714, "asset": 1599374686714,
"meta": 1611281931805, "meta": 1611284422299,
"relativePath": "prefab/light/ambient.prefab" "relativePath": "prefab/light/ambient.prefab"
}, },
"ddb99b39-7004-47cd-9705-751905c43c46": { "ddb99b39-7004-47cd-9705-751905c43c46": {
"asset": 1599374686715, "asset": 1599374686715,
"meta": 1611281931807, "meta": 1611284422306,
"relativePath": "prefab/light/directional.prefab" "relativePath": "prefab/light/directional.prefab"
}, },
"0cf30284-9073-46bc-9eba-e62b69dbbff3": { "0cf30284-9073-46bc-9eba-e62b69dbbff3": {
"asset": 1599374686717, "asset": 1599374686717,
"meta": 1611281931817, "meta": 1611284422308,
"relativePath": "prefab/light/point.prefab" "relativePath": "prefab/light/point.prefab"
}, },
"f5331fd2-bf42-4ee3-a3fd-3e1657600eff": { "f5331fd2-bf42-4ee3-a3fd-3e1657600eff": {
"asset": 1599374686718, "asset": 1599374686718,
"meta": 1611281931819, "meta": 1611284422310,
"relativePath": "prefab/light/spot.prefab" "relativePath": "prefab/light/spot.prefab"
}, },
"ca8401fe-ad6e-41a8-bd46-8e3e4e9945be": { "ca8401fe-ad6e-41a8-bd46-8e3e4e9945be": {
"asset": 1599374686728, "asset": 1599374686728,
"meta": 1611281931822, "meta": 1611284422312,
"relativePath": "prefab/pageview.prefab" "relativePath": "prefab/pageview.prefab"
}, },
"cd33edea-55f5-46c2-958d-357a01384a36": { "cd33edea-55f5-46c2-958d-357a01384a36": {
"asset": 1599374686745, "asset": 1599374686745,
"meta": 1611281931824, "meta": 1611284422314,
"relativePath": "prefab/particlesystem.prefab" "relativePath": "prefab/particlesystem.prefab"
}, },
"5965ffac-69da-4b55-bcde-9225d0613c28": { "5965ffac-69da-4b55-bcde-9225d0613c28": {
"asset": 1599374686753, "asset": 1599374686753,
"meta": 1611281931825, "meta": 1611284422328,
"relativePath": "prefab/progressBar.prefab" "relativePath": "prefab/progressBar.prefab"
}, },
"4a37dd57-78cd-4cec-aad4-f11a73d12b63": { "4a37dd57-78cd-4cec-aad4-f11a73d12b63": {
"asset": 1599374686755, "asset": 1599374686755,
"meta": 1611281931838, "meta": 1611284422357,
"relativePath": "prefab/richtext.prefab" "relativePath": "prefab/richtext.prefab"
}, },
"32044bd2-481f-4cf1-a656-e2b2fb1594eb": { "32044bd2-481f-4cf1-a656-e2b2fb1594eb": {
"asset": 1599374686776, "asset": 1599374686776,
"meta": 1611281931858, "meta": 1611284422360,
"relativePath": "prefab/scrollview.prefab" "relativePath": "prefab/scrollview.prefab"
}, },
"0004d1cf-a0ad-47d8-ab17-34d3db9d35a3": { "0004d1cf-a0ad-47d8-ab17-34d3db9d35a3": {
"asset": 1599374686794, "asset": 1599374686794,
"meta": 1611281931863, "meta": 1611284422367,
"relativePath": "prefab/slider.prefab" "relativePath": "prefab/slider.prefab"
}, },
"1f55e3be-b89b-4b79-88de-47fd31018044": { "1f55e3be-b89b-4b79-88de-47fd31018044": {
"asset": 1599374686796, "asset": 1599374686796,
"meta": 1611281931866, "meta": 1611284422369,
"relativePath": "prefab/sprite_splash.prefab" "relativePath": "prefab/sprite_splash.prefab"
}, },
"96083d03-c332-4a3f-9386-d03e2d19e8ee": { "96083d03-c332-4a3f-9386-d03e2d19e8ee": {
"asset": 1599374686799, "asset": 1599374686799,
"meta": 1611281931877, "meta": 1611284422383,
"relativePath": "prefab/sprite.prefab" "relativePath": "prefab/sprite.prefab"
}, },
"7de03a80-4457-438d-95a7-3e7cdffd6086": { "7de03a80-4457-438d-95a7-3e7cdffd6086": {
"asset": 1599374686802, "asset": 1599374686802,
"meta": 1611281931899, "meta": 1611284422386,
"relativePath": "prefab/tiledmap.prefab" "relativePath": "prefab/tiledmap.prefab"
}, },
"0e42ba95-1fa1-46aa-b2cf-143cd1bcee2c": { "0e42ba95-1fa1-46aa-b2cf-143cd1bcee2c": {
"asset": 1599374686806, "asset": 1599374686806,
"meta": 1611281931904, "meta": 1611284422409,
"relativePath": "prefab/tiledtile.prefab" "relativePath": "prefab/tiledtile.prefab"
}, },
"0d784963-d024-4ea6-a7db-03be0ad63010": { "0d784963-d024-4ea6-a7db-03be0ad63010": {
"asset": 1599374686808, "asset": 1599374686808,
"meta": 1611281931908, "meta": 1611284422414,
"relativePath": "prefab/toggle.prefab" "relativePath": "prefab/toggle.prefab"
}, },
"bf0a434c-84dd-4a8e-a08a-7a36f180cc75": { "bf0a434c-84dd-4a8e-a08a-7a36f180cc75": {
"asset": 1599374686810, "asset": 1599374686810,
"meta": 1611281931911, "meta": 1611284422418,
"relativePath": "prefab/toggleContainer.prefab" "relativePath": "prefab/toggleContainer.prefab"
}, },
"d1b8be49-b0a0-435c-83b7-552bed4bbe35": { "d1b8be49-b0a0-435c-83b7-552bed4bbe35": {
"asset": 1599374686812, "asset": 1599374686812,
"meta": 1611281931916, "meta": 1611284422421,
"relativePath": "prefab/toggleGroup.prefab" "relativePath": "prefab/toggleGroup.prefab"
}, },
"232d2782-c4bd-4bb4-9e01-909f03d6d3b9": { "232d2782-c4bd-4bb4-9e01-909f03d6d3b9": {
"asset": 1599374686813, "asset": 1599374686813,
"meta": 1611281931917, "meta": 1611284422427,
"relativePath": "prefab/videoplayer.prefab" "relativePath": "prefab/videoplayer.prefab"
}, },
"8c5001fd-07ee-4a4b-a8a0-63e15195e94d": { "8c5001fd-07ee-4a4b-a8a0-63e15195e94d": {
"asset": 1599374686827, "asset": 1599374686827,
"meta": 1611281931930, "meta": 1611284422431,
"relativePath": "prefab/webview.prefab" "relativePath": "prefab/webview.prefab"
}, },
"d8afc78c-4eac-4a9f-83dd-67bc70344d33": { "d8afc78c-4eac-4a9f-83dd-67bc70344d33": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931918, "meta": 1611284422429,
"relativePath": "resources" "relativePath": "resources"
}, },
"294c1663-4adf-4a1e-a795-53808011a38a": { "294c1663-4adf-4a1e-a795-53808011a38a": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931919, "meta": 1611284422430,
"relativePath": "resources/effects" "relativePath": "resources/effects"
}, },
"30682f87-9f0d-4f17-8a44-72863791461b": { "30682f87-9f0d-4f17-8a44-72863791461b": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931929, "meta": 1611284422445,
"relativePath": "resources/effects/builtin-2d-graphics.effect" "relativePath": "resources/effects/builtin-2d-graphics.effect"
}, },
"144c3297-af63-49e8-b8ef-1cfa29b3be28": { "144c3297-af63-49e8-b8ef-1cfa29b3be28": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931938, "meta": 1611284422454,
"relativePath": "resources/effects/builtin-2d-gray-sprite.effect" "relativePath": "resources/effects/builtin-2d-gray-sprite.effect"
}, },
"f18742d7-56d2-4eb5-ae49-2d9d710b37c8": { "f18742d7-56d2-4eb5-ae49-2d9d710b37c8": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931952, "meta": 1611284422467,
"relativePath": "resources/effects/builtin-2d-label.effect" "relativePath": "resources/effects/builtin-2d-label.effect"
}, },
"0e93aeaa-0b53-4e40-b8e0-6268b4e07bd7": { "0e93aeaa-0b53-4e40-b8e0-6268b4e07bd7": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931966, "meta": 1611284422480,
"relativePath": "resources/effects/builtin-2d-spine.effect" "relativePath": "resources/effects/builtin-2d-spine.effect"
}, },
"2874f8dd-416c-4440-81b7-555975426e93": { "2874f8dd-416c-4440-81b7-555975426e93": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281931980, "meta": 1611284422487,
"relativePath": "resources/effects/builtin-2d-sprite.effect" "relativePath": "resources/effects/builtin-2d-sprite.effect"
}, },
"829a282c-b049-4019-bd38-5ace8d8a6417": { "829a282c-b049-4019-bd38-5ace8d8a6417": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281932104, "meta": 1611284422671,
"relativePath": "resources/effects/builtin-3d-particle.effect" "relativePath": "resources/effects/builtin-3d-particle.effect"
}, },
"2a7c0036-e0b3-4fe1-8998-89a54b8a2bec": { "2a7c0036-e0b3-4fe1-8998-89a54b8a2bec": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281932122, "meta": 1611284422705,
"relativePath": "resources/effects/builtin-3d-trail.effect" "relativePath": "resources/effects/builtin-3d-trail.effect"
}, },
"c0040c95-c57f-49cd-9cbc-12316b73d0d4": { "c0040c95-c57f-49cd-9cbc-12316b73d0d4": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281932127, "meta": 1611284422715,
"relativePath": "resources/effects/builtin-clear-stencil.effect" "relativePath": "resources/effects/builtin-clear-stencil.effect"
}, },
"6d91e591-4ce0-465c-809f-610ec95019c6": { "6d91e591-4ce0-465c-809f-610ec95019c6": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281932145, "meta": 1611284422738,
"relativePath": "resources/effects/builtin-unlit.effect" "relativePath": "resources/effects/builtin-unlit.effect"
}, },
"bbee2217-c261-49bd-a8ce-708d6bcc3500": { "bbee2217-c261-49bd-a8ce-708d6bcc3500": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281932146, "meta": 1611284422740,
"relativePath": "resources/materials" "relativePath": "resources/materials"
}, },
"6f801092-0c37-4f30-89ef-c8d960825b36": { "6f801092-0c37-4f30-89ef-c8d960825b36": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281932239, "meta": 1611284422883,
"relativePath": "resources/materials/builtin-2d-base.mtl" "relativePath": "resources/materials/builtin-2d-base.mtl"
}, },
"a153945d-2511-4c14-be7b-05d242f47d57": { "a153945d-2511-4c14-be7b-05d242f47d57": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281932240, "meta": 1611284422884,
"relativePath": "resources/materials/builtin-2d-graphics.mtl" "relativePath": "resources/materials/builtin-2d-graphics.mtl"
}, },
"3a7bb79f-32fd-422e-ada2-96f518fed422": { "3a7bb79f-32fd-422e-ada2-96f518fed422": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281932242, "meta": 1611284422886,
"relativePath": "resources/materials/builtin-2d-gray-sprite.mtl" "relativePath": "resources/materials/builtin-2d-gray-sprite.mtl"
}, },
"e02d87d4-e599-4d16-8001-e14891ac6506": { "e02d87d4-e599-4d16-8001-e14891ac6506": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281932241, "meta": 1611284422888,
"relativePath": "resources/materials/builtin-2d-label.mtl" "relativePath": "resources/materials/builtin-2d-label.mtl"
}, },
"7afd064b-113f-480e-b793-8817d19f63c3": { "7afd064b-113f-480e-b793-8817d19f63c3": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281932242, "meta": 1611284422893,
"relativePath": "resources/materials/builtin-2d-spine.mtl" "relativePath": "resources/materials/builtin-2d-spine.mtl"
}, },
"eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432": { "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281932243, "meta": 1611284422894,
"relativePath": "resources/materials/builtin-2d-sprite.mtl" "relativePath": "resources/materials/builtin-2d-sprite.mtl"
}, },
"432fa09c-cf03-4cff-a186-982604408a07": { "432fa09c-cf03-4cff-a186-982604408a07": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281932244, "meta": 1611284422896,
"relativePath": "resources/materials/builtin-3d-particle.mtl" "relativePath": "resources/materials/builtin-3d-particle.mtl"
}, },
"466d4f9b-e5f4-4ea8-85d5-3c6e9a65658a": { "466d4f9b-e5f4-4ea8-85d5-3c6e9a65658a": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281932245, "meta": 1611284422898,
"relativePath": "resources/materials/builtin-3d-trail.mtl" "relativePath": "resources/materials/builtin-3d-trail.mtl"
}, },
"cf7e0bb8-a81c-44a9-ad79-d28d43991032": { "cf7e0bb8-a81c-44a9-ad79-d28d43991032": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281932245, "meta": 1611284422900,
"relativePath": "resources/materials/builtin-clear-stencil.mtl" "relativePath": "resources/materials/builtin-clear-stencil.mtl"
}, },
"2a296057-247c-4a1c-bbeb-0548b6c98650": { "2a296057-247c-4a1c-bbeb-0548b6c98650": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281932246, "meta": 1611284422901,
"relativePath": "resources/materials/builtin-unlit.mtl" "relativePath": "resources/materials/builtin-unlit.mtl"
}, },
"954fec8b-cd16-4bb9-a3b7-7719660e7558": { "954fec8b-cd16-4bb9-a3b7-7719660e7558": {
"asset": 1592807258000, "asset": 1592807258000,
"meta": 1611281934168, "meta": 1611284425342,
"relativePath": "model/primitives.fbx" "relativePath": "model/primitives.fbx"
}, },
"b3e401a5-91fc-4a28-87e3-0b4063ba359c": { "b3e401a5-91fc-4a28-87e3-0b4063ba359c": {
...@@ -515,8 +515,8 @@ ...@@ -515,8 +515,8 @@
"relativePath": "mz_003/scene" "relativePath": "mz_003/scene"
}, },
"c3f18614-c716-4f1f-899f-09f073ac6c43": { "c3f18614-c716-4f1f-899f-09f073ac6c43": {
"asset": 1611191670617, "asset": 1611285212508,
"meta": 1611192553231, "meta": 1611285212513,
"relativePath": "mz_003/scene/scene.fire" "relativePath": "mz_003/scene/scene.fire"
}, },
"b5c6439b-d99b-428f-9454-22f767de4a02": { "b5c6439b-d99b-428f-9454-22f767de4a02": {
...@@ -589,14 +589,9 @@ ...@@ -589,14 +589,9 @@
"meta": 1611192553847, "meta": 1611192553847,
"relativePath": "mz_003/texture/circle_bg_small.png" "relativePath": "mz_003/texture/circle_bg_small.png"
}, },
"5ac8bd7b-38a3-4969-ac2f-8aeef90c885e": {
"asset": 1611191670619,
"meta": 1611192553618,
"relativePath": "mz_003/script/util.js"
},
"4fd428f3-cf22-467b-8ae4-09dfc1fa94c2": { "4fd428f3-cf22-467b-8ae4-09dfc1fa94c2": {
"asset": 1611191670614, "asset": 1611282436124,
"meta": 1611192552875, "meta": 1611283621750,
"relativePath": "mz_003/audio" "relativePath": "mz_003/audio"
}, },
"d36dd89b-a002-4dc6-8383-ea534341830e": { "d36dd89b-a002-4dc6-8383-ea534341830e": {
...@@ -619,9 +614,29 @@ ...@@ -619,9 +614,29 @@
"meta": 1611282436757, "meta": 1611282436757,
"relativePath": "mz_003/audio/good_job.mp3" "relativePath": "mz_003/audio/good_job.mp3"
}, },
"ab873eda-ffb5-46e2-8e57-b0892030d3df": {
"asset": 1611215831689,
"meta": 1611284493075,
"relativePath": "mz_003/texture/bg_sahua.png"
},
"5ac8bd7b-38a3-4969-ac2f-8aeef90c885e": {
"asset": 1611284930875,
"meta": 1611284966378,
"relativePath": "mz_003/script/util.js"
},
"c28e2c01-0a4a-4b28-b44e-7cf7c68f0ccf": {
"asset": 1611215831685,
"meta": 1611285136220,
"relativePath": "mz_003/audio/end.mp3"
},
"335fe6b8-2b52-45a9-a9c9-cb3b54014251": { "335fe6b8-2b52-45a9-a9c9-cb3b54014251": {
"asset": 1611282898096, "asset": 1611286149391,
"meta": 1611282901132, "meta": 1611286150799,
"relativePath": "mz_003/script/scene.js" "relativePath": "mz_003/script/scene.js"
},
"5e66e21b-b845-488b-8dda-1bcb83c5262d": {
"asset": 1611286138979,
"meta": 1611286150966,
"relativePath": "mz_003/script/runtime.js"
} }
} }
\ No newline at end of file
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
"main": true, "main": true,
"url": "app://editor/index.html", "url": "app://editor/index.html",
"windowType": "dockable", "windowType": "dockable",
"x": -1641, "x": -2385,
"y": -304, "y": -289,
"width": 1275, "width": 1275,
"height": 841, "height": 841,
"layout": { "layout": {
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
"3fjtSSnnNNBb9Db9xNkttL", "3fjtSSnnNNBb9Db9xNkttL",
"5aAwYeWN5GlpJJBm6cMCUR", "5aAwYeWN5GlpJJBm6cMCUR",
"2daSEONptJQLYU9aq8TOd+", "2daSEONptJQLYU9aq8TOd+",
"01Xreos21IrrsAvhvN44JE" "01Xreos21IrrsAvhvN44JE",
"2dxuR150xHc7HMMzQsLpMh"
] ]
} }
...@@ -15,6 +15,9 @@ ...@@ -15,6 +15,9 @@
"_children": [ "_children": [
{ {
"__id__": 2 "__id__": 2
},
{
"__id__": 59
} }
], ],
"_active": false, "_active": false,
...@@ -89,17 +92,14 @@ ...@@ -89,17 +92,14 @@
], ],
"_active": true, "_active": true,
"_components": [ "_components": [
{
"__id__": 54
},
{
"__id__": 55
},
{ {
"__id__": 56 "__id__": 56
}, },
{ {
"__id__": 57 "__id__": 57
},
{
"__id__": 58
} }
], ],
"_prefab": null, "_prefab": null,
...@@ -1891,12 +1891,15 @@ ...@@ -1891,12 +1891,15 @@
}, },
{ {
"__id__": 51 "__id__": 51
},
{
"__id__": 53
} }
], ],
"_active": false, "_active": false,
"_components": [ "_components": [
{ {
"__id__": 53 "__id__": 55
} }
], ],
"_prefab": null, "_prefab": null,
...@@ -2215,6 +2218,86 @@ ...@@ -2215,6 +2218,86 @@
"preload": true, "preload": true,
"_id": "e4FqxYDQ5DMavcb/jH9rzz" "_id": "e4FqxYDQ5DMavcb/jH9rzz"
}, },
{
"__type__": "cc.Node",
"_name": "good_job",
"_objFlags": 0,
"_parent": {
"__id__": 46
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 54
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 0,
"height": 0
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "b03Nppl/VKso2zq2OL3kda"
},
{
"__type__": "cc.AudioSource",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 53
},
"_enabled": true,
"_clip": {
"__uuid__": "067e45c4-be38-4fd0-8274-0f92703002ad"
},
"_volume": 1,
"_mute": false,
"_loop": false,
"playOnLoad": false,
"preload": false,
"_id": "bbofmPuftAVKY+pqncTW9+"
},
{ {
"__type__": "cc.Sprite", "__type__": "cc.Sprite",
"_name": "", "_name": "",
...@@ -2304,71 +2387,450 @@ ...@@ -2304,71 +2387,450 @@
"_id": "28v7Et3UdB3JZRlTOtLFi9" "_id": "28v7Et3UdB3JZRlTOtLFi9"
}, },
{ {
"__type__": "cc.Button", "__type__": "cc.Node",
"_name": "", "_name": "RibbonNodeBase",
"_objFlags": 0, "_objFlags": 0,
"node": { "_parent": {
"__id__": 2 "__id__": 1
}, },
"_enabled": true, "_children": [
"_normalMaterial": null, {
"_grayMaterial": null, "__id__": 60
"duration": 0.1, },
"zoomScale": 1.2, {
"clickEvents": [], "__id__": 62
"_N$interactable": true, },
"_N$enableAutoGrayEffect": false, {
"_N$transition": 0, "__id__": 64
"transition": 0, },
"_N$normalColor": { {
"__id__": 66
}
],
"_active": true,
"_components": [],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color", "__type__": "cc.Color",
"r": 255, "r": 255,
"g": 255, "g": 255,
"b": 255, "b": 255,
"a": 255 "a": 255
}, },
"_N$pressedColor": { "_contentSize": {
"__type__": "cc.Size",
"width": 0,
"height": 0
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "abKXvlMl9MLJXGAhTbrllV"
},
{
"__type__": "cc.Node",
"_name": "sahua",
"_objFlags": 0,
"_parent": {
"__id__": 59
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 61
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color", "__type__": "cc.Color",
"r": 211, "r": 16,
"g": 211, "g": 167,
"b": 211, "b": 219,
"a": 255 "a": 255
}, },
"pressedColor": { "_contentSize": {
"__type__": "cc.Size",
"width": 36,
"height": 24
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
-206.8,
-188.973,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "cbo/P1vN1GMaGPst/uBwdV"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 60
},
"_enabled": true,
"_materials": [
{
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
}
],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": {
"__uuid__": "0735e431-fa61-49b9-a3b4-8927ff5ce7f4"
},
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "e3iQhXncdP37Wf2N0MhHhr"
},
{
"__type__": "cc.Node",
"_name": "sahua",
"_objFlags": 0,
"_parent": {
"__id__": 59
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 63
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color", "__type__": "cc.Color",
"r": 211, "r": 0,
"g": 211, "g": 255,
"b": 211, "b": 0,
"a": 255 "a": 255
}, },
"_N$hoverColor": { "_contentSize": {
"__type__": "cc.Size",
"width": 36,
"height": 24
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
-206.8,
-188.973,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "a0dpvCWhtB+rS9BGbu73Up"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 62
},
"_enabled": true,
"_materials": [
{
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
}
],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": {
"__uuid__": "0735e431-fa61-49b9-a3b4-8927ff5ce7f4"
},
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "b4Fj2EaepNp4tRhYija9rM"
},
{
"__type__": "cc.Node",
"_name": "sahua",
"_objFlags": 0,
"_parent": {
"__id__": 59
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 65
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color", "__type__": "cc.Color",
"r": 255, "r": 0,
"g": 255, "g": 0,
"b": 255, "b": 255,
"a": 255 "a": 255
}, },
"hoverColor": { "_contentSize": {
"__type__": "cc.Size",
"width": 36,
"height": 24
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
-206.8,
-188.973,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "e5KPfOTCxHkKYR6nJm4UMd"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 64
},
"_enabled": true,
"_materials": [
{
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
}
],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": {
"__uuid__": "0735e431-fa61-49b9-a3b4-8927ff5ce7f4"
},
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "55rPOIigxP1J/a+4mCtvOq"
},
{
"__type__": "cc.Node",
"_name": "sahua",
"_objFlags": 0,
"_parent": {
"__id__": 59
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 67
}
],
"_prefab": null,
"_opacity": 255,
"_color": {
"__type__": "cc.Color", "__type__": "cc.Color",
"r": 255, "r": 255,
"g": 255, "g": 0,
"b": 255, "b": 255,
"a": 255 "a": 255
}, },
"_N$disabledColor": { "_contentSize": {
"__type__": "cc.Color", "__type__": "cc.Size",
"r": 124, "width": 36,
"g": 124, "height": 24
"b": 124,
"a": 255
}, },
"_N$normalSprite": null, "_anchorPoint": {
"_N$pressedSprite": null, "__type__": "cc.Vec2",
"pressedSprite": null, "x": 0.5,
"_N$hoverSprite": null, "y": 0.5
"hoverSprite": null, },
"_N$disabledSprite": null, "_trs": {
"_N$target": null, "__type__": "TypedArray",
"_id": "2epwvLwn5JJZdxF95DIVhW" "ctor": "Float64Array",
"array": [
-206.8,
-188.973,
0,
0,
0,
0,
1,
1,
1,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": "f7+eEkJf5P8rVS8RYOdYtF"
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 66
},
"_enabled": true,
"_materials": [
{
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
}
],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": {
"__uuid__": "0735e431-fa61-49b9-a3b4-8927ff5ce7f4"
},
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": null,
"_id": "43uRcDj/JLZ5GAFgBSEPYc"
} }
] ]
\ No newline at end of file
{"version":"1.0.8","stats":{"/Users/limingzhe/Documents/workspace/pro_hw/pro_cocos/cc_mz_003/play/temp/quick-scripts/src/__qc_index__.js":"2021-01-22T02:18:54.598Z","/Users/limingzhe/Documents/workspace/pro_hw/pro_cocos/cc_mz_003/play/temp/quick-scripts/src/assets/mz_003/script/util.js":"2021-01-22T02:18:54.575Z","/Users/limingzhe/Documents/workspace/pro_hw/pro_cocos/cc_mz_003/play/temp/quick-scripts/src/assets/mz_003/script/scene.js":"2021-01-22T02:18:54.574Z","/Users/limingzhe/Documents/workspace/pro_hw/pro_cocos/cc_mz_003/play/temp/quick-scripts/src/assets/mz_003/prefab/bgBottom.js":"2021-01-22T02:18:54.577Z"}} {"version":"1.0.8","stats":{"/Users/limingzhe/Documents/workspace/pro_hw/pro_cocos/cc_mz_003/play/temp/quick-scripts/src/__qc_index__.js":"2021-01-22T03:00:25.521Z","/Users/limingzhe/Documents/workspace/pro_hw/pro_cocos/cc_mz_003/play/temp/quick-scripts/src/assets/mz_003/script/util.js":"2021-01-22T03:00:25.500Z","/Users/limingzhe/Documents/workspace/pro_hw/pro_cocos/cc_mz_003/play/temp/quick-scripts/src/assets/mz_003/script/scene.js":"2021-01-22T03:00:25.499Z","/Users/limingzhe/Documents/workspace/pro_hw/pro_cocos/cc_mz_003/play/temp/quick-scripts/src/assets/mz_003/prefab/bgBottom.js":"2021-01-22T03:00:25.501Z"}}
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
function __define (exports, require, module) { function __define (exports, require, module) {
if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);} if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}
require('./assets/mz_003/prefab/bgBottom'); require('./assets/mz_003/prefab/bgBottom');
require('./assets/mz_003/script/runtime');
require('./assets/mz_003/script/scene'); require('./assets/mz_003/script/scene');
require('./assets/mz_003/script/util'); require('./assets/mz_003/script/util');
......
(function () { (function () {
var scripts = [{"deps":{"./assets/mz_003/script/scene":2,"./assets/mz_003/prefab/bgBottom":3,"./assets/mz_003/script/util":1},"path":"preview-scripts/__qc_index__.js"},{"deps":{},"path":"preview-scripts/assets/mz_003/script/util.js"},{"deps":{"./util":1},"path":"preview-scripts/assets/mz_003/script/scene.js"},{"deps":{"../script/util":1},"path":"preview-scripts/assets/mz_003/prefab/bgBottom.js"}]; var scripts = [{"deps":{"./assets/mz_003/script/runtime":4,"./assets/mz_003/prefab/bgBottom":3,"./assets/mz_003/script/util":1,"./assets/mz_003/script/scene":2},"path":"preview-scripts/__qc_index__.js"},{"deps":{},"path":"preview-scripts/assets/mz_003/script/util.js"},{"deps":{"./util":1},"path":"preview-scripts/assets/mz_003/script/scene.js"},{"deps":{"../script/util":1},"path":"preview-scripts/assets/mz_003/prefab/bgBottom.js"},{"deps":{},"path":"preview-scripts/assets/mz_003/script/runtime.js"}];
var entries = ["preview-scripts/__qc_index__.js"]; var entries = ["preview-scripts/__qc_index__.js"];
var bundleScript = 'preview-scripts/__qc_bundle__.js'; var bundleScript = 'preview-scripts/__qc_bundle__.js';
......
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/mz_003/script/runtime.js';
var __require = nodeEnv ? function (request) {
return cc.require(request);
} : function (request) {
return __quick_compile_project__.require(request, __filename);
};
function __define (exports, require, module) {
if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
cc._RF.push(module, '5e66eIbuEVIi43aG8uDxSYt', 'runtime');
// mz_003/script/runtime.js
"use strict";
/**
* Copyright (c) 2014-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
!function (global) {
"use strict";
var Op = Object.prototype;
var hasOwn = Op.hasOwnProperty;
var undefined; // More compressible than void 0.
var $Symbol = typeof Symbol === "function" ? Symbol : {};
var iteratorSymbol = $Symbol.iterator || "@@iterator";
var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
var inModule = typeof module === "object";
var runtime = global.regeneratorRuntime;
if (runtime) {
if (inModule) {
// If regeneratorRuntime is defined globally and we're in a module,
// make the exports object identical to regeneratorRuntime.
module.exports = runtime;
} // Don't bother evaluating the rest of this file if the runtime was
// already defined globally.
return;
} // Define the runtime globally (as expected by generated code) as either
// module.exports (if we're in a module) or a new, empty object.
runtime = global.regeneratorRuntime = inModule ? module.exports : {};
function wrap(innerFn, outerFn, self, tryLocsList) {
// If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
var generator = Object.create(protoGenerator.prototype);
var context = new Context(tryLocsList || []); // The ._invoke method unifies the implementations of the .next,
// .throw, and .return methods.
generator._invoke = makeInvokeMethod(innerFn, self, context);
return generator;
}
runtime.wrap = wrap; // Try/catch helper to minimize deoptimizations. Returns a completion
// record like context.tryEntries[i].completion. This interface could
// have been (and was previously) designed to take a closure to be
// invoked without arguments, but in all the cases we care about we
// already have an existing method we want to call, so there's no need
// to create a new function object. We can even get away with assuming
// the method takes exactly one argument, since that happens to be true
// in every case, so we don't have to touch the arguments object. The
// only additional allocation required is the completion record, which
// has a stable shape and so hopefully should be cheap to allocate.
function tryCatch(fn, obj, arg) {
try {
return {
type: "normal",
arg: fn.call(obj, arg)
};
} catch (err) {
return {
type: "throw",
arg: err
};
}
}
var GenStateSuspendedStart = "suspendedStart";
var GenStateSuspendedYield = "suspendedYield";
var GenStateExecuting = "executing";
var GenStateCompleted = "completed"; // Returning this object from the innerFn has the same effect as
// breaking out of the dispatch switch statement.
var ContinueSentinel = {}; // Dummy constructor functions that we use as the .constructor and
// .constructor.prototype properties for functions that return Generator
// objects. For full spec compliance, you may wish to configure your
// minifier not to mangle the names of these two functions.
function Generator() {}
function GeneratorFunction() {}
function GeneratorFunctionPrototype() {} // This is a polyfill for %IteratorPrototype% for environments that
// don't natively support it.
var IteratorPrototype = {};
IteratorPrototype[iteratorSymbol] = function () {
return this;
};
var getProto = Object.getPrototypeOf;
var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
// This environment has a native %IteratorPrototype%; use it instead
// of the polyfill.
IteratorPrototype = NativeIteratorPrototype;
}
var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
GeneratorFunctionPrototype.constructor = GeneratorFunction;
GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction"; // Helper for defining the .next, .throw, and .return methods of the
// Iterator interface in terms of a single ._invoke method.
function defineIteratorMethods(prototype) {
["next", "throw", "return"].forEach(function (method) {
prototype[method] = function (arg) {
return this._invoke(method, arg);
};
});
}
runtime.isGeneratorFunction = function (genFun) {
var ctor = typeof genFun === "function" && genFun.constructor;
return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can
// do is to check its .name property.
(ctor.displayName || ctor.name) === "GeneratorFunction" : false;
};
runtime.mark = function (genFun) {
if (Object.setPrototypeOf) {
Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
} else {
genFun.__proto__ = GeneratorFunctionPrototype;
if (!(toStringTagSymbol in genFun)) {
genFun[toStringTagSymbol] = "GeneratorFunction";
}
}
genFun.prototype = Object.create(Gp);
return genFun;
}; // Within the body of any async function, `await x` is transformed to
// `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
// `hasOwn.call(value, "__await")` to determine if the yielded value is
// meant to be awaited.
runtime.awrap = function (arg) {
return {
__await: arg
};
};
function AsyncIterator(generator) {
function invoke(method, arg, resolve, reject) {
var record = tryCatch(generator[method], generator, arg);
if (record.type === "throw") {
reject(record.arg);
} else {
var result = record.arg;
var value = result.value;
if (value && typeof value === "object" && hasOwn.call(value, "__await")) {
return Promise.resolve(value.__await).then(function (value) {
invoke("next", value, resolve, reject);
}, function (err) {
invoke("throw", err, resolve, reject);
});
}
return Promise.resolve(value).then(function (unwrapped) {
// When a yielded Promise is resolved, its final value becomes
// the .value of the Promise<{value,done}> result for the
// current iteration. If the Promise is rejected, however, the
// result for this iteration will be rejected with the same
// reason. Note that rejections of yielded Promises are not
// thrown back into the generator function, as is the case
// when an awaited Promise is rejected. This difference in
// behavior between yield and await is important, because it
// allows the consumer to decide what to do with the yielded
// rejection (swallow it and continue, manually .throw it back
// into the generator, abandon iteration, whatever). With
// await, by contrast, there is no opportunity to examine the
// rejection reason outside the generator function, so the
// only option is to throw it from the await expression, and
// let the generator function handle the exception.
result.value = unwrapped;
resolve(result);
}, reject);
}
}
var previousPromise;
function enqueue(method, arg) {
function callInvokeWithMethodAndArg() {
return new Promise(function (resolve, reject) {
invoke(method, arg, resolve, reject);
});
}
return previousPromise = // If enqueue has been called before, then we want to wait until
// all previous Promises have been resolved before calling invoke,
// so that results are always delivered in the correct order. If
// enqueue has not been called before, then it is important to
// call invoke immediately, without waiting on a callback to fire,
// so that the async generator function has the opportunity to do
// any necessary setup in a predictable way. This predictability
// is why the Promise constructor synchronously invokes its
// executor callback, and why async functions synchronously
// execute code before the first await. Since we implement simple
// async functions in terms of async generators, it is especially
// important to get this right, even though it requires care.
previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later
// invocations of the iterator.
callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
} // Define the unified helper method that is used to implement .next,
// .throw, and .return (see defineIteratorMethods).
this._invoke = enqueue;
}
defineIteratorMethods(AsyncIterator.prototype);
AsyncIterator.prototype[asyncIteratorSymbol] = function () {
return this;
};
runtime.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of
// AsyncIterator objects; they just return a Promise for the value of
// the final result produced by the iterator.
runtime.async = function (innerFn, outerFn, self, tryLocsList) {
var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList));
return runtime.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator.
: iter.next().then(function (result) {
return result.done ? result.value : iter.next();
});
};
function makeInvokeMethod(innerFn, self, context) {
var state = GenStateSuspendedStart;
return function invoke(method, arg) {
if (state === GenStateExecuting) {
throw new Error("Generator is already running");
}
if (state === GenStateCompleted) {
if (method === "throw") {
throw arg;
} // Be forgiving, per 25.3.3.3.3 of the spec:
// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
return doneResult();
}
context.method = method;
context.arg = arg;
while (true) {
var delegate = context.delegate;
if (delegate) {
var delegateResult = maybeInvokeDelegate(delegate, context);
if (delegateResult) {
if (delegateResult === ContinueSentinel) continue;
return delegateResult;
}
}
if (context.method === "next") {
// Setting context._sent for legacy support of Babel's
// function.sent implementation.
context.sent = context._sent = context.arg;
} else if (context.method === "throw") {
if (state === GenStateSuspendedStart) {
state = GenStateCompleted;
throw context.arg;
}
context.dispatchException(context.arg);
} else if (context.method === "return") {
context.abrupt("return", context.arg);
}
state = GenStateExecuting;
var record = tryCatch(innerFn, self, context);
if (record.type === "normal") {
// If an exception is thrown from innerFn, we leave state ===
// GenStateExecuting and loop back for another invocation.
state = context.done ? GenStateCompleted : GenStateSuspendedYield;
if (record.arg === ContinueSentinel) {
continue;
}
return {
value: record.arg,
done: context.done
};
} else if (record.type === "throw") {
state = GenStateCompleted; // Dispatch the exception by looping back around to the
// context.dispatchException(context.arg) call above.
context.method = "throw";
context.arg = record.arg;
}
}
};
} // Call delegate.iterator[context.method](context.arg) and handle the
// result, either by returning a { value, done } result from the
// delegate iterator, or by modifying context.method and context.arg,
// setting context.delegate to null, and returning the ContinueSentinel.
function maybeInvokeDelegate(delegate, context) {
var method = delegate.iterator[context.method];
if (method === undefined) {
// A .throw or .return when the delegate iterator has no .throw
// method always terminates the yield* loop.
context.delegate = null;
if (context.method === "throw") {
if (delegate.iterator["return"]) {
// If the delegate iterator has a return method, give it a
// chance to clean up.
context.method = "return";
context.arg = undefined;
maybeInvokeDelegate(delegate, context);
if (context.method === "throw") {
// If maybeInvokeDelegate(context) changed context.method from
// "return" to "throw", let that override the TypeError below.
return ContinueSentinel;
}
}
context.method = "throw";
context.arg = new TypeError("The iterator does not provide a 'throw' method");
}
return ContinueSentinel;
}
var record = tryCatch(method, delegate.iterator, context.arg);
if (record.type === "throw") {
context.method = "throw";
context.arg = record.arg;
context.delegate = null;
return ContinueSentinel;
}
var info = record.arg;
if (!info) {
context.method = "throw";
context.arg = new TypeError("iterator result is not an object");
context.delegate = null;
return ContinueSentinel;
}
if (info.done) {
// Assign the result of the finished delegate to the temporary
// variable specified by delegate.resultName (see delegateYield).
context[delegate.resultName] = info.value; // Resume execution at the desired location (see delegateYield).
context.next = delegate.nextLoc; // If context.method was "throw" but the delegate handled the
// exception, let the outer generator proceed normally. If
// context.method was "next", forget context.arg since it has been
// "consumed" by the delegate iterator. If context.method was
// "return", allow the original .return call to continue in the
// outer generator.
if (context.method !== "return") {
context.method = "next";
context.arg = undefined;
}
} else {
// Re-yield the result returned by the delegate method.
return info;
} // The delegate iterator is finished, so forget it and continue with
// the outer generator.
context.delegate = null;
return ContinueSentinel;
} // Define Generator.prototype.{next,throw,return} in terms of the
// unified ._invoke helper method.
defineIteratorMethods(Gp);
Gp[toStringTagSymbol] = "Generator"; // A Generator should always return itself as the iterator object when the
// @@iterator function is called on it. Some browsers' implementations of the
// iterator prototype chain incorrectly implement this, causing the Generator
// object to not be returned from this call. This ensures that doesn't happen.
// See https://github.com/facebook/regenerator/issues/274 for more details.
Gp[iteratorSymbol] = function () {
return this;
};
Gp.toString = function () {
return "[object Generator]";
};
function pushTryEntry(locs) {
var entry = {
tryLoc: locs[0]
};
if (1 in locs) {
entry.catchLoc = locs[1];
}
if (2 in locs) {
entry.finallyLoc = locs[2];
entry.afterLoc = locs[3];
}
this.tryEntries.push(entry);
}
function resetTryEntry(entry) {
var record = entry.completion || {};
record.type = "normal";
delete record.arg;
entry.completion = record;
}
function Context(tryLocsList) {
// The root entry object (effectively a try statement without a catch
// or a finally block) gives us a place to store values thrown from
// locations where there is no enclosing try statement.
this.tryEntries = [{
tryLoc: "root"
}];
tryLocsList.forEach(pushTryEntry, this);
this.reset(true);
}
runtime.keys = function (object) {
var keys = [];
for (var key in object) {
keys.push(key);
}
keys.reverse(); // Rather than returning an object with a next method, we keep
// things simple and return the next function itself.
return function next() {
while (keys.length) {
var key = keys.pop();
if (key in object) {
next.value = key;
next.done = false;
return next;
}
} // To avoid creating an additional object, we just hang the .value
// and .done properties off the next function object itself. This
// also ensures that the minifier will not anonymize the function.
next.done = true;
return next;
};
};
function values(iterable) {
if (iterable) {
var iteratorMethod = iterable[iteratorSymbol];
if (iteratorMethod) {
return iteratorMethod.call(iterable);
}
if (typeof iterable.next === "function") {
return iterable;
}
if (!isNaN(iterable.length)) {
var i = -1,
next = function next() {
while (++i < iterable.length) {
if (hasOwn.call(iterable, i)) {
next.value = iterable[i];
next.done = false;
return next;
}
}
next.value = undefined;
next.done = true;
return next;
};
return next.next = next;
}
} // Return an iterator with no values.
return {
next: doneResult
};
}
runtime.values = values;
function doneResult() {
return {
value: undefined,
done: true
};
}
Context.prototype = {
constructor: Context,
reset: function reset(skipTempReset) {
this.prev = 0;
this.next = 0; // Resetting context._sent for legacy support of Babel's
// function.sent implementation.
this.sent = this._sent = undefined;
this.done = false;
this.delegate = null;
this.method = "next";
this.arg = undefined;
this.tryEntries.forEach(resetTryEntry);
if (!skipTempReset) {
for (var name in this) {
// Not sure about the optimal order of these conditions:
if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {
this[name] = undefined;
}
}
}
},
stop: function stop() {
this.done = true;
var rootEntry = this.tryEntries[0];
var rootRecord = rootEntry.completion;
if (rootRecord.type === "throw") {
throw rootRecord.arg;
}
return this.rval;
},
dispatchException: function dispatchException(exception) {
if (this.done) {
throw exception;
}
var context = this;
function handle(loc, caught) {
record.type = "throw";
record.arg = exception;
context.next = loc;
if (caught) {
// If the dispatched exception was caught by a catch block,
// then let that catch block handle the exception normally.
context.method = "next";
context.arg = undefined;
}
return !!caught;
}
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
var record = entry.completion;
if (entry.tryLoc === "root") {
// Exception thrown outside of any try block that could handle
// it, so set the completion value of the entire function to
// throw the exception.
return handle("end");
}
if (entry.tryLoc <= this.prev) {
var hasCatch = hasOwn.call(entry, "catchLoc");
var hasFinally = hasOwn.call(entry, "finallyLoc");
if (hasCatch && hasFinally) {
if (this.prev < entry.catchLoc) {
return handle(entry.catchLoc, true);
} else if (this.prev < entry.finallyLoc) {
return handle(entry.finallyLoc);
}
} else if (hasCatch) {
if (this.prev < entry.catchLoc) {
return handle(entry.catchLoc, true);
}
} else if (hasFinally) {
if (this.prev < entry.finallyLoc) {
return handle(entry.finallyLoc);
}
} else {
throw new Error("try statement without catch or finally");
}
}
}
},
abrupt: function abrupt(type, arg) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
var finallyEntry = entry;
break;
}
}
if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {
// Ignore the finally entry if control is not jumping to a
// location outside the try/catch block.
finallyEntry = null;
}
var record = finallyEntry ? finallyEntry.completion : {};
record.type = type;
record.arg = arg;
if (finallyEntry) {
this.method = "next";
this.next = finallyEntry.finallyLoc;
return ContinueSentinel;
}
return this.complete(record);
},
complete: function complete(record, afterLoc) {
if (record.type === "throw") {
throw record.arg;
}
if (record.type === "break" || record.type === "continue") {
this.next = record.arg;
} else if (record.type === "return") {
this.rval = this.arg = record.arg;
this.method = "return";
this.next = "end";
} else if (record.type === "normal" && afterLoc) {
this.next = afterLoc;
}
return ContinueSentinel;
},
finish: function finish(finallyLoc) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.finallyLoc === finallyLoc) {
this.complete(entry.completion, entry.afterLoc);
resetTryEntry(entry);
return ContinueSentinel;
}
}
},
"catch": function _catch(tryLoc) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.tryLoc === tryLoc) {
var record = entry.completion;
if (record.type === "throw") {
var thrown = record.arg;
resetTryEntry(entry);
}
return thrown;
}
} // The context.catch method must only be called with a location
// argument that corresponds to a known catch block.
throw new Error("illegal catch attempt");
},
delegateYield: function delegateYield(iterable, resultName, nextLoc) {
this.delegate = {
iterator: values(iterable),
resultName: resultName,
nextLoc: nextLoc
};
if (this.method === "next") {
// Deliberately forget the last sent value so that we don't
// accidentally pass it on to the delegate.
this.arg = undefined;
}
return ContinueSentinel;
}
};
}( // In sloppy mode, unbound `this` refers to the global object, fallback to
// Function constructor if we're in global strict mode. That is sadly a form
// of indirect eval which violates Content Security Policy.
function () {
return this;
}() || Function("return this")());
cc._RF.pop();
}
if (nodeEnv) {
__define(__module.exports, __require, __module);
}
else {
__quick_compile_project__.registerModuleFunc(__filename, function () {
__define(__module.exports, __require, __module);
});
}
})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9tel8wMDMvc2NyaXB0L3J1bnRpbWUuanMiXSwibmFtZXMiOlsiZ2xvYmFsIiwiT3AiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd24iLCJoYXNPd25Qcm9wZXJ0eSIsInVuZGVmaW5lZCIsIiRTeW1ib2wiLCJTeW1ib2wiLCJpdGVyYXRvclN5bWJvbCIsIml0ZXJhdG9yIiwiYXN5bmNJdGVyYXRvclN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZ1RhZ1N5bWJvbCIsInRvU3RyaW5nVGFnIiwiaW5Nb2R1bGUiLCJtb2R1bGUiLCJydW50aW1lIiwicmVnZW5lcmF0b3JSdW50aW1lIiwiZXhwb3J0cyIsIndyYXAiLCJpbm5lckZuIiwib3V0ZXJGbiIsInNlbGYiLCJ0cnlMb2NzTGlzdCIsInByb3RvR2VuZXJhdG9yIiwiR2VuZXJhdG9yIiwiZ2VuZXJhdG9yIiwiY3JlYXRlIiwiY29udGV4dCIsIkNvbnRleHQiLCJfaW52b2tlIiwibWFrZUludm9rZU1ldGhvZCIsInRyeUNhdGNoIiwiZm4iLCJvYmoiLCJhcmciLCJ0eXBlIiwiY2FsbCIsImVyciIsIkdlblN0YXRlU3VzcGVuZGVkU3RhcnQiLCJHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkIiwiR2VuU3RhdGVFeGVjdXRpbmciLCJHZW5TdGF0ZUNvbXBsZXRlZCIsIkNvbnRpbnVlU2VudGluZWwiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiSXRlcmF0b3JQcm90b3R5cGUiLCJnZXRQcm90byIsImdldFByb3RvdHlwZU9mIiwiTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUiLCJ2YWx1ZXMiLCJHcCIsImNvbnN0cnVjdG9yIiwiZGlzcGxheU5hbWUiLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwibWV0aG9kIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImdlbkZ1biIsImN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJfX2F3YWl0IiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZWNvcmQiLCJyZXN1bHQiLCJ2YWx1ZSIsIlByb21pc2UiLCJ0aGVuIiwidW53cmFwcGVkIiwicHJldmlvdXNQcm9taXNlIiwiZW5xdWV1ZSIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiYXN5bmMiLCJpdGVyIiwibmV4dCIsImRvbmUiLCJzdGF0ZSIsIkVycm9yIiwiZG9uZVJlc3VsdCIsImRlbGVnYXRlIiwiZGVsZWdhdGVSZXN1bHQiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJpbmZvIiwicmVzdWx0TmFtZSIsIm5leHRMb2MiLCJ0b1N0cmluZyIsInB1c2hUcnlFbnRyeSIsImxvY3MiLCJlbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0Iiwia2V5cyIsIm9iamVjdCIsImtleSIsInJldmVyc2UiLCJsZW5ndGgiLCJwb3AiLCJpdGVyYWJsZSIsIml0ZXJhdG9yTWV0aG9kIiwiaXNOYU4iLCJpIiwic2tpcFRlbXBSZXNldCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJyb290RW50cnkiLCJyb290UmVjb3JkIiwicnZhbCIsImV4Y2VwdGlvbiIsImhhbmRsZSIsImxvYyIsImNhdWdodCIsImhhc0NhdGNoIiwiaGFzRmluYWxseSIsImZpbmFsbHlFbnRyeSIsImNvbXBsZXRlIiwiZmluaXNoIiwidGhyb3duIiwiZGVsZWdhdGVZaWVsZCIsIkZ1bmN0aW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7QUFPQSxDQUFFLFVBQVVBLE1BQVYsRUFBa0I7QUFDaEI7O0FBRUEs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SCxDQTFzQkEsRUEyc0JHO0FBQ0E7QUFDQTtBQUNDLFlBQVk7QUFBRSxTQUFPLElBQVA7QUFBYSxDQUE1QixNQUFtQ2dHLFFBQVEsQ0FBQyxhQUFELENBQVIsRUE5c0J0QyxDQUFEIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbiEoZnVuY3Rpb24gKGdsb2JhbCkge1xuICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgdmFyIE9wID0gT2JqZWN0LnByb3RvdHlwZTtcbiAgICB2YXIgaGFzT3duID0gT3AuaGFzT3duUHJvcGVydHk7XG4gICAgdmFyIHVuZGVmaW5lZDsgLy8gTW9yZSBjb21wcmVzc2libGUgdGhhbiB2b2lkIDAuXG4gICAgdmFyICRTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgPyBTeW1ib2wgOiB7fTtcbiAgICB2YXIgaXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLml0ZXJhdG9yIHx8IFwiQEBpdGVyYXRvclwiO1xuICAgIHZhciBhc3luY0l0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5hc3luY0l0ZXJhdG9yIHx8IFwiQEBhc3luY0l0ZXJhdG9yXCI7XG4gICAgdmFyIHRvU3RyaW5nVGFnU3ltYm9sID0gJFN5bWJvbC50b1N0cmluZ1RhZyB8fCBcIkBAdG9TdHJpbmdUYWdcIjtcblxuICAgIHZhciBpbk1vZHVsZSA9IHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCI7XG4gICAgdmFyIHJ1bnRpbWUgPSBnbG9iYWwucmVnZW5lcmF0b3JSdW50aW1lO1xuICAgIGlmIChydW50aW1lKSB7XG4gICAgICAgIGlmIChpbk1vZHVsZSkge1xuICAgICAgICAgICAgLy8gSWYgcmVnZW5lcmF0b3JSdW50aW1lIGlzIGRlZmluZWQgZ2xvYmFsbHkgYW5kIHdlJ3JlIGluIGEgbW9kdWxlLFxuICAgICAgICAgICAgLy8gbWFrZSB0aGUgZXhwb3J0cyBvYmplY3QgaWRlbnRpY2FsIHRvIHJlZ2VuZXJhdG9yUnVudGltZS5cbiAgICAgICAgICAgIG1vZHVsZS5leHBvcnRzID0gcnVudGltZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBEb24ndCBib3RoZXIgZXZhbHVhdGluZyB0aGUgcmVzdCBvZiB0aGlzIGZpbGUgaWYgdGhlIHJ1bnRpbWUgd2FzXG4gICAgICAgIC8vIGFscmVhZHkgZGVmaW5lZCBnbG9iYWxseS5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgcnVudGltZSBnbG9iYWxseSAoYXMgZXhwZWN0ZWQgYnkgZ2VuZXJhdGVkIGNvZGUpIGFzIGVpdGhlclxuICAgIC8vIG1vZHVsZS5leHBvcnRzIChpZiB3ZSdyZSBpbiBhIG1vZHVsZSkgb3IgYSBuZXcsIGVtcHR5IG9iamVjdC5cbiAgICBydW50aW1lID0gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZSA9IGluTW9kdWxlID8gbW9kdWxlLmV4cG9ydHMgOiB7fTtcblxuICAgIGZ1bmN0aW9uIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcbiAgICAgICAgLy8gSWYgb3V0ZXJGbiBwcm92aWRlZCBhbmQgb3V0ZXJGbi5wcm90b3R5cGUgaXMgYSBHZW5lcmF0b3IsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG4gICAgICAgIHZhciBwcm90b0dlbmVyYXRvciA9IG91dGVyRm4gJiYgb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBvdXRlckZuIDogR2VuZXJhdG9yO1xuICAgICAgICB2YXIgZ2VuZXJhdG9yID0gT2JqZWN0LmNyZWF0ZShwcm90b0dlbmVyYXRvci5wcm90b3R5cGUpO1xuICAgICAgICB2YXIgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcblxuICAgICAgICAvLyBUaGUgLl9pbnZva2UgbWV0aG9kIHVuaWZpZXMgdGhlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgLm5leHQsXG4gICAgICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcy5cbiAgICAgICAgZ2VuZXJhdG9yLl9pbnZva2UgPSBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiBnZW5lcmF0b3I7XG4gICAgfVxuICAgIHJ1bnRpbWUud3JhcCA9IHdyYXA7XG5cbiAgICAvLyBUcnkvY2F0Y2ggaGVscGVyIHRvIG1pbmltaXplIGRlb3B0aW1pemF0aW9ucy4gUmV0dXJucyBhIGNvbXBsZXRpb25cbiAgICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxldGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGRcbiAgICAvLyBoYXZlIGJlZW4gKGFuZCB3YXMgcHJldmlvdXNseSkgZGVzaWduZWQgdG8gdGFrZSBhIGNsb3N1cmUgdG8gYmVcbiAgICAvLyBpbnZva2VkIHdpdGhvdXQgYXJndW1lbnRzLCBidXQgaW4gYWxsIHRoZSBjYXNlcyB3ZSBjYXJlIGFib3V0IHdlXG4gICAgLy8gYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJlJ3Mgbm8gbmVlZFxuICAgIC8vIHRvIGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBvYmplY3QuIFdlIGNhbiBldmVuIGdldCBhd2F5IHdpdGggYXNzdW1pbmdcbiAgICAvLyB0aGUgbWV0aG9kIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50LCBzaW5jZSB0aGF0IGhhcHBlbnMgdG8gYmUgdHJ1ZVxuICAgIC8vIGluIGV2ZXJ5IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRoZVxuICAgIC8vIG9ubHkgYWRkaXRpb25hbCBhbGxvY2F0aW9uIHJlcXVpcmVkIGlzIHRoZSBjb21wbGV0aW9uIHJlY29yZCwgd2hpY2hcbiAgICAvLyBoYXMgYSBzdGFibGUgc2hhcGUgYW5kIHNvIGhvcGVmdWxseSBzaG91bGQgYmUgY2hlYXAgdG8gYWxsb2NhdGUuXG4gICAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4geyB0eXBlOiBcIm5vcm1hbFwiLCBhcmc6IGZuLmNhbGwob2JqLCBhcmcpIH07XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJ0aHJvd1wiLCBhcmc6IGVyciB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIEdlblN0YXRlU3VzcGVuZGVkU3RhcnQgPSBcInN1c3BlbmRlZFN0YXJ0XCI7XG4gICAgdmFyIEdlblN0YXRlU3VzcGVuZGVkWWllbGQgPSBcInN1c3BlbmRlZFlpZWxkXCI7XG4gICAgdmFyIEdlblN0YXRlRXhlY3V0aW5nID0gXCJleGVjdXRpbmdcIjtcbiAgICB2YXIgR2VuU3RhdGVDb21wbGV0ZWQgPSBcImNvbXBsZXRlZFwiO1xuXG4gICAgLy8gUmV0dXJuaW5nIHRoaXMgb2JqZWN0IGZyb20gdGhlIGlubmVyRm4gaGFzIHRoZSBzYW1lIGVmZmVjdCBhc1xuICAgIC8vIGJyZWFraW5nIG91dCBvZiB0aGUgZGlzcGF0Y2ggc3dpdGNoIHN0YXRlbWVudC5cbiAgICB2YXIgQ29udGludWVTZW50aW5lbCA9IHt9O1xuXG4gICAgLy8gRHVtbXkgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRoYXQgd2UgdXNlIGFzIHRoZSAuY29uc3RydWN0b3IgYW5kXG4gICAgLy8gLmNvbnN0cnVjdG9yLnByb3RvdHlwZSBwcm9wZXJ0aWVzIGZvciBmdW5jdGlvbnMgdGhhdCByZXR1cm4gR2VuZXJhdG9yXG4gICAgLy8gb2JqZWN0cy4gRm9yIGZ1bGwgc3BlYyBjb21wbGlhbmNlLCB5b3UgbWF5IHdpc2ggdG8gY29uZmlndXJlIHlvdXJcbiAgICAvLyBtaW5pZmllciBub3QgdG8gbWFuZ2xlIHRoZSBuYW1lcyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuICAgIGZ1bmN0aW9uIEdlbmVyYXRvcigpIHsgfVxuICAgIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCkgeyB9XG4gICAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSB7IH1cblxuICAgIC8vIFRoaXMgaXMgYSBwb2x5ZmlsbCBmb3IgJUl0ZXJhdG9yUHJvdG90eXBlJSBmb3IgZW52aXJvbm1lbnRzIHRoYXRcbiAgICAvLyBkb24ndCBuYXRpdmVseSBzdXBwb3J0IGl0LlxuICAgIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuICAgIEl0ZXJhdG9yUHJvdG90eXBlW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuICAgIHZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcbiAgICB2YXIgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90byAmJiBnZXRQcm90byhnZXRQcm90byh2YWx1ZXMoW10pKSk7XG4gICAgaWYgKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICYmXG4gICAgICAgIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICE9PSBPcCAmJlxuICAgICAgICBoYXNPd24uY2FsbChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wpKSB7XG4gICAgICAgIC8vIFRoaXMgZW52aXJvbm1lbnQgaGFzIGEgbmF0aXZlICVJdGVyYXRvclByb3RvdHlwZSU7IHVzZSBpdCBpbnN0ZWFkXG4gICAgICAgIC8vIG9mIHRoZSBwb2x5ZmlsbC5cbiAgICAgICAgSXRlcmF0b3JQcm90b3R5cGUgPSBOYXRpdmVJdGVyYXRvclByb3RvdHlwZTtcbiAgICB9XG5cbiAgICB2YXIgR3AgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5wcm90b3R5cGUgPVxuICAgICAgICBHZW5lcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSk7XG4gICAgR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR3AuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcbiAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uO1xuICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlW3RvU3RyaW5nVGFnU3ltYm9sXSA9XG4gICAgICAgIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gXCJHZW5lcmF0b3JGdW5jdGlvblwiO1xuXG4gICAgLy8gSGVscGVyIGZvciBkZWZpbmluZyB0aGUgLm5leHQsIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcyBvZiB0aGVcbiAgICAvLyBJdGVyYXRvciBpbnRlcmZhY2UgaW4gdGVybXMgb2YgYSBzaW5nbGUgLl9pbnZva2UgbWV0aG9kLlxuICAgIGZ1bmN0aW9uIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhwcm90b3R5cGUpIHtcbiAgICAgICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgICAgICAgICAgcHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiAoYXJnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ludm9rZShtZXRob2QsIGFyZyk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBydW50aW1lLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbiAoZ2VuRnVuKSB7XG4gICAgICAgIHZhciBjdG9yID0gdHlwZW9mIGdlbkZ1biA9PT0gXCJmdW5jdGlvblwiICYmIGdlbkZ1bi5jb25zdHJ1Y3RvcjtcbiAgICAgICAgcmV0dXJuIGN0b3JcbiAgICAgICAgICAgID8gY3RvciA9PT0gR2VuZXJhdG9yRnVuY3Rpb24gfHxcbiAgICAgICAgICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cbiAgICAgICAgICAgIC8vIGRvIGlzIHRvIGNoZWNrIGl0cyAubmFtZSBwcm9wZXJ0eS5cbiAgICAgICAgICAgIChjdG9yLmRpc3BsYXlOYW1lIHx8IGN0b3IubmFtZSkgPT09IFwiR2VuZXJhdG9yRnVuY3Rpb25cIlxuICAgICAgICAgICAgOiBmYWxzZTtcbiAgICB9O1xuXG4gICAgcnVudGltZS5tYXJrID0gZnVuY3Rpb24gKGdlbkZ1bikge1xuICAgICAgICBpZiAoT2JqZWN0LnNldFByb3RvdHlwZU9mKSB7XG4gICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZ2VuRnVuLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gICAgICAgICAgICBpZiAoISh0b1N0cmluZ1RhZ1N5bWJvbCBpbiBnZW5GdW4pKSB7XG4gICAgICAgICAgICAgICAgZ2VuRnVuW3RvU3RyaW5nVGFnU3ltYm9sXSA9IFwiR2VuZXJhdG9yRnVuY3Rpb25cIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBnZW5GdW4ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShHcCk7XG4gICAgICAgIHJldHVybiBnZW5GdW47XG4gICAgfTtcblxuICAgIC8vIFdpdGhpbiB0aGUgYm9keSBvZiBhbnkgYXN5bmMgZnVuY3Rpb24sIGBhd2FpdCB4YCBpcyB0cmFuc2Zvcm1lZCB0b1xuICAgIC8vIGB5aWVsZCByZWdlbmVyYXRvclJ1bnRpbWUuYXdyYXAoeClgLCBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiB0ZXN0XG4gICAgLy8gYGhhc093bi5jYWxsKHZhbHVlLCBcIl9fYXdhaXRcIilgIHRvIGRldGVybWluZSBpZiB0aGUgeWllbGRlZCB2YWx1ZSBpc1xuICAgIC8vIG1lYW50IHRvIGJlIGF3YWl0ZWQuXG4gICAgcnVudGltZS5hd3JhcCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgICAgcmV0dXJuIHsgX19hd2FpdDogYXJnIH07XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIEFzeW5jSXRlcmF0b3IoZ2VuZXJhdG9yKSB7XG4gICAgICAgIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goZ2VuZXJhdG9yW21ldGhvZF0sIGdlbmVyYXRvciwgYXJnKTtcbiAgICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KHJlY29yZC5hcmcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gcmVjb3JkLmFyZztcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlICYmXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICAgICAgICAgICAgICBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUuX19hd2FpdCkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGludm9rZShcIm5leHRcIiwgdmFsdWUsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGludm9rZShcInRocm93XCIsIGVyciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihmdW5jdGlvbiAodW53cmFwcGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gYSB5aWVsZGVkIFByb21pc2UgaXMgcmVzb2x2ZWQsIGl0cyBmaW5hbCB2YWx1ZSBiZWNvbWVzXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSAudmFsdWUgb2YgdGhlIFByb21pc2U8e3ZhbHVlLGRvbmV9PiByZXN1bHQgZm9yIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyBjdXJyZW50IGl0ZXJhdGlvbi4gSWYgdGhlIFByb21pc2UgaXMgcmVqZWN0ZWQsIGhvd2V2ZXIsIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyByZXN1bHQgZm9yIHRoaXMgaXRlcmF0aW9uIHdpbGwgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZVxuICAgICAgICAgICAgICAgICAgICAvLyByZWFzb24uIE5vdGUgdGhhdCByZWplY3Rpb25zIG9mIHlpZWxkZWQgUHJvbWlzZXMgYXJlIG5vdFxuICAgICAgICAgICAgICAgICAgICAvLyB0aHJvd24gYmFjayBpbnRvIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24sIGFzIGlzIHRoZSBjYXNlXG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gYW4gYXdhaXRlZCBQcm9taXNlIGlzIHJlamVjdGVkLiBUaGlzIGRpZmZlcmVuY2UgaW5cbiAgICAgICAgICAgICAgICAgICAgLy8gYmVoYXZpb3IgYmV0d2VlbiB5aWVsZCBhbmQgYXdhaXQgaXMgaW1wb3J0YW50LCBiZWNhdXNlIGl0XG4gICAgICAgICAgICAgICAgICAgIC8vIGFsbG93cyB0aGUgY29uc3VtZXIgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aCB0aGUgeWllbGRlZFxuICAgICAgICAgICAgICAgICAgICAvLyByZWplY3Rpb24gKHN3YWxsb3cgaXQgYW5kIGNvbnRpbnVlLCBtYW51YWxseSAudGhyb3cgaXQgYmFja1xuICAgICAgICAgICAgICAgICAgICAvLyBpbnRvIHRoZSBnZW5lcmF0b3IsIGFiYW5kb24gaXRlcmF0aW9uLCB3aGF0ZXZlcikuIFdpdGhcbiAgICAgICAgICAgICAgICAgICAgLy8gYXdhaXQsIGJ5IGNvbnRyYXN0LCB0aGVyZSBpcyBubyBvcHBvcnR1bml0eSB0byBleGFtaW5lIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyByZWplY3Rpb24gcmVhc29uIG91dHNpZGUgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiwgc28gdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgb3B0aW9uIGlzIHRvIHRocm93IGl0IGZyb20gdGhlIGF3YWl0IGV4cHJlc3Npb24sIGFuZFxuICAgICAgICAgICAgICAgICAgICAvLyBsZXQgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiBoYW5kbGUgdGhlIGV4Y2VwdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnZhbHVlID0gdW53cmFwcGVkO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBwcmV2aW91c1Byb21pc2U7XG5cbiAgICAgICAgZnVuY3Rpb24gZW5xdWV1ZShtZXRob2QsIGFyZykge1xuICAgICAgICAgICAgZnVuY3Rpb24gY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcHJldmlvdXNQcm9taXNlID1cbiAgICAgICAgICAgICAgICAvLyBJZiBlbnF1ZXVlIGhhcyBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gd2Ugd2FudCB0byB3YWl0IHVudGlsXG4gICAgICAgICAgICAgICAgLy8gYWxsIHByZXZpb3VzIFByb21pc2VzIGhhdmUgYmVlbiByZXNvbHZlZCBiZWZvcmUgY2FsbGluZyBpbnZva2UsXG4gICAgICAgICAgICAgICAgLy8gc28gdGhhdCByZXN1bHRzIGFyZSBhbHdheXMgZGVsaXZlcmVkIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBJZlxuICAgICAgICAgICAgICAgIC8vIGVucXVldWUgaGFzIG5vdCBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gaXQgaXMgaW1wb3J0YW50IHRvXG4gICAgICAgICAgICAgICAgLy8gY2FsbCBpbnZva2UgaW1tZWRpYXRlbHksIHdpdGhvdXQgd2FpdGluZyBvbiBhIGNhbGxiYWNrIHRvIGZpcmUsXG4gICAgICAgICAgICAgICAgLy8gc28gdGhhdCB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhcyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG9cbiAgICAgICAgICAgICAgICAvLyBhbnkgbmVjZXNzYXJ5IHNldHVwIGluIGEgcHJlZGljdGFibGUgd2F5LiBUaGlzIHByZWRpY3RhYmlsaXR5XG4gICAgICAgICAgICAgICAgLy8gaXMgd2h5IHRoZSBQcm9taXNlIGNvbnN0cnVjdG9yIHN5bmNocm9ub3VzbHkgaW52b2tlcyBpdHNcbiAgICAgICAgICAgICAgICAvLyBleGVjdXRvciBjYWxsYmFjaywgYW5kIHdoeSBhc3luYyBmdW5jdGlvbnMgc3luY2hyb25vdXNseVxuICAgICAgICAgICAgICAgIC8vIGV4ZWN1dGUgY29kZSBiZWZvcmUgdGhlIGZpcnN0IGF3YWl0LiBTaW5jZSB3ZSBpbXBsZW1lbnQgc2ltcGxlXG4gICAgICAgICAgICAgICAgLy8gYXN5bmMgZnVuY3Rpb25zIGluIHRlcm1zIG9mIGFzeW5jIGdlbmVyYXRvcnMsIGl0IGlzIGVzcGVjaWFsbHlcbiAgICAgICAgICAgICAgICAvLyBpbXBvcnRhbnQgdG8gZ2V0IHRoaXMgcmlnaHQsIGV2ZW4gdGhvdWdoIGl0IHJlcXVpcmVzIGNhcmUuXG4gICAgICAgICAgICAgICAgcHJldmlvdXNQcm9taXNlID8gcHJldmlvdXNQcm9taXNlLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLFxuICAgICAgICAgICAgICAgICAgICAvLyBBdm9pZCBwcm9wYWdhdGluZyBmYWlsdXJlcyB0byBQcm9taXNlcyByZXR1cm5lZCBieSBsYXRlclxuICAgICAgICAgICAgICAgICAgICAvLyBpbnZvY2F0aW9ucyBvZiB0aGUgaXRlcmF0b3IuXG4gICAgICAgICAgICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnXG4gICAgICAgICAgICAgICAgKSA6IGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZWZpbmUgdGhlIHVuaWZpZWQgaGVscGVyIG1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gaW1wbGVtZW50IC5uZXh0LFxuICAgICAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIChzZWUgZGVmaW5lSXRlcmF0b3JNZXRob2RzKS5cbiAgICAgICAgdGhpcy5faW52b2tlID0gZW5xdWV1ZTtcbiAgICB9XG5cbiAgICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUpO1xuICAgIEFzeW5jSXRlcmF0b3IucHJvdG90eXBlW2FzeW5jSXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIHJ1bnRpbWUuQXN5bmNJdGVyYXRvciA9IEFzeW5jSXRlcmF0b3I7XG5cbiAgICAvLyBOb3RlIHRoYXQgc2ltcGxlIGFzeW5jIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mXG4gICAgLy8gQXN5bmNJdGVyYXRvciBvYmplY3RzOyB0aGV5IGp1c3QgcmV0dXJuIGEgUHJvbWlzZSBmb3IgdGhlIHZhbHVlIG9mXG4gICAgLy8gdGhlIGZpbmFsIHJlc3VsdCBwcm9kdWNlZCBieSB0aGUgaXRlcmF0b3IuXG4gICAgcnVudGltZS5hc3luYyA9IGZ1bmN0aW9uIChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuICAgICAgICB2YXIgaXRlciA9IG5ldyBBc3luY0l0ZXJhdG9yKFxuICAgICAgICAgICAgd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdClcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gcnVudGltZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG91dGVyRm4pXG4gICAgICAgICAgICA/IGl0ZXIgLy8gSWYgb3V0ZXJGbiBpcyBhIGdlbmVyYXRvciwgcmV0dXJuIHRoZSBmdWxsIGl0ZXJhdG9yLlxuICAgICAgICAgICAgOiBpdGVyLm5leHQoKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LmRvbmUgPyByZXN1bHQudmFsdWUgOiBpdGVyLm5leHQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydDtcblxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlRXhlY3V0aW5nKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZ1wiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUNvbXBsZXRlZCkge1xuICAgICAgICAgICAgICAgIGlmIChtZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBhcmc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gQmUgZm9yZ2l2aW5nLCBwZXIgMjUuMy4zLjMuMyBvZiB0aGUgc3BlYzpcbiAgICAgICAgICAgICAgICAvLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtZ2VuZXJhdG9ycmVzdW1lXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29udGV4dC5tZXRob2QgPSBtZXRob2Q7XG4gICAgICAgICAgICBjb250ZXh0LmFyZyA9IGFyZztcblxuICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGVsZWdhdGUgPSBjb250ZXh0LmRlbGVnYXRlO1xuICAgICAgICAgICAgICAgIGlmIChkZWxlZ2F0ZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGVsZWdhdGVSZXN1bHQgPSBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQgPT09IENvbnRpbnVlU2VudGluZWwpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlUmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAgICAgICAgICAgICAvLyBTZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgICAgICAgICAgICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zZW50ID0gY29udGV4dC5fc2VudCA9IGNvbnRleHQuYXJnO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGNvbnRleHQuYXJnO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZyk7XG5cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInJldHVyblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIGNvbnRleHQuYXJnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlRXhlY3V0aW5nO1xuXG4gICAgICAgICAgICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuICAgICAgICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIikge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGZyb20gaW5uZXJGbiwgd2UgbGVhdmUgc3RhdGUgPT09XG4gICAgICAgICAgICAgICAgICAgIC8vIEdlblN0YXRlRXhlY3V0aW5nIGFuZCBsb29wIGJhY2sgZm9yIGFub3RoZXIgaW52b2NhdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBjb250ZXh0LmRvbmVcbiAgICAgICAgICAgICAgICAgICAgICAgID8gR2VuU3RhdGVDb21wbGV0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIDogR2VuU3RhdGVTdXNwZW5kZWRZaWVsZDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocmVjb3JkLmFyZyA9PT0gQ29udGludWVTZW50aW5lbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHJlY29yZC5hcmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBkb25lOiBjb250ZXh0LmRvbmVcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuICAgICAgICAgICAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgZXhjZXB0aW9uIGJ5IGxvb3BpbmcgYmFjayBhcm91bmQgdG8gdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpIGNhbGwgYWJvdmUuXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIENhbGwgZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdKGNvbnRleHQuYXJnKSBhbmQgaGFuZGxlIHRoZVxuICAgIC8vIHJlc3VsdCwgZWl0aGVyIGJ5IHJldHVybmluZyBhIHsgdmFsdWUsIGRvbmUgfSByZXN1bHQgZnJvbSB0aGVcbiAgICAvLyBkZWxlZ2F0ZSBpdGVyYXRvciwgb3IgYnkgbW9kaWZ5aW5nIGNvbnRleHQubWV0aG9kIGFuZCBjb250ZXh0LmFyZyxcbiAgICAvLyBzZXR0aW5nIGNvbnRleHQuZGVsZWdhdGUgdG8gbnVsbCwgYW5kIHJldHVybmluZyB0aGUgQ29udGludWVTZW50aW5lbC5cbiAgICBmdW5jdGlvbiBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KSB7XG4gICAgICAgIHZhciBtZXRob2QgPSBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF07XG4gICAgICAgIGlmIChtZXRob2QgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gQSAudGhyb3cgb3IgLnJldHVybiB3aGVuIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgbm8gLnRocm93XG4gICAgICAgICAgICAvLyBtZXRob2QgYWx3YXlzIHRlcm1pbmF0ZXMgdGhlIHlpZWxkKiBsb29wLlxuICAgICAgICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRlbGVnYXRlLml0ZXJhdG9yLnJldHVybikge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIGEgcmV0dXJuIG1ldGhvZCwgZ2l2ZSBpdCBhXG4gICAgICAgICAgICAgICAgICAgIC8vIGNoYW5jZSB0byBjbGVhbiB1cC5cbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIG1heWJlSW52b2tlRGVsZWdhdGUoY29udGV4dCkgY2hhbmdlZCBjb250ZXh0Lm1ldGhvZCBmcm9tXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBcInJldHVyblwiIHRvIFwidGhyb3dcIiwgbGV0IHRoYXQgb3ZlcnJpZGUgdGhlIFR5cGVFcnJvciBiZWxvdy5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgICAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICAgICAgICAgICBcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ3Rocm93JyBtZXRob2RcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKG1ldGhvZCwgZGVsZWdhdGUuaXRlcmF0b3IsIGNvbnRleHQuYXJnKTtcblxuICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGluZm8gPSByZWNvcmQuYXJnO1xuXG4gICAgICAgIGlmICghaW5mbykge1xuICAgICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFwiKTtcbiAgICAgICAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5mby5kb25lKSB7XG4gICAgICAgICAgICAvLyBBc3NpZ24gdGhlIHJlc3VsdCBvZiB0aGUgZmluaXNoZWQgZGVsZWdhdGUgdG8gdGhlIHRlbXBvcmFyeVxuICAgICAgICAgICAgLy8gdmFyaWFibGUgc3BlY2lmaWVkIGJ5IGRlbGVnYXRlLnJlc3VsdE5hbWUgKHNlZSBkZWxlZ2F0ZVlpZWxkKS5cbiAgICAgICAgICAgIGNvbnRleHRbZGVsZWdhdGUucmVzdWx0TmFtZV0gPSBpbmZvLnZhbHVlO1xuXG4gICAgICAgICAgICAvLyBSZXN1bWUgZXhlY3V0aW9uIGF0IHRoZSBkZXNpcmVkIGxvY2F0aW9uIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICAgICAgICBjb250ZXh0Lm5leHQgPSBkZWxlZ2F0ZS5uZXh0TG9jO1xuXG4gICAgICAgICAgICAvLyBJZiBjb250ZXh0Lm1ldGhvZCB3YXMgXCJ0aHJvd1wiIGJ1dCB0aGUgZGVsZWdhdGUgaGFuZGxlZCB0aGVcbiAgICAgICAgICAgIC8vIGV4Y2VwdGlvbiwgbGV0IHRoZSBvdXRlciBnZW5lcmF0b3IgcHJvY2VlZCBub3JtYWxseS4gSWZcbiAgICAgICAgICAgIC8vIGNvbnRleHQubWV0aG9kIHdhcyBcIm5leHRcIiwgZm9yZ2V0IGNvbnRleHQuYXJnIHNpbmNlIGl0IGhhcyBiZWVuXG4gICAgICAgICAgICAvLyBcImNvbnN1bWVkXCIgYnkgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yLiBJZiBjb250ZXh0Lm1ldGhvZCB3YXNcbiAgICAgICAgICAgIC8vIFwicmV0dXJuXCIsIGFsbG93IHRoZSBvcmlnaW5hbCAucmV0dXJuIGNhbGwgdG8gY29udGludWUgaW4gdGhlXG4gICAgICAgICAgICAvLyBvdXRlciBnZW5lcmF0b3IuXG4gICAgICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgIT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBSZS15aWVsZCB0aGUgcmVzdWx0IHJldHVybmVkIGJ5IHRoZSBkZWxlZ2F0ZSBtZXRob2QuXG4gICAgICAgICAgICByZXR1cm4gaW5mbztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBpcyBmaW5pc2hlZCwgc28gZm9yZ2V0IGl0IGFuZCBjb250aW51ZSB3aXRoXG4gICAgICAgIC8vIHRoZSBvdXRlciBnZW5lcmF0b3IuXG4gICAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICAvLyBEZWZpbmUgR2VuZXJhdG9yLnByb3RvdHlwZS57bmV4dCx0aHJvdyxyZXR1cm59IGluIHRlcm1zIG9mIHRoZVxuICAgIC8vIHVuaWZpZWQgLl9pbnZva2UgaGVscGVyIG1ldGhvZC5cbiAgICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoR3ApO1xuXG4gICAgR3BbdG9TdHJpbmdUYWdTeW1ib2xdID0gXCJHZW5lcmF0b3JcIjtcblxuICAgIC8vIEEgR2VuZXJhdG9yIHNob3VsZCBhbHdheXMgcmV0dXJuIGl0c2VsZiBhcyB0aGUgaXRlcmF0b3Igb2JqZWN0IHdoZW4gdGhlXG4gICAgLy8gQEBpdGVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQgb24gaXQuIFNvbWUgYnJvd3NlcnMnIGltcGxlbWVudGF0aW9ucyBvZiB0aGVcbiAgICAvLyBpdGVyYXRvciBwcm90b3R5cGUgY2hhaW4gaW5jb3JyZWN0bHkgaW1wbGVtZW50IHRoaXMsIGNhdXNpbmcgdGhlIEdlbmVyYXRvclxuICAgIC8vIG9iamVjdCB0byBub3QgYmUgcmV0dXJuZWQgZnJvbSB0aGlzIGNhbGwuIFRoaXMgZW5zdXJlcyB0aGF0IGRvZXNuJ3QgaGFwcGVuLlxuICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvaXNzdWVzLzI3NCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgIEdwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuICAgIEdwLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gXCJbb2JqZWN0IEdlbmVyYXRvcl1cIjtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcHVzaFRyeUVudHJ5KGxvY3MpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0geyB0cnlMb2M6IGxvY3NbMF0gfTtcblxuICAgICAgICBpZiAoMSBpbiBsb2NzKSB7XG4gICAgICAgICAgICBlbnRyeS5jYXRjaExvYyA9IGxvY3NbMV07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoMiBpbiBsb2NzKSB7XG4gICAgICAgICAgICBlbnRyeS5maW5hbGx5TG9jID0gbG9jc1syXTtcbiAgICAgICAgICAgIGVudHJ5LmFmdGVyTG9jID0gbG9jc1szXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudHJ5RW50cmllcy5wdXNoKGVudHJ5KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZXNldFRyeUVudHJ5KGVudHJ5KSB7XG4gICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uIHx8IHt9O1xuICAgICAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCI7XG4gICAgICAgIGRlbGV0ZSByZWNvcmQuYXJnO1xuICAgICAgICBlbnRyeS5jb21wbGV0aW9uID0gcmVjb3JkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIENvbnRleHQodHJ5TG9jc0xpc3QpIHtcbiAgICAgICAgLy8gVGhlIHJvb3QgZW50cnkgb2JqZWN0IChlZmZlY3RpdmVseSBhIHRyeSBzdGF0ZW1lbnQgd2l0aG91dCBhIGNhdGNoXG4gICAgICAgIC8vIG9yIGEgZmluYWxseSBibG9jaykgZ2l2ZXMgdXMgYSBwbGFjZSB0byBzdG9yZSB2YWx1ZXMgdGhyb3duIGZyb21cbiAgICAgICAgLy8gbG9jYXRpb25zIHdoZXJlIHRoZXJlIGlzIG5vIGVuY2xvc2luZyB0cnkgc3RhdGVtZW50LlxuICAgICAgICB0aGlzLnRyeUVudHJpZXMgPSBbeyB0cnlMb2M6IFwicm9vdFwiIH1dO1xuICAgICAgICB0cnlMb2NzTGlzdC5mb3JFYWNoKHB1c2hUcnlFbnRyeSwgdGhpcyk7XG4gICAgICAgIHRoaXMucmVzZXQodHJ1ZSk7XG4gICAgfVxuXG4gICAgcnVudGltZS5rZXlzID0gZnVuY3Rpb24gKG9iamVjdCkge1xuICAgICAgICB2YXIga2V5cyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgICBrZXlzLnJldmVyc2UoKTtcblxuICAgICAgICAvLyBSYXRoZXIgdGhhbiByZXR1cm5pbmcgYW4gb2JqZWN0IHdpdGggYSBuZXh0IG1ldGhvZCwgd2Uga2VlcFxuICAgICAgICAvLyB0aGluZ3Mgc2ltcGxlIGFuZCByZXR1cm4gdGhlIG5leHQgZnVuY3Rpb24gaXRzZWxmLlxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICAgIHdoaWxlIChrZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBrZXlzLnBvcCgpO1xuICAgICAgICAgICAgICAgIGlmIChrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHQudmFsdWUgPSBrZXk7XG4gICAgICAgICAgICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFRvIGF2b2lkIGNyZWF0aW5nIGFuIGFkZGl0aW9uYWwgb2JqZWN0LCB3ZSBqdXN0IGhhbmcgdGhlIC52YWx1ZVxuICAgICAgICAgICAgLy8gYW5kIC5kb25lIHByb3BlcnRpZXMgb2ZmIHRoZSBuZXh0IGZ1bmN0aW9uIG9iamVjdCBpdHNlbGYuIFRoaXNcbiAgICAgICAgICAgIC8vIGFsc28gZW5zdXJlcyB0aGF0IHRoZSBtaW5pZmllciB3aWxsIG5vdCBhbm9ueW1pemUgdGhlIGZ1bmN0aW9uLlxuICAgICAgICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiB2YWx1ZXMoaXRlcmFibGUpIHtcbiAgICAgICAgaWYgKGl0ZXJhYmxlKSB7XG4gICAgICAgICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVyYWJsZVtpdGVyYXRvclN5bWJvbF07XG4gICAgICAgICAgICBpZiAoaXRlcmF0b3JNZXRob2QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JNZXRob2QuY2FsbChpdGVyYWJsZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlcmFibGUubmV4dCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhYmxlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWlzTmFOKGl0ZXJhYmxlLmxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgaSA9IC0xLCBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCsraSA8IGl0ZXJhYmxlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKGl0ZXJhYmxlLCBpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQudmFsdWUgPSBpdGVyYWJsZVtpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIG5leHQudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIG5leHQuZG9uZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmV0dXJuIGFuIGl0ZXJhdG9yIHdpdGggbm8gdmFsdWVzLlxuICAgICAgICByZXR1cm4geyBuZXh0OiBkb25lUmVzdWx0IH07XG4gICAgfVxuICAgIHJ1bnRpbWUudmFsdWVzID0gdmFsdWVzO1xuXG4gICAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcbiAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cblxuICAgIENvbnRleHQucHJvdG90eXBlID0ge1xuICAgICAgICBjb25zdHJ1Y3RvcjogQ29udGV4dCxcblxuICAgICAgICByZXNldDogZnVuY3Rpb24gKHNraXBUZW1wUmVzZXQpIHtcbiAgICAgICAgICAgIHRoaXMucHJldiA9IDA7XG4gICAgICAgICAgICB0aGlzLm5leHQgPSAwO1xuICAgICAgICAgICAgLy8gUmVzZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgICAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICAgICAgICB0aGlzLnNlbnQgPSB0aGlzLl9zZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICB0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChyZXNldFRyeUVudHJ5KTtcblxuICAgICAgICAgICAgaWYgKCFza2lwVGVtcFJlc2V0KSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB0aGlzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE5vdCBzdXJlIGFib3V0IHRoZSBvcHRpbWFsIG9yZGVyIG9mIHRoZXNlIGNvbmRpdGlvbnM6XG4gICAgICAgICAgICAgICAgICAgIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gXCJ0XCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc093bi5jYWxsKHRoaXMsIG5hbWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhaXNOYU4oK25hbWUuc2xpY2UoMSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzW25hbWVdID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIHN0b3A6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG5cbiAgICAgICAgICAgIHZhciByb290RW50cnkgPSB0aGlzLnRyeUVudHJpZXNbMF07XG4gICAgICAgICAgICB2YXIgcm9vdFJlY29yZCA9IHJvb3RFbnRyeS5jb21wbGV0aW9uO1xuICAgICAgICAgICAgaWYgKHJvb3RSZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgcm9vdFJlY29yZC5hcmc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJ2YWw7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uIChleGNlcHRpb24pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRvbmUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcztcbiAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZShsb2MsIGNhdWdodCkge1xuICAgICAgICAgICAgICAgIHJlY29yZC50eXBlID0gXCJ0aHJvd1wiO1xuICAgICAgICAgICAgICAgIHJlY29yZC5hcmcgPSBleGNlcHRpb247XG4gICAgICAgICAgICAgICAgY29udGV4dC5uZXh0ID0gbG9jO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNhdWdodCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZGlzcGF0Y2hlZCBleGNlcHRpb24gd2FzIGNhdWdodCBieSBhIGNhdGNoIGJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAvLyB0aGVuIGxldCB0aGF0IGNhdGNoIGJsb2NrIGhhbmRsZSB0aGUgZXhjZXB0aW9uIG5vcm1hbGx5LlxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gISFjYXVnaHQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgICAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG5cbiAgICAgICAgICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSBcInJvb3RcIikge1xuICAgICAgICAgICAgICAgICAgICAvLyBFeGNlcHRpb24gdGhyb3duIG91dHNpZGUgb2YgYW55IHRyeSBibG9jayB0aGF0IGNvdWxkIGhhbmRsZVxuICAgICAgICAgICAgICAgICAgICAvLyBpdCwgc28gc2V0IHRoZSBjb21wbGV0aW9uIHZhbHVlIG9mIHRoZSBlbnRpcmUgZnVuY3Rpb24gdG9cbiAgICAgICAgICAgICAgICAgICAgLy8gdGhyb3cgdGhlIGV4Y2VwdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShcImVuZFwiKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaGFzQ2F0Y2ggPSBoYXNPd24uY2FsbChlbnRyeSwgXCJjYXRjaExvY1wiKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGhhc0ZpbmFsbHkgPSBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNDYXRjaCAmJiBoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChoYXNDYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5XCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIGFicnVwdDogZnVuY3Rpb24gKHR5cGUsIGFyZykge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICAgICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldiAmJlxuICAgICAgICAgICAgICAgICAgICBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZpbmFsbHlFbnRyeSA9IGVudHJ5O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChmaW5hbGx5RW50cnkgJiZcbiAgICAgICAgICAgICAgICAodHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPT09IFwiY29udGludWVcIikgJiZcbiAgICAgICAgICAgICAgICBmaW5hbGx5RW50cnkudHJ5TG9jIDw9IGFyZyAmJlxuICAgICAgICAgICAgICAgIGFyZyA8PSBmaW5hbGx5RW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICAgIC8vIElnbm9yZSB0aGUgZmluYWxseSBlbnRyeSBpZiBjb250cm9sIGlzIG5vdCBqdW1waW5nIHRvIGFcbiAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiBvdXRzaWRlIHRoZSB0cnkvY2F0Y2ggYmxvY2suXG4gICAgICAgICAgICAgICAgZmluYWxseUVudHJ5ID0gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHJlY29yZCA9IGZpbmFsbHlFbnRyeSA/IGZpbmFsbHlFbnRyeS5jb21wbGV0aW9uIDoge307XG4gICAgICAgICAgICByZWNvcmQudHlwZSA9IHR5cGU7XG4gICAgICAgICAgICByZWNvcmQuYXJnID0gYXJnO1xuXG4gICAgICAgICAgICBpZiAoZmluYWxseUVudHJ5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICAgICAgICB0aGlzLm5leHQgPSBmaW5hbGx5RW50cnkuZmluYWxseUxvYztcbiAgICAgICAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGxldGUocmVjb3JkKTtcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKHJlY29yZCwgYWZ0ZXJMb2MpIHtcbiAgICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgcmVjb3JkLmFyZztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICAgICAgICByZWNvcmQudHlwZSA9PT0gXCJjb250aW51ZVwiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0ID0gcmVjb3JkLmFyZztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICAgICAgICAgIHRoaXMubmV4dCA9IFwiZW5kXCI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiICYmIGFmdGVyTG9jKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0ID0gYWZ0ZXJMb2M7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9LFxuXG4gICAgICAgIGZpbmlzaDogZnVuY3Rpb24gKGZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgICAgICAgICAgaWYgKGVudHJ5LmZpbmFsbHlMb2MgPT09IGZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyk7XG4gICAgICAgICAgICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJjYXRjaFwiOiBmdW5jdGlvbiAodHJ5TG9jKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICAgICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IHRyeUxvYykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0aHJvd24gPSByZWNvcmQuYXJnO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93bjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFRoZSBjb250ZXh0LmNhdGNoIG1ldGhvZCBtdXN0IG9ubHkgYmUgY2FsbGVkIHdpdGggYSBsb2NhdGlvblxuICAgICAgICAgICAgLy8gYXJndW1lbnQgdGhhdCBjb3JyZXNwb25kcyB0byBhIGtub3duIGNhdGNoIGJsb2NrLlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaWxsZWdhbCBjYXRjaCBhdHRlbXB0XCIpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uIChpdGVyYWJsZSwgcmVzdWx0TmFtZSwgbmV4dExvYykge1xuICAgICAgICAgICAgdGhpcy5kZWxlZ2F0ZSA9IHtcbiAgICAgICAgICAgICAgICBpdGVyYXRvcjogdmFsdWVzKGl0ZXJhYmxlKSxcbiAgICAgICAgICAgICAgICByZXN1bHROYW1lOiByZXN1bHROYW1lLFxuICAgICAgICAgICAgICAgIG5leHRMb2M6IG5leHRMb2NcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgICAgICAgICAvLyBEZWxpYmVyYXRlbHkgZm9yZ2V0IHRoZSBsYXN0IHNlbnQgdmFsdWUgc28gdGhhdCB3ZSBkb24ndFxuICAgICAgICAgICAgICAgIC8vIGFjY2lkZW50YWxseSBwYXNzIGl0IG9uIHRvIHRoZSBkZWxlZ2F0ZS5cbiAgICAgICAgICAgICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIH1cbiAgICB9O1xufSkoXG4gICAgLy8gSW4gc2xvcHB5IG1vZGUsIHVuYm91bmQgYHRoaXNgIHJlZmVycyB0byB0aGUgZ2xvYmFsIG9iamVjdCwgZmFsbGJhY2sgdG9cbiAgICAvLyBGdW5jdGlvbiBjb25zdHJ1Y3RvciBpZiB3ZSdyZSBpbiBnbG9iYWwgc3RyaWN0IG1vZGUuIFRoYXQgaXMgc2FkbHkgYSBmb3JtXG4gICAgLy8gb2YgaW5kaXJlY3QgZXZhbCB3aGljaCB2aW9sYXRlcyBDb250ZW50IFNlY3VyaXR5IFBvbGljeS5cbiAgICAoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyB9KSgpIHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKVxuKTtcbiJdfQ==
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -23,6 +23,20 @@ exports.RandomInt = RandomInt; ...@@ -23,6 +23,20 @@ exports.RandomInt = RandomInt;
exports.randomSortByArr = randomSortByArr; exports.randomSortByArr = randomSortByArr;
exports.setSprNodeMaxLen = setSprNodeMaxLen; exports.setSprNodeMaxLen = setSprNodeMaxLen;
exports.localPosTolocalPos = localPosTolocalPos; exports.localPosTolocalPos = localPosTolocalPos;
exports.getScaleRateBy2Node = getScaleRateBy2Node;
exports.asyncCCLoad = asyncCCLoad;
exports.loadDragonBones = loadDragonBones;
exports.playAudio = playAudio;
exports.asyncDelay = asyncDelay;
exports.showFireworks = showFireworks;
exports.asyncTweenTo = asyncTweenTo;
exports.asyncTweenBy = asyncTweenBy;
exports.showTrebleFirework = showTrebleFirework;
exports.FireworkSettings = void 0;
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
function getPosByAngle(angle, len) { function getPosByAngle(angle, len) {
var radian = angle * Math.PI / 180; var radian = angle * Math.PI / 180;
...@@ -117,6 +131,389 @@ function localPosTolocalPos(baseNode, targetNode) { ...@@ -117,6 +131,389 @@ function localPosTolocalPos(baseNode, targetNode) {
return localPos; return localPos;
} }
function getScaleRateBy2Node(baseNode, targetNode, maxFlag) {
if (maxFlag === void 0) {
maxFlag = true;
}
var worldRect1 = targetNode.getBoundingBoxToWorld();
var worldRect2 = baseNode.getBoundingBoxToWorld();
var sx = worldRect1.width / worldRect2.width;
var sy = worldRect1.height / worldRect2.height;
if (maxFlag) {
return Math.max(sx, sy);
} else {
return Math.min(sx, sy);
}
}
function asyncCCLoad(resources) {
return new Promise(function (resolve, reject) {
try {
cc.loader.load(resources, function (error, assets) {
resolve(assets);
});
} catch (e) {
reject(e);
}
});
}
function loadDragonBones(image, atlas, ske, callback) {
Promise.all([asyncCCLoad(image), asyncCCLoad({
url: atlas,
type: 'txt'
}), asyncCCLoad({
url: ske,
type: 'txt'
})]).then(function (_ref) {
var texture = _ref[0],
atlasJson = _ref[1],
dragonBonesJson = _ref[2];
callback(texture, atlasJson, dragonBonesJson);
})["catch"](function (e) {
console.log(e);
});
}
function playAudio(_x, _x2) {
return _playAudio.apply(this, arguments);
}
function _playAudio() {
_playAudio = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(clip, volume) {
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (volume === void 0) {
volume = 1;
}
return _context.abrupt("return", new Promise(function (resolve, reject) {
try {
if (!clip) {
resolve();
return;
}
var id = cc.audioEngine.play(clip, false, volume);
cc.audioEngine.setFinishCallback(id, function () {
resolve();
});
} catch (e) {
reject(e);
}
}));
case 2:
case "end":
return _context.stop();
}
}
}, _callee);
}));
return _playAudio.apply(this, arguments);
}
function asyncDelay(_x3) {
return _asyncDelay.apply(this, arguments);
}
function _asyncDelay() {
_asyncDelay = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(time) {
return regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
return _context2.abrupt("return", new Promise(function (resolve, reject) {
try {
setTimeout(function () {
resolve();
}, time * 1000);
} catch (e) {
reject(e);
}
}));
case 1:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
return _asyncDelay.apply(this, arguments);
}
var FireworkSettings = /*#__PURE__*/function () {
// 父节点
// 火花节点的array
// 发射点
// 发射方向
// 扩散范围
// 发射数量
// 缩放范围
function FireworkSettings(baseNode, nodeList, pos, side, range, number, scalseRange) {
if (pos === void 0) {
pos = cc.v2(0, 0);
}
if (side === void 0) {
side = cc.v2(0, 100);
}
if (range === void 0) {
range = 50;
}
if (number === void 0) {
number = 100;
}
if (scalseRange === void 0) {
scalseRange = 0;
}
this.baseNode = void 0;
this.nodeList = void 0;
this.pos = void 0;
this.side = void 0;
this.range = void 0;
this.number = void 0;
this.scalseRange = void 0;
this.baseNode = baseNode;
this.nodeList = nodeList;
this.pos = pos;
this.side = side;
this.range = range;
this.number = number;
this.scalseRange = scalseRange;
}
FireworkSettings.copy = function copy(firework) {
return new FireworkSettings(firework.baseNode, firework.nodeList, firework.pos, firework.side, firework.range, firework.number);
};
return FireworkSettings;
}();
exports.FireworkSettings = FireworkSettings;
function showFireworks(_x4) {
return _showFireworks.apply(this, arguments);
}
function _showFireworks() {
_showFireworks = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(fireworkSettings) {
var baseNode, nodeList, pos, side, range, number, scalseRange;
return regeneratorRuntime.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
baseNode = fireworkSettings.baseNode, nodeList = fireworkSettings.nodeList, pos = fireworkSettings.pos, side = fireworkSettings.side, range = fireworkSettings.range, number = fireworkSettings.number, scalseRange = fireworkSettings.scalseRange;
new Array(number).fill(' ').forEach( /*#__PURE__*/function () {
var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(_, i) {
var rabbonNode, node, rate, angle;
return regeneratorRuntime.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
rabbonNode = new cc.Node();
rabbonNode.parent = baseNode;
rabbonNode.x = pos.x;
rabbonNode.y = pos.y;
rabbonNode.angle = 60 * Math.random() - 30;
node = cc.instantiate(nodeList[RandomInt(nodeList.length)]);
node.parent = rabbonNode;
node.active = true;
node.x = 0;
node.y = 0;
node.angle = 0;
node.scale = (Math.random() - 0.5) * scalseRange + 1;
rate = Math.random();
angle = Math.PI * (Math.random() * 2 - 1);
_context3.next = 16;
return asyncTweenBy(rabbonNode, 0.3, {
x: side.x * rate + Math.cos(angle) * range * rate,
y: side.y * rate + Math.sin(angle) * range * rate
}, {
easing: 'quadIn'
});
case 16:
cc.tween(rabbonNode).by(8, {
y: -2000
}).start();
cc.tween(rabbonNode).to(5, {
scale: (Math.random() - 0.5) * scalseRange + 1
}).start();
rabbonFall(rabbonNode);
_context3.next = 21;
return asyncDelay(Math.random());
case 21:
cc.tween(node).by(0.15, {
x: -10,
angle: -10
}).by(0.3, {
x: 20,
angle: 20
}).by(0.15, {
x: -10,
angle: -10
}).union().repeatForever().start();
cc.tween(rabbonNode).delay(5).to(0.3, {
opacity: 0
}).call(function () {
node.stopAllActions();
node.active = false;
node.parent = null;
node = null;
}).start();
case 23:
case "end":
return _context3.stop();
}
}
}, _callee3);
}));
return function (_x14, _x15) {
return _ref2.apply(this, arguments);
};
}());
case 2:
case "end":
return _context4.stop();
}
}
}, _callee4);
}));
return _showFireworks.apply(this, arguments);
}
function rabbonFall(_x5) {
return _rabbonFall.apply(this, arguments);
}
function _rabbonFall() {
_rabbonFall = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(node) {
var time, offsetX;
return regeneratorRuntime.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
time = 1 + Math.random();
offsetX = RandomInt(-200, 200) * time;
_context5.next = 4;
return asyncTweenBy(node, time, {
x: offsetX,
angle: offsetX * 60 / 200
});
case 4:
rabbonFall(node);
case 5:
case "end":
return _context5.stop();
}
}
}, _callee5);
}));
return _rabbonFall.apply(this, arguments);
}
function asyncTweenTo(_x6, _x7, _x8, _x9) {
return _asyncTweenTo.apply(this, arguments);
}
function _asyncTweenTo() {
_asyncTweenTo = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(node, duration, obj, ease) {
return regeneratorRuntime.wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
if (ease === void 0) {
ease = undefined;
}
return _context6.abrupt("return", new Promise(function (resolve, reject) {
try {
cc.tween(node).to(duration, obj, ease).call(function () {
resolve();
}).start();
} catch (e) {
reject(e);
}
}));
case 2:
case "end":
return _context6.stop();
}
}
}, _callee6);
}));
return _asyncTweenTo.apply(this, arguments);
}
function asyncTweenBy(_x10, _x11, _x12, _x13) {
return _asyncTweenBy.apply(this, arguments);
}
function _asyncTweenBy() {
_asyncTweenBy = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(node, duration, obj, ease) {
return regeneratorRuntime.wrap(function _callee7$(_context7) {
while (1) {
switch (_context7.prev = _context7.next) {
case 0:
if (ease === void 0) {
ease = undefined;
}
return _context7.abrupt("return", new Promise(function (resolve, reject) {
try {
cc.tween(node).by(duration, obj, ease).call(function () {
resolve();
}).start();
} catch (e) {
reject(e);
}
}));
case 2:
case "end":
return _context7.stop();
}
}
}, _callee7);
}));
return _asyncTweenBy.apply(this, arguments);
}
function showTrebleFirework(baseNode, rabbonList) {
var middle = new FireworkSettings(baseNode, rabbonList);
middle.pos = cc.v2(0, -400);
middle.side = cc.v2(0, 1000);
middle.range = 200;
middle.number = 100;
middle.scalseRange = 0.4;
var left = FireworkSettings.copy(middle);
left.pos = cc.v2(-600, -400);
left.side = cc.v2(200, 1000);
var right = FireworkSettings.copy(middle);
right.pos = cc.v2(600, -400);
right.side = cc.v2(-200, 1000);
showFireworks(middle);
showFireworks(left);
showFireworks(right);
}
cc._RF.pop(); cc._RF.pop();
} }
if (nodeEnv) { if (nodeEnv) {
...@@ -128,4 +525,4 @@ cc._RF.pop(); ...@@ -128,4 +525,4 @@ cc._RF.pop();
}); });
} }
})(); })();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9tel8wMDMvc2NyaXB0L3V0aWwuanMiXSwibmFtZXMiOlsiZ2V0UG9zQnlBbmdsZSIsImFuZ2xlIiwibGVuIiwicmFkaWFuIiwiTWF0aCIsIlBJIiwieCIsInNpbiIsInkiLCJjb3MiLCJnZXRBbmdsZUJ5UG9zIiwicHgiLCJweSIsIm14IiwibXkiLCJhYnMiLCJ6Iiwic3FydCIsInBvdyIsInJhZGluYSIsImFjb3MiLCJmbG9vciIsImV4Y2hhbmdlTm9kZVBvcyIsImJhc2VOb2RlIiwidGFyZ2V0Tm9kZSIsImNvbnZlcnRUb05vZGVTcGFjZUFSIiwiX3BhcmVudCIsImNvbnZlcnRUb1dvcmxkU3BhY2VBUiIsImNjIiwidjIiLCJSYW5kb21JbnQiLCJhIiwiYiIsIm1heCIsIm1pbiIsInJhbmRvbSIsInJhbmRvbVNvcnRCeUFyciIsImFyciIsIm5ld0FyciIsInRtcEFyciIsImNvbmNhdCIsImxlbmd0aCIsInJhbmRvbUluZGV4IiwicHVzaCIsInNwbGljZSIsInNldFNwck5vZGVNYXhMZW4iLCJzcHJOb2RlIiwibWF4VyIsIm1heEgiLCJzeCIsIndpZHRoIiwic3kiLCJoZWlnaHQiLCJzIiwic2NhbGUiLCJyb3VuZCIsImxvY2FsUG9zVG9sb2NhbFBvcyIsIndvcmxkUG9zIiwicGFyZW50IiwibG9jYWxQb3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQU8sU0FBU0EsYUFBVCxDQUF1QkMsS0FBdkIsRUFBOEJDLEdBQTlCLEVBQW1DO0FBRXhDLE1BQU1DLE1BQU0sR0FBR0YsS0FBSyxHQUFHRyxJQUFJLENBQUNDLEVBQWIsR0FBa0IsR0FBakM7QUFDQSxNQUFNQyxDQUFDLEdBQUdGLElBQUksQ0FBQ0csR0FBTCxDQUFTSixNQUFULElBQW1CRCxHQUE3QjtBQUNBLE1BQU1NLENBQUMsR0FBR0osSUFBSSxDQUFDSyxHQUFMLENBQVNOLE1BQVQsSUFBbUJELEdBQTdCO0FBRUEsU0FBTztBQUFFSSxJQUFBQSxDQUFDLEVBQURBLENBQUY7QUFBS0UsSUFBQUEsQ0FBQyxFQUFEQTtBQUFMLEdBQVA7QUFFRDs7QUFFTSxTQUFTRSxhQUFULENBQXVCQyxFQUF2QixFQUEyQkMsRUFBM0IsRUFBK0JDLEVBQS9CLEVBQW1DQyxFQUFuQyxFQUF1QztBQUU1QyxNQUFNUixDQUFDLEdBQUdGLElBQUksQ0FBQ1csR0FBTCxDQUFTSixFQUFFLEdBQUdFLEVBQWQsQ0FBVjtBQUNBLE1BQU1MLENBQUMsR0FBR0osSUFBSSxDQUFDVyxHQUFMLENBQVNILEVBQUUsR0FBR0UsRUFBZCxDQUFWO0FBRUEsTUFBTUUsQ0FBQyxHQUFHWixJQUFJLENBQUNhLElBQUwsQ0FBVWIsSUFBSSxDQUFDYyxHQUFMLENBQVNaLENBQVQsRUFBWSxDQUFaLElBQWlCRixJQUFJLENBQUNjLEdBQUwsQ0FBU1YsQ0FBVCxFQUFZLENBQVosQ0FBM0IsQ0FBVjtBQUNBLE1BQU1DLEdBQUcsR0FBR0QsQ0FBQyxHQUFHUSxDQUFoQjtBQUNBLE1BQU1HLE1BQU0sR0FBR2YsSUFBSSxDQUFDZ0IsSUFBTCxDQUFVWCxHQUFWLENBQWYsQ0FQNEMsQ0FPYjs7QUFDL0IsTUFBSVIsS0FBSyxHQUFHRyxJQUFJLENBQUNpQixLQUFMLENBQVcsT0FBT2pCLElBQUksQ0FBQ0MsRUFBTCxHQUFVYyxNQUFqQixJQUEyQixHQUF0QyxJQUE2QyxHQUF6RCxDQVI0QyxDQVFrQjs7QUFFOUQsTUFBSU4sRUFBRSxHQUFHRixFQUFMLElBQVdHLEVBQUUsR0FBR0YsRUFBcEIsRUFBd0I7QUFBQztBQUN2QlgsSUFBQUEsS0FBSyxHQUFHLE1BQU1BLEtBQWQ7QUFDRDs7QUFDRCxNQUFJWSxFQUFFLEtBQUtGLEVBQVAsSUFBYUcsRUFBRSxHQUFHRixFQUF0QixFQUEwQjtBQUFDO0FBQ3pCWCxJQUFBQSxLQUFLLEdBQUcsR0FBUjtBQUNEOztBQUNELE1BQUlZLEVBQUUsR0FBR0YsRUFBTCxJQUFXRyxFQUFFLEtBQUtGLEVBQXRCLEVBQTBCO0FBQUM7QUFDekJYLElBQUFBLEtBQUssR0FBRyxFQUFSO0FBQ0Q7O0FBQ0QsTUFBSVksRUFBRSxHQUFHRixFQUFMLElBQVdHLEVBQUUsR0FBR0YsRUFBcEIsRUFBd0I7QUFBQztBQUN2QlgsSUFBQUEsS0FBSyxHQUFHLE1BQU1BLEtBQWQ7QUFDRDs7QUFDRCxNQUFJWSxFQUFFLEdBQUdGLEVBQUwsSUFBV0csRUFBRSxLQUFLRixFQUF0QixFQUEwQjtBQUFDO0FBQ3pCWCxJQUFBQSxLQUFLLEdBQUcsR0FBUjtBQUNEOztBQUNELE1BQUlZLEVBQUUsR0FBR0YsRUFBTCxJQUFXRyxFQUFFLEdBQUdGLEVBQXBCLEVBQXdCO0FBQUM7QUFDdkJYLElBQUFBLEtBQUssR0FBRyxNQUFNQSxLQUFkO0FBQ0QsR0EzQjJDLENBNkI1Qzs7O0FBQ0EsU0FBT0EsS0FBUDtBQUVEOztBQUVNLFNBQVNxQixlQUFULENBQXlCQyxRQUF6QixFQUFtQ0MsVUFBbkMsRUFBK0M7QUFDcEQsU0FBT0QsUUFBUSxDQUFDRSxvQkFBVCxDQUE4QkQsVUFBVSxDQUFDRSxPQUFYLENBQW1CQyxxQkFBbkIsQ0FBeUNDLEVBQUUsQ0FBQ0MsRUFBSCxDQUFNTCxVQUFVLENBQUNsQixDQUFqQixFQUFvQmtCLFVBQVUsQ0FBQ2hCLENBQS9CLENBQXpDLENBQTlCLENBQVA7QUFDRDs7QUFFTSxTQUFTc0IsU0FBVCxDQUFtQkMsQ0FBbkIsRUFBc0JDLENBQXRCLEVBQTZCO0FBQUEsTUFBUEEsQ0FBTztBQUFQQSxJQUFBQSxDQUFPLEdBQUgsQ0FBRztBQUFBOztBQUNsQyxNQUFJQyxHQUFHLEdBQUc3QixJQUFJLENBQUM2QixHQUFMLENBQVNGLENBQVQsRUFBWUMsQ0FBWixDQUFWO0FBQ0EsTUFBSUUsR0FBRyxHQUFHOUIsSUFBSSxDQUFDOEIsR0FBTCxDQUFTSCxDQUFULEVBQVlDLENBQVosQ0FBVjtBQUNBLFNBQU81QixJQUFJLENBQUNpQixLQUFMLENBQVdqQixJQUFJLENBQUMrQixNQUFMLE1BQWlCRixHQUFHLEdBQUdDLEdBQXZCLElBQThCQSxHQUF6QyxDQUFQO0FBQ0Q7O0FBRU0sU0FBU0UsZUFBVCxDQUF5QkMsR0FBekIsRUFBOEI7QUFDbkMsTUFBTUMsTUFBTSxHQUFHLEVBQWY7QUFDQSxNQUFNQyxNQUFNLEdBQUdGLEdBQUcsQ0FBQ0csTUFBSixFQUFmOztBQUNBLFNBQU9ELE1BQU0sQ0FBQ0UsTUFBUCxHQUFnQixDQUF2QixFQUEwQjtBQUN4QixRQUFNQyxXQUFXLEdBQUd0QyxJQUFJLENBQUNpQixLQUFMLENBQVdrQixNQUFNLENBQUNFLE1BQVAsR0FBZ0JyQyxJQUFJLENBQUMrQixNQUFMLEVBQTNCLENBQXBCO0FBQ0FHLElBQUFBLE1BQU0sQ0FBQ0ssSUFBUCxDQUFZSixNQUFNLENBQUNHLFdBQUQsQ0FBbEI7QUFDQUgsSUFBQUEsTUFBTSxDQUFDSyxNQUFQLENBQWNGLFdBQWQsRUFBMkIsQ0FBM0I7QUFDRDs7QUFDRCxTQUFPSixNQUFQO0FBQ0Q7O0FBRU0sU0FBU08sZ0JBQVQsQ0FBMEJDLE9BQTFCLEVBQW1DQyxJQUFuQyxFQUF5Q0MsSUFBekMsRUFBK0M7QUFDcEQsTUFBTUMsRUFBRSxHQUFHRixJQUFJLEdBQUdELE9BQU8sQ0FBQ0ksS0FBMUI7QUFDQSxNQUFNQyxFQUFFLEdBQUdILElBQUksR0FBR0YsT0FBTyxDQUFDTSxNQUExQjtBQUNBLE1BQU1DLENBQUMsR0FBR2pELElBQUksQ0FBQzhCLEdBQUwsQ0FBU2UsRUFBVCxFQUFhRSxFQUFiLENBQVY7QUFDQUwsRUFBQUEsT0FBTyxDQUFDUSxLQUFSLEdBQWdCbEQsSUFBSSxDQUFDbUQsS0FBTCxDQUFXRixDQUFDLEdBQUcsSUFBZixJQUF1QixJQUF2QztBQUNEOztBQUdNLFNBQVNHLGtCQUFULENBQTRCakMsUUFBNUIsRUFBc0NDLFVBQXRDLEVBQWtEO0FBQ3hELE1BQU1pQyxRQUFRLEdBQUdqQyxVQUFVLENBQUNrQyxNQUFYLENBQWtCL0IscUJBQWxCLENBQXdDQyxFQUFFLENBQUNDLEVBQUgsQ0FBTUwsVUFBVSxDQUFDbEIsQ0FBakIsRUFBb0JrQixVQUFVLENBQUNoQixDQUEvQixDQUF4QyxDQUFqQjtBQUNBLE1BQU1tRCxRQUFRLEdBQUdwQyxRQUFRLENBQUNtQyxNQUFULENBQWdCakMsb0JBQWhCLENBQXFDRyxFQUFFLENBQUNDLEVBQUgsQ0FBTTRCLFFBQVEsQ0FBQ25ELENBQWYsRUFBa0JtRCxRQUFRLENBQUNqRCxDQUEzQixDQUFyQyxDQUFqQjtBQUNBLFNBQU9tRCxRQUFQO0FBQ0EiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRQb3NCeUFuZ2xlKGFuZ2xlLCBsZW4pIHtcblxuICBjb25zdCByYWRpYW4gPSBhbmdsZSAqIE1hdGguUEkgLyAxODA7XG4gIGNvbnN0IHggPSBNYXRoLnNpbihyYWRpYW4pICogbGVuO1xuICBjb25zdCB5ID0gTWF0aC5jb3MocmFkaWFuKSAqIGxlbjtcblxuICByZXR1cm4geyB4LCB5IH07XG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFuZ2xlQnlQb3MocHgsIHB5LCBteCwgbXkpIHtcblxuICBjb25zdCB4ID0gTWF0aC5hYnMocHggLSBteCk7XG4gIGNvbnN0IHkgPSBNYXRoLmFicyhweSAtIG15KTtcblxuICBjb25zdCB6ID0gTWF0aC5zcXJ0KE1hdGgucG93KHgsIDIpICsgTWF0aC5wb3coeSwgMikpO1xuICBjb25zdCBjb3MgPSB5IC8gejtcbiAgY29uc3QgcmFkaW5hID0gTWF0aC5hY29zKGNvcyk7IC8vIOeUqOWPjeS4ieinkuWHveaVsOaxguW8p+W6plxuICBsZXQgYW5nbGUgPSBNYXRoLmZsb29yKDE4MCAvIChNYXRoLlBJIC8gcmFkaW5hKSAqIDEwMCkgLyAxMDA7IC8vIOWwhuW8p+W6pui9rOaNouaIkOinkuW6plxuXG4gIGlmIChteCA+IHB4ICYmIG15ID4gcHkpIHsvLyDpvKDmoIflnKjnrKzlm5vosaHpmZBcbiAgICBhbmdsZSA9IDE4MCAtIGFuZ2xlO1xuICB9XG4gIGlmIChteCA9PT0gcHggJiYgbXkgPiBweSkgey8vIOm8oOagh+WcqHnovbTotJ/mlrnlkJHkuIpcbiAgICBhbmdsZSA9IDE4MDtcbiAgfVxuICBpZiAobXggPiBweCAmJiBteSA9PT0gcHkpIHsvLyDpvKDmoIflnKh46L205q2j5pa55ZCR5LiKXG4gICAgYW5nbGUgPSA5MDtcbiAgfVxuICBpZiAobXggPCBweCAmJiBteSA+IHB5KSB7Ly8g6byg5qCH5Zyo56ys5LiJ6LGh6ZmQXG4gICAgYW5nbGUgPSAxODAgKyBhbmdsZTtcbiAgfVxuICBpZiAobXggPCBweCAmJiBteSA9PT0gcHkpIHsvLyDpvKDmoIflnKh46L206LSf5pa55ZCRXG4gICAgYW5nbGUgPSAyNzA7XG4gIH1cbiAgaWYgKG14IDwgcHggJiYgbXkgPCBweSkgey8vIOm8oOagh+WcqOesrOS6jOixoemZkFxuICAgIGFuZ2xlID0gMzYwIC0gYW5nbGU7XG4gIH1cblxuICAvLyBjb25zb2xlLmxvZygnYW5nbGU6ICcsIGFuZ2xlKTtcbiAgcmV0dXJuIGFuZ2xlO1xuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGNoYW5nZU5vZGVQb3MoYmFzZU5vZGUsIHRhcmdldE5vZGUpIHtcbiAgcmV0dXJuIGJhc2VOb2RlLmNvbnZlcnRUb05vZGVTcGFjZUFSKHRhcmdldE5vZGUuX3BhcmVudC5jb252ZXJ0VG9Xb3JsZFNwYWNlQVIoY2MudjIodGFyZ2V0Tm9kZS54LCB0YXJnZXROb2RlLnkpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSYW5kb21JbnQoYSwgYiA9IDApIHtcbiAgbGV0IG1heCA9IE1hdGgubWF4KGEsIGIpO1xuICBsZXQgbWluID0gTWF0aC5taW4oYSwgYik7XG4gIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSArIG1pbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByYW5kb21Tb3J0QnlBcnIoYXJyKSB7XG4gIGNvbnN0IG5ld0FyciA9IFtdO1xuICBjb25zdCB0bXBBcnIgPSBhcnIuY29uY2F0KCk7XG4gIHdoaWxlICh0bXBBcnIubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHJhbmRvbUluZGV4ID0gTWF0aC5mbG9vcih0bXBBcnIubGVuZ3RoICogTWF0aC5yYW5kb20oKSk7XG4gICAgbmV3QXJyLnB1c2godG1wQXJyW3JhbmRvbUluZGV4XSk7XG4gICAgdG1wQXJyLnNwbGljZShyYW5kb21JbmRleCwgMSk7XG4gIH1cbiAgcmV0dXJuIG5ld0Fycjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNwck5vZGVNYXhMZW4oc3ByTm9kZSwgbWF4VywgbWF4SCkge1xuICBjb25zdCBzeCA9IG1heFcgLyBzcHJOb2RlLndpZHRoO1xuICBjb25zdCBzeSA9IG1heEggLyBzcHJOb2RlLmhlaWdodDtcbiAgY29uc3QgcyA9IE1hdGgubWluKHN4LCBzeSk7XG4gIHNwck5vZGUuc2NhbGUgPSBNYXRoLnJvdW5kKHMgKiAxMDAwKSAvIDEwMDA7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsUG9zVG9sb2NhbFBvcyhiYXNlTm9kZSwgdGFyZ2V0Tm9kZSkge1xuXHRjb25zdCB3b3JsZFBvcyA9IHRhcmdldE5vZGUucGFyZW50LmNvbnZlcnRUb1dvcmxkU3BhY2VBUihjYy52Mih0YXJnZXROb2RlLngsIHRhcmdldE5vZGUueSkpO1xuXHRjb25zdCBsb2NhbFBvcyA9IGJhc2VOb2RlLnBhcmVudC5jb252ZXJ0VG9Ob2RlU3BhY2VBUihjYy52Mih3b3JsZFBvcy54LCB3b3JsZFBvcy55KSk7XG5cdHJldHVybiBsb2NhbFBvcztcbn1cbiJdfQ== //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9tel8wMDMvc2NyaXB0L3V0aWwuanMiXSwibmFtZXMiOlsiZ2V0UG9zQnlBbmdsZSIsImFuZ2xlIiwibGVuIiwicmFkaWFuIiwiTWF0aCIsIlBJIiwieCIsInNpbiIsInkiLCJjb3MiLCJnZXRBbmdsZUJ5UG9zIiwicHgiLCJweSIsIm14IiwibXkiLCJhYnMiLCJ6Iiwic3FydCIsInBvdyIsInJhZGluYSIsImFjb3MiLCJmbG9vciIsImV4Y2hhbmdlTm9kZVBvcyIsImJhc2VOb2RlIiwidGFyZ2V0Tm9kZSIsImNvbnZlcnRUb05vZGVTcGFjZUFSIiwiX3BhcmVudCIsImNvbnZlcnRUb1dvcmxkU3BhY2VBUiIsImNjIiwidjIiLCJSYW5kb21JbnQiLCJhIiwiYiIsIm1heCIsIm1pbiIsInJhbmRvbSIsInJhbmRvbVNvcnRCeUFyciIsImFyciIsIm5ld0FyciIsInRtcEFyciIsImNvbmNhdCIsImxlbmd0aCIsInJhbmRvbUluZGV4IiwicHVzaCIsInNwbGljZSIsInNldFNwck5vZGVNYXhMZW4iLCJzcHJOb2RlIiwibWF4VyIsIm1heEgiLCJzeCIsIndpZHRoIiwic3kiLCJoZWlnaHQiLCJzIiwic2NhbGUiLCJyb3VuZCIsImxvY2FsUG9zVG9sb2NhbFBvcyIsIndvcmxkUG9zIiwicGFyZW50IiwibG9jYWxQb3MiLCJnZXRTY2FsZVJhdGVCeTJOb2RlIiwibWF4RmxhZyIsIndvcmxkUmVjdDEiLCJnZXRCb3VuZGluZ0JveFRvV29ybGQiLCJ3b3JsZFJlY3QyIiwiYXN5bmNDQ0xvYWQiLCJyZXNvdXJjZXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImxvYWRlciIsImxvYWQiLCJlcnJvciIsImFzc2V0cyIsImUiLCJsb2FkRHJhZ29uQm9uZXMiLCJpbWFnZSIsImF0bGFzIiwic2tlIiwiY2FsbGJhY2siLCJhbGwiLCJ1cmwiLCJ0eXBlIiwidGhlbiIsInRleHR1cmUiLCJhdGxhc0pzb24iLCJkcmFnb25Cb25lc0pzb24iLCJjb25zb2xlIiwibG9nIiwicGxheUF1ZGlvIiwiY2xpcCIsInZvbHVtZSIsImlkIiwiYXVkaW9FbmdpbmUiLCJwbGF5Iiwic2V0RmluaXNoQ2FsbGJhY2siLCJhc3luY0RlbGF5IiwidGltZSIsInNldFRpbWVvdXQiLCJGaXJld29ya1NldHRpbmdzIiwibm9kZUxpc3QiLCJwb3MiLCJzaWRlIiwicmFuZ2UiLCJudW1iZXIiLCJzY2Fsc2VSYW5nZSIsImNvcHkiLCJmaXJld29yayIsInNob3dGaXJld29ya3MiLCJmaXJld29ya1NldHRpbmdzIiwiQXJyYXkiLCJmaWxsIiwiZm9yRWFjaCIsIl8iLCJpIiwicmFiYm9uTm9kZSIsIk5vZGUiLCJub2RlIiwiaW5zdGFudGlhdGUiLCJhY3RpdmUiLCJyYXRlIiwiYXN5bmNUd2VlbkJ5IiwiZWFzaW5nIiwidHdlZW4iLCJieSIsInN0YXJ0IiwidG8iLCJyYWJib25GYWxsIiwidW5pb24iLCJyZXBlYXRGb3JldmVyIiwiZGVsYXkiLCJvcGFjaXR5IiwiY2FsbCIsInN0b3BBbGxBY3Rpb25zIiwib2Zmc2V0WCIsImFzeW5jVHdlZW5UbyIsImR1cmF0aW9uIiwib2JqIiwiZWFzZSIsInVuZGVmaW5lZCIsInNob3dUcmVibGVGaXJld29yayIsInJhYmJvbkxpc3QiLCJtaWRkbGUiLCJsZWZ0IiwicmlnaHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBTyxTQUFTQSxhQUFULENBQXVCQyxLQUF2QixFQUE4QkMsR0FBOUIsRUFBbUM7QUFFeEMsTUFBTUMsTUFBTSxHQUFHRixLQUFLLEdBQUdHLElBQUksQ0FBQ0MsRUFBYixHQUFrQixHQUFqQztBQUNBLE1BQU1DLENBQUMsR0FBR0YsSUFBSSxDQUFDRyxHQUFMLENBQVNKLE1BQVQsSUFBbUJELEdBQTdCO0FBQ0EsTUFBTU0sQ0FBQyxHQUFHSixJQUFJLENBQUNLLEdBQUwsQ0FBU04sTUFBVCxJQUFtQkQsR0FBN0I7QUFFQSxTQUFPO0FBQUVJLElBQUFBLENBQUMsRUFBREEs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RSxFQUFFLENBQUNDLEVBQUgsQ0FBTSxDQUFDLEdBQVAsRUFBWSxDQUFDLEdBQWIsQ0FBWDtBQUNBa0gsRUFBQUEsSUFBSSxDQUFDekMsSUFBTCxHQUFZMUUsRUFBRSxDQUFDQyxFQUFILENBQU0sR0FBTixFQUFXLElBQVgsQ0FBWjtBQUVBLE1BQU1tSCxLQUFLLEdBQUc3QyxnQkFBZ0IsQ0FBQ08sSUFBakIsQ0FBc0JvQyxNQUF0QixDQUFkO0FBQ0FFLEVBQUFBLEtBQUssQ0FBQzNDLEdBQU4sR0FBWXpFLEVBQUUsQ0FBQ0MsRUFBSCxDQUFNLEdBQU4sRUFBVyxDQUFDLEdBQVosQ0FBWjtBQUNBbUgsRUFBQUEsS0FBSyxDQUFDMUMsSUFBTixHQUFhMUUsRUFBRSxDQUFDQyxFQUFILENBQU0sQ0FBQyxHQUFQLEVBQVksSUFBWixDQUFiO0FBRUErRSxFQUFBQSxhQUFhLENBQUNrQyxNQUFELENBQWI7QUFDQWxDLEVBQUFBLGFBQWEsQ0FBQ21DLElBQUQsQ0FBYjtBQUNBbkMsRUFBQUEsYUFBYSxDQUFDb0MsS0FBRCxDQUFiO0FBQ0QiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBnZXRQb3NCeUFuZ2xlKGFuZ2xlLCBsZW4pIHtcblxuICBjb25zdCByYWRpYW4gPSBhbmdsZSAqIE1hdGguUEkgLyAxODA7XG4gIGNvbnN0IHggPSBNYXRoLnNpbihyYWRpYW4pICogbGVuO1xuICBjb25zdCB5ID0gTWF0aC5jb3MocmFkaWFuKSAqIGxlbjtcblxuICByZXR1cm4geyB4LCB5IH07XG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFuZ2xlQnlQb3MocHgsIHB5LCBteCwgbXkpIHtcblxuICBjb25zdCB4ID0gTWF0aC5hYnMocHggLSBteCk7XG4gIGNvbnN0IHkgPSBNYXRoLmFicyhweSAtIG15KTtcblxuICBjb25zdCB6ID0gTWF0aC5zcXJ0KE1hdGgucG93KHgsIDIpICsgTWF0aC5wb3coeSwgMikpO1xuICBjb25zdCBjb3MgPSB5IC8gejtcbiAgY29uc3QgcmFkaW5hID0gTWF0aC5hY29zKGNvcyk7IC8vIOeUqOWPjeS4ieinkuWHveaVsOaxguW8p+W6plxuICBsZXQgYW5nbGUgPSBNYXRoLmZsb29yKDE4MCAvIChNYXRoLlBJIC8gcmFkaW5hKSAqIDEwMCkgLyAxMDA7IC8vIOWwhuW8p+W6pui9rOaNouaIkOinkuW6plxuXG4gIGlmIChteCA+IHB4ICYmIG15ID4gcHkpIHsvLyDpvKDmoIflnKjnrKzlm5vosaHpmZBcbiAgICBhbmdsZSA9IDE4MCAtIGFuZ2xlO1xuICB9XG4gIGlmIChteCA9PT0gcHggJiYgbXkgPiBweSkgey8vIOm8oOagh+WcqHnovbTotJ/mlrnlkJHkuIpcbiAgICBhbmdsZSA9IDE4MDtcbiAgfVxuICBpZiAobXggPiBweCAmJiBteSA9PT0gcHkpIHsvLyDpvKDmoIflnKh46L205q2j5pa55ZCR5LiKXG4gICAgYW5nbGUgPSA5MDtcbiAgfVxuICBpZiAobXggPCBweCAmJiBteSA+IHB5KSB7Ly8g6byg5qCH5Zyo56ys5LiJ6LGh6ZmQXG4gICAgYW5nbGUgPSAxODAgKyBhbmdsZTtcbiAgfVxuICBpZiAobXggPCBweCAmJiBteSA9PT0gcHkpIHsvLyDpvKDmoIflnKh46L206LSf5pa55ZCRXG4gICAgYW5nbGUgPSAyNzA7XG4gIH1cbiAgaWYgKG14IDwgcHggJiYgbXkgPCBweSkgey8vIOm8oOagh+WcqOesrOS6jOixoemZkFxuICAgIGFuZ2xlID0gMzYwIC0gYW5nbGU7XG4gIH1cblxuICAvLyBjb25zb2xlLmxvZygnYW5nbGU6ICcsIGFuZ2xlKTtcbiAgcmV0dXJuIGFuZ2xlO1xuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGNoYW5nZU5vZGVQb3MoYmFzZU5vZGUsIHRhcmdldE5vZGUpIHtcbiAgcmV0dXJuIGJhc2VOb2RlLmNvbnZlcnRUb05vZGVTcGFjZUFSKHRhcmdldE5vZGUuX3BhcmVudC5jb252ZXJ0VG9Xb3JsZFNwYWNlQVIoY2MudjIodGFyZ2V0Tm9kZS54LCB0YXJnZXROb2RlLnkpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSYW5kb21JbnQoYSwgYiA9IDApIHtcbiAgbGV0IG1heCA9IE1hdGgubWF4KGEsIGIpO1xuICBsZXQgbWluID0gTWF0aC5taW4oYSwgYik7XG4gIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSArIG1pbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByYW5kb21Tb3J0QnlBcnIoYXJyKSB7XG4gIGNvbnN0IG5ld0FyciA9IFtdO1xuICBjb25zdCB0bXBBcnIgPSBhcnIuY29uY2F0KCk7XG4gIHdoaWxlICh0bXBBcnIubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHJhbmRvbUluZGV4ID0gTWF0aC5mbG9vcih0bXBBcnIubGVuZ3RoICogTWF0aC5yYW5kb20oKSk7XG4gICAgbmV3QXJyLnB1c2godG1wQXJyW3JhbmRvbUluZGV4XSk7XG4gICAgdG1wQXJyLnNwbGljZShyYW5kb21JbmRleCwgMSk7XG4gIH1cbiAgcmV0dXJuIG5ld0Fycjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFNwck5vZGVNYXhMZW4oc3ByTm9kZSwgbWF4VywgbWF4SCkge1xuICBjb25zdCBzeCA9IG1heFcgLyBzcHJOb2RlLndpZHRoO1xuICBjb25zdCBzeSA9IG1heEggLyBzcHJOb2RlLmhlaWdodDtcbiAgY29uc3QgcyA9IE1hdGgubWluKHN4LCBzeSk7XG4gIHNwck5vZGUuc2NhbGUgPSBNYXRoLnJvdW5kKHMgKiAxMDAwKSAvIDEwMDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbFBvc1RvbG9jYWxQb3MoYmFzZU5vZGUsIHRhcmdldE5vZGUpIHtcbiAgY29uc3Qgd29ybGRQb3MgPSB0YXJnZXROb2RlLnBhcmVudC5jb252ZXJ0VG9Xb3JsZFNwYWNlQVIoY2MudjIodGFyZ2V0Tm9kZS54LCB0YXJnZXROb2RlLnkpKTtcbiAgY29uc3QgbG9jYWxQb3MgPSBiYXNlTm9kZS5wYXJlbnQuY29udmVydFRvTm9kZVNwYWNlQVIoY2MudjIod29ybGRQb3MueCwgd29ybGRQb3MueSkpO1xuICByZXR1cm4gbG9jYWxQb3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2FsZVJhdGVCeTJOb2RlKGJhc2VOb2RlLCB0YXJnZXROb2RlLCBtYXhGbGFnID0gdHJ1ZSkge1xuICBjb25zdCB3b3JsZFJlY3QxID0gdGFyZ2V0Tm9kZS5nZXRCb3VuZGluZ0JveFRvV29ybGQoKTtcbiAgY29uc3Qgd29ybGRSZWN0MiA9IGJhc2VOb2RlLmdldEJvdW5kaW5nQm94VG9Xb3JsZCgpO1xuXG4gIGNvbnN0IHN4ID0gd29ybGRSZWN0MS53aWR0aCAvIHdvcmxkUmVjdDIud2lkdGg7XG4gIGNvbnN0IHN5ID0gd29ybGRSZWN0MS5oZWlnaHQgLyB3b3JsZFJlY3QyLmhlaWdodDtcbiAgaWYgKG1heEZsYWcpIHtcbiAgICByZXR1cm4gTWF0aC5tYXgoc3gsIHN5KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gTWF0aC5taW4oc3gsIHN5KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXN5bmNDQ0xvYWQocmVzb3VyY2VzKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNjLmxvYWRlci5sb2FkKHJlc291cmNlcywgKGVycm9yLCBhc3NldHMpID0+IHtcbiAgICAgICAgcmVzb2x2ZShhc3NldHMpXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZWplY3QoZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWREcmFnb25Cb25lcyhpbWFnZSwgYXRsYXMsIHNrZSwgY2FsbGJhY2spIHtcbiAgUHJvbWlzZS5hbGwoW1xuICAgIGFzeW5jQ0NMb2FkKGltYWdlKSxcbiAgICBhc3luY0NDTG9hZCh7IHVybDogYXRsYXMsIHR5cGU6ICd0eHQnIH0pLFxuICAgIGFzeW5jQ0NMb2FkKHsgdXJsOiBza2UsIHR5cGU6ICd0eHQnIH0pXG4gIF0pLnRoZW4oKFt0ZXh0dXJlLCBhdGxhc0pzb24sIGRyYWdvbkJvbmVzSnNvbl0pID0+IHtcbiAgICBjYWxsYmFjayh0ZXh0dXJlLCBhdGxhc0pzb24sIGRyYWdvbkJvbmVzSnNvbik7XG4gIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgY29uc29sZS5sb2coZSk7XG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGxheUF1ZGlvKGNsaXAsIHZvbHVtZSA9IDEpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFjbGlwKSB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaWQgPSBjYy5hdWRpb0VuZ2luZS5wbGF5KGNsaXAsIGZhbHNlLCB2b2x1bWUpO1xuICAgICAgY2MuYXVkaW9FbmdpbmUuc2V0RmluaXNoQ2FsbGJhY2soaWQsICgpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVqZWN0KGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3luY0RlbGF5KHRpbWUpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICB0cnkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0sIHRpbWUgKiAxMDAwKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZWplY3QoZSk7XG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgY2xhc3MgRmlyZXdvcmtTZXR0aW5ncyB7XG4gIGJhc2VOb2RlOyAvLyDniLboioLngrlcbiAgbm9kZUxpc3Q7IC8vIOeBq+iKseiKgueCueeahGFycmF5XG4gIHBvczsgLy8g5Y+R5bCE54K5XG4gIHNpZGU7IC8vIOWPkeWwhOaWueWQkVxuICByYW5nZTsgLy8g5omp5pWj6IyD5Zu0XG4gIG51bWJlcjsgLy8g5Y+R5bCE5pWw6YePXG4gIHNjYWxzZVJhbmdlOyAvLyDnvKnmlL7ojIPlm7RcbiAgY29uc3RydWN0b3IoYmFzZU5vZGUsIG5vZGVMaXN0LFxuICAgIHBvcyA9IGNjLnYyKDAsIDApLFxuICAgIHNpZGUgPSBjYy52MigwLCAxMDApLFxuICAgIHJhbmdlID0gNTAsXG4gICAgbnVtYmVyID0gMTAwLFxuICAgIHNjYWxzZVJhbmdlID0gMFxuICApIHtcbiAgICB0aGlzLmJhc2VOb2RlID0gYmFzZU5vZGU7XG4gICAgdGhpcy5ub2RlTGlzdCA9IG5vZGVMaXN0O1xuICAgIHRoaXMucG9zID0gcG9zO1xuICAgIHRoaXMuc2lkZSA9IHNpZGU7XG4gICAgdGhpcy5yYW5nZSA9IHJhbmdlO1xuICAgIHRoaXMubnVtYmVyID0gbnVtYmVyO1xuICAgIHRoaXMuc2NhbHNlUmFuZ2UgPSBzY2Fsc2VSYW5nZTtcbiAgfVxuXG4gIHN0YXRpYyBjb3B5KGZpcmV3b3JrKSB7XG4gICAgcmV0dXJuIG5ldyBGaXJld29ya1NldHRpbmdzKFxuICAgICAgZmlyZXdvcmsuYmFzZU5vZGUsXG4gICAgICBmaXJld29yay5ub2RlTGlzdCxcbiAgICAgIGZpcmV3b3JrLnBvcyxcbiAgICAgIGZpcmV3b3JrLnNpZGUsXG4gICAgICBmaXJld29yay5yYW5nZSxcbiAgICAgIGZpcmV3b3JrLm51bWJlcixcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaG93RmlyZXdvcmtzKGZpcmV3b3JrU2V0dGluZ3MpIHtcbiAgY29uc3QgeyBiYXNlTm9kZSwgbm9kZUxpc3QsIHBvcywgc2lkZSwgcmFuZ2UsIG51bWJlciwgc2NhbHNlUmFuZ2UgfSA9IGZpcmV3b3JrU2V0dGluZ3M7XG4gIG5ldyBBcnJheShudW1iZXIpLmZpbGwoJyAnKS5mb3JFYWNoKGFzeW5jIChfLCBpKSA9PiB7XG5cbiAgICBsZXQgcmFiYm9uTm9kZSA9IG5ldyBjYy5Ob2RlKCk7XG4gICAgcmFiYm9uTm9kZS5wYXJlbnQgPSBiYXNlTm9kZTtcbiAgICByYWJib25Ob2RlLnggPSBwb3MueDtcbiAgICByYWJib25Ob2RlLnkgPSBwb3MueTtcbiAgICByYWJib25Ob2RlLmFuZ2xlID0gNjAgKiBNYXRoLnJhbmRvbSgpIC0gMzA7XG5cbiAgICBsZXQgbm9kZSA9IGNjLmluc3RhbnRpYXRlKG5vZGVMaXN0W1JhbmRvbUludChub2RlTGlzdC5sZW5ndGgpXSk7XG4gICAgbm9kZS5wYXJlbnQgPSByYWJib25Ob2RlO1xuICAgIG5vZGUuYWN0aXZlID0gdHJ1ZTtcbiAgICBub2RlLnggPSAwO1xuICAgIG5vZGUueSA9IDA7XG4gICAgbm9kZS5hbmdsZSA9IDA7XG4gICAgbm9kZS5zY2FsZSA9IChNYXRoLnJhbmRvbSgpIC0gMC41KSAqIHNjYWxzZVJhbmdlICsgMTtcblxuICAgIGNvbnN0IHJhdGUgPSBNYXRoLnJhbmRvbSgpO1xuICAgIGNvbnN0IGFuZ2xlID0gTWF0aC5QSSAqIChNYXRoLnJhbmRvbSgpICogMiAtIDEpO1xuXG4gICAgYXdhaXQgYXN5bmNUd2VlbkJ5KHJhYmJvbk5vZGUsIDAuMywge1xuICAgICAgeDogc2lkZS54ICogcmF0ZSArIE1hdGguY29zKGFuZ2xlKSAqIHJhbmdlICogcmF0ZSxcbiAgICAgIHk6IHNpZGUueSAqIHJhdGUgKyBNYXRoLnNpbihhbmdsZSkgKiByYW5nZSAqIHJhdGVcbiAgICB9LCB7XG4gICAgICBlYXNpbmc6ICdxdWFkSW4nXG4gICAgfSk7XG5cbiAgICBjYy50d2VlbihyYWJib25Ob2RlKVxuICAgICAgLmJ5KDgsIHsgeTogLTIwMDAgfSlcbiAgICAgIC5zdGFydCgpO1xuXG4gICAgY2MudHdlZW4ocmFiYm9uTm9kZSlcbiAgICAgIC50byg1LCB7IHNjYWxlOiAoTWF0aC5yYW5kb20oKSAtIDAuNSkgKiBzY2Fsc2VSYW5nZSArIDEgfSlcbiAgICAgIC5zdGFydCgpO1xuXG4gICAgcmFiYm9uRmFsbChyYWJib25Ob2RlKTtcblxuICAgIGF3YWl0IGFzeW5jRGVsYXkoTWF0aC5yYW5kb20oKSk7XG4gICAgY2MudHdlZW4obm9kZSlcbiAgICAgIC5ieSgwLjE1LCB7IHg6IC0xMCwgYW5nbGU6IC0xMCB9KVxuICAgICAgLmJ5KDAuMywgeyB4OiAyMCwgYW5nbGU6IDIwIH0pXG4gICAgICAuYnkoMC4xNSwgeyB4OiAtMTAsIGFuZ2xlOiAtMTAgfSlcbiAgICAgIC51bmlvbigpXG4gICAgICAucmVwZWF0Rm9yZXZlcigpXG4gICAgICAuc3RhcnQoKTtcblxuICAgIGNjLnR3ZWVuKHJhYmJvbk5vZGUpXG4gICAgICAuZGVsYXkoNSlcbiAgICAgIC50bygwLjMsIHsgb3BhY2l0eTogMCB9KVxuICAgICAgLmNhbGwoKCkgPT4ge1xuICAgICAgICBub2RlLnN0b3BBbGxBY3Rpb25zKCk7XG4gICAgICAgIG5vZGUuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIG5vZGUucGFyZW50ID0gbnVsbDtcbiAgICAgICAgbm9kZSA9IG51bGw7XG4gICAgICB9KVxuICAgICAgLnN0YXJ0KCk7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiByYWJib25GYWxsKG5vZGUpIHtcbiAgY29uc3QgdGltZSA9IDEgKyBNYXRoLnJhbmRvbSgpO1xuICBjb25zdCBvZmZzZXRYID0gUmFuZG9tSW50KC0yMDAsIDIwMCkgKiB0aW1lO1xuICBhd2FpdCBhc3luY1R3ZWVuQnkobm9kZSwgdGltZSwgeyB4OiBvZmZzZXRYLCBhbmdsZTogb2Zmc2V0WCAqIDYwIC8gMjAwIH0pO1xuICByYWJib25GYWxsKG5vZGUpO1xufVxuXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3luY1R3ZWVuVG8obm9kZSwgZHVyYXRpb24sIG9iaiwgZWFzZSA9IHVuZGVmaW5lZCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjYy50d2Vlbihub2RlKVxuICAgICAgICAudG8oZHVyYXRpb24sIG9iaiwgZWFzZSlcbiAgICAgICAgLmNhbGwoKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSlcbiAgICAgICAgLnN0YXJ0KCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVqZWN0KGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3luY1R3ZWVuQnkobm9kZSwgZHVyYXRpb24sIG9iaiwgZWFzZSA9IHVuZGVmaW5lZCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjYy50d2Vlbihub2RlKVxuICAgICAgICAuYnkoZHVyYXRpb24sIG9iaiwgZWFzZSlcbiAgICAgICAgLmNhbGwoKCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSlcbiAgICAgICAgLnN0YXJ0KCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVqZWN0KGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93VHJlYmxlRmlyZXdvcmsoYmFzZU5vZGUsIHJhYmJvbkxpc3QpIHtcbiAgY29uc3QgbWlkZGxlID0gbmV3IEZpcmV3b3JrU2V0dGluZ3MoYmFzZU5vZGUsIHJhYmJvbkxpc3QpO1xuICBtaWRkbGUucG9zID0gY2MudjIoMCwgLTQwMCk7XG4gIG1pZGRsZS5zaWRlID0gY2MudjIoMCwgMTAwMCk7XG4gIG1pZGRsZS5yYW5nZSA9IDIwMDtcbiAgbWlkZGxlLm51bWJlciA9IDEwMDtcbiAgbWlkZGxlLnNjYWxzZVJhbmdlID0gMC40O1xuXG4gIGNvbnN0IGxlZnQgPSBGaXJld29ya1NldHRpbmdzLmNvcHkobWlkZGxlKTtcbiAgbGVmdC5wb3MgPSBjYy52MigtNjAwLCAtNDAwKTtcbiAgbGVmdC5zaWRlID0gY2MudjIoMjAwLCAxMDAwKTtcblxuICBjb25zdCByaWdodCA9IEZpcmV3b3JrU2V0dGluZ3MuY29weShtaWRkbGUpO1xuICByaWdodC5wb3MgPSBjYy52Mig2MDAsIC00MDApO1xuICByaWdodC5zaWRlID0gY2MudjIoLTIwMCwgMTAwMCk7XG5cbiAgc2hvd0ZpcmV3b3JrcyhtaWRkbGUpO1xuICBzaG93RmlyZXdvcmtzKGxlZnQpO1xuICBzaG93RmlyZXdvcmtzKHJpZ2h0KTtcbn1cbiJdfQ==
\ No newline at end of file \ No newline at end of file
require('./assets/mz_003/prefab/bgBottom'); require('./assets/mz_003/prefab/bgBottom');
require('./assets/mz_003/script/runtime');
require('./assets/mz_003/script/scene'); require('./assets/mz_003/script/scene');
require('./assets/mz_003/script/util'); require('./assets/mz_003/script/util');
"use strict";
cc._RF.push(module, '5e66eIbuEVIi43aG8uDxSYt', 'runtime');
// mz_003/script/runtime.js
"use strict";
/**
* Copyright (c) 2014-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
!function (global) {
"use strict";
var Op = Object.prototype;
var hasOwn = Op.hasOwnProperty;
var undefined; // More compressible than void 0.
var $Symbol = typeof Symbol === "function" ? Symbol : {};
var iteratorSymbol = $Symbol.iterator || "@@iterator";
var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
var inModule = typeof module === "object";
var runtime = global.regeneratorRuntime;
if (runtime) {
if (inModule) {
// If regeneratorRuntime is defined globally and we're in a module,
// make the exports object identical to regeneratorRuntime.
module.exports = runtime;
} // Don't bother evaluating the rest of this file if the runtime was
// already defined globally.
return;
} // Define the runtime globally (as expected by generated code) as either
// module.exports (if we're in a module) or a new, empty object.
runtime = global.regeneratorRuntime = inModule ? module.exports : {};
function wrap(innerFn, outerFn, self, tryLocsList) {
// If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
var generator = Object.create(protoGenerator.prototype);
var context = new Context(tryLocsList || []); // The ._invoke method unifies the implementations of the .next,
// .throw, and .return methods.
generator._invoke = makeInvokeMethod(innerFn, self, context);
return generator;
}
runtime.wrap = wrap; // Try/catch helper to minimize deoptimizations. Returns a completion
// record like context.tryEntries[i].completion. This interface could
// have been (and was previously) designed to take a closure to be
// invoked without arguments, but in all the cases we care about we
// already have an existing method we want to call, so there's no need
// to create a new function object. We can even get away with assuming
// the method takes exactly one argument, since that happens to be true
// in every case, so we don't have to touch the arguments object. The
// only additional allocation required is the completion record, which
// has a stable shape and so hopefully should be cheap to allocate.
function tryCatch(fn, obj, arg) {
try {
return {
type: "normal",
arg: fn.call(obj, arg)
};
} catch (err) {
return {
type: "throw",
arg: err
};
}
}
var GenStateSuspendedStart = "suspendedStart";
var GenStateSuspendedYield = "suspendedYield";
var GenStateExecuting = "executing";
var GenStateCompleted = "completed"; // Returning this object from the innerFn has the same effect as
// breaking out of the dispatch switch statement.
var ContinueSentinel = {}; // Dummy constructor functions that we use as the .constructor and
// .constructor.prototype properties for functions that return Generator
// objects. For full spec compliance, you may wish to configure your
// minifier not to mangle the names of these two functions.
function Generator() {}
function GeneratorFunction() {}
function GeneratorFunctionPrototype() {} // This is a polyfill for %IteratorPrototype% for environments that
// don't natively support it.
var IteratorPrototype = {};
IteratorPrototype[iteratorSymbol] = function () {
return this;
};
var getProto = Object.getPrototypeOf;
var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
// This environment has a native %IteratorPrototype%; use it instead
// of the polyfill.
IteratorPrototype = NativeIteratorPrototype;
}
var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
GeneratorFunctionPrototype.constructor = GeneratorFunction;
GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction"; // Helper for defining the .next, .throw, and .return methods of the
// Iterator interface in terms of a single ._invoke method.
function defineIteratorMethods(prototype) {
["next", "throw", "return"].forEach(function (method) {
prototype[method] = function (arg) {
return this._invoke(method, arg);
};
});
}
runtime.isGeneratorFunction = function (genFun) {
var ctor = typeof genFun === "function" && genFun.constructor;
return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can
// do is to check its .name property.
(ctor.displayName || ctor.name) === "GeneratorFunction" : false;
};
runtime.mark = function (genFun) {
if (Object.setPrototypeOf) {
Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
} else {
genFun.__proto__ = GeneratorFunctionPrototype;
if (!(toStringTagSymbol in genFun)) {
genFun[toStringTagSymbol] = "GeneratorFunction";
}
}
genFun.prototype = Object.create(Gp);
return genFun;
}; // Within the body of any async function, `await x` is transformed to
// `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
// `hasOwn.call(value, "__await")` to determine if the yielded value is
// meant to be awaited.
runtime.awrap = function (arg) {
return {
__await: arg
};
};
function AsyncIterator(generator) {
function invoke(method, arg, resolve, reject) {
var record = tryCatch(generator[method], generator, arg);
if (record.type === "throw") {
reject(record.arg);
} else {
var result = record.arg;
var value = result.value;
if (value && typeof value === "object" && hasOwn.call(value, "__await")) {
return Promise.resolve(value.__await).then(function (value) {
invoke("next", value, resolve, reject);
}, function (err) {
invoke("throw", err, resolve, reject);
});
}
return Promise.resolve(value).then(function (unwrapped) {
// When a yielded Promise is resolved, its final value becomes
// the .value of the Promise<{value,done}> result for the
// current iteration. If the Promise is rejected, however, the
// result for this iteration will be rejected with the same
// reason. Note that rejections of yielded Promises are not
// thrown back into the generator function, as is the case
// when an awaited Promise is rejected. This difference in
// behavior between yield and await is important, because it
// allows the consumer to decide what to do with the yielded
// rejection (swallow it and continue, manually .throw it back
// into the generator, abandon iteration, whatever). With
// await, by contrast, there is no opportunity to examine the
// rejection reason outside the generator function, so the
// only option is to throw it from the await expression, and
// let the generator function handle the exception.
result.value = unwrapped;
resolve(result);
}, reject);
}
}
var previousPromise;
function enqueue(method, arg) {
function callInvokeWithMethodAndArg() {
return new Promise(function (resolve, reject) {
invoke(method, arg, resolve, reject);
});
}
return previousPromise = // If enqueue has been called before, then we want to wait until
// all previous Promises have been resolved before calling invoke,
// so that results are always delivered in the correct order. If
// enqueue has not been called before, then it is important to
// call invoke immediately, without waiting on a callback to fire,
// so that the async generator function has the opportunity to do
// any necessary setup in a predictable way. This predictability
// is why the Promise constructor synchronously invokes its
// executor callback, and why async functions synchronously
// execute code before the first await. Since we implement simple
// async functions in terms of async generators, it is especially
// important to get this right, even though it requires care.
previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later
// invocations of the iterator.
callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
} // Define the unified helper method that is used to implement .next,
// .throw, and .return (see defineIteratorMethods).
this._invoke = enqueue;
}
defineIteratorMethods(AsyncIterator.prototype);
AsyncIterator.prototype[asyncIteratorSymbol] = function () {
return this;
};
runtime.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of
// AsyncIterator objects; they just return a Promise for the value of
// the final result produced by the iterator.
runtime.async = function (innerFn, outerFn, self, tryLocsList) {
var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList));
return runtime.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator.
: iter.next().then(function (result) {
return result.done ? result.value : iter.next();
});
};
function makeInvokeMethod(innerFn, self, context) {
var state = GenStateSuspendedStart;
return function invoke(method, arg) {
if (state === GenStateExecuting) {
throw new Error("Generator is already running");
}
if (state === GenStateCompleted) {
if (method === "throw") {
throw arg;
} // Be forgiving, per 25.3.3.3.3 of the spec:
// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
return doneResult();
}
context.method = method;
context.arg = arg;
while (true) {
var delegate = context.delegate;
if (delegate) {
var delegateResult = maybeInvokeDelegate(delegate, context);
if (delegateResult) {
if (delegateResult === ContinueSentinel) continue;
return delegateResult;
}
}
if (context.method === "next") {
// Setting context._sent for legacy support of Babel's
// function.sent implementation.
context.sent = context._sent = context.arg;
} else if (context.method === "throw") {
if (state === GenStateSuspendedStart) {
state = GenStateCompleted;
throw context.arg;
}
context.dispatchException(context.arg);
} else if (context.method === "return") {
context.abrupt("return", context.arg);
}
state = GenStateExecuting;
var record = tryCatch(innerFn, self, context);
if (record.type === "normal") {
// If an exception is thrown from innerFn, we leave state ===
// GenStateExecuting and loop back for another invocation.
state = context.done ? GenStateCompleted : GenStateSuspendedYield;
if (record.arg === ContinueSentinel) {
continue;
}
return {
value: record.arg,
done: context.done
};
} else if (record.type === "throw") {
state = GenStateCompleted; // Dispatch the exception by looping back around to the
// context.dispatchException(context.arg) call above.
context.method = "throw";
context.arg = record.arg;
}
}
};
} // Call delegate.iterator[context.method](context.arg) and handle the
// result, either by returning a { value, done } result from the
// delegate iterator, or by modifying context.method and context.arg,
// setting context.delegate to null, and returning the ContinueSentinel.
function maybeInvokeDelegate(delegate, context) {
var method = delegate.iterator[context.method];
if (method === undefined) {
// A .throw or .return when the delegate iterator has no .throw
// method always terminates the yield* loop.
context.delegate = null;
if (context.method === "throw") {
if (delegate.iterator["return"]) {
// If the delegate iterator has a return method, give it a
// chance to clean up.
context.method = "return";
context.arg = undefined;
maybeInvokeDelegate(delegate, context);
if (context.method === "throw") {
// If maybeInvokeDelegate(context) changed context.method from
// "return" to "throw", let that override the TypeError below.
return ContinueSentinel;
}
}
context.method = "throw";
context.arg = new TypeError("The iterator does not provide a 'throw' method");
}
return ContinueSentinel;
}
var record = tryCatch(method, delegate.iterator, context.arg);
if (record.type === "throw") {
context.method = "throw";
context.arg = record.arg;
context.delegate = null;
return ContinueSentinel;
}
var info = record.arg;
if (!info) {
context.method = "throw";
context.arg = new TypeError("iterator result is not an object");
context.delegate = null;
return ContinueSentinel;
}
if (info.done) {
// Assign the result of the finished delegate to the temporary
// variable specified by delegate.resultName (see delegateYield).
context[delegate.resultName] = info.value; // Resume execution at the desired location (see delegateYield).
context.next = delegate.nextLoc; // If context.method was "throw" but the delegate handled the
// exception, let the outer generator proceed normally. If
// context.method was "next", forget context.arg since it has been
// "consumed" by the delegate iterator. If context.method was
// "return", allow the original .return call to continue in the
// outer generator.
if (context.method !== "return") {
context.method = "next";
context.arg = undefined;
}
} else {
// Re-yield the result returned by the delegate method.
return info;
} // The delegate iterator is finished, so forget it and continue with
// the outer generator.
context.delegate = null;
return ContinueSentinel;
} // Define Generator.prototype.{next,throw,return} in terms of the
// unified ._invoke helper method.
defineIteratorMethods(Gp);
Gp[toStringTagSymbol] = "Generator"; // A Generator should always return itself as the iterator object when the
// @@iterator function is called on it. Some browsers' implementations of the
// iterator prototype chain incorrectly implement this, causing the Generator
// object to not be returned from this call. This ensures that doesn't happen.
// See https://github.com/facebook/regenerator/issues/274 for more details.
Gp[iteratorSymbol] = function () {
return this;
};
Gp.toString = function () {
return "[object Generator]";
};
function pushTryEntry(locs) {
var entry = {
tryLoc: locs[0]
};
if (1 in locs) {
entry.catchLoc = locs[1];
}
if (2 in locs) {
entry.finallyLoc = locs[2];
entry.afterLoc = locs[3];
}
this.tryEntries.push(entry);
}
function resetTryEntry(entry) {
var record = entry.completion || {};
record.type = "normal";
delete record.arg;
entry.completion = record;
}
function Context(tryLocsList) {
// The root entry object (effectively a try statement without a catch
// or a finally block) gives us a place to store values thrown from
// locations where there is no enclosing try statement.
this.tryEntries = [{
tryLoc: "root"
}];
tryLocsList.forEach(pushTryEntry, this);
this.reset(true);
}
runtime.keys = function (object) {
var keys = [];
for (var key in object) {
keys.push(key);
}
keys.reverse(); // Rather than returning an object with a next method, we keep
// things simple and return the next function itself.
return function next() {
while (keys.length) {
var key = keys.pop();
if (key in object) {
next.value = key;
next.done = false;
return next;
}
} // To avoid creating an additional object, we just hang the .value
// and .done properties off the next function object itself. This
// also ensures that the minifier will not anonymize the function.
next.done = true;
return next;
};
};
function values(iterable) {
if (iterable) {
var iteratorMethod = iterable[iteratorSymbol];
if (iteratorMethod) {
return iteratorMethod.call(iterable);
}
if (typeof iterable.next === "function") {
return iterable;
}
if (!isNaN(iterable.length)) {
var i = -1,
next = function next() {
while (++i < iterable.length) {
if (hasOwn.call(iterable, i)) {
next.value = iterable[i];
next.done = false;
return next;
}
}
next.value = undefined;
next.done = true;
return next;
};
return next.next = next;
}
} // Return an iterator with no values.
return {
next: doneResult
};
}
runtime.values = values;
function doneResult() {
return {
value: undefined,
done: true
};
}
Context.prototype = {
constructor: Context,
reset: function reset(skipTempReset) {
this.prev = 0;
this.next = 0; // Resetting context._sent for legacy support of Babel's
// function.sent implementation.
this.sent = this._sent = undefined;
this.done = false;
this.delegate = null;
this.method = "next";
this.arg = undefined;
this.tryEntries.forEach(resetTryEntry);
if (!skipTempReset) {
for (var name in this) {
// Not sure about the optimal order of these conditions:
if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {
this[name] = undefined;
}
}
}
},
stop: function stop() {
this.done = true;
var rootEntry = this.tryEntries[0];
var rootRecord = rootEntry.completion;
if (rootRecord.type === "throw") {
throw rootRecord.arg;
}
return this.rval;
},
dispatchException: function dispatchException(exception) {
if (this.done) {
throw exception;
}
var context = this;
function handle(loc, caught) {
record.type = "throw";
record.arg = exception;
context.next = loc;
if (caught) {
// If the dispatched exception was caught by a catch block,
// then let that catch block handle the exception normally.
context.method = "next";
context.arg = undefined;
}
return !!caught;
}
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
var record = entry.completion;
if (entry.tryLoc === "root") {
// Exception thrown outside of any try block that could handle
// it, so set the completion value of the entire function to
// throw the exception.
return handle("end");
}
if (entry.tryLoc <= this.prev) {
var hasCatch = hasOwn.call(entry, "catchLoc");
var hasFinally = hasOwn.call(entry, "finallyLoc");
if (hasCatch && hasFinally) {
if (this.prev < entry.catchLoc) {
return handle(entry.catchLoc, true);
} else if (this.prev < entry.finallyLoc) {
return handle(entry.finallyLoc);
}
} else if (hasCatch) {
if (this.prev < entry.catchLoc) {
return handle(entry.catchLoc, true);
}
} else if (hasFinally) {
if (this.prev < entry.finallyLoc) {
return handle(entry.finallyLoc);
}
} else {
throw new Error("try statement without catch or finally");
}
}
}
},
abrupt: function abrupt(type, arg) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
var finallyEntry = entry;
break;
}
}
if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {
// Ignore the finally entry if control is not jumping to a
// location outside the try/catch block.
finallyEntry = null;
}
var record = finallyEntry ? finallyEntry.completion : {};
record.type = type;
record.arg = arg;
if (finallyEntry) {
this.method = "next";
this.next = finallyEntry.finallyLoc;
return ContinueSentinel;
}
return this.complete(record);
},
complete: function complete(record, afterLoc) {
if (record.type === "throw") {
throw record.arg;
}
if (record.type === "break" || record.type === "continue") {
this.next = record.arg;
} else if (record.type === "return") {
this.rval = this.arg = record.arg;
this.method = "return";
this.next = "end";
} else if (record.type === "normal" && afterLoc) {
this.next = afterLoc;
}
return ContinueSentinel;
},
finish: function finish(finallyLoc) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.finallyLoc === finallyLoc) {
this.complete(entry.completion, entry.afterLoc);
resetTryEntry(entry);
return ContinueSentinel;
}
}
},
"catch": function _catch(tryLoc) {
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
var entry = this.tryEntries[i];
if (entry.tryLoc === tryLoc) {
var record = entry.completion;
if (record.type === "throw") {
var thrown = record.arg;
resetTryEntry(entry);
}
return thrown;
}
} // The context.catch method must only be called with a location
// argument that corresponds to a known catch block.
throw new Error("illegal catch attempt");
},
delegateYield: function delegateYield(iterable, resultName, nextLoc) {
this.delegate = {
iterator: values(iterable),
resultName: resultName,
nextLoc: nextLoc
};
if (this.method === "next") {
// Deliberately forget the last sent value so that we don't
// accidentally pass it on to the delegate.
this.arg = undefined;
}
return ContinueSentinel;
}
};
}( // In sloppy mode, unbound `this` refers to the global object, fallback to
// Function constructor if we're in global strict mode. That is sadly a form
// of indirect eval which violates Content Security Policy.
function () {
return this;
}() || Function("return this")());
cc._RF.pop();
\ No newline at end of file
...@@ -189,9 +189,12 @@ cc.Class({ ...@@ -189,9 +189,12 @@ cc.Class({
}); });
}, },
_wrongAudioSource: null, _wrongAudioSource: null,
_gjAudioSource: null,
_endAudio: null,
initAudio: function initAudio() { initAudio: function initAudio() {
this._wrongAudioSource = cc.find('Canvas/res/wrong_audio').getComponent(cc.AudioSource); this._wrongAudioSource = cc.find('Canvas/res/wrong_audio').getComponent(cc.AudioSource);
this._gbAudioSource = cc.find('Canvas/res/good_job').getComponent(cc.AudioSource); this._gjAudioSource = cc.find('Canvas/res/good_job').getComponent(cc.AudioSource);
this._endAudio = cc.find('Canvas/res/end_audio').getComponent(cc.AudioSource);
}, },
initListener: function initListener() { initListener: function initListener() {
var _this6 = this; var _this6 = this;
...@@ -498,6 +501,7 @@ cc.Class({ ...@@ -498,6 +501,7 @@ cc.Class({
var mask = node.addComponent(cc.Mask); var mask = node.addComponent(cc.Mask);
mask.type = cc.Mask.Type.RECT; mask.type = cc.Mask.Type.RECT;
}, },
bottomPicArr: null,
initBottomPart: function initBottomPart() { initBottomPart: function initBottomPart() {
var bgBottom = cc.find('Canvas/bgBottom'); var bgBottom = cc.find('Canvas/bgBottom');
var script = bgBottom.getComponent('bgBottom'); var script = bgBottom.getComponent('bgBottom');
...@@ -508,6 +512,7 @@ cc.Class({ ...@@ -508,6 +512,7 @@ cc.Class({
} }
}); });
script.setItemData(picArr); script.setItemData(picArr);
this.bottomPicArr = picArr;
}, },
getBottomPicArr: function getBottomPicArr() { getBottomPicArr: function getBottomPicArr() {
var arr = []; // for (let i = 0; i < this.hotzoneCircleArr.length; i++) { var arr = []; // for (let i = 0; i < this.hotzoneCircleArr.length; i++) {
...@@ -764,7 +769,14 @@ cc.Class({ ...@@ -764,7 +769,14 @@ cc.Class({
cc.audioEngine.stopAllEffects(); cc.audioEngine.stopAllEffects();
var audioID = cc.audioEngine.playEffect(animaNode.audioClip, false, 0.8); var audioID = cc.audioEngine.playEffect(animaNode.audioClip, false, 0.8);
cc.audioEngine.setFinishCallback(audioID, function () { cc.audioEngine.setFinishCallback(audioID, function () {
_this9._gbAudioSource.play(); var gjId = cc.audioEngine.playEffect(_this9._gjAudioSource.clip, false, 0.8);
cc.audioEngine.setFinishCallback(gjId, function () {
var isEnd = _this9.checkGameEnd();
if (isEnd) {
_this9.gameEnd();
}
});
}); });
} }
...@@ -777,6 +789,25 @@ cc.Class({ ...@@ -777,6 +789,25 @@ cc.Class({
}); });
}); });
}, },
checkGameEnd: function checkGameEnd() {
for (var i = 0; i < this.hotzoneCircleArr.length; i++) {
if (this.hotzoneCircleArr[i].active) {
return false;
}
}
return true;
},
gameEnd: function gameEnd() {
console.log('this.gameEnd');
this.playEndEffect();
},
playEndEffect: function playEndEffect() {
(0, _util.playAudio)(this._endAudio.clip, 0.8);
var camera = cc.find('Canvas/Main Camera');
camera.zIndex = 100;
(0, _util.showTrebleFirework)(camera, cc.find('RibbonNodeBase').children);
},
_curShowItem: null, _curShowItem: null,
bottomItemClick: function bottomItemClick(item) { bottomItemClick: function bottomItemClick(item) {
var _this10 = this; var _this10 = this;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -12,6 +12,20 @@ exports.RandomInt = RandomInt; ...@@ -12,6 +12,20 @@ exports.RandomInt = RandomInt;
exports.randomSortByArr = randomSortByArr; exports.randomSortByArr = randomSortByArr;
exports.setSprNodeMaxLen = setSprNodeMaxLen; exports.setSprNodeMaxLen = setSprNodeMaxLen;
exports.localPosTolocalPos = localPosTolocalPos; exports.localPosTolocalPos = localPosTolocalPos;
exports.getScaleRateBy2Node = getScaleRateBy2Node;
exports.asyncCCLoad = asyncCCLoad;
exports.loadDragonBones = loadDragonBones;
exports.playAudio = playAudio;
exports.asyncDelay = asyncDelay;
exports.showFireworks = showFireworks;
exports.asyncTweenTo = asyncTweenTo;
exports.asyncTweenBy = asyncTweenBy;
exports.showTrebleFirework = showTrebleFirework;
exports.FireworkSettings = void 0;
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
function getPosByAngle(angle, len) { function getPosByAngle(angle, len) {
var radian = angle * Math.PI / 180; var radian = angle * Math.PI / 180;
...@@ -106,4 +120,387 @@ function localPosTolocalPos(baseNode, targetNode) { ...@@ -106,4 +120,387 @@ function localPosTolocalPos(baseNode, targetNode) {
return localPos; return localPos;
} }
function getScaleRateBy2Node(baseNode, targetNode, maxFlag) {
if (maxFlag === void 0) {
maxFlag = true;
}
var worldRect1 = targetNode.getBoundingBoxToWorld();
var worldRect2 = baseNode.getBoundingBoxToWorld();
var sx = worldRect1.width / worldRect2.width;
var sy = worldRect1.height / worldRect2.height;
if (maxFlag) {
return Math.max(sx, sy);
} else {
return Math.min(sx, sy);
}
}
function asyncCCLoad(resources) {
return new Promise(function (resolve, reject) {
try {
cc.loader.load(resources, function (error, assets) {
resolve(assets);
});
} catch (e) {
reject(e);
}
});
}
function loadDragonBones(image, atlas, ske, callback) {
Promise.all([asyncCCLoad(image), asyncCCLoad({
url: atlas,
type: 'txt'
}), asyncCCLoad({
url: ske,
type: 'txt'
})]).then(function (_ref) {
var texture = _ref[0],
atlasJson = _ref[1],
dragonBonesJson = _ref[2];
callback(texture, atlasJson, dragonBonesJson);
})["catch"](function (e) {
console.log(e);
});
}
function playAudio(_x, _x2) {
return _playAudio.apply(this, arguments);
}
function _playAudio() {
_playAudio = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(clip, volume) {
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
if (volume === void 0) {
volume = 1;
}
return _context.abrupt("return", new Promise(function (resolve, reject) {
try {
if (!clip) {
resolve();
return;
}
var id = cc.audioEngine.play(clip, false, volume);
cc.audioEngine.setFinishCallback(id, function () {
resolve();
});
} catch (e) {
reject(e);
}
}));
case 2:
case "end":
return _context.stop();
}
}
}, _callee);
}));
return _playAudio.apply(this, arguments);
}
function asyncDelay(_x3) {
return _asyncDelay.apply(this, arguments);
}
function _asyncDelay() {
_asyncDelay = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(time) {
return regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
return _context2.abrupt("return", new Promise(function (resolve, reject) {
try {
setTimeout(function () {
resolve();
}, time * 1000);
} catch (e) {
reject(e);
}
}));
case 1:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
return _asyncDelay.apply(this, arguments);
}
var FireworkSettings = /*#__PURE__*/function () {
// 父节点
// 火花节点的array
// 发射点
// 发射方向
// 扩散范围
// 发射数量
// 缩放范围
function FireworkSettings(baseNode, nodeList, pos, side, range, number, scalseRange) {
if (pos === void 0) {
pos = cc.v2(0, 0);
}
if (side === void 0) {
side = cc.v2(0, 100);
}
if (range === void 0) {
range = 50;
}
if (number === void 0) {
number = 100;
}
if (scalseRange === void 0) {
scalseRange = 0;
}
this.baseNode = void 0;
this.nodeList = void 0;
this.pos = void 0;
this.side = void 0;
this.range = void 0;
this.number = void 0;
this.scalseRange = void 0;
this.baseNode = baseNode;
this.nodeList = nodeList;
this.pos = pos;
this.side = side;
this.range = range;
this.number = number;
this.scalseRange = scalseRange;
}
FireworkSettings.copy = function copy(firework) {
return new FireworkSettings(firework.baseNode, firework.nodeList, firework.pos, firework.side, firework.range, firework.number);
};
return FireworkSettings;
}();
exports.FireworkSettings = FireworkSettings;
function showFireworks(_x4) {
return _showFireworks.apply(this, arguments);
}
function _showFireworks() {
_showFireworks = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(fireworkSettings) {
var baseNode, nodeList, pos, side, range, number, scalseRange;
return regeneratorRuntime.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
baseNode = fireworkSettings.baseNode, nodeList = fireworkSettings.nodeList, pos = fireworkSettings.pos, side = fireworkSettings.side, range = fireworkSettings.range, number = fireworkSettings.number, scalseRange = fireworkSettings.scalseRange;
new Array(number).fill(' ').forEach( /*#__PURE__*/function () {
var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(_, i) {
var rabbonNode, node, rate, angle;
return regeneratorRuntime.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
rabbonNode = new cc.Node();
rabbonNode.parent = baseNode;
rabbonNode.x = pos.x;
rabbonNode.y = pos.y;
rabbonNode.angle = 60 * Math.random() - 30;
node = cc.instantiate(nodeList[RandomInt(nodeList.length)]);
node.parent = rabbonNode;
node.active = true;
node.x = 0;
node.y = 0;
node.angle = 0;
node.scale = (Math.random() - 0.5) * scalseRange + 1;
rate = Math.random();
angle = Math.PI * (Math.random() * 2 - 1);
_context3.next = 16;
return asyncTweenBy(rabbonNode, 0.3, {
x: side.x * rate + Math.cos(angle) * range * rate,
y: side.y * rate + Math.sin(angle) * range * rate
}, {
easing: 'quadIn'
});
case 16:
cc.tween(rabbonNode).by(8, {
y: -2000
}).start();
cc.tween(rabbonNode).to(5, {
scale: (Math.random() - 0.5) * scalseRange + 1
}).start();
rabbonFall(rabbonNode);
_context3.next = 21;
return asyncDelay(Math.random());
case 21:
cc.tween(node).by(0.15, {
x: -10,
angle: -10
}).by(0.3, {
x: 20,
angle: 20
}).by(0.15, {
x: -10,
angle: -10
}).union().repeatForever().start();
cc.tween(rabbonNode).delay(5).to(0.3, {
opacity: 0
}).call(function () {
node.stopAllActions();
node.active = false;
node.parent = null;
node = null;
}).start();
case 23:
case "end":
return _context3.stop();
}
}
}, _callee3);
}));
return function (_x14, _x15) {
return _ref2.apply(this, arguments);
};
}());
case 2:
case "end":
return _context4.stop();
}
}
}, _callee4);
}));
return _showFireworks.apply(this, arguments);
}
function rabbonFall(_x5) {
return _rabbonFall.apply(this, arguments);
}
function _rabbonFall() {
_rabbonFall = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(node) {
var time, offsetX;
return regeneratorRuntime.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
time = 1 + Math.random();
offsetX = RandomInt(-200, 200) * time;
_context5.next = 4;
return asyncTweenBy(node, time, {
x: offsetX,
angle: offsetX * 60 / 200
});
case 4:
rabbonFall(node);
case 5:
case "end":
return _context5.stop();
}
}
}, _callee5);
}));
return _rabbonFall.apply(this, arguments);
}
function asyncTweenTo(_x6, _x7, _x8, _x9) {
return _asyncTweenTo.apply(this, arguments);
}
function _asyncTweenTo() {
_asyncTweenTo = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(node, duration, obj, ease) {
return regeneratorRuntime.wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
if (ease === void 0) {
ease = undefined;
}
return _context6.abrupt("return", new Promise(function (resolve, reject) {
try {
cc.tween(node).to(duration, obj, ease).call(function () {
resolve();
}).start();
} catch (e) {
reject(e);
}
}));
case 2:
case "end":
return _context6.stop();
}
}
}, _callee6);
}));
return _asyncTweenTo.apply(this, arguments);
}
function asyncTweenBy(_x10, _x11, _x12, _x13) {
return _asyncTweenBy.apply(this, arguments);
}
function _asyncTweenBy() {
_asyncTweenBy = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(node, duration, obj, ease) {
return regeneratorRuntime.wrap(function _callee7$(_context7) {
while (1) {
switch (_context7.prev = _context7.next) {
case 0:
if (ease === void 0) {
ease = undefined;
}
return _context7.abrupt("return", new Promise(function (resolve, reject) {
try {
cc.tween(node).by(duration, obj, ease).call(function () {
resolve();
}).start();
} catch (e) {
reject(e);
}
}));
case 2:
case "end":
return _context7.stop();
}
}
}, _callee7);
}));
return _asyncTweenBy.apply(this, arguments);
}
function showTrebleFirework(baseNode, rabbonList) {
var middle = new FireworkSettings(baseNode, rabbonList);
middle.pos = cc.v2(0, -400);
middle.side = cc.v2(0, 1000);
middle.range = 200;
middle.number = 100;
middle.scalseRange = 0.4;
var left = FireworkSettings.copy(middle);
left.pos = cc.v2(-600, -400);
left.side = cc.v2(200, 1000);
var right = FireworkSettings.copy(middle);
right.pos = cc.v2(600, -400);
right.side = cc.v2(-200, 1000);
showFireworks(middle);
showFireworks(left);
showFireworks(right);
}
cc._RF.pop(); cc._RF.pop();
\ No newline at end of file
{"version":3,"sources":["assets/mz_003/script/util.js"],"names":["getPosByAngle","angle","len","radian","Math","PI","x","sin","y","cos","getAngleByPos","px","py","mx","my","abs","z","sqrt","pow","radina","acos","floor","exchangeNodePos","baseNode","targetNode","convertToNodeSpaceAR","_parent","convertToWorldSpaceAR","cc","v2","RandomInt","a","b","max","min","random","randomSortByArr","arr","newArr","tmpArr","concat","length","randomIndex","push","splice","setSprNodeMaxLen","sprNode","maxW","maxH","sx","width","sy","height","s","scale","round","localPosTolocalPos","worldPos","parent","localPos"],"mappings":"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","sourceRoot":"/","sourcesContent":["export function getPosByAngle(angle, len) {\n\n const radian = angle * Math.PI / 180;\n const x = Math.sin(radian) * len;\n const y = Math.cos(radian) * len;\n\n return { x, y };\n\n}\n\nexport function getAngleByPos(px, py, mx, my) {\n\n const x = Math.abs(px - mx);\n const y = Math.abs(py - my);\n\n const z = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n const cos = y / z;\n const radina = Math.acos(cos); // 用反三角函数求弧度\n let angle = Math.floor(180 / (Math.PI / radina) * 100) / 100; // 将弧度转换成角度\n\n if (mx > px && my > py) {// 鼠标在第四象限\n angle = 180 - angle;\n }\n if (mx === px && my > py) {// 鼠标在y轴负方向上\n angle = 180;\n }\n if (mx > px && my === py) {// 鼠标在x轴正方向上\n angle = 90;\n }\n if (mx < px && my > py) {// 鼠标在第三象限\n angle = 180 + angle;\n }\n if (mx < px && my === py) {// 鼠标在x轴负方向\n angle = 270;\n }\n if (mx < px && my < py) {// 鼠标在第二象限\n angle = 360 - angle;\n }\n\n // console.log('angle: ', angle);\n return angle;\n\n}\n\nexport function exchangeNodePos(baseNode, targetNode) {\n return baseNode.convertToNodeSpaceAR(targetNode._parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y)));\n}\n\nexport function RandomInt(a, b = 0) {\n let max = Math.max(a, b);\n let min = Math.min(a, b);\n return Math.floor(Math.random() * (max - min) + min);\n}\n\nexport function randomSortByArr(arr) {\n const newArr = [];\n const tmpArr = arr.concat();\n while (tmpArr.length > 0) {\n const randomIndex = Math.floor(tmpArr.length * Math.random());\n newArr.push(tmpArr[randomIndex]);\n tmpArr.splice(randomIndex, 1);\n }\n return newArr;\n}\n\nexport function setSprNodeMaxLen(sprNode, maxW, maxH) {\n const sx = maxW / sprNode.width;\n const sy = maxH / sprNode.height;\n const s = Math.min(sx, sy);\n sprNode.scale = Math.round(s * 1000) / 1000;\n}\n\n\nexport function localPosTolocalPos(baseNode, targetNode) {\n\tconst worldPos = targetNode.parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y));\n\tconst localPos = baseNode.parent.convertToNodeSpaceAR(cc.v2(worldPos.x, worldPos.y));\n\treturn localPos;\n}\n"]} {"version":3,"sources":["assets/mz_003/script/util.js"],"names":["getPosByAngle","angle","len","radian","Math","PI","x","sin","y","cos","getAngleByPos","px","py","mx","my","abs","z","sqrt","pow","radina","acos","floor","exchangeNodePos","baseNode","targetNode","convertToNodeSpaceAR","_parent","convertToWorldSpaceAR","cc","v2","RandomInt","a","b","max","min","random","randomSortByArr","arr","newArr","tmpArr","concat","length","randomIndex","push","splice","setSprNodeMaxLen","sprNode","maxW","maxH","sx","width","sy","height","s","scale","round","localPosTolocalPos","worldPos","parent","localPos","playAudio","clip","volume","Promise","resolve","reject","id","audioEngine","play","setFinishCallback","e"],"mappings":"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","sourceRoot":"/","sourcesContent":["export function getPosByAngle(angle, len) {\n\n const radian = angle * Math.PI / 180;\n const x = Math.sin(radian) * len;\n const y = Math.cos(radian) * len;\n\n return { x, y };\n\n}\n\nexport function getAngleByPos(px, py, mx, my) {\n\n const x = Math.abs(px - mx);\n const y = Math.abs(py - my);\n\n const z = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\n const cos = y / z;\n const radina = Math.acos(cos); // 用反三角函数求弧度\n let angle = Math.floor(180 / (Math.PI / radina) * 100) / 100; // 将弧度转换成角度\n\n if (mx > px && my > py) {// 鼠标在第四象限\n angle = 180 - angle;\n }\n if (mx === px && my > py) {// 鼠标在y轴负方向上\n angle = 180;\n }\n if (mx > px && my === py) {// 鼠标在x轴正方向上\n angle = 90;\n }\n if (mx < px && my > py) {// 鼠标在第三象限\n angle = 180 + angle;\n }\n if (mx < px && my === py) {// 鼠标在x轴负方向\n angle = 270;\n }\n if (mx < px && my < py) {// 鼠标在第二象限\n angle = 360 - angle;\n }\n\n // console.log('angle: ', angle);\n return angle;\n\n}\n\nexport function exchangeNodePos(baseNode, targetNode) {\n return baseNode.convertToNodeSpaceAR(targetNode._parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y)));\n}\n\nexport function RandomInt(a, b = 0) {\n let max = Math.max(a, b);\n let min = Math.min(a, b);\n return Math.floor(Math.random() * (max - min) + min);\n}\n\nexport function randomSortByArr(arr) {\n const newArr = [];\n const tmpArr = arr.concat();\n while (tmpArr.length > 0) {\n const randomIndex = Math.floor(tmpArr.length * Math.random());\n newArr.push(tmpArr[randomIndex]);\n tmpArr.splice(randomIndex, 1);\n }\n return newArr;\n}\n\nexport function setSprNodeMaxLen(sprNode, maxW, maxH) {\n const sx = maxW / sprNode.width;\n const sy = maxH / sprNode.height;\n const s = Math.min(sx, sy);\n sprNode.scale = Math.round(s * 1000) / 1000;\n}\n\n\nexport function localPosTolocalPos(baseNode, targetNode) {\n\tconst worldPos = targetNode.parent.convertToWorldSpaceAR(cc.v2(targetNode.x, targetNode.y));\n\tconst localPos = baseNode.parent.convertToNodeSpaceAR(cc.v2(worldPos.x, worldPos.y));\n\treturn localPos;\n}\n\n\nexport async function playAudio(clip, volume = 1) {\n return new Promise((resolve, reject) => {\n try {\n if (!clip) {\n resolve();\n return;\n }\n const id = cc.audioEngine.play(clip, false, volume);\n cc.audioEngine.setFinishCallback(id, () => {\n resolve();\n });\n } catch (e) {\n reject(e);\n }\n });\n}\n\n"]}
\ No newline at end of file \ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment