(function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; var __filename = 'preview-scripts/assets/Script/GuideManager.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, 'effe2nlNnBES4H9tFM4r38Z', 'GuideManager'); // Script/GuideManager.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 GuideManager = /** @class */ (function (_super) { __extends(GuideManager, _super); function GuideManager() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.Tip = null; _this.FoodPlist = null; _this.Btn_New = null; _this.Btn_Hear = null; _this.Btn_See = null; _this.Btn_Firewood = null; _this.Plant = null; return _this; } GuideManager.prototype.onLoad = function () { this.custom = 0; }; GuideManager.prototype.start = function () { this.fit(); }; GuideManager.prototype.fit = function () { var jg = cc.fx.GameTool.setFit(); if (!jg) { this.Btn_Firewood.y = -600; } this.Btn_Firewood.getComponent(cc.Button).interactable = true; }; //初始化数据 GuideManager.prototype.init = function () { this.voiceSpriteFrame = this.Plant.getChildByName("icon").getComponent(cc.Sprite).spriteFrame; ""; this.node.getChildByName("jumpBtn").active = true; this.node.getChildByName("nextBtn").active = false; cc.tween(this.node.getChildByName("jumpBtn")) .to(0.35, { opacity: 255 }) .start(); var tip = cc.fx.tipType.tipOne; var label = this.node.getChildByName("tip1").getComponent(cc.Label); cc.fx.GameTool.typingAni(label, tip, this.startGame.bind(this), this); this.initData(); }; GuideManager.prototype.initData = function () { this.customData = [ { "item": "putao", "type": 1, "right": 1, }, { "item": "taozi", "type": 2, "right": 1, }, { "item": "putao", "type": 2, "right": 3, }, { "item": "muchai", "type": 1, "right": 1, }, { "item": "taozi", "type": 1, "right": 2, }, { "item": "putao", "type": 1, "right": 2, }, ]; }; GuideManager.prototype.passVoice = function () { var _this = this; // cc.fx.AudioManager._instance.playMusicGame(); var voice = this.node.getChildByName("voiceTip"); voice.getChildByName("startBtn").getComponent(cc.Button).interactable = false; voice.getChildByName("playBtn").getComponent(cc.Button).interactable = false; cc.tween(voice) .to(0.5, { opacity: 0 }) .call(function () { voice.active = false; }) .start(); setTimeout(function () { _this.init(); }, 1000); }; GuideManager.prototype.playVoice = function () { cc.fx.AudioManager._instance.playEffect("taozi_audio", null); }; GuideManager.prototype.jumpClick = function () { cc.director.loadScene("GameScene"); }; GuideManager.prototype.nextClick = function () { var _this = this; //第一步 this.node.getChildByName("nextBtn").active = false; var label = this.node.getChildByName("tip1").getComponent(cc.Label); if (this.custom == 0) { cc.tween(this.node.getChildByName("tip1")) .to(0.2, { opacity: 0 }) .call(function () { label.string = ""; }) .to(0.1, { opacity: 255 }) .call(function () { var tip = cc.fx.tipType.tipTwo; cc.fx.GameTool.typingAni(label, tip, _this.startGame.bind(_this), _this); }) .start(); } else if (this.custom == 1) { this.node.getChildByName("nextBtn").active = false; this.node.getChildByName("jumpBtn").active = false; cc.tween(this.node.getChildByName("tip1")) .to(0.2, { opacity: 0 }) .call(function () { label.string = ""; _this.nextLevel(); }) .start(); } this.custom += 1; }; GuideManager.prototype.nextLevel = function () { var _this = this; this.choice = 0; this.Btn_Hear.active = true; this.Btn_New.active = true; this.Btn_See.active = true; this.Btn_Firewood.active = true; this.Btn_Hear.getChildByName("nomal").getComponent(cc.Button).interactable = false; this.Btn_New.getChildByName("nomal").getComponent(cc.Button).interactable = false; this.Btn_See.getChildByName("nomal").getComponent(cc.Button).interactable = false; if (this.custom == 5) { this.node.getChildByName("muchai").active = true; this.node.getChildByName("hand").active = true; } this.Btn_Firewood.getComponent(cc.Button).interactable = false; var name = this.customData[this.custom - 2].item; if (this.customData[this.custom - 2].type == 1) { this.Plant.getChildByName("name").getComponent(cc.Label).string = cc.fx.GameTool.getFoodName(name); name = "prop_" + name; this.Plant.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = this.FoodPlist["_spriteFrames"][name]; this.now_Food = name; cc.tween(this.Plant) .to(0.2, { opacity: 255 }) .call(function () { _this.Btn_Hear.getChildByName("nomal").getComponent(cc.Button).interactable = true; _this.Btn_New.getChildByName("nomal").getComponent(cc.Button).interactable = true; _this.Btn_See.getChildByName("nomal").getComponent(cc.Button).interactable = true; if (_this.custom == 5) { _this.Btn_Firewood.getComponent(cc.Button).interactable = true; } }) .start(); } else { this.Plant.getChildByName("name").getComponent(cc.Label).string = ""; this.Plant.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = this.voiceSpriteFrame; var audioName = name + "_audio"; name = "audio" + name; this.now_Food = name; cc.fx.AudioManager._instance.playEffect(audioName, null); cc.tween(this.Plant) .to(0.2, { opacity: 255 }) .call(function () { _this.Btn_Hear.getChildByName("nomal").getComponent(cc.Button).interactable = true; _this.Btn_New.getChildByName("nomal").getComponent(cc.Button).interactable = true; _this.Btn_See.getChildByName("nomal").getComponent(cc.Button).interactable = true; }) .start(); } //关卡+1 }; //新植物按钮 GuideManager.prototype.click_Btn = function (customData, data) { var _this = this; //关掉计时器 处理逻辑之前,先行关掉按钮开关 if (data == "Btn_New") { this.choice = 1; this.Btn_New.getChildByName("nomal").getComponent(cc.Button).interactable = false; } else if (data == "Btn_Hear") { this.choice = 2; this.Btn_Hear.getChildByName("nomal").getComponent(cc.Button).interactable = false; } else if (data == "Btn_See") { this.choice = 3; this.Btn_See.getChildByName("nomal").getComponent(cc.Button).interactable = false; } else if (data == "Btn_Firewood") { this.Btn_Firewood.getChildByName("fireBg").active = true; this.Btn_Firewood.getChildByName("fire").active = true; setTimeout(function () { if (_this.Btn_Firewood) { _this.Btn_Firewood.getChildByName("fireBg").active = false; _this.Btn_Firewood.getChildByName("fire").active = false; } }, 1050); console.log("正确点火"); this.Btn_Firewood.getComponent(cc.Button).interactable = false; this.node.getChildByName("muchai").active = false; this.node.getChildByName("hand").active = false; return; } var target = this[data]; var label = this.Tip.getChildByName("content").getComponent(cc.Label); //正确 if (this.choice == this.customData[this.custom - 2].right) { cc.fx.AudioManager._instance.playEffect("yes", null); this.Tip.stopAllActions(); this.Tip.active = false; this.Btn_New.getChildByName("nomal").getComponent(cc.Button).interactable = false; this.Btn_Hear.getChildByName("nomal").getComponent(cc.Button).interactable = false; this.Btn_See.getChildByName("nomal").getComponent(cc.Button).interactable = false; this.Btn_Firewood.getComponent(cc.Button).interactable = false; target.getChildByName("err").active = false; target.getChildByName("correct").active = true; setTimeout(function () { _this.Btn_New.getChildByName("nomal").active = true; _this.Btn_New.getChildByName("err").active = false; _this.Btn_New.getChildByName("correct").active = false; _this.Btn_Hear.getChildByName("nomal").active = true; _this.Btn_Hear.getChildByName("err").active = false; _this.Btn_Hear.getChildByName("correct").active = false; _this.Btn_See.getChildByName("nomal").active = true; _this.Btn_See.getChildByName("err").active = false; _this.Btn_See.getChildByName("correct").active = false; _this.Btn_Hear.getChildByName("nomal").getComponent(cc.Button).interactable = false; _this.Btn_New.getChildByName("nomal").getComponent(cc.Button).interactable = false; _this.Btn_See.getChildByName("nomal").getComponent(cc.Button).interactable = false; _this.custom += 1; if (_this.custom >= 8) { _this.node.getChildByName("againBtn").active = true; _this.node.getChildByName("startBtn").active = true; _this.Btn_Hear.active = false; _this.Btn_New.active = false; _this.Btn_See.active = false; _this.Btn_Firewood.active = false; } else _this.nextLevel(); }, 1000); } else { cc.fx.AudioManager._instance.playEffect("yes", null); var tipTemp = '葡萄刚才出现过呢'; this.Tip.active = true; target.getChildByName("err").active = true; target.getChildByName("correct").active = false; switch ((this.custom - 2)) { case 0: tipTemp = "这是这局游戏第一次出现葡萄"; break; case 1: tipTemp = "这是这局游戏第一次出现桃子"; break; case 2: if (this.choice == 2) tipTemp = '上次遇到葡萄时,似乎不是听到的吧'; break; case 3: tipTemp = "这是这局游戏第一次出现木柴"; break; case 4: if (this.choice == 3) tipTemp = '上次遇到桃子时,似乎不是看到的吧'; else tipTemp = '桃子刚才出现过呢'; break; case 5: if (this.choice == 3) tipTemp = '之前确实看到过葡萄,但最近一次似乎不是看到的呢'; break; } label.string = tipTemp; this.Tip.opacity = 255; this.Tip.stopAllActions(); var self = this; var action = cc.callFunc(function () { self.Tip.active = false; }); this.Tip.runAction(cc.sequence(cc.delayTime(2), cc.fadeIn(0.5), action)); } }; //开始游戏 GuideManager.prototype.startGame = function () { this.node.getChildByName("nextBtn").active = true; cc.tween(this.node.getChildByName("nextBtn")) .to(0.35, { opacity: 255 }) .start(); }; GuideManager.prototype.againClick = function () { cc.director.loadScene("GuideScene"); }; GuideManager.prototype.onEnable = function () { // cc.fx.Notifications.on("clickSun", this.clickSun, this); }; GuideManager.prototype.onDisable = function () { // cc.fx.Notifications.off("clickSun", this.clickSun); }; GuideManager.prototype.update = function (dt) { }; __decorate([ property(cc.Node) ], GuideManager.prototype, "Tip", void 0); __decorate([ property(cc.SpriteAtlas) ], GuideManager.prototype, "FoodPlist", void 0); __decorate([ property(cc.Node) ], GuideManager.prototype, "Btn_New", void 0); __decorate([ property(cc.Node) ], GuideManager.prototype, "Btn_Hear", void 0); __decorate([ property(cc.Node) ], GuideManager.prototype, "Btn_See", void 0); __decorate([ property(cc.Node) ], GuideManager.prototype, "Btn_Firewood", void 0); __decorate([ property(cc.Node) ], GuideManager.prototype, "Plant", void 0); GuideManager = __decorate([ ccclass ], GuideManager); return GuideManager; }(cc.Component)); exports.default = GuideManager; 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHdWlkZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsU0FBUztBQUNILElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBRTFDO0lBQTBDLGdDQUFZO0lBQXREO1FBQUEscUVBK1VDO1FBNVVHLFNBQUcsR0FBWSxJQUFJLENBQUM7UUFHcEIsZUFBUyxHQUFtQixJQUFJLENBQUM7UUFHakMsYUFBTyxHQUFZLElBQUksQ0FBQztRQUV4QixjQUFRLEdBQVksSUFBSSxDQUFDO1FBRXpCLGFBQU8sR0FBWSxJQUFJLENBQUM7UUFFeEIsa0JBQVksR0FBWSxJQUFJLENBQUM7UUFJN0IsV0FBSyxHQUFZLElBQUksQ0FBQzs7SUE0VDFCLENBQUM7SUFoVEcsNkJBQU0sR0FBTjtRQUNJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCw0QkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVELDBCQUFHLEdBQUg7UUFDSSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNqQyxJQUFHLENBQUMsRUFBRSxFQUFDO1lBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7U0FDOUI7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUNsRSxDQUFDO0lBRUQsT0FBTztJQUNQLDJCQUFJLEdBQUo7UUFDSSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMs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SUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDL0QsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUMvQyxVQUFVLENBQUM7Z0JBQ1AsS0FBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbkQsS0FBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDbEQsS0FBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDdEQsS0FBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDcEQsS0FBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDbkQsS0FBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDdkQsS0FBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbkQsS0FBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDbEQsS0FBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDdEQsS0FBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FB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QUUsQ0FBQyxJQUFJLENBQUM7c0RBQ1c7SUFJN0I7UUFIQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzsrQ0FHSTtJQW5CTCxZQUFZO1FBRGhDLE9BQU87T0FDYSxZQUFZLENBK1VoQztJQUFELG1CQUFDO0NBL1VELEFBK1VDLENBL1V5QyxFQUFFLENBQUMsU0FBUyxHQStVckQ7a0JBL1VvQixZQUFZIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEF1ZGlvTWFuYWdlciBmcm9tIFwiLi9tb2R1bGUvTXVzaWMvQXVkaW9NYW5hZ2VyXCI7XHJcblxyXG4vLyDkuLvmuLjmiI/mjqfliLbnsbtcclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEd1aWRlTWFuYWdlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBUaXA6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgXHJcbiAgICBAcHJvcGVydHkoY2MuU3ByaXRlQXRsYXMpXHJcbiAgICBGb29kUGxpc3Q6IGNjLlNwcml0ZUF0bGFzID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIEJ0bl9OZXc6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBCdG5fSGVhcjogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIEJ0bl9TZWU6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBCdG5fRmlyZXdvb2Q6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcblxyXG4gICAgXHJcbiAgICBQbGFudDogY2MuTm9kZSA9IG51bGw7XHJcbiAgICB2b2ljZVNwcml0ZUZyYW1lOiBjYy5TcHJpdGVGcmFtZTsgICAgIC8v5piv5ZCm5Y+v54K55Ye7XHJcblxyXG4gICAgbmVlZGxlVHdlZW46IGNjLlR3ZWVuPGNjLlNwcml0ZT47XHJcbiAgICBmdW5jOiAoKSA9PiB2b2lkO1xyXG5cclxuICAgIGN1c3RvbTpudW1iZXI7XHJcblxyXG4gICAgbm93X0Zvb2Q6IHN0cmluZzsgICAgICAgLy/lvZPliY3lhbPljaHlkI3lrZfkv6Hmga9cclxuICAgIGN1c3RvbURhdGE6IHsgaXRlbTogc3RyaW5nOyB0eXBlOiBudW1iZXI7IHJpZ2h0OiBudW1iZXI7IH1bXTtcclxuICAgIGNob2ljZTogbnVtYmVyO1xyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcbiAgICAgICAgdGhpcy5jdXN0b20gPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgICAgICB0aGlzLmZpdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGZpdCgpe1xyXG4gICAgICAgIHZhciBqZyA9IGNjLmZ4LkdhbWVUb29sLnNldEZpdCgpO1xyXG4gICAgICAgIGlmKCFqZyl7XHJcbiAgICAgICAgICAgIHRoaXMuQnRuX0ZpcmV3b29kLnkgPSAtNjAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLkJ0bl9GaXJld29vZC5nZXRDb21wb25lbnQoY2MuQnV0dG9uKS5pbnRlcmFjdGFibGUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Yid5aeL5YyW5pWw5o2uXHJcbiAgICBpbml0KCl7XHJcbiAgICAgICAgdGhpcy52b2ljZVNwcml0ZUZyYW1lID0gdGhpcy5QbGFudC5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWU7YGBcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJqdW1wQnRuXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibmV4dEJ0blwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJqdW1wQnRuXCIpKVxyXG4gICAgICAgIC50bygwLjM1LHtvcGFjaXR5OjI1NX0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgbGV0IHRpcCA9IGNjLmZ4LnRpcFR5cGUudGlwT25lO1xyXG5cclxuICAgICAgICBsZXQgbGFiZWwgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXAxXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCk7XHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wudHlwaW5nQW5pKGxhYmVsLHRpcCx0aGlzLnN0YXJ0R2FtZS5iaW5kKHRoaXMpLHRoaXMpO1xyXG5cclxuICAgICAgICB0aGlzLmluaXREYXRhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdERhdGEoKXtcclxuICAgICAgICB0aGlzLmN1c3RvbURhdGEgPSBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwiaXRlbVwiOiBcInB1dGFvXCIsXHJcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogMSxcclxuICAgICAgICAgICAgICAgIFwicmlnaHRcIjoxLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcIml0ZW1cIjogXCJ0YW96aVwiLFxyXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IDIsXHJcbiAgICAgICAgICAgICAgICBcInJpZ2h0XCI6MSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJpdGVtXCI6IFwicHV0YW9cIixcclxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiAyLFxyXG4gICAgICAgICAgICAgICAgXCJyaWdodFwiOjMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwiaXRlbVwiOiBcIm11Y2hhaVwiLFxyXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IDEsXHJcbiAgICAgICAgICAgICAgICBcInJpZ2h0XCI6MSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJpdGVtXCI6IFwidGFvemlcIixcclxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiAxLFxyXG4gICAgICAgICAgICAgICAgXCJyaWdodFwiOjIsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwiaXRlbVwiOiBcInB1dGFvXCIsXHJcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogMSxcclxuICAgICAgICAgICAgICAgIFwicmlnaHRcIjoyLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIF1cclxuICAgIH1cclxuXHJcbiAgICBwYXNzVm9pY2UoKXtcclxuICAgICAgICAvLyBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlNdXNpY0dhbWUoKTtcclxuICAgICAgICBsZXQgdm9pY2UgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ2b2ljZVRpcFwiKTtcclxuICAgICAgICB2b2ljZS5nZXRDaGlsZEJ5TmFtZShcInN0YXJ0QnRuXCIpLmdldENvbXBvbmVudChjYy5CdXR0b24pLmludGVyYWN0YWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIHZvaWNlLmdldENoaWxkQnlOYW1lKFwicGxheUJ0blwiKS5nZXRDb21wb25lbnQoY2MuQnV0dG9uKS5pbnRlcmFjdGFibGUgPSBmYWxzZTtcclxuICAgICAgICBjYy50d2Vlbih2b2ljZSlcclxuICAgICAgICAudG8oMC41LHtvcGFjaXR5OjB9KVxyXG4gICAgICAgIC5jYWxsKCgpPT57XHJcbiAgICAgICAgICAgIHZvaWNlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgICAgIH0sIDEwMDApO1xyXG4gICAgfVxyXG5cclxuICAgIHBsYXlWb2ljZSgpe1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcInRhb3ppX2F1ZGlvXCIsbnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAganVtcENsaWNrKCl7XHJcbiAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIG5leHRDbGljaygpe1xyXG4gICAgICAgIC8v56ys5LiA5q2lXHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibmV4dEJ0blwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBsZXQgbGFiZWwgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXAxXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCk7XHJcbiAgXHJcbiAgICAgICAgaWYodGhpcy5jdXN0b20gPT0gMCl7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpcDFcIikpXHJcbiAgICAgICAgICAgIC50bygwLjIse29wYWNpdHk6MH0pXHJcbiAgICAgICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICAgICAgbGFiZWwuc3RyaW5nID0gXCJcIjtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnRvKDAuMSx7b3BhY2l0eToyNTV9KVxyXG4gICAgICAgICAgICAuY2FsbCgoKSA9PnsgXHJcbiAgICAgICAgICAgICAgICBsZXQgdGlwID0gY2MuZngudGlwVHlwZS50aXBUd287XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC50eXBpbmdBbmkobGFiZWwsdGlwLHRoaXMuc3RhcnRHYW1lLmJpbmQodGhpcyksdGhpcyk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMuY3VzdG9tID09IDEpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJuZXh0QnRuXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJqdW1wQnRuXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXAxXCIpKVxyXG4gICAgICAgICAgICAudG8oMC4yLHtvcGFjaXR5OjB9KVxyXG4gICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgIGxhYmVsLnN0cmluZyA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5leHRMZXZlbCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jdXN0b20gKz0gMTtcclxuICAgIH1cclxuXHJcbiAgICBuZXh0TGV2ZWwoKXtcclxuICAgICAgICB0aGlzLmNob2ljZSA9IDA7XHJcbiAgICAgICAgdGhpcy5CdG5fSGVhci5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuQnRuX05ldy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuQnRuX1NlZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuQnRuX0ZpcmV3b29kLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5CdG5fSGVhci5nZXRDaGlsZEJ5TmFtZShcIm5vbWFsXCIpLmdldENvbXBvbmVudChjYy5CdXR0b24pLmludGVyYWN0YWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuQnRuX05ldy5nZXRDaGlsZEJ5TmFtZShcIm5vbWFsXCIpLmdldENvbXBvbmVudChjYy5CdXR0b24pLmludGVyYWN0YWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuQnRuX1NlZS5nZXRDaGlsZEJ5TmFtZShcIm5vbWFsXCIpLmdldENvbXBvbmVudChjYy5CdXR0b24pLmludGVyYWN0YWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmKHRoaXMuY3VzdG9tID09IDUpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJtdWNoYWlcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiaGFuZFwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLkJ0bl9GaXJld29vZC5nZXRDb21wb25lbnQoY2MuQnV0dG9uKS5pbnRlcmFjdGFibGUgPSBmYWxzZTtcclxuICAgICAgICBsZXQgbmFtZSA9IHRoaXMuY3VzdG9tRGF0YVt0aGlzLmN1c3RvbS0yXS5pdGVtO1xyXG4gICAgICAgIGlmKHRoaXMuY3VzdG9tRGF0YVt0aGlzLmN1c3RvbS0yXS50eXBlID09IDEpe1xyXG4gICAgICAgICAgICB0aGlzLlBsYW50LmdldENoaWxkQnlOYW1lKFwibmFtZVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IGNjLmZ4LkdhbWVUb29sLmdldEZvb2ROYW1lKG5hbWUpO1xyXG4gICAgICAgICAgICBuYW1lID0gXCJwcm9wX1wiK25hbWU7XHJcbiAgICAgICAgICAgIHRoaXMuUGxhbnQuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5Gb29kUGxpc3RbXCJfc3ByaXRlRnJhbWVzXCJdW25hbWVdO1xyXG4gICAgICAgICAgICB0aGlzLm5vd19Gb29kID0gbmFtZTtcclxuICAgICAgICAgICAgY2MudHdlZW4odGhpcy5QbGFudClcclxuICAgICAgICAgICAgLnRvKDAuMix7b3BhY2l0eToyNTV9KVxyXG4gICAgICAgICAgICAuY2FsbCgoKT0+e1xyXG4gICAgICAgICAgICAgICAgdGhpcy5CdG5fSGVhci5nZXRDaGlsZEJ5TmFtZShcIm5vbWFsXCIpLmdldENvbXBvbmVudChjYy5CdXR0b24pLmludGVyYWN0YWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkJ0bl9OZXcuZ2V0Q2hpbGRCeU5hbWUoXCJub21hbFwiKS5nZXRDb21wb25lbnQoY2MuQnV0dG9uKS5pbnRlcmFjdGFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5CdG5fU2VlLmdldENoaWxkQnlOYW1lKFwibm9tYWxcIikuZ2V0Q29tcG9uZW50KGNjLkJ1dHRvbikuaW50ZXJhY3RhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuY3VzdG9tID09IDUpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQnRuX0ZpcmV3b29kLmdldENvbXBvbmVudChjYy5CdXR0b24pLmludGVyYWN0YWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLlBsYW50LmdldENoaWxkQnlOYW1lKFwibmFtZVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IFwiXCJcclxuICAgICAgICAgICAgdGhpcy5QbGFudC5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLnZvaWNlU3ByaXRlRnJhbWU7XHJcbiAgICAgICAgICAgIGxldCBhdWRpb05hbWUgPSBuYW1lICsgXCJfYXVkaW9cIjtcclxuICAgICAgICAgICAgbmFtZSA9IFwiYXVkaW9cIisgbmFtZTtcclxuICAgICAgICAgICAgdGhpcy5ub3dfRm9vZCA9IG5hbWU7XHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChhdWRpb05hbWUsbnVsbCk7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMuUGxhbnQpXHJcbiAgICAgICAgICAgIC50bygwLjIse29wYWNpdHk6MjU1fSlcclxuICAgICAgICAgICAgLmNhbGwoKCk9PntcclxuICAgICAgICAgICAgICAgIHRoaXMuQnRuX0hlYXIuZ2V0Q2hpbGRCeU5hbWUoXCJub21hbFwiKS5nZXRDb21wb25lbnQoY2MuQnV0dG9uKS5pbnRlcmFjdGFibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5CdG5fTmV3LmdldENoaWxkQnlOYW1lKFwibm9tYWxcIikuZ2V0Q29tcG9uZW50KGNjLkJ1dHRvbikuaW50ZXJhY3RhYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuQnRuX1NlZS5nZXRDaGlsZEJ5TmFtZShcIm5vbWFsXCIpLmdldENvbXBvbmVudChjYy5CdXR0b24pLmludGVyYWN0YWJsZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL+WFs+WNoSsxXHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8v5paw5qSN54mp5oyJ6ZKuXHJcbiAgICBjbGlja19CdG4oY3VzdG9tRGF0YSxkYXRhKXtcclxuICAgICAgICAvL+WFs+aOieiuoeaXtuWZqCAgIOWkhOeQhumAu+i+keS5i+WJje+8jOWFiOihjOWFs+aOieaMiemSruW8gOWFs1xyXG4gICAgICAgIGlmKGRhdGEgPT0gXCJCdG5fTmV3XCIpe1xyXG4gICAgICAgICAgICB0aGlzLmNob2ljZSA9IDE7XHJcbiAgICAgICAgICAgIHRoaXMuQnRuX05ldy5nZXRDaGlsZEJ5TmFtZShcIm5vbWFsXCIpLmdldENvbXBvbmVudChjYy5CdXR0b24pLmludGVyYWN0YWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIH0gXHJcbiAgICAgICAgZWxzZSBpZihkYXRhID09IFwiQnRuX0hlYXJcIil7XHJcbiAgICAgICAgICAgIHRoaXMuY2hvaWNlID0gMjtcclxuICAgICAgICAgICAgdGhpcy5CdG5fSGVhci5nZXRDaGlsZEJ5TmFtZShcIm5vbWFsXCIpLmdldENvbXBvbmVudChjYy5CdXR0b24pLmludGVyYWN0YWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIH0gXHJcbiAgICAgICAgZWxzZSBpZihkYXRhID09IFwiQnRuX1NlZVwiKXtcclxuICAgICAgICAgICAgdGhpcy5jaG9pY2UgPSAzO1xyXG4gICAgICAgICAgICB0aGlzLkJ0bl9TZWUuZ2V0Q2hpbGRCeU5hbWUoXCJub21hbFwiKS5nZXRDb21wb25lbnQoY2MuQnV0dG9uKS5pbnRlcmFjdGFibGUgPSBmYWxzZTtcclxuICAgICAgICB9IFxyXG4gICAgICAgIGVsc2UgaWYoZGF0YSA9PSBcIkJ0bl9GaXJld29vZFwiKXtcclxuICAgICAgICAgICAgdGhpcy5CdG5fRmlyZXdvb2QuZ2V0Q2hpbGRCeU5hbWUoXCJmaXJlQmdcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5CdG5fRmlyZXdvb2QuZ2V0Q2hpbGRCeU5hbWUoXCJmaXJlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5CdG5fRmlyZXdvb2Qpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQnRuX0ZpcmV3b29kLmdldENoaWxkQnlOYW1lKFwiZmlyZUJnXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQnRuX0ZpcmV3b29kLmdldENoaWxkQnlOYW1lKFwiZmlyZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgMTA1MCk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5q2j56Gu54K554GrXCIpO1xyXG4gICAgICAgICAgICB0aGlzLkJ0bl9GaXJld29vZC5nZXRDb21wb25lbnQoY2MuQnV0dG9uKS5pbnRlcmFjdGFibGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibXVjaGFpXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJoYW5kXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBcclxuICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpc1tkYXRhXTtcclxuICAgICAgICB2YXIgbGFiZWwgPSB0aGlzLlRpcC5nZXRDaGlsZEJ5TmFtZShcImNvbnRlbnRcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKTtcclxuICAgICAgICAvL+ato+ehrlxyXG4gICAgICAgIGlmKHRoaXMuY2hvaWNlID09IHRoaXMuY3VzdG9tRGF0YVt0aGlzLmN1c3RvbS0yXS5yaWdodCl7XHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcInllc1wiLG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLlRpcC5zdG9wQWxsQWN0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLlRpcC5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5CdG5fTmV3LmdldENoaWxkQnlOYW1lKFwibm9tYWxcIikuZ2V0Q29tcG9uZW50KGNjLkJ1dHRvbikuaW50ZXJhY3RhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuQnRuX0hlYXIuZ2V0Q2hpbGRCeU5hbWUoXCJub21hbFwiKS5nZXRDb21wb25lbnQoY2MuQnV0dG9uKS5pbnRlcmFjdGFibGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5CdG5fU2VlLmdldENoaWxkQnlOYW1lKFwibm9tYWxcIikuZ2V0Q29tcG9uZW50KGNjLkJ1dHRvbikuaW50ZXJhY3RhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuQnRuX0ZpcmV3b29kLmdldENvbXBvbmVudChjYy5CdXR0b24pLmludGVyYWN0YWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0YXJnZXQuZ2V0Q2hpbGRCeU5hbWUoXCJlcnJcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRhcmdldC5nZXRDaGlsZEJ5TmFtZShcImNvcnJlY3RcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkJ0bl9OZXcuZ2V0Q2hpbGRCeU5hbWUoXCJub21hbFwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5CdG5fTmV3LmdldENoaWxkQnlOYW1lKFwiZXJyXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5CdG5fTmV3LmdldENoaWxkQnlOYW1lKFwiY29ycmVjdFwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuQnRuX0hlYXIuZ2V0Q2hpbGRCeU5hbWUoXCJub21hbFwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5CdG5fSGVhci5nZXRDaGlsZEJ5TmFtZShcImVyclwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuQnRuX0hlYXIuZ2V0Q2hpbGRCeU5hbWUoXCJjb3JyZWN0XCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5CdG5fU2VlLmdldENoaWxkQnlOYW1lKFwibm9tYWxcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuQnRuX1NlZS5nZXRDaGlsZEJ5TmFtZShcImVyclwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuQnRuX1NlZS5nZXRDaGlsZEJ5TmFtZShcImNvcnJlY3RcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkJ0bl9IZWFyLmdldENoaWxkQnlOYW1lKFwibm9tYWxcIikuZ2V0Q29tcG9uZW50KGNjLkJ1dHRvbikuaW50ZXJhY3RhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkJ0bl9OZXcuZ2V0Q2hpbGRCeU5hbWUoXCJub21hbFwiKS5nZXRDb21wb25lbnQoY2MuQnV0dG9uKS5pbnRlcmFjdGFibGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuQnRuX1NlZS5nZXRDaGlsZEJ5TmFtZShcIm5vbWFsXCIpLmdldENvbXBvbmVudChjYy5CdXR0b24pLmludGVyYWN0YWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b20gKz0gMTtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuY3VzdG9tID49IDgpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImFnYWluQnRuXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwic3RhcnRCdG5cIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLkJ0bl9IZWFyLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQnRuX05ldy5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLkJ0bl9TZWUuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5CdG5fRmlyZXdvb2QuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgZWxzZSB0aGlzLm5leHRMZXZlbCgpO1xyXG4gICAgICAgICAgICB9LCAxMDAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwieWVzXCIsbnVsbCk7XHJcbiAgICAgICAgICAgIHZhciB0aXBUZW1wID0gJ+iRoeiQhOWImuaJjeWHuueOsOi/h+WRoidcclxuICAgICAgICAgICAgdGhpcy5UaXAuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGFyZ2V0LmdldENoaWxkQnlOYW1lKFwiZXJyXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRhcmdldC5nZXRDaGlsZEJ5TmFtZShcImNvcnJlY3RcIikuYWN0aXZlID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICBzd2l0Y2goKHRoaXMuY3VzdG9tLTIpKXtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAgICAgICAgICB0aXBUZW1wID0gXCLov5nmmK/ov5nlsYDmuLjmiI/nrKzkuIDmrKHlh7rnjrDokaHokIRcIjtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgICAgICAgICB0aXBUZW1wID0gXCLov5nmmK/ov5nlsYDmuLjmiI/nrKzkuIDmrKHlh7rnjrDmoYPlrZBcIjtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmNob2ljZSA9PSAyKSB0aXBUZW1wID0gJ+S4iuasoemBh+WIsOiRoeiQhOaXtu+8jOS8vOS5juS4jeaYr+WQrOWIsOeahOWQpyc7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICAgICAgICAgICAgdGlwVGVtcCA9IFwi6L+Z5piv6L+Z5bGA5ri45oiP56ys5LiA5qyh5Ye6546w5pyo5p+0XCI7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5jaG9pY2UgPT0gMykgdGlwVGVtcCA9J+S4iuasoemBh+WIsOahg+WtkOaXtu+8jOS8vOS5juS4jeaYr+eci+WIsOeahOWQpyc7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAgdGlwVGVtcCA9ICfmoYPlrZDliJrmiY3lh7rnjrDov4flkaInXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5jaG9pY2UgPT0gMykgdGlwVGVtcCA9ICfkuYvliY3noa7lrp7nnIvliLDov4fokaHokITvvIzkvYbmnIDov5HkuIDmrKHkvLzkuY7kuI3mmK/nnIvliLDnmoTlkaInO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxhYmVsLnN0cmluZyA9IHRpcFRlbXA7XHJcbiAgICAgICAgICAgIHRoaXMuVGlwLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgIHRoaXMuVGlwLnN0b3BBbGxBY3Rpb25zKCk7XHJcbiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICAgICAgdmFyIGFjdGlvbiA9IGNjLmNhbGxGdW5jKGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICBzZWxmLlRpcC5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy5UaXAucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLmRlbGF5VGltZSgyKSxjYy5mYWRlSW4oMC41KSxhY3Rpb24pKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+W8gOWni+a4uOaIj1xyXG4gICAgc3RhcnRHYW1lKCl7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibmV4dEJ0blwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIm5leHRCdG5cIikpXHJcbiAgICAgICAgLnRvKDAuMzUse29wYWNpdHk6MjU1fSlcclxuICAgICAgICAuc3RhcnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBhZ2FpbkNsaWNrKCl7XHJcbiAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR3VpZGVTY2VuZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBcclxuXHJcbiAgICBvbkVuYWJsZSAoKSB7XHJcbiAgICAgICAgLy8gY2MuZnguTm90aWZpY2F0aW9ucy5vbihcImNsaWNrU3VuXCIsIHRoaXMuY2xpY2tTdW4sIHRoaXMpO1xyXG4gICAgfVxyXG4gICAgb25EaXNhYmxlICgpIHtcclxuICAgICAgICAvLyBjYy5meC5Ob3RpZmljYXRpb25zLm9mZihcImNsaWNrU3VuXCIsIHRoaXMuY2xpY2tTdW4pO1xyXG4gICAgfVxyXG4gICAgdXBkYXRlIChkdCkge1xyXG4gICAgfVxyXG59XHJcbiJdfQ==