FlyUp/temp/quick-scripts/dst/assets/Script/tool/AudioManager.js
2024-08-02 17:23:53 +08:00

307 lines
27 KiB
JavaScript

(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/Script/tool/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, '7574f5PdlZP4Kt9dxMgkIPZ', 'AudioManager');
// Script/tool/AudioManager.ts
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
Object.defineProperty(exports, "__esModule", { value: true });
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
var AudioManager = /** @class */ (function (_super) {
__extends(AudioManager, _super);
function AudioManager() {
var _this = _super !== null && _super.apply(this, arguments) || this;
//背景音乐
_this.audioGameBgm0 = null;
//跳跃
_this.jump = null;
//落地上
_this.luodi = null;
//碰撞
_this.pz = null;
//落方块上
_this.luodui = null;
return _this;
}
AudioManager_1 = AudioManager;
AudioManager.prototype.ctor = function () {
this.mAudioMap = {};
/**
* 默认音量大小
* @type {number}
*/
this.bgMusicVolume = 0.1;
this.effectMusicVolume = 1;
this.mMusicSwitch = 1;
this.mEffectSwitch = 1;
};
AudioManager.prototype.play = function (audioSource, loop, callback, isBgMusic) {
if (isBgMusic && !this.mMusicSwitch)
return;
if (!isBgMusic && !this.mEffectSwitch)
return;
var volume = isBgMusic ? this.bgMusicVolume : this.effectMusicVolume;
if (cc.sys.isBrowser) {
if (audioSource == this.brickSound) {
volume = 0.1;
}
volume = 1;
var context = cc.audioEngine.play(audioSource, loop, volume);
if (callback) {
cc.audioEngine.setFinishCallback(context, function () {
callback.call(this);
}.bind(this));
}
// cc.wwx.OutPut.log('play audio effect isBrowser: ' + context.src);
this.mAudioMap[audioSource] = context;
return audioSource;
}
else {
return audioSource;
}
};
AudioManager.prototype.save = function () {
// cc.wwx.Storage.setItem(cc.wwx.Storage.Key_Setting_Music_Volume, this.mMusicSwitch);
// cc.wwx.Storage.setItem(cc.wwx.Storage.Key_Setting_Effect_Volume, this.mEffectSwitch);
};
AudioManager.prototype.onLoad = function () {
if (AudioManager_1._instance == null) {
AudioManager_1._instance = this;
cc.game.addPersistRootNode(this.node);
}
else {
this.node.destroy();
return;
}
this.reward = false;
this.finish = false;
this.rewardCount = 0;
this.ctor();
this.preload();
};
AudioManager.prototype.preload = function () {
if (!(cc.sys.platform === cc.sys.WECHAT_GAME)) {
return;
}
var musics = [
this.audioGameBgm0,
];
musics.forEach(function (path) {
// var musicPath = wxDownloader.REMOTE_SERVER_ROOT + path;
// if (musicPath != wxDownloader.REMOTE_SERVER_ROOT && musicPath.endsWith('.mp3')) {
// cc.loader.load(musicPath, function(err, remoteUrl) {
// if (err) {
// cc.error(err.message || err);
// return;
// }
// });
// }
});
};
AudioManager.prototype.getAudioMusicSwitch = function () {
return this.mMusicSwitch;
};
AudioManager.prototype.getAudioEffectSwitch = function () {
return this.mEffectSwitch;
};
AudioManager.prototype.trunAudioSound = function (on) {
this.switchMusic(on);
this.switchEffect(on);
};
AudioManager.prototype.switchMusic = function (on) {
if (this.mMusicSwitch != (on ? 1 : 0)) {
this.mMusicSwitch = 1 - this.mMusicSwitch;
// this.save();
}
if (on) {
this.playMusicGame();
}
else {
this.stopMusic();
}
};
AudioManager.prototype.switchEffect = function (on) {
if (this.mEffectSwitch != (on ? 1 : 0)) {
this.mEffectSwitch = 1 - this.mEffectSwitch;
// this.save();
}
};
AudioManager.prototype.onHide = function () {
cc.audioEngine.pauseAll();
// if (CC_JSB) {
// } else {
// for (var key in this.mAudioMap) {
// if (key === this.mMusicKey) {
// this.mAudioMap[key].pause();
// } else {
// this.mAudioMap[key].stop();
// }
// }
// }
};
AudioManager.prototype.onShow = function () {
cc.audioEngine.resumeAll();
// if (CC_JSB) {
// } else {
// if (!this.mMusicSwitch) return;
// var context = this.mAudioMap[this.mMusicKey];
// if (context) {
// context.play();
// }
// }
};
AudioManager.prototype.playMusic = function (key, callback, loop) {
loop = typeof loop == 'undefined' || loop ? true : false;
this.stopMusic();
this.mMusicKey = this.play(key, loop, callback, true);
};
/**
* 游戏背景音乐
*/
AudioManager.prototype.playMusicGame = function () {
// this.playMusic(this.audioGameBgm0,{},true);
};
/**
* 停止背景音乐播放
*/
AudioManager.prototype.stopMusic = function () {
// cc.wwx.OutPut.log('stopMusic audio effect wx: ' + this.mMusicKey);
var context = this.mAudioMap[this.mMusicKey];
if (typeof (context) != 'undefined') {
if (cc.sys.isBrowser) {
cc.audioEngine.stop(context);
}
else {
context.stop();
}
cc.audioEngine.stop(context);
}
};
// 炸弹、火箭爆炸音效
AudioManager.prototype.playJump = function () {
return this.play(this.jump, false, null, this.mEffectSwitch);
};
//激光音效
AudioManager.prototype.playLuo = function () {
return this.play(this.luodui, false, null, this.mEffectSwitch);
};
//技能音效
AudioManager.prototype.playGround = function () {
return this.play(this.luodi, false, null, this.mEffectSwitch);
};
//技能音效
AudioManager.prototype.playPz = function () {
return this.play(this.pz, false, null, this.mEffectSwitch);
};
/*
* 游戏开始音效
*
*/
AudioManager.prototype.playGameStart = function () {
};
/*
* 失败的游戏结束
*/
AudioManager.prototype.playGameOver = function () {
};
/*
* 成功的游戏结束
*/
AudioManager.prototype.playGameResultFailed = function () {
};
/*
* 成功的游戏结束
*/
AudioManager.prototype.playGameResultSuccess = function () {
};
/**
* 报警的音效
*/
AudioManager.prototype.playWarning = function () {
};
/*
* 方块碰撞的声音
*/
AudioManager.prototype.playBrick = function () {
// return this.play(this.brickSound,false);
};
//方块破碎的声音
AudioManager.prototype.brickBoom = function () {
};
/**
* 按钮
*/
AudioManager.prototype.playAudioButton = function () {
};
AudioManager.prototype.playRandomMatch = function () {
this.playMusic(this.audioGameBgm0, {}, true);
};
AudioManager.prototype.playMatchFoundSound = function () {
this.stopMusic();
// return this.play(this.matchFoundSound, false);
};
var AudioManager_1;
__decorate([
property(cc.AudioClip)
], AudioManager.prototype, "audioGameBgm0", void 0);
__decorate([
property(cc.AudioClip)
], AudioManager.prototype, "jump", void 0);
__decorate([
property(cc.AudioClip)
], AudioManager.prototype, "luodi", void 0);
__decorate([
property(cc.AudioClip)
], AudioManager.prototype, "pz", void 0);
__decorate([
property(cc.AudioClip)
], AudioManager.prototype, "luodui", void 0);
AudioManager = AudioManager_1 = __decorate([
ccclass
], AudioManager);
return AudioManager;
}(cc.Component));
exports.default = AudioManager;
;
// export { AudioManager };
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFx0b29sXFxBdWRpb01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQU0sSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFFMUM7SUFBMEMsZ0NBQVk7SUFBdEQ7UUFBQSxxRUErUkM7UUE3UkcsTUFBTTtRQUVOLG1CQUFhLEdBQWlCLElBQUksQ0FBQztRQUNuQyxJQUFJO1FBRUosVUFBSSxHQUFpQixJQUFJLENBQUM7UUFDMUIsS0FBSztRQUVMLFdBQUssR0FBaUIsSUFBSSxDQUFDO1FBQzNCLElBQUk7UUFFSixRQUFFLEdBQWlCLElBQUksQ0FBQztRQUN4QixNQUFNO1FBRU4sWUFBTSxHQUFpQixJQUFJLENBQUM7O0lBK1FoQyxDQUFDO3FCQS9Sb0IsWUFBWTtJQStCN0IsMkJBQUksR0FBSjtRQUVJLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCOzs7V0FHRztRQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNELDJCQUFJLEdBQUosVUFBTSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTO1FBQ3hDLElBQUksU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPO1FBQzVDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU87UUFDOUMsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJ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Q29udGVudCI6WyJjb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcbkBjY2NsYXNzXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBdWRpb01hbmFnZXIgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xuXG4gICAgLy/og4zmma/pn7PkuZBcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIGF1ZGlvR2FtZUJnbTA6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgLy/ot7Pot4NcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIGp1bXA6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgLy/okL3lnLDkuIpcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIGx1b2RpOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIC8v56Kw5pKeXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBwejogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICAvL+iQveaWueWdl+S4ilxuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgbHVvZHVpOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuXG4gICAgbUF1ZGlvTWFwOiB7fTtcbiAgICBiZ011c2ljVm9sdW1lOiBudW1iZXI7XG4gICAgZWZmZWN0TXVzaWNWb2x1bWU6IG51bWJlcjtcbiAgICBtTXVzaWNTd2l0Y2g6IG51bWJlcjtcbiAgICBtRWZmZWN0U3dpdGNoOiBudW1iZXI7XG4gICAgYnJpY2tTb3VuZDogYW55O1xuICAgIHJld2FyZDogYm9vbGVhbjtcbiAgICBmaW5pc2g6IGJvb2xlYW47XG4gICAgcmV3YXJkQ291bnQ6IG51bWJlcjtcblxuICAgIG1NdXNpY0tleTogYW55O1xuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcblxuICAgIGN0b3IgKCkge1xuICAgICAgICBcbiAgICAgICAgdGhpcy5tQXVkaW9NYXAgPSB7fTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOm7mOiupOmfs+mHj+Wkp+Wwj1xuICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5iZ011c2ljVm9sdW1lID0gMC4xO1xuICAgICAgICB0aGlzLmVmZmVjdE11c2ljVm9sdW1lID0gMTtcblxuICAgICAgICB0aGlzLm1NdXNpY1N3aXRjaCA9IDE7XG4gICAgICAgIHRoaXMubUVmZmVjdFN3aXRjaCA9IDE7XG4gICAgfVxuICAgIHBsYXkgKGF1ZGlvU291cmNlLCBsb29wLCBjYWxsYmFjaywgaXNCZ011c2ljKSB7XG4gICAgICAgIGlmIChpc0JnTXVzaWMgJiYgIXRoaXMubU11c2ljU3dpdGNoKSByZXR1cm47XG4gICAgICAgIGlmICghaXNCZ011c2ljICYmICF0aGlzLm1FZmZlY3RTd2l0Y2gpIHJldHVybjtcbiAgICAgICAgdmFyIHZvbHVtZSA9IGlzQmdNdXNpYyA/IHRoaXMuYmdNdXNpY1ZvbHVtZSA6IHRoaXMuZWZmZWN0TXVzaWNWb2x1bWU7XG5cbiAgICAgICAgaWYgKGNjLnN5cy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIGlmKGF1ZGlvU291cmNlID09IHRoaXMuYnJpY2tTb3VuZCl7XG4gICAgICAgICAgICAgICAgdm9sdW1lID0gMC4xO1xuICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIHZvbHVtZSA9IDE7XG4gICAgICAgICAgICB2YXIgY29udGV4dCA9IGNjLmF1ZGlvRW5naW5lLnBsYXkoYXVkaW9Tb3VyY2UsIGxvb3AsIHZvbHVtZSk7XG4gICAgICAgICAgICBpZiAoY2FsbGJhY2spe1xuICAgICAgICAgICAgICAgIGNjLmF1ZGlvRW5naW5lLnNldEZpbmlzaENhbGxiYWNrKGNvbnRleHQsIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGNjLnd3eC5PdXRQdXQubG9nKCdwbGF5IGF1ZGlvIGVmZmVjdCBpc0Jyb3dzZXI6ICcgKyBjb250ZXh0LnNyYyk7XG5cbiAgICAgICAgICAgIHRoaXMubUF1ZGlvTWFwW2F1ZGlvU291cmNlXSA9IGNvbnRleHQ7XG4gICAgICAgICAgICByZXR1cm4gYXVkaW9Tb3VyY2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYXVkaW9Tb3VyY2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzYXZlICgpIHtcbiAgICAgICAgLy8gY2Mud3d4LlN0b3JhZ2Uuc2V0SXRlbShjYy53d3guU3RvcmFnZS5LZXlfU2V0dGluZ19NdXNpY19Wb2x1bWUsIHRoaXMubU11c2ljU3dpdGNoKTtcbiAgICAgICAgLy8gY2Mud3d4LlN0b3JhZ2Uuc2V0SXRlbShjYy53d3guU3RvcmFnZS5LZXlfU2V0dGluZ19FZmZlY3RfVm9sdW1lLCB0aGlzLm1FZmZlY3RTd2l0Y2gpO1xuICAgIH1cbiAgICBvbkxvYWQoKSB7XG5cbiAgICAgICAgaWYgKEF1ZGlvTWFuYWdlci5faW5zdGFuY2UgPT0gbnVsbCkge1xuICAgICAgICAgICAgQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZSA9IHRoaXM7XG4gICAgICAgICAgICBjYy5nYW1lLmFkZFBlcnNpc3RSb290Tm9kZSh0aGlzLm5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ub2RlLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJld2FyZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZpbmlzaCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJld2FyZENvdW50ID0gMDtcbiAgICAgICAgdGhpcy5jdG9yKCk7XG5cbiAgICAgICAgdGhpcy5wcmVsb2FkKCk7XG4gICAgfVxuICAgIHByZWxvYWQgKCkge1xuICAgICAgICBpZiAoIShjYy5zeXMucGxhdGZvcm0gPT09IGNjLnN5cy5XRUNIQVRfR0FNRSkpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgdmFyIG11c2ljcyA9IFtcbiAgICAgICAgICAgIHRoaXMuYXVkaW9HYW1lQmdtMCxcbiAgICAgICAgXTtcbiAgICAgICAgbXVzaWNzLmZvckVhY2goZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICAgICAgLy8gdmFyIG11c2ljUGF0aCA9IHd4RG93bmxvYWRlci5SRU1PVEVfU0VSVkVSX1JPT1QgKyBwYXRoO1xuICAgICAgICAgICAgLy8gaWYgKG11c2ljUGF0aCAhPSB3eERvd25sb2FkZXIuUkVNT1RFX1NFUlZFUl9ST09UICYmIG11c2ljUGF0aC5lbmRzV2l0aCgnLm1wMycpKSB7XG4gICAgICAgICAgICAvLyAgICAgY2MubG9hZGVyLmxvYWQobXVzaWNQYXRoLCBmdW5jdGlvbihlcnIsIHJlbW90ZVVybCkge1xuICAgICAgICAgICAgLy8gICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAvLyAgICAgICAgICAgICBjYy5lcnJvcihlcnIubWVzc2FnZSB8fCBlcnIpO1xuICAgICAgICAgICAgLy8gICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgLy8gICAgICAgICB9XG4gICAgICAgICAgICAvLyAgICAgfSk7XG4gICAgICAgICAgICAvLyB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgZ2V0QXVkaW9NdXNpY1N3aXRjaCgpXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5tTXVzaWNTd2l0Y2g7XG5cbiAgICB9XG4gICAgZ2V0QXVkaW9FZmZlY3RTd2l0Y2goKVxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubUVmZmVjdFN3aXRjaDtcbiAgICB9XG4gICAgdHJ1bkF1ZGlvU291bmQob24pXG4gICAge1xuICAgICAgICB0aGlzLnN3aXRjaE11c2ljKG9uKTtcbiAgICAgICAgdGhpcy5zd2l0Y2hFZmZlY3Qob24pXG4gICAgfVxuICAgIHN3aXRjaE11c2ljIChvbikge1xuICAgICAgICBpZiAodGhpcy5tTXVzaWNTd2l0Y2ggIT0gKG9uPzE6MCkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRoaXMubU11c2ljU3dpdGNoID0gMS10aGlzLm1NdXNpY1N3aXRjaDtcbiAgICAgICAgICAgIC8vIHRoaXMuc2F2ZSgpO1xuICAgICAgICAgICAgXG4gICAgICAgIH1cbiAgICAgICAgaWYob24pXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRoaXMucGxheU11c2ljR2FtZSgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzd2l0Y2hFZmZlY3QgKG9uKSB7XG4gICAgICAgIGlmICh0aGlzLm1FZmZlY3RTd2l0Y2ggIT0gKG9uPzE6MCkpe1xuICAgICAgICAgICAgdGhpcy5tRWZmZWN0U3dpdGNoID0gMS10aGlzLm1FZmZlY3RTd2l0Y2g7XG4gICAgICAgICAgICAvLyB0aGlzLnNhdmUoKTtcblxuICAgICAgICB9XG4gICAgfVxuICAgIG9uSGlkZSAoKSB7XG4gICAgICAgIGNjLmF1ZGlvRW5naW5lLnBhdXNlQWxsKCk7XG5cbiAgICAgICAgLy8gaWYgKENDX0pTQikge1xuICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgZm9yICh2YXIga2V5IGluIHRoaXMubUF1ZGlvTWFwKSB7XG4gICAgICAgIC8vICAgICAgICAgaWYgKGtleSA9PT0gdGhpcy5tTXVzaWNLZXkpIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5tQXVkaW9NYXBba2V5XS5wYXVzZSgpO1xuICAgICAgICAvLyAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vICAgICAgICAgICAgIHRoaXMubUF1ZGlvTWFwW2tleV0uc3RvcCgpO1xuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIG9uU2hvdyAoKSB7XG4gICAgICAgIGNjLmF1ZGlvRW5naW5lLnJlc3VtZUFsbCgpO1xuXG4gICAgICAgIC8vIGlmIChDQ19KU0IpIHtcbiAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgLy8gICAgIGlmICghdGhpcy5tTXVzaWNTd2l0Y2gpIHJldHVybjtcbiAgICAgICAgLy8gICAgIHZhciBjb250ZXh0ID0gdGhpcy5tQXVkaW9NYXBbdGhpcy5tTXVzaWNLZXldO1xuICAgICAgICAvLyAgICAgaWYgKGNvbnRleHQpIHtcbiAgICAgICAgLy8gICAgICAgICBjb250ZXh0LnBsYXkoKTtcbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gfVxuICAgIH1cbiAgICBwbGF5TXVzaWMgKGtleSwgY2FsbGJhY2ssIGxvb3ApIHtcbiAgICAgICAgbG9vcCA9IHR5cGVvZiBsb29wID09ICd1bmRlZmluZWQnICB8fCBsb29wID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICB0aGlzLnN0b3BNdXNpYygpO1xuICAgICAgICB0aGlzLm1NdXNpY0tleSA9IHRoaXMucGxheShrZXksIGxvb3AsIGNhbGxiYWNrLCB0cnVlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5ri45oiP6IOM5pmv6Z+z5LmQXG4gICAgICovXG4gICAgcGxheU11c2ljR2FtZSAoKSB7XG4gICAgICAgIC8vIHRoaXMucGxheU11c2ljKHRoaXMuYXVkaW9HYW1lQmdtMCx7fSx0cnVlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5YGc5q2i6IOM5pmv6Z+z5LmQ5pKt5pS+XG4gICAgICovXG4gICAgc3RvcE11c2ljICgpIHtcbiAgICAgICAgLy8gY2Mud3d4Lk91dFB1dC5sb2coJ3N0b3BNdXNpYyBhdWRpbyBlZmZlY3Qgd3g6ICcgKyB0aGlzLm1NdXNpY0tleSk7XG5cbiAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLm1BdWRpb01hcFt0aGlzLm1NdXNpY0tleV07XG5cbiAgICAgICAgaWYgKHR5cGVvZihjb250ZXh0KSAhPSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgaWYgKGNjLnN5cy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zdG9wKGNvbnRleHQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNjLmF1ZGlvRW5naW5lLnN0b3AoY29udGV4dCk7XG5cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyDngrjlvLnjgIHngavnrq3niIbngrjpn7PmlYhcbiAgICBwbGF5SnVtcCAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYXkodGhpcy5qdW1wLCBmYWxzZSxudWxsLHRoaXMubUVmZmVjdFN3aXRjaCk7XG4gICAgfVxuICAgIC8v5r+A5YWJ6Z+z5pWIXG4gICAgcGxheUx1bygpXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5wbGF5KHRoaXMubHVvZHVpLCBmYWxzZSxudWxsLHRoaXMubUVmZmVjdFN3aXRjaCk7XG4gICAgfVxuICAgIC8v5oqA6IO96Z+z5pWIXG4gICAgcGxheUdyb3VuZCgpXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5wbGF5KHRoaXMubHVvZGksIGZhbHNlLG51bGwsdGhpcy5tRWZmZWN0U3dpdGNoKTtcbiAgICB9XG5cbiAgICAvL+aKgOiDvemfs+aViFxuICAgIHBsYXlQeigpXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5wbGF5KHRoaXMucHosIGZhbHNlLG51bGwsdGhpcy5tRWZmZWN0U3dpdGNoKTtcbiAgICB9XG4gICAgLypcbiAgICAgKiDmuLjmiI/lvIDlp4vpn7PmlYhcbiAgICAgKlxuICAgICAqL1xuICAgICBwbGF5R2FtZVN0YXJ0KClcbiAgICAge1xuICAgICBcbiAgICAgfVxuICAgICAvKlxuICAgICAgKiDlpLHotKXnmoTmuLjmiI/nu5PmnZ9cbiAgICAgICovXG4gICAgIHBsYXlHYW1lT3ZlcigpXG4gICAgIHtcbiAgIFxuICAgICB9XG4gICAgLypcbiAgICAgICog5oiQ5Yqf55qE5ri45oiP57uT5p2fXG4gICAgICAqL1xuICAgIHBsYXlHYW1lUmVzdWx0RmFpbGVkKClcbiAgICB7XG5cbiAgICB9XG4gICAgLypcbiAgKiDmiJDlip/nmoTmuLjmiI/nu5PmnZ9cbiAgKi9cbiAgICBwbGF5R2FtZVJlc3VsdFN1Y2Nlc3MoKVxuICAgIHtcblxuICAgIH1cbiAgICAvKipcbiAgICAgKiDmiqXorabnmoTpn7PmlYhcbiAgICAgKi9cbiAgICBwbGF5V2FybmluZygpXG4gICAge1xuXG4gICAgfVxuXG4gICAgLypcbiAgICAgKiDmlrnlnZfnorDmkp7nmoTlo7Dpn7NcbiAgICAgKi9cbiAgICBwbGF5QnJpY2soKVxuICAgIHtcbiAgICAgICAgLy8gcmV0dXJuIHRoaXMucGxheSh0aGlzLmJyaWNrU291bmQsZmFsc2UpO1xuICAgIH1cbiAgICAvL+aWueWdl+egtOeijueahOWjsOmfs1xuICAgIGJyaWNrQm9vbSgpe1xuICAgXG4gICAgfVxuICAgIC8qKlxuICAgICAqIOaMiemSrlxuICAgICAqL1xuICAgIHBsYXlBdWRpb0J1dHRvbiAoKSB7XG4gXG4gICAgfVxuXG4gICAgcGxheVJhbmRvbU1hdGNoKClcbiAgICB7XG4gICAgICAgIHRoaXMucGxheU11c2ljKHRoaXMuYXVkaW9HYW1lQmdtMCx7fSx0cnVlKTtcbiAgICB9XG4gICAgcGxheU1hdGNoRm91bmRTb3VuZCgpXG4gICAge1xuICAgICAgICB0aGlzLnN0b3BNdXNpYygpO1xuICAgICAgICAvLyByZXR1cm4gdGhpcy5wbGF5KHRoaXMubWF0Y2hGb3VuZFNvdW5kLCBmYWxzZSk7XG4gICAgfVxuXG59O1xuXG4vLyBleHBvcnQgeyBBdWRpb01hbmFnZXIgfTsiXX0=