@yodlpay/tokenlists 0.4.6 → 0.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chainlist-v1.json +8 -0
- package/dist/index.d.ts +6 -0
- package/dist/tokenlists.cjs.development.js +20 -0
- package/dist/tokenlists.cjs.development.js.map +1 -1
- package/dist/tokenlists.cjs.production.min.js +1 -1
- package/dist/tokenlists.cjs.production.min.js.map +1 -1
- package/dist/tokenlists.esm.js +19 -1
- package/dist/tokenlists.esm.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenlists.cjs.production.min.js","sources":["../src/types.ts","../src/getVersionUpgrade.ts","../src/abis.ts","../src/versionComparator.ts","../src/diffTokenLists.ts","../src/index.ts","../src/isVersionUpdate.ts","../src/minVersionBump.ts","../src/nextVersion.ts"],"sourcesContent":["type ExtensionValue = string | number | boolean | null | undefined;\n\nexport enum TokenListTagNames {\n // Networks\n MAINNET = 'Mainnet',\n OPTIMISM = 'Optimism',\n ARBITRUM = 'Arbitrum',\n AVALANCHE = 'Avalanche',\n BASE = 'Base',\n TESTNET = 'TESTNET',\n\n // Coin/currency\n STABLECOIN = 'Stablecoin',\n USD = 'USD',\n EUR = 'EUR',\n\n // Misc\n TOP_10 = 'Top10',\n NATIVE_TOKEN = 'Native Token',\n}\n\nexport interface RouterInfo {\n readonly chainId: number;\n readonly address: string;\n readonly timestamp: string;\n readonly version: string;\n readonly fee: string;\n}\n\nexport interface TestnetFaucetInfo {\n readonly chainId: number;\n readonly address: string;\n readonly token: string;\n}\n\nexport interface ChainInfo {\n readonly chainId: number;\n readonly chainName: string;\n // shortName is the EIP3770 short name\n // chain details can be found here: https://github.com/ethereum-lists/chains/tree/master/_data/chains\n readonly shortName: string;\n readonly logoUri: string;\n readonly explorerUrl: string;\n readonly timestamp: string;\n readonly rpcUrls: string[];\n readonly wrappedNativeToken: string;\n readonly feeTreasury?: string;\n readonly testnet: boolean;\n readonly priceFeeds?: {\n readonly [key: string]: string | undefined;\n };\n readonly tokenFeeds?: {\n readonly [key: string]: string | undefined;\n };\n readonly curveRouterAddress?: string;\n}\n\nexport interface TokenInfo {\n readonly chainId: number;\n readonly address: string;\n readonly name: string;\n readonly decimals: number;\n readonly symbol: string;\n readonly coinGeckoId?: string;\n readonly currency?: string;\n readonly logoUri?: string;\n readonly tags?: TokenListTagNames[];\n readonly extensions?: {\n readonly [key: string]:\n | {\n [key: string]:\n | {\n [key: string]: ExtensionValue;\n }\n | ExtensionValue;\n }\n | ExtensionValue;\n };\n}\n\nexport interface Version {\n readonly major: number;\n readonly minor: number;\n readonly patch: number;\n}\n\nexport interface TokenList {\n readonly name: string;\n readonly timestamp: string;\n readonly version: Version;\n readonly tokens: TokenInfo[];\n readonly keywords?: string[];\n readonly tags?: any;\n readonly logoUri?: string;\n}\n\nexport interface PriceFeed {\n readonly address: string;\n readonly name: string;\n readonly assetName: string;\n readonly type: string;\n readonly path: string;\n readonly input: string;\n readonly output: string;\n readonly deviation: number;\n readonly decimals: number;\n readonly updateInterval: number;\n readonly chainId: number;\n}\n\nexport interface FiatCurrency {\n readonly name: string;\n readonly symbol: string;\n readonly sign: string;\n}\n","import { Version } from \"./types\";\n\n/**\n * Enum describing types of version differences\n */\nexport enum VersionUpgrade {\n NONE,\n PATCH,\n MINOR,\n MAJOR,\n}\n\n/**\n * Return the upgrade type from the base version to the update version.\n * Note that downgrades and equivalent versions are both treated as `NONE`.\n * @param base base list\n * @param update update to the list\n */\nexport function getVersionUpgrade(\n base: Version,\n update: Version\n): VersionUpgrade {\n if (update.major > base.major) {\n return VersionUpgrade.MAJOR;\n }\n if (update.major < base.major) {\n return VersionUpgrade.NONE;\n }\n if (update.minor > base.minor) {\n return VersionUpgrade.MINOR;\n }\n if (update.minor < base.minor) {\n return VersionUpgrade.NONE;\n }\n return update.patch > base.patch ? VersionUpgrade.PATCH : VersionUpgrade.NONE;\n}\n","import CurveRouterV13Abi from \"./abis/curverouterv13.abi.json\";\nimport YodlRouterV01 from \"./abis/YodlRouterV0.1.abi.json\";\nimport YodlRouterV02 from \"./abis/YodlRouterV0.2.abi.json\";\nimport YodlRouterV03 from \"./abis/YodlRouterV0.3.abi.json\";\nimport YodlRouterV04 from \"./abis/YodlRouterV0.4.abi.json\";\n\nexport const YODL_ROUTER_ABIS: { [key: string]: any} = {\n \"0.1\": YodlRouterV01,\n \"0.2\": YodlRouterV02,\n \"0.3\": YodlRouterV03,\n \"0.4\": YodlRouterV04,\n \"test\": YodlRouterV03\n}\nexport const CURVE_ROUTER_ABI = CurveRouterV13Abi;\n","import { Version } from \"./types\";\n\n/**\n * Comparator function that allows sorting version from lowest to highest\n * @param versionA version A to compare\n * @param versionB version B to compare\n * @returns -1 if versionA comes before versionB, 0 if versionA is equal to version B, and 1 if version A comes after version B\n */\nexport function versionComparator(\n versionA: Version,\n versionB: Version\n): -1 | 0 | 1 {\n if (versionA.major < versionB.major) {\n return -1;\n } else if (versionA.major > versionB.major) {\n return 1;\n } else if (versionA.minor < versionB.minor) {\n return -1;\n } else if (versionA.minor > versionB.minor) {\n return 1;\n } else if (versionA.patch < versionB.patch) {\n return -1;\n } else if (versionA.patch > versionB.patch) {\n return 1;\n } else {\n return 0;\n }\n}\n","import { TokenInfo } from \"./types\";\n\nexport type TokenInfoChangeKey = Exclude<\n keyof TokenInfo,\n \"address\" | \"chainId\"\n>;\nexport type TokenInfoChanges = Array<TokenInfoChangeKey>;\n\n/**\n * compares two token info key values\n * this subset of full deep equal functionality does not work on objects or object arrays\n * @param a comparison item a\n * @param b comparison item b\n */\nfunction compareTokenInfoProperty(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (typeof a !== typeof b) return false;\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.every((el, i) => b[i] === el);\n }\n return false;\n}\n\n/**\n * Differences between a base list and an updated list.\n */\nexport interface TokenListDiff {\n /**\n * Tokens from updated with chainId/address not present in base list\n */\n readonly added: TokenInfo[];\n /**\n * Tokens from base with chainId/address not present in the updated list\n */\n readonly removed: TokenInfo[];\n /**\n * The token info that changed\n */\n readonly changed: {\n [chainId: number]: {\n [address: string]: TokenInfoChanges;\n };\n };\n}\n\n/**\n * Computes the diff of a token list where the first argument is the base and the second argument is the updated list.\n * @param base base list\n * @param update updated list\n */\nexport function diffTokenLists(\n base: TokenInfo[],\n update: TokenInfo[]\n): TokenListDiff {\n const indexedBase = base.reduce<{\n [chainId: number]: { [address: string]: TokenInfo };\n }>((memo, tokenInfo) => {\n if (!memo[tokenInfo.chainId]) memo[tokenInfo.chainId] = {};\n memo[tokenInfo.chainId][tokenInfo.address] = tokenInfo;\n return memo;\n }, {});\n\n const newListUpdates = update.reduce<{\n added: TokenInfo[];\n changed: {\n [chainId: number]: {\n [address: string]: TokenInfoChanges;\n };\n };\n index: {\n [chainId: number]: {\n [address: string]: true;\n };\n };\n }>(\n (memo, tokenInfo) => {\n const baseToken = indexedBase[tokenInfo.chainId]?.[tokenInfo.address];\n if (!baseToken) {\n memo.added.push(tokenInfo);\n } else {\n const changes: TokenInfoChanges = Object.keys(tokenInfo)\n .filter(\n (s): s is TokenInfoChangeKey => s !== \"address\" && s !== \"chainId\"\n )\n .filter((s) => {\n return !compareTokenInfoProperty(tokenInfo[s], baseToken[s]);\n });\n if (changes.length > 0) {\n if (!memo.changed[tokenInfo.chainId]) {\n memo.changed[tokenInfo.chainId] = {};\n }\n memo.changed[tokenInfo.chainId][tokenInfo.address] = changes;\n }\n }\n\n if (!memo.index[tokenInfo.chainId]) {\n memo.index[tokenInfo.chainId] = {\n [tokenInfo.address]: true,\n };\n } else {\n memo.index[tokenInfo.chainId][tokenInfo.address] = true;\n }\n\n return memo;\n },\n { added: [], changed: {}, index: {} }\n );\n\n const removed = base.reduce<TokenInfo[]>((list, curr) => {\n if (\n !newListUpdates.index[curr.chainId] ||\n !newListUpdates.index[curr.chainId][curr.address]\n ) {\n list.push(curr);\n }\n return list;\n }, []);\n\n return {\n added: newListUpdates.added,\n changed: newListUpdates.changed,\n removed,\n };\n}\n","import featuredTokenlist from './tokenlist-featured.json';\nimport generatedTokenlist from './tokenlist-generated.json';\nimport chainlist from './chainlist-v1.json';\nimport routerlist from './routerlist-v1.json';\nimport testnetfaucets from './testnet-faucets-v1.json';\nimport priceFeeds from './pricefeeds.json';\nimport fiatCurrencies from './fiatCurrencies.json';\nimport { ChainInfo, RouterInfo, TokenInfo, TestnetFaucetInfo } from './types';\n\nexport * from './abis';\nexport * from './types';\nexport * from './isVersionUpdate';\nexport * from './getVersionUpgrade';\nexport * from './diffTokenLists';\nexport * from './minVersionBump';\nexport * from './nextVersion';\nexport * from './versionComparator';\n\nconst tokenlist = featuredTokenlist.tokens.concat(\n //@ts-ignore\n generatedTokenlist.tokens as TokenInfo[]\n);\n\nexport function getChains(): ChainInfo[] {\n return chainlist.chains;\n}\n\nexport function getChain(chainId: number): ChainInfo {\n return chainlist.chains.find((needle: any) => {\n return needle.chainId === chainId;\n }) as ChainInfo;\n}\n\nexport function getTokenByAddress(\n tokenAddress: string,\n chainId?: number\n): TokenInfo | null {\n return (\n (tokenlist.find((token: any) => {\n return (\n token.address.toLowerCase() === tokenAddress.toLowerCase() &&\n (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo) ?? null\n );\n}\n\nexport function getPriceFeeds(chainId: number) {\n return priceFeeds.filter(f => f.chainId === chainId);\n}\n\nexport function getTokenFeeds(chainId: number) {\n return priceFeeds.filter(f => f.chainId === chainId && f.type === 'crypto');\n}\n\nexport function getFiatFeeds(chainId: number) {\n return priceFeeds.filter(f => f.chainId === chainId && f.type === 'fiat');\n}\n\nexport function getFiatCurrency(symbol: string) {\n return fiatCurrencies.find(\n c => c.symbol.toLowerCase() === symbol.toLowerCase()\n );\n}\n\nexport function getPriceFeed(\n chainId: number,\n baseSymbol: string,\n quoteSymbol?: string\n) {\n const _quoteSymbol = quoteSymbol ? quoteSymbol : 'USD';\n const feed = priceFeeds.find(\n f =>\n f.input?.toLowerCase() === baseSymbol.toLowerCase() &&\n f.output === _quoteSymbol &&\n f.chainId === chainId\n );\n if (feed) {\n return feed;\n } else {\n // feed not found, find any feed that matches the base symbol\n return priceFeeds.find(\n f =>\n f.input?.toLowerCase() === baseSymbol.toLowerCase() &&\n f.chainId === chainId\n );\n }\n}\n\nexport function getFeaturedTokenBySymbol(\n tokenSymbol: string,\n chainId?: number\n): TokenInfo | null {\n return (\n (featuredTokenlist.tokens.find((token: any) => {\n return (\n token.symbol.toLowerCase() === tokenSymbol.toLowerCase() &&\n (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo) ?? null\n );\n}\n\nexport function getTokenBySymbol(\n tokenSymbol: string,\n chainId?: number\n): TokenInfo | null {\n const tokens = tokenlist.filter((token: any) => {\n return (\n token.symbol.toLowerCase() === tokenSymbol.toLowerCase() &&\n (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo[];\n\n if (chainId && tokens && tokens.length > 1) {\n throw new Error(`Duplicate tokens found for symbol ${tokenSymbol}`);\n }\n\n return tokens.length > 0 ? tokens[0] : null;\n}\n\nexport function getTokens(chainId?: number): TokenInfo[] {\n return chainId\n ? (tokenlist.filter((needle: any) => {\n return needle.chainId === chainId;\n }) as TokenInfo[])\n : (tokenlist as TokenInfo[]);\n}\n\nexport function getFaucetAddress(tokenInfo: TokenInfo): TestnetFaucetInfo {\n return testnetfaucets.faucets.find((needle: any) => {\n return (\n needle.token.toLowerCase() === tokenInfo.address.toLowerCase() &&\n needle.chainId === tokenInfo.chainId\n );\n }) as TestnetFaucetInfo;\n}\n\nexport function getRouters(chainId: number): RouterInfo[] {\n return routerlist.routers.filter((needle: any) => {\n return needle.chainId === chainId;\n }) as RouterInfo[];\n}\n\nexport function getRouter(\n chainId: number,\n version: string\n): RouterInfo | undefined {\n return routerlist.routers.find((needle: any) => {\n return needle.chainId === chainId && needle.version === version;\n }) as RouterInfo;\n}\n\nexport function getRouterByAddress(\n address: string,\n chainId?: number\n): RouterInfo | undefined {\n const findByAddress = (router: RouterInfo) =>\n router.address.toLowerCase() === address.toLowerCase();\n\n const findByAddressAndChainId = (router: RouterInfo) =>\n router.address.toLowerCase() === address.toLowerCase() &&\n router.chainId == chainId;\n\n const filter = chainId ? findByAddressAndChainId : findByAddress;\n\n const routerInfo = routerlist.routers.find(filter);\n return routerInfo;\n}\n\nexport function getLatestRouter(chainId: number): RouterInfo {\n const sorted = getRouters(chainId).sort((a, b) => {\n return Date.parse(a.timestamp) - Date.parse(b.timestamp);\n });\n return sorted[sorted.length - 1];\n}\n\nexport function getShortNames(): string[] {\n return chainlist.chains.map(chain => chain.shortName);\n}\n\nexport function getNativeWrappedToken(chainId: number): TokenInfo {\n const nativeTokens = featuredTokenlist.tokens.filter(\n t =>\n t.chainId === chainId &&\n t.tags.map(tag => tag.toLowerCase()).includes('wrapped') &&\n t.tags.map(tag => tag.toLowerCase()).includes('native token')\n ) as TokenInfo[];\n if (nativeTokens.length > 1) {\n throw new Error(\n `Found more than one native wrapped token for chain ${chainId}`\n );\n } else if (nativeTokens.length < 1) {\n throw new Error(`No native wrapped token found for chain ${chainId}`);\n }\n return nativeTokens[0];\n}\n","import { versionComparator } from './versionComparator';\nimport { Version } from './types';\n\n/**\n * Returns true if versionB is an update over versionA\n */\nexport function isVersionUpdate(base: Version, update: Version): boolean {\n return versionComparator(base, update) < 0;\n}","import { diffTokenLists } from \"./diffTokenLists\";\nimport { VersionUpgrade } from \"./getVersionUpgrade\";\nimport { TokenInfo } from \"./types\";\n\n/**\n * Returns the minimum version bump for the given list\n * @param baseList the base list of tokens\n * @param updatedList the updated list of tokens\n */\nexport function minVersionBump(\n baseList: TokenInfo[],\n updatedList: TokenInfo[]\n): VersionUpgrade {\n const diff = diffTokenLists(baseList, updatedList);\n if (diff.removed.length > 0) return VersionUpgrade.MAJOR;\n if (diff.added.length > 0) return VersionUpgrade.MINOR;\n if (Object.keys(diff.changed).length > 0) return VersionUpgrade.PATCH;\n return VersionUpgrade.NONE;\n}\n","import { VersionUpgrade } from \"./getVersionUpgrade\";\nimport { Version } from \"./types\";\n\n/**\n * Returns the next version of the list given a base version and the upgrade type\n * @param base current version\n * @param bump the upgrade type\n */\nexport function nextVersion(base: Version, bump: VersionUpgrade): Version {\n switch (bump) {\n case VersionUpgrade.NONE:\n return base;\n\n case VersionUpgrade.MAJOR:\n return { major: base.major + 1, minor: 0, patch: 0 };\n\n case VersionUpgrade.MINOR:\n return {\n major: base.major,\n minor: base.minor + 1,\n patch: 0,\n };\n\n case VersionUpgrade.PATCH:\n return {\n major: base.major,\n minor: base.minor,\n patch: base.patch + 1,\n };\n }\n}\n"],"names":["TokenListTagNames","VersionUpgrade","YODL_ROUTER_ABIS","0.1","0.2","0.3","YodlRouterV03","0.4","test","versionComparator","versionA","versionB","major","minor","patch","diffTokenLists","base","update","indexedBase","reduce","memo","tokenInfo","chainId","address","newListUpdates","baseToken","_indexedBase$tokenInf","changes","Object","keys","filter","s","a","b","Array","isArray","every","el","i","length","changed","added","push","index","removed","list","curr","tokenlist","featuredTokenlist","tokens","concat","generatedTokenlist","getRouters","routerlist","routers","needle","chainlist","chains","find","testnetfaucets","faucets","token","toLowerCase","tokenSymbol","symbol","fiatCurrencies","c","priceFeeds","f","type","sorted","sort","Date","parse","timestamp","nativeTokens","t","tags","map","tag","includes","Error","baseSymbol","quoteSymbol","_quoteSymbol","input","output","version","router","chain","shortName","tokenAddress","MAJOR","NONE","MINOR","PATCH","baseList","updatedList","diff","bump"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tokenlists.cjs.production.min.js","sources":["../src/types.ts","../src/getVersionUpgrade.ts","../src/abis.ts","../src/versionComparator.ts","../src/diffTokenLists.ts","../src/index.ts","../src/isVersionUpdate.ts","../src/minVersionBump.ts","../src/nextVersion.ts"],"sourcesContent":["type ExtensionValue = string | number | boolean | null | undefined;\n\nexport enum TokenListTagNames {\n // Networks\n MAINNET = 'Mainnet',\n OPTIMISM = 'Optimism',\n ARBITRUM = 'Arbitrum',\n AVALANCHE = 'Avalanche',\n BASE = 'Base',\n TESTNET = 'TESTNET',\n\n // Coin/currency\n STABLECOIN = 'Stablecoin',\n USD = 'USD',\n EUR = 'EUR',\n\n // Misc\n TOP_10 = 'Top10',\n NATIVE_TOKEN = 'Native Token',\n}\n\nexport interface RouterInfo {\n readonly chainId: number;\n readonly address: string;\n readonly timestamp: string;\n readonly version: string;\n readonly fee: string;\n}\n\nexport interface TestnetFaucetInfo {\n readonly chainId: number;\n readonly address: string;\n readonly token: string;\n}\n\nexport interface ChainInfo {\n readonly chainId: number;\n readonly chainName: string;\n // shortName is the EIP3770 short name\n // chain details can be found here: https://github.com/ethereum-lists/chains/tree/master/_data/chains\n readonly shortName: string;\n readonly logoUri: string;\n readonly explorerUrl: string;\n readonly timestamp: string;\n readonly rpcUrls: string[];\n readonly wrappedNativeToken: string;\n readonly nativeTokenName: string;\n readonly feeTreasury?: string;\n readonly testnet: boolean;\n readonly priceFeeds?: {\n readonly [key: string]: string | undefined;\n };\n readonly tokenFeeds?: {\n readonly [key: string]: string | undefined;\n };\n readonly curveRouterAddress?: string;\n}\n\nexport interface TokenInfo {\n readonly chainId: number;\n readonly address: string;\n readonly name: string;\n readonly decimals: number;\n readonly symbol: string;\n readonly coinGeckoId?: string;\n readonly currency?: string;\n readonly logoUri?: string;\n readonly tags?: TokenListTagNames[];\n readonly extensions?: {\n readonly [key: string]:\n | {\n [key: string]:\n | {\n [key: string]: ExtensionValue;\n }\n | ExtensionValue;\n }\n | ExtensionValue;\n };\n}\n\nexport interface Version {\n readonly major: number;\n readonly minor: number;\n readonly patch: number;\n}\n\nexport interface TokenList {\n readonly name: string;\n readonly timestamp: string;\n readonly version: Version;\n readonly tokens: TokenInfo[];\n readonly keywords?: string[];\n readonly tags?: any;\n readonly logoUri?: string;\n}\n\nexport interface PriceFeed {\n readonly address: string;\n readonly name: string;\n readonly assetName: string;\n readonly type: string;\n readonly path: string;\n readonly input: string;\n readonly output: string;\n readonly deviation: number;\n readonly decimals: number;\n readonly updateInterval: number;\n readonly chainId: number;\n}\n\nexport interface FiatCurrency {\n readonly name: string;\n readonly symbol: string;\n readonly sign: string;\n}\n","import { Version } from \"./types\";\n\n/**\n * Enum describing types of version differences\n */\nexport enum VersionUpgrade {\n NONE,\n PATCH,\n MINOR,\n MAJOR,\n}\n\n/**\n * Return the upgrade type from the base version to the update version.\n * Note that downgrades and equivalent versions are both treated as `NONE`.\n * @param base base list\n * @param update update to the list\n */\nexport function getVersionUpgrade(\n base: Version,\n update: Version\n): VersionUpgrade {\n if (update.major > base.major) {\n return VersionUpgrade.MAJOR;\n }\n if (update.major < base.major) {\n return VersionUpgrade.NONE;\n }\n if (update.minor > base.minor) {\n return VersionUpgrade.MINOR;\n }\n if (update.minor < base.minor) {\n return VersionUpgrade.NONE;\n }\n return update.patch > base.patch ? VersionUpgrade.PATCH : VersionUpgrade.NONE;\n}\n","import CurveRouterV13Abi from \"./abis/curverouterv13.abi.json\";\nimport YodlRouterV01 from \"./abis/YodlRouterV0.1.abi.json\";\nimport YodlRouterV02 from \"./abis/YodlRouterV0.2.abi.json\";\nimport YodlRouterV03 from \"./abis/YodlRouterV0.3.abi.json\";\nimport YodlRouterV04 from \"./abis/YodlRouterV0.4.abi.json\";\n\nexport const YODL_ROUTER_ABIS: { [key: string]: any} = {\n \"0.1\": YodlRouterV01,\n \"0.2\": YodlRouterV02,\n \"0.3\": YodlRouterV03,\n \"0.4\": YodlRouterV04,\n \"test\": YodlRouterV03\n}\nexport const CURVE_ROUTER_ABI = CurveRouterV13Abi;\n","import { Version } from \"./types\";\n\n/**\n * Comparator function that allows sorting version from lowest to highest\n * @param versionA version A to compare\n * @param versionB version B to compare\n * @returns -1 if versionA comes before versionB, 0 if versionA is equal to version B, and 1 if version A comes after version B\n */\nexport function versionComparator(\n versionA: Version,\n versionB: Version\n): -1 | 0 | 1 {\n if (versionA.major < versionB.major) {\n return -1;\n } else if (versionA.major > versionB.major) {\n return 1;\n } else if (versionA.minor < versionB.minor) {\n return -1;\n } else if (versionA.minor > versionB.minor) {\n return 1;\n } else if (versionA.patch < versionB.patch) {\n return -1;\n } else if (versionA.patch > versionB.patch) {\n return 1;\n } else {\n return 0;\n }\n}\n","import { TokenInfo } from \"./types\";\n\nexport type TokenInfoChangeKey = Exclude<\n keyof TokenInfo,\n \"address\" | \"chainId\"\n>;\nexport type TokenInfoChanges = Array<TokenInfoChangeKey>;\n\n/**\n * compares two token info key values\n * this subset of full deep equal functionality does not work on objects or object arrays\n * @param a comparison item a\n * @param b comparison item b\n */\nfunction compareTokenInfoProperty(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (typeof a !== typeof b) return false;\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.every((el, i) => b[i] === el);\n }\n return false;\n}\n\n/**\n * Differences between a base list and an updated list.\n */\nexport interface TokenListDiff {\n /**\n * Tokens from updated with chainId/address not present in base list\n */\n readonly added: TokenInfo[];\n /**\n * Tokens from base with chainId/address not present in the updated list\n */\n readonly removed: TokenInfo[];\n /**\n * The token info that changed\n */\n readonly changed: {\n [chainId: number]: {\n [address: string]: TokenInfoChanges;\n };\n };\n}\n\n/**\n * Computes the diff of a token list where the first argument is the base and the second argument is the updated list.\n * @param base base list\n * @param update updated list\n */\nexport function diffTokenLists(\n base: TokenInfo[],\n update: TokenInfo[]\n): TokenListDiff {\n const indexedBase = base.reduce<{\n [chainId: number]: { [address: string]: TokenInfo };\n }>((memo, tokenInfo) => {\n if (!memo[tokenInfo.chainId]) memo[tokenInfo.chainId] = {};\n memo[tokenInfo.chainId][tokenInfo.address] = tokenInfo;\n return memo;\n }, {});\n\n const newListUpdates = update.reduce<{\n added: TokenInfo[];\n changed: {\n [chainId: number]: {\n [address: string]: TokenInfoChanges;\n };\n };\n index: {\n [chainId: number]: {\n [address: string]: true;\n };\n };\n }>(\n (memo, tokenInfo) => {\n const baseToken = indexedBase[tokenInfo.chainId]?.[tokenInfo.address];\n if (!baseToken) {\n memo.added.push(tokenInfo);\n } else {\n const changes: TokenInfoChanges = Object.keys(tokenInfo)\n .filter(\n (s): s is TokenInfoChangeKey => s !== \"address\" && s !== \"chainId\"\n )\n .filter((s) => {\n return !compareTokenInfoProperty(tokenInfo[s], baseToken[s]);\n });\n if (changes.length > 0) {\n if (!memo.changed[tokenInfo.chainId]) {\n memo.changed[tokenInfo.chainId] = {};\n }\n memo.changed[tokenInfo.chainId][tokenInfo.address] = changes;\n }\n }\n\n if (!memo.index[tokenInfo.chainId]) {\n memo.index[tokenInfo.chainId] = {\n [tokenInfo.address]: true,\n };\n } else {\n memo.index[tokenInfo.chainId][tokenInfo.address] = true;\n }\n\n return memo;\n },\n { added: [], changed: {}, index: {} }\n );\n\n const removed = base.reduce<TokenInfo[]>((list, curr) => {\n if (\n !newListUpdates.index[curr.chainId] ||\n !newListUpdates.index[curr.chainId][curr.address]\n ) {\n list.push(curr);\n }\n return list;\n }, []);\n\n return {\n added: newListUpdates.added,\n changed: newListUpdates.changed,\n removed,\n };\n}\n","import featuredTokenlist from './tokenlist-featured.json';\nimport generatedTokenlist from './tokenlist-generated.json';\nimport chainlist from './chainlist-v1.json';\nimport routerlist from './routerlist-v1.json';\nimport testnetfaucets from './testnet-faucets-v1.json';\nimport priceFeeds from './pricefeeds.json';\nimport fiatCurrencies from './fiatCurrencies.json';\nimport { ChainInfo, RouterInfo, TokenInfo, TestnetFaucetInfo } from './types';\n\nexport * from './abis';\nexport * from './types';\nexport * from './isVersionUpdate';\nexport * from './getVersionUpgrade';\nexport * from './diffTokenLists';\nexport * from './minVersionBump';\nexport * from './nextVersion';\nexport * from './versionComparator';\n\nconst tokenlist = featuredTokenlist.tokens.concat(\n //@ts-ignore\n generatedTokenlist.tokens as TokenInfo[]\n);\n\nexport function getChains(): ChainInfo[] {\n return chainlist.chains;\n}\n\nexport function getChain(chainId: number): ChainInfo {\n return chainlist.chains.find((needle: any) => {\n return needle.chainId === chainId;\n }) as ChainInfo;\n}\n\nexport function getTokenByAddress(\n tokenAddress: string,\n chainId?: number\n): TokenInfo | null {\n return (\n (tokenlist.find((token: any) => {\n return (\n token.address.toLowerCase() === tokenAddress.toLowerCase() &&\n (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo) ?? null\n );\n}\n\nexport function getPriceFeeds(chainId: number) {\n return priceFeeds.filter(f => f.chainId === chainId);\n}\n\nexport function getTokenFeeds(chainId: number) {\n return priceFeeds.filter(f => f.chainId === chainId && f.type === 'crypto');\n}\n\nexport function getFiatFeeds(chainId: number) {\n return priceFeeds.filter(f => f.chainId === chainId && f.type === 'fiat');\n}\n\nexport function getFiatCurrency(symbol: string) {\n return fiatCurrencies.find(\n c => c.symbol.toLowerCase() === symbol.toLowerCase()\n );\n}\n\nexport function getFiatCurrencies() {\n return fiatCurrencies;\n}\n\nexport function getPriceFeed(\n chainId: number,\n baseSymbol: string,\n quoteSymbol?: string\n) {\n const _quoteSymbol = quoteSymbol ? quoteSymbol : 'USD';\n const feed = priceFeeds.find(\n f =>\n f.input?.toLowerCase() === baseSymbol.toLowerCase() &&\n f.output === _quoteSymbol &&\n f.chainId === chainId\n );\n if (feed) {\n return feed;\n } else {\n // feed not found, find any feed that matches the base symbol\n return priceFeeds.find(\n f =>\n f.input?.toLowerCase() === baseSymbol.toLowerCase() &&\n f.chainId === chainId\n );\n }\n}\n\nexport function getFeaturedTokenBySymbol(\n tokenSymbol: string,\n chainId?: number\n): TokenInfo | null {\n return (\n (featuredTokenlist.tokens.find((token: any) => {\n return (\n token.symbol.toLowerCase() === tokenSymbol.toLowerCase() &&\n (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo) ?? null\n );\n}\n\nexport function getTokenBySymbol(\n tokenSymbol: string,\n chainId?: number\n): TokenInfo | null {\n const tokens = tokenlist.filter((token: any) => {\n return (\n token.symbol.toLowerCase() === tokenSymbol.toLowerCase() &&\n (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo[];\n\n if (chainId && tokens && tokens.length > 1) {\n throw new Error(`Duplicate tokens found for symbol ${tokenSymbol}`);\n }\n\n return tokens.length > 0 ? tokens[0] : null;\n}\n\nexport function getTokens(chainId?: number): TokenInfo[] {\n return chainId\n ? (tokenlist.filter((needle: any) => {\n return needle.chainId === chainId;\n }) as TokenInfo[])\n : (tokenlist as TokenInfo[]);\n}\n\nexport function getFaucetAddress(tokenInfo: TokenInfo): TestnetFaucetInfo {\n return testnetfaucets.faucets.find((needle: any) => {\n return (\n needle.token.toLowerCase() === tokenInfo.address.toLowerCase() &&\n needle.chainId === tokenInfo.chainId\n );\n }) as TestnetFaucetInfo;\n}\n\nexport function getRouters(chainId: number): RouterInfo[] {\n return routerlist.routers.filter((needle: any) => {\n return needle.chainId === chainId;\n }) as RouterInfo[];\n}\n\nexport function getRouter(\n chainId: number,\n version: string\n): RouterInfo | undefined {\n return routerlist.routers.find((needle: any) => {\n return needle.chainId === chainId && needle.version === version;\n }) as RouterInfo;\n}\n\nexport function getRouterByAddress(\n address: string,\n chainId?: number\n): RouterInfo | undefined {\n const findByAddress = (router: RouterInfo) =>\n router.address.toLowerCase() === address.toLowerCase();\n\n const findByAddressAndChainId = (router: RouterInfo) =>\n router.address.toLowerCase() === address.toLowerCase() &&\n router.chainId == chainId;\n\n const filter = chainId ? findByAddressAndChainId : findByAddress;\n\n const routerInfo = routerlist.routers.find(filter);\n return routerInfo;\n}\n\nexport function getLatestRouter(chainId: number): RouterInfo {\n const sorted = getRouters(chainId).sort((a, b) => {\n return Date.parse(a.timestamp) - Date.parse(b.timestamp);\n });\n return sorted[sorted.length - 1];\n}\n\nexport function getShortNames(): string[] {\n return chainlist.chains.map(chain => chain.shortName);\n}\n\nexport function getNativeToken(chainId: number): string {\n return chainlist.chains.find(chain => chain.chainId === chainId)?.nativeTokenName!;\n}\n\nexport function getNativeWrappedToken(chainId: number): TokenInfo {\n const nativeTokens = featuredTokenlist.tokens.filter(\n t =>\n t.chainId === chainId &&\n t.tags.map(tag => tag.toLowerCase()).includes('wrapped') &&\n t.tags.map(tag => tag.toLowerCase()).includes('native token')\n ) as TokenInfo[];\n if (nativeTokens.length > 1) {\n throw new Error(\n `Found more than one native wrapped token for chain ${chainId}`\n );\n } else if (nativeTokens.length < 1) {\n throw new Error(`No native wrapped token found for chain ${chainId}`);\n }\n return nativeTokens[0];\n}\n","import { versionComparator } from './versionComparator';\nimport { Version } from './types';\n\n/**\n * Returns true if versionB is an update over versionA\n */\nexport function isVersionUpdate(base: Version, update: Version): boolean {\n return versionComparator(base, update) < 0;\n}","import { diffTokenLists } from \"./diffTokenLists\";\nimport { VersionUpgrade } from \"./getVersionUpgrade\";\nimport { TokenInfo } from \"./types\";\n\n/**\n * Returns the minimum version bump for the given list\n * @param baseList the base list of tokens\n * @param updatedList the updated list of tokens\n */\nexport function minVersionBump(\n baseList: TokenInfo[],\n updatedList: TokenInfo[]\n): VersionUpgrade {\n const diff = diffTokenLists(baseList, updatedList);\n if (diff.removed.length > 0) return VersionUpgrade.MAJOR;\n if (diff.added.length > 0) return VersionUpgrade.MINOR;\n if (Object.keys(diff.changed).length > 0) return VersionUpgrade.PATCH;\n return VersionUpgrade.NONE;\n}\n","import { VersionUpgrade } from \"./getVersionUpgrade\";\nimport { Version } from \"./types\";\n\n/**\n * Returns the next version of the list given a base version and the upgrade type\n * @param base current version\n * @param bump the upgrade type\n */\nexport function nextVersion(base: Version, bump: VersionUpgrade): Version {\n switch (bump) {\n case VersionUpgrade.NONE:\n return base;\n\n case VersionUpgrade.MAJOR:\n return { major: base.major + 1, minor: 0, patch: 0 };\n\n case VersionUpgrade.MINOR:\n return {\n major: base.major,\n minor: base.minor + 1,\n patch: 0,\n };\n\n case VersionUpgrade.PATCH:\n return {\n major: base.major,\n minor: base.minor,\n patch: base.patch + 1,\n };\n }\n}\n"],"names":["TokenListTagNames","VersionUpgrade","YODL_ROUTER_ABIS","0.1","0.2","0.3","YodlRouterV03","0.4","test","versionComparator","versionA","versionB","major","minor","patch","diffTokenLists","base","update","indexedBase","reduce","memo","tokenInfo","chainId","address","newListUpdates","baseToken","_indexedBase$tokenInf","changes","Object","keys","filter","s","a","b","Array","isArray","every","el","i","length","changed","added","push","index","removed","list","curr","tokenlist","featuredTokenlist","tokens","concat","generatedTokenlist","getRouters","routerlist","routers","needle","chainlist","chains","find","testnetfaucets","faucets","token","toLowerCase","tokenSymbol","symbol","fiatCurrencies","c","priceFeeds","f","type","sorted","sort","Date","parse","timestamp","chain","_chainlist$chains$fin","nativeTokenName","nativeTokens","t","tags","map","tag","includes","Error","baseSymbol","quoteSymbol","_quoteSymbol","input","output","version","router","shortName","tokenAddress","MAJOR","NONE","MINOR","PATCH","baseList","updatedList","diff","bump"],"mappings":"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"}
|
package/dist/tokenlists.esm.js
CHANGED
|
@@ -2207,6 +2207,7 @@ var chains = [
|
|
|
2207
2207
|
],
|
|
2208
2208
|
wrappedNativeToken: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
|
|
2209
2209
|
explorerUrl: "https://etherscan.io",
|
|
2210
|
+
nativeTokenName: "ETH",
|
|
2210
2211
|
timestamp: "2024-06-20T08:16:18.193Z",
|
|
2211
2212
|
feeTreasury: "0x9C48d180e4eEE0dA2A899EE1E4c533cA5e92db77",
|
|
2212
2213
|
curveRouterAddress: "0x99a58482BD75cbab83b27EC03CA68fF489b5788f"
|
|
@@ -2222,6 +2223,7 @@ var chains = [
|
|
|
2222
2223
|
],
|
|
2223
2224
|
wrappedNativeToken: "0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6",
|
|
2224
2225
|
explorerUrl: "https://goerli.etherscan.io",
|
|
2226
|
+
nativeTokenName: "ETH",
|
|
2225
2227
|
timestamp: "2022-12-28T14:10:09+00:00",
|
|
2226
2228
|
feeTreasury: "0x3E8A61F0532BA2b58660606d61110cC9E90c4D29"
|
|
2227
2229
|
},
|
|
@@ -2236,6 +2238,7 @@ var chains = [
|
|
|
2236
2238
|
],
|
|
2237
2239
|
wrappedNativeToken: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
|
|
2238
2240
|
explorerUrl: "https://arbiscan.io",
|
|
2241
|
+
nativeTokenName: "ETH",
|
|
2239
2242
|
timestamp: "2024-06-20T08:16:18.932Z",
|
|
2240
2243
|
feeTreasury: "0x5f0947253a8218894af13438ac2e2e0ced30d234",
|
|
2241
2244
|
curveRouterAddress: "0x4c2af2df2a7e567b5155879720619ea06c5bb15d"
|
|
@@ -2251,6 +2254,7 @@ var chains = [
|
|
|
2251
2254
|
],
|
|
2252
2255
|
wrappedNativeToken: "0x4200000000000000000000000000000000000006",
|
|
2253
2256
|
explorerUrl: "https://optimistic.etherscan.io",
|
|
2257
|
+
nativeTokenName: "ETH",
|
|
2254
2258
|
timestamp: "2024-06-20T08:16:19.165Z",
|
|
2255
2259
|
feeTreasury: "0x5f0947253a8218894af13438ac2e2e0ced30d234",
|
|
2256
2260
|
curveRouterAddress: "0x89287c32c2cac1c76227f6d300b2dbbab6b75c08"
|
|
@@ -2266,6 +2270,7 @@ var chains = [
|
|
|
2266
2270
|
],
|
|
2267
2271
|
wrappedNativeToken: "0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB",
|
|
2268
2272
|
explorerUrl: "https://snowtrace.io",
|
|
2273
|
+
nativeTokenName: "AVAX",
|
|
2269
2274
|
timestamp: "2023-01-13T14:52:05+00:00",
|
|
2270
2275
|
feeTreasury: "0x25e22F3ceE59F34622f7DC9a2078B85f17BfBe95"
|
|
2271
2276
|
},
|
|
@@ -2280,6 +2285,7 @@ var chains = [
|
|
|
2280
2285
|
],
|
|
2281
2286
|
wrappedNativeToken: "0xe91d153e0b41518a2ce8dd3d7944fa863463a97d",
|
|
2282
2287
|
explorerUrl: "https://gnosisscan.io",
|
|
2288
|
+
nativeTokenName: "xDAI",
|
|
2283
2289
|
timestamp: "2024-06-20T08:16:18.872Z",
|
|
2284
2290
|
feeTreasury: "0x775aaf73a50C25eEBd308BBb9C34C73D081B423b",
|
|
2285
2291
|
curveRouterAddress: "0xe6358f6a45b502477e83cc1cda759f540e4459ee"
|
|
@@ -2295,6 +2301,7 @@ var chains = [
|
|
|
2295
2301
|
],
|
|
2296
2302
|
wrappedNativeToken: "0x4200000000000000000000000000000000000006",
|
|
2297
2303
|
explorerUrl: "https://basescan.org",
|
|
2304
|
+
nativeTokenName: "ETH",
|
|
2298
2305
|
timestamp: "2024-06-20T08:16:19.051Z",
|
|
2299
2306
|
feeTreasury: "0x46959a8a332eca1a05Bd4F18115b8F2E1C2F2f05",
|
|
2300
2307
|
curveRouterAddress: "0x0000000000000000000000000000000000000000"
|
|
@@ -2310,6 +2317,7 @@ var chains = [
|
|
|
2310
2317
|
],
|
|
2311
2318
|
wrappedNativeToken: "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",
|
|
2312
2319
|
explorerUrl: "https://polygonscan.com",
|
|
2320
|
+
nativeTokenName: "MATIC",
|
|
2313
2321
|
timestamp: "2024-06-20T08:16:18.717Z",
|
|
2314
2322
|
feeTreasury: "0x5f0947253a8218894af13438ac2e2E0CeD30d234",
|
|
2315
2323
|
curveRouterAddress: "0x2a426b3Bb4fa87488387545f15D01d81352732F9"
|
|
@@ -13551,6 +13559,9 @@ function getFiatCurrency(symbol) {
|
|
|
13551
13559
|
return c.symbol.toLowerCase() === symbol.toLowerCase();
|
|
13552
13560
|
});
|
|
13553
13561
|
}
|
|
13562
|
+
function getFiatCurrencies() {
|
|
13563
|
+
return fiatCurrencies;
|
|
13564
|
+
}
|
|
13554
13565
|
function getPriceFeed(chainId, baseSymbol, quoteSymbol) {
|
|
13555
13566
|
var _quoteSymbol = quoteSymbol ? quoteSymbol : 'USD';
|
|
13556
13567
|
|
|
@@ -13633,6 +13644,13 @@ function getShortNames() {
|
|
|
13633
13644
|
return chain.shortName;
|
|
13634
13645
|
});
|
|
13635
13646
|
}
|
|
13647
|
+
function getNativeToken(chainId) {
|
|
13648
|
+
var _chainlist$chains$fin;
|
|
13649
|
+
|
|
13650
|
+
return (_chainlist$chains$fin = chainlist.chains.find(function (chain) {
|
|
13651
|
+
return chain.chainId === chainId;
|
|
13652
|
+
})) == null ? void 0 : _chainlist$chains$fin.nativeTokenName;
|
|
13653
|
+
}
|
|
13636
13654
|
function getNativeWrappedToken(chainId) {
|
|
13637
13655
|
var nativeTokens = featuredTokenlist.tokens.filter(function (t) {
|
|
13638
13656
|
return t.chainId === chainId && t.tags.map(function (tag) {
|
|
@@ -13651,5 +13669,5 @@ function getNativeWrappedToken(chainId) {
|
|
|
13651
13669
|
return nativeTokens[0];
|
|
13652
13670
|
}
|
|
13653
13671
|
|
|
13654
|
-
export { CURVE_ROUTER_ABI, TokenListTagNames, VersionUpgrade, YODL_ROUTER_ABIS, diffTokenLists, getChain, getChains, getFaucetAddress, getFeaturedTokenBySymbol, getFiatCurrency, getFiatFeeds, getLatestRouter, getNativeWrappedToken, getPriceFeed, getPriceFeeds, getRouter, getRouterByAddress, getRouters, getShortNames, getTokenByAddress, getTokenBySymbol, getTokenFeeds, getTokens, getVersionUpgrade, isVersionUpdate, minVersionBump, nextVersion, versionComparator };
|
|
13672
|
+
export { CURVE_ROUTER_ABI, TokenListTagNames, VersionUpgrade, YODL_ROUTER_ABIS, diffTokenLists, getChain, getChains, getFaucetAddress, getFeaturedTokenBySymbol, getFiatCurrencies, getFiatCurrency, getFiatFeeds, getLatestRouter, getNativeToken, getNativeWrappedToken, getPriceFeed, getPriceFeeds, getRouter, getRouterByAddress, getRouters, getShortNames, getTokenByAddress, getTokenBySymbol, getTokenFeeds, getTokens, getVersionUpgrade, isVersionUpdate, minVersionBump, nextVersion, versionComparator };
|
|
13655
13673
|
//# sourceMappingURL=tokenlists.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenlists.esm.js","sources":["../src/abis.ts","../src/types.ts","../src/versionComparator.ts","../src/isVersionUpdate.ts","../src/getVersionUpgrade.ts","../src/diffTokenLists.ts","../src/minVersionBump.ts","../src/nextVersion.ts","../src/index.ts"],"sourcesContent":["import CurveRouterV13Abi from \"./abis/curverouterv13.abi.json\";\nimport YodlRouterV01 from \"./abis/YodlRouterV0.1.abi.json\";\nimport YodlRouterV02 from \"./abis/YodlRouterV0.2.abi.json\";\nimport YodlRouterV03 from \"./abis/YodlRouterV0.3.abi.json\";\nimport YodlRouterV04 from \"./abis/YodlRouterV0.4.abi.json\";\n\nexport const YODL_ROUTER_ABIS: { [key: string]: any} = {\n \"0.1\": YodlRouterV01,\n \"0.2\": YodlRouterV02,\n \"0.3\": YodlRouterV03,\n \"0.4\": YodlRouterV04,\n \"test\": YodlRouterV03\n}\nexport const CURVE_ROUTER_ABI = CurveRouterV13Abi;\n","type ExtensionValue = string | number | boolean | null | undefined;\n\nexport enum TokenListTagNames {\n // Networks\n MAINNET = 'Mainnet',\n OPTIMISM = 'Optimism',\n ARBITRUM = 'Arbitrum',\n AVALANCHE = 'Avalanche',\n BASE = 'Base',\n TESTNET = 'TESTNET',\n\n // Coin/currency\n STABLECOIN = 'Stablecoin',\n USD = 'USD',\n EUR = 'EUR',\n\n // Misc\n TOP_10 = 'Top10',\n NATIVE_TOKEN = 'Native Token',\n}\n\nexport interface RouterInfo {\n readonly chainId: number;\n readonly address: string;\n readonly timestamp: string;\n readonly version: string;\n readonly fee: string;\n}\n\nexport interface TestnetFaucetInfo {\n readonly chainId: number;\n readonly address: string;\n readonly token: string;\n}\n\nexport interface ChainInfo {\n readonly chainId: number;\n readonly chainName: string;\n // shortName is the EIP3770 short name\n // chain details can be found here: https://github.com/ethereum-lists/chains/tree/master/_data/chains\n readonly shortName: string;\n readonly logoUri: string;\n readonly explorerUrl: string;\n readonly timestamp: string;\n readonly rpcUrls: string[];\n readonly wrappedNativeToken: string;\n readonly feeTreasury?: string;\n readonly testnet: boolean;\n readonly priceFeeds?: {\n readonly [key: string]: string | undefined;\n };\n readonly tokenFeeds?: {\n readonly [key: string]: string | undefined;\n };\n readonly curveRouterAddress?: string;\n}\n\nexport interface TokenInfo {\n readonly chainId: number;\n readonly address: string;\n readonly name: string;\n readonly decimals: number;\n readonly symbol: string;\n readonly coinGeckoId?: string;\n readonly currency?: string;\n readonly logoUri?: string;\n readonly tags?: TokenListTagNames[];\n readonly extensions?: {\n readonly [key: string]:\n | {\n [key: string]:\n | {\n [key: string]: ExtensionValue;\n }\n | ExtensionValue;\n }\n | ExtensionValue;\n };\n}\n\nexport interface Version {\n readonly major: number;\n readonly minor: number;\n readonly patch: number;\n}\n\nexport interface TokenList {\n readonly name: string;\n readonly timestamp: string;\n readonly version: Version;\n readonly tokens: TokenInfo[];\n readonly keywords?: string[];\n readonly tags?: any;\n readonly logoUri?: string;\n}\n\nexport interface PriceFeed {\n readonly address: string;\n readonly name: string;\n readonly assetName: string;\n readonly type: string;\n readonly path: string;\n readonly input: string;\n readonly output: string;\n readonly deviation: number;\n readonly decimals: number;\n readonly updateInterval: number;\n readonly chainId: number;\n}\n\nexport interface FiatCurrency {\n readonly name: string;\n readonly symbol: string;\n readonly sign: string;\n}\n","import { Version } from \"./types\";\n\n/**\n * Comparator function that allows sorting version from lowest to highest\n * @param versionA version A to compare\n * @param versionB version B to compare\n * @returns -1 if versionA comes before versionB, 0 if versionA is equal to version B, and 1 if version A comes after version B\n */\nexport function versionComparator(\n versionA: Version,\n versionB: Version\n): -1 | 0 | 1 {\n if (versionA.major < versionB.major) {\n return -1;\n } else if (versionA.major > versionB.major) {\n return 1;\n } else if (versionA.minor < versionB.minor) {\n return -1;\n } else if (versionA.minor > versionB.minor) {\n return 1;\n } else if (versionA.patch < versionB.patch) {\n return -1;\n } else if (versionA.patch > versionB.patch) {\n return 1;\n } else {\n return 0;\n }\n}\n","import { versionComparator } from './versionComparator';\nimport { Version } from './types';\n\n/**\n * Returns true if versionB is an update over versionA\n */\nexport function isVersionUpdate(base: Version, update: Version): boolean {\n return versionComparator(base, update) < 0;\n}","import { Version } from \"./types\";\n\n/**\n * Enum describing types of version differences\n */\nexport enum VersionUpgrade {\n NONE,\n PATCH,\n MINOR,\n MAJOR,\n}\n\n/**\n * Return the upgrade type from the base version to the update version.\n * Note that downgrades and equivalent versions are both treated as `NONE`.\n * @param base base list\n * @param update update to the list\n */\nexport function getVersionUpgrade(\n base: Version,\n update: Version\n): VersionUpgrade {\n if (update.major > base.major) {\n return VersionUpgrade.MAJOR;\n }\n if (update.major < base.major) {\n return VersionUpgrade.NONE;\n }\n if (update.minor > base.minor) {\n return VersionUpgrade.MINOR;\n }\n if (update.minor < base.minor) {\n return VersionUpgrade.NONE;\n }\n return update.patch > base.patch ? VersionUpgrade.PATCH : VersionUpgrade.NONE;\n}\n","import { TokenInfo } from \"./types\";\n\nexport type TokenInfoChangeKey = Exclude<\n keyof TokenInfo,\n \"address\" | \"chainId\"\n>;\nexport type TokenInfoChanges = Array<TokenInfoChangeKey>;\n\n/**\n * compares two token info key values\n * this subset of full deep equal functionality does not work on objects or object arrays\n * @param a comparison item a\n * @param b comparison item b\n */\nfunction compareTokenInfoProperty(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (typeof a !== typeof b) return false;\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.every((el, i) => b[i] === el);\n }\n return false;\n}\n\n/**\n * Differences between a base list and an updated list.\n */\nexport interface TokenListDiff {\n /**\n * Tokens from updated with chainId/address not present in base list\n */\n readonly added: TokenInfo[];\n /**\n * Tokens from base with chainId/address not present in the updated list\n */\n readonly removed: TokenInfo[];\n /**\n * The token info that changed\n */\n readonly changed: {\n [chainId: number]: {\n [address: string]: TokenInfoChanges;\n };\n };\n}\n\n/**\n * Computes the diff of a token list where the first argument is the base and the second argument is the updated list.\n * @param base base list\n * @param update updated list\n */\nexport function diffTokenLists(\n base: TokenInfo[],\n update: TokenInfo[]\n): TokenListDiff {\n const indexedBase = base.reduce<{\n [chainId: number]: { [address: string]: TokenInfo };\n }>((memo, tokenInfo) => {\n if (!memo[tokenInfo.chainId]) memo[tokenInfo.chainId] = {};\n memo[tokenInfo.chainId][tokenInfo.address] = tokenInfo;\n return memo;\n }, {});\n\n const newListUpdates = update.reduce<{\n added: TokenInfo[];\n changed: {\n [chainId: number]: {\n [address: string]: TokenInfoChanges;\n };\n };\n index: {\n [chainId: number]: {\n [address: string]: true;\n };\n };\n }>(\n (memo, tokenInfo) => {\n const baseToken = indexedBase[tokenInfo.chainId]?.[tokenInfo.address];\n if (!baseToken) {\n memo.added.push(tokenInfo);\n } else {\n const changes: TokenInfoChanges = Object.keys(tokenInfo)\n .filter(\n (s): s is TokenInfoChangeKey => s !== \"address\" && s !== \"chainId\"\n )\n .filter((s) => {\n return !compareTokenInfoProperty(tokenInfo[s], baseToken[s]);\n });\n if (changes.length > 0) {\n if (!memo.changed[tokenInfo.chainId]) {\n memo.changed[tokenInfo.chainId] = {};\n }\n memo.changed[tokenInfo.chainId][tokenInfo.address] = changes;\n }\n }\n\n if (!memo.index[tokenInfo.chainId]) {\n memo.index[tokenInfo.chainId] = {\n [tokenInfo.address]: true,\n };\n } else {\n memo.index[tokenInfo.chainId][tokenInfo.address] = true;\n }\n\n return memo;\n },\n { added: [], changed: {}, index: {} }\n );\n\n const removed = base.reduce<TokenInfo[]>((list, curr) => {\n if (\n !newListUpdates.index[curr.chainId] ||\n !newListUpdates.index[curr.chainId][curr.address]\n ) {\n list.push(curr);\n }\n return list;\n }, []);\n\n return {\n added: newListUpdates.added,\n changed: newListUpdates.changed,\n removed,\n };\n}\n","import { diffTokenLists } from \"./diffTokenLists\";\nimport { VersionUpgrade } from \"./getVersionUpgrade\";\nimport { TokenInfo } from \"./types\";\n\n/**\n * Returns the minimum version bump for the given list\n * @param baseList the base list of tokens\n * @param updatedList the updated list of tokens\n */\nexport function minVersionBump(\n baseList: TokenInfo[],\n updatedList: TokenInfo[]\n): VersionUpgrade {\n const diff = diffTokenLists(baseList, updatedList);\n if (diff.removed.length > 0) return VersionUpgrade.MAJOR;\n if (diff.added.length > 0) return VersionUpgrade.MINOR;\n if (Object.keys(diff.changed).length > 0) return VersionUpgrade.PATCH;\n return VersionUpgrade.NONE;\n}\n","import { VersionUpgrade } from \"./getVersionUpgrade\";\nimport { Version } from \"./types\";\n\n/**\n * Returns the next version of the list given a base version and the upgrade type\n * @param base current version\n * @param bump the upgrade type\n */\nexport function nextVersion(base: Version, bump: VersionUpgrade): Version {\n switch (bump) {\n case VersionUpgrade.NONE:\n return base;\n\n case VersionUpgrade.MAJOR:\n return { major: base.major + 1, minor: 0, patch: 0 };\n\n case VersionUpgrade.MINOR:\n return {\n major: base.major,\n minor: base.minor + 1,\n patch: 0,\n };\n\n case VersionUpgrade.PATCH:\n return {\n major: base.major,\n minor: base.minor,\n patch: base.patch + 1,\n };\n }\n}\n","import featuredTokenlist from './tokenlist-featured.json';\nimport generatedTokenlist from './tokenlist-generated.json';\nimport chainlist from './chainlist-v1.json';\nimport routerlist from './routerlist-v1.json';\nimport testnetfaucets from './testnet-faucets-v1.json';\nimport priceFeeds from './pricefeeds.json';\nimport fiatCurrencies from './fiatCurrencies.json';\nimport { ChainInfo, RouterInfo, TokenInfo, TestnetFaucetInfo } from './types';\n\nexport * from './abis';\nexport * from './types';\nexport * from './isVersionUpdate';\nexport * from './getVersionUpgrade';\nexport * from './diffTokenLists';\nexport * from './minVersionBump';\nexport * from './nextVersion';\nexport * from './versionComparator';\n\nconst tokenlist = featuredTokenlist.tokens.concat(\n //@ts-ignore\n generatedTokenlist.tokens as TokenInfo[]\n);\n\nexport function getChains(): ChainInfo[] {\n return chainlist.chains;\n}\n\nexport function getChain(chainId: number): ChainInfo {\n return chainlist.chains.find((needle: any) => {\n return needle.chainId === chainId;\n }) as ChainInfo;\n}\n\nexport function getTokenByAddress(\n tokenAddress: string,\n chainId?: number\n): TokenInfo | null {\n return (\n (tokenlist.find((token: any) => {\n return (\n token.address.toLowerCase() === tokenAddress.toLowerCase() &&\n (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo) ?? null\n );\n}\n\nexport function getPriceFeeds(chainId: number) {\n return priceFeeds.filter(f => f.chainId === chainId);\n}\n\nexport function getTokenFeeds(chainId: number) {\n return priceFeeds.filter(f => f.chainId === chainId && f.type === 'crypto');\n}\n\nexport function getFiatFeeds(chainId: number) {\n return priceFeeds.filter(f => f.chainId === chainId && f.type === 'fiat');\n}\n\nexport function getFiatCurrency(symbol: string) {\n return fiatCurrencies.find(\n c => c.symbol.toLowerCase() === symbol.toLowerCase()\n );\n}\n\nexport function getPriceFeed(\n chainId: number,\n baseSymbol: string,\n quoteSymbol?: string\n) {\n const _quoteSymbol = quoteSymbol ? quoteSymbol : 'USD';\n const feed = priceFeeds.find(\n f =>\n f.input?.toLowerCase() === baseSymbol.toLowerCase() &&\n f.output === _quoteSymbol &&\n f.chainId === chainId\n );\n if (feed) {\n return feed;\n } else {\n // feed not found, find any feed that matches the base symbol\n return priceFeeds.find(\n f =>\n f.input?.toLowerCase() === baseSymbol.toLowerCase() &&\n f.chainId === chainId\n );\n }\n}\n\nexport function getFeaturedTokenBySymbol(\n tokenSymbol: string,\n chainId?: number\n): TokenInfo | null {\n return (\n (featuredTokenlist.tokens.find((token: any) => {\n return (\n token.symbol.toLowerCase() === tokenSymbol.toLowerCase() &&\n (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo) ?? null\n );\n}\n\nexport function getTokenBySymbol(\n tokenSymbol: string,\n chainId?: number\n): TokenInfo | null {\n const tokens = tokenlist.filter((token: any) => {\n return (\n token.symbol.toLowerCase() === tokenSymbol.toLowerCase() &&\n (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo[];\n\n if (chainId && tokens && tokens.length > 1) {\n throw new Error(`Duplicate tokens found for symbol ${tokenSymbol}`);\n }\n\n return tokens.length > 0 ? tokens[0] : null;\n}\n\nexport function getTokens(chainId?: number): TokenInfo[] {\n return chainId\n ? (tokenlist.filter((needle: any) => {\n return needle.chainId === chainId;\n }) as TokenInfo[])\n : (tokenlist as TokenInfo[]);\n}\n\nexport function getFaucetAddress(tokenInfo: TokenInfo): TestnetFaucetInfo {\n return testnetfaucets.faucets.find((needle: any) => {\n return (\n needle.token.toLowerCase() === tokenInfo.address.toLowerCase() &&\n needle.chainId === tokenInfo.chainId\n );\n }) as TestnetFaucetInfo;\n}\n\nexport function getRouters(chainId: number): RouterInfo[] {\n return routerlist.routers.filter((needle: any) => {\n return needle.chainId === chainId;\n }) as RouterInfo[];\n}\n\nexport function getRouter(\n chainId: number,\n version: string\n): RouterInfo | undefined {\n return routerlist.routers.find((needle: any) => {\n return needle.chainId === chainId && needle.version === version;\n }) as RouterInfo;\n}\n\nexport function getRouterByAddress(\n address: string,\n chainId?: number\n): RouterInfo | undefined {\n const findByAddress = (router: RouterInfo) =>\n router.address.toLowerCase() === address.toLowerCase();\n\n const findByAddressAndChainId = (router: RouterInfo) =>\n router.address.toLowerCase() === address.toLowerCase() &&\n router.chainId == chainId;\n\n const filter = chainId ? findByAddressAndChainId : findByAddress;\n\n const routerInfo = routerlist.routers.find(filter);\n return routerInfo;\n}\n\nexport function getLatestRouter(chainId: number): RouterInfo {\n const sorted = getRouters(chainId).sort((a, b) => {\n return Date.parse(a.timestamp) - Date.parse(b.timestamp);\n });\n return sorted[sorted.length - 1];\n}\n\nexport function getShortNames(): string[] {\n return chainlist.chains.map(chain => chain.shortName);\n}\n\nexport function getNativeWrappedToken(chainId: number): TokenInfo {\n const nativeTokens = featuredTokenlist.tokens.filter(\n t =>\n t.chainId === chainId &&\n t.tags.map(tag => tag.toLowerCase()).includes('wrapped') &&\n t.tags.map(tag => tag.toLowerCase()).includes('native token')\n ) as TokenInfo[];\n if (nativeTokens.length > 1) {\n throw new Error(\n `Found more than one native wrapped token for chain ${chainId}`\n );\n } else if (nativeTokens.length < 1) {\n throw new Error(`No native wrapped token found for chain ${chainId}`);\n }\n return nativeTokens[0];\n}\n"],"names":["YODL_ROUTER_ABIS","YodlRouterV01","YodlRouterV02","YodlRouterV03","YodlRouterV04","CURVE_ROUTER_ABI","CurveRouterV13Abi","TokenListTagNames","versionComparator","versionA","versionB","major","minor","patch","isVersionUpdate","base","update","VersionUpgrade","getVersionUpgrade","MAJOR","NONE","MINOR","PATCH","compareTokenInfoProperty","a","b","Array","isArray","every","el","i","diffTokenLists","indexedBase","reduce","memo","tokenInfo","chainId","address","newListUpdates","baseToken","added","push","changes","Object","keys","filter","s","length","changed","index","removed","list","curr","minVersionBump","baseList","updatedList","diff","nextVersion","bump","tokenlist","featuredTokenlist","tokens","concat","generatedTokenlist","getChains","chainlist","chains","getChain","find","needle","getTokenByAddress","tokenAddress","token","toLowerCase","getPriceFeeds","priceFeeds","f","getTokenFeeds","type","getFiatFeeds","getFiatCurrency","symbol","fiatCurrencies","c","getPriceFeed","baseSymbol","quoteSymbol","_quoteSymbol","feed","input","output","getFeaturedTokenBySymbol","tokenSymbol","getTokenBySymbol","Error","getTokens","getFaucetAddress","testnetfaucets","faucets","getRouters","routerlist","routers","getRouter","version","getRouterByAddress","findByAddress","router","findByAddressAndChainId","routerInfo","getLatestRouter","sorted","sort","Date","parse","timestamp","getShortNames","map","chain","shortName","getNativeWrappedToken","nativeTokens","t","tags","tag","includes"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
|
1
|
+
{"version":3,"file":"tokenlists.esm.js","sources":["../src/abis.ts","../src/types.ts","../src/versionComparator.ts","../src/isVersionUpdate.ts","../src/getVersionUpgrade.ts","../src/diffTokenLists.ts","../src/minVersionBump.ts","../src/nextVersion.ts","../src/index.ts"],"sourcesContent":["import CurveRouterV13Abi from \"./abis/curverouterv13.abi.json\";\nimport YodlRouterV01 from \"./abis/YodlRouterV0.1.abi.json\";\nimport YodlRouterV02 from \"./abis/YodlRouterV0.2.abi.json\";\nimport YodlRouterV03 from \"./abis/YodlRouterV0.3.abi.json\";\nimport YodlRouterV04 from \"./abis/YodlRouterV0.4.abi.json\";\n\nexport const YODL_ROUTER_ABIS: { [key: string]: any} = {\n \"0.1\": YodlRouterV01,\n \"0.2\": YodlRouterV02,\n \"0.3\": YodlRouterV03,\n \"0.4\": YodlRouterV04,\n \"test\": YodlRouterV03\n}\nexport const CURVE_ROUTER_ABI = CurveRouterV13Abi;\n","type ExtensionValue = string | number | boolean | null | undefined;\n\nexport enum TokenListTagNames {\n // Networks\n MAINNET = 'Mainnet',\n OPTIMISM = 'Optimism',\n ARBITRUM = 'Arbitrum',\n AVALANCHE = 'Avalanche',\n BASE = 'Base',\n TESTNET = 'TESTNET',\n\n // Coin/currency\n STABLECOIN = 'Stablecoin',\n USD = 'USD',\n EUR = 'EUR',\n\n // Misc\n TOP_10 = 'Top10',\n NATIVE_TOKEN = 'Native Token',\n}\n\nexport interface RouterInfo {\n readonly chainId: number;\n readonly address: string;\n readonly timestamp: string;\n readonly version: string;\n readonly fee: string;\n}\n\nexport interface TestnetFaucetInfo {\n readonly chainId: number;\n readonly address: string;\n readonly token: string;\n}\n\nexport interface ChainInfo {\n readonly chainId: number;\n readonly chainName: string;\n // shortName is the EIP3770 short name\n // chain details can be found here: https://github.com/ethereum-lists/chains/tree/master/_data/chains\n readonly shortName: string;\n readonly logoUri: string;\n readonly explorerUrl: string;\n readonly timestamp: string;\n readonly rpcUrls: string[];\n readonly wrappedNativeToken: string;\n readonly nativeTokenName: string;\n readonly feeTreasury?: string;\n readonly testnet: boolean;\n readonly priceFeeds?: {\n readonly [key: string]: string | undefined;\n };\n readonly tokenFeeds?: {\n readonly [key: string]: string | undefined;\n };\n readonly curveRouterAddress?: string;\n}\n\nexport interface TokenInfo {\n readonly chainId: number;\n readonly address: string;\n readonly name: string;\n readonly decimals: number;\n readonly symbol: string;\n readonly coinGeckoId?: string;\n readonly currency?: string;\n readonly logoUri?: string;\n readonly tags?: TokenListTagNames[];\n readonly extensions?: {\n readonly [key: string]:\n | {\n [key: string]:\n | {\n [key: string]: ExtensionValue;\n }\n | ExtensionValue;\n }\n | ExtensionValue;\n };\n}\n\nexport interface Version {\n readonly major: number;\n readonly minor: number;\n readonly patch: number;\n}\n\nexport interface TokenList {\n readonly name: string;\n readonly timestamp: string;\n readonly version: Version;\n readonly tokens: TokenInfo[];\n readonly keywords?: string[];\n readonly tags?: any;\n readonly logoUri?: string;\n}\n\nexport interface PriceFeed {\n readonly address: string;\n readonly name: string;\n readonly assetName: string;\n readonly type: string;\n readonly path: string;\n readonly input: string;\n readonly output: string;\n readonly deviation: number;\n readonly decimals: number;\n readonly updateInterval: number;\n readonly chainId: number;\n}\n\nexport interface FiatCurrency {\n readonly name: string;\n readonly symbol: string;\n readonly sign: string;\n}\n","import { Version } from \"./types\";\n\n/**\n * Comparator function that allows sorting version from lowest to highest\n * @param versionA version A to compare\n * @param versionB version B to compare\n * @returns -1 if versionA comes before versionB, 0 if versionA is equal to version B, and 1 if version A comes after version B\n */\nexport function versionComparator(\n versionA: Version,\n versionB: Version\n): -1 | 0 | 1 {\n if (versionA.major < versionB.major) {\n return -1;\n } else if (versionA.major > versionB.major) {\n return 1;\n } else if (versionA.minor < versionB.minor) {\n return -1;\n } else if (versionA.minor > versionB.minor) {\n return 1;\n } else if (versionA.patch < versionB.patch) {\n return -1;\n } else if (versionA.patch > versionB.patch) {\n return 1;\n } else {\n return 0;\n }\n}\n","import { versionComparator } from './versionComparator';\nimport { Version } from './types';\n\n/**\n * Returns true if versionB is an update over versionA\n */\nexport function isVersionUpdate(base: Version, update: Version): boolean {\n return versionComparator(base, update) < 0;\n}","import { Version } from \"./types\";\n\n/**\n * Enum describing types of version differences\n */\nexport enum VersionUpgrade {\n NONE,\n PATCH,\n MINOR,\n MAJOR,\n}\n\n/**\n * Return the upgrade type from the base version to the update version.\n * Note that downgrades and equivalent versions are both treated as `NONE`.\n * @param base base list\n * @param update update to the list\n */\nexport function getVersionUpgrade(\n base: Version,\n update: Version\n): VersionUpgrade {\n if (update.major > base.major) {\n return VersionUpgrade.MAJOR;\n }\n if (update.major < base.major) {\n return VersionUpgrade.NONE;\n }\n if (update.minor > base.minor) {\n return VersionUpgrade.MINOR;\n }\n if (update.minor < base.minor) {\n return VersionUpgrade.NONE;\n }\n return update.patch > base.patch ? VersionUpgrade.PATCH : VersionUpgrade.NONE;\n}\n","import { TokenInfo } from \"./types\";\n\nexport type TokenInfoChangeKey = Exclude<\n keyof TokenInfo,\n \"address\" | \"chainId\"\n>;\nexport type TokenInfoChanges = Array<TokenInfoChangeKey>;\n\n/**\n * compares two token info key values\n * this subset of full deep equal functionality does not work on objects or object arrays\n * @param a comparison item a\n * @param b comparison item b\n */\nfunction compareTokenInfoProperty(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (typeof a !== typeof b) return false;\n if (Array.isArray(a) && Array.isArray(b)) {\n return a.every((el, i) => b[i] === el);\n }\n return false;\n}\n\n/**\n * Differences between a base list and an updated list.\n */\nexport interface TokenListDiff {\n /**\n * Tokens from updated with chainId/address not present in base list\n */\n readonly added: TokenInfo[];\n /**\n * Tokens from base with chainId/address not present in the updated list\n */\n readonly removed: TokenInfo[];\n /**\n * The token info that changed\n */\n readonly changed: {\n [chainId: number]: {\n [address: string]: TokenInfoChanges;\n };\n };\n}\n\n/**\n * Computes the diff of a token list where the first argument is the base and the second argument is the updated list.\n * @param base base list\n * @param update updated list\n */\nexport function diffTokenLists(\n base: TokenInfo[],\n update: TokenInfo[]\n): TokenListDiff {\n const indexedBase = base.reduce<{\n [chainId: number]: { [address: string]: TokenInfo };\n }>((memo, tokenInfo) => {\n if (!memo[tokenInfo.chainId]) memo[tokenInfo.chainId] = {};\n memo[tokenInfo.chainId][tokenInfo.address] = tokenInfo;\n return memo;\n }, {});\n\n const newListUpdates = update.reduce<{\n added: TokenInfo[];\n changed: {\n [chainId: number]: {\n [address: string]: TokenInfoChanges;\n };\n };\n index: {\n [chainId: number]: {\n [address: string]: true;\n };\n };\n }>(\n (memo, tokenInfo) => {\n const baseToken = indexedBase[tokenInfo.chainId]?.[tokenInfo.address];\n if (!baseToken) {\n memo.added.push(tokenInfo);\n } else {\n const changes: TokenInfoChanges = Object.keys(tokenInfo)\n .filter(\n (s): s is TokenInfoChangeKey => s !== \"address\" && s !== \"chainId\"\n )\n .filter((s) => {\n return !compareTokenInfoProperty(tokenInfo[s], baseToken[s]);\n });\n if (changes.length > 0) {\n if (!memo.changed[tokenInfo.chainId]) {\n memo.changed[tokenInfo.chainId] = {};\n }\n memo.changed[tokenInfo.chainId][tokenInfo.address] = changes;\n }\n }\n\n if (!memo.index[tokenInfo.chainId]) {\n memo.index[tokenInfo.chainId] = {\n [tokenInfo.address]: true,\n };\n } else {\n memo.index[tokenInfo.chainId][tokenInfo.address] = true;\n }\n\n return memo;\n },\n { added: [], changed: {}, index: {} }\n );\n\n const removed = base.reduce<TokenInfo[]>((list, curr) => {\n if (\n !newListUpdates.index[curr.chainId] ||\n !newListUpdates.index[curr.chainId][curr.address]\n ) {\n list.push(curr);\n }\n return list;\n }, []);\n\n return {\n added: newListUpdates.added,\n changed: newListUpdates.changed,\n removed,\n };\n}\n","import { diffTokenLists } from \"./diffTokenLists\";\nimport { VersionUpgrade } from \"./getVersionUpgrade\";\nimport { TokenInfo } from \"./types\";\n\n/**\n * Returns the minimum version bump for the given list\n * @param baseList the base list of tokens\n * @param updatedList the updated list of tokens\n */\nexport function minVersionBump(\n baseList: TokenInfo[],\n updatedList: TokenInfo[]\n): VersionUpgrade {\n const diff = diffTokenLists(baseList, updatedList);\n if (diff.removed.length > 0) return VersionUpgrade.MAJOR;\n if (diff.added.length > 0) return VersionUpgrade.MINOR;\n if (Object.keys(diff.changed).length > 0) return VersionUpgrade.PATCH;\n return VersionUpgrade.NONE;\n}\n","import { VersionUpgrade } from \"./getVersionUpgrade\";\nimport { Version } from \"./types\";\n\n/**\n * Returns the next version of the list given a base version and the upgrade type\n * @param base current version\n * @param bump the upgrade type\n */\nexport function nextVersion(base: Version, bump: VersionUpgrade): Version {\n switch (bump) {\n case VersionUpgrade.NONE:\n return base;\n\n case VersionUpgrade.MAJOR:\n return { major: base.major + 1, minor: 0, patch: 0 };\n\n case VersionUpgrade.MINOR:\n return {\n major: base.major,\n minor: base.minor + 1,\n patch: 0,\n };\n\n case VersionUpgrade.PATCH:\n return {\n major: base.major,\n minor: base.minor,\n patch: base.patch + 1,\n };\n }\n}\n","import featuredTokenlist from './tokenlist-featured.json';\nimport generatedTokenlist from './tokenlist-generated.json';\nimport chainlist from './chainlist-v1.json';\nimport routerlist from './routerlist-v1.json';\nimport testnetfaucets from './testnet-faucets-v1.json';\nimport priceFeeds from './pricefeeds.json';\nimport fiatCurrencies from './fiatCurrencies.json';\nimport { ChainInfo, RouterInfo, TokenInfo, TestnetFaucetInfo } from './types';\n\nexport * from './abis';\nexport * from './types';\nexport * from './isVersionUpdate';\nexport * from './getVersionUpgrade';\nexport * from './diffTokenLists';\nexport * from './minVersionBump';\nexport * from './nextVersion';\nexport * from './versionComparator';\n\nconst tokenlist = featuredTokenlist.tokens.concat(\n //@ts-ignore\n generatedTokenlist.tokens as TokenInfo[]\n);\n\nexport function getChains(): ChainInfo[] {\n return chainlist.chains;\n}\n\nexport function getChain(chainId: number): ChainInfo {\n return chainlist.chains.find((needle: any) => {\n return needle.chainId === chainId;\n }) as ChainInfo;\n}\n\nexport function getTokenByAddress(\n tokenAddress: string,\n chainId?: number\n): TokenInfo | null {\n return (\n (tokenlist.find((token: any) => {\n return (\n token.address.toLowerCase() === tokenAddress.toLowerCase() &&\n (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo) ?? null\n );\n}\n\nexport function getPriceFeeds(chainId: number) {\n return priceFeeds.filter(f => f.chainId === chainId);\n}\n\nexport function getTokenFeeds(chainId: number) {\n return priceFeeds.filter(f => f.chainId === chainId && f.type === 'crypto');\n}\n\nexport function getFiatFeeds(chainId: number) {\n return priceFeeds.filter(f => f.chainId === chainId && f.type === 'fiat');\n}\n\nexport function getFiatCurrency(symbol: string) {\n return fiatCurrencies.find(\n c => c.symbol.toLowerCase() === symbol.toLowerCase()\n );\n}\n\nexport function getFiatCurrencies() {\n return fiatCurrencies;\n}\n\nexport function getPriceFeed(\n chainId: number,\n baseSymbol: string,\n quoteSymbol?: string\n) {\n const _quoteSymbol = quoteSymbol ? quoteSymbol : 'USD';\n const feed = priceFeeds.find(\n f =>\n f.input?.toLowerCase() === baseSymbol.toLowerCase() &&\n f.output === _quoteSymbol &&\n f.chainId === chainId\n );\n if (feed) {\n return feed;\n } else {\n // feed not found, find any feed that matches the base symbol\n return priceFeeds.find(\n f =>\n f.input?.toLowerCase() === baseSymbol.toLowerCase() &&\n f.chainId === chainId\n );\n }\n}\n\nexport function getFeaturedTokenBySymbol(\n tokenSymbol: string,\n chainId?: number\n): TokenInfo | null {\n return (\n (featuredTokenlist.tokens.find((token: any) => {\n return (\n token.symbol.toLowerCase() === tokenSymbol.toLowerCase() &&\n (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo) ?? null\n );\n}\n\nexport function getTokenBySymbol(\n tokenSymbol: string,\n chainId?: number\n): TokenInfo | null {\n const tokens = tokenlist.filter((token: any) => {\n return (\n token.symbol.toLowerCase() === tokenSymbol.toLowerCase() &&\n (!chainId || token.chainId === chainId)\n );\n }) as TokenInfo[];\n\n if (chainId && tokens && tokens.length > 1) {\n throw new Error(`Duplicate tokens found for symbol ${tokenSymbol}`);\n }\n\n return tokens.length > 0 ? tokens[0] : null;\n}\n\nexport function getTokens(chainId?: number): TokenInfo[] {\n return chainId\n ? (tokenlist.filter((needle: any) => {\n return needle.chainId === chainId;\n }) as TokenInfo[])\n : (tokenlist as TokenInfo[]);\n}\n\nexport function getFaucetAddress(tokenInfo: TokenInfo): TestnetFaucetInfo {\n return testnetfaucets.faucets.find((needle: any) => {\n return (\n needle.token.toLowerCase() === tokenInfo.address.toLowerCase() &&\n needle.chainId === tokenInfo.chainId\n );\n }) as TestnetFaucetInfo;\n}\n\nexport function getRouters(chainId: number): RouterInfo[] {\n return routerlist.routers.filter((needle: any) => {\n return needle.chainId === chainId;\n }) as RouterInfo[];\n}\n\nexport function getRouter(\n chainId: number,\n version: string\n): RouterInfo | undefined {\n return routerlist.routers.find((needle: any) => {\n return needle.chainId === chainId && needle.version === version;\n }) as RouterInfo;\n}\n\nexport function getRouterByAddress(\n address: string,\n chainId?: number\n): RouterInfo | undefined {\n const findByAddress = (router: RouterInfo) =>\n router.address.toLowerCase() === address.toLowerCase();\n\n const findByAddressAndChainId = (router: RouterInfo) =>\n router.address.toLowerCase() === address.toLowerCase() &&\n router.chainId == chainId;\n\n const filter = chainId ? findByAddressAndChainId : findByAddress;\n\n const routerInfo = routerlist.routers.find(filter);\n return routerInfo;\n}\n\nexport function getLatestRouter(chainId: number): RouterInfo {\n const sorted = getRouters(chainId).sort((a, b) => {\n return Date.parse(a.timestamp) - Date.parse(b.timestamp);\n });\n return sorted[sorted.length - 1];\n}\n\nexport function getShortNames(): string[] {\n return chainlist.chains.map(chain => chain.shortName);\n}\n\nexport function getNativeToken(chainId: number): string {\n return chainlist.chains.find(chain => chain.chainId === chainId)?.nativeTokenName!;\n}\n\nexport function getNativeWrappedToken(chainId: number): TokenInfo {\n const nativeTokens = featuredTokenlist.tokens.filter(\n t =>\n t.chainId === chainId &&\n t.tags.map(tag => tag.toLowerCase()).includes('wrapped') &&\n t.tags.map(tag => tag.toLowerCase()).includes('native token')\n ) as TokenInfo[];\n if (nativeTokens.length > 1) {\n throw new Error(\n `Found more than one native wrapped token for chain ${chainId}`\n );\n } else if (nativeTokens.length < 1) {\n throw new Error(`No native wrapped token found for chain ${chainId}`);\n }\n return nativeTokens[0];\n}\n"],"names":["YODL_ROUTER_ABIS","YodlRouterV01","YodlRouterV02","YodlRouterV03","YodlRouterV04","CURVE_ROUTER_ABI","CurveRouterV13Abi","TokenListTagNames","versionComparator","versionA","versionB","major","minor","patch","isVersionUpdate","base","update","VersionUpgrade","getVersionUpgrade","MAJOR","NONE","MINOR","PATCH","compareTokenInfoProperty","a","b","Array","isArray","every","el","i","diffTokenLists","indexedBase","reduce","memo","tokenInfo","chainId","address","newListUpdates","baseToken","added","push","changes","Object","keys","filter","s","length","changed","index","removed","list","curr","minVersionBump","baseList","updatedList","diff","nextVersion","bump","tokenlist","featuredTokenlist","tokens","concat","generatedTokenlist","getChains","chainlist","chains","getChain","find","needle","getTokenByAddress","tokenAddress","token","toLowerCase","getPriceFeeds","priceFeeds","f","getTokenFeeds","type","getFiatFeeds","getFiatCurrency","symbol","fiatCurrencies","c","getFiatCurrencies","getPriceFeed","baseSymbol","quoteSymbol","_quoteSymbol","feed","input","output","getFeaturedTokenBySymbol","tokenSymbol","getTokenBySymbol","Error","getTokens","getFaucetAddress","testnetfaucets","faucets","getRouters","routerlist","routers","getRouter","version","getRouterByAddress","findByAddress","router","findByAddressAndChainId","routerInfo","getLatestRouter","sorted","sort","Date","parse","timestamp","getShortNames","map","chain","shortName","getNativeToken","nativeTokenName","getNativeWrappedToken","nativeTokens","t","tags","tag","includes"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
package/dist/types.d.ts
CHANGED