123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- (function() {
- var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
- var __module = nodeEnv ? module : {exports:{}};
- var __filename = 'preview-scripts/assets/script/plat/PlatformWan17H5.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, '76585sLe9VEjpBRa5tDd5jd', 'PlatformWan17H5');
- // script/plat/PlatformWan17H5.ts
- "use strict";
- /*
- 17玩H5
- */
- 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 __());
- };
- })();
- Object.defineProperty(exports, "__esModule", { value: true });
- var Config_1 = require("../Config");
- var GameController_1 = require("../GameController");
- var Xyc_1 = require("../common/Xyc");
- var EventConst_1 = require("../data/const/EventConst");
- var TypeConst_1 = require("../data/const/TypeConst");
- var UIHelp_1 = require("../logic/ui/UIHelp");
- var EventMng_1 = require("../manager/EventMng");
- var PlatformBase_1 = require("./PlatformBase");
- var gameMethod_1 = require("../common/gameMethod");
- var GameDataCenter_1 = require("../data/GameDataCenter");
- var gameCfg_1 = require("../common/gameCfg");
- var PlatformWan17H5 = /** @class */ (function (_super) {
- __extends(PlatformWan17H5, _super);
- function PlatformWan17H5() {
- var _this = _super.call(this) || this;
- //监听屏幕切回来的状态 (防止切回来游戏却收不到支付成功的回调)
- cc.game.on(cc.game.EVENT_SHOW, function () {
- if (Config_1.default.paySuccAdokId != null) {
- clearInterval(Config_1.default.paySuccAdokId);
- Config_1.default.paySuccAdokId = null;
- }
- Config_1.default.paySuccAdokIndex = 0;
- Config_1.default.paySuccAdokId = setInterval(function () {
- Config_1.default.paySuccAdokIndex++;
- if (Config_1.default.paySuccAdokIndex >= 5) {
- clearInterval(Config_1.default.paySuccAdokId);
- Config_1.default.paySuccAdokId = null;
- }
- GameDataCenter_1.default.time.sendAdok();
- }, 1000);
- GameDataCenter_1.default.audio.resumeMusic();
- });
- cc.game.on(cc.game.EVENT_HIDE, function () {
- GameDataCenter_1.default.audio.pauseMusic();
- });
- return _this;
- }
- PlatformWan17H5.prototype.getQueryString = function (name) {
- var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
- var r = window.location.search.substr(1).match(reg);
- if (r != null) {
- return unescape(r[2]);
- }
- else {
- return null;
- }
- };
- PlatformWan17H5.prototype.showLoginView = function () {
- var _this = this;
- console.log("初始化&登录SDK");
- EventMng_1.default.emit(EventConst_1.LoadEvent.LOAD_PROGRESS, 0.25, "login");
- try {
- var packageInfo = gameCfg_1.default.packageInfo.getItem(Config_1.default.pid);
- var gameid = packageInfo.params[0];
- var gamekey = packageInfo.params[1];
- Sdk.init(gameid, gamekey);
- setTimeout(function () {
- EventMng_1.default.emit(EventConst_1.LoadEvent.LOAD_PROGRESS, 0.75, "login");
- var a_pub = _this.getQueryString("a_pub");
- var a_accountid = _this.getQueryString("a_accountid");
- var a_sessionid = _this.getQueryString("a_sessionid");
- if (!a_accountid || !a_sessionid) {
- return;
- }
- var params = {
- pid: Config_1.default.pid,
- param: [a_accountid, a_sessionid]
- };
- GameController_1.default.network.send(Xyc_1.PlayerLogin.url, params, function (result) {
- console.log("后段验证返回");
- if (result.type != 1) {
- if (gameMethod_1.gameMethod.isEmpty(result.win) || gameMethod_1.gameMethod.isEmpty(result.win.msgOut)) {
- GameDataCenter_1.default.plat.showErrDialog(TypeConst_1.GameErrCode.errGamePlatLogin);
- }
- return;
- }
- EventMng_1.default.emit(EventConst_1.LoadEvent.LOAD_PROGRESS, 1, "login");
- if (result.type == 1 && result.platBack) {
- GameDataCenter_1.default.plat.instance.openId = result.platBack.openid;
- GameDataCenter_1.default.plat.instance.loginParams = [result.platBack.token];
- console.log("后端验证成功", _this.openId);
- GameDataCenter_1.default.plat.instance.login();
- }
- else {
- console.log("PlayerLogin.url 返回数据异常");
- if (gameMethod_1.gameMethod.isEmpty(result.win) || gameMethod_1.gameMethod.isEmpty(result.win.msgOut)) {
- GameDataCenter_1.default.plat.showErrDialog(TypeConst_1.GameErrCode.errGamePlatLogin);
- }
- }
- });
- }, 3000);
- }
- catch (error) {
- UIHelp_1.default.ShowSystemDialog({ content: error });
- }
- };
- PlatformWan17H5.prototype.pay = function (orderId, order10cs, param) {
- var packageInfo = gameCfg_1.default.packageInfo.getItem(Config_1.default.pid);
- var payUrl = packageInfo.wayhttp + "player/pay/" + Config_1.default.pid;
- var orderData = {
- callbackurl: payUrl,
- paymoney: param.price,
- custominfo: "",
- customorderid: orderId,
- productdesc: param.productDesc,
- productfeecode: order10cs,
- };
- var orderDataJson = JSON.stringify(orderData);
- Sdk.pay(orderDataJson, function (result) {
- if (result.code != 0) {
- console.log("支付失败,失败原因:" + result.msg);
- }
- else {
- if (Config_1.default.paySuccAdokId != null) {
- clearInterval(Config_1.default.paySuccAdokId);
- Config_1.default.paySuccAdokId = null;
- }
- Config_1.default.paySuccAdokIndex = 0;
- Config_1.default.paySuccAdokId = setInterval(function () {
- Config_1.default.paySuccAdokIndex++;
- if (Config_1.default.paySuccAdokIndex >= 5) {
- clearInterval(Config_1.default.paySuccAdokId);
- Config_1.default.paySuccAdokId = null;
- }
- GameDataCenter_1.default.time.sendAdok();
- }, 1000);
- }
- });
- //17玩 如果有的渠道没有充值回调的,只能强行调用充值的时候就开始刷心跳包了
- // if (Config.paySuccAdokId != null) {
- // clearInterval(Config.paySuccAdokId)
- // Config.paySuccAdokId = null
- // }
- // Config.paySuccAdokIndex = 0
- // Config.paySuccAdokId = setInterval(() => {
- // Config.paySuccAdokIndex++
- // if (Config.paySuccAdokIndex >= 30) {
- // clearInterval(Config.paySuccAdokId)
- // Config.paySuccAdokId = null
- // }
- // GameDataCenter.time.sendAdok()
- // }, 1000)
- };
- // 上报角色数据
- PlatformWan17H5.prototype.reportRole = function (event) {
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
- if (GameDataCenter_1.default.sevBack == null) {
- return;
- }
- if (GameDataCenter_1.default.sevBack.userInfo == null) {
- return;
- }
- if (GameDataCenter_1.default.item == null) {
- return;
- }
- var power = GameDataCenter_1.default.zhanLi.getTotalZhanLi(GameDataCenter_1.default.sevBack);
- var clubName = (_d = (_c = (_b = (_a = GameDataCenter_1.default.sevBack) === null || _a === void 0 ? void 0 : _a.club) === null || _b === void 0 ? void 0 : _b.a) === null || _c === void 0 ? void 0 : _c.name) !== null && _d !== void 0 ? _d : "";
- var level = (_h = (_g = (_f = (_e = GameDataCenter_1.default.sevBack) === null || _e === void 0 ? void 0 : _e.userInfo) === null || _f === void 0 ? void 0 : _f.a) === null || _g === void 0 ? void 0 : _g.level) !== null && _h !== void 0 ? _h : 1;
- var sid = (_l = (_k = (_j = GameDataCenter_1.default.sevBack) === null || _j === void 0 ? void 0 : _j.userInfo) === null || _k === void 0 ? void 0 : _k.a) === null || _l === void 0 ? void 0 : _l.sid;
- var itemNum = GameDataCenter_1.default.item.getItemCount(TypeConst_1.ConstItem.gem);
- var roleData = {
- ingot: itemNum,
- playerid: GameDataCenter_1.default.user.uuid,
- factionname: clubName,
- viplevel: "0",
- servername: GameDataCenter_1.default.user.serverName,
- playerlevel: level,
- serverid: sid,
- playername: GameDataCenter_1.default.user.nickName,
- };
- var roleDataJson = JSON.stringify(roleData);
- Sdk.uploadRoleData(roleDataJson, function (result) {
- if (result.code != 0) {
- console.log("上报失败,失败原因:" + result.msg);
- }
- else {
- //上报成功
- }
- });
- };
- PlatformWan17H5.prototype.logout = function () {
- Sdk.logout(function (result) {
- if (result.code != 0) {
- console.log("退出失败,失败原因:" + result.msg);
- }
- else {
- //退出成功
- GameDataCenter_1.default.plat.instance.restart();
- }
- });
- };
- //打开浏览器打开链接
- PlatformWan17H5.prototype.openUrl = function (url) {
- };
- return PlatformWan17H5;
- }(PlatformBase_1.default));
- exports.default = PlatformWan17H5;
- 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvcGxhdC9QbGF0Zm9ybVdhbjE3SDUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztFQUVFOzs7Ozs7Ozs7Ozs7Ozs7QUFFRixvQ0FBK0I7QUFDL0Isb0RBQStDO0FBQy9DLHFDQUE2RDtBQUM3RCx1REFBcUQ7QUFDckQscURBQWtHO0FBQ2xHLDZDQUF3QztBQUN4QyxnREFBMkM7QUFDM0MsK0NBQTBDO0FBRTFDLG1EQUFrRDtBQUNsRCx5REFBb0Q7QUFDcEQsNkNBQXdDO0FBRXhDO0lBQTZDLG1DQUFZO0lBRXJEO1FBQUEsWUFDSSxpQkFBTyxTQXVCVjtRQXJCRyxpQ0FBaUM7UUFDakMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDM0IsSUFBSSxnQkFBTSxDQUFDLGFBQWEsSUFBSSxJQUFJLEVBQUU7Z0JBQzlCLGFBQWEsQ0FBQyxnQkFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO2dCQUNuQyxnQkFBTSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUE7YUFDOUI7WUFDRCxnQkFBTSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQTtZQUMzQixnQkFBTSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUM7Z0JBQy9CLGdCQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtnQkFDekIsSUFBSSxnQkFBTSxDQUFDLGdCQUFnQixJQUFJLENBQUMsRUFBRTtvQkFDOUIsYUFBYSxDQUFDLGdCQUFNLENBQUMsYUFBYSxDQUFDLENBQUE7b0JBQ25DLGdCQUFNLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtpQkFDOUI7Z0JBQ0Qsd0JBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7WUFDbEMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ1Isd0JBQWMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENB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QWMsQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUMxQyxXQUFXLEVBQUUsS0FBSztZQUNsQixRQUFRLEVBQUUsR0FBRztZQUNiLFVBQVUsRUFBRSx3QkFBYyxDQUFDLElBQUksQ0FBQyxRQUFRO1NBQzNDLENBQUM7UUFFRixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLEdBQUcsQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLFVBQVUsTUFBTTtZQUM3QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO2dCQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDMUM7aUJBQU07Z0JBQ0gsTUFBTTthQUNUO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFUCxDQUFDO0lBRUQsZ0NBQU0sR0FBTjtRQUNJLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxNQUFNO1lBQ3ZCLElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUU7Z0JBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUMxQztpQkFBTTtnQkFDSCxNQUFNO2dCQUNOLHdCQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQTthQUN6QztRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELFdBQVc7SUFDWCxpQ0FBTyxHQUFQLFVBQVEsR0FBVztJQUVuQixDQUFDO0lBQ0wsc0JBQUM7QUFBRCxDQTlMQSxBQThMQyxDQTlMNEMsc0JBQVksR0E4THhEIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLypcbjE3546pSDVcbiovXG5cbmltcG9ydCBDb25maWcgZnJvbSBcIi4uL0NvbmZpZ1wiO1xuaW1wb3J0IEdhbWVDb250cm9sbGVyIGZyb20gXCIuLi9HYW1lQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgUGxheWVyTG9naW4sIFBsYXllckxvZ2luUHJhbSB9IGZyb20gXCIuLi9jb21tb24vWHljXCI7XG5pbXBvcnQgeyBMb2FkRXZlbnQgfSBmcm9tIFwiLi4vZGF0YS9jb25zdC9FdmVudENvbnN0XCI7XG5pbXBvcnQgeyBDb25zdEl0ZW0sIEdhbWVFcnJDb2RlLCBQYXlQcm9kdWN0UGFyYW0sIFJlcG9ydFJvbGVUeXBlIH0gZnJvbSBcIi4uL2RhdGEvY29uc3QvVHlwZUNvbnN0XCI7XG5pbXBvcnQgVUlIZWxwIGZyb20gXCIuLi9sb2dpYy91aS9VSUhlbHBcIjtcbmltcG9ydCBFdmVudE1uZyBmcm9tIFwiLi4vbWFuYWdlci9FdmVudE1uZ1wiO1xuaW1wb3J0IFBsYXRmb3JtQmFzZSBmcm9tIFwiLi9QbGF0Zm9ybUJhc2VcIjtcbmltcG9ydCB7IFNldkJhY2sgfSBmcm9tIFwiLi4vY29tbW9uL1h5c1wiO1xuaW1wb3J0IHsgZ2FtZU1ldGhvZCB9IGZyb20gXCIuLi9jb21tb24vZ2FtZU1ldGhvZFwiO1xuaW1wb3J0IEdhbWVEYXRhQ2VudGVyIGZyb20gXCIuLi9kYXRhL0dhbWVEYXRhQ2VudGVyXCI7XG5pbXBvcnQgR2FtZWNmZyBmcm9tIFwiLi4vY29tbW9uL2dhbWVDZmdcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGxhdGZvcm1XYW4xN0g1IGV4dGVuZHMgUGxhdGZvcm1CYXNlIHtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpXG5cbiAgICAgICAgLy/nm5HlkKzlsY/luZXliIflm57mnaXnmoTnirbmgIEgKOmYsuatouWIh+Wbnuadpea4uOaIj+WNtOaUtuS4jeWIsOaUr+S7mOaIkOWKn+eahOWbnuiwgylcbiAgICAgICAgY2MuZ2FtZS5vbihjYy5nYW1lLkVWRU5UX1NIT1csIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChDb25maWcucGF5U3VjY0Fkb2tJZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChDb25maWcucGF5U3VjY0Fkb2tJZClcbiAgICAgICAgICAgICAgICBDb25maWcucGF5U3VjY0Fkb2tJZCA9IG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIENvbmZpZy5wYXlTdWNjQWRva0luZGV4ID0gMFxuICAgICAgICAgICAgQ29uZmlnLnBheVN1Y2NBZG9rSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgQ29uZmlnLnBheVN1Y2NBZG9rSW5kZXgrK1xuICAgICAgICAgICAgICAgIGlmIChDb25maWcucGF5U3VjY0Fkb2tJbmRleCA+PSA1KSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoQ29uZmlnLnBheVN1Y2NBZG9rSWQpXG4gICAgICAgICAgICAgICAgICAgIENvbmZpZy5wYXlTdWNjQWRva0lkID0gbnVsbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci50aW1lLnNlbmRBZG9rKClcbiAgICAgICAgICAgIH0sIDEwMDApXG4gICAgICAgICAgICBHYW1lRGF0YUNlbnRlci5hdWRpby5yZXN1bWVNdXNpYygpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjYy5nYW1lLm9uKGNjLmdhbWUuRVZFTlRfSElERSwgKCkgPT4ge1xuICAgICAgICAgICAgR2FtZURhdGFDZW50ZXIuYXVkaW8ucGF1c2VNdXNpYygpO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UXVlcnlTdHJpbmcobmFtZSkge1xuICAgICAgICB2YXIgcmVnID0gbmV3IFJlZ0V4cChcIihefCYpXCIgKyBuYW1lICsgXCI9KFteJl0qKSgmfCQpXCIsIFwiaVwiKTtcbiAgICAgICAgdmFyIHIgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cigxKS5tYXRjaChyZWcpO1xuICAgICAgICBpZiAociAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5lc2NhcGUoclsyXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3dMb2dpblZpZXcoKTogdm9pZCB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwi5Yid5aeL5YyWJueZu+W9lVNES1wiKVxuICAgICAgICBFdmVudE1uZy5lbWl0KExvYWRFdmVudC5MT0FEX1BST0dSRVNTLCAwLjI1LCBcImxvZ2luXCIpXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgcGFja2FnZUluZm8gPSBHYW1lY2ZnLnBhY2thZ2VJbmZvLmdldEl0ZW0oQ29uZmlnLnBpZClcbiAgICAgICAgICAgIGxldCBnYW1laWQgPSBwYWNrYWdlSW5mby5wYXJhbXNbMF07XG4gICAgICAgICAgICBsZXQgZ2FtZWtleSA9IHBhY2thZ2VJbmZvLnBhcmFtc1sxXTtcbiAgICAgICAgICAgIFNkay5pbml0KGdhbWVpZCwgZ2FtZWtleSk7XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIEV2ZW50TW5nLmVtaXQoTG9hZEV2ZW50LkxPQURfUFJPR1JFU1MsIDAuNzUsIFwibG9naW5cIilcblxuICAgICAgICAgICAgICAgIGxldCBhX3B1YiA9IHRoaXMuZ2V0UXVlcnlTdHJpbmcoXCJhX3B1YlwiKVxuICAgICAgICAgICAgICAgIGxldCBhX2FjY291bnRpZCA9IHRoaXMuZ2V0UXVlcnlTdHJpbmcoXCJhX2FjY291bnRpZFwiKVxuICAgICAgICAgICAgICAgIGxldCBhX3Nlc3Npb25pZCA9IHRoaXMuZ2V0UXVlcnlTdHJpbmcoXCJhX3Nlc3Npb25pZFwiKVxuXG4gICAgICAgICAgICAgICAgaWYgKCFhX2FjY291bnRpZCB8fCAhYV9zZXNzaW9uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBwYXJhbXM6IFBsYXllckxvZ2luUHJhbSA9IHtcbiAgICAgICAgICAgICAgICAgICAgcGlkOiBDb25maWcucGlkLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbTogW2FfYWNjb3VudGlkLCBhX3Nlc3Npb25pZF1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgR2FtZUNvbnRyb2xsZXIubmV0d29yay5zZW5kKFBsYXllckxvZ2luLnVybCwgcGFyYW1zLCAocmVzdWx0OiBTZXZCYWNrKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5ZCO5q616aqM6K+B6L+U5ZueXCIpXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudHlwZSAhPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2FtZU1ldGhvZC5pc0VtcHR5KHJlc3VsdC53aW4pIHx8IGdhbWVNZXRob2QuaXNFbXB0eShyZXN1bHQud2luLm1zZ091dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci5wbGF0LnNob3dFcnJEaWFsb2coR2FtZUVyckNvZGUuZXJyR2FtZVBsYXRMb2dpbilcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEV2ZW50TW5nLmVtaXQoTG9hZEV2ZW50LkxPQURfUFJPR1JFU1MsIDEsIFwibG9naW5cIilcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC50eXBlID09IDEgJiYgcmVzdWx0LnBsYXRCYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci5wbGF0Lmluc3RhbmNlLm9wZW5JZCA9IHJlc3VsdC5wbGF0QmFjay5vcGVuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgIEdhbWVEYXRhQ2VudGVyLnBsYXQuaW5zdGFuY2UubG9naW5QYXJhbXMgPSBbcmVzdWx0LnBsYXRCYWNrLnRva2VuXVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLlkI7nq6/pqozor4HmiJDlip9cIiwgdGhpcy5vcGVuSWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci5wbGF0Lmluc3RhbmNlLmxvZ2luKClcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUGxheWVyTG9naW4udXJsIOi/lOWbnuaVsOaNruW8guW4uFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdhbWVNZXRob2QuaXNFbXB0eShyZXN1bHQud2luKSB8fCBnYW1lTWV0aG9kLmlzRW1wdHkocmVzdWx0Lndpbi5tc2dPdXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgR2FtZURhdGFDZW50ZXIucGxhdC5zaG93RXJyRGlhbG9nKEdhbWVFcnJDb2RlLmVyckdhbWVQbGF0TG9naW4pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBVSUhlbHAuU2hvd1N5c3RlbURpYWxvZyh7IGNvbnRlbnQ6IGVycm9yIH0pXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwYXkob3JkZXJJZDogc3RyaW5nLCBvcmRlcjEwY3M6IHN0cmluZywgcGFyYW06IFBheVByb2R1Y3RQYXJhbSk6IHZvaWQge1xuXG5cbiAgICAgICAgbGV0IHBhY2thZ2VJbmZvID0gR2FtZWNmZy5wYWNrYWdlSW5mby5nZXRJdGVtKENvbmZpZy5waWQpXG4gICAgICAgIGxldCBwYXlVcmw6IHN0cmluZyA9IHBhY2thZ2VJbmZvLndheWh0dHAgKyBcInBsYXllci9wYXkvXCIgKyBDb25maWcucGlkXG4gICAgICAgIGxldCBvcmRlckRhdGEgPSB7XG4gICAgICAgICAgICBjYWxsYmFja3VybDogcGF5VXJsLC8v5ri45oiP5pa55YWF5YC85Zue6LCD5Zyw5Z2AXG4gICAgICAgICAgICBwYXltb25leTogcGFyYW0ucHJpY2UsLy/muLjmiI/lhYXlgLzph5Hpop1cbiAgICAgICAgICAgIGN1c3RvbWluZm86IFwiXCIsLy/muLjmiI/pgI/kvKDlj4LmlbDvvIzlm57osIPml7bljp/moLfov5Tlm55cbiAgICAgICAgICAgIGN1c3RvbW9yZGVyaWQ6IG9yZGVySWQsLy/orqLljZXlj7dcbiAgICAgICAgICAgIHByb2R1Y3RkZXNjOiBwYXJhbS5wcm9kdWN0RGVzYywvL+WFheWAvOaPj+i/sFxuICAgICAgICAgICAgcHJvZHVjdGZlZWNvZGU6IG9yZGVyMTBjcywgLy8g6K6h6LS554K5SUTvvIjoi7nmnpznmoTllYblk4FpZO+8iVxuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBvcmRlckRhdGFKc29uID0gSlNPTi5zdHJpbmdpZnkob3JkZXJEYXRhKTtcblxuICAgICAgICBTZGsucGF5KG9yZGVyRGF0YUpzb24sIGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuY29kZSAhPSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmlK/ku5jlpLHotKXvvIzlpLHotKXljp/lm6DvvJpcIiArIHJlc3VsdC5tc2cpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoQ29uZmlnLnBheVN1Y2NBZG9rSWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKENvbmZpZy5wYXlTdWNjQWRva0lkKVxuICAgICAgICAgICAgICAgICAgICBDb25maWcucGF5U3VjY0Fkb2tJZCA9IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQ29uZmlnLnBheVN1Y2NBZG9rSW5kZXggPSAwXG4gICAgICAgICAgICAgICAgQ29uZmlnLnBheVN1Y2NBZG9rSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIENvbmZpZy5wYXlTdWNjQWRva0luZGV4KytcbiAgICAgICAgICAgICAgICAgICAgaWYgKENvbmZpZy5wYXlTdWNjQWRva0luZGV4ID49IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoQ29uZmlnLnBheVN1Y2NBZG9rSWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBDb25maWcucGF5U3VjY0Fkb2tJZCA9IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YUNlbnRlci50aW1lLnNlbmRBZG9rKClcbiAgICAgICAgICAgICAgICB9LCAxMDAwKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLzE3546pIOWmguaenOacieeahOa4oOmBk+ayoeacieWFheWAvOWbnuiwg+eahO+8jOWPquiDveW8uuihjOiwg+eUqOWFheWAvOeahOaXtuWAmeWwseW8gOWni+WIt+W/g+i3s+WMheS6hlxuICAgICAgICAvLyBpZiAoQ29uZmlnLnBheVN1Y2NBZG9rSWQgIT0gbnVsbCkge1xuICAgICAgICAvLyAgICAgY2xlYXJJbnRlcnZhbChDb25maWcucGF5U3VjY0Fkb2tJZClcbiAgICAgICAgLy8gICAgIENvbmZpZy5wYXlTdWNjQWRva0lkID0gbnVsbFxuICAgICAgICAvLyB9XG4gICAgICAgIC8vIENvbmZpZy5wYXlTdWNjQWRva0luZGV4ID0gMFxuICAgICAgICAvLyBDb25maWcucGF5U3VjY0Fkb2tJZCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgLy8gICAgIENvbmZpZy5wYXlTdWNjQWRva0luZGV4KytcbiAgICAgICAgLy8gICAgIGlmIChDb25maWcucGF5U3VjY0Fkb2tJbmRleCA+PSAzMCkge1xuICAgICAgICAvLyAgICAgICAgIGNsZWFySW50ZXJ2YWwoQ29uZmlnLnBheVN1Y2NBZG9rSWQpXG4gICAgICAgIC8vICAgICAgICAgQ29uZmlnLnBheVN1Y2NBZG9rSWQgPSBudWxsXG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vICAgICBHYW1lRGF0YUNlbnRlci50aW1lLnNlbmRBZG9rKClcbiAgICAgICAgLy8gfSwgMTAwMClcblxuICAgIH1cbiAgICAvLyDkuIrmiqXop5LoibLmlbDmja5cbiAgICByZXBvcnRSb2xlKGV2ZW50OiBSZXBvcnRSb2xlVHlwZSk6IHZvaWQge1xuXG4gICAgICAgIGlmIChHYW1lRGF0YUNlbnRlci5zZXZCYWNrID09IG51bGwpIHsgcmV0dXJuIH1cbiAgICAgICAgaWYgKEdhbWVEYXRhQ2VudGVyLnNldkJhY2sudXNlckluZm8gPT0gbnVsbCkgeyByZXR1cm4gfVxuICAgICAgICBpZiAoR2FtZURhdGFDZW50ZXIuaXRlbSA9PSBudWxsKSB7IHJldHVybiB9XG5cbiAgICAgICAgbGV0IHBvd2VyID0gR2FtZURhdGFDZW50ZXIuemhhbkxpLmdldFRvdGFsWmhhbkxpKEdhbWVEYXRhQ2VudGVyLnNldkJhY2spO1xuICAgICAgICBsZXQgY2x1Yk5hbWUgPSBHYW1lRGF0YUNlbnRlci5zZXZCYWNrPy5jbHViPy5hPy5uYW1lID8/IFwiXCI7XG4gICAgICAgIGxldCBsZXZlbCA9IEdhbWVEYXRhQ2VudGVyLnNldkJhY2s/LnVzZXJJbmZvPy5hPy5sZXZlbCA/PyAxO1xuICAgICAgICBsZXQgc2lkID0gR2FtZURhdGFDZW50ZXIuc2V2QmFjaz8udXNlckluZm8/LmE/LnNpZDtcbiAgICAgICAgbGV0IGl0ZW1OdW0gPSBHYW1lRGF0YUNlbnRlci5pdGVtLmdldEl0ZW1Db3VudChDb25zdEl0ZW0uZ2VtKTtcbiAgICAgICAgbGV0IHJvbGVEYXRhID0ge1xuICAgICAgICAgICAgaW5nb3Q6IGl0ZW1OdW0sIC8v5Ymp5L2Z5ri45oiP5Luj5biBIFxuICAgICAgICAgICAgcGxheWVyaWQ6IEdhbWVEYXRhQ2VudGVyLnVzZXIudXVpZCwgLy/op5LoibJJRFxuICAgICAgICAgICAgZmFjdGlvbm5hbWU6IGNsdWJOYW1lLC8v5biu5rS+5ZCN56ewXG4gICAgICAgICAgICB2aXBsZXZlbDogXCIwXCIsLy9WSVDnrYnnuqdcbiAgICAgICAgICAgIHNlcnZlcm5hbWU6IEdhbWVEYXRhQ2VudGVyLnVzZXIuc2VydmVyTmFtZSwvL+WMuuacjeWQjeensFxuICAgICAgICAgICAgcGxheWVybGV2ZWw6IGxldmVsLC8v6KeS6Imy562J57qnXG4gICAgICAgICAgICBzZXJ2ZXJpZDogc2lkLC8v5Yy65pyNSURcbiAgICAgICAgICAgIHBsYXllcm5hbWU6IEdhbWVEYXRhQ2VudGVyLnVzZXIubmlja05hbWUsLy/op5LoibLlkI3np7BcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgcm9sZURhdGFKc29uID0gSlNPTi5zdHJpbmdpZnkocm9sZURhdGEpO1xuICAgICAgICBTZGsudXBsb2FkUm9sZURhdGEocm9sZURhdGFKc29uLCBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmNvZGUgIT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5oql5aSx6LSl77yM5aSx6LSl5Y6f5Zug77yaXCIgKyByZXN1bHQubXNnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy/kuIrmiqXmiJDlip9cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICBsb2dvdXQoKTogdm9pZCB7XG4gICAgICAgIFNkay5sb2dvdXQoZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5jb2RlICE9IDApIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIumAgOWHuuWksei0pe+8jOWksei0peWOn+WboO+8mlwiICsgcmVzdWx0Lm1zZyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8v6YCA5Ye65oiQ5YqfXG4gICAgICAgICAgICAgICAgR2FtZURhdGFDZW50ZXIucGxhdC5pbnN0YW5jZS5yZXN0YXJ0KClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICAvL+aJk+W8gOa1j+iniOWZqOaJk+W8gOmTvuaOpVxuICAgIG9wZW5VcmwodXJsOiBzdHJpbmcpIHtcblxuICAgIH1cbn0iXX0=
|