UIManager.js
26.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/scripts/ui/UIManager.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, '83d1824AgVC8Z6URdLQKprC', 'UIManager');
// scripts/ui/UIManager.ts
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.UIManager = void 0;
var UIBase_1 = require("./UIBase");
var UIManager = /** @class */ (function () {
function UIManager() {
this._cache = new Map();
// playResFlyEffect
}
Object.defineProperty(UIManager, "ins", {
get: function () {
if (this._ins == null) {
this._ins = new UIManager();
}
return this._ins;
},
enumerable: false,
configurable: true
});
Object.defineProperty(UIManager.prototype, "uiLayer", {
get: function () { return this._uiLayer; },
enumerable: false,
configurable: true
});
Object.defineProperty(UIManager.prototype, "widgetLayer", {
get: function () { return this._widgetLayer; },
enumerable: false,
configurable: true
});
Object.defineProperty(UIManager.prototype, "loadingLayer", {
get: function () { return this._loadingLayer; },
enumerable: false,
configurable: true
});
Object.defineProperty(UIManager.prototype, "adLayer", {
get: function () { return this._adLayer; },
enumerable: false,
configurable: true
});
Object.defineProperty(UIManager.prototype, "cache", {
get: function () { return this._cache; },
enumerable: false,
configurable: true
});
// setLoadingNode(node: Node): void {
// this._loadingNode = node;
// }
// setAdNode(node: cc.Node) {
// this._adRoot = node;
// }
UIManager.prototype.init = function (uiRoot) {
//已经进入了GameMain场景
this._uiRoot = uiRoot;
this._uiLayer = this._uiRoot.getChildByName("uiLayer");
this._windowLockLayer = this._uiRoot.getChildByName("windowBlcok");
this._windowLockLayer.active = false;
// this._windowLockLayer.getComponent(Widget).updateAlignment();
this._windowLayer = this._uiRoot.getChildByName("windowLayer");
this._widgetLayer = this._uiRoot.getChildByName("widgetLayer");
this._loadingLayer = this._uiRoot.getChildByName("loadingLayer");
this._loadingLayer.active = false;
this._tipsLayer = this._uiRoot.getChildByName("tipsLayer");
this._adLayer = this._uiRoot.getChildByName("adLayer");
// if (this._loadingNode) {
// // this._loadingNode.removeFromParent();
// this._loadingLayer.addChild(this._loadingNode);
// this._loadingNode.getChildByName("type1").active = false;
// this._loadingNode.getChildByName("type2").active = true;
// this._loadingNode.active = false;
// }
// uiRoot.addChild(this._adRoot);//添加广告节点
};
// static get adRoot() {
// let _scene: any = cc.director.getScene();
// let _adRoot = _scene.getChildByName('Canvas').getChildByName('adLayer') as cc.Node;
// if (_adRoot == null) {
// _adRoot = new cc.Node();
// _adRoot.name = 'adLayer';
// _adRoot.parent = _scene.getChildByName('Canvas');
// _adRoot.x = 0;
// _adRoot.y = 0;
// _adRoot.width = cc.winSize.width;
// _adRoot.height = cc.winSize.height;
// _adRoot.setSiblingIndex(999);
// }
// return _adRoot;
// }
UIManager.prototype.openScene = function (name) {
var _this = this;
this._loadingLayer.active = true;
this._loadingLayer.getChildByName('sceneNode').active = true;
this._loadingLayer.getChildByName('windowNode').active = false;
cc.resources.loadScene('scenes/' + name, function (finish, total) {
var prg = finish / total;
_this._loadingLayer.getChildByName('sceneNode').getComponentInChildren(cc.ProgressBar).progress = prg;
}, function (error, scene) {
_this._loadingLayer.active = false;
cc.director.runScene(scene);
});
// cc.director.scene
};
/**
*
* @param type
* @param callBack 参数 view:cc.Node
*/
UIManager.prototype.loadWindow = function (type, callBack) {
var _this = this;
if (this._cache.has(type)) {
callBack(this._cache.get(type));
}
else {
this._loadingLayer.active = true;
this._loadingLayer.getChildByName('sceneNode').active = false;
this._loadingLayer.getChildByName('windowNode').active = true;
cc.resources.load(type, cc.Prefab, function (error, prefab) {
_this._loadingLayer.active = false;
if (!error) {
if (!_this._cache.has(type)) {
var view = cc.instantiate(prefab);
_this._cache.set(type, view);
callBack(view);
}
}
});
}
};
UIManager.prototype.openWindow = function (type, openParam) {
var _this = this;
if (openParam === void 0) { openParam = null; }
if (this._cache.has(type)) {
this.doOpenWindow(this._cache.get(type), openParam);
}
else {
// this._loadingLayer.active = true;
// this._loadingLayer.getChildByName('sceneNode').active = false;
// this._loadingLayer.getChildByName('windowNode').active = true;
// cc.resources.load(type, cc.Prefab,
// (finished, total) => {
// let prg = finished / total;
// },
// (error, prefab: cc.Prefab) => {
// //finish
// if (!this._cache.has(type)) {
// let view = cc.instantiate(prefab);
// this._cache.set(type, view);
// this._loadingLayer.active = false;
// this.doOpenWindow(view, openParam);
// }
// });
this.loadWindow(type, function (view) {
_this.doOpenWindow(view, openParam);
});
}
};
UIManager.prototype.doOpenWindow = function (view, param) {
if (!view.parent) {
!this._windowLockLayer.active && (this._windowLockLayer.active = true);
var base = view.getComponent(UIBase_1.UIBase);
base && (base.enableParam = param);
this._windowLayer.addChild(view);
view.active = true;
base && base.onPopUpEffect();
}
};
UIManager.prototype.closeWindow = function (type, callback) {
var _this = this;
if (callback === void 0) { callback = null; }
if (this._cache.has(type)) {
var view_1 = this._cache.get(type);
// view.active = false;
var base = view_1.getComponent(UIBase_1.UIBase);
base && base.onBeforeClose();
base.onCloseEffect(function () {
var isOnWindowLayer = (view_1.isValid && view_1.parent === _this._windowLayer);
if (isOnWindowLayer) {
view_1.removeFromParent();
view_1.active = false;
}
if (isOnWindowLayer && _this._windowLayer.children.length == 0) {
_this._windowLockLayer.active = false;
}
callback && callback();
}, this);
}
};
UIManager.prototype.getWidgetNode = function (type) {
return this._widgetLayer.getChildByName('widget' + type.toString());
};
UIManager.prototype.showTips = function (str) {
// let node = this._tipsLayer.getChildByName('TipsNode');
// node.active = true;
// node.getComponentInChildren(Label).string = str;
// Tween.stopAllByTarget(node);
// tween(node).delay(3).call(this.closeTips.bind(this)).start()
};
UIManager.prototype.closeTips = function () {
var node = this._tipsLayer.getChildByName('TipsNode');
node.active = false;
};
UIManager._ins = null;
return UIManager;
}());
exports.UIManager = UIManager;
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2NyaXB0c1xcdWlcXFVJTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxtQ0FBa0M7QUFFbEM7SUFBQTtRQXlCWSxXQUFNLEdBQXlCLElBQUksR0FBRyxFQUFtQixDQUFDO1FBb05sRSxtQkFBbUI7SUFDdkIsQ0FBQztJQTNPRyxzQkFBVyxnQkFBRzthQUFkO1lBQ0ksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRTtnQkFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO2FBQy9CO1lBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3JCLENBQUM7OztPQUFBO0lBSUQsc0JBQUksOEJBQU87YUFBWCxjQUF5QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUloRCxzQkFBSSxrQ0FBVzthQUFmLGNBQTZCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBRXhELHNCQUFJLG1DQUFZO2FBQWhCLGNBQThCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBSTFELHNCQUFJLDhCQUFPO2FBQVgsY0FBeUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFHaEQsc0JBQUksNEJBQUs7YUFBVCxjQUFvQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUl6RCxxQ0FBcUM7SUFDckMsZ0NBQWdDO0lBQ2hDLElBQUk7SUFFSiw2QkFBNkI7SUFDN0IsMkJBQTJCO0lBQzNCLElBQUk7SUFJSix3QkFBSSxHQUFKLFVBQUssTUFBZTtRQUNoQixpQkFBaUI7UUFFakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDckMsZ0VBQWdFO1FBQ2hFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFdkQsMkJBQTJCO1FBQzNCLGdEQUFnRDtRQUNoRCxzREFBc0Q7UUFFdEQsZ0VBQWdFO1FBQ2hFLCtEQUErRDtRQUMvRCx3Q0FBd0M7UUFDeEMsSUFBSTtRQUVKLHlDQUF5QztJQUU3QyxDQUFDO0lBQ0Qsd0JBQXdCO0lBQ3hCLGdEQUFnRDtJQUNoRCwwRkFBMEY7SUFDMUYsNkJBQTZCO0lBQzdCLG1DQUFtQztJQUNuQyxvQ0FBb0M7SUFDcEMsNERBQTREO0lBQzVELHlCQUF5QjtJQUN6Qix5QkFBeUI7SUFDekIsNENBQTRDO0lBQzVDLDhDQUE4QztJQUM5Qyx3Q0FBd0M7SUFDeEMsUUFBUTtJQUNSLHNCQUFzQjtJQUN0QixJQUFJO0lBQ0osNkJBQVMsR0FBVCxVQUFVLElBQVk7UUFBdEIsaUJBc0JDO1FBcEJHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUVqQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQzdELElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFFL0QsRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksRUFDbkMsVUFBQyxNQUFjLEVBQUUsS0FBYTtZQUUxQixJQUFJLEdBQUcsR0FBRyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLEtBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO1FBRXpHLENBQUMsRUFDRCxVQUFDLEtBQUssRUFBRSxLQUFvQjtZQUV4QixLQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDbEMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFaEMsQ0FBQyxDQUFDLENBQUM7UUFFUCxvQkFBb0I7SUFDeEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCw4QkFBVSxHQUFWLFVBQVcsSUFBZ0IsRUFBRSxRQUFrQjtRQUEvQyxpQkEyQkM7UUF6QkcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2QixRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNuQzthQUNJO1lBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDOUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUU5RCxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFDLEtBQUssRUFBRSxNQUFpQjtnQkFFeEQsS0FBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2dCQUVsQyxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUVSLElBQUksQ0FBQyxLQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDeEIsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDbEMsS0FBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUM1QixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ2xCO2lCQUNKO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUdMLENBQUM7SUFFRCw4QkFBVSxHQUFWLFVBQVcsSUFBZ0IsRUFBRSxTQUFxQjtRQUFsRCxpQkFpQ0M7UUFqQzRCLDBCQUFBLEVBQUEsZ0JBQXFCO1FBRTlDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUN2RDthQUNJO1lBRUQsb0NBQW9DO1lBRXBDLGlFQUFpRTtZQUNqRSxpRUFBaUU7WUFFakUscUNBQXFDO1lBRXJDLDZCQUE2QjtZQUM3QixzQ0FBc0M7WUFDdEMsU0FBUztZQUVULHNDQUFzQztZQUN0QyxtQkFBbUI7WUFFbkIsd0NBQXdDO1lBQ3hDLGlEQUFpRDtZQUNqRCwyQ0FBMkM7WUFDM0MsaURBQWlEO1lBQ2pELGtEQUFrRDtZQUNsRCxZQUFZO1lBQ1osVUFBVTtZQUVWLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFVBQUMsSUFBYTtnQkFDaEMsS0FBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDdkMsQ0FBQyxDQUFDLENBQUE7U0FDTDtJQUNMLENBQUM7SUFFTyxnQ0FBWSxHQUFwQixVQUFxQixJQUFhLEVBQUUsS0FBVTtRQUUxQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNkLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFFdkUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFNLENBQUMsQ0FBQztZQUNyQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBRW5DLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBRW5CLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDaEM7SUFDTCxDQUFDO0lBRUQsK0JBQVcsR0FBWCxVQUFZLElBQWdCLEVBQUUsUUFBeUI7UUFBdkQsaUJBMEJDO1FBMUI2Qix5QkFBQSxFQUFBLGVBQXlCO1FBQ25ELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdkIsSUFBSSxNQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFakMsdUJBQXVCO1lBQ3ZCLElBQUksSUFBSSxHQUFHLE1BQUksQ0FBQyxZQUFZLENBQUMsZUFBTSxDQUFDLENBQUM7WUFDckMsSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUU3QixJQUFJLENBQUMsYUFBYSxDQUFDO2dCQUdmLElBQUksZUFBZSxHQUFHLENBQUMsTUFBSSxDQUFDLE9BQU8sSUFBSSxNQUFJLENBQUMsTUFBTSxLQUFLLEtBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtnQkFFekUsSUFBSSxlQUFlLEVBQUU7b0JBQ2pCLE1BQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO29CQUN4QixNQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztpQkFDdkI7Z0JBR0QsSUFBSSxlQUFlLElBQUksS0FBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtvQkFDM0QsS0FBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7aUJBQ3hDO2dCQUVELFFBQVEsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMzQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7U0FDWDtJQUNMLENBQUM7SUFFRCxpQ0FBYSxHQUFiLFVBQWMsSUFBYTtRQUN2QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsNEJBQVEsR0FBUixVQUFTLEdBQVc7UUFDaEIseURBQXlEO1FBQ3pELHNCQUFzQjtRQUN0QixtREFBbUQ7UUFFbkQsK0JBQStCO1FBQy9CLCtEQUErRDtJQUNuRSxDQUFDO0lBRU8sNkJBQVMsR0FBakI7UUFDSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBek9jLGNBQUksR0FBYyxJQUFJLENBQUM7SUE0TzFDLGdCQUFDO0NBOU9ELEFBOE9DLElBQUE7QUE5T1ksOEJBQVMiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNUeXBlLCBXaW5kb3dOYW1lIH0gZnJvbSBcIi4uL0dsb2JhbFwiO1xuaW1wb3J0IHsgVUlCYXNlIH0gZnJvbSBcIi4vVUlCYXNlXCI7XG5cbmV4cG9ydCBjbGFzcyBVSU1hbmFnZXIge1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX2luczogVUlNYW5hZ2VyID0gbnVsbDtcbiAgICBzdGF0aWMgZ2V0IGlucygpOiBVSU1hbmFnZXIge1xuICAgICAgICBpZiAodGhpcy5faW5zID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuX2lucyA9IG5ldyBVSU1hbmFnZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9pbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdWlSb290OiBjYy5Ob2RlO1xuICAgIHByaXZhdGUgX3VpTGF5ZXI6IGNjLk5vZGU7XG4gICAgZ2V0IHVpTGF5ZXIoKTogY2MuTm9kZSB7IHJldHVybiB0aGlzLl91aUxheWVyOyB9XG4gICAgcHJpdmF0ZSBfd2luZG93TG9ja0xheWVyOiBjYy5Ob2RlO1xuICAgIHByaXZhdGUgX3dpbmRvd0xheWVyOiBjYy5Ob2RlO1xuICAgIHByaXZhdGUgX3dpZGdldExheWVyOiBjYy5Ob2RlO1xuICAgIGdldCB3aWRnZXRMYXllcigpOiBjYy5Ob2RlIHsgcmV0dXJuIHRoaXMuX3dpZGdldExheWVyOyB9XG4gICAgcHJpdmF0ZSBfbG9hZGluZ0xheWVyOiBjYy5Ob2RlO1xuICAgIGdldCBsb2FkaW5nTGF5ZXIoKTogY2MuTm9kZSB7IHJldHVybiB0aGlzLl9sb2FkaW5nTGF5ZXI7IH1cbiAgICAvLyBwcml2YXRlIF9sb2FkaW5nTm9kZTogTm9kZTtcbiAgICBwcml2YXRlIF90aXBzTGF5ZXI6IGNjLk5vZGU7XG4gICAgcHJpdmF0ZSBfYWRMYXllcjogY2MuTm9kZTtcbiAgICBnZXQgYWRMYXllcigpOiBjYy5Ob2RlIHsgcmV0dXJuIHRoaXMuX2FkTGF5ZXI7IH1cblxuICAgIHByaXZhdGUgX2NhY2hlOiBNYXA8c3RyaW5nLCBjYy5Ob2RlPiA9IG5ldyBNYXA8c3RyaW5nLCBjYy5Ob2RlPigpO1xuICAgIGdldCBjYWNoZSgpOiBNYXA8c3RyaW5nLCBjYy5Ob2RlPiB7IHJldHVybiB0aGlzLl9jYWNoZTsgfVxuXG4gICAgcHJpdmF0ZSBfYWRSb290OiBjYy5Ob2RlO1xuXG4gICAgLy8gc2V0TG9hZGluZ05vZGUobm9kZTogTm9kZSk6IHZvaWQge1xuICAgIC8vICAgICB0aGlzLl9sb2FkaW5nTm9kZSA9IG5vZGU7XG4gICAgLy8gfVxuXG4gICAgLy8gc2V0QWROb2RlKG5vZGU6IGNjLk5vZGUpIHtcbiAgICAvLyAgICAgdGhpcy5fYWRSb290ID0gbm9kZTtcbiAgICAvLyB9XG5cblxuXG4gICAgaW5pdCh1aVJvb3Q6IGNjLk5vZGUpOiB2b2lkIHtcbiAgICAgICAgLy/lt7Lnu4/ov5vlhaXkuoZHYW1lTWFpbuWcuuaZr1xuXG4gICAgICAgIHRoaXMuX3VpUm9vdCA9IHVpUm9vdDtcbiAgICAgICAgdGhpcy5fdWlMYXllciA9IHRoaXMuX3VpUm9vdC5nZXRDaGlsZEJ5TmFtZShcInVpTGF5ZXJcIik7XG4gICAgICAgIHRoaXMuX3dpbmRvd0xvY2tMYXllciA9IHRoaXMuX3VpUm9vdC5nZXRDaGlsZEJ5TmFtZShcIndpbmRvd0JsY29rXCIpO1xuICAgICAgICB0aGlzLl93aW5kb3dMb2NrTGF5ZXIuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIC8vIHRoaXMuX3dpbmRvd0xvY2tMYXllci5nZXRDb21wb25lbnQoV2lkZ2V0KS51cGRhdGVBbGlnbm1lbnQoKTtcbiAgICAgICAgdGhpcy5fd2luZG93TGF5ZXIgPSB0aGlzLl91aVJvb3QuZ2V0Q2hpbGRCeU5hbWUoXCJ3aW5kb3dMYXllclwiKTtcbiAgICAgICAgdGhpcy5fd2lkZ2V0TGF5ZXIgPSB0aGlzLl91aVJvb3QuZ2V0Q2hpbGRCeU5hbWUoXCJ3aWRnZXRMYXllclwiKTtcbiAgICAgICAgdGhpcy5fbG9hZGluZ0xheWVyID0gdGhpcy5fdWlSb290LmdldENoaWxkQnlOYW1lKFwibG9hZGluZ0xheWVyXCIpO1xuICAgICAgICB0aGlzLl9sb2FkaW5nTGF5ZXIuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3RpcHNMYXllciA9IHRoaXMuX3VpUm9vdC5nZXRDaGlsZEJ5TmFtZShcInRpcHNMYXllclwiKTtcblxuICAgICAgICB0aGlzLl9hZExheWVyID0gdGhpcy5fdWlSb290LmdldENoaWxkQnlOYW1lKFwiYWRMYXllclwiKTtcblxuICAgICAgICAvLyBpZiAodGhpcy5fbG9hZGluZ05vZGUpIHtcbiAgICAgICAgLy8gICAgIC8vIHRoaXMuX2xvYWRpbmdOb2RlLnJlbW92ZUZyb21QYXJlbnQoKTsgXG4gICAgICAgIC8vICAgICB0aGlzLl9sb2FkaW5nTGF5ZXIuYWRkQ2hpbGQodGhpcy5fbG9hZGluZ05vZGUpO1xuXG4gICAgICAgIC8vICAgICB0aGlzLl9sb2FkaW5nTm9kZS5nZXRDaGlsZEJ5TmFtZShcInR5cGUxXCIpLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAvLyAgICAgdGhpcy5fbG9hZGluZ05vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0eXBlMlwiKS5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAvLyAgICAgdGhpcy5fbG9hZGluZ05vZGUuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIC8vIH1cblxuICAgICAgICAvLyB1aVJvb3QuYWRkQ2hpbGQodGhpcy5fYWRSb290KTsvL+a3u+WKoOW5v+WRiuiKgueCuVxuXG4gICAgfVxuICAgIC8vIHN0YXRpYyBnZXQgYWRSb290KCkge1xuICAgIC8vICAgICBsZXQgX3NjZW5lOiBhbnkgPSBjYy5kaXJlY3Rvci5nZXRTY2VuZSgpO1xuICAgIC8vICAgICBsZXQgX2FkUm9vdCA9IF9zY2VuZS5nZXRDaGlsZEJ5TmFtZSgnQ2FudmFzJykuZ2V0Q2hpbGRCeU5hbWUoJ2FkTGF5ZXInKSBhcyBjYy5Ob2RlO1xuICAgIC8vICAgICBpZiAoX2FkUm9vdCA9PSBudWxsKSB7XG4gICAgLy8gICAgICAgICBfYWRSb290ID0gbmV3IGNjLk5vZGUoKTtcbiAgICAvLyAgICAgICAgIF9hZFJvb3QubmFtZSA9ICdhZExheWVyJztcbiAgICAvLyAgICAgICAgIF9hZFJvb3QucGFyZW50ID0gX3NjZW5lLmdldENoaWxkQnlOYW1lKCdDYW52YXMnKTtcbiAgICAvLyAgICAgICAgIF9hZFJvb3QueCA9IDA7XG4gICAgLy8gICAgICAgICBfYWRSb290LnkgPSAwO1xuICAgIC8vICAgICAgICAgX2FkUm9vdC53aWR0aCA9IGNjLndpblNpemUud2lkdGg7XG4gICAgLy8gICAgICAgICBfYWRSb290LmhlaWdodCA9IGNjLndpblNpemUuaGVpZ2h0O1xuICAgIC8vICAgICAgICAgX2FkUm9vdC5zZXRTaWJsaW5nSW5kZXgoOTk5KTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICByZXR1cm4gX2FkUm9vdDtcbiAgICAvLyB9XG4gICAgb3BlblNjZW5lKG5hbWU6IHN0cmluZykge1xuXG4gICAgICAgIHRoaXMuX2xvYWRpbmdMYXllci5hY3RpdmUgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuX2xvYWRpbmdMYXllci5nZXRDaGlsZEJ5TmFtZSgnc2NlbmVOb2RlJykuYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fbG9hZGluZ0xheWVyLmdldENoaWxkQnlOYW1lKCd3aW5kb3dOb2RlJykuYWN0aXZlID0gZmFsc2U7XG5cbiAgICAgICAgY2MucmVzb3VyY2VzLmxvYWRTY2VuZSgnc2NlbmVzLycgKyBuYW1lLFxuICAgICAgICAgICAgKGZpbmlzaDogbnVtYmVyLCB0b3RhbDogbnVtYmVyKSA9PiB7XG5cbiAgICAgICAgICAgICAgICBsZXQgcHJnID0gZmluaXNoIC8gdG90YWw7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9hZGluZ0xheWVyLmdldENoaWxkQnlOYW1lKCdzY2VuZU5vZGUnKS5nZXRDb21wb25lbnRJbkNoaWxkcmVuKGNjLlByb2dyZXNzQmFyKS5wcm9ncmVzcyA9IHByZztcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnJvciwgc2NlbmU6IGNjLlNjZW5lQXNzZXQpID0+IHtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdMYXllci5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5ydW5TY2VuZShzY2VuZSk7XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGNjLmRpcmVjdG9yLnNjZW5lXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogXG4gICAgICogQHBhcmFtIHR5cGUgXG4gICAgICogQHBhcmFtIGNhbGxCYWNrIOWPguaVsCB2aWV3OmNjLk5vZGVcbiAgICAgKi9cbiAgICBsb2FkV2luZG93KHR5cGU6IFdpbmRvd05hbWUsIGNhbGxCYWNrOiBGdW5jdGlvbikge1xuXG4gICAgICAgIGlmICh0aGlzLl9jYWNoZS5oYXModHlwZSkpIHtcbiAgICAgICAgICAgIGNhbGxCYWNrKHRoaXMuX2NhY2hlLmdldCh0eXBlKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG5cbiAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdMYXllci5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fbG9hZGluZ0xheWVyLmdldENoaWxkQnlOYW1lKCdzY2VuZU5vZGUnKS5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdMYXllci5nZXRDaGlsZEJ5TmFtZSgnd2luZG93Tm9kZScpLmFjdGl2ZSA9IHRydWU7XG5cbiAgICAgICAgICAgIGNjLnJlc291cmNlcy5sb2FkKHR5cGUsIGNjLlByZWZhYiwgKGVycm9yLCBwcmVmYWI6IGNjLlByZWZhYikgPT4ge1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9hZGluZ0xheWVyLmFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFlcnJvcikge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5fY2FjaGUuaGFzKHR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmlldyA9IGNjLmluc3RhbnRpYXRlKHByZWZhYik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZS5zZXQodHlwZSwgdmlldyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsQmFjayh2aWV3KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cblxuICAgIH1cblxuICAgIG9wZW5XaW5kb3codHlwZTogV2luZG93TmFtZSwgb3BlblBhcmFtOiBhbnkgPSBudWxsKTogdm9pZCB7XG5cbiAgICAgICAgaWYgKHRoaXMuX2NhY2hlLmhhcyh0eXBlKSkge1xuICAgICAgICAgICAgdGhpcy5kb09wZW5XaW5kb3codGhpcy5fY2FjaGUuZ2V0KHR5cGUpLCBvcGVuUGFyYW0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuXG4gICAgICAgICAgICAvLyB0aGlzLl9sb2FkaW5nTGF5ZXIuYWN0aXZlID0gdHJ1ZTtcblxuICAgICAgICAgICAgLy8gdGhpcy5fbG9hZGluZ0xheWVyLmdldENoaWxkQnlOYW1lKCdzY2VuZU5vZGUnKS5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIC8vIHRoaXMuX2xvYWRpbmdMYXllci5nZXRDaGlsZEJ5TmFtZSgnd2luZG93Tm9kZScpLmFjdGl2ZSA9IHRydWU7XG5cbiAgICAgICAgICAgIC8vIGNjLnJlc291cmNlcy5sb2FkKHR5cGUsIGNjLlByZWZhYixcblxuICAgICAgICAgICAgLy8gICAgIChmaW5pc2hlZCwgdG90YWwpID0+IHtcbiAgICAgICAgICAgIC8vICAgICAgICAgbGV0IHByZyA9IGZpbmlzaGVkIC8gdG90YWw7XG4gICAgICAgICAgICAvLyAgICAgfSxcblxuICAgICAgICAgICAgLy8gICAgIChlcnJvciwgcHJlZmFiOiBjYy5QcmVmYWIpID0+IHtcbiAgICAgICAgICAgIC8vICAgICAgICAgLy9maW5pc2hcblxuICAgICAgICAgICAgLy8gICAgICAgICBpZiAoIXRoaXMuX2NhY2hlLmhhcyh0eXBlKSkge1xuICAgICAgICAgICAgLy8gICAgICAgICAgICAgbGV0IHZpZXcgPSBjYy5pbnN0YW50aWF0ZShwcmVmYWIpO1xuICAgICAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5fY2FjaGUuc2V0KHR5cGUsIHZpZXcpO1xuICAgICAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5fbG9hZGluZ0xheWVyLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5kb09wZW5XaW5kb3codmlldywgb3BlblBhcmFtKTtcbiAgICAgICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAgICAgLy8gICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmxvYWRXaW5kb3codHlwZSwgKHZpZXc6IGNjLk5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRvT3BlbldpbmRvdyh2aWV3LCBvcGVuUGFyYW0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZG9PcGVuV2luZG93KHZpZXc6IGNjLk5vZGUsIHBhcmFtOiBhbnkpOiB2b2lkIHtcblxuICAgICAgICBpZiAoIXZpZXcucGFyZW50KSB7XG4gICAgICAgICAgICAhdGhpcy5fd2luZG93TG9ja0xheWVyLmFjdGl2ZSAmJiAodGhpcy5fd2luZG93TG9ja0xheWVyLmFjdGl2ZSA9IHRydWUpO1xuXG4gICAgICAgICAgICBsZXQgYmFzZSA9IHZpZXcuZ2V0Q29tcG9uZW50KFVJQmFzZSk7XG4gICAgICAgICAgICBiYXNlICYmIChiYXNlLmVuYWJsZVBhcmFtID0gcGFyYW0pO1xuXG4gICAgICAgICAgICB0aGlzLl93aW5kb3dMYXllci5hZGRDaGlsZCh2aWV3KTtcbiAgICAgICAgICAgIHZpZXcuYWN0aXZlID0gdHJ1ZTtcblxuICAgICAgICAgICAgYmFzZSAmJiBiYXNlLm9uUG9wVXBFZmZlY3QoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlV2luZG93KHR5cGU6IFdpbmRvd05hbWUsIGNhbGxiYWNrOiBGdW5jdGlvbiA9IG51bGwpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2NhY2hlLmhhcyh0eXBlKSkge1xuICAgICAgICAgICAgbGV0IHZpZXcgPSB0aGlzLl9jYWNoZS5nZXQodHlwZSk7XG5cbiAgICAgICAgICAgIC8vIHZpZXcuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgYmFzZSA9IHZpZXcuZ2V0Q29tcG9uZW50KFVJQmFzZSk7XG4gICAgICAgICAgICBiYXNlICYmIGJhc2Uub25CZWZvcmVDbG9zZSgpO1xuXG4gICAgICAgICAgICBiYXNlLm9uQ2xvc2VFZmZlY3QoKCkgPT4ge1xuXG5cbiAgICAgICAgICAgICAgICBsZXQgaXNPbldpbmRvd0xheWVyID0gKHZpZXcuaXNWYWxpZCAmJiB2aWV3LnBhcmVudCA9PT0gdGhpcy5fd2luZG93TGF5ZXIpXG5cbiAgICAgICAgICAgICAgICBpZiAoaXNPbldpbmRvd0xheWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHZpZXcucmVtb3ZlRnJvbVBhcmVudCgpO1xuICAgICAgICAgICAgICAgICAgICB2aWV3LmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgaWYgKGlzT25XaW5kb3dMYXllciAmJiB0aGlzLl93aW5kb3dMYXllci5jaGlsZHJlbi5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl93aW5kb3dMb2NrTGF5ZXIuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH0sIHRoaXMpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRXaWRnZXROb2RlKHR5cGU6IFJlc1R5cGUpOiBjYy5Ob2RlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dpZGdldExheWVyLmdldENoaWxkQnlOYW1lKCd3aWRnZXQnICsgdHlwZS50b1N0cmluZygpKTtcbiAgICB9XG5cbiAgICBzaG93VGlwcyhzdHI6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICAvLyBsZXQgbm9kZSA9IHRoaXMuX3RpcHNMYXllci5nZXRDaGlsZEJ5TmFtZSgnVGlwc05vZGUnKTtcbiAgICAgICAgLy8gbm9kZS5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAvLyBub2RlLmdldENvbXBvbmVudEluQ2hpbGRyZW4oTGFiZWwpLnN0cmluZyA9IHN0cjtcblxuICAgICAgICAvLyBUd2Vlbi5zdG9wQWxsQnlUYXJnZXQobm9kZSk7XG4gICAgICAgIC8vIHR3ZWVuKG5vZGUpLmRlbGF5KDMpLmNhbGwodGhpcy5jbG9zZVRpcHMuYmluZCh0aGlzKSkuc3RhcnQoKVxuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2VUaXBzKCk6IHZvaWQge1xuICAgICAgICBsZXQgbm9kZSA9IHRoaXMuX3RpcHNMYXllci5nZXRDaGlsZEJ5TmFtZSgnVGlwc05vZGUnKTtcbiAgICAgICAgbm9kZS5hY3RpdmUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBwbGF5UmVzRmx5RWZmZWN0XG59Il19