123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534 |
- (function() {
- var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
- var __module = nodeEnv ? module : {exports:{}};
- var __filename = 'preview-scripts/assets/script/utils/I18nUtil.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, 'bf0c5vcbKpFaKAHudea+RTS', 'I18nUtil');
- // script/utils/I18nUtil.ts
- "use strict";
- var __spreadArrays = (this && this.__spreadArrays) || function () {
- for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
- for (var r = Array(s), k = 0, i = 0; i < il; i++)
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
- r[k] = a[j];
- return r;
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.I18n = void 0;
- var Config_1 = require("../Config");
- var gameCfg_1 = require("../common/gameCfg");
- var TypeConst_1 = require("../data/const/TypeConst");
- var Load_1 = require("./Load");
- var I18n = /** @class */ (function () {
- function I18n() {
- }
- I18n.getI18nText = function (key) {
- var args = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- args[_i - 1] = arguments[_i];
- }
- var i18n = gameCfg_1.default.languageClientText.getItem(key);
- var str = key;
- if (!i18n || !i18n[Config_1.default.lang]) {
- if (CC_PREVIEW)
- console.warn("\u591A\u8BED\u8A00languageText: " + key + "," + Config_1.default.lang + "\u4E0D\u5B58\u5728");
- }
- else
- str = i18n[Config_1.default.lang];
- return I18n.format(str, args);
- };
- I18n.getI18nLang = function (key) {
- var args = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- args[_i - 1] = arguments[_i];
- }
- var i18n = gameCfg_1.default.languageLang.getItem(key);
- var str = key;
- if (!i18n || !i18n[Config_1.default.lang]) {
- if (CC_PREVIEW)
- console.warn("\u591A\u8BED\u8A00languageLang: " + key + "," + Config_1.default.lang + "\u4E0D\u5B58\u5728");
- }
- else
- str = i18n[Config_1.default.lang];
- return I18n.format(str, args);
- };
- I18n.format = function (str, args) {
- var result = str;
- args.forEach(function (element, index) {
- result = result.replace("{" + index + "}", element);
- });
- return result;
- };
- I18n.getI18nLangArr = function (key) {
- var i18n = gameCfg_1.default.languageLang.getItem(key);
- var arr = this.temp;
- if (!i18n || !i18n[Config_1.default.lang]) {
- if (CC_PREVIEW)
- console.warn("\u591A\u8BED\u8A00languageLangArr: " + key + "," + Config_1.default.lang + "\u4E0D\u5B58\u5728");
- return arr;
- }
- else {
- try {
- arr = JSON.parse(i18n[Config_1.default.lang]);
- }
- catch (e) {
- if (CC_PREVIEW)
- console.error(e);
- }
- }
- return arr;
- };
- /**
- * 如果是zh-cn,则从原路径读取
- */
- I18n.LoadI18nTexture = function (node, url, callback) {
- if (callback === void 0) { callback = null; }
- var u = url;
- if (Config_1.default.lang != TypeConst_1.Lang.lang_zh_cn)
- u = Config_1.default.lang + "/" + url;
- Load_1.default.loadTexture(node, u, function (isSucc) {
- if (!isSucc) {
- console.warn(Config_1.default.lang + ": " + node.name + "\u8282\u70B9\u4E0A\u7684\u8D44\u6E90" + url + "\u52A0\u8F7D\u5931\u8D25");
- }
- if (callback)
- callback(isSucc);
- });
- };
- I18n.getEpsTypeName = function (type) {
- return I18n.getI18nText("common_eptype_" + type);
- };
- I18n.getMoneyDesc = function (money) {
- return I18n.getI18nText("money_desc", money);
- };
- I18n.getTaskDescKey = function (id) {
- return "task_desc_name_" + id;
- };
- I18n.getTaskDesc = function (id) {
- var args = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- args[_i - 1] = arguments[_i];
- }
- return I18n.getI18nLang.apply(I18n, __spreadArrays([I18n.getTaskDescKey(id)], args));
- };
- I18n.getUserEpDesc = function (key) {
- var args = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- args[_i - 1] = arguments[_i];
- }
- return I18n.getI18nLang.apply(I18n, __spreadArrays(["user_ep_desc_" + key], args));
- };
- I18n.getFazhenInfoName = function (id) {
- return I18n.getI18nLang("equip_info_name_" + id);
- };
- I18n.getFazhenSkillDesc = function (id) {
- var args = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- args[_i - 1] = arguments[_i];
- }
- return I18n.getI18nLang.apply(I18n, __spreadArrays(["fazhen_skill_desc_" + id], args));
- };
- I18n.getFazhenSkillName = function (id) {
- var args = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- args[_i - 1] = arguments[_i];
- }
- return I18n.getI18nLang("fazhen_skill_name_" + id);
- };
- I18n.getFazhenInfoDesc = function (id) {
- return I18n.getI18nLang("fazhen_info_desc_" + id);
- };
- I18n.getFushiEpDesc = function (key) {
- return I18n.getI18nLang("fushi_ep_desc_" + key);
- };
- I18n.getFushiItemName = function (id) {
- return I18n.getI18nLang("fushi_item_name_" + id);
- };
- I18n.getFushiEpName = function (key) {
- return I18n.getI18nLang("fushi_ep_name_" + key);
- };
- I18n.getFushiTaskdescContent = function (kind) {
- var args = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- args[_i - 1] = arguments[_i];
- }
- return I18n.getI18nLang.apply(I18n, __spreadArrays(["fushi_taskdesc_content_" + kind], args));
- };
- I18n.getFushiTaskdescName = function (kind) {
- var args = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- args[_i - 1] = arguments[_i];
- }
- return I18n.getI18nLang.apply(I18n, __spreadArrays(["fushi_taskdesc_name_" + kind], args));
- };
- I18n.getGuideInfoParam = function (id) {
- return I18n.getI18nLangArr("guide_info_pram_" + id);
- };
- I18n.getPveInfoName = function (id) {
- return I18n.getI18nLang("pve_info_name_" + id);
- };
- I18n.getJinxiuByTzDesc = function (tzid) {
- return I18n.getI18nLang("jinxiu_info_desc_" + tzid);
- };
- I18n.getJinxiuByTzName = function (tzid) {
- return I18n.getI18nLang("jinxiu_info_tzName" + tzid);
- };
- I18n.getYixiangInfoDesc = function (id) {
- return I18n.getI18nLang("yixiang_info_desc_" + id);
- };
- I18n.getYixiangInfoName = function (id) {
- return I18n.getI18nLang("yixiang_info_name_" + id);
- };
- I18n.getYixiangInfoSource = function (id) {
- return I18n.getI18nLang("yixiang_info_source_" + id);
- };
- I18n.getLiudaoInfoName = function (id) {
- return I18n.getI18nLang("liudao_info_name_" + id);
- };
- I18n.getLonggongJiaofuName = function (id) {
- return I18n.getI18nLang("longgong_jiaofu_name_" + id);
- };
- I18n.getDongtianPvdtName = function (id) {
- return I18n.getI18nLang("dongtian_pvdt_name_" + id);
- };
- I18n.getEquipPifugetDesc = function (id) {
- return I18n.getI18nLang("equip_pifu_getDesc_" + id);
- };
- I18n.getDongtianCarName = function (id) {
- return I18n.getI18nLang("dongtian_car_name_" + id);
- };
- I18n.getDongtianXlLvName = function (type, id) {
- return I18n.getI18nLang("dongtian_xlLv_name_" + type + "_" + id);
- };
- I18n.getPveJingyingName = function (id) {
- return I18n.getI18nLang("pve_jingying_name_" + id);
- };
- I18n.getPvwTypeName = function (id) {
- return I18n.getI18nLang("pvw_type_name_" + id);
- };
- I18n.getPvwMonsterName = function (id) {
- return I18n.getI18nLang("pvw_monster_name_" + id);
- };
- I18n.getReddotInfoName = function (id) {
- return I18n.getI18nLang("reddot_info_name_" + id);
- };
- I18n.getShengqiInfoName = function (id) {
- return I18n.getI18nLang("shengqi_info_name_" + id);
- };
- I18n.getShengqiInfoDesc = function (id) {
- return I18n.getI18nLang("shengqi_info_desc_" + id);
- };
- I18n.getShengqiInfoSkillDesc = function (id) {
- return I18n.getI18nLang("shengqi_info_skillDesc_" + id);
- };
- I18n.getShengqiInfoChipName = function (id) {
- return I18n.getI18nLang("shengqi_info_chipName_" + id);
- };
- I18n.getShengqiInfoChipDesc = function (id) {
- return I18n.getI18nLang("shengqi_info_chipDesc_" + id);
- };
- I18n.getShopCoinName = function (id) {
- return I18n.getI18nLang("shop_coin_name_" + id);
- };
- I18n.getShopDiamondName = function (id) {
- return I18n.getI18nLang("shop_diamond_name_" + id);
- };
- I18n.getShopKind11Title = function (id) {
- return I18n.getI18nLang("shop_kind11_title_" + id);
- };
- I18n.getSubscribeInfoContent = function (id) {
- return I18n.getI18nLang("subscribe_info_content_" + id);
- };
- I18n.getXianlvInfoName = function (id) {
- return I18n.getI18nLang("xianlv_info_name_" + id);
- };
- I18n.getMonClubBossName = function (id) {
- return I18n.getI18nLang("mon_clubBoss_name_" + id);
- };
- I18n.getHelpInfoDesc = function (id) {
- return I18n.getI18nLang("help_info_desc_" + id);
- };
- I18n.getXianlvSkill_DescDesc = function (id) {
- return I18n.getI18nLang("xianlv_skill_desc_desc_" + id);
- };
- I18n.getXianlvSkillName = function (id) {
- return I18n.getI18nLang("xianlv_skill_name_" + id);
- };
- I18n.getXiantuInfoName = function (id) {
- var kaiqiCfg = gameCfg_1.default.kaiqiInfo.getItem(id.toString());
- return I18n.getI18nLang(kaiqiCfg.name);
- };
- I18n.getXiantuInfoDesc = function (id) {
- var kaiqiCfg = gameCfg_1.default.kaiqiInfo.getItem(id.toString());
- return I18n.getI18nLang(kaiqiCfg.desc);
- };
- I18n.getZhaocaiPinzhirwdTitle = function (pinzhi) {
- return I18n.getI18nLang("zhaocai_pinzhi_rwdTitle_" + pinzhi);
- };
- I18n.getClubMijiName = function (type, id) {
- return I18n.getI18nLang("club_miji_name_" + type + "_" + id);
- };
- // 宗门旗帜描述
- I18n.getClubFlagDesc = function (id) {
- var args = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- args[_i - 1] = arguments[_i];
- }
- return I18n.getI18nLang("club_flag_desc_" + id, args);
- };
- I18n.getFazhenJibanName = function (id) {
- return I18n.getI18nLang("fazhen_jiban_name_" + id);
- };
- I18n.getBaoshiInfoName = function (id) {
- return I18n.getI18nLang("baoshi_info_name_" + id);
- };
- I18n.getChenghaoInfoName = function (id) {
- return I18n.getI18nLang("chenghao_info_name_" + id);
- };
- I18n.getChenghaoInfoDesc = function (id) {
- return I18n.getI18nLang("chenghao_info_desc_" + id);
- };
- I18n.getEquipPifuName = function (id) {
- return I18n.getI18nLang("equip_pifu_name_" + id);
- };
- I18n.getEquipPifuDesc = function (id) {
- return I18n.getI18nLang("equip_pifu_desc_" + id);
- };
- I18n.getBaoshiItemName = function (id) {
- return I18n.getI18nLang("baoshi_item_name_" + id);
- };
- I18n.getBaoshiItemDesc = function (id) {
- return I18n.getI18nLang("baoshi_item_desc_" + id);
- };
- I18n.getJumpInfoName = function (id) {
- return I18n.getI18nLang("jump_info_name_" + id);
- };
- I18n.getShopFushizName = function (id) {
- return I18n.getI18nLang("shop_fushiz_name_" + id);
- };
- I18n.getReddotInfoDesc = function (id) {
- return I18n.getI18nLang("reddot_info_desc_" + id);
- };
- I18n.getFushiJitanName = function (id, saveid) {
- return I18n.getI18nLang("fushi_jitan_name_" + id + "_" + saveid);
- };
- I18n.getFushiItemDesc = function (id) {
- return I18n.getI18nLang("fushi_item_desc_" + id);
- };
- I18n.getJingguaiInfoName = function (id) {
- return I18n.getI18nLang("jingguai_info_name_" + id);
- };
- I18n.getJingguaiInfoDesc = function (id) {
- return I18n.getI18nLang("jingguai_info_desc_" + id);
- };
- I18n.getJingguaiPinzhiName = function (id) {
- return I18n.getI18nLang("jingguai_pinzhi_name_" + id);
- };
- I18n.getLiantiJingluoName = function (id) {
- return I18n.getI18nLang("lianti_jingluo_name_" + id);
- };
- I18n.getLiantiTipoDesc = function (id) {
- return I18n.getI18nLang("lianti_tipo_desc_" + id);
- };
- I18n.getShopJintiaoName = function (id) {
- return I18n.getI18nLang("shop_jintiao_name_" + id);
- };
- I18n.getMonXiongshouName = function (id) {
- return I18n.getI18nLang("mon_xiongshou_name_" + id);
- };
- I18n.getXiongshouMFDesc = function (id) {
- return I18n.getI18nLang("xiongshou_MF_desc_" + id);
- };
- I18n.getXiongshouNLName = function (id) {
- return I18n.getI18nLang("xiongshou_NL_name_" + id);
- };
- I18n.getXiongshouNLDes = function (id) {
- return I18n.getI18nLang("xiongshou_NL_des_" + id);
- };
- I18n.getDiZiPuGongDesc = function (key) {
- return I18n.getI18nLang("" + key);
- };
- //==========================================================================遮天==========================================================================
- I18n.getItemMoneyName = function (id) {
- // 道具名字
- return I18n.getI18nLang("item_money_name_" + id);
- };
- I18n.getItemMoneyDesc = function (id) {
- // 道具描述
- return I18n.getI18nLang("item_money_desc_" + id);
- };
- I18n.getZhenFaInfoName = function (id) {
- return I18n.getI18nLang("zhenfa_info_name_" + id);
- };
- I18n.getShouLingName = function (id) {
- return I18n.getI18nLang("shouling_name_" + id);
- };
- I18n.getShoulingSkillDesc = function (key) {
- return I18n.getI18nLang("" + key);
- };
- I18n.getShoulingTuJianName = function (key) {
- return I18n.getI18nLang("shouling_jiban_name_" + key);
- };
- I18n.getDiziBaseName = function (id) {
- var diziBase = gameCfg_1.default.huobanBase.getItem(id);
- return I18n.getI18nLang(diziBase === null || diziBase === void 0 ? void 0 : diziBase.name);
- };
- I18n.getDaoyouBaseDesc = function (id) {
- return I18n.getI18nLang("daoyou_base_desc_" + id);
- };
- I18n.getDaoYouSkillTypeName = function (id) {
- var args = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- args[_i - 1] = arguments[_i];
- }
- return I18n.getI18nLang.apply(I18n, __spreadArrays(["daoyou_skillType_skillName_" + id], args));
- };
- I18n.getJingjieStepTitle = function (id) {
- return I18n.getI18nLang("jingjie_step_title_" + id);
- };
- I18n.getJingjieStepMiniTitle = function (id) {
- var title = I18n.getI18nLang("jingjie_step_title_" + id);
- var splitTitle = title.split("·");
- return splitTitle[splitTitle.length - 1];
- };
- I18n.getDiziJingjieStepTitle = function (pinzhi, jingjie) {
- var diziTuPoCfg = gameCfg_1.default.huobanTupo.getItem(pinzhi, jingjie);
- return I18n.getI18nLang(diziTuPoCfg.jingjie);
- };
- I18n.getDiziJingjieStepMiniTitle = function (pinzhi, jingjie) {
- var diziTuPoCfg = gameCfg_1.default.huobanTupo.getItem(pinzhi, jingjie);
- var title = I18n.getI18nLang(diziTuPoCfg.jingjie);
- var splitTitle = title.split("·");
- return splitTitle[splitTitle.length - 1];
- };
- I18n.getDiziJingjieStepDoubleTitle = function (pinzhi, jingjie) {
- var diziTuPoCfg = gameCfg_1.default.huobanTupo.getItem(pinzhi, jingjie);
- var title = I18n.getI18nLang(diziTuPoCfg.jingjie);
- var splitTitle = title.split("·");
- return [splitTitle[0], splitTitle[splitTitle.length - 1]];
- };
- I18n.getDaDiGuZiName = function (id) {
- // 古字名字
- return I18n.getI18nLang("dadiguzi_info_name_" + id);
- };
- I18n.getDaDiGuZiBuWeiName = function (id) {
- // 古字部位名字
- return I18n.getI18nLang("dadiguzi_info_buwei_" + id);
- };
- I18n.getDaDiGuZiTypeName = function (id) {
- // 古字类型名字(灵脉)
- return I18n.getI18nLang("dadiguzi_type_name_" + id);
- };
- I18n.getDaDiGuZiShuFaName = function (id) {
- // 术法名字
- return I18n.getI18nLang("shufa_name_des" + id);
- };
- I18n.getDaDiGuZiShuFaTypeName = function (id) {
- // 术法类型名字
- return I18n.getI18nLang("dadiguzi_xfinfo_type_" + id);
- };
- I18n.getDaDiGuZiSfinfoDesc = function (id) {
- // 术法技能描述
- return I18n.getI18nLang(id);
- };
- I18n.getDaDiGuZiXftjName = function (id) {
- // 图鉴名字
- return I18n.getI18nLang("dadiguzi_xftj_name_" + id);
- };
- I18n.getDaDiGuZiMingwenName = function (id) {
- // 铭文名字
- return I18n.getI18nLang("dadiguzi_mingwen_name_" + id);
- };
- I18n.getDaDiGuZiLingmaiDesc = function (id, count) {
- // 灵脉描述
- return I18n.getI18nLang("dadiguzi_lingmai_desc_" + id + "_" + count);
- };
- I18n.getDaoWenTzName = function (id) {
- // 道纹套装名字
- return I18n.getI18nLang("daowen_tz_info_name_" + id);
- };
- I18n.getDaoWenBwName = function (id) {
- // 道纹部位名字
- return I18n.getI18nLang("daowen_slot_name_" + id);
- };
- I18n.getDaoWenTzDesc = function (id) {
- // 道纹套装描述
- return I18n.getI18nLang("daowen_skill_des" + id);
- };
- I18n.getUserEpName = function (key) {
- // 属性名字
- return I18n.getI18nLang("user_ep_name_" + key);
- };
- I18n.getSkinName = function (key) {
- // 皮肤名字
- return I18n.getI18nLang("skin_skin_name_" + key);
- };
- I18n.getDiZiTuJianName = function (id) {
- // 图鉴名字
- return I18n.getI18nLang("dizi_tujian_name_" + id);
- };
- I18n.getDouFaNpcName = function (id, name) {
- if (id.toString().length < 6) //NPC读语言表
- {
- var npcName = I18n.getI18nLang("doufa_npc_name_" + id);
- return npcName;
- }
- return name;
- };
- I18n.getDouLuoNpcName = function (id, name) {
- if (id.toString().length < 6) //NPC读语言表
- {
- var npcCfg = gameCfg_1.default.douLuoNpc.getItem(id.toString());
- var npcName = I18n.getI18nLang(npcCfg === null || npcCfg === void 0 ? void 0 : npcCfg.name);
- return npcName;
- }
- return name;
- };
- I18n.getDouLuoNpcServer = function (id, name) {
- if (id.toString().length < 6) //NPC读语言表
- {
- var npcCfg = gameCfg_1.default.douLuoNpc.getItem(id.toString());
- var npcName = I18n.getI18nLang(npcCfg === null || npcCfg === void 0 ? void 0 : npcCfg.sevname);
- return npcName;
- }
- return name;
- };
- I18n.getYaoTianNpcName = function (id, name) {
- if (id.toString().length < 6) //NPC读语言表
- {
- var npcName = I18n.getI18nLang(name);
- return npcName;
- }
- return name;
- };
- I18n.getJingjieStepTitleByKey = function (key) {
- return I18n.getI18nLang(key);
- };
- I18n.getCnNum = function (key) {
- // 中文数字一到十
- return I18n.getI18nLang("number_" + key);
- };
- I18n.temp = [{}, {}, {}, {}, {}, {}, {}, {}, {}, {}];
- return I18n;
- }());
- exports.I18n = I18n;
- 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvdXRpbHMvSTE4blV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9DQUErQjtBQUMvQiw2Q0FBd0M7QUFFeEMscURBQXVFO0FBQ3ZFLCtCQUEwQjtBQUUxQjtJQUFBO0lBb2lCQSxDQUFDO0lBbmlCTyxnQkFBVyxHQUFsQixVQUFtQixHQUFXO1FBQUUsY0FBTzthQUFQLFVBQU8sRUFBUCxxQkFBTyxFQUFQLElBQU87WUFBUCw2QkFBTzs7UUFDdEMsSUFBSSxJQUFJLEdBQUcsaUJBQU8sQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkQsSUFBSSxHQUFHLEdBQVcsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoQyxJQUFJLFVBQVU7Z0JBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxxQ0FBb0IsR0FBRyxTQUFJLGdCQUFNLENBQUMsSUFBSSx1QkFBSyxDQUFDLENBQUM7U0FDMUU7O1lBQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLGdCQUFXLEdBQWxCLFVBQW1CLEdBQVc7UUFBRSxjQUFPO2FBQVAsVUFBTyxFQUFQLHFCQUFPLEVBQVAsSUFBTztZQUFQLDZCQUFPOztRQUN0QyxJQUFJLElBQUksR0FBRyxpQkFBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxHQUFHLEdBQVcsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoQyxJ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R0FBRyxpQkFBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDdEQsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsT0FBTyxDQUFDLENBQUM7WUFDaEQsT0FBTyxPQUFPLENBQUM7U0FDZjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVNLHNCQUFpQixHQUF4QixVQUF5QixFQUFtQixFQUFFLElBQVk7UUFDekQsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQyxTQUFTO1NBQ3RDO1lBQ0MsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyQyxPQUFPLE9BQU8sQ0FBQztTQUNmO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRU0sNkJBQXdCLEdBQS9CLFVBQWdDLEdBQVc7UUFDMUMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTSxhQUFRLEdBQWYsVUFBZ0IsR0FBb0I7UUFDbkMsVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFVLEdBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUF4Z0JlLFNBQUksR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBeWdCakUsV0FBQztDQXBpQkQsQUFvaUJDLElBQUE7QUFwaUJZLG9CQUFJIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbmZpZyBmcm9tIFwiLi4vQ29uZmlnXCI7XG5pbXBvcnQgR2FtZWNmZyBmcm9tIFwiLi4vY29tbW9uL2dhbWVDZmdcIjtcbmltcG9ydCB7IGdhbWVNZXRob2QgfSBmcm9tIFwiLi4vY29tbW9uL2dhbWVNZXRob2RcIjtcbmltcG9ydCB7IEZpZ2h0VHlwZU1hcCwgTGFuZywgVGFza0tpbmQgfSBmcm9tIFwiLi4vZGF0YS9jb25zdC9UeXBlQ29uc3RcIjtcbmltcG9ydCBMb2FkIGZyb20gXCIuL0xvYWRcIjtcblxuZXhwb3J0IGNsYXNzIEkxOG4ge1xuXHRzdGF0aWMgZ2V0STE4blRleHQoa2V5OiBzdHJpbmcsIC4uLmFyZ3MpIHtcblx0XHRsZXQgaTE4biA9IEdhbWVjZmcubGFuZ3VhZ2VDbGllbnRUZXh0LmdldEl0ZW0oa2V5KTtcblx0XHRsZXQgc3RyOiBzdHJpbmcgPSBrZXk7XG5cdFx0aWYgKCFpMThuIHx8ICFpMThuW0NvbmZpZy5sYW5nXSkge1xuXHRcdFx0aWYgKENDX1BSRVZJRVcpIGNvbnNvbGUud2Fybihg5aSa6K+t6KiAbGFuZ3VhZ2VUZXh0OiAke2tleX0sJHtDb25maWcubGFuZ33kuI3lrZjlnKhgKTtcblx0XHR9IGVsc2Ugc3RyID0gaTE4bltDb25maWcubGFuZ107XG5cdFx0cmV0dXJuIEkxOG4uZm9ybWF0KHN0ciwgYXJncyk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0STE4bkxhbmcoa2V5OiBzdHJpbmcsIC4uLmFyZ3MpIHtcblx0XHRsZXQgaTE4biA9IEdhbWVjZmcubGFuZ3VhZ2VMYW5nLmdldEl0ZW0oa2V5KTtcblx0XHRsZXQgc3RyOiBzdHJpbmcgPSBrZXk7XG5cdFx0aWYgKCFpMThuIHx8ICFpMThuW0NvbmZpZy5sYW5nXSkge1xuXHRcdFx0aWYgKENDX1BSRVZJRVcpIGNvbnNvbGUud2Fybihg5aSa6K+t6KiAbGFuZ3VhZ2VMYW5nOiAke2tleX0sJHtDb25maWcubGFuZ33kuI3lrZjlnKhgKTtcblx0XHR9IGVsc2Ugc3RyID0gaTE4bltDb25maWcubGFuZ107XG5cdFx0cmV0dXJuIEkxOG4uZm9ybWF0KHN0ciwgYXJncyk7XG5cdH1cblxuXHRzdGF0aWMgZm9ybWF0KHN0cjogc3RyaW5nLCBhcmdzOiBhbnlbXSkge1xuXHRcdGxldCByZXN1bHQgPSBzdHI7XG5cdFx0YXJncy5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuXHRcdFx0cmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoYHske2luZGV4fX1gLCBlbGVtZW50KTtcblx0XHR9KTtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0c3RhdGljIHJlYWRvbmx5IHRlbXAgPSBbe30sIHt9LCB7fSwge30sIHt9LCB7fSwge30sIHt9LCB7fSwge31dO1xuXHRzdGF0aWMgZ2V0STE4bkxhbmdBcnIoa2V5OiBzdHJpbmcpIHtcblx0XHRsZXQgaTE4biA9IEdhbWVjZmcubGFuZ3VhZ2VMYW5nLmdldEl0ZW0oa2V5KTtcblx0XHRsZXQgYXJyOiBhbnkgPSB0aGlzLnRlbXA7XG5cdFx0aWYgKCFpMThuIHx8ICFpMThuW0NvbmZpZy5sYW5nXSkge1xuXHRcdFx0aWYgKENDX1BSRVZJRVcpIGNvbnNvbGUud2Fybihg5aSa6K+t6KiAbGFuZ3VhZ2VMYW5nQXJyOiAke2tleX0sJHtDb25maWcubGFuZ33kuI3lrZjlnKhgKTtcblx0XHRcdHJldHVybiBhcnI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGFyciA9IEpTT04ucGFyc2UoaTE4bltDb25maWcubGFuZ10pO1xuXHRcdFx0fSBjYXRjaCAoZTogYW55KSB7XG5cdFx0XHRcdGlmIChDQ19QUkVWSUVXKSBjb25zb2xlLmVycm9yKGUpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gYXJyO1xuXHR9XG5cblx0LyoqXG5cdCAqIOWmguaenOaYr3poLWNu77yM5YiZ5LuO5Y6f6Lev5b6E6K+75Y+WXG5cdCAqL1xuXHRzdGF0aWMgTG9hZEkxOG5UZXh0dXJlKG5vZGU6IGNjLk5vZGUsIHVybDogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24gPSBudWxsKSB7XG5cdFx0bGV0IHUgPSB1cmw7XG5cdFx0aWYgKENvbmZpZy5sYW5nICE9IExhbmcubGFuZ196aF9jbikgdSA9IGAke0NvbmZpZy5sYW5nfS8ke3VybH1gO1xuXHRcdExvYWQubG9hZFRleHR1cmUobm9kZSwgdSwgKGlzU3VjYykgPT4ge1xuXHRcdFx0aWYgKCFpc1N1Y2MpIHtcblx0XHRcdFx0Y29uc29sZS53YXJuKGAke0NvbmZpZy5sYW5nfTogJHtub2RlLm5hbWV96IqC54K55LiK55qE6LWE5rqQJHt1cmx95Yqg6L295aSx6LSlYCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY2FsbGJhY2spIGNhbGxiYWNrKGlzU3VjYyk7XG5cdFx0fSk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RXBzVHlwZU5hbWUodHlwZTogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4blRleHQoYGNvbW1vbl9lcHR5cGVfJHt0eXBlfWApO1xuXHR9XG5cblx0c3RhdGljIGdldE1vbmV5RGVzYyhtb25leTogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4blRleHQoXCJtb25leV9kZXNjXCIsIG1vbmV5KTtcblx0fVxuXG5cdHN0YXRpYyBnZXRUYXNrRGVzY0tleShpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIGB0YXNrX2Rlc2NfbmFtZV8ke2lkfWA7XG5cdH1cblxuXHRzdGF0aWMgZ2V0VGFza0Rlc2MoaWQ6IG51bWJlciB8IHN0cmluZywgLi4uYXJncykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKEkxOG4uZ2V0VGFza0Rlc2NLZXkoaWQpLCAuLi5hcmdzKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRVc2VyRXBEZXNjKGtleTogc3RyaW5nIHwgbnVtYmVyLCAuLi5hcmdzKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHVzZXJfZXBfZGVzY18ke2tleX1gLCAuLi5hcmdzKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRGYXpoZW5JbmZvTmFtZShpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGVxdWlwX2luZm9fbmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldEZhemhlblNraWxsRGVzYyhpZDogc3RyaW5nIHwgbnVtYmVyLCAuLi5hcmdzKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGZhemhlbl9za2lsbF9kZXNjXyR7aWR9YCwgLi4uYXJncyk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RmF6aGVuU2tpbGxOYW1lKGlkOiBzdHJpbmcgfCBudW1iZXIsIC4uLmFyZ3MpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgZmF6aGVuX3NraWxsX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRGYXpoZW5JbmZvRGVzYyhpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGZhemhlbl9pbmZvX2Rlc2NfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRGdXNoaUVwRGVzYyhrZXk6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBmdXNoaV9lcF9kZXNjXyR7a2V5fWApO1xuXHR9XG5cblx0c3RhdGljIGdldEZ1c2hpSXRlbU5hbWUoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBmdXNoaV9pdGVtX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRGdXNoaUVwTmFtZShrZXk6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBmdXNoaV9lcF9uYW1lXyR7a2V5fWApO1xuXHR9XG5cblx0c3RhdGljIGdldEZ1c2hpVGFza2Rlc2NDb250ZW50KGtpbmQ6IHN0cmluZyB8IG51bWJlciwgLi4uYXJncykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBmdXNoaV90YXNrZGVzY19jb250ZW50XyR7a2luZH1gLCAuLi5hcmdzKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRGdXNoaVRhc2tkZXNjTmFtZShraW5kOiBzdHJpbmcgfCBudW1iZXIsIC4uLmFyZ3MpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgZnVzaGlfdGFza2Rlc2NfbmFtZV8ke2tpbmR9YCwgLi4uYXJncyk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0R3VpZGVJbmZvUGFyYW0oaWQ6IHN0cmluZyB8IG51bWJlcik6IGFueVtdIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZ0FycihgZ3VpZGVfaW5mb19wcmFtXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0UHZlSW5mb05hbWUoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBwdmVfaW5mb19uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0SmlueGl1QnlUekRlc2ModHppZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGppbnhpdV9pbmZvX2Rlc2NfJHt0emlkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldEppbnhpdUJ5VHpOYW1lKHR6aWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBqaW54aXVfaW5mb190ek5hbWUke3R6aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0WWl4aWFuZ0luZm9EZXNjKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgeWl4aWFuZ19pbmZvX2Rlc2NfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRZaXhpYW5nSW5mb05hbWUoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGB5aXhpYW5nX2luZm9fbmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldFlpeGlhbmdJbmZvU291cmNlKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgeWl4aWFuZ19pbmZvX3NvdXJjZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldExpdWRhb0luZm9OYW1lKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgbGl1ZGFvX2luZm9fbmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldExvbmdnb25nSmlhb2Z1TmFtZShpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGxvbmdnb25nX2ppYW9mdV9uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RG9uZ3RpYW5QdmR0TmFtZShpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGRvbmd0aWFuX3B2ZHRfbmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldEVxdWlwUGlmdWdldERlc2MoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBlcXVpcF9waWZ1X2dldERlc2NfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREb25ndGlhbkNhck5hbWUoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBkb25ndGlhbl9jYXJfbmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldERvbmd0aWFuWGxMdk5hbWUodHlwZTogbnVtYmVyIHwgc3RyaW5nLCBpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGRvbmd0aWFuX3hsTHZfbmFtZV8ke3R5cGV9XyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0UHZlSmluZ3lpbmdOYW1lKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgcHZlX2ppbmd5aW5nX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRQdndUeXBlTmFtZShpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHB2d190eXBlX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRQdndNb25zdGVyTmFtZShpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHB2d19tb25zdGVyX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRSZWRkb3RJbmZvTmFtZShpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHJlZGRvdF9pbmZvX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRTaGVuZ3FpSW5mb05hbWUoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBzaGVuZ3FpX2luZm9fbmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldFNoZW5ncWlJbmZvRGVzYyhpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHNoZW5ncWlfaW5mb19kZXNjXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0U2hlbmdxaUluZm9Ta2lsbERlc2MoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBzaGVuZ3FpX2luZm9fc2tpbGxEZXNjXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0U2hlbmdxaUluZm9DaGlwTmFtZShpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHNoZW5ncWlfaW5mb19jaGlwTmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldFNoZW5ncWlJbmZvQ2hpcERlc2MoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBzaGVuZ3FpX2luZm9fY2hpcERlc2NfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRTaG9wQ29pbk5hbWUoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBzaG9wX2NvaW5fbmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldFNob3BEaWFtb25kTmFtZShpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHNob3BfZGlhbW9uZF9uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0U2hvcEtpbmQxMVRpdGxlKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgc2hvcF9raW5kMTFfdGl0bGVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRTdWJzY3JpYmVJbmZvQ29udGVudChpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHN1YnNjcmliZV9pbmZvX2NvbnRlbnRfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRYaWFubHZJbmZvTmFtZShpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHhpYW5sdl9pbmZvX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRNb25DbHViQm9zc05hbWUoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBtb25fY2x1YkJvc3NfbmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldEhlbHBJbmZvRGVzYyhpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGhlbHBfaW5mb19kZXNjXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0WGlhbmx2U2tpbGxfRGVzY0Rlc2MoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGB4aWFubHZfc2tpbGxfZGVzY19kZXNjXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0WGlhbmx2U2tpbGxOYW1lKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgeGlhbmx2X3NraWxsX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRYaWFudHVJbmZvTmFtZShpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0bGV0IGthaXFpQ2ZnID0gR2FtZWNmZy5rYWlxaUluZm8uZ2V0SXRlbShpZC50b1N0cmluZygpKTtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhrYWlxaUNmZy5uYW1lKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRYaWFudHVJbmZvRGVzYyhpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0bGV0IGthaXFpQ2ZnID0gR2FtZWNmZy5rYWlxaUluZm8uZ2V0SXRlbShpZC50b1N0cmluZygpKTtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhrYWlxaUNmZy5kZXNjKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRaaGFvY2FpUGluemhpcndkVGl0bGUocGluemhpOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgemhhb2NhaV9waW56aGlfcndkVGl0bGVfJHtwaW56aGl9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0Q2x1Yk1pamlOYW1lKHR5cGU6IG51bWJlciB8IHN0cmluZywgaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBjbHViX21pamlfbmFtZV8ke3R5cGV9XyR7aWR9YCk7XG5cdH1cblxuXHQvLyDlrpfpl6jml5fluJzmj4/ov7Bcblx0c3RhdGljIGdldENsdWJGbGFnRGVzYyhpZDogbnVtYmVyIHwgc3RyaW5nLCAuLi5hcmdzKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGNsdWJfZmxhZ19kZXNjXyR7aWR9YCwgYXJncyk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RmF6aGVuSmliYW5OYW1lKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgZmF6aGVuX2ppYmFuX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRCYW9zaGlJbmZvTmFtZShpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGJhb3NoaV9pbmZvX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRDaGVuZ2hhb0luZm9OYW1lKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgY2hlbmdoYW9faW5mb19uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0Q2hlbmdoYW9JbmZvRGVzYyhpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGNoZW5naGFvX2luZm9fZGVzY18ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldEVxdWlwUGlmdU5hbWUoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBlcXVpcF9waWZ1X25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRFcXVpcFBpZnVEZXNjKGlkOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgZXF1aXBfcGlmdV9kZXNjXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0QmFvc2hpSXRlbU5hbWUoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBiYW9zaGlfaXRlbV9uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0QmFvc2hpSXRlbURlc2MoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBiYW9zaGlfaXRlbV9kZXNjXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0SnVtcEluZm9OYW1lKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhganVtcF9pbmZvX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRTaG9wRnVzaGl6TmFtZShpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHNob3BfZnVzaGl6X25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRSZWRkb3RJbmZvRGVzYyhpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHJlZGRvdF9pbmZvX2Rlc2NfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRGdXNoaUppdGFuTmFtZShpZDogc3RyaW5nIHwgbnVtYmVyLCBzYXZlaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBmdXNoaV9qaXRhbl9uYW1lXyR7aWR9XyR7c2F2ZWlkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldEZ1c2hpSXRlbURlc2MoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBmdXNoaV9pdGVtX2Rlc2NfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRKaW5nZ3VhaUluZm9OYW1lKGlkOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgamluZ2d1YWlfaW5mb19uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0SmluZ2d1YWlJbmZvRGVzYyhpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGppbmdndWFpX2luZm9fZGVzY18ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldEppbmdndWFpUGluemhpTmFtZShpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGppbmdndWFpX3BpbnpoaV9uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0TGlhbnRpSmluZ2x1b05hbWUoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBsaWFudGlfamluZ2x1b19uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0TGlhbnRpVGlwb0Rlc2MoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBsaWFudGlfdGlwb19kZXNjXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0U2hvcEppbnRpYW9OYW1lKGlkOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgc2hvcF9qaW50aWFvX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRNb25YaW9uZ3Nob3VOYW1lKGlkOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgbW9uX3hpb25nc2hvdV9uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0WGlvbmdzaG91TUZEZXNjKGlkOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgeGlvbmdzaG91X01GX2Rlc2NfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRYaW9uZ3Nob3VOTE5hbWUoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGB4aW9uZ3Nob3VfTkxfbmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldFhpb25nc2hvdU5MRGVzKGlkOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgeGlvbmdzaG91X05MX2Rlc18ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldERpWmlQdUdvbmdEZXNjKGtleTogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYCR7a2V5fWApO1xuXHR9XG5cblx0Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PemBruWkqT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblx0c3RhdGljIGdldEl0ZW1Nb25leU5hbWUoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdC8vIOmBk+WFt+WQjeWtl1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBpdGVtX21vbmV5X25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRJdGVtTW9uZXlEZXNjKGlkOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHQvLyDpgZPlhbfmj4/ov7Bcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgaXRlbV9tb25leV9kZXNjXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0WmhlbkZhSW5mb05hbWUoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGB6aGVuZmFfaW5mb19uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0U2hvdUxpbmdOYW1lKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgc2hvdWxpbmdfbmFtZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldFNob3VsaW5nU2tpbGxEZXNjKGtleTogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYCR7a2V5fWApO1xuXHR9XG5cblx0c3RhdGljIGdldFNob3VsaW5nVHVKaWFuTmFtZShrZXk6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBzaG91bGluZ19qaWJhbl9uYW1lXyR7a2V5fWApO1xuXHR9XG5cblx0c3RhdGljIGdldERpemlCYXNlTmFtZShpZDogc3RyaW5nKSB7XG5cdFx0bGV0IGRpemlCYXNlID0gR2FtZWNmZy5odW9iYW5CYXNlLmdldEl0ZW0oaWQpO1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGRpemlCYXNlPy5uYW1lKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREYW95b3VCYXNlRGVzYyhpZDogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGRhb3lvdV9iYXNlX2Rlc2NfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREYW9Zb3VTa2lsbFR5cGVOYW1lKGlkOiBzdHJpbmcsIC4uLmFyZ3MpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgZGFveW91X3NraWxsVHlwZV9za2lsbE5hbWVfJHtpZH1gLCAuLi5hcmdzKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRKaW5namllU3RlcFRpdGxlKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgamluZ2ppZV9zdGVwX3RpdGxlXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0SmluZ2ppZVN0ZXBNaW5pVGl0bGUoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdGxldCB0aXRsZSA9IEkxOG4uZ2V0STE4bkxhbmcoYGppbmdqaWVfc3RlcF90aXRsZV8ke2lkfWApO1xuXHRcdGxldCBzcGxpdFRpdGxlOiBzdHJpbmdbXSA9IHRpdGxlLnNwbGl0KFwiwrdcIik7XG5cdFx0cmV0dXJuIHNwbGl0VGl0bGVbc3BsaXRUaXRsZS5sZW5ndGggLSAxXTtcblx0fVxuXG5cdHN0YXRpYyBnZXREaXppSmluZ2ppZVN0ZXBUaXRsZShwaW56aGk6IHN0cmluZywgamluZ2ppZTogc3RyaW5nKSB7XG5cdFx0bGV0IGRpemlUdVBvQ2ZnID0gR2FtZWNmZy5odW9iYW5UdXBvLmdldEl0ZW0ocGluemhpLCBqaW5namllKTtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhkaXppVHVQb0NmZy5qaW5namllKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREaXppSmluZ2ppZVN0ZXBNaW5pVGl0bGUocGluemhpOiBzdHJpbmcsIGppbmdqaWU6IHN0cmluZykge1xuXHRcdGxldCBkaXppVHVQb0NmZyA9IEdhbWVjZmcuaHVvYmFuVHVwby5nZXRJdGVtKHBpbnpoaSwgamluZ2ppZSk7XG5cdFx0bGV0IHRpdGxlID0gSTE4bi5nZXRJMThuTGFuZyhkaXppVHVQb0NmZy5qaW5namllKTtcblx0XHRsZXQgc3BsaXRUaXRsZTogc3RyaW5nW10gPSB0aXRsZS5zcGxpdChcIsK3XCIpO1xuXHRcdHJldHVybiBzcGxpdFRpdGxlW3NwbGl0VGl0bGUubGVuZ3RoIC0gMV07XG5cdH1cblxuXHRzdGF0aWMgZ2V0RGl6aUppbmdqaWVTdGVwRG91YmxlVGl0bGUocGluemhpOiBzdHJpbmcsIGppbmdqaWU6IHN0cmluZykge1xuXHRcdGxldCBkaXppVHVQb0NmZyA9IEdhbWVjZmcuaHVvYmFuVHVwby5nZXRJdGVtKHBpbnpoaSwgamluZ2ppZSk7XG5cdFx0bGV0IHRpdGxlID0gSTE4bi5nZXRJMThuTGFuZyhkaXppVHVQb0NmZy5qaW5namllKTtcblx0XHRsZXQgc3BsaXRUaXRsZTogc3RyaW5nW10gPSB0aXRsZS5zcGxpdChcIsK3XCIpO1xuXHRcdHJldHVybiBbc3BsaXRUaXRsZVswXSwgc3BsaXRUaXRsZVtzcGxpdFRpdGxlLmxlbmd0aCAtIDFdXTtcblx0fVxuXG5cdHN0YXRpYyBnZXREYURpR3VaaU5hbWUoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdC8vIOWPpOWtl+WQjeWtl1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBkYWRpZ3V6aV9pbmZvX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREYURpR3VaaUJ1V2VpTmFtZShpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0Ly8g5Y+k5a2X6YOo5L2N5ZCN5a2XXG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGRhZGlndXppX2luZm9fYnV3ZWlfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREYURpR3VaaVR5cGVOYW1lKGlkOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHQvLyDlj6TlrZfnsbvlnovlkI3lrZco54G16ISJKVxuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBkYWRpZ3V6aV90eXBlX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREYURpR3VaaVNodUZhTmFtZShpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0Ly8g5pyv5rOV5ZCN5a2XXG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYHNodWZhX25hbWVfZGVzJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREYURpR3VaaVNodUZhVHlwZU5hbWUoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdC8vIOacr+azleexu+Wei+WQjeWtl1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBkYWRpZ3V6aV94ZmluZm9fdHlwZV8ke2lkfWApO1xuXHR9XG5cblx0c3RhdGljIGdldERhRGlHdVppU2ZpbmZvRGVzYyhpZDogc3RyaW5nKSB7XG5cdFx0Ly8g5pyv5rOV5oqA6IO95o+P6L+wXG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoaWQpO1xuXHR9XG5cblx0c3RhdGljIGdldERhRGlHdVppWGZ0ak5hbWUoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdC8vIOWbvumJtOWQjeWtl1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBkYWRpZ3V6aV94ZnRqX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREYURpR3VaaU1pbmd3ZW5OYW1lKGlkOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHQvLyDpk63mloflkI3lrZdcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgZGFkaWd1emlfbWluZ3dlbl9uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RGFEaUd1WmlMaW5nbWFpRGVzYyhpZDogbnVtYmVyIHwgc3RyaW5nLCBjb3VudDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0Ly8g54G16ISJ5o+P6L+wXG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGRhZGlndXppX2xpbmdtYWlfZGVzY18ke2lkfV8ke2NvdW50fWApO1xuXHR9XG5cblx0c3RhdGljIGdldERhb1dlblR6TmFtZShpZDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0Ly8g6YGT57q55aWX6KOF5ZCN5a2XXG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYGRhb3dlbl90el9pbmZvX25hbWVfJHtpZH1gKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREYW9XZW5Cd05hbWUoaWQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdC8vIOmBk+e6uemDqOS9jeWQjeWtl1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBkYW93ZW5fc2xvdF9uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RGFvV2VuVHpEZXNjKGlkOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHQvLyDpgZPnurnlpZfoo4Xmj4/ov7Bcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgZGFvd2VuX3NraWxsX2RlcyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0VXNlckVwTmFtZShrZXk6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdC8vIOWxnuaAp+WQjeWtl1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGB1c2VyX2VwX25hbWVfJHtrZXl9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0U2tpbk5hbWUoa2V5OiBzdHJpbmcgfCBudW1iZXIpIHtcblx0XHQvLyDnmq7ogqTlkI3lrZdcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhgc2tpbl9za2luX25hbWVfJHtrZXl9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RGlaaVR1Smlhbk5hbWUoaWQ6IHN0cmluZyB8IG51bWJlcikge1xuXHRcdC8vIOWbvumJtOWQjeWtl1xuXHRcdHJldHVybiBJMThuLmdldEkxOG5MYW5nKGBkaXppX3R1amlhbl9uYW1lXyR7aWR9YCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RG91RmFOcGNOYW1lKGlkOiBzdHJpbmcgfCBudW1iZXIsIG5hbWU6IHN0cmluZykge1xuXHRcdGlmIChpZC50b1N0cmluZygpLmxlbmd0aCA8IDYpLy9OUEPor7vor63oqIDooahcblx0XHR7XG5cdFx0XHRsZXQgbnBjTmFtZSA9IEkxOG4uZ2V0STE4bkxhbmcoYGRvdWZhX25wY19uYW1lXyR7aWR9YCk7XG5cdFx0XHRyZXR1cm4gbnBjTmFtZTtcblx0XHR9XG5cdFx0cmV0dXJuIG5hbWU7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RG91THVvTnBjTmFtZShpZDogc3RyaW5nIHwgbnVtYmVyLCBuYW1lOiBzdHJpbmcpIHtcblx0XHRpZiAoaWQudG9TdHJpbmcoKS5sZW5ndGggPCA2KS8vTlBD6K+76K+t6KiA6KGoXG5cdFx0e1xuXHRcdFx0bGV0IG5wY0NmZyA9IEdhbWVjZmcuZG91THVvTnBjLmdldEl0ZW0oaWQudG9TdHJpbmcoKSk7XG5cdFx0XHRsZXQgbnBjTmFtZSA9IEkxOG4uZ2V0STE4bkxhbmcobnBjQ2ZnPy5uYW1lKTtcblx0XHRcdHJldHVybiBucGNOYW1lO1xuXHRcdH1cblx0XHRyZXR1cm4gbmFtZTtcblx0fVxuXG5cdHN0YXRpYyBnZXREb3VMdW9OcGNTZXJ2ZXIoaWQ6IHN0cmluZyB8IG51bWJlciwgbmFtZTogc3RyaW5nKSB7XG5cdFx0aWYgKGlkLnRvU3RyaW5nKCkubGVuZ3RoIDwgNikvL05QQ+ivu+ivreiogOihqFxuXHRcdHtcblx0XHRcdGxldCBucGNDZmcgPSBHYW1lY2ZnLmRvdUx1b05wYy5nZXRJdGVtKGlkLnRvU3RyaW5nKCkpO1xuXHRcdFx0bGV0IG5wY05hbWUgPSBJMThuLmdldEkxOG5MYW5nKG5wY0NmZz8uc2V2bmFtZSk7XG5cdFx0XHRyZXR1cm4gbnBjTmFtZTtcblx0XHR9XG5cdFx0cmV0dXJuIG5hbWU7XG5cdH1cblxuXHRzdGF0aWMgZ2V0WWFvVGlhbk5wY05hbWUoaWQ6IHN0cmluZyB8IG51bWJlciwgbmFtZTogc3RyaW5nKSB7XG5cdFx0aWYgKGlkLnRvU3RyaW5nKCkubGVuZ3RoIDwgNikvL05QQ+ivu+ivreiogOihqFxuXHRcdHtcblx0XHRcdGxldCBucGNOYW1lID0gSTE4bi5nZXRJMThuTGFuZyhuYW1lKTtcblx0XHRcdHJldHVybiBucGNOYW1lO1xuXHRcdH1cblx0XHRyZXR1cm4gbmFtZTtcblx0fVxuXG5cdHN0YXRpYyBnZXRKaW5namllU3RlcFRpdGxlQnlLZXkoa2V5OiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gSTE4bi5nZXRJMThuTGFuZyhrZXkpO1xuXHR9XG5cblx0c3RhdGljIGdldENuTnVtKGtleTogc3RyaW5nIHwgbnVtYmVyKSB7XG5cdFx0Ly8g5Lit5paH5pWw5a2X5LiA5Yiw5Y2BXG5cdFx0cmV0dXJuIEkxOG4uZ2V0STE4bkxhbmcoYG51bWJlcl8ke2tleX1gKTtcblx0fVxufVxuIl19
|