| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320 |
- (function() {
- var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
- var __module = nodeEnv ? module : {exports:{}};
- var __filename = 'preview-scripts/assets/script/game/manager/AudioManager.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, '23fb49P+89BR4lApOFB9Q88', 'AudioManager');
- // script/game/manager/AudioManager.ts
- "use strict";
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
- };
- var __generator = (this && this.__generator) || function (thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- /**
- * 音频模块
- * @author 薛鸿潇
- */
- var AudioManager = /** @class */ (function () {
- function AudioManager() {
- /** 音乐开关 */
- this._switchMusic = true;
- /** 音效开关 */
- this._switchEffect = true;
- /** 音效音量 */
- this._effectVolume = 1;
- /** 音乐音量 */
- this._musicVolume = 1;
- /** 暂时音效开关 */
- this._switchTempEffect = true;
- /** 音频map */
- this._map_audio = new Map();
- }
- /** 初始化 */
- AudioManager.prototype.init = function () {
- // 获取本地开关设置
- var effect = cc.sys.localStorage.getItem("switchEffect");
- if (effect) {
- if (effect == "true") {
- this._switchEffect = true;
- }
- else {
- this._switchEffect = false;
- }
- }
- var music = cc.sys.localStorage.getItem("switchMusic");
- if (music) {
- if (music == "true") {
- this._switchMusic = true;
- }
- else {
- this._switchMusic = false;
- }
- }
- if (this._switchMusic) {
- this.playMusic('bgm', true);
- }
- };
- /**
- * 播放音乐文件
- * @param audio_name 音频名字
- * @param loop 是否循环【默认循环】
- */
- AudioManager.prototype.playMusic = function (audio_name, loop) {
- if (loop === void 0) { loop = true; }
- return __awaiter(this, void 0, void 0, function () {
- var asset;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- asset = this._map_audio.get(audio_name);
- if (!!asset) return [3 /*break*/, 2];
- return [4 /*yield*/, mk.loader.load(AUDIO_PATH + audio_name, cc.AudioClip)];
- case 1:
- asset = _a.sent();
- this._map_audio.set(audio_name, asset);
- _a.label = 2;
- case 2:
- mk.audio.playMusic(asset, loop);
- return [2 /*return*/];
- }
- });
- });
- };
- /**
- * 播放音效文件
- * @param audio_name 音频名字
- * @param loop 是否循环【默认不循环】
- */
- AudioManager.prototype.playEffect = function (audio_name, loop) {
- if (loop === void 0) { loop = false; }
- return __awaiter(this, void 0, void 0, function () {
- var asset;
- return __generator(this, function (_a) {
- switch (_a.label) {
- case 0:
- if (!(this._switchEffect && this._switchTempEffect)) return [3 /*break*/, 3];
- asset = this._map_audio.get(audio_name);
- if (!!asset) return [3 /*break*/, 2];
- return [4 /*yield*/, mk.loader.load(AUDIO_PATH + audio_name, cc.AudioClip)];
- case 1:
- asset = _a.sent();
- this._map_audio.set(audio_name, asset);
- _a.label = 2;
- case 2:
- mk.audio.playEffect(asset, loop);
- _a.label = 3;
- case 3: return [2 /*return*/];
- }
- });
- });
- };
- /**
- * 停止播放音效
- * @param audio_id 音频id
- */
- AudioManager.prototype.stopEffect = function (audio_id) {
- mk.audio.stopEffect(audio_id);
- };
- /**
- * 转换音效开关
- */
- AudioManager.prototype.switchEffectFunc = function () {
- this._switchEffect = !this._switchEffect;
- if (!this._switchEffect) {
- this.setStopAllEffect();
- }
- cc.sys.localStorage.setItem("switchEffect", this._switchEffect.toString());
- };
- /**
- * 获取音效开关状态
- * @returns {boolean}
- */
- AudioManager.prototype.getSwitchEffect = function () {
- return this._switchEffect;
- };
- /**
- * 设置音效声音大小
- * value: 0.0 - 1.0
- */
- AudioManager.prototype.setEffectVolume = function (value) {
- this._effectVolume = value;
- mk.audio.setEffectVolume(value);
- cc.sys.localStorage.setItem("audio", JSON.stringify({ effect: this._effectVolume, music: this._musicVolume }));
- };
- /**
- * 获取音效大小
- * @return {number} 0.0 - 1.0
- */
- AudioManager.prototype.getEffectVolume = function () {
- return mk.audio.getEffectVolume();
- };
- /**
- * 恢复当前说暂停的所有音效
- */
- AudioManager.prototype.setResumeAllEffect = function () {
- if (this._switchEffect) {
- mk.audio.resumeAllEffects();
- }
- };
- /**
- * 停止播放所有正在播放的音效
- */
- AudioManager.prototype.setStopAllEffect = function () {
- mk.audio.stopAllEffects();
- };
- /** 暂时开启关闭音效开关
- * @param state true 打开 false 关闭
- */
- AudioManager.prototype.setTempEffect = function (state) {
- this._switchTempEffect = state;
- };
- /**
- * 转换音乐按钮开关
- */
- AudioManager.prototype.switchMusicFunc = function () {
- this._switchMusic = !this._switchMusic;
- if (!this._switchMusic) {
- this.stopMusic();
- }
- else {
- this.playMusic('bgm');
- }
- cc.sys.localStorage.setItem("switchMusic", this._switchMusic.toString());
- };
- /**
- * 获取音乐开关状态
- * @returns {boolean}
- */
- AudioManager.prototype.getSwitchMusic = function () {
- return this._switchMusic;
- };
- /**
- * 暂停当前播放音乐
- */
- AudioManager.prototype.setPauseMusic = function () {
- mk.audio.pauseMusic();
- };
- /**
- * 恢复当前被暂停音乐音乐
- */
- AudioManager.prototype.setResumeMusic = function () {
- if (this._switchMusic) {
- mk.audio.resumeMusic();
- }
- };
- /**
- * 暂停所有 music
- */
- AudioManager.prototype.stopMusic = function () {
- mk.audio.stopMusic();
- };
- /**
- * 设置music音量
- * @param value 音量
- */
- AudioManager.prototype.setMusicVolume = function (value) {
- this._musicVolume = value;
- mk.audio.setMusicVolume(value);
- cc.sys.localStorage.setItem("audio", JSON.stringify({ effect: this._effectVolume, music: this._musicVolume }));
- };
- /**
- * 获取当前music音量
- * @returns {number} 音量
- */
- AudioManager.prototype.getMusicVolume = function () {
- return mk.audio.getMusicVolume();
- };
- /**
- * 音乐是否正在播放(验证些方法来实现背景音乐是否播放完成)
- * @returns {boolen}
- */
- AudioManager.prototype.isMusicPlaying = function () {
- return mk.audio.isMusicPlaying();
- };
- /**
- * 释放指定音效资源
- * @param audio 音频资源
- */
- AudioManager.prototype.releaseAudio = function (audio) {
- if (!audio) {
- cc.error("【音频】资源" + audio + "不存在, 释放失败");
- return;
- }
- mk.audio.releaseAudio(audio);
- };
- /** 停止所有音效 */
- AudioManager.prototype.stopAllAudio = function () {
- mk.audio.stopAllAudio();
- };
- /** 卸载所有音频 */
- AudioManager.prototype.releaseAllAudio = function () {
- mk.audio.releaseAllAudio();
- };
- return AudioManager;
- }());
- exports.default = AudioManager;
- /** 音频路径 */
- var AUDIO_PATH = 'music/';
- /** 声音枚举 */
- var AUDIO_TYPE;
- (function (AUDIO_TYPE) {
- AUDIO_TYPE["bgm"] = "Background_music1";
- AUDIO_TYPE["button"] = "Button_click";
- AUDIO_TYPE["turntableDraw"] = "turntable1";
- AUDIO_TYPE["turntableDrawEnd"] = "turntable_2";
- AUDIO_TYPE["getGold"] = "Get_gold";
- })(AUDIO_TYPE || (AUDIO_TYPE = {}));
- 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2NyaXB0XFxnYW1lXFxtYW5hZ2VyXFxBdWRpb01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7O0dBR0c7QUFDSDtJQUFBO1FBRUksV0FBVztRQUNILGlCQUFZLEdBQVksSUFBSSxDQUFDO1FBQ3JDLFdBQVc7UUFDSCxrQkFBYSxHQUFZLElBQUksQ0FBQztRQUN0QyxXQUFXO1FBQ0gsa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFDbEMsV0FBVztRQUNILGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBQ2pDLGFBQWE7UUFDTCxzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFDMUMsWUFBWTtRQUNKLGVBQVUsR0FBa0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQXlObEUsQ0FBQztJQXZORyxVQUFVO0lBQ0gsMkJBQUksR0FBWDtRQUNJLFdBQVc7UUFDWCxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekQsSUFBSSxNQUFNLEVBQUU7WUFDUixJQUFJLE1BQU0sSUFBSSxNQUFNLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2FBQzdCO2lCQUFNO2dCQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO2FBQzlCO1NBQ0o7UUFFRCxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkQsSUFBSSxLQUFLLEVBQUU7WUFDUCxJQUFJLEtBQUssSUFBSSxNQUFNLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO2FBQzVCO2lCQUFNO2dCQUNILElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO2FBQzdCO1NBQ0o7UUFF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T0EsQUFzT0MsSUFBQTs7QUFDRCxXQUFXO0FBQ1gsSUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDO0FBQzVCLFdBQVc7QUFDWCxJQUFLLFVBTUo7QUFORCxXQUFLLFVBQVU7SUFDWCx1Q0FBeUIsQ0FBQTtJQUN6QixxQ0FBdUIsQ0FBQTtJQUN2QiwwQ0FBNEIsQ0FBQTtJQUM1Qiw4Q0FBZ0MsQ0FBQTtJQUNoQyxrQ0FBb0IsQ0FBQTtBQUN4QixDQUFDLEVBTkksVUFBVSxLQUFWLFVBQVUsUUFNZCIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiDpn7PpopHmqKHlnZdcclxuICogQGF1dGhvciDolpvpuL/mvYdcclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF1ZGlvTWFuYWdlciB7XHJcblxyXG4gICAgLyoqIOmfs+S5kOW8gOWFsyAqL1xyXG4gICAgcHJpdmF0ZSBfc3dpdGNoTXVzaWM6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgLyoqIOmfs+aViOW8gOWFsyAqL1xyXG4gICAgcHJpdmF0ZSBfc3dpdGNoRWZmZWN0OiBib29sZWFuID0gdHJ1ZTtcclxuICAgIC8qKiDpn7PmlYjpn7Pph48gKi9cclxuICAgIHByaXZhdGUgX2VmZmVjdFZvbHVtZTogbnVtYmVyID0gMTtcclxuICAgIC8qKiDpn7PkuZDpn7Pph48gKi9cclxuICAgIHByaXZhdGUgX211c2ljVm9sdW1lOiBudW1iZXIgPSAxO1xyXG4gICAgLyoqIOaaguaXtumfs+aViOW8gOWFsyAqL1xyXG4gICAgcHJpdmF0ZSBfc3dpdGNoVGVtcEVmZmVjdDogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAvKiog6Z+z6aKRbWFwICovXHJcbiAgICBwcml2YXRlIF9tYXBfYXVkaW86IE1hcDxBVURJT19OQU1FLCBjYy5BdWRpb0NsaXA+ID0gbmV3IE1hcCgpO1xyXG5cclxuICAgIC8qKiDliJ3lp4vljJYgKi9cclxuICAgIHB1YmxpYyBpbml0KCkge1xyXG4gICAgICAgIC8vIOiOt+WPluacrOWcsOW8gOWFs+iuvue9rlxyXG4gICAgICAgIGxldCBlZmZlY3QgPSBjYy5zeXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJzd2l0Y2hFZmZlY3RcIik7XHJcbiAgICAgICAgaWYgKGVmZmVjdCkge1xyXG4gICAgICAgICAgICBpZiAoZWZmZWN0ID09IFwidHJ1ZVwiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zd2l0Y2hFZmZlY3QgPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc3dpdGNoRWZmZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBtdXNpYyA9IGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInN3aXRjaE11c2ljXCIpO1xyXG4gICAgICAgIGlmIChtdXNpYykge1xyXG4gICAgICAgICAgICBpZiAobXVzaWMgPT0gXCJ0cnVlXCIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3N3aXRjaE11c2ljID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3N3aXRjaE11c2ljID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9zd2l0Y2hNdXNpYykge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXlNdXNpYygnYmdtJywgdHJ1ZSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmkq3mlL7pn7PkuZDmlofku7ZcclxuICAgICAqIEBwYXJhbSBhdWRpb19uYW1lIOmfs+mikeWQjeWtl1xyXG4gICAgICogQHBhcmFtIGxvb3Ag5piv5ZCm5b6q546v44CQ6buY6K6k5b6q546v44CRXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhc3luYyBwbGF5TXVzaWMoYXVkaW9fbmFtZTogQVVESU9fTkFNRSwgbG9vcDogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgICAgICBsZXQgYXNzZXQgPSB0aGlzLl9tYXBfYXVkaW8uZ2V0KGF1ZGlvX25hbWUpO1xyXG4gICAgICAgIGlmICghYXNzZXQpIHtcclxuICAgICAgICAgICAgYXNzZXQgPSBhd2FpdCBtay5sb2FkZXIubG9hZChBVURJT19QQVRIICsgYXVkaW9fbmFtZSwgY2MuQXVkaW9DbGlwKTtcclxuICAgICAgICAgICAgdGhpcy5fbWFwX2F1ZGlvLnNldChhdWRpb19uYW1lLCBhc3NldCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1rLmF1ZGlvLnBsYXlNdXNpYyhhc3NldCwgbG9vcCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmkq3mlL7pn7PmlYjmlofku7ZcclxuICAgICAqIEBwYXJhbSBhdWRpb19uYW1lIOmfs+mikeWQjeWtl1xyXG4gICAgICogQHBhcmFtIGxvb3Ag5piv5ZCm5b6q546v44CQ6buY6K6k5LiN5b6q546v44CRXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhc3luYyBwbGF5RWZmZWN0KGF1ZGlvX25hbWU6IEFVRElPX05BTUUsIGxvb3A6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgICAgIGlmICh0aGlzLl9zd2l0Y2hFZmZlY3QgJiYgdGhpcy5fc3dpdGNoVGVtcEVmZmVjdCkge1xyXG4gICAgICAgICAgICBsZXQgYXNzZXQgPSB0aGlzLl9tYXBfYXVkaW8uZ2V0KGF1ZGlvX25hbWUpO1xyXG4gICAgICAgICAgICBpZiAoIWFzc2V0KSB7XHJcbiAgICAgICAgICAgICAgICBhc3NldCA9IGF3YWl0IG1rLmxvYWRlci5sb2FkKEFVRElPX1BBVEggKyBhdWRpb19uYW1lLCBjYy5BdWRpb0NsaXApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbWFwX2F1ZGlvLnNldChhdWRpb19uYW1lLCBhc3NldCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbWsuYXVkaW8ucGxheUVmZmVjdChhc3NldCwgbG9vcCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5YGc5q2i5pKt5pS+6Z+z5pWIXHJcbiAgICAgKiBAcGFyYW0gYXVkaW9faWQg6Z+z6aKRaWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0b3BFZmZlY3QoYXVkaW9faWQ6IG51bWJlcikge1xyXG4gICAgICAgIG1rLmF1ZGlvLnN0b3BFZmZlY3QoYXVkaW9faWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6L2s5o2i6Z+z5pWI5byA5YWzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzd2l0Y2hFZmZlY3RGdW5jKCkge1xyXG4gICAgICAgIHRoaXMuX3N3aXRjaEVmZmVjdCA9ICF0aGlzLl9zd2l0Y2hFZmZlY3Q7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9zd2l0Y2hFZmZlY3QpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdG9wQWxsRWZmZWN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInN3aXRjaEVmZmVjdFwiLCB0aGlzLl9zd2l0Y2hFZmZlY3QudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDojrflj5bpn7PmlYjlvIDlhbPnirbmgIFcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0U3dpdGNoRWZmZWN0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zd2l0Y2hFZmZlY3Q7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDorr7nva7pn7PmlYjlo7Dpn7PlpKflsI9cclxuICAgICAqIHZhbHVlOiAwLjAgLSAxLjBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldEVmZmVjdFZvbHVtZSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5fZWZmZWN0Vm9sdW1lID0gdmFsdWU7XHJcbiAgICAgICAgbWsuYXVkaW8uc2V0RWZmZWN0Vm9sdW1lKHZhbHVlKTtcclxuICAgICAgICBjYy5zeXMubG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJhdWRpb1wiLCBKU09OLnN0cmluZ2lmeSh7IGVmZmVjdDogdGhpcy5fZWZmZWN0Vm9sdW1lLCBtdXNpYzogdGhpcy5fbXVzaWNWb2x1bWUgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6I635Y+W6Z+z5pWI5aSn5bCPXHJcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IDAuMCAtIDEuMFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0RWZmZWN0Vm9sdW1lKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIG1rLmF1ZGlvLmdldEVmZmVjdFZvbHVtZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5oGi5aSN5b2T5YmN6K+05pqC5YGc55qE5omA5pyJ6Z+z5pWIXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRSZXN1bWVBbGxFZmZlY3QoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3N3aXRjaEVmZmVjdCkge1xyXG4gICAgICAgICAgICBtay5hdWRpby5yZXN1bWVBbGxFZmZlY3RzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5YGc5q2i5pKt5pS+5omA5pyJ5q2j5Zyo5pKt5pS+55qE6Z+z5pWIXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRTdG9wQWxsRWZmZWN0KCkge1xyXG4gICAgICAgIG1rLmF1ZGlvLnN0b3BBbGxFZmZlY3RzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIOaaguaXtuW8gOWQr+WFs+mXremfs+aViOW8gOWFs1xyXG4gICAgICogQHBhcmFtIHN0YXRlIHRydWUgIOaJk+W8gCAgZmFsc2Ug5YWz6ZetXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRUZW1wRWZmZWN0KHN0YXRlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fc3dpdGNoVGVtcEVmZmVjdCA9IHN0YXRlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6L2s5o2i6Z+z5LmQ5oyJ6ZKu5byA5YWzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzd2l0Y2hNdXNpY0Z1bmMoKSB7XHJcbiAgICAgICAgdGhpcy5fc3dpdGNoTXVzaWMgPSAhdGhpcy5fc3dpdGNoTXVzaWM7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9zd2l0Y2hNdXNpYykge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3BNdXNpYygpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucGxheU11c2ljKCdiZ20nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2Muc3lzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKFwic3dpdGNoTXVzaWNcIiwgdGhpcy5fc3dpdGNoTXVzaWMudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDojrflj5bpn7PkuZDlvIDlhbPnirbmgIFcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0U3dpdGNoTXVzaWMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N3aXRjaE11c2ljO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5pqC5YGc5b2T5YmN5pKt5pS+6Z+z5LmQXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRQYXVzZU11c2ljKCkge1xyXG4gICAgICAgIG1rLmF1ZGlvLnBhdXNlTXVzaWMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOaBouWkjeW9k+WJjeiiq+aaguWBnOmfs+S5kOmfs+S5kFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0UmVzdW1lTXVzaWMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3N3aXRjaE11c2ljKSB7XHJcbiAgICAgICAgICAgIG1rLmF1ZGlvLnJlc3VtZU11c2ljKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5pqC5YGc5omA5pyJIG11c2ljXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdG9wTXVzaWMoKSB7XHJcbiAgICAgICAgbWsuYXVkaW8uc3RvcE11c2ljKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDorr7nva5tdXNpY+mfs+mHj1xyXG4gICAgICogQHBhcmFtIHZhbHVlIOmfs+mHj1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0TXVzaWNWb2x1bWUodmFsdWU6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuX211c2ljVm9sdW1lID0gdmFsdWU7XHJcbiAgICAgICAgbWsuYXVkaW8uc2V0TXVzaWNWb2x1bWUodmFsdWUpO1xyXG4gICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImF1ZGlvXCIsIEpTT04uc3RyaW5naWZ5KHsgZWZmZWN0OiB0aGlzLl9lZmZlY3RWb2x1bWUsIG11c2ljOiB0aGlzLl9tdXNpY1ZvbHVtZSB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDojrflj5blvZPliY1tdXNpY+mfs+mHj1xyXG4gICAgICogQHJldHVybnMge251bWJlcn0g6Z+z6YePXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRNdXNpY1ZvbHVtZSgpIHtcclxuICAgICAgICByZXR1cm4gbWsuYXVkaW8uZ2V0TXVzaWNWb2x1bWUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOmfs+S5kOaYr+WQpuato+WcqOaSreaUvu+8iOmqjOivgeS6m+aWueazleadpeWunueOsOiDjOaZr+mfs+S5kOaYr+WQpuaSreaUvuWujOaIkO+8iVxyXG4gICAgICogQHJldHVybnMge2Jvb2xlbn1cclxuICAgICAqL1xyXG4gICAgcHVibGljIGlzTXVzaWNQbGF5aW5nKCkge1xyXG4gICAgICAgIHJldHVybiBtay5hdWRpby5pc011c2ljUGxheWluZygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6YeK5pS+5oyH5a6a6Z+z5pWI6LWE5rqQXHJcbiAgICAgKiBAcGFyYW0gYXVkaW8g6Z+z6aKR6LWE5rqQXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWxlYXNlQXVkaW8oYXVkaW86IGNjLkF1ZGlvQ2xpcCkge1xyXG4gICAgICAgIGlmICghYXVkaW8pIHtcclxuICAgICAgICAgICAgY2MuZXJyb3IoXCLjgJDpn7PpopHjgJHotYTmupBcIiArIGF1ZGlvICsgXCLkuI3lrZjlnKjvvIwg6YeK5pS+5aSx6LSlXCIpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbWsuYXVkaW8ucmVsZWFzZUF1ZGlvKGF1ZGlvKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiog5YGc5q2i5omA5pyJ6Z+z5pWIICovXHJcbiAgICBwdWJsaWMgc3RvcEFsbEF1ZGlvKCkge1xyXG4gICAgICAgIG1rLmF1ZGlvLnN0b3BBbGxBdWRpbygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiDljbjovb3miYDmnInpn7PpopEgKi9cclxuICAgIHB1YmxpYyByZWxlYXNlQWxsQXVkaW8oKSB7XHJcbiAgICAgICAgbWsuYXVkaW8ucmVsZWFzZUFsbEF1ZGlvKCk7XHJcbiAgICB9XHJcbn1cclxuLyoqIOmfs+mikei3r+W+hCAqL1xyXG5jb25zdCBBVURJT19QQVRIID0gJ211c2ljLyc7XHJcbi8qKiDlo7Dpn7PmnprkuL4gKi9cclxuZW51bSBBVURJT19UWVBFIHtcclxuICAgIGJnbSA9ICdCYWNrZ3JvdW5kX211c2ljMScsICAgICAgICAgICAvL+iDjOaZr+mfs+S5kFxyXG4gICAgYnV0dG9uID0gJ0J1dHRvbl9jbGljaycsICAgICAgICAgICAgLy/mjInpkq7ngrnlh7vpn7PmlYhcclxuICAgIHR1cm50YWJsZURyYXcgPSAndHVybnRhYmxlMScsICAgICAgICAgICAvL+i9rOebmOaKveWllue7k+adn1xyXG4gICAgdHVybnRhYmxlRHJhd0VuZCA9ICd0dXJudGFibGVfMicsICAgICAgICAgICAvL+i9rOebmOaKveWllumfs+aViFxyXG4gICAgZ2V0R29sZCA9ICdHZXRfZ29sZCcsICAgICAgIC8v6I635Y+W6YeR5biB6Z+z5pWIXHJcbn1cclxuLyoqIOWklumDqOivu+WPluWIsOeahOexu+WeiyAqL1xyXG50eXBlIEFVRElPX05BTUUgPSBrZXlvZiB0eXBlb2YgQVVESU9fVFlQRTsiXX0=
|