PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo/dist/src/v2
Просмотр файла: coinFactory.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.GlobalCoinFactory = void 0;
exports.registerCoinConstructors = registerCoinConstructors;
exports.getCoinConstructor = getCoinConstructor;
exports.getTokenConstructor = getTokenConstructor;
/**
* @prettier
*/
const sdk_coin_ada_1 = require("@bitgo/sdk-coin-ada");
const sdk_coin_algo_1 = require("@bitgo/sdk-coin-algo");
const sdk_coin_bcha_1 = require("@bitgo/sdk-coin-bcha");
const sdk_coin_hbar_1 = require("@bitgo/sdk-coin-hbar");
const sdk_coin_near_1 = require("@bitgo/sdk-coin-near");
const sdk_coin_sol_1 = require("@bitgo/sdk-coin-sol");
const sdk_coin_trx_1 = require("@bitgo/sdk-coin-trx");
const sdk_core_1 = require("@bitgo/sdk-core");
const sdk_coin_evm_1 = require("@bitgo/sdk-coin-evm");
const statics_1 = require("@bitgo/statics");
const coins_1 = require("./coins");
function registerCoinConstructors(coinFactory, coinMap = statics_1.coins) {
coinFactory.register('ada', coins_1.Ada.createInstance);
coinFactory.register('algo', coins_1.Algo.createInstance);
coinFactory.register('apechain', coins_1.Apechain.createInstance);
coinFactory.register('apt', coins_1.Apt.createInstance);
coinFactory.register('arbeth', coins_1.Arbeth.createInstance);
coinFactory.register('asi', coins_1.Asi.createInstance);
coinFactory.register('atom', coins_1.Atom.createInstance);
coinFactory.register('avaxc', coins_1.AvaxC.createInstance);
coinFactory.register('avaxp', coins_1.AvaxP.createInstance);
coinFactory.register('baby', coins_1.Baby.createInstance);
coinFactory.register('bch', coins_1.Bch.createInstance);
coinFactory.register('bcha', sdk_coin_bcha_1.Bcha.createInstance);
coinFactory.register('bera', coins_1.Bera.createInstance);
coinFactory.register('bld', coins_1.Bld.createInstance);
coinFactory.register('bsc', coins_1.Bsc.createInstance);
coinFactory.register('bsv', coins_1.Bsv.createInstance);
coinFactory.register('btc', coins_1.Btc.createInstance);
coinFactory.register('btg', coins_1.Btg.createInstance);
coinFactory.register('celo', coins_1.Celo.createInstance);
coinFactory.register('coredao', coins_1.Coredao.createInstance);
coinFactory.register('coreum', coins_1.Coreum.createInstance);
coinFactory.register('cronos', coins_1.Cronos.createInstance);
coinFactory.register('cspr', coins_1.Cspr.createInstance);
coinFactory.register('dash', coins_1.Dash.createInstance);
coinFactory.register('doge', coins_1.Doge.createInstance);
coinFactory.register('dot', coins_1.Dot.createInstance);
coinFactory.register('eos', coins_1.Eos.createInstance);
coinFactory.register('etc', coins_1.Etc.createInstance);
coinFactory.register('eth', coins_1.Eth.createInstance);
coinFactory.register('ethw', coins_1.Ethw.createInstance);
coinFactory.register('baseeth', coins_1.EthLikeCoin.createInstance);
coinFactory.register('tbaseeth', coins_1.TethLikeCoin.createInstance);
coinFactory.register('fiataed', coins_1.FiatAED.createInstance);
coinFactory.register('fiateur', coins_1.FiatEur.createInstance);
coinFactory.register('fiatgbp', coins_1.FiatGBP.createInstance);
coinFactory.register('fiatsgd', coins_1.FiatSGD.createInstance);
coinFactory.register('fiatusd', coins_1.FiatUsd.createInstance);
coinFactory.register('flr', coins_1.Flr.createInstance);
coinFactory.register('gteth', coins_1.Gteth.createInstance);
coinFactory.register('hash', coins_1.Hash.createInstance);
coinFactory.register('hbar', coins_1.Hbar.createInstance);
coinFactory.register('hteth', coins_1.Hteth.createInstance);
coinFactory.register('lnbtc', coins_1.Lnbtc.createInstance);
coinFactory.register('ltc', coins_1.Ltc.createInstance);
coinFactory.register('mon', coins_1.Mon.createInstance);
coinFactory.register('mantra', coins_1.Mantra.createInstance);
coinFactory.register('icp', coins_1.Icp.createInstance);
coinFactory.register('initia', coins_1.Initia.createInstance);
coinFactory.register('injective', coins_1.Injective.createInstance);
coinFactory.register('iota', coins_1.Iota.createInstance);
coinFactory.register('islm', coins_1.Islm.createInstance);
coinFactory.register('near', sdk_coin_near_1.Near.createInstance);
coinFactory.register('oas', coins_1.Oas.createInstance);
coinFactory.register('ofc', coins_1.Ofc.createInstance);
coinFactory.register('opeth', coins_1.Opeth.createInstance);
coinFactory.register('osmo', coins_1.Osmo.createInstance);
coinFactory.register('polygon', coins_1.Polygon.createInstance);
coinFactory.register('polyx', coins_1.Polyx.createInstance);
coinFactory.register('rbtc', coins_1.Rbtc.createInstance);
coinFactory.register('thorchain:rune', coins_1.Rune.createInstance);
coinFactory.register('sei', coins_1.Sei.createInstance);
coinFactory.register('sgb', coins_1.Sgb.createInstance);
coinFactory.register('sol', coins_1.Sol.createInstance);
coinFactory.register('soneium', coins_1.Soneium.createInstance);
coinFactory.register('stx', coins_1.Stx.createInstance);
coinFactory.register('sui', coins_1.Sui.createInstance);
coinFactory.register('susd', coins_1.Susd.createInstance);
coinFactory.register('tao', coins_1.Tao.createInstance);
coinFactory.register('tia', coins_1.Tia.createInstance);
coinFactory.register('ton', coins_1.Ton.createInstance);
coinFactory.register('talgo', coins_1.Talgo.createInstance);
coinFactory.register('tapechain', coins_1.Tapechain.createInstance);
coinFactory.register('tapt', coins_1.Tapt.createInstance);
coinFactory.register('tarbeth', coins_1.Tarbeth.createInstance);
coinFactory.register('tada', coins_1.Tada.createInstance);
coinFactory.register('tasi', coins_1.Tasi.createInstance);
coinFactory.register('tatom', coins_1.Tatom.createInstance);
coinFactory.register('tavaxc', coins_1.TavaxC.createInstance);
coinFactory.register('tavaxp', coins_1.TavaxP.createInstance);
coinFactory.register('tbaby', coins_1.Tbaby.createInstance);
coinFactory.register('tbch', coins_1.Tbch.createInstance);
coinFactory.register('tbcha', sdk_coin_bcha_1.Tbcha.createInstance);
coinFactory.register('tbera', coins_1.Tbera.createInstance);
coinFactory.register('tbld', coins_1.Tbld.createInstance);
coinFactory.register('tbsc', coins_1.Tbsc.createInstance);
coinFactory.register('tbsv', coins_1.Tbsv.createInstance);
coinFactory.register('tbtc', coins_1.Tbtc.createInstance);
coinFactory.register('tbtcsig', coins_1.Tbtcsig.createInstance);
coinFactory.register('tbtc4', coins_1.Tbtc4.createInstance);
coinFactory.register('tbtcbgsig', coins_1.Tbtcbgsig.createInstance);
coinFactory.register('tcelo', coins_1.Tcelo.createInstance);
coinFactory.register('tcoredao', coins_1.Tcoredao.createInstance);
coinFactory.register('tcoreum', coins_1.Tcoreum.createInstance);
coinFactory.register('tcronos', coins_1.Tcronos.createInstance);
coinFactory.register('tcspr', coins_1.Tcspr.createInstance);
coinFactory.register('tdash', coins_1.Tdash.createInstance);
coinFactory.register('tdoge', coins_1.Tdoge.createInstance);
coinFactory.register('tdot', coins_1.Tdot.createInstance);
coinFactory.register('teos', coins_1.Teos.createInstance);
coinFactory.register('tetc', coins_1.Tetc.createInstance);
coinFactory.register('teth', coins_1.Teth.createInstance);
coinFactory.register('tfiataed', coins_1.TfiatAED.createInstance);
coinFactory.register('tfiateur', coins_1.TfiatEur.createInstance);
coinFactory.register('tfiatgbp', coins_1.TfiatGBP.createInstance);
coinFactory.register('tfiatsgd', coins_1.TfiatSGD.createInstance);
coinFactory.register('tfiatusd', coins_1.TfiatUsd.createInstance);
coinFactory.register('tflr', coins_1.Tflr.createInstance);
coinFactory.register('tmon', coins_1.Tmon.createInstance);
coinFactory.register('thash', coins_1.Thash.createInstance);
coinFactory.register('thbar', coins_1.Thbar.createInstance);
coinFactory.register('ticp', coins_1.Ticp.createInstance);
coinFactory.register('tinitia', coins_1.Tinitia.createInstance);
coinFactory.register('tinjective', coins_1.Tinjective.createInstance);
coinFactory.register('tiota', coins_1.Iota.createInstance);
coinFactory.register('tislm', coins_1.Tislm.createInstance);
coinFactory.register('tlnbtc', coins_1.Tlnbtc.createInstance);
coinFactory.register('tltc', coins_1.Tltc.createInstance);
coinFactory.register('tmantra', coins_1.Tmantra.createInstance);
coinFactory.register('tnear', sdk_coin_near_1.TNear.createInstance);
coinFactory.register('toas', coins_1.Toas.createInstance);
coinFactory.register('topeth', coins_1.Topeth.createInstance);
coinFactory.register('tosmo', coins_1.Tosmo.createInstance);
coinFactory.register('tpolygon', coins_1.Tpolygon.createInstance);
coinFactory.register('tpolyx', coins_1.Tpolyx.createInstance);
coinFactory.register('trbtc', coins_1.Trbtc.createInstance);
coinFactory.register('tsgb', coins_1.Tsgb.createInstance);
coinFactory.register('tthorchain:rune', coins_1.Trune.createInstance);
coinFactory.register('trx', coins_1.Trx.createInstance);
coinFactory.register('tsei', coins_1.Tsei.createInstance);
coinFactory.register('tsol', coins_1.Tsol.createInstance);
coinFactory.register('tsoneium', coins_1.Tsoneium.createInstance);
coinFactory.register('tstx', coins_1.Tstx.createInstance);
coinFactory.register('tstt', coins_1.Tstt.createInstance);
coinFactory.register('tsui', coins_1.Tsui.createInstance);
coinFactory.register('tsusd', coins_1.Tsusd.createInstance);
coinFactory.register('ttao', coins_1.Ttao.createInstance);
coinFactory.register('ttia', coins_1.Ttia.createInstance);
coinFactory.register('tton', coins_1.Tton.createInstance);
coinFactory.register('ttrx', coins_1.Ttrx.createInstance);
coinFactory.register('tvet', coins_1.Tvet.createInstance);
coinFactory.register('txdc', coins_1.Txdc.createInstance);
coinFactory.register('txlm', coins_1.Txlm.createInstance);
coinFactory.register('txrp', coins_1.Txrp.createInstance);
coinFactory.register('txtz', coins_1.Txtz.createInstance);
coinFactory.register('tzec', coins_1.Tzec.createInstance);
coinFactory.register('tzeta', coins_1.Tzeta.createInstance);
coinFactory.register('tzketh', coins_1.Tzketh.createInstance);
coinFactory.register('twemix', coins_1.Twemix.createInstance);
coinFactory.register('tworld', coins_1.Tworld.createInstance);
coinFactory.register('vet', coins_1.Vet.createInstance);
coinFactory.register('xdc', coins_1.Xdc.createInstance);
coinFactory.register('xlm', coins_1.Xlm.createInstance);
coinFactory.register('xrp', coins_1.Xrp.createInstance);
coinFactory.register('xtz', coins_1.Xtz.createInstance);
coinFactory.register('wemix', coins_1.Wemix.createInstance);
coinFactory.register('world', coins_1.World.createInstance);
coinFactory.register('zec', coins_1.Zec.createInstance);
coinFactory.register('zeta', coins_1.Zeta.createInstance);
coinFactory.register('zketh', coins_1.Zketh.createInstance);
statics_1.coins
.filter((coin) => coin.features.includes(statics_1.CoinFeature.SHARED_EVM_SDK))
.forEach((coin) => {
coinFactory.register(coin.name, coins_1.EvmCoin.createInstance);
});
statics_1.coins
.filter((coin) => coin.features.includes(statics_1.CoinFeature.SHARED_COSMOS_SDK))
.forEach((coin) => {
coinFactory.register(coin.name, coins_1.CosmosSharedCoin.createInstance);
});
const tokens = (0, statics_1.getFormattedTokens)(coinMap);
coins_1.Erc20Token.createTokenConstructors([...tokens.bitcoin.eth.tokens, ...tokens.testnet.eth.tokens]).forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
coins_1.Erc721Token.createTokenConstructors([...tokens.bitcoin.eth.nfts, ...tokens.testnet.eth.nfts]).forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
coins_1.StellarToken.createTokenConstructors([...tokens.bitcoin.xlm.tokens, ...tokens.testnet.xlm.tokens]).forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
for (const ofcToken of [...tokens.bitcoin.ofc.tokens, ...tokens.testnet.ofc.tokens]) {
const tokenConstructor = coins_1.OfcToken.createTokenConstructor(ofcToken);
coinFactory.register(ofcToken.type, tokenConstructor);
}
coins_1.CeloToken.createTokenConstructors([...tokens.bitcoin.celo.tokens, ...tokens.testnet.celo.tokens]).forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
coins_1.BscToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
coins_1.EosToken.createTokenConstructors([...tokens.bitcoin.eos.tokens, ...tokens.testnet.eos.tokens]).forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
sdk_coin_algo_1.AlgoToken.createTokenConstructors([...tokens.bitcoin.algo.tokens, ...tokens.testnet.algo.tokens]).forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
coins_1.AvaxCToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
coins_1.PolygonToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
coins_1.SoneiumToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
coins_1.ArbethToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
coins_1.OpethToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
coins_1.ZkethToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
coins_1.BeraToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
coins_1.CoredaoToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
coins_1.WorldToken.createTokenConstructors().forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
sdk_coin_sol_1.SolToken.createTokenConstructors([...tokens.bitcoin.sol.tokens, ...tokens.testnet.sol.tokens]).forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
sdk_coin_hbar_1.HbarToken.createTokenConstructors([...tokens.bitcoin.hbar.tokens, ...tokens.testnet.hbar.tokens]).forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
sdk_coin_trx_1.TrxToken.createTokenConstructors([...tokens.bitcoin.trx.tokens, ...tokens.testnet.trx.tokens]).forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
sdk_coin_ada_1.AdaToken.createTokenConstructors([...tokens.bitcoin.ada.tokens, ...tokens.testnet.ada.tokens]).forEach(({ name, coinConstructor }) => coinFactory.register(name, coinConstructor));
coins_1.SuiToken.createTokenConstructors([...tokens.bitcoin.sui.tokens, ...tokens.testnet.sui.tokens]).forEach(({ name, coinConstructor }) => coinFactory.register(name, coinConstructor));
coins_1.TaoToken.createTokenConstructors([...tokens.bitcoin.tao.tokens, ...tokens.testnet.tao.tokens]).forEach(({ name, coinConstructor }) => coinFactory.register(name, coinConstructor));
coins_1.PolyxToken.createTokenConstructors([...tokens.bitcoin.polyx.tokens, ...tokens.testnet.polyx.tokens]).forEach(({ name, coinConstructor }) => coinFactory.register(name, coinConstructor));
coins_1.XrpToken.createTokenConstructors([...tokens.bitcoin.xrp.tokens, ...tokens.testnet.xrp.tokens]).forEach(({ name, coinConstructor }) => coinFactory.register(name, coinConstructor));
coins_1.AptToken.createTokenConstructors([...tokens.bitcoin.apt.tokens, ...tokens.testnet.apt.tokens]).forEach(({ name, coinConstructor }) => coinFactory.register(name, coinConstructor));
coins_1.Sip10Token.createTokenConstructors([...tokens.bitcoin.stx.tokens, ...tokens.testnet.stx.tokens]).forEach(({ name, coinConstructor }) => coinFactory.register(name, coinConstructor));
sdk_coin_near_1.Nep141Token.createTokenConstructors([...tokens.bitcoin.near.tokens, ...tokens.testnet.near.tokens]).forEach(({ name, coinConstructor }) => coinFactory.register(name, coinConstructor));
coins_1.HashToken.createTokenConstructors([...tokens.bitcoin.cosmos.tokens, ...tokens.testnet.cosmos.tokens]).forEach(({ name, coinConstructor }) => coinFactory.register(name, coinConstructor));
coins_1.VetToken.createTokenConstructors().forEach(({ name, coinConstructor }) => coinFactory.register(name, coinConstructor));
// Generic ERC20 token registration for coins with SUPPORTS_ERC20 feature
statics_1.coins
.filter((coin) => coin.features.includes(statics_1.CoinFeature.SUPPORTS_ERC20) && !coin.isToken)
.forEach((coin) => {
const coinNames = {
Mainnet: `${coin.name}`,
Testnet: `t${coin.name}`,
};
sdk_coin_evm_1.EthLikeErc20Token.createTokenConstructors(coinNames).forEach(({ name, coinConstructor }) => {
coinFactory.register(name, coinConstructor);
});
});
}
function getCoinConstructor(coinName) {
const evmCoins = statics_1.coins.filter((coin) => coin.features.includes(statics_1.CoinFeature.SHARED_EVM_SDK));
const cosmosSharedCoins = statics_1.coins.filter((coin) => coin.features.includes(statics_1.CoinFeature.SHARED_COSMOS_SDK));
if (evmCoins.has(coinName)) {
return coins_1.EvmCoin.createInstance;
}
if (cosmosSharedCoins.has(coinName)) {
return coins_1.CosmosSharedCoin.createInstance;
}
switch (coinName) {
case 'ada':
return coins_1.Ada.createInstance;
case 'algo':
return coins_1.Algo.createInstance;
case 'apechain':
return coins_1.Apechain.createInstance;
case 'apt':
return coins_1.Apt.createInstance;
case 'arbeth':
return coins_1.Arbeth.createInstance;
case 'asi':
return coins_1.Asi.createInstance;
case 'atom':
return coins_1.Atom.createInstance;
case 'avaxc':
return coins_1.AvaxC.createInstance;
case 'avaxp':
return coins_1.AvaxP.createInstance;
case 'baby':
return coins_1.Baby.createInstance;
case 'bch':
return coins_1.Bch.createInstance;
case 'bcha':
return sdk_coin_bcha_1.Bcha.createInstance;
case 'bera':
return coins_1.Bera.createInstance;
case 'bld':
return coins_1.Bld.createInstance;
case 'bsc':
return coins_1.Bsc.createInstance;
case 'bsv':
return coins_1.Bsv.createInstance;
case 'btc':
return coins_1.Btc.createInstance;
case 'btg':
return coins_1.Btg.createInstance;
case 'celo':
return coins_1.Celo.createInstance;
case 'coredao':
return coins_1.Coredao.createInstance;
case 'coreum':
return coins_1.Coreum.createInstance;
case 'cronos':
return coins_1.Cronos.createInstance;
case 'cspr':
return coins_1.Cspr.createInstance;
case 'dash':
return coins_1.Dash.createInstance;
case 'doge':
return coins_1.Doge.createInstance;
case 'dot':
return coins_1.Dot.createInstance;
case 'eos':
return coins_1.Eos.createInstance;
case 'etc':
return coins_1.Etc.createInstance;
case 'eth':
return coins_1.Eth.createInstance;
case 'ethw':
return coins_1.Ethw.createInstance;
case 'baseeth':
return coins_1.EthLikeCoin.createInstance;
case 'tbaseeth':
return coins_1.TethLikeCoin.createInstance;
case 'fiataed':
return coins_1.FiatAED.createInstance;
case 'fiateur':
return coins_1.FiatEur.createInstance;
case 'fiatgbp':
return coins_1.FiatGBP.createInstance;
case 'fiatsgd':
return coins_1.FiatSGD.createInstance;
case 'fiatusd':
return coins_1.FiatUsd.createInstance;
case 'flr':
return coins_1.Flr.createInstance;
case 'gteth':
return coins_1.Gteth.createInstance;
case 'hash':
return coins_1.Hash.createInstance;
case 'hbar':
return coins_1.Hbar.createInstance;
case 'hteth':
return coins_1.Hteth.createInstance;
case 'lnbtc':
return coins_1.Lnbtc.createInstance;
case 'ltc':
return coins_1.Ltc.createInstance;
case 'mon':
return coins_1.Mon.createInstance;
case 'mantra':
return coins_1.Mantra.createInstance;
case 'icp':
return coins_1.Icp.createInstance;
case 'initia':
return coins_1.Initia.createInstance;
case 'injective':
return coins_1.Injective.createInstance;
case 'islm':
return coins_1.Islm.createInstance;
case 'near':
return sdk_coin_near_1.Near.createInstance;
case 'oas':
return coins_1.Oas.createInstance;
case 'ofc':
return coins_1.Ofc.createInstance;
case 'opeth':
return coins_1.Opeth.createInstance;
case 'osmo':
return coins_1.Osmo.createInstance;
case 'polygon':
return coins_1.Polygon.createInstance;
case 'polyx':
return coins_1.Polyx.createInstance;
case 'rbtc':
return coins_1.Rbtc.createInstance;
case 'thorchain:rune':
return coins_1.Rune.createInstance;
case 'sei':
return coins_1.Sei.createInstance;
case 'sgb':
return coins_1.Sgb.createInstance;
case 'sol':
return coins_1.Sol.createInstance;
case 'soneium':
return coins_1.Soneium.createInstance;
case 'stx':
return coins_1.Stx.createInstance;
case 'sui':
return coins_1.Sui.createInstance;
case 'susd':
return coins_1.Susd.createInstance;
case 'tao':
return coins_1.Tao.createInstance;
case 'tia':
return coins_1.Tia.createInstance;
case 'ton':
return coins_1.Ton.createInstance;
case 'talgo':
return coins_1.Talgo.createInstance;
case 'tapechain':
return coins_1.Tapechain.createInstance;
case 'tapt':
return coins_1.Tapt.createInstance;
case 'tarbeth':
return coins_1.Tarbeth.createInstance;
case 'tada':
return coins_1.Tada.createInstance;
case 'tasi':
return coins_1.Tasi.createInstance;
case 'tatom':
return coins_1.Tatom.createInstance;
case 'tavaxc':
return coins_1.TavaxC.createInstance;
case 'tavaxp':
return coins_1.TavaxP.createInstance;
case 'tbaby':
return coins_1.Tbaby.createInstance;
case 'tbch':
return coins_1.Tbch.createInstance;
case 'tbcha':
return sdk_coin_bcha_1.Tbcha.createInstance;
case 'tbera':
return coins_1.Tbera.createInstance;
case 'tbld':
return coins_1.Tbld.createInstance;
case 'tbsc':
return coins_1.Tbsc.createInstance;
case 'tbsv':
return coins_1.Tbsv.createInstance;
case 'tbtc':
return coins_1.Tbtc.createInstance;
case 'tbtcsig':
return coins_1.Tbtcsig.createInstance;
case 'tbtc4':
return coins_1.Tbtc4.createInstance;
case 'tbtcbgsig':
return coins_1.Tbtcbgsig.createInstance;
case 'tcelo':
return coins_1.Tcelo.createInstance;
case 'tcoredao':
return coins_1.Tcoredao.createInstance;
case 'tcoreum':
return coins_1.Tcoreum.createInstance;
case 'tcronos':
return coins_1.Tcronos.createInstance;
case 'tcspr':
return coins_1.Tcspr.createInstance;
case 'tdash':
return coins_1.Tdash.createInstance;
case 'tdoge':
return coins_1.Tdoge.createInstance;
case 'tdot':
return coins_1.Tdot.createInstance;
case 'teos':
return coins_1.Teos.createInstance;
case 'tetc':
return coins_1.Tetc.createInstance;
case 'teth':
return coins_1.Teth.createInstance;
case 'tfiataed':
return coins_1.TfiatAED.createInstance;
case 'tfiateur':
return coins_1.TfiatEur.createInstance;
case 'tfiatgbp':
return coins_1.TfiatGBP.createInstance;
case 'tfiatsgd':
return coins_1.TfiatSGD.createInstance;
case 'tfiatusd':
return coins_1.TfiatUsd.createInstance;
case 'tflr':
return coins_1.Tflr.createInstance;
case 'tmon':
return coins_1.Tmon.createInstance;
case 'thash':
return coins_1.Thash.createInstance;
case 'thbar':
return coins_1.Thbar.createInstance;
case 'ticp':
return coins_1.Ticp.createInstance;
case 'tinitia':
return coins_1.Tinitia.createInstance;
case 'tinjective':
return coins_1.Tinjective.createInstance;
case 'tislm':
return coins_1.Tislm.createInstance;
case 'tlnbtc':
return coins_1.Tlnbtc.createInstance;
case 'tltc':
return coins_1.Tltc.createInstance;
case 'tmantra':
return coins_1.Tmantra.createInstance;
case 'tnear':
return sdk_coin_near_1.TNear.createInstance;
case 'toas':
return coins_1.Toas.createInstance;
case 'topeth':
return coins_1.Topeth.createInstance;
case 'tosmo':
return coins_1.Tosmo.createInstance;
case 'tpolygon':
return coins_1.Tpolygon.createInstance;
case 'tpolyx':
return coins_1.Tpolyx.createInstance;
case 'trbtc':
return coins_1.Trbtc.createInstance;
case 'tsgb':
return coins_1.Tsgb.createInstance;
case 'tthorchain:rune':
return coins_1.Trune.createInstance;
case 'trx':
return coins_1.Trx.createInstance;
case 'tsei':
return coins_1.Tsei.createInstance;
case 'tsol':
return coins_1.Tsol.createInstance;
case 'tsoneium':
return coins_1.Tsoneium.createInstance;
case 'tstx':
return coins_1.Tstx.createInstance;
case 'tstt':
return coins_1.Tstt.createInstance;
case 'tsui':
return coins_1.Tsui.createInstance;
case 'tsusd':
return coins_1.Tsusd.createInstance;
case 'ttao':
return coins_1.Ttao.createInstance;
case 'ttia':
return coins_1.Ttia.createInstance;
case 'tton':
return coins_1.Tton.createInstance;
case 'ttrx':
return coins_1.Ttrx.createInstance;
case 'tvet':
return coins_1.Tvet.createInstance;
case 'txdc':
return coins_1.Txdc.createInstance;
case 'txlm':
return coins_1.Txlm.createInstance;
case 'txrp':
return coins_1.Txrp.createInstance;
case 'txtz':
return coins_1.Txtz.createInstance;
case 'tzec':
return coins_1.Tzec.createInstance;
case 'tzeta':
return coins_1.Tzeta.createInstance;
case 'tzketh':
return coins_1.Tzketh.createInstance;
case 'twemix':
return coins_1.Twemix.createInstance;
case 'tworld':
return coins_1.Tworld.createInstance;
case 'vet':
return coins_1.Vet.createInstance;
case 'xdc':
return coins_1.Xdc.createInstance;
case 'xlm':
return coins_1.Xlm.createInstance;
case 'xrp':
return coins_1.Xrp.createInstance;
case 'xtz':
return coins_1.Xtz.createInstance;
case 'wemix':
return coins_1.Wemix.createInstance;
case 'world':
return coins_1.World.createInstance;
case 'zec':
return coins_1.Zec.createInstance;
case 'zeta':
return coins_1.Zeta.createInstance;
case 'zketh':
return coins_1.Zketh.createInstance;
default:
return undefined;
}
}
function getTokenConstructor(tokenConfig) {
switch (tokenConfig.coin) {
case 'eth':
case 'hteth':
if (tokenConfig.type.includes('erc721')) {
return coins_1.Erc721Token.createTokenConstructor(tokenConfig);
}
else {
return coins_1.Erc20Token.createTokenConstructor(tokenConfig);
}
case 'xlm':
case 'txlm':
return coins_1.StellarToken.createTokenConstructor(tokenConfig);
case 'ofc':
return coins_1.OfcToken.createTokenConstructor(tokenConfig);
case 'celo':
case 'tcelo':
return coins_1.CeloToken.createTokenConstructor(tokenConfig);
case 'bsc':
case 'tbsc':
return coins_1.BscToken.createTokenConstructor(tokenConfig);
case 'eos':
case 'teos':
return coins_1.EosToken.createTokenConstructor(tokenConfig);
case 'algo':
case 'talgo':
return sdk_coin_algo_1.AlgoToken.createTokenConstructor(tokenConfig);
case 'avaxc':
case 'tavaxc':
return coins_1.AvaxCToken.createTokenConstructor(tokenConfig);
case 'polygon':
case 'tpolygon':
return coins_1.PolygonToken.createTokenConstructor(tokenConfig);
case 'soneium':
case 'tsoneium':
return coins_1.SoneiumToken.createTokenConstructor(tokenConfig);
case 'arbeth':
case 'tarbeth':
return coins_1.ArbethToken.createTokenConstructor(tokenConfig);
case 'opeth':
case 'topeth':
return coins_1.OpethToken.createTokenConstructor(tokenConfig);
case 'zketh':
case 'tzketh':
return coins_1.ZkethToken.createTokenConstructor(tokenConfig);
case 'bera':
case 'tbera':
return coins_1.BeraToken.createTokenConstructor(tokenConfig);
case 'coredao':
case 'tcoredao':
return coins_1.CoredaoToken.createTokenConstructor(tokenConfig);
case 'world':
case 'tworld':
return coins_1.WorldToken.createTokenConstructor(tokenConfig);
case 'sol':
case 'tsol':
return sdk_coin_sol_1.SolToken.createTokenConstructor(tokenConfig);
case 'hbar':
case 'thbar':
return sdk_coin_hbar_1.HbarToken.createTokenConstructor(tokenConfig);
case 'trx':
case 'ttrx':
return sdk_coin_trx_1.TrxToken.createTokenConstructor(tokenConfig);
case 'ada':
case 'tada':
return sdk_coin_ada_1.AdaToken.createTokenConstructor(tokenConfig);
case 'sui':
case 'tsui':
return coins_1.SuiToken.createTokenConstructor(tokenConfig);
case 'tao':
case 'ttao':
return coins_1.TaoToken.createTokenConstructor(tokenConfig);
case 'polyx':
case 'tpolyx':
return coins_1.PolyxToken.createTokenConstructor(tokenConfig);
case 'xrp':
case 'txrp':
return coins_1.XrpToken.createTokenConstructor(tokenConfig);
case 'apt':
case 'tapt':
return coins_1.AptToken.createTokenConstructor(tokenConfig);
case 'stx':
case 'tstx':
return coins_1.Sip10Token.createTokenConstructor(tokenConfig);
case 'near':
case 'tnear':
return sdk_coin_near_1.Nep141Token.createTokenConstructor(tokenConfig);
case 'vet':
case 'tvet':
return coins_1.VetToken.createTokenConstructor(tokenConfig);
case 'hash':
case 'thash':
return coins_1.HashToken.createTokenConstructor(tokenConfig);
default:
return undefined;
}
}
exports.GlobalCoinFactory = new sdk_core_1.CoinFactory();
registerCoinConstructors(exports.GlobalCoinFactory);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29pbkZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdjIvY29pbkZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBK05BLDREQXVVQztBQUVELGdEQXVVQztBQUVELGtEQStGQztBQWg5QkQ7O0dBRUc7QUFDSCxzREFBK0M7QUFDL0Msd0RBQWlEO0FBQ2pELHdEQUFtRDtBQUNuRCx3REFBaUQ7QUFDakQsd0RBQWdFO0FBQ2hFLHNEQUErQztBQUMvQyxzREFBK0M7QUFDL0MsOENBQStEO0FBQy9ELHNEQUF3RDtBQUN4RCw0Q0EyQndCO0FBQ3hCLG1DQXFMaUI7QUFFakIsU0FBZ0Isd0JBQXdCLENBQUMsV0FBd0IsRUFBRSxVQUFtQixlQUFLO0lBQ3pGLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNoRCxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxZQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbEQsV0FBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsZ0JBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMxRCxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsY0FBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3RELFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNoRCxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxZQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDbEQsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsYUFBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3BELFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLGFBQUssQ0FBQyxj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QUU7UUFDNUIsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDOUMsQ0FBQyxDQUNGLENBQUM7SUFFRix1QkFBUSxDQUFDLHVCQUF1QixDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDcEcsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFO1FBQzVCLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzlDLENBQUMsQ0FDRixDQUFDO0lBRUYsdUJBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3BHLENBQUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUMzRSxDQUFDO0lBRUYsZ0JBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3BHLENBQUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUMzRSxDQUFDO0lBRUYsZ0JBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3BHLENBQUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUMzRSxDQUFDO0lBRUYsa0JBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQzFHLENBQUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUMzRSxDQUFDO0lBRUYsZ0JBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3BHLENBQUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUMzRSxDQUFDO0lBRUYsZ0JBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3BHLENBQUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUMzRSxDQUFDO0lBRUYsa0JBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxD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LENBQUM7UUFDWixLQUFLLE9BQU87WUFDVixPQUFPLGlCQUFTLENBQUMsc0JBQXNCLENBQUMsV0FBZ0MsQ0FBQyxDQUFDO1FBQzVFO1lBQ0UsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztBQUNILENBQUM7QUFFWSxRQUFBLGlCQUFpQixHQUFnQixJQUFJLHNCQUFXLEVBQUUsQ0FBQztBQUVoRSx3QkFBd0IsQ0FBQyx5QkFBaUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IHsgQWRhVG9rZW4gfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tYWRhJztcbmltcG9ydCB7IEFsZ29Ub2tlbiB9IGZyb20gJ0BiaXRnby9zZGstY29pbi1hbGdvJztcbmltcG9ydCB7IEJjaGEsIFRiY2hhIH0gZnJvbSAnQGJpdGdvL3Nkay1jb2luLWJjaGEnO1xuaW1wb3J0IHsgSGJhclRva2VuIH0gZnJvbSAnQGJpdGdvL3Nkay1jb2luLWhiYXInO1xuaW1wb3J0IHsgTmVhciwgVE5lYXIsIE5lcDE0MVRva2VuIH0gZnJvbSAnQGJpdGdvL3Nkay1jb2luLW5lYXInO1xuaW1wb3J0IHsgU29sVG9rZW4gfSBmcm9tICdAYml0Z28vc2RrLWNvaW4tc29sJztcbmltcG9ydCB7IFRyeFRva2VuIH0gZnJvbSAnQGJpdGdvL3Nkay1jb2luLXRyeCc7XG5pbXBvcnQgeyBDb2luRmFjdG9yeSwgQ29pbkNvbnN0cnVjdG9yIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEV0aExpa2VFcmMyMFRva2VuIH0gZnJvbSAnQGJpdGdvL3Nkay1jb2luLWV2bSc7XG5pbXBvcnQge1xuICBDb2luTWFwLFxuICBjb2lucyxcbiAgZ2V0Rm9ybWF0dGVkVG9rZW5zLFxuICBUb2tlbkNvbmZpZyxcbiAgRXJjMjBUb2tlbkNvbmZpZyxcbiAgU3RlbGxhclRva2VuQ29uZmlnLFxuICBPZmNUb2tlbkNvbmZpZyxcbiAgQ2Vsb1Rva2VuQ29uZmlnLFxuICBFdGhMaWtlVG9rZW5Db25maWcsXG4gIEVvc1Rva2VuQ29uZmlnLFxuICBBdmF4Y1Rva2VuQ29uZmlnLFxuICBTb2xUb2tlbkNvbmZpZyxcbiAgSGJhclRva2VuQ29uZmlnLFxuICBBZGFUb2tlbkNvbmZpZyxcbiAgQWxnb1Rva2VuQ29uZmlnLFxuICBUcnhUb2tlbkNvbmZpZyxcbiAgWHJwVG9rZW5Db25maWcsXG4gIFN1aVRva2VuQ29uZmlnLFxuICBBcHRUb2tlbkNvbmZpZyxcbiAgU2lwMTBUb2tlbkNvbmZpZyxcbiAgQ29pbkZlYXR1cmUsXG4gIE5lcDE0MVRva2VuQ29uZmlnLFxuICBDb3Ntb3NUb2tlbkNvbmZpZyxcbiAgVmV0VG9rZW5Db25maWcsXG4gIFRhb1Rva2VuQ29uZmlnLFxuICBQb2x5eFRva2VuQ29uZmlnLFxufSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQge1xuICBBZGEsXG4gIEFsZ28sXG4gIEFwZWNoYWluLFxuICBBcHQsXG4gIEFwdFRva2VuLFxuICBBcmJldGgsXG4gIEFyYmV0aFRva2VuLFxuICBBc2ksXG4gIEF0b20sXG4gIEF2YXhDLFxuICBBdmF4Q1Rva2VuLFxuICBBdmF4UCxcbiAgQmFieSxcbiAgQmNoLFxuICBCZXJhLFxuICBCZXJhVG9rZW4sXG4gIEJsZCxcbiAgQnNjLFxuICBCc2NUb2tlbixcbiAgQnN2LFxuICBCdGMsXG4gIEJ0ZyxcbiAgQ2VsbyxcbiAgQ2Vsb1Rva2VuLFxuICBDb3JlZGFvLFxuICBDb3JlZGFvVG9rZW4sXG4gIENvc21vc1NoYXJlZENvaW4sXG4gIENvcmV1bSxcbiAgQ3Jvbm9zLFxuICBDc3ByLFxuICBEYXNoLFxuICBEb2dlLFxuICBEb3QsXG4gIEVvcyxcbiAgRW9zVG9rZW4sXG4gIEVyYzIwVG9rZW4sXG4gIEVyYzcyMVRva2VuLFxuICBFdGMsXG4gIEV0aCxcbiAgRXRodyxcbiAgRXRoTGlrZUNvaW4sXG4gIEV2bUNvaW4sXG4gIEZscixcbiAgSGFzaFRva2VuLFxuICBUZXRoTGlrZUNvaW4sXG4gIEZpYXRBRUQsXG4gIEZpYXRFdXIsXG4gIEZpYXRHQlAsXG4gIEZpYXRTR0QsXG4gIEZpYXRVc2QsXG4gIEd0ZXRoLFxuICBIYXNoLFxuICBIYmFyLFxuICBIdGV0aCxcbiAgSWNwLFxuICBJbml0aWEsXG4gIEluamVjdGl2ZSxcbiAgSW90YSxcbiAgSXNsbSxcbiAgTG5idGMsXG4gIEx0YyxcbiAgTW9uLFxuICBNYW50cmEsXG4gIE9mYyxcbiAgT2FzLFxuICBPZmNUb2tlbixcbiAgT3BldGgsXG4gIE9wZXRoVG9rZW4sXG4gIE9zbW8sXG4gIFBvbHlnb24sXG4gIFBvbHlnb25Ub2tlbixcbiAgUG9seXgsXG4gIFBvbHl4VG9rZW4sXG4gIFJ1bmUsXG4gIFJidGMsXG4gIFNlaSxcbiAgU2diLFxuICBTaXAxMFRva2VuLFxuICBTb2wsXG4gIFNvbmVpdW0sXG4gIFNvbmVpdW1Ub2tlbixcbiAgU3RlbGxhclRva2VuLFxuICBTdHgsXG4gIFN1aSxcbiAgU3VpVG9rZW4sXG4gIFN1c2QsXG4gIFRhbyxcbiAgVGFvVG9rZW4sXG4gIFRvbixcbiAgVGFkYSxcbiAgVGFsZ28sXG4gIFRhcGVjaGFpbixcbiAgVGFwdCxcbiAgVGFyYmV0aCxcbiAgVGFzaSxcbiAgVGF0b20sXG4gIFRhdmF4QyxcbiAgVGF2YXhQLFxuICBUYmFieSxcbiAgVGJjaCxcbiAgVGJlcmEsXG4gIFRibGQsXG4gIFRic2MsXG4gIFRic3YsXG4gIFRidGMsXG4gIFRidGNzaWcsXG4gIFRidGM0LFxuICBUYnRjYmdzaWcsXG4gIFRjZWxvLFxuICBUY29yZWRhbyxcbiAgVGNvcmV1bSxcbiAgVGNyb25vcyxcbiAgVGNzcHIsXG4gIFRkYXNoLFxuICBUZG9nZSxcbiAgVGRvdCxcbiAgVGVvcyxcbiAgVGV0YyxcbiAgVGV0aCxcbiAgVGZscixcbiAgVG1vbixcbiAgVGZpYXRBRUQsXG4gIFRmaWF0RXVyLFxuICBUZmlhdEdCUCxcbiAgVGZpYXRTR0QsXG4gIFRmaWF0VXNkLFxuICBUaGFzaCxcbiAgVGhiYXIsXG4gIFRpYSxcbiAgVGljcCxcbiAgVGluaXRpYSxcbiAgVGluamVjdGl2ZSxcbiAgVGlzbG0sXG4gIFRsbmJ0YyxcbiAgVGx0YyxcbiAgVG1hbnRyYSxcbiAgVG9hcyxcbiAgVG9zbW8sXG4gIFRvcGV0aCxcbiAgVHBvbHlnb24sXG4gIFRwb2x5eCxcbiAgVHJidGMsXG4gIFRydW5lLFxuICBUcngsXG4gIFRzZ2IsXG4gIFRzZWksXG4gIFRzb2wsXG4gIFRzb25laXVtLFxuICBUc3R4LFxuICBUc3R0LFxuICBUc3VpLFxuICBUc3VzZCxcbiAgVHdlbWl4LFxuICBUd29ybGQsXG4gIFR0YW8sXG4gIFR0aWEsXG4gIFR0b24sXG4gIFR0cngsXG4gIFR2ZXQsXG4gIFR4bG0sXG4gIFR4ZGMsXG4gIFR4cnAsXG4gIFR4dHosXG4gIFR6ZWMsXG4gIFR6ZXRhLFxuICBUemtldGgsXG4gIFZldCxcbiAgV2VtaXgsXG4gIFdvcmxkLFxuICBXb3JsZFRva2VuLFxuICBYZGMsXG4gIFhsbSxcbiAgWHJwLFxuICBYcnBUb2tlbixcbiAgWHR6LFxuICBaZWMsXG4gIFpldGEsXG4gIFprZXRoLFxuICBaa2V0aFRva2VuLFxuICBWZXRUb2tlbixcbn0gZnJvbSAnLi9jb2lucyc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckNvaW5Db25zdHJ1Y3RvcnMoY29pbkZhY3Rvcnk6IENvaW5GYWN0b3J5LCBjb2luTWFwOiBDb2luTWFwID0gY29pbnMpOiB2b2lkIHtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ2FkYScsIEFkYS5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdhbGdvJywgQWxnby5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdhcGVjaGFpbicsIEFwZWNoYWluLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ2FwdCcsIEFwdC5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdhcmJldGgnLCBBcmJldGguY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcignYXNpJywgQXNpLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ2F0b20nLCBBdG9tLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ2F2YXhjJywgQXZheEMuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcignYXZheHAnLCBBdmF4UC5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdiYWJ5JywgQmFieS5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdiY2gnLCBCY2guY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcignYmNoYScsIEJjaGEuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcignYmVyYScsIEJlcmEuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcignYmxkJywgQmxkLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ2JzYycsIEJzYy5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdic3YnLCBCc3YuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcignYnRjJywgQnRjLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ2J0ZycsIEJ0Zy5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdjZWxvJywgQ2Vsby5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdjb3JlZGFvJywgQ29yZWRhby5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdjb3JldW0nLCBDb3JldW0uY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcignY3Jvbm9zJywgQ3Jvbm9zLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ2NzcHInLCBDc3ByLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ2Rhc2gnLCBEYXNoLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ2RvZ2UnLCBEb2dlLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ2RvdCcsIERvdC5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdlb3MnLCBFb3MuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcignZXRjJywgRXRjLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ2V0aCcsIEV0aC5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdldGh3JywgRXRody5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdiYXNlZXRoJywgRXRoTGlrZUNvaW4uY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndGJhc2VldGgnLCBUZXRoTGlrZUNvaW4uY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcignZmlhdGFlZCcsIEZpYXRBRUQuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcignZmlhdGV1cicsIEZpYXRFdXIuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcignZmlhdGdicCcsIEZpYXRHQlAuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcignZmlhdHNnZCcsIEZpYXRTR0QuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcignZmlhdHVzZCcsIEZpYXRVc2QuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcignZmxyJywgRmxyLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ2d0ZXRoJywgR3RldGguY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcignaGFzaCcsIEhhc2guY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcignaGJhcicsIEhiYXIuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcignaHRldGgnLCBIdGV0aC5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdsbmJ0YycsIExuYnRjLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ2x0YycsIEx0Yy5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdtb24nLCBNb24uY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcignbWFudHJhJywgTWFudHJhLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ2ljcCcsIEljcC5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdpbml0aWEnLCBJbml0aWEuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcignaW5qZWN0aXZlJywgSW5qZWN0aXZlLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ2lvdGEnLCBJb3RhLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ2lzbG0nLCBJc2xtLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ25lYXInLCBOZWFyLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ29hcycsIE9hcy5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdvZmMnLCBPZmMuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3Rlcignb3BldGgnLCBPcGV0aC5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdvc21vJywgT3Ntby5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdwb2x5Z29uJywgUG9seWdvbi5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdwb2x5eCcsIFBvbHl4LmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3JidGMnLCBSYnRjLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3Rob3JjaGFpbjpydW5lJywgUnVuZS5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdzZWknLCBTZWkuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3Rlcignc2diJywgU2diLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3NvbCcsIFNvbC5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdzb25laXVtJywgU29uZWl1bS5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCdzdHgnLCBTdHguY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3Rlcignc3VpJywgU3VpLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3N1c2QnLCBTdXNkLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3RhbycsIFRhby5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0aWEnLCBUaWEuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndG9uJywgVG9uLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3RhbGdvJywgVGFsZ28uY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndGFwZWNoYWluJywgVGFwZWNoYWluLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3RhcHQnLCBUYXB0LmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3RhcmJldGgnLCBUYXJiZXRoLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3RhZGEnLCBUYWRhLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3Rhc2knLCBUYXNpLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3RhdG9tJywgVGF0b20uY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndGF2YXhjJywgVGF2YXhDLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3RhdmF4cCcsIFRhdmF4UC5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0YmFieScsIFRiYWJ5LmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3RiY2gnLCBUYmNoLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3RiY2hhJywgVGJjaGEuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndGJlcmEnLCBUYmVyYS5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0YmxkJywgVGJsZC5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0YnNjJywgVGJzYy5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0YnN2JywgVGJzdi5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0YnRjJywgVGJ0Yy5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0YnRjc2lnJywgVGJ0Y3NpZy5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0YnRjNCcsIFRidGM0LmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3RidGNiZ3NpZycsIFRidGNiZ3NpZy5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0Y2VsbycsIFRjZWxvLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3Rjb3JlZGFvJywgVGNvcmVkYW8uY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndGNvcmV1bScsIFRjb3JldW0uY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndGNyb25vcycsIFRjcm9ub3MuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndGNzcHInLCBUY3Nwci5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0ZGFzaCcsIFRkYXNoLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3Rkb2dlJywgVGRvZ2UuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndGRvdCcsIFRkb3QuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndGVvcycsIFRlb3MuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndGV0YycsIFRldGMuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndGV0aCcsIFRldGguY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndGZpYXRhZWQnLCBUZmlhdEFFRC5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0ZmlhdGV1cicsIFRmaWF0RXVyLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3RmaWF0Z2JwJywgVGZpYXRHQlAuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndGZpYXRzZ2QnLCBUZmlhdFNHRC5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0ZmlhdHVzZCcsIFRmaWF0VXNkLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3RmbHInLCBUZmxyLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3Rtb24nLCBUbW9uLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3RoYXNoJywgVGhhc2guY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndGhiYXInLCBUaGJhci5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0aWNwJywgVGljcC5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0aW5pdGlhJywgVGluaXRpYS5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0aW5qZWN0aXZlJywgVGluamVjdGl2ZS5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0aW90YScsIElvdGEuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndGlzbG0nLCBUaXNsbS5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0bG5idGMnLCBUbG5idGMuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndGx0YycsIFRsdGMuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndG1hbnRyYScsIFRtYW50cmEuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndG5lYXInLCBUTmVhci5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0b2FzJywgVG9hcy5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0b3BldGgnLCBUb3BldGguY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndG9zbW8nLCBUb3Ntby5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0cG9seWdvbicsIFRwb2x5Z29uLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3Rwb2x5eCcsIFRwb2x5eC5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0cmJ0YycsIFRyYnRjLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3RzZ2InLCBUc2diLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3R0aG9yY2hhaW46cnVuZScsIFRydW5lLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3RyeCcsIFRyeC5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0c2VpJywgVHNlaS5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0c29sJywgVHNvbC5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0c29uZWl1bScsIFRzb25laXVtLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3RzdHgnLCBUc3R4LmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3RzdHQnLCBUc3R0LmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3RzdWknLCBUc3VpLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3RzdXNkJywgVHN1c2QuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndHRhbycsIFR0YW8uY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndHRpYScsIFR0aWEuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndHRvbicsIFR0b24uY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndHRyeCcsIFR0cnguY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndHZldCcsIFR2ZXQuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndHhkYycsIFR4ZGMuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndHhsbScsIFR4bG0uY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndHhycCcsIFR4cnAuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndHh0eicsIFR4dHouY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndHplYycsIFR6ZWMuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndHpldGEnLCBUemV0YS5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd0emtldGgnLCBUemtldGguY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigndHdlbWl4JywgVHdlbWl4LmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3R3b3JsZCcsIFR3b3JsZC5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd2ZXQnLCBWZXQuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigneGRjJywgWGRjLmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3hsbScsIFhsbS5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd4cnAnLCBYcnAuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcigneHR6JywgWHR6LmNyZWF0ZUluc3RhbmNlKTtcbiAgY29pbkZhY3RvcnkucmVnaXN0ZXIoJ3dlbWl4JywgV2VtaXguY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3Rlcignd29ybGQnLCBXb3JsZC5jcmVhdGVJbnN0YW5jZSk7XG4gIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKCd6ZWMnLCBaZWMuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcignemV0YScsIFpldGEuY3JlYXRlSW5zdGFuY2UpO1xuICBjb2luRmFjdG9yeS5yZWdpc3RlcignemtldGgnLCBaa2V0aC5jcmVhdGVJbnN0YW5jZSk7XG5cbiAgY29pbnNcbiAgICAuZmlsdGVyKChjb2luKSA9PiBjb2luLmZlYXR1cmVzLmluY2x1ZGVzKENvaW5GZWF0dXJlLlNIQVJFRF9FVk1fU0RLKSlcbiAgICAuZm9yRWFjaCgoY29pbikgPT4ge1xuICAgICAgY29pbkZhY3RvcnkucmVnaXN0ZXIoY29pbi5uYW1lLCBFdm1Db2luLmNyZWF0ZUluc3RhbmNlKTtcbiAgICB9KTtcblxuICBjb2luc1xuICAgIC5maWx0ZXIoKGNvaW4pID0+IGNvaW4uZmVhdHVyZXMuaW5jbHVkZXMoQ29pbkZlYXR1cmUuU0hBUkVEX0NPU01PU19TREspKVxuICAgIC5mb3JFYWNoKChjb2luKSA9PiB7XG4gICAgICBjb2luRmFjdG9yeS5yZWdpc3Rlcihjb2luLm5hbWUsIENvc21vc1NoYXJlZENvaW4uY3JlYXRlSW5zdGFuY2UpO1xuICAgIH0pO1xuXG4gIGNvbnN0IHRva2VucyA9IGdldEZvcm1hdHRlZFRva2Vucyhjb2luTWFwKTtcblxuICBFcmMyMFRva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3JzKFsuLi50b2tlbnMuYml0Y29pbi5ldGgudG9rZW5zLCAuLi50b2tlbnMudGVzdG5ldC5ldGgudG9rZW5zXSkuZm9yRWFjaChcbiAgICAoeyBuYW1lLCBjb2luQ29uc3RydWN0b3IgfSkgPT4ge1xuICAgICAgY29pbkZhY3RvcnkucmVnaXN0ZXIobmFtZSwgY29pbkNvbnN0cnVjdG9yKTtcbiAgICB9XG4gICk7XG5cbiAgRXJjNzIxVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoWy4uLnRva2Vucy5iaXRjb2luLmV0aC5uZnRzLCAuLi50b2tlbnMudGVzdG5ldC5ldGgubmZ0c10pLmZvckVhY2goXG4gICAgKHsgbmFtZSwgY29pbkNvbnN0cnVjdG9yIH0pID0+IHtcbiAgICAgIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKG5hbWUsIGNvaW5Db25zdHJ1Y3Rvcik7XG4gICAgfVxuICApO1xuXG4gIFN0ZWxsYXJUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9ycyhbLi4udG9rZW5zLmJpdGNvaW4ueGxtLnRva2VucywgLi4udG9rZW5zLnRlc3RuZXQueGxtLnRva2Vuc10pLmZvckVhY2goXG4gICAgKHsgbmFtZSwgY29pbkNvbnN0cnVjdG9yIH0pID0+IHtcbiAgICAgIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKG5hbWUsIGNvaW5Db25zdHJ1Y3Rvcik7XG4gICAgfVxuICApO1xuXG4gIGZvciAoY29uc3Qgb2ZjVG9rZW4gb2YgWy4uLnRva2Vucy5iaXRjb2luLm9mYy50b2tlbnMsIC4uLnRva2Vucy50ZXN0bmV0Lm9mYy50b2tlbnNdKSB7XG4gICAgY29uc3QgdG9rZW5Db25zdHJ1Y3RvciA9IE9mY1Rva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3Iob2ZjVG9rZW4pO1xuICAgIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKG9mY1Rva2VuLnR5cGUsIHRva2VuQ29uc3RydWN0b3IpO1xuICB9XG5cbiAgQ2Vsb1Rva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3JzKFsuLi50b2tlbnMuYml0Y29pbi5jZWxvLnRva2VucywgLi4udG9rZW5zLnRlc3RuZXQuY2Vsby50b2tlbnNdKS5mb3JFYWNoKFxuICAgICh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiB7XG4gICAgICBjb2luRmFjdG9yeS5yZWdpc3RlcihuYW1lLCBjb2luQ29uc3RydWN0b3IpO1xuICAgIH1cbiAgKTtcblxuICBCc2NUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9ycygpLmZvckVhY2goKHsgbmFtZSwgY29pbkNvbnN0cnVjdG9yIH0pID0+IHtcbiAgICBjb2luRmFjdG9yeS5yZWdpc3RlcihuYW1lLCBjb2luQ29uc3RydWN0b3IpO1xuICB9KTtcblxuICBFb3NUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9ycyhbLi4udG9rZW5zLmJpdGNvaW4uZW9zLnRva2VucywgLi4udG9rZW5zLnRlc3RuZXQuZW9zLnRva2Vuc10pLmZvckVhY2goXG4gICAgKHsgbmFtZSwgY29pbkNvbnN0cnVjdG9yIH0pID0+IHtcbiAgICAgIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKG5hbWUsIGNvaW5Db25zdHJ1Y3Rvcik7XG4gICAgfVxuICApO1xuXG4gIEFsZ29Ub2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9ycyhbLi4udG9rZW5zLmJpdGNvaW4uYWxnby50b2tlbnMsIC4uLnRva2Vucy50ZXN0bmV0LmFsZ28udG9rZW5zXSkuZm9yRWFjaChcbiAgICAoeyBuYW1lLCBjb2luQ29uc3RydWN0b3IgfSkgPT4ge1xuICAgICAgY29pbkZhY3RvcnkucmVnaXN0ZXIobmFtZSwgY29pbkNvbnN0cnVjdG9yKTtcbiAgICB9XG4gICk7XG5cbiAgQXZheENUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9ycygpLmZvckVhY2goKHsgbmFtZSwgY29pbkNvbnN0cnVjdG9yIH0pID0+IHtcbiAgICBjb2luRmFjdG9yeS5yZWdpc3RlcihuYW1lLCBjb2luQ29uc3RydWN0b3IpO1xuICB9KTtcblxuICBQb2x5Z29uVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoKS5mb3JFYWNoKCh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiB7XG4gICAgY29pbkZhY3RvcnkucmVnaXN0ZXIobmFtZSwgY29pbkNvbnN0cnVjdG9yKTtcbiAgfSk7XG5cbiAgU29uZWl1bVRva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3JzKCkuZm9yRWFjaCgoeyBuYW1lLCBjb2luQ29uc3RydWN0b3IgfSkgPT4ge1xuICAgIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKG5hbWUsIGNvaW5Db25zdHJ1Y3Rvcik7XG4gIH0pO1xuXG4gIEFyYmV0aFRva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3JzKCkuZm9yRWFjaCgoeyBuYW1lLCBjb2luQ29uc3RydWN0b3IgfSkgPT4ge1xuICAgIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKG5hbWUsIGNvaW5Db25zdHJ1Y3Rvcik7XG4gIH0pO1xuXG4gIE9wZXRoVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoKS5mb3JFYWNoKCh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiB7XG4gICAgY29pbkZhY3RvcnkucmVnaXN0ZXIobmFtZSwgY29pbkNvbnN0cnVjdG9yKTtcbiAgfSk7XG5cbiAgWmtldGhUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9ycygpLmZvckVhY2goKHsgbmFtZSwgY29pbkNvbnN0cnVjdG9yIH0pID0+IHtcbiAgICBjb2luRmFjdG9yeS5yZWdpc3RlcihuYW1lLCBjb2luQ29uc3RydWN0b3IpO1xuICB9KTtcblxuICBCZXJhVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoKS5mb3JFYWNoKCh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiB7XG4gICAgY29pbkZhY3RvcnkucmVnaXN0ZXIobmFtZSwgY29pbkNvbnN0cnVjdG9yKTtcbiAgfSk7XG5cbiAgQ29yZWRhb1Rva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3JzKCkuZm9yRWFjaCgoeyBuYW1lLCBjb2luQ29uc3RydWN0b3IgfSkgPT4ge1xuICAgIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKG5hbWUsIGNvaW5Db25zdHJ1Y3Rvcik7XG4gIH0pO1xuXG4gIFdvcmxkVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoKS5mb3JFYWNoKCh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiB7XG4gICAgY29pbkZhY3RvcnkucmVnaXN0ZXIobmFtZSwgY29pbkNvbnN0cnVjdG9yKTtcbiAgfSk7XG5cbiAgU29sVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoWy4uLnRva2Vucy5iaXRjb2luLnNvbC50b2tlbnMsIC4uLnRva2Vucy50ZXN0bmV0LnNvbC50b2tlbnNdKS5mb3JFYWNoKFxuICAgICh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiB7XG4gICAgICBjb2luRmFjdG9yeS5yZWdpc3RlcihuYW1lLCBjb2luQ29uc3RydWN0b3IpO1xuICAgIH1cbiAgKTtcblxuICBIYmFyVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoWy4uLnRva2Vucy5iaXRjb2luLmhiYXIudG9rZW5zLCAuLi50b2tlbnMudGVzdG5ldC5oYmFyLnRva2Vuc10pLmZvckVhY2goXG4gICAgKHsgbmFtZSwgY29pbkNvbnN0cnVjdG9yIH0pID0+IHtcbiAgICAgIGNvaW5GYWN0b3J5LnJlZ2lzdGVyKG5hbWUsIGNvaW5Db25zdHJ1Y3Rvcik7XG4gICAgfVxuICApO1xuXG4gIFRyeFRva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3JzKFsuLi50b2tlbnMuYml0Y29pbi50cngudG9rZW5zLCAuLi50b2tlbnMudGVzdG5ldC50cngudG9rZW5zXSkuZm9yRWFjaChcbiAgICAoeyBuYW1lLCBjb2luQ29uc3RydWN0b3IgfSkgPT4ge1xuICAgICAgY29pbkZhY3RvcnkucmVnaXN0ZXIobmFtZSwgY29pbkNvbnN0cnVjdG9yKTtcbiAgICB9XG4gICk7XG5cbiAgQWRhVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoWy4uLnRva2Vucy5iaXRjb2luLmFkYS50b2tlbnMsIC4uLnRva2Vucy50ZXN0bmV0LmFkYS50b2tlbnNdKS5mb3JFYWNoKFxuICAgICh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiBjb2luRmFjdG9yeS5yZWdpc3RlcihuYW1lLCBjb2luQ29uc3RydWN0b3IpXG4gICk7XG5cbiAgU3VpVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoWy4uLnRva2Vucy5iaXRjb2luLnN1aS50b2tlbnMsIC4uLnRva2Vucy50ZXN0bmV0LnN1aS50b2tlbnNdKS5mb3JFYWNoKFxuICAgICh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiBjb2luRmFjdG9yeS5yZWdpc3RlcihuYW1lLCBjb2luQ29uc3RydWN0b3IpXG4gICk7XG5cbiAgVGFvVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoWy4uLnRva2Vucy5iaXRjb2luLnRhby50b2tlbnMsIC4uLnRva2Vucy50ZXN0bmV0LnRhby50b2tlbnNdKS5mb3JFYWNoKFxuICAgICh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiBjb2luRmFjdG9yeS5yZWdpc3RlcihuYW1lLCBjb2luQ29uc3RydWN0b3IpXG4gICk7XG5cbiAgUG9seXhUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9ycyhbLi4udG9rZW5zLmJpdGNvaW4ucG9seXgudG9rZW5zLCAuLi50b2tlbnMudGVzdG5ldC5wb2x5eC50b2tlbnNdKS5mb3JFYWNoKFxuICAgICh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiBjb2luRmFjdG9yeS5yZWdpc3RlcihuYW1lLCBjb2luQ29uc3RydWN0b3IpXG4gICk7XG5cbiAgWHJwVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoWy4uLnRva2Vucy5iaXRjb2luLnhycC50b2tlbnMsIC4uLnRva2Vucy50ZXN0bmV0LnhycC50b2tlbnNdKS5mb3JFYWNoKFxuICAgICh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiBjb2luRmFjdG9yeS5yZWdpc3RlcihuYW1lLCBjb2luQ29uc3RydWN0b3IpXG4gICk7XG5cbiAgQXB0VG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3RvcnMoWy4uLnRva2Vucy5iaXRjb2luLmFwdC50b2tlbnMsIC4uLnRva2Vucy50ZXN0bmV0LmFwdC50b2tlbnNdKS5mb3JFYWNoKFxuICAgICh7IG5hbWUsIGNvaW5Db25zdHJ1Y3RvciB9KSA9PiBjb2luRmFjdG9yeS5yZWdpc3RlcihuYW1lLCBjb2luQ29uc3RydWN0b3IpXG4gICk7XG5cbiAgU2lwMTBUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9ycyhbLi4udG9rZW5zLmJpdGNvaW4uc3R4LnRva2VucywgLi4udG9rZW5zLnRlc3RuZXQuc3R4LnRva2Vuc10pLmZvckVhY2goXG4gICAgKHsgbmFtZSwgY29pbkNvbnN0cnVjdG9yIH0pID0+IGNvaW5GYWN0b3J5LnJlZ2lzdGVyKG5hbWUsIGNvaW5Db25zdHJ1Y3RvcilcbiAgKTtcblxuICBOZXAxNDFUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9ycyhbLi4udG9rZW5zLmJpdGNvaW4ubmVhci50b2tlbnMsIC4uLnRva2Vucy50ZXN0bmV0Lm5lYXIudG9rZW5zXSkuZm9yRWFjaChcbiAgICAoeyBuYW1lLCBjb2luQ29uc3RydWN0b3IgfSkgPT4gY29pbkZhY3RvcnkucmVnaXN0ZXIobmFtZSwgY29pbkNvbnN0cnVjdG9yKVxuICApO1xuXG4gIEhhc2hUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9ycyhbLi4udG9rZW5zLmJpdGNvaW4uY29zbW9zLnRva2VucywgLi4udG9rZW5zLnRlc3RuZXQuY29zbW9zLnRva2Vuc10pLmZvckVhY2goXG4gICAgKHsgbmFtZSwgY29pbkNvbnN0cnVjdG9yIH0pID0+IGNvaW5GYWN0b3J5LnJlZ2lzdGVyKG5hbWUsIGNvaW5Db25zdHJ1Y3RvcilcbiAgKTtcblxuICBWZXRUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9ycygpLmZvckVhY2goKHsgbmFtZSwgY29pbkNvbnN0cnVjdG9yIH0pID0+XG4gICAgY29pbkZhY3RvcnkucmVnaXN0ZXIobmFtZSwgY29pbkNvbnN0cnVjdG9yKVxuICApO1xuXG4gIC8vIEdlbmVyaWMgRVJDMjAgdG9rZW4gcmVnaXN0cmF0aW9uIGZvciBjb2lucyB3aXRoIFNVUFBPUlRTX0VSQzIwIGZlYXR1cmVcbiAgY29pbnNcbiAgICAuZmlsdGVyKChjb2luKSA9PiBjb2luLmZlYXR1cmVzLmluY2x1ZGVzKENvaW5GZWF0dXJlLlNVUFBPUlRTX0VSQzIwKSAmJiAhY29pbi5pc1Rva2VuKVxuICAgIC5mb3JFYWNoKChjb2luKSA9PiB7XG4gICAgICBjb25zdCBjb2luTmFtZXMgPSB7XG4gICAgICAgIE1haW5uZXQ6IGAke2NvaW4ubmFtZX1gLFxuICAgICAgICBUZXN0bmV0OiBgdCR7Y29pbi5uYW1lfWAsXG4gICAgICB9O1xuXG4gICAgICBFdGhMaWtlRXJjMjBUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9ycyhjb2luTmFtZXMpLmZvckVhY2goKHsgbmFtZSwgY29pbkNvbnN0cnVjdG9yIH0pID0+IHtcbiAgICAgICAgY29pbkZhY3RvcnkucmVnaXN0ZXIobmFtZSwgY29pbkNvbnN0cnVjdG9yKTtcbiAgICAgIH0pO1xuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29pbkNvbnN0cnVjdG9yKGNvaW5OYW1lOiBzdHJpbmcpOiBDb2luQ29uc3RydWN0b3IgfCB1bmRlZmluZWQge1xuICBjb25zdCBldm1Db2lucyA9IGNvaW5zLmZpbHRlcigoY29pbikgPT4gY29pbi5mZWF0dXJlcy5pbmNsdWRlcyhDb2luRmVhdHVyZS5TSEFSRURfRVZNX1NESykpO1xuICBjb25zdCBjb3Ntb3NTaGFyZWRDb2lucyA9IGNvaW5zLmZpbHRlcigoY29pbikgPT4gY29pbi5mZWF0dXJlcy5pbmNsdWRlcyhDb2luRmVhdHVyZS5TSEFSRURfQ09TTU9TX1NESykpO1xuICBpZiAoZXZtQ29pbnMuaGFzKGNvaW5OYW1lKSkge1xuICAgIHJldHVybiBFdm1Db2luLmNyZWF0ZUluc3RhbmNlO1xuICB9XG4gIGlmIChjb3Ntb3NTaGFyZWRDb2lucy5oYXMoY29pbk5hbWUpKSB7XG4gICAgcmV0dXJuIENvc21vc1NoYXJlZENvaW4uY3JlYXRlSW5zdGFuY2U7XG4gIH1cbiAgc3dpdGNoIChjb2luTmFtZSkge1xuICAgIGNhc2UgJ2FkYSc6XG4gICAgICByZXR1cm4gQWRhLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ2FsZ28nOlxuICAgICAgcmV0dXJuIEFsZ28uY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnYXBlY2hhaW4nOlxuICAgICAgcmV0dXJuIEFwZWNoYWluLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ2FwdCc6XG4gICAgICByZXR1cm4gQXB0LmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ2FyYmV0aCc6XG4gICAgICByZXR1cm4gQXJiZXRoLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ2FzaSc6XG4gICAgICByZXR1cm4gQXNpLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ2F0b20nOlxuICAgICAgcmV0dXJuIEF0b20uY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnYXZheGMnOlxuICAgICAgcmV0dXJuIEF2YXhDLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ2F2YXhwJzpcbiAgICAgIHJldHVybiBBdmF4UC5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICdiYWJ5JzpcbiAgICAgIHJldHVybiBCYWJ5LmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ2JjaCc6XG4gICAgICByZXR1cm4gQmNoLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ2JjaGEnOlxuICAgICAgcmV0dXJuIEJjaGEuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnYmVyYSc6XG4gICAgICByZXR1cm4gQmVyYS5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICdibGQnOlxuICAgICAgcmV0dXJuIEJsZC5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICdic2MnOlxuICAgICAgcmV0dXJuIEJzYy5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICdic3YnOlxuICAgICAgcmV0dXJuIEJzdi5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICdidGMnOlxuICAgICAgcmV0dXJuIEJ0Yy5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICdidGcnOlxuICAgICAgcmV0dXJuIEJ0Zy5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICdjZWxvJzpcbiAgICAgIHJldHVybiBDZWxvLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ2NvcmVkYW8nOlxuICAgICAgcmV0dXJuIENvcmVkYW8uY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnY29yZXVtJzpcbiAgICAgIHJldHVybiBDb3JldW0uY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnY3Jvbm9zJzpcbiAgICAgIHJldHVybiBDcm9ub3MuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnY3Nwcic6XG4gICAgICByZXR1cm4gQ3Nwci5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICdkYXNoJzpcbiAgICAgIHJldHVybiBEYXNoLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ2RvZ2UnOlxuICAgICAgcmV0dXJuIERvZ2UuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnZG90JzpcbiAgICAgIHJldHVybiBEb3QuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnZW9zJzpcbiAgICAgIHJldHVybiBFb3MuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnZXRjJzpcbiAgICAgIHJldHVybiBFdGMuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnZXRoJzpcbiAgICAgIHJldHVybiBFdGguY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnZXRodyc6XG4gICAgICByZXR1cm4gRXRody5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICdiYXNlZXRoJzpcbiAgICAgIHJldHVybiBFdGhMaWtlQ29pbi5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0YmFzZWV0aCc6XG4gICAgICByZXR1cm4gVGV0aExpa2VDb2luLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ2ZpYXRhZWQnOlxuICAgICAgcmV0dXJuIEZpYXRBRUQuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnZmlhdGV1cic6XG4gICAgICByZXR1cm4gRmlhdEV1ci5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICdmaWF0Z2JwJzpcbiAgICAgIHJldHVybiBGaWF0R0JQLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ2ZpYXRzZ2QnOlxuICAgICAgcmV0dXJuIEZpYXRTR0QuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnZmlhdHVzZCc6XG4gICAgICByZXR1cm4gRmlhdFVzZC5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICdmbHInOlxuICAgICAgcmV0dXJuIEZsci5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICdndGV0aCc6XG4gICAgICByZXR1cm4gR3RldGguY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnaGFzaCc6XG4gICAgICByZXR1cm4gSGFzaC5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICdoYmFyJzpcbiAgICAgIHJldHVybiBIYmFyLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ2h0ZXRoJzpcbiAgICAgIHJldHVybiBIdGV0aC5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICdsbmJ0Yyc6XG4gICAgICByZXR1cm4gTG5idGMuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnbHRjJzpcbiAgICAgIHJldHVybiBMdGMuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnbW9uJzpcbiAgICAgIHJldHVybiBNb24uY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnbWFudHJhJzpcbiAgICAgIHJldHVybiBNYW50cmEuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnaWNwJzpcbiAgICAgIHJldHVybiBJY3AuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnaW5pdGlhJzpcbiAgICAgIHJldHVybiBJbml0aWEuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnaW5qZWN0aXZlJzpcbiAgICAgIHJldHVybiBJbmplY3RpdmUuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnaXNsbSc6XG4gICAgICByZXR1cm4gSXNsbS5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICduZWFyJzpcbiAgICAgIHJldHVybiBOZWFyLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ29hcyc6XG4gICAgICByZXR1cm4gT2FzLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ29mYyc6XG4gICAgICByZXR1cm4gT2ZjLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ29wZXRoJzpcbiAgICAgIHJldHVybiBPcGV0aC5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICdvc21vJzpcbiAgICAgIHJldHVybiBPc21vLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3BvbHlnb24nOlxuICAgICAgcmV0dXJuIFBvbHlnb24uY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAncG9seXgnOlxuICAgICAgcmV0dXJuIFBvbHl4LmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3JidGMnOlxuICAgICAgcmV0dXJuIFJidGMuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndGhvcmNoYWluOnJ1bmUnOlxuICAgICAgcmV0dXJuIFJ1bmUuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnc2VpJzpcbiAgICAgIHJldHVybiBTZWkuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnc2diJzpcbiAgICAgIHJldHVybiBTZ2IuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnc29sJzpcbiAgICAgIHJldHVybiBTb2wuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnc29uZWl1bSc6XG4gICAgICByZXR1cm4gU29uZWl1bS5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICdzdHgnOlxuICAgICAgcmV0dXJuIFN0eC5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICdzdWknOlxuICAgICAgcmV0dXJuIFN1aS5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICdzdXNkJzpcbiAgICAgIHJldHVybiBTdXNkLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3Rhbyc6XG4gICAgICByZXR1cm4gVGFvLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3RpYSc6XG4gICAgICByZXR1cm4gVGlhLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3Rvbic6XG4gICAgICByZXR1cm4gVG9uLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3RhbGdvJzpcbiAgICAgIHJldHVybiBUYWxnby5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0YXBlY2hhaW4nOlxuICAgICAgcmV0dXJuIFRhcGVjaGFpbi5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0YXB0JzpcbiAgICAgIHJldHVybiBUYXB0LmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3RhcmJldGgnOlxuICAgICAgcmV0dXJuIFRhcmJldGguY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndGFkYSc6XG4gICAgICByZXR1cm4gVGFkYS5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0YXNpJzpcbiAgICAgIHJldHVybiBUYXNpLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3RhdG9tJzpcbiAgICAgIHJldHVybiBUYXRvbS5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0YXZheGMnOlxuICAgICAgcmV0dXJuIFRhdmF4Qy5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0YXZheHAnOlxuICAgICAgcmV0dXJuIFRhdmF4UC5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0YmFieSc6XG4gICAgICByZXR1cm4gVGJhYnkuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndGJjaCc6XG4gICAgICByZXR1cm4gVGJjaC5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0YmNoYSc6XG4gICAgICByZXR1cm4gVGJjaGEuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndGJlcmEnOlxuICAgICAgcmV0dXJuIFRiZXJhLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3RibGQnOlxuICAgICAgcmV0dXJuIFRibGQuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndGJzYyc6XG4gICAgICByZXR1cm4gVGJzYy5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0YnN2JzpcbiAgICAgIHJldHVybiBUYnN2LmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3RidGMnOlxuICAgICAgcmV0dXJuIFRidGMuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndGJ0Y3NpZyc6XG4gICAgICByZXR1cm4gVGJ0Y3NpZy5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0YnRjNCc6XG4gICAgICByZXR1cm4gVGJ0YzQuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndGJ0Y2Jnc2lnJzpcbiAgICAgIHJldHVybiBUYnRjYmdzaWcuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndGNlbG8nOlxuICAgICAgcmV0dXJuIFRjZWxvLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3Rjb3JlZGFvJzpcbiAgICAgIHJldHVybiBUY29yZWRhby5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0Y29yZXVtJzpcbiAgICAgIHJldHVybiBUY29yZXVtLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3Rjcm9ub3MnOlxuICAgICAgcmV0dXJuIFRjcm9ub3MuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndGNzcHInOlxuICAgICAgcmV0dXJuIFRjc3ByLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3RkYXNoJzpcbiAgICAgIHJldHVybiBUZGFzaC5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0ZG9nZSc6XG4gICAgICByZXR1cm4gVGRvZ2UuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndGRvdCc6XG4gICAgICByZXR1cm4gVGRvdC5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0ZW9zJzpcbiAgICAgIHJldHVybiBUZW9zLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3RldGMnOlxuICAgICAgcmV0dXJuIFRldGMuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndGV0aCc6XG4gICAgICByZXR1cm4gVGV0aC5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0ZmlhdGFlZCc6XG4gICAgICByZXR1cm4gVGZpYXRBRUQuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndGZpYXRldXInOlxuICAgICAgcmV0dXJuIFRmaWF0RXVyLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3RmaWF0Z2JwJzpcbiAgICAgIHJldHVybiBUZmlhdEdCUC5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0ZmlhdHNnZCc6XG4gICAgICByZXR1cm4gVGZpYXRTR0QuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndGZpYXR1c2QnOlxuICAgICAgcmV0dXJuIFRmaWF0VXNkLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3RmbHInOlxuICAgICAgcmV0dXJuIFRmbHIuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndG1vbic6XG4gICAgICByZXR1cm4gVG1vbi5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0aGFzaCc6XG4gICAgICByZXR1cm4gVGhhc2guY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndGhiYXInOlxuICAgICAgcmV0dXJuIFRoYmFyLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3RpY3AnOlxuICAgICAgcmV0dXJuIFRpY3AuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndGluaXRpYSc6XG4gICAgICByZXR1cm4gVGluaXRpYS5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0aW5qZWN0aXZlJzpcbiAgICAgIHJldHVybiBUaW5qZWN0aXZlLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3Rpc2xtJzpcbiAgICAgIHJldHVybiBUaXNsbS5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0bG5idGMnOlxuICAgICAgcmV0dXJuIFRsbmJ0Yy5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0bHRjJzpcbiAgICAgIHJldHVybiBUbHRjLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3RtYW50cmEnOlxuICAgICAgcmV0dXJuIFRtYW50cmEuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndG5lYXInOlxuICAgICAgcmV0dXJuIFROZWFyLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3RvYXMnOlxuICAgICAgcmV0dXJuIFRvYXMuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndG9wZXRoJzpcbiAgICAgIHJldHVybiBUb3BldGguY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndG9zbW8nOlxuICAgICAgcmV0dXJuIFRvc21vLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3Rwb2x5Z29uJzpcbiAgICAgIHJldHVybiBUcG9seWdvbi5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0cG9seXgnOlxuICAgICAgcmV0dXJuIFRwb2x5eC5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0cmJ0Yyc6XG4gICAgICByZXR1cm4gVHJidGMuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndHNnYic6XG4gICAgICByZXR1cm4gVHNnYi5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0dGhvcmNoYWluOnJ1bmUnOlxuICAgICAgcmV0dXJuIFRydW5lLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3RyeCc6XG4gICAgICByZXR1cm4gVHJ4LmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3RzZWknOlxuICAgICAgcmV0dXJuIFRzZWkuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndHNvbCc6XG4gICAgICByZXR1cm4gVHNvbC5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0c29uZWl1bSc6XG4gICAgICByZXR1cm4gVHNvbmVpdW0uY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndHN0eCc6XG4gICAgICByZXR1cm4gVHN0eC5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0c3R0JzpcbiAgICAgIHJldHVybiBUc3R0LmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3RzdWknOlxuICAgICAgcmV0dXJuIFRzdWkuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndHN1c2QnOlxuICAgICAgcmV0dXJuIFRzdXNkLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3R0YW8nOlxuICAgICAgcmV0dXJuIFR0YW8uY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndHRpYSc6XG4gICAgICByZXR1cm4gVHRpYS5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0dG9uJzpcbiAgICAgIHJldHVybiBUdG9uLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3R0cngnOlxuICAgICAgcmV0dXJuIFR0cnguY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndHZldCc6XG4gICAgICByZXR1cm4gVHZldC5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0eGRjJzpcbiAgICAgIHJldHVybiBUeGRjLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3R4bG0nOlxuICAgICAgcmV0dXJuIFR4bG0uY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndHhycCc6XG4gICAgICByZXR1cm4gVHhycC5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd0eHR6JzpcbiAgICAgIHJldHVybiBUeHR6LmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3R6ZWMnOlxuICAgICAgcmV0dXJuIFR6ZWMuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAndHpldGEnOlxuICAgICAgcmV0dXJuIFR6ZXRhLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3R6a2V0aCc6XG4gICAgICByZXR1cm4gVHprZXRoLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3R3ZW1peCc6XG4gICAgICByZXR1cm4gVHdlbWl4LmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3R3b3JsZCc6XG4gICAgICByZXR1cm4gVHdvcmxkLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3ZldCc6XG4gICAgICByZXR1cm4gVmV0LmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3hkYyc6XG4gICAgICByZXR1cm4gWGRjLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3hsbSc6XG4gICAgICByZXR1cm4gWGxtLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3hycCc6XG4gICAgICByZXR1cm4gWHJwLmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3h0eic6XG4gICAgICByZXR1cm4gWHR6LmNyZWF0ZUluc3RhbmNlO1xuICAgIGNhc2UgJ3dlbWl4JzpcbiAgICAgIHJldHVybiBXZW1peC5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd3b3JsZCc6XG4gICAgICByZXR1cm4gV29ybGQuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnemVjJzpcbiAgICAgIHJldHVybiBaZWMuY3JlYXRlSW5zdGFuY2U7XG4gICAgY2FzZSAnemV0YSc6XG4gICAgICByZXR1cm4gWmV0YS5jcmVhdGVJbnN0YW5jZTtcbiAgICBjYXNlICd6a2V0aCc6XG4gICAgICByZXR1cm4gWmtldGguY3JlYXRlSW5zdGFuY2U7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRva2VuQ29uc3RydWN0b3IodG9rZW5Db25maWc6IFRva2VuQ29uZmlnKTogQ29pbkNvbnN0cnVjdG9yIHwgdW5kZWZpbmVkIHtcbiAgc3dpdGNoICh0b2tlbkNvbmZpZy5jb2luKSB7XG4gICAgY2FzZSAnZXRoJzpcbiAgICBjYXNlICdodGV0aCc6XG4gICAgICBpZiAodG9rZW5Db25maWcudHlwZS5pbmNsdWRlcygnZXJjNzIxJykpIHtcbiAgICAgICAgcmV0dXJuIEVyYzcyMVRva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3IodG9rZW5Db25maWcgYXMgRXRoTGlrZVRva2VuQ29uZmlnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBFcmMyMFRva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3IodG9rZW5Db25maWcgYXMgRXJjMjBUb2tlbkNvbmZpZyk7XG4gICAgICB9XG4gICAgY2FzZSAneGxtJzpcbiAgICBjYXNlICd0eGxtJzpcbiAgICAgIHJldHVybiBTdGVsbGFyVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcih0b2tlbkNvbmZpZyBhcyBTdGVsbGFyVG9rZW5Db25maWcpO1xuICAgIGNhc2UgJ29mYyc6XG4gICAgICByZXR1cm4gT2ZjVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcih0b2tlbkNvbmZpZyBhcyBPZmNUb2tlbkNvbmZpZyk7XG4gICAgY2FzZSAnY2Vsbyc6XG4gICAgY2FzZSAndGNlbG8nOlxuICAgICAgcmV0dXJuIENlbG9Ub2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9yKHRva2VuQ29uZmlnIGFzIENlbG9Ub2tlbkNvbmZpZyk7XG4gICAgY2FzZSAnYnNjJzpcbiAgICBjYXNlICd0YnNjJzpcbiAgICAgIHJldHVybiBCc2NUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9yKHRva2VuQ29uZmlnIGFzIEVyYzIwVG9rZW5Db25maWcpO1xuICAgIGNhc2UgJ2Vvcyc6XG4gICAgY2FzZSAndGVvcyc6XG4gICAgICByZXR1cm4gRW9zVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcih0b2tlbkNvbmZpZyBhcyBFb3NUb2tlbkNvbmZpZyk7XG4gICAgY2FzZSAnYWxnbyc6XG4gICAgY2FzZSAndGFsZ28nOlxuICAgICAgcmV0dXJuIEFsZ29Ub2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9yKHRva2VuQ29uZmlnIGFzIEFsZ29Ub2tlbkNvbmZpZyk7XG4gICAgY2FzZSAnYXZheGMnOlxuICAgIGNhc2UgJ3RhdmF4Yyc6XG4gICAgICByZXR1cm4gQXZheENUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9yKHRva2VuQ29uZmlnIGFzIEF2YXhjVG9rZW5Db25maWcpO1xuICAgIGNhc2UgJ3BvbHlnb24nOlxuICAgIGNhc2UgJ3Rwb2x5Z29uJzpcbiAgICAgIHJldHVybiBQb2x5Z29uVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcih0b2tlbkNvbmZpZyBhcyBFdGhMaWtlVG9rZW5Db25maWcpO1xuICAgIGNhc2UgJ3NvbmVpdW0nOlxuICAgIGNhc2UgJ3Rzb25laXVtJzpcbiAgICAgIHJldHVybiBTb25laXVtVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcih0b2tlbkNvbmZpZyBhcyBFdGhMaWtlVG9rZW5Db25maWcpO1xuICAgIGNhc2UgJ2FyYmV0aCc6XG4gICAgY2FzZSAndGFyYmV0aCc6XG4gICAgICByZXR1cm4gQXJiZXRoVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcih0b2tlbkNvbmZpZyBhcyBFdGhMaWtlVG9rZW5Db25maWcpO1xuICAgIGNhc2UgJ29wZXRoJzpcbiAgICBjYXNlICd0b3BldGgnOlxuICAgICAgcmV0dXJuIE9wZXRoVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcih0b2tlbkNvbmZpZyBhcyBFdGhMaWtlVG9rZW5Db25maWcpO1xuICAgIGNhc2UgJ3prZXRoJzpcbiAgICBjYXNlICd0emtldGgnOlxuICAgICAgcmV0dXJuIFprZXRoVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcih0b2tlbkNvbmZpZyBhcyBFdGhMaWtlVG9rZW5Db25maWcpO1xuICAgIGNhc2UgJ2JlcmEnOlxuICAgIGNhc2UgJ3RiZXJhJzpcbiAgICAgIHJldHVybiBCZXJhVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcih0b2tlbkNvbmZpZyBhcyBFdGhMaWtlVG9rZW5Db25maWcpO1xuICAgIGNhc2UgJ2NvcmVkYW8nOlxuICAgIGNhc2UgJ3Rjb3JlZGFvJzpcbiAgICAgIHJldHVybiBDb3JlZGFvVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcih0b2tlbkNvbmZpZyBhcyBFdGhMaWtlVG9rZW5Db25maWcpO1xuICAgIGNhc2UgJ3dvcmxkJzpcbiAgICBjYXNlICd0d29ybGQnOlxuICAgICAgcmV0dXJuIFdvcmxkVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcih0b2tlbkNvbmZpZyBhcyBFdGhMaWtlVG9rZW5Db25maWcpO1xuICAgIGNhc2UgJ3NvbCc6XG4gICAgY2FzZSAndHNvbCc6XG4gICAgICByZXR1cm4gU29sVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcih0b2tlbkNvbmZpZyBhcyBTb2xUb2tlbkNvbmZpZyk7XG4gICAgY2FzZSAnaGJhcic6XG4gICAgY2FzZSAndGhiYXInOlxuICAgICAgcmV0dXJuIEhiYXJUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9yKHRva2VuQ29uZmlnIGFzIEhiYXJUb2tlbkNvbmZpZyk7XG4gICAgY2FzZSAndHJ4JzpcbiAgICBjYXNlICd0dHJ4JzpcbiAgICAgIHJldHVybiBUcnhUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9yKHRva2VuQ29uZmlnIGFzIFRyeFRva2VuQ29uZmlnKTtcbiAgICBjYXNlICdhZGEnOlxuICAgIGNhc2UgJ3RhZGEnOlxuICAgICAgcmV0dXJuIEFkYVRva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3IodG9rZW5Db25maWcgYXMgQWRhVG9rZW5Db25maWcpO1xuICAgIGNhc2UgJ3N1aSc6XG4gICAgY2FzZSAndHN1aSc6XG4gICAgICByZXR1cm4gU3VpVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcih0b2tlbkNvbmZpZyBhcyBTdWlUb2tlbkNvbmZpZyk7XG4gICAgY2FzZSAndGFvJzpcbiAgICBjYXNlICd0dGFvJzpcbiAgICAgIHJldHVybiBUYW9Ub2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9yKHRva2VuQ29uZmlnIGFzIFRhb1Rva2VuQ29uZmlnKTtcbiAgICBjYXNlICdwb2x5eCc6XG4gICAgY2FzZSAndHBvbHl4JzpcbiAgICAgIHJldHVybiBQb2x5eFRva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3IodG9rZW5Db25maWcgYXMgUG9seXhUb2tlbkNvbmZpZyk7XG4gICAgY2FzZSAneHJwJzpcbiAgICBjYXNlICd0eHJwJzpcbiAgICAgIHJldHVybiBYcnBUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9yKHRva2VuQ29uZmlnIGFzIFhycFRva2VuQ29uZmlnKTtcbiAgICBjYXNlICdhcHQnOlxuICAgIGNhc2UgJ3RhcHQnOlxuICAgICAgcmV0dXJuIEFwdFRva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3IodG9rZW5Db25maWcgYXMgQXB0VG9rZW5Db25maWcpO1xuICAgIGNhc2UgJ3N0eCc6XG4gICAgY2FzZSAndHN0eCc6XG4gICAgICByZXR1cm4gU2lwMTBUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9yKHRva2VuQ29uZmlnIGFzIFNpcDEwVG9rZW5Db25maWcpO1xuICAgIGNhc2UgJ25lYXInOlxuICAgIGNhc2UgJ3RuZWFyJzpcbiAgICAgIHJldHVybiBOZXAxNDFUb2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9yKHRva2VuQ29uZmlnIGFzIE5lcDE0MVRva2VuQ29uZmlnKTtcbiAgICBjYXNlICd2ZXQnOlxuICAgIGNhc2UgJ3R2ZXQnOlxuICAgICAgcmV0dXJuIFZldFRva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3IodG9rZW5Db25maWcgYXMgVmV0VG9rZW5Db25maWcpO1xuICAgIGNhc2UgJ2hhc2gnOlxuICAgIGNhc2UgJ3RoYXNoJzpcbiAgICAgIHJldHVybiBIYXNoVG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcih0b2tlbkNvbmZpZyBhcyBDb3Ntb3NUb2tlbkNvbmZpZyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEdsb2JhbENvaW5GYWN0b3J5OiBDb2luRmFjdG9yeSA9IG5ldyBDb2luRmFjdG9yeSgpO1xuXG5yZWdpc3RlckNvaW5Db25zdHJ1Y3RvcnMoR2xvYmFsQ29pbkZhY3RvcnkpO1xuIl19Выполнить команду
Для локальной разработки. Не используйте в интернете!