diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index d9a9560d..1a0e7c11 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -20,7 +20,7 @@ jobs:
           registry-url: https://registry.npmjs.org
 
       - name: Install dependencies
-        run: yarn install --frozen-lockfile
+        run: npm install
 
       - name: Run linters
         uses: wearerequired/lint-action@a8497ddb33fb1205941fd40452ca9fff07e0770d
diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml
index 5970f232..84844b0d 100644
--- a/.github/workflows/unit-tests.yml
+++ b/.github/workflows/unit-tests.yml
@@ -21,7 +21,7 @@ jobs:
           registry-url: https://registry.npmjs.org
 
       - name: Install dependencies
-        run: yarn install --frozen-lockfile
+        run: npm install
 
       - name: Run tests
-        run: yarn test
+        run: npm run test
diff --git a/.gitignore b/.gitignore
index 705d1452..419b34e0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -63,4 +63,7 @@ jspm_packages/
 .yarn/unplugged
 .yarn/build-state.yml
 .yarn/install-state.gz
-.pnp.*
\ No newline at end of file
+.pnp.*
+
+#npm
+package-lock.json
diff --git a/.yarnrc b/.yarnrc
deleted file mode 100644
index 5455c6c5..00000000
--- a/.yarnrc
+++ /dev/null
@@ -1 +0,0 @@
-ignore-scripts true
diff --git a/jest.config.js b/jest.config.js
new file mode 100644
index 00000000..d805ed29
--- /dev/null
+++ b/jest.config.js
@@ -0,0 +1,27 @@
+/** @type {import('ts-jest').JestConfigWithTsJest} */
+module.exports = {
+  // preset: 'ts-jest',
+  // testEnvironment: 'node',
+  preset: 'ts-jest',
+  testEnvironment: 'jsdom',
+  transform: {
+    // transform files with ts-jest
+    '^.+\\.(js|ts)$': [
+      'ts-jest',
+      {
+        tsconfig: {
+          // allow js in typescript
+          allowJs: true,
+        },
+      },
+    ],
+  },
+  transformIgnorePatterns: [
+    // allow lit-html transformation
+    'node_modules/(?!lit-html)',
+  ],
+  // for absolute imports
+  moduleNameMapper: {
+    'src/(.*)': '<rootDir>/src/$1',
+  },
+}
diff --git a/package.json b/package.json
index 71f6ae76..7f328546 100644
--- a/package.json
+++ b/package.json
@@ -16,27 +16,32 @@
     "uniswap",
     "ethereum"
   ],
-  "module": "dist/v3-sdk.esm.js",
   "scripts": {
-    "build": "tsdx build",
-    "start": "tsdx watch",
-    "test": "tsdx test",
-    "prepublishOnly": "tsdx build"
+    "build": "tsc",
+    "test": "jest",
+    "prepublishOnly": "tsc"
   },
   "dependencies": {
     "@ethersproject/abi": "^5.0.12",
     "@ethersproject/solidity": "^5.0.9",
-    "@uniswap/sdk-core": "^4",
+    "@uniswap/sdk-core": "npm:@koraykoska/uniswap-sdk-core@^3.2.6",
     "@uniswap/swap-router-contracts": "^1.2.1",
     "@uniswap/v3-periphery": "^1.1.1",
-    "@uniswap/v3-staker": "1.0.0",
+    "@uniswap/v3-staker": "1.0.2",
     "tiny-invariant": "^1.1.0",
     "tiny-warning": "^1.0.3"
   },
   "devDependencies": {
-    "@types/jest": "^24.0.25",
+    "@types/jest": "^24.9.1",
     "@uniswap/v3-core": "1.0.0",
-    "tsdx": "^0.14.1"
+    "commander": "^11.0.0",
+    "ethers": "^5.7.2",
+    "jest": "^29.5.0",
+    "jest-environment-jsdom": "^29.5.0",
+    "prettier": "^2.8.8",
+    "ts-jest": "^29.1.0",
+    "tslib": "^2.5.1",
+    "typescript": "^5.0.4"
   },
   "engines": {
     "node": ">=10"
diff --git a/scripts/.gitignore b/scripts/.gitignore
new file mode 100644
index 00000000..89f9ac04
--- /dev/null
+++ b/scripts/.gitignore
@@ -0,0 +1 @@
+out/
diff --git a/scripts/abis/erc20.json b/scripts/abis/erc20.json
new file mode 100644
index 00000000..405d6b36
--- /dev/null
+++ b/scripts/abis/erc20.json
@@ -0,0 +1,222 @@
+[
+  {
+    "constant": true,
+    "inputs": [],
+    "name": "name",
+    "outputs": [
+      {
+        "name": "",
+        "type": "string"
+      }
+    ],
+    "payable": false,
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "constant": false,
+    "inputs": [
+      {
+        "name": "_spender",
+        "type": "address"
+      },
+      {
+        "name": "_value",
+        "type": "uint256"
+      }
+    ],
+    "name": "approve",
+    "outputs": [
+      {
+        "name": "",
+        "type": "bool"
+      }
+    ],
+    "payable": false,
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "constant": true,
+    "inputs": [],
+    "name": "totalSupply",
+    "outputs": [
+      {
+        "name": "",
+        "type": "uint256"
+      }
+    ],
+    "payable": false,
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "constant": false,
+    "inputs": [
+      {
+        "name": "_from",
+        "type": "address"
+      },
+      {
+        "name": "_to",
+        "type": "address"
+      },
+      {
+        "name": "_value",
+        "type": "uint256"
+      }
+    ],
+    "name": "transferFrom",
+    "outputs": [
+      {
+        "name": "",
+        "type": "bool"
+      }
+    ],
+    "payable": false,
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "constant": true,
+    "inputs": [],
+    "name": "decimals",
+    "outputs": [
+      {
+        "name": "",
+        "type": "uint8"
+      }
+    ],
+    "payable": false,
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "constant": true,
+    "inputs": [
+      {
+        "name": "_owner",
+        "type": "address"
+      }
+    ],
+    "name": "balanceOf",
+    "outputs": [
+      {
+        "name": "balance",
+        "type": "uint256"
+      }
+    ],
+    "payable": false,
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "constant": true,
+    "inputs": [],
+    "name": "symbol",
+    "outputs": [
+      {
+        "name": "",
+        "type": "string"
+      }
+    ],
+    "payable": false,
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "constant": false,
+    "inputs": [
+      {
+        "name": "_to",
+        "type": "address"
+      },
+      {
+        "name": "_value",
+        "type": "uint256"
+      }
+    ],
+    "name": "transfer",
+    "outputs": [
+      {
+        "name": "",
+        "type": "bool"
+      }
+    ],
+    "payable": false,
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "constant": true,
+    "inputs": [
+      {
+        "name": "_owner",
+        "type": "address"
+      },
+      {
+        "name": "_spender",
+        "type": "address"
+      }
+    ],
+    "name": "allowance",
+    "outputs": [
+      {
+        "name": "",
+        "type": "uint256"
+      }
+    ],
+    "payable": false,
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "payable": true,
+    "stateMutability": "payable",
+    "type": "fallback"
+  },
+  {
+    "anonymous": false,
+    "inputs": [
+      {
+        "indexed": true,
+        "name": "owner",
+        "type": "address"
+      },
+      {
+        "indexed": true,
+        "name": "spender",
+        "type": "address"
+      },
+      {
+        "indexed": false,
+        "name": "value",
+        "type": "uint256"
+      }
+    ],
+    "name": "Approval",
+    "type": "event"
+  },
+  {
+    "anonymous": false,
+    "inputs": [
+      {
+        "indexed": true,
+        "name": "from",
+        "type": "address"
+      },
+      {
+        "indexed": true,
+        "name": "to",
+        "type": "address"
+      },
+      {
+        "indexed": false,
+        "name": "value",
+        "type": "uint256"
+      }
+    ],
+    "name": "Transfer",
+    "type": "event"
+  }
+]
diff --git a/scripts/abis/fetch-ticks.json b/scripts/abis/fetch-ticks.json
new file mode 100644
index 00000000..46b69b8b
--- /dev/null
+++ b/scripts/abis/fetch-ticks.json
@@ -0,0 +1,180 @@
+[
+  {
+    "inputs": [
+      {
+        "internalType": "address",
+        "name": "pool",
+        "type": "address"
+      },
+      {
+        "internalType": "uint16",
+        "name": "zeroWordsOnEdges",
+        "type": "uint16"
+      }
+    ],
+    "name": "getPoolData",
+    "outputs": [
+      {
+        "components": [
+          {
+            "internalType": "int16",
+            "name": "minWord",
+            "type": "int16"
+          },
+          {
+            "internalType": "int16",
+            "name": "maxWord",
+            "type": "int16"
+          },
+          {
+            "internalType": "int24",
+            "name": "currentTick",
+            "type": "int24"
+          },
+          {
+            "internalType": "int24",
+            "name": "tickSpacing",
+            "type": "int24"
+          },
+          {
+            "internalType": "uint24",
+            "name": "fee",
+            "type": "uint24"
+          },
+          {
+            "internalType": "uint160",
+            "name": "sqrtPriceX96",
+            "type": "uint160"
+          },
+          {
+            "internalType": "uint128",
+            "name": "liquidity",
+            "type": "uint128"
+          },
+          {
+            "components": [
+              {
+                "internalType": "address",
+                "name": "tokenAddress",
+                "type": "address"
+              },
+              {
+                "internalType": "uint8",
+                "name": "decimals",
+                "type": "uint8"
+              },
+              {
+                "internalType": "string",
+                "name": "symbol",
+                "type": "string"
+              },
+              {
+                "internalType": "string",
+                "name": "name",
+                "type": "string"
+              }
+            ],
+            "internalType": "struct FetchUniswapTicksV5.PopulatedTicksResultToken",
+            "name": "token0",
+            "type": "tuple"
+          },
+          {
+            "components": [
+              {
+                "internalType": "address",
+                "name": "tokenAddress",
+                "type": "address"
+              },
+              {
+                "internalType": "uint8",
+                "name": "decimals",
+                "type": "uint8"
+              },
+              {
+                "internalType": "string",
+                "name": "symbol",
+                "type": "string"
+              },
+              {
+                "internalType": "string",
+                "name": "name",
+                "type": "string"
+              }
+            ],
+            "internalType": "struct FetchUniswapTicksV5.PopulatedTicksResultToken",
+            "name": "token1",
+            "type": "tuple"
+          },
+          {
+            "components": [
+              {
+                "internalType": "int24",
+                "name": "tick",
+                "type": "int24"
+              },
+              {
+                "internalType": "int128",
+                "name": "liquidityNet",
+                "type": "int128"
+              },
+              {
+                "internalType": "uint128",
+                "name": "liquidityGross",
+                "type": "uint128"
+              }
+            ],
+            "internalType": "struct ITickLens.PopulatedTick[][]",
+            "name": "allTicks",
+            "type": "tuple[][]"
+          }
+        ],
+        "internalType": "struct FetchUniswapTicksV5.PopulatedTicksResult",
+        "name": "result",
+        "type": "tuple"
+      }
+    ],
+    "stateMutability": "view",
+    "type": "function",
+    "constant": true
+  },
+  {
+    "inputs": [
+      {
+        "internalType": "address",
+        "name": "pool",
+        "type": "address"
+      },
+      {
+        "internalType": "uint16",
+        "name": "zeroWordsOnEdges",
+        "type": "uint16"
+      }
+    ],
+    "name": "getPoolTickRange",
+    "outputs": [
+      {
+        "internalType": "int16",
+        "name": "minWord",
+        "type": "int16"
+      },
+      {
+        "internalType": "int16",
+        "name": "maxWord",
+        "type": "int16"
+      },
+      {
+        "internalType": "int24",
+        "name": "currentTick",
+        "type": "int24"
+      },
+      {
+        "internalType": "int24",
+        "name": "tickSpacing",
+        "type": "int24"
+      }
+    ],
+    "stateMutability": "view",
+    "type": "function",
+    "constant": true
+  }
+]
diff --git a/scripts/generate-swap-tests.js b/scripts/generate-swap-tests.js
new file mode 100644
index 00000000..13bd086b
--- /dev/null
+++ b/scripts/generate-swap-tests.js
@@ -0,0 +1,250 @@
+const fs = require('fs')
+const commander = require('commander')
+const ethers = require('ethers')
+const erc20Abi = require('./abis/erc20.json')
+const fetchTicksAbi = require('./abis/fetch-ticks.json')
+const v3PoolAbi = require('@uniswap/v3-core/artifacts/contracts/UniswapV3Pool.sol/UniswapV3Pool.json').abi
+const quoterAbi = require('@uniswap/v3-periphery/artifacts/contracts/interfaces/IQuoterV2.sol/IQuoterV2.json').abi
+
+commander
+  .version('1.0.0', '-v, --version')
+  .usage('[OPTIONS]...')
+  .requiredOption('-P, --provider <value>', 'A provider to fetch data from. HTTP/S only.')
+  .requiredOption('-p, --pool <value>', 'Pool to fetch data from. Comma separate to generate for multiple.')
+  .requiredOption(
+    '-n, --number <value>',
+    'Number of tests to generate per pool. Will generate an extra 10% of failing swaps.'
+  )
+  .option('-r, --reversed', 'Sets zeroForOne to false (e.g.: swaps into the opposite direction).')
+  .parse(process.argv)
+
+const { provider: providerUrl, pool: poolAddresses, number, reversed } = commander.opts()
+
+const provider = new ethers.providers.JsonRpcProvider(providerUrl)
+const fetchTicks = new ethers.Contract('0x3ea366bE8DA9888a41293Cf5aa6a3f863Ebc06C5', fetchTicksAbi, provider)
+const quoter = new ethers.Contract('0x61fFE014bA17989E743c5F6cB21bF9697530B21e', quoterAbi, provider)
+
+function multiply(_a, _b) {
+  const toInt = (e) => {
+    let eArray = e.split('.')
+    let pair = []
+    pair['int'] = BigInt(eArray[0] + (eArray[1] ? eArray[1] : ''))
+    pair['dec'] = eArray[1] ? eArray[1].length : 0
+    return pair
+  }
+  const [a, b] = [toInt(_a), toInt(_b)]
+
+  const getMultiplier = (e) => 10n ** BigInt(e)
+
+  let multiplier = getMultiplier(a['dec']) * getMultiplier(b['dec'])
+  let ab
+  if (a['int'] > b['int'] && a['int'].toString().length > multiplier.toString().length) {
+    ab = (a['int'] / multiplier) * b['int']
+  } else if (b['int'] > a['int'] && b['int'].toString().length > multiplier.toString().length) {
+    ab = (b['int'] / multiplier) * a['int']
+  } else if (b['int'].toString().length + a['int'].toString().length > multiplier.toString().length) {
+    ab = (a['int'] * b['int']) / multiplier
+  } else {
+    return 0n
+  }
+  return ab
+}
+
+async function fetchTicksRPC(poolAddress, blockNumber) {
+  const ticksRaw = await fetchTicks.getPoolData(poolAddress, 200n.toString(10), { blockTag: blockNumber })
+  const ticks = ticksRaw.allTicks
+    .flat()
+    .map((el) => {
+      return { index: el[0], liquidityNet: el[1], liquidityGross: el[2] }
+    })
+    .sort((left, right) => {
+      return left.index - right.index
+    })
+    .map((el) => {
+      return {
+        index: el.index,
+        liquidityNet: el.liquidityNet.toString(),
+        liquidityGross: el.liquidityGross.toString(),
+      }
+    })
+
+  return ticks
+}
+
+async function fetchTicksDiamond(diamondProvider, poolAddress, blockNumber) {
+  const response = await diamondProvider.send('cush_poolInitializedTicksInRange', [
+    poolAddress,
+    -887272,
+    887272,
+    blockNumber,
+  ])
+
+  return response
+    .map((el) => {
+      return {
+        index: el.index,
+        liquidityNet: ethers.BigNumber.from(el.liquidity_net).fromTwos(256).toString(),
+        liquidityGross: ethers.BigNumber.from(el.liquidity_gross).fromTwos(256).toString(),
+      }
+    })
+    .sort((left, right) => {
+      return left.index - right.index
+    })
+}
+
+const asyncFunc = async (poolAddress) => {
+  // Do everything on this blockNumber. -50 to reduce likelihood of reorgs during the generation process.
+  const blockNumber = (await provider.getBlockNumber()) - 50
+
+  const pool = new ethers.Contract(poolAddress, v3PoolAbi, provider)
+
+  const { chainId } = await provider.getNetwork()
+
+  // Diamond API if available
+  let diamondProviderPath
+  switch (chainId) {
+    case 1:
+      diamondProviderPath = '/ethereum'
+      break
+    case 5:
+      diamondProviderPath = '/goerli'
+      break
+    case 137:
+      diamondProviderPath = '/polygon'
+      break
+    case 42161:
+      diamondProviderPath = '/arbitrum'
+      break
+    case 10:
+      diamondProviderPath = '/optimism'
+      break
+    default:
+      console.log(
+        `[WARN] Chain with id ${chainId} not supported by Diamond API. Fallback to less accurate and slower RPC fetching.`
+      )
+      diamondProviderPath = undefined
+      break
+  }
+  /**
+   * @type {ethers.providers.JsonRpcProvider | undefined}
+   */
+  let diamondProvider
+  if (diamondProviderPath) {
+    diamondProvider = new ethers.providers.JsonRpcProvider(`https://cush.gfx.xyz${diamondProviderPath}`)
+  }
+
+  const [token0Address, token1Address] = await Promise.all([pool.token0(), pool.token1()])
+  const [token0, token1] = [
+    new ethers.Contract(token0Address, erc20Abi, provider),
+    new ethers.Contract(token1Address, erc20Abi, provider),
+  ]
+  const [token0Symbol, token1Symbol] = await Promise.all([token0.symbol(), token1.symbol()])
+  const [token0Decimals, token1Decimals] = await Promise.all([token0.decimals(), token1.decimals()])
+
+  const [token0Balance, token1Balance] = await Promise.all([
+    token0.balanceOf(poolAddress, { blockTag: blockNumber }),
+    token1.balanceOf(poolAddress, { blockTag: blockNumber }),
+  ])
+
+  const fee = await pool.fee()
+  const liquidity = await pool.liquidity()
+  const slot0 = await pool.slot0({ blockTag: blockNumber })
+
+  let ticks
+  if (diamondProvider) {
+    ticks = await fetchTicksDiamond(diamondProvider, poolAddress, blockNumber)
+  } else {
+    ticks = await fetchTicksRPC(poolAddress, blockNumber)
+  }
+
+  console.log(
+    `Generating ${number} test cases for ${token0Symbol} (${token0Decimals} decimals) - ${token1Symbol} (${token1Decimals} decimals) on pool with fee ${fee}`
+  )
+  console.log(`${token0Symbol} balance: ${token0Balance.toString()}`)
+  console.log(`${token1Symbol} balance: ${token1Balance.toString()}`)
+
+  const generatedTests = []
+
+  // Exact Input: 50%
+  for (let i = 0; i < parseInt(number) / 2; i++) {
+    const randomInput = multiply(`${Math.random()}`, (!!reversed ? token1Balance : token0Balance).toString())
+
+    const { amountOut } = await quoter.callStatic.quoteExactInputSingle(
+      {
+        tokenIn: !!reversed ? token1Address : token0Address,
+        tokenOut: !!reversed ? token0Address : token1Address,
+        amountIn: randomInput.toString(10),
+        fee: fee,
+        sqrtPriceLimitX96: (!!reversed
+          ? BigInt('1461446703485210103287273052203988822378723970342') - 1n
+          : BigInt('4295128739') + 1n
+        ).toString(10),
+      },
+      { blockTag: blockNumber }
+    )
+
+    generatedTests.push({
+      amountSpecified: randomInput.toString(10),
+      exactInput: true,
+      expectedAmountCalculated: amountOut.toString(),
+    })
+  }
+
+  // Exact Output: 50%
+  for (let i = 0; i < parseInt(number) / 2; i++) {
+    const randomOutput = multiply(`${Math.random()}`, (!!reversed ? token0Balance : token1Balance).toString())
+
+    const { amountIn } = await quoter.callStatic.quoteExactOutputSingle(
+      {
+        tokenIn: !!reversed ? token1Address : token0Address,
+        tokenOut: !!reversed ? token0Address : token1Address,
+        amount: randomOutput.toString(10),
+        fee: fee,
+        sqrtPriceLimitX96: (!!reversed
+          ? BigInt('1461446703485210103287273052203988822378723970342') - 1n
+          : BigInt('4295128739') + 1n
+        ).toString(10),
+      },
+      { blockTag: blockNumber }
+    )
+
+    generatedTests.push({
+      amountSpecified: randomOutput.toString(10),
+      exactInput: false,
+      expectedAmountCalculated: amountIn.toString(),
+    })
+  }
+
+  // Generate test and push to out dir
+  const testsJson = {
+    poolName: `${token0Symbol} - ${token1Symbol} ${fee}${!!reversed ? ' - reversed' : ''}`,
+    tokenA: {
+      chainId: chainId,
+      address: !!reversed ? token1Address : token0Address,
+      decimals: !!reversed ? token1Decimals : token0Decimals,
+    },
+    tokenB: {
+      chainId: chainId,
+      address: !!reversed ? token0Address : token1Address,
+      decimals: !!reversed ? token0Decimals : token1Decimals,
+    },
+    fee: fee,
+    liquidity: liquidity.toString(),
+    sqrtRatioX96: slot0.sqrtPriceX96.toString(),
+    tickCurrent: slot0.tick,
+    ticks: ticks,
+    tests: generatedTests,
+  }
+
+  const outDir = `${__dirname}/out/`
+  if (!fs.existsSync(outDir)) {
+    fs.mkdirSync(outDir, { recursive: true })
+  }
+  const fileName = `${poolAddress}${!!reversed ? '-reversed' : ''}.json`
+
+  fs.writeFileSync(`${outDir}/${fileName}`, JSON.stringify(testsJson, null, 2))
+}
+
+for (const poolAddress of poolAddresses.split(',')) {
+  asyncFunc(poolAddress)
+}
diff --git a/src/constants.test.ts b/src/__tests__/constants.test.ts
similarity index 91%
rename from src/constants.test.ts
rename to src/__tests__/constants.test.ts
index 0095cd30..1c12cc8c 100644
--- a/src/constants.test.ts
+++ b/src/__tests__/constants.test.ts
@@ -1,4 +1,4 @@
-import { POOL_INIT_CODE_HASH } from './constants'
+import { POOL_INIT_CODE_HASH } from 'src/constants'
 
 import IUniswapV3Pool from '@uniswap/v3-core/artifacts/contracts/UniswapV3Pool.sol/UniswapV3Pool.json'
 import { keccak256 } from '@ethersproject/solidity'
diff --git a/src/entities/pool.test.ts b/src/__tests__/entities/pool.test.ts
similarity index 90%
rename from src/entities/pool.test.ts
rename to src/__tests__/entities/pool.test.ts
index 90d3fcc1..70275877 100644
--- a/src/entities/pool.test.ts
+++ b/src/__tests__/entities/pool.test.ts
@@ -1,11 +1,11 @@
-import { Token, CurrencyAmount, WETH9 } from '@uniswap/sdk-core'
-import { FeeAmount, TICK_SPACINGS } from '../constants'
-import { nearestUsableTick } from '../utils/nearestUsableTick'
-import { TickMath } from '../utils/tickMath'
-import { Pool } from './pool'
-import { encodeSqrtRatioX96 } from '../utils/encodeSqrtRatioX96'
+import { Token, WETH9, CurrencyAmount } from '@uniswap/sdk-core'
+import { FeeAmount, TICK_SPACINGS } from 'src/constants'
+import { nearestUsableTick } from 'src/utils/nearestUsableTick'
+import { TickMath } from 'src/utils/tickMath'
+import { Pool } from 'src/entities/pool'
+import { encodeSqrtRatioX96 } from 'src/utils/encodeSqrtRatioX96'
 import JSBI from 'jsbi'
-import { NEGATIVE_ONE } from '../internalConstants'
+import { NEGATIVE_ONE } from 'src/internalConstants'
 
 const ONE_ETHER = JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(18))
 
@@ -26,11 +26,12 @@ describe('Pool', () => {
       }).toThrow('FEE')
     })
 
-    it('fee cannot be more than 1e6', () => {
-      expect(() => {
-        new Pool(USDC, WETH9[1], 1e6, encodeSqrtRatioX96(1, 1), 0, 0, [])
-      }).toThrow('FEE')
-    })
+    // TODO: Typescript compiler doesn't allow arbitrary numbers for FeeAmount
+    // it('fee cannot be more than 1e6', () => {
+    //   expect(() => {
+    //     new Pool(USDC, WETH9[1], 1e6, encodeSqrtRatioX96(1, 1), 0, 0, [])
+    //   }).toThrow('FEE')
+    // })
 
     it('cannot be given two of the same token', () => {
       expect(() => {
@@ -178,13 +179,13 @@ describe('Pool', () => {
         {
           index: nearestUsableTick(TickMath.MIN_TICK, TICK_SPACINGS[FeeAmount.LOW]),
           liquidityNet: ONE_ETHER,
-          liquidityGross: ONE_ETHER
+          liquidityGross: ONE_ETHER,
         },
         {
           index: nearestUsableTick(TickMath.MAX_TICK, TICK_SPACINGS[FeeAmount.LOW]),
           liquidityNet: JSBI.multiply(ONE_ETHER, NEGATIVE_ONE),
-          liquidityGross: ONE_ETHER
-        }
+          liquidityGross: ONE_ETHER,
+        },
       ])
     })
 
@@ -195,7 +196,6 @@ describe('Pool', () => {
         expect(outputAmount.currency.equals(DAI)).toBe(true)
         expect(outputAmount.quotient).toEqual(JSBI.BigInt(98))
       })
-
       it('DAI -> USDC', async () => {
         const inputAmount = CurrencyAmount.fromRawAmount(DAI, 100)
         const [outputAmount] = await pool.getOutputAmount(inputAmount)
@@ -230,13 +230,13 @@ describe('Pool', () => {
         {
           index: nearestUsableTick(TickMath.MIN_TICK, TICK_SPACINGS[FeeAmount.LOW]),
           liquidityNet: ONE_ETHER,
-          liquidityGross: ONE_ETHER
+          liquidityGross: ONE_ETHER,
         },
         {
           index: nearestUsableTick(TickMath.MAX_TICK, TICK_SPACINGS[FeeAmount.LOW]),
           liquidityNet: JSBI.multiply(ONE_ETHER, NEGATIVE_ONE),
-          liquidityGross: ONE_ETHER
-        }
+          liquidityGross: ONE_ETHER,
+        },
       ])
     })
 
diff --git a/src/entities/position.test.ts b/src/__tests__/entities/position.test.ts
similarity index 93%
rename from src/entities/position.test.ts
rename to src/__tests__/entities/position.test.ts
index 16cc9f3a..41addc0f 100644
--- a/src/entities/position.test.ts
+++ b/src/__tests__/entities/position.test.ts
@@ -1,11 +1,11 @@
 import { Percent, Token } from '@uniswap/sdk-core'
 import JSBI from 'jsbi'
-import { FeeAmount, TICK_SPACINGS } from '../constants'
-import { encodeSqrtRatioX96 } from '../utils/encodeSqrtRatioX96'
-import { nearestUsableTick } from '../utils/nearestUsableTick'
-import { TickMath } from '../utils/tickMath'
-import { Pool } from './pool'
-import { Position } from './position'
+import { FeeAmount, TICK_SPACINGS } from 'src/constants'
+import { encodeSqrtRatioX96 } from 'src/utils/encodeSqrtRatioX96'
+import { nearestUsableTick } from 'src/utils/nearestUsableTick'
+import { TickMath } from 'src/utils/tickMath'
+import { Pool } from 'src/entities/pool'
+import { Position } from 'src/entities/position'
 
 describe('Position', () => {
   const USDC = new Token(1, '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 6, 'USDC', 'USD Coin')
@@ -20,7 +20,7 @@ describe('Position', () => {
       pool: DAI_USDC_POOL,
       liquidity: 1,
       tickLower: -10,
-      tickUpper: 10
+      tickUpper: 10,
     })
     expect(position.liquidity).toEqual(JSBI.BigInt(1))
   })
@@ -30,7 +30,7 @@ describe('Position', () => {
       pool: DAI_USDC_POOL,
       liquidity: 1,
       tickLower: nearestUsableTick(TickMath.MIN_TICK, TICK_SPACING),
-      tickUpper: nearestUsableTick(TickMath.MAX_TICK, TICK_SPACING)
+      tickUpper: nearestUsableTick(TickMath.MAX_TICK, TICK_SPACING),
     })
     expect(position.liquidity).toEqual(JSBI.BigInt(1))
   })
@@ -42,7 +42,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 1,
           tickLower: 10,
-          tickUpper: -10
+          tickUpper: -10,
         })
     ).toThrow('TICK_ORDER')
   })
@@ -54,7 +54,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 1,
           tickLower: -10,
-          tickUpper: -10
+          tickUpper: -10,
         })
     ).toThrow('TICK_ORDER')
   })
@@ -66,7 +66,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 1,
           tickLower: -5,
-          tickUpper: 10
+          tickUpper: 10,
         })
     ).toThrow('TICK_LOWER')
   })
@@ -78,7 +78,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 1,
           tickLower: nearestUsableTick(TickMath.MIN_TICK, TICK_SPACING) - TICK_SPACING,
-          tickUpper: 10
+          tickUpper: 10,
         })
     ).toThrow('TICK_LOWER')
   })
@@ -90,7 +90,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 1,
           tickLower: -10,
-          tickUpper: 15
+          tickUpper: 15,
         })
     ).toThrow('TICK_UPPER')
   })
@@ -102,7 +102,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 1,
           tickLower: -10,
-          tickUpper: nearestUsableTick(TickMath.MAX_TICK, TICK_SPACING) + TICK_SPACING
+          tickUpper: nearestUsableTick(TickMath.MAX_TICK, TICK_SPACING) + TICK_SPACING,
         })
     ).toThrow('TICK_UPPER')
   })
@@ -114,7 +114,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 100e12,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2,
         }).amount0.quotient.toString()
       ).toEqual('49949961958869841')
     })
@@ -124,7 +124,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 100e18,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING * 2,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING,
         }).amount0.quotient.toString()
       ).toEqual('0')
     })
@@ -134,7 +134,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 100e18,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING * 2,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2,
         }).amount0.quotient.toString()
       ).toEqual('120054069145287995769396')
     })
@@ -147,7 +147,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 100e18,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2,
         }).amount1.quotient.toString()
       ).toEqual('0')
     })
@@ -157,7 +157,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 100e18,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING * 2,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING,
         }).amount1.quotient.toString()
       ).toEqual('49970077052')
     })
@@ -167,7 +167,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 100e18,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING * 2,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2,
         }).amount1.quotient.toString()
       ).toEqual('79831926242')
     })
@@ -182,7 +182,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 100e18,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2,
         })
 
         const { amount0, amount1 } = position.mintAmountsWithSlippage(slippageTolerance)
@@ -195,7 +195,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 100e18,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING * 2,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING,
         })
 
         const { amount0, amount1 } = position.mintAmountsWithSlippage(slippageTolerance)
@@ -208,7 +208,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 100e18,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING * 2,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2,
         })
 
         const { amount0, amount1 } = position.mintAmountsWithSlippage(slippageTolerance)
@@ -225,7 +225,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 100e18,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2,
         })
 
         const { amount0, amount1 } = position.mintAmountsWithSlippage(slippageTolerance)
@@ -238,7 +238,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 100e18,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING * 2,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING,
         })
 
         const { amount0, amount1 } = position.mintAmountsWithSlippage(slippageTolerance)
@@ -251,7 +251,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 100e18,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING * 2,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2,
         })
 
         const { amount0, amount1 } = position.mintAmountsWithSlippage(slippageTolerance)
@@ -268,7 +268,7 @@ describe('Position', () => {
           pool: new Pool(DAI, USDC, FeeAmount.LOW, TickMath.MIN_SQRT_RATIO, 0, TickMath.MIN_TICK, []),
           liquidity: 100e18,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2,
         })
 
         const { amount0, amount1 } = position.burnAmountsWithSlippage(slippageTolerance)
@@ -289,7 +289,7 @@ describe('Position', () => {
           ),
           liquidity: 100e18,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2,
         })
 
         const { amount0, amount1 } = position.burnAmountsWithSlippage(slippageTolerance)
@@ -308,7 +308,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 100e18,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2,
         })
 
         const { amount0, amount1 } = position.burnAmountsWithSlippage(slippageTolerance)
@@ -321,7 +321,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 100e18,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING * 2,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING,
         })
 
         const { amount0, amount1 } = position.burnAmountsWithSlippage(slippageTolerance)
@@ -334,7 +334,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 100e18,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING * 2,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2,
         })
 
         const { amount0, amount1 } = position.burnAmountsWithSlippage(slippageTolerance)
@@ -351,7 +351,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 100e18,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2,
         })
         const { amount0, amount1 } = position.burnAmountsWithSlippage(slippageTolerance)
         expect(amount0.toString()).toEqual('49949961958869841754181')
@@ -363,7 +363,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 100e18,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING * 2,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING,
         })
         const { amount0, amount1 } = position.burnAmountsWithSlippage(slippageTolerance)
         expect(amount0.toString()).toEqual('0')
@@ -375,7 +375,7 @@ describe('Position', () => {
           pool: DAI_USDC_POOL,
           liquidity: 100e18,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING * 2,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2,
         })
         const { amount0, amount1 } = position.burnAmountsWithSlippage(slippageTolerance)
         expect(amount0.toString()).toEqual('95063440240746211454822')
@@ -391,7 +391,7 @@ describe('Position', () => {
           pool: new Pool(DAI, USDC, FeeAmount.LOW, TickMath.MIN_SQRT_RATIO, 0, TickMath.MIN_TICK, []),
           liquidity: 100e18,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2,
         })
 
         const { amount0, amount1 } = position.mintAmountsWithSlippage(slippageTolerance)
@@ -412,7 +412,7 @@ describe('Position', () => {
           ),
           liquidity: 100e18,
           tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING,
-          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2
+          tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2,
         })
 
         const { amount0, amount1 } = position.mintAmountsWithSlippage(slippageTolerance)
@@ -428,7 +428,7 @@ describe('Position', () => {
         pool: DAI_USDC_POOL,
         liquidity: 100e18,
         tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING,
-        tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2
+        tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2,
       }).mintAmounts
       expect(amount0.toString()).toEqual('49949961958869841754182')
       expect(amount1.toString()).toEqual('0')
@@ -438,7 +438,7 @@ describe('Position', () => {
         pool: DAI_USDC_POOL,
         liquidity: 100e18,
         tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING * 2,
-        tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING
+        tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING,
       }).mintAmounts
       expect(amount0.toString()).toEqual('0')
       expect(amount1.toString()).toEqual('49970077053')
@@ -448,7 +448,7 @@ describe('Position', () => {
         pool: DAI_USDC_POOL,
         liquidity: 100e18,
         tickLower: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) - TICK_SPACING * 2,
-        tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2
+        tickUpper: nearestUsableTick(POOL_TICK_CURRENT, TICK_SPACING) + TICK_SPACING * 2,
       }).mintAmounts
       // note these are rounded up
       expect(amount0.toString()).toEqual('120054069145287995769397')
diff --git a/src/entities/route.test.ts b/src/__tests__/entities/route.test.ts
similarity index 95%
rename from src/entities/route.test.ts
rename to src/__tests__/entities/route.test.ts
index baeb4932..a0d399f3 100644
--- a/src/entities/route.test.ts
+++ b/src/__tests__/entities/route.test.ts
@@ -1,9 +1,9 @@
 import { Ether, Token, WETH9 } from '@uniswap/sdk-core'
-import { FeeAmount } from '../constants'
-import { encodeSqrtRatioX96 } from '../utils/encodeSqrtRatioX96'
-import { TickMath } from '../utils/tickMath'
-import { Pool } from './pool'
-import { Route } from './route'
+import { FeeAmount } from 'src/constants'
+import { encodeSqrtRatioX96 } from 'src/utils/encodeSqrtRatioX96'
+import { TickMath } from 'src/utils/tickMath'
+import { Pool } from 'src/entities/pool'
+import { Route } from 'src/entities/route'
 
 describe('Route', () => {
   const ETHER = Ether.onChain(1)
diff --git a/src/entities/tick.test.ts b/src/__tests__/entities/tick.test.ts
similarity index 82%
rename from src/entities/tick.test.ts
rename to src/__tests__/entities/tick.test.ts
index 735d6e33..b36bc2b9 100644
--- a/src/entities/tick.test.ts
+++ b/src/__tests__/entities/tick.test.ts
@@ -1,5 +1,5 @@
-import { TickMath } from '../utils/tickMath'
-import { Tick } from './tick'
+import { TickMath } from 'src/utils/tickMath'
+import { Tick } from 'src/entities/tick'
 
 describe('Tick', () => {
   describe('constructor', () => {
diff --git a/src/entities/tickDataProvider.test.ts b/src/__tests__/entities/tickDataProvider.test.ts
similarity index 87%
rename from src/entities/tickDataProvider.test.ts
rename to src/__tests__/entities/tickDataProvider.test.ts
index 1cb0e22e..86db313d 100644
--- a/src/entities/tickDataProvider.test.ts
+++ b/src/__tests__/entities/tickDataProvider.test.ts
@@ -1,4 +1,4 @@
-import { NoTickDataProvider } from './tickDataProvider'
+import { NoTickDataProvider } from 'src/entities/tickDataProvider'
 
 describe('TickDataProvider', () => {
   describe('NoTickDataProvider', () => {
diff --git a/src/entities/tickListDataProvider.test.ts b/src/__tests__/entities/tickListDataProvider.test.ts
similarity index 84%
rename from src/entities/tickListDataProvider.test.ts
rename to src/__tests__/entities/tickListDataProvider.test.ts
index 2c925710..7fac3b3a 100644
--- a/src/entities/tickListDataProvider.test.ts
+++ b/src/__tests__/entities/tickListDataProvider.test.ts
@@ -1,5 +1,5 @@
 import JSBI from 'jsbi'
-import { TickListDataProvider } from './tickListDataProvider'
+import { TickListDataProvider } from 'src/entities/tickListDataProvider'
 
 describe('TickListDataProvider', () => {
   describe('constructor', () => {
@@ -15,7 +15,7 @@ describe('TickListDataProvider', () => {
           new TickListDataProvider(
             [
               { index: -1, liquidityNet: -1, liquidityGross: 1 },
-              { index: 1, liquidityNet: 2, liquidityGross: 1 }
+              { index: 1, liquidityNet: 2, liquidityGross: 1 },
             ],
             1
           )
@@ -28,7 +28,7 @@ describe('TickListDataProvider', () => {
       const provider = new TickListDataProvider(
         [
           { index: -1, liquidityNet: -1, liquidityGross: 1 },
-          { index: 1, liquidityNet: 1, liquidityGross: 1 }
+          { index: 1, liquidityNet: 1, liquidityGross: 1 },
         ],
         1
       )
@@ -38,7 +38,7 @@ describe('TickListDataProvider', () => {
       const provider = new TickListDataProvider(
         [
           { index: -1, liquidityNet: -1, liquidityGross: 1 },
-          { index: 1, liquidityNet: 1, liquidityGross: 1 }
+          { index: 1, liquidityNet: 1, liquidityGross: 1 },
         ],
         1
       )
@@ -50,7 +50,7 @@ describe('TickListDataProvider', () => {
       const provider = new TickListDataProvider(
         [
           { index: -1, liquidityNet: -1, liquidityGross: 1 },
-          { index: 1, liquidityNet: 1, liquidityGross: 1 }
+          { index: 1, liquidityNet: 1, liquidityGross: 1 },
         ],
         1
       )
diff --git a/src/entities/trade.test.ts b/src/__tests__/entities/trade.test.ts
similarity index 94%
rename from src/entities/trade.test.ts
rename to src/__tests__/entities/trade.test.ts
index f965f13c..910af914 100644
--- a/src/entities/trade.test.ts
+++ b/src/__tests__/entities/trade.test.ts
@@ -1,12 +1,12 @@
 import { CurrencyAmount, Ether, Percent, Price, sqrt, Token, TradeType, WETH9 } from '@uniswap/sdk-core'
 import JSBI from 'jsbi'
-import { FeeAmount, TICK_SPACINGS } from '../constants'
-import { encodeSqrtRatioX96 } from '../utils/encodeSqrtRatioX96'
-import { nearestUsableTick } from '../utils/nearestUsableTick'
-import { TickMath } from '../utils/tickMath'
-import { Pool } from './pool'
-import { Route } from './route'
-import { Trade } from './trade'
+import { FeeAmount, TICK_SPACINGS } from 'src/constants'
+import { encodeSqrtRatioX96 } from 'src/utils/encodeSqrtRatioX96'
+import { nearestUsableTick } from 'src/utils/nearestUsableTick'
+import { TickMath } from 'src/utils/tickMath'
+import { Pool } from 'src/entities/pool'
+import { Route } from 'src/entities/route'
+import { Trade } from 'src/entities/trade'
 
 describe('Trade', () => {
   const ETHER = Ether.onChain(1)
@@ -33,13 +33,13 @@ describe('Trade', () => {
         {
           index: nearestUsableTick(TickMath.MIN_TICK, TICK_SPACINGS[feeAmount]),
           liquidityNet: liquidity,
-          liquidityGross: liquidity
+          liquidityGross: liquidity,
         },
         {
           index: nearestUsableTick(TickMath.MAX_TICK, TICK_SPACINGS[feeAmount]),
           liquidityNet: JSBI.multiply(liquidity, JSBI.BigInt(-1)),
-          liquidityGross: liquidity
-        }
+          liquidityGross: liquidity,
+        },
       ]
     )
   }
@@ -126,8 +126,8 @@ describe('Trade', () => {
         [
           {
             amount: CurrencyAmount.fromRawAmount(Ether.onChain(1), JSBI.BigInt(10000)),
-            route: new Route([pool_weth_0], ETHER, token0)
-          }
+            route: new Route([pool_weth_0], ETHER, token0),
+          },
         ],
         TradeType.EXACT_INPUT
       )
@@ -140,12 +140,12 @@ describe('Trade', () => {
         [
           {
             amount: CurrencyAmount.fromRawAmount(token0, JSBI.BigInt(3000)),
-            route: new Route([pool_weth_0], ETHER, token0)
+            route: new Route([pool_weth_0], ETHER, token0),
           },
           {
             amount: CurrencyAmount.fromRawAmount(token0, JSBI.BigInt(7000)),
-            route: new Route([pool_weth_1, pool_0_1], ETHER, token0)
-          }
+            route: new Route([pool_weth_1, pool_0_1], ETHER, token0),
+          },
         ],
         TradeType.EXACT_OUTPUT
       )
@@ -158,12 +158,12 @@ describe('Trade', () => {
         [
           {
             amount: CurrencyAmount.fromRawAmount(Ether.onChain(1), JSBI.BigInt(4000)),
-            route: new Route([pool_weth_0], token0, ETHER)
+            route: new Route([pool_weth_0], token0, ETHER),
           },
           {
             amount: CurrencyAmount.fromRawAmount(Ether.onChain(1), JSBI.BigInt(6000)),
-            route: new Route([pool_0_1, pool_weth_1], token0, ETHER)
-          }
+            route: new Route([pool_0_1, pool_weth_1], token0, ETHER),
+          },
         ],
         TradeType.EXACT_OUTPUT
       )
@@ -175,12 +175,12 @@ describe('Trade', () => {
         [
           {
             amount: CurrencyAmount.fromRawAmount(token0, JSBI.BigInt(3000)),
-            route: new Route([pool_weth_0], token0, ETHER)
+            route: new Route([pool_weth_0], token0, ETHER),
           },
           {
             amount: CurrencyAmount.fromRawAmount(token0, JSBI.BigInt(7000)),
-            route: new Route([pool_0_1, pool_weth_1], token0, ETHER)
-          }
+            route: new Route([pool_0_1, pool_weth_1], token0, ETHER),
+          },
         ],
         TradeType.EXACT_INPUT
       )
@@ -194,12 +194,12 @@ describe('Trade', () => {
           [
             {
               amount: CurrencyAmount.fromRawAmount(token0, JSBI.BigInt(4500)),
-              route: new Route([pool_0_1, pool_weth_1], token0, ETHER)
+              route: new Route([pool_0_1, pool_weth_1], token0, ETHER),
             },
             {
               amount: CurrencyAmount.fromRawAmount(token0, JSBI.BigInt(5500)),
-              route: new Route([pool_0_1, pool_1_2, pool_weth_2], token0, ETHER)
-            }
+              route: new Route([pool_0_1, pool_1_2, pool_weth_2], token0, ETHER),
+            },
           ],
           TradeType.EXACT_INPUT
         )
@@ -214,7 +214,7 @@ describe('Trade', () => {
           route: new Route([pool_0_1], token0, token1),
           inputAmount: CurrencyAmount.fromRawAmount(token2, 10000),
           outputAmount: CurrencyAmount.fromRawAmount(token1, 10000),
-          tradeType: TradeType.EXACT_INPUT
+          tradeType: TradeType.EXACT_INPUT,
         })
       ).toThrow('INPUT_CURRENCY_MATCH')
     })
@@ -224,7 +224,7 @@ describe('Trade', () => {
           route: new Route([pool_0_1], token0, token1),
           inputAmount: CurrencyAmount.fromRawAmount(token0, 10000),
           outputAmount: CurrencyAmount.fromRawAmount(token2, 10000),
-          tradeType: TradeType.EXACT_INPUT
+          tradeType: TradeType.EXACT_INPUT,
         })
       ).toThrow('OUTPUT_CURRENCY_MATCH')
     })
@@ -233,7 +233,7 @@ describe('Trade', () => {
         route: new Route([pool_0_1], token0, token1),
         inputAmount: CurrencyAmount.fromRawAmount(token0, 10000),
         outputAmount: CurrencyAmount.fromRawAmount(token1, 100000),
-        tradeType: TradeType.EXACT_INPUT
+        tradeType: TradeType.EXACT_INPUT,
       })
     })
     it('can create an exact output trade without simulating', () => {
@@ -241,7 +241,7 @@ describe('Trade', () => {
         route: new Route([pool_0_1], token0, token1),
         inputAmount: CurrencyAmount.fromRawAmount(token0, 10000),
         outputAmount: CurrencyAmount.fromRawAmount(token1, 100000),
-        tradeType: TradeType.EXACT_OUTPUT
+        tradeType: TradeType.EXACT_OUTPUT,
       })
     })
   })
@@ -253,15 +253,15 @@ describe('Trade', () => {
             {
               route: new Route([pool_1_2], token2, token1),
               inputAmount: CurrencyAmount.fromRawAmount(token2, 2000),
-              outputAmount: CurrencyAmount.fromRawAmount(token1, 2000)
+              outputAmount: CurrencyAmount.fromRawAmount(token1, 2000),
             },
             {
               route: new Route([pool_0_1], token0, token1),
               inputAmount: CurrencyAmount.fromRawAmount(token2, 8000),
-              outputAmount: CurrencyAmount.fromRawAmount(token1, 8000)
-            }
+              outputAmount: CurrencyAmount.fromRawAmount(token1, 8000),
+            },
           ],
-          tradeType: TradeType.EXACT_INPUT
+          tradeType: TradeType.EXACT_INPUT,
         })
       ).toThrow('INPUT_CURRENCY_MATCH')
     })
@@ -272,15 +272,15 @@ describe('Trade', () => {
             {
               route: new Route([pool_0_2], token0, token2),
               inputAmount: CurrencyAmount.fromRawAmount(token0, 10000),
-              outputAmount: CurrencyAmount.fromRawAmount(token2, 10000)
+              outputAmount: CurrencyAmount.fromRawAmount(token2, 10000),
             },
             {
               route: new Route([pool_0_1], token0, token1),
               inputAmount: CurrencyAmount.fromRawAmount(token0, 10000),
-              outputAmount: CurrencyAmount.fromRawAmount(token2, 10000)
-            }
+              outputAmount: CurrencyAmount.fromRawAmount(token2, 10000),
+            },
           ],
-          tradeType: TradeType.EXACT_INPUT
+          tradeType: TradeType.EXACT_INPUT,
         })
       ).toThrow('OUTPUT_CURRENCY_MATCH')
     })
@@ -291,15 +291,15 @@ describe('Trade', () => {
           {
             route: new Route([pool_0_1], token0, token1),
             inputAmount: CurrencyAmount.fromRawAmount(token0, 5000),
-            outputAmount: CurrencyAmount.fromRawAmount(token1, 50000)
+            outputAmount: CurrencyAmount.fromRawAmount(token1, 50000),
           },
           {
             route: new Route([pool_0_2, pool_1_2], token0, token1),
             inputAmount: CurrencyAmount.fromRawAmount(token0, 5000),
-            outputAmount: CurrencyAmount.fromRawAmount(token1, 50000)
-          }
+            outputAmount: CurrencyAmount.fromRawAmount(token1, 50000),
+          },
         ],
-        tradeType: TradeType.EXACT_INPUT
+        tradeType: TradeType.EXACT_INPUT,
       })
     })
 
@@ -309,15 +309,15 @@ describe('Trade', () => {
           {
             route: new Route([pool_0_1], token0, token1),
             inputAmount: CurrencyAmount.fromRawAmount(token0, 5001),
-            outputAmount: CurrencyAmount.fromRawAmount(token1, 50000)
+            outputAmount: CurrencyAmount.fromRawAmount(token1, 50000),
           },
           {
             route: new Route([pool_0_2, pool_1_2], token0, token1),
             inputAmount: CurrencyAmount.fromRawAmount(token0, 4999),
-            outputAmount: CurrencyAmount.fromRawAmount(token1, 50000)
-          }
+            outputAmount: CurrencyAmount.fromRawAmount(token1, 50000),
+          },
         ],
-        tradeType: TradeType.EXACT_OUTPUT
+        tradeType: TradeType.EXACT_OUTPUT,
       })
     })
   })
@@ -327,22 +327,22 @@ describe('Trade', () => {
       route: new Route([pool_0_1, pool_1_2], token0, token2),
       inputAmount: CurrencyAmount.fromRawAmount(token0, 100),
       outputAmount: CurrencyAmount.fromRawAmount(token2, 69),
-      tradeType: TradeType.EXACT_INPUT
+      tradeType: TradeType.EXACT_INPUT,
     })
     const multiRoute = Trade.createUncheckedTradeWithMultipleRoutes({
       routes: [
         {
           route: new Route([pool_0_1, pool_1_2], token0, token2),
           inputAmount: CurrencyAmount.fromRawAmount(token0, 50),
-          outputAmount: CurrencyAmount.fromRawAmount(token2, 35)
+          outputAmount: CurrencyAmount.fromRawAmount(token2, 35),
         },
         {
           route: new Route([pool_0_2], token0, token2),
           inputAmount: CurrencyAmount.fromRawAmount(token0, 50),
-          outputAmount: CurrencyAmount.fromRawAmount(token2, 34)
-        }
+          outputAmount: CurrencyAmount.fromRawAmount(token2, 34),
+        },
       ],
-      tradeType: TradeType.EXACT_INPUT
+      tradeType: TradeType.EXACT_INPUT,
     })
     it('can access route for single route trade if less than 0', () => {
       expect(singleRoute.route).toBeDefined()
@@ -364,22 +364,22 @@ describe('Trade', () => {
         route: new Route([pool_0_1, pool_1_2], token0, token2),
         inputAmount: CurrencyAmount.fromRawAmount(token0, 100),
         outputAmount: CurrencyAmount.fromRawAmount(token2, 69),
-        tradeType: TradeType.EXACT_INPUT
+        tradeType: TradeType.EXACT_INPUT,
       })
       const exactInMultiRoute = Trade.createUncheckedTradeWithMultipleRoutes({
         routes: [
           {
             route: new Route([pool_0_1, pool_1_2], token0, token2),
             inputAmount: CurrencyAmount.fromRawAmount(token0, 50),
-            outputAmount: CurrencyAmount.fromRawAmount(token2, 35)
+            outputAmount: CurrencyAmount.fromRawAmount(token2, 35),
           },
           {
             route: new Route([pool_0_2], token0, token2),
             inputAmount: CurrencyAmount.fromRawAmount(token0, 50),
-            outputAmount: CurrencyAmount.fromRawAmount(token2, 34)
-          }
+            outputAmount: CurrencyAmount.fromRawAmount(token2, 34),
+          },
         ],
-        tradeType: TradeType.EXACT_INPUT
+        tradeType: TradeType.EXACT_INPUT,
       })
       it('throws if less than 0', () => {
         expect(() => exactIn.minimumAmountOut(new Percent(-1, 100))).toThrow('SLIPPAGE_TOLERANCE')
@@ -403,22 +403,22 @@ describe('Trade', () => {
         route: new Route([pool_0_1, pool_1_2], token0, token2),
         inputAmount: CurrencyAmount.fromRawAmount(token0, 156),
         outputAmount: CurrencyAmount.fromRawAmount(token2, 100),
-        tradeType: TradeType.EXACT_OUTPUT
+        tradeType: TradeType.EXACT_OUTPUT,
       })
       const exactOutMultiRoute = Trade.createUncheckedTradeWithMultipleRoutes({
         routes: [
           {
             route: new Route([pool_0_1, pool_1_2], token0, token2),
             inputAmount: CurrencyAmount.fromRawAmount(token0, 78),
-            outputAmount: CurrencyAmount.fromRawAmount(token2, 50)
+            outputAmount: CurrencyAmount.fromRawAmount(token2, 50),
           },
           {
             route: new Route([pool_0_2], token0, token2),
             inputAmount: CurrencyAmount.fromRawAmount(token0, 78),
-            outputAmount: CurrencyAmount.fromRawAmount(token2, 50)
-          }
+            outputAmount: CurrencyAmount.fromRawAmount(token2, 50),
+          },
         ],
-        tradeType: TradeType.EXACT_OUTPUT
+        tradeType: TradeType.EXACT_OUTPUT,
       })
 
       it('throws if less than 0', () => {
@@ -459,25 +459,25 @@ describe('Trade', () => {
           {
             route: new Route([pool_0_1, pool_1_2], token0, token2),
             inputAmount: CurrencyAmount.fromRawAmount(token0, 100),
-            outputAmount: CurrencyAmount.fromRawAmount(token2, 69)
-          }
+            outputAmount: CurrencyAmount.fromRawAmount(token2, 69),
+          },
         ],
-        tradeType: TradeType.EXACT_INPUT
+        tradeType: TradeType.EXACT_INPUT,
       })
       const exactInMultipleRoutes = Trade.createUncheckedTradeWithMultipleRoutes({
         routes: [
           {
             route: new Route([pool_0_1, pool_1_2], token0, token2),
             inputAmount: CurrencyAmount.fromRawAmount(token0, 90),
-            outputAmount: CurrencyAmount.fromRawAmount(token2, 62)
+            outputAmount: CurrencyAmount.fromRawAmount(token2, 62),
           },
           {
             route: new Route([pool_0_2], token0, token2),
             inputAmount: CurrencyAmount.fromRawAmount(token0, 10),
-            outputAmount: CurrencyAmount.fromRawAmount(token2, 7)
-          }
+            outputAmount: CurrencyAmount.fromRawAmount(token2, 7),
+          },
         ],
-        tradeType: TradeType.EXACT_INPUT
+        tradeType: TradeType.EXACT_INPUT,
       })
       it('is cached', () => {
         expect(exactIn.priceImpact === exactIn.priceImpact).toStrictEqual(true)
@@ -499,25 +499,25 @@ describe('Trade', () => {
           {
             route: new Route([pool_0_1, pool_1_2], token0, token2),
             inputAmount: CurrencyAmount.fromRawAmount(token0, 156),
-            outputAmount: CurrencyAmount.fromRawAmount(token2, 100)
-          }
+            outputAmount: CurrencyAmount.fromRawAmount(token2, 100),
+          },
         ],
-        tradeType: TradeType.EXACT_OUTPUT
+        tradeType: TradeType.EXACT_OUTPUT,
       })
       const exactOutMultipleRoutes = Trade.createUncheckedTradeWithMultipleRoutes({
         routes: [
           {
             route: new Route([pool_0_1, pool_1_2], token0, token2),
             inputAmount: CurrencyAmount.fromRawAmount(token0, 140),
-            outputAmount: CurrencyAmount.fromRawAmount(token2, 90)
+            outputAmount: CurrencyAmount.fromRawAmount(token2, 90),
           },
           {
             route: new Route([pool_0_2], token0, token2),
             inputAmount: CurrencyAmount.fromRawAmount(token0, 16),
-            outputAmount: CurrencyAmount.fromRawAmount(token2, 10)
-          }
+            outputAmount: CurrencyAmount.fromRawAmount(token2, 10),
+          },
         ],
-        tradeType: TradeType.EXACT_OUTPUT
+        tradeType: TradeType.EXACT_OUTPUT,
       })
 
       it('is cached', () => {
@@ -545,7 +545,7 @@ describe('Trade', () => {
     it('throws with max hops of 0', async () => {
       await expect(
         Trade.bestTradeExactIn([pool_0_2], CurrencyAmount.fromRawAmount(token0, JSBI.BigInt(10000)), token2, {
-          maxHops: 0
+          maxHops: 0,
         })
       ).rejects.toThrow('MAX_HOPS')
     })
@@ -796,7 +796,7 @@ describe('Trade', () => {
     it('throws with max hops of 0', async () => {
       await expect(
         Trade.bestTradeExactOut([pool_0_2], token0, CurrencyAmount.fromRawAmount(token2, JSBI.BigInt(100)), {
-          maxHops: 0
+          maxHops: 0,
         })
       ).rejects.toThrow('MAX_HOPS')
     })
diff --git a/src/multicall.test.ts b/src/__tests__/multicall.test.ts
similarity index 95%
rename from src/multicall.test.ts
rename to src/__tests__/multicall.test.ts
index 405da406..412d3ba5 100644
--- a/src/multicall.test.ts
+++ b/src/__tests__/multicall.test.ts
@@ -1,4 +1,4 @@
-import { Multicall } from './multicall'
+import { Multicall } from 'src/multicall'
 
 describe('Multicall', () => {
   describe('#encodeMulticall', () => {
@@ -15,7 +15,7 @@ describe('Multicall', () => {
     it('works for string array with length >1', async () => {
       const calldata = Multicall.encodeMulticall([
         '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
-        '0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'
+        '0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
       ])
       expect(calldata).toBe(
         '0xac9650d800000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000020aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000000000000000000000000000000000000000000000000000000000020bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'
diff --git a/src/nonfungiblePositionManager.test.ts b/src/__tests__/nonfungiblePositionManager.test.ts
similarity index 95%
rename from src/nonfungiblePositionManager.test.ts
rename to src/__tests__/nonfungiblePositionManager.test.ts
index bc390fa0..c2a6e8c5 100644
--- a/src/nonfungiblePositionManager.test.ts
+++ b/src/__tests__/nonfungiblePositionManager.test.ts
@@ -1,9 +1,9 @@
 import { Percent, Token, CurrencyAmount, WETH9, Ether } from '@uniswap/sdk-core'
-import { FeeAmount, TICK_SPACINGS } from './constants'
-import { Pool } from './entities/pool'
-import { Position } from './entities/position'
-import { NonfungiblePositionManager } from './nonfungiblePositionManager'
-import { encodeSqrtRatioX96 } from './utils/encodeSqrtRatioX96'
+import { FeeAmount, TICK_SPACINGS } from 'src/constants'
+import { Pool } from 'src/entities/pool'
+import { Position } from 'src/entities/position'
+import { NonfungiblePositionManager } from 'src/nonfungiblePositionManager'
+import { encodeSqrtRatioX96 } from 'src/utils/encodeSqrtRatioX96'
 
 describe('NonfungiblePositionManager', () => {
   const token0 = new Token(1, '0x0000000000000000000000000000000000000001', 18, 't0', 'token0')
@@ -39,7 +39,7 @@ describe('NonfungiblePositionManager', () => {
             pool: pool_0_1,
             tickLower: -TICK_SPACINGS[FeeAmount.MEDIUM],
             tickUpper: TICK_SPACINGS[FeeAmount.MEDIUM],
-            liquidity: 0
+            liquidity: 0,
           }),
           { recipient, slippageTolerance, deadline }
         )
@@ -53,7 +53,7 @@ describe('NonfungiblePositionManager', () => {
             pool: pool_0_1,
             tickLower: -TICK_SPACINGS[FeeAmount.MEDIUM],
             tickUpper: TICK_SPACINGS[FeeAmount.MEDIUM],
-            liquidity: 1
+            liquidity: 1,
           }),
           { recipient, slippageTolerance, deadline, useNative: Ether.onChain(1) }
         )
@@ -66,7 +66,7 @@ describe('NonfungiblePositionManager', () => {
           pool: pool_0_1,
           tickLower: -TICK_SPACINGS[FeeAmount.MEDIUM],
           tickUpper: TICK_SPACINGS[FeeAmount.MEDIUM],
-          liquidity: 1
+          liquidity: 1,
         }),
         { recipient, slippageTolerance, deadline }
       )
@@ -83,7 +83,7 @@ describe('NonfungiblePositionManager', () => {
           pool: pool_0_1,
           tickLower: -TICK_SPACINGS[FeeAmount.MEDIUM],
           tickUpper: TICK_SPACINGS[FeeAmount.MEDIUM],
-          liquidity: 1
+          liquidity: 1,
         }),
         { tokenId, slippageTolerance, deadline }
       )
@@ -100,7 +100,7 @@ describe('NonfungiblePositionManager', () => {
           pool: pool_0_1,
           tickLower: -TICK_SPACINGS[FeeAmount.MEDIUM],
           tickUpper: TICK_SPACINGS[FeeAmount.MEDIUM],
-          liquidity: 1
+          liquidity: 1,
         }),
         { recipient, slippageTolerance, deadline, createPool: true }
       )
@@ -117,7 +117,7 @@ describe('NonfungiblePositionManager', () => {
           pool: pool_1_weth,
           tickLower: -TICK_SPACINGS[FeeAmount.MEDIUM],
           tickUpper: TICK_SPACINGS[FeeAmount.MEDIUM],
-          liquidity: 1
+          liquidity: 1,
         }),
         { recipient, slippageTolerance, deadline, useNative: Ether.onChain(1) }
       )
@@ -135,7 +135,7 @@ describe('NonfungiblePositionManager', () => {
         tokenId,
         expectedCurrencyOwed0: CurrencyAmount.fromRawAmount(token0, 0),
         expectedCurrencyOwed1: CurrencyAmount.fromRawAmount(token1, 0),
-        recipient
+        recipient,
       })
 
       expect(calldata).toEqual(
@@ -149,7 +149,7 @@ describe('NonfungiblePositionManager', () => {
         tokenId,
         expectedCurrencyOwed0: CurrencyAmount.fromRawAmount(token1, 0),
         expectedCurrencyOwed1: CurrencyAmount.fromRawAmount(Ether.onChain(1), 0),
-        recipient
+        recipient,
       })
 
       expect(calldata).toEqual(
@@ -167,7 +167,7 @@ describe('NonfungiblePositionManager', () => {
             pool: pool_0_1,
             tickLower: -TICK_SPACINGS[FeeAmount.MEDIUM],
             tickUpper: TICK_SPACINGS[FeeAmount.MEDIUM],
-            liquidity: 0
+            liquidity: 0,
           }),
           {
             tokenId,
@@ -177,8 +177,8 @@ describe('NonfungiblePositionManager', () => {
             collectOptions: {
               expectedCurrencyOwed0: CurrencyAmount.fromRawAmount(token0, 0),
               expectedCurrencyOwed1: CurrencyAmount.fromRawAmount(token1, 0),
-              recipient
-            }
+              recipient,
+            },
           }
         )
       ).toThrow('ZERO_LIQUIDITY')
@@ -191,7 +191,7 @@ describe('NonfungiblePositionManager', () => {
             pool: pool_0_1,
             tickLower: -TICK_SPACINGS[FeeAmount.MEDIUM],
             tickUpper: TICK_SPACINGS[FeeAmount.MEDIUM],
-            liquidity: 50
+            liquidity: 50,
           }),
           {
             tokenId,
@@ -201,8 +201,8 @@ describe('NonfungiblePositionManager', () => {
             collectOptions: {
               expectedCurrencyOwed0: CurrencyAmount.fromRawAmount(token0, 0),
               expectedCurrencyOwed1: CurrencyAmount.fromRawAmount(token1, 0),
-              recipient
-            }
+              recipient,
+            },
           }
         )
       ).toThrow('ZERO_LIQUIDITY')
@@ -215,7 +215,7 @@ describe('NonfungiblePositionManager', () => {
             pool: pool_0_1,
             tickLower: -TICK_SPACINGS[FeeAmount.MEDIUM],
             tickUpper: TICK_SPACINGS[FeeAmount.MEDIUM],
-            liquidity: 50
+            liquidity: 50,
           }),
           {
             tokenId,
@@ -226,8 +226,8 @@ describe('NonfungiblePositionManager', () => {
             collectOptions: {
               expectedCurrencyOwed0: CurrencyAmount.fromRawAmount(token0, 0),
               expectedCurrencyOwed1: CurrencyAmount.fromRawAmount(token1, 0),
-              recipient
-            }
+              recipient,
+            },
           }
         )
       ).toThrow('CANNOT_BURN')
@@ -239,7 +239,7 @@ describe('NonfungiblePositionManager', () => {
           pool: pool_0_1,
           tickLower: -TICK_SPACINGS[FeeAmount.MEDIUM],
           tickUpper: TICK_SPACINGS[FeeAmount.MEDIUM],
-          liquidity: 100
+          liquidity: 100,
         }),
         {
           tokenId,
@@ -249,8 +249,8 @@ describe('NonfungiblePositionManager', () => {
           collectOptions: {
             expectedCurrencyOwed0: CurrencyAmount.fromRawAmount(token0, 0),
             expectedCurrencyOwed1: CurrencyAmount.fromRawAmount(token1, 0),
-            recipient
-          }
+            recipient,
+          },
         }
       )
 
@@ -266,7 +266,7 @@ describe('NonfungiblePositionManager', () => {
           pool: pool_0_1,
           tickLower: -TICK_SPACINGS[FeeAmount.MEDIUM],
           tickUpper: TICK_SPACINGS[FeeAmount.MEDIUM],
-          liquidity: 100
+          liquidity: 100,
         }),
         {
           tokenId,
@@ -276,8 +276,8 @@ describe('NonfungiblePositionManager', () => {
           collectOptions: {
             expectedCurrencyOwed0: CurrencyAmount.fromRawAmount(token0, 0),
             expectedCurrencyOwed1: CurrencyAmount.fromRawAmount(token1, 0),
-            recipient
-          }
+            recipient,
+          },
         }
       )
 
@@ -296,7 +296,7 @@ describe('NonfungiblePositionManager', () => {
           pool: pool_1_weth,
           tickLower: -TICK_SPACINGS[FeeAmount.MEDIUM],
           tickUpper: TICK_SPACINGS[FeeAmount.MEDIUM],
-          liquidity: 100
+          liquidity: 100,
         }),
         {
           tokenId,
@@ -306,8 +306,8 @@ describe('NonfungiblePositionManager', () => {
           collectOptions: {
             expectedCurrencyOwed0: pool_1_weth.token0.equals(token1) ? tokenAmount : ethAmount,
             expectedCurrencyOwed1: pool_1_weth.token0.equals(token1) ? ethAmount : tokenAmount,
-            recipient
-          }
+            recipient,
+          },
         }
       )
 
@@ -326,7 +326,7 @@ describe('NonfungiblePositionManager', () => {
           pool: pool_1_weth,
           tickLower: -TICK_SPACINGS[FeeAmount.MEDIUM],
           tickUpper: TICK_SPACINGS[FeeAmount.MEDIUM],
-          liquidity: 100
+          liquidity: 100,
         }),
         {
           tokenId,
@@ -336,8 +336,8 @@ describe('NonfungiblePositionManager', () => {
           collectOptions: {
             expectedCurrencyOwed0: pool_1_weth.token0.equals(token1) ? tokenAmount : ethAmount,
             expectedCurrencyOwed1: pool_1_weth.token0.equals(token1) ? ethAmount : tokenAmount,
-            recipient
-          }
+            recipient,
+          },
         }
       )
 
@@ -352,7 +352,7 @@ describe('NonfungiblePositionManager', () => {
       const options = {
         sender,
         recipient,
-        tokenId
+        tokenId,
       }
       const { calldata, value } = NonfungiblePositionManager.safeTransferFromParameters(options)
 
@@ -367,7 +367,7 @@ describe('NonfungiblePositionManager', () => {
         sender,
         recipient,
         tokenId,
-        data
+        data,
       }
       const { calldata, value } = NonfungiblePositionManager.safeTransferFromParameters(options)
 
diff --git a/src/payments.test.ts b/src/__tests__/payments.test.ts
similarity index 95%
rename from src/payments.test.ts
rename to src/__tests__/payments.test.ts
index c75e91bc..8fc36c1e 100644
--- a/src/payments.test.ts
+++ b/src/__tests__/payments.test.ts
@@ -1,13 +1,13 @@
 import { Percent, Token } from '@uniswap/sdk-core'
 import JSBI from 'jsbi'
-import { Payments } from './payments'
+import { Payments } from 'src/payments'
 
 const recipient = '0x0000000000000000000000000000000000000003'
 const amount = JSBI.BigInt(123)
 
 const feeOptions = {
   fee: new Percent(1, 1000),
-  recipient: '0x0000000000000000000000000000000000000009'
+  recipient: '0x0000000000000000000000000000000000000009',
 }
 
 const token = new Token(1, '0x0000000000000000000000000000000000000001', 18, 't0', 'token0')
diff --git a/src/quoter.test.ts b/src/__tests__/quoter.test.ts
similarity index 96%
rename from src/quoter.test.ts
rename to src/__tests__/quoter.test.ts
index 3c57da0d..4f291606 100644
--- a/src/quoter.test.ts
+++ b/src/__tests__/quoter.test.ts
@@ -1,9 +1,9 @@
 import JSBI from 'jsbi'
 import { CurrencyAmount, Token, TradeType, WETH9 } from '@uniswap/sdk-core'
-import { FeeAmount, TICK_SPACINGS } from './constants'
-import { SwapQuoter } from './quoter'
-import { nearestUsableTick, encodeSqrtRatioX96, TickMath } from './utils'
-import { Route, Trade, Pool } from './entities'
+import { FeeAmount, TICK_SPACINGS } from 'src/constants'
+import { SwapQuoter } from 'src/quoter'
+import { nearestUsableTick, encodeSqrtRatioX96, TickMath } from 'src/utils'
+import { Route, Trade, Pool } from 'src/entities'
 
 describe('SwapQuoter', () => {
   const token0 = new Token(1, '0x0000000000000000000000000000000000000001', 18, 't0', 'token0')
@@ -19,13 +19,13 @@ describe('SwapQuoter', () => {
       {
         index: nearestUsableTick(TickMath.MIN_TICK, TICK_SPACINGS[feeAmount]),
         liquidityNet: liquidity,
-        liquidityGross: liquidity
+        liquidityGross: liquidity,
       },
       {
         index: nearestUsableTick(TickMath.MAX_TICK, TICK_SPACINGS[feeAmount]),
         liquidityNet: -liquidity,
-        liquidityGross: liquidity
-      }
+        liquidityGross: liquidity,
+      },
     ])
   }
 
@@ -104,7 +104,7 @@ describe('SwapQuoter', () => {
           TradeType.EXACT_INPUT
         )
         const { calldata, value } = SwapQuoter.quoteCallParameters(trade.route, trade.inputAmount, trade.tradeType, {
-          sqrtPriceLimitX96: JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(128))
+          sqrtPriceLimitX96: JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(128)),
         })
 
         expect(calldata).toBe(
@@ -126,7 +126,7 @@ describe('SwapQuoter', () => {
           trade.outputAmount,
           trade.tradeType,
           {
-            useQuoterV2: true
+            useQuoterV2: true,
           }
         )
 
diff --git a/src/__tests__/runners/swapRunner.test.ts b/src/__tests__/runners/swapRunner.test.ts
new file mode 100644
index 00000000..54341744
--- /dev/null
+++ b/src/__tests__/runners/swapRunner.test.ts
@@ -0,0 +1,69 @@
+import { Token, BigintIsh, CurrencyAmount } from '@uniswap/sdk-core'
+import { Pool } from 'src/entities/pool'
+import { TickDataProvider } from 'src/entities/tickDataProvider'
+import { Tick, TickConstructorArgs } from 'src/entities/tick'
+import { TickList } from 'src/utils/tickList'
+import fs from 'fs'
+
+export class CustomTickListDataProvider implements TickDataProvider {
+  private ticks: readonly Tick[]
+
+  constructor(ticks: (Tick | TickConstructorArgs)[]) {
+    const ticksMapped: Tick[] = ticks.map((t) => (t instanceof Tick ? t : new Tick(t)))
+    this.ticks = ticksMapped
+  }
+
+  async getTick(tick: number): Promise<{ liquidityNet: BigintIsh; liquidityGross: BigintIsh }> {
+    return TickList.getTick(this.ticks, tick)
+  }
+
+  async nextInitializedTickWithinOneWord(tick: number, lte: boolean, tickSpacing: number): Promise<[number, boolean]> {
+    return TickList.nextInitializedTickWithinOneWord(this.ticks, tick, lte, tickSpacing)
+  }
+}
+
+describe('Automated Swap Test Runner', () => {
+  const stubsDir = `${__dirname}/../stubs/swap`
+  const jsonStubs = fs.readdirSync(stubsDir)
+  it('should contain at least 1 json stub test', () => {
+    expect(jsonStubs.length).toBeGreaterThanOrEqual(1)
+  })
+
+  for (const fileName of jsonStubs) {
+    const testsJson = JSON.parse(fs.readFileSync(`${stubsDir}/${fileName}`).toString())
+
+    // Run the tests defined in the file
+
+    describe(`${testsJson.poolName}`, () => {
+      const tokenA = new Token(testsJson.tokenA.chainId, testsJson.tokenA.address, testsJson.tokenA.decimals)
+      const tokenB = new Token(testsJson.tokenB.chainId, testsJson.tokenB.address, testsJson.tokenB.decimals)
+      const pool = new Pool(
+        tokenA,
+        tokenB,
+        testsJson.fee,
+        testsJson.sqrtRatioX96,
+        testsJson.liquidity,
+        testsJson.tickCurrent,
+        new CustomTickListDataProvider(testsJson.ticks)
+      )
+
+      for (const test of testsJson.tests) {
+        if (test.exactInput) {
+          it(`should calculate output ${test.expectedAmountCalculated}`, async () => {
+            const [output, _pool]: [CurrencyAmount<typeof tokenB>, Pool] = await pool.getOutputAmount(
+              CurrencyAmount.fromRawAmount(tokenA, test.amountSpecified)
+            )
+            expect(output.asFraction.toFixed(0)).toBe(test.expectedAmountCalculated)
+          })
+        } else {
+          it(`should calculate input ${test.expectedAmountCalculated}`, async () => {
+            const [input, _pool]: [CurrencyAmount<typeof tokenA>, Pool] = await pool.getInputAmount(
+              CurrencyAmount.fromRawAmount(tokenB, test.amountSpecified)
+            )
+            expect(input.asFraction.toFixed(0)).toBe(test.expectedAmountCalculated)
+          })
+        }
+      }
+    })
+  }
+})
diff --git a/src/selfPermit.test.ts b/src/__tests__/selfPermit.test.ts
similarity index 95%
rename from src/selfPermit.test.ts
rename to src/__tests__/selfPermit.test.ts
index 798f87f6..a9cdf426 100644
--- a/src/selfPermit.test.ts
+++ b/src/__tests__/selfPermit.test.ts
@@ -1,6 +1,6 @@
 import { Token } from '@uniswap/sdk-core'
 import JSBI from 'jsbi'
-import { AllowedPermitArguments, SelfPermit, StandardPermitArguments } from './selfPermit'
+import { AllowedPermitArguments, SelfPermit, StandardPermitArguments } from 'src/selfPermit'
 
 const token = new Token(1, '0x0000000000000000000000000000000000000001', 18, 't0', 'token0')
 const standardPermitOptions: StandardPermitArguments = {
@@ -8,14 +8,14 @@ const standardPermitOptions: StandardPermitArguments = {
   r: '0x0000000000000000000000000000000000000000000000000000000000000001',
   s: '0x0000000000000000000000000000000000000000000000000000000000000002',
   amount: JSBI.BigInt(123),
-  deadline: JSBI.BigInt(123)
+  deadline: JSBI.BigInt(123),
 }
 const allowedPermitOptions: AllowedPermitArguments = {
   v: 0,
   r: '0x0000000000000000000000000000000000000000000000000000000000000001',
   s: '0x0000000000000000000000000000000000000000000000000000000000000002',
   nonce: JSBI.BigInt(123),
-  expiry: JSBI.BigInt(123)
+  expiry: JSBI.BigInt(123),
 }
 
 describe('SelfPermit', () => {
diff --git a/src/staker.test.ts b/src/__tests__/staker.test.ts
similarity index 96%
rename from src/staker.test.ts
rename to src/__tests__/staker.test.ts
index c8f41692..070e9a55 100644
--- a/src/staker.test.ts
+++ b/src/__tests__/staker.test.ts
@@ -1,9 +1,9 @@
 import { Token } from '@uniswap/sdk-core'
-import { FeeAmount } from './constants'
-import { Pool } from './entities/pool'
-import { Staker } from './staker'
-import { NonfungiblePositionManager } from './nonfungiblePositionManager'
-import { encodeSqrtRatioX96 } from './utils/encodeSqrtRatioX96'
+import { FeeAmount } from 'src/constants'
+import { Pool } from 'src/entities/pool'
+import { Staker } from 'src/staker'
+import { NonfungiblePositionManager } from 'src/nonfungiblePositionManager'
+import { encodeSqrtRatioX96 } from 'src/utils/encodeSqrtRatioX96'
 
 describe('Staker', () => {
   const reward = new Token(1, '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984', 18, 'r', 'reward')
@@ -17,7 +17,7 @@ describe('Staker', () => {
     pool: pool_0_1,
     startTime: 100,
     endTime: 200,
-    refundee: '0x0000000000000000000000000000000000000001'
+    refundee: '0x0000000000000000000000000000000000000001',
   }
 
   const incentiveKeys = [incentiveKey]
@@ -26,7 +26,7 @@ describe('Staker', () => {
     pool: pool_0_1,
     startTime: 50,
     endTime: 100,
-    refundee: '0x0000000000000000000000000000000000000089'
+    refundee: '0x0000000000000000000000000000000000000089',
   })
 
   const recipient = '0x0000000000000000000000000000000000000003'
@@ -38,7 +38,7 @@ describe('Staker', () => {
       const { calldata, value } = Staker.collectRewards(incentiveKey, {
         tokenId: tokenId,
         recipient: recipient,
-        amount: 1
+        amount: 1,
       })
 
       expect(calldata).toEqual(
@@ -50,7 +50,7 @@ describe('Staker', () => {
     it('succeeds no amount', () => {
       const { calldata, value } = Staker.collectRewards(incentiveKey, {
         tokenId: tokenId,
-        recipient: recipient
+        recipient: recipient,
       })
 
       expect(calldata).toEqual(
@@ -61,7 +61,7 @@ describe('Staker', () => {
     it('succeeds multiple keys', () => {
       const { calldata, value } = Staker.collectRewards(incentiveKeys, {
         tokenId: tokenId,
-        recipient: recipient
+        recipient: recipient,
       })
 
       expect(calldata).toEqual(
@@ -77,7 +77,7 @@ describe('Staker', () => {
         recipient: recipient,
         amount: 0,
         owner: sender,
-        data: '0x0000000000000000000000000000000000000008'
+        data: '0x0000000000000000000000000000000000000008',
       })
 
       expect(calldata).toEqual(
@@ -92,7 +92,7 @@ describe('Staker', () => {
         recipient: recipient,
         amount: 0,
         owner: sender,
-        data: '0x0000000000000000000000000000000000000008'
+        data: '0x0000000000000000000000000000000000000008',
       })
 
       expect(calldata).toEqual(
@@ -128,7 +128,7 @@ describe('Staker', () => {
         sender,
         recipient,
         tokenId,
-        data
+        data,
       }
       const { calldata, value } = NonfungiblePositionManager.safeTransferFromParameters(options)
 
diff --git a/src/__tests__/stubs/README.md b/src/__tests__/stubs/README.md
new file mode 100644
index 00000000..ffa3d81c
--- /dev/null
+++ b/src/__tests__/stubs/README.md
@@ -0,0 +1,60 @@
+# Automatic Swap Tests
+
+The test framework includes a test runner that runs a given set of tests and validates expected outputs. Below you can see the expected format of the stub files.
+
+## Swap Stub Format
+
+To automatically generate new test cases for a given pool, `scripts/generate-swap-tests.js` in this repository can be used.
+
+Example Usage:
+
+```bash
+node scripts/generate-swap-tests.js -P https://mainnet.chainnodes.org/api_key -p 0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640 -n 100 --reversed
+```
+
+`--reversed` is optional and sets `zeroForOne` to false, which is true by default.
+
+You can generate test cases from any chain with Uniswap V3 pools.
+Just pass the correct provider to `-P`. You can get a free RPC URL for this at [Chainnodes](https://www.chainnodes.org/).
+And of course a correct pool for the network you are in for `-p`.
+If the Diamond API doesn't support the given network, we will fallback to RPC calls, which is less accurate and slower.
+
+The following JSON format is used for tests:
+
+```JSON
+{
+  "poolName": "USDC - WETH 0.05%",
+  "ticks": [
+    {
+      "index": 1,
+      "liquidityGross": "1234",
+      "liquidityNet": "123"
+    }
+  ],
+  "tokenA": {
+    "chainId": 1,
+    "address": "0x...",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0x...",
+    "decimals": 18
+  },
+  "fee": 100,
+  "sqrtRatioX96": "123456",
+  "liquidity": "123456789",
+  "tickCurrent": 15,
+  "tests": [
+    {
+      "amountSpecified": "12345678",
+      "exactInput": true,
+      "expectedAmountCalculated": "123456789"
+    }
+  ]
+}
+```
+
+You can add any number of files and include any number of tests. Filenames are not relevant. `poolName` is used to identify failing tests.
+
+Files for swap tests are added to the `src/__tests___/stubs/swap/` directory.
diff --git a/src/__tests__/stubs/swap/0x3416cF6C708Da44DB2624D63ea0AAef7113527C6-reversed.json b/src/__tests__/stubs/swap/0x3416cF6C708Da44DB2624D63ea0AAef7113527C6-reversed.json
new file mode 100644
index 00000000..6e939762
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x3416cF6C708Da44DB2624D63ea0AAef7113527C6-reversed.json
@@ -0,0 +1,1071 @@
+{
+  "poolName": "USDC - USDT 100 - reversed",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
+    "decimals": 6
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
+    "decimals": 6
+  },
+  "fee": 100,
+  "liquidity": "322564773212036051",
+  "sqrtRatioX96": "79234941334917143306414271079",
+  "tickCurrent": 1,
+  "ticks": [
+    {
+      "index": -887272,
+      "liquidityNet": "21501874394",
+      "liquidityGross": "21501874394"
+    },
+    {
+      "index": -92109,
+      "liquidityNet": "15090395",
+      "liquidityGross": "15090395"
+    },
+    {
+      "index": -69082,
+      "liquidityNet": "10836954",
+      "liquidityGross": "10836954"
+    },
+    {
+      "index": -23028,
+      "liquidityNet": "15811602770",
+      "liquidityGross": "15811602770"
+    },
+    {
+      "index": -12502,
+      "liquidityNet": "3289565163",
+      "liquidityGross": "3289565163"
+    },
+    {
+      "index": -9164,
+      "liquidityNet": "-15811602770",
+      "liquidityGross": "15811602770"
+    },
+    {
+      "index": -1626,
+      "liquidityNet": "13277338584",
+      "liquidityGross": "13277338584"
+    },
+    {
+      "index": -492,
+      "liquidityNet": "535269421298",
+      "liquidityGross": "535269421298"
+    },
+    {
+      "index": -490,
+      "liquidityNet": "-535269421298",
+      "liquidityGross": "535269421298"
+    },
+    {
+      "index": -488,
+      "liquidityNet": "-10836954",
+      "liquidityGross": "10836954"
+    },
+    {
+      "index": -296,
+      "liquidityNet": "38647527064",
+      "liquidityGross": "38647527064"
+    },
+    {
+      "index": -203,
+      "liquidityNet": "1554107998427",
+      "liquidityGross": "1554107998427"
+    },
+    {
+      "index": -162,
+      "liquidityNet": "8532710072160",
+      "liquidityGross": "8532710072160"
+    },
+    {
+      "index": -105,
+      "liquidityNet": "3381762057401",
+      "liquidityGross": "3381762057401"
+    },
+    {
+      "index": -102,
+      "liquidityNet": "3401248542803",
+      "liquidityGross": "3401248542803"
+    },
+    {
+      "index": -101,
+      "liquidityNet": "-5510928517765",
+      "liquidityGross": "11554491626555"
+    },
+    {
+      "index": -100,
+      "liquidityNet": "89179463",
+      "liquidityGross": "89179463"
+    },
+    {
+      "index": -98,
+      "liquidityNet": "7691293177",
+      "liquidityGross": "7691293177"
+    },
+    {
+      "index": -77,
+      "liquidityNet": "2009741",
+      "liquidityGross": "2009741"
+    },
+    {
+      "index": -55,
+      "liquidityNet": "1984511767671",
+      "liquidityGross": "1984511767671"
+    },
+    {
+      "index": -51,
+      "liquidityNet": "1667992655480",
+      "liquidityGross": "1667992655480"
+    },
+    {
+      "index": -50,
+      "liquidityNet": "2886857740953",
+      "liquidityGross": "2886857740953"
+    },
+    {
+      "index": -49,
+      "liquidityNet": "8232418560141",
+      "liquidityGross": "8232418560141"
+    },
+    {
+      "index": -44,
+      "liquidityNet": "282776802323",
+      "liquidityGross": "282776802323"
+    },
+    {
+      "index": -41,
+      "liquidityNet": "6656168833",
+      "liquidityGross": "6656168833"
+    },
+    {
+      "index": -38,
+      "liquidityNet": "3494709585741",
+      "liquidityGross": "3494709585741"
+    },
+    {
+      "index": -36,
+      "liquidityNet": "21329472506",
+      "liquidityGross": "21329472506"
+    },
+    {
+      "index": -33,
+      "liquidityNet": "31359188923285",
+      "liquidityGross": "31359188923285"
+    },
+    {
+      "index": -32,
+      "liquidityNet": "2466012341184",
+      "liquidityGross": "2466012341184"
+    },
+    {
+      "index": -31,
+      "liquidityNet": "24697252465",
+      "liquidityGross": "24697252465"
+    },
+    {
+      "index": -30,
+      "liquidityNet": "30678732038222",
+      "liquidityGross": "30678732038222"
+    },
+    {
+      "index": -29,
+      "liquidityNet": "253117554576056",
+      "liquidityGross": "253117554576056"
+    },
+    {
+      "index": -27,
+      "liquidityNet": "512682451",
+      "liquidityGross": "512682451"
+    },
+    {
+      "index": -26,
+      "liquidityNet": "18524526717276",
+      "liquidityGross": "18524526717276"
+    },
+    {
+      "index": -24,
+      "liquidityNet": "616340389472",
+      "liquidityGross": "616340389472"
+    },
+    {
+      "index": -23,
+      "liquidityNet": "318712660322513",
+      "liquidityGross": "318712660322513"
+    },
+    {
+      "index": -22,
+      "liquidityNet": "-29353938060129",
+      "liquidityGross": "33364439786441"
+    },
+    {
+      "index": -21,
+      "liquidityNet": "4658464619528",
+      "liquidityGross": "4671776957194"
+    },
+    {
+      "index": -20,
+      "liquidityNet": "254356244365968",
+      "liquidityGross": "254356244365968"
+    },
+    {
+      "index": -19,
+      "liquidityNet": "17062568645117",
+      "liquidityGross": "17062568645117"
+    },
+    {
+      "index": -18,
+      "liquidityNet": "987884056477377",
+      "liquidityGross": "987908720979571"
+    },
+    {
+      "index": -17,
+      "liquidityNet": "3433515561177",
+      "liquidityGross": "3433515561177"
+    },
+    {
+      "index": -16,
+      "liquidityNet": "19641506844497007",
+      "liquidityGross": "19648514258111307"
+    },
+    {
+      "index": -15,
+      "liquidityNet": "109305911842500",
+      "liquidityGross": "109305911842500"
+    },
+    {
+      "index": -14,
+      "liquidityNet": "1240760544187501",
+      "liquidityGross": "1240760544187501"
+    },
+    {
+      "index": -13,
+      "liquidityNet": "1066103759278916",
+      "liquidityGross": "1066103759278916"
+    },
+    {
+      "index": -12,
+      "liquidityNet": "5574866736559963",
+      "liquidityGross": "5574866736559963"
+    },
+    {
+      "index": -11,
+      "liquidityNet": "390128784187761",
+      "liquidityGross": "390128784187761"
+    },
+    {
+      "index": -10,
+      "liquidityNet": "1645844640315220",
+      "liquidityGross": "1645844640315220"
+    },
+    {
+      "index": -9,
+      "liquidityNet": "8988893586857",
+      "liquidityGross": "8988893586857"
+    },
+    {
+      "index": -8,
+      "liquidityNet": "1954116799328704",
+      "liquidityGross": "1954116799328704"
+    },
+    {
+      "index": -7,
+      "liquidityNet": "322008576633303",
+      "liquidityGross": "322008576633303"
+    },
+    {
+      "index": -6,
+      "liquidityNet": "9114032631242196",
+      "liquidityGross": "9114032631242196"
+    },
+    {
+      "index": -5,
+      "liquidityNet": "1833874297947038",
+      "liquidityGross": "1834074362954412"
+    },
+    {
+      "index": -4,
+      "liquidityNet": "7793586924463290",
+      "liquidityGross": "7828242995820718"
+    },
+    {
+      "index": -3,
+      "liquidityNet": "21036151454139478",
+      "liquidityGross": "21491026185633352"
+    },
+    {
+      "index": -2,
+      "liquidityNet": "12608030158935555",
+      "liquidityGross": "13374157218882859"
+    },
+    {
+      "index": -1,
+      "liquidityNet": "81183462720038",
+      "liquidityGross": "13170543697554968"
+    },
+    {
+      "index": 0,
+      "liquidityNet": "-11525234498617269",
+      "liquidityGross": "22387612022276945"
+    },
+    {
+      "index": 1,
+      "liquidityNet": "247745955487151376",
+      "liquidityGross": "289276715292882164"
+    },
+    {
+      "index": 2,
+      "liquidityNet": "-197236556799501529",
+      "liquidityGross": "331121322023637313"
+    },
+    {
+      "index": 3,
+      "liquidityNet": "-96123531063782450",
+      "liquidityGross": "96123533818302008"
+    },
+    {
+      "index": 4,
+      "liquidityNet": "-60143393184518",
+      "liquidityGross": "60154820201126"
+    },
+    {
+      "index": 5,
+      "liquidityNet": "-87331699989704",
+      "liquidityGross": "89931595688116"
+    },
+    {
+      "index": 6,
+      "liquidityNet": "-908142556384773",
+      "liquidityGross": "908142556384773"
+    },
+    {
+      "index": 7,
+      "liquidityNet": "-1515522606371431",
+      "liquidityGross": "1517163101320297"
+    },
+    {
+      "index": 8,
+      "liquidityNet": "-4637148339381965",
+      "liquidityGross": "4637148339381965"
+    },
+    {
+      "index": 9,
+      "liquidityNet": "-136369038775435",
+      "liquidityGross": "136372892732379"
+    },
+    {
+      "index": 10,
+      "liquidityNet": "-728635526864005",
+      "liquidityGross": "728635526864005"
+    },
+    {
+      "index": 11,
+      "liquidityNet": "-14760838119437",
+      "liquidityGross": "14783009318875"
+    },
+    {
+      "index": 12,
+      "liquidityNet": "-322873020565551",
+      "liquidityGross": "324898305629661"
+    },
+    {
+      "index": 13,
+      "liquidityNet": "-279958297345",
+      "liquidityGross": "279958297345"
+    },
+    {
+      "index": 14,
+      "liquidityNet": "-45115982299175",
+      "liquidityGross": "45115982299175"
+    },
+    {
+      "index": 15,
+      "liquidityNet": "-19582872879102365",
+      "liquidityGross": "19582872879102365"
+    },
+    {
+      "index": 16,
+      "liquidityNet": "-680722190517",
+      "liquidityGross": "680722190517"
+    },
+    {
+      "index": 17,
+      "liquidityNet": "-413653212713022",
+      "liquidityGross": "413653212713022"
+    },
+    {
+      "index": 18,
+      "liquidityNet": "-249748037503529",
+      "liquidityGross": "249748037503529"
+    },
+    {
+      "index": 19,
+      "liquidityNet": "-3813819660317",
+      "liquidityGross": "3814125373495"
+    },
+    {
+      "index": 20,
+      "liquidityNet": "-1654884460675",
+      "liquidityGross": "1654884460675"
+    },
+    {
+      "index": 21,
+      "liquidityNet": "-22726459045699",
+      "liquidityGross": "22726459045699"
+    },
+    {
+      "index": 22,
+      "liquidityNet": "-264654057572406",
+      "liquidityGross": "264654057572406"
+    },
+    {
+      "index": 23,
+      "liquidityNet": "-1043427989359",
+      "liquidityGross": "1043427989359"
+    },
+    {
+      "index": 24,
+      "liquidityNet": "-54086676599596",
+      "liquidityGross": "54086676599596"
+    },
+    {
+      "index": 25,
+      "liquidityNet": "-31240248249272",
+      "liquidityGross": "31240248249272"
+    },
+    {
+      "index": 26,
+      "liquidityNet": "-88810856164189",
+      "liquidityGross": "88810856164189"
+    },
+    {
+      "index": 29,
+      "liquidityNet": "-2725162457",
+      "liquidityGross": "2725162457"
+    },
+    {
+      "index": 30,
+      "liquidityNet": "-4875835772144",
+      "liquidityGross": "4875835772144"
+    },
+    {
+      "index": 33,
+      "liquidityNet": "-797024325197",
+      "liquidityGross": "797024325197"
+    },
+    {
+      "index": 34,
+      "liquidityNet": "394587415327",
+      "liquidityGross": "394587415327"
+    },
+    {
+      "index": 37,
+      "liquidityNet": "-1012642532055",
+      "liquidityGross": "1012642532055"
+    },
+    {
+      "index": 42,
+      "liquidityNet": "-2466012341184",
+      "liquidityGross": "2466012341184"
+    },
+    {
+      "index": 44,
+      "liquidityNet": "-8232418560141",
+      "liquidityGross": "8232418560141"
+    },
+    {
+      "index": 45,
+      "liquidityNet": "-1984511767671",
+      "liquidityGross": "1984511767671"
+    },
+    {
+      "index": 49,
+      "liquidityNet": "-2556467064846",
+      "liquidityGross": "2556467064846"
+    },
+    {
+      "index": 50,
+      "liquidityNet": "-3021781554395",
+      "liquidityGross": "3021781554395"
+    },
+    {
+      "index": 51,
+      "liquidityNet": "-3381762057401",
+      "liquidityGross": "3381762057401"
+    },
+    {
+      "index": 59,
+      "liquidityNet": "-394587415327",
+      "liquidityGross": "394587415327"
+    },
+    {
+      "index": 92,
+      "liquidityNet": "-3197243830835",
+      "liquidityGross": "3197243830835"
+    },
+    {
+      "index": 95,
+      "liquidityNet": "-20032",
+      "liquidityGross": "20032"
+    },
+    {
+      "index": 99,
+      "liquidityNet": "-204004711968",
+      "liquidityGross": "204004711968"
+    },
+    {
+      "index": 100,
+      "liquidityNet": "-7780472640",
+      "liquidityGross": "7780472640"
+    },
+    {
+      "index": 198,
+      "liquidityNet": "-1554107998427",
+      "liquidityGross": "1554107998427"
+    },
+    {
+      "index": 304,
+      "liquidityNet": "-38647527064",
+      "liquidityGross": "38647527064"
+    },
+    {
+      "index": 1020,
+      "liquidityNet": "-6055691053",
+      "liquidityGross": "6055691053"
+    },
+    {
+      "index": 1408,
+      "liquidityNet": "-13277338584",
+      "liquidityGross": "13277338584"
+    },
+    {
+      "index": 9169,
+      "liquidityNet": "-3289565163",
+      "liquidityGross": "3289565163"
+    },
+    {
+      "index": 23027,
+      "liquidityNet": "107977567",
+      "liquidityGross": "107977567"
+    },
+    {
+      "index": 29958,
+      "liquidityNet": "-107977567",
+      "liquidityGross": "107977567"
+    },
+    {
+      "index": 89527,
+      "liquidityNet": "-15090395",
+      "liquidityGross": "15090395"
+    },
+    {
+      "index": 887272,
+      "liquidityNet": "-21503884135",
+      "liquidityGross": "21503884135"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "89095749617",
+      "exactInput": true,
+      "expectedAmountCalculated": "89071572727"
+    },
+    {
+      "amountSpecified": "37344180894735",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806646687460"
+    },
+    {
+      "amountSpecified": "31859173614122",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806610567706"
+    },
+    {
+      "amountSpecified": "34781480607326",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806635292834"
+    },
+    {
+      "amountSpecified": "29733825775339",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806569604532"
+    },
+    {
+      "amountSpecified": "38516002965101",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806650369482"
+    },
+    {
+      "amountSpecified": "15968086915331",
+      "exactInput": true,
+      "expectedAmountCalculated": "15961675410682"
+    },
+    {
+      "amountSpecified": "1019878918648",
+      "exactInput": true,
+      "expectedAmountCalculated": "1019599224250"
+    },
+    {
+      "amountSpecified": "10129607267316",
+      "exactInput": true,
+      "expectedAmountCalculated": "10126397379010"
+    },
+    {
+      "amountSpecified": "45126628784232",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806662783553"
+    },
+    {
+      "amountSpecified": "34371144074349",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806632836653"
+    },
+    {
+      "amountSpecified": "35917848160874",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806641056675"
+    },
+    {
+      "amountSpecified": "48287579227193",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806666141952"
+    },
+    {
+      "amountSpecified": "47664140699523",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806665556390"
+    },
+    {
+      "amountSpecified": "21970504159741",
+      "exactInput": true,
+      "expectedAmountCalculated": "21958143338369"
+    },
+    {
+      "amountSpecified": "45400831115424",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806663117754"
+    },
+    {
+      "amountSpecified": "27114155519821",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806339013778"
+    },
+    {
+      "amountSpecified": "20278506769390",
+      "exactInput": true,
+      "expectedAmountCalculated": "20268148855526"
+    },
+    {
+      "amountSpecified": "27533719598537",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806422367557"
+    },
+    {
+      "amountSpecified": "39274753113978",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806652412401"
+    },
+    {
+      "amountSpecified": "14534448647987",
+      "exactInput": true,
+      "expectedAmountCalculated": "14529036284798"
+    },
+    {
+      "amountSpecified": "2562064190401",
+      "exactInput": true,
+      "expectedAmountCalculated": "2561349319350"
+    },
+    {
+      "amountSpecified": "7871325211213",
+      "exactInput": true,
+      "expectedAmountCalculated": "7868949099213"
+    },
+    {
+      "amountSpecified": "37248137297641",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806646352303"
+    },
+    {
+      "amountSpecified": "38040001032605",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806648958736"
+    },
+    {
+      "amountSpecified": "28399732057019",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806509883467"
+    },
+    {
+      "amountSpecified": "38007089316884",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806648857132"
+    },
+    {
+      "amountSpecified": "40113460512551",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806654418855"
+    },
+    {
+      "amountSpecified": "39774365111161",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806653636601"
+    },
+    {
+      "amountSpecified": "14013406674852",
+      "exactInput": true,
+      "expectedAmountCalculated": "14008322244851"
+    },
+    {
+      "amountSpecified": "37703213199344",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806647892517"
+    },
+    {
+      "amountSpecified": "24808404764604",
+      "exactInput": true,
+      "expectedAmountCalculated": "24792072592463"
+    },
+    {
+      "amountSpecified": "13209167284416",
+      "exactInput": true,
+      "expectedAmountCalculated": "13204552422025"
+    },
+    {
+      "amountSpecified": "48763699887505",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806666567749"
+    },
+    {
+      "amountSpecified": "21209436397488",
+      "exactInput": true,
+      "expectedAmountCalculated": "21198009968067"
+    },
+    {
+      "amountSpecified": "35709189367604",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806640097250"
+    },
+    {
+      "amountSpecified": "3501577861983",
+      "exactInput": true,
+      "expectedAmountCalculated": "3500590652425"
+    },
+    {
+      "amountSpecified": "4399413837957",
+      "exactInput": true,
+      "expectedAmountCalculated": "4398161259450"
+    },
+    {
+      "amountSpecified": "20851559805132",
+      "exactInput": true,
+      "expectedAmountCalculated": "20840553832222"
+    },
+    {
+      "amountSpecified": "44966371762368",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806662583805"
+    },
+    {
+      "amountSpecified": "29236740799904",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806552746924"
+    },
+    {
+      "amountSpecified": "30889014897293",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806596100519"
+    },
+    {
+      "amountSpecified": "7301228840650",
+      "exactInput": true,
+      "expectedAmountCalculated": "7299050354707"
+    },
+    {
+      "amountSpecified": "17582780217242",
+      "exactInput": true,
+      "expectedAmountCalculated": "17575067907025"
+    },
+    {
+      "amountSpecified": "782078931312",
+      "exactInput": true,
+      "expectedAmountCalculated": "781865028130"
+    },
+    {
+      "amountSpecified": "37119470867097",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806645894403"
+    },
+    {
+      "amountSpecified": "46811333801249",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806664699159"
+    },
+    {
+      "amountSpecified": "12484693809440",
+      "exactInput": true,
+      "expectedAmountCalculated": "12480463972467"
+    },
+    {
+      "amountSpecified": "27825128523762",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806460106292"
+    },
+    {
+      "amountSpecified": "47866214042570",
+      "exactInput": true,
+      "expectedAmountCalculated": "25806665749809"
+    },
+    {
+      "amountSpecified": "9707175198885",
+      "exactInput": false,
+      "expectedAmountCalculated": "9710224097758"
+    },
+    {
+      "amountSpecified": "14986192072312",
+      "exactInput": false,
+      "expectedAmountCalculated": "14991907740158"
+    },
+    {
+      "amountSpecified": "13215103196727",
+      "exactInput": false,
+      "expectedAmountCalculated": "13219723935520"
+    },
+    {
+      "amountSpecified": "20260206816314",
+      "exactInput": false,
+      "expectedAmountCalculated": "20270555956924"
+    },
+    {
+      "amountSpecified": "1282620736057",
+      "exactInput": false,
+      "expectedAmountCalculated": "1282973628223"
+    },
+    {
+      "amountSpecified": "18626972032076",
+      "exactInput": false,
+      "expectedAmountCalculated": "18635639958224"
+    },
+    {
+      "amountSpecified": "20242668961730",
+      "exactInput": false,
+      "expectedAmountCalculated": "20252998750151"
+    },
+    {
+      "amountSpecified": "24604786696659",
+      "exactInput": false,
+      "expectedAmountCalculated": "24620832522164"
+    },
+    {
+      "amountSpecified": "22265871946474",
+      "exactInput": false,
+      "expectedAmountCalculated": "22278626632524"
+    },
+    {
+      "amountSpecified": "5700102150539",
+      "exactInput": false,
+      "expectedAmountCalculated": "5701753845777"
+    },
+    {
+      "amountSpecified": "25544830762960",
+      "exactInput": false,
+      "expectedAmountCalculated": "25562355867757"
+    },
+    {
+      "amountSpecified": "23184453822936",
+      "exactInput": false,
+      "expectedAmountCalculated": "23198438193194"
+    },
+    {
+      "amountSpecified": "19321574485982",
+      "exactInput": false,
+      "expectedAmountCalculated": "19330927590551"
+    },
+    {
+      "amountSpecified": "3184365441904",
+      "exactInput": false,
+      "expectedAmountCalculated": "3185260349109"
+    },
+    {
+      "amountSpecified": "12996705562292",
+      "exactInput": false,
+      "expectedAmountCalculated": "13001206220193"
+    },
+    {
+      "amountSpecified": "661848475360",
+      "exactInput": false,
+      "expectedAmountCalculated": "662029297986"
+    },
+    {
+      "amountSpecified": "5054467109667",
+      "exactInput": false,
+      "expectedAmountCalculated": "5055917661581"
+    },
+    {
+      "amountSpecified": "2271318555065",
+      "exactInput": false,
+      "expectedAmountCalculated": "2271950435713"
+    },
+    {
+      "amountSpecified": "14605245260252",
+      "exactInput": false,
+      "expectedAmountCalculated": "14610707185004"
+    },
+    {
+      "amountSpecified": "11641866090352",
+      "exactInput": false,
+      "expectedAmountCalculated": "11645694970266"
+    },
+    {
+      "amountSpecified": "11274357858107",
+      "exactInput": false,
+      "expectedAmountCalculated": "11278026209588"
+    },
+    {
+      "amountSpecified": "5110088104810",
+      "exactInput": false,
+      "expectedAmountCalculated": "5111555723118"
+    },
+    {
+      "amountSpecified": "22619749709918",
+      "exactInput": false,
+      "expectedAmountCalculated": "22632968496721"
+    },
+    {
+      "amountSpecified": "14108715216982",
+      "exactInput": false,
+      "expectedAmountCalculated": "14113861418559"
+    },
+    {
+      "amountSpecified": "22310535291640",
+      "exactInput": false,
+      "expectedAmountCalculated": "22323347889455"
+    },
+    {
+      "amountSpecified": "21533823047477",
+      "exactInput": false,
+      "expectedAmountCalculated": "21545655514396"
+    },
+    {
+      "amountSpecified": "8808365183055",
+      "exactInput": false,
+      "expectedAmountCalculated": "8811078378833"
+    },
+    {
+      "amountSpecified": "23461300428472",
+      "exactInput": false,
+      "expectedAmountCalculated": "23475671353465"
+    },
+    {
+      "amountSpecified": "1346169668197",
+      "exactInput": false,
+      "expectedAmountCalculated": "1346540310123"
+    },
+    {
+      "amountSpecified": "1735826614572",
+      "exactInput": false,
+      "expectedAmountCalculated": "1736306638682"
+    },
+    {
+      "amountSpecified": "23774503328670",
+      "exactInput": false,
+      "expectedAmountCalculated": "23789320477877"
+    },
+    {
+      "amountSpecified": "3542099778605",
+      "exactInput": false,
+      "expectedAmountCalculated": "3543099150233"
+    },
+    {
+      "amountSpecified": "5797623092988",
+      "exactInput": false,
+      "expectedAmountCalculated": "5799305748741"
+    },
+    {
+      "amountSpecified": "22674854466811",
+      "exactInput": false,
+      "expectedAmountCalculated": "22688146607373"
+    },
+    {
+      "amountSpecified": "19024303746517",
+      "exactInput": false,
+      "expectedAmountCalculated": "19033358230077"
+    },
+    {
+      "amountSpecified": "14399658613963",
+      "exactInput": false,
+      "expectedAmountCalculated": "14404987754206"
+    },
+    {
+      "amountSpecified": "18647998643089",
+      "exactInput": false,
+      "expectedAmountCalculated": "18656686665457"
+    },
+    {
+      "amountSpecified": "16780647363776",
+      "exactInput": false,
+      "expectedAmountCalculated": "16787695252482"
+    },
+    {
+      "amountSpecified": "25837030848583",
+      "exactInput": false,
+      "expectedAmountCalculated": "396701407380517452907293507768"
+    },
+    {
+      "amountSpecified": "16573509284445",
+      "exactInput": false,
+      "expectedAmountCalculated": "16580391698416"
+    },
+    {
+      "amountSpecified": "21730647998138",
+      "exactInput": false,
+      "expectedAmountCalculated": "21742723422926"
+    },
+    {
+      "amountSpecified": "20367315919489",
+      "exactInput": false,
+      "expectedAmountCalculated": "20377783882717"
+    },
+    {
+      "amountSpecified": "13598670282996",
+      "exactInput": false,
+      "expectedAmountCalculated": "13603509845928"
+    },
+    {
+      "amountSpecified": "15590644102059",
+      "exactInput": false,
+      "expectedAmountCalculated": "15596783004651"
+    },
+    {
+      "amountSpecified": "16516958716162",
+      "exactInput": false,
+      "expectedAmountCalculated": "16523796488147"
+    },
+    {
+      "amountSpecified": "17277616861023",
+      "exactInput": false,
+      "expectedAmountCalculated": "17285074838099"
+    },
+    {
+      "amountSpecified": "13257660350756",
+      "exactInput": false,
+      "expectedAmountCalculated": "13262304869962"
+    },
+    {
+      "amountSpecified": "18476458147184",
+      "exactInput": false,
+      "expectedAmountCalculated": "18484983394823"
+    },
+    {
+      "amountSpecified": "2606662566543",
+      "exactInput": false,
+      "expectedAmountCalculated": "2607390450809"
+    },
+    {
+      "amountSpecified": "14760476453902",
+      "exactInput": false,
+      "expectedAmountCalculated": "14766040568905"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x3416cF6C708Da44DB2624D63ea0AAef7113527C6.json b/src/__tests__/stubs/swap/0x3416cF6C708Da44DB2624D63ea0AAef7113527C6.json
new file mode 100644
index 00000000..0a13eeec
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x3416cF6C708Da44DB2624D63ea0AAef7113527C6.json
@@ -0,0 +1,1071 @@
+{
+  "poolName": "USDC - USDT 100",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
+    "decimals": 6
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
+    "decimals": 6
+  },
+  "fee": 100,
+  "liquidity": "322564773212036051",
+  "sqrtRatioX96": "79234941334917143306414271079",
+  "tickCurrent": 1,
+  "ticks": [
+    {
+      "index": -887272,
+      "liquidityNet": "21501874394",
+      "liquidityGross": "21501874394"
+    },
+    {
+      "index": -92109,
+      "liquidityNet": "15090395",
+      "liquidityGross": "15090395"
+    },
+    {
+      "index": -69082,
+      "liquidityNet": "10836954",
+      "liquidityGross": "10836954"
+    },
+    {
+      "index": -23028,
+      "liquidityNet": "15811602770",
+      "liquidityGross": "15811602770"
+    },
+    {
+      "index": -12502,
+      "liquidityNet": "3289565163",
+      "liquidityGross": "3289565163"
+    },
+    {
+      "index": -9164,
+      "liquidityNet": "-15811602770",
+      "liquidityGross": "15811602770"
+    },
+    {
+      "index": -1626,
+      "liquidityNet": "13277338584",
+      "liquidityGross": "13277338584"
+    },
+    {
+      "index": -492,
+      "liquidityNet": "535269421298",
+      "liquidityGross": "535269421298"
+    },
+    {
+      "index": -490,
+      "liquidityNet": "-535269421298",
+      "liquidityGross": "535269421298"
+    },
+    {
+      "index": -488,
+      "liquidityNet": "-10836954",
+      "liquidityGross": "10836954"
+    },
+    {
+      "index": -296,
+      "liquidityNet": "38647527064",
+      "liquidityGross": "38647527064"
+    },
+    {
+      "index": -203,
+      "liquidityNet": "1554107998427",
+      "liquidityGross": "1554107998427"
+    },
+    {
+      "index": -162,
+      "liquidityNet": "8532710072160",
+      "liquidityGross": "8532710072160"
+    },
+    {
+      "index": -105,
+      "liquidityNet": "3381762057401",
+      "liquidityGross": "3381762057401"
+    },
+    {
+      "index": -102,
+      "liquidityNet": "3401248542803",
+      "liquidityGross": "3401248542803"
+    },
+    {
+      "index": -101,
+      "liquidityNet": "-5510928517765",
+      "liquidityGross": "11554491626555"
+    },
+    {
+      "index": -100,
+      "liquidityNet": "89179463",
+      "liquidityGross": "89179463"
+    },
+    {
+      "index": -98,
+      "liquidityNet": "7691293177",
+      "liquidityGross": "7691293177"
+    },
+    {
+      "index": -77,
+      "liquidityNet": "2009741",
+      "liquidityGross": "2009741"
+    },
+    {
+      "index": -55,
+      "liquidityNet": "1984511767671",
+      "liquidityGross": "1984511767671"
+    },
+    {
+      "index": -51,
+      "liquidityNet": "1667992655480",
+      "liquidityGross": "1667992655480"
+    },
+    {
+      "index": -50,
+      "liquidityNet": "2886857740953",
+      "liquidityGross": "2886857740953"
+    },
+    {
+      "index": -49,
+      "liquidityNet": "8232418560141",
+      "liquidityGross": "8232418560141"
+    },
+    {
+      "index": -44,
+      "liquidityNet": "282776802323",
+      "liquidityGross": "282776802323"
+    },
+    {
+      "index": -41,
+      "liquidityNet": "6656168833",
+      "liquidityGross": "6656168833"
+    },
+    {
+      "index": -38,
+      "liquidityNet": "3494709585741",
+      "liquidityGross": "3494709585741"
+    },
+    {
+      "index": -36,
+      "liquidityNet": "21329472506",
+      "liquidityGross": "21329472506"
+    },
+    {
+      "index": -33,
+      "liquidityNet": "31359188923285",
+      "liquidityGross": "31359188923285"
+    },
+    {
+      "index": -32,
+      "liquidityNet": "2466012341184",
+      "liquidityGross": "2466012341184"
+    },
+    {
+      "index": -31,
+      "liquidityNet": "24697252465",
+      "liquidityGross": "24697252465"
+    },
+    {
+      "index": -30,
+      "liquidityNet": "30678732038222",
+      "liquidityGross": "30678732038222"
+    },
+    {
+      "index": -29,
+      "liquidityNet": "253117554576056",
+      "liquidityGross": "253117554576056"
+    },
+    {
+      "index": -27,
+      "liquidityNet": "512682451",
+      "liquidityGross": "512682451"
+    },
+    {
+      "index": -26,
+      "liquidityNet": "18524526717276",
+      "liquidityGross": "18524526717276"
+    },
+    {
+      "index": -24,
+      "liquidityNet": "616340389472",
+      "liquidityGross": "616340389472"
+    },
+    {
+      "index": -23,
+      "liquidityNet": "318712660322513",
+      "liquidityGross": "318712660322513"
+    },
+    {
+      "index": -22,
+      "liquidityNet": "-29353938060129",
+      "liquidityGross": "33364439786441"
+    },
+    {
+      "index": -21,
+      "liquidityNet": "4658464619528",
+      "liquidityGross": "4671776957194"
+    },
+    {
+      "index": -20,
+      "liquidityNet": "254356244365968",
+      "liquidityGross": "254356244365968"
+    },
+    {
+      "index": -19,
+      "liquidityNet": "17062568645117",
+      "liquidityGross": "17062568645117"
+    },
+    {
+      "index": -18,
+      "liquidityNet": "987884056477377",
+      "liquidityGross": "987908720979571"
+    },
+    {
+      "index": -17,
+      "liquidityNet": "3433515561177",
+      "liquidityGross": "3433515561177"
+    },
+    {
+      "index": -16,
+      "liquidityNet": "19641506844497007",
+      "liquidityGross": "19648514258111307"
+    },
+    {
+      "index": -15,
+      "liquidityNet": "109305911842500",
+      "liquidityGross": "109305911842500"
+    },
+    {
+      "index": -14,
+      "liquidityNet": "1240760544187501",
+      "liquidityGross": "1240760544187501"
+    },
+    {
+      "index": -13,
+      "liquidityNet": "1066103759278916",
+      "liquidityGross": "1066103759278916"
+    },
+    {
+      "index": -12,
+      "liquidityNet": "5574866736559963",
+      "liquidityGross": "5574866736559963"
+    },
+    {
+      "index": -11,
+      "liquidityNet": "390128784187761",
+      "liquidityGross": "390128784187761"
+    },
+    {
+      "index": -10,
+      "liquidityNet": "1645844640315220",
+      "liquidityGross": "1645844640315220"
+    },
+    {
+      "index": -9,
+      "liquidityNet": "8988893586857",
+      "liquidityGross": "8988893586857"
+    },
+    {
+      "index": -8,
+      "liquidityNet": "1954116799328704",
+      "liquidityGross": "1954116799328704"
+    },
+    {
+      "index": -7,
+      "liquidityNet": "322008576633303",
+      "liquidityGross": "322008576633303"
+    },
+    {
+      "index": -6,
+      "liquidityNet": "9114032631242196",
+      "liquidityGross": "9114032631242196"
+    },
+    {
+      "index": -5,
+      "liquidityNet": "1833874297947038",
+      "liquidityGross": "1834074362954412"
+    },
+    {
+      "index": -4,
+      "liquidityNet": "7793586924463290",
+      "liquidityGross": "7828242995820718"
+    },
+    {
+      "index": -3,
+      "liquidityNet": "21036151454139478",
+      "liquidityGross": "21491026185633352"
+    },
+    {
+      "index": -2,
+      "liquidityNet": "12608030158935555",
+      "liquidityGross": "13374157218882859"
+    },
+    {
+      "index": -1,
+      "liquidityNet": "81183462720038",
+      "liquidityGross": "13170543697554968"
+    },
+    {
+      "index": 0,
+      "liquidityNet": "-11525234498617269",
+      "liquidityGross": "22387612022276945"
+    },
+    {
+      "index": 1,
+      "liquidityNet": "247745955487151376",
+      "liquidityGross": "289276715292882164"
+    },
+    {
+      "index": 2,
+      "liquidityNet": "-197236556799501529",
+      "liquidityGross": "331121322023637313"
+    },
+    {
+      "index": 3,
+      "liquidityNet": "-96123531063782450",
+      "liquidityGross": "96123533818302008"
+    },
+    {
+      "index": 4,
+      "liquidityNet": "-60143393184518",
+      "liquidityGross": "60154820201126"
+    },
+    {
+      "index": 5,
+      "liquidityNet": "-87331699989704",
+      "liquidityGross": "89931595688116"
+    },
+    {
+      "index": 6,
+      "liquidityNet": "-908142556384773",
+      "liquidityGross": "908142556384773"
+    },
+    {
+      "index": 7,
+      "liquidityNet": "-1515522606371431",
+      "liquidityGross": "1517163101320297"
+    },
+    {
+      "index": 8,
+      "liquidityNet": "-4637148339381965",
+      "liquidityGross": "4637148339381965"
+    },
+    {
+      "index": 9,
+      "liquidityNet": "-136369038775435",
+      "liquidityGross": "136372892732379"
+    },
+    {
+      "index": 10,
+      "liquidityNet": "-728635526864005",
+      "liquidityGross": "728635526864005"
+    },
+    {
+      "index": 11,
+      "liquidityNet": "-14760838119437",
+      "liquidityGross": "14783009318875"
+    },
+    {
+      "index": 12,
+      "liquidityNet": "-322873020565551",
+      "liquidityGross": "324898305629661"
+    },
+    {
+      "index": 13,
+      "liquidityNet": "-279958297345",
+      "liquidityGross": "279958297345"
+    },
+    {
+      "index": 14,
+      "liquidityNet": "-45115982299175",
+      "liquidityGross": "45115982299175"
+    },
+    {
+      "index": 15,
+      "liquidityNet": "-19582872879102365",
+      "liquidityGross": "19582872879102365"
+    },
+    {
+      "index": 16,
+      "liquidityNet": "-680722190517",
+      "liquidityGross": "680722190517"
+    },
+    {
+      "index": 17,
+      "liquidityNet": "-413653212713022",
+      "liquidityGross": "413653212713022"
+    },
+    {
+      "index": 18,
+      "liquidityNet": "-249748037503529",
+      "liquidityGross": "249748037503529"
+    },
+    {
+      "index": 19,
+      "liquidityNet": "-3813819660317",
+      "liquidityGross": "3814125373495"
+    },
+    {
+      "index": 20,
+      "liquidityNet": "-1654884460675",
+      "liquidityGross": "1654884460675"
+    },
+    {
+      "index": 21,
+      "liquidityNet": "-22726459045699",
+      "liquidityGross": "22726459045699"
+    },
+    {
+      "index": 22,
+      "liquidityNet": "-264654057572406",
+      "liquidityGross": "264654057572406"
+    },
+    {
+      "index": 23,
+      "liquidityNet": "-1043427989359",
+      "liquidityGross": "1043427989359"
+    },
+    {
+      "index": 24,
+      "liquidityNet": "-54086676599596",
+      "liquidityGross": "54086676599596"
+    },
+    {
+      "index": 25,
+      "liquidityNet": "-31240248249272",
+      "liquidityGross": "31240248249272"
+    },
+    {
+      "index": 26,
+      "liquidityNet": "-88810856164189",
+      "liquidityGross": "88810856164189"
+    },
+    {
+      "index": 29,
+      "liquidityNet": "-2725162457",
+      "liquidityGross": "2725162457"
+    },
+    {
+      "index": 30,
+      "liquidityNet": "-4875835772144",
+      "liquidityGross": "4875835772144"
+    },
+    {
+      "index": 33,
+      "liquidityNet": "-797024325197",
+      "liquidityGross": "797024325197"
+    },
+    {
+      "index": 34,
+      "liquidityNet": "394587415327",
+      "liquidityGross": "394587415327"
+    },
+    {
+      "index": 37,
+      "liquidityNet": "-1012642532055",
+      "liquidityGross": "1012642532055"
+    },
+    {
+      "index": 42,
+      "liquidityNet": "-2466012341184",
+      "liquidityGross": "2466012341184"
+    },
+    {
+      "index": 44,
+      "liquidityNet": "-8232418560141",
+      "liquidityGross": "8232418560141"
+    },
+    {
+      "index": 45,
+      "liquidityNet": "-1984511767671",
+      "liquidityGross": "1984511767671"
+    },
+    {
+      "index": 49,
+      "liquidityNet": "-2556467064846",
+      "liquidityGross": "2556467064846"
+    },
+    {
+      "index": 50,
+      "liquidityNet": "-3021781554395",
+      "liquidityGross": "3021781554395"
+    },
+    {
+      "index": 51,
+      "liquidityNet": "-3381762057401",
+      "liquidityGross": "3381762057401"
+    },
+    {
+      "index": 59,
+      "liquidityNet": "-394587415327",
+      "liquidityGross": "394587415327"
+    },
+    {
+      "index": 92,
+      "liquidityNet": "-3197243830835",
+      "liquidityGross": "3197243830835"
+    },
+    {
+      "index": 95,
+      "liquidityNet": "-20032",
+      "liquidityGross": "20032"
+    },
+    {
+      "index": 99,
+      "liquidityNet": "-204004711968",
+      "liquidityGross": "204004711968"
+    },
+    {
+      "index": 100,
+      "liquidityNet": "-7780472640",
+      "liquidityGross": "7780472640"
+    },
+    {
+      "index": 198,
+      "liquidityNet": "-1554107998427",
+      "liquidityGross": "1554107998427"
+    },
+    {
+      "index": 304,
+      "liquidityNet": "-38647527064",
+      "liquidityGross": "38647527064"
+    },
+    {
+      "index": 1020,
+      "liquidityNet": "-6055691053",
+      "liquidityGross": "6055691053"
+    },
+    {
+      "index": 1408,
+      "liquidityNet": "-13277338584",
+      "liquidityGross": "13277338584"
+    },
+    {
+      "index": 9169,
+      "liquidityNet": "-3289565163",
+      "liquidityGross": "3289565163"
+    },
+    {
+      "index": 23027,
+      "liquidityNet": "107977567",
+      "liquidityGross": "107977567"
+    },
+    {
+      "index": 29958,
+      "liquidityNet": "-107977567",
+      "liquidityGross": "107977567"
+    },
+    {
+      "index": 89527,
+      "liquidityNet": "-15090395",
+      "liquidityGross": "15090395"
+    },
+    {
+      "index": 887272,
+      "liquidityNet": "-21503884135",
+      "liquidityGross": "21503884135"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "9300814510743",
+      "exactInput": true,
+      "expectedAmountCalculated": "9301207720837"
+    },
+    {
+      "amountSpecified": "20728753059416",
+      "exactInput": true,
+      "expectedAmountCalculated": "20728069615574"
+    },
+    {
+      "amountSpecified": "23540663214495",
+      "exactInput": true,
+      "expectedAmountCalculated": "23539247649280"
+    },
+    {
+      "amountSpecified": "7846477548357",
+      "exactInput": true,
+      "expectedAmountCalculated": "7846844650791"
+    },
+    {
+      "amountSpecified": "24741684490886",
+      "exactInput": true,
+      "expectedAmountCalculated": "24739898775260"
+    },
+    {
+      "amountSpecified": "2715334414765",
+      "exactInput": true,
+      "expectedAmountCalculated": "2715504648153"
+    },
+    {
+      "amountSpecified": "4236983920437",
+      "exactInput": true,
+      "expectedAmountCalculated": "4237229563098"
+    },
+    {
+      "amountSpecified": "15158146885342",
+      "exactInput": true,
+      "expectedAmountCalculated": "15158372908343"
+    },
+    {
+      "amountSpecified": "15893553911109",
+      "exactInput": true,
+      "expectedAmountCalculated": "15893701047836"
+    },
+    {
+      "amountSpecified": "19303983327891",
+      "exactInput": true,
+      "expectedAmountCalculated": "19303600896916"
+    },
+    {
+      "amountSpecified": "13330470003862",
+      "exactInput": true,
+      "expectedAmountCalculated": "13330831541147"
+    },
+    {
+      "amountSpecified": "23732973646810",
+      "exactInput": true,
+      "expectedAmountCalculated": "23731501316403"
+    },
+    {
+      "amountSpecified": "18241814035615",
+      "exactInput": true,
+      "expectedAmountCalculated": "18241625416062"
+    },
+    {
+      "amountSpecified": "12791562608923",
+      "exactInput": true,
+      "expectedAmountCalculated": "12791947060153"
+    },
+    {
+      "amountSpecified": "6033833961249",
+      "exactInput": true,
+      "expectedAmountCalculated": "6034150165422"
+    },
+    {
+      "amountSpecified": "14060985646624",
+      "exactInput": true,
+      "expectedAmountCalculated": "14061303730112"
+    },
+    {
+      "amountSpecified": "13450711510705",
+      "exactInput": true,
+      "expectedAmountCalculated": "13451066876216"
+    },
+    {
+      "amountSpecified": "22545797466437",
+      "exactInput": true,
+      "expectedAmountCalculated": "22544661875430"
+    },
+    {
+      "amountSpecified": "9189914992953",
+      "exactInput": true,
+      "expectedAmountCalculated": "9190306674094"
+    },
+    {
+      "amountSpecified": "6039358995760",
+      "exactInput": true,
+      "expectedAmountCalculated": "6039675386027"
+    },
+    {
+      "amountSpecified": "20205504707964",
+      "exactInput": true,
+      "expectedAmountCalculated": "20204937277625"
+    },
+    {
+      "amountSpecified": "15859435142918",
+      "exactInput": true,
+      "expectedAmountCalculated": "15859586216817"
+    },
+    {
+      "amountSpecified": "10917643746557",
+      "exactInput": true,
+      "expectedAmountCalculated": "10918050587808"
+    },
+    {
+      "amountSpecified": "13346767997526",
+      "exactInput": true,
+      "expectedAmountCalculated": "13347128720905"
+    },
+    {
+      "amountSpecified": "5842076430297",
+      "exactInput": true,
+      "expectedAmountCalculated": "5842386058433"
+    },
+    {
+      "amountSpecified": "10998940003877",
+      "exactInput": true,
+      "expectedAmountCalculated": "10999347102557"
+    },
+    {
+      "amountSpecified": "14140507828280",
+      "exactInput": true,
+      "expectedAmountCalculated": "14140820320657"
+    },
+    {
+      "amountSpecified": "18433892672990",
+      "exactInput": true,
+      "expectedAmountCalculated": "18433670940281"
+    },
+    {
+      "amountSpecified": "14573127175236",
+      "exactInput": true,
+      "expectedAmountCalculated": "14573406289818"
+    },
+    {
+      "amountSpecified": "20335952023489",
+      "exactInput": true,
+      "expectedAmountCalculated": "20335356264421"
+    },
+    {
+      "amountSpecified": "3657530833099",
+      "exactInput": true,
+      "expectedAmountCalculated": "3657749452060"
+    },
+    {
+      "amountSpecified": "23720713941956",
+      "exactInput": true,
+      "expectedAmountCalculated": "23719245255881"
+    },
+    {
+      "amountSpecified": "18074057904791",
+      "exactInput": true,
+      "expectedAmountCalculated": "18073897506444"
+    },
+    {
+      "amountSpecified": "6296830280549",
+      "exactInput": true,
+      "expectedAmountCalculated": "6297155133011"
+    },
+    {
+      "amountSpecified": "18555020671363",
+      "exactInput": true,
+      "expectedAmountCalculated": "18554777617698"
+    },
+    {
+      "amountSpecified": "16593207900596",
+      "exactInput": true,
+      "expectedAmountCalculated": "16593268355537"
+    },
+    {
+      "amountSpecified": "3360035660414",
+      "exactInput": true,
+      "expectedAmountCalculated": "3360239596413"
+    },
+    {
+      "amountSpecified": "18750462996227",
+      "exactInput": true,
+      "expectedAmountCalculated": "18750184824457"
+    },
+    {
+      "amountSpecified": "10718210787826",
+      "exactInput": true,
+      "expectedAmountCalculated": "10718616824002"
+    },
+    {
+      "amountSpecified": "11499194761119",
+      "exactInput": true,
+      "expectedAmountCalculated": "11499602533649"
+    },
+    {
+      "amountSpecified": "4739433193925",
+      "exactInput": true,
+      "expectedAmountCalculated": "4739700583817"
+    },
+    {
+      "amountSpecified": "3252626395342",
+      "exactInput": true,
+      "expectedAmountCalculated": "3252824895295"
+    },
+    {
+      "amountSpecified": "6959506965132",
+      "exactInput": true,
+      "expectedAmountCalculated": "6959851707153"
+    },
+    {
+      "amountSpecified": "7465482637085",
+      "exactInput": true,
+      "expectedAmountCalculated": "7465840732308"
+    },
+    {
+      "amountSpecified": "23316705157448",
+      "exactInput": true,
+      "expectedAmountCalculated": "23315354618804"
+    },
+    {
+      "amountSpecified": "11658855509439",
+      "exactInput": true,
+      "expectedAmountCalculated": "11659262817813"
+    },
+    {
+      "amountSpecified": "25205681581993",
+      "exactInput": true,
+      "expectedAmountCalculated": "25203742450679"
+    },
+    {
+      "amountSpecified": "8460206240309",
+      "exactInput": true,
+      "expectedAmountCalculated": "8460585959497"
+    },
+    {
+      "amountSpecified": "1343542550361",
+      "exactInput": true,
+      "expectedAmountCalculated": "1343632495553"
+    },
+    {
+      "amountSpecified": "9086311756550",
+      "exactInput": true,
+      "expectedAmountCalculated": "9086701940438"
+    },
+    {
+      "amountSpecified": "28636496561324",
+      "exactInput": false,
+      "expectedAmountCalculated": "28639759494303"
+    },
+    {
+      "amountSpecified": "44873076897907",
+      "exactInput": false,
+      "expectedAmountCalculated": "44890215408872"
+    },
+    {
+      "amountSpecified": "24136874935735",
+      "exactInput": false,
+      "expectedAmountCalculated": "24138469940427"
+    },
+    {
+      "amountSpecified": "46086909165336",
+      "exactInput": false,
+      "expectedAmountCalculated": "46105773558230"
+    },
+    {
+      "amountSpecified": "12224739860689",
+      "exactInput": false,
+      "expectedAmountCalculated": "12224339676590"
+    },
+    {
+      "amountSpecified": "35710067722296",
+      "exactInput": false,
+      "expectedAmountCalculated": "35717532722920"
+    },
+    {
+      "amountSpecified": "24246013370808",
+      "exactInput": false,
+      "expectedAmountCalculated": "24247642159245"
+    },
+    {
+      "amountSpecified": "45560547162085",
+      "exactInput": false,
+      "expectedAmountCalculated": "45578647440871"
+    },
+    {
+      "amountSpecified": "7693953902688",
+      "exactInput": false,
+      "expectedAmountCalculated": "7693590306590"
+    },
+    {
+      "amountSpecified": "30472271787352",
+      "exactInput": false,
+      "expectedAmountCalculated": "30476411290835"
+    },
+    {
+      "amountSpecified": "28841550717791",
+      "exactInput": false,
+      "expectedAmountCalculated": "28844905166275"
+    },
+    {
+      "amountSpecified": "23339186483536",
+      "exactInput": false,
+      "expectedAmountCalculated": "23340543888516"
+    },
+    {
+      "amountSpecified": "32404768459883",
+      "exactInput": false,
+      "expectedAmountCalculated": "32409985279654"
+    },
+    {
+      "amountSpecified": "26575429358984",
+      "exactInput": false,
+      "expectedAmountCalculated": "26577856373349"
+    },
+    {
+      "amountSpecified": "42443000940977",
+      "exactInput": false,
+      "expectedAmountCalculated": "42457036768906"
+    },
+    {
+      "amountSpecified": "15909065605307",
+      "exactInput": false,
+      "expectedAmountCalculated": "15908920250600"
+    },
+    {
+      "amountSpecified": "38609776280514",
+      "exactInput": false,
+      "expectedAmountCalculated": "38619722647218"
+    },
+    {
+      "amountSpecified": "19894731175537",
+      "exactInput": false,
+      "expectedAmountCalculated": "19895232809950"
+    },
+    {
+      "amountSpecified": "33569821978444",
+      "exactInput": false,
+      "expectedAmountCalculated": "33575770176591"
+    },
+    {
+      "amountSpecified": "7185628875486",
+      "exactInput": false,
+      "expectedAmountCalculated": "7185277979023"
+    },
+    {
+      "amountSpecified": "10145137676368",
+      "exactInput": false,
+      "expectedAmountCalculated": "10144735329278"
+    },
+    {
+      "amountSpecified": "39556744415985",
+      "exactInput": false,
+      "expectedAmountCalculated": "39567613601265"
+    },
+    {
+      "amountSpecified": "13528403376613",
+      "exactInput": false,
+      "expectedAmountCalculated": "13528052185071"
+    },
+    {
+      "amountSpecified": "29238862524772",
+      "exactInput": false,
+      "expectedAmountCalculated": "29242398844384"
+    },
+    {
+      "amountSpecified": "28884358655956",
+      "exactInput": false,
+      "expectedAmountCalculated": "28887732411361"
+    },
+    {
+      "amountSpecified": "7432578577742",
+      "exactInput": false,
+      "expectedAmountCalculated": "7432221311575"
+    },
+    {
+      "amountSpecified": "20802949470329",
+      "exactInput": false,
+      "expectedAmountCalculated": "20803650039303"
+    },
+    {
+      "amountSpecified": "10477631366064",
+      "exactInput": false,
+      "expectedAmountCalculated": "10477226631715"
+    },
+    {
+      "amountSpecified": "11921732322882",
+      "exactInput": false,
+      "expectedAmountCalculated": "11921327258345"
+    },
+    {
+      "amountSpecified": "38460467978811",
+      "exactInput": false,
+      "expectedAmountCalculated": "38470274031760"
+    },
+    {
+      "amountSpecified": "2455296609426",
+      "exactInput": false,
+      "expectedAmountCalculated": "2455140707955"
+    },
+    {
+      "amountSpecified": "19144857664426",
+      "exactInput": false,
+      "expectedAmountCalculated": "19145209463658"
+    },
+    {
+      "amountSpecified": "7475732522044",
+      "exactInput": false,
+      "expectedAmountCalculated": "7475374181592"
+    },
+    {
+      "amountSpecified": "7043248297926",
+      "exactInput": false,
+      "expectedAmountCalculated": "7042901245796"
+    },
+    {
+      "amountSpecified": "32387743149735",
+      "exactInput": false,
+      "expectedAmountCalculated": "32392949750124"
+    },
+    {
+      "amountSpecified": "6397345156610",
+      "exactInput": false,
+      "expectedAmountCalculated": "6397017122438"
+    },
+    {
+      "amountSpecified": "24692064830243",
+      "exactInput": false,
+      "expectedAmountCalculated": "24693835057302"
+    },
+    {
+      "amountSpecified": "41650467378312",
+      "exactInput": false,
+      "expectedAmountCalculated": "41663579279398"
+    },
+    {
+      "amountSpecified": "1849183106277",
+      "exactInput": false,
+      "expectedAmountCalculated": "1849062216380"
+    },
+    {
+      "amountSpecified": "4694639688023",
+      "exactInput": false,
+      "expectedAmountCalculated": "4694374184501"
+    },
+    {
+      "amountSpecified": "36840645882928",
+      "exactInput": false,
+      "expectedAmountCalculated": "36849018371418"
+    },
+    {
+      "amountSpecified": "10265546380511",
+      "exactInput": false,
+      "expectedAmountCalculated": "10265143089739"
+    },
+    {
+      "amountSpecified": "31703649057023",
+      "exactInput": false,
+      "expectedAmountCalculated": "31708455745517"
+    },
+    {
+      "amountSpecified": "21790702258882",
+      "exactInput": false,
+      "expectedAmountCalculated": "21791640899738"
+    },
+    {
+      "amountSpecified": "6728740212909",
+      "exactInput": false,
+      "expectedAmountCalculated": "6728402098060"
+    },
+    {
+      "amountSpecified": "22895481207595",
+      "exactInput": false,
+      "expectedAmountCalculated": "22896712934568"
+    },
+    {
+      "amountSpecified": "24598749396770",
+      "exactInput": false,
+      "expectedAmountCalculated": "24600489587321"
+    },
+    {
+      "amountSpecified": "23660549129589",
+      "exactInput": false,
+      "expectedAmountCalculated": "23662000410704"
+    },
+    {
+      "amountSpecified": "28551686686046",
+      "exactInput": false,
+      "expectedAmountCalculated": "28554912235932"
+    },
+    {
+      "amountSpecified": "43975633957492",
+      "exactInput": false,
+      "expectedAmountCalculated": "43991576597559"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x343784CE525944077613015d81f59722BAC141eF-reversed.json b/src/__tests__/stubs/swap/0x343784CE525944077613015d81f59722BAC141eF-reversed.json
new file mode 100644
index 00000000..24889ee6
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x343784CE525944077613015d81f59722BAC141eF-reversed.json
@@ -0,0 +1,531 @@
+{
+  "poolName": "DAI - FRAX 3000 - reversed",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0x853d955aCEf822Db058eb8505911ED77F175b99e",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
+    "decimals": 18
+  },
+  "fee": 3000,
+  "liquidity": "333850249709699448800",
+  "sqrtRatioX96": "79231804804242556002083657316",
+  "tickCurrent": 0,
+  "ticks": [
+    {
+      "index": -60,
+      "liquidityNet": "333850249709699448800",
+      "liquidityGross": "333850249709699448800"
+    },
+    {
+      "index": 60,
+      "liquidityNet": "-333850249709699448800",
+      "liquidityGross": "333850249709699448800"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "13384638115188478",
+      "exactInput": true,
+      "expectedAmountCalculated": "13342724032113445"
+    },
+    {
+      "amountSpecified": "992556707718387519",
+      "exactInput": true,
+      "expectedAmountCalculated": "984652887539951121"
+    },
+    {
+      "amountSpecified": "498814963206400762",
+      "exactInput": true,
+      "expectedAmountCalculated": "496533171457439991"
+    },
+    {
+      "amountSpecified": "79999347479578863",
+      "exactInput": true,
+      "expectedAmountCalculated": "79732968589717866"
+    },
+    {
+      "amountSpecified": "487630392459013960",
+      "exactInput": true,
+      "expectedAmountCalculated": "485415952334603767"
+    },
+    {
+      "amountSpecified": "893840284802225323",
+      "exactInput": true,
+      "expectedAmountCalculated": "888704689508963942"
+    },
+    {
+      "amountSpecified": "193044785832904080",
+      "exactInput": true,
+      "expectedAmountCalculated": "192337078776464701"
+    },
+    {
+      "amountSpecified": "644751703926297434",
+      "exactInput": true,
+      "expectedAmountCalculated": "641523174918835913"
+    },
+    {
+      "amountSpecified": "379980339224918140",
+      "exactInput": true,
+      "expectedAmountCalculated": "378376221367218768"
+    },
+    {
+      "amountSpecified": "606623753289595825",
+      "exactInput": true,
+      "expectedAmountCalculated": "603654745522582826"
+    },
+    {
+      "amountSpecified": "606539593706139778",
+      "exactInput": true,
+      "expectedAmountCalculated": "603571149257857546"
+    },
+    {
+      "amountSpecified": "543511635374997328",
+      "exactInput": true,
+      "expectedAmountCalculated": "540953285902599271"
+    },
+    {
+      "amountSpecified": "244852414550992940",
+      "exactInput": true,
+      "expectedAmountCalculated": "243917064855575649"
+    },
+    {
+      "amountSpecified": "492011606300865931",
+      "exactInput": true,
+      "expectedAmountCalculated": "489770871580172952"
+    },
+    {
+      "amountSpecified": "729845957083786677",
+      "exactInput": true,
+      "expectedAmountCalculated": "726007195203687546"
+    },
+    {
+      "amountSpecified": "275571581636818050",
+      "exactInput": true,
+      "expectedAmountCalculated": "274493720873843561"
+    },
+    {
+      "amountSpecified": "666475102136079390",
+      "exactInput": true,
+      "expectedAmountCalculated": "663094862377427530"
+    },
+    {
+      "amountSpecified": "541778235574670466",
+      "exactInput": true,
+      "expectedAmountCalculated": "539230832058869982"
+    },
+    {
+      "amountSpecified": "349895471728061233",
+      "exactInput": true,
+      "expectedAmountCalculated": "348449628947701603"
+    },
+    {
+      "amountSpecified": "819549706164810664",
+      "exactInput": true,
+      "expectedAmountCalculated": "815021280591460168"
+    },
+    {
+      "amountSpecified": "995285338491192212",
+      "exactInput": true,
+      "expectedAmountCalculated": "984652887539951121"
+    },
+    {
+      "amountSpecified": "668562807481463735",
+      "exactInput": true,
+      "expectedAmountCalculated": "665167840596755595"
+    },
+    {
+      "amountSpecified": "717031132111683337",
+      "exactInput": true,
+      "expectedAmountCalculated": "713287008940550676"
+    },
+    {
+      "amountSpecified": "854869175934927773",
+      "exactInput": true,
+      "expectedAmountCalculated": "850056154139249132"
+    },
+    {
+      "amountSpecified": "685838613292442655",
+      "exactInput": true,
+      "expectedAmountCalculated": "682320789247907052"
+    },
+    {
+      "amountSpecified": "871091599611760538",
+      "exactInput": true,
+      "expectedAmountCalculated": "866145390884799766"
+    },
+    {
+      "amountSpecified": "765024109211648804",
+      "exactInput": true,
+      "expectedAmountCalculated": "760920560283524291"
+    },
+    {
+      "amountSpecified": "217669477066516180",
+      "exactInput": true,
+      "expectedAmountCalculated": "216855557977831834"
+    },
+    {
+      "amountSpecified": "265079585418184292",
+      "exactInput": true,
+      "expectedAmountCalculated": "264051028991879790"
+    },
+    {
+      "amountSpecified": "845474813721565662",
+      "exactInput": true,
+      "expectedAmountCalculated": "840738209170425031"
+    },
+    {
+      "amountSpecified": "423440883977564163",
+      "exactInput": true,
+      "expectedAmountCalculated": "421598639475289481"
+    },
+    {
+      "amountSpecified": "448819747883947282",
+      "exactInput": true,
+      "expectedAmountCalculated": "446833267282465698"
+    },
+    {
+      "amountSpecified": "753842755120726357",
+      "exactInput": true,
+      "expectedAmountCalculated": "749824162032084194"
+    },
+    {
+      "amountSpecified": "412497129130715570",
+      "exactInput": true,
+      "expectedAmountCalculated": "410715902597673274"
+    },
+    {
+      "amountSpecified": "169624890357400910",
+      "exactInput": true,
+      "expectedAmountCalculated": "169014854849646976"
+    },
+    {
+      "amountSpecified": "1007893788134003047",
+      "exactInput": true,
+      "expectedAmountCalculated": "984652887539951121"
+    },
+    {
+      "amountSpecified": "72362713269528810",
+      "exactInput": true,
+      "expectedAmountCalculated": "72123406927903137"
+    },
+    {
+      "amountSpecified": "48552801831083760",
+      "exactInput": true,
+      "expectedAmountCalculated": "48395676085550023"
+    },
+    {
+      "amountSpecified": "203228865644931260",
+      "exactInput": true,
+      "expectedAmountCalculated": "202477669287520411"
+    },
+    {
+      "amountSpecified": "653694042959287505",
+      "exactInput": true,
+      "expectedAmountCalculated": "650403401164563768"
+    },
+    {
+      "amountSpecified": "987893076352019670",
+      "exactInput": true,
+      "expectedAmountCalculated": "981942039552239720"
+    },
+    {
+      "amountSpecified": "442988323528521240",
+      "exactInput": true,
+      "expectedAmountCalculated": "441035322770490139"
+    },
+    {
+      "amountSpecified": "44934917952149880",
+      "exactInput": true,
+      "expectedAmountCalculated": "44789984174083045"
+    },
+    {
+      "amountSpecified": "757177151881298351",
+      "exactInput": true,
+      "expectedAmountCalculated": "753133301438343080"
+    },
+    {
+      "amountSpecified": "430931539994528160",
+      "exactInput": true,
+      "expectedAmountCalculated": "429047121081167956"
+    },
+    {
+      "amountSpecified": "740641269527717858",
+      "exactInput": true,
+      "expectedAmountCalculated": "736722029393089738"
+    },
+    {
+      "amountSpecified": "943172582315649547",
+      "exactInput": true,
+      "expectedAmountCalculated": "937615786664246348"
+    },
+    {
+      "amountSpecified": "392220466230796463",
+      "exactInput": true,
+      "expectedAmountCalculated": "390550416521145560"
+    },
+    {
+      "amountSpecified": "892691972585976269",
+      "exactInput": true,
+      "expectedAmountCalculated": "887566010440284582"
+    },
+    {
+      "amountSpecified": "42970260993882906",
+      "exactInput": true,
+      "expectedAmountCalculated": "42831915308435125"
+    },
+    {
+      "amountSpecified": "134435970397449481",
+      "exactInput": false,
+      "expectedAmountCalculated": "134907217377291513"
+    },
+    {
+      "amountSpecified": "644195225293632488",
+      "exactInput": false,
+      "expectedAmountCalculated": "647442393835702716"
+    },
+    {
+      "amountSpecified": "68525687084622221",
+      "exactInput": false,
+      "expectedAmountCalculated": "68752315048121257"
+    },
+    {
+      "amountSpecified": "788222218333018686",
+      "exactInput": false,
+      "expectedAmountCalculated": "792537965017499537"
+    },
+    {
+      "amountSpecified": "753425396184708226",
+      "exactInput": false,
+      "expectedAmountCalculated": "757471479253710009"
+    },
+    {
+      "amountSpecified": "515587986821014730",
+      "exactInput": false,
+      "expectedAmountCalculated": "517986953949255591"
+    },
+    {
+      "amountSpecified": "561493034419903950",
+      "exactInput": false,
+      "expectedAmountCalculated": "564183291906872554"
+    },
+    {
+      "amountSpecified": "143541290751074771",
+      "exactInput": false,
+      "expectedAmountCalculated": "144048385682038658"
+    },
+    {
+      "amountSpecified": "539052165569450036",
+      "exactInput": false,
+      "expectedAmountCalculated": "541598434709944271"
+    },
+    {
+      "amountSpecified": "433967642595044924",
+      "exactInput": false,
+      "expectedAmountCalculated": "435880105815758200"
+    },
+    {
+      "amountSpecified": "516848565201888444",
+      "exactInput": false,
+      "expectedAmountCalculated": "519255361414248096"
+    },
+    {
+      "amountSpecified": "319299267541077236",
+      "exactInput": false,
+      "expectedAmountCalculated": "320596131385827394"
+    },
+    {
+      "amountSpecified": "607142078116664904",
+      "exactInput": false,
+      "expectedAmountCalculated": "610134623118209989"
+    },
+    {
+      "amountSpecified": "60515388800303808",
+      "exactInput": false,
+      "expectedAmountCalculated": "60714068006995384"
+    },
+    {
+      "amountSpecified": "15778999205094993",
+      "exactInput": false,
+      "expectedAmountCalculated": "15828681985893206"
+    },
+    {
+      "amountSpecified": "426301171134478452",
+      "exactInput": false,
+      "expectedAmountCalculated": "428170003121381069"
+    },
+    {
+      "amountSpecified": "786138830210360690",
+      "exactInput": false,
+      "expectedAmountCalculated": "790438225115842181"
+    },
+    {
+      "amountSpecified": "17075831937895057",
+      "exactInput": false,
+      "expectedAmountCalculated": "17129664556334365"
+    },
+    {
+      "amountSpecified": "900501042171882410",
+      "exactInput": false,
+      "expectedAmountCalculated": "905736895991671542"
+    },
+    {
+      "amountSpecified": "945505802539844952",
+      "exactInput": false,
+      "expectedAmountCalculated": "951131901328947742"
+    },
+    {
+      "amountSpecified": "744008627366154744",
+      "exactInput": false,
+      "expectedAmountCalculated": "747982993301637200"
+    },
+    {
+      "amountSpecified": "975753738540988288",
+      "exactInput": false,
+      "expectedAmountCalculated": "981649020766960007"
+    },
+    {
+      "amountSpecified": "688107021121026150",
+      "exactInput": false,
+      "expectedAmountCalculated": "691666690040575315"
+    },
+    {
+      "amountSpecified": "714608372507845592",
+      "exactInput": false,
+      "expectedAmountCalculated": "718362281127000192"
+    },
+    {
+      "amountSpecified": "405185694441666333",
+      "exactInput": false,
+      "expectedAmountCalculated": "406936187626946790"
+    },
+    {
+      "amountSpecified": "359990378371344182",
+      "exactInput": false,
+      "expectedAmountCalculated": "361496617949074777"
+    },
+    {
+      "amountSpecified": "495192471706457826",
+      "exactInput": false,
+      "expectedAmountCalculated": "497466101513299236"
+    },
+    {
+      "amountSpecified": "206713486781741716",
+      "exactInput": false,
+      "expectedAmountCalculated": "207483032327168522"
+    },
+    {
+      "amountSpecified": "759296374788288246",
+      "exactInput": false,
+      "expectedAmountCalculated": "763387442143436622"
+    },
+    {
+      "amountSpecified": "273200139748715074",
+      "exactInput": false,
+      "expectedAmountCalculated": "274271857323037291"
+    },
+    {
+      "amountSpecified": "163486204922941026",
+      "exactInput": false,
+      "expectedAmountCalculated": "164073566937428402"
+    },
+    {
+      "amountSpecified": "559223025025763154",
+      "exactInput": false,
+      "expectedAmountCalculated": "561898579080922300"
+    },
+    {
+      "amountSpecified": "686182722012855774",
+      "exactInput": false,
+      "expectedAmountCalculated": "689728452316784395"
+    },
+    {
+      "amountSpecified": "3374510653215540",
+      "exactInput": false,
+      "expectedAmountCalculated": "3385010071789447"
+    },
+    {
+      "amountSpecified": "489678491708149828",
+      "exactInput": false,
+      "expectedAmountCalculated": "491918667459381678"
+    },
+    {
+      "amountSpecified": "112405698044601256",
+      "exactInput": false,
+      "expectedAmountCalculated": "112792274573727813"
+    },
+    {
+      "amountSpecified": "411709871201090784",
+      "exactInput": false,
+      "expectedAmountCalculated": "413496641131046971"
+    },
+    {
+      "amountSpecified": "799220260633586456",
+      "exactInput": false,
+      "expectedAmountCalculated": "803622762462087490"
+    },
+    {
+      "amountSpecified": "407245930876872504",
+      "exactInput": false,
+      "expectedAmountCalculated": "409007851974070471"
+    },
+    {
+      "amountSpecified": "331447834533598745",
+      "exactInput": false,
+      "expectedAmountCalculated": "332806163644752993"
+    },
+    {
+      "amountSpecified": "428310294313816026",
+      "exactInput": false,
+      "expectedAmountCalculated": "430190526287683655"
+    },
+    {
+      "amountSpecified": "397944456432484948",
+      "exactInput": false,
+      "expectedAmountCalculated": "399654986362575292"
+    },
+    {
+      "amountSpecified": "244792184934847895",
+      "exactInput": false,
+      "expectedAmountCalculated": "245731535092084505"
+    },
+    {
+      "amountSpecified": "560596082099238878",
+      "exactInput": false,
+      "expectedAmountCalculated": "563280526077179168"
+    },
+    {
+      "amountSpecified": "825658036200257316",
+      "exactInput": false,
+      "expectedAmountCalculated": "830272080912760837"
+    },
+    {
+      "amountSpecified": "540753453615098528",
+      "exactInput": false,
+      "expectedAmountCalculated": "543310532262156927"
+    },
+    {
+      "amountSpecified": "165961471602766243",
+      "exactInput": false,
+      "expectedAmountCalculated": "166558962165826929"
+    },
+    {
+      "amountSpecified": "124807282366141469",
+      "exactInput": false,
+      "expectedAmountCalculated": "125241163547718265"
+    },
+    {
+      "amountSpecified": "911054132514925070",
+      "exactInput": false,
+      "expectedAmountCalculated": "916380392693557961"
+    },
+    {
+      "amountSpecified": "969120985285286246",
+      "exactInput": false,
+      "expectedAmountCalculated": "974956766344442696"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x343784CE525944077613015d81f59722BAC141eF.json b/src/__tests__/stubs/swap/0x343784CE525944077613015d81f59722BAC141eF.json
new file mode 100644
index 00000000..7e6f87ed
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x343784CE525944077613015d81f59722BAC141eF.json
@@ -0,0 +1,531 @@
+{
+  "poolName": "DAI - FRAX 3000",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0x853d955aCEf822Db058eb8505911ED77F175b99e",
+    "decimals": 18
+  },
+  "fee": 3000,
+  "liquidity": "333850249709699448800",
+  "sqrtRatioX96": "79231804804242556002083657316",
+  "tickCurrent": 0,
+  "ticks": [
+    {
+      "index": -60,
+      "liquidityNet": "333850249709699448800",
+      "liquidityGross": "333850249709699448800"
+    },
+    {
+      "index": 60,
+      "liquidityNet": "-333850249709699448800",
+      "liquidityGross": "333850249709699448800"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "72367282553808733",
+      "exactInput": true,
+      "expectedAmountCalculated": "72141223112195361"
+    },
+    {
+      "amountSpecified": "573783062480731096",
+      "exactInput": true,
+      "expectedAmountCalculated": "571135610543167721"
+    },
+    {
+      "amountSpecified": "701975204033222616",
+      "exactInput": true,
+      "expectedAmountCalculated": "698469320606813847"
+    },
+    {
+      "amountSpecified": "557706987144816306",
+      "exactInput": true,
+      "expectedAmountCalculated": "555160319063426168"
+    },
+    {
+      "amountSpecified": "573272695215185910",
+      "exactInput": true,
+      "expectedAmountCalculated": "570628466399792888"
+    },
+    {
+      "amountSpecified": "238940575569095849",
+      "exactInput": true,
+      "expectedAmountCalculated": "238075767394401480"
+    },
+    {
+      "amountSpecified": "510864130313452244",
+      "exactInput": true,
+      "expectedAmountCalculated": "508602395037737871"
+    },
+    {
+      "amountSpecified": "17130362354358423",
+      "exactInput": true,
+      "expectedAmountCalculated": "17079667823220330"
+    },
+    {
+      "amountSpecified": "517218910372442166",
+      "exactInput": true,
+      "expectedAmountCalculated": "514919283191929525"
+    },
+    {
+      "amountSpecified": "971931293687279016",
+      "exactInput": true,
+      "expectedAmountCalculated": "966299739546745305"
+    },
+    {
+      "amountSpecified": "652086384585722712",
+      "exactInput": true,
+      "expectedAmountCalculated": "648926144860021790"
+    },
+    {
+      "amountSpecified": "266312621255682871",
+      "exactInput": true,
+      "expectedAmountCalculated": "265327070059569455"
+    },
+    {
+      "amountSpecified": "52482074335406265",
+      "exactInput": true,
+      "expectedAmountCalculated": "52321238447286921"
+    },
+    {
+      "amountSpecified": "838300162126275576",
+      "exactInput": true,
+      "expectedAmountCalculated": "833774680320708629"
+    },
+    {
+      "amountSpecified": "139629144124474662",
+      "exactInput": true,
+      "expectedAmountCalculated": "139165024304804205"
+    },
+    {
+      "amountSpecified": "628005908230265292",
+      "exactInput": true,
+      "expectedAmountCalculated": "625007231915824967"
+    },
+    {
+      "amountSpecified": "85214550981644026",
+      "exactInput": true,
+      "expectedAmountCalculated": "84945100997559345"
+    },
+    {
+      "amountSpecified": "544416765736439330",
+      "exactInput": true,
+      "expectedAmountCalculated": "541952260083638978"
+    },
+    {
+      "amountSpecified": "442278191458194742",
+      "exactInput": true,
+      "expectedAmountCalculated": "440410177717685419"
+    },
+    {
+      "amountSpecified": "739440736023083192",
+      "exactInput": true,
+      "expectedAmountCalculated": "735665595844334569"
+    },
+    {
+      "amountSpecified": "918214149101764648",
+      "exactInput": true,
+      "expectedAmountCalculated": "913039894208523015"
+    },
+    {
+      "amountSpecified": "435312276189522239",
+      "exactInput": true,
+      "expectedAmountCalculated": "433482689977119441"
+    },
+    {
+      "amountSpecified": "779019705098488028",
+      "exactInput": true,
+      "expectedAmountCalculated": "774951098904981503"
+    },
+    {
+      "amountSpecified": "757753115713612984",
+      "exactInput": true,
+      "expectedAmountCalculated": "753843346650606973"
+    },
+    {
+      "amountSpecified": "24458977406496291",
+      "exactInput": true,
+      "expectedAmountCalculated": "24386061317529428"
+    },
+    {
+      "amountSpecified": "797228041304973684",
+      "exactInput": true,
+      "expectedAmountCalculated": "793021314113207599"
+    },
+    {
+      "amountSpecified": "741996809316054152",
+      "exactInput": true,
+      "expectedAmountCalculated": "738202996538373551"
+    },
+    {
+      "amountSpecified": "807269947586316438",
+      "exactInput": true,
+      "expectedAmountCalculated": "802986207814904815"
+    },
+    {
+      "amountSpecified": "155897897227132564",
+      "exactInput": true,
+      "expectedAmountCalculated": "155372155062252615"
+    },
+    {
+      "amountSpecified": "508982713288357210",
+      "exactInput": true,
+      "expectedAmountCalculated": "506732150481942979"
+    },
+    {
+      "amountSpecified": "523135038014988490",
+      "exactInput": true,
+      "expectedAmountCalculated": "520799919320026958"
+    },
+    {
+      "amountSpecified": "322508279087952258",
+      "exactInput": true,
+      "expectedAmountCalculated": "321260888973770978"
+    },
+    {
+      "amountSpecified": "544390101960867528",
+      "exactInput": true,
+      "expectedAmountCalculated": "541925760095924295"
+    },
+    {
+      "amountSpecified": "879161255377043114",
+      "exactInput": true,
+      "expectedAmountCalculated": "874308761821655984"
+    },
+    {
+      "amountSpecified": "111911901561380116",
+      "exactInput": true,
+      "expectedAmountCalculated": "111549142310381795"
+    },
+    {
+      "amountSpecified": "3681434172940552",
+      "exactInput": true,
+      "expectedAmountCalculated": "3670686991869217"
+    },
+    {
+      "amountSpecified": "397664101754609439",
+      "exactInput": true,
+      "expectedAmountCalculated": "396037219339372587"
+    },
+    {
+      "amountSpecified": "183992403987709758",
+      "exactInput": true,
+      "expectedAmountCalculated": "183356540068272568"
+    },
+    {
+      "amountSpecified": "906656751341676412",
+      "exactInput": true,
+      "expectedAmountCalculated": "901578657874243219"
+    },
+    {
+      "amountSpecified": "320386946260223402",
+      "exactInput": true,
+      "expectedAmountCalculated": "319149780975928463"
+    },
+    {
+      "amountSpecified": "27897131065660291",
+      "exactInput": true,
+      "expectedAmountCalculated": "27813679723736892"
+    },
+    {
+      "amountSpecified": "883689659047948662",
+      "exactInput": true,
+      "expectedAmountCalculated": "878800317294546877"
+    },
+    {
+      "amountSpecified": "304792794270682715",
+      "exactInput": true,
+      "expectedAmountCalculated": "303629972517882814"
+    },
+    {
+      "amountSpecified": "374784592788750018",
+      "exactInput": true,
+      "expectedAmountCalculated": "373276788334920437"
+    },
+    {
+      "amountSpecified": "71413976325703438",
+      "exactInput": true,
+      "expectedAmountCalculated": "71191097443816675"
+    },
+    {
+      "amountSpecified": "417458108145041866",
+      "exactInput": true,
+      "expectedAmountCalculated": "415725700089052038"
+    },
+    {
+      "amountSpecified": "111514786775852823",
+      "exactInput": true,
+      "expectedAmountCalculated": "111153446543515001"
+    },
+    {
+      "amountSpecified": "425232163869681728",
+      "exactInput": true,
+      "expectedAmountCalculated": "423457674997777962"
+    },
+    {
+      "amountSpecified": "940831426262215656",
+      "exactInput": true,
+      "expectedAmountCalculated": "935466705273224390"
+    },
+    {
+      "amountSpecified": "472573626564777514",
+      "exactInput": true,
+      "expectedAmountCalculated": "470535139819724891"
+    },
+    {
+      "amountSpecified": "37724366779609220",
+      "exactInput": false,
+      "expectedAmountCalculated": "37838677175703505"
+    },
+    {
+      "amountSpecified": "750507482026513764",
+      "exactInput": false,
+      "expectedAmountCalculated": "754392395127652321"
+    },
+    {
+      "amountSpecified": "727619170857599486",
+      "exactInput": false,
+      "expectedAmountCalculated": "731335355332825903"
+    },
+    {
+      "amountSpecified": "719784666312074091",
+      "exactInput": false,
+      "expectedAmountCalculated": "723443824017056775"
+    },
+    {
+      "amountSpecified": "560237883754078087",
+      "exactInput": false,
+      "expectedAmountCalculated": "562816417774797915"
+    },
+    {
+      "amountSpecified": "18217448339106298",
+      "exactInput": false,
+      "expectedAmountCalculated": "18271582212087403"
+    },
+    {
+      "amountSpecified": "790618231233683117",
+      "exactInput": false,
+      "expectedAmountCalculated": "794806476387612092"
+    },
+    {
+      "amountSpecified": "821892718757849598",
+      "exactInput": false,
+      "expectedAmountCalculated": "826324227073009904"
+    },
+    {
+      "amountSpecified": "843059171842588354",
+      "exactInput": false,
+      "expectedAmountCalculated": "847658678730884076"
+    },
+    {
+      "amountSpecified": "149804450591176860",
+      "exactInput": false,
+      "expectedAmountCalculated": "150308845187266742"
+    },
+    {
+      "amountSpecified": "732701280192838985",
+      "exactInput": false,
+      "expectedAmountCalculated": "736454655443996370"
+    },
+    {
+      "amountSpecified": "199510763499228580",
+      "exactInput": false,
+      "expectedAmountCalculated": "200212341485552326"
+    },
+    {
+      "amountSpecified": "567545680625807152",
+      "exactInput": false,
+      "expectedAmountCalculated": "570170350408861851"
+    },
+    {
+      "amountSpecified": "755000039340259697",
+      "exactInput": false,
+      "expectedAmountCalculated": "758918442787361147"
+    },
+    {
+      "amountSpecified": "785787935928933497",
+      "exactInput": false,
+      "expectedAmountCalculated": "789939137132187585"
+    },
+    {
+      "amountSpecified": "525189612330816765",
+      "exactInput": false,
+      "expectedAmountCalculated": "527551360287201845"
+    },
+    {
+      "amountSpecified": "680510737143301356",
+      "exactInput": false,
+      "expectedAmountCalculated": "683889616155563180"
+    },
+    {
+      "amountSpecified": "187961975438326917",
+      "exactInput": false,
+      "expectedAmountCalculated": "188616413848867546"
+    },
+    {
+      "amountSpecified": "237729944043438170",
+      "exactInput": false,
+      "expectedAmountCalculated": "238593248702709830"
+    },
+    {
+      "amountSpecified": "35164038564116320",
+      "exactInput": false,
+      "expectedAmountCalculated": "35270320278586123"
+    },
+    {
+      "amountSpecified": "425552804000880250",
+      "exactInput": false,
+      "expectedAmountCalculated": "427338757571847914"
+    },
+    {
+      "amountSpecified": "368071398069968692",
+      "exactInput": false,
+      "expectedAmountCalculated": "369552407764809864"
+    },
+    {
+      "amountSpecified": "622645832228641055",
+      "exactInput": false,
+      "expectedAmountCalculated": "625628745644830092"
+    },
+    {
+      "amountSpecified": "719797860552955825",
+      "exactInput": false,
+      "expectedAmountCalculated": "723457113985809275"
+    },
+    {
+      "amountSpecified": "83685976106525620",
+      "exactInput": false,
+      "expectedAmountCalculated": "83951115395497981"
+    },
+    {
+      "amountSpecified": "959784310820812304",
+      "exactInput": false,
+      "expectedAmountCalculated": "965358999532445599"
+    },
+    {
+      "amountSpecified": "764018913196312697",
+      "exactInput": false,
+      "expectedAmountCalculated": "768004917552987782"
+    },
+    {
+      "amountSpecified": "302924712700762165",
+      "exactInput": false,
+      "expectedAmountCalculated": "304084190562611880"
+    },
+    {
+      "amountSpecified": "888512873825893202",
+      "exactInput": false,
+      "expectedAmountCalculated": "893482313978492668"
+    },
+    {
+      "amountSpecified": "935383838696492749",
+      "exactInput": false,
+      "expectedAmountCalculated": "940747850308766666"
+    },
+    {
+      "amountSpecified": "10200824875235010",
+      "exactInput": false,
+      "expectedAmountCalculated": "10230891359699954"
+    },
+    {
+      "amountSpecified": "573352789686139574",
+      "exactInput": false,
+      "expectedAmountCalculated": "576014351002306075"
+    },
+    {
+      "amountSpecified": "754339570693634454",
+      "exactInput": false,
+      "expectedAmountCalculated": "758253042937688460"
+    },
+    {
+      "amountSpecified": "711273620511608764",
+      "exactInput": false,
+      "expectedAmountCalculated": "714871247570307382"
+    },
+    {
+      "amountSpecified": "155902436360674470",
+      "exactInput": false,
+      "expectedAmountCalculated": "156430221445483810"
+    },
+    {
+      "amountSpecified": "685737183019968044",
+      "exactInput": false,
+      "expectedAmountCalculated": "689152822703367703"
+    },
+    {
+      "amountSpecified": "248581561613530730",
+      "exactInput": false,
+      "expectedAmountCalculated": "249492388408525643"
+    },
+    {
+      "amountSpecified": "691485499967235611",
+      "exactInput": false,
+      "expectedAmountCalculated": "694941761629784702"
+    },
+    {
+      "amountSpecified": "390578939233826405",
+      "exactInput": false,
+      "expectedAmountCalculated": "392176980352735583"
+    },
+    {
+      "amountSpecified": "194092278170434170",
+      "exactInput": false,
+      "expectedAmountCalculated": "194771639152554742"
+    },
+    {
+      "amountSpecified": "573570790723226849",
+      "exactInput": false,
+      "expectedAmountCalculated": "576233740927252415"
+    },
+    {
+      "amountSpecified": "559497109109740604",
+      "exactInput": false,
+      "expectedAmountCalculated": "562070984454743842"
+    },
+    {
+      "amountSpecified": "630233404099066564",
+      "exactInput": false,
+      "expectedAmountCalculated": "633267086133065945"
+    },
+    {
+      "amountSpecified": "891844992467105875",
+      "exactInput": false,
+      "expectedAmountCalculated": "896842043856947543"
+    },
+    {
+      "amountSpecified": "503963734043976874",
+      "exactInput": false,
+      "expectedAmountCalculated": "506197797632849794"
+    },
+    {
+      "amountSpecified": "377357837875686330",
+      "exactInput": false,
+      "expectedAmountCalculated": "378886763769330815"
+    },
+    {
+      "amountSpecified": "359053330262769412",
+      "exactInput": false,
+      "expectedAmountCalculated": "360488306015972414"
+    },
+    {
+      "amountSpecified": "893860138036790284",
+      "exactInput": false,
+      "expectedAmountCalculated": "898873920340148866"
+    },
+    {
+      "amountSpecified": "537629624429467772",
+      "exactInput": false,
+      "expectedAmountCalculated": "540067469325843207"
+    },
+    {
+      "amountSpecified": "266519163247698163",
+      "exactInput": false,
+      "expectedAmountCalculated": "267510098371459674"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x4585FE77225b41b697C938B018E2Ac67Ac5a20c0-reversed.json b/src/__tests__/stubs/swap/0x4585FE77225b41b697C938B018E2Ac67Ac5a20c0-reversed.json
new file mode 100644
index 00000000..ed009d2c
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x4585FE77225b41b697C938B018E2Ac67Ac5a20c0-reversed.json
@@ -0,0 +1,2691 @@
+{
+  "poolName": "WBTC - WETH 500 - reversed",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
+    "decimals": 8
+  },
+  "fee": 500,
+  "liquidity": "642026772876145762",
+  "sqrtRatioX96": "31608867042422328680735981628679003",
+  "tickCurrent": 257945,
+  "ticks": [
+    {
+      "index": -887270,
+      "liquidityNet": "33523724733940",
+      "liquidityGross": "33523724733940"
+    },
+    {
+      "index": 115130,
+      "liquidityNet": "6783676710783",
+      "liquidityGross": "6783676710783"
+    },
+    {
+      "index": 185740,
+      "liquidityNet": "8011857382663",
+      "liquidityGross": "8011857382663"
+    },
+    {
+      "index": 185970,
+      "liquidityNet": "-8011857382663",
+      "liquidityGross": "8011857382663"
+    },
+    {
+      "index": 190800,
+      "liquidityNet": "1062046574",
+      "liquidityGross": "1062046574"
+    },
+    {
+      "index": 201480,
+      "liquidityNet": "3373954775055585",
+      "liquidityGross": "3373954775055585"
+    },
+    {
+      "index": 201490,
+      "liquidityNet": "-3373954775055585",
+      "liquidityGross": "3373954775055585"
+    },
+    {
+      "index": 230270,
+      "liquidityNet": "2665070333023",
+      "liquidityGross": "2665070333023"
+    },
+    {
+      "index": 230280,
+      "liquidityNet": "-1999602242748",
+      "liquidityGross": "1999602242748"
+    },
+    {
+      "index": 241360,
+      "liquidityNet": "5361639205879",
+      "liquidityGross": "5361639205879"
+    },
+    {
+      "index": 243010,
+      "liquidityNet": "273080104450",
+      "liquidityGross": "273080104450"
+    },
+    {
+      "index": 246360,
+      "liquidityNet": "38497172711073",
+      "liquidityGross": "38497172711073"
+    },
+    {
+      "index": 246370,
+      "liquidityNet": "30733931340692",
+      "liquidityGross": "30733931340692"
+    },
+    {
+      "index": 247640,
+      "liquidityNet": "219391084753798",
+      "liquidityGross": "219391084753798"
+    },
+    {
+      "index": 248400,
+      "liquidityNet": "97761352490590",
+      "liquidityGross": "97761352490590"
+    },
+    {
+      "index": 248880,
+      "liquidityNet": "124786358117046",
+      "liquidityGross": "124786358117046"
+    },
+    {
+      "index": 249240,
+      "liquidityNet": "19225121012895",
+      "liquidityGross": "19225121012895"
+    },
+    {
+      "index": 249870,
+      "liquidityNet": "4526103731726",
+      "liquidityGross": "4526103731726"
+    },
+    {
+      "index": 250800,
+      "liquidityNet": "38055467418",
+      "liquidityGross": "38055467418"
+    },
+    {
+      "index": 251470,
+      "liquidityNet": "2077220976143206",
+      "liquidityGross": "2077220976143206"
+    },
+    {
+      "index": 251630,
+      "liquidityNet": "256525225767907",
+      "liquidityGross": "256525225767907"
+    },
+    {
+      "index": 251780,
+      "liquidityNet": "16190737082805872",
+      "liquidityGross": "16190737082805872"
+    },
+    {
+      "index": 252000,
+      "liquidityNet": "-1062046574",
+      "liquidityGross": "1062046574"
+    },
+    {
+      "index": 252250,
+      "liquidityNet": "985616926870",
+      "liquidityGross": "985616926870"
+    },
+    {
+      "index": 252410,
+      "liquidityNet": "98738615436287",
+      "liquidityGross": "98738615436287"
+    },
+    {
+      "index": 252680,
+      "liquidityNet": "16467678536528",
+      "liquidityGross": "16467678536528"
+    },
+    {
+      "index": 252730,
+      "liquidityNet": "48393094895676",
+      "liquidityGross": "48393094895676"
+    },
+    {
+      "index": 252810,
+      "liquidityNet": "125350988010029",
+      "liquidityGross": "125350988010029"
+    },
+    {
+      "index": 252880,
+      "liquidityNet": "4921998104334",
+      "liquidityGross": "4921998104334"
+    },
+    {
+      "index": 252900,
+      "liquidityNet": "525908291150334",
+      "liquidityGross": "525908291150334"
+    },
+    {
+      "index": 253000,
+      "liquidityNet": "300904736728167",
+      "liquidityGross": "300904736728167"
+    },
+    {
+      "index": 253200,
+      "liquidityNet": "555072859898968",
+      "liquidityGross": "555072859898968"
+    },
+    {
+      "index": 253290,
+      "liquidityNet": "3609652522171577",
+      "liquidityGross": "3609652522171577"
+    },
+    {
+      "index": 253300,
+      "liquidityNet": "4033425260988794",
+      "liquidityGross": "4033425260988794"
+    },
+    {
+      "index": 253320,
+      "liquidityNet": "654529406430549",
+      "liquidityGross": "654529406430549"
+    },
+    {
+      "index": 253360,
+      "liquidityNet": "37281345004893",
+      "liquidityGross": "37281345004893"
+    },
+    {
+      "index": 253410,
+      "liquidityNet": "59315967919727",
+      "liquidityGross": "59315967919727"
+    },
+    {
+      "index": 253550,
+      "liquidityNet": "4440107540577",
+      "liquidityGross": "4440107540577"
+    },
+    {
+      "index": 253610,
+      "liquidityNet": "4120878160523",
+      "liquidityGross": "4120878160523"
+    },
+    {
+      "index": 253700,
+      "liquidityNet": "60044303326967",
+      "liquidityGross": "60044303326967"
+    },
+    {
+      "index": 253720,
+      "liquidityNet": "19435913387",
+      "liquidityGross": "19435913387"
+    },
+    {
+      "index": 253830,
+      "liquidityNet": "2303671339690",
+      "liquidityGross": "2303671339690"
+    },
+    {
+      "index": 253880,
+      "liquidityNet": "13862793530233",
+      "liquidityGross": "13862793530233"
+    },
+    {
+      "index": 253900,
+      "liquidityNet": "466865518734830",
+      "liquidityGross": "466865518734830"
+    },
+    {
+      "index": 253920,
+      "liquidityNet": "36217964601673",
+      "liquidityGross": "36217964601673"
+    },
+    {
+      "index": 253980,
+      "liquidityNet": "59858786013015",
+      "liquidityGross": "59858786013015"
+    },
+    {
+      "index": 254020,
+      "liquidityNet": "111044272659643",
+      "liquidityGross": "111044272659643"
+    },
+    {
+      "index": 254040,
+      "liquidityNet": "2610400916971",
+      "liquidityGross": "2610400916971"
+    },
+    {
+      "index": 254070,
+      "liquidityNet": "219128238030659",
+      "liquidityGross": "219128238030659"
+    },
+    {
+      "index": 254130,
+      "liquidityNet": "820118566729146",
+      "liquidityGross": "820118566729146"
+    },
+    {
+      "index": 254180,
+      "liquidityNet": "78639917465619",
+      "liquidityGross": "78639917465619"
+    },
+    {
+      "index": 254220,
+      "liquidityNet": "81625148220284",
+      "liquidityGross": "81625148220284"
+    },
+    {
+      "index": 254230,
+      "liquidityNet": "516891076204797",
+      "liquidityGross": "516891076204797"
+    },
+    {
+      "index": 254250,
+      "liquidityNet": "320215807890720",
+      "liquidityGross": "320215807890720"
+    },
+    {
+      "index": 254260,
+      "liquidityNet": "100835823873245",
+      "liquidityGross": "100835823873245"
+    },
+    {
+      "index": 254330,
+      "liquidityNet": "6845372745304",
+      "liquidityGross": "6845372745304"
+    },
+    {
+      "index": 254350,
+      "liquidityNet": "1244470096896586",
+      "liquidityGross": "1244470096896586"
+    },
+    {
+      "index": 254360,
+      "liquidityNet": "763389435916051",
+      "liquidityGross": "763389435916051"
+    },
+    {
+      "index": 254370,
+      "liquidityNet": "7888111632970589",
+      "liquidityGross": "7888111632970589"
+    },
+    {
+      "index": 254470,
+      "liquidityNet": "423964798165478",
+      "liquidityGross": "423964798165478"
+    },
+    {
+      "index": 254490,
+      "liquidityNet": "14076515130868",
+      "liquidityGross": "14076515130868"
+    },
+    {
+      "index": 254520,
+      "liquidityNet": "3110323743336954",
+      "liquidityGross": "3110323743336954"
+    },
+    {
+      "index": 254610,
+      "liquidityNet": "231063939105984",
+      "liquidityGross": "231063939105984"
+    },
+    {
+      "index": 254630,
+      "liquidityNet": "1134636202954",
+      "liquidityGross": "1134636202954"
+    },
+    {
+      "index": 254690,
+      "liquidityNet": "44129857256952",
+      "liquidityGross": "44129857256952"
+    },
+    {
+      "index": 254730,
+      "liquidityNet": "2243687642595",
+      "liquidityGross": "2243687642595"
+    },
+    {
+      "index": 254740,
+      "liquidityNet": "225940236995693",
+      "liquidityGross": "225940236995693"
+    },
+    {
+      "index": 254750,
+      "liquidityNet": "38352544480626",
+      "liquidityGross": "38352544480626"
+    },
+    {
+      "index": 254760,
+      "liquidityNet": "3947583931017",
+      "liquidityGross": "3947583931017"
+    },
+    {
+      "index": 254770,
+      "liquidityNet": "117553176290891",
+      "liquidityGross": "117553176290891"
+    },
+    {
+      "index": 254820,
+      "liquidityNet": "310322188067462",
+      "liquidityGross": "310322188067462"
+    },
+    {
+      "index": 254830,
+      "liquidityNet": "217571916555317",
+      "liquidityGross": "217571916555317"
+    },
+    {
+      "index": 254890,
+      "liquidityNet": "279622465775265",
+      "liquidityGross": "279622465775265"
+    },
+    {
+      "index": 254920,
+      "liquidityNet": "3586811234847210",
+      "liquidityGross": "3586811234847210"
+    },
+    {
+      "index": 254950,
+      "liquidityNet": "226553301601269",
+      "liquidityGross": "226553301601269"
+    },
+    {
+      "index": 254960,
+      "liquidityNet": "53144583811461",
+      "liquidityGross": "53144583811461"
+    },
+    {
+      "index": 255000,
+      "liquidityNet": "5899541765732762",
+      "liquidityGross": "5899541765732762"
+    },
+    {
+      "index": 255010,
+      "liquidityNet": "16826281150105",
+      "liquidityGross": "16826281150105"
+    },
+    {
+      "index": 255040,
+      "liquidityNet": "22002172327564",
+      "liquidityGross": "22002172327564"
+    },
+    {
+      "index": 255110,
+      "liquidityNet": "2204669991764499",
+      "liquidityGross": "2204669991764499"
+    },
+    {
+      "index": 255120,
+      "liquidityNet": "7083895520045797",
+      "liquidityGross": "7083895520045797"
+    },
+    {
+      "index": 255160,
+      "liquidityNet": "3198752033295608",
+      "liquidityGross": "3198752033295608"
+    },
+    {
+      "index": 255240,
+      "liquidityNet": "152718662945078",
+      "liquidityGross": "152718662945078"
+    },
+    {
+      "index": 255280,
+      "liquidityNet": "49318025908039599",
+      "liquidityGross": "49318025908039599"
+    },
+    {
+      "index": 255300,
+      "liquidityNet": "37793023153477",
+      "liquidityGross": "37793023153477"
+    },
+    {
+      "index": 255310,
+      "liquidityNet": "51550371822080",
+      "liquidityGross": "51550371822080"
+    },
+    {
+      "index": 255330,
+      "liquidityNet": "2922773584734474",
+      "liquidityGross": "2922773584734474"
+    },
+    {
+      "index": 255350,
+      "liquidityNet": "738944470157195",
+      "liquidityGross": "738944470157195"
+    },
+    {
+      "index": 255370,
+      "liquidityNet": "1229035184737052",
+      "liquidityGross": "1229035184737052"
+    },
+    {
+      "index": 255400,
+      "liquidityNet": "464876343308550",
+      "liquidityGross": "464876343308550"
+    },
+    {
+      "index": 255410,
+      "liquidityNet": "1005150128893540",
+      "liquidityGross": "1005150128893540"
+    },
+    {
+      "index": 255430,
+      "liquidityNet": "94202167566907069",
+      "liquidityGross": "94202167566907069"
+    },
+    {
+      "index": 255440,
+      "liquidityNet": "881307707085774",
+      "liquidityGross": "881307707085774"
+    },
+    {
+      "index": 255450,
+      "liquidityNet": "199411079473707",
+      "liquidityGross": "199411079473707"
+    },
+    {
+      "index": 255480,
+      "liquidityNet": "251822584869531",
+      "liquidityGross": "251822584869531"
+    },
+    {
+      "index": 255510,
+      "liquidityNet": "4319985515594871",
+      "liquidityGross": "4319985515594871"
+    },
+    {
+      "index": 255520,
+      "liquidityNet": "3261910357169576",
+      "liquidityGross": "3261910357169576"
+    },
+    {
+      "index": 255530,
+      "liquidityNet": "20975311392969109",
+      "liquidityGross": "20975311392969109"
+    },
+    {
+      "index": 255550,
+      "liquidityNet": "1360550388436718",
+      "liquidityGross": "1360550388436718"
+    },
+    {
+      "index": 255570,
+      "liquidityNet": "-7888111632970589",
+      "liquidityGross": "7888111632970589"
+    },
+    {
+      "index": 255620,
+      "liquidityNet": "148832216036523",
+      "liquidityGross": "148832216036523"
+    },
+    {
+      "index": 255640,
+      "liquidityNet": "18161352052931",
+      "liquidityGross": "18161352052931"
+    },
+    {
+      "index": 255650,
+      "liquidityNet": "1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 255660,
+      "liquidityNet": "141825904229027",
+      "liquidityGross": "141825904229027"
+    },
+    {
+      "index": 255680,
+      "liquidityNet": "39596391661654417",
+      "liquidityGross": "39596391661654417"
+    },
+    {
+      "index": 255690,
+      "liquidityNet": "397375342851839",
+      "liquidityGross": "397375342851839"
+    },
+    {
+      "index": 255700,
+      "liquidityNet": "1334392419921032",
+      "liquidityGross": "1334392419921032"
+    },
+    {
+      "index": 255730,
+      "liquidityNet": "1132544970801258",
+      "liquidityGross": "1132544970801258"
+    },
+    {
+      "index": 255760,
+      "liquidityNet": "4362722637019164",
+      "liquidityGross": "4362722637019164"
+    },
+    {
+      "index": 255770,
+      "liquidityNet": "546469313563226",
+      "liquidityGross": "546469313563226"
+    },
+    {
+      "index": 255780,
+      "liquidityNet": "692478283926826",
+      "liquidityGross": "692478283926826"
+    },
+    {
+      "index": 255810,
+      "liquidityNet": "2409961570874714",
+      "liquidityGross": "2409961570874714"
+    },
+    {
+      "index": 255820,
+      "liquidityNet": "1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 255830,
+      "liquidityNet": "1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 255840,
+      "liquidityNet": "25309802964753",
+      "liquidityGross": "25309802964753"
+    },
+    {
+      "index": 255850,
+      "liquidityNet": "444771011577738",
+      "liquidityGross": "444771011577738"
+    },
+    {
+      "index": 255880,
+      "liquidityNet": "74601986452658",
+      "liquidityGross": "74601986452658"
+    },
+    {
+      "index": 255890,
+      "liquidityNet": "228706533182318",
+      "liquidityGross": "228706533182318"
+    },
+    {
+      "index": 255900,
+      "liquidityNet": "62713816962200415",
+      "liquidityGross": "62713816962200415"
+    },
+    {
+      "index": 255910,
+      "liquidityNet": "411326521390328",
+      "liquidityGross": "411326521390328"
+    },
+    {
+      "index": 255920,
+      "liquidityNet": "8260025087546956",
+      "liquidityGross": "8260025087546956"
+    },
+    {
+      "index": 255930,
+      "liquidityNet": "741887869145218",
+      "liquidityGross": "741887869145218"
+    },
+    {
+      "index": 255940,
+      "liquidityNet": "26311702641365",
+      "liquidityGross": "26311702641365"
+    },
+    {
+      "index": 255950,
+      "liquidityNet": "405563508649790",
+      "liquidityGross": "405563508649792"
+    },
+    {
+      "index": 255960,
+      "liquidityNet": "940033433435518",
+      "liquidityGross": "940033433435518"
+    },
+    {
+      "index": 255970,
+      "liquidityNet": "3506523244610501",
+      "liquidityGross": "3506523244610501"
+    },
+    {
+      "index": 255980,
+      "liquidityNet": "1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 255990,
+      "liquidityNet": "-3169292100715",
+      "liquidityGross": "3169292100715"
+    },
+    {
+      "index": 256010,
+      "liquidityNet": "131681300177291",
+      "liquidityGross": "131681300177291"
+    },
+    {
+      "index": 256020,
+      "liquidityNet": "2438625614465785",
+      "liquidityGross": "2438625614465785"
+    },
+    {
+      "index": 256030,
+      "liquidityNet": "16234391830609",
+      "liquidityGross": "16234391830609"
+    },
+    {
+      "index": 256040,
+      "liquidityNet": "4273386319412115",
+      "liquidityGross": "4273386319412115"
+    },
+    {
+      "index": 256050,
+      "liquidityNet": "300995813430520",
+      "liquidityGross": "300995813430520"
+    },
+    {
+      "index": 256060,
+      "liquidityNet": "3372008639399102",
+      "liquidityGross": "3372008639399102"
+    },
+    {
+      "index": 256070,
+      "liquidityNet": "630187679540372",
+      "liquidityGross": "630187679540372"
+    },
+    {
+      "index": 256100,
+      "liquidityNet": "108851362226092",
+      "liquidityGross": "108851362226092"
+    },
+    {
+      "index": 256110,
+      "liquidityNet": "40457672901265",
+      "liquidityGross": "40457672901265"
+    },
+    {
+      "index": 256120,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 256130,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 256150,
+      "liquidityNet": "384107834423169",
+      "liquidityGross": "384107834423169"
+    },
+    {
+      "index": 256160,
+      "liquidityNet": "1218344338062532",
+      "liquidityGross": "1218344338062532"
+    },
+    {
+      "index": 256170,
+      "liquidityNet": "18859495664693177",
+      "liquidityGross": "18859495664884701"
+    },
+    {
+      "index": 256180,
+      "liquidityNet": "55813372710388161",
+      "liquidityGross": "55813372710388161"
+    },
+    {
+      "index": 256190,
+      "liquidityNet": "18196954242141",
+      "liquidityGross": "18196954242141"
+    },
+    {
+      "index": 256200,
+      "liquidityNet": "13534141150702655",
+      "liquidityGross": "13534141150702655"
+    },
+    {
+      "index": 256210,
+      "liquidityNet": "50418243111595",
+      "liquidityGross": "50418243111595"
+    },
+    {
+      "index": 256220,
+      "liquidityNet": "417271533942167",
+      "liquidityGross": "418722298231237"
+    },
+    {
+      "index": 256230,
+      "liquidityNet": "557882312268524",
+      "liquidityGross": "557882312268524"
+    },
+    {
+      "index": 256250,
+      "liquidityNet": "-853967618391",
+      "liquidityGross": "853967618391"
+    },
+    {
+      "index": 256280,
+      "liquidityNet": "-131681300177292",
+      "liquidityGross": "131681300177292"
+    },
+    {
+      "index": 256290,
+      "liquidityNet": "17850016950990",
+      "liquidityGross": "17850016950990"
+    },
+    {
+      "index": 256300,
+      "liquidityNet": "440236401143561",
+      "liquidityGross": "440236401143561"
+    },
+    {
+      "index": 256310,
+      "liquidityNet": "2679396811082892",
+      "liquidityGross": "2793775308801084"
+    },
+    {
+      "index": 256320,
+      "liquidityNet": "61098641397",
+      "liquidityGross": "61098641397"
+    },
+    {
+      "index": 256340,
+      "liquidityNet": "647986986425",
+      "liquidityGross": "647986986425"
+    },
+    {
+      "index": 256350,
+      "liquidityNet": "22989061530213250",
+      "liquidityGross": "22989061530213250"
+    },
+    {
+      "index": 256360,
+      "liquidityNet": "472032817713937",
+      "liquidityGross": "473450988969581"
+    },
+    {
+      "index": 256370,
+      "liquidityNet": "113174253475882",
+      "liquidityGross": "114291977066088"
+    },
+    {
+      "index": 256380,
+      "liquidityNet": "2607313109536234",
+      "liquidityGross": "2607313109536234"
+    },
+    {
+      "index": 256390,
+      "liquidityNet": "354779799305960",
+      "liquidityGross": "354779799305960"
+    },
+    {
+      "index": 256420,
+      "liquidityNet": "802071962152",
+      "liquidityGross": "802071962152"
+    },
+    {
+      "index": 256430,
+      "liquidityNet": "-1357467838729256",
+      "liquidityGross": "1363632938144180"
+    },
+    {
+      "index": 256440,
+      "liquidityNet": "20317769249956724",
+      "liquidityGross": "20317769249956724"
+    },
+    {
+      "index": 256450,
+      "liquidityNet": "127025554683157",
+      "liquidityGross": "127025554683157"
+    },
+    {
+      "index": 256460,
+      "liquidityNet": "3521296354868259",
+      "liquidityGross": "3524582562836751"
+    },
+    {
+      "index": 256470,
+      "liquidityNet": "-3082549707462",
+      "liquidityGross": "3082549707462"
+    },
+    {
+      "index": 256480,
+      "liquidityNet": "26634871825365",
+      "liquidityGross": "128515939988971"
+    },
+    {
+      "index": 256490,
+      "liquidityNet": "1230338273459993",
+      "liquidityGross": "1230338273459995"
+    },
+    {
+      "index": 256500,
+      "liquidityNet": "525713088799",
+      "liquidityGross": "2717855592629"
+    },
+    {
+      "index": 256510,
+      "liquidityNet": "-1142903739461809",
+      "liquidityGross": "1142903739461811"
+    },
+    {
+      "index": 256520,
+      "liquidityNet": "960908223130",
+      "liquidityGross": "960908223130"
+    },
+    {
+      "index": 256530,
+      "liquidityNet": "34277420539393",
+      "liquidityGross": "34277420539393"
+    },
+    {
+      "index": 256540,
+      "liquidityNet": "-658004154385535",
+      "liquidityGross": "661279115595383"
+    },
+    {
+      "index": 256550,
+      "liquidityNet": "135986025366262",
+      "liquidityGross": "135986025366262"
+    },
+    {
+      "index": 256560,
+      "liquidityNet": "2436369304717338",
+      "liquidityGross": "2439644265927186"
+    },
+    {
+      "index": 256570,
+      "liquidityNet": "66570621643263",
+      "liquidityGross": "66570621643263"
+    },
+    {
+      "index": 256580,
+      "liquidityNet": "4888562827840175",
+      "liquidityGross": "5010980936644593"
+    },
+    {
+      "index": 256590,
+      "liquidityNet": "3854345769063873",
+      "liquidityGross": "3854345769063873"
+    },
+    {
+      "index": 256610,
+      "liquidityNet": "9908353032958845",
+      "liquidityGross": "9908353032958845"
+    },
+    {
+      "index": 256630,
+      "liquidityNet": "-9624666696118968",
+      "liquidityGross": "10192039369798722"
+    },
+    {
+      "index": 256640,
+      "liquidityNet": "334316531516812",
+      "liquidityGross": "334316531516812"
+    },
+    {
+      "index": 256650,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 256660,
+      "liquidityNet": "6279823321458418",
+      "liquidityGross": "6279823321458418"
+    },
+    {
+      "index": 256680,
+      "liquidityNet": "2564009052681516",
+      "liquidityGross": "2564009052681516"
+    },
+    {
+      "index": 256690,
+      "liquidityNet": "433091452634622",
+      "liquidityGross": "433091452634622"
+    },
+    {
+      "index": 256700,
+      "liquidityNet": "1888137334101134",
+      "liquidityGross": "1888137334101134"
+    },
+    {
+      "index": 256710,
+      "liquidityNet": "144388652319173",
+      "liquidityGross": "144388652319173"
+    },
+    {
+      "index": 256720,
+      "liquidityNet": "5503381503416204",
+      "liquidityGross": "5503381503416204"
+    },
+    {
+      "index": 256730,
+      "liquidityNet": "14247281780568942",
+      "liquidityGross": "19193087850579298"
+    },
+    {
+      "index": 256740,
+      "liquidityNet": "546975194798",
+      "liquidityGross": "546975194798"
+    },
+    {
+      "index": 256750,
+      "liquidityNet": "7463411496055906",
+      "liquidityGross": "7463411496055906"
+    },
+    {
+      "index": 256760,
+      "liquidityNet": "3694475896795",
+      "liquidityGross": "4788426286391"
+    },
+    {
+      "index": 256770,
+      "liquidityNet": "-20221769827989845",
+      "liquidityGross": "20225307708177965"
+    },
+    {
+      "index": 256780,
+      "liquidityNet": "954317142204891",
+      "liquidityGross": "954472852908489"
+    },
+    {
+      "index": 256790,
+      "liquidityNet": "-1007097594626",
+      "liquidityGross": "2530782593494"
+    },
+    {
+      "index": 256800,
+      "liquidityNet": "128224455454555288",
+      "liquidityGross": "128232782646034874"
+    },
+    {
+      "index": 256810,
+      "liquidityNet": "-761842499435",
+      "liquidityGross": "761842499435"
+    },
+    {
+      "index": 256820,
+      "liquidityNet": "423487248746917",
+      "liquidityGross": "423487248746917"
+    },
+    {
+      "index": 256840,
+      "liquidityNet": "576055827486643",
+      "liquidityGross": "1978063817737999"
+    },
+    {
+      "index": 256860,
+      "liquidityNet": "-2631812084169630",
+      "liquidityGross": "3912648381968660"
+    },
+    {
+      "index": 256870,
+      "liquidityNet": "11656459327241600",
+      "liquidityGross": "11656459327241600"
+    },
+    {
+      "index": 256890,
+      "liquidityNet": "3610599946195771",
+      "liquidityGross": "3610874438705577"
+    },
+    {
+      "index": 256910,
+      "liquidityNet": "676724357555048",
+      "liquidityGross": "1212704676888872"
+    },
+    {
+      "index": 256920,
+      "liquidityNet": "-1334392419921032",
+      "liquidityGross": "1334392419921032"
+    },
+    {
+      "index": 256930,
+      "liquidityNet": "50287373709808",
+      "liquidityGross": "50287373709810"
+    },
+    {
+      "index": 256940,
+      "liquidityNet": "-18196954242140",
+      "liquidityGross": "18196954242140"
+    },
+    {
+      "index": 256950,
+      "liquidityNet": "-14076515130866",
+      "liquidityGross": "14076515130870"
+    },
+    {
+      "index": 256960,
+      "liquidityNet": "19864414030613238",
+      "liquidityGross": "19864414030613240"
+    },
+    {
+      "index": 256980,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 257000,
+      "liquidityNet": "587510196837759",
+      "liquidityGross": "587510196837759"
+    },
+    {
+      "index": 257010,
+      "liquidityNet": "1080858147399182",
+      "liquidityGross": "1080858147399184"
+    },
+    {
+      "index": 257030,
+      "liquidityNet": "3779681542896236",
+      "liquidityGross": "4146681932727138"
+    },
+    {
+      "index": 257040,
+      "liquidityNet": "-3",
+      "liquidityGross": "3"
+    },
+    {
+      "index": 257060,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 257070,
+      "liquidityNet": "507531623433092",
+      "liquidityGross": "507531623433092"
+    },
+    {
+      "index": 257080,
+      "liquidityNet": "-3450322689572848",
+      "liquidityGross": "3450322689572850"
+    },
+    {
+      "index": 257090,
+      "liquidityNet": "11883197700034",
+      "liquidityGross": "11883197700034"
+    },
+    {
+      "index": 257100,
+      "liquidityNet": "5408932156674946",
+      "liquidityGross": "5408932156674946"
+    },
+    {
+      "index": 257150,
+      "liquidityNet": "-2086148264437669",
+      "liquidityGross": "2328858611484613"
+    },
+    {
+      "index": 257160,
+      "liquidityNet": "-2806680139570690",
+      "liquidityGross": "2806680139570690"
+    },
+    {
+      "index": 257170,
+      "liquidityNet": "928934731103753",
+      "liquidityGross": "928934731103755"
+    },
+    {
+      "index": 257180,
+      "liquidityNet": "25124005709298",
+      "liquidityGross": "25124005709298"
+    },
+    {
+      "index": 257190,
+      "liquidityNet": "-582775739122747",
+      "liquidityGross": "27096411647307143"
+    },
+    {
+      "index": 257210,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 257220,
+      "liquidityNet": "1523161135104723",
+      "liquidityGross": "1523161135104723"
+    },
+    {
+      "index": 257230,
+      "liquidityNet": "9504188932590772",
+      "liquidityGross": "9504188932590772"
+    },
+    {
+      "index": 257240,
+      "liquidityNet": "1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 257250,
+      "liquidityNet": "151265875586781",
+      "liquidityGross": "151265875586781"
+    },
+    {
+      "index": 257270,
+      "liquidityNet": "-3",
+      "liquidityGross": "3"
+    },
+    {
+      "index": 257280,
+      "liquidityNet": "1",
+      "liquidityGross": "3"
+    },
+    {
+      "index": 257300,
+      "liquidityNet": "2053503917458592",
+      "liquidityGross": "3363672341731564"
+    },
+    {
+      "index": 257310,
+      "liquidityNet": "3794632466737882",
+      "liquidityGross": "17413610918230446"
+    },
+    {
+      "index": 257320,
+      "liquidityNet": "-50097325298575656",
+      "liquidityGross": "50097325298575656"
+    },
+    {
+      "index": 257350,
+      "liquidityNet": "-1039904414655314",
+      "liquidityGross": "1088949186754570"
+    },
+    {
+      "index": 257360,
+      "liquidityNet": "-5408932156674946",
+      "liquidityGross": "5408932156674946"
+    },
+    {
+      "index": 257370,
+      "liquidityNet": "-2",
+      "liquidityGross": "2"
+    },
+    {
+      "index": 257390,
+      "liquidityNet": "-3",
+      "liquidityGross": "3"
+    },
+    {
+      "index": 257400,
+      "liquidityNet": "1331424213380",
+      "liquidityGross": "1331424213380"
+    },
+    {
+      "index": 257410,
+      "liquidityNet": "2",
+      "liquidityGross": "2"
+    },
+    {
+      "index": 257430,
+      "liquidityNet": "147278496275463",
+      "liquidityGross": "147278496275463"
+    },
+    {
+      "index": 257440,
+      "liquidityNet": "-38552596301782742",
+      "liquidityGross": "38552596301782742"
+    },
+    {
+      "index": 257450,
+      "liquidityNet": "-25138211116821658",
+      "liquidityGross": "25138211116821658"
+    },
+    {
+      "index": 257480,
+      "liquidityNet": "452903980527343",
+      "liquidityGross": "463186897166229"
+    },
+    {
+      "index": 257490,
+      "liquidityNet": "47517948762038",
+      "liquidityGross": "50595935638802"
+    },
+    {
+      "index": 257500,
+      "liquidityNet": "-2",
+      "liquidityGross": "2"
+    },
+    {
+      "index": 257530,
+      "liquidityNet": "-1331424213378",
+      "liquidityGross": "1331424213380"
+    },
+    {
+      "index": 257540,
+      "liquidityNet": "-853638476425252",
+      "liquidityGross": "853638476425252"
+    },
+    {
+      "index": 257550,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 257570,
+      "liquidityNet": "-13512571574961291",
+      "liquidityGross": "13512571574961291"
+    },
+    {
+      "index": 257580,
+      "liquidityNet": "2980850590299638",
+      "liquidityGross": "3155719658296006"
+    },
+    {
+      "index": 257590,
+      "liquidityNet": "145334086986018549",
+      "liquidityGross": "145334086986018549"
+    },
+    {
+      "index": 257600,
+      "liquidityNet": "-2010197959332577",
+      "liquidityGross": "6899883595210597"
+    },
+    {
+      "index": 257610,
+      "liquidityNet": "8148831496282066",
+      "liquidityGross": "17893254431537622"
+    },
+    {
+      "index": 257620,
+      "liquidityNet": "-13249462662741155",
+      "liquidityGross": "13264173245443237"
+    },
+    {
+      "index": 257630,
+      "liquidityNet": "-2437815501808681",
+      "liquidityGross": "2437815501808681"
+    },
+    {
+      "index": 257640,
+      "liquidityNet": "-2048158260517804",
+      "liquidityGross": "20521217004305232"
+    },
+    {
+      "index": 257670,
+      "liquidityNet": "119809609337162479",
+      "liquidityGross": "119809609337162479"
+    },
+    {
+      "index": 257680,
+      "liquidityNet": "-4111517370181658",
+      "liquidityGross": "4721311388437876"
+    },
+    {
+      "index": 257690,
+      "liquidityNet": "842535468687275",
+      "liquidityGross": "842535468687275"
+    },
+    {
+      "index": 257700,
+      "liquidityNet": "1855950749632235",
+      "liquidityGross": "1855950749632235"
+    },
+    {
+      "index": 257710,
+      "liquidityNet": "-594630147258563",
+      "liquidityGross": "1192146527408537"
+    },
+    {
+      "index": 257730,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 257760,
+      "liquidityNet": "-2628858760298557",
+      "liquidityGross": "3648507866084577"
+    },
+    {
+      "index": 257770,
+      "liquidityNet": "7000656064027695",
+      "liquidityGross": "8250825663475655"
+    },
+    {
+      "index": 257780,
+      "liquidityNet": "-16826281150105",
+      "liquidityGross": "16826281150105"
+    },
+    {
+      "index": 257800,
+      "liquidityNet": "-37327600995880",
+      "liquidityGross": "37327600995880"
+    },
+    {
+      "index": 257810,
+      "liquidityNet": "-201147459696406710",
+      "liquidityGross": "201147459696406710"
+    },
+    {
+      "index": 257820,
+      "liquidityNet": "-1402055303315486",
+      "liquidityGross": "3007284680213512"
+    },
+    {
+      "index": 257840,
+      "liquidityNet": "103754208219419",
+      "liquidityGross": "115080246359313"
+    },
+    {
+      "index": 257860,
+      "liquidityNet": "34830389906956325",
+      "liquidityGross": "34830389906956325"
+    },
+    {
+      "index": 257870,
+      "liquidityNet": "-783816458643539",
+      "liquidityGross": "783816458643539"
+    },
+    {
+      "index": 257880,
+      "liquidityNet": "-650238557161793",
+      "liquidityGross": "650238557161793"
+    },
+    {
+      "index": 257890,
+      "liquidityNet": "-2011764184735667",
+      "liquidityGross": "2280426843142697"
+    },
+    {
+      "index": 257900,
+      "liquidityNet": "-34830389906956325",
+      "liquidityGross": "34830389906956325"
+    },
+    {
+      "index": 257920,
+      "liquidityNet": "-2504449810937257",
+      "liquidityGross": "2504449810937257"
+    },
+    {
+      "index": 257930,
+      "liquidityNet": "5628282324153760",
+      "liquidityGross": "5896944982560790"
+    },
+    {
+      "index": 257940,
+      "liquidityNet": "-18000434172460491",
+      "liquidityGross": "18000434172460491"
+    },
+    {
+      "index": 257950,
+      "liquidityNet": "-5762613653357275",
+      "liquidityGross": "5762613653357275"
+    },
+    {
+      "index": 257960,
+      "liquidityNet": "-306216469788283",
+      "liquidityGross": "306216469788283"
+    },
+    {
+      "index": 257970,
+      "liquidityNet": "-1226412167947768",
+      "liquidityGross": "1226412167947768"
+    },
+    {
+      "index": 258000,
+      "liquidityNet": "-1053757578769073",
+      "liquidityGross": "1072597889853073"
+    },
+    {
+      "index": 258020,
+      "liquidityNet": "-815142292223342",
+      "liquidityGross": "815142292223342"
+    },
+    {
+      "index": 258030,
+      "liquidityNet": "-144388652319172",
+      "liquidityGross": "144388652319172"
+    },
+    {
+      "index": 258050,
+      "liquidityNet": "-38352544480626",
+      "liquidityGross": "38352544480626"
+    },
+    {
+      "index": 258060,
+      "liquidityNet": "-8964576000683983",
+      "liquidityGross": "8964576000683983"
+    },
+    {
+      "index": 258070,
+      "liquidityNet": "-131327639498373462",
+      "liquidityGross": "131327639498373462"
+    },
+    {
+      "index": 258080,
+      "liquidityNet": "366864186978662",
+      "liquidityGross": "2642732181401772"
+    },
+    {
+      "index": 258090,
+      "liquidityNet": "-2841683255628339",
+      "liquidityGross": "2841683255628339"
+    },
+    {
+      "index": 258120,
+      "liquidityNet": "-141867037866459",
+      "liquidityGross": "141867037866459"
+    },
+    {
+      "index": 258130,
+      "liquidityNet": "-4073673990043884",
+      "liquidityGross": "4076849023173696"
+    },
+    {
+      "index": 258140,
+      "liquidityNet": "-1620971431944876",
+      "liquidityGross": "1620971431944876"
+    },
+    {
+      "index": 258160,
+      "liquidityNet": "-3997405958983357",
+      "liquidityGross": "3997405958983357"
+    },
+    {
+      "index": 258170,
+      "liquidityNet": "-226553301601269",
+      "liquidityGross": "226553301601269"
+    },
+    {
+      "index": 258180,
+      "liquidityNet": "-3296355949356093",
+      "liquidityGross": "3296355949356093"
+    },
+    {
+      "index": 258190,
+      "liquidityNet": "-127864593009529931",
+      "liquidityGross": "127864593009529931"
+    },
+    {
+      "index": 258200,
+      "liquidityNet": "-74601986452658",
+      "liquidityGross": "74601986452658"
+    },
+    {
+      "index": 258210,
+      "liquidityNet": "-568849528956006",
+      "liquidityGross": "568849528956006"
+    },
+    {
+      "index": 258220,
+      "liquidityNet": "-942916005527632",
+      "liquidityGross": "942916005527632"
+    },
+    {
+      "index": 258230,
+      "liquidityNet": "-3713925440634152",
+      "liquidityGross": "3713925440634152"
+    },
+    {
+      "index": 258240,
+      "liquidityNet": "-23770489314300909",
+      "liquidityGross": "23770489314300909"
+    },
+    {
+      "index": 258270,
+      "liquidityNet": "-405563508649791",
+      "liquidityGross": "405563508649791"
+    },
+    {
+      "index": 258310,
+      "liquidityNet": "-3555094754914692",
+      "liquidityGross": "3555094754914692"
+    },
+    {
+      "index": 258330,
+      "liquidityNet": "-9651467428866235",
+      "liquidityGross": "9651467428866235"
+    },
+    {
+      "index": 258350,
+      "liquidityNet": "-640000239328143",
+      "liquidityGross": "640000239328143"
+    },
+    {
+      "index": 258360,
+      "liquidityNet": "-8806204279125809",
+      "liquidityGross": "8806204279125809"
+    },
+    {
+      "index": 258380,
+      "liquidityNet": "-1285401677343270",
+      "liquidityGross": "1285401677343270"
+    },
+    {
+      "index": 258400,
+      "liquidityNet": "-442632521807696",
+      "liquidityGross": "442632521807696"
+    },
+    {
+      "index": 258410,
+      "liquidityNet": "-7874524335963590",
+      "liquidityGross": "12207285541203090"
+    },
+    {
+      "index": 258420,
+      "liquidityNet": "-2094753522705368",
+      "liquidityGross": "2094753522705368"
+    },
+    {
+      "index": 258430,
+      "liquidityNet": "-456506445408404",
+      "liquidityGross": "456506445408404"
+    },
+    {
+      "index": 258440,
+      "liquidityNet": "-1683922395534787",
+      "liquidityGross": "1683922395534787"
+    },
+    {
+      "index": 258460,
+      "liquidityNet": "-195004720341142",
+      "liquidityGross": "195004720341142"
+    },
+    {
+      "index": 258480,
+      "liquidityNet": "768839218752",
+      "liquidityGross": "768839218752"
+    },
+    {
+      "index": 258490,
+      "liquidityNet": "-3465772101262590",
+      "liquidityGross": "3465772101262590"
+    },
+    {
+      "index": 258500,
+      "liquidityNet": "-14717465701519735",
+      "liquidityGross": "14717465701519735"
+    },
+    {
+      "index": 258530,
+      "liquidityNet": "-206256452219011",
+      "liquidityGross": "206256452219011"
+    },
+    {
+      "index": 258540,
+      "liquidityNet": "-9539480205836804",
+      "liquidityGross": "9539480205836804"
+    },
+    {
+      "index": 258550,
+      "liquidityNet": "-1302167168240173",
+      "liquidityGross": "1302167168240173"
+    },
+    {
+      "index": 258570,
+      "liquidityNet": "-825625692107500",
+      "liquidityGross": "825625692107500"
+    },
+    {
+      "index": 258580,
+      "liquidityNet": "-3963181737811687",
+      "liquidityGross": "3963181737811687"
+    },
+    {
+      "index": 258590,
+      "liquidityNet": "-146775297528211",
+      "liquidityGross": "146775297528211"
+    },
+    {
+      "index": 258600,
+      "liquidityNet": "5958621954872012",
+      "liquidityGross": "9034010866120914"
+    },
+    {
+      "index": 258610,
+      "liquidityNet": "-1084652664725433",
+      "liquidityGross": "1145472637166087"
+    },
+    {
+      "index": 258620,
+      "liquidityNet": "-30409986220327",
+      "liquidityGross": "30409986220327"
+    },
+    {
+      "index": 258660,
+      "liquidityNet": "-283432238571189",
+      "liquidityGross": "283432238571189"
+    },
+    {
+      "index": 258740,
+      "liquidityNet": "-1343130381569232",
+      "liquidityGross": "1343130381569232"
+    },
+    {
+      "index": 258750,
+      "liquidityNet": "-416216501323227",
+      "liquidityGross": "416216501323227"
+    },
+    {
+      "index": 258770,
+      "liquidityNet": "-148832216036523",
+      "liquidityGross": "148832216036523"
+    },
+    {
+      "index": 258780,
+      "liquidityNet": "-14680286790870",
+      "liquidityGross": "14680286790870"
+    },
+    {
+      "index": 258800,
+      "liquidityNet": "-757157202708",
+      "liquidityGross": "757157202708"
+    },
+    {
+      "index": 258820,
+      "liquidityNet": "-26311702641365",
+      "liquidityGross": "26311702641365"
+    },
+    {
+      "index": 258840,
+      "liquidityNet": "-34730167379738",
+      "liquidityGross": "34730167379738"
+    },
+    {
+      "index": 258850,
+      "liquidityNet": "-298758190074987",
+      "liquidityGross": "298758190074987"
+    },
+    {
+      "index": 258890,
+      "liquidityNet": "-80580271611060",
+      "liquidityGross": "80580271611060"
+    },
+    {
+      "index": 258900,
+      "liquidityNet": "-928934731103752",
+      "liquidityGross": "928934731103752"
+    },
+    {
+      "index": 258910,
+      "liquidityNet": "-49056942200420",
+      "liquidityGross": "49056942200420"
+    },
+    {
+      "index": 258920,
+      "liquidityNet": "-676306025792097",
+      "liquidityGross": "676306025792097"
+    },
+    {
+      "index": 258940,
+      "liquidityNet": "-1134636202954",
+      "liquidityGross": "1134636202954"
+    },
+    {
+      "index": 258970,
+      "liquidityNet": "-16467678536528",
+      "liquidityGross": "16467678536528"
+    },
+    {
+      "index": 258990,
+      "liquidityNet": "-3522939458852505",
+      "liquidityGross": "3522939458852505"
+    },
+    {
+      "index": 259000,
+      "liquidityNet": "-1173193993457573",
+      "liquidityGross": "1173193993457573"
+    },
+    {
+      "index": 259020,
+      "liquidityNet": "-423487248746917",
+      "liquidityGross": "423487248746917"
+    },
+    {
+      "index": 259090,
+      "liquidityNet": "-1071664212349937",
+      "liquidityGross": "1071664212349937"
+    },
+    {
+      "index": 259100,
+      "liquidityNet": "-1102058232095799",
+      "liquidityGross": "1102058232095799"
+    },
+    {
+      "index": 259110,
+      "liquidityNet": "-57861059662",
+      "liquidityGross": "57861059662"
+    },
+    {
+      "index": 259140,
+      "liquidityNet": "-219128238030659",
+      "liquidityGross": "219128238030659"
+    },
+    {
+      "index": 259150,
+      "liquidityNet": "-397375342851839",
+      "liquidityGross": "397375342851839"
+    },
+    {
+      "index": 259180,
+      "liquidityNet": "-3804213128154222",
+      "liquidityGross": "3804213128154222"
+    },
+    {
+      "index": 259190,
+      "liquidityNet": "-155242837367781",
+      "liquidityGross": "155242837367781"
+    },
+    {
+      "index": 259200,
+      "liquidityNet": "-350452801059998",
+      "liquidityGross": "350452801059998"
+    },
+    {
+      "index": 259210,
+      "liquidityNet": "-2623016789284",
+      "liquidityGross": "2623016789284"
+    },
+    {
+      "index": 259260,
+      "liquidityNet": "-35092627832121",
+      "liquidityGross": "35092627832121"
+    },
+    {
+      "index": 259270,
+      "liquidityNet": "-145829302974915",
+      "liquidityGross": "145829302974915"
+    },
+    {
+      "index": 259280,
+      "liquidityNet": "-2695410030480298",
+      "liquidityGross": "2699422205914388"
+    },
+    {
+      "index": 259380,
+      "liquidityNet": "-369124296880496",
+      "liquidityGross": "369124296880496"
+    },
+    {
+      "index": 259390,
+      "liquidityNet": "-59315967919727",
+      "liquidityGross": "59315967919727"
+    },
+    {
+      "index": 259430,
+      "liquidityNet": "-48393094895676",
+      "liquidityGross": "48393094895676"
+    },
+    {
+      "index": 259440,
+      "liquidityNet": "-50363917828635",
+      "liquidityGross": "50363917828635"
+    },
+    {
+      "index": 259450,
+      "liquidityNet": "-2604794081046272",
+      "liquidityGross": "2604794081046272"
+    },
+    {
+      "index": 259480,
+      "liquidityNet": "-7496609851135442",
+      "liquidityGross": "7496609851135442"
+    },
+    {
+      "index": 259490,
+      "liquidityNet": "-2163977039146404",
+      "liquidityGross": "2163977039146404"
+    },
+    {
+      "index": 259560,
+      "liquidityNet": "-58238265387169",
+      "liquidityGross": "58238265387169"
+    },
+    {
+      "index": 259610,
+      "liquidityNet": "-1632498622159117",
+      "liquidityGross": "1632498622159117"
+    },
+    {
+      "index": 259650,
+      "liquidityNet": "-40457672901265",
+      "liquidityGross": "40457672901265"
+    },
+    {
+      "index": 259690,
+      "liquidityNet": "-2243687642595",
+      "liquidityGross": "2243687642595"
+    },
+    {
+      "index": 259720,
+      "liquidityNet": "-592714629442",
+      "liquidityGross": "592714629442"
+    },
+    {
+      "index": 259740,
+      "liquidityNet": "-353326302452796",
+      "liquidityGross": "353326302452796"
+    },
+    {
+      "index": 259750,
+      "liquidityNet": "-466865518734830",
+      "liquidityGross": "466865518734830"
+    },
+    {
+      "index": 259770,
+      "liquidityNet": "208110549697626119",
+      "liquidityGross": "208110549697626119"
+    },
+    {
+      "index": 259790,
+      "liquidityNet": "-208110549697626119",
+      "liquidityGross": "208110549697626119"
+    },
+    {
+      "index": 259800,
+      "liquidityNet": "-4440107540577",
+      "liquidityGross": "4440107540577"
+    },
+    {
+      "index": 259910,
+      "liquidityNet": "-25309802964753",
+      "liquidityGross": "25309802964753"
+    },
+    {
+      "index": 259920,
+      "liquidityNet": "-768839218752",
+      "liquidityGross": "768839218752"
+    },
+    {
+      "index": 259950,
+      "liquidityNet": "-324883679031428",
+      "liquidityGross": "324883679031428"
+    },
+    {
+      "index": 260010,
+      "liquidityNet": "-231063939105984",
+      "liquidityGross": "231063939105984"
+    },
+    {
+      "index": 260040,
+      "liquidityNet": "-424479956248054",
+      "liquidityGross": "424479956248054"
+    },
+    {
+      "index": 260050,
+      "liquidityNet": "-187765549328961",
+      "liquidityGross": "187765549328961"
+    },
+    {
+      "index": 260090,
+      "liquidityNet": "-2610400916971",
+      "liquidityGross": "2610400916971"
+    },
+    {
+      "index": 260110,
+      "liquidityNet": "-61979298222559",
+      "liquidityGross": "61979298222559"
+    },
+    {
+      "index": 260190,
+      "liquidityNet": "-211291269776860",
+      "liquidityGross": "211291269776860"
+    },
+    {
+      "index": 260210,
+      "liquidityNet": "-113733115270985",
+      "liquidityGross": "113733115270985"
+    },
+    {
+      "index": 260220,
+      "liquidityNet": "-722687650975921",
+      "liquidityGross": "722687650975921"
+    },
+    {
+      "index": 260230,
+      "liquidityNet": "-2627029710083535",
+      "liquidityGross": "2627029710083535"
+    },
+    {
+      "index": 260260,
+      "liquidityNet": "-40940983853357",
+      "liquidityGross": "40940983853357"
+    },
+    {
+      "index": 260290,
+      "liquidityNet": "-5223947365686108",
+      "liquidityGross": "5223947365686108"
+    },
+    {
+      "index": 260330,
+      "liquidityNet": "-32598290760709367",
+      "liquidityGross": "32598290760709367"
+    },
+    {
+      "index": 260350,
+      "liquidityNet": "-59858786013015",
+      "liquidityGross": "59858786013015"
+    },
+    {
+      "index": 260450,
+      "liquidityNet": "-326205436478",
+      "liquidityGross": "326205436478"
+    },
+    {
+      "index": 260480,
+      "liquidityNet": "-219391084753798",
+      "liquidityGross": "219391084753798"
+    },
+    {
+      "index": 260600,
+      "liquidityNet": "-3947583931017",
+      "liquidityGross": "3947583931017"
+    },
+    {
+      "index": 260620,
+      "liquidityNet": "-81173269308553",
+      "liquidityGross": "81173269308553"
+    },
+    {
+      "index": 260640,
+      "liquidityNet": "-1639726809736885",
+      "liquidityGross": "1639726809736885"
+    },
+    {
+      "index": 260690,
+      "liquidityNet": "-4120878160523",
+      "liquidityGross": "4120878160523"
+    },
+    {
+      "index": 260720,
+      "liquidityNet": "-1023157659442345",
+      "liquidityGross": "1023157659442345"
+    },
+    {
+      "index": 260780,
+      "liquidityNet": "-3585054762761678",
+      "liquidityGross": "3585054762761678"
+    },
+    {
+      "index": 260850,
+      "liquidityNet": "-10232814247481",
+      "liquidityGross": "10232814247481"
+    },
+    {
+      "index": 261060,
+      "liquidityNet": "-98738615436287",
+      "liquidityGross": "98738615436287"
+    },
+    {
+      "index": 261180,
+      "liquidityNet": "-16191722699732742",
+      "liquidityGross": "16191722699732742"
+    },
+    {
+      "index": 261280,
+      "liquidityNet": "-61603876806197702",
+      "liquidityGross": "61603876806197702"
+    },
+    {
+      "index": 261320,
+      "liquidityNet": "-516891076204797",
+      "liquidityGross": "516891076204797"
+    },
+    {
+      "index": 261330,
+      "liquidityNet": "-235345257558924",
+      "liquidityGross": "235345257558924"
+    },
+    {
+      "index": 261410,
+      "liquidityNet": "-107896618744904",
+      "liquidityGross": "107896618744904"
+    },
+    {
+      "index": 261610,
+      "liquidityNet": "-12737610725338655",
+      "liquidityGross": "12737610725338655"
+    },
+    {
+      "index": 261990,
+      "liquidityNet": "-256525225767907",
+      "liquidityGross": "256525225767907"
+    },
+    {
+      "index": 262380,
+      "liquidityNet": "-22988502668418146",
+      "liquidityGross": "22988502668418146"
+    },
+    {
+      "index": 262400,
+      "liquidityNet": "-97761352490590",
+      "liquidityGross": "97761352490590"
+    },
+    {
+      "index": 262440,
+      "liquidityNet": "-130592903650914",
+      "liquidityGross": "130592903650914"
+    },
+    {
+      "index": 262460,
+      "liquidityNet": "349162763200817858",
+      "liquidityGross": "351033608274550316"
+    },
+    {
+      "index": 262470,
+      "liquidityNet": "-350098185737684087",
+      "liquidityGross": "350098185737684087"
+    },
+    {
+      "index": 262530,
+      "liquidityNet": "-31659728094717",
+      "liquidityGross": "31659728094717"
+    },
+    {
+      "index": 262540,
+      "liquidityNet": "-63221035055583",
+      "liquidityGross": "63221035055583"
+    },
+    {
+      "index": 262640,
+      "liquidityNet": "-4921998104334",
+      "liquidityGross": "4921998104334"
+    },
+    {
+      "index": 262710,
+      "liquidityNet": "-2077024408266605",
+      "liquidityGross": "2077024408266605"
+    },
+    {
+      "index": 262930,
+      "liquidityNet": "-48874223268985470",
+      "liquidityGross": "48874223268985470"
+    },
+    {
+      "index": 263700,
+      "liquidityNet": "-38055467418",
+      "liquidityGross": "38055467418"
+    },
+    {
+      "index": 263740,
+      "liquidityNet": "-4526103731726",
+      "liquidityGross": "4526103731726"
+    },
+    {
+      "index": 263800,
+      "liquidityNet": "-1059261560094696",
+      "liquidityGross": "1059261560094696"
+    },
+    {
+      "index": 264080,
+      "liquidityNet": "-128984420745461",
+      "liquidityGross": "128984420745461"
+    },
+    {
+      "index": 264190,
+      "liquidityNet": "-73845824035243",
+      "liquidityGross": "73845824035243"
+    },
+    {
+      "index": 264350,
+      "liquidityNet": "-38497172711073",
+      "liquidityGross": "38497172711073"
+    },
+    {
+      "index": 264560,
+      "liquidityNet": "-25033965501780",
+      "liquidityGross": "25033965501780"
+    },
+    {
+      "index": 264960,
+      "liquidityNet": "-13019893733490",
+      "liquidityGross": "13019893733490"
+    },
+    {
+      "index": 265340,
+      "liquidityNet": "-6685606330642",
+      "liquidityGross": "6685606330642"
+    },
+    {
+      "index": 267160,
+      "liquidityNet": "-2894939484824",
+      "liquidityGross": "2894939484824"
+    },
+    {
+      "index": 268440,
+      "liquidityNet": "-5361639205879",
+      "liquidityGross": "5361639205879"
+    },
+    {
+      "index": 268630,
+      "liquidityNet": "-654529406430549",
+      "liquidityGross": "654529406430549"
+    },
+    {
+      "index": 269390,
+      "liquidityNet": "-1367005886229",
+      "liquidityGross": "1367005886229"
+    },
+    {
+      "index": 270750,
+      "liquidityNet": "-273080104450",
+      "liquidityGross": "273080104450"
+    },
+    {
+      "index": 271620,
+      "liquidityNet": "-5186684189459",
+      "liquidityGross": "5186684189459"
+    },
+    {
+      "index": 276320,
+      "liquidityNet": "-1438020467859",
+      "liquidityGross": "1438020467859"
+    },
+    {
+      "index": 290200,
+      "liquidityNet": "-665468090275",
+      "liquidityGross": "665468090275"
+    },
+    {
+      "index": 345400,
+      "liquidityNet": "-196567876601",
+      "liquidityGross": "196567876601"
+    },
+    {
+      "index": 368430,
+      "liquidityNet": "-6783676710783",
+      "liquidityGross": "6783676710783"
+    },
+    {
+      "index": 887270,
+      "liquidityNet": "-33543160647327",
+      "liquidityGross": "33543160647327"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "13089597930139549534680",
+      "exactInput": true,
+      "expectedAmountCalculated": "74830371359"
+    },
+    {
+      "amountSpecified": "733634525731842141864",
+      "exactInput": true,
+      "expectedAmountCalculated": "4593585697"
+    },
+    {
+      "amountSpecified": "19032908331852240963052",
+      "exactInput": true,
+      "expectedAmountCalculated": "102594324635"
+    },
+    {
+      "amountSpecified": "22388189002422233365344",
+      "exactInput": true,
+      "expectedAmountCalculated": "109469195646"
+    },
+    {
+      "amountSpecified": "23281280594903541363984",
+      "exactInput": true,
+      "expectedAmountCalculated": "109469544997"
+    },
+    {
+      "amountSpecified": "18058659835260815321916",
+      "exactInput": true,
+      "expectedAmountCalculated": "98400580002"
+    },
+    {
+      "amountSpecified": "17067594859056700777768",
+      "exactInput": true,
+      "expectedAmountCalculated": "93941129827"
+    },
+    {
+      "amountSpecified": "6485103576157630766520",
+      "exactInput": true,
+      "expectedAmountCalculated": "39273556897"
+    },
+    {
+      "amountSpecified": "5761705469590536747288",
+      "exactInput": true,
+      "expectedAmountCalculated": "35090908556"
+    },
+    {
+      "amountSpecified": "16109683418236991986180",
+      "exactInput": true,
+      "expectedAmountCalculated": "89512057752"
+    },
+    {
+      "amountSpecified": "27232559186890314938758",
+      "exactInput": true,
+      "expectedAmountCalculated": "109469925306"
+    },
+    {
+      "amountSpecified": "14002974068988309706296",
+      "exactInput": true,
+      "expectedAmountCalculated": "79384145756"
+    },
+    {
+      "amountSpecified": "20165950984879495613212",
+      "exactInput": true,
+      "expectedAmountCalculated": "107208401450"
+    },
+    {
+      "amountSpecified": "608205740420648482882",
+      "exactInput": true,
+      "expectedAmountCalculated": "3810104624"
+    },
+    {
+      "amountSpecified": "24697065942224248396164",
+      "exactInput": true,
+      "expectedAmountCalculated": "109469775103"
+    },
+    {
+      "amountSpecified": "17325743306046891581980",
+      "exactInput": true,
+      "expectedAmountCalculated": "95116411106"
+    },
+    {
+      "amountSpecified": "2797904319539220693936",
+      "exactInput": true,
+      "expectedAmountCalculated": "17366743140"
+    },
+    {
+      "amountSpecified": "21569394633623575141532",
+      "exactInput": true,
+      "expectedAmountCalculated": "109468210563"
+    },
+    {
+      "amountSpecified": "23037917450485138887044",
+      "exactInput": true,
+      "expectedAmountCalculated": "109469476799"
+    },
+    {
+      "amountSpecified": "6469540874299625598976",
+      "exactInput": true,
+      "expectedAmountCalculated": "39184181742"
+    },
+    {
+      "amountSpecified": "21168734438127966012012",
+      "exactInput": true,
+      "expectedAmountCalculated": "109466354572"
+    },
+    {
+      "amountSpecified": "8367258997181507770584",
+      "exactInput": true,
+      "expectedAmountCalculated": "49887697832"
+    },
+    {
+      "amountSpecified": "13401643152049641863140",
+      "exactInput": true,
+      "expectedAmountCalculated": "76395914028"
+    },
+    {
+      "amountSpecified": "18846694400922975577296",
+      "exactInput": true,
+      "expectedAmountCalculated": "101809267000"
+    },
+    {
+      "amountSpecified": "4748329639242002376144",
+      "exactInput": true,
+      "expectedAmountCalculated": "29133499973"
+    },
+    {
+      "amountSpecified": "10544651343872130529008",
+      "exactInput": true,
+      "expectedAmountCalculated": "61683384075"
+    },
+    {
+      "amountSpecified": "27216250227553994713624",
+      "exactInput": true,
+      "expectedAmountCalculated": "109469924760"
+    },
+    {
+      "amountSpecified": "1401131993704827583080",
+      "exactInput": true,
+      "expectedAmountCalculated": "8750052143"
+    },
+    {
+      "amountSpecified": "18754839111308612064828",
+      "exactInput": true,
+      "expectedAmountCalculated": "101419149690"
+    },
+    {
+      "amountSpecified": "5077936361668552696528",
+      "exactInput": true,
+      "expectedAmountCalculated": "31083880250"
+    },
+    {
+      "amountSpecified": "12122051108631557277692",
+      "exactInput": true,
+      "expectedAmountCalculated": "69911390187"
+    },
+    {
+      "amountSpecified": "20302356017461200304852",
+      "exactInput": true,
+      "expectedAmountCalculated": "107743991148"
+    },
+    {
+      "amountSpecified": "22325453327364031451152",
+      "exactInput": true,
+      "expectedAmountCalculated": "109469156246"
+    },
+    {
+      "amountSpecified": "4325040451839654540744",
+      "exactInput": true,
+      "expectedAmountCalculated": "26611732359"
+    },
+    {
+      "amountSpecified": "6901390164398069146060",
+      "exactInput": true,
+      "expectedAmountCalculated": "41654423891"
+    },
+    {
+      "amountSpecified": "19349707679585157550830",
+      "exactInput": true,
+      "expectedAmountCalculated": "103912286020"
+    },
+    {
+      "amountSpecified": "23871174064180449741332",
+      "exactInput": true,
+      "expectedAmountCalculated": "109469666216"
+    },
+    {
+      "amountSpecified": "26922980947033593132852",
+      "exactInput": true,
+      "expectedAmountCalculated": "109469914390"
+    },
+    {
+      "amountSpecified": "19789541354378588811488",
+      "exactInput": true,
+      "expectedAmountCalculated": "105706129148"
+    },
+    {
+      "amountSpecified": "18109031865195000223224",
+      "exactInput": true,
+      "expectedAmountCalculated": "98622469411"
+    },
+    {
+      "amountSpecified": "13159152033659974673952",
+      "exactInput": true,
+      "expectedAmountCalculated": "75180200493"
+    },
+    {
+      "amountSpecified": "1648670620347157375176",
+      "exactInput": true,
+      "expectedAmountCalculated": "10285870616"
+    },
+    {
+      "amountSpecified": "15418063085551121535032",
+      "exactInput": true,
+      "expectedAmountCalculated": "86246226579"
+    },
+    {
+      "amountSpecified": "8670197352710036664264",
+      "exactInput": true,
+      "expectedAmountCalculated": "51559908966"
+    },
+    {
+      "amountSpecified": "14981037852039895934676",
+      "exactInput": true,
+      "expectedAmountCalculated": "84152952341"
+    },
+    {
+      "amountSpecified": "18221460462325898733608",
+      "exactInput": true,
+      "expectedAmountCalculated": "99115850383"
+    },
+    {
+      "amountSpecified": "8755850721038859789552",
+      "exactInput": true,
+      "expectedAmountCalculated": "52030893701"
+    },
+    {
+      "amountSpecified": "15311038600496596894912",
+      "exactInput": true,
+      "expectedAmountCalculated": "85735722928"
+    },
+    {
+      "amountSpecified": "26013212320336646406232",
+      "exactInput": true,
+      "expectedAmountCalculated": "109469873782"
+    },
+    {
+      "amountSpecified": "11320589721373805336112",
+      "exactInput": true,
+      "expectedAmountCalculated": "65761263404"
+    },
+    {
+      "amountSpecified": "60977218578",
+      "exactInput": false,
+      "expectedAmountCalculated": "10411523794365570507042"
+    },
+    {
+      "amountSpecified": "73788904605",
+      "exactInput": false,
+      "expectedAmountCalculated": "12883120178242649162840"
+    },
+    {
+      "amountSpecified": "84204808840",
+      "exactInput": false,
+      "expectedAmountCalculated": "14991806584439356060353"
+    },
+    {
+      "amountSpecified": "14226798529",
+      "exactInput": false,
+      "expectedAmountCalculated": "2286619997609285134266"
+    },
+    {
+      "amountSpecified": "92730623935",
+      "exactInput": false,
+      "expectedAmountCalculated": "16803464120766190452277"
+    },
+    {
+      "amountSpecified": "64984006386",
+      "exactInput": false,
+      "expectedAmountCalculated": "11171855317684189508993"
+    },
+    {
+      "amountSpecified": "58299088193",
+      "exactInput": false,
+      "expectedAmountCalculated": "9909983348990086848583"
+    },
+    {
+      "amountSpecified": "39010499393",
+      "exactInput": false,
+      "expectedAmountCalculated": "6439311163216738077724"
+    },
+    {
+      "amountSpecified": "62419251858",
+      "exactInput": false,
+      "expectedAmountCalculated": "10683775271329161296432"
+    },
+    {
+      "amountSpecified": "45422403449",
+      "exactInput": false,
+      "expectedAmountCalculated": "7567071162427282199487"
+    },
+    {
+      "amountSpecified": "30279387698",
+      "exactInput": false,
+      "expectedAmountCalculated": "4941732500786883206337"
+    },
+    {
+      "amountSpecified": "78522157257",
+      "exactInput": false,
+      "expectedAmountCalculated": "13828715183308776553642"
+    },
+    {
+      "amountSpecified": "25231074471",
+      "exactInput": false,
+      "expectedAmountCalculated": "4094591111663750762624"
+    },
+    {
+      "amountSpecified": "46550073319",
+      "exactInput": false,
+      "expectedAmountCalculated": "7767974730335647330625"
+    },
+    {
+      "amountSpecified": "62743511485",
+      "exactInput": false,
+      "expectedAmountCalculated": "10745209157418411218250"
+    },
+    {
+      "amountSpecified": "44974845687",
+      "exactInput": false,
+      "expectedAmountCalculated": "7487552151239878796463"
+    },
+    {
+      "amountSpecified": "53658049886",
+      "exactInput": false,
+      "expectedAmountCalculated": "9052899292961721275926"
+    },
+    {
+      "amountSpecified": "78667365440",
+      "exactInput": false,
+      "expectedAmountCalculated": "13858022336197216733042"
+    },
+    {
+      "amountSpecified": "98018771013",
+      "exactInput": false,
+      "expectedAmountCalculated": "17972259234423795157485"
+    },
+    {
+      "amountSpecified": "94908037514",
+      "exactInput": false,
+      "expectedAmountCalculated": "17279848482370153172283"
+    },
+    {
+      "amountSpecified": "103301583552",
+      "exactInput": false,
+      "expectedAmountCalculated": "19202253877338345159632"
+    },
+    {
+      "amountSpecified": "44503526324",
+      "exactInput": false,
+      "expectedAmountCalculated": "7403944195024885163233"
+    },
+    {
+      "amountSpecified": "54274797832",
+      "exactInput": false,
+      "expectedAmountCalculated": "9165953700050407855361"
+    },
+    {
+      "amountSpecified": "11715209758",
+      "exactInput": false,
+      "expectedAmountCalculated": "1879572313125629027791"
+    },
+    {
+      "amountSpecified": "106205107521",
+      "exactInput": false,
+      "expectedAmountCalculated": "19913847731386439620015"
+    },
+    {
+      "amountSpecified": "100835654441",
+      "exactInput": false,
+      "expectedAmountCalculated": "18618284905942781133483"
+    },
+    {
+      "amountSpecified": "100127963635",
+      "exactInput": false,
+      "expectedAmountCalculated": "18453991335101975575907"
+    },
+    {
+      "amountSpecified": "50230003488",
+      "exactInput": false,
+      "expectedAmountCalculated": "8429123060178177880911"
+    },
+    {
+      "amountSpecified": "4705019479",
+      "exactInput": false,
+      "expectedAmountCalculated": "751484218800310447119"
+    },
+    {
+      "amountSpecified": "15733497539",
+      "exactInput": false,
+      "expectedAmountCalculated": "2531621405224520229579"
+    },
+    {
+      "amountSpecified": "430241953",
+      "exactInput": false,
+      "expectedAmountCalculated": "68533796230108339722"
+    },
+    {
+      "amountSpecified": "73451827154",
+      "exactInput": false,
+      "expectedAmountCalculated": "12816480809198259033008"
+    },
+    {
+      "amountSpecified": "99720848574",
+      "exactInput": false,
+      "expectedAmountCalculated": "18360129387898560253753"
+    },
+    {
+      "amountSpecified": "76533480548",
+      "exactInput": false,
+      "expectedAmountCalculated": "13429159314231283085269"
+    },
+    {
+      "amountSpecified": "83473321180",
+      "exactInput": false,
+      "expectedAmountCalculated": "14840170591927053997714"
+    },
+    {
+      "amountSpecified": "75554802543",
+      "exactInput": false,
+      "expectedAmountCalculated": "13233742438815681095328"
+    },
+    {
+      "amountSpecified": "100309523570",
+      "exactInput": false,
+      "expectedAmountCalculated": "18496003630981081020711"
+    },
+    {
+      "amountSpecified": "33697723101",
+      "exactInput": false,
+      "expectedAmountCalculated": "5522952971879685679118"
+    },
+    {
+      "amountSpecified": "13017410898",
+      "exactInput": false,
+      "expectedAmountCalculated": "2090407195742344697682"
+    },
+    {
+      "amountSpecified": "12387843477",
+      "exactInput": false,
+      "expectedAmountCalculated": "1988419813324140909535"
+    },
+    {
+      "amountSpecified": "22305018959",
+      "exactInput": false,
+      "expectedAmountCalculated": "3609077594693804293292"
+    },
+    {
+      "amountSpecified": "71534411499",
+      "exactInput": false,
+      "expectedAmountCalculated": "12439153508178985951724"
+    },
+    {
+      "amountSpecified": "88752465906",
+      "exactInput": false,
+      "expectedAmountCalculated": "15947726223646823425924"
+    },
+    {
+      "amountSpecified": "86655227342",
+      "exactInput": false,
+      "expectedAmountCalculated": "15504016344992932482503"
+    },
+    {
+      "amountSpecified": "91314627933",
+      "exactInput": false,
+      "expectedAmountCalculated": "16496726147535370874229"
+    },
+    {
+      "amountSpecified": "52830202997",
+      "exactInput": false,
+      "expectedAmountCalculated": "8901549432096414696756"
+    },
+    {
+      "amountSpecified": "52467355482",
+      "exactInput": false,
+      "expectedAmountCalculated": "8835356600779723823299"
+    },
+    {
+      "amountSpecified": "96084134596",
+      "exactInput": false,
+      "expectedAmountCalculated": "17539659581055036179363"
+    },
+    {
+      "amountSpecified": "6585297796",
+      "exactInput": false,
+      "expectedAmountCalculated": "1053050381570401084499"
+    },
+    {
+      "amountSpecified": "12121793542",
+      "exactInput": false,
+      "expectedAmountCalculated": "1945352486207369479545"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x4585FE77225b41b697C938B018E2Ac67Ac5a20c0.json b/src/__tests__/stubs/swap/0x4585FE77225b41b697C938B018E2Ac67Ac5a20c0.json
new file mode 100644
index 00000000..6e344573
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x4585FE77225b41b697C938B018E2Ac67Ac5a20c0.json
@@ -0,0 +1,2691 @@
+{
+  "poolName": "WBTC - WETH 500",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
+    "decimals": 8
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "fee": 500,
+  "liquidity": "642026772876145762",
+  "sqrtRatioX96": "31608867042422328680735981628679003",
+  "tickCurrent": 257945,
+  "ticks": [
+    {
+      "index": -887270,
+      "liquidityNet": "33523724733940",
+      "liquidityGross": "33523724733940"
+    },
+    {
+      "index": 115130,
+      "liquidityNet": "6783676710783",
+      "liquidityGross": "6783676710783"
+    },
+    {
+      "index": 185740,
+      "liquidityNet": "8011857382663",
+      "liquidityGross": "8011857382663"
+    },
+    {
+      "index": 185970,
+      "liquidityNet": "-8011857382663",
+      "liquidityGross": "8011857382663"
+    },
+    {
+      "index": 190800,
+      "liquidityNet": "1062046574",
+      "liquidityGross": "1062046574"
+    },
+    {
+      "index": 201480,
+      "liquidityNet": "3373954775055585",
+      "liquidityGross": "3373954775055585"
+    },
+    {
+      "index": 201490,
+      "liquidityNet": "-3373954775055585",
+      "liquidityGross": "3373954775055585"
+    },
+    {
+      "index": 230270,
+      "liquidityNet": "2665070333023",
+      "liquidityGross": "2665070333023"
+    },
+    {
+      "index": 230280,
+      "liquidityNet": "-1999602242748",
+      "liquidityGross": "1999602242748"
+    },
+    {
+      "index": 241360,
+      "liquidityNet": "5361639205879",
+      "liquidityGross": "5361639205879"
+    },
+    {
+      "index": 243010,
+      "liquidityNet": "273080104450",
+      "liquidityGross": "273080104450"
+    },
+    {
+      "index": 246360,
+      "liquidityNet": "38497172711073",
+      "liquidityGross": "38497172711073"
+    },
+    {
+      "index": 246370,
+      "liquidityNet": "30733931340692",
+      "liquidityGross": "30733931340692"
+    },
+    {
+      "index": 247640,
+      "liquidityNet": "219391084753798",
+      "liquidityGross": "219391084753798"
+    },
+    {
+      "index": 248400,
+      "liquidityNet": "97761352490590",
+      "liquidityGross": "97761352490590"
+    },
+    {
+      "index": 248880,
+      "liquidityNet": "124786358117046",
+      "liquidityGross": "124786358117046"
+    },
+    {
+      "index": 249240,
+      "liquidityNet": "19225121012895",
+      "liquidityGross": "19225121012895"
+    },
+    {
+      "index": 249870,
+      "liquidityNet": "4526103731726",
+      "liquidityGross": "4526103731726"
+    },
+    {
+      "index": 250800,
+      "liquidityNet": "38055467418",
+      "liquidityGross": "38055467418"
+    },
+    {
+      "index": 251470,
+      "liquidityNet": "2077220976143206",
+      "liquidityGross": "2077220976143206"
+    },
+    {
+      "index": 251630,
+      "liquidityNet": "256525225767907",
+      "liquidityGross": "256525225767907"
+    },
+    {
+      "index": 251780,
+      "liquidityNet": "16190737082805872",
+      "liquidityGross": "16190737082805872"
+    },
+    {
+      "index": 252000,
+      "liquidityNet": "-1062046574",
+      "liquidityGross": "1062046574"
+    },
+    {
+      "index": 252250,
+      "liquidityNet": "985616926870",
+      "liquidityGross": "985616926870"
+    },
+    {
+      "index": 252410,
+      "liquidityNet": "98738615436287",
+      "liquidityGross": "98738615436287"
+    },
+    {
+      "index": 252680,
+      "liquidityNet": "16467678536528",
+      "liquidityGross": "16467678536528"
+    },
+    {
+      "index": 252730,
+      "liquidityNet": "48393094895676",
+      "liquidityGross": "48393094895676"
+    },
+    {
+      "index": 252810,
+      "liquidityNet": "125350988010029",
+      "liquidityGross": "125350988010029"
+    },
+    {
+      "index": 252880,
+      "liquidityNet": "4921998104334",
+      "liquidityGross": "4921998104334"
+    },
+    {
+      "index": 252900,
+      "liquidityNet": "525908291150334",
+      "liquidityGross": "525908291150334"
+    },
+    {
+      "index": 253000,
+      "liquidityNet": "300904736728167",
+      "liquidityGross": "300904736728167"
+    },
+    {
+      "index": 253200,
+      "liquidityNet": "555072859898968",
+      "liquidityGross": "555072859898968"
+    },
+    {
+      "index": 253290,
+      "liquidityNet": "3609652522171577",
+      "liquidityGross": "3609652522171577"
+    },
+    {
+      "index": 253300,
+      "liquidityNet": "4033425260988794",
+      "liquidityGross": "4033425260988794"
+    },
+    {
+      "index": 253320,
+      "liquidityNet": "654529406430549",
+      "liquidityGross": "654529406430549"
+    },
+    {
+      "index": 253360,
+      "liquidityNet": "37281345004893",
+      "liquidityGross": "37281345004893"
+    },
+    {
+      "index": 253410,
+      "liquidityNet": "59315967919727",
+      "liquidityGross": "59315967919727"
+    },
+    {
+      "index": 253550,
+      "liquidityNet": "4440107540577",
+      "liquidityGross": "4440107540577"
+    },
+    {
+      "index": 253610,
+      "liquidityNet": "4120878160523",
+      "liquidityGross": "4120878160523"
+    },
+    {
+      "index": 253700,
+      "liquidityNet": "60044303326967",
+      "liquidityGross": "60044303326967"
+    },
+    {
+      "index": 253720,
+      "liquidityNet": "19435913387",
+      "liquidityGross": "19435913387"
+    },
+    {
+      "index": 253830,
+      "liquidityNet": "2303671339690",
+      "liquidityGross": "2303671339690"
+    },
+    {
+      "index": 253880,
+      "liquidityNet": "13862793530233",
+      "liquidityGross": "13862793530233"
+    },
+    {
+      "index": 253900,
+      "liquidityNet": "466865518734830",
+      "liquidityGross": "466865518734830"
+    },
+    {
+      "index": 253920,
+      "liquidityNet": "36217964601673",
+      "liquidityGross": "36217964601673"
+    },
+    {
+      "index": 253980,
+      "liquidityNet": "59858786013015",
+      "liquidityGross": "59858786013015"
+    },
+    {
+      "index": 254020,
+      "liquidityNet": "111044272659643",
+      "liquidityGross": "111044272659643"
+    },
+    {
+      "index": 254040,
+      "liquidityNet": "2610400916971",
+      "liquidityGross": "2610400916971"
+    },
+    {
+      "index": 254070,
+      "liquidityNet": "219128238030659",
+      "liquidityGross": "219128238030659"
+    },
+    {
+      "index": 254130,
+      "liquidityNet": "820118566729146",
+      "liquidityGross": "820118566729146"
+    },
+    {
+      "index": 254180,
+      "liquidityNet": "78639917465619",
+      "liquidityGross": "78639917465619"
+    },
+    {
+      "index": 254220,
+      "liquidityNet": "81625148220284",
+      "liquidityGross": "81625148220284"
+    },
+    {
+      "index": 254230,
+      "liquidityNet": "516891076204797",
+      "liquidityGross": "516891076204797"
+    },
+    {
+      "index": 254250,
+      "liquidityNet": "320215807890720",
+      "liquidityGross": "320215807890720"
+    },
+    {
+      "index": 254260,
+      "liquidityNet": "100835823873245",
+      "liquidityGross": "100835823873245"
+    },
+    {
+      "index": 254330,
+      "liquidityNet": "6845372745304",
+      "liquidityGross": "6845372745304"
+    },
+    {
+      "index": 254350,
+      "liquidityNet": "1244470096896586",
+      "liquidityGross": "1244470096896586"
+    },
+    {
+      "index": 254360,
+      "liquidityNet": "763389435916051",
+      "liquidityGross": "763389435916051"
+    },
+    {
+      "index": 254370,
+      "liquidityNet": "7888111632970589",
+      "liquidityGross": "7888111632970589"
+    },
+    {
+      "index": 254470,
+      "liquidityNet": "423964798165478",
+      "liquidityGross": "423964798165478"
+    },
+    {
+      "index": 254490,
+      "liquidityNet": "14076515130868",
+      "liquidityGross": "14076515130868"
+    },
+    {
+      "index": 254520,
+      "liquidityNet": "3110323743336954",
+      "liquidityGross": "3110323743336954"
+    },
+    {
+      "index": 254610,
+      "liquidityNet": "231063939105984",
+      "liquidityGross": "231063939105984"
+    },
+    {
+      "index": 254630,
+      "liquidityNet": "1134636202954",
+      "liquidityGross": "1134636202954"
+    },
+    {
+      "index": 254690,
+      "liquidityNet": "44129857256952",
+      "liquidityGross": "44129857256952"
+    },
+    {
+      "index": 254730,
+      "liquidityNet": "2243687642595",
+      "liquidityGross": "2243687642595"
+    },
+    {
+      "index": 254740,
+      "liquidityNet": "225940236995693",
+      "liquidityGross": "225940236995693"
+    },
+    {
+      "index": 254750,
+      "liquidityNet": "38352544480626",
+      "liquidityGross": "38352544480626"
+    },
+    {
+      "index": 254760,
+      "liquidityNet": "3947583931017",
+      "liquidityGross": "3947583931017"
+    },
+    {
+      "index": 254770,
+      "liquidityNet": "117553176290891",
+      "liquidityGross": "117553176290891"
+    },
+    {
+      "index": 254820,
+      "liquidityNet": "310322188067462",
+      "liquidityGross": "310322188067462"
+    },
+    {
+      "index": 254830,
+      "liquidityNet": "217571916555317",
+      "liquidityGross": "217571916555317"
+    },
+    {
+      "index": 254890,
+      "liquidityNet": "279622465775265",
+      "liquidityGross": "279622465775265"
+    },
+    {
+      "index": 254920,
+      "liquidityNet": "3586811234847210",
+      "liquidityGross": "3586811234847210"
+    },
+    {
+      "index": 254950,
+      "liquidityNet": "226553301601269",
+      "liquidityGross": "226553301601269"
+    },
+    {
+      "index": 254960,
+      "liquidityNet": "53144583811461",
+      "liquidityGross": "53144583811461"
+    },
+    {
+      "index": 255000,
+      "liquidityNet": "5899541765732762",
+      "liquidityGross": "5899541765732762"
+    },
+    {
+      "index": 255010,
+      "liquidityNet": "16826281150105",
+      "liquidityGross": "16826281150105"
+    },
+    {
+      "index": 255040,
+      "liquidityNet": "22002172327564",
+      "liquidityGross": "22002172327564"
+    },
+    {
+      "index": 255110,
+      "liquidityNet": "2204669991764499",
+      "liquidityGross": "2204669991764499"
+    },
+    {
+      "index": 255120,
+      "liquidityNet": "7083895520045797",
+      "liquidityGross": "7083895520045797"
+    },
+    {
+      "index": 255160,
+      "liquidityNet": "3198752033295608",
+      "liquidityGross": "3198752033295608"
+    },
+    {
+      "index": 255240,
+      "liquidityNet": "152718662945078",
+      "liquidityGross": "152718662945078"
+    },
+    {
+      "index": 255280,
+      "liquidityNet": "49318025908039599",
+      "liquidityGross": "49318025908039599"
+    },
+    {
+      "index": 255300,
+      "liquidityNet": "37793023153477",
+      "liquidityGross": "37793023153477"
+    },
+    {
+      "index": 255310,
+      "liquidityNet": "51550371822080",
+      "liquidityGross": "51550371822080"
+    },
+    {
+      "index": 255330,
+      "liquidityNet": "2922773584734474",
+      "liquidityGross": "2922773584734474"
+    },
+    {
+      "index": 255350,
+      "liquidityNet": "738944470157195",
+      "liquidityGross": "738944470157195"
+    },
+    {
+      "index": 255370,
+      "liquidityNet": "1229035184737052",
+      "liquidityGross": "1229035184737052"
+    },
+    {
+      "index": 255400,
+      "liquidityNet": "464876343308550",
+      "liquidityGross": "464876343308550"
+    },
+    {
+      "index": 255410,
+      "liquidityNet": "1005150128893540",
+      "liquidityGross": "1005150128893540"
+    },
+    {
+      "index": 255430,
+      "liquidityNet": "94202167566907069",
+      "liquidityGross": "94202167566907069"
+    },
+    {
+      "index": 255440,
+      "liquidityNet": "881307707085774",
+      "liquidityGross": "881307707085774"
+    },
+    {
+      "index": 255450,
+      "liquidityNet": "199411079473707",
+      "liquidityGross": "199411079473707"
+    },
+    {
+      "index": 255480,
+      "liquidityNet": "251822584869531",
+      "liquidityGross": "251822584869531"
+    },
+    {
+      "index": 255510,
+      "liquidityNet": "4319985515594871",
+      "liquidityGross": "4319985515594871"
+    },
+    {
+      "index": 255520,
+      "liquidityNet": "3261910357169576",
+      "liquidityGross": "3261910357169576"
+    },
+    {
+      "index": 255530,
+      "liquidityNet": "20975311392969109",
+      "liquidityGross": "20975311392969109"
+    },
+    {
+      "index": 255550,
+      "liquidityNet": "1360550388436718",
+      "liquidityGross": "1360550388436718"
+    },
+    {
+      "index": 255570,
+      "liquidityNet": "-7888111632970589",
+      "liquidityGross": "7888111632970589"
+    },
+    {
+      "index": 255620,
+      "liquidityNet": "148832216036523",
+      "liquidityGross": "148832216036523"
+    },
+    {
+      "index": 255640,
+      "liquidityNet": "18161352052931",
+      "liquidityGross": "18161352052931"
+    },
+    {
+      "index": 255650,
+      "liquidityNet": "1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 255660,
+      "liquidityNet": "141825904229027",
+      "liquidityGross": "141825904229027"
+    },
+    {
+      "index": 255680,
+      "liquidityNet": "39596391661654417",
+      "liquidityGross": "39596391661654417"
+    },
+    {
+      "index": 255690,
+      "liquidityNet": "397375342851839",
+      "liquidityGross": "397375342851839"
+    },
+    {
+      "index": 255700,
+      "liquidityNet": "1334392419921032",
+      "liquidityGross": "1334392419921032"
+    },
+    {
+      "index": 255730,
+      "liquidityNet": "1132544970801258",
+      "liquidityGross": "1132544970801258"
+    },
+    {
+      "index": 255760,
+      "liquidityNet": "4362722637019164",
+      "liquidityGross": "4362722637019164"
+    },
+    {
+      "index": 255770,
+      "liquidityNet": "546469313563226",
+      "liquidityGross": "546469313563226"
+    },
+    {
+      "index": 255780,
+      "liquidityNet": "692478283926826",
+      "liquidityGross": "692478283926826"
+    },
+    {
+      "index": 255810,
+      "liquidityNet": "2409961570874714",
+      "liquidityGross": "2409961570874714"
+    },
+    {
+      "index": 255820,
+      "liquidityNet": "1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 255830,
+      "liquidityNet": "1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 255840,
+      "liquidityNet": "25309802964753",
+      "liquidityGross": "25309802964753"
+    },
+    {
+      "index": 255850,
+      "liquidityNet": "444771011577738",
+      "liquidityGross": "444771011577738"
+    },
+    {
+      "index": 255880,
+      "liquidityNet": "74601986452658",
+      "liquidityGross": "74601986452658"
+    },
+    {
+      "index": 255890,
+      "liquidityNet": "228706533182318",
+      "liquidityGross": "228706533182318"
+    },
+    {
+      "index": 255900,
+      "liquidityNet": "62713816962200415",
+      "liquidityGross": "62713816962200415"
+    },
+    {
+      "index": 255910,
+      "liquidityNet": "411326521390328",
+      "liquidityGross": "411326521390328"
+    },
+    {
+      "index": 255920,
+      "liquidityNet": "8260025087546956",
+      "liquidityGross": "8260025087546956"
+    },
+    {
+      "index": 255930,
+      "liquidityNet": "741887869145218",
+      "liquidityGross": "741887869145218"
+    },
+    {
+      "index": 255940,
+      "liquidityNet": "26311702641365",
+      "liquidityGross": "26311702641365"
+    },
+    {
+      "index": 255950,
+      "liquidityNet": "405563508649790",
+      "liquidityGross": "405563508649792"
+    },
+    {
+      "index": 255960,
+      "liquidityNet": "940033433435518",
+      "liquidityGross": "940033433435518"
+    },
+    {
+      "index": 255970,
+      "liquidityNet": "3506523244610501",
+      "liquidityGross": "3506523244610501"
+    },
+    {
+      "index": 255980,
+      "liquidityNet": "1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 255990,
+      "liquidityNet": "-3169292100715",
+      "liquidityGross": "3169292100715"
+    },
+    {
+      "index": 256010,
+      "liquidityNet": "131681300177291",
+      "liquidityGross": "131681300177291"
+    },
+    {
+      "index": 256020,
+      "liquidityNet": "2438625614465785",
+      "liquidityGross": "2438625614465785"
+    },
+    {
+      "index": 256030,
+      "liquidityNet": "16234391830609",
+      "liquidityGross": "16234391830609"
+    },
+    {
+      "index": 256040,
+      "liquidityNet": "4273386319412115",
+      "liquidityGross": "4273386319412115"
+    },
+    {
+      "index": 256050,
+      "liquidityNet": "300995813430520",
+      "liquidityGross": "300995813430520"
+    },
+    {
+      "index": 256060,
+      "liquidityNet": "3372008639399102",
+      "liquidityGross": "3372008639399102"
+    },
+    {
+      "index": 256070,
+      "liquidityNet": "630187679540372",
+      "liquidityGross": "630187679540372"
+    },
+    {
+      "index": 256100,
+      "liquidityNet": "108851362226092",
+      "liquidityGross": "108851362226092"
+    },
+    {
+      "index": 256110,
+      "liquidityNet": "40457672901265",
+      "liquidityGross": "40457672901265"
+    },
+    {
+      "index": 256120,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 256130,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 256150,
+      "liquidityNet": "384107834423169",
+      "liquidityGross": "384107834423169"
+    },
+    {
+      "index": 256160,
+      "liquidityNet": "1218344338062532",
+      "liquidityGross": "1218344338062532"
+    },
+    {
+      "index": 256170,
+      "liquidityNet": "18859495664693177",
+      "liquidityGross": "18859495664884701"
+    },
+    {
+      "index": 256180,
+      "liquidityNet": "55813372710388161",
+      "liquidityGross": "55813372710388161"
+    },
+    {
+      "index": 256190,
+      "liquidityNet": "18196954242141",
+      "liquidityGross": "18196954242141"
+    },
+    {
+      "index": 256200,
+      "liquidityNet": "13534141150702655",
+      "liquidityGross": "13534141150702655"
+    },
+    {
+      "index": 256210,
+      "liquidityNet": "50418243111595",
+      "liquidityGross": "50418243111595"
+    },
+    {
+      "index": 256220,
+      "liquidityNet": "417271533942167",
+      "liquidityGross": "418722298231237"
+    },
+    {
+      "index": 256230,
+      "liquidityNet": "557882312268524",
+      "liquidityGross": "557882312268524"
+    },
+    {
+      "index": 256250,
+      "liquidityNet": "-853967618391",
+      "liquidityGross": "853967618391"
+    },
+    {
+      "index": 256280,
+      "liquidityNet": "-131681300177292",
+      "liquidityGross": "131681300177292"
+    },
+    {
+      "index": 256290,
+      "liquidityNet": "17850016950990",
+      "liquidityGross": "17850016950990"
+    },
+    {
+      "index": 256300,
+      "liquidityNet": "440236401143561",
+      "liquidityGross": "440236401143561"
+    },
+    {
+      "index": 256310,
+      "liquidityNet": "2679396811082892",
+      "liquidityGross": "2793775308801084"
+    },
+    {
+      "index": 256320,
+      "liquidityNet": "61098641397",
+      "liquidityGross": "61098641397"
+    },
+    {
+      "index": 256340,
+      "liquidityNet": "647986986425",
+      "liquidityGross": "647986986425"
+    },
+    {
+      "index": 256350,
+      "liquidityNet": "22989061530213250",
+      "liquidityGross": "22989061530213250"
+    },
+    {
+      "index": 256360,
+      "liquidityNet": "472032817713937",
+      "liquidityGross": "473450988969581"
+    },
+    {
+      "index": 256370,
+      "liquidityNet": "113174253475882",
+      "liquidityGross": "114291977066088"
+    },
+    {
+      "index": 256380,
+      "liquidityNet": "2607313109536234",
+      "liquidityGross": "2607313109536234"
+    },
+    {
+      "index": 256390,
+      "liquidityNet": "354779799305960",
+      "liquidityGross": "354779799305960"
+    },
+    {
+      "index": 256420,
+      "liquidityNet": "802071962152",
+      "liquidityGross": "802071962152"
+    },
+    {
+      "index": 256430,
+      "liquidityNet": "-1357467838729256",
+      "liquidityGross": "1363632938144180"
+    },
+    {
+      "index": 256440,
+      "liquidityNet": "20317769249956724",
+      "liquidityGross": "20317769249956724"
+    },
+    {
+      "index": 256450,
+      "liquidityNet": "127025554683157",
+      "liquidityGross": "127025554683157"
+    },
+    {
+      "index": 256460,
+      "liquidityNet": "3521296354868259",
+      "liquidityGross": "3524582562836751"
+    },
+    {
+      "index": 256470,
+      "liquidityNet": "-3082549707462",
+      "liquidityGross": "3082549707462"
+    },
+    {
+      "index": 256480,
+      "liquidityNet": "26634871825365",
+      "liquidityGross": "128515939988971"
+    },
+    {
+      "index": 256490,
+      "liquidityNet": "1230338273459993",
+      "liquidityGross": "1230338273459995"
+    },
+    {
+      "index": 256500,
+      "liquidityNet": "525713088799",
+      "liquidityGross": "2717855592629"
+    },
+    {
+      "index": 256510,
+      "liquidityNet": "-1142903739461809",
+      "liquidityGross": "1142903739461811"
+    },
+    {
+      "index": 256520,
+      "liquidityNet": "960908223130",
+      "liquidityGross": "960908223130"
+    },
+    {
+      "index": 256530,
+      "liquidityNet": "34277420539393",
+      "liquidityGross": "34277420539393"
+    },
+    {
+      "index": 256540,
+      "liquidityNet": "-658004154385535",
+      "liquidityGross": "661279115595383"
+    },
+    {
+      "index": 256550,
+      "liquidityNet": "135986025366262",
+      "liquidityGross": "135986025366262"
+    },
+    {
+      "index": 256560,
+      "liquidityNet": "2436369304717338",
+      "liquidityGross": "2439644265927186"
+    },
+    {
+      "index": 256570,
+      "liquidityNet": "66570621643263",
+      "liquidityGross": "66570621643263"
+    },
+    {
+      "index": 256580,
+      "liquidityNet": "4888562827840175",
+      "liquidityGross": "5010980936644593"
+    },
+    {
+      "index": 256590,
+      "liquidityNet": "3854345769063873",
+      "liquidityGross": "3854345769063873"
+    },
+    {
+      "index": 256610,
+      "liquidityNet": "9908353032958845",
+      "liquidityGross": "9908353032958845"
+    },
+    {
+      "index": 256630,
+      "liquidityNet": "-9624666696118968",
+      "liquidityGross": "10192039369798722"
+    },
+    {
+      "index": 256640,
+      "liquidityNet": "334316531516812",
+      "liquidityGross": "334316531516812"
+    },
+    {
+      "index": 256650,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 256660,
+      "liquidityNet": "6279823321458418",
+      "liquidityGross": "6279823321458418"
+    },
+    {
+      "index": 256680,
+      "liquidityNet": "2564009052681516",
+      "liquidityGross": "2564009052681516"
+    },
+    {
+      "index": 256690,
+      "liquidityNet": "433091452634622",
+      "liquidityGross": "433091452634622"
+    },
+    {
+      "index": 256700,
+      "liquidityNet": "1888137334101134",
+      "liquidityGross": "1888137334101134"
+    },
+    {
+      "index": 256710,
+      "liquidityNet": "144388652319173",
+      "liquidityGross": "144388652319173"
+    },
+    {
+      "index": 256720,
+      "liquidityNet": "5503381503416204",
+      "liquidityGross": "5503381503416204"
+    },
+    {
+      "index": 256730,
+      "liquidityNet": "14247281780568942",
+      "liquidityGross": "19193087850579298"
+    },
+    {
+      "index": 256740,
+      "liquidityNet": "546975194798",
+      "liquidityGross": "546975194798"
+    },
+    {
+      "index": 256750,
+      "liquidityNet": "7463411496055906",
+      "liquidityGross": "7463411496055906"
+    },
+    {
+      "index": 256760,
+      "liquidityNet": "3694475896795",
+      "liquidityGross": "4788426286391"
+    },
+    {
+      "index": 256770,
+      "liquidityNet": "-20221769827989845",
+      "liquidityGross": "20225307708177965"
+    },
+    {
+      "index": 256780,
+      "liquidityNet": "954317142204891",
+      "liquidityGross": "954472852908489"
+    },
+    {
+      "index": 256790,
+      "liquidityNet": "-1007097594626",
+      "liquidityGross": "2530782593494"
+    },
+    {
+      "index": 256800,
+      "liquidityNet": "128224455454555288",
+      "liquidityGross": "128232782646034874"
+    },
+    {
+      "index": 256810,
+      "liquidityNet": "-761842499435",
+      "liquidityGross": "761842499435"
+    },
+    {
+      "index": 256820,
+      "liquidityNet": "423487248746917",
+      "liquidityGross": "423487248746917"
+    },
+    {
+      "index": 256840,
+      "liquidityNet": "576055827486643",
+      "liquidityGross": "1978063817737999"
+    },
+    {
+      "index": 256860,
+      "liquidityNet": "-2631812084169630",
+      "liquidityGross": "3912648381968660"
+    },
+    {
+      "index": 256870,
+      "liquidityNet": "11656459327241600",
+      "liquidityGross": "11656459327241600"
+    },
+    {
+      "index": 256890,
+      "liquidityNet": "3610599946195771",
+      "liquidityGross": "3610874438705577"
+    },
+    {
+      "index": 256910,
+      "liquidityNet": "676724357555048",
+      "liquidityGross": "1212704676888872"
+    },
+    {
+      "index": 256920,
+      "liquidityNet": "-1334392419921032",
+      "liquidityGross": "1334392419921032"
+    },
+    {
+      "index": 256930,
+      "liquidityNet": "50287373709808",
+      "liquidityGross": "50287373709810"
+    },
+    {
+      "index": 256940,
+      "liquidityNet": "-18196954242140",
+      "liquidityGross": "18196954242140"
+    },
+    {
+      "index": 256950,
+      "liquidityNet": "-14076515130866",
+      "liquidityGross": "14076515130870"
+    },
+    {
+      "index": 256960,
+      "liquidityNet": "19864414030613238",
+      "liquidityGross": "19864414030613240"
+    },
+    {
+      "index": 256980,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 257000,
+      "liquidityNet": "587510196837759",
+      "liquidityGross": "587510196837759"
+    },
+    {
+      "index": 257010,
+      "liquidityNet": "1080858147399182",
+      "liquidityGross": "1080858147399184"
+    },
+    {
+      "index": 257030,
+      "liquidityNet": "3779681542896236",
+      "liquidityGross": "4146681932727138"
+    },
+    {
+      "index": 257040,
+      "liquidityNet": "-3",
+      "liquidityGross": "3"
+    },
+    {
+      "index": 257060,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 257070,
+      "liquidityNet": "507531623433092",
+      "liquidityGross": "507531623433092"
+    },
+    {
+      "index": 257080,
+      "liquidityNet": "-3450322689572848",
+      "liquidityGross": "3450322689572850"
+    },
+    {
+      "index": 257090,
+      "liquidityNet": "11883197700034",
+      "liquidityGross": "11883197700034"
+    },
+    {
+      "index": 257100,
+      "liquidityNet": "5408932156674946",
+      "liquidityGross": "5408932156674946"
+    },
+    {
+      "index": 257150,
+      "liquidityNet": "-2086148264437669",
+      "liquidityGross": "2328858611484613"
+    },
+    {
+      "index": 257160,
+      "liquidityNet": "-2806680139570690",
+      "liquidityGross": "2806680139570690"
+    },
+    {
+      "index": 257170,
+      "liquidityNet": "928934731103753",
+      "liquidityGross": "928934731103755"
+    },
+    {
+      "index": 257180,
+      "liquidityNet": "25124005709298",
+      "liquidityGross": "25124005709298"
+    },
+    {
+      "index": 257190,
+      "liquidityNet": "-582775739122747",
+      "liquidityGross": "27096411647307143"
+    },
+    {
+      "index": 257210,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 257220,
+      "liquidityNet": "1523161135104723",
+      "liquidityGross": "1523161135104723"
+    },
+    {
+      "index": 257230,
+      "liquidityNet": "9504188932590772",
+      "liquidityGross": "9504188932590772"
+    },
+    {
+      "index": 257240,
+      "liquidityNet": "1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 257250,
+      "liquidityNet": "151265875586781",
+      "liquidityGross": "151265875586781"
+    },
+    {
+      "index": 257270,
+      "liquidityNet": "-3",
+      "liquidityGross": "3"
+    },
+    {
+      "index": 257280,
+      "liquidityNet": "1",
+      "liquidityGross": "3"
+    },
+    {
+      "index": 257300,
+      "liquidityNet": "2053503917458592",
+      "liquidityGross": "3363672341731564"
+    },
+    {
+      "index": 257310,
+      "liquidityNet": "3794632466737882",
+      "liquidityGross": "17413610918230446"
+    },
+    {
+      "index": 257320,
+      "liquidityNet": "-50097325298575656",
+      "liquidityGross": "50097325298575656"
+    },
+    {
+      "index": 257350,
+      "liquidityNet": "-1039904414655314",
+      "liquidityGross": "1088949186754570"
+    },
+    {
+      "index": 257360,
+      "liquidityNet": "-5408932156674946",
+      "liquidityGross": "5408932156674946"
+    },
+    {
+      "index": 257370,
+      "liquidityNet": "-2",
+      "liquidityGross": "2"
+    },
+    {
+      "index": 257390,
+      "liquidityNet": "-3",
+      "liquidityGross": "3"
+    },
+    {
+      "index": 257400,
+      "liquidityNet": "1331424213380",
+      "liquidityGross": "1331424213380"
+    },
+    {
+      "index": 257410,
+      "liquidityNet": "2",
+      "liquidityGross": "2"
+    },
+    {
+      "index": 257430,
+      "liquidityNet": "147278496275463",
+      "liquidityGross": "147278496275463"
+    },
+    {
+      "index": 257440,
+      "liquidityNet": "-38552596301782742",
+      "liquidityGross": "38552596301782742"
+    },
+    {
+      "index": 257450,
+      "liquidityNet": "-25138211116821658",
+      "liquidityGross": "25138211116821658"
+    },
+    {
+      "index": 257480,
+      "liquidityNet": "452903980527343",
+      "liquidityGross": "463186897166229"
+    },
+    {
+      "index": 257490,
+      "liquidityNet": "47517948762038",
+      "liquidityGross": "50595935638802"
+    },
+    {
+      "index": 257500,
+      "liquidityNet": "-2",
+      "liquidityGross": "2"
+    },
+    {
+      "index": 257530,
+      "liquidityNet": "-1331424213378",
+      "liquidityGross": "1331424213380"
+    },
+    {
+      "index": 257540,
+      "liquidityNet": "-853638476425252",
+      "liquidityGross": "853638476425252"
+    },
+    {
+      "index": 257550,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 257570,
+      "liquidityNet": "-13512571574961291",
+      "liquidityGross": "13512571574961291"
+    },
+    {
+      "index": 257580,
+      "liquidityNet": "2980850590299638",
+      "liquidityGross": "3155719658296006"
+    },
+    {
+      "index": 257590,
+      "liquidityNet": "145334086986018549",
+      "liquidityGross": "145334086986018549"
+    },
+    {
+      "index": 257600,
+      "liquidityNet": "-2010197959332577",
+      "liquidityGross": "6899883595210597"
+    },
+    {
+      "index": 257610,
+      "liquidityNet": "8148831496282066",
+      "liquidityGross": "17893254431537622"
+    },
+    {
+      "index": 257620,
+      "liquidityNet": "-13249462662741155",
+      "liquidityGross": "13264173245443237"
+    },
+    {
+      "index": 257630,
+      "liquidityNet": "-2437815501808681",
+      "liquidityGross": "2437815501808681"
+    },
+    {
+      "index": 257640,
+      "liquidityNet": "-2048158260517804",
+      "liquidityGross": "20521217004305232"
+    },
+    {
+      "index": 257670,
+      "liquidityNet": "119809609337162479",
+      "liquidityGross": "119809609337162479"
+    },
+    {
+      "index": 257680,
+      "liquidityNet": "-4111517370181658",
+      "liquidityGross": "4721311388437876"
+    },
+    {
+      "index": 257690,
+      "liquidityNet": "842535468687275",
+      "liquidityGross": "842535468687275"
+    },
+    {
+      "index": 257700,
+      "liquidityNet": "1855950749632235",
+      "liquidityGross": "1855950749632235"
+    },
+    {
+      "index": 257710,
+      "liquidityNet": "-594630147258563",
+      "liquidityGross": "1192146527408537"
+    },
+    {
+      "index": 257730,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 257760,
+      "liquidityNet": "-2628858760298557",
+      "liquidityGross": "3648507866084577"
+    },
+    {
+      "index": 257770,
+      "liquidityNet": "7000656064027695",
+      "liquidityGross": "8250825663475655"
+    },
+    {
+      "index": 257780,
+      "liquidityNet": "-16826281150105",
+      "liquidityGross": "16826281150105"
+    },
+    {
+      "index": 257800,
+      "liquidityNet": "-37327600995880",
+      "liquidityGross": "37327600995880"
+    },
+    {
+      "index": 257810,
+      "liquidityNet": "-201147459696406710",
+      "liquidityGross": "201147459696406710"
+    },
+    {
+      "index": 257820,
+      "liquidityNet": "-1402055303315486",
+      "liquidityGross": "3007284680213512"
+    },
+    {
+      "index": 257840,
+      "liquidityNet": "103754208219419",
+      "liquidityGross": "115080246359313"
+    },
+    {
+      "index": 257860,
+      "liquidityNet": "34830389906956325",
+      "liquidityGross": "34830389906956325"
+    },
+    {
+      "index": 257870,
+      "liquidityNet": "-783816458643539",
+      "liquidityGross": "783816458643539"
+    },
+    {
+      "index": 257880,
+      "liquidityNet": "-650238557161793",
+      "liquidityGross": "650238557161793"
+    },
+    {
+      "index": 257890,
+      "liquidityNet": "-2011764184735667",
+      "liquidityGross": "2280426843142697"
+    },
+    {
+      "index": 257900,
+      "liquidityNet": "-34830389906956325",
+      "liquidityGross": "34830389906956325"
+    },
+    {
+      "index": 257920,
+      "liquidityNet": "-2504449810937257",
+      "liquidityGross": "2504449810937257"
+    },
+    {
+      "index": 257930,
+      "liquidityNet": "5628282324153760",
+      "liquidityGross": "5896944982560790"
+    },
+    {
+      "index": 257940,
+      "liquidityNet": "-18000434172460491",
+      "liquidityGross": "18000434172460491"
+    },
+    {
+      "index": 257950,
+      "liquidityNet": "-5762613653357275",
+      "liquidityGross": "5762613653357275"
+    },
+    {
+      "index": 257960,
+      "liquidityNet": "-306216469788283",
+      "liquidityGross": "306216469788283"
+    },
+    {
+      "index": 257970,
+      "liquidityNet": "-1226412167947768",
+      "liquidityGross": "1226412167947768"
+    },
+    {
+      "index": 258000,
+      "liquidityNet": "-1053757578769073",
+      "liquidityGross": "1072597889853073"
+    },
+    {
+      "index": 258020,
+      "liquidityNet": "-815142292223342",
+      "liquidityGross": "815142292223342"
+    },
+    {
+      "index": 258030,
+      "liquidityNet": "-144388652319172",
+      "liquidityGross": "144388652319172"
+    },
+    {
+      "index": 258050,
+      "liquidityNet": "-38352544480626",
+      "liquidityGross": "38352544480626"
+    },
+    {
+      "index": 258060,
+      "liquidityNet": "-8964576000683983",
+      "liquidityGross": "8964576000683983"
+    },
+    {
+      "index": 258070,
+      "liquidityNet": "-131327639498373462",
+      "liquidityGross": "131327639498373462"
+    },
+    {
+      "index": 258080,
+      "liquidityNet": "366864186978662",
+      "liquidityGross": "2642732181401772"
+    },
+    {
+      "index": 258090,
+      "liquidityNet": "-2841683255628339",
+      "liquidityGross": "2841683255628339"
+    },
+    {
+      "index": 258120,
+      "liquidityNet": "-141867037866459",
+      "liquidityGross": "141867037866459"
+    },
+    {
+      "index": 258130,
+      "liquidityNet": "-4073673990043884",
+      "liquidityGross": "4076849023173696"
+    },
+    {
+      "index": 258140,
+      "liquidityNet": "-1620971431944876",
+      "liquidityGross": "1620971431944876"
+    },
+    {
+      "index": 258160,
+      "liquidityNet": "-3997405958983357",
+      "liquidityGross": "3997405958983357"
+    },
+    {
+      "index": 258170,
+      "liquidityNet": "-226553301601269",
+      "liquidityGross": "226553301601269"
+    },
+    {
+      "index": 258180,
+      "liquidityNet": "-3296355949356093",
+      "liquidityGross": "3296355949356093"
+    },
+    {
+      "index": 258190,
+      "liquidityNet": "-127864593009529931",
+      "liquidityGross": "127864593009529931"
+    },
+    {
+      "index": 258200,
+      "liquidityNet": "-74601986452658",
+      "liquidityGross": "74601986452658"
+    },
+    {
+      "index": 258210,
+      "liquidityNet": "-568849528956006",
+      "liquidityGross": "568849528956006"
+    },
+    {
+      "index": 258220,
+      "liquidityNet": "-942916005527632",
+      "liquidityGross": "942916005527632"
+    },
+    {
+      "index": 258230,
+      "liquidityNet": "-3713925440634152",
+      "liquidityGross": "3713925440634152"
+    },
+    {
+      "index": 258240,
+      "liquidityNet": "-23770489314300909",
+      "liquidityGross": "23770489314300909"
+    },
+    {
+      "index": 258270,
+      "liquidityNet": "-405563508649791",
+      "liquidityGross": "405563508649791"
+    },
+    {
+      "index": 258310,
+      "liquidityNet": "-3555094754914692",
+      "liquidityGross": "3555094754914692"
+    },
+    {
+      "index": 258330,
+      "liquidityNet": "-9651467428866235",
+      "liquidityGross": "9651467428866235"
+    },
+    {
+      "index": 258350,
+      "liquidityNet": "-640000239328143",
+      "liquidityGross": "640000239328143"
+    },
+    {
+      "index": 258360,
+      "liquidityNet": "-8806204279125809",
+      "liquidityGross": "8806204279125809"
+    },
+    {
+      "index": 258380,
+      "liquidityNet": "-1285401677343270",
+      "liquidityGross": "1285401677343270"
+    },
+    {
+      "index": 258400,
+      "liquidityNet": "-442632521807696",
+      "liquidityGross": "442632521807696"
+    },
+    {
+      "index": 258410,
+      "liquidityNet": "-7874524335963590",
+      "liquidityGross": "12207285541203090"
+    },
+    {
+      "index": 258420,
+      "liquidityNet": "-2094753522705368",
+      "liquidityGross": "2094753522705368"
+    },
+    {
+      "index": 258430,
+      "liquidityNet": "-456506445408404",
+      "liquidityGross": "456506445408404"
+    },
+    {
+      "index": 258440,
+      "liquidityNet": "-1683922395534787",
+      "liquidityGross": "1683922395534787"
+    },
+    {
+      "index": 258460,
+      "liquidityNet": "-195004720341142",
+      "liquidityGross": "195004720341142"
+    },
+    {
+      "index": 258480,
+      "liquidityNet": "768839218752",
+      "liquidityGross": "768839218752"
+    },
+    {
+      "index": 258490,
+      "liquidityNet": "-3465772101262590",
+      "liquidityGross": "3465772101262590"
+    },
+    {
+      "index": 258500,
+      "liquidityNet": "-14717465701519735",
+      "liquidityGross": "14717465701519735"
+    },
+    {
+      "index": 258530,
+      "liquidityNet": "-206256452219011",
+      "liquidityGross": "206256452219011"
+    },
+    {
+      "index": 258540,
+      "liquidityNet": "-9539480205836804",
+      "liquidityGross": "9539480205836804"
+    },
+    {
+      "index": 258550,
+      "liquidityNet": "-1302167168240173",
+      "liquidityGross": "1302167168240173"
+    },
+    {
+      "index": 258570,
+      "liquidityNet": "-825625692107500",
+      "liquidityGross": "825625692107500"
+    },
+    {
+      "index": 258580,
+      "liquidityNet": "-3963181737811687",
+      "liquidityGross": "3963181737811687"
+    },
+    {
+      "index": 258590,
+      "liquidityNet": "-146775297528211",
+      "liquidityGross": "146775297528211"
+    },
+    {
+      "index": 258600,
+      "liquidityNet": "5958621954872012",
+      "liquidityGross": "9034010866120914"
+    },
+    {
+      "index": 258610,
+      "liquidityNet": "-1084652664725433",
+      "liquidityGross": "1145472637166087"
+    },
+    {
+      "index": 258620,
+      "liquidityNet": "-30409986220327",
+      "liquidityGross": "30409986220327"
+    },
+    {
+      "index": 258660,
+      "liquidityNet": "-283432238571189",
+      "liquidityGross": "283432238571189"
+    },
+    {
+      "index": 258740,
+      "liquidityNet": "-1343130381569232",
+      "liquidityGross": "1343130381569232"
+    },
+    {
+      "index": 258750,
+      "liquidityNet": "-416216501323227",
+      "liquidityGross": "416216501323227"
+    },
+    {
+      "index": 258770,
+      "liquidityNet": "-148832216036523",
+      "liquidityGross": "148832216036523"
+    },
+    {
+      "index": 258780,
+      "liquidityNet": "-14680286790870",
+      "liquidityGross": "14680286790870"
+    },
+    {
+      "index": 258800,
+      "liquidityNet": "-757157202708",
+      "liquidityGross": "757157202708"
+    },
+    {
+      "index": 258820,
+      "liquidityNet": "-26311702641365",
+      "liquidityGross": "26311702641365"
+    },
+    {
+      "index": 258840,
+      "liquidityNet": "-34730167379738",
+      "liquidityGross": "34730167379738"
+    },
+    {
+      "index": 258850,
+      "liquidityNet": "-298758190074987",
+      "liquidityGross": "298758190074987"
+    },
+    {
+      "index": 258890,
+      "liquidityNet": "-80580271611060",
+      "liquidityGross": "80580271611060"
+    },
+    {
+      "index": 258900,
+      "liquidityNet": "-928934731103752",
+      "liquidityGross": "928934731103752"
+    },
+    {
+      "index": 258910,
+      "liquidityNet": "-49056942200420",
+      "liquidityGross": "49056942200420"
+    },
+    {
+      "index": 258920,
+      "liquidityNet": "-676306025792097",
+      "liquidityGross": "676306025792097"
+    },
+    {
+      "index": 258940,
+      "liquidityNet": "-1134636202954",
+      "liquidityGross": "1134636202954"
+    },
+    {
+      "index": 258970,
+      "liquidityNet": "-16467678536528",
+      "liquidityGross": "16467678536528"
+    },
+    {
+      "index": 258990,
+      "liquidityNet": "-3522939458852505",
+      "liquidityGross": "3522939458852505"
+    },
+    {
+      "index": 259000,
+      "liquidityNet": "-1173193993457573",
+      "liquidityGross": "1173193993457573"
+    },
+    {
+      "index": 259020,
+      "liquidityNet": "-423487248746917",
+      "liquidityGross": "423487248746917"
+    },
+    {
+      "index": 259090,
+      "liquidityNet": "-1071664212349937",
+      "liquidityGross": "1071664212349937"
+    },
+    {
+      "index": 259100,
+      "liquidityNet": "-1102058232095799",
+      "liquidityGross": "1102058232095799"
+    },
+    {
+      "index": 259110,
+      "liquidityNet": "-57861059662",
+      "liquidityGross": "57861059662"
+    },
+    {
+      "index": 259140,
+      "liquidityNet": "-219128238030659",
+      "liquidityGross": "219128238030659"
+    },
+    {
+      "index": 259150,
+      "liquidityNet": "-397375342851839",
+      "liquidityGross": "397375342851839"
+    },
+    {
+      "index": 259180,
+      "liquidityNet": "-3804213128154222",
+      "liquidityGross": "3804213128154222"
+    },
+    {
+      "index": 259190,
+      "liquidityNet": "-155242837367781",
+      "liquidityGross": "155242837367781"
+    },
+    {
+      "index": 259200,
+      "liquidityNet": "-350452801059998",
+      "liquidityGross": "350452801059998"
+    },
+    {
+      "index": 259210,
+      "liquidityNet": "-2623016789284",
+      "liquidityGross": "2623016789284"
+    },
+    {
+      "index": 259260,
+      "liquidityNet": "-35092627832121",
+      "liquidityGross": "35092627832121"
+    },
+    {
+      "index": 259270,
+      "liquidityNet": "-145829302974915",
+      "liquidityGross": "145829302974915"
+    },
+    {
+      "index": 259280,
+      "liquidityNet": "-2695410030480298",
+      "liquidityGross": "2699422205914388"
+    },
+    {
+      "index": 259380,
+      "liquidityNet": "-369124296880496",
+      "liquidityGross": "369124296880496"
+    },
+    {
+      "index": 259390,
+      "liquidityNet": "-59315967919727",
+      "liquidityGross": "59315967919727"
+    },
+    {
+      "index": 259430,
+      "liquidityNet": "-48393094895676",
+      "liquidityGross": "48393094895676"
+    },
+    {
+      "index": 259440,
+      "liquidityNet": "-50363917828635",
+      "liquidityGross": "50363917828635"
+    },
+    {
+      "index": 259450,
+      "liquidityNet": "-2604794081046272",
+      "liquidityGross": "2604794081046272"
+    },
+    {
+      "index": 259480,
+      "liquidityNet": "-7496609851135442",
+      "liquidityGross": "7496609851135442"
+    },
+    {
+      "index": 259490,
+      "liquidityNet": "-2163977039146404",
+      "liquidityGross": "2163977039146404"
+    },
+    {
+      "index": 259560,
+      "liquidityNet": "-58238265387169",
+      "liquidityGross": "58238265387169"
+    },
+    {
+      "index": 259610,
+      "liquidityNet": "-1632498622159117",
+      "liquidityGross": "1632498622159117"
+    },
+    {
+      "index": 259650,
+      "liquidityNet": "-40457672901265",
+      "liquidityGross": "40457672901265"
+    },
+    {
+      "index": 259690,
+      "liquidityNet": "-2243687642595",
+      "liquidityGross": "2243687642595"
+    },
+    {
+      "index": 259720,
+      "liquidityNet": "-592714629442",
+      "liquidityGross": "592714629442"
+    },
+    {
+      "index": 259740,
+      "liquidityNet": "-353326302452796",
+      "liquidityGross": "353326302452796"
+    },
+    {
+      "index": 259750,
+      "liquidityNet": "-466865518734830",
+      "liquidityGross": "466865518734830"
+    },
+    {
+      "index": 259770,
+      "liquidityNet": "208110549697626119",
+      "liquidityGross": "208110549697626119"
+    },
+    {
+      "index": 259790,
+      "liquidityNet": "-208110549697626119",
+      "liquidityGross": "208110549697626119"
+    },
+    {
+      "index": 259800,
+      "liquidityNet": "-4440107540577",
+      "liquidityGross": "4440107540577"
+    },
+    {
+      "index": 259910,
+      "liquidityNet": "-25309802964753",
+      "liquidityGross": "25309802964753"
+    },
+    {
+      "index": 259920,
+      "liquidityNet": "-768839218752",
+      "liquidityGross": "768839218752"
+    },
+    {
+      "index": 259950,
+      "liquidityNet": "-324883679031428",
+      "liquidityGross": "324883679031428"
+    },
+    {
+      "index": 260010,
+      "liquidityNet": "-231063939105984",
+      "liquidityGross": "231063939105984"
+    },
+    {
+      "index": 260040,
+      "liquidityNet": "-424479956248054",
+      "liquidityGross": "424479956248054"
+    },
+    {
+      "index": 260050,
+      "liquidityNet": "-187765549328961",
+      "liquidityGross": "187765549328961"
+    },
+    {
+      "index": 260090,
+      "liquidityNet": "-2610400916971",
+      "liquidityGross": "2610400916971"
+    },
+    {
+      "index": 260110,
+      "liquidityNet": "-61979298222559",
+      "liquidityGross": "61979298222559"
+    },
+    {
+      "index": 260190,
+      "liquidityNet": "-211291269776860",
+      "liquidityGross": "211291269776860"
+    },
+    {
+      "index": 260210,
+      "liquidityNet": "-113733115270985",
+      "liquidityGross": "113733115270985"
+    },
+    {
+      "index": 260220,
+      "liquidityNet": "-722687650975921",
+      "liquidityGross": "722687650975921"
+    },
+    {
+      "index": 260230,
+      "liquidityNet": "-2627029710083535",
+      "liquidityGross": "2627029710083535"
+    },
+    {
+      "index": 260260,
+      "liquidityNet": "-40940983853357",
+      "liquidityGross": "40940983853357"
+    },
+    {
+      "index": 260290,
+      "liquidityNet": "-5223947365686108",
+      "liquidityGross": "5223947365686108"
+    },
+    {
+      "index": 260330,
+      "liquidityNet": "-32598290760709367",
+      "liquidityGross": "32598290760709367"
+    },
+    {
+      "index": 260350,
+      "liquidityNet": "-59858786013015",
+      "liquidityGross": "59858786013015"
+    },
+    {
+      "index": 260450,
+      "liquidityNet": "-326205436478",
+      "liquidityGross": "326205436478"
+    },
+    {
+      "index": 260480,
+      "liquidityNet": "-219391084753798",
+      "liquidityGross": "219391084753798"
+    },
+    {
+      "index": 260600,
+      "liquidityNet": "-3947583931017",
+      "liquidityGross": "3947583931017"
+    },
+    {
+      "index": 260620,
+      "liquidityNet": "-81173269308553",
+      "liquidityGross": "81173269308553"
+    },
+    {
+      "index": 260640,
+      "liquidityNet": "-1639726809736885",
+      "liquidityGross": "1639726809736885"
+    },
+    {
+      "index": 260690,
+      "liquidityNet": "-4120878160523",
+      "liquidityGross": "4120878160523"
+    },
+    {
+      "index": 260720,
+      "liquidityNet": "-1023157659442345",
+      "liquidityGross": "1023157659442345"
+    },
+    {
+      "index": 260780,
+      "liquidityNet": "-3585054762761678",
+      "liquidityGross": "3585054762761678"
+    },
+    {
+      "index": 260850,
+      "liquidityNet": "-10232814247481",
+      "liquidityGross": "10232814247481"
+    },
+    {
+      "index": 261060,
+      "liquidityNet": "-98738615436287",
+      "liquidityGross": "98738615436287"
+    },
+    {
+      "index": 261180,
+      "liquidityNet": "-16191722699732742",
+      "liquidityGross": "16191722699732742"
+    },
+    {
+      "index": 261280,
+      "liquidityNet": "-61603876806197702",
+      "liquidityGross": "61603876806197702"
+    },
+    {
+      "index": 261320,
+      "liquidityNet": "-516891076204797",
+      "liquidityGross": "516891076204797"
+    },
+    {
+      "index": 261330,
+      "liquidityNet": "-235345257558924",
+      "liquidityGross": "235345257558924"
+    },
+    {
+      "index": 261410,
+      "liquidityNet": "-107896618744904",
+      "liquidityGross": "107896618744904"
+    },
+    {
+      "index": 261610,
+      "liquidityNet": "-12737610725338655",
+      "liquidityGross": "12737610725338655"
+    },
+    {
+      "index": 261990,
+      "liquidityNet": "-256525225767907",
+      "liquidityGross": "256525225767907"
+    },
+    {
+      "index": 262380,
+      "liquidityNet": "-22988502668418146",
+      "liquidityGross": "22988502668418146"
+    },
+    {
+      "index": 262400,
+      "liquidityNet": "-97761352490590",
+      "liquidityGross": "97761352490590"
+    },
+    {
+      "index": 262440,
+      "liquidityNet": "-130592903650914",
+      "liquidityGross": "130592903650914"
+    },
+    {
+      "index": 262460,
+      "liquidityNet": "349162763200817858",
+      "liquidityGross": "351033608274550316"
+    },
+    {
+      "index": 262470,
+      "liquidityNet": "-350098185737684087",
+      "liquidityGross": "350098185737684087"
+    },
+    {
+      "index": 262530,
+      "liquidityNet": "-31659728094717",
+      "liquidityGross": "31659728094717"
+    },
+    {
+      "index": 262540,
+      "liquidityNet": "-63221035055583",
+      "liquidityGross": "63221035055583"
+    },
+    {
+      "index": 262640,
+      "liquidityNet": "-4921998104334",
+      "liquidityGross": "4921998104334"
+    },
+    {
+      "index": 262710,
+      "liquidityNet": "-2077024408266605",
+      "liquidityGross": "2077024408266605"
+    },
+    {
+      "index": 262930,
+      "liquidityNet": "-48874223268985470",
+      "liquidityGross": "48874223268985470"
+    },
+    {
+      "index": 263700,
+      "liquidityNet": "-38055467418",
+      "liquidityGross": "38055467418"
+    },
+    {
+      "index": 263740,
+      "liquidityNet": "-4526103731726",
+      "liquidityGross": "4526103731726"
+    },
+    {
+      "index": 263800,
+      "liquidityNet": "-1059261560094696",
+      "liquidityGross": "1059261560094696"
+    },
+    {
+      "index": 264080,
+      "liquidityNet": "-128984420745461",
+      "liquidityGross": "128984420745461"
+    },
+    {
+      "index": 264190,
+      "liquidityNet": "-73845824035243",
+      "liquidityGross": "73845824035243"
+    },
+    {
+      "index": 264350,
+      "liquidityNet": "-38497172711073",
+      "liquidityGross": "38497172711073"
+    },
+    {
+      "index": 264560,
+      "liquidityNet": "-25033965501780",
+      "liquidityGross": "25033965501780"
+    },
+    {
+      "index": 264960,
+      "liquidityNet": "-13019893733490",
+      "liquidityGross": "13019893733490"
+    },
+    {
+      "index": 265340,
+      "liquidityNet": "-6685606330642",
+      "liquidityGross": "6685606330642"
+    },
+    {
+      "index": 267160,
+      "liquidityNet": "-2894939484824",
+      "liquidityGross": "2894939484824"
+    },
+    {
+      "index": 268440,
+      "liquidityNet": "-5361639205879",
+      "liquidityGross": "5361639205879"
+    },
+    {
+      "index": 268630,
+      "liquidityNet": "-654529406430549",
+      "liquidityGross": "654529406430549"
+    },
+    {
+      "index": 269390,
+      "liquidityNet": "-1367005886229",
+      "liquidityGross": "1367005886229"
+    },
+    {
+      "index": 270750,
+      "liquidityNet": "-273080104450",
+      "liquidityGross": "273080104450"
+    },
+    {
+      "index": 271620,
+      "liquidityNet": "-5186684189459",
+      "liquidityGross": "5186684189459"
+    },
+    {
+      "index": 276320,
+      "liquidityNet": "-1438020467859",
+      "liquidityGross": "1438020467859"
+    },
+    {
+      "index": 290200,
+      "liquidityNet": "-665468090275",
+      "liquidityGross": "665468090275"
+    },
+    {
+      "index": 345400,
+      "liquidityNet": "-196567876601",
+      "liquidityGross": "196567876601"
+    },
+    {
+      "index": 368430,
+      "liquidityNet": "-6783676710783",
+      "liquidityGross": "6783676710783"
+    },
+    {
+      "index": 887270,
+      "liquidityNet": "-33543160647327",
+      "liquidityGross": "33543160647327"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "1016807353",
+      "exactInput": true,
+      "expectedAmountCalculated": "161662224770072974662"
+    },
+    {
+      "amountSpecified": "11799711238",
+      "exactInput": true,
+      "expectedAmountCalculated": "1864077066142783291826"
+    },
+    {
+      "amountSpecified": "24592402127",
+      "exactInput": true,
+      "expectedAmountCalculated": "3859395592281420800645"
+    },
+    {
+      "amountSpecified": "100911685702",
+      "exactInput": true,
+      "expectedAmountCalculated": "15203936280834403516965"
+    },
+    {
+      "amountSpecified": "86298763234",
+      "exactInput": true,
+      "expectedAmountCalculated": "13103912516624796012390"
+    },
+    {
+      "amountSpecified": "15339445176",
+      "exactInput": true,
+      "expectedAmountCalculated": "2418530859483789160519"
+    },
+    {
+      "amountSpecified": "90514957013",
+      "exactInput": true,
+      "expectedAmountCalculated": "13713221718780507913638"
+    },
+    {
+      "amountSpecified": "79901233579",
+      "exactInput": true,
+      "expectedAmountCalculated": "12174157476376412337091"
+    },
+    {
+      "amountSpecified": "43280791457",
+      "exactInput": true,
+      "expectedAmountCalculated": "6728225954202619077993"
+    },
+    {
+      "amountSpecified": "52190862765",
+      "exactInput": true,
+      "expectedAmountCalculated": "8073441104706396266574"
+    },
+    {
+      "amountSpecified": "111067390519",
+      "exactInput": true,
+      "expectedAmountCalculated": "16643231044408564034126"
+    },
+    {
+      "amountSpecified": "84099356339",
+      "exactInput": true,
+      "expectedAmountCalculated": "12784980346668631832252"
+    },
+    {
+      "amountSpecified": "16588762913",
+      "exactInput": true,
+      "expectedAmountCalculated": "2613790823165450218125"
+    },
+    {
+      "amountSpecified": "26832703514",
+      "exactInput": true,
+      "expectedAmountCalculated": "4206415843904747373020"
+    },
+    {
+      "amountSpecified": "741070847",
+      "exactInput": true,
+      "expectedAmountCalculated": "117842619510766209575"
+    },
+    {
+      "amountSpecified": "13426641857",
+      "exactInput": true,
+      "expectedAmountCalculated": "2119138372508770190141"
+    },
+    {
+      "amountSpecified": "22120007837",
+      "exactInput": true,
+      "expectedAmountCalculated": "3475594442270127323723"
+    },
+    {
+      "amountSpecified": "37656807170",
+      "exactInput": true,
+      "expectedAmountCalculated": "5871562317507718961025"
+    },
+    {
+      "amountSpecified": "50384427779",
+      "exactInput": true,
+      "expectedAmountCalculated": "7801825210571010011283"
+    },
+    {
+      "amountSpecified": "73064535046",
+      "exactInput": true,
+      "expectedAmountCalculated": "11173606131087788467779"
+    },
+    {
+      "amountSpecified": "71084688984",
+      "exactInput": true,
+      "expectedAmountCalculated": "10882503061389549728144"
+    },
+    {
+      "amountSpecified": "13893112941",
+      "exactInput": true,
+      "expectedAmountCalculated": "2192198969582442160548"
+    },
+    {
+      "amountSpecified": "34781842629",
+      "exactInput": true,
+      "expectedAmountCalculated": "5431277640194034376952"
+    },
+    {
+      "amountSpecified": "15350990955",
+      "exactInput": true,
+      "expectedAmountCalculated": "2420336414463629560512"
+    },
+    {
+      "amountSpecified": "64008883142",
+      "exactInput": true,
+      "expectedAmountCalculated": "9837097971513208967358"
+    },
+    {
+      "amountSpecified": "68476930052",
+      "exactInput": true,
+      "expectedAmountCalculated": "10498139513947485737241"
+    },
+    {
+      "amountSpecified": "40548725927",
+      "exactInput": true,
+      "expectedAmountCalculated": "6312828258607830712439"
+    },
+    {
+      "amountSpecified": "1606289358",
+      "exactInput": true,
+      "expectedAmountCalculated": "255292737370368938492"
+    },
+    {
+      "amountSpecified": "17112485497",
+      "exactInput": true,
+      "expectedAmountCalculated": "2695578212335679728383"
+    },
+    {
+      "amountSpecified": "2188644074",
+      "exactInput": true,
+      "expectedAmountCalculated": "347725272311929153037"
+    },
+    {
+      "amountSpecified": "83585317269",
+      "exactInput": true,
+      "expectedAmountCalculated": "12710333376678478871820"
+    },
+    {
+      "amountSpecified": "97276411717",
+      "exactInput": true,
+      "expectedAmountCalculated": "14684615527655228677067"
+    },
+    {
+      "amountSpecified": "57346251800",
+      "exactInput": true,
+      "expectedAmountCalculated": "8845562398068087784928"
+    },
+    {
+      "amountSpecified": "4626502176",
+      "exactInput": true,
+      "expectedAmountCalculated": "733963330268955340615"
+    },
+    {
+      "amountSpecified": "50552780248",
+      "exactInput": true,
+      "expectedAmountCalculated": "7827162320246783543921"
+    },
+    {
+      "amountSpecified": "106482036923",
+      "exactInput": true,
+      "expectedAmountCalculated": "15995651458534462846158"
+    },
+    {
+      "amountSpecified": "31530851402",
+      "exactInput": true,
+      "expectedAmountCalculated": "4931578529379943638375"
+    },
+    {
+      "amountSpecified": "61109702545",
+      "exactInput": true,
+      "expectedAmountCalculated": "9406495810259076749028"
+    },
+    {
+      "amountSpecified": "63324344671",
+      "exactInput": true,
+      "expectedAmountCalculated": "9735545038586185078299"
+    },
+    {
+      "amountSpecified": "76019381396",
+      "exactInput": true,
+      "expectedAmountCalculated": "11606934812506505421714"
+    },
+    {
+      "amountSpecified": "2277979323",
+      "exactInput": true,
+      "expectedAmountCalculated": "361898960791064948055"
+    },
+    {
+      "amountSpecified": "37376805904",
+      "exactInput": true,
+      "expectedAmountCalculated": "5828752352442329462435"
+    },
+    {
+      "amountSpecified": "38687419977",
+      "exactInput": true,
+      "expectedAmountCalculated": "6029004205286266952554"
+    },
+    {
+      "amountSpecified": "4039204292",
+      "exactInput": true,
+      "expectedAmountCalculated": "641017501625473251191"
+    },
+    {
+      "amountSpecified": "37609775631",
+      "exactInput": true,
+      "expectedAmountCalculated": "5864372629926450124483"
+    },
+    {
+      "amountSpecified": "73427273851",
+      "exactInput": true,
+      "expectedAmountCalculated": "11226874651359069475985"
+    },
+    {
+      "amountSpecified": "67458640240",
+      "exactInput": true,
+      "expectedAmountCalculated": "10347761437076468578768"
+    },
+    {
+      "amountSpecified": "68264888492",
+      "exactInput": true,
+      "expectedAmountCalculated": "10466839286188181896117"
+    },
+    {
+      "amountSpecified": "105766277958",
+      "exactInput": true,
+      "expectedAmountCalculated": "15894208949930983370511"
+    },
+    {
+      "amountSpecified": "99100977546",
+      "exactInput": true,
+      "expectedAmountCalculated": "14945524731225877894891"
+    },
+    {
+      "amountSpecified": "26085292409753473755216",
+      "exactInput": false,
+      "expectedAmountCalculated": "181989208363"
+    },
+    {
+      "amountSpecified": "25382304747236592078212",
+      "exactInput": false,
+      "expectedAmountCalculated": "176321940421"
+    },
+    {
+      "amountSpecified": "23943250408850060996092",
+      "exactInput": false,
+      "expectedAmountCalculated": "165007695919"
+    },
+    {
+      "amountSpecified": "21876791525287101042024",
+      "exactInput": false,
+      "expectedAmountCalculated": "149251778235"
+    },
+    {
+      "amountSpecified": "18682940040759835811804",
+      "exactInput": false,
+      "expectedAmountCalculated": "125700753887"
+    },
+    {
+      "amountSpecified": "16173304777875259498484",
+      "exactInput": false,
+      "expectedAmountCalculated": "107737196659"
+    },
+    {
+      "amountSpecified": "25269766277341024731292",
+      "exactInput": false,
+      "expectedAmountCalculated": "175424349366"
+    },
+    {
+      "amountSpecified": "84592541136210462810",
+      "exactInput": false,
+      "expectedAmountCalculated": "531904742"
+    },
+    {
+      "amountSpecified": "20545245117482288965204",
+      "exactInput": false,
+      "expectedAmountCalculated": "139331193357"
+    },
+    {
+      "amountSpecified": "6680227030115510849016",
+      "exactInput": false,
+      "expectedAmountCalculated": "42964621790"
+    },
+    {
+      "amountSpecified": "56966646870447490345",
+      "exactInput": false,
+      "expectedAmountCalculated": "358158916"
+    },
+    {
+      "amountSpecified": "1547641587022466561328",
+      "exactInput": false,
+      "expectedAmountCalculated": "9785025095"
+    },
+    {
+      "amountSpecified": "27458754315662197132028",
+      "exactInput": false,
+      "expectedAmountCalculated": "194112709599"
+    },
+    {
+      "amountSpecified": "8708004815978307404484",
+      "exactInput": false,
+      "expectedAmountCalculated": "56425613221"
+    },
+    {
+      "amountSpecified": "27108485770107939045618",
+      "exactInput": false,
+      "expectedAmountCalculated": "190769338947"
+    },
+    {
+      "amountSpecified": "20857542244326944263136",
+      "exactInput": false,
+      "expectedAmountCalculated": "141644258807"
+    },
+    {
+      "amountSpecified": "577500941936068943265",
+      "exactInput": false,
+      "expectedAmountCalculated": "3638089719"
+    },
+    {
+      "amountSpecified": "28131435939433675766302",
+      "exactInput": false,
+      "expectedAmountCalculated": "618627808378667551665196206142886"
+    },
+    {
+      "amountSpecified": "2962323036728510192088",
+      "exactInput": false,
+      "expectedAmountCalculated": "18822332535"
+    },
+    {
+      "amountSpecified": "21831664646805614847384",
+      "exactInput": false,
+      "expectedAmountCalculated": "148912988823"
+    },
+    {
+      "amountSpecified": "28143970868198363818948",
+      "exactInput": false,
+      "expectedAmountCalculated": "618627808378667551665196206142886"
+    },
+    {
+      "amountSpecified": "9803743010465967539304",
+      "exactInput": false,
+      "expectedAmountCalculated": "63783992774"
+    },
+    {
+      "amountSpecified": "15412301416501419487976",
+      "exactInput": false,
+      "expectedAmountCalculated": "102374350346"
+    },
+    {
+      "amountSpecified": "25450931166857296501116",
+      "exactInput": false,
+      "expectedAmountCalculated": "176870417097"
+    },
+    {
+      "amountSpecified": "17574314643098830557624",
+      "exactInput": false,
+      "expectedAmountCalculated": "117710402788"
+    },
+    {
+      "amountSpecified": "11306239704047906173080",
+      "exactInput": false,
+      "expectedAmountCalculated": "73967978230"
+    },
+    {
+      "amountSpecified": "10992510120896497191460",
+      "exactInput": false,
+      "expectedAmountCalculated": "71832378510"
+    },
+    {
+      "amountSpecified": "10682689440721207447464",
+      "exactInput": false,
+      "expectedAmountCalculated": "69728127283"
+    },
+    {
+      "amountSpecified": "9572180541573149910988",
+      "exactInput": false,
+      "expectedAmountCalculated": "62224186266"
+    },
+    {
+      "amountSpecified": "19181750844376047925872",
+      "exactInput": false,
+      "expectedAmountCalculated": "129325447810"
+    },
+    {
+      "amountSpecified": "9728622689086419484352",
+      "exactInput": false,
+      "expectedAmountCalculated": "63277701095"
+    },
+    {
+      "amountSpecified": "17241622156270524921492",
+      "exactInput": false,
+      "expectedAmountCalculated": "115329749183"
+    },
+    {
+      "amountSpecified": "6751692763370573616456",
+      "exactInput": false,
+      "expectedAmountCalculated": "43435413586"
+    },
+    {
+      "amountSpecified": "24357764804430671470868",
+      "exactInput": false,
+      "expectedAmountCalculated": "168233020383"
+    },
+    {
+      "amountSpecified": "17701066503428223693276",
+      "exactInput": false,
+      "expectedAmountCalculated": "118619474727"
+    },
+    {
+      "amountSpecified": "20882693046741700409116",
+      "exactInput": false,
+      "expectedAmountCalculated": "141830902528"
+    },
+    {
+      "amountSpecified": "18326594583812541872076",
+      "exactInput": false,
+      "expectedAmountCalculated": "123122618866"
+    },
+    {
+      "amountSpecified": "17365628347694208871444",
+      "exactInput": false,
+      "expectedAmountCalculated": "116216181467"
+    },
+    {
+      "amountSpecified": "8362516068429055897210",
+      "exactInput": false,
+      "expectedAmountCalculated": "54117493775"
+    },
+    {
+      "amountSpecified": "4246416494269872750264",
+      "exactInput": false,
+      "expectedAmountCalculated": "27091248861"
+    },
+    {
+      "amountSpecified": "10581560454027037977256",
+      "exactInput": false,
+      "expectedAmountCalculated": "69042294428"
+    },
+    {
+      "amountSpecified": "8625343004879511553464",
+      "exactInput": false,
+      "expectedAmountCalculated": "55872825926"
+    },
+    {
+      "amountSpecified": "21139947039951361742508",
+      "exactInput": false,
+      "expectedAmountCalculated": "143743086533"
+    },
+    {
+      "amountSpecified": "4887665267807515074384",
+      "exactInput": false,
+      "expectedAmountCalculated": "31245684130"
+    },
+    {
+      "amountSpecified": "227553905959552572867",
+      "exactInput": false,
+      "expectedAmountCalculated": "1431606297"
+    },
+    {
+      "amountSpecified": "6143998215636993923472",
+      "exactInput": false,
+      "expectedAmountCalculated": "39441018645"
+    },
+    {
+      "amountSpecified": "20180366459737348165700",
+      "exactInput": false,
+      "expectedAmountCalculated": "136639079553"
+    },
+    {
+      "amountSpecified": "12527398476033554355888",
+      "exactInput": false,
+      "expectedAmountCalculated": "82326755062"
+    },
+    {
+      "amountSpecified": "27919841755268708675536",
+      "exactInput": false,
+      "expectedAmountCalculated": "199018381577"
+    },
+    {
+      "amountSpecified": "12055808160150671233632",
+      "exactInput": false,
+      "expectedAmountCalculated": "79089977626"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x4e68Ccd3E89f51C3074ca5072bbAC773960dFa36-reversed.json b/src/__tests__/stubs/swap/0x4e68Ccd3E89f51C3074ca5072bbAC773960dFa36-reversed.json
new file mode 100644
index 00000000..b4403006
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x4e68Ccd3E89f51C3074ca5072bbAC773960dFa36-reversed.json
@@ -0,0 +1,3301 @@
+{
+  "poolName": "WETH - USDT 3000 - reversed",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
+    "decimals": 6
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "fee": 3000,
+  "liquidity": "4438799987262768588",
+  "sqrtRatioX96": "3468311863889111281487515",
+  "tickCurrent": -200739,
+  "ticks": [
+    {
+      "index": -887220,
+      "liquidityNet": "875611196495917",
+      "liquidityGross": "875611196495917"
+    },
+    {
+      "index": -414480,
+      "liquidityNet": "3049864731509371",
+      "liquidityGross": "3049864731509371"
+    },
+    {
+      "index": -414240,
+      "liquidityNet": "420172341184",
+      "liquidityGross": "420172341184"
+    },
+    {
+      "index": -413880,
+      "liquidityNet": "6984274581454",
+      "liquidityGross": "6984274581454"
+    },
+    {
+      "index": -391440,
+      "liquidityNet": "4986272703292",
+      "liquidityGross": "4986272703292"
+    },
+    {
+      "index": -368460,
+      "liquidityNet": "11607650128501",
+      "liquidityGross": "11607650128501"
+    },
+    {
+      "index": -361500,
+      "liquidityNet": "7291342873418",
+      "liquidityGross": "7291342873418"
+    },
+    {
+      "index": -357360,
+      "liquidityNet": "55365840142507116",
+      "liquidityGross": "55365840142507116"
+    },
+    {
+      "index": -356400,
+      "liquidityNet": "-55365840142507116",
+      "liquidityGross": "55365840142507116"
+    },
+    {
+      "index": -345420,
+      "liquidityNet": "169948537884090",
+      "liquidityGross": "169948537884090"
+    },
+    {
+      "index": -345240,
+      "liquidityNet": "41616435971610862",
+      "liquidityGross": "41616435971610862"
+    },
+    {
+      "index": -343560,
+      "liquidityNet": "-169948537884090",
+      "liquidityGross": "169948537884090"
+    },
+    {
+      "index": -343200,
+      "liquidityNet": "-41616435971610862",
+      "liquidityGross": "41616435971610862"
+    },
+    {
+      "index": -338460,
+      "liquidityNet": "-7291342873418",
+      "liquidityGross": "7291342873418"
+    },
+    {
+      "index": -323400,
+      "liquidityNet": "17069717179",
+      "liquidityGross": "17069717179"
+    },
+    {
+      "index": -322380,
+      "liquidityNet": "383344368069245",
+      "liquidityGross": "383344368069245"
+    },
+    {
+      "index": -320580,
+      "liquidityNet": "-383344368069245",
+      "liquidityGross": "383344368069245"
+    },
+    {
+      "index": -300420,
+      "liquidityNet": "17148019954",
+      "liquidityGross": "17148019954"
+    },
+    {
+      "index": -299340,
+      "liquidityNet": "5508389560097",
+      "liquidityGross": "5508389560097"
+    },
+    {
+      "index": -295440,
+      "liquidityNet": "1309614878062",
+      "liquidityGross": "1309614878062"
+    },
+    {
+      "index": -292440,
+      "liquidityNet": "1803579396721",
+      "liquidityGross": "1803579396721"
+    },
+    {
+      "index": -277380,
+      "liquidityNet": "594609443512",
+      "liquidityGross": "594609443512"
+    },
+    {
+      "index": -276420,
+      "liquidityNet": "996550885",
+      "liquidityGross": "996550885"
+    },
+    {
+      "index": -276360,
+      "liquidityNet": "4207654904977",
+      "liquidityGross": "4207654904977"
+    },
+    {
+      "index": -276300,
+      "liquidityNet": "28124906806901",
+      "liquidityGross": "31732065600343"
+    },
+    {
+      "index": -260220,
+      "liquidityNet": "7166286345721",
+      "liquidityGross": "7166286345721"
+    },
+    {
+      "index": -259860,
+      "liquidityNet": "17496133052",
+      "liquidityGross": "17496133052"
+    },
+    {
+      "index": -237180,
+      "liquidityNet": "342909760817",
+      "liquidityGross": "342909760817"
+    },
+    {
+      "index": -230280,
+      "liquidityNet": "15873798707626",
+      "liquidityGross": "16580282352852"
+    },
+    {
+      "index": -230220,
+      "liquidityNet": "73382200827",
+      "liquidityGross": "73382200827"
+    },
+    {
+      "index": -226860,
+      "liquidityNet": "577563616151994",
+      "liquidityGross": "577563616151994"
+    },
+    {
+      "index": -226200,
+      "liquidityNet": "796052262357896",
+      "liquidityGross": "796052262357896"
+    },
+    {
+      "index": -224580,
+      "liquidityNet": "61251050720994",
+      "liquidityGross": "61251050720994"
+    },
+    {
+      "index": -223980,
+      "liquidityNet": "2150345848697",
+      "liquidityGross": "2150345848697"
+    },
+    {
+      "index": -223320,
+      "liquidityNet": "24574512205762",
+      "liquidityGross": "24574512205762"
+    },
+    {
+      "index": -222180,
+      "liquidityNet": "9635129523749",
+      "liquidityGross": "9635129523749"
+    },
+    {
+      "index": -221160,
+      "liquidityNet": "14495486044758",
+      "liquidityGross": "14495486044758"
+    },
+    {
+      "index": -220200,
+      "liquidityNet": "30012473174",
+      "liquidityGross": "30012473174"
+    },
+    {
+      "index": -219600,
+      "liquidityNet": "14760697187118",
+      "liquidityGross": "14760697187118"
+    },
+    {
+      "index": -219480,
+      "liquidityNet": "1931239309253574",
+      "liquidityGross": "1931239309253574"
+    },
+    {
+      "index": -219300,
+      "liquidityNet": "212544738572991",
+      "liquidityGross": "212544738572991"
+    },
+    {
+      "index": -217320,
+      "liquidityNet": "3821406503805",
+      "liquidityGross": "3821406503805"
+    },
+    {
+      "index": -217140,
+      "liquidityNet": "15594316072341",
+      "liquidityGross": "15594316072341"
+    },
+    {
+      "index": -216420,
+      "liquidityNet": "304824875444260",
+      "liquidityGross": "304824875444260"
+    },
+    {
+      "index": -216360,
+      "liquidityNet": "8389917034588",
+      "liquidityGross": "8389917034588"
+    },
+    {
+      "index": -216300,
+      "liquidityNet": "63316182385296",
+      "liquidityGross": "63316182385296"
+    },
+    {
+      "index": -215820,
+      "liquidityNet": "22170868763629",
+      "liquidityGross": "22170868763629"
+    },
+    {
+      "index": -215580,
+      "liquidityNet": "12401813790374",
+      "liquidityGross": "12401813790374"
+    },
+    {
+      "index": -215460,
+      "liquidityNet": "8557713000433",
+      "liquidityGross": "8557713000433"
+    },
+    {
+      "index": -215400,
+      "liquidityNet": "17362920264",
+      "liquidityGross": "17362920264"
+    },
+    {
+      "index": -214980,
+      "liquidityNet": "5042961222738",
+      "liquidityGross": "5042961222738"
+    },
+    {
+      "index": -214440,
+      "liquidityNet": "229652981859200",
+      "liquidityGross": "229652981859200"
+    },
+    {
+      "index": -214260,
+      "liquidityNet": "8387262720444",
+      "liquidityGross": "8387262720444"
+    },
+    {
+      "index": -214200,
+      "liquidityNet": "447698828084217",
+      "liquidityGross": "447698828084217"
+    },
+    {
+      "index": -213960,
+      "liquidityNet": "24011432361167",
+      "liquidityGross": "24011432361167"
+    },
+    {
+      "index": -213900,
+      "liquidityNet": "5019447158762",
+      "liquidityGross": "5019447158762"
+    },
+    {
+      "index": -213780,
+      "liquidityNet": "4487026506867716",
+      "liquidityGross": "4487026506867716"
+    },
+    {
+      "index": -213600,
+      "liquidityNet": "212887968807951",
+      "liquidityGross": "212887968807951"
+    },
+    {
+      "index": -213540,
+      "liquidityNet": "104834545602",
+      "liquidityGross": "104834545602"
+    },
+    {
+      "index": -213480,
+      "liquidityNet": "156277485585991",
+      "liquidityGross": "156277485585991"
+    },
+    {
+      "index": -213360,
+      "liquidityNet": "10391121491",
+      "liquidityGross": "10391121491"
+    },
+    {
+      "index": -213300,
+      "liquidityNet": "11987607319714",
+      "liquidityGross": "11987607319714"
+    },
+    {
+      "index": -213240,
+      "liquidityNet": "10366623293",
+      "liquidityGross": "10366623293"
+    },
+    {
+      "index": -213180,
+      "liquidityNet": "206462075621",
+      "liquidityGross": "206462075621"
+    },
+    {
+      "index": -213120,
+      "liquidityNet": "319889112278",
+      "liquidityGross": "319889112278"
+    },
+    {
+      "index": -213060,
+      "liquidityNet": "124605522853",
+      "liquidityGross": "124605522853"
+    },
+    {
+      "index": -213000,
+      "liquidityNet": "112018435940",
+      "liquidityGross": "112018435940"
+    },
+    {
+      "index": -212940,
+      "liquidityNet": "4290091063861",
+      "liquidityGross": "4290091063861"
+    },
+    {
+      "index": -212700,
+      "liquidityNet": "28968510142457",
+      "liquidityGross": "28968510142457"
+    },
+    {
+      "index": -212640,
+      "liquidityNet": "220642338683",
+      "liquidityGross": "220642338683"
+    },
+    {
+      "index": -212580,
+      "liquidityNet": "7892694955145",
+      "liquidityGross": "7892694955145"
+    },
+    {
+      "index": -212520,
+      "liquidityNet": "18645451137478",
+      "liquidityGross": "18645451137478"
+    },
+    {
+      "index": -212460,
+      "liquidityNet": "520536821176306",
+      "liquidityGross": "520536821176306"
+    },
+    {
+      "index": -212400,
+      "liquidityNet": "10409773799483",
+      "liquidityGross": "10409773799483"
+    },
+    {
+      "index": -212340,
+      "liquidityNet": "2809350517835412",
+      "liquidityGross": "2809350517835412"
+    },
+    {
+      "index": -212280,
+      "liquidityNet": "306994548833360",
+      "liquidityGross": "306994548833360"
+    },
+    {
+      "index": -212220,
+      "liquidityNet": "426960890101290",
+      "liquidityGross": "426960890101290"
+    },
+    {
+      "index": -212160,
+      "liquidityNet": "56661919618632",
+      "liquidityGross": "56661919618632"
+    },
+    {
+      "index": -212100,
+      "liquidityNet": "122789341789167",
+      "liquidityGross": "122789341789167"
+    },
+    {
+      "index": -212040,
+      "liquidityNet": "14061055798281",
+      "liquidityGross": "14061055798281"
+    },
+    {
+      "index": -211980,
+      "liquidityNet": "1351089851254388",
+      "liquidityGross": "1351089851254388"
+    },
+    {
+      "index": -211920,
+      "liquidityNet": "14191726388905279",
+      "liquidityGross": "14191726388905279"
+    },
+    {
+      "index": -211860,
+      "liquidityNet": "6080643694176",
+      "liquidityGross": "6080643694176"
+    },
+    {
+      "index": -211800,
+      "liquidityNet": "48550211612303",
+      "liquidityGross": "48550211612303"
+    },
+    {
+      "index": -211740,
+      "liquidityNet": "11076481069295",
+      "liquidityGross": "11076481069295"
+    },
+    {
+      "index": -211680,
+      "liquidityNet": "14164878605760785",
+      "liquidityGross": "14164878605760785"
+    },
+    {
+      "index": -211620,
+      "liquidityNet": "1331017194748",
+      "liquidityGross": "1331017194748"
+    },
+    {
+      "index": -211560,
+      "liquidityNet": "509097846158328",
+      "liquidityGross": "509097846158328"
+    },
+    {
+      "index": -211500,
+      "liquidityNet": "856479162611185",
+      "liquidityGross": "856479162611185"
+    },
+    {
+      "index": -211440,
+      "liquidityNet": "562694396795295",
+      "liquidityGross": "562694396795295"
+    },
+    {
+      "index": -211380,
+      "liquidityNet": "205440716552216",
+      "liquidityGross": "205440716552216"
+    },
+    {
+      "index": -211320,
+      "liquidityNet": "21274520913682",
+      "liquidityGross": "21274520913682"
+    },
+    {
+      "index": -211260,
+      "liquidityNet": "124658970419744",
+      "liquidityGross": "124658970419744"
+    },
+    {
+      "index": -211200,
+      "liquidityNet": "11370940716952",
+      "liquidityGross": "11370940716952"
+    },
+    {
+      "index": -211140,
+      "liquidityNet": "36365472094853",
+      "liquidityGross": "36365472094853"
+    },
+    {
+      "index": -211080,
+      "liquidityNet": "1032810300140862",
+      "liquidityGross": "1032810300140862"
+    },
+    {
+      "index": -211020,
+      "liquidityNet": "95298053464993",
+      "liquidityGross": "95298053464993"
+    },
+    {
+      "index": -210900,
+      "liquidityNet": "145043859087319",
+      "liquidityGross": "145043859087319"
+    },
+    {
+      "index": -210840,
+      "liquidityNet": "136579643960",
+      "liquidityGross": "136579643960"
+    },
+    {
+      "index": -210780,
+      "liquidityNet": "534099677249345",
+      "liquidityGross": "534099677249345"
+    },
+    {
+      "index": -210720,
+      "liquidityNet": "2480058390240256",
+      "liquidityGross": "2480058390240256"
+    },
+    {
+      "index": -210660,
+      "liquidityNet": "354122628333985",
+      "liquidityGross": "354122628333985"
+    },
+    {
+      "index": -210600,
+      "liquidityNet": "154740238096",
+      "liquidityGross": "154740238096"
+    },
+    {
+      "index": -210540,
+      "liquidityNet": "579077940218860",
+      "liquidityGross": "579077940218860"
+    },
+    {
+      "index": -210480,
+      "liquidityNet": "2744272421471",
+      "liquidityGross": "2744272421471"
+    },
+    {
+      "index": -210420,
+      "liquidityNet": "495837612117",
+      "liquidityGross": "495837612117"
+    },
+    {
+      "index": -210360,
+      "liquidityNet": "89321381243057269",
+      "liquidityGross": "89321381243057269"
+    },
+    {
+      "index": -210300,
+      "liquidityNet": "3868076657661",
+      "liquidityGross": "3868076657661"
+    },
+    {
+      "index": -210240,
+      "liquidityNet": "20452804471350",
+      "liquidityGross": "20452804471350"
+    },
+    {
+      "index": -210180,
+      "liquidityNet": "8857517832181",
+      "liquidityGross": "8857517832181"
+    },
+    {
+      "index": -210120,
+      "liquidityNet": "179187435362498",
+      "liquidityGross": "179187435362498"
+    },
+    {
+      "index": -210060,
+      "liquidityNet": "21605232052893",
+      "liquidityGross": "21605232052893"
+    },
+    {
+      "index": -210000,
+      "liquidityNet": "210203313634115",
+      "liquidityGross": "210203313634115"
+    },
+    {
+      "index": -209940,
+      "liquidityNet": "193826460468558",
+      "liquidityGross": "193826460468558"
+    },
+    {
+      "index": -209880,
+      "liquidityNet": "76181302407889",
+      "liquidityGross": "76181302407889"
+    },
+    {
+      "index": -209820,
+      "liquidityNet": "48716792856573",
+      "liquidityGross": "48716792856573"
+    },
+    {
+      "index": -209760,
+      "liquidityNet": "492640782762730",
+      "liquidityGross": "492640782762730"
+    },
+    {
+      "index": -209700,
+      "liquidityNet": "254840321749936",
+      "liquidityGross": "254840321749936"
+    },
+    {
+      "index": -209640,
+      "liquidityNet": "72775882935908",
+      "liquidityGross": "72775882935908"
+    },
+    {
+      "index": -209580,
+      "liquidityNet": "84279123597001",
+      "liquidityGross": "84279123597001"
+    },
+    {
+      "index": -209520,
+      "liquidityNet": "3223358417010750",
+      "liquidityGross": "3223358417010750"
+    },
+    {
+      "index": -209460,
+      "liquidityNet": "4443472581105229",
+      "liquidityGross": "4443472581105229"
+    },
+    {
+      "index": -209400,
+      "liquidityNet": "139615748708",
+      "liquidityGross": "139615748708"
+    },
+    {
+      "index": -209340,
+      "liquidityNet": "2077102847824936",
+      "liquidityGross": "2077102847824936"
+    },
+    {
+      "index": -209280,
+      "liquidityNet": "351125213532645",
+      "liquidityGross": "351125213532645"
+    },
+    {
+      "index": -209220,
+      "liquidityNet": "549707273398905",
+      "liquidityGross": "549707273398905"
+    },
+    {
+      "index": -209160,
+      "liquidityNet": "963892819446803",
+      "liquidityGross": "963892819446803"
+    },
+    {
+      "index": -209100,
+      "liquidityNet": "1031925706229599",
+      "liquidityGross": "1031925706229599"
+    },
+    {
+      "index": -209040,
+      "liquidityNet": "116293892668369",
+      "liquidityGross": "116293892668369"
+    },
+    {
+      "index": -208980,
+      "liquidityNet": "5909247580363",
+      "liquidityGross": "5909247580363"
+    },
+    {
+      "index": -208920,
+      "liquidityNet": "6109306853251",
+      "liquidityGross": "6109306853251"
+    },
+    {
+      "index": -208860,
+      "liquidityNet": "5926768676983321",
+      "liquidityGross": "7086904371328571"
+    },
+    {
+      "index": -208800,
+      "liquidityNet": "8073425490722027",
+      "liquidityGross": "8073425490722027"
+    },
+    {
+      "index": -208740,
+      "liquidityNet": "37722981899262",
+      "liquidityGross": "37722981899262"
+    },
+    {
+      "index": -208680,
+      "liquidityNet": "522101637592374",
+      "liquidityGross": "522101637592374"
+    },
+    {
+      "index": -208620,
+      "liquidityNet": "1241722435303738",
+      "liquidityGross": "1241722435303738"
+    },
+    {
+      "index": -208560,
+      "liquidityNet": "450755010924548",
+      "liquidityGross": "450755010924548"
+    },
+    {
+      "index": -208500,
+      "liquidityNet": "68796266713564",
+      "liquidityGross": "68796266713564"
+    },
+    {
+      "index": -208440,
+      "liquidityNet": "934665196903434",
+      "liquidityGross": "934665196903434"
+    },
+    {
+      "index": -208380,
+      "liquidityNet": "791455838473635",
+      "liquidityGross": "791455838473635"
+    },
+    {
+      "index": -208320,
+      "liquidityNet": "3176038609765759",
+      "liquidityGross": "3176038609765759"
+    },
+    {
+      "index": -208260,
+      "liquidityNet": "11031419609989117",
+      "liquidityGross": "11031419609989117"
+    },
+    {
+      "index": -208200,
+      "liquidityNet": "-2124036513913797",
+      "liquidityGross": "2835897763319219"
+    },
+    {
+      "index": -208140,
+      "liquidityNet": "22207684870830",
+      "liquidityGross": "22207684870830"
+    },
+    {
+      "index": -208080,
+      "liquidityNet": "1596621909699853",
+      "liquidityGross": "1596621909699853"
+    },
+    {
+      "index": -208020,
+      "liquidityNet": "293666391741206",
+      "liquidityGross": "293666391741206"
+    },
+    {
+      "index": -207960,
+      "liquidityNet": "846772715395414",
+      "liquidityGross": "846772715395414"
+    },
+    {
+      "index": -207900,
+      "liquidityNet": "244363447594712",
+      "liquidityGross": "244363447594712"
+    },
+    {
+      "index": -207840,
+      "liquidityNet": "280461821627753",
+      "liquidityGross": "280461821627753"
+    },
+    {
+      "index": -207780,
+      "liquidityNet": "551853124524559",
+      "liquidityGross": "551853124524559"
+    },
+    {
+      "index": -207720,
+      "liquidityNet": "401906770779094",
+      "liquidityGross": "401906770779094"
+    },
+    {
+      "index": -207660,
+      "liquidityNet": "-248101491913665",
+      "liquidityGross": "567503820233125"
+    },
+    {
+      "index": -207600,
+      "liquidityNet": "69076490670053",
+      "liquidityGross": "69076490670053"
+    },
+    {
+      "index": -207540,
+      "liquidityNet": "1073675511359473",
+      "liquidityGross": "1073675511359473"
+    },
+    {
+      "index": -207480,
+      "liquidityNet": "628769297300740",
+      "liquidityGross": "628769297300740"
+    },
+    {
+      "index": -207420,
+      "liquidityNet": "115658732697320027",
+      "liquidityGross": "115658732697320027"
+    },
+    {
+      "index": -207360,
+      "liquidityNet": "31959099096714",
+      "liquidityGross": "31959099096714"
+    },
+    {
+      "index": -207300,
+      "liquidityNet": "6079623504838013",
+      "liquidityGross": "6079623504838013"
+    },
+    {
+      "index": -207240,
+      "liquidityNet": "24623380066129113",
+      "liquidityGross": "24636330672055043"
+    },
+    {
+      "index": -207180,
+      "liquidityNet": "506942467914299",
+      "liquidityGross": "506942467914299"
+    },
+    {
+      "index": -207120,
+      "liquidityNet": "103350559709595962",
+      "liquidityGross": "103350559709595962"
+    },
+    {
+      "index": -207060,
+      "liquidityNet": "1023476659529839",
+      "liquidityGross": "1636274505971509"
+    },
+    {
+      "index": -207000,
+      "liquidityNet": "106314945768010",
+      "liquidityGross": "106314945768010"
+    },
+    {
+      "index": -206940,
+      "liquidityNet": "19880748021669",
+      "liquidityGross": "19880748021669"
+    },
+    {
+      "index": -206880,
+      "liquidityNet": "2482325062042217",
+      "liquidityGross": "2482325062042217"
+    },
+    {
+      "index": -206820,
+      "liquidityNet": "76851217284488",
+      "liquidityGross": "76851217284488"
+    },
+    {
+      "index": -206760,
+      "liquidityNet": "16414934947049606",
+      "liquidityGross": "16414934947049606"
+    },
+    {
+      "index": -206700,
+      "liquidityNet": "797691476625164",
+      "liquidityGross": "797691476625164"
+    },
+    {
+      "index": -206640,
+      "liquidityNet": "897486463394967",
+      "liquidityGross": "897486463394967"
+    },
+    {
+      "index": -206580,
+      "liquidityNet": "2523828694260881",
+      "liquidityGross": "2523828694260881"
+    },
+    {
+      "index": -206520,
+      "liquidityNet": "99091581046458",
+      "liquidityGross": "99091581046458"
+    },
+    {
+      "index": -206460,
+      "liquidityNet": "198134404770102",
+      "liquidityGross": "198134404770102"
+    },
+    {
+      "index": -206400,
+      "liquidityNet": "5409108116683398",
+      "liquidityGross": "5409108116683398"
+    },
+    {
+      "index": -206340,
+      "liquidityNet": "99190740583689",
+      "liquidityGross": "247094197638475"
+    },
+    {
+      "index": -206280,
+      "liquidityNet": "2307847194224674",
+      "liquidityGross": "2307847194224674"
+    },
+    {
+      "index": -206220,
+      "liquidityNet": "473161669794740",
+      "liquidityGross": "473161669794740"
+    },
+    {
+      "index": -206100,
+      "liquidityNet": "228911577263817",
+      "liquidityGross": "228911577263817"
+    },
+    {
+      "index": -206040,
+      "liquidityNet": "-184739752471968",
+      "liquidityGross": "212899967357542"
+    },
+    {
+      "index": -205980,
+      "liquidityNet": "39749981189057",
+      "liquidityGross": "39749981189057"
+    },
+    {
+      "index": -205920,
+      "liquidityNet": "41594704230719",
+      "liquidityGross": "41594704230719"
+    },
+    {
+      "index": -205860,
+      "liquidityNet": "108365425394394",
+      "liquidityGross": "108365425394394"
+    },
+    {
+      "index": -205800,
+      "liquidityNet": "639392233939540",
+      "liquidityGross": "685481722152598"
+    },
+    {
+      "index": -205740,
+      "liquidityNet": "-81186598735593",
+      "liquidityGross": "82186713029927"
+    },
+    {
+      "index": -205680,
+      "liquidityNet": "15527198582495433",
+      "liquidityGross": "15527198582495433"
+    },
+    {
+      "index": -205620,
+      "liquidityNet": "-5010618266469",
+      "liquidityGross": "11769215802707"
+    },
+    {
+      "index": -205560,
+      "liquidityNet": "89849541619740",
+      "liquidityGross": "116794822540036"
+    },
+    {
+      "index": -205500,
+      "liquidityNet": "1736372636021951",
+      "liquidityGross": "1777929725241849"
+    },
+    {
+      "index": -205440,
+      "liquidityNet": "27061789155182256",
+      "liquidityGross": "28034448027924978"
+    },
+    {
+      "index": -205380,
+      "liquidityNet": "2206501079670591",
+      "liquidityGross": "2206501079670591"
+    },
+    {
+      "index": -205320,
+      "liquidityNet": "174166376148758796",
+      "liquidityGross": "174184651730750120"
+    },
+    {
+      "index": -205260,
+      "liquidityNet": "5503701570780696",
+      "liquidityGross": "5503701570780696"
+    },
+    {
+      "index": -205200,
+      "liquidityNet": "32050979748173",
+      "liquidityGross": "32050979748173"
+    },
+    {
+      "index": -205140,
+      "liquidityNet": "1484551346313655",
+      "liquidityGross": "1489226684258315"
+    },
+    {
+      "index": -205080,
+      "liquidityNet": "315775788543696",
+      "liquidityGross": "372026844196386"
+    },
+    {
+      "index": -205020,
+      "liquidityNet": "-5067420027578673",
+      "liquidityGross": "5186306374133489"
+    },
+    {
+      "index": -204960,
+      "liquidityNet": "1225192692491052",
+      "liquidityGross": "1225192692491052"
+    },
+    {
+      "index": -204900,
+      "liquidityNet": "605087679392517",
+      "liquidityGross": "605087679392517"
+    },
+    {
+      "index": -204840,
+      "liquidityNet": "5892882939485813",
+      "liquidityGross": "5892882939485813"
+    },
+    {
+      "index": -204780,
+      "liquidityNet": "-5328071268033105",
+      "liquidityGross": "6216080241325619"
+    },
+    {
+      "index": -204720,
+      "liquidityNet": "153514298624088483",
+      "liquidityGross": "153595073285823529"
+    },
+    {
+      "index": -204660,
+      "liquidityNet": "-10269580674643",
+      "liquidityGross": "12668473334781"
+    },
+    {
+      "index": -204600,
+      "liquidityNet": "770193971213949577",
+      "liquidityGross": "770340317886072851"
+    },
+    {
+      "index": -204540,
+      "liquidityNet": "1486893882006706",
+      "liquidityGross": "1486893882006706"
+    },
+    {
+      "index": -204480,
+      "liquidityNet": "-20741288957177",
+      "liquidityGross": "37597425022095"
+    },
+    {
+      "index": -204420,
+      "liquidityNet": "302058677809017",
+      "liquidityGross": "302058677809017"
+    },
+    {
+      "index": -204360,
+      "liquidityNet": "9907593741533559",
+      "liquidityGross": "9907593741533559"
+    },
+    {
+      "index": -204300,
+      "liquidityNet": "1918762839038876",
+      "liquidityGross": "1919550347515188"
+    },
+    {
+      "index": -204240,
+      "liquidityNet": "3308417371494537",
+      "liquidityGross": "3649724739539411"
+    },
+    {
+      "index": -204180,
+      "liquidityNet": "-2335992900439439",
+      "liquidityGross": "2347222150239659"
+    },
+    {
+      "index": -204120,
+      "liquidityNet": "2294031390747131",
+      "liquidityGross": "2294031390747131"
+    },
+    {
+      "index": -204060,
+      "liquidityNet": "210748158440686",
+      "liquidityGross": "210748158440686"
+    },
+    {
+      "index": -204000,
+      "liquidityNet": "1159363000897049",
+      "liquidityGross": "1159363000897049"
+    },
+    {
+      "index": -203940,
+      "liquidityNet": "503921248047177",
+      "liquidityGross": "545807622437275"
+    },
+    {
+      "index": -203880,
+      "liquidityNet": "62141497462379684",
+      "liquidityGross": "62727648420182682"
+    },
+    {
+      "index": -203820,
+      "liquidityNet": "34337322707735385",
+      "liquidityGross": "34337322707735385"
+    },
+    {
+      "index": -203760,
+      "liquidityNet": "410113790478932",
+      "liquidityGross": "495213097149028"
+    },
+    {
+      "index": -203700,
+      "liquidityNet": "415182801585449",
+      "liquidityGross": "556471822006201"
+    },
+    {
+      "index": -203640,
+      "liquidityNet": "24425044220419608",
+      "liquidityGross": "24425044220419608"
+    },
+    {
+      "index": -203580,
+      "liquidityNet": "834584965946843",
+      "liquidityGross": "834584965946843"
+    },
+    {
+      "index": -203520,
+      "liquidityNet": "4985074744319109",
+      "liquidityGross": "5502288688516927"
+    },
+    {
+      "index": -203460,
+      "liquidityNet": "78343602753046412",
+      "liquidityGross": "78343602753046412"
+    },
+    {
+      "index": -203400,
+      "liquidityNet": "22134361502493449",
+      "liquidityGross": "22172938293635151"
+    },
+    {
+      "index": -203340,
+      "liquidityNet": "2475258731517853",
+      "liquidityGross": "2475258731517853"
+    },
+    {
+      "index": -203280,
+      "liquidityNet": "5278782293643693",
+      "liquidityGross": "5423250793443071"
+    },
+    {
+      "index": -203220,
+      "liquidityNet": "464833235985438",
+      "liquidityGross": "464833235985438"
+    },
+    {
+      "index": -203160,
+      "liquidityNet": "992805635036864446",
+      "liquidityGross": "996274682858768374"
+    },
+    {
+      "index": -203100,
+      "liquidityNet": "3645094328960638",
+      "liquidityGross": "3645094328960638"
+    },
+    {
+      "index": -203040,
+      "liquidityNet": "318841275492137",
+      "liquidityGross": "374593186725939"
+    },
+    {
+      "index": -202980,
+      "liquidityNet": "975105269644389",
+      "liquidityGross": "975112404862855"
+    },
+    {
+      "index": -202920,
+      "liquidityNet": "887692411915156",
+      "liquidityGross": "887692411915156"
+    },
+    {
+      "index": -202860,
+      "liquidityNet": "98659494761082600",
+      "liquidityGross": "101587619658469644"
+    },
+    {
+      "index": -202800,
+      "liquidityNet": "15901824182922",
+      "liquidityGross": "16811502485062"
+    },
+    {
+      "index": -202740,
+      "liquidityNet": "395174250110817",
+      "liquidityGross": "428037328873471"
+    },
+    {
+      "index": -202680,
+      "liquidityNet": "-260018789118271",
+      "liquidityGross": "1883251495937415"
+    },
+    {
+      "index": -202620,
+      "liquidityNet": "-4391349258029305",
+      "liquidityGross": "7460839503106589"
+    },
+    {
+      "index": -202560,
+      "liquidityNet": "284662753533902",
+      "liquidityGross": "910614243141816"
+    },
+    {
+      "index": -202500,
+      "liquidityNet": "2434527278037753",
+      "liquidityGross": "2812865846698861"
+    },
+    {
+      "index": -202440,
+      "liquidityNet": "95388747140304856",
+      "liquidityGross": "95448883076349094"
+    },
+    {
+      "index": -202380,
+      "liquidityNet": "51266541048316",
+      "liquidityGross": "51266541048316"
+    },
+    {
+      "index": -202320,
+      "liquidityNet": "287531616721653",
+      "liquidityGross": "292786069820105"
+    },
+    {
+      "index": -202260,
+      "liquidityNet": "14576290250496444",
+      "liquidityGross": "15216492747801322"
+    },
+    {
+      "index": -202200,
+      "liquidityNet": "12737342367517471",
+      "liquidityGross": "12737342367517471"
+    },
+    {
+      "index": -202140,
+      "liquidityNet": "33770234218256668",
+      "liquidityGross": "34700578930237998"
+    },
+    {
+      "index": -202080,
+      "liquidityNet": "318347346830652",
+      "liquidityGross": "318347346830652"
+    },
+    {
+      "index": -202020,
+      "liquidityNet": "13372516782444824",
+      "liquidityGross": "13651043131692244"
+    },
+    {
+      "index": -201960,
+      "liquidityNet": "54588530302687213",
+      "liquidityGross": "54634348285195159"
+    },
+    {
+      "index": -201900,
+      "liquidityNet": "17567954684596057",
+      "liquidityGross": "17809361276579165"
+    },
+    {
+      "index": -201840,
+      "liquidityNet": "4894135601574448",
+      "liquidityGross": "4894135601574448"
+    },
+    {
+      "index": -201780,
+      "liquidityNet": "153922258648165",
+      "liquidityGross": "153922258648165"
+    },
+    {
+      "index": -201720,
+      "liquidityNet": "43017410365684920",
+      "liquidityGross": "43018357201168172"
+    },
+    {
+      "index": -201660,
+      "liquidityNet": "62159131685423393",
+      "liquidityGross": "62940571868792829"
+    },
+    {
+      "index": -201600,
+      "liquidityNet": "3964134515620171",
+      "liquidityGross": "6785616365441117"
+    },
+    {
+      "index": -201540,
+      "liquidityNet": "89464931855659580",
+      "liquidityGross": "91274548047899556"
+    },
+    {
+      "index": -201480,
+      "liquidityNet": "112885498140435163",
+      "liquidityGross": "115289309330005153"
+    },
+    {
+      "index": -201420,
+      "liquidityNet": "-660537887957975",
+      "liquidityGross": "1307269080883125"
+    },
+    {
+      "index": -201360,
+      "liquidityNet": "40188083193740608",
+      "liquidityGross": "40538377082577346"
+    },
+    {
+      "index": -201300,
+      "liquidityNet": "8344837981614605",
+      "liquidityGross": "8602723260789265"
+    },
+    {
+      "index": -201240,
+      "liquidityNet": "201528643567321485",
+      "liquidityGross": "203844290870973839"
+    },
+    {
+      "index": -201180,
+      "liquidityNet": "37010183353326874",
+      "liquidityGross": "102587618687410208"
+    },
+    {
+      "index": -201120,
+      "liquidityNet": "1737766187735073",
+      "liquidityGross": "2987803339574529"
+    },
+    {
+      "index": -201060,
+      "liquidityNet": "16205345034027920",
+      "liquidityGross": "18661463208387898"
+    },
+    {
+      "index": -201000,
+      "liquidityNet": "-13215496379200364",
+      "liquidityGross": "18438561452738656"
+    },
+    {
+      "index": -200940,
+      "liquidityNet": "-4006549840882694",
+      "liquidityGross": "5641754262057098"
+    },
+    {
+      "index": -200880,
+      "liquidityNet": "1456663868619997854",
+      "liquidityGross": "1463646224273811142"
+    },
+    {
+      "index": -200820,
+      "liquidityNet": "-795322058367421553",
+      "liquidityGross": "1372393969902661067"
+    },
+    {
+      "index": -200760,
+      "liquidityNet": "-47731644562217832",
+      "liquidityGross": "49141354248925858"
+    },
+    {
+      "index": -200700,
+      "liquidityNet": "-1765241887956561",
+      "liquidityGross": "2062258856966485"
+    },
+    {
+      "index": -200640,
+      "liquidityNet": "-315624182533303740",
+      "liquidityGross": "315758692542800230"
+    },
+    {
+      "index": -200580,
+      "liquidityNet": "-1368095032575312639",
+      "liquidityGross": "1583556585425967563"
+    },
+    {
+      "index": -200520,
+      "liquidityNet": "-70037226633857508",
+      "liquidityGross": "70037798820457506"
+    },
+    {
+      "index": -200460,
+      "liquidityNet": "11367535070640133",
+      "liquidityGross": "15104419540821235"
+    },
+    {
+      "index": -200400,
+      "liquidityNet": "-659274416950337",
+      "liquidityGross": "1707350547527345"
+    },
+    {
+      "index": -200340,
+      "liquidityNet": "-28950872270915782",
+      "liquidityGross": "32775568294255184"
+    },
+    {
+      "index": -200280,
+      "liquidityNet": "89942016956652",
+      "liquidityGross": "7597568272162842"
+    },
+    {
+      "index": -200220,
+      "liquidityNet": "363598409380873",
+      "liquidityGross": "1564418807974135"
+    },
+    {
+      "index": -200160,
+      "liquidityNet": "-12481271447406212",
+      "liquidityGross": "12495786535066974"
+    },
+    {
+      "index": -200100,
+      "liquidityNet": "-17763593263097781",
+      "liquidityGross": "18184465066374277"
+    },
+    {
+      "index": -200040,
+      "liquidityNet": "-116898711235581887",
+      "liquidityGross": "118151331668791997"
+    },
+    {
+      "index": -199980,
+      "liquidityNet": "-16081668896371",
+      "liquidityGross": "36422672418521"
+    },
+    {
+      "index": -199920,
+      "liquidityNet": "-1603658942794710",
+      "liquidityGross": "1790256409173848"
+    },
+    {
+      "index": -199860,
+      "liquidityNet": "831769717831489",
+      "liquidityGross": "2104045868442451"
+    },
+    {
+      "index": -199800,
+      "liquidityNet": "-43415373831097920",
+      "liquidityGross": "44214630830638064"
+    },
+    {
+      "index": -199740,
+      "liquidityNet": "-626813878732097",
+      "liquidityGross": "2384675771168529"
+    },
+    {
+      "index": -199680,
+      "liquidityNet": "-185262876385183780",
+      "liquidityGross": "187837305622668566"
+    },
+    {
+      "index": -199620,
+      "liquidityNet": "-889282973489390",
+      "liquidityGross": "1225891638907884"
+    },
+    {
+      "index": -199560,
+      "liquidityNet": "-1316584853866598",
+      "liquidityGross": "3423578046795816"
+    },
+    {
+      "index": -199500,
+      "liquidityNet": "9331116971191653",
+      "liquidityGross": "10389175358556499"
+    },
+    {
+      "index": -199440,
+      "liquidityNet": "-1200349434888750",
+      "liquidityGross": "1204734952676976"
+    },
+    {
+      "index": -199380,
+      "liquidityNet": "-157085694846400796",
+      "liquidityGross": "159231679614126446"
+    },
+    {
+      "index": -199320,
+      "liquidityNet": "-14901055232692332",
+      "liquidityGross": "15670081684686178"
+    },
+    {
+      "index": -199260,
+      "liquidityNet": "-782603565641143",
+      "liquidityGross": "1369445291605961"
+    },
+    {
+      "index": -199200,
+      "liquidityNet": "-647128925304820",
+      "liquidityGross": "656674759994048"
+    },
+    {
+      "index": -199140,
+      "liquidityNet": "-118787217362155759",
+      "liquidityGross": "118880977962990067"
+    },
+    {
+      "index": -199080,
+      "liquidityNet": "-1064923766934841",
+      "liquidityGross": "1137466915582581"
+    },
+    {
+      "index": -199020,
+      "liquidityNet": "-482614636781287",
+      "liquidityGross": "573810516190621"
+    },
+    {
+      "index": -198960,
+      "liquidityNet": "-2612744544173505",
+      "liquidityGross": "2707453394459341"
+    },
+    {
+      "index": -198900,
+      "liquidityNet": "-12732590187745434",
+      "liquidityGross": "25603821473555190"
+    },
+    {
+      "index": -198840,
+      "liquidityNet": "-12034113763372771",
+      "liquidityGross": "14262662305350877"
+    },
+    {
+      "index": -198780,
+      "liquidityNet": "-393859362746628",
+      "liquidityGross": "1658973077193840"
+    },
+    {
+      "index": -198720,
+      "liquidityNet": "-255634786476200",
+      "liquidityGross": "1109796689347256"
+    },
+    {
+      "index": -198660,
+      "liquidityNet": "-82786379022024372",
+      "liquidityGross": "95975949057358774"
+    },
+    {
+      "index": -198600,
+      "liquidityNet": "-7242491191458481",
+      "liquidityGross": "11623300265328031"
+    },
+    {
+      "index": -198540,
+      "liquidityNet": "707863632099472",
+      "liquidityGross": "1481396326865690"
+    },
+    {
+      "index": -198480,
+      "liquidityNet": "-938586505037023",
+      "liquidityGross": "1962102638659731"
+    },
+    {
+      "index": -198420,
+      "liquidityNet": "-83232197324934492",
+      "liquidityGross": "86180428624966696"
+    },
+    {
+      "index": -198360,
+      "liquidityNet": "15301961507926150",
+      "liquidityGross": "17676149736851774"
+    },
+    {
+      "index": -198300,
+      "liquidityNet": "-2374259733315431",
+      "liquidityGross": "2389825894949985"
+    },
+    {
+      "index": -198240,
+      "liquidityNet": "-1184842517564809",
+      "liquidityGross": "1766354523963033"
+    },
+    {
+      "index": -198180,
+      "liquidityNet": "7929934994615513",
+      "liquidityGross": "13571192064378477"
+    },
+    {
+      "index": -198120,
+      "liquidityNet": "-274802958021362",
+      "liquidityGross": "286438728082090"
+    },
+    {
+      "index": -198060,
+      "liquidityNet": "-36985766785759850",
+      "liquidityGross": "55863893417307818"
+    },
+    {
+      "index": -198000,
+      "liquidityNet": "-531918030094097",
+      "liquidityGross": "578849179865149"
+    },
+    {
+      "index": -197940,
+      "liquidityNet": "-405614694751566",
+      "liquidityGross": "2969178945676980"
+    },
+    {
+      "index": -197880,
+      "liquidityNet": "466465342559",
+      "liquidityGross": "290580184180807"
+    },
+    {
+      "index": -197820,
+      "liquidityNet": "-15157056467405224",
+      "liquidityGross": "15288729284731430"
+    },
+    {
+      "index": -197760,
+      "liquidityNet": "-760451161229258",
+      "liquidityGross": "1320177768022356"
+    },
+    {
+      "index": -197700,
+      "liquidityNet": "-159180229738545119",
+      "liquidityGross": "159481628660422417"
+    },
+    {
+      "index": -197640,
+      "liquidityNet": "54479008308852",
+      "liquidityGross": "200488116002070"
+    },
+    {
+      "index": -197580,
+      "liquidityNet": "-7533160292238179",
+      "liquidityGross": "7651838948056879"
+    },
+    {
+      "index": -197520,
+      "liquidityNet": "9264950749157165",
+      "liquidityGross": "22060170947607979"
+    },
+    {
+      "index": -197460,
+      "liquidityNet": "-19577615478047527",
+      "liquidityGross": "22206144479317877"
+    },
+    {
+      "index": -197400,
+      "liquidityNet": "887127892940257",
+      "liquidityGross": "1253609142357481"
+    },
+    {
+      "index": -197340,
+      "liquidityNet": "38239344832437819",
+      "liquidityGross": "49643454471993543"
+    },
+    {
+      "index": -197280,
+      "liquidityNet": "-21016802355721",
+      "liquidityGross": "128795699473889"
+    },
+    {
+      "index": -197220,
+      "liquidityNet": "1946938814897401",
+      "liquidityGross": "2033994889717993"
+    },
+    {
+      "index": -197160,
+      "liquidityNet": "-937995286652276",
+      "liquidityGross": "1364569572417170"
+    },
+    {
+      "index": -197100,
+      "liquidityNet": "-14800498276757887",
+      "liquidityGross": "15007459751355777"
+    },
+    {
+      "index": -197040,
+      "liquidityNet": "-29616602978194",
+      "liquidityGross": "409631196090008"
+    },
+    {
+      "index": -196980,
+      "liquidityNet": "-17648246523937143",
+      "liquidityGross": "18317863355744497"
+    },
+    {
+      "index": -196920,
+      "liquidityNet": "-5445068960123894",
+      "liquidityGross": "6195675841737934"
+    },
+    {
+      "index": -196860,
+      "liquidityNet": "1695429226478284",
+      "liquidityGross": "3544474123407930"
+    },
+    {
+      "index": -196800,
+      "liquidityNet": "117190784226230",
+      "liquidityGross": "4889428647491266"
+    },
+    {
+      "index": -196740,
+      "liquidityNet": "-2118721728959585",
+      "liquidityGross": "2171870305350807"
+    },
+    {
+      "index": -196680,
+      "liquidityNet": "-163290047278260878",
+      "liquidityGross": "163839744908396844"
+    },
+    {
+      "index": -196620,
+      "liquidityNet": "-202433176272777",
+      "liquidityGross": "4277100972892713"
+    },
+    {
+      "index": -196560,
+      "liquidityNet": "233231184813879",
+      "liquidityGross": "344413301597173"
+    },
+    {
+      "index": -196500,
+      "liquidityNet": "-86006717884097023",
+      "liquidityGross": "93036598107435487"
+    },
+    {
+      "index": -196440,
+      "liquidityNet": "-5427710845102248",
+      "liquidityGross": "5596039622516576"
+    },
+    {
+      "index": -196380,
+      "liquidityNet": "-415987703858078",
+      "liquidityGross": "415987703858078"
+    },
+    {
+      "index": -196320,
+      "liquidityNet": "1186409111547062",
+      "liquidityGross": "2084278421285750"
+    },
+    {
+      "index": -196260,
+      "liquidityNet": "-2621852059219549",
+      "liquidityGross": "10800004666016125"
+    },
+    {
+      "index": -196200,
+      "liquidityNet": "-668973874908855",
+      "liquidityGross": "3342710517232807"
+    },
+    {
+      "index": -196140,
+      "liquidityNet": "-541599700830064",
+      "liquidityGross": "595069879815314"
+    },
+    {
+      "index": -196080,
+      "liquidityNet": "-13495560693575686",
+      "liquidityGross": "18420135389573966"
+    },
+    {
+      "index": -196020,
+      "liquidityNet": "110895079567508",
+      "liquidityGross": "216503133032730"
+    },
+    {
+      "index": -195960,
+      "liquidityNet": "-274729201618558",
+      "liquidityGross": "685146114975184"
+    },
+    {
+      "index": -195900,
+      "liquidityNet": "-4130918462995357",
+      "liquidityGross": "4624899896161495"
+    },
+    {
+      "index": -195840,
+      "liquidityNet": "706264016223079",
+      "liquidityGross": "1392043123909127"
+    },
+    {
+      "index": -195780,
+      "liquidityNet": "84205417229021",
+      "liquidityGross": "1454138340619245"
+    },
+    {
+      "index": -195720,
+      "liquidityNet": "-1249720370584451",
+      "liquidityGross": "1279874270484569"
+    },
+    {
+      "index": -195660,
+      "liquidityNet": "-744046238439373",
+      "liquidityGross": "744046238439373"
+    },
+    {
+      "index": -195600,
+      "liquidityNet": "-64512872056567977",
+      "liquidityGross": "70276198570230255"
+    },
+    {
+      "index": -195540,
+      "liquidityNet": "86566535324785",
+      "liquidityGross": "114173849267025"
+    },
+    {
+      "index": -195480,
+      "liquidityNet": "139441158105103",
+      "liquidityGross": "323445457002085"
+    },
+    {
+      "index": -195420,
+      "liquidityNet": "-417772668707191",
+      "liquidityGross": "417772668707191"
+    },
+    {
+      "index": -195360,
+      "liquidityNet": "-813914092987549",
+      "liquidityGross": "865884036337889"
+    },
+    {
+      "index": -195300,
+      "liquidityNet": "-774218074715315",
+      "liquidityGross": "3006850846054319"
+    },
+    {
+      "index": -195240,
+      "liquidityNet": "-965586866638770",
+      "liquidityGross": "2096699057244084"
+    },
+    {
+      "index": -195180,
+      "liquidityNet": "418946710180298",
+      "liquidityGross": "618836381694108"
+    },
+    {
+      "index": -195120,
+      "liquidityNet": "82637703962811",
+      "liquidityGross": "732850297470369"
+    },
+    {
+      "index": -195060,
+      "liquidityNet": "1513094964608254",
+      "liquidityGross": "1599662733806702"
+    },
+    {
+      "index": -195000,
+      "liquidityNet": "3362255115125573",
+      "liquidityGross": "4855464458211799"
+    },
+    {
+      "index": -194940,
+      "liquidityNet": "1425580400683290",
+      "liquidityGross": "8655024047748630"
+    },
+    {
+      "index": -194880,
+      "liquidityNet": "-1029440539397205",
+      "liquidityGross": "5319084233752617"
+    },
+    {
+      "index": -194820,
+      "liquidityNet": "-6165623485233552",
+      "liquidityGross": "7143982952517090"
+    },
+    {
+      "index": -194760,
+      "liquidityNet": "581502245074541",
+      "liquidityGross": "2736551916368975"
+    },
+    {
+      "index": -194700,
+      "liquidityNet": "-4766053193484823",
+      "liquidityGross": "6656841363734955"
+    },
+    {
+      "index": -194640,
+      "liquidityNet": "-7452091882669344",
+      "liquidityGross": "8381140616190090"
+    },
+    {
+      "index": -194580,
+      "liquidityNet": "-1648749401486174",
+      "liquidityGross": "1912394057312006"
+    },
+    {
+      "index": -194520,
+      "liquidityNet": "57280212901233",
+      "liquidityGross": "1567361230564067"
+    },
+    {
+      "index": -194460,
+      "liquidityNet": "-589486649668934",
+      "liquidityGross": "591736083965230"
+    },
+    {
+      "index": -194400,
+      "liquidityNet": "-10545768900411403",
+      "liquidityGross": "10548424776102155"
+    },
+    {
+      "index": -194340,
+      "liquidityNet": "-1485380306587690",
+      "liquidityGross": "1504957018554242"
+    },
+    {
+      "index": -194280,
+      "liquidityNet": "81100768725528019",
+      "liquidityGross": "82656514307177007"
+    },
+    {
+      "index": -194220,
+      "liquidityNet": "-3505703657271192",
+      "liquidityGross": "3506310219247486"
+    },
+    {
+      "index": -194160,
+      "liquidityNet": "5109117603631576",
+      "liquidityGross": "7623920004941704"
+    },
+    {
+      "index": -194100,
+      "liquidityNet": "4562159018538902",
+      "liquidityGross": "4610914693588688"
+    },
+    {
+      "index": -194040,
+      "liquidityNet": "-5633503797193498",
+      "liquidityGross": "5661750333392646"
+    },
+    {
+      "index": -193980,
+      "liquidityNet": "-1869309263814467",
+      "liquidityGross": "1869309263814467"
+    },
+    {
+      "index": -193920,
+      "liquidityNet": "-1383187177555049",
+      "liquidityGross": "1503552829359523"
+    },
+    {
+      "index": -193860,
+      "liquidityNet": "-26065641023791309",
+      "liquidityGross": "26065641023791309"
+    },
+    {
+      "index": -193800,
+      "liquidityNet": "109222227099203",
+      "liquidityGross": "355757811719291"
+    },
+    {
+      "index": -193740,
+      "liquidityNet": "-1173810588367855",
+      "liquidityGross": "1173810588367855"
+    },
+    {
+      "index": -193680,
+      "liquidityNet": "-3713167761384278",
+      "liquidityGross": "3714714392438688"
+    },
+    {
+      "index": -193620,
+      "liquidityNet": "-315280582632246",
+      "liquidityGross": "949177887187652"
+    },
+    {
+      "index": -193560,
+      "liquidityNet": "-40525550026821529",
+      "liquidityGross": "40728166273174649"
+    },
+    {
+      "index": -193500,
+      "liquidityNet": "-275618266146714",
+      "liquidityGross": "1485083553332506"
+    },
+    {
+      "index": -193440,
+      "liquidityNet": "-53023269251057",
+      "liquidityGross": "53023269251057"
+    },
+    {
+      "index": -193380,
+      "liquidityNet": "-7691505847029116",
+      "liquidityGross": "12221676422717042"
+    },
+    {
+      "index": -193320,
+      "liquidityNet": "-1837279414469689",
+      "liquidityGross": "1837279414469689"
+    },
+    {
+      "index": -193260,
+      "liquidityNet": "-108792346794038782",
+      "liquidityGross": "130379378534981512"
+    },
+    {
+      "index": -193200,
+      "liquidityNet": "-163455417767854",
+      "liquidityGross": "285944375087208"
+    },
+    {
+      "index": -193140,
+      "liquidityNet": "-3220383347308224",
+      "liquidityGross": "3243572293671502"
+    },
+    {
+      "index": -193080,
+      "liquidityNet": "-11245235258832373",
+      "liquidityGross": "11245235258832373"
+    },
+    {
+      "index": -193020,
+      "liquidityNet": "-143091024288107",
+      "liquidityGross": "143091024288107"
+    },
+    {
+      "index": -192960,
+      "liquidityNet": "-1420572898687412",
+      "liquidityGross": "1437504900789982"
+    },
+    {
+      "index": -192900,
+      "liquidityNet": "-16415871357273965",
+      "liquidityGross": "16415871357273965"
+    },
+    {
+      "index": -192840,
+      "liquidityNet": "-2082679938061999",
+      "liquidityGross": "2082679938061999"
+    },
+    {
+      "index": -192780,
+      "liquidityNet": "-72556406468647",
+      "liquidityGross": "72556406468647"
+    },
+    {
+      "index": -192720,
+      "liquidityNet": "-725908764365218",
+      "liquidityGross": "725908764365218"
+    },
+    {
+      "index": -192660,
+      "liquidityNet": "-176425689507572",
+      "liquidityGross": "176425689507572"
+    },
+    {
+      "index": -192600,
+      "liquidityNet": "-68546925772131",
+      "liquidityGross": "68546925772131"
+    },
+    {
+      "index": -192540,
+      "liquidityNet": "-140200346560307",
+      "liquidityGross": "140200346560307"
+    },
+    {
+      "index": -192480,
+      "liquidityNet": "-3243365216192",
+      "liquidityGross": "3243365216192"
+    },
+    {
+      "index": -192420,
+      "liquidityNet": "-77955455625628",
+      "liquidityGross": "77955455625628"
+    },
+    {
+      "index": -192360,
+      "liquidityNet": "2060751219889350",
+      "liquidityGross": "2111829776093610"
+    },
+    {
+      "index": -192300,
+      "liquidityNet": "-5079480694427",
+      "liquidityGross": "5079480694427"
+    },
+    {
+      "index": -192240,
+      "liquidityNet": "-40477287536174",
+      "liquidityGross": "40477287536174"
+    },
+    {
+      "index": -192180,
+      "liquidityNet": "-765488569340175867",
+      "liquidityGross": "765488569340175867"
+    },
+    {
+      "index": -192120,
+      "liquidityNet": "-625134506346193",
+      "liquidityGross": "625134506346193"
+    },
+    {
+      "index": -192060,
+      "liquidityNet": "-4896992528151115",
+      "liquidityGross": "4896992528151115"
+    },
+    {
+      "index": -192000,
+      "liquidityNet": "-68146542180117",
+      "liquidityGross": "207777842432685"
+    },
+    {
+      "index": -191940,
+      "liquidityNet": "89212266755420",
+      "liquidityGross": "188004451836090"
+    },
+    {
+      "index": -191880,
+      "liquidityNet": "-50593598479338",
+      "liquidityGross": "50593598479338"
+    },
+    {
+      "index": -191820,
+      "liquidityNet": "-2222801144873",
+      "liquidityGross": "2222801144873"
+    },
+    {
+      "index": -191760,
+      "liquidityNet": "-481682987418404",
+      "liquidityGross": "481682987418404"
+    },
+    {
+      "index": -191700,
+      "liquidityNet": "-2100919211745887",
+      "liquidityGross": "2100919211745887"
+    },
+    {
+      "index": -191640,
+      "liquidityNet": "-71257018678188",
+      "liquidityGross": "71257018678188"
+    },
+    {
+      "index": -191580,
+      "liquidityNet": "-119629847480603",
+      "liquidityGross": "119629847480603"
+    },
+    {
+      "index": -191520,
+      "liquidityNet": "-203660664481217",
+      "liquidityGross": "203660664481217"
+    },
+    {
+      "index": -191460,
+      "liquidityNet": "-11667375394359907",
+      "liquidityGross": "11667375394359907"
+    },
+    {
+      "index": -191400,
+      "liquidityNet": "-288739933919816",
+      "liquidityGross": "288739933919816"
+    },
+    {
+      "index": -191340,
+      "liquidityNet": "-148148186546821",
+      "liquidityGross": "148148186546821"
+    },
+    {
+      "index": -191280,
+      "liquidityNet": "-20615182916141",
+      "liquidityGross": "20615182916141"
+    },
+    {
+      "index": -191220,
+      "liquidityNet": "-2798034926632830",
+      "liquidityGross": "2798034926632830"
+    },
+    {
+      "index": -191160,
+      "liquidityNet": "-159562316733828420",
+      "liquidityGross": "159562316733828420"
+    },
+    {
+      "index": -191100,
+      "liquidityNet": "1929409151536676",
+      "liquidityGross": "5180230290910986"
+    },
+    {
+      "index": -191040,
+      "liquidityNet": "-386312439588710",
+      "liquidityGross": "386312439588710"
+    },
+    {
+      "index": -190980,
+      "liquidityNet": "-3676228126718529",
+      "liquidityGross": "3676228126718529"
+    },
+    {
+      "index": -190920,
+      "liquidityNet": "-75163337472404",
+      "liquidityGross": "75163337472404"
+    },
+    {
+      "index": -190860,
+      "liquidityNet": "-35605256898172",
+      "liquidityGross": "35605256898172"
+    },
+    {
+      "index": -190800,
+      "liquidityNet": "-649508951167526",
+      "liquidityGross": "649508951167526"
+    },
+    {
+      "index": -190740,
+      "liquidityNet": "-342083874938053",
+      "liquidityGross": "342083874938053"
+    },
+    {
+      "index": -190620,
+      "liquidityNet": "-6418404664175",
+      "liquidityGross": "6418404664175"
+    },
+    {
+      "index": -190560,
+      "liquidityNet": "-414708194836",
+      "liquidityGross": "414708194836"
+    },
+    {
+      "index": -190500,
+      "liquidityNet": "-18585103384300",
+      "liquidityGross": "18585103384300"
+    },
+    {
+      "index": -190440,
+      "liquidityNet": "-4255982688381",
+      "liquidityGross": "4255982688381"
+    },
+    {
+      "index": -190380,
+      "liquidityNet": "-7294209536959",
+      "liquidityGross": "7294209536959"
+    },
+    {
+      "index": -190320,
+      "liquidityNet": "-1021581656436",
+      "liquidityGross": "1021581656436"
+    },
+    {
+      "index": -190260,
+      "liquidityNet": "-8322660016695",
+      "liquidityGross": "8322660016695"
+    },
+    {
+      "index": -190200,
+      "liquidityNet": "-3424929368894164",
+      "liquidityGross": "3424929368894164"
+    },
+    {
+      "index": -190140,
+      "liquidityNet": "-10676963081124",
+      "liquidityGross": "10676963081124"
+    },
+    {
+      "index": -190020,
+      "liquidityNet": "-1335929764828",
+      "liquidityGross": "1335929764828"
+    },
+    {
+      "index": -189960,
+      "liquidityNet": "-8054561727",
+      "liquidityGross": "8054561727"
+    },
+    {
+      "index": -189900,
+      "liquidityNet": "-318623522566428",
+      "liquidityGross": "318623522566428"
+    },
+    {
+      "index": -189840,
+      "liquidityNet": "-24291467379008173",
+      "liquidityGross": "24291467379008173"
+    },
+    {
+      "index": -189780,
+      "liquidityNet": "-1030044623768608",
+      "liquidityGross": "1046242917329136"
+    },
+    {
+      "index": -189660,
+      "liquidityNet": "-84127511746768",
+      "liquidityGross": "84127511746768"
+    },
+    {
+      "index": -189600,
+      "liquidityNet": "-1954725364664087",
+      "liquidityGross": "1954725364664087"
+    },
+    {
+      "index": -189540,
+      "liquidityNet": "-4276090798778454",
+      "liquidityGross": "4276090798778454"
+    },
+    {
+      "index": -189480,
+      "liquidityNet": "-104148426354084",
+      "liquidityGross": "104148426354084"
+    },
+    {
+      "index": -189420,
+      "liquidityNet": "-326182744063625",
+      "liquidityGross": "326182744063625"
+    },
+    {
+      "index": -189360,
+      "liquidityNet": "-70781085413638",
+      "liquidityGross": "70781085413638"
+    },
+    {
+      "index": -189300,
+      "liquidityNet": "-6595520750846168",
+      "liquidityGross": "6616988284235242"
+    },
+    {
+      "index": -189240,
+      "liquidityNet": "-19700585957297",
+      "liquidityGross": "19700585957297"
+    },
+    {
+      "index": -189180,
+      "liquidityNet": "-38382949932023",
+      "liquidityGross": "38382949932023"
+    },
+    {
+      "index": -189120,
+      "liquidityNet": "-21784527427995",
+      "liquidityGross": "21784527427995"
+    },
+    {
+      "index": -189060,
+      "liquidityNet": "-167119013798980",
+      "liquidityGross": "167119013798980"
+    },
+    {
+      "index": -189000,
+      "liquidityNet": "-121034513220501",
+      "liquidityGross": "121034513220501"
+    },
+    {
+      "index": -188940,
+      "liquidityNet": "-18297671406657",
+      "liquidityGross": "18297671406657"
+    },
+    {
+      "index": -188880,
+      "liquidityNet": "-410645655676686",
+      "liquidityGross": "410645655676686"
+    },
+    {
+      "index": -188820,
+      "liquidityNet": "-616027131150843",
+      "liquidityGross": "616027131150843"
+    },
+    {
+      "index": -188760,
+      "liquidityNet": "-129873602089645",
+      "liquidityGross": "129873602089645"
+    },
+    {
+      "index": -188700,
+      "liquidityNet": "-18414973565658",
+      "liquidityGross": "18414973565658"
+    },
+    {
+      "index": -188640,
+      "liquidityNet": "-99613691413409",
+      "liquidityGross": "99613691413409"
+    },
+    {
+      "index": -188580,
+      "liquidityNet": "-44093548359054",
+      "liquidityGross": "44093548359054"
+    },
+    {
+      "index": -188520,
+      "liquidityNet": "-34868414210468",
+      "liquidityGross": "34868414210468"
+    },
+    {
+      "index": -188460,
+      "liquidityNet": "-474040445296241",
+      "liquidityGross": "474040445296241"
+    },
+    {
+      "index": -188400,
+      "liquidityNet": "-105729402025633",
+      "liquidityGross": "105729402025633"
+    },
+    {
+      "index": -188340,
+      "liquidityNet": "-63721651885707",
+      "liquidityGross": "63721651885707"
+    },
+    {
+      "index": -188280,
+      "liquidityNet": "-49516193344829",
+      "liquidityGross": "49516193344829"
+    },
+    {
+      "index": -188220,
+      "liquidityNet": "-450842528535747",
+      "liquidityGross": "450842528535747"
+    },
+    {
+      "index": -188160,
+      "liquidityNet": "-27736552162771",
+      "liquidityGross": "27736552162771"
+    },
+    {
+      "index": -188100,
+      "liquidityNet": "-10091636971423",
+      "liquidityGross": "10091636971423"
+    },
+    {
+      "index": -188040,
+      "liquidityNet": "-39734781901596",
+      "liquidityGross": "39734781901596"
+    },
+    {
+      "index": -187980,
+      "liquidityNet": "-1332905988210556",
+      "liquidityGross": "1332905988210556"
+    },
+    {
+      "index": -187800,
+      "liquidityNet": "-5621650429093489",
+      "liquidityGross": "5621650429093489"
+    },
+    {
+      "index": -187740,
+      "liquidityNet": "-6947341031030",
+      "liquidityGross": "6947341031030"
+    },
+    {
+      "index": -187680,
+      "liquidityNet": "-7842646153578",
+      "liquidityGross": "7842646153578"
+    },
+    {
+      "index": -187620,
+      "liquidityNet": "-3247663579240",
+      "liquidityGross": "3247663579240"
+    },
+    {
+      "index": -187560,
+      "liquidityNet": "-197091072891",
+      "liquidityGross": "197091072891"
+    },
+    {
+      "index": -187500,
+      "liquidityNet": "-24011432361167",
+      "liquidityGross": "24011432361167"
+    },
+    {
+      "index": -187380,
+      "liquidityNet": "-8493414276618",
+      "liquidityGross": "8493414276618"
+    },
+    {
+      "index": -187320,
+      "liquidityNet": "-1347949138046",
+      "liquidityGross": "1347949138046"
+    },
+    {
+      "index": -187260,
+      "liquidityNet": "-415605609934714",
+      "liquidityGross": "415605609934714"
+    },
+    {
+      "index": -187200,
+      "liquidityNet": "-48783747154743",
+      "liquidityGross": "48783747154743"
+    },
+    {
+      "index": -187080,
+      "liquidityNet": "-467705431065401",
+      "liquidityGross": "467705431065401"
+    },
+    {
+      "index": -187020,
+      "liquidityNet": "-557533062167",
+      "liquidityGross": "557533062167"
+    },
+    {
+      "index": -186960,
+      "liquidityNet": "-63072949348318",
+      "liquidityGross": "63072949348318"
+    },
+    {
+      "index": -186900,
+      "liquidityNet": "-1057003493864",
+      "liquidityGross": "1057003493864"
+    },
+    {
+      "index": -186840,
+      "liquidityNet": "-105521880599341",
+      "liquidityGross": "105521880599341"
+    },
+    {
+      "index": -186780,
+      "liquidityNet": "-4002226868564",
+      "liquidityGross": "4002226868564"
+    },
+    {
+      "index": -186720,
+      "liquidityNet": "-4065859666878",
+      "liquidityGross": "4065859666878"
+    },
+    {
+      "index": -186660,
+      "liquidityNet": "-8386915623586",
+      "liquidityGross": "8386915623586"
+    },
+    {
+      "index": -186600,
+      "liquidityNet": "-1867498199101",
+      "liquidityGross": "1867498199101"
+    },
+    {
+      "index": -186420,
+      "liquidityNet": "-9736679161895528",
+      "liquidityGross": "9736679161895528"
+    },
+    {
+      "index": -186360,
+      "liquidityNet": "-117227623037154",
+      "liquidityGross": "117227623037154"
+    },
+    {
+      "index": -186300,
+      "liquidityNet": "-10723488439",
+      "liquidityGross": "10723488439"
+    },
+    {
+      "index": -186180,
+      "liquidityNet": "-219572987291925",
+      "liquidityGross": "219572987291925"
+    },
+    {
+      "index": -186120,
+      "liquidityNet": "-4380112439744",
+      "liquidityGross": "4380112439744"
+    },
+    {
+      "index": -186000,
+      "liquidityNet": "-9053251100640",
+      "liquidityGross": "9053251100640"
+    },
+    {
+      "index": -185940,
+      "liquidityNet": "-219370164646571",
+      "liquidityGross": "219370164646571"
+    },
+    {
+      "index": -185880,
+      "liquidityNet": "-1931239309253574",
+      "liquidityGross": "1931239309253574"
+    },
+    {
+      "index": -185820,
+      "liquidityNet": "-521252140303",
+      "liquidityGross": "521252140303"
+    },
+    {
+      "index": -185700,
+      "liquidityNet": "-5931973531338",
+      "liquidityGross": "5931973531338"
+    },
+    {
+      "index": -185640,
+      "liquidityNet": "-433624482465946",
+      "liquidityGross": "433624482465946"
+    },
+    {
+      "index": -185280,
+      "liquidityNet": "-114495774337573",
+      "liquidityGross": "114495774337573"
+    },
+    {
+      "index": -185220,
+      "liquidityNet": "-123127999485086",
+      "liquidityGross": "123127999485086"
+    },
+    {
+      "index": -185040,
+      "liquidityNet": "-8626383512264",
+      "liquidityGross": "8626383512264"
+    },
+    {
+      "index": -184980,
+      "liquidityNet": "-22132326417264",
+      "liquidityGross": "22132326417264"
+    },
+    {
+      "index": -184800,
+      "liquidityNet": "-6394597126464419",
+      "liquidityGross": "6394597126464419"
+    },
+    {
+      "index": -184680,
+      "liquidityNet": "-2083015061489",
+      "liquidityGross": "2083015061489"
+    },
+    {
+      "index": -184260,
+      "liquidityNet": "5554715835757",
+      "liquidityGross": "5554715835757"
+    },
+    {
+      "index": -184200,
+      "liquidityNet": "-2148222855230411",
+      "liquidityGross": "2148222855230411"
+    },
+    {
+      "index": -184140,
+      "liquidityNet": "-5554715835757",
+      "liquidityGross": "5554715835757"
+    },
+    {
+      "index": -184020,
+      "liquidityNet": "-80929223546",
+      "liquidityGross": "80929223546"
+    },
+    {
+      "index": -183900,
+      "liquidityNet": "-43007766552636101",
+      "liquidityGross": "43007766552636101"
+    },
+    {
+      "index": -183480,
+      "liquidityNet": "-6984274581454",
+      "liquidityGross": "6984274581454"
+    },
+    {
+      "index": -183360,
+      "liquidityNet": "-187933296866",
+      "liquidityGross": "187933296866"
+    },
+    {
+      "index": -183180,
+      "liquidityNet": "-7236691024809",
+      "liquidityGross": "7236691024809"
+    },
+    {
+      "index": -181980,
+      "liquidityNet": "-335814617560660",
+      "liquidityGross": "335814617560660"
+    },
+    {
+      "index": -181680,
+      "liquidityNet": "-1353999612378",
+      "liquidityGross": "1353999612378"
+    },
+    {
+      "index": -181200,
+      "liquidityNet": "-113529433229",
+      "liquidityGross": "113529433229"
+    },
+    {
+      "index": -180840,
+      "liquidityNet": "-356799964643315",
+      "liquidityGross": "356799964643315"
+    },
+    {
+      "index": -180180,
+      "liquidityNet": "-59450986033681",
+      "liquidityGross": "59450986033681"
+    },
+    {
+      "index": -180120,
+      "liquidityNet": "-303984595577",
+      "liquidityGross": "303984595577"
+    },
+    {
+      "index": -179520,
+      "liquidityNet": "-14760697187118",
+      "liquidityGross": "14760697187118"
+    },
+    {
+      "index": -178620,
+      "liquidityNet": "-61251050720994",
+      "liquidityGross": "61251050720994"
+    },
+    {
+      "index": -178320,
+      "liquidityNet": "-177280162046764",
+      "liquidityGross": "177280162046764"
+    },
+    {
+      "index": -177480,
+      "liquidityNet": "-127005211380300",
+      "liquidityGross": "127005211380300"
+    },
+    {
+      "index": -177300,
+      "liquidityNet": "-270133945598659",
+      "liquidityGross": "270133945598659"
+    },
+    {
+      "index": -175080,
+      "liquidityNet": "-102585541689",
+      "liquidityGross": "102585541689"
+    },
+    {
+      "index": -175020,
+      "liquidityNet": "-125013686619150",
+      "liquidityGross": "125013686619150"
+    },
+    {
+      "index": -174900,
+      "liquidityNet": "-35264576526227",
+      "liquidityGross": "35264576526227"
+    },
+    {
+      "index": -174000,
+      "liquidityNet": "-7083531680537",
+      "liquidityGross": "7083531680537"
+    },
+    {
+      "index": -161160,
+      "liquidityNet": "-28089184550676",
+      "liquidityGross": "28089184550676"
+    },
+    {
+      "index": -153360,
+      "liquidityNet": "-2786887277176",
+      "liquidityGross": "2786887277176"
+    },
+    {
+      "index": -138180,
+      "liquidityNet": "-288120465862",
+      "liquidityGross": "288120465862"
+    },
+    {
+      "index": -115140,
+      "liquidityNet": "-17388473740",
+      "liquidityGross": "17388473740"
+    },
+    {
+      "index": -115080,
+      "liquidityNet": "-17389547040",
+      "liquidityGross": "17389547040"
+    },
+    {
+      "index": -70140,
+      "liquidityNet": "-17496133052",
+      "liquidityGross": "17496133052"
+    },
+    {
+      "index": -46080,
+      "liquidityNet": "-4986272703292",
+      "liquidityGross": "4986272703292"
+    },
+    {
+      "index": -19980,
+      "liquidityNet": "216558840797888217",
+      "liquidityGross": "216558840797888217"
+    },
+    {
+      "index": 18000,
+      "liquidityNet": "-216558840797888217",
+      "liquidityGross": "216558840797888217"
+    },
+    {
+      "index": 46080,
+      "liquidityNet": "-11571161531075",
+      "liquidityGross": "11571161531075"
+    },
+    {
+      "index": 60000,
+      "liquidityNet": "1006622141407037933",
+      "liquidityGross": "1006622141407037933"
+    },
+    {
+      "index": 70140,
+      "liquidityNet": "-968399120497163",
+      "liquidityGross": "968399120497163"
+    },
+    {
+      "index": 74160,
+      "liquidityNet": "47365088727841353",
+      "liquidityGross": "47365088727841353"
+    },
+    {
+      "index": 75960,
+      "liquidityNet": "-47365088727841353",
+      "liquidityGross": "47365088727841353"
+    },
+    {
+      "index": 81660,
+      "liquidityNet": "9915356752940611347",
+      "liquidityGross": "9915356752940611347"
+    },
+    {
+      "index": 81780,
+      "liquidityNet": "59667982119728326",
+      "liquidityGross": "19890381488000951020"
+    },
+    {
+      "index": 81900,
+      "liquidityNet": "-9975024735060339673",
+      "liquidityGross": "9975024735060339673"
+    },
+    {
+      "index": 82440,
+      "liquidityNet": "257741879600571692937",
+      "liquidityGross": "257741879600571692937"
+    },
+    {
+      "index": 82560,
+      "liquidityNet": "-257741879600571692937",
+      "liquidityGross": "257741879600571692937"
+    },
+    {
+      "index": 180000,
+      "liquidityNet": "-1006622141407037933",
+      "liquidityGross": "1006622141407037933"
+    },
+    {
+      "index": 887220,
+      "liquidityNet": "-768060989412727",
+      "liquidityGross": "768060989412727"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "4083713946130",
+      "exactInput": true,
+      "expectedAmountCalculated": "2069611915767894753992"
+    },
+    {
+      "amountSpecified": "22966870124241",
+      "exactInput": true,
+      "expectedAmountCalculated": "9780419759973521847084"
+    },
+    {
+      "amountSpecified": "5977782905614",
+      "exactInput": true,
+      "expectedAmountCalculated": "2984055573484912307135"
+    },
+    {
+      "amountSpecified": "10288615495890",
+      "exactInput": true,
+      "expectedAmountCalculated": "4951790646377136203971"
+    },
+    {
+      "amountSpecified": "13256515455983",
+      "exactInput": true,
+      "expectedAmountCalculated": "6209961998087953365350"
+    },
+    {
+      "amountSpecified": "22711544678697",
+      "exactInput": true,
+      "expectedAmountCalculated": "9697151640288662741330"
+    },
+    {
+      "amountSpecified": "24572954542900",
+      "exactInput": true,
+      "expectedAmountCalculated": "10291161713545679658907"
+    },
+    {
+      "amountSpecified": "7139539145829",
+      "exactInput": true,
+      "expectedAmountCalculated": "3530223444779787838696"
+    },
+    {
+      "amountSpecified": "2975568034735",
+      "exactInput": true,
+      "expectedAmountCalculated": "1520906897943235928099"
+    },
+    {
+      "amountSpecified": "7612380177228",
+      "exactInput": true,
+      "expectedAmountCalculated": "3749207693087427571911"
+    },
+    {
+      "amountSpecified": "1726831670243",
+      "exactInput": true,
+      "expectedAmountCalculated": "890320496714981449558"
+    },
+    {
+      "amountSpecified": "15609347718147",
+      "exactInput": true,
+      "expectedAmountCalculated": "7151068939118087580304"
+    },
+    {
+      "amountSpecified": "20321267470536",
+      "exactInput": true,
+      "expectedAmountCalculated": "8889045708501010608973"
+    },
+    {
+      "amountSpecified": "12620789435235",
+      "exactInput": true,
+      "expectedAmountCalculated": "5947140454759684207957"
+    },
+    {
+      "amountSpecified": "6020289322453",
+      "exactInput": true,
+      "expectedAmountCalculated": "3004235953771611431163"
+    },
+    {
+      "amountSpecified": "11639941914996",
+      "exactInput": true,
+      "expectedAmountCalculated": "5534473733482554682741"
+    },
+    {
+      "amountSpecified": "21971810232617",
+      "exactInput": true,
+      "expectedAmountCalculated": "9452613432667160617236"
+    },
+    {
+      "amountSpecified": "22745573657182",
+      "exactInput": true,
+      "expectedAmountCalculated": "9708282832566231981991"
+    },
+    {
+      "amountSpecified": "21098542547076",
+      "exactInput": true,
+      "expectedAmountCalculated": "9157497282637146030810"
+    },
+    {
+      "amountSpecified": "15817012629629",
+      "exactInput": true,
+      "expectedAmountCalculated": "7231798499830776873636"
+    },
+    {
+      "amountSpecified": "11661326771673",
+      "exactInput": true,
+      "expectedAmountCalculated": "5543563055759589893550"
+    },
+    {
+      "amountSpecified": "24959350873055",
+      "exactInput": true,
+      "expectedAmountCalculated": "10410738955279131808110"
+    },
+    {
+      "amountSpecified": "6131292285962",
+      "exactInput": true,
+      "expectedAmountCalculated": "3056865977172774486529"
+    },
+    {
+      "amountSpecified": "22266992948177",
+      "exactInput": true,
+      "expectedAmountCalculated": "9550785110432620757094"
+    },
+    {
+      "amountSpecified": "25061480919572",
+      "exactInput": true,
+      "expectedAmountCalculated": "10442128536231614715035"
+    },
+    {
+      "amountSpecified": "1789670192712",
+      "exactInput": true,
+      "expectedAmountCalculated": "922366876016161745863"
+    },
+    {
+      "amountSpecified": "23808329123128",
+      "exactInput": true,
+      "expectedAmountCalculated": "10050776711931620422177"
+    },
+    {
+      "amountSpecified": "25071857833235",
+      "exactInput": true,
+      "expectedAmountCalculated": "10445312844253508177194"
+    },
+    {
+      "amountSpecified": "23095484389931",
+      "exactInput": true,
+      "expectedAmountCalculated": "9822144768158510752363"
+    },
+    {
+      "amountSpecified": "4383620299224",
+      "exactInput": true,
+      "expectedAmountCalculated": "2216379336499376746320"
+    },
+    {
+      "amountSpecified": "13892472211053",
+      "exactInput": true,
+      "expectedAmountCalculated": "6469192981619255323019"
+    },
+    {
+      "amountSpecified": "14011515362482",
+      "exactInput": true,
+      "expectedAmountCalculated": "6517312137774247468918"
+    },
+    {
+      "amountSpecified": "15929766186116",
+      "exactInput": true,
+      "expectedAmountCalculated": "7275475395107636748208"
+    },
+    {
+      "amountSpecified": "20801573001971",
+      "exactInput": true,
+      "expectedAmountCalculated": "9055561182729437544184"
+    },
+    {
+      "amountSpecified": "22234276010436",
+      "exactInput": true,
+      "expectedAmountCalculated": "9539943063033291836091"
+    },
+    {
+      "amountSpecified": "16908509366030",
+      "exactInput": true,
+      "expectedAmountCalculated": "7649882610427627095275"
+    },
+    {
+      "amountSpecified": "4606716040057",
+      "exactInput": true,
+      "expectedAmountCalculated": "2325082185477732788298"
+    },
+    {
+      "amountSpecified": "10518241717015",
+      "exactInput": true,
+      "expectedAmountCalculated": "5051967001384973357917"
+    },
+    {
+      "amountSpecified": "21511194425965",
+      "exactInput": true,
+      "expectedAmountCalculated": "9297829330354003917558"
+    },
+    {
+      "amountSpecified": "10088011006852",
+      "exactInput": true,
+      "expectedAmountCalculated": "4863881439143078301465"
+    },
+    {
+      "amountSpecified": "5343245529983",
+      "exactInput": true,
+      "expectedAmountCalculated": "2681029210688810574067"
+    },
+    {
+      "amountSpecified": "16705392623255",
+      "exactInput": true,
+      "expectedAmountCalculated": "7572903292049132015772"
+    },
+    {
+      "amountSpecified": "3339777062850",
+      "exactInput": true,
+      "expectedAmountCalculated": "1702367398341962258969"
+    },
+    {
+      "amountSpecified": "23716583664808",
+      "exactInput": true,
+      "expectedAmountCalculated": "10021598625389503051895"
+    },
+    {
+      "amountSpecified": "5171449596057",
+      "exactInput": true,
+      "expectedAmountCalculated": "2598411420602408623037"
+    },
+    {
+      "amountSpecified": "15146756832959",
+      "exactInput": true,
+      "expectedAmountCalculated": "6969895301795825715305"
+    },
+    {
+      "amountSpecified": "4061926152495",
+      "exactInput": true,
+      "expectedAmountCalculated": "2058920860719378160879"
+    },
+    {
+      "amountSpecified": "3963125453282",
+      "exactInput": true,
+      "expectedAmountCalculated": "2010391641779451688083"
+    },
+    {
+      "amountSpecified": "3163019142191",
+      "exactInput": true,
+      "expectedAmountCalculated": "1614439041359017393873"
+    },
+    {
+      "amountSpecified": "11295869219209",
+      "exactInput": true,
+      "expectedAmountCalculated": "5387670835673806126743"
+    },
+    {
+      "amountSpecified": "13843776740266308102813",
+      "exactInput": false,
+      "expectedAmountCalculated": "38254897099527"
+    },
+    {
+      "amountSpecified": "8059015270728957510801",
+      "exactInput": false,
+      "expectedAmountCalculated": "18005125717207"
+    },
+    {
+      "amountSpecified": "2871077163930448400556",
+      "exactInput": false,
+      "expectedAmountCalculated": "5740389295480"
+    },
+    {
+      "amountSpecified": "7423453904709651887853",
+      "exactInput": false,
+      "expectedAmountCalculated": "16313895147966"
+    },
+    {
+      "amountSpecified": "13419730807212704763933",
+      "exactInput": false,
+      "expectedAmountCalculated": "36299146445921"
+    },
+    {
+      "amountSpecified": "4202278632695079277614",
+      "exactInput": false,
+      "expectedAmountCalculated": "8604167123592"
+    },
+    {
+      "amountSpecified": "6542599190914092719475",
+      "exactInput": false,
+      "expectedAmountCalculated": "14074199746831"
+    },
+    {
+      "amountSpecified": "1555033032161956711548",
+      "exactInput": false,
+      "expectedAmountCalculated": "3043893305061"
+    },
+    {
+      "amountSpecified": "988598317879283100462",
+      "exactInput": false,
+      "expectedAmountCalculated": "1919746591609"
+    },
+    {
+      "amountSpecified": "13493158042755417339717",
+      "exactInput": false,
+      "expectedAmountCalculated": "36624297459791"
+    },
+    {
+      "amountSpecified": "9502523010889920341271",
+      "exactInput": false,
+      "expectedAmountCalculated": "22121581219336"
+    },
+    {
+      "amountSpecified": "10545740194533963913584",
+      "exactInput": false,
+      "expectedAmountCalculated": "25400682757562"
+    },
+    {
+      "amountSpecified": "9634555878346501072875",
+      "exactInput": false,
+      "expectedAmountCalculated": "22520767499931"
+    },
+    {
+      "amountSpecified": "10220733071257812114339",
+      "exactInput": false,
+      "expectedAmountCalculated": "24347296598654"
+    },
+    {
+      "amountSpecified": "1185779530012910949468",
+      "exactInput": false,
+      "expectedAmountCalculated": "2308688005715"
+    },
+    {
+      "amountSpecified": "13332533806056407232294",
+      "exactInput": false,
+      "expectedAmountCalculated": "35916837456931"
+    },
+    {
+      "amountSpecified": "3340194501549068345826",
+      "exactInput": false,
+      "expectedAmountCalculated": "6732597733610"
+    },
+    {
+      "amountSpecified": "4814067549843850445784",
+      "exactInput": false,
+      "expectedAmountCalculated": "9974710535161"
+    },
+    {
+      "amountSpecified": "9590460378807270099087",
+      "exactInput": false,
+      "expectedAmountCalculated": "22386966318855"
+    },
+    {
+      "amountSpecified": "2265458867216409058974",
+      "exactInput": false,
+      "expectedAmountCalculated": "4484245346635"
+    },
+    {
+      "amountSpecified": "13536509810537493814842",
+      "exactInput": false,
+      "expectedAmountCalculated": "36817664086301"
+    },
+    {
+      "amountSpecified": "7256344099633427627271",
+      "exactInput": false,
+      "expectedAmountCalculated": "15880343180395"
+    },
+    {
+      "amountSpecified": "4448517792493237543647",
+      "exactInput": false,
+      "expectedAmountCalculated": "9151283629131"
+    },
+    {
+      "amountSpecified": "14482908911011339990705",
+      "exactInput": false,
+      "expectedAmountCalculated": "14173425920816975920860046003832947"
+    },
+    {
+      "amountSpecified": "2454136296434468551665",
+      "exactInput": false,
+      "expectedAmountCalculated": "4872669620543"
+    },
+    {
+      "amountSpecified": "1360057359344783894973",
+      "exactInput": false,
+      "expectedAmountCalculated": "2654566359715"
+    },
+    {
+      "amountSpecified": "6039396183294791880255",
+      "exactInput": false,
+      "expectedAmountCalculated": "12842941409638"
+    },
+    {
+      "amountSpecified": "7282185786193393300131",
+      "exactInput": false,
+      "expectedAmountCalculated": "15947114421176"
+    },
+    {
+      "amountSpecified": "10726580820578139951678",
+      "exactInput": false,
+      "expectedAmountCalculated": "26000512282166"
+    },
+    {
+      "amountSpecified": "1726948206493440263793",
+      "exactInput": false,
+      "expectedAmountCalculated": "3389284112851"
+    },
+    {
+      "amountSpecified": "11534658053725655944947",
+      "exactInput": false,
+      "expectedAmountCalculated": "28808414351909"
+    },
+    {
+      "amountSpecified": "2753191354067670127896",
+      "exactInput": false,
+      "expectedAmountCalculated": "5493720728831"
+    },
+    {
+      "amountSpecified": "13067479399768775468224",
+      "exactInput": false,
+      "expectedAmountCalculated": "34779509123466"
+    },
+    {
+      "amountSpecified": "10376832751425893677833",
+      "exactInput": false,
+      "expectedAmountCalculated": "24849360603784"
+    },
+    {
+      "amountSpecified": "10865490888939658347996",
+      "exactInput": false,
+      "expectedAmountCalculated": "26468135264309"
+    },
+    {
+      "amountSpecified": "5413233800415452969646",
+      "exactInput": false,
+      "expectedAmountCalculated": "11355605221106"
+    },
+    {
+      "amountSpecified": "5588297568387422451936",
+      "exactInput": false,
+      "expectedAmountCalculated": "11766714938669"
+    },
+    {
+      "amountSpecified": "3915994631487450723126",
+      "exactInput": false,
+      "expectedAmountCalculated": "7975348028744"
+    },
+    {
+      "amountSpecified": "13189725458097928676163",
+      "exactInput": false,
+      "expectedAmountCalculated": "35299490254212"
+    },
+    {
+      "amountSpecified": "8179400081406679854453",
+      "exactInput": false,
+      "expectedAmountCalculated": "18333342047349"
+    },
+    {
+      "amountSpecified": "5125733780354151890058",
+      "exactInput": false,
+      "expectedAmountCalculated": "10688036873210"
+    },
+    {
+      "amountSpecified": "8686956007089236433186",
+      "exactInput": false,
+      "expectedAmountCalculated": "19745615384263"
+    },
+    {
+      "amountSpecified": "9422756838718161291765",
+      "exactInput": false,
+      "expectedAmountCalculated": "21882507244824"
+    },
+    {
+      "amountSpecified": "11441823248364281054838",
+      "exactInput": false,
+      "expectedAmountCalculated": "28474726950224"
+    },
+    {
+      "amountSpecified": "5928040163303435847186",
+      "exactInput": false,
+      "expectedAmountCalculated": "12574928944909"
+    },
+    {
+      "amountSpecified": "11438912941015789824948",
+      "exactInput": false,
+      "expectedAmountCalculated": "28464314642239"
+    },
+    {
+      "amountSpecified": "6803216918663042818944",
+      "exactInput": false,
+      "expectedAmountCalculated": "14725340936531"
+    },
+    {
+      "amountSpecified": "6079779768823298611677",
+      "exactInput": false,
+      "expectedAmountCalculated": "12940521661365"
+    },
+    {
+      "amountSpecified": "6497730527681516848281",
+      "exactInput": false,
+      "expectedAmountCalculated": "13963034016985"
+    },
+    {
+      "amountSpecified": "3385239737569754905791",
+      "exactInput": false,
+      "expectedAmountCalculated": "6828782664884"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x4e68Ccd3E89f51C3074ca5072bbAC773960dFa36.json b/src/__tests__/stubs/swap/0x4e68Ccd3E89f51C3074ca5072bbAC773960dFa36.json
new file mode 100644
index 00000000..67aa58b5
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x4e68Ccd3E89f51C3074ca5072bbAC773960dFa36.json
@@ -0,0 +1,3301 @@
+{
+  "poolName": "WETH - USDT 3000",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
+    "decimals": 6
+  },
+  "fee": 3000,
+  "liquidity": "4438799987262768588",
+  "sqrtRatioX96": "3468311863889111281487515",
+  "tickCurrent": -200739,
+  "ticks": [
+    {
+      "index": -887220,
+      "liquidityNet": "875611196495917",
+      "liquidityGross": "875611196495917"
+    },
+    {
+      "index": -414480,
+      "liquidityNet": "3049864731509371",
+      "liquidityGross": "3049864731509371"
+    },
+    {
+      "index": -414240,
+      "liquidityNet": "420172341184",
+      "liquidityGross": "420172341184"
+    },
+    {
+      "index": -413880,
+      "liquidityNet": "6984274581454",
+      "liquidityGross": "6984274581454"
+    },
+    {
+      "index": -391440,
+      "liquidityNet": "4986272703292",
+      "liquidityGross": "4986272703292"
+    },
+    {
+      "index": -368460,
+      "liquidityNet": "11607650128501",
+      "liquidityGross": "11607650128501"
+    },
+    {
+      "index": -361500,
+      "liquidityNet": "7291342873418",
+      "liquidityGross": "7291342873418"
+    },
+    {
+      "index": -357360,
+      "liquidityNet": "55365840142507116",
+      "liquidityGross": "55365840142507116"
+    },
+    {
+      "index": -356400,
+      "liquidityNet": "-55365840142507116",
+      "liquidityGross": "55365840142507116"
+    },
+    {
+      "index": -345420,
+      "liquidityNet": "169948537884090",
+      "liquidityGross": "169948537884090"
+    },
+    {
+      "index": -345240,
+      "liquidityNet": "41616435971610862",
+      "liquidityGross": "41616435971610862"
+    },
+    {
+      "index": -343560,
+      "liquidityNet": "-169948537884090",
+      "liquidityGross": "169948537884090"
+    },
+    {
+      "index": -343200,
+      "liquidityNet": "-41616435971610862",
+      "liquidityGross": "41616435971610862"
+    },
+    {
+      "index": -338460,
+      "liquidityNet": "-7291342873418",
+      "liquidityGross": "7291342873418"
+    },
+    {
+      "index": -323400,
+      "liquidityNet": "17069717179",
+      "liquidityGross": "17069717179"
+    },
+    {
+      "index": -322380,
+      "liquidityNet": "383344368069245",
+      "liquidityGross": "383344368069245"
+    },
+    {
+      "index": -320580,
+      "liquidityNet": "-383344368069245",
+      "liquidityGross": "383344368069245"
+    },
+    {
+      "index": -300420,
+      "liquidityNet": "17148019954",
+      "liquidityGross": "17148019954"
+    },
+    {
+      "index": -299340,
+      "liquidityNet": "5508389560097",
+      "liquidityGross": "5508389560097"
+    },
+    {
+      "index": -295440,
+      "liquidityNet": "1309614878062",
+      "liquidityGross": "1309614878062"
+    },
+    {
+      "index": -292440,
+      "liquidityNet": "1803579396721",
+      "liquidityGross": "1803579396721"
+    },
+    {
+      "index": -277380,
+      "liquidityNet": "594609443512",
+      "liquidityGross": "594609443512"
+    },
+    {
+      "index": -276420,
+      "liquidityNet": "996550885",
+      "liquidityGross": "996550885"
+    },
+    {
+      "index": -276360,
+      "liquidityNet": "4207654904977",
+      "liquidityGross": "4207654904977"
+    },
+    {
+      "index": -276300,
+      "liquidityNet": "28124906806901",
+      "liquidityGross": "31732065600343"
+    },
+    {
+      "index": -260220,
+      "liquidityNet": "7166286345721",
+      "liquidityGross": "7166286345721"
+    },
+    {
+      "index": -259860,
+      "liquidityNet": "17496133052",
+      "liquidityGross": "17496133052"
+    },
+    {
+      "index": -237180,
+      "liquidityNet": "342909760817",
+      "liquidityGross": "342909760817"
+    },
+    {
+      "index": -230280,
+      "liquidityNet": "15873798707626",
+      "liquidityGross": "16580282352852"
+    },
+    {
+      "index": -230220,
+      "liquidityNet": "73382200827",
+      "liquidityGross": "73382200827"
+    },
+    {
+      "index": -226860,
+      "liquidityNet": "577563616151994",
+      "liquidityGross": "577563616151994"
+    },
+    {
+      "index": -226200,
+      "liquidityNet": "796052262357896",
+      "liquidityGross": "796052262357896"
+    },
+    {
+      "index": -224580,
+      "liquidityNet": "61251050720994",
+      "liquidityGross": "61251050720994"
+    },
+    {
+      "index": -223980,
+      "liquidityNet": "2150345848697",
+      "liquidityGross": "2150345848697"
+    },
+    {
+      "index": -223320,
+      "liquidityNet": "24574512205762",
+      "liquidityGross": "24574512205762"
+    },
+    {
+      "index": -222180,
+      "liquidityNet": "9635129523749",
+      "liquidityGross": "9635129523749"
+    },
+    {
+      "index": -221160,
+      "liquidityNet": "14495486044758",
+      "liquidityGross": "14495486044758"
+    },
+    {
+      "index": -220200,
+      "liquidityNet": "30012473174",
+      "liquidityGross": "30012473174"
+    },
+    {
+      "index": -219600,
+      "liquidityNet": "14760697187118",
+      "liquidityGross": "14760697187118"
+    },
+    {
+      "index": -219480,
+      "liquidityNet": "1931239309253574",
+      "liquidityGross": "1931239309253574"
+    },
+    {
+      "index": -219300,
+      "liquidityNet": "212544738572991",
+      "liquidityGross": "212544738572991"
+    },
+    {
+      "index": -217320,
+      "liquidityNet": "3821406503805",
+      "liquidityGross": "3821406503805"
+    },
+    {
+      "index": -217140,
+      "liquidityNet": "15594316072341",
+      "liquidityGross": "15594316072341"
+    },
+    {
+      "index": -216420,
+      "liquidityNet": "304824875444260",
+      "liquidityGross": "304824875444260"
+    },
+    {
+      "index": -216360,
+      "liquidityNet": "8389917034588",
+      "liquidityGross": "8389917034588"
+    },
+    {
+      "index": -216300,
+      "liquidityNet": "63316182385296",
+      "liquidityGross": "63316182385296"
+    },
+    {
+      "index": -215820,
+      "liquidityNet": "22170868763629",
+      "liquidityGross": "22170868763629"
+    },
+    {
+      "index": -215580,
+      "liquidityNet": "12401813790374",
+      "liquidityGross": "12401813790374"
+    },
+    {
+      "index": -215460,
+      "liquidityNet": "8557713000433",
+      "liquidityGross": "8557713000433"
+    },
+    {
+      "index": -215400,
+      "liquidityNet": "17362920264",
+      "liquidityGross": "17362920264"
+    },
+    {
+      "index": -214980,
+      "liquidityNet": "5042961222738",
+      "liquidityGross": "5042961222738"
+    },
+    {
+      "index": -214440,
+      "liquidityNet": "229652981859200",
+      "liquidityGross": "229652981859200"
+    },
+    {
+      "index": -214260,
+      "liquidityNet": "8387262720444",
+      "liquidityGross": "8387262720444"
+    },
+    {
+      "index": -214200,
+      "liquidityNet": "447698828084217",
+      "liquidityGross": "447698828084217"
+    },
+    {
+      "index": -213960,
+      "liquidityNet": "24011432361167",
+      "liquidityGross": "24011432361167"
+    },
+    {
+      "index": -213900,
+      "liquidityNet": "5019447158762",
+      "liquidityGross": "5019447158762"
+    },
+    {
+      "index": -213780,
+      "liquidityNet": "4487026506867716",
+      "liquidityGross": "4487026506867716"
+    },
+    {
+      "index": -213600,
+      "liquidityNet": "212887968807951",
+      "liquidityGross": "212887968807951"
+    },
+    {
+      "index": -213540,
+      "liquidityNet": "104834545602",
+      "liquidityGross": "104834545602"
+    },
+    {
+      "index": -213480,
+      "liquidityNet": "156277485585991",
+      "liquidityGross": "156277485585991"
+    },
+    {
+      "index": -213360,
+      "liquidityNet": "10391121491",
+      "liquidityGross": "10391121491"
+    },
+    {
+      "index": -213300,
+      "liquidityNet": "11987607319714",
+      "liquidityGross": "11987607319714"
+    },
+    {
+      "index": -213240,
+      "liquidityNet": "10366623293",
+      "liquidityGross": "10366623293"
+    },
+    {
+      "index": -213180,
+      "liquidityNet": "206462075621",
+      "liquidityGross": "206462075621"
+    },
+    {
+      "index": -213120,
+      "liquidityNet": "319889112278",
+      "liquidityGross": "319889112278"
+    },
+    {
+      "index": -213060,
+      "liquidityNet": "124605522853",
+      "liquidityGross": "124605522853"
+    },
+    {
+      "index": -213000,
+      "liquidityNet": "112018435940",
+      "liquidityGross": "112018435940"
+    },
+    {
+      "index": -212940,
+      "liquidityNet": "4290091063861",
+      "liquidityGross": "4290091063861"
+    },
+    {
+      "index": -212700,
+      "liquidityNet": "28968510142457",
+      "liquidityGross": "28968510142457"
+    },
+    {
+      "index": -212640,
+      "liquidityNet": "220642338683",
+      "liquidityGross": "220642338683"
+    },
+    {
+      "index": -212580,
+      "liquidityNet": "7892694955145",
+      "liquidityGross": "7892694955145"
+    },
+    {
+      "index": -212520,
+      "liquidityNet": "18645451137478",
+      "liquidityGross": "18645451137478"
+    },
+    {
+      "index": -212460,
+      "liquidityNet": "520536821176306",
+      "liquidityGross": "520536821176306"
+    },
+    {
+      "index": -212400,
+      "liquidityNet": "10409773799483",
+      "liquidityGross": "10409773799483"
+    },
+    {
+      "index": -212340,
+      "liquidityNet": "2809350517835412",
+      "liquidityGross": "2809350517835412"
+    },
+    {
+      "index": -212280,
+      "liquidityNet": "306994548833360",
+      "liquidityGross": "306994548833360"
+    },
+    {
+      "index": -212220,
+      "liquidityNet": "426960890101290",
+      "liquidityGross": "426960890101290"
+    },
+    {
+      "index": -212160,
+      "liquidityNet": "56661919618632",
+      "liquidityGross": "56661919618632"
+    },
+    {
+      "index": -212100,
+      "liquidityNet": "122789341789167",
+      "liquidityGross": "122789341789167"
+    },
+    {
+      "index": -212040,
+      "liquidityNet": "14061055798281",
+      "liquidityGross": "14061055798281"
+    },
+    {
+      "index": -211980,
+      "liquidityNet": "1351089851254388",
+      "liquidityGross": "1351089851254388"
+    },
+    {
+      "index": -211920,
+      "liquidityNet": "14191726388905279",
+      "liquidityGross": "14191726388905279"
+    },
+    {
+      "index": -211860,
+      "liquidityNet": "6080643694176",
+      "liquidityGross": "6080643694176"
+    },
+    {
+      "index": -211800,
+      "liquidityNet": "48550211612303",
+      "liquidityGross": "48550211612303"
+    },
+    {
+      "index": -211740,
+      "liquidityNet": "11076481069295",
+      "liquidityGross": "11076481069295"
+    },
+    {
+      "index": -211680,
+      "liquidityNet": "14164878605760785",
+      "liquidityGross": "14164878605760785"
+    },
+    {
+      "index": -211620,
+      "liquidityNet": "1331017194748",
+      "liquidityGross": "1331017194748"
+    },
+    {
+      "index": -211560,
+      "liquidityNet": "509097846158328",
+      "liquidityGross": "509097846158328"
+    },
+    {
+      "index": -211500,
+      "liquidityNet": "856479162611185",
+      "liquidityGross": "856479162611185"
+    },
+    {
+      "index": -211440,
+      "liquidityNet": "562694396795295",
+      "liquidityGross": "562694396795295"
+    },
+    {
+      "index": -211380,
+      "liquidityNet": "205440716552216",
+      "liquidityGross": "205440716552216"
+    },
+    {
+      "index": -211320,
+      "liquidityNet": "21274520913682",
+      "liquidityGross": "21274520913682"
+    },
+    {
+      "index": -211260,
+      "liquidityNet": "124658970419744",
+      "liquidityGross": "124658970419744"
+    },
+    {
+      "index": -211200,
+      "liquidityNet": "11370940716952",
+      "liquidityGross": "11370940716952"
+    },
+    {
+      "index": -211140,
+      "liquidityNet": "36365472094853",
+      "liquidityGross": "36365472094853"
+    },
+    {
+      "index": -211080,
+      "liquidityNet": "1032810300140862",
+      "liquidityGross": "1032810300140862"
+    },
+    {
+      "index": -211020,
+      "liquidityNet": "95298053464993",
+      "liquidityGross": "95298053464993"
+    },
+    {
+      "index": -210900,
+      "liquidityNet": "145043859087319",
+      "liquidityGross": "145043859087319"
+    },
+    {
+      "index": -210840,
+      "liquidityNet": "136579643960",
+      "liquidityGross": "136579643960"
+    },
+    {
+      "index": -210780,
+      "liquidityNet": "534099677249345",
+      "liquidityGross": "534099677249345"
+    },
+    {
+      "index": -210720,
+      "liquidityNet": "2480058390240256",
+      "liquidityGross": "2480058390240256"
+    },
+    {
+      "index": -210660,
+      "liquidityNet": "354122628333985",
+      "liquidityGross": "354122628333985"
+    },
+    {
+      "index": -210600,
+      "liquidityNet": "154740238096",
+      "liquidityGross": "154740238096"
+    },
+    {
+      "index": -210540,
+      "liquidityNet": "579077940218860",
+      "liquidityGross": "579077940218860"
+    },
+    {
+      "index": -210480,
+      "liquidityNet": "2744272421471",
+      "liquidityGross": "2744272421471"
+    },
+    {
+      "index": -210420,
+      "liquidityNet": "495837612117",
+      "liquidityGross": "495837612117"
+    },
+    {
+      "index": -210360,
+      "liquidityNet": "89321381243057269",
+      "liquidityGross": "89321381243057269"
+    },
+    {
+      "index": -210300,
+      "liquidityNet": "3868076657661",
+      "liquidityGross": "3868076657661"
+    },
+    {
+      "index": -210240,
+      "liquidityNet": "20452804471350",
+      "liquidityGross": "20452804471350"
+    },
+    {
+      "index": -210180,
+      "liquidityNet": "8857517832181",
+      "liquidityGross": "8857517832181"
+    },
+    {
+      "index": -210120,
+      "liquidityNet": "179187435362498",
+      "liquidityGross": "179187435362498"
+    },
+    {
+      "index": -210060,
+      "liquidityNet": "21605232052893",
+      "liquidityGross": "21605232052893"
+    },
+    {
+      "index": -210000,
+      "liquidityNet": "210203313634115",
+      "liquidityGross": "210203313634115"
+    },
+    {
+      "index": -209940,
+      "liquidityNet": "193826460468558",
+      "liquidityGross": "193826460468558"
+    },
+    {
+      "index": -209880,
+      "liquidityNet": "76181302407889",
+      "liquidityGross": "76181302407889"
+    },
+    {
+      "index": -209820,
+      "liquidityNet": "48716792856573",
+      "liquidityGross": "48716792856573"
+    },
+    {
+      "index": -209760,
+      "liquidityNet": "492640782762730",
+      "liquidityGross": "492640782762730"
+    },
+    {
+      "index": -209700,
+      "liquidityNet": "254840321749936",
+      "liquidityGross": "254840321749936"
+    },
+    {
+      "index": -209640,
+      "liquidityNet": "72775882935908",
+      "liquidityGross": "72775882935908"
+    },
+    {
+      "index": -209580,
+      "liquidityNet": "84279123597001",
+      "liquidityGross": "84279123597001"
+    },
+    {
+      "index": -209520,
+      "liquidityNet": "3223358417010750",
+      "liquidityGross": "3223358417010750"
+    },
+    {
+      "index": -209460,
+      "liquidityNet": "4443472581105229",
+      "liquidityGross": "4443472581105229"
+    },
+    {
+      "index": -209400,
+      "liquidityNet": "139615748708",
+      "liquidityGross": "139615748708"
+    },
+    {
+      "index": -209340,
+      "liquidityNet": "2077102847824936",
+      "liquidityGross": "2077102847824936"
+    },
+    {
+      "index": -209280,
+      "liquidityNet": "351125213532645",
+      "liquidityGross": "351125213532645"
+    },
+    {
+      "index": -209220,
+      "liquidityNet": "549707273398905",
+      "liquidityGross": "549707273398905"
+    },
+    {
+      "index": -209160,
+      "liquidityNet": "963892819446803",
+      "liquidityGross": "963892819446803"
+    },
+    {
+      "index": -209100,
+      "liquidityNet": "1031925706229599",
+      "liquidityGross": "1031925706229599"
+    },
+    {
+      "index": -209040,
+      "liquidityNet": "116293892668369",
+      "liquidityGross": "116293892668369"
+    },
+    {
+      "index": -208980,
+      "liquidityNet": "5909247580363",
+      "liquidityGross": "5909247580363"
+    },
+    {
+      "index": -208920,
+      "liquidityNet": "6109306853251",
+      "liquidityGross": "6109306853251"
+    },
+    {
+      "index": -208860,
+      "liquidityNet": "5926768676983321",
+      "liquidityGross": "7086904371328571"
+    },
+    {
+      "index": -208800,
+      "liquidityNet": "8073425490722027",
+      "liquidityGross": "8073425490722027"
+    },
+    {
+      "index": -208740,
+      "liquidityNet": "37722981899262",
+      "liquidityGross": "37722981899262"
+    },
+    {
+      "index": -208680,
+      "liquidityNet": "522101637592374",
+      "liquidityGross": "522101637592374"
+    },
+    {
+      "index": -208620,
+      "liquidityNet": "1241722435303738",
+      "liquidityGross": "1241722435303738"
+    },
+    {
+      "index": -208560,
+      "liquidityNet": "450755010924548",
+      "liquidityGross": "450755010924548"
+    },
+    {
+      "index": -208500,
+      "liquidityNet": "68796266713564",
+      "liquidityGross": "68796266713564"
+    },
+    {
+      "index": -208440,
+      "liquidityNet": "934665196903434",
+      "liquidityGross": "934665196903434"
+    },
+    {
+      "index": -208380,
+      "liquidityNet": "791455838473635",
+      "liquidityGross": "791455838473635"
+    },
+    {
+      "index": -208320,
+      "liquidityNet": "3176038609765759",
+      "liquidityGross": "3176038609765759"
+    },
+    {
+      "index": -208260,
+      "liquidityNet": "11031419609989117",
+      "liquidityGross": "11031419609989117"
+    },
+    {
+      "index": -208200,
+      "liquidityNet": "-2124036513913797",
+      "liquidityGross": "2835897763319219"
+    },
+    {
+      "index": -208140,
+      "liquidityNet": "22207684870830",
+      "liquidityGross": "22207684870830"
+    },
+    {
+      "index": -208080,
+      "liquidityNet": "1596621909699853",
+      "liquidityGross": "1596621909699853"
+    },
+    {
+      "index": -208020,
+      "liquidityNet": "293666391741206",
+      "liquidityGross": "293666391741206"
+    },
+    {
+      "index": -207960,
+      "liquidityNet": "846772715395414",
+      "liquidityGross": "846772715395414"
+    },
+    {
+      "index": -207900,
+      "liquidityNet": "244363447594712",
+      "liquidityGross": "244363447594712"
+    },
+    {
+      "index": -207840,
+      "liquidityNet": "280461821627753",
+      "liquidityGross": "280461821627753"
+    },
+    {
+      "index": -207780,
+      "liquidityNet": "551853124524559",
+      "liquidityGross": "551853124524559"
+    },
+    {
+      "index": -207720,
+      "liquidityNet": "401906770779094",
+      "liquidityGross": "401906770779094"
+    },
+    {
+      "index": -207660,
+      "liquidityNet": "-248101491913665",
+      "liquidityGross": "567503820233125"
+    },
+    {
+      "index": -207600,
+      "liquidityNet": "69076490670053",
+      "liquidityGross": "69076490670053"
+    },
+    {
+      "index": -207540,
+      "liquidityNet": "1073675511359473",
+      "liquidityGross": "1073675511359473"
+    },
+    {
+      "index": -207480,
+      "liquidityNet": "628769297300740",
+      "liquidityGross": "628769297300740"
+    },
+    {
+      "index": -207420,
+      "liquidityNet": "115658732697320027",
+      "liquidityGross": "115658732697320027"
+    },
+    {
+      "index": -207360,
+      "liquidityNet": "31959099096714",
+      "liquidityGross": "31959099096714"
+    },
+    {
+      "index": -207300,
+      "liquidityNet": "6079623504838013",
+      "liquidityGross": "6079623504838013"
+    },
+    {
+      "index": -207240,
+      "liquidityNet": "24623380066129113",
+      "liquidityGross": "24636330672055043"
+    },
+    {
+      "index": -207180,
+      "liquidityNet": "506942467914299",
+      "liquidityGross": "506942467914299"
+    },
+    {
+      "index": -207120,
+      "liquidityNet": "103350559709595962",
+      "liquidityGross": "103350559709595962"
+    },
+    {
+      "index": -207060,
+      "liquidityNet": "1023476659529839",
+      "liquidityGross": "1636274505971509"
+    },
+    {
+      "index": -207000,
+      "liquidityNet": "106314945768010",
+      "liquidityGross": "106314945768010"
+    },
+    {
+      "index": -206940,
+      "liquidityNet": "19880748021669",
+      "liquidityGross": "19880748021669"
+    },
+    {
+      "index": -206880,
+      "liquidityNet": "2482325062042217",
+      "liquidityGross": "2482325062042217"
+    },
+    {
+      "index": -206820,
+      "liquidityNet": "76851217284488",
+      "liquidityGross": "76851217284488"
+    },
+    {
+      "index": -206760,
+      "liquidityNet": "16414934947049606",
+      "liquidityGross": "16414934947049606"
+    },
+    {
+      "index": -206700,
+      "liquidityNet": "797691476625164",
+      "liquidityGross": "797691476625164"
+    },
+    {
+      "index": -206640,
+      "liquidityNet": "897486463394967",
+      "liquidityGross": "897486463394967"
+    },
+    {
+      "index": -206580,
+      "liquidityNet": "2523828694260881",
+      "liquidityGross": "2523828694260881"
+    },
+    {
+      "index": -206520,
+      "liquidityNet": "99091581046458",
+      "liquidityGross": "99091581046458"
+    },
+    {
+      "index": -206460,
+      "liquidityNet": "198134404770102",
+      "liquidityGross": "198134404770102"
+    },
+    {
+      "index": -206400,
+      "liquidityNet": "5409108116683398",
+      "liquidityGross": "5409108116683398"
+    },
+    {
+      "index": -206340,
+      "liquidityNet": "99190740583689",
+      "liquidityGross": "247094197638475"
+    },
+    {
+      "index": -206280,
+      "liquidityNet": "2307847194224674",
+      "liquidityGross": "2307847194224674"
+    },
+    {
+      "index": -206220,
+      "liquidityNet": "473161669794740",
+      "liquidityGross": "473161669794740"
+    },
+    {
+      "index": -206100,
+      "liquidityNet": "228911577263817",
+      "liquidityGross": "228911577263817"
+    },
+    {
+      "index": -206040,
+      "liquidityNet": "-184739752471968",
+      "liquidityGross": "212899967357542"
+    },
+    {
+      "index": -205980,
+      "liquidityNet": "39749981189057",
+      "liquidityGross": "39749981189057"
+    },
+    {
+      "index": -205920,
+      "liquidityNet": "41594704230719",
+      "liquidityGross": "41594704230719"
+    },
+    {
+      "index": -205860,
+      "liquidityNet": "108365425394394",
+      "liquidityGross": "108365425394394"
+    },
+    {
+      "index": -205800,
+      "liquidityNet": "639392233939540",
+      "liquidityGross": "685481722152598"
+    },
+    {
+      "index": -205740,
+      "liquidityNet": "-81186598735593",
+      "liquidityGross": "82186713029927"
+    },
+    {
+      "index": -205680,
+      "liquidityNet": "15527198582495433",
+      "liquidityGross": "15527198582495433"
+    },
+    {
+      "index": -205620,
+      "liquidityNet": "-5010618266469",
+      "liquidityGross": "11769215802707"
+    },
+    {
+      "index": -205560,
+      "liquidityNet": "89849541619740",
+      "liquidityGross": "116794822540036"
+    },
+    {
+      "index": -205500,
+      "liquidityNet": "1736372636021951",
+      "liquidityGross": "1777929725241849"
+    },
+    {
+      "index": -205440,
+      "liquidityNet": "27061789155182256",
+      "liquidityGross": "28034448027924978"
+    },
+    {
+      "index": -205380,
+      "liquidityNet": "2206501079670591",
+      "liquidityGross": "2206501079670591"
+    },
+    {
+      "index": -205320,
+      "liquidityNet": "174166376148758796",
+      "liquidityGross": "174184651730750120"
+    },
+    {
+      "index": -205260,
+      "liquidityNet": "5503701570780696",
+      "liquidityGross": "5503701570780696"
+    },
+    {
+      "index": -205200,
+      "liquidityNet": "32050979748173",
+      "liquidityGross": "32050979748173"
+    },
+    {
+      "index": -205140,
+      "liquidityNet": "1484551346313655",
+      "liquidityGross": "1489226684258315"
+    },
+    {
+      "index": -205080,
+      "liquidityNet": "315775788543696",
+      "liquidityGross": "372026844196386"
+    },
+    {
+      "index": -205020,
+      "liquidityNet": "-5067420027578673",
+      "liquidityGross": "5186306374133489"
+    },
+    {
+      "index": -204960,
+      "liquidityNet": "1225192692491052",
+      "liquidityGross": "1225192692491052"
+    },
+    {
+      "index": -204900,
+      "liquidityNet": "605087679392517",
+      "liquidityGross": "605087679392517"
+    },
+    {
+      "index": -204840,
+      "liquidityNet": "5892882939485813",
+      "liquidityGross": "5892882939485813"
+    },
+    {
+      "index": -204780,
+      "liquidityNet": "-5328071268033105",
+      "liquidityGross": "6216080241325619"
+    },
+    {
+      "index": -204720,
+      "liquidityNet": "153514298624088483",
+      "liquidityGross": "153595073285823529"
+    },
+    {
+      "index": -204660,
+      "liquidityNet": "-10269580674643",
+      "liquidityGross": "12668473334781"
+    },
+    {
+      "index": -204600,
+      "liquidityNet": "770193971213949577",
+      "liquidityGross": "770340317886072851"
+    },
+    {
+      "index": -204540,
+      "liquidityNet": "1486893882006706",
+      "liquidityGross": "1486893882006706"
+    },
+    {
+      "index": -204480,
+      "liquidityNet": "-20741288957177",
+      "liquidityGross": "37597425022095"
+    },
+    {
+      "index": -204420,
+      "liquidityNet": "302058677809017",
+      "liquidityGross": "302058677809017"
+    },
+    {
+      "index": -204360,
+      "liquidityNet": "9907593741533559",
+      "liquidityGross": "9907593741533559"
+    },
+    {
+      "index": -204300,
+      "liquidityNet": "1918762839038876",
+      "liquidityGross": "1919550347515188"
+    },
+    {
+      "index": -204240,
+      "liquidityNet": "3308417371494537",
+      "liquidityGross": "3649724739539411"
+    },
+    {
+      "index": -204180,
+      "liquidityNet": "-2335992900439439",
+      "liquidityGross": "2347222150239659"
+    },
+    {
+      "index": -204120,
+      "liquidityNet": "2294031390747131",
+      "liquidityGross": "2294031390747131"
+    },
+    {
+      "index": -204060,
+      "liquidityNet": "210748158440686",
+      "liquidityGross": "210748158440686"
+    },
+    {
+      "index": -204000,
+      "liquidityNet": "1159363000897049",
+      "liquidityGross": "1159363000897049"
+    },
+    {
+      "index": -203940,
+      "liquidityNet": "503921248047177",
+      "liquidityGross": "545807622437275"
+    },
+    {
+      "index": -203880,
+      "liquidityNet": "62141497462379684",
+      "liquidityGross": "62727648420182682"
+    },
+    {
+      "index": -203820,
+      "liquidityNet": "34337322707735385",
+      "liquidityGross": "34337322707735385"
+    },
+    {
+      "index": -203760,
+      "liquidityNet": "410113790478932",
+      "liquidityGross": "495213097149028"
+    },
+    {
+      "index": -203700,
+      "liquidityNet": "415182801585449",
+      "liquidityGross": "556471822006201"
+    },
+    {
+      "index": -203640,
+      "liquidityNet": "24425044220419608",
+      "liquidityGross": "24425044220419608"
+    },
+    {
+      "index": -203580,
+      "liquidityNet": "834584965946843",
+      "liquidityGross": "834584965946843"
+    },
+    {
+      "index": -203520,
+      "liquidityNet": "4985074744319109",
+      "liquidityGross": "5502288688516927"
+    },
+    {
+      "index": -203460,
+      "liquidityNet": "78343602753046412",
+      "liquidityGross": "78343602753046412"
+    },
+    {
+      "index": -203400,
+      "liquidityNet": "22134361502493449",
+      "liquidityGross": "22172938293635151"
+    },
+    {
+      "index": -203340,
+      "liquidityNet": "2475258731517853",
+      "liquidityGross": "2475258731517853"
+    },
+    {
+      "index": -203280,
+      "liquidityNet": "5278782293643693",
+      "liquidityGross": "5423250793443071"
+    },
+    {
+      "index": -203220,
+      "liquidityNet": "464833235985438",
+      "liquidityGross": "464833235985438"
+    },
+    {
+      "index": -203160,
+      "liquidityNet": "992805635036864446",
+      "liquidityGross": "996274682858768374"
+    },
+    {
+      "index": -203100,
+      "liquidityNet": "3645094328960638",
+      "liquidityGross": "3645094328960638"
+    },
+    {
+      "index": -203040,
+      "liquidityNet": "318841275492137",
+      "liquidityGross": "374593186725939"
+    },
+    {
+      "index": -202980,
+      "liquidityNet": "975105269644389",
+      "liquidityGross": "975112404862855"
+    },
+    {
+      "index": -202920,
+      "liquidityNet": "887692411915156",
+      "liquidityGross": "887692411915156"
+    },
+    {
+      "index": -202860,
+      "liquidityNet": "98659494761082600",
+      "liquidityGross": "101587619658469644"
+    },
+    {
+      "index": -202800,
+      "liquidityNet": "15901824182922",
+      "liquidityGross": "16811502485062"
+    },
+    {
+      "index": -202740,
+      "liquidityNet": "395174250110817",
+      "liquidityGross": "428037328873471"
+    },
+    {
+      "index": -202680,
+      "liquidityNet": "-260018789118271",
+      "liquidityGross": "1883251495937415"
+    },
+    {
+      "index": -202620,
+      "liquidityNet": "-4391349258029305",
+      "liquidityGross": "7460839503106589"
+    },
+    {
+      "index": -202560,
+      "liquidityNet": "284662753533902",
+      "liquidityGross": "910614243141816"
+    },
+    {
+      "index": -202500,
+      "liquidityNet": "2434527278037753",
+      "liquidityGross": "2812865846698861"
+    },
+    {
+      "index": -202440,
+      "liquidityNet": "95388747140304856",
+      "liquidityGross": "95448883076349094"
+    },
+    {
+      "index": -202380,
+      "liquidityNet": "51266541048316",
+      "liquidityGross": "51266541048316"
+    },
+    {
+      "index": -202320,
+      "liquidityNet": "287531616721653",
+      "liquidityGross": "292786069820105"
+    },
+    {
+      "index": -202260,
+      "liquidityNet": "14576290250496444",
+      "liquidityGross": "15216492747801322"
+    },
+    {
+      "index": -202200,
+      "liquidityNet": "12737342367517471",
+      "liquidityGross": "12737342367517471"
+    },
+    {
+      "index": -202140,
+      "liquidityNet": "33770234218256668",
+      "liquidityGross": "34700578930237998"
+    },
+    {
+      "index": -202080,
+      "liquidityNet": "318347346830652",
+      "liquidityGross": "318347346830652"
+    },
+    {
+      "index": -202020,
+      "liquidityNet": "13372516782444824",
+      "liquidityGross": "13651043131692244"
+    },
+    {
+      "index": -201960,
+      "liquidityNet": "54588530302687213",
+      "liquidityGross": "54634348285195159"
+    },
+    {
+      "index": -201900,
+      "liquidityNet": "17567954684596057",
+      "liquidityGross": "17809361276579165"
+    },
+    {
+      "index": -201840,
+      "liquidityNet": "4894135601574448",
+      "liquidityGross": "4894135601574448"
+    },
+    {
+      "index": -201780,
+      "liquidityNet": "153922258648165",
+      "liquidityGross": "153922258648165"
+    },
+    {
+      "index": -201720,
+      "liquidityNet": "43017410365684920",
+      "liquidityGross": "43018357201168172"
+    },
+    {
+      "index": -201660,
+      "liquidityNet": "62159131685423393",
+      "liquidityGross": "62940571868792829"
+    },
+    {
+      "index": -201600,
+      "liquidityNet": "3964134515620171",
+      "liquidityGross": "6785616365441117"
+    },
+    {
+      "index": -201540,
+      "liquidityNet": "89464931855659580",
+      "liquidityGross": "91274548047899556"
+    },
+    {
+      "index": -201480,
+      "liquidityNet": "112885498140435163",
+      "liquidityGross": "115289309330005153"
+    },
+    {
+      "index": -201420,
+      "liquidityNet": "-660537887957975",
+      "liquidityGross": "1307269080883125"
+    },
+    {
+      "index": -201360,
+      "liquidityNet": "40188083193740608",
+      "liquidityGross": "40538377082577346"
+    },
+    {
+      "index": -201300,
+      "liquidityNet": "8344837981614605",
+      "liquidityGross": "8602723260789265"
+    },
+    {
+      "index": -201240,
+      "liquidityNet": "201528643567321485",
+      "liquidityGross": "203844290870973839"
+    },
+    {
+      "index": -201180,
+      "liquidityNet": "37010183353326874",
+      "liquidityGross": "102587618687410208"
+    },
+    {
+      "index": -201120,
+      "liquidityNet": "1737766187735073",
+      "liquidityGross": "2987803339574529"
+    },
+    {
+      "index": -201060,
+      "liquidityNet": "16205345034027920",
+      "liquidityGross": "18661463208387898"
+    },
+    {
+      "index": -201000,
+      "liquidityNet": "-13215496379200364",
+      "liquidityGross": "18438561452738656"
+    },
+    {
+      "index": -200940,
+      "liquidityNet": "-4006549840882694",
+      "liquidityGross": "5641754262057098"
+    },
+    {
+      "index": -200880,
+      "liquidityNet": "1456663868619997854",
+      "liquidityGross": "1463646224273811142"
+    },
+    {
+      "index": -200820,
+      "liquidityNet": "-795322058367421553",
+      "liquidityGross": "1372393969902661067"
+    },
+    {
+      "index": -200760,
+      "liquidityNet": "-47731644562217832",
+      "liquidityGross": "49141354248925858"
+    },
+    {
+      "index": -200700,
+      "liquidityNet": "-1765241887956561",
+      "liquidityGross": "2062258856966485"
+    },
+    {
+      "index": -200640,
+      "liquidityNet": "-315624182533303740",
+      "liquidityGross": "315758692542800230"
+    },
+    {
+      "index": -200580,
+      "liquidityNet": "-1368095032575312639",
+      "liquidityGross": "1583556585425967563"
+    },
+    {
+      "index": -200520,
+      "liquidityNet": "-70037226633857508",
+      "liquidityGross": "70037798820457506"
+    },
+    {
+      "index": -200460,
+      "liquidityNet": "11367535070640133",
+      "liquidityGross": "15104419540821235"
+    },
+    {
+      "index": -200400,
+      "liquidityNet": "-659274416950337",
+      "liquidityGross": "1707350547527345"
+    },
+    {
+      "index": -200340,
+      "liquidityNet": "-28950872270915782",
+      "liquidityGross": "32775568294255184"
+    },
+    {
+      "index": -200280,
+      "liquidityNet": "89942016956652",
+      "liquidityGross": "7597568272162842"
+    },
+    {
+      "index": -200220,
+      "liquidityNet": "363598409380873",
+      "liquidityGross": "1564418807974135"
+    },
+    {
+      "index": -200160,
+      "liquidityNet": "-12481271447406212",
+      "liquidityGross": "12495786535066974"
+    },
+    {
+      "index": -200100,
+      "liquidityNet": "-17763593263097781",
+      "liquidityGross": "18184465066374277"
+    },
+    {
+      "index": -200040,
+      "liquidityNet": "-116898711235581887",
+      "liquidityGross": "118151331668791997"
+    },
+    {
+      "index": -199980,
+      "liquidityNet": "-16081668896371",
+      "liquidityGross": "36422672418521"
+    },
+    {
+      "index": -199920,
+      "liquidityNet": "-1603658942794710",
+      "liquidityGross": "1790256409173848"
+    },
+    {
+      "index": -199860,
+      "liquidityNet": "831769717831489",
+      "liquidityGross": "2104045868442451"
+    },
+    {
+      "index": -199800,
+      "liquidityNet": "-43415373831097920",
+      "liquidityGross": "44214630830638064"
+    },
+    {
+      "index": -199740,
+      "liquidityNet": "-626813878732097",
+      "liquidityGross": "2384675771168529"
+    },
+    {
+      "index": -199680,
+      "liquidityNet": "-185262876385183780",
+      "liquidityGross": "187837305622668566"
+    },
+    {
+      "index": -199620,
+      "liquidityNet": "-889282973489390",
+      "liquidityGross": "1225891638907884"
+    },
+    {
+      "index": -199560,
+      "liquidityNet": "-1316584853866598",
+      "liquidityGross": "3423578046795816"
+    },
+    {
+      "index": -199500,
+      "liquidityNet": "9331116971191653",
+      "liquidityGross": "10389175358556499"
+    },
+    {
+      "index": -199440,
+      "liquidityNet": "-1200349434888750",
+      "liquidityGross": "1204734952676976"
+    },
+    {
+      "index": -199380,
+      "liquidityNet": "-157085694846400796",
+      "liquidityGross": "159231679614126446"
+    },
+    {
+      "index": -199320,
+      "liquidityNet": "-14901055232692332",
+      "liquidityGross": "15670081684686178"
+    },
+    {
+      "index": -199260,
+      "liquidityNet": "-782603565641143",
+      "liquidityGross": "1369445291605961"
+    },
+    {
+      "index": -199200,
+      "liquidityNet": "-647128925304820",
+      "liquidityGross": "656674759994048"
+    },
+    {
+      "index": -199140,
+      "liquidityNet": "-118787217362155759",
+      "liquidityGross": "118880977962990067"
+    },
+    {
+      "index": -199080,
+      "liquidityNet": "-1064923766934841",
+      "liquidityGross": "1137466915582581"
+    },
+    {
+      "index": -199020,
+      "liquidityNet": "-482614636781287",
+      "liquidityGross": "573810516190621"
+    },
+    {
+      "index": -198960,
+      "liquidityNet": "-2612744544173505",
+      "liquidityGross": "2707453394459341"
+    },
+    {
+      "index": -198900,
+      "liquidityNet": "-12732590187745434",
+      "liquidityGross": "25603821473555190"
+    },
+    {
+      "index": -198840,
+      "liquidityNet": "-12034113763372771",
+      "liquidityGross": "14262662305350877"
+    },
+    {
+      "index": -198780,
+      "liquidityNet": "-393859362746628",
+      "liquidityGross": "1658973077193840"
+    },
+    {
+      "index": -198720,
+      "liquidityNet": "-255634786476200",
+      "liquidityGross": "1109796689347256"
+    },
+    {
+      "index": -198660,
+      "liquidityNet": "-82786379022024372",
+      "liquidityGross": "95975949057358774"
+    },
+    {
+      "index": -198600,
+      "liquidityNet": "-7242491191458481",
+      "liquidityGross": "11623300265328031"
+    },
+    {
+      "index": -198540,
+      "liquidityNet": "707863632099472",
+      "liquidityGross": "1481396326865690"
+    },
+    {
+      "index": -198480,
+      "liquidityNet": "-938586505037023",
+      "liquidityGross": "1962102638659731"
+    },
+    {
+      "index": -198420,
+      "liquidityNet": "-83232197324934492",
+      "liquidityGross": "86180428624966696"
+    },
+    {
+      "index": -198360,
+      "liquidityNet": "15301961507926150",
+      "liquidityGross": "17676149736851774"
+    },
+    {
+      "index": -198300,
+      "liquidityNet": "-2374259733315431",
+      "liquidityGross": "2389825894949985"
+    },
+    {
+      "index": -198240,
+      "liquidityNet": "-1184842517564809",
+      "liquidityGross": "1766354523963033"
+    },
+    {
+      "index": -198180,
+      "liquidityNet": "7929934994615513",
+      "liquidityGross": "13571192064378477"
+    },
+    {
+      "index": -198120,
+      "liquidityNet": "-274802958021362",
+      "liquidityGross": "286438728082090"
+    },
+    {
+      "index": -198060,
+      "liquidityNet": "-36985766785759850",
+      "liquidityGross": "55863893417307818"
+    },
+    {
+      "index": -198000,
+      "liquidityNet": "-531918030094097",
+      "liquidityGross": "578849179865149"
+    },
+    {
+      "index": -197940,
+      "liquidityNet": "-405614694751566",
+      "liquidityGross": "2969178945676980"
+    },
+    {
+      "index": -197880,
+      "liquidityNet": "466465342559",
+      "liquidityGross": "290580184180807"
+    },
+    {
+      "index": -197820,
+      "liquidityNet": "-15157056467405224",
+      "liquidityGross": "15288729284731430"
+    },
+    {
+      "index": -197760,
+      "liquidityNet": "-760451161229258",
+      "liquidityGross": "1320177768022356"
+    },
+    {
+      "index": -197700,
+      "liquidityNet": "-159180229738545119",
+      "liquidityGross": "159481628660422417"
+    },
+    {
+      "index": -197640,
+      "liquidityNet": "54479008308852",
+      "liquidityGross": "200488116002070"
+    },
+    {
+      "index": -197580,
+      "liquidityNet": "-7533160292238179",
+      "liquidityGross": "7651838948056879"
+    },
+    {
+      "index": -197520,
+      "liquidityNet": "9264950749157165",
+      "liquidityGross": "22060170947607979"
+    },
+    {
+      "index": -197460,
+      "liquidityNet": "-19577615478047527",
+      "liquidityGross": "22206144479317877"
+    },
+    {
+      "index": -197400,
+      "liquidityNet": "887127892940257",
+      "liquidityGross": "1253609142357481"
+    },
+    {
+      "index": -197340,
+      "liquidityNet": "38239344832437819",
+      "liquidityGross": "49643454471993543"
+    },
+    {
+      "index": -197280,
+      "liquidityNet": "-21016802355721",
+      "liquidityGross": "128795699473889"
+    },
+    {
+      "index": -197220,
+      "liquidityNet": "1946938814897401",
+      "liquidityGross": "2033994889717993"
+    },
+    {
+      "index": -197160,
+      "liquidityNet": "-937995286652276",
+      "liquidityGross": "1364569572417170"
+    },
+    {
+      "index": -197100,
+      "liquidityNet": "-14800498276757887",
+      "liquidityGross": "15007459751355777"
+    },
+    {
+      "index": -197040,
+      "liquidityNet": "-29616602978194",
+      "liquidityGross": "409631196090008"
+    },
+    {
+      "index": -196980,
+      "liquidityNet": "-17648246523937143",
+      "liquidityGross": "18317863355744497"
+    },
+    {
+      "index": -196920,
+      "liquidityNet": "-5445068960123894",
+      "liquidityGross": "6195675841737934"
+    },
+    {
+      "index": -196860,
+      "liquidityNet": "1695429226478284",
+      "liquidityGross": "3544474123407930"
+    },
+    {
+      "index": -196800,
+      "liquidityNet": "117190784226230",
+      "liquidityGross": "4889428647491266"
+    },
+    {
+      "index": -196740,
+      "liquidityNet": "-2118721728959585",
+      "liquidityGross": "2171870305350807"
+    },
+    {
+      "index": -196680,
+      "liquidityNet": "-163290047278260878",
+      "liquidityGross": "163839744908396844"
+    },
+    {
+      "index": -196620,
+      "liquidityNet": "-202433176272777",
+      "liquidityGross": "4277100972892713"
+    },
+    {
+      "index": -196560,
+      "liquidityNet": "233231184813879",
+      "liquidityGross": "344413301597173"
+    },
+    {
+      "index": -196500,
+      "liquidityNet": "-86006717884097023",
+      "liquidityGross": "93036598107435487"
+    },
+    {
+      "index": -196440,
+      "liquidityNet": "-5427710845102248",
+      "liquidityGross": "5596039622516576"
+    },
+    {
+      "index": -196380,
+      "liquidityNet": "-415987703858078",
+      "liquidityGross": "415987703858078"
+    },
+    {
+      "index": -196320,
+      "liquidityNet": "1186409111547062",
+      "liquidityGross": "2084278421285750"
+    },
+    {
+      "index": -196260,
+      "liquidityNet": "-2621852059219549",
+      "liquidityGross": "10800004666016125"
+    },
+    {
+      "index": -196200,
+      "liquidityNet": "-668973874908855",
+      "liquidityGross": "3342710517232807"
+    },
+    {
+      "index": -196140,
+      "liquidityNet": "-541599700830064",
+      "liquidityGross": "595069879815314"
+    },
+    {
+      "index": -196080,
+      "liquidityNet": "-13495560693575686",
+      "liquidityGross": "18420135389573966"
+    },
+    {
+      "index": -196020,
+      "liquidityNet": "110895079567508",
+      "liquidityGross": "216503133032730"
+    },
+    {
+      "index": -195960,
+      "liquidityNet": "-274729201618558",
+      "liquidityGross": "685146114975184"
+    },
+    {
+      "index": -195900,
+      "liquidityNet": "-4130918462995357",
+      "liquidityGross": "4624899896161495"
+    },
+    {
+      "index": -195840,
+      "liquidityNet": "706264016223079",
+      "liquidityGross": "1392043123909127"
+    },
+    {
+      "index": -195780,
+      "liquidityNet": "84205417229021",
+      "liquidityGross": "1454138340619245"
+    },
+    {
+      "index": -195720,
+      "liquidityNet": "-1249720370584451",
+      "liquidityGross": "1279874270484569"
+    },
+    {
+      "index": -195660,
+      "liquidityNet": "-744046238439373",
+      "liquidityGross": "744046238439373"
+    },
+    {
+      "index": -195600,
+      "liquidityNet": "-64512872056567977",
+      "liquidityGross": "70276198570230255"
+    },
+    {
+      "index": -195540,
+      "liquidityNet": "86566535324785",
+      "liquidityGross": "114173849267025"
+    },
+    {
+      "index": -195480,
+      "liquidityNet": "139441158105103",
+      "liquidityGross": "323445457002085"
+    },
+    {
+      "index": -195420,
+      "liquidityNet": "-417772668707191",
+      "liquidityGross": "417772668707191"
+    },
+    {
+      "index": -195360,
+      "liquidityNet": "-813914092987549",
+      "liquidityGross": "865884036337889"
+    },
+    {
+      "index": -195300,
+      "liquidityNet": "-774218074715315",
+      "liquidityGross": "3006850846054319"
+    },
+    {
+      "index": -195240,
+      "liquidityNet": "-965586866638770",
+      "liquidityGross": "2096699057244084"
+    },
+    {
+      "index": -195180,
+      "liquidityNet": "418946710180298",
+      "liquidityGross": "618836381694108"
+    },
+    {
+      "index": -195120,
+      "liquidityNet": "82637703962811",
+      "liquidityGross": "732850297470369"
+    },
+    {
+      "index": -195060,
+      "liquidityNet": "1513094964608254",
+      "liquidityGross": "1599662733806702"
+    },
+    {
+      "index": -195000,
+      "liquidityNet": "3362255115125573",
+      "liquidityGross": "4855464458211799"
+    },
+    {
+      "index": -194940,
+      "liquidityNet": "1425580400683290",
+      "liquidityGross": "8655024047748630"
+    },
+    {
+      "index": -194880,
+      "liquidityNet": "-1029440539397205",
+      "liquidityGross": "5319084233752617"
+    },
+    {
+      "index": -194820,
+      "liquidityNet": "-6165623485233552",
+      "liquidityGross": "7143982952517090"
+    },
+    {
+      "index": -194760,
+      "liquidityNet": "581502245074541",
+      "liquidityGross": "2736551916368975"
+    },
+    {
+      "index": -194700,
+      "liquidityNet": "-4766053193484823",
+      "liquidityGross": "6656841363734955"
+    },
+    {
+      "index": -194640,
+      "liquidityNet": "-7452091882669344",
+      "liquidityGross": "8381140616190090"
+    },
+    {
+      "index": -194580,
+      "liquidityNet": "-1648749401486174",
+      "liquidityGross": "1912394057312006"
+    },
+    {
+      "index": -194520,
+      "liquidityNet": "57280212901233",
+      "liquidityGross": "1567361230564067"
+    },
+    {
+      "index": -194460,
+      "liquidityNet": "-589486649668934",
+      "liquidityGross": "591736083965230"
+    },
+    {
+      "index": -194400,
+      "liquidityNet": "-10545768900411403",
+      "liquidityGross": "10548424776102155"
+    },
+    {
+      "index": -194340,
+      "liquidityNet": "-1485380306587690",
+      "liquidityGross": "1504957018554242"
+    },
+    {
+      "index": -194280,
+      "liquidityNet": "81100768725528019",
+      "liquidityGross": "82656514307177007"
+    },
+    {
+      "index": -194220,
+      "liquidityNet": "-3505703657271192",
+      "liquidityGross": "3506310219247486"
+    },
+    {
+      "index": -194160,
+      "liquidityNet": "5109117603631576",
+      "liquidityGross": "7623920004941704"
+    },
+    {
+      "index": -194100,
+      "liquidityNet": "4562159018538902",
+      "liquidityGross": "4610914693588688"
+    },
+    {
+      "index": -194040,
+      "liquidityNet": "-5633503797193498",
+      "liquidityGross": "5661750333392646"
+    },
+    {
+      "index": -193980,
+      "liquidityNet": "-1869309263814467",
+      "liquidityGross": "1869309263814467"
+    },
+    {
+      "index": -193920,
+      "liquidityNet": "-1383187177555049",
+      "liquidityGross": "1503552829359523"
+    },
+    {
+      "index": -193860,
+      "liquidityNet": "-26065641023791309",
+      "liquidityGross": "26065641023791309"
+    },
+    {
+      "index": -193800,
+      "liquidityNet": "109222227099203",
+      "liquidityGross": "355757811719291"
+    },
+    {
+      "index": -193740,
+      "liquidityNet": "-1173810588367855",
+      "liquidityGross": "1173810588367855"
+    },
+    {
+      "index": -193680,
+      "liquidityNet": "-3713167761384278",
+      "liquidityGross": "3714714392438688"
+    },
+    {
+      "index": -193620,
+      "liquidityNet": "-315280582632246",
+      "liquidityGross": "949177887187652"
+    },
+    {
+      "index": -193560,
+      "liquidityNet": "-40525550026821529",
+      "liquidityGross": "40728166273174649"
+    },
+    {
+      "index": -193500,
+      "liquidityNet": "-275618266146714",
+      "liquidityGross": "1485083553332506"
+    },
+    {
+      "index": -193440,
+      "liquidityNet": "-53023269251057",
+      "liquidityGross": "53023269251057"
+    },
+    {
+      "index": -193380,
+      "liquidityNet": "-7691505847029116",
+      "liquidityGross": "12221676422717042"
+    },
+    {
+      "index": -193320,
+      "liquidityNet": "-1837279414469689",
+      "liquidityGross": "1837279414469689"
+    },
+    {
+      "index": -193260,
+      "liquidityNet": "-108792346794038782",
+      "liquidityGross": "130379378534981512"
+    },
+    {
+      "index": -193200,
+      "liquidityNet": "-163455417767854",
+      "liquidityGross": "285944375087208"
+    },
+    {
+      "index": -193140,
+      "liquidityNet": "-3220383347308224",
+      "liquidityGross": "3243572293671502"
+    },
+    {
+      "index": -193080,
+      "liquidityNet": "-11245235258832373",
+      "liquidityGross": "11245235258832373"
+    },
+    {
+      "index": -193020,
+      "liquidityNet": "-143091024288107",
+      "liquidityGross": "143091024288107"
+    },
+    {
+      "index": -192960,
+      "liquidityNet": "-1420572898687412",
+      "liquidityGross": "1437504900789982"
+    },
+    {
+      "index": -192900,
+      "liquidityNet": "-16415871357273965",
+      "liquidityGross": "16415871357273965"
+    },
+    {
+      "index": -192840,
+      "liquidityNet": "-2082679938061999",
+      "liquidityGross": "2082679938061999"
+    },
+    {
+      "index": -192780,
+      "liquidityNet": "-72556406468647",
+      "liquidityGross": "72556406468647"
+    },
+    {
+      "index": -192720,
+      "liquidityNet": "-725908764365218",
+      "liquidityGross": "725908764365218"
+    },
+    {
+      "index": -192660,
+      "liquidityNet": "-176425689507572",
+      "liquidityGross": "176425689507572"
+    },
+    {
+      "index": -192600,
+      "liquidityNet": "-68546925772131",
+      "liquidityGross": "68546925772131"
+    },
+    {
+      "index": -192540,
+      "liquidityNet": "-140200346560307",
+      "liquidityGross": "140200346560307"
+    },
+    {
+      "index": -192480,
+      "liquidityNet": "-3243365216192",
+      "liquidityGross": "3243365216192"
+    },
+    {
+      "index": -192420,
+      "liquidityNet": "-77955455625628",
+      "liquidityGross": "77955455625628"
+    },
+    {
+      "index": -192360,
+      "liquidityNet": "2060751219889350",
+      "liquidityGross": "2111829776093610"
+    },
+    {
+      "index": -192300,
+      "liquidityNet": "-5079480694427",
+      "liquidityGross": "5079480694427"
+    },
+    {
+      "index": -192240,
+      "liquidityNet": "-40477287536174",
+      "liquidityGross": "40477287536174"
+    },
+    {
+      "index": -192180,
+      "liquidityNet": "-765488569340175867",
+      "liquidityGross": "765488569340175867"
+    },
+    {
+      "index": -192120,
+      "liquidityNet": "-625134506346193",
+      "liquidityGross": "625134506346193"
+    },
+    {
+      "index": -192060,
+      "liquidityNet": "-4896992528151115",
+      "liquidityGross": "4896992528151115"
+    },
+    {
+      "index": -192000,
+      "liquidityNet": "-68146542180117",
+      "liquidityGross": "207777842432685"
+    },
+    {
+      "index": -191940,
+      "liquidityNet": "89212266755420",
+      "liquidityGross": "188004451836090"
+    },
+    {
+      "index": -191880,
+      "liquidityNet": "-50593598479338",
+      "liquidityGross": "50593598479338"
+    },
+    {
+      "index": -191820,
+      "liquidityNet": "-2222801144873",
+      "liquidityGross": "2222801144873"
+    },
+    {
+      "index": -191760,
+      "liquidityNet": "-481682987418404",
+      "liquidityGross": "481682987418404"
+    },
+    {
+      "index": -191700,
+      "liquidityNet": "-2100919211745887",
+      "liquidityGross": "2100919211745887"
+    },
+    {
+      "index": -191640,
+      "liquidityNet": "-71257018678188",
+      "liquidityGross": "71257018678188"
+    },
+    {
+      "index": -191580,
+      "liquidityNet": "-119629847480603",
+      "liquidityGross": "119629847480603"
+    },
+    {
+      "index": -191520,
+      "liquidityNet": "-203660664481217",
+      "liquidityGross": "203660664481217"
+    },
+    {
+      "index": -191460,
+      "liquidityNet": "-11667375394359907",
+      "liquidityGross": "11667375394359907"
+    },
+    {
+      "index": -191400,
+      "liquidityNet": "-288739933919816",
+      "liquidityGross": "288739933919816"
+    },
+    {
+      "index": -191340,
+      "liquidityNet": "-148148186546821",
+      "liquidityGross": "148148186546821"
+    },
+    {
+      "index": -191280,
+      "liquidityNet": "-20615182916141",
+      "liquidityGross": "20615182916141"
+    },
+    {
+      "index": -191220,
+      "liquidityNet": "-2798034926632830",
+      "liquidityGross": "2798034926632830"
+    },
+    {
+      "index": -191160,
+      "liquidityNet": "-159562316733828420",
+      "liquidityGross": "159562316733828420"
+    },
+    {
+      "index": -191100,
+      "liquidityNet": "1929409151536676",
+      "liquidityGross": "5180230290910986"
+    },
+    {
+      "index": -191040,
+      "liquidityNet": "-386312439588710",
+      "liquidityGross": "386312439588710"
+    },
+    {
+      "index": -190980,
+      "liquidityNet": "-3676228126718529",
+      "liquidityGross": "3676228126718529"
+    },
+    {
+      "index": -190920,
+      "liquidityNet": "-75163337472404",
+      "liquidityGross": "75163337472404"
+    },
+    {
+      "index": -190860,
+      "liquidityNet": "-35605256898172",
+      "liquidityGross": "35605256898172"
+    },
+    {
+      "index": -190800,
+      "liquidityNet": "-649508951167526",
+      "liquidityGross": "649508951167526"
+    },
+    {
+      "index": -190740,
+      "liquidityNet": "-342083874938053",
+      "liquidityGross": "342083874938053"
+    },
+    {
+      "index": -190620,
+      "liquidityNet": "-6418404664175",
+      "liquidityGross": "6418404664175"
+    },
+    {
+      "index": -190560,
+      "liquidityNet": "-414708194836",
+      "liquidityGross": "414708194836"
+    },
+    {
+      "index": -190500,
+      "liquidityNet": "-18585103384300",
+      "liquidityGross": "18585103384300"
+    },
+    {
+      "index": -190440,
+      "liquidityNet": "-4255982688381",
+      "liquidityGross": "4255982688381"
+    },
+    {
+      "index": -190380,
+      "liquidityNet": "-7294209536959",
+      "liquidityGross": "7294209536959"
+    },
+    {
+      "index": -190320,
+      "liquidityNet": "-1021581656436",
+      "liquidityGross": "1021581656436"
+    },
+    {
+      "index": -190260,
+      "liquidityNet": "-8322660016695",
+      "liquidityGross": "8322660016695"
+    },
+    {
+      "index": -190200,
+      "liquidityNet": "-3424929368894164",
+      "liquidityGross": "3424929368894164"
+    },
+    {
+      "index": -190140,
+      "liquidityNet": "-10676963081124",
+      "liquidityGross": "10676963081124"
+    },
+    {
+      "index": -190020,
+      "liquidityNet": "-1335929764828",
+      "liquidityGross": "1335929764828"
+    },
+    {
+      "index": -189960,
+      "liquidityNet": "-8054561727",
+      "liquidityGross": "8054561727"
+    },
+    {
+      "index": -189900,
+      "liquidityNet": "-318623522566428",
+      "liquidityGross": "318623522566428"
+    },
+    {
+      "index": -189840,
+      "liquidityNet": "-24291467379008173",
+      "liquidityGross": "24291467379008173"
+    },
+    {
+      "index": -189780,
+      "liquidityNet": "-1030044623768608",
+      "liquidityGross": "1046242917329136"
+    },
+    {
+      "index": -189660,
+      "liquidityNet": "-84127511746768",
+      "liquidityGross": "84127511746768"
+    },
+    {
+      "index": -189600,
+      "liquidityNet": "-1954725364664087",
+      "liquidityGross": "1954725364664087"
+    },
+    {
+      "index": -189540,
+      "liquidityNet": "-4276090798778454",
+      "liquidityGross": "4276090798778454"
+    },
+    {
+      "index": -189480,
+      "liquidityNet": "-104148426354084",
+      "liquidityGross": "104148426354084"
+    },
+    {
+      "index": -189420,
+      "liquidityNet": "-326182744063625",
+      "liquidityGross": "326182744063625"
+    },
+    {
+      "index": -189360,
+      "liquidityNet": "-70781085413638",
+      "liquidityGross": "70781085413638"
+    },
+    {
+      "index": -189300,
+      "liquidityNet": "-6595520750846168",
+      "liquidityGross": "6616988284235242"
+    },
+    {
+      "index": -189240,
+      "liquidityNet": "-19700585957297",
+      "liquidityGross": "19700585957297"
+    },
+    {
+      "index": -189180,
+      "liquidityNet": "-38382949932023",
+      "liquidityGross": "38382949932023"
+    },
+    {
+      "index": -189120,
+      "liquidityNet": "-21784527427995",
+      "liquidityGross": "21784527427995"
+    },
+    {
+      "index": -189060,
+      "liquidityNet": "-167119013798980",
+      "liquidityGross": "167119013798980"
+    },
+    {
+      "index": -189000,
+      "liquidityNet": "-121034513220501",
+      "liquidityGross": "121034513220501"
+    },
+    {
+      "index": -188940,
+      "liquidityNet": "-18297671406657",
+      "liquidityGross": "18297671406657"
+    },
+    {
+      "index": -188880,
+      "liquidityNet": "-410645655676686",
+      "liquidityGross": "410645655676686"
+    },
+    {
+      "index": -188820,
+      "liquidityNet": "-616027131150843",
+      "liquidityGross": "616027131150843"
+    },
+    {
+      "index": -188760,
+      "liquidityNet": "-129873602089645",
+      "liquidityGross": "129873602089645"
+    },
+    {
+      "index": -188700,
+      "liquidityNet": "-18414973565658",
+      "liquidityGross": "18414973565658"
+    },
+    {
+      "index": -188640,
+      "liquidityNet": "-99613691413409",
+      "liquidityGross": "99613691413409"
+    },
+    {
+      "index": -188580,
+      "liquidityNet": "-44093548359054",
+      "liquidityGross": "44093548359054"
+    },
+    {
+      "index": -188520,
+      "liquidityNet": "-34868414210468",
+      "liquidityGross": "34868414210468"
+    },
+    {
+      "index": -188460,
+      "liquidityNet": "-474040445296241",
+      "liquidityGross": "474040445296241"
+    },
+    {
+      "index": -188400,
+      "liquidityNet": "-105729402025633",
+      "liquidityGross": "105729402025633"
+    },
+    {
+      "index": -188340,
+      "liquidityNet": "-63721651885707",
+      "liquidityGross": "63721651885707"
+    },
+    {
+      "index": -188280,
+      "liquidityNet": "-49516193344829",
+      "liquidityGross": "49516193344829"
+    },
+    {
+      "index": -188220,
+      "liquidityNet": "-450842528535747",
+      "liquidityGross": "450842528535747"
+    },
+    {
+      "index": -188160,
+      "liquidityNet": "-27736552162771",
+      "liquidityGross": "27736552162771"
+    },
+    {
+      "index": -188100,
+      "liquidityNet": "-10091636971423",
+      "liquidityGross": "10091636971423"
+    },
+    {
+      "index": -188040,
+      "liquidityNet": "-39734781901596",
+      "liquidityGross": "39734781901596"
+    },
+    {
+      "index": -187980,
+      "liquidityNet": "-1332905988210556",
+      "liquidityGross": "1332905988210556"
+    },
+    {
+      "index": -187800,
+      "liquidityNet": "-5621650429093489",
+      "liquidityGross": "5621650429093489"
+    },
+    {
+      "index": -187740,
+      "liquidityNet": "-6947341031030",
+      "liquidityGross": "6947341031030"
+    },
+    {
+      "index": -187680,
+      "liquidityNet": "-7842646153578",
+      "liquidityGross": "7842646153578"
+    },
+    {
+      "index": -187620,
+      "liquidityNet": "-3247663579240",
+      "liquidityGross": "3247663579240"
+    },
+    {
+      "index": -187560,
+      "liquidityNet": "-197091072891",
+      "liquidityGross": "197091072891"
+    },
+    {
+      "index": -187500,
+      "liquidityNet": "-24011432361167",
+      "liquidityGross": "24011432361167"
+    },
+    {
+      "index": -187380,
+      "liquidityNet": "-8493414276618",
+      "liquidityGross": "8493414276618"
+    },
+    {
+      "index": -187320,
+      "liquidityNet": "-1347949138046",
+      "liquidityGross": "1347949138046"
+    },
+    {
+      "index": -187260,
+      "liquidityNet": "-415605609934714",
+      "liquidityGross": "415605609934714"
+    },
+    {
+      "index": -187200,
+      "liquidityNet": "-48783747154743",
+      "liquidityGross": "48783747154743"
+    },
+    {
+      "index": -187080,
+      "liquidityNet": "-467705431065401",
+      "liquidityGross": "467705431065401"
+    },
+    {
+      "index": -187020,
+      "liquidityNet": "-557533062167",
+      "liquidityGross": "557533062167"
+    },
+    {
+      "index": -186960,
+      "liquidityNet": "-63072949348318",
+      "liquidityGross": "63072949348318"
+    },
+    {
+      "index": -186900,
+      "liquidityNet": "-1057003493864",
+      "liquidityGross": "1057003493864"
+    },
+    {
+      "index": -186840,
+      "liquidityNet": "-105521880599341",
+      "liquidityGross": "105521880599341"
+    },
+    {
+      "index": -186780,
+      "liquidityNet": "-4002226868564",
+      "liquidityGross": "4002226868564"
+    },
+    {
+      "index": -186720,
+      "liquidityNet": "-4065859666878",
+      "liquidityGross": "4065859666878"
+    },
+    {
+      "index": -186660,
+      "liquidityNet": "-8386915623586",
+      "liquidityGross": "8386915623586"
+    },
+    {
+      "index": -186600,
+      "liquidityNet": "-1867498199101",
+      "liquidityGross": "1867498199101"
+    },
+    {
+      "index": -186420,
+      "liquidityNet": "-9736679161895528",
+      "liquidityGross": "9736679161895528"
+    },
+    {
+      "index": -186360,
+      "liquidityNet": "-117227623037154",
+      "liquidityGross": "117227623037154"
+    },
+    {
+      "index": -186300,
+      "liquidityNet": "-10723488439",
+      "liquidityGross": "10723488439"
+    },
+    {
+      "index": -186180,
+      "liquidityNet": "-219572987291925",
+      "liquidityGross": "219572987291925"
+    },
+    {
+      "index": -186120,
+      "liquidityNet": "-4380112439744",
+      "liquidityGross": "4380112439744"
+    },
+    {
+      "index": -186000,
+      "liquidityNet": "-9053251100640",
+      "liquidityGross": "9053251100640"
+    },
+    {
+      "index": -185940,
+      "liquidityNet": "-219370164646571",
+      "liquidityGross": "219370164646571"
+    },
+    {
+      "index": -185880,
+      "liquidityNet": "-1931239309253574",
+      "liquidityGross": "1931239309253574"
+    },
+    {
+      "index": -185820,
+      "liquidityNet": "-521252140303",
+      "liquidityGross": "521252140303"
+    },
+    {
+      "index": -185700,
+      "liquidityNet": "-5931973531338",
+      "liquidityGross": "5931973531338"
+    },
+    {
+      "index": -185640,
+      "liquidityNet": "-433624482465946",
+      "liquidityGross": "433624482465946"
+    },
+    {
+      "index": -185280,
+      "liquidityNet": "-114495774337573",
+      "liquidityGross": "114495774337573"
+    },
+    {
+      "index": -185220,
+      "liquidityNet": "-123127999485086",
+      "liquidityGross": "123127999485086"
+    },
+    {
+      "index": -185040,
+      "liquidityNet": "-8626383512264",
+      "liquidityGross": "8626383512264"
+    },
+    {
+      "index": -184980,
+      "liquidityNet": "-22132326417264",
+      "liquidityGross": "22132326417264"
+    },
+    {
+      "index": -184800,
+      "liquidityNet": "-6394597126464419",
+      "liquidityGross": "6394597126464419"
+    },
+    {
+      "index": -184680,
+      "liquidityNet": "-2083015061489",
+      "liquidityGross": "2083015061489"
+    },
+    {
+      "index": -184260,
+      "liquidityNet": "5554715835757",
+      "liquidityGross": "5554715835757"
+    },
+    {
+      "index": -184200,
+      "liquidityNet": "-2148222855230411",
+      "liquidityGross": "2148222855230411"
+    },
+    {
+      "index": -184140,
+      "liquidityNet": "-5554715835757",
+      "liquidityGross": "5554715835757"
+    },
+    {
+      "index": -184020,
+      "liquidityNet": "-80929223546",
+      "liquidityGross": "80929223546"
+    },
+    {
+      "index": -183900,
+      "liquidityNet": "-43007766552636101",
+      "liquidityGross": "43007766552636101"
+    },
+    {
+      "index": -183480,
+      "liquidityNet": "-6984274581454",
+      "liquidityGross": "6984274581454"
+    },
+    {
+      "index": -183360,
+      "liquidityNet": "-187933296866",
+      "liquidityGross": "187933296866"
+    },
+    {
+      "index": -183180,
+      "liquidityNet": "-7236691024809",
+      "liquidityGross": "7236691024809"
+    },
+    {
+      "index": -181980,
+      "liquidityNet": "-335814617560660",
+      "liquidityGross": "335814617560660"
+    },
+    {
+      "index": -181680,
+      "liquidityNet": "-1353999612378",
+      "liquidityGross": "1353999612378"
+    },
+    {
+      "index": -181200,
+      "liquidityNet": "-113529433229",
+      "liquidityGross": "113529433229"
+    },
+    {
+      "index": -180840,
+      "liquidityNet": "-356799964643315",
+      "liquidityGross": "356799964643315"
+    },
+    {
+      "index": -180180,
+      "liquidityNet": "-59450986033681",
+      "liquidityGross": "59450986033681"
+    },
+    {
+      "index": -180120,
+      "liquidityNet": "-303984595577",
+      "liquidityGross": "303984595577"
+    },
+    {
+      "index": -179520,
+      "liquidityNet": "-14760697187118",
+      "liquidityGross": "14760697187118"
+    },
+    {
+      "index": -178620,
+      "liquidityNet": "-61251050720994",
+      "liquidityGross": "61251050720994"
+    },
+    {
+      "index": -178320,
+      "liquidityNet": "-177280162046764",
+      "liquidityGross": "177280162046764"
+    },
+    {
+      "index": -177480,
+      "liquidityNet": "-127005211380300",
+      "liquidityGross": "127005211380300"
+    },
+    {
+      "index": -177300,
+      "liquidityNet": "-270133945598659",
+      "liquidityGross": "270133945598659"
+    },
+    {
+      "index": -175080,
+      "liquidityNet": "-102585541689",
+      "liquidityGross": "102585541689"
+    },
+    {
+      "index": -175020,
+      "liquidityNet": "-125013686619150",
+      "liquidityGross": "125013686619150"
+    },
+    {
+      "index": -174900,
+      "liquidityNet": "-35264576526227",
+      "liquidityGross": "35264576526227"
+    },
+    {
+      "index": -174000,
+      "liquidityNet": "-7083531680537",
+      "liquidityGross": "7083531680537"
+    },
+    {
+      "index": -161160,
+      "liquidityNet": "-28089184550676",
+      "liquidityGross": "28089184550676"
+    },
+    {
+      "index": -153360,
+      "liquidityNet": "-2786887277176",
+      "liquidityGross": "2786887277176"
+    },
+    {
+      "index": -138180,
+      "liquidityNet": "-288120465862",
+      "liquidityGross": "288120465862"
+    },
+    {
+      "index": -115140,
+      "liquidityNet": "-17388473740",
+      "liquidityGross": "17388473740"
+    },
+    {
+      "index": -115080,
+      "liquidityNet": "-17389547040",
+      "liquidityGross": "17389547040"
+    },
+    {
+      "index": -70140,
+      "liquidityNet": "-17496133052",
+      "liquidityGross": "17496133052"
+    },
+    {
+      "index": -46080,
+      "liquidityNet": "-4986272703292",
+      "liquidityGross": "4986272703292"
+    },
+    {
+      "index": -19980,
+      "liquidityNet": "216558840797888217",
+      "liquidityGross": "216558840797888217"
+    },
+    {
+      "index": 18000,
+      "liquidityNet": "-216558840797888217",
+      "liquidityGross": "216558840797888217"
+    },
+    {
+      "index": 46080,
+      "liquidityNet": "-11571161531075",
+      "liquidityGross": "11571161531075"
+    },
+    {
+      "index": 60000,
+      "liquidityNet": "1006622141407037933",
+      "liquidityGross": "1006622141407037933"
+    },
+    {
+      "index": 70140,
+      "liquidityNet": "-968399120497163",
+      "liquidityGross": "968399120497163"
+    },
+    {
+      "index": 74160,
+      "liquidityNet": "47365088727841353",
+      "liquidityGross": "47365088727841353"
+    },
+    {
+      "index": 75960,
+      "liquidityNet": "-47365088727841353",
+      "liquidityGross": "47365088727841353"
+    },
+    {
+      "index": 81660,
+      "liquidityNet": "9915356752940611347",
+      "liquidityGross": "9915356752940611347"
+    },
+    {
+      "index": 81780,
+      "liquidityNet": "59667982119728326",
+      "liquidityGross": "19890381488000951020"
+    },
+    {
+      "index": 81900,
+      "liquidityNet": "-9975024735060339673",
+      "liquidityGross": "9975024735060339673"
+    },
+    {
+      "index": 82440,
+      "liquidityNet": "257741879600571692937",
+      "liquidityGross": "257741879600571692937"
+    },
+    {
+      "index": 82560,
+      "liquidityNet": "-257741879600571692937",
+      "liquidityGross": "257741879600571692937"
+    },
+    {
+      "index": 180000,
+      "liquidityNet": "-1006622141407037933",
+      "liquidityGross": "1006622141407037933"
+    },
+    {
+      "index": 887220,
+      "liquidityNet": "-768060989412727",
+      "liquidityGross": "768060989412727"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "10993274555382406987416",
+      "exactInput": true,
+      "expectedAmountCalculated": "18483206874272"
+    },
+    {
+      "amountSpecified": "4629017553025674266163",
+      "exactInput": true,
+      "expectedAmountCalculated": "8418527258221"
+    },
+    {
+      "amountSpecified": "735434738542633636224",
+      "exactInput": true,
+      "expectedAmountCalculated": "1395394183984"
+    },
+    {
+      "amountSpecified": "5399341746911882806131",
+      "exactInput": true,
+      "expectedAmountCalculated": "9730331299885"
+    },
+    {
+      "amountSpecified": "8150092983495599234094",
+      "exactInput": true,
+      "expectedAmountCalculated": "14205036082633"
+    },
+    {
+      "amountSpecified": "14403931999004332749915",
+      "exactInput": true,
+      "expectedAmountCalculated": "22944747987963"
+    },
+    {
+      "amountSpecified": "13270795355212192523916",
+      "exactInput": true,
+      "expectedAmountCalculated": "21575976292134"
+    },
+    {
+      "amountSpecified": "10368285273487577231604",
+      "exactInput": true,
+      "expectedAmountCalculated": "17578921449476"
+    },
+    {
+      "amountSpecified": "7842246822240975808447",
+      "exactInput": true,
+      "expectedAmountCalculated": "13720308489833"
+    },
+    {
+      "amountSpecified": "3989908837261520113185",
+      "exactInput": true,
+      "expectedAmountCalculated": "7310345185359"
+    },
+    {
+      "amountSpecified": "2157221493142757902098",
+      "exactInput": true,
+      "expectedAmountCalculated": "4034145303648"
+    },
+    {
+      "amountSpecified": "7872221326707236197854",
+      "exactInput": true,
+      "expectedAmountCalculated": "13767680289742"
+    },
+    {
+      "amountSpecified": "12625229046388539152376",
+      "exactInput": true,
+      "expectedAmountCalculated": "20731334135435"
+    },
+    {
+      "amountSpecified": "12690620174423670694389",
+      "exactInput": true,
+      "expectedAmountCalculated": "20818049139228"
+    },
+    {
+      "amountSpecified": "1158509186313191134947",
+      "exactInput": true,
+      "expectedAmountCalculated": "2189418300170"
+    },
+    {
+      "amountSpecified": "10043517401698629535074",
+      "exactInput": true,
+      "expectedAmountCalculated": "17099653390497"
+    },
+    {
+      "amountSpecified": "5416659225380155932009",
+      "exactInput": true,
+      "expectedAmountCalculated": "9759523560671"
+    },
+    {
+      "amountSpecified": "7230395499726495359934",
+      "exactInput": true,
+      "expectedAmountCalculated": "12744992014559"
+    },
+    {
+      "amountSpecified": "12659575835792868019731",
+      "exactInput": true,
+      "expectedAmountCalculated": "20776912866396"
+    },
+    {
+      "amountSpecified": "11783697323628367028926",
+      "exactInput": true,
+      "expectedAmountCalculated": "19592504482671"
+    },
+    {
+      "amountSpecified": "3604116165932566323945",
+      "exactInput": true,
+      "expectedAmountCalculated": "6632692092949"
+    },
+    {
+      "amountSpecified": "5564974581902403395424",
+      "exactInput": true,
+      "expectedAmountCalculated": "10009002219420"
+    },
+    {
+      "amountSpecified": "8276625647925896229419",
+      "exactInput": true,
+      "expectedAmountCalculated": "14403125439909"
+    },
+    {
+      "amountSpecified": "12184865569551485394126",
+      "exactInput": true,
+      "expectedAmountCalculated": "20140743855711"
+    },
+    {
+      "amountSpecified": "9396322492151394765891",
+      "exactInput": true,
+      "expectedAmountCalculated": "16127191934167"
+    },
+    {
+      "amountSpecified": "2484045141168549451563",
+      "exactInput": true,
+      "expectedAmountCalculated": "4628895927900"
+    },
+    {
+      "amountSpecified": "3754753507165818794688",
+      "exactInput": true,
+      "expectedAmountCalculated": "6898070485636"
+    },
+    {
+      "amountSpecified": "6260401172686623396903",
+      "exactInput": true,
+      "expectedAmountCalculated": "11165992396885"
+    },
+    {
+      "amountSpecified": "10100381447697789609486",
+      "exactInput": true,
+      "expectedAmountCalculated": "17184029240219"
+    },
+    {
+      "amountSpecified": "2177507003215728641896",
+      "exactInput": true,
+      "expectedAmountCalculated": "4071188840669"
+    },
+    {
+      "amountSpecified": "13102669642539782810502",
+      "exactInput": true,
+      "expectedAmountCalculated": "21358702960940"
+    },
+    {
+      "amountSpecified": "5336069776553421517608",
+      "exactInput": true,
+      "expectedAmountCalculated": "9623561060687"
+    },
+    {
+      "amountSpecified": "4278442550821958393046",
+      "exactInput": true,
+      "expectedAmountCalculated": "7812885516455"
+    },
+    {
+      "amountSpecified": "11945314285720859313792",
+      "exactInput": true,
+      "expectedAmountCalculated": "19814559905438"
+    },
+    {
+      "amountSpecified": "9971463924001639609992",
+      "exactInput": true,
+      "expectedAmountCalculated": "16992457028710"
+    },
+    {
+      "amountSpecified": "3729709071111740974353",
+      "exactInput": true,
+      "expectedAmountCalculated": "6854019055703"
+    },
+    {
+      "amountSpecified": "9606097236652287995511",
+      "exactInput": true,
+      "expectedAmountCalculated": "16444438147113"
+    },
+    {
+      "amountSpecified": "8954335305486222331446",
+      "exactInput": true,
+      "expectedAmountCalculated": "15452848822564"
+    },
+    {
+      "amountSpecified": "6776791711035427449801",
+      "exactInput": true,
+      "expectedAmountCalculated": "12011592471025"
+    },
+    {
+      "amountSpecified": "3911960040789687021585",
+      "exactInput": true,
+      "expectedAmountCalculated": "7173954552584"
+    },
+    {
+      "amountSpecified": "1354551073148549264535",
+      "exactInput": true,
+      "expectedAmountCalculated": "2554792792644"
+    },
+    {
+      "amountSpecified": "1487008760755255220673",
+      "exactInput": true,
+      "expectedAmountCalculated": "2800753134805"
+    },
+    {
+      "amountSpecified": "11833325482677601601025",
+      "exactInput": true,
+      "expectedAmountCalculated": "19660863555290"
+    },
+    {
+      "amountSpecified": "6737767307642787702273",
+      "exactInput": true,
+      "expectedAmountCalculated": "11948088719686"
+    },
+    {
+      "amountSpecified": "1333397073724142081751",
+      "exactInput": true,
+      "expectedAmountCalculated": "2515444350733"
+    },
+    {
+      "amountSpecified": "12579570167286752998686",
+      "exactInput": true,
+      "expectedAmountCalculated": "20670635768406"
+    },
+    {
+      "amountSpecified": "8384469164368136482266",
+      "exactInput": true,
+      "expectedAmountCalculated": "14571433252949"
+    },
+    {
+      "amountSpecified": "6121783960109328139389",
+      "exactInput": true,
+      "expectedAmountCalculated": "10937046603782"
+    },
+    {
+      "amountSpecified": "9763605377810549419734",
+      "exactInput": true,
+      "expectedAmountCalculated": "16681464246079"
+    },
+    {
+      "amountSpecified": "10934530811048947694868",
+      "exactInput": true,
+      "expectedAmountCalculated": "18399234979280"
+    },
+    {
+      "amountSpecified": "12130117120368",
+      "exactInput": false,
+      "expectedAmountCalculated": "6849734500386937737231"
+    },
+    {
+      "amountSpecified": "8595277236313",
+      "exactInput": false,
+      "expectedAmountCalculated": "4731926914903009051605"
+    },
+    {
+      "amountSpecified": "6636138851909",
+      "exactInput": false,
+      "expectedAmountCalculated": "3606069045678981368748"
+    },
+    {
+      "amountSpecified": "12478829848457",
+      "exactInput": false,
+      "expectedAmountCalculated": "7065150904894067946152"
+    },
+    {
+      "amountSpecified": "13600377819631",
+      "exactInput": false,
+      "expectedAmountCalculated": "7766467572923947905077"
+    },
+    {
+      "amountSpecified": "9821999013741",
+      "exactInput": false,
+      "expectedAmountCalculated": "5453747261409312352420"
+    },
+    {
+      "amountSpecified": "22129355014892",
+      "exactInput": false,
+      "expectedAmountCalculated": "13711603567667972025174"
+    },
+    {
+      "amountSpecified": "4595176035779",
+      "exactInput": false,
+      "expectedAmountCalculated": "2465449507903783652241"
+    },
+    {
+      "amountSpecified": "11986967261109",
+      "exactInput": false,
+      "expectedAmountCalculated": "6761654259546621278794"
+    },
+    {
+      "amountSpecified": "6229678001083",
+      "exactInput": false,
+      "expectedAmountCalculated": "3376416756934090668405"
+    },
+    {
+      "amountSpecified": "15993056544514",
+      "exactInput": false,
+      "expectedAmountCalculated": "9307983339305238121377"
+    },
+    {
+      "amountSpecified": "1626240794032",
+      "exactInput": false,
+      "expectedAmountCalculated": "858023479572981494765"
+    },
+    {
+      "amountSpecified": "11484213017915",
+      "exactInput": false,
+      "expectedAmountCalculated": "6453911381329500188474"
+    },
+    {
+      "amountSpecified": "9696292527604",
+      "exactInput": false,
+      "expectedAmountCalculated": "5379159069126987878235"
+    },
+    {
+      "amountSpecified": "7171714964347",
+      "exactInput": false,
+      "expectedAmountCalculated": "3910681361296311064929"
+    },
+    {
+      "amountSpecified": "12949322745664",
+      "exactInput": false,
+      "expectedAmountCalculated": "7357751261124046312744"
+    },
+    {
+      "amountSpecified": "3405016415512",
+      "exactInput": false,
+      "expectedAmountCalculated": "1814102645997405193699"
+    },
+    {
+      "amountSpecified": "3698606523424",
+      "exactInput": false,
+      "expectedAmountCalculated": "1973895328241647704014"
+    },
+    {
+      "amountSpecified": "17013109549286",
+      "exactInput": false,
+      "expectedAmountCalculated": "9985329281394702666594"
+    },
+    {
+      "amountSpecified": "7816060343307",
+      "exactInput": false,
+      "expectedAmountCalculated": "4280272111919177562889"
+    },
+    {
+      "amountSpecified": "15473901627596",
+      "exactInput": false,
+      "expectedAmountCalculated": "8968054247475613464969"
+    },
+    {
+      "amountSpecified": "20676770885843",
+      "exactInput": false,
+      "expectedAmountCalculated": "12584180940226160550013"
+    },
+    {
+      "amountSpecified": "23326403848785",
+      "exactInput": false,
+      "expectedAmountCalculated": "14752201946414716268471"
+    },
+    {
+      "amountSpecified": "15644335155036",
+      "exactInput": false,
+      "expectedAmountCalculated": "9079304763520576495877"
+    },
+    {
+      "amountSpecified": "12642947539871",
+      "exactInput": false,
+      "expectedAmountCalculated": "7166955758052591250795"
+    },
+    {
+      "amountSpecified": "10428440133953",
+      "exactInput": false,
+      "expectedAmountCalculated": "5815630326725735390587"
+    },
+    {
+      "amountSpecified": "16469147597738",
+      "exactInput": false,
+      "expectedAmountCalculated": "9622485938911079960170"
+    },
+    {
+      "amountSpecified": "15140421696529",
+      "exactInput": false,
+      "expectedAmountCalculated": "8751342798747775826714"
+    },
+    {
+      "amountSpecified": "11601129011452",
+      "exactInput": false,
+      "expectedAmountCalculated": "6525255662789955029210"
+    },
+    {
+      "amountSpecified": "11431979368750",
+      "exactInput": false,
+      "expectedAmountCalculated": "6422080648097060526004"
+    },
+    {
+      "amountSpecified": "3362241479895",
+      "exactInput": false,
+      "expectedAmountCalculated": "1790869106815320451502"
+    },
+    {
+      "amountSpecified": "2691521288994",
+      "exactInput": false,
+      "expectedAmountCalculated": "1428135332529474088679"
+    },
+    {
+      "amountSpecified": "24602240978883",
+      "exactInput": false,
+      "expectedAmountCalculated": "16128150000696380606478"
+    },
+    {
+      "amountSpecified": "6195169934017",
+      "exactInput": false,
+      "expectedAmountCalculated": "3356978587903552059112"
+    },
+    {
+      "amountSpecified": "14496379560170",
+      "exactInput": false,
+      "expectedAmountCalculated": "8336340348677508900432"
+    },
+    {
+      "amountSpecified": "11320460030901",
+      "exactInput": false,
+      "expectedAmountCalculated": "6354210457837959709831"
+    },
+    {
+      "amountSpecified": "18883343568992",
+      "exactInput": false,
+      "expectedAmountCalculated": "11275260527387859917211"
+    },
+    {
+      "amountSpecified": "17719133878735",
+      "exactInput": false,
+      "expectedAmountCalculated": "10464118788476056066612"
+    },
+    {
+      "amountSpecified": "13135424312765",
+      "exactInput": false,
+      "expectedAmountCalculated": "7474125174013036245994"
+    },
+    {
+      "amountSpecified": "6253891309544",
+      "exactInput": false,
+      "expectedAmountCalculated": "3390061321673488012923"
+    },
+    {
+      "amountSpecified": "17399130940203",
+      "exactInput": false,
+      "expectedAmountCalculated": "10245947563492389926578"
+    },
+    {
+      "amountSpecified": "16281583465071",
+      "exactInput": false,
+      "expectedAmountCalculated": "9498263549767024799497"
+    },
+    {
+      "amountSpecified": "24309494036132",
+      "exactInput": false,
+      "expectedAmountCalculated": "15758620978369988202137"
+    },
+    {
+      "amountSpecified": "12319708527278",
+      "exactInput": false,
+      "expectedAmountCalculated": "6966703650597140350769"
+    },
+    {
+      "amountSpecified": "1849808384222",
+      "exactInput": false,
+      "expectedAmountCalculated": "977064781631954971534"
+    },
+    {
+      "amountSpecified": "24136300460523",
+      "exactInput": false,
+      "expectedAmountCalculated": "15561060555380285117948"
+    },
+    {
+      "amountSpecified": "2171650837877",
+      "exactInput": false,
+      "expectedAmountCalculated": "1148998076801792599342"
+    },
+    {
+      "amountSpecified": "4563804584240",
+      "exactInput": false,
+      "expectedAmountCalculated": "2448156339117130192125"
+    },
+    {
+      "amountSpecified": "12364342497352",
+      "exactInput": false,
+      "expectedAmountCalculated": "6994292843154421508400"
+    },
+    {
+      "amountSpecified": "9455744622279",
+      "exactInput": false,
+      "expectedAmountCalculated": "5236831648144972028934"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x5764a6F2212D502bC5970f9f129fFcd61e5D7563-reversed.json b/src/__tests__/stubs/swap/0x5764a6F2212D502bC5970f9f129fFcd61e5D7563-reversed.json
new file mode 100644
index 00000000..79a376d0
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x5764a6F2212D502bC5970f9f129fFcd61e5D7563-reversed.json
@@ -0,0 +1,1481 @@
+{
+  "poolName": "SHIB - WETH 10000 - reversed",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE",
+    "decimals": 18
+  },
+  "fee": 10000,
+  "liquidity": "11363882441604651871497580",
+  "sqrtRatioX96": "4974957538249765117049858",
+  "tickCurrent": -193524,
+  "ticks": [
+    {
+      "index": -887200,
+      "liquidityNet": "154541292044329524050147",
+      "liquidityGross": "154541292044329524050147"
+    },
+    {
+      "index": -306200,
+      "liquidityNet": "31678561243879254",
+      "liquidityGross": "31678561243879254"
+    },
+    {
+      "index": -299400,
+      "liquidityNet": "3797057963241377690967",
+      "liquidityGross": "3797057963241377690967"
+    },
+    {
+      "index": -286400,
+      "liquidityNet": "6800115036246869377234",
+      "liquidityGross": "6800115036246869377234"
+    },
+    {
+      "index": -255600,
+      "liquidityNet": "509944694119416328475",
+      "liquidityGross": "509944694119416328475"
+    },
+    {
+      "index": -253200,
+      "liquidityNet": "28012641673547685072047",
+      "liquidityGross": "28012641673547685072047"
+    },
+    {
+      "index": -242600,
+      "liquidityNet": "4295760183281341699096",
+      "liquidityGross": "4295760183281341699096"
+    },
+    {
+      "index": -239000,
+      "liquidityNet": "229566064212090498087",
+      "liquidityGross": "229566064212090498087"
+    },
+    {
+      "index": -230200,
+      "liquidityNet": "5926508510801766635372",
+      "liquidityGross": "5926508510801766635372"
+    },
+    {
+      "index": -223400,
+      "liquidityNet": "502876267872324159014",
+      "liquidityGross": "502876267872324159014"
+    },
+    {
+      "index": -222800,
+      "liquidityNet": "24910493490750751774426",
+      "liquidityGross": "24910493490750751774426"
+    },
+    {
+      "index": -219200,
+      "liquidityNet": "72664628645239570547",
+      "liquidityGross": "72664628645239570547"
+    },
+    {
+      "index": -216400,
+      "liquidityNet": "23177249725126171901534",
+      "liquidityGross": "23177249725126171901534"
+    },
+    {
+      "index": -214400,
+      "liquidityNet": "557368056495120874913",
+      "liquidityGross": "557368056495120874913"
+    },
+    {
+      "index": -214000,
+      "liquidityNet": "107554148562723969006",
+      "liquidityGross": "107554148562723969006"
+    },
+    {
+      "index": -212000,
+      "liquidityNet": "26248015819511266856967",
+      "liquidityGross": "26248015819511266856967"
+    },
+    {
+      "index": -208800,
+      "liquidityNet": "113545533292392596997",
+      "liquidityGross": "113545533292392596997"
+    },
+    {
+      "index": -207200,
+      "liquidityNet": "7352715855065241942587",
+      "liquidityGross": "7352715855065241942587"
+    },
+    {
+      "index": -206200,
+      "liquidityNet": "-107554148562723969006",
+      "liquidityGross": "107554148562723969006"
+    },
+    {
+      "index": -205000,
+      "liquidityNet": "564797711787887794354",
+      "liquidityGross": "564797711787887794354"
+    },
+    {
+      "index": -204600,
+      "liquidityNet": "1570450579849558611641",
+      "liquidityGross": "1570450579849558611641"
+    },
+    {
+      "index": -203600,
+      "liquidityNet": "1927334362758620586838",
+      "liquidityGross": "1927334362758620586838"
+    },
+    {
+      "index": -203200,
+      "liquidityNet": "20771931938561958189479",
+      "liquidityGross": "20771931938561958189479"
+    },
+    {
+      "index": -203000,
+      "liquidityNet": "30851979550550149455",
+      "liquidityGross": "30851979550550149455"
+    },
+    {
+      "index": -202200,
+      "liquidityNet": "666672909788983165675",
+      "liquidityGross": "666672909788983165675"
+    },
+    {
+      "index": -202000,
+      "liquidityNet": "27479868904522565958820",
+      "liquidityGross": "27479868904522565958820"
+    },
+    {
+      "index": -201800,
+      "liquidityNet": "7682344500486241042150",
+      "liquidityGross": "7682344500486241042150"
+    },
+    {
+      "index": -201600,
+      "liquidityNet": "2907145521129037741526",
+      "liquidityGross": "2907145521129037741526"
+    },
+    {
+      "index": -201200,
+      "liquidityNet": "1148120057532106784729",
+      "liquidityGross": "1148120057532106784729"
+    },
+    {
+      "index": -200600,
+      "liquidityNet": "2843259901827134199862",
+      "liquidityGross": "2843259901827134199862"
+    },
+    {
+      "index": -200400,
+      "liquidityNet": "11088644621868200089541",
+      "liquidityGross": "11088644621868200089541"
+    },
+    {
+      "index": -200200,
+      "liquidityNet": "2320186184413662196191",
+      "liquidityGross": "2320186184413662196191"
+    },
+    {
+      "index": -199600,
+      "liquidityNet": "8378655701904187512806",
+      "liquidityGross": "8378655701904187512806"
+    },
+    {
+      "index": -198200,
+      "liquidityNet": "9263964927987191929358",
+      "liquidityGross": "9263964927987191929358"
+    },
+    {
+      "index": -198000,
+      "liquidityNet": "123136871505463967638",
+      "liquidityGross": "123136871505463967638"
+    },
+    {
+      "index": -197800,
+      "liquidityNet": "31211600637299138804945",
+      "liquidityGross": "31211600637299138804945"
+    },
+    {
+      "index": -197400,
+      "liquidityNet": "15365335658759092721998",
+      "liquidityGross": "15365335658759092721998"
+    },
+    {
+      "index": -197000,
+      "liquidityNet": "7987955410296070663372",
+      "liquidityGross": "10686999200805816297120"
+    },
+    {
+      "index": -196800,
+      "liquidityNet": "42369792563411118561595",
+      "liquidityGross": "42383567725106761923159"
+    },
+    {
+      "index": -196600,
+      "liquidityNet": "12273465822333446481438",
+      "liquidityGross": "12273465822333446481438"
+    },
+    {
+      "index": -196400,
+      "liquidityNet": "294980120416035787527714",
+      "liquidityGross": "295055534399038730200220"
+    },
+    {
+      "index": -196200,
+      "liquidityNet": "14501427089668200925567",
+      "liquidityGross": "14501427089668200925567"
+    },
+    {
+      "index": -196000,
+      "liquidityNet": "1621984966782555954053636",
+      "liquidityGross": "1621984966782555954053636"
+    },
+    {
+      "index": -195800,
+      "liquidityNet": "115879869596406162729469",
+      "liquidityGross": "115879869596406162729469"
+    },
+    {
+      "index": -195600,
+      "liquidityNet": "-90035069651809186142350",
+      "liquidityGross": "145136079856368810502232"
+    },
+    {
+      "index": -195400,
+      "liquidityNet": "5031567751470525001275816",
+      "liquidityGross": "5031567751470525001275816"
+    },
+    {
+      "index": -195200,
+      "liquidityNet": "80376119217811573443745",
+      "liquidityGross": "81152720486910839488163"
+    },
+    {
+      "index": -195000,
+      "liquidityNet": "126973663216832807481855",
+      "liquidityGross": "149300716205752265560955"
+    },
+    {
+      "index": -194800,
+      "liquidityNet": "167331331546414757370442",
+      "liquidityGross": "273294854196788691629500"
+    },
+    {
+      "index": -194600,
+      "liquidityNet": "-7213714195195211571374",
+      "liquidityGross": "13924066811696241337146"
+    },
+    {
+      "index": -194400,
+      "liquidityNet": "-9032452233309417720918",
+      "liquidityGross": "38974852463825974774812"
+    },
+    {
+      "index": -194200,
+      "liquidityNet": "24369034931390483874539",
+      "liquidityGross": "24369034931390483874539"
+    },
+    {
+      "index": -194000,
+      "liquidityNet": "646485870801697935877979",
+      "liquidityGross": "646485870801697935877979"
+    },
+    {
+      "index": -193800,
+      "liquidityNet": "19873210059947984802816",
+      "liquidityGross": "19873940541660461795116"
+    },
+    {
+      "index": -193600,
+      "liquidityNet": "2830816948563006995507569",
+      "liquidityGross": "2842739569943570944214765"
+    },
+    {
+      "index": -193400,
+      "liquidityNet": "7723470241065099531407",
+      "liquidityGross": "70132896353967733779733"
+    },
+    {
+      "index": -193200,
+      "liquidityNet": "143152451331552698932355",
+      "liquidityGross": "143985714237704258020981"
+    },
+    {
+      "index": -193000,
+      "liquidityNet": "-28205785068239666346363",
+      "liquidityGross": "65266552546559299897753"
+    },
+    {
+      "index": -192800,
+      "liquidityNet": "-2506684831265914720591962",
+      "liquidityGross": "2623890586238241787849622"
+    },
+    {
+      "index": -192600,
+      "liquidityNet": "-70863725257611054813107",
+      "liquidityGross": "76119259188381424206949"
+    },
+    {
+      "index": -192400,
+      "liquidityNet": "53073212319415497396178",
+      "liquidityGross": "53073212319415497396178"
+    },
+    {
+      "index": -192200,
+      "liquidityNet": "155890532174583136186417",
+      "liquidityGross": "155890532174583136186417"
+    },
+    {
+      "index": -192000,
+      "liquidityNet": "89528004065004648282053",
+      "liquidityGross": "98105968789118345187237"
+    },
+    {
+      "index": -191800,
+      "liquidityNet": "198679904264839287768475",
+      "liquidityGross": "210361244974874166419783"
+    },
+    {
+      "index": -191600,
+      "liquidityNet": "110264156571804121045000",
+      "liquidityGross": "110264156571804121045000"
+    },
+    {
+      "index": -191400,
+      "liquidityNet": "117711614126610697308742",
+      "liquidityGross": "117711988139130646825072"
+    },
+    {
+      "index": -191200,
+      "liquidityNet": "75804627057624863325243",
+      "liquidityGross": "102976388225032735267543"
+    },
+    {
+      "index": -191000,
+      "liquidityNet": "-72843087613898542693945",
+      "liquidityGross": "125130255778053219014489"
+    },
+    {
+      "index": -190600,
+      "liquidityNet": "141598931851072575644507",
+      "liquidityGross": "141598931851072575644507"
+    },
+    {
+      "index": -190400,
+      "liquidityNet": "40374700412856493965836",
+      "liquidityGross": "40374700412856493965836"
+    },
+    {
+      "index": -190200,
+      "liquidityNet": "20274413734164208851164",
+      "liquidityGross": "20274413734164208851164"
+    },
+    {
+      "index": -190000,
+      "liquidityNet": "525269424871662490643269",
+      "liquidityGross": "525269424871662490643269"
+    },
+    {
+      "index": -189800,
+      "liquidityNet": "-1927334362758620586838",
+      "liquidityGross": "1927334362758620586838"
+    },
+    {
+      "index": -189600,
+      "liquidityNet": "-1280043701533625981878511",
+      "liquidityGross": "1283794329156605552819505"
+    },
+    {
+      "index": -189400,
+      "liquidityNet": "37418847013119261957703",
+      "liquidityGross": "37418847013119261957703"
+    },
+    {
+      "index": -189200,
+      "liquidityNet": "162729481609612247518491",
+      "liquidityGross": "162729481609612247518491"
+    },
+    {
+      "index": -189000,
+      "liquidityNet": "699173554219116725529930",
+      "liquidityGross": "872151481692815224608612"
+    },
+    {
+      "index": -188600,
+      "liquidityNet": "14527363356450151165050",
+      "liquidityGross": "14527363356450151165050"
+    },
+    {
+      "index": -188400,
+      "liquidityNet": "34691343310084197055076",
+      "liquidityGross": "34691343310084197055076"
+    },
+    {
+      "index": -188000,
+      "liquidityNet": "20114334750217219324179",
+      "liquidityGross": "20114334750217219324179"
+    },
+    {
+      "index": -187800,
+      "liquidityNet": "305700789254967622780119",
+      "liquidityGross": "306038842461174406022053"
+    },
+    {
+      "index": -187600,
+      "liquidityNet": "21762080148041035328769",
+      "liquidityGross": "62912908304903249235423"
+    },
+    {
+      "index": -187400,
+      "liquidityNet": "1565011823095461950993",
+      "liquidityGross": "1565011823095461950993"
+    },
+    {
+      "index": -187200,
+      "liquidityNet": "-34144310638469687848391",
+      "liquidityGross": "34144310638469687848391"
+    },
+    {
+      "index": -187000,
+      "liquidityNet": "5237768359941676722120439",
+      "liquidityGross": "5245863121918853614544687"
+    },
+    {
+      "index": -186800,
+      "liquidityNet": "143183600057583074647901",
+      "liquidityGross": "143806709188329054338993"
+    },
+    {
+      "index": -186600,
+      "liquidityNet": "-8134039404006299601302",
+      "liquidityGross": "8134039404006299601302"
+    },
+    {
+      "index": -186400,
+      "liquidityNet": "49727417701116088776155",
+      "liquidityGross": "49727417701116088776155"
+    },
+    {
+      "index": -186200,
+      "liquidityNet": "27021461351278943724975",
+      "liquidityGross": "29192387934415312234559"
+    },
+    {
+      "index": -186000,
+      "liquidityNet": "148347329191710848637006",
+      "liquidityGross": "1521623235102905766563146"
+    },
+    {
+      "index": -185800,
+      "liquidityNet": "-4790311528458046481997271",
+      "liquidityGross": "5742210243632810230116311"
+    },
+    {
+      "index": -185600,
+      "liquidityNet": "-998105309548260172078",
+      "liquidityGross": "998105309548260172078"
+    },
+    {
+      "index": -185400,
+      "liquidityNet": "-46550528544427536216623",
+      "liquidityGross": "46550528544427536216623"
+    },
+    {
+      "index": -185200,
+      "liquidityNet": "42934321464079612161412",
+      "liquidityGross": "45068138460350597072958"
+    },
+    {
+      "index": -185000,
+      "liquidityNet": "-3351625433311913114305",
+      "liquidityGross": "9196620903737072754825"
+    },
+    {
+      "index": -184800,
+      "liquidityNet": "-4878235560747223793668570",
+      "liquidityGross": "4976073431899267649972326"
+    },
+    {
+      "index": -184600,
+      "liquidityNet": "-1258500034486215916403758",
+      "liquidityGross": "1267351280394602676696068"
+    },
+    {
+      "index": -184400,
+      "liquidityNet": "-14527363356450151165050",
+      "liquidityGross": "14527363356450151165050"
+    },
+    {
+      "index": -184200,
+      "liquidityNet": "-78985923282095601041748",
+      "liquidityGross": "78985923282095601041748"
+    },
+    {
+      "index": -183800,
+      "liquidityNet": "-263092199714040100462523",
+      "liquidityGross": "292275804458442058240247"
+    },
+    {
+      "index": -183600,
+      "liquidityNet": "-249533313339457886146831",
+      "liquidityGross": "249533313339457886146831"
+    },
+    {
+      "index": -183400,
+      "liquidityNet": "-4410341650346459558934",
+      "liquidityGross": "6939722591923545390558"
+    },
+    {
+      "index": -183200,
+      "liquidityNet": "-87997473986252398173669",
+      "liquidityGross": "87997473986252398173669"
+    },
+    {
+      "index": -183000,
+      "liquidityNet": "-2179180702217662857635",
+      "liquidityGross": "16830645536938403848963"
+    },
+    {
+      "index": -182600,
+      "liquidityNet": "-701506004112737478320961",
+      "liquidityGross": "1515658826591855003460315"
+    },
+    {
+      "index": -182400,
+      "liquidityNet": "127604341219527227296790",
+      "liquidityGross": "220019168775446328122792"
+    },
+    {
+      "index": -182200,
+      "liquidityNet": "-121951915677304856108024",
+      "liquidityGross": "123133055698537649410674"
+    },
+    {
+      "index": -182000,
+      "liquidityNet": "-27595397650240223478877",
+      "liquidityGross": "29293567890817334470305"
+    },
+    {
+      "index": -181800,
+      "liquidityNet": "-41169473108925712761204",
+      "liquidityGross": "41169473108925712761204"
+    },
+    {
+      "index": -181600,
+      "liquidityNet": "-255791502754676605584",
+      "liquidityGross": "255791502754676605584"
+    },
+    {
+      "index": -181400,
+      "liquidityNet": "-69378590820045528192210",
+      "liquidityGross": "91023759305037635585674"
+    },
+    {
+      "index": -181200,
+      "liquidityNet": "-348931982374123360986",
+      "liquidityGross": "348931982374123360986"
+    },
+    {
+      "index": -181000,
+      "liquidityNet": "-50830164649617468397240",
+      "liquidityGross": "50830164649617468397240"
+    },
+    {
+      "index": -180800,
+      "liquidityNet": "-647024601026214154526",
+      "liquidityGross": "647024601026214154526"
+    },
+    {
+      "index": -180600,
+      "liquidityNet": "-39793808766706653266692",
+      "liquidityGross": "39793808766706653266692"
+    },
+    {
+      "index": -180400,
+      "liquidityNet": "-16222874096244303022361",
+      "liquidityGross": "16222874096244303022361"
+    },
+    {
+      "index": -180200,
+      "liquidityNet": "-33969211036785004356203",
+      "liquidityGross": "33969211036785004356203"
+    },
+    {
+      "index": -180000,
+      "liquidityNet": "-657302075488921016759982",
+      "liquidityGross": "657302075488921016759982"
+    },
+    {
+      "index": -179800,
+      "liquidityNet": "-5032123045424563697663",
+      "liquidityGross": "5032123045424563697663"
+    },
+    {
+      "index": -179600,
+      "liquidityNet": "-258526193836101958862314",
+      "liquidityGross": "286004253943860942554182"
+    },
+    {
+      "index": -179400,
+      "liquidityNet": "-101373199797608579534640",
+      "liquidityGross": "101373199797608579534640"
+    },
+    {
+      "index": -179200,
+      "liquidityNet": "-25305853816923338992017",
+      "liquidityGross": "25305853816923338992017"
+    },
+    {
+      "index": -179000,
+      "liquidityNet": "-57855171652465803562782",
+      "liquidityGross": "57855171652465803562782"
+    },
+    {
+      "index": -178800,
+      "liquidityNet": "-930709500114690656322",
+      "liquidityGross": "930709500114690656322"
+    },
+    {
+      "index": -178600,
+      "liquidityNet": "-210075282757461572654201",
+      "liquidityGross": "210075282757461572654201"
+    },
+    {
+      "index": -178400,
+      "liquidityNet": "-149236259728324101896316",
+      "liquidityGross": "149236259728324101896316"
+    },
+    {
+      "index": -178200,
+      "liquidityNet": "-13041375232549361603162",
+      "liquidityGross": "13041375232549361603162"
+    },
+    {
+      "index": -178000,
+      "liquidityNet": "-47013812223574778649482",
+      "liquidityGross": "47013812223574778649482"
+    },
+    {
+      "index": -177600,
+      "liquidityNet": "-273101332864675968871608",
+      "liquidityGross": "273101332864675968871608"
+    },
+    {
+      "index": -177400,
+      "liquidityNet": "-6293737527730924090300",
+      "liquidityGross": "6293737527730924090300"
+    },
+    {
+      "index": -177200,
+      "liquidityNet": "-14637433634024845099479",
+      "liquidityGross": "14637433634024845099479"
+    },
+    {
+      "index": -176800,
+      "liquidityNet": "-38923838792597966331605",
+      "liquidityGross": "38923838792597966331605"
+    },
+    {
+      "index": -176600,
+      "liquidityNet": "-226283945794556333178",
+      "liquidityGross": "226283945794556333178"
+    },
+    {
+      "index": -176400,
+      "liquidityNet": "-48185901063480787727931",
+      "liquidityGross": "48185901063480787727931"
+    },
+    {
+      "index": -176200,
+      "liquidityNet": "-39757955917001779794719",
+      "liquidityGross": "39757955917001779794719"
+    },
+    {
+      "index": -175800,
+      "liquidityNet": "-20274413734164208851164",
+      "liquidityGross": "20274413734164208851164"
+    },
+    {
+      "index": -175600,
+      "liquidityNet": "-207750410091065576652521",
+      "liquidityGross": "207750410091065576652521"
+    },
+    {
+      "index": -175000,
+      "liquidityNet": "-28630508016434193208265",
+      "liquidityGross": "28630508016434193208265"
+    },
+    {
+      "index": -174800,
+      "liquidityNet": "-24558194058081772429267",
+      "liquidityGross": "24558194058081772429267"
+    },
+    {
+      "index": -174000,
+      "liquidityNet": "-36909342716195308188008",
+      "liquidityGross": "36909342716195308188008"
+    },
+    {
+      "index": -173800,
+      "liquidityNet": "-33695661630077410282727",
+      "liquidityGross": "33695661630077410282727"
+    },
+    {
+      "index": -173600,
+      "liquidityNet": "-7358517997094643736149",
+      "liquidityGross": "7358517997094643736149"
+    },
+    {
+      "index": -173200,
+      "liquidityNet": "-64356530447701283262478",
+      "liquidityGross": "64356530447701283262478"
+    },
+    {
+      "index": -173000,
+      "liquidityNet": "-48918935576021928151878",
+      "liquidityGross": "48918935576021928151878"
+    },
+    {
+      "index": -172800,
+      "liquidityNet": "-549054030935428225283",
+      "liquidityGross": "549054030935428225283"
+    },
+    {
+      "index": -172400,
+      "liquidityNet": "-407971556340003681382789",
+      "liquidityGross": "407971556340003681382789"
+    },
+    {
+      "index": -172200,
+      "liquidityNet": "-6551236556042029575025",
+      "liquidityGross": "6551236556042029575025"
+    },
+    {
+      "index": -172000,
+      "liquidityNet": "-1839906296785431365101",
+      "liquidityGross": "1839906296785431365101"
+    },
+    {
+      "index": -171600,
+      "liquidityNet": "-556338856903835254792",
+      "liquidityGross": "556338856903835254792"
+    },
+    {
+      "index": -171400,
+      "liquidityNet": "-3193806899974643203703",
+      "liquidityGross": "3193806899974643203703"
+    },
+    {
+      "index": -171200,
+      "liquidityNet": "-590570010616396651325",
+      "liquidityGross": "590570010616396651325"
+    },
+    {
+      "index": -170400,
+      "liquidityNet": "-48823810167021747180893",
+      "liquidityGross": "48823810167021747180893"
+    },
+    {
+      "index": -170000,
+      "liquidityNet": "-229566064212090498087",
+      "liquidityGross": "229566064212090498087"
+    },
+    {
+      "index": -168800,
+      "liquidityNet": "-9073770926604375687798",
+      "liquidityGross": "9073770926604375687798"
+    },
+    {
+      "index": -166200,
+      "liquidityNet": "-871468577869794159923",
+      "liquidityGross": "871468577869794159923"
+    },
+    {
+      "index": -165400,
+      "liquidityNet": "-6486615453879963619126",
+      "liquidityGross": "6486615453879963619126"
+    },
+    {
+      "index": -164800,
+      "liquidityNet": "-13739030053879491845934",
+      "liquidityGross": "13739030053879491845934"
+    },
+    {
+      "index": -164400,
+      "liquidityNet": "-3355176308250514882886",
+      "liquidityGross": "3355176308250514882886"
+    },
+    {
+      "index": -163200,
+      "liquidityNet": "-4356443121005815801176",
+      "liquidityGross": "4356443121005815801176"
+    },
+    {
+      "index": -161200,
+      "liquidityNet": "-14850594064123416512543",
+      "liquidityGross": "14850594064123416512543"
+    },
+    {
+      "index": -161000,
+      "liquidityNet": "-28106924642847127979767",
+      "liquidityGross": "28106924642847127979767"
+    },
+    {
+      "index": -160000,
+      "liquidityNet": "-1439956973964791968650",
+      "liquidityGross": "1439956973964791968650"
+    },
+    {
+      "index": -159400,
+      "liquidityNet": "-1826330582586902148072",
+      "liquidityGross": "1826330582586902148072"
+    },
+    {
+      "index": -156800,
+      "liquidityNet": "-251229926034014529871",
+      "liquidityGross": "251229926034014529871"
+    },
+    {
+      "index": -153600,
+      "liquidityNet": "-2014873695263824401743",
+      "liquidityGross": "2014873695263824401743"
+    },
+    {
+      "index": -150600,
+      "liquidityNet": "-1678495364254988459242",
+      "liquidityGross": "1678495364254988459242"
+    },
+    {
+      "index": -149600,
+      "liquidityNet": "-1273658659050657026391",
+      "liquidityGross": "1273658659050657026391"
+    },
+    {
+      "index": -146400,
+      "liquidityNet": "-13392190024620003833",
+      "liquidityGross": "13392190024620003833"
+    },
+    {
+      "index": -144600,
+      "liquidityNet": "-24910493490750751774426",
+      "liquidityGross": "24910493490750751774426"
+    },
+    {
+      "index": -139200,
+      "liquidityNet": "-23177249725126171901534",
+      "liquidityGross": "23177249725126171901534"
+    },
+    {
+      "index": -138200,
+      "liquidityNet": "-3359476298150602088390",
+      "liquidityGross": "3359476298150602088390"
+    },
+    {
+      "index": -131600,
+      "liquidityNet": "-72664628645239570547",
+      "liquidityGross": "72664628645239570547"
+    },
+    {
+      "index": -131400,
+      "liquidityNet": "-333985318898863342633",
+      "liquidityGross": "333985318898863342633"
+    },
+    {
+      "index": -131200,
+      "liquidityNet": "-397179494977698101405",
+      "liquidityGross": "397179494977698101405"
+    },
+    {
+      "index": -120000,
+      "liquidityNet": "-35270088374773072164968",
+      "liquidityGross": "35270088374773072164968"
+    },
+    {
+      "index": -115200,
+      "liquidityNet": "-27678656354648821729414",
+      "liquidityGross": "27678656354648821729414"
+    },
+    {
+      "index": -102200,
+      "liquidityNet": "-6783476290044327869546",
+      "liquidityGross": "6783476290044327869546"
+    },
+    {
+      "index": -102000,
+      "liquidityNet": "-16638746202541507688",
+      "liquidityGross": "16638746202541507688"
+    },
+    {
+      "index": -98400,
+      "liquidityNet": "-12601512127730780359485",
+      "liquidityGross": "12601512127730780359485"
+    },
+    {
+      "index": -69000,
+      "liquidityNet": "-7487522126563030416617",
+      "liquidityGross": "7487522126563030416617"
+    },
+    {
+      "index": -66800,
+      "liquidityNet": "3548684134634150558768046",
+      "liquidityGross": "3548684134634150558768046"
+    },
+    {
+      "index": -66600,
+      "liquidityNet": "-3548684134634150558768046",
+      "liquidityGross": "3548684134634150558768046"
+    },
+    {
+      "index": -46000,
+      "liquidityNet": "-5087322659085116641811",
+      "liquidityGross": "5087322659085116641811"
+    },
+    {
+      "index": -34000,
+      "liquidityNet": "-31678561243879254",
+      "liquidityGross": "31678561243879254"
+    },
+    {
+      "index": -23000,
+      "liquidityNet": "-4369115390407162992015",
+      "liquidityGross": "4369115390407162992015"
+    },
+    {
+      "index": -12800,
+      "liquidityNet": "-2922497735212579820260",
+      "liquidityGross": "2922497735212579820260"
+    },
+    {
+      "index": 0,
+      "liquidityNet": "-926583849936711149605",
+      "liquidityGross": "926583849936711149605"
+    },
+    {
+      "index": 35000,
+      "liquidityNet": "680098383606428575667",
+      "liquidityGross": "680098383606428575667"
+    },
+    {
+      "index": 36400,
+      "liquidityNet": "3081019920017682805",
+      "liquidityGross": "3081019920017682805"
+    },
+    {
+      "index": 46000,
+      "liquidityNet": "-680098383606428575667",
+      "liquidityGross": "680098383606428575667"
+    },
+    {
+      "index": 138200,
+      "liquidityNet": "-51071263171364619270508",
+      "liquidityGross": "51071263171364619270508"
+    },
+    {
+      "index": 887200,
+      "liquidityNet": "-146930801584755333847520",
+      "liquidityGross": "146930801584755333847520"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "80589054969306831255",
+      "exactInput": true,
+      "expectedAmountCalculated": "18012486936609977446520236413"
+    },
+    {
+      "amountSpecified": "62331604519329004195",
+      "exactInput": true,
+      "expectedAmountCalculated": "14315823429597834131442496957"
+    },
+    {
+      "amountSpecified": "16027141231402649838",
+      "exactInput": true,
+      "expectedAmountCalculated": "3936698206899019002118443595"
+    },
+    {
+      "amountSpecified": "47270813140808217975",
+      "exactInput": true,
+      "expectedAmountCalculated": "11108189203149294932043493860"
+    },
+    {
+      "amountSpecified": "4458246654297648040",
+      "exactInput": true,
+      "expectedAmountCalculated": "1112504348795064174144067939"
+    },
+    {
+      "amountSpecified": "85531832046564612709",
+      "exactInput": true,
+      "expectedAmountCalculated": "18979896761556076448211925479"
+    },
+    {
+      "amountSpecified": "88388936906656726060",
+      "exactInput": true,
+      "expectedAmountCalculated": "19532858533939822377748142046"
+    },
+    {
+      "amountSpecified": "58783566259442319344",
+      "exactInput": true,
+      "expectedAmountCalculated": "13573685481063702765041598848"
+    },
+    {
+      "amountSpecified": "61505386838497704025",
+      "exactInput": true,
+      "expectedAmountCalculated": "14143723266582597333832088638"
+    },
+    {
+      "amountSpecified": "28212942018798726770",
+      "exactInput": true,
+      "expectedAmountCalculated": "6817870609373333012799926621"
+    },
+    {
+      "amountSpecified": "41869273520628919120",
+      "exactInput": true,
+      "expectedAmountCalculated": "9919681718273974267475388480"
+    },
+    {
+      "amountSpecified": "36761523022657189160",
+      "exactInput": true,
+      "expectedAmountCalculated": "8776146624139742011756803725"
+    },
+    {
+      "amountSpecified": "253753739827355884",
+      "exactInput": true,
+      "expectedAmountCalculated": "63690577700599597242022990"
+    },
+    {
+      "amountSpecified": "5157830893527001720",
+      "exactInput": true,
+      "expectedAmountCalculated": "1285837335949227012196642355"
+    },
+    {
+      "amountSpecified": "58087287538518563255",
+      "exactInput": true,
+      "expectedAmountCalculated": "13427096629566816383476902825"
+    },
+    {
+      "amountSpecified": "31009892645057732320",
+      "exactInput": true,
+      "expectedAmountCalculated": "7464797424423872212781809012"
+    },
+    {
+      "amountSpecified": "51735953512470186330",
+      "exactInput": true,
+      "expectedAmountCalculated": "12075112458298757935069372185"
+    },
+    {
+      "amountSpecified": "85033486888889919345",
+      "exactInput": true,
+      "expectedAmountCalculated": "18882981310516445147684408030"
+    },
+    {
+      "amountSpecified": "35818185004985637640",
+      "exactInput": true,
+      "expectedAmountCalculated": "8562806188824824360957041045"
+    },
+    {
+      "amountSpecified": "39741126625081310870",
+      "exactInput": true,
+      "expectedAmountCalculated": "9445586962443637080620041568"
+    },
+    {
+      "amountSpecified": "79472969498323157575",
+      "exactInput": true,
+      "expectedAmountCalculated": "17792136513742629489597393848"
+    },
+    {
+      "amountSpecified": "16090037894520582480",
+      "exactInput": true,
+      "expectedAmountCalculated": "3951812101507820869761643370"
+    },
+    {
+      "amountSpecified": "32852424061399164760",
+      "exactInput": true,
+      "expectedAmountCalculated": "7887655878414549178747473563"
+    },
+    {
+      "amountSpecified": "36765188622280601920",
+      "exactInput": true,
+      "expectedAmountCalculated": "8776974299656704517787084662"
+    },
+    {
+      "amountSpecified": "5205721466189342480",
+      "exactInput": true,
+      "expectedAmountCalculated": "1297690769170768095681627203"
+    },
+    {
+      "amountSpecified": "24241046858004510870",
+      "exactInput": true,
+      "expectedAmountCalculated": "5889141154710507695056162890"
+    },
+    {
+      "amountSpecified": "40044113277382380360",
+      "exactInput": true,
+      "expectedAmountCalculated": "9513288760518223281038645165"
+    },
+    {
+      "amountSpecified": "20713105301045233320",
+      "exactInput": true,
+      "expectedAmountCalculated": "5055790945218771573376146035"
+    },
+    {
+      "amountSpecified": "62113794513091230826",
+      "exactInput": true,
+      "expectedAmountCalculated": "14270495992284894556910185125"
+    },
+    {
+      "amountSpecified": "76166039659086684370",
+      "exactInput": true,
+      "expectedAmountCalculated": "17135060746092234322075711706"
+    },
+    {
+      "amountSpecified": "62398347318716494085",
+      "exactInput": true,
+      "expectedAmountCalculated": "14329706936718580221333238354"
+    },
+    {
+      "amountSpecified": "56110537331338551285",
+      "exactInput": true,
+      "expectedAmountCalculated": "13009206103113986367460809768"
+    },
+    {
+      "amountSpecified": "68977997595482043215",
+      "exactInput": true,
+      "expectedAmountCalculated": "15684733054441413145892535863"
+    },
+    {
+      "amountSpecified": "45453816077972913968",
+      "exactInput": true,
+      "expectedAmountCalculated": "10710725470630024218589200846"
+    },
+    {
+      "amountSpecified": "88019441935912631340",
+      "exactInput": true,
+      "expectedAmountCalculated": "19461601900500670837143498426"
+    },
+    {
+      "amountSpecified": "20665906509702698160",
+      "exactInput": true,
+      "expectedAmountCalculated": "5044588722764712125558597962"
+    },
+    {
+      "amountSpecified": "77154636772514392525",
+      "exactInput": true,
+      "expectedAmountCalculated": "17332151833128924791052379527"
+    },
+    {
+      "amountSpecified": "23990001130982989920",
+      "exactInput": true,
+      "expectedAmountCalculated": "5830098749527889554884340627"
+    },
+    {
+      "amountSpecified": "50172254365389042390",
+      "exactInput": true,
+      "expectedAmountCalculated": "11738068698056536602344842577"
+    },
+    {
+      "amountSpecified": "82312368576367158355",
+      "exactInput": true,
+      "expectedAmountCalculated": "18351336909009688474179814549"
+    },
+    {
+      "amountSpecified": "83529421737026867595",
+      "exactInput": true,
+      "expectedAmountCalculated": "18589634365823433098523818494"
+    },
+    {
+      "amountSpecified": "50699403957440981995",
+      "exactInput": true,
+      "expectedAmountCalculated": "11851879763152363825061629136"
+    },
+    {
+      "amountSpecified": "27002479659298652285",
+      "exactInput": true,
+      "expectedAmountCalculated": "6535995043374325957278949560"
+    },
+    {
+      "amountSpecified": "16563887474692038440",
+      "exactInput": true,
+      "expectedAmountCalculated": "4065595039123532637549708605"
+    },
+    {
+      "amountSpecified": "58889241890359614510",
+      "exactInput": true,
+      "expectedAmountCalculated": "13595906202294682574319607332"
+    },
+    {
+      "amountSpecified": "1680342744564700152",
+      "exactInput": true,
+      "expectedAmountCalculated": "420922549175174191915582430"
+    },
+    {
+      "amountSpecified": "84202163591826738885",
+      "exactInput": true,
+      "expectedAmountCalculated": "18721000090460031937505931999"
+    },
+    {
+      "amountSpecified": "5877201691367837480",
+      "exactInput": true,
+      "expectedAmountCalculated": "1463724945574798377696042757"
+    },
+    {
+      "amountSpecified": "79119059361709520685",
+      "exactInput": true,
+      "expectedAmountCalculated": "17722115423682196604904451785"
+    },
+    {
+      "amountSpecified": "3241322177846634520",
+      "exactInput": true,
+      "expectedAmountCalculated": "810194277060617225289448022"
+    },
+    {
+      "amountSpecified": "70551988443877354548014571648",
+      "exactInput": false,
+      "expectedAmountCalculated": "506971160022877754601"
+    },
+    {
+      "amountSpecified": "76639298202713125947736410208",
+      "exactInput": false,
+      "expectedAmountCalculated": "2727832313033304433326670608612494910832416"
+    },
+    {
+      "amountSpecified": "22675628179549406547577557264",
+      "exactInput": false,
+      "expectedAmountCalculated": "105083351944692697931"
+    },
+    {
+      "amountSpecified": "71068401790343163111410788064",
+      "exactInput": false,
+      "expectedAmountCalculated": "516198217265281899216"
+    },
+    {
+      "amountSpecified": "75389193087273832928763384736",
+      "exactInput": false,
+      "expectedAmountCalculated": "1078293742319700586992"
+    },
+    {
+      "amountSpecified": "39780087058410140016646406152",
+      "exactInput": false,
+      "expectedAmountCalculated": "211732734447998910821"
+    },
+    {
+      "amountSpecified": "4607577500946507497353604712",
+      "exactInput": false,
+      "expectedAmountCalculated": "18829257211199911468"
+    },
+    {
+      "amountSpecified": "27506649836725061672792339756",
+      "exactInput": false,
+      "expectedAmountCalculated": "132326763877014390397"
+    },
+    {
+      "amountSpecified": "74983412649743598722479505024",
+      "exactInput": false,
+      "expectedAmountCalculated": "715660946497486485203"
+    },
+    {
+      "amountSpecified": "25032064418095878845641181936",
+      "exactInput": false,
+      "expectedAmountCalculated": "118127084457784959476"
+    },
+    {
+      "amountSpecified": "67286831122200543241691253008",
+      "exactInput": false,
+      "expectedAmountCalculated": "458109186421596151144"
+    },
+    {
+      "amountSpecified": "70812225683149605637112577152",
+      "exactInput": false,
+      "expectedAmountCalculated": "511543228690734002009"
+    },
+    {
+      "amountSpecified": "45316736296591078525623691360",
+      "exactInput": false,
+      "expectedAmountCalculated": "253079108135847849773"
+    },
+    {
+      "amountSpecified": "46187297809834524147056913408",
+      "exactInput": false,
+      "expectedAmountCalculated": "259872858691632570414"
+    },
+    {
+      "amountSpecified": "49179878470582096933163498080",
+      "exactInput": false,
+      "expectedAmountCalculated": "283740936520436676813"
+    },
+    {
+      "amountSpecified": "45225539691782049542881288416",
+      "exactInput": false,
+      "expectedAmountCalculated": "252371261431439938234"
+    },
+    {
+      "amountSpecified": "11157430230843409761753898238",
+      "exactInput": false,
+      "expectedAmountCalculated": "47496660730377359909"
+    },
+    {
+      "amountSpecified": "41329360206003472855742679424",
+      "exactInput": false,
+      "expectedAmountCalculated": "222934878677716958365"
+    },
+    {
+      "amountSpecified": "42435776889212180022470873536",
+      "exactInput": false,
+      "expectedAmountCalculated": "231110816351358805698"
+    },
+    {
+      "amountSpecified": "140253207734261349581565080",
+      "exactInput": false,
+      "expectedAmountCalculated": "559028438549834224"
+    },
+    {
+      "amountSpecified": "2446626084987292935123704733",
+      "exactInput": false,
+      "expectedAmountCalculated": "9877843506358991832"
+    },
+    {
+      "amountSpecified": "70664959402844812894436170304",
+      "exactInput": false,
+      "expectedAmountCalculated": "508938455497939658054"
+    },
+    {
+      "amountSpecified": "3929435903650886905694122746",
+      "exactInput": false,
+      "expectedAmountCalculated": "15996922834133586726"
+    },
+    {
+      "amountSpecified": "38644426790105574622630684320",
+      "exactInput": false,
+      "expectedAmountCalculated": "203698810864523084203"
+    },
+    {
+      "amountSpecified": "67748091483324938461969926384",
+      "exactInput": false,
+      "expectedAmountCalculated": "464319485528639059513"
+    },
+    {
+      "amountSpecified": "13123784976516320363431292928",
+      "exactInput": false,
+      "expectedAmountCalculated": "56651316940249864177"
+    },
+    {
+      "amountSpecified": "35844099619803905324483161284",
+      "exactInput": false,
+      "expectedAmountCalculated": "184518531912172200869"
+    },
+    {
+      "amountSpecified": "65979832916349214795186209952",
+      "exactInput": false,
+      "expectedAmountCalculated": "441475507877666452491"
+    },
+    {
+      "amountSpecified": "20121674748603833564526461856",
+      "exactInput": false,
+      "expectedAmountCalculated": "91457244831727258881"
+    },
+    {
+      "amountSpecified": "69577346747918109107931373952",
+      "exactInput": false,
+      "expectedAmountCalculated": "490989913666287754665"
+    },
+    {
+      "amountSpecified": "43684918003605947959374425760",
+      "exactInput": false,
+      "expectedAmountCalculated": "240523469714165098489"
+    },
+    {
+      "amountSpecified": "39965671117769086739199837920",
+      "exactInput": false,
+      "expectedAmountCalculated": "213059753675514153821"
+    },
+    {
+      "amountSpecified": "55247370450194570565667839264",
+      "exactInput": false,
+      "expectedAmountCalculated": "334725438937406978768"
+    },
+    {
+      "amountSpecified": "60517053164843857530801167632",
+      "exactInput": false,
+      "expectedAmountCalculated": "382858138796964751646"
+    },
+    {
+      "amountSpecified": "58917703678090545640903096854",
+      "exactInput": false,
+      "expectedAmountCalculated": "367787050126772649714"
+    },
+    {
+      "amountSpecified": "34898714397326006488914963648",
+      "exactInput": false,
+      "expectedAmountCalculated": "178238661695697623991"
+    },
+    {
+      "amountSpecified": "21744058682524736445590507784",
+      "exactInput": false,
+      "expectedAmountCalculated": "100052723874949753272"
+    },
+    {
+      "amountSpecified": "49605080970828416258644146624",
+      "exactInput": false,
+      "expectedAmountCalculated": "287198462185421575352"
+    },
+    {
+      "amountSpecified": "43615637857709636629178379872",
+      "exactInput": false,
+      "expectedAmountCalculated": "239996258266978103685"
+    },
+    {
+      "amountSpecified": "30685119441127389872975835270",
+      "exactInput": false,
+      "expectedAmountCalculated": "151381947726076185762"
+    },
+    {
+      "amountSpecified": "54943026368080313492217105216",
+      "exactInput": false,
+      "expectedAmountCalculated": "332074668334491065344"
+    },
+    {
+      "amountSpecified": "44710247002088626753338073664",
+      "exactInput": false,
+      "expectedAmountCalculated": "248385281748273090757"
+    },
+    {
+      "amountSpecified": "1534944761946867402194650794",
+      "exactInput": false,
+      "expectedAmountCalculated": "6165611507339642583"
+    },
+    {
+      "amountSpecified": "73256237151580571420343195616",
+      "exactInput": false,
+      "expectedAmountCalculated": "566825631412178253238"
+    },
+    {
+      "amountSpecified": "65668199684803783798038196736",
+      "exactInput": false,
+      "expectedAmountCalculated": "437701632957238182059"
+    },
+    {
+      "amountSpecified": "1176021227791315204305644709",
+      "exactInput": false,
+      "expectedAmountCalculated": "4714448815535021494"
+    },
+    {
+      "amountSpecified": "68849452700137158071589452736",
+      "exactInput": false,
+      "expectedAmountCalculated": "479958576958191424536"
+    },
+    {
+      "amountSpecified": "11776596337527705171529757528",
+      "exactInput": false,
+      "expectedAmountCalculated": "50350606756961785046"
+    },
+    {
+      "amountSpecified": "13188420745428237902755039910",
+      "exactInput": false,
+      "expectedAmountCalculated": "56956785584094660753"
+    },
+    {
+      "amountSpecified": "7575158642636811469883238558",
+      "exactInput": false,
+      "expectedAmountCalculated": "31489673829334682798"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x5764a6F2212D502bC5970f9f129fFcd61e5D7563.json b/src/__tests__/stubs/swap/0x5764a6F2212D502bC5970f9f129fFcd61e5D7563.json
new file mode 100644
index 00000000..f4a64e20
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x5764a6F2212D502bC5970f9f129fFcd61e5D7563.json
@@ -0,0 +1,1481 @@
+{
+  "poolName": "SHIB - WETH 10000",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "fee": 10000,
+  "liquidity": "11363882441604651871497580",
+  "sqrtRatioX96": "4974957538249765117049858",
+  "tickCurrent": -193524,
+  "ticks": [
+    {
+      "index": -887200,
+      "liquidityNet": "154541292044329524050147",
+      "liquidityGross": "154541292044329524050147"
+    },
+    {
+      "index": -306200,
+      "liquidityNet": "31678561243879254",
+      "liquidityGross": "31678561243879254"
+    },
+    {
+      "index": -299400,
+      "liquidityNet": "3797057963241377690967",
+      "liquidityGross": "3797057963241377690967"
+    },
+    {
+      "index": -286400,
+      "liquidityNet": "6800115036246869377234",
+      "liquidityGross": "6800115036246869377234"
+    },
+    {
+      "index": -255600,
+      "liquidityNet": "509944694119416328475",
+      "liquidityGross": "509944694119416328475"
+    },
+    {
+      "index": -253200,
+      "liquidityNet": "28012641673547685072047",
+      "liquidityGross": "28012641673547685072047"
+    },
+    {
+      "index": -242600,
+      "liquidityNet": "4295760183281341699096",
+      "liquidityGross": "4295760183281341699096"
+    },
+    {
+      "index": -239000,
+      "liquidityNet": "229566064212090498087",
+      "liquidityGross": "229566064212090498087"
+    },
+    {
+      "index": -230200,
+      "liquidityNet": "5926508510801766635372",
+      "liquidityGross": "5926508510801766635372"
+    },
+    {
+      "index": -223400,
+      "liquidityNet": "502876267872324159014",
+      "liquidityGross": "502876267872324159014"
+    },
+    {
+      "index": -222800,
+      "liquidityNet": "24910493490750751774426",
+      "liquidityGross": "24910493490750751774426"
+    },
+    {
+      "index": -219200,
+      "liquidityNet": "72664628645239570547",
+      "liquidityGross": "72664628645239570547"
+    },
+    {
+      "index": -216400,
+      "liquidityNet": "23177249725126171901534",
+      "liquidityGross": "23177249725126171901534"
+    },
+    {
+      "index": -214400,
+      "liquidityNet": "557368056495120874913",
+      "liquidityGross": "557368056495120874913"
+    },
+    {
+      "index": -214000,
+      "liquidityNet": "107554148562723969006",
+      "liquidityGross": "107554148562723969006"
+    },
+    {
+      "index": -212000,
+      "liquidityNet": "26248015819511266856967",
+      "liquidityGross": "26248015819511266856967"
+    },
+    {
+      "index": -208800,
+      "liquidityNet": "113545533292392596997",
+      "liquidityGross": "113545533292392596997"
+    },
+    {
+      "index": -207200,
+      "liquidityNet": "7352715855065241942587",
+      "liquidityGross": "7352715855065241942587"
+    },
+    {
+      "index": -206200,
+      "liquidityNet": "-107554148562723969006",
+      "liquidityGross": "107554148562723969006"
+    },
+    {
+      "index": -205000,
+      "liquidityNet": "564797711787887794354",
+      "liquidityGross": "564797711787887794354"
+    },
+    {
+      "index": -204600,
+      "liquidityNet": "1570450579849558611641",
+      "liquidityGross": "1570450579849558611641"
+    },
+    {
+      "index": -203600,
+      "liquidityNet": "1927334362758620586838",
+      "liquidityGross": "1927334362758620586838"
+    },
+    {
+      "index": -203200,
+      "liquidityNet": "20771931938561958189479",
+      "liquidityGross": "20771931938561958189479"
+    },
+    {
+      "index": -203000,
+      "liquidityNet": "30851979550550149455",
+      "liquidityGross": "30851979550550149455"
+    },
+    {
+      "index": -202200,
+      "liquidityNet": "666672909788983165675",
+      "liquidityGross": "666672909788983165675"
+    },
+    {
+      "index": -202000,
+      "liquidityNet": "27479868904522565958820",
+      "liquidityGross": "27479868904522565958820"
+    },
+    {
+      "index": -201800,
+      "liquidityNet": "7682344500486241042150",
+      "liquidityGross": "7682344500486241042150"
+    },
+    {
+      "index": -201600,
+      "liquidityNet": "2907145521129037741526",
+      "liquidityGross": "2907145521129037741526"
+    },
+    {
+      "index": -201200,
+      "liquidityNet": "1148120057532106784729",
+      "liquidityGross": "1148120057532106784729"
+    },
+    {
+      "index": -200600,
+      "liquidityNet": "2843259901827134199862",
+      "liquidityGross": "2843259901827134199862"
+    },
+    {
+      "index": -200400,
+      "liquidityNet": "11088644621868200089541",
+      "liquidityGross": "11088644621868200089541"
+    },
+    {
+      "index": -200200,
+      "liquidityNet": "2320186184413662196191",
+      "liquidityGross": "2320186184413662196191"
+    },
+    {
+      "index": -199600,
+      "liquidityNet": "8378655701904187512806",
+      "liquidityGross": "8378655701904187512806"
+    },
+    {
+      "index": -198200,
+      "liquidityNet": "9263964927987191929358",
+      "liquidityGross": "9263964927987191929358"
+    },
+    {
+      "index": -198000,
+      "liquidityNet": "123136871505463967638",
+      "liquidityGross": "123136871505463967638"
+    },
+    {
+      "index": -197800,
+      "liquidityNet": "31211600637299138804945",
+      "liquidityGross": "31211600637299138804945"
+    },
+    {
+      "index": -197400,
+      "liquidityNet": "15365335658759092721998",
+      "liquidityGross": "15365335658759092721998"
+    },
+    {
+      "index": -197000,
+      "liquidityNet": "7987955410296070663372",
+      "liquidityGross": "10686999200805816297120"
+    },
+    {
+      "index": -196800,
+      "liquidityNet": "42369792563411118561595",
+      "liquidityGross": "42383567725106761923159"
+    },
+    {
+      "index": -196600,
+      "liquidityNet": "12273465822333446481438",
+      "liquidityGross": "12273465822333446481438"
+    },
+    {
+      "index": -196400,
+      "liquidityNet": "294980120416035787527714",
+      "liquidityGross": "295055534399038730200220"
+    },
+    {
+      "index": -196200,
+      "liquidityNet": "14501427089668200925567",
+      "liquidityGross": "14501427089668200925567"
+    },
+    {
+      "index": -196000,
+      "liquidityNet": "1621984966782555954053636",
+      "liquidityGross": "1621984966782555954053636"
+    },
+    {
+      "index": -195800,
+      "liquidityNet": "115879869596406162729469",
+      "liquidityGross": "115879869596406162729469"
+    },
+    {
+      "index": -195600,
+      "liquidityNet": "-90035069651809186142350",
+      "liquidityGross": "145136079856368810502232"
+    },
+    {
+      "index": -195400,
+      "liquidityNet": "5031567751470525001275816",
+      "liquidityGross": "5031567751470525001275816"
+    },
+    {
+      "index": -195200,
+      "liquidityNet": "80376119217811573443745",
+      "liquidityGross": "81152720486910839488163"
+    },
+    {
+      "index": -195000,
+      "liquidityNet": "126973663216832807481855",
+      "liquidityGross": "149300716205752265560955"
+    },
+    {
+      "index": -194800,
+      "liquidityNet": "167331331546414757370442",
+      "liquidityGross": "273294854196788691629500"
+    },
+    {
+      "index": -194600,
+      "liquidityNet": "-7213714195195211571374",
+      "liquidityGross": "13924066811696241337146"
+    },
+    {
+      "index": -194400,
+      "liquidityNet": "-9032452233309417720918",
+      "liquidityGross": "38974852463825974774812"
+    },
+    {
+      "index": -194200,
+      "liquidityNet": "24369034931390483874539",
+      "liquidityGross": "24369034931390483874539"
+    },
+    {
+      "index": -194000,
+      "liquidityNet": "646485870801697935877979",
+      "liquidityGross": "646485870801697935877979"
+    },
+    {
+      "index": -193800,
+      "liquidityNet": "19873210059947984802816",
+      "liquidityGross": "19873940541660461795116"
+    },
+    {
+      "index": -193600,
+      "liquidityNet": "2830816948563006995507569",
+      "liquidityGross": "2842739569943570944214765"
+    },
+    {
+      "index": -193400,
+      "liquidityNet": "7723470241065099531407",
+      "liquidityGross": "70132896353967733779733"
+    },
+    {
+      "index": -193200,
+      "liquidityNet": "143152451331552698932355",
+      "liquidityGross": "143985714237704258020981"
+    },
+    {
+      "index": -193000,
+      "liquidityNet": "-28205785068239666346363",
+      "liquidityGross": "65266552546559299897753"
+    },
+    {
+      "index": -192800,
+      "liquidityNet": "-2506684831265914720591962",
+      "liquidityGross": "2623890586238241787849622"
+    },
+    {
+      "index": -192600,
+      "liquidityNet": "-70863725257611054813107",
+      "liquidityGross": "76119259188381424206949"
+    },
+    {
+      "index": -192400,
+      "liquidityNet": "53073212319415497396178",
+      "liquidityGross": "53073212319415497396178"
+    },
+    {
+      "index": -192200,
+      "liquidityNet": "155890532174583136186417",
+      "liquidityGross": "155890532174583136186417"
+    },
+    {
+      "index": -192000,
+      "liquidityNet": "89528004065004648282053",
+      "liquidityGross": "98105968789118345187237"
+    },
+    {
+      "index": -191800,
+      "liquidityNet": "198679904264839287768475",
+      "liquidityGross": "210361244974874166419783"
+    },
+    {
+      "index": -191600,
+      "liquidityNet": "110264156571804121045000",
+      "liquidityGross": "110264156571804121045000"
+    },
+    {
+      "index": -191400,
+      "liquidityNet": "117711614126610697308742",
+      "liquidityGross": "117711988139130646825072"
+    },
+    {
+      "index": -191200,
+      "liquidityNet": "75804627057624863325243",
+      "liquidityGross": "102976388225032735267543"
+    },
+    {
+      "index": -191000,
+      "liquidityNet": "-72843087613898542693945",
+      "liquidityGross": "125130255778053219014489"
+    },
+    {
+      "index": -190600,
+      "liquidityNet": "141598931851072575644507",
+      "liquidityGross": "141598931851072575644507"
+    },
+    {
+      "index": -190400,
+      "liquidityNet": "40374700412856493965836",
+      "liquidityGross": "40374700412856493965836"
+    },
+    {
+      "index": -190200,
+      "liquidityNet": "20274413734164208851164",
+      "liquidityGross": "20274413734164208851164"
+    },
+    {
+      "index": -190000,
+      "liquidityNet": "525269424871662490643269",
+      "liquidityGross": "525269424871662490643269"
+    },
+    {
+      "index": -189800,
+      "liquidityNet": "-1927334362758620586838",
+      "liquidityGross": "1927334362758620586838"
+    },
+    {
+      "index": -189600,
+      "liquidityNet": "-1280043701533625981878511",
+      "liquidityGross": "1283794329156605552819505"
+    },
+    {
+      "index": -189400,
+      "liquidityNet": "37418847013119261957703",
+      "liquidityGross": "37418847013119261957703"
+    },
+    {
+      "index": -189200,
+      "liquidityNet": "162729481609612247518491",
+      "liquidityGross": "162729481609612247518491"
+    },
+    {
+      "index": -189000,
+      "liquidityNet": "699173554219116725529930",
+      "liquidityGross": "872151481692815224608612"
+    },
+    {
+      "index": -188600,
+      "liquidityNet": "14527363356450151165050",
+      "liquidityGross": "14527363356450151165050"
+    },
+    {
+      "index": -188400,
+      "liquidityNet": "34691343310084197055076",
+      "liquidityGross": "34691343310084197055076"
+    },
+    {
+      "index": -188000,
+      "liquidityNet": "20114334750217219324179",
+      "liquidityGross": "20114334750217219324179"
+    },
+    {
+      "index": -187800,
+      "liquidityNet": "305700789254967622780119",
+      "liquidityGross": "306038842461174406022053"
+    },
+    {
+      "index": -187600,
+      "liquidityNet": "21762080148041035328769",
+      "liquidityGross": "62912908304903249235423"
+    },
+    {
+      "index": -187400,
+      "liquidityNet": "1565011823095461950993",
+      "liquidityGross": "1565011823095461950993"
+    },
+    {
+      "index": -187200,
+      "liquidityNet": "-34144310638469687848391",
+      "liquidityGross": "34144310638469687848391"
+    },
+    {
+      "index": -187000,
+      "liquidityNet": "5237768359941676722120439",
+      "liquidityGross": "5245863121918853614544687"
+    },
+    {
+      "index": -186800,
+      "liquidityNet": "143183600057583074647901",
+      "liquidityGross": "143806709188329054338993"
+    },
+    {
+      "index": -186600,
+      "liquidityNet": "-8134039404006299601302",
+      "liquidityGross": "8134039404006299601302"
+    },
+    {
+      "index": -186400,
+      "liquidityNet": "49727417701116088776155",
+      "liquidityGross": "49727417701116088776155"
+    },
+    {
+      "index": -186200,
+      "liquidityNet": "27021461351278943724975",
+      "liquidityGross": "29192387934415312234559"
+    },
+    {
+      "index": -186000,
+      "liquidityNet": "148347329191710848637006",
+      "liquidityGross": "1521623235102905766563146"
+    },
+    {
+      "index": -185800,
+      "liquidityNet": "-4790311528458046481997271",
+      "liquidityGross": "5742210243632810230116311"
+    },
+    {
+      "index": -185600,
+      "liquidityNet": "-998105309548260172078",
+      "liquidityGross": "998105309548260172078"
+    },
+    {
+      "index": -185400,
+      "liquidityNet": "-46550528544427536216623",
+      "liquidityGross": "46550528544427536216623"
+    },
+    {
+      "index": -185200,
+      "liquidityNet": "42934321464079612161412",
+      "liquidityGross": "45068138460350597072958"
+    },
+    {
+      "index": -185000,
+      "liquidityNet": "-3351625433311913114305",
+      "liquidityGross": "9196620903737072754825"
+    },
+    {
+      "index": -184800,
+      "liquidityNet": "-4878235560747223793668570",
+      "liquidityGross": "4976073431899267649972326"
+    },
+    {
+      "index": -184600,
+      "liquidityNet": "-1258500034486215916403758",
+      "liquidityGross": "1267351280394602676696068"
+    },
+    {
+      "index": -184400,
+      "liquidityNet": "-14527363356450151165050",
+      "liquidityGross": "14527363356450151165050"
+    },
+    {
+      "index": -184200,
+      "liquidityNet": "-78985923282095601041748",
+      "liquidityGross": "78985923282095601041748"
+    },
+    {
+      "index": -183800,
+      "liquidityNet": "-263092199714040100462523",
+      "liquidityGross": "292275804458442058240247"
+    },
+    {
+      "index": -183600,
+      "liquidityNet": "-249533313339457886146831",
+      "liquidityGross": "249533313339457886146831"
+    },
+    {
+      "index": -183400,
+      "liquidityNet": "-4410341650346459558934",
+      "liquidityGross": "6939722591923545390558"
+    },
+    {
+      "index": -183200,
+      "liquidityNet": "-87997473986252398173669",
+      "liquidityGross": "87997473986252398173669"
+    },
+    {
+      "index": -183000,
+      "liquidityNet": "-2179180702217662857635",
+      "liquidityGross": "16830645536938403848963"
+    },
+    {
+      "index": -182600,
+      "liquidityNet": "-701506004112737478320961",
+      "liquidityGross": "1515658826591855003460315"
+    },
+    {
+      "index": -182400,
+      "liquidityNet": "127604341219527227296790",
+      "liquidityGross": "220019168775446328122792"
+    },
+    {
+      "index": -182200,
+      "liquidityNet": "-121951915677304856108024",
+      "liquidityGross": "123133055698537649410674"
+    },
+    {
+      "index": -182000,
+      "liquidityNet": "-27595397650240223478877",
+      "liquidityGross": "29293567890817334470305"
+    },
+    {
+      "index": -181800,
+      "liquidityNet": "-41169473108925712761204",
+      "liquidityGross": "41169473108925712761204"
+    },
+    {
+      "index": -181600,
+      "liquidityNet": "-255791502754676605584",
+      "liquidityGross": "255791502754676605584"
+    },
+    {
+      "index": -181400,
+      "liquidityNet": "-69378590820045528192210",
+      "liquidityGross": "91023759305037635585674"
+    },
+    {
+      "index": -181200,
+      "liquidityNet": "-348931982374123360986",
+      "liquidityGross": "348931982374123360986"
+    },
+    {
+      "index": -181000,
+      "liquidityNet": "-50830164649617468397240",
+      "liquidityGross": "50830164649617468397240"
+    },
+    {
+      "index": -180800,
+      "liquidityNet": "-647024601026214154526",
+      "liquidityGross": "647024601026214154526"
+    },
+    {
+      "index": -180600,
+      "liquidityNet": "-39793808766706653266692",
+      "liquidityGross": "39793808766706653266692"
+    },
+    {
+      "index": -180400,
+      "liquidityNet": "-16222874096244303022361",
+      "liquidityGross": "16222874096244303022361"
+    },
+    {
+      "index": -180200,
+      "liquidityNet": "-33969211036785004356203",
+      "liquidityGross": "33969211036785004356203"
+    },
+    {
+      "index": -180000,
+      "liquidityNet": "-657302075488921016759982",
+      "liquidityGross": "657302075488921016759982"
+    },
+    {
+      "index": -179800,
+      "liquidityNet": "-5032123045424563697663",
+      "liquidityGross": "5032123045424563697663"
+    },
+    {
+      "index": -179600,
+      "liquidityNet": "-258526193836101958862314",
+      "liquidityGross": "286004253943860942554182"
+    },
+    {
+      "index": -179400,
+      "liquidityNet": "-101373199797608579534640",
+      "liquidityGross": "101373199797608579534640"
+    },
+    {
+      "index": -179200,
+      "liquidityNet": "-25305853816923338992017",
+      "liquidityGross": "25305853816923338992017"
+    },
+    {
+      "index": -179000,
+      "liquidityNet": "-57855171652465803562782",
+      "liquidityGross": "57855171652465803562782"
+    },
+    {
+      "index": -178800,
+      "liquidityNet": "-930709500114690656322",
+      "liquidityGross": "930709500114690656322"
+    },
+    {
+      "index": -178600,
+      "liquidityNet": "-210075282757461572654201",
+      "liquidityGross": "210075282757461572654201"
+    },
+    {
+      "index": -178400,
+      "liquidityNet": "-149236259728324101896316",
+      "liquidityGross": "149236259728324101896316"
+    },
+    {
+      "index": -178200,
+      "liquidityNet": "-13041375232549361603162",
+      "liquidityGross": "13041375232549361603162"
+    },
+    {
+      "index": -178000,
+      "liquidityNet": "-47013812223574778649482",
+      "liquidityGross": "47013812223574778649482"
+    },
+    {
+      "index": -177600,
+      "liquidityNet": "-273101332864675968871608",
+      "liquidityGross": "273101332864675968871608"
+    },
+    {
+      "index": -177400,
+      "liquidityNet": "-6293737527730924090300",
+      "liquidityGross": "6293737527730924090300"
+    },
+    {
+      "index": -177200,
+      "liquidityNet": "-14637433634024845099479",
+      "liquidityGross": "14637433634024845099479"
+    },
+    {
+      "index": -176800,
+      "liquidityNet": "-38923838792597966331605",
+      "liquidityGross": "38923838792597966331605"
+    },
+    {
+      "index": -176600,
+      "liquidityNet": "-226283945794556333178",
+      "liquidityGross": "226283945794556333178"
+    },
+    {
+      "index": -176400,
+      "liquidityNet": "-48185901063480787727931",
+      "liquidityGross": "48185901063480787727931"
+    },
+    {
+      "index": -176200,
+      "liquidityNet": "-39757955917001779794719",
+      "liquidityGross": "39757955917001779794719"
+    },
+    {
+      "index": -175800,
+      "liquidityNet": "-20274413734164208851164",
+      "liquidityGross": "20274413734164208851164"
+    },
+    {
+      "index": -175600,
+      "liquidityNet": "-207750410091065576652521",
+      "liquidityGross": "207750410091065576652521"
+    },
+    {
+      "index": -175000,
+      "liquidityNet": "-28630508016434193208265",
+      "liquidityGross": "28630508016434193208265"
+    },
+    {
+      "index": -174800,
+      "liquidityNet": "-24558194058081772429267",
+      "liquidityGross": "24558194058081772429267"
+    },
+    {
+      "index": -174000,
+      "liquidityNet": "-36909342716195308188008",
+      "liquidityGross": "36909342716195308188008"
+    },
+    {
+      "index": -173800,
+      "liquidityNet": "-33695661630077410282727",
+      "liquidityGross": "33695661630077410282727"
+    },
+    {
+      "index": -173600,
+      "liquidityNet": "-7358517997094643736149",
+      "liquidityGross": "7358517997094643736149"
+    },
+    {
+      "index": -173200,
+      "liquidityNet": "-64356530447701283262478",
+      "liquidityGross": "64356530447701283262478"
+    },
+    {
+      "index": -173000,
+      "liquidityNet": "-48918935576021928151878",
+      "liquidityGross": "48918935576021928151878"
+    },
+    {
+      "index": -172800,
+      "liquidityNet": "-549054030935428225283",
+      "liquidityGross": "549054030935428225283"
+    },
+    {
+      "index": -172400,
+      "liquidityNet": "-407971556340003681382789",
+      "liquidityGross": "407971556340003681382789"
+    },
+    {
+      "index": -172200,
+      "liquidityNet": "-6551236556042029575025",
+      "liquidityGross": "6551236556042029575025"
+    },
+    {
+      "index": -172000,
+      "liquidityNet": "-1839906296785431365101",
+      "liquidityGross": "1839906296785431365101"
+    },
+    {
+      "index": -171600,
+      "liquidityNet": "-556338856903835254792",
+      "liquidityGross": "556338856903835254792"
+    },
+    {
+      "index": -171400,
+      "liquidityNet": "-3193806899974643203703",
+      "liquidityGross": "3193806899974643203703"
+    },
+    {
+      "index": -171200,
+      "liquidityNet": "-590570010616396651325",
+      "liquidityGross": "590570010616396651325"
+    },
+    {
+      "index": -170400,
+      "liquidityNet": "-48823810167021747180893",
+      "liquidityGross": "48823810167021747180893"
+    },
+    {
+      "index": -170000,
+      "liquidityNet": "-229566064212090498087",
+      "liquidityGross": "229566064212090498087"
+    },
+    {
+      "index": -168800,
+      "liquidityNet": "-9073770926604375687798",
+      "liquidityGross": "9073770926604375687798"
+    },
+    {
+      "index": -166200,
+      "liquidityNet": "-871468577869794159923",
+      "liquidityGross": "871468577869794159923"
+    },
+    {
+      "index": -165400,
+      "liquidityNet": "-6486615453879963619126",
+      "liquidityGross": "6486615453879963619126"
+    },
+    {
+      "index": -164800,
+      "liquidityNet": "-13739030053879491845934",
+      "liquidityGross": "13739030053879491845934"
+    },
+    {
+      "index": -164400,
+      "liquidityNet": "-3355176308250514882886",
+      "liquidityGross": "3355176308250514882886"
+    },
+    {
+      "index": -163200,
+      "liquidityNet": "-4356443121005815801176",
+      "liquidityGross": "4356443121005815801176"
+    },
+    {
+      "index": -161200,
+      "liquidityNet": "-14850594064123416512543",
+      "liquidityGross": "14850594064123416512543"
+    },
+    {
+      "index": -161000,
+      "liquidityNet": "-28106924642847127979767",
+      "liquidityGross": "28106924642847127979767"
+    },
+    {
+      "index": -160000,
+      "liquidityNet": "-1439956973964791968650",
+      "liquidityGross": "1439956973964791968650"
+    },
+    {
+      "index": -159400,
+      "liquidityNet": "-1826330582586902148072",
+      "liquidityGross": "1826330582586902148072"
+    },
+    {
+      "index": -156800,
+      "liquidityNet": "-251229926034014529871",
+      "liquidityGross": "251229926034014529871"
+    },
+    {
+      "index": -153600,
+      "liquidityNet": "-2014873695263824401743",
+      "liquidityGross": "2014873695263824401743"
+    },
+    {
+      "index": -150600,
+      "liquidityNet": "-1678495364254988459242",
+      "liquidityGross": "1678495364254988459242"
+    },
+    {
+      "index": -149600,
+      "liquidityNet": "-1273658659050657026391",
+      "liquidityGross": "1273658659050657026391"
+    },
+    {
+      "index": -146400,
+      "liquidityNet": "-13392190024620003833",
+      "liquidityGross": "13392190024620003833"
+    },
+    {
+      "index": -144600,
+      "liquidityNet": "-24910493490750751774426",
+      "liquidityGross": "24910493490750751774426"
+    },
+    {
+      "index": -139200,
+      "liquidityNet": "-23177249725126171901534",
+      "liquidityGross": "23177249725126171901534"
+    },
+    {
+      "index": -138200,
+      "liquidityNet": "-3359476298150602088390",
+      "liquidityGross": "3359476298150602088390"
+    },
+    {
+      "index": -131600,
+      "liquidityNet": "-72664628645239570547",
+      "liquidityGross": "72664628645239570547"
+    },
+    {
+      "index": -131400,
+      "liquidityNet": "-333985318898863342633",
+      "liquidityGross": "333985318898863342633"
+    },
+    {
+      "index": -131200,
+      "liquidityNet": "-397179494977698101405",
+      "liquidityGross": "397179494977698101405"
+    },
+    {
+      "index": -120000,
+      "liquidityNet": "-35270088374773072164968",
+      "liquidityGross": "35270088374773072164968"
+    },
+    {
+      "index": -115200,
+      "liquidityNet": "-27678656354648821729414",
+      "liquidityGross": "27678656354648821729414"
+    },
+    {
+      "index": -102200,
+      "liquidityNet": "-6783476290044327869546",
+      "liquidityGross": "6783476290044327869546"
+    },
+    {
+      "index": -102000,
+      "liquidityNet": "-16638746202541507688",
+      "liquidityGross": "16638746202541507688"
+    },
+    {
+      "index": -98400,
+      "liquidityNet": "-12601512127730780359485",
+      "liquidityGross": "12601512127730780359485"
+    },
+    {
+      "index": -69000,
+      "liquidityNet": "-7487522126563030416617",
+      "liquidityGross": "7487522126563030416617"
+    },
+    {
+      "index": -66800,
+      "liquidityNet": "3548684134634150558768046",
+      "liquidityGross": "3548684134634150558768046"
+    },
+    {
+      "index": -66600,
+      "liquidityNet": "-3548684134634150558768046",
+      "liquidityGross": "3548684134634150558768046"
+    },
+    {
+      "index": -46000,
+      "liquidityNet": "-5087322659085116641811",
+      "liquidityGross": "5087322659085116641811"
+    },
+    {
+      "index": -34000,
+      "liquidityNet": "-31678561243879254",
+      "liquidityGross": "31678561243879254"
+    },
+    {
+      "index": -23000,
+      "liquidityNet": "-4369115390407162992015",
+      "liquidityGross": "4369115390407162992015"
+    },
+    {
+      "index": -12800,
+      "liquidityNet": "-2922497735212579820260",
+      "liquidityGross": "2922497735212579820260"
+    },
+    {
+      "index": 0,
+      "liquidityNet": "-926583849936711149605",
+      "liquidityGross": "926583849936711149605"
+    },
+    {
+      "index": 35000,
+      "liquidityNet": "680098383606428575667",
+      "liquidityGross": "680098383606428575667"
+    },
+    {
+      "index": 36400,
+      "liquidityNet": "3081019920017682805",
+      "liquidityGross": "3081019920017682805"
+    },
+    {
+      "index": 46000,
+      "liquidityNet": "-680098383606428575667",
+      "liquidityGross": "680098383606428575667"
+    },
+    {
+      "index": 138200,
+      "liquidityNet": "-51071263171364619270508",
+      "liquidityGross": "51071263171364619270508"
+    },
+    {
+      "index": 887200,
+      "liquidityNet": "-146930801584755333847520",
+      "liquidityGross": "146930801584755333847520"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "17826175260759029780948232132",
+      "exactInput": true,
+      "expectedAmountCalculated": "57294662581370693768"
+    },
+    {
+      "amountSpecified": "64117906584361052654258741376",
+      "exactInput": true,
+      "expectedAmountCalculated": "64855795118787405971"
+    },
+    {
+      "amountSpecified": "50209413630097740413746475104",
+      "exactInput": true,
+      "expectedAmountCalculated": "64546044005141325084"
+    },
+    {
+      "amountSpecified": "45797225397435112765316399488",
+      "exactInput": true,
+      "expectedAmountCalculated": "64389435636191878495"
+    },
+    {
+      "amountSpecified": "71336395932093477340763102752",
+      "exactInput": true,
+      "expectedAmountCalculated": "64955913197233917709"
+    },
+    {
+      "amountSpecified": "48498945741078485354790690112",
+      "exactInput": true,
+      "expectedAmountCalculated": "64490161449094954241"
+    },
+    {
+      "amountSpecified": "26721425580098565261868019424",
+      "exactInput": true,
+      "expectedAmountCalculated": "62437167408024414982"
+    },
+    {
+      "amountSpecified": "7219926072523605029992894962",
+      "exactInput": true,
+      "expectedAmountCalculated": "26807250604619370826"
+    },
+    {
+      "amountSpecified": "20159834264607564383469522528",
+      "exactInput": true,
+      "expectedAmountCalculated": "59542407475432724820"
+    },
+    {
+      "amountSpecified": "77488807459592951818211230848",
+      "exactInput": true,
+      "expectedAmountCalculated": "65022877215043725238"
+    },
+    {
+      "amountSpecified": "38588608465940827640128666656",
+      "exactInput": true,
+      "expectedAmountCalculated": "64010070261786650255"
+    },
+    {
+      "amountSpecified": "1438774853205496043238761394",
+      "exactInput": true,
+      "expectedAmountCalculated": "5568664928604262403"
+    },
+    {
+      "amountSpecified": "75736350730609253806112679232",
+      "exactInput": true,
+      "expectedAmountCalculated": "65005199571433516762"
+    },
+    {
+      "amountSpecified": "16824151080493272662077543588",
+      "exactInput": true,
+      "expectedAmountCalculated": "55882012448375304743"
+    },
+    {
+      "amountSpecified": "70543021327450735022262055328",
+      "exactInput": true,
+      "expectedAmountCalculated": "64946190096244258876"
+    },
+    {
+      "amountSpecified": "36955251768639368221626456576",
+      "exactInput": true,
+      "expectedAmountCalculated": "63890264766002135715"
+    },
+    {
+      "amountSpecified": "56146299972828847974153996840",
+      "exactInput": true,
+      "expectedAmountCalculated": "64704074402265662441"
+    },
+    {
+      "amountSpecified": "68035486339060320536994437088",
+      "exactInput": true,
+      "expectedAmountCalculated": "64913534308922429876"
+    },
+    {
+      "amountSpecified": "38343826952016815796708489104",
+      "exactInput": true,
+      "expectedAmountCalculated": "63993161340546095424"
+    },
+    {
+      "amountSpecified": "74880700380197819107513861504",
+      "exactInput": true,
+      "expectedAmountCalculated": "64996185497267192391"
+    },
+    {
+      "amountSpecified": "11323657140844034290662455176",
+      "exactInput": true,
+      "expectedAmountCalculated": "40799705764308880074"
+    },
+    {
+      "amountSpecified": "10636477495024347385227903562",
+      "exactInput": true,
+      "expectedAmountCalculated": "38516670552190332910"
+    },
+    {
+      "amountSpecified": "61046573401956598190580482400",
+      "exactInput": true,
+      "expectedAmountCalculated": "64803606654287633488"
+    },
+    {
+      "amountSpecified": "48293944933239341135637018592",
+      "exactInput": true,
+      "expectedAmountCalculated": "64483083853712152895"
+    },
+    {
+      "amountSpecified": "35694058816240176671675272352",
+      "exactInput": true,
+      "expectedAmountCalculated": "63785122905121345694"
+    },
+    {
+      "amountSpecified": "44600087863249130986103292096",
+      "exactInput": true,
+      "expectedAmountCalculated": "64339016973188703334"
+    },
+    {
+      "amountSpecified": "55121076140137161061902757024",
+      "exactInput": true,
+      "expectedAmountCalculated": "64680148719608055794"
+    },
+    {
+      "amountSpecified": "69235486076968133400272687104",
+      "exactInput": true,
+      "expectedAmountCalculated": "64929541117898206766"
+    },
+    {
+      "amountSpecified": "49732856969231136335645288064",
+      "exactInput": true,
+      "expectedAmountCalculated": "64531020293133834123"
+    },
+    {
+      "amountSpecified": "48129434316063870123343262656",
+      "exactInput": true,
+      "expectedAmountCalculated": "64477341696645519128"
+    },
+    {
+      "amountSpecified": "45451376769688354173469330752",
+      "exactInput": true,
+      "expectedAmountCalculated": "64375270605962944205"
+    },
+    {
+      "amountSpecified": "64215296543874349810343530080",
+      "exactInput": true,
+      "expectedAmountCalculated": "64857342691396736167"
+    },
+    {
+      "amountSpecified": "14348471290800850811353196050",
+      "exactInput": true,
+      "expectedAmountCalculated": "50434748136483966941"
+    },
+    {
+      "amountSpecified": "6703317127438517347711797610",
+      "exactInput": true,
+      "expectedAmountCalculated": "24983887386952912580"
+    },
+    {
+      "amountSpecified": "14021228290533359037968473358",
+      "exactInput": true,
+      "expectedAmountCalculated": "49455299829510079390"
+    },
+    {
+      "amountSpecified": "22885100152180309470062472688",
+      "exactInput": true,
+      "expectedAmountCalculated": "61137702080244235133"
+    },
+    {
+      "amountSpecified": "77018671123123228771233763800",
+      "exactInput": true,
+      "expectedAmountCalculated": "65018239869059277340"
+    },
+    {
+      "amountSpecified": "63128616586978850495964544976",
+      "exactInput": true,
+      "expectedAmountCalculated": "64839717363545982664"
+    },
+    {
+      "amountSpecified": "66500415091832687455721742304",
+      "exactInput": true,
+      "expectedAmountCalculated": "64891963298970289772"
+    },
+    {
+      "amountSpecified": "22757447556241947324434966032",
+      "exactInput": true,
+      "expectedAmountCalculated": "61079126513839625585"
+    },
+    {
+      "amountSpecified": "35966445794584793278819362098",
+      "exactInput": true,
+      "expectedAmountCalculated": "63808877003771246243"
+    },
+    {
+      "amountSpecified": "42866317697195761593846110912",
+      "exactInput": true,
+      "expectedAmountCalculated": "64258452507664983264"
+    },
+    {
+      "amountSpecified": "13552309356209981605708017324",
+      "exactInput": true,
+      "expectedAmountCalculated": "48008982762411341153"
+    },
+    {
+      "amountSpecified": "72785628175496920524194480864",
+      "exactInput": true,
+      "expectedAmountCalculated": "64972980714718029428"
+    },
+    {
+      "amountSpecified": "77971656506151203999887200832",
+      "exactInput": true,
+      "expectedAmountCalculated": "65027555477862969401"
+    },
+    {
+      "amountSpecified": "36495329700672244873756387168",
+      "exactInput": true,
+      "expectedAmountCalculated": "63853319246672952166"
+    },
+    {
+      "amountSpecified": "44562441515507711929626678464",
+      "exactInput": true,
+      "expectedAmountCalculated": "64337366329741525858"
+    },
+    {
+      "amountSpecified": "2641880388794592857222891736",
+      "exactInput": true,
+      "expectedAmountCalculated": "10140006821965007765"
+    },
+    {
+      "amountSpecified": "52471441971387225864956318144",
+      "exactInput": true,
+      "expectedAmountCalculated": "64612194417465019912"
+    },
+    {
+      "amountSpecified": "63470832594621309289305905568",
+      "exactInput": true,
+      "expectedAmountCalculated": "64845353764735255657"
+    },
+    {
+      "amountSpecified": "11283539501249421680",
+      "exactInput": false,
+      "expectedAmountCalculated": "2946120922047014544784428957"
+    },
+    {
+      "amountSpecified": "37908605099789880015",
+      "exactInput": false,
+      "expectedAmountCalculated": "10454656240083304519602787847"
+    },
+    {
+      "amountSpecified": "76683018356591807860",
+      "exactInput": false,
+      "expectedAmountCalculated": "2869124278569961661989813675318547475011913"
+    },
+    {
+      "amountSpecified": "37277195754867502070",
+      "exactInput": false,
+      "expectedAmountCalculated": "10266385939367200387187377886"
+    },
+    {
+      "amountSpecified": "61256957474472723810",
+      "exactInput": false,
+      "expectedAmountCalculated": "23153721821876469116657759058"
+    },
+    {
+      "amountSpecified": "11689428527383427520",
+      "exactInput": false,
+      "expectedAmountCalculated": "3054428567027040090527846795"
+    },
+    {
+      "amountSpecified": "86381615831392147770",
+      "exactInput": false,
+      "expectedAmountCalculated": "2869124278569961661989813675318547475011913"
+    },
+    {
+      "amountSpecified": "38034562849164030200",
+      "exactInput": false,
+      "expectedAmountCalculated": "10492278329013667047386022489"
+    },
+    {
+      "amountSpecified": "36279246731085915800",
+      "exactInput": false,
+      "expectedAmountCalculated": "9969918898966998809785062349"
+    },
+    {
+      "amountSpecified": "90591984767273173135",
+      "exactInput": false,
+      "expectedAmountCalculated": "2869124278569961661989813675318547475011913"
+    },
+    {
+      "amountSpecified": "26385133583519277420",
+      "exactInput": false,
+      "expectedAmountCalculated": "7099970857817711296495202975"
+    },
+    {
+      "amountSpecified": "51282951160994542605",
+      "exactInput": false,
+      "expectedAmountCalculated": "14647974707721083523198983269"
+    },
+    {
+      "amountSpecified": "38382098404230476945",
+      "exactInput": false,
+      "expectedAmountCalculated": "10596194925575623419262466512"
+    },
+    {
+      "amountSpecified": "87337887661445945055",
+      "exactInput": false,
+      "expectedAmountCalculated": "2869124278569961661989813675318547475011913"
+    },
+    {
+      "amountSpecified": "68239764441113398805",
+      "exactInput": false,
+      "expectedAmountCalculated": "2869124278569961661989813675318547475011913"
+    },
+    {
+      "amountSpecified": "10996152929245062138",
+      "exactInput": false,
+      "expectedAmountCalculated": "2869535942565783978674274769"
+    },
+    {
+      "amountSpecified": "11109771084756252240",
+      "exactInput": false,
+      "expectedAmountCalculated": "2899803742991584622254505517"
+    },
+    {
+      "amountSpecified": "31805582787016916720",
+      "exactInput": false,
+      "expectedAmountCalculated": "8656951029700915496026532136"
+    },
+    {
+      "amountSpecified": "24063195580530303435",
+      "exactInput": false,
+      "expectedAmountCalculated": "6443980776488303259813820610"
+    },
+    {
+      "amountSpecified": "53008273569115983125",
+      "exactInput": false,
+      "expectedAmountCalculated": "15333594831164937869003417447"
+    },
+    {
+      "amountSpecified": "86606673111849740955",
+      "exactInput": false,
+      "expectedAmountCalculated": "2869124278569961661989813675318547475011913"
+    },
+    {
+      "amountSpecified": "44201470363111887520",
+      "exactInput": false,
+      "expectedAmountCalculated": "12361063750214108129281078431"
+    },
+    {
+      "amountSpecified": "86099306741059018435",
+      "exactInput": false,
+      "expectedAmountCalculated": "2869124278569961661989813675318547475011913"
+    },
+    {
+      "amountSpecified": "12001438270608658240",
+      "exactInput": false,
+      "expectedAmountCalculated": "3137799638963719344793364274"
+    },
+    {
+      "amountSpecified": "33877671911323165640",
+      "exactInput": false,
+      "expectedAmountCalculated": "9261850352667187933259367375"
+    },
+    {
+      "amountSpecified": "10510350714395821640",
+      "exactInput": false,
+      "expectedAmountCalculated": "2740266389696451774667303555"
+    },
+    {
+      "amountSpecified": "18811070552159126560",
+      "exactInput": false,
+      "expectedAmountCalculated": "4983786277301240461369665156"
+    },
+    {
+      "amountSpecified": "33456198479134845785",
+      "exactInput": false,
+      "expectedAmountCalculated": "9138361643234669090664963264"
+    },
+    {
+      "amountSpecified": "71624144974188862335",
+      "exactInput": false,
+      "expectedAmountCalculated": "2869124278569961661989813675318547475011913"
+    },
+    {
+      "amountSpecified": "59415370888268914960",
+      "exactInput": false,
+      "expectedAmountCalculated": "19992297874844338375267258098"
+    },
+    {
+      "amountSpecified": "30002157571094840720",
+      "exactInput": false,
+      "expectedAmountCalculated": "8134903080615327308865879049"
+    },
+    {
+      "amountSpecified": "74320775244985316460",
+      "exactInput": false,
+      "expectedAmountCalculated": "2869124278569961661989813675318547475011913"
+    },
+    {
+      "amountSpecified": "88845455088240934090",
+      "exactInput": false,
+      "expectedAmountCalculated": "2869124278569961661989813675318547475011913"
+    },
+    {
+      "amountSpecified": "80304025327740903185",
+      "exactInput": false,
+      "expectedAmountCalculated": "2869124278569961661989813675318547475011913"
+    },
+    {
+      "amountSpecified": "71562965108255495560",
+      "exactInput": false,
+      "expectedAmountCalculated": "2869124278569961661989813675318547475011913"
+    },
+    {
+      "amountSpecified": "79888367344897284845",
+      "exactInput": false,
+      "expectedAmountCalculated": "2869124278569961661989813675318547475011913"
+    },
+    {
+      "amountSpecified": "61847010673665962360",
+      "exactInput": false,
+      "expectedAmountCalculated": "24690579999656748846149720439"
+    },
+    {
+      "amountSpecified": "56256957618425724860",
+      "exactInput": false,
+      "expectedAmountCalculated": "17066263897550566405583688592"
+    },
+    {
+      "amountSpecified": "59331693765655925425",
+      "exactInput": false,
+      "expectedAmountCalculated": "19884892056505202229122198824"
+    },
+    {
+      "amountSpecified": "8171841747304046080",
+      "exactInput": false,
+      "expectedAmountCalculated": "2121335047513500009902269335"
+    },
+    {
+      "amountSpecified": "90870747920487313135",
+      "exactInput": false,
+      "expectedAmountCalculated": "2869124278569961661989813675318547475011913"
+    },
+    {
+      "amountSpecified": "24316826871730171170",
+      "exactInput": false,
+      "expectedAmountCalculated": "6515321189645361078352794001"
+    },
+    {
+      "amountSpecified": "52723289953736023160",
+      "exactInput": false,
+      "expectedAmountCalculated": "15211784158499662647173694537"
+    },
+    {
+      "amountSpecified": "3967821913475307688",
+      "exactInput": false,
+      "expectedAmountCalculated": "1022343031439571300505069833"
+    },
+    {
+      "amountSpecified": "26880465630059367235",
+      "exactInput": false,
+      "expectedAmountCalculated": "7240754001370770641724739251"
+    },
+    {
+      "amountSpecified": "47971730447042450265",
+      "exactInput": false,
+      "expectedAmountCalculated": "13540361529937716121303255267"
+    },
+    {
+      "amountSpecified": "68902768507691836396",
+      "exactInput": false,
+      "expectedAmountCalculated": "2869124278569961661989813675318547475011913"
+    },
+    {
+      "amountSpecified": "75245018782014997426",
+      "exactInput": false,
+      "expectedAmountCalculated": "2869124278569961661989813675318547475011913"
+    },
+    {
+      "amountSpecified": "52833504989325984315",
+      "exactInput": false,
+      "expectedAmountCalculated": "15258444302933986587436941022"
+    },
+    {
+      "amountSpecified": "61737874461413003910",
+      "exactInput": false,
+      "expectedAmountCalculated": "24375414685769325441262579177"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x5777d92f208679DB4b9778590Fa3CAB3aC9e2168-reversed.json b/src/__tests__/stubs/swap/0x5777d92f208679DB4b9778590Fa3CAB3aC9e2168-reversed.json
new file mode 100644
index 00000000..6842e56f
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x5777d92f208679DB4b9778590Fa3CAB3aC9e2168-reversed.json
@@ -0,0 +1,751 @@
+{
+  "poolName": "DAI - USDC 100 - reversed",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
+    "decimals": 6
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
+    "decimals": 18
+  },
+  "fee": 100,
+  "liquidity": "534082946687918723545029",
+  "sqrtRatioX96": "79225455335602985126100",
+  "tickCurrent": -276325,
+  "ticks": [
+    {
+      "index": -887272,
+      "liquidityNet": "815223090694846",
+      "liquidityGross": "815223090694846"
+    },
+    {
+      "index": -276812,
+      "liquidityNet": "19782816781531",
+      "liquidityGross": "19782816781531"
+    },
+    {
+      "index": -276424,
+      "liquidityNet": "6007981228085202",
+      "liquidityGross": "6007981228085202"
+    },
+    {
+      "index": -276375,
+      "liquidityNet": "40051833351136",
+      "liquidityGross": "40051833351136"
+    },
+    {
+      "index": -276350,
+      "liquidityNet": "3802373718301130",
+      "liquidityGross": "3802373718301130"
+    },
+    {
+      "index": -276345,
+      "liquidityNet": "37545774837005837299",
+      "liquidityGross": "37545774837005837299"
+    },
+    {
+      "index": -276344,
+      "liquidityNet": "46669837299127887364",
+      "liquidityGross": "46669837299127887364"
+    },
+    {
+      "index": -276341,
+      "liquidityNet": "182819228385906316",
+      "liquidityGross": "182819228385906316"
+    },
+    {
+      "index": -276337,
+      "liquidityNet": "143584412724562760",
+      "liquidityGross": "143584412724562760"
+    },
+    {
+      "index": -276336,
+      "liquidityNet": "105900562640378823",
+      "liquidityGross": "105900562640378823"
+    },
+    {
+      "index": -276335,
+      "liquidityNet": "35418485329505506693",
+      "liquidityGross": "35418485329505506693"
+    },
+    {
+      "index": -276334,
+      "liquidityNet": "44213880776160877986",
+      "liquidityGross": "44213880776160877986"
+    },
+    {
+      "index": -276333,
+      "liquidityNet": "200707380139913449",
+      "liquidityGross": "200707380139913449"
+    },
+    {
+      "index": -276332,
+      "liquidityNet": "4884900224132419",
+      "liquidityGross": "4884900224132419"
+    },
+    {
+      "index": -276331,
+      "liquidityNet": "1088290518876313980",
+      "liquidityGross": "1088290518876313980"
+    },
+    {
+      "index": -276330,
+      "liquidityNet": "3776762722530535690",
+      "liquidityGross": "3776762722530535690"
+    },
+    {
+      "index": -276329,
+      "liquidityNet": "29217776507560772898",
+      "liquidityGross": "29217776507560772898"
+    },
+    {
+      "index": -276328,
+      "liquidityNet": "2101755319553328761",
+      "liquidityGross": "2101755319553328761"
+    },
+    {
+      "index": -276327,
+      "liquidityNet": "42918170340259718929",
+      "liquidityGross": "42918170340259718929"
+    },
+    {
+      "index": -276326,
+      "liquidityNet": "533672891971572261970126",
+      "liquidityGross": "533672891971572261970126"
+    },
+    {
+      "index": -276325,
+      "liquidityNet": "166455400799078687691",
+      "liquidityGross": "166455400799078687691"
+    },
+    {
+      "index": -276324,
+      "liquidityNet": "-426567337423580724",
+      "liquidityGross": "426567337423687076"
+    },
+    {
+      "index": -276323,
+      "liquidityNet": "-200782792979501667307",
+      "liquidityGross": "201869934518174231291"
+    },
+    {
+      "index": -276322,
+      "liquidityNet": "-533584011603576581423098",
+      "liquidityGross": "533584011603576581423098"
+    },
+    {
+      "index": -276321,
+      "liquidityNet": "-6907513354275228355",
+      "liquidityGross": "6907513354275228355"
+    },
+    {
+      "index": -276320,
+      "liquidityNet": "-122850205353438439092",
+      "liquidityGross": "122850205353438439092"
+    },
+    {
+      "index": -276319,
+      "liquidityNet": "-3436983004574938152",
+      "liquidityGross": "3436983004574938152"
+    },
+    {
+      "index": -276317,
+      "liquidityNet": "-1347676523049719",
+      "liquidityGross": "1347676523049719"
+    },
+    {
+      "index": -276316,
+      "liquidityNet": "-2995571156147549",
+      "liquidityGross": "2995571156147549"
+    },
+    {
+      "index": -276315,
+      "liquidityNet": "-34681841953693823734",
+      "liquidityGross": "34681841953693823734"
+    },
+    {
+      "index": -276314,
+      "liquidityNet": "-44405586055660843041",
+      "liquidityGross": "44405586055660843041"
+    },
+    {
+      "index": -276313,
+      "liquidityNet": "-758058966955158213",
+      "liquidityGross": "758058966955158213"
+    },
+    {
+      "index": -276311,
+      "liquidityNet": "-104149104628278639",
+      "liquidityGross": "104149104628278639"
+    },
+    {
+      "index": -276310,
+      "liquidityNet": "-326403641110469076",
+      "liquidityGross": "326403641110469076"
+    },
+    {
+      "index": -276306,
+      "liquidityNet": "3645591051512275",
+      "liquidityGross": "3645591051512275"
+    },
+    {
+      "index": -276305,
+      "liquidityNet": "-37566847637614755267",
+      "liquidityGross": "37566847637614755267"
+    },
+    {
+      "index": -276304,
+      "liquidityNet": "-46669837299127887364",
+      "liquidityGross": "46669837299127887364"
+    },
+    {
+      "index": -276289,
+      "liquidityNet": "-3802373718301130",
+      "liquidityGross": "3802373718301130"
+    },
+    {
+      "index": -276287,
+      "liquidityNet": "-3268993770641854",
+      "liquidityGross": "3268993770641854"
+    },
+    {
+      "index": -276284,
+      "liquidityNet": "-3645591051512275",
+      "liquidityGross": "3645591051512275"
+    },
+    {
+      "index": -276275,
+      "liquidityNet": "-40051833351136",
+      "liquidityGross": "40051833351136"
+    },
+    {
+      "index": -276224,
+      "liquidityNet": "-6007981228085202",
+      "liquidityGross": "6007981228085202"
+    },
+    {
+      "index": -275812,
+      "liquidityNet": "-19782816781531",
+      "liquidityGross": "19782816781531"
+    },
+    {
+      "index": -1,
+      "liquidityNet": "10000499987500624950939",
+      "liquidityGross": "10000499987500624950939"
+    },
+    {
+      "index": 1,
+      "liquidityNet": "-10000499987500624950939",
+      "liquidityGross": "10000499987500624950939"
+    },
+    {
+      "index": 887272,
+      "liquidityNet": "-815223090694846",
+      "liquidityGross": "815223090694846"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "21887175977576",
+      "exactInput": true,
+      "expectedAmountCalculated": "21885586099333260562629752"
+    },
+    {
+      "amountSpecified": "31810573832733",
+      "exactInput": true,
+      "expectedAmountCalculated": "31807672189893472448980434"
+    },
+    {
+      "amountSpecified": "4426670179999",
+      "exactInput": true,
+      "expectedAmountCalculated": "4426493325607075049267975"
+    },
+    {
+      "amountSpecified": "26097088105143",
+      "exactInput": true,
+      "expectedAmountCalculated": "26094986748094111898233386"
+    },
+    {
+      "amountSpecified": "29864582587401",
+      "exactInput": true,
+      "expectedAmountCalculated": "29861967242528389461908177"
+    },
+    {
+      "amountSpecified": "22347768640845",
+      "exactInput": true,
+      "expectedAmountCalculated": "22346126036056250337394673"
+    },
+    {
+      "amountSpecified": "32586958449952",
+      "exactInput": true,
+      "expectedAmountCalculated": "32583938627541502785369958"
+    },
+    {
+      "amountSpecified": "15367997327788",
+      "exactInput": true,
+      "expectedAmountCalculated": "15367068555911198360502287"
+    },
+    {
+      "amountSpecified": "18760562744588",
+      "exactInput": true,
+      "expectedAmountCalculated": "18759309791143458902650358"
+    },
+    {
+      "amountSpecified": "29567990251468",
+      "exactInput": true,
+      "expectedAmountCalculated": "29565417296787393659872722"
+    },
+    {
+      "amountSpecified": "8066712914017",
+      "exactInput": true,
+      "expectedAmountCalculated": "8066335660541738125347855"
+    },
+    {
+      "amountSpecified": "28120235884610",
+      "exactInput": true,
+      "expectedAmountCalculated": "28117865121699403776841677"
+    },
+    {
+      "amountSpecified": "30454029409949",
+      "exactInput": true,
+      "expectedAmountCalculated": "30451328841291923319018302"
+    },
+    {
+      "amountSpecified": "23402507958216",
+      "exactInput": true,
+      "expectedAmountCalculated": "23400741619785143927051755"
+    },
+    {
+      "amountSpecified": "31711159268133",
+      "exactInput": true,
+      "expectedAmountCalculated": "31708272594985260663126724"
+    },
+    {
+      "amountSpecified": "10533508059634",
+      "exactInput": true,
+      "expectedAmountCalculated": "10532966797117767602324394"
+    },
+    {
+      "amountSpecified": "18760341433655",
+      "exactInput": true,
+      "expectedAmountCalculated": "18759088502763484952390301"
+    },
+    {
+      "amountSpecified": "14030864313353",
+      "exactInput": true,
+      "expectedAmountCalculated": "14030051474106239366037857"
+    },
+    {
+      "amountSpecified": "24005869476521",
+      "exactInput": true,
+      "expectedAmountCalculated": "24004030483751234511127722"
+    },
+    {
+      "amountSpecified": "15672750012034",
+      "exactInput": true,
+      "expectedAmountCalculated": "15671793880665171411552841"
+    },
+    {
+      "amountSpecified": "19074204073044",
+      "exactInput": true,
+      "expectedAmountCalculated": "19072918973091645920537745"
+    },
+    {
+      "amountSpecified": "30421654826872",
+      "exactInput": true,
+      "expectedAmountCalculated": "30418958972776816518952948"
+    },
+    {
+      "amountSpecified": "9715810749383",
+      "exactInput": true,
+      "expectedAmountCalculated": "9715326377292640190067424"
+    },
+    {
+      "amountSpecified": "28954920205189",
+      "exactInput": true,
+      "expectedAmountCalculated": "28952433829071896918564757"
+    },
+    {
+      "amountSpecified": "172559419351",
+      "exactInput": true,
+      "expectedAmountCalculated": "172553899589681396609524"
+    },
+    {
+      "amountSpecified": "12068181779037",
+      "exactInput": true,
+      "expectedAmountCalculated": "12067526984808947467909718"
+    },
+    {
+      "amountSpecified": "4132861462016",
+      "exactInput": true,
+      "expectedAmountCalculated": "4132698619177458143006789"
+    },
+    {
+      "amountSpecified": "13471075680032",
+      "exactInput": true,
+      "expectedAmountCalculated": "13470309387930247070506947"
+    },
+    {
+      "amountSpecified": "16874633553516",
+      "exactInput": true,
+      "expectedAmountCalculated": "16873566131941106405135653"
+    },
+    {
+      "amountSpecified": "32270958532835",
+      "exactInput": true,
+      "expectedAmountCalculated": "32267987083560766305721055"
+    },
+    {
+      "amountSpecified": "25378592550473",
+      "exactInput": true,
+      "expectedAmountCalculated": "25376583182141274543782088"
+    },
+    {
+      "amountSpecified": "31407610539449",
+      "exactInput": true,
+      "expectedAmountCalculated": "31404769345235705986951967"
+    },
+    {
+      "amountSpecified": "32041656526060",
+      "exactInput": true,
+      "expectedAmountCalculated": "32038719944189073253695827"
+    },
+    {
+      "amountSpecified": "20579623785104",
+      "exactInput": true,
+      "expectedAmountCalculated": "20578179261603984487902888"
+    },
+    {
+      "amountSpecified": "27142446819007",
+      "exactInput": true,
+      "expectedAmountCalculated": "27140208173528634005680295"
+    },
+    {
+      "amountSpecified": "29404542260906",
+      "exactInput": true,
+      "expectedAmountCalculated": "29401992526130896368165694"
+    },
+    {
+      "amountSpecified": "20165067299165",
+      "exactInput": true,
+      "expectedAmountCalculated": "20163667523641207300247890"
+    },
+    {
+      "amountSpecified": "30133857201197",
+      "exactInput": true,
+      "expectedAmountCalculated": "30131203085267921471679302"
+    },
+    {
+      "amountSpecified": "5033385374300",
+      "exactInput": true,
+      "expectedAmountCalculated": "5033178563174697964751582"
+    },
+    {
+      "amountSpecified": "5666910364992",
+      "exactInput": true,
+      "expectedAmountCalculated": "5666670802414686585028138"
+    },
+    {
+      "amountSpecified": "22188865462207",
+      "exactInput": true,
+      "expectedAmountCalculated": "22187241137669241163030894"
+    },
+    {
+      "amountSpecified": "25725133332605",
+      "exactInput": true,
+      "expectedAmountCalculated": "25723079838071904852522398"
+    },
+    {
+      "amountSpecified": "32586769583662",
+      "exactInput": true,
+      "expectedAmountCalculated": "32583749790274095820437199"
+    },
+    {
+      "amountSpecified": "21386307627503",
+      "exactInput": true,
+      "expectedAmountCalculated": "21384774184912498576919436"
+    },
+    {
+      "amountSpecified": "1624220195402",
+      "exactInput": true,
+      "expectedAmountCalculated": "1624163826243483900458711"
+    },
+    {
+      "amountSpecified": "6881762140380",
+      "exactInput": true,
+      "expectedAmountCalculated": "6881455569535916039341762"
+    },
+    {
+      "amountSpecified": "16754716927402",
+      "exactInput": true,
+      "expectedAmountCalculated": "16753660852572916364576672"
+    },
+    {
+      "amountSpecified": "22019579691869",
+      "exactInput": true,
+      "expectedAmountCalculated": "22017974737995822821763795"
+    },
+    {
+      "amountSpecified": "33687539836220",
+      "exactInput": true,
+      "expectedAmountCalculated": "33684348618944974952734341"
+    },
+    {
+      "amountSpecified": "30356189767023",
+      "exactInput": true,
+      "expectedAmountCalculated": "30353503434315094395143262"
+    },
+    {
+      "amountSpecified": "2427516037828075210452675",
+      "exactInput": false,
+      "expectedAmountCalculated": "2427603940007"
+    },
+    {
+      "amountSpecified": "23470473526007979080255105",
+      "exactInput": false,
+      "expectedAmountCalculated": "23472248192611"
+    },
+    {
+      "amountSpecified": "29821041345169815470793080",
+      "exactInput": false,
+      "expectedAmountCalculated": "29823650820319"
+    },
+    {
+      "amountSpecified": "64064354684506822529819120",
+      "exactInput": false,
+      "expectedAmountCalculated": "64074069112927"
+    },
+    {
+      "amountSpecified": "68882153556578283604807404",
+      "exactInput": false,
+      "expectedAmountCalculated": "68893220175954"
+    },
+    {
+      "amountSpecified": "61417036285942653621534780",
+      "exactInput": false,
+      "expectedAmountCalculated": "61426044732944"
+    },
+    {
+      "amountSpecified": "66454656391512412955724190",
+      "exactInput": false,
+      "expectedAmountCalculated": "66465030823214"
+    },
+    {
+      "amountSpecified": "31257888404820700247700340",
+      "exactInput": false,
+      "expectedAmountCalculated": "31260707713308"
+    },
+    {
+      "amountSpecified": "44331547925302085293533410",
+      "exactInput": false,
+      "expectedAmountCalculated": "44336631744321"
+    },
+    {
+      "amountSpecified": "47322728689327439777642670",
+      "exactInput": false,
+      "expectedAmountCalculated": "47328420610919"
+    },
+    {
+      "amountSpecified": "11411737338548962297487550",
+      "exactInput": false,
+      "expectedAmountCalculated": "11412342536254"
+    },
+    {
+      "amountSpecified": "26862749812302846722772913",
+      "exactInput": false,
+      "expectedAmountCalculated": "26864951615084"
+    },
+    {
+      "amountSpecified": "18470295816888418517407554",
+      "exactInput": false,
+      "expectedAmountCalculated": "18471519471097"
+    },
+    {
+      "amountSpecified": "15737367478900091285929477",
+      "exactInput": false,
+      "expectedAmountCalculated": "15738329543205"
+    },
+    {
+      "amountSpecified": "2190223441755694430169992",
+      "exactInput": false,
+      "expectedAmountCalculated": "2190301778270"
+    },
+    {
+      "amountSpecified": "17289974813352526583152870",
+      "exactInput": false,
+      "expectedAmountCalculated": "17291082058246"
+    },
+    {
+      "amountSpecified": "43611553513058643494825170",
+      "exactInput": false,
+      "expectedAmountCalculated": "43616495963036"
+    },
+    {
+      "amountSpecified": "68549080426596497122609640",
+      "exactInput": false,
+      "expectedAmountCalculated": "68560050764827"
+    },
+    {
+      "amountSpecified": "22878407076285553033541174",
+      "exactInput": false,
+      "expectedAmountCalculated": "22880111610748"
+    },
+    {
+      "amountSpecified": "48206966749302298639224390",
+      "exactInput": false,
+      "expectedAmountCalculated": "48212844855103"
+    },
+    {
+      "amountSpecified": "49017550601883917104075980",
+      "exactInput": false,
+      "expectedAmountCalculated": "49023601957254"
+    },
+    {
+      "amountSpecified": "32424095468617686368026320",
+      "exactInput": false,
+      "expectedAmountCalculated": "32427090771829"
+    },
+    {
+      "amountSpecified": "3332268502958260794326904",
+      "exactInput": false,
+      "expectedAmountCalculated": "3332394811912"
+    },
+    {
+      "amountSpecified": "48275061956650387433810130",
+      "exactInput": false,
+      "expectedAmountCalculated": "48280954522004"
+    },
+    {
+      "amountSpecified": "30869914353772268474085060",
+      "exactInput": false,
+      "expectedAmountCalculated": "30872676241494"
+    },
+    {
+      "amountSpecified": "52969581385456019588209660",
+      "exactInput": false,
+      "expectedAmountCalculated": "52976512690170"
+    },
+    {
+      "amountSpecified": "16448764020411191538203250",
+      "exactInput": false,
+      "expectedAmountCalculated": "16449791485110"
+    },
+    {
+      "amountSpecified": "52799806461357562407568110",
+      "exactInput": false,
+      "expectedAmountCalculated": "52806698761302"
+    },
+    {
+      "amountSpecified": "44634110019189133463078710",
+      "exactInput": false,
+      "expectedAmountCalculated": "44639253824922"
+    },
+    {
+      "amountSpecified": "49159154979761991910106210",
+      "exactInput": false,
+      "expectedAmountCalculated": "49165236853467"
+    },
+    {
+      "amountSpecified": "68817528621014173909656690",
+      "exactInput": false,
+      "expectedAmountCalculated": "68828576526811"
+    },
+    {
+      "amountSpecified": "38398896998040421432857582",
+      "exactInput": false,
+      "expectedAmountCalculated": "38402873872735"
+    },
+    {
+      "amountSpecified": "58138996629932571862728480",
+      "exactInput": false,
+      "expectedAmountCalculated": "58147167290251"
+    },
+    {
+      "amountSpecified": "60068750280027523175852390",
+      "exactInput": false,
+      "expectedAmountCalculated": "60077409263031"
+    },
+    {
+      "amountSpecified": "20463765697029631288589904",
+      "exactInput": false,
+      "expectedAmountCalculated": "20465197804895"
+    },
+    {
+      "amountSpecified": "6560287280482365196974760",
+      "exactInput": false,
+      "expectedAmountCalculated": "6560575598098"
+    },
+    {
+      "amountSpecified": "6795822163170415410703444",
+      "exactInput": false,
+      "expectedAmountCalculated": "6796123829372"
+    },
+    {
+      "amountSpecified": "28304664585865803255111865",
+      "exactInput": false,
+      "expectedAmountCalculated": "28307060999599"
+    },
+    {
+      "amountSpecified": "35683907500936851817744580",
+      "exactInput": false,
+      "expectedAmountCalculated": "35687421768628"
+    },
+    {
+      "amountSpecified": "47997992764114124863691590",
+      "exactInput": false,
+      "expectedAmountCalculated": "48003826604194"
+    },
+    {
+      "amountSpecified": "1206990676161154924293564",
+      "exactInput": false,
+      "expectedAmountCalculated": "1207031623885"
+    },
+    {
+      "amountSpecified": "1953416359590986465512684",
+      "exactInput": false,
+      "expectedAmountCalculated": "1953485360228"
+    },
+    {
+      "amountSpecified": "10824285482359909983218366",
+      "exactInput": false,
+      "expectedAmountCalculated": "10824847619398"
+    },
+    {
+      "amountSpecified": "19140571081095685899107440",
+      "exactInput": false,
+      "expectedAmountCalculated": "19141863164026"
+    },
+    {
+      "amountSpecified": "3300552633103415258650728",
+      "exactInput": false,
+      "expectedAmountCalculated": "3300677543872"
+    },
+    {
+      "amountSpecified": "40563173262543254395297940",
+      "exactInput": false,
+      "expectedAmountCalculated": "40567538684794"
+    },
+    {
+      "amountSpecified": "55246583121833164499981650",
+      "exactInput": false,
+      "expectedAmountCalculated": "55254047992625"
+    },
+    {
+      "amountSpecified": "68720027910177035967263990",
+      "exactInput": false,
+      "expectedAmountCalculated": "68731047612108"
+    },
+    {
+      "amountSpecified": "57589019325360905421829360",
+      "exactInput": false,
+      "expectedAmountCalculated": "57597053369668"
+    },
+    {
+      "amountSpecified": "59757458911114204801843330",
+      "exactInput": false,
+      "expectedAmountCalculated": "59766038178083"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x5777d92f208679DB4b9778590Fa3CAB3aC9e2168.json b/src/__tests__/stubs/swap/0x5777d92f208679DB4b9778590Fa3CAB3aC9e2168.json
new file mode 100644
index 00000000..4b586227
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x5777d92f208679DB4b9778590Fa3CAB3aC9e2168.json
@@ -0,0 +1,751 @@
+{
+  "poolName": "DAI - USDC 100",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
+    "decimals": 6
+  },
+  "fee": 100,
+  "liquidity": "534082946687918723545029",
+  "sqrtRatioX96": "79225455335602985126100",
+  "tickCurrent": -276325,
+  "ticks": [
+    {
+      "index": -887272,
+      "liquidityNet": "815223090694846",
+      "liquidityGross": "815223090694846"
+    },
+    {
+      "index": -276812,
+      "liquidityNet": "19782816781531",
+      "liquidityGross": "19782816781531"
+    },
+    {
+      "index": -276424,
+      "liquidityNet": "6007981228085202",
+      "liquidityGross": "6007981228085202"
+    },
+    {
+      "index": -276375,
+      "liquidityNet": "40051833351136",
+      "liquidityGross": "40051833351136"
+    },
+    {
+      "index": -276350,
+      "liquidityNet": "3802373718301130",
+      "liquidityGross": "3802373718301130"
+    },
+    {
+      "index": -276345,
+      "liquidityNet": "37545774837005837299",
+      "liquidityGross": "37545774837005837299"
+    },
+    {
+      "index": -276344,
+      "liquidityNet": "46669837299127887364",
+      "liquidityGross": "46669837299127887364"
+    },
+    {
+      "index": -276341,
+      "liquidityNet": "182819228385906316",
+      "liquidityGross": "182819228385906316"
+    },
+    {
+      "index": -276337,
+      "liquidityNet": "143584412724562760",
+      "liquidityGross": "143584412724562760"
+    },
+    {
+      "index": -276336,
+      "liquidityNet": "105900562640378823",
+      "liquidityGross": "105900562640378823"
+    },
+    {
+      "index": -276335,
+      "liquidityNet": "35418485329505506693",
+      "liquidityGross": "35418485329505506693"
+    },
+    {
+      "index": -276334,
+      "liquidityNet": "44213880776160877986",
+      "liquidityGross": "44213880776160877986"
+    },
+    {
+      "index": -276333,
+      "liquidityNet": "200707380139913449",
+      "liquidityGross": "200707380139913449"
+    },
+    {
+      "index": -276332,
+      "liquidityNet": "4884900224132419",
+      "liquidityGross": "4884900224132419"
+    },
+    {
+      "index": -276331,
+      "liquidityNet": "1088290518876313980",
+      "liquidityGross": "1088290518876313980"
+    },
+    {
+      "index": -276330,
+      "liquidityNet": "3776762722530535690",
+      "liquidityGross": "3776762722530535690"
+    },
+    {
+      "index": -276329,
+      "liquidityNet": "29217776507560772898",
+      "liquidityGross": "29217776507560772898"
+    },
+    {
+      "index": -276328,
+      "liquidityNet": "2101755319553328761",
+      "liquidityGross": "2101755319553328761"
+    },
+    {
+      "index": -276327,
+      "liquidityNet": "42918170340259718929",
+      "liquidityGross": "42918170340259718929"
+    },
+    {
+      "index": -276326,
+      "liquidityNet": "533672891971572261970126",
+      "liquidityGross": "533672891971572261970126"
+    },
+    {
+      "index": -276325,
+      "liquidityNet": "166455400799078687691",
+      "liquidityGross": "166455400799078687691"
+    },
+    {
+      "index": -276324,
+      "liquidityNet": "-426567337423580724",
+      "liquidityGross": "426567337423687076"
+    },
+    {
+      "index": -276323,
+      "liquidityNet": "-200782792979501667307",
+      "liquidityGross": "201869934518174231291"
+    },
+    {
+      "index": -276322,
+      "liquidityNet": "-533584011603576581423098",
+      "liquidityGross": "533584011603576581423098"
+    },
+    {
+      "index": -276321,
+      "liquidityNet": "-6907513354275228355",
+      "liquidityGross": "6907513354275228355"
+    },
+    {
+      "index": -276320,
+      "liquidityNet": "-122850205353438439092",
+      "liquidityGross": "122850205353438439092"
+    },
+    {
+      "index": -276319,
+      "liquidityNet": "-3436983004574938152",
+      "liquidityGross": "3436983004574938152"
+    },
+    {
+      "index": -276317,
+      "liquidityNet": "-1347676523049719",
+      "liquidityGross": "1347676523049719"
+    },
+    {
+      "index": -276316,
+      "liquidityNet": "-2995571156147549",
+      "liquidityGross": "2995571156147549"
+    },
+    {
+      "index": -276315,
+      "liquidityNet": "-34681841953693823734",
+      "liquidityGross": "34681841953693823734"
+    },
+    {
+      "index": -276314,
+      "liquidityNet": "-44405586055660843041",
+      "liquidityGross": "44405586055660843041"
+    },
+    {
+      "index": -276313,
+      "liquidityNet": "-758058966955158213",
+      "liquidityGross": "758058966955158213"
+    },
+    {
+      "index": -276311,
+      "liquidityNet": "-104149104628278639",
+      "liquidityGross": "104149104628278639"
+    },
+    {
+      "index": -276310,
+      "liquidityNet": "-326403641110469076",
+      "liquidityGross": "326403641110469076"
+    },
+    {
+      "index": -276306,
+      "liquidityNet": "3645591051512275",
+      "liquidityGross": "3645591051512275"
+    },
+    {
+      "index": -276305,
+      "liquidityNet": "-37566847637614755267",
+      "liquidityGross": "37566847637614755267"
+    },
+    {
+      "index": -276304,
+      "liquidityNet": "-46669837299127887364",
+      "liquidityGross": "46669837299127887364"
+    },
+    {
+      "index": -276289,
+      "liquidityNet": "-3802373718301130",
+      "liquidityGross": "3802373718301130"
+    },
+    {
+      "index": -276287,
+      "liquidityNet": "-3268993770641854",
+      "liquidityGross": "3268993770641854"
+    },
+    {
+      "index": -276284,
+      "liquidityNet": "-3645591051512275",
+      "liquidityGross": "3645591051512275"
+    },
+    {
+      "index": -276275,
+      "liquidityNet": "-40051833351136",
+      "liquidityGross": "40051833351136"
+    },
+    {
+      "index": -276224,
+      "liquidityNet": "-6007981228085202",
+      "liquidityGross": "6007981228085202"
+    },
+    {
+      "index": -275812,
+      "liquidityNet": "-19782816781531",
+      "liquidityGross": "19782816781531"
+    },
+    {
+      "index": -1,
+      "liquidityNet": "10000499987500624950939",
+      "liquidityGross": "10000499987500624950939"
+    },
+    {
+      "index": 1,
+      "liquidityNet": "-10000499987500624950939",
+      "liquidityGross": "10000499987500624950939"
+    },
+    {
+      "index": 887272,
+      "liquidityNet": "-815223090694846",
+      "liquidityGross": "815223090694846"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "69533149506051197286184032",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588572332"
+    },
+    {
+      "amountSpecified": "67921176816120192220883110",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588571414"
+    },
+    {
+      "amountSpecified": "7052397762627502665117951",
+      "exactInput": true,
+      "expectedAmountCalculated": "7051117531596"
+    },
+    {
+      "amountSpecified": "16155642219690862312367382",
+      "exactInput": true,
+      "expectedAmountCalculated": "16152434151849"
+    },
+    {
+      "amountSpecified": "67574430435700633807619960",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588571206"
+    },
+    {
+      "amountSpecified": "27507216952166104055023385",
+      "exactInput": true,
+      "expectedAmountCalculated": "27501170192237"
+    },
+    {
+      "amountSpecified": "17580860462644639964157920",
+      "exactInput": true,
+      "expectedAmountCalculated": "17577322476022"
+    },
+    {
+      "amountSpecified": "35891388269862760136545650",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588089953"
+    },
+    {
+      "amountSpecified": "45291591109748455896535335",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588529416"
+    },
+    {
+      "amountSpecified": "19649696133075040678931384",
+      "exactInput": true,
+      "expectedAmountCalculated": "19645665705509"
+    },
+    {
+      "amountSpecified": "16447686148109504775074207",
+      "exactInput": true,
+      "expectedAmountCalculated": "16444411095624"
+    },
+    {
+      "amountSpecified": "65470388072975532616082170",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588569838"
+    },
+    {
+      "amountSpecified": "13811944617159356644554850",
+      "exactInput": true,
+      "expectedAmountCalculated": "13809262545989"
+    },
+    {
+      "amountSpecified": "36639276136596674675294680",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588270855"
+    },
+    {
+      "amountSpecified": "34431845676790595131237133",
+      "exactInput": true,
+      "expectedAmountCalculated": "34423830345807"
+    },
+    {
+      "amountSpecified": "70855925230645411978690960",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588573023"
+    },
+    {
+      "amountSpecified": "33152194509062812552215170",
+      "exactInput": true,
+      "expectedAmountCalculated": "33144556487222"
+    },
+    {
+      "amountSpecified": "18809480750175669920032004",
+      "exactInput": true,
+      "expectedAmountCalculated": "18805652250119"
+    },
+    {
+      "amountSpecified": "52532064598586060036102925",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588554372"
+    },
+    {
+      "amountSpecified": "52638161083089710279130160",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588554588"
+    },
+    {
+      "amountSpecified": "24491742968447925033016630",
+      "exactInput": true,
+      "expectedAmountCalculated": "24486497349808"
+    },
+    {
+      "amountSpecified": "70819818670832413555315930",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588573004"
+    },
+    {
+      "amountSpecified": "29769159123531424833443323",
+      "exactInput": true,
+      "expectedAmountCalculated": "29762489070549"
+    },
+    {
+      "amountSpecified": "53971185263665006793997387",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588557112"
+    },
+    {
+      "amountSpecified": "38516073110249790894893680",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588423157"
+    },
+    {
+      "amountSpecified": "59371124536667645095523630",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588564558"
+    },
+    {
+      "amountSpecified": "13285129222588163763421019",
+      "exactInput": true,
+      "expectedAmountCalculated": "13282562553486"
+    },
+    {
+      "amountSpecified": "62493800285996008245322482",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588567550"
+    },
+    {
+      "amountSpecified": "30766367974465486842278916",
+      "exactInput": true,
+      "expectedAmountCalculated": "30759417049669"
+    },
+    {
+      "amountSpecified": "658249475268986300065502",
+      "exactInput": true,
+      "expectedAmountCalculated": "658137860574"
+    },
+    {
+      "amountSpecified": "12690106416919384233286738",
+      "exactInput": true,
+      "expectedAmountCalculated": "12687668841368"
+    },
+    {
+      "amountSpecified": "39685357335831204439175580",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588461580"
+    },
+    {
+      "amountSpecified": "21205420740466411697369510",
+      "exactInput": true,
+      "expectedAmountCalculated": "21201009449903"
+    },
+    {
+      "amountSpecified": "6736086718863353355675390",
+      "exactInput": true,
+      "expectedAmountCalculated": "6734867896334"
+    },
+    {
+      "amountSpecified": "56004104710888566107642320",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588560357"
+    },
+    {
+      "amountSpecified": "15909240616389000741415787",
+      "exactInput": true,
+      "expectedAmountCalculated": "15906088816047"
+    },
+    {
+      "amountSpecified": "35868559401771138510677680",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588081164"
+    },
+    {
+      "amountSpecified": "22735224388951311558038780",
+      "exactInput": true,
+      "expectedAmountCalculated": "22730429744121"
+    },
+    {
+      "amountSpecified": "10963469200098020138673712",
+      "exactInput": true,
+      "expectedAmountCalculated": "10961398722973"
+    },
+    {
+      "amountSpecified": "69207085930365000637466260",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588572153"
+    },
+    {
+      "amountSpecified": "39419232383344512630909150",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588454463"
+    },
+    {
+      "amountSpecified": "45604972507953658767914210",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588531174"
+    },
+    {
+      "amountSpecified": "49601227252041668090450920",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588547168"
+    },
+    {
+      "amountSpecified": "60024113062407062838158410",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588565244"
+    },
+    {
+      "amountSpecified": "25389454175742998747116515",
+      "exactInput": true,
+      "expectedAmountCalculated": "25383973615268"
+    },
+    {
+      "amountSpecified": "34792573344763455673746697",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559585656718"
+    },
+    {
+      "amountSpecified": "1337438210408596950289578",
+      "exactInput": true,
+      "expectedAmountCalculated": "1337209730209"
+    },
+    {
+      "amountSpecified": "66647861047863280225244160",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588570625"
+    },
+    {
+      "amountSpecified": "34347417899116788786594593",
+      "exactInput": true,
+      "expectedAmountCalculated": "34339427650834"
+    },
+    {
+      "amountSpecified": "60696749970496510005238420",
+      "exactInput": true,
+      "expectedAmountCalculated": "34559588565915"
+    },
+    {
+      "amountSpecified": "2177354855341",
+      "exactInput": false,
+      "expectedAmountCalculated": "2177730311419538024699492"
+    },
+    {
+      "amountSpecified": "13928924603986",
+      "exactInput": false,
+      "expectedAmountCalculated": "13931633038494106993115297"
+    },
+    {
+      "amountSpecified": "20142243009144",
+      "exactInput": false,
+      "expectedAmountCalculated": "20146394050467524017875534"
+    },
+    {
+      "amountSpecified": "7891730661063",
+      "exactInput": false,
+      "expectedAmountCalculated": "7893175941371983508461020"
+    },
+    {
+      "amountSpecified": "27745788971313",
+      "exactInput": false,
+      "expectedAmountCalculated": "27751902231831702261580897"
+    },
+    {
+      "amountSpecified": "26908238504986",
+      "exactInput": false,
+      "expectedAmountCalculated": "26914125004531248949403526"
+    },
+    {
+      "amountSpecified": "7715454953182",
+      "exactInput": false,
+      "expectedAmountCalculated": "7716865403496760487238011"
+    },
+    {
+      "amountSpecified": "28505831479527",
+      "exactInput": false,
+      "expectedAmountCalculated": "28512152791303219894925068"
+    },
+    {
+      "amountSpecified": "6304721061807",
+      "exactInput": false,
+      "expectedAmountCalculated": "6305856960868839699350500"
+    },
+    {
+      "amountSpecified": "23108217133307",
+      "exactInput": false,
+      "expectedAmountCalculated": "23113107821738616731887123"
+    },
+    {
+      "amountSpecified": "11815353493436",
+      "exactInput": false,
+      "expectedAmountCalculated": "11817604171976742871380358"
+    },
+    {
+      "amountSpecified": "5676895380418",
+      "exactInput": false,
+      "expectedAmountCalculated": "5677911491559895308174033"
+    },
+    {
+      "amountSpecified": "33720811876763",
+      "exactInput": false,
+      "expectedAmountCalculated": "33728619100353342804658508"
+    },
+    {
+      "amountSpecified": "15707757329038",
+      "exactInput": false,
+      "expectedAmountCalculated": "15710863993906569513467704"
+    },
+    {
+      "amountSpecified": "28702524416748",
+      "exactInput": false,
+      "expectedAmountCalculated": "28708899923115172096135831"
+    },
+    {
+      "amountSpecified": "11987821699626",
+      "exactInput": false,
+      "expectedAmountCalculated": "11990109104032252138797478"
+    },
+    {
+      "amountSpecified": "4485615928227",
+      "exactInput": false,
+      "expectedAmountCalculated": "4486408804050724227416792"
+    },
+    {
+      "amountSpecified": "29706495557919",
+      "exactInput": false,
+      "expectedAmountCalculated": "29713149945903598249462371"
+    },
+    {
+      "amountSpecified": "12498283504026",
+      "exactInput": false,
+      "expectedAmountCalculated": "12500680260712250951106438"
+    },
+    {
+      "amountSpecified": "6363350912666",
+      "exactInput": false,
+      "expectedAmountCalculated": "6364498073564105568325011"
+    },
+    {
+      "amountSpecified": "3454628625643",
+      "exactInput": false,
+      "expectedAmountCalculated": "3455232594306423224053144"
+    },
+    {
+      "amountSpecified": "13654501869",
+      "exactInput": false,
+      "expectedAmountCalculated": "13656801078299897925295"
+    },
+    {
+      "amountSpecified": "33701803099837",
+      "exactInput": false,
+      "expectedAmountCalculated": "33709604722168940127051627"
+    },
+    {
+      "amountSpecified": "13295968834402",
+      "exactInput": false,
+      "expectedAmountCalculated": "13298538427980829145932399"
+    },
+    {
+      "amountSpecified": "27795777900912",
+      "exactInput": false,
+      "expectedAmountCalculated": "27801904778713507438351944"
+    },
+    {
+      "amountSpecified": "24406512513445",
+      "exactInput": false,
+      "expectedAmountCalculated": "24411737340091332686875663"
+    },
+    {
+      "amountSpecified": "1215566101509",
+      "exactInput": false,
+      "expectedAmountCalculated": "1215773520347245786950497"
+    },
+    {
+      "amountSpecified": "4203795748636",
+      "exactInput": false,
+      "expectedAmountCalculated": "4204536591321065995439967"
+    },
+    {
+      "amountSpecified": "9153170380162",
+      "exactInput": false,
+      "expectedAmountCalculated": "9154868303641064311362867"
+    },
+    {
+      "amountSpecified": "5312099851138",
+      "exactInput": false,
+      "expectedAmountCalculated": "5313047038152751850029712"
+    },
+    {
+      "amountSpecified": "29843264101594",
+      "exactInput": false,
+      "expectedAmountCalculated": "29849956773262635857423725"
+    },
+    {
+      "amountSpecified": "23287348124656",
+      "exactInput": false,
+      "expectedAmountCalculated": "23292284539859967764336305"
+    },
+    {
+      "amountSpecified": "2743502195878",
+      "exactInput": false,
+      "expectedAmountCalculated": "2743978185413609036672935"
+    },
+    {
+      "amountSpecified": "4598851781392",
+      "exactInput": false,
+      "expectedAmountCalculated": "4599665648002600657106865"
+    },
+    {
+      "amountSpecified": "15568254988458",
+      "exactInput": false,
+      "expectedAmountCalculated": "15571329994246944202103997"
+    },
+    {
+      "amountSpecified": "10470505936002",
+      "exactInput": false,
+      "expectedAmountCalculated": "10472474061804176563268271"
+    },
+    {
+      "amountSpecified": "17109876578915",
+      "exactInput": false,
+      "expectedAmountCalculated": "17113305494574646603140889"
+    },
+    {
+      "amountSpecified": "14221717152007",
+      "exactInput": false,
+      "expectedAmountCalculated": "14224490319333276392692134"
+    },
+    {
+      "amountSpecified": "19208733900768",
+      "exactInput": false,
+      "expectedAmountCalculated": "19212658966061189788499791"
+    },
+    {
+      "amountSpecified": "18082871471329",
+      "exactInput": false,
+      "expectedAmountCalculated": "18086528341233810686597106"
+    },
+    {
+      "amountSpecified": "15632781354529",
+      "exactInput": false,
+      "expectedAmountCalculated": "15635870995061177800132789"
+    },
+    {
+      "amountSpecified": "33943934579032",
+      "exactInput": false,
+      "expectedAmountCalculated": "33951807650735468508110922"
+    },
+    {
+      "amountSpecified": "28870194920540",
+      "exactInput": false,
+      "expectedAmountCalculated": "28876616739444515349815153"
+    },
+    {
+      "amountSpecified": "19645168209600",
+      "exactInput": false,
+      "expectedAmountCalculated": "19649198516792125523798439"
+    },
+    {
+      "amountSpecified": "26773244281661",
+      "exactInput": false,
+      "expectedAmountCalculated": "26779094478440865782282634"
+    },
+    {
+      "amountSpecified": "34550142628958",
+      "exactInput": false,
+      "expectedAmountCalculated": "34558267615166998706709451"
+    },
+    {
+      "amountSpecified": "22473431690491",
+      "exactInput": false,
+      "expectedAmountCalculated": "22478161305232354834853340"
+    },
+    {
+      "amountSpecified": "20618296850366",
+      "exactInput": false,
+      "expectedAmountCalculated": "20622564387996605161703839"
+    },
+    {
+      "amountSpecified": "29740527894598",
+      "exactInput": false,
+      "expectedAmountCalculated": "29747191802222342904605307"
+    },
+    {
+      "amountSpecified": "7713538577180",
+      "exactInput": false,
+      "expectedAmountCalculated": "7714948649481215904244360"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x6Ab3bba2F41e7eAA262fa5A1A9b3932fA161526F-reversed.json b/src/__tests__/stubs/swap/0x6Ab3bba2F41e7eAA262fa5A1A9b3932fA161526F-reversed.json
new file mode 100644
index 00000000..db68db37
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x6Ab3bba2F41e7eAA262fa5A1A9b3932fA161526F-reversed.json
@@ -0,0 +1,726 @@
+{
+  "poolName": "WBTC - WETH 10000 - reversed",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
+    "decimals": 8
+  },
+  "fee": 10000,
+  "liquidity": "463360659650370",
+  "sqrtRatioX96": "31592569291518527637972416352659183",
+  "tickCurrent": 257934,
+  "ticks": [
+    {
+      "index": 92200,
+      "liquidityNet": "24210459201132",
+      "liquidityGross": "24210459201132"
+    },
+    {
+      "index": 181600,
+      "liquidityNet": "138701664634",
+      "liquidityGross": "138701664634"
+    },
+    {
+      "index": 207200,
+      "liquidityNet": "638307334",
+      "liquidityGross": "638307334"
+    },
+    {
+      "index": 220200,
+      "liquidityNet": "1889146172",
+      "liquidityGross": "1889146172"
+    },
+    {
+      "index": 223400,
+      "liquidityNet": "34817691186",
+      "liquidityGross": "34817691186"
+    },
+    {
+      "index": 230200,
+      "liquidityNet": "31465166814",
+      "liquidityGross": "101100549186"
+    },
+    {
+      "index": 246200,
+      "liquidityNet": "2342856972",
+      "liquidityGross": "2342856972"
+    },
+    {
+      "index": 246400,
+      "liquidityNet": "266938276",
+      "liquidityGross": "266938276"
+    },
+    {
+      "index": 248400,
+      "liquidityNet": "96714704831090",
+      "liquidityGross": "96714704831090"
+    },
+    {
+      "index": 249600,
+      "liquidityNet": "593675915188",
+      "liquidityGross": "593675915188"
+    },
+    {
+      "index": 249800,
+      "liquidityNet": "1274566635",
+      "liquidityGross": "1274566635"
+    },
+    {
+      "index": 253200,
+      "liquidityNet": "41960310394417",
+      "liquidityGross": "42227324045193"
+    },
+    {
+      "index": 254400,
+      "liquidityNet": "273442138977386",
+      "liquidityGross": "273442138977386"
+    },
+    {
+      "index": 255200,
+      "liquidityNet": "39457676900336",
+      "liquidityGross": "39457676900336"
+    },
+    {
+      "index": 255400,
+      "liquidityNet": "43538092931702",
+      "liquidityGross": "43538092931702"
+    },
+    {
+      "index": 255600,
+      "liquidityNet": "133225692842233",
+      "liquidityGross": "133225692842233"
+    },
+    {
+      "index": 256400,
+      "liquidityNet": "8184310876715",
+      "liquidityGross": "8184310876715"
+    },
+    {
+      "index": 256800,
+      "liquidityNet": "219267815932",
+      "liquidityGross": "219267815932"
+    },
+    {
+      "index": 257200,
+      "liquidityNet": "-34358286869097",
+      "liquidityGross": "34358286869097"
+    },
+    {
+      "index": 257400,
+      "liquidityNet": "-124624937843067",
+      "liquidityGross": "158282184729339"
+    },
+    {
+      "index": 257600,
+      "liquidityNet": "-39414119333081",
+      "liquidityGross": "39414119333081"
+    },
+    {
+      "index": 257800,
+      "liquidityNet": "276671461",
+      "liquidityGross": "276671461"
+    },
+    {
+      "index": 258000,
+      "liquidityNet": "3402360630413",
+      "liquidityGross": "3402360630413"
+    },
+    {
+      "index": 258200,
+      "liquidityNet": "1561547083980",
+      "liquidityGross": "1561547083980"
+    },
+    {
+      "index": 258400,
+      "liquidityNet": "-216285694846",
+      "liquidityGross": "6588435565980"
+    },
+    {
+      "index": 258600,
+      "liquidityNet": "-13927704753613",
+      "liquidityGross": "13927704753613"
+    },
+    {
+      "index": 258800,
+      "liquidityNet": "-24210459201132",
+      "liquidityGross": "24210459201132"
+    },
+    {
+      "index": 259000,
+      "liquidityNet": "27348146813",
+      "liquidityGross": "27348146813"
+    },
+    {
+      "index": 259200,
+      "liquidityNet": "-42106629522644",
+      "liquidityGross": "42106629522644"
+    },
+    {
+      "index": 260200,
+      "liquidityNet": "-221156962104",
+      "liquidityGross": "221156962104"
+    },
+    {
+      "index": 260600,
+      "liquidityNet": "-273442138977386",
+      "liquidityGross": "273442138977386"
+    },
+    {
+      "index": 262400,
+      "liquidityNet": "-96714704831090",
+      "liquidityGross": "96714704831090"
+    },
+    {
+      "index": 263400,
+      "liquidityNet": "-3459877611",
+      "liquidityGross": "3459877611"
+    },
+    {
+      "index": 263600,
+      "liquidityNet": "-590216037577",
+      "liquidityGross": "590216037577"
+    },
+    {
+      "index": 263800,
+      "liquidityNet": "-1274566635",
+      "liquidityGross": "1274566635"
+    },
+    {
+      "index": 269400,
+      "liquidityNet": "-16843159287110",
+      "liquidityGross": "16843159287110"
+    },
+    {
+      "index": 276400,
+      "liquidityNet": "-638307334",
+      "liquidityGross": "638307334"
+    },
+    {
+      "index": 292400,
+      "liquidityNet": "-66282858000",
+      "liquidityGross": "66282858000"
+    },
+    {
+      "index": 368400,
+      "liquidityNet": "-266938276",
+      "liquidityGross": "266938276"
+    },
+    {
+      "index": 391400,
+      "liquidityNet": "-5194839246",
+      "liquidityGross": "5194839246"
+    },
+    {
+      "index": 887200,
+      "liquidityNet": "-2342856972",
+      "liquidityGross": "2342856972"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "36908162974244487387",
+      "exactInput": true,
+      "expectedAmountCalculated": "163202870"
+    },
+    {
+      "amountSpecified": "11778744113808575394",
+      "exactInput": true,
+      "expectedAmountCalculated": "68972323"
+    },
+    {
+      "amountSpecified": "49596623655633530718",
+      "exactInput": true,
+      "expectedAmountCalculated": "163202872"
+    },
+    {
+      "amountSpecified": "10425887162223412246",
+      "exactInput": true,
+      "expectedAmountCalculated": "61483883"
+    },
+    {
+      "amountSpecified": "32758899680895840342",
+      "exactInput": true,
+      "expectedAmountCalculated": "163202455"
+    },
+    {
+      "amountSpecified": "25017132942542987063",
+      "exactInput": true,
+      "expectedAmountCalculated": "136293123"
+    },
+    {
+      "amountSpecified": "23941318443929774235",
+      "exactInput": true,
+      "expectedAmountCalculated": "131256903"
+    },
+    {
+      "amountSpecified": "26070727378621951905",
+      "exactInput": true,
+      "expectedAmountCalculated": "141033264"
+    },
+    {
+      "amountSpecified": "9533909555432886679",
+      "exactInput": true,
+      "expectedAmountCalculated": "56485680"
+    },
+    {
+      "amountSpecified": "48077109423010790067",
+      "exactInput": true,
+      "expectedAmountCalculated": "163202872"
+    },
+    {
+      "amountSpecified": "7814035385102393095",
+      "exactInput": true,
+      "expectedAmountCalculated": "46709157"
+    },
+    {
+      "amountSpecified": "48133040597345652234",
+      "exactInput": true,
+      "expectedAmountCalculated": "163202872"
+    },
+    {
+      "amountSpecified": "47447782912825272318",
+      "exactInput": true,
+      "expectedAmountCalculated": "163202872"
+    },
+    {
+      "amountSpecified": "54418960945530865728",
+      "exactInput": true,
+      "expectedAmountCalculated": "163202872"
+    },
+    {
+      "amountSpecified": "32676302497703290965",
+      "exactInput": true,
+      "expectedAmountCalculated": "163201828"
+    },
+    {
+      "amountSpecified": "44123957234494968666",
+      "exactInput": true,
+      "expectedAmountCalculated": "163202872"
+    },
+    {
+      "amountSpecified": "32004276575827408281",
+      "exactInput": true,
+      "expectedAmountCalculated": "162057988"
+    },
+    {
+      "amountSpecified": "17165428075995794786",
+      "exactInput": true,
+      "expectedAmountCalculated": "97646312"
+    },
+    {
+      "amountSpecified": "7354824047961855192",
+      "exactInput": true,
+      "expectedAmountCalculated": "44068155"
+    },
+    {
+      "amountSpecified": "12834921678653861565",
+      "exactInput": true,
+      "expectedAmountCalculated": "74739918"
+    },
+    {
+      "amountSpecified": "38352411298521377805",
+      "exactInput": true,
+      "expectedAmountCalculated": "163202871"
+    },
+    {
+      "amountSpecified": "7183405618630152136",
+      "exactInput": true,
+      "expectedAmountCalculated": "43079025"
+    },
+    {
+      "amountSpecified": "31244159248090572036",
+      "exactInput": true,
+      "expectedAmountCalculated": "160301201"
+    },
+    {
+      "amountSpecified": "30321838099577751441",
+      "exactInput": true,
+      "expectedAmountCalculated": "157806838"
+    },
+    {
+      "amountSpecified": "42883331043998581752",
+      "exactInput": true,
+      "expectedAmountCalculated": "163202872"
+    },
+    {
+      "amountSpecified": "28300723162056283884",
+      "exactInput": true,
+      "expectedAmountCalculated": "150486920"
+    },
+    {
+      "amountSpecified": "22825476350899209966",
+      "exactInput": true,
+      "expectedAmountCalculated": "125898689"
+    },
+    {
+      "amountSpecified": "47677476991563433047",
+      "exactInput": true,
+      "expectedAmountCalculated": "163202872"
+    },
+    {
+      "amountSpecified": "49016150395611446091",
+      "exactInput": true,
+      "expectedAmountCalculated": "163202872"
+    },
+    {
+      "amountSpecified": "48016625147090198676",
+      "exactInput": true,
+      "expectedAmountCalculated": "163202872"
+    },
+    {
+      "amountSpecified": "48575903683403033289",
+      "exactInput": true,
+      "expectedAmountCalculated": "163202872"
+    },
+    {
+      "amountSpecified": "32478221382677501541",
+      "exactInput": true,
+      "expectedAmountCalculated": "163041142"
+    },
+    {
+      "amountSpecified": "5570459998340942957",
+      "exactInput": true,
+      "expectedAmountCalculated": "33684302"
+    },
+    {
+      "amountSpecified": "47401257948985366569",
+      "exactInput": true,
+      "expectedAmountCalculated": "163202872"
+    },
+    {
+      "amountSpecified": "29230079672722223487",
+      "exactInput": true,
+      "expectedAmountCalculated": "154179082"
+    },
+    {
+      "amountSpecified": "31654062893016505491",
+      "exactInput": true,
+      "expectedAmountCalculated": "161278141"
+    },
+    {
+      "amountSpecified": "43352862141341914821",
+      "exactInput": true,
+      "expectedAmountCalculated": "163202872"
+    },
+    {
+      "amountSpecified": "15869685884687603526",
+      "exactInput": true,
+      "expectedAmountCalculated": "90914503"
+    },
+    {
+      "amountSpecified": "31016620692778511571",
+      "exactInput": true,
+      "expectedAmountCalculated": "159726235"
+    },
+    {
+      "amountSpecified": "28268614595956515429",
+      "exactInput": true,
+      "expectedAmountCalculated": "150356064"
+    },
+    {
+      "amountSpecified": "21955699417377554928",
+      "exactInput": true,
+      "expectedAmountCalculated": "121675047"
+    },
+    {
+      "amountSpecified": "5361108730121472273",
+      "exactInput": true,
+      "expectedAmountCalculated": "32453381"
+    },
+    {
+      "amountSpecified": "54342401890612433598",
+      "exactInput": true,
+      "expectedAmountCalculated": "163202872"
+    },
+    {
+      "amountSpecified": "42003535545084133152",
+      "exactInput": true,
+      "expectedAmountCalculated": "163202872"
+    },
+    {
+      "amountSpecified": "13046609727263418504",
+      "exactInput": true,
+      "expectedAmountCalculated": "75887174"
+    },
+    {
+      "amountSpecified": "46453063027455021465",
+      "exactInput": true,
+      "expectedAmountCalculated": "163202872"
+    },
+    {
+      "amountSpecified": "8909918582602724218",
+      "exactInput": true,
+      "expectedAmountCalculated": "52959934"
+    },
+    {
+      "amountSpecified": "6466521829718400928",
+      "exactInput": true,
+      "expectedAmountCalculated": "38922997"
+    },
+    {
+      "amountSpecified": "21678197607249184386",
+      "exactInput": true,
+      "expectedAmountCalculated": "120318717"
+    },
+    {
+      "amountSpecified": "18677862593821528814",
+      "exactInput": true,
+      "expectedAmountCalculated": "105376507"
+    },
+    {
+      "amountSpecified": "144219605",
+      "exactInput": false,
+      "expectedAmountCalculated": "26802548468067341048"
+    },
+    {
+      "amountSpecified": "3307014",
+      "exactInput": false,
+      "expectedAmountCalculated": "532659028831507184"
+    },
+    {
+      "amountSpecified": "75980903",
+      "exactInput": false,
+      "expectedAmountCalculated": "13063927798796689410"
+    },
+    {
+      "amountSpecified": "60320743",
+      "exactInput": false,
+      "expectedAmountCalculated": "10217534402260100493"
+    },
+    {
+      "amountSpecified": "38618872",
+      "exactInput": false,
+      "expectedAmountCalculated": "6414274894874451311"
+    },
+    {
+      "amountSpecified": "155614829",
+      "exactInput": false,
+      "expectedAmountCalculated": "29632172641661653146"
+    },
+    {
+      "amountSpecified": "24118970",
+      "exactInput": false,
+      "expectedAmountCalculated": "3955409848509843358"
+    },
+    {
+      "amountSpecified": "114743901",
+      "exactInput": false,
+      "expectedAmountCalculated": "20546715359999732596"
+    },
+    {
+      "amountSpecified": "1723460",
+      "exactInput": false,
+      "expectedAmountCalculated": "277217948347281538"
+    },
+    {
+      "amountSpecified": "58593979",
+      "exactInput": false,
+      "expectedAmountCalculated": "9909093318811860854"
+    },
+    {
+      "amountSpecified": "3781730",
+      "exactInput": false,
+      "expectedAmountCalculated": "609371104807036386"
+    },
+    {
+      "amountSpecified": "127845008",
+      "exactInput": false,
+      "expectedAmountCalculated": "23229176625157385140"
+    },
+    {
+      "amountSpecified": "56740505",
+      "exactInput": false,
+      "expectedAmountCalculated": "9579175114940389618"
+    },
+    {
+      "amountSpecified": "12124012",
+      "exactInput": false,
+      "expectedAmountCalculated": "1967709986714646050"
+    },
+    {
+      "amountSpecified": "162516723",
+      "exactInput": false,
+      "expectedAmountCalculated": "32220688547423804815"
+    },
+    {
+      "amountSpecified": "115333949",
+      "exactInput": false,
+      "expectedAmountCalculated": "20665784841558395689"
+    },
+    {
+      "amountSpecified": "147509674",
+      "exactInput": false,
+      "expectedAmountCalculated": "27579047364764817573"
+    },
+    {
+      "amountSpecified": "133128591",
+      "exactInput": false,
+      "expectedAmountCalculated": "24336074764632062003"
+    },
+    {
+      "amountSpecified": "153691646",
+      "exactInput": false,
+      "expectedAmountCalculated": "29101212402711077899"
+    },
+    {
+      "amountSpecified": "53001714",
+      "exactInput": false,
+      "expectedAmountCalculated": "8917287702008479348"
+    },
+    {
+      "amountSpecified": "138707182",
+      "exactInput": false,
+      "expectedAmountCalculated": "25548581176621037283"
+    },
+    {
+      "amountSpecified": "63587573",
+      "exactInput": false,
+      "expectedAmountCalculated": "10803928974430256016"
+    },
+    {
+      "amountSpecified": "26030537",
+      "exactInput": false,
+      "expectedAmountCalculated": "4276014892648502319"
+    },
+    {
+      "amountSpecified": "46802884",
+      "exactInput": false,
+      "expectedAmountCalculated": "7830373107562741255"
+    },
+    {
+      "amountSpecified": "96518989",
+      "exactInput": false,
+      "expectedAmountCalculated": "16947068196372890369"
+    },
+    {
+      "amountSpecified": "65753100",
+      "exactInput": false,
+      "expectedAmountCalculated": "11194718005597984919"
+    },
+    {
+      "amountSpecified": "140770657",
+      "exactInput": false,
+      "expectedAmountCalculated": "26011274833819174466"
+    },
+    {
+      "amountSpecified": "22296340",
+      "exactInput": false,
+      "expectedAmountCalculated": "3650711986231580979"
+    },
+    {
+      "amountSpecified": "22579322",
+      "exactInput": false,
+      "expectedAmountCalculated": "3697956217429575955"
+    },
+    {
+      "amountSpecified": "64194836",
+      "exactInput": false,
+      "expectedAmountCalculated": "10913347324819263899"
+    },
+    {
+      "amountSpecified": "29279453",
+      "exactInput": false,
+      "expectedAmountCalculated": "4823374161311140730"
+    },
+    {
+      "amountSpecified": "164346446",
+      "exactInput": false,
+      "expectedAmountCalculated": "43496128035415043805424632385"
+    },
+    {
+      "amountSpecified": "27909928",
+      "exactInput": false,
+      "expectedAmountCalculated": "4592265889148461007"
+    },
+    {
+      "amountSpecified": "85843607",
+      "exactInput": false,
+      "expectedAmountCalculated": "14906479369417723791"
+    },
+    {
+      "amountSpecified": "64298670",
+      "exactInput": false,
+      "expectedAmountCalculated": "10932069498798543887"
+    },
+    {
+      "amountSpecified": "18717623",
+      "exactInput": false,
+      "expectedAmountCalculated": "3055236760043812583"
+    },
+    {
+      "amountSpecified": "27513062",
+      "exactInput": false,
+      "expectedAmountCalculated": "4525397677989030629"
+    },
+    {
+      "amountSpecified": "146757331",
+      "exactInput": false,
+      "expectedAmountCalculated": "27399570662156549348"
+    },
+    {
+      "amountSpecified": "81426904",
+      "exactInput": false,
+      "expectedAmountCalculated": "14076365422853288073"
+    },
+    {
+      "amountSpecified": "115702898",
+      "exactInput": false,
+      "expectedAmountCalculated": "20740319754858619798"
+    },
+    {
+      "amountSpecified": "99091562",
+      "exactInput": false,
+      "expectedAmountCalculated": "17446184321466868371"
+    },
+    {
+      "amountSpecified": "22532210",
+      "exactInput": false,
+      "expectedAmountCalculated": "3690089194088358789"
+    },
+    {
+      "amountSpecified": "165634205",
+      "exactInput": false,
+      "expectedAmountCalculated": "43496128035415043805424632385"
+    },
+    {
+      "amountSpecified": "42102438",
+      "exactInput": false,
+      "expectedAmountCalculated": "7014463772432868938"
+    },
+    {
+      "amountSpecified": "113438182",
+      "exactInput": false,
+      "expectedAmountCalculated": "20283800789184264163"
+    },
+    {
+      "amountSpecified": "42343392",
+      "exactInput": false,
+      "expectedAmountCalculated": "7056118958174597786"
+    },
+    {
+      "amountSpecified": "133144009",
+      "exactInput": false,
+      "expectedAmountCalculated": "24339351006934006367"
+    },
+    {
+      "amountSpecified": "129186294",
+      "exactInput": false,
+      "expectedAmountCalculated": "23508454714621316480"
+    },
+    {
+      "amountSpecified": "171604993",
+      "exactInput": false,
+      "expectedAmountCalculated": "43496128035415043805424632385"
+    },
+    {
+      "amountSpecified": "100884374",
+      "exactInput": false,
+      "expectedAmountCalculated": "17795737197073107732"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x6Ab3bba2F41e7eAA262fa5A1A9b3932fA161526F.json b/src/__tests__/stubs/swap/0x6Ab3bba2F41e7eAA262fa5A1A9b3932fA161526F.json
new file mode 100644
index 00000000..b1e71bba
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x6Ab3bba2F41e7eAA262fa5A1A9b3932fA161526F.json
@@ -0,0 +1,726 @@
+{
+  "poolName": "WBTC - WETH 10000",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
+    "decimals": 8
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "fee": 10000,
+  "liquidity": "463360659650370",
+  "sqrtRatioX96": "31592569291518527637972416352659183",
+  "tickCurrent": 257934,
+  "ticks": [
+    {
+      "index": 92200,
+      "liquidityNet": "24210459201132",
+      "liquidityGross": "24210459201132"
+    },
+    {
+      "index": 181600,
+      "liquidityNet": "138701664634",
+      "liquidityGross": "138701664634"
+    },
+    {
+      "index": 207200,
+      "liquidityNet": "638307334",
+      "liquidityGross": "638307334"
+    },
+    {
+      "index": 220200,
+      "liquidityNet": "1889146172",
+      "liquidityGross": "1889146172"
+    },
+    {
+      "index": 223400,
+      "liquidityNet": "34817691186",
+      "liquidityGross": "34817691186"
+    },
+    {
+      "index": 230200,
+      "liquidityNet": "31465166814",
+      "liquidityGross": "101100549186"
+    },
+    {
+      "index": 246200,
+      "liquidityNet": "2342856972",
+      "liquidityGross": "2342856972"
+    },
+    {
+      "index": 246400,
+      "liquidityNet": "266938276",
+      "liquidityGross": "266938276"
+    },
+    {
+      "index": 248400,
+      "liquidityNet": "96714704831090",
+      "liquidityGross": "96714704831090"
+    },
+    {
+      "index": 249600,
+      "liquidityNet": "593675915188",
+      "liquidityGross": "593675915188"
+    },
+    {
+      "index": 249800,
+      "liquidityNet": "1274566635",
+      "liquidityGross": "1274566635"
+    },
+    {
+      "index": 253200,
+      "liquidityNet": "41960310394417",
+      "liquidityGross": "42227324045193"
+    },
+    {
+      "index": 254400,
+      "liquidityNet": "273442138977386",
+      "liquidityGross": "273442138977386"
+    },
+    {
+      "index": 255200,
+      "liquidityNet": "39457676900336",
+      "liquidityGross": "39457676900336"
+    },
+    {
+      "index": 255400,
+      "liquidityNet": "43538092931702",
+      "liquidityGross": "43538092931702"
+    },
+    {
+      "index": 255600,
+      "liquidityNet": "133225692842233",
+      "liquidityGross": "133225692842233"
+    },
+    {
+      "index": 256400,
+      "liquidityNet": "8184310876715",
+      "liquidityGross": "8184310876715"
+    },
+    {
+      "index": 256800,
+      "liquidityNet": "219267815932",
+      "liquidityGross": "219267815932"
+    },
+    {
+      "index": 257200,
+      "liquidityNet": "-34358286869097",
+      "liquidityGross": "34358286869097"
+    },
+    {
+      "index": 257400,
+      "liquidityNet": "-124624937843067",
+      "liquidityGross": "158282184729339"
+    },
+    {
+      "index": 257600,
+      "liquidityNet": "-39414119333081",
+      "liquidityGross": "39414119333081"
+    },
+    {
+      "index": 257800,
+      "liquidityNet": "276671461",
+      "liquidityGross": "276671461"
+    },
+    {
+      "index": 258000,
+      "liquidityNet": "3402360630413",
+      "liquidityGross": "3402360630413"
+    },
+    {
+      "index": 258200,
+      "liquidityNet": "1561547083980",
+      "liquidityGross": "1561547083980"
+    },
+    {
+      "index": 258400,
+      "liquidityNet": "-216285694846",
+      "liquidityGross": "6588435565980"
+    },
+    {
+      "index": 258600,
+      "liquidityNet": "-13927704753613",
+      "liquidityGross": "13927704753613"
+    },
+    {
+      "index": 258800,
+      "liquidityNet": "-24210459201132",
+      "liquidityGross": "24210459201132"
+    },
+    {
+      "index": 259000,
+      "liquidityNet": "27348146813",
+      "liquidityGross": "27348146813"
+    },
+    {
+      "index": 259200,
+      "liquidityNet": "-42106629522644",
+      "liquidityGross": "42106629522644"
+    },
+    {
+      "index": 260200,
+      "liquidityNet": "-221156962104",
+      "liquidityGross": "221156962104"
+    },
+    {
+      "index": 260600,
+      "liquidityNet": "-273442138977386",
+      "liquidityGross": "273442138977386"
+    },
+    {
+      "index": 262400,
+      "liquidityNet": "-96714704831090",
+      "liquidityGross": "96714704831090"
+    },
+    {
+      "index": 263400,
+      "liquidityNet": "-3459877611",
+      "liquidityGross": "3459877611"
+    },
+    {
+      "index": 263600,
+      "liquidityNet": "-590216037577",
+      "liquidityGross": "590216037577"
+    },
+    {
+      "index": 263800,
+      "liquidityNet": "-1274566635",
+      "liquidityGross": "1274566635"
+    },
+    {
+      "index": 269400,
+      "liquidityNet": "-16843159287110",
+      "liquidityGross": "16843159287110"
+    },
+    {
+      "index": 276400,
+      "liquidityNet": "-638307334",
+      "liquidityGross": "638307334"
+    },
+    {
+      "index": 292400,
+      "liquidityNet": "-66282858000",
+      "liquidityGross": "66282858000"
+    },
+    {
+      "index": 368400,
+      "liquidityNet": "-266938276",
+      "liquidityGross": "266938276"
+    },
+    {
+      "index": 391400,
+      "liquidityNet": "-5194839246",
+      "liquidityGross": "5194839246"
+    },
+    {
+      "index": 887200,
+      "liquidityNet": "-2342856972",
+      "liquidityGross": "2342856972"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "134822446",
+      "exactInput": true,
+      "expectedAmountCalculated": "19383322020918013163"
+    },
+    {
+      "amountSpecified": "107894448",
+      "exactInput": true,
+      "expectedAmountCalculated": "15752239559136659140"
+    },
+    {
+      "amountSpecified": "88574974",
+      "exactInput": true,
+      "expectedAmountCalculated": "13079208357455966902"
+    },
+    {
+      "amountSpecified": "117013605",
+      "exactInput": true,
+      "expectedAmountCalculated": "16994095680507260272"
+    },
+    {
+      "amountSpecified": "124394401",
+      "exactInput": true,
+      "expectedAmountCalculated": "17990059002699001171"
+    },
+    {
+      "amountSpecified": "46505737",
+      "exactInput": true,
+      "expectedAmountCalculated": "7052676093873232972"
+    },
+    {
+      "amountSpecified": "42255101",
+      "exactInput": true,
+      "expectedAmountCalculated": "6427288591568942738"
+    },
+    {
+      "amountSpecified": "38776294",
+      "exactInput": true,
+      "expectedAmountCalculated": "5913043986757486251"
+    },
+    {
+      "amountSpecified": "144567530",
+      "exactInput": true,
+      "expectedAmountCalculated": "20670836317964547865"
+    },
+    {
+      "amountSpecified": "160093178",
+      "exactInput": true,
+      "expectedAmountCalculated": "22693701733815674539"
+    },
+    {
+      "amountSpecified": "9179626",
+      "exactInput": true,
+      "expectedAmountCalculated": "1433796457985032400"
+    },
+    {
+      "amountSpecified": "37156245",
+      "exactInput": true,
+      "expectedAmountCalculated": "5672818940204717186"
+    },
+    {
+      "amountSpecified": "27657598",
+      "exactInput": true,
+      "expectedAmountCalculated": "4254098812108377459"
+    },
+    {
+      "amountSpecified": "151139379",
+      "exactInput": true,
+      "expectedAmountCalculated": "21531311845796990574"
+    },
+    {
+      "amountSpecified": "48958856",
+      "exactInput": true,
+      "expectedAmountCalculated": "7412130816623961736"
+    },
+    {
+      "amountSpecified": "102974617",
+      "exactInput": true,
+      "expectedAmountCalculated": "15077003851490860871"
+    },
+    {
+      "amountSpecified": "82875913",
+      "exactInput": true,
+      "expectedAmountCalculated": "12279557570677504347"
+    },
+    {
+      "amountSpecified": "70092590",
+      "exactInput": true,
+      "expectedAmountCalculated": "10467056452105573587"
+    },
+    {
+      "amountSpecified": "83127007",
+      "exactInput": true,
+      "expectedAmountCalculated": "12314897534252104796"
+    },
+    {
+      "amountSpecified": "10363196",
+      "exactInput": true,
+      "expectedAmountCalculated": "1617044464885436442"
+    },
+    {
+      "amountSpecified": "8796535",
+      "exactInput": true,
+      "expectedAmountCalculated": "1374405288712613630"
+    },
+    {
+      "amountSpecified": "44618391",
+      "exactInput": true,
+      "expectedAmountCalculated": "6775393775322297191"
+    },
+    {
+      "amountSpecified": "37730069",
+      "exactInput": true,
+      "expectedAmountCalculated": "5757961478766534248"
+    },
+    {
+      "amountSpecified": "39209430",
+      "exactInput": true,
+      "expectedAmountCalculated": "5977190115349836286"
+    },
+    {
+      "amountSpecified": "105456801",
+      "exactInput": true,
+      "expectedAmountCalculated": "15418140753867613941"
+    },
+    {
+      "amountSpecified": "88209673",
+      "exactInput": true,
+      "expectedAmountCalculated": "13028105772369950857"
+    },
+    {
+      "amountSpecified": "38279729",
+      "exactInput": true,
+      "expectedAmountCalculated": "5839462585038360124"
+    },
+    {
+      "amountSpecified": "7075065",
+      "exactInput": true,
+      "expectedAmountCalculated": "1107047850730470568"
+    },
+    {
+      "amountSpecified": "43435912",
+      "exactInput": true,
+      "expectedAmountCalculated": "6601343542435515775"
+    },
+    {
+      "amountSpecified": "19940974",
+      "exactInput": true,
+      "expectedAmountCalculated": "3086569092239377273"
+    },
+    {
+      "amountSpecified": "55112139",
+      "exactInput": true,
+      "expectedAmountCalculated": "8309237193992408415"
+    },
+    {
+      "amountSpecified": "89328186",
+      "exactInput": true,
+      "expectedAmountCalculated": "13184510229048227414"
+    },
+    {
+      "amountSpecified": "67059827",
+      "exactInput": true,
+      "expectedAmountCalculated": "10033180973091839436"
+    },
+    {
+      "amountSpecified": "119397673",
+      "exactInput": true,
+      "expectedAmountCalculated": "17316695511243760772"
+    },
+    {
+      "amountSpecified": "81984573",
+      "exactInput": true,
+      "expectedAmountCalculated": "12154025874737363493"
+    },
+    {
+      "amountSpecified": "37915241",
+      "exactInput": true,
+      "expectedAmountCalculated": "5785424037859240571"
+    },
+    {
+      "amountSpecified": "59880634",
+      "exactInput": true,
+      "expectedAmountCalculated": "9000111208037735472"
+    },
+    {
+      "amountSpecified": "9918818",
+      "exactInput": true,
+      "expectedAmountCalculated": "1548286013350482630"
+    },
+    {
+      "amountSpecified": "28788570",
+      "exactInput": true,
+      "expectedAmountCalculated": "4424054532809343564"
+    },
+    {
+      "amountSpecified": "49015166",
+      "exactInput": true,
+      "expectedAmountCalculated": "7420369356755385325"
+    },
+    {
+      "amountSpecified": "13482968",
+      "exactInput": true,
+      "expectedAmountCalculated": "2098316734393073015"
+    },
+    {
+      "amountSpecified": "136004493",
+      "exactInput": true,
+      "expectedAmountCalculated": "19540235017369352421"
+    },
+    {
+      "amountSpecified": "113740617",
+      "exactInput": true,
+      "expectedAmountCalculated": "16549822119747629603"
+    },
+    {
+      "amountSpecified": "115210382",
+      "exactInput": true,
+      "expectedAmountCalculated": "16749526527865538633"
+    },
+    {
+      "amountSpecified": "99603330",
+      "exactInput": true,
+      "expectedAmountCalculated": "14612157687871570636"
+    },
+    {
+      "amountSpecified": "11398629",
+      "exactInput": true,
+      "expectedAmountCalculated": "1777056579755869488"
+    },
+    {
+      "amountSpecified": "116938056",
+      "exactInput": true,
+      "expectedAmountCalculated": "16983858788240254029"
+    },
+    {
+      "amountSpecified": "138052174",
+      "exactInput": true,
+      "expectedAmountCalculated": "19811571878850797690"
+    },
+    {
+      "amountSpecified": "57149172",
+      "exactInput": true,
+      "expectedAmountCalculated": "8604830065813554475"
+    },
+    {
+      "amountSpecified": "68520501",
+      "exactInput": true,
+      "expectedAmountCalculated": "10242335863996807579"
+    },
+    {
+      "amountSpecified": "37512990417075288786",
+      "exactInput": false,
+      "expectedAmountCalculated": "284354789"
+    },
+    {
+      "amountSpecified": "36441082452603887949",
+      "exactInput": false,
+      "expectedAmountCalculated": "274430183"
+    },
+    {
+      "amountSpecified": "36767969159469482583",
+      "exactInput": false,
+      "expectedAmountCalculated": "277415226"
+    },
+    {
+      "amountSpecified": "42871787646660902391",
+      "exactInput": false,
+      "expectedAmountCalculated": "341485223"
+    },
+    {
+      "amountSpecified": "19913293467714685206",
+      "exactInput": false,
+      "expectedAmountCalculated": "138821029"
+    },
+    {
+      "amountSpecified": "10974067957543529172",
+      "exactInput": false,
+      "expectedAmountCalculated": "73649863"
+    },
+    {
+      "amountSpecified": "47975080894182675222",
+      "exactInput": false,
+      "expectedAmountCalculated": "414811804"
+    },
+    {
+      "amountSpecified": "1123299993033303492",
+      "exactInput": false,
+      "expectedAmountCalculated": "7179567"
+    },
+    {
+      "amountSpecified": "23210919523226505345",
+      "exactInput": false,
+      "expectedAmountCalculated": "164105682"
+    },
+    {
+      "amountSpecified": "23695562753457003948",
+      "exactInput": false,
+      "expectedAmountCalculated": "167881505"
+    },
+    {
+      "amountSpecified": "45402518949250399068",
+      "exactInput": false,
+      "expectedAmountCalculated": "374877941"
+    },
+    {
+      "amountSpecified": "20897263381594347033",
+      "exactInput": false,
+      "expectedAmountCalculated": "146292248"
+    },
+    {
+      "amountSpecified": "3998635559211020899",
+      "exactInput": false,
+      "expectedAmountCalculated": "25961302"
+    },
+    {
+      "amountSpecified": "30430984246210118967",
+      "exactInput": false,
+      "expectedAmountCalculated": "222144071"
+    },
+    {
+      "amountSpecified": "16204508232856186188",
+      "exactInput": false,
+      "expectedAmountCalculated": "111204853"
+    },
+    {
+      "amountSpecified": "25112393960036326878",
+      "exactInput": false,
+      "expectedAmountCalculated": "179009795"
+    },
+    {
+      "amountSpecified": "41462880743467843836",
+      "exactInput": false,
+      "expectedAmountCalculated": "324908112"
+    },
+    {
+      "amountSpecified": "9066860320802751654",
+      "exactInput": false,
+      "expectedAmountCalculated": "60342726"
+    },
+    {
+      "amountSpecified": "5742352615645752411",
+      "exactInput": false,
+      "expectedAmountCalculated": "37624843"
+    },
+    {
+      "amountSpecified": "54612435082678899393",
+      "exactInput": false,
+      "expectedAmountCalculated": "243755129590"
+    },
+    {
+      "amountSpecified": "5472594054267409021",
+      "exactInput": false,
+      "expectedAmountCalculated": "35808400"
+    },
+    {
+      "amountSpecified": "3181517932737207604",
+      "exactInput": false,
+      "expectedAmountCalculated": "20565109"
+    },
+    {
+      "amountSpecified": "41144849586303729849",
+      "exactInput": false,
+      "expectedAmountCalculated": "321342271"
+    },
+    {
+      "amountSpecified": "22044056938417187694",
+      "exactInput": false,
+      "expectedAmountCalculated": "155078172"
+    },
+    {
+      "amountSpecified": "28463430288766397166",
+      "exactInput": false,
+      "expectedAmountCalculated": "205897479"
+    },
+    {
+      "amountSpecified": "23724897017650254487",
+      "exactInput": false,
+      "expectedAmountCalculated": "168110546"
+    },
+    {
+      "amountSpecified": "50684990409903589179",
+      "exactInput": false,
+      "expectedAmountCalculated": "507368833"
+    },
+    {
+      "amountSpecified": "40073702552781803961",
+      "exactInput": false,
+      "expectedAmountCalculated": "309774074"
+    },
+    {
+      "amountSpecified": "17981588043790413883",
+      "exactInput": false,
+      "expectedAmountCalculated": "124331368"
+    },
+    {
+      "amountSpecified": "7835405243703650184",
+      "exactInput": false,
+      "expectedAmountCalculated": "51856693"
+    },
+    {
+      "amountSpecified": "19380507317367015219",
+      "exactInput": false,
+      "expectedAmountCalculated": "134801257"
+    },
+    {
+      "amountSpecified": "25998378924724512006",
+      "exactInput": false,
+      "expectedAmountCalculated": "186037494"
+    },
+    {
+      "amountSpecified": "13475158381131789836",
+      "exactInput": false,
+      "expectedAmountCalculated": "91410475"
+    },
+    {
+      "amountSpecified": "28888362673943605107",
+      "exactInput": false,
+      "expectedAmountCalculated": "209374103"
+    },
+    {
+      "amountSpecified": "45088599802910807253",
+      "exactInput": false,
+      "expectedAmountCalculated": "370455460"
+    },
+    {
+      "amountSpecified": "2224541306735089430",
+      "exactInput": false,
+      "expectedAmountCalculated": "14303923"
+    },
+    {
+      "amountSpecified": "33466283583222014052",
+      "exactInput": false,
+      "expectedAmountCalculated": "248022477"
+    },
+    {
+      "amountSpecified": "48278474458105927197",
+      "exactInput": false,
+      "expectedAmountCalculated": "420610274"
+    },
+    {
+      "amountSpecified": "42278195707326619161",
+      "exactInput": false,
+      "expectedAmountCalculated": "334340939"
+    },
+    {
+      "amountSpecified": "44166247574122151445",
+      "exactInput": false,
+      "expectedAmountCalculated": "357938432"
+    },
+    {
+      "amountSpecified": "43792251023086364106",
+      "exactInput": false,
+      "expectedAmountCalculated": "353056248"
+    },
+    {
+      "amountSpecified": "2040161893476229884",
+      "exactInput": false,
+      "expectedAmountCalculated": "13105116"
+    },
+    {
+      "amountSpecified": "36599489364105550608",
+      "exactInput": false,
+      "expectedAmountCalculated": "275872237"
+    },
+    {
+      "amountSpecified": "34517632072563953478",
+      "exactInput": false,
+      "expectedAmountCalculated": "257233756"
+    },
+    {
+      "amountSpecified": "8261879815642784378",
+      "exactInput": false,
+      "expectedAmountCalculated": "54786225"
+    },
+    {
+      "amountSpecified": "50767836150454218774",
+      "exactInput": false,
+      "expectedAmountCalculated": "512855070"
+    },
+    {
+      "amountSpecified": "27455198847337806171",
+      "exactInput": false,
+      "expectedAmountCalculated": "197713069"
+    },
+    {
+      "amountSpecified": "45357441058185927561",
+      "exactInput": false,
+      "expectedAmountCalculated": "374237630"
+    },
+    {
+      "amountSpecified": "24241427445133080776",
+      "exactInput": false,
+      "expectedAmountCalculated": "172152991"
+    },
+    {
+      "amountSpecified": "14434172538736965003",
+      "exactInput": false,
+      "expectedAmountCalculated": "98315853"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x6c6Bc977E13Df9b0de53b251522280BB72383700-reversed.json b/src/__tests__/stubs/swap/0x6c6Bc977E13Df9b0de53b251522280BB72383700-reversed.json
new file mode 100644
index 00000000..05d9bfec
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x6c6Bc977E13Df9b0de53b251522280BB72383700-reversed.json
@@ -0,0 +1,846 @@
+{
+  "poolName": "DAI - USDC 500 - reversed",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
+    "decimals": 6
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
+    "decimals": 18
+  },
+  "fee": 500,
+  "liquidity": "61993032140019982640902",
+  "sqrtRatioX96": "79240776910403438688665",
+  "tickCurrent": -276321,
+  "ticks": [
+    {
+      "index": -887270,
+      "liquidityNet": "105015140046140",
+      "liquidityGross": "105015140046140"
+    },
+    {
+      "index": -306280,
+      "liquidityNet": "579590672967233",
+      "liquidityGross": "579590672967233"
+    },
+    {
+      "index": -303410,
+      "liquidityNet": "-579590672967233",
+      "liquidityGross": "579590672967233"
+    },
+    {
+      "index": -299350,
+      "liquidityNet": "68353216291074",
+      "liquidityGross": "68353216291074"
+    },
+    {
+      "index": -279220,
+      "liquidityNet": "221505407847434",
+      "liquidityGross": "221505407847434"
+    },
+    {
+      "index": -278540,
+      "liquidityNet": "3475060787653707",
+      "liquidityGross": "3475060787653707"
+    },
+    {
+      "index": -278150,
+      "liquidityNet": "1142223004754967",
+      "liquidityGross": "1142223004754967"
+    },
+    {
+      "index": -277380,
+      "liquidityNet": "10849495576218950",
+      "liquidityGross": "10849495576218950"
+    },
+    {
+      "index": -277280,
+      "liquidityNet": "693542921054872",
+      "liquidityGross": "693542921054872"
+    },
+    {
+      "index": -277270,
+      "liquidityNet": "10721440871165822",
+      "liquidityGross": "10721440871165822"
+    },
+    {
+      "index": -276840,
+      "liquidityNet": "322022372916",
+      "liquidityGross": "322022372916"
+    },
+    {
+      "index": -276810,
+      "liquidityNet": "589666095829075",
+      "liquidityGross": "589666095829075"
+    },
+    {
+      "index": -276750,
+      "liquidityNet": "723130601426421",
+      "liquidityGross": "723130601426421"
+    },
+    {
+      "index": -276730,
+      "liquidityNet": "5162113950898695",
+      "liquidityGross": "5162113950898695"
+    },
+    {
+      "index": -276560,
+      "liquidityNet": "306241737141479",
+      "liquidityGross": "306241737141479"
+    },
+    {
+      "index": -276530,
+      "liquidityNet": "20296570094471047",
+      "liquidityGross": "20296570094471047"
+    },
+    {
+      "index": -276520,
+      "liquidityNet": "10492826430304607183",
+      "liquidityGross": "10492826430304607183"
+    },
+    {
+      "index": -276430,
+      "liquidityNet": "581637151125549248",
+      "liquidityGross": "581637151125549248"
+    },
+    {
+      "index": -276420,
+      "liquidityNet": "307311825843126491",
+      "liquidityGross": "307311825843126491"
+    },
+    {
+      "index": -276410,
+      "liquidityNet": "739539542583876538",
+      "liquidityGross": "739539542583876538"
+    },
+    {
+      "index": -276400,
+      "liquidityNet": "3196183866842148437",
+      "liquidityGross": "3196183866842148437"
+    },
+    {
+      "index": -276390,
+      "liquidityNet": "79894951808837005",
+      "liquidityGross": "79894951808837005"
+    },
+    {
+      "index": -276380,
+      "liquidityNet": "57046147411080017",
+      "liquidityGross": "57046147411080017"
+    },
+    {
+      "index": -276370,
+      "liquidityNet": "516378500201547664",
+      "liquidityGross": "516378500201547664"
+    },
+    {
+      "index": -276360,
+      "liquidityNet": "745068449942118457",
+      "liquidityGross": "745068449942118457"
+    },
+    {
+      "index": -276350,
+      "liquidityNet": "361667984816827471",
+      "liquidityGross": "361667984816827471"
+    },
+    {
+      "index": -276340,
+      "liquidityNet": "15183701127252881228",
+      "liquidityGross": "15183701127252881228"
+    },
+    {
+      "index": -276330,
+      "liquidityNet": "61960716529360422868564",
+      "liquidityGross": "61960716529360422868564"
+    },
+    {
+      "index": -276320,
+      "liquidityNet": "-47654513451174314441",
+      "liquidityGross": "51871053038818322003"
+    },
+    {
+      "index": -276310,
+      "liquidityNet": "-61835339645638476414954",
+      "liquidityGross": "61835339645638476414954"
+    },
+    {
+      "index": -276300,
+      "liquidityNet": "-88446333214268291453",
+      "liquidityGross": "88446333214268291453"
+    },
+    {
+      "index": -276290,
+      "liquidityNet": "-328094131843203366",
+      "liquidityGross": "328094131843203366"
+    },
+    {
+      "index": -276280,
+      "liquidityNet": "-96408429158644769",
+      "liquidityGross": "96408429158644769"
+    },
+    {
+      "index": -276270,
+      "liquidityNet": "-1166767423836919676",
+      "liquidityGross": "1166767423836919676"
+    },
+    {
+      "index": -276260,
+      "liquidityNet": "-16594677471476148",
+      "liquidityGross": "16594677471476148"
+    },
+    {
+      "index": -276250,
+      "liquidityNet": "-4688135894227087437",
+      "liquidityGross": "4688135894227087437"
+    },
+    {
+      "index": -276240,
+      "liquidityNet": "-15873138554073887",
+      "liquidityGross": "15873138554073887"
+    },
+    {
+      "index": -276230,
+      "liquidityNet": "-3285453407879435089",
+      "liquidityGross": "3285453407879435089"
+    },
+    {
+      "index": -276220,
+      "liquidityNet": "-773312183556285279",
+      "liquidityGross": "773312183556285279"
+    },
+    {
+      "index": -276210,
+      "liquidityNet": "-69544217961971080",
+      "liquidityGross": "69544217961971080"
+    },
+    {
+      "index": -276200,
+      "liquidityNet": "-599768970047018522",
+      "liquidityGross": "599768970047018522"
+    },
+    {
+      "index": -276130,
+      "liquidityNet": "-20123309318099438",
+      "liquidityGross": "20123309318099438"
+    },
+    {
+      "index": -276120,
+      "liquidityNet": "-10492826430304607183",
+      "liquidityGross": "10492826430304607183"
+    },
+    {
+      "index": -276080,
+      "liquidityNet": "-306241737141479",
+      "liquidityGross": "306241737141479"
+    },
+    {
+      "index": -276030,
+      "liquidityNet": "-4505054107141854",
+      "liquidityGross": "4505054107141854"
+    },
+    {
+      "index": -275930,
+      "liquidityNet": "-5162113950898695",
+      "liquidityGross": "5162113950898695"
+    },
+    {
+      "index": -275900,
+      "liquidityNet": "-723130601426421",
+      "liquidityGross": "723130601426421"
+    },
+    {
+      "index": -275840,
+      "liquidityNet": "-322022372916",
+      "liquidityGross": "322022372916"
+    },
+    {
+      "index": -275810,
+      "liquidityNet": "-589666095829075",
+      "liquidityGross": "589666095829075"
+    },
+    {
+      "index": -275660,
+      "liquidityNet": "-221505407847434",
+      "liquidityGross": "221505407847434"
+    },
+    {
+      "index": -275370,
+      "liquidityNet": "-21744197223756381",
+      "liquidityGross": "21744197223756381"
+    },
+    {
+      "index": -275270,
+      "liquidityNet": "-693542921054872",
+      "liquidityGross": "693542921054872"
+    },
+    {
+      "index": -274090,
+      "liquidityNet": "-1142223004754967",
+      "liquidityGross": "1142223004754967"
+    },
+    {
+      "index": -269390,
+      "liquidityNet": "-77428904874239",
+      "liquidityGross": "77428904874239"
+    },
+    {
+      "index": -269310,
+      "liquidityNet": "-3475060787653707",
+      "liquidityGross": "3475060787653707"
+    },
+    {
+      "index": -246360,
+      "liquidityNet": "1059987331357746",
+      "liquidityGross": "1059987331357746"
+    },
+    {
+      "index": -244130,
+      "liquidityNet": "-1059987331357746",
+      "liquidityGross": "1059987331357746"
+    },
+    {
+      "index": -197400,
+      "liquidityNet": "864769579966161",
+      "liquidityGross": "864769579966161"
+    },
+    {
+      "index": -197300,
+      "liquidityNet": "210302746405159257",
+      "liquidityGross": "210302746405159257"
+    },
+    {
+      "index": -197280,
+      "liquidityNet": "-864769579966161",
+      "liquidityGross": "864769579966161"
+    },
+    {
+      "index": -197250,
+      "liquidityNet": "-210302746405159257",
+      "liquidityGross": "210302746405159257"
+    },
+    {
+      "index": -510,
+      "liquidityNet": "455815375815696105474",
+      "liquidityGross": "455815375815696105474"
+    },
+    {
+      "index": 10,
+      "liquidityNet": "-91372846132699078323",
+      "liquidityGross": "820257905498693132625"
+    },
+    {
+      "index": 680,
+      "liquidityNet": "-364442529682997027151",
+      "liquidityGross": "364442529682997027151"
+    },
+    {
+      "index": 887270,
+      "liquidityNet": "-105015140046140",
+      "liquidityGross": "105015140046140"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "5889142287570",
+      "exactInput": true,
+      "expectedAmountCalculated": "5883765105770905814218592"
+    },
+    {
+      "amountSpecified": "4154578770709",
+      "exactInput": true,
+      "expectedAmountCalculated": "4150901480639179228736062"
+    },
+    {
+      "amountSpecified": "13431160232672",
+      "exactInput": true,
+      "expectedAmountCalculated": "13417264434406503976200032"
+    },
+    {
+      "amountSpecified": "5788993730653",
+      "exactInput": true,
+      "expectedAmountCalculated": "5783717333386615452447543"
+    },
+    {
+      "amountSpecified": "3527809515296",
+      "exactInput": true,
+      "expectedAmountCalculated": "3524722614448144060942940"
+    },
+    {
+      "amountSpecified": "3594796849468",
+      "exactInput": true,
+      "expectedAmountCalculated": "3591647453822307675811215"
+    },
+    {
+      "amountSpecified": "9200040187687",
+      "exactInput": true,
+      "expectedAmountCalculated": "9191149097366368633883598"
+    },
+    {
+      "amountSpecified": "11084692595899",
+      "exactInput": true,
+      "expectedAmountCalculated": "11073643522472734320124198"
+    },
+    {
+      "amountSpecified": "325331497488",
+      "exactInput": true,
+      "expectedAmountCalculated": "325063607492167208241889"
+    },
+    {
+      "amountSpecified": "28371344122165",
+      "exactInput": true,
+      "expectedAmountCalculated": "28335163411244992800791338"
+    },
+    {
+      "amountSpecified": "5710689295512",
+      "exactInput": true,
+      "expectedAmountCalculated": "5705491474754224943152934"
+    },
+    {
+      "amountSpecified": "24845709240716",
+      "exactInput": true,
+      "expectedAmountCalculated": "24815435403759025159832942"
+    },
+    {
+      "amountSpecified": "25663986559189",
+      "exactInput": true,
+      "expectedAmountCalculated": "25632377439598697724543091"
+    },
+    {
+      "amountSpecified": "7708668731834",
+      "exactInput": true,
+      "expectedAmountCalculated": "7701404183123894661240151"
+    },
+    {
+      "amountSpecified": "26656739092672",
+      "exactInput": true,
+      "expectedAmountCalculated": "26623481032897058406132085"
+    },
+    {
+      "amountSpecified": "7797072054889",
+      "exactInput": true,
+      "expectedAmountCalculated": "7789713088885749635957956"
+    },
+    {
+      "amountSpecified": "23443202330631",
+      "exactInput": true,
+      "expectedAmountCalculated": "23415166988060734943095513"
+    },
+    {
+      "amountSpecified": "6777233392827",
+      "exactInput": true,
+      "expectedAmountCalculated": "6770948337318008315465458"
+    },
+    {
+      "amountSpecified": "15561331464807",
+      "exactInput": true,
+      "expectedAmountCalculated": "15544697736075621414337493"
+    },
+    {
+      "amountSpecified": "2898402710356",
+      "exactInput": true,
+      "expectedAmountCalculated": "2895895940614713825338341"
+    },
+    {
+      "amountSpecified": "23311211380084",
+      "exactInput": true,
+      "expectedAmountCalculated": "23283383442800982613312489"
+    },
+    {
+      "amountSpecified": "3566762039138",
+      "exactInput": true,
+      "expectedAmountCalculated": "3563638815734873101487153"
+    },
+    {
+      "amountSpecified": "19239649464881",
+      "exactInput": true,
+      "expectedAmountCalculated": "19217943826031440346835335"
+    },
+    {
+      "amountSpecified": "9825571693388",
+      "exactInput": true,
+      "expectedAmountCalculated": "9815977040679852709621715"
+    },
+    {
+      "amountSpecified": "5074760951301",
+      "exactInput": true,
+      "expectedAmountCalculated": "5070193948967684491197381"
+    },
+    {
+      "amountSpecified": "12659091406885",
+      "exactInput": true,
+      "expectedAmountCalculated": "12646151861445624759657451"
+    },
+    {
+      "amountSpecified": "24555357267167",
+      "exactInput": true,
+      "expectedAmountCalculated": "24525552050397732197857985"
+    },
+    {
+      "amountSpecified": "17152046045060",
+      "exactInput": true,
+      "expectedAmountCalculated": "17133272417216044335809370"
+    },
+    {
+      "amountSpecified": "27713471983694",
+      "exactInput": true,
+      "expectedAmountCalculated": "27678423848033792363531529"
+    },
+    {
+      "amountSpecified": "1489924925847",
+      "exactInput": true,
+      "expectedAmountCalculated": "1488670119127397217584196"
+    },
+    {
+      "amountSpecified": "14700909815301",
+      "exactInput": true,
+      "expectedAmountCalculated": "14685399593528686443162719"
+    },
+    {
+      "amountSpecified": "15221986221271",
+      "exactInput": true,
+      "expectedAmountCalculated": "15205798445305213751461757"
+    },
+    {
+      "amountSpecified": "19256849916171",
+      "exactInput": true,
+      "expectedAmountCalculated": "19235119536461010504808954"
+    },
+    {
+      "amountSpecified": "7913785568271",
+      "exactInput": true,
+      "expectedAmountCalculated": "7906301563124045072300347"
+    },
+    {
+      "amountSpecified": "19994298632949",
+      "exactInput": true,
+      "expectedAmountCalculated": "19971498556302413823279858"
+    },
+    {
+      "amountSpecified": "1979266733847",
+      "exactInput": true,
+      "expectedAmountCalculated": "1977584206710173846045030"
+    },
+    {
+      "amountSpecified": "18356981707002",
+      "exactInput": true,
+      "expectedAmountCalculated": "18336532891979242688423504"
+    },
+    {
+      "amountSpecified": "20885182576386",
+      "exactInput": true,
+      "expectedAmountCalculated": "20861066878221496878415204"
+    },
+    {
+      "amountSpecified": "22096675750772",
+      "exactInput": true,
+      "expectedAmountCalculated": "22070729953574080288255893"
+    },
+    {
+      "amountSpecified": "24058629196080",
+      "exactInput": true,
+      "expectedAmountCalculated": "24029619390247334082075922"
+    },
+    {
+      "amountSpecified": "14709436013914",
+      "exactInput": true,
+      "expectedAmountCalculated": "14693914775942622259657028"
+    },
+    {
+      "amountSpecified": "8406592997448",
+      "exactInput": true,
+      "expectedAmountCalculated": "8398576190986282893279762"
+    },
+    {
+      "amountSpecified": "20439070494173",
+      "exactInput": true,
+      "expectedAmountCalculated": "20415616791581511881180152"
+    },
+    {
+      "amountSpecified": "14919953328006",
+      "exactInput": true,
+      "expectedAmountCalculated": "14904159350229834823939941"
+    },
+    {
+      "amountSpecified": "1468362613873",
+      "exactInput": true,
+      "expectedAmountCalculated": "1467126476760881718114511"
+    },
+    {
+      "amountSpecified": "11175477846548",
+      "exactInput": true,
+      "expectedAmountCalculated": "11164321931908647487011237"
+    },
+    {
+      "amountSpecified": "10090071220568",
+      "exactInput": true,
+      "expectedAmountCalculated": "10080175280847190102510973"
+    },
+    {
+      "amountSpecified": "8624805129708",
+      "exactInput": true,
+      "expectedAmountCalculated": "8616549902093933689326511"
+    },
+    {
+      "amountSpecified": "4817015760556",
+      "exactInput": true,
+      "expectedAmountCalculated": "4812700720323220533122425"
+    },
+    {
+      "amountSpecified": "20287669766405",
+      "exactInput": true,
+      "expectedAmountCalculated": "20264439273921518114596203"
+    },
+    {
+      "amountSpecified": "7704493765326332722879560",
+      "exactInput": false,
+      "expectedAmountCalculated": "7711761613071"
+    },
+    {
+      "amountSpecified": "9149177194621930176172826",
+      "exactInput": false,
+      "expectedAmountCalculated": "9158021476615"
+    },
+    {
+      "amountSpecified": "25563201559604303624300206",
+      "exactInput": false,
+      "expectedAmountCalculated": "25594696775099"
+    },
+    {
+      "amountSpecified": "29256319979226831618050144",
+      "exactInput": false,
+      "expectedAmountCalculated": "29294112783123"
+    },
+    {
+      "amountSpecified": "1236354479618806742336940",
+      "exactInput": false,
+      "expectedAmountCalculated": "1237391571169"
+    },
+    {
+      "amountSpecified": "22985278628118831119976504",
+      "exactInput": false,
+      "expectedAmountCalculated": "23012639471361"
+    },
+    {
+      "amountSpecified": "5840106283778145416120280",
+      "exactInput": false,
+      "expectedAmountCalculated": "5845439445456"
+    },
+    {
+      "amountSpecified": "32699150214943638905221262",
+      "exactInput": false,
+      "expectedAmountCalculated": "32743211364860"
+    },
+    {
+      "amountSpecified": "13965138277897605462560910",
+      "exactInput": false,
+      "expectedAmountCalculated": "13979725176456"
+    },
+    {
+      "amountSpecified": "31035584525744623554516384",
+      "exactInput": false,
+      "expectedAmountCalculated": "31076568927436"
+    },
+    {
+      "amountSpecified": "11098613283932813593147170",
+      "exactInput": false,
+      "expectedAmountCalculated": "11109691751283"
+    },
+    {
+      "amountSpecified": "13949687628773477406162350",
+      "exactInput": false,
+      "expectedAmountCalculated": "13964254904520"
+    },
+    {
+      "amountSpecified": "5261987056488479718082110",
+      "exactInput": false,
+      "expectedAmountCalculated": "5266743124849"
+    },
+    {
+      "amountSpecified": "31895390095806287376894438",
+      "exactInput": false,
+      "expectedAmountCalculated": "31937953514951"
+    },
+    {
+      "amountSpecified": "5617868287301362113321240",
+      "exactInput": false,
+      "expectedAmountCalculated": "5622978326989"
+    },
+    {
+      "amountSpecified": "7152048015343194683822040",
+      "exactInput": false,
+      "expectedAmountCalculated": "7158730871209"
+    },
+    {
+      "amountSpecified": "5671493593914821603475844",
+      "exactInput": false,
+      "expectedAmountCalculated": "5676657326065"
+    },
+    {
+      "amountSpecified": "16452708012459789189968565",
+      "exactInput": false,
+      "expectedAmountCalculated": "16470554888355"
+    },
+    {
+      "amountSpecified": "5412929620028833513345485",
+      "exactInput": false,
+      "expectedAmountCalculated": "5417835320896"
+    },
+    {
+      "amountSpecified": "30587015304980072371840418",
+      "exactInput": false,
+      "expectedAmountCalculated": "30627185415394"
+    },
+    {
+      "amountSpecified": "16601188789665186718604814",
+      "exactInput": false,
+      "expectedAmountCalculated": "16619236580146"
+    },
+    {
+      "amountSpecified": "31092219957796556350846626",
+      "exactInput": false,
+      "expectedAmountCalculated": "31133307633282"
+    },
+    {
+      "amountSpecified": "25296021515789317524884666",
+      "exactInput": false,
+      "expectedAmountCalculated": "25327078250105"
+    },
+    {
+      "amountSpecified": "15418066716163021274750646",
+      "exactInput": false,
+      "expectedAmountCalculated": "15434533378259"
+    },
+    {
+      "amountSpecified": "806764854021704714773860",
+      "exactInput": false,
+      "expectedAmountCalculated": "807435996549"
+    },
+    {
+      "amountSpecified": "25531437162805089263263204",
+      "exactInput": false,
+      "expectedAmountCalculated": "25562880127338"
+    },
+    {
+      "amountSpecified": "18403860965430601339517410",
+      "exactInput": false,
+      "expectedAmountCalculated": "18424404898592"
+    },
+    {
+      "amountSpecified": "27393962271635587464955716",
+      "exactInput": false,
+      "expectedAmountCalculated": "27428524173413"
+    },
+    {
+      "amountSpecified": "18561458223114965344798404",
+      "exactInput": false,
+      "expectedAmountCalculated": "18582225376054"
+    },
+    {
+      "amountSpecified": "28869741743293261742636614",
+      "exactInput": false,
+      "expectedAmountCalculated": "28906854662292"
+    },
+    {
+      "amountSpecified": "28035870922585687560013706",
+      "exactInput": false,
+      "expectedAmountCalculated": "28071533759840"
+    },
+    {
+      "amountSpecified": "30638751144638307200175646",
+      "exactInput": false,
+      "expectedAmountCalculated": "30679014839286"
+    },
+    {
+      "amountSpecified": "17529887855401511670020908",
+      "exactInput": false,
+      "expectedAmountCalculated": "17549208479724"
+    },
+    {
+      "amountSpecified": "8225104678482243354421380",
+      "exactInput": false,
+      "expectedAmountCalculated": "8232932838325"
+    },
+    {
+      "amountSpecified": "32549186185583244843165344",
+      "exactInput": false,
+      "expectedAmountCalculated": "32592966304935"
+    },
+    {
+      "amountSpecified": "6509447381375016292234230",
+      "exactInput": false,
+      "expectedAmountCalculated": "6515462192619"
+    },
+    {
+      "amountSpecified": "30041832765704742165960478",
+      "exactInput": false,
+      "expectedAmountCalculated": "30081021969469"
+    },
+    {
+      "amountSpecified": "7205551657414902911425785",
+      "exactInput": false,
+      "expectedAmountCalculated": "7212290737450"
+    },
+    {
+      "amountSpecified": "13843834688171282145486075",
+      "exactInput": false,
+      "expectedAmountCalculated": "13858267734976"
+    },
+    {
+      "amountSpecified": "5389005437162457774017848",
+      "exactInput": false,
+      "expectedAmountCalculated": "5393887372372"
+    },
+    {
+      "amountSpecified": "4717467710121303850432830",
+      "exactInput": false,
+      "expectedAmountCalculated": "4721690105944"
+    },
+    {
+      "amountSpecified": "31112491873115551396454398",
+      "exactInput": false,
+      "expectedAmountCalculated": "31153616539341"
+    },
+    {
+      "amountSpecified": "26262518925823436093585462",
+      "exactInput": false,
+      "expectedAmountCalculated": "26295172757805"
+    },
+    {
+      "amountSpecified": "16773915675624788103556365",
+      "exactInput": false,
+      "expectedAmountCalculated": "16792198086201"
+    },
+    {
+      "amountSpecified": "11424998094535861802150220",
+      "exactInput": false,
+      "expectedAmountCalculated": "11436462629883"
+    },
+    {
+      "amountSpecified": "32685978052162684948195666",
+      "exactInput": false,
+      "expectedAmountCalculated": "32730014488462"
+    },
+    {
+      "amountSpecified": "30296515518505656211769276",
+      "exactInput": false,
+      "expectedAmountCalculated": "30336161756835"
+    },
+    {
+      "amountSpecified": "30041932631037672399647762",
+      "exactInput": false,
+      "expectedAmountCalculated": "30081122013602"
+    },
+    {
+      "amountSpecified": "16343675235082942946961285",
+      "exactInput": false,
+      "expectedAmountCalculated": "16361375028942"
+    },
+    {
+      "amountSpecified": "30224117218198431416871996",
+      "exactInput": false,
+      "expectedAmountCalculated": "30263633322404"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x6c6Bc977E13Df9b0de53b251522280BB72383700.json b/src/__tests__/stubs/swap/0x6c6Bc977E13Df9b0de53b251522280BB72383700.json
new file mode 100644
index 00000000..5d039077
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x6c6Bc977E13Df9b0de53b251522280BB72383700.json
@@ -0,0 +1,846 @@
+{
+  "poolName": "DAI - USDC 500",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
+    "decimals": 6
+  },
+  "fee": 500,
+  "liquidity": "61993032140019982640902",
+  "sqrtRatioX96": "79240776910403438688665",
+  "tickCurrent": -276321,
+  "ticks": [
+    {
+      "index": -887270,
+      "liquidityNet": "105015140046140",
+      "liquidityGross": "105015140046140"
+    },
+    {
+      "index": -306280,
+      "liquidityNet": "579590672967233",
+      "liquidityGross": "579590672967233"
+    },
+    {
+      "index": -303410,
+      "liquidityNet": "-579590672967233",
+      "liquidityGross": "579590672967233"
+    },
+    {
+      "index": -299350,
+      "liquidityNet": "68353216291074",
+      "liquidityGross": "68353216291074"
+    },
+    {
+      "index": -279220,
+      "liquidityNet": "221505407847434",
+      "liquidityGross": "221505407847434"
+    },
+    {
+      "index": -278540,
+      "liquidityNet": "3475060787653707",
+      "liquidityGross": "3475060787653707"
+    },
+    {
+      "index": -278150,
+      "liquidityNet": "1142223004754967",
+      "liquidityGross": "1142223004754967"
+    },
+    {
+      "index": -277380,
+      "liquidityNet": "10849495576218950",
+      "liquidityGross": "10849495576218950"
+    },
+    {
+      "index": -277280,
+      "liquidityNet": "693542921054872",
+      "liquidityGross": "693542921054872"
+    },
+    {
+      "index": -277270,
+      "liquidityNet": "10721440871165822",
+      "liquidityGross": "10721440871165822"
+    },
+    {
+      "index": -276840,
+      "liquidityNet": "322022372916",
+      "liquidityGross": "322022372916"
+    },
+    {
+      "index": -276810,
+      "liquidityNet": "589666095829075",
+      "liquidityGross": "589666095829075"
+    },
+    {
+      "index": -276750,
+      "liquidityNet": "723130601426421",
+      "liquidityGross": "723130601426421"
+    },
+    {
+      "index": -276730,
+      "liquidityNet": "5162113950898695",
+      "liquidityGross": "5162113950898695"
+    },
+    {
+      "index": -276560,
+      "liquidityNet": "306241737141479",
+      "liquidityGross": "306241737141479"
+    },
+    {
+      "index": -276530,
+      "liquidityNet": "20296570094471047",
+      "liquidityGross": "20296570094471047"
+    },
+    {
+      "index": -276520,
+      "liquidityNet": "10492826430304607183",
+      "liquidityGross": "10492826430304607183"
+    },
+    {
+      "index": -276430,
+      "liquidityNet": "581637151125549248",
+      "liquidityGross": "581637151125549248"
+    },
+    {
+      "index": -276420,
+      "liquidityNet": "307311825843126491",
+      "liquidityGross": "307311825843126491"
+    },
+    {
+      "index": -276410,
+      "liquidityNet": "739539542583876538",
+      "liquidityGross": "739539542583876538"
+    },
+    {
+      "index": -276400,
+      "liquidityNet": "3196183866842148437",
+      "liquidityGross": "3196183866842148437"
+    },
+    {
+      "index": -276390,
+      "liquidityNet": "79894951808837005",
+      "liquidityGross": "79894951808837005"
+    },
+    {
+      "index": -276380,
+      "liquidityNet": "57046147411080017",
+      "liquidityGross": "57046147411080017"
+    },
+    {
+      "index": -276370,
+      "liquidityNet": "516378500201547664",
+      "liquidityGross": "516378500201547664"
+    },
+    {
+      "index": -276360,
+      "liquidityNet": "745068449942118457",
+      "liquidityGross": "745068449942118457"
+    },
+    {
+      "index": -276350,
+      "liquidityNet": "361667984816827471",
+      "liquidityGross": "361667984816827471"
+    },
+    {
+      "index": -276340,
+      "liquidityNet": "15183701127252881228",
+      "liquidityGross": "15183701127252881228"
+    },
+    {
+      "index": -276330,
+      "liquidityNet": "61960716529360422868564",
+      "liquidityGross": "61960716529360422868564"
+    },
+    {
+      "index": -276320,
+      "liquidityNet": "-47654513451174314441",
+      "liquidityGross": "51871053038818322003"
+    },
+    {
+      "index": -276310,
+      "liquidityNet": "-61835339645638476414954",
+      "liquidityGross": "61835339645638476414954"
+    },
+    {
+      "index": -276300,
+      "liquidityNet": "-88446333214268291453",
+      "liquidityGross": "88446333214268291453"
+    },
+    {
+      "index": -276290,
+      "liquidityNet": "-328094131843203366",
+      "liquidityGross": "328094131843203366"
+    },
+    {
+      "index": -276280,
+      "liquidityNet": "-96408429158644769",
+      "liquidityGross": "96408429158644769"
+    },
+    {
+      "index": -276270,
+      "liquidityNet": "-1166767423836919676",
+      "liquidityGross": "1166767423836919676"
+    },
+    {
+      "index": -276260,
+      "liquidityNet": "-16594677471476148",
+      "liquidityGross": "16594677471476148"
+    },
+    {
+      "index": -276250,
+      "liquidityNet": "-4688135894227087437",
+      "liquidityGross": "4688135894227087437"
+    },
+    {
+      "index": -276240,
+      "liquidityNet": "-15873138554073887",
+      "liquidityGross": "15873138554073887"
+    },
+    {
+      "index": -276230,
+      "liquidityNet": "-3285453407879435089",
+      "liquidityGross": "3285453407879435089"
+    },
+    {
+      "index": -276220,
+      "liquidityNet": "-773312183556285279",
+      "liquidityGross": "773312183556285279"
+    },
+    {
+      "index": -276210,
+      "liquidityNet": "-69544217961971080",
+      "liquidityGross": "69544217961971080"
+    },
+    {
+      "index": -276200,
+      "liquidityNet": "-599768970047018522",
+      "liquidityGross": "599768970047018522"
+    },
+    {
+      "index": -276130,
+      "liquidityNet": "-20123309318099438",
+      "liquidityGross": "20123309318099438"
+    },
+    {
+      "index": -276120,
+      "liquidityNet": "-10492826430304607183",
+      "liquidityGross": "10492826430304607183"
+    },
+    {
+      "index": -276080,
+      "liquidityNet": "-306241737141479",
+      "liquidityGross": "306241737141479"
+    },
+    {
+      "index": -276030,
+      "liquidityNet": "-4505054107141854",
+      "liquidityGross": "4505054107141854"
+    },
+    {
+      "index": -275930,
+      "liquidityNet": "-5162113950898695",
+      "liquidityGross": "5162113950898695"
+    },
+    {
+      "index": -275900,
+      "liquidityNet": "-723130601426421",
+      "liquidityGross": "723130601426421"
+    },
+    {
+      "index": -275840,
+      "liquidityNet": "-322022372916",
+      "liquidityGross": "322022372916"
+    },
+    {
+      "index": -275810,
+      "liquidityNet": "-589666095829075",
+      "liquidityGross": "589666095829075"
+    },
+    {
+      "index": -275660,
+      "liquidityNet": "-221505407847434",
+      "liquidityGross": "221505407847434"
+    },
+    {
+      "index": -275370,
+      "liquidityNet": "-21744197223756381",
+      "liquidityGross": "21744197223756381"
+    },
+    {
+      "index": -275270,
+      "liquidityNet": "-693542921054872",
+      "liquidityGross": "693542921054872"
+    },
+    {
+      "index": -274090,
+      "liquidityNet": "-1142223004754967",
+      "liquidityGross": "1142223004754967"
+    },
+    {
+      "index": -269390,
+      "liquidityNet": "-77428904874239",
+      "liquidityGross": "77428904874239"
+    },
+    {
+      "index": -269310,
+      "liquidityNet": "-3475060787653707",
+      "liquidityGross": "3475060787653707"
+    },
+    {
+      "index": -246360,
+      "liquidityNet": "1059987331357746",
+      "liquidityGross": "1059987331357746"
+    },
+    {
+      "index": -244130,
+      "liquidityNet": "-1059987331357746",
+      "liquidityGross": "1059987331357746"
+    },
+    {
+      "index": -197400,
+      "liquidityNet": "864769579966161",
+      "liquidityGross": "864769579966161"
+    },
+    {
+      "index": -197300,
+      "liquidityNet": "210302746405159257",
+      "liquidityGross": "210302746405159257"
+    },
+    {
+      "index": -197280,
+      "liquidityNet": "-864769579966161",
+      "liquidityGross": "864769579966161"
+    },
+    {
+      "index": -197250,
+      "liquidityNet": "-210302746405159257",
+      "liquidityGross": "210302746405159257"
+    },
+    {
+      "index": -510,
+      "liquidityNet": "455815375815696105474",
+      "liquidityGross": "455815375815696105474"
+    },
+    {
+      "index": 10,
+      "liquidityNet": "-91372846132699078323",
+      "liquidityGross": "820257905498693132625"
+    },
+    {
+      "index": 680,
+      "liquidityNet": "-364442529682997027151",
+      "liquidityGross": "364442529682997027151"
+    },
+    {
+      "index": 887270,
+      "liquidityNet": "-105015140046140",
+      "liquidityGross": "105015140046140"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "15449872029842540965312965",
+      "exactInput": true,
+      "expectedAmountCalculated": "15443217322130"
+    },
+    {
+      "amountSpecified": "29308837235712142905676022",
+      "exactInput": true,
+      "expectedAmountCalculated": "28512679019347"
+    },
+    {
+      "amountSpecified": "22944468592260493976973730",
+      "exactInput": true,
+      "expectedAmountCalculated": "22931815056935"
+    },
+    {
+      "amountSpecified": "22696395828164568978425048",
+      "exactInput": true,
+      "expectedAmountCalculated": "22683969809503"
+    },
+    {
+      "amountSpecified": "15359493193109339631517035",
+      "exactInput": true,
+      "expectedAmountCalculated": "15352899783773"
+    },
+    {
+      "amountSpecified": "23709410944437280645669892",
+      "exactInput": true,
+      "expectedAmountCalculated": "23696043373051"
+    },
+    {
+      "amountSpecified": "32622739231679262652303356",
+      "exactInput": true,
+      "expectedAmountCalculated": "28512679030853"
+    },
+    {
+      "amountSpecified": "28091255583034294062271288",
+      "exactInput": true,
+      "expectedAmountCalculated": "28073434613569"
+    },
+    {
+      "amountSpecified": "24694372544020223384566666",
+      "exactInput": true,
+      "expectedAmountCalculated": "24680057802967"
+    },
+    {
+      "amountSpecified": "18905122339617248453410042",
+      "exactInput": true,
+      "expectedAmountCalculated": "18895926791257"
+    },
+    {
+      "amountSpecified": "5471212703406049012833585",
+      "exactInput": true,
+      "expectedAmountCalculated": "5469736005907"
+    },
+    {
+      "amountSpecified": "29250738103838036202673074",
+      "exactInput": true,
+      "expectedAmountCalculated": "28512679018198"
+    },
+    {
+      "amountSpecified": "28087524189685472117829314",
+      "exactInput": true,
+      "expectedAmountCalculated": "28069707275590"
+    },
+    {
+      "amountSpecified": "20256882383685145218062406",
+      "exactInput": true,
+      "expectedAmountCalculated": "20246588139796"
+    },
+    {
+      "amountSpecified": "8754378005240387937064362",
+      "exactInput": true,
+      "expectedAmountCalculated": "8751551885760"
+    },
+    {
+      "amountSpecified": "29551219091388987325593988",
+      "exactInput": true,
+      "expectedAmountCalculated": "28512679022727"
+    },
+    {
+      "amountSpecified": "10980398032333236444605070",
+      "exactInput": true,
+      "expectedAmountCalculated": "10976459352962"
+    },
+    {
+      "amountSpecified": "18087983649254020203772044",
+      "exactInput": true,
+      "expectedAmountCalculated": "18079423714880"
+    },
+    {
+      "amountSpecified": "29022568197572516374971592",
+      "exactInput": true,
+      "expectedAmountCalculated": "28512679011051"
+    },
+    {
+      "amountSpecified": "28746814665956426091442312",
+      "exactInput": true,
+      "expectedAmountCalculated": "28512678982116"
+    },
+    {
+      "amountSpecified": "17504226388651359628207066",
+      "exactInput": true,
+      "expectedAmountCalculated": "17496107358698"
+    },
+    {
+      "amountSpecified": "16988344081508329349127048",
+      "exactInput": true,
+      "expectedAmountCalculated": "16980605552641"
+    },
+    {
+      "amountSpecified": "32001005874209071560052530",
+      "exactInput": true,
+      "expectedAmountCalculated": "28512679030370"
+    },
+    {
+      "amountSpecified": "33474349589731147657622868",
+      "exactInput": true,
+      "expectedAmountCalculated": "28512679031318"
+    },
+    {
+      "amountSpecified": "183100494499168487372011",
+      "exactInput": true,
+      "expectedAmountCalculated": "183066684303"
+    },
+    {
+      "amountSpecified": "741187858839196943007527",
+      "exactInput": true,
+      "expectedAmountCalculated": "741044326810"
+    },
+    {
+      "amountSpecified": "12691072330043932910736170",
+      "exactInput": true,
+      "expectedAmountCalculated": "12686170141359"
+    },
+    {
+      "amountSpecified": "26157180836687838068898416",
+      "exactInput": true,
+      "expectedAmountCalculated": "26141401754882"
+    },
+    {
+      "amountSpecified": "7829980806541958150151806",
+      "exactInput": true,
+      "expectedAmountCalculated": "7827569767307"
+    },
+    {
+      "amountSpecified": "24819601323218705862174004",
+      "exactInput": true,
+      "expectedAmountCalculated": "24805163919463"
+    },
+    {
+      "amountSpecified": "9175750915615046022664768",
+      "exactInput": true,
+      "expectedAmountCalculated": "9172726449132"
+    },
+    {
+      "amountSpecified": "26350514829410113004171132",
+      "exactInput": true,
+      "expectedAmountCalculated": "26334537055279"
+    },
+    {
+      "amountSpecified": "27796843261254411585835932",
+      "exactInput": true,
+      "expectedAmountCalculated": "27779340888405"
+    },
+    {
+      "amountSpecified": "9486434964256779141026865",
+      "exactInput": true,
+      "expectedAmountCalculated": "9483260588560"
+    },
+    {
+      "amountSpecified": "29389026170907561956717530",
+      "exactInput": true,
+      "expectedAmountCalculated": "28512679020677"
+    },
+    {
+      "amountSpecified": "31288611433514553928540484",
+      "exactInput": true,
+      "expectedAmountCalculated": "28512679029549"
+    },
+    {
+      "amountSpecified": "12197785260270675678441062",
+      "exactInput": true,
+      "expectedAmountCalculated": "12193170583716"
+    },
+    {
+      "amountSpecified": "16164685947134870954773635",
+      "exactInput": true,
+      "expectedAmountCalculated": "16157537152910"
+    },
+    {
+      "amountSpecified": "5661407145948491087972040",
+      "exactInput": true,
+      "expectedAmountCalculated": "5659861757383"
+    },
+    {
+      "amountSpecified": "27177100115571123057717312",
+      "exactInput": true,
+      "expectedAmountCalculated": "27160259272439"
+    },
+    {
+      "amountSpecified": "25108709552761608938490612",
+      "exactInput": true,
+      "expectedAmountCalculated": "25093987035970"
+    },
+    {
+      "amountSpecified": "23060003637531426610606518",
+      "exactInput": true,
+      "expectedAmountCalculated": "23047243464219"
+    },
+    {
+      "amountSpecified": "13086571293392672727035415",
+      "exactInput": true,
+      "expectedAmountCalculated": "13081432924542"
+    },
+    {
+      "amountSpecified": "12557821465146955798304592",
+      "exactInput": true,
+      "expectedAmountCalculated": "12552997714672"
+    },
+    {
+      "amountSpecified": "15482379310522602495731168",
+      "exactInput": true,
+      "expectedAmountCalculated": "15475702490776"
+    },
+    {
+      "amountSpecified": "26641893454860981759357714",
+      "exactInput": true,
+      "expectedAmountCalculated": "26625613952280"
+    },
+    {
+      "amountSpecified": "18909983441419144838232744",
+      "exactInput": true,
+      "expectedAmountCalculated": "18900784047471"
+    },
+    {
+      "amountSpecified": "4356544135015056374589045",
+      "exactInput": true,
+      "expectedAmountCalculated": "4355446569772"
+    },
+    {
+      "amountSpecified": "256145749076339356351874",
+      "exactInput": true,
+      "expectedAmountCalculated": "256098149147"
+    },
+    {
+      "amountSpecified": "17355421756056946573628804",
+      "exactInput": true,
+      "expectedAmountCalculated": "17347413360365"
+    },
+    {
+      "amountSpecified": "14160146639616",
+      "exactInput": false,
+      "expectedAmountCalculated": "14165955234106678917405562"
+    },
+    {
+      "amountSpecified": "12837360919355",
+      "exactInput": false,
+      "expectedAmountCalculated": "12842352852968816492668184"
+    },
+    {
+      "amountSpecified": "497286296030",
+      "exactInput": false,
+      "expectedAmountCalculated": "497380659420105081050022"
+    },
+    {
+      "amountSpecified": "19141082354654",
+      "exactInput": false,
+      "expectedAmountCalculated": "19150472948810107113564586"
+    },
+    {
+      "amountSpecified": "27784395994388",
+      "exactInput": false,
+      "expectedAmountCalculated": "27801903819915366050582339"
+    },
+    {
+      "amountSpecified": "23754733937658",
+      "exactInput": false,
+      "expectedAmountCalculated": "23768157124968966099112632"
+    },
+    {
+      "amountSpecified": "22700538406597",
+      "exactInput": false,
+      "expectedAmountCalculated": "22712979572995985613922036"
+    },
+    {
+      "amountSpecified": "25661292682987",
+      "exactInput": false,
+      "expectedAmountCalculated": "25676583062362998352168093"
+    },
+    {
+      "amountSpecified": "3963861807739",
+      "exactInput": false,
+      "expectedAmountCalculated": "3964835652251061250219216"
+    },
+    {
+      "amountSpecified": "25745956662202",
+      "exactInput": false,
+      "expectedAmountCalculated": "25761332680189382900437394"
+    },
+    {
+      "amountSpecified": "20264171972540",
+      "exactInput": false,
+      "expectedAmountCalculated": "20274480908471252161525479"
+    },
+    {
+      "amountSpecified": "4388841738519",
+      "exactInput": false,
+      "expectedAmountCalculated": "4389950083909918219982374"
+    },
+    {
+      "amountSpecified": "21150681727044",
+      "exactInput": false,
+      "expectedAmountCalculated": "21161744321517299837458606"
+    },
+    {
+      "amountSpecified": "25598663774777",
+      "exactInput": false,
+      "expectedAmountCalculated": "25613890953267286147726621"
+    },
+    {
+      "amountSpecified": "4203876963040",
+      "exactInput": false,
+      "expectedAmountCalculated": "4204926053093272885883442"
+    },
+    {
+      "amountSpecified": "25193732920996",
+      "exactInput": false,
+      "expectedAmountCalculated": "25208554528359235163552924"
+    },
+    {
+      "amountSpecified": "16932366588977",
+      "exactInput": false,
+      "expectedAmountCalculated": "16940069950844462061014102"
+    },
+    {
+      "amountSpecified": "22457041528318",
+      "exactInput": false,
+      "expectedAmountCalculated": "22469260971523654467490162"
+    },
+    {
+      "amountSpecified": "23120657244875",
+      "exactInput": false,
+      "expectedAmountCalculated": "23133485465046988282345292"
+    },
+    {
+      "amountSpecified": "12195384928265",
+      "exactInput": false,
+      "expectedAmountCalculated": "12200000878660021192619760"
+    },
+    {
+      "amountSpecified": "19598742462997",
+      "exactInput": false,
+      "expectedAmountCalculated": "19608502365032112121308336"
+    },
+    {
+      "amountSpecified": "1423967137899",
+      "exactInput": false,
+      "expectedAmountCalculated": "1424258631963374705117519"
+    },
+    {
+      "amountSpecified": "27195501685318",
+      "exactInput": false,
+      "expectedAmountCalculated": "27212379854948382113044709"
+    },
+    {
+      "amountSpecified": "14494643850957",
+      "exactInput": false,
+      "expectedAmountCalculated": "14500667905619009291161090"
+    },
+    {
+      "amountSpecified": "15722077264451",
+      "exactInput": false,
+      "expectedAmountCalculated": "15728922895915148258470027"
+    },
+    {
+      "amountSpecified": "19933218943969",
+      "exactInput": false,
+      "expectedAmountCalculated": "19943253029137201493863526"
+    },
+    {
+      "amountSpecified": "4918070228145",
+      "exactInput": false,
+      "expectedAmountCalculated": "4919354215702849864336992"
+    },
+    {
+      "amountSpecified": "2335874579366",
+      "exactInput": false,
+      "expectedAmountCalculated": "2336387109194560792711063"
+    },
+    {
+      "amountSpecified": "3608775536305",
+      "exactInput": false,
+      "expectedAmountCalculated": "3609641469473179272208417"
+    },
+    {
+      "amountSpecified": "22664682956077",
+      "exactInput": false,
+      "expectedAmountCalculated": "22677091353018878730297206"
+    },
+    {
+      "amountSpecified": "6590434651879",
+      "exactInput": false,
+      "expectedAmountCalculated": "6592333077652490012278808"
+    },
+    {
+      "amountSpecified": "10495653822687",
+      "exactInput": false,
+      "expectedAmountCalculated": "10499338542545778962073618"
+    },
+    {
+      "amountSpecified": "9765584970404",
+      "exactInput": false,
+      "expectedAmountCalculated": "9768898338410344455993893"
+    },
+    {
+      "amountSpecified": "227641797017",
+      "exactInput": false,
+      "expectedAmountCalculated": "227684003382498162133953"
+    },
+    {
+      "amountSpecified": "26327971092699",
+      "exactInput": false,
+      "expectedAmountCalculated": "26343942092160718871001762"
+    },
+    {
+      "amountSpecified": "5433789283897",
+      "exactInput": false,
+      "expectedAmountCalculated": "5435253125229416210640934"
+    },
+    {
+      "amountSpecified": "16066346393114",
+      "exactInput": false,
+      "expectedAmountCalculated": "16073431194438447071467836"
+    },
+    {
+      "amountSpecified": "26258577895368",
+      "exactInput": false,
+      "expectedAmountCalculated": "26274477381028503822615765"
+    },
+    {
+      "amountSpecified": "6349938655938",
+      "exactInput": false,
+      "expectedAmountCalculated": "6351743165304062080427215"
+    },
+    {
+      "amountSpecified": "7744377863848",
+      "exactInput": false,
+      "expectedAmountCalculated": "7746752882949338167516600"
+    },
+    {
+      "amountSpecified": "16407013692071",
+      "exactInput": false,
+      "expectedAmountCalculated": "16414338927910793543741945"
+    },
+    {
+      "amountSpecified": "738355575484",
+      "exactInput": false,
+      "expectedAmountCalculated": "738498554706272340250604"
+    },
+    {
+      "amountSpecified": "21262875837329",
+      "exactInput": false,
+      "expectedAmountCalculated": "21274035621956580120593943"
+    },
+    {
+      "amountSpecified": "20110554301520",
+      "exactInput": false,
+      "expectedAmountCalculated": "20120735220762261833672469"
+    },
+    {
+      "amountSpecified": "12596862813170",
+      "exactInput": false,
+      "expectedAmountCalculated": "12601712336840182028254628"
+    },
+    {
+      "amountSpecified": "18574412854771",
+      "exactInput": false,
+      "expectedAmountCalculated": "18583355548267765766640346"
+    },
+    {
+      "amountSpecified": "13949938809884",
+      "exactInput": false,
+      "expectedAmountCalculated": "13955613851215551045553892"
+    },
+    {
+      "amountSpecified": "11293261727011",
+      "exactInput": false,
+      "expectedAmountCalculated": "11297371818351732438110814"
+    },
+    {
+      "amountSpecified": "24736086184737",
+      "exactInput": false,
+      "expectedAmountCalculated": "24750455797388450779816165"
+    },
+    {
+      "amountSpecified": "12824740659729",
+      "exactInput": false,
+      "expectedAmountCalculated": "12829725073889058170211413"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x7379e81228514a1D2a6Cf7559203998E20598346-reversed.json b/src/__tests__/stubs/swap/0x7379e81228514a1D2a6Cf7559203998E20598346-reversed.json
new file mode 100644
index 00000000..222e1b51
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x7379e81228514a1D2a6Cf7559203998E20598346-reversed.json
@@ -0,0 +1,871 @@
+{
+  "poolName": "WETH - sETH2 3000 - reversed",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xFe2e637202056d30016725477c5da089Ab0A043A",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "fee": 3000,
+  "liquidity": "13592622685982654308777278",
+  "sqrtRatioX96": "79399399960006113686361137426",
+  "tickCurrent": 43,
+  "ticks": [
+    {
+      "index": -138180,
+      "liquidityNet": "14140895685494506",
+      "liquidityGross": "14140895685494506"
+    },
+    {
+      "index": -7080,
+      "liquidityNet": "17216760668619418",
+      "liquidityGross": "17216760668619418"
+    },
+    {
+      "index": -6900,
+      "liquidityNet": "88733398942302191270",
+      "liquidityGross": "88733398942302191270"
+    },
+    {
+      "index": -6840,
+      "liquidityNet": "136223661346633161441",
+      "liquidityGross": "136223661346633161441"
+    },
+    {
+      "index": -6780,
+      "liquidityNet": "3434599673526788",
+      "liquidityGross": "3434599673526788"
+    },
+    {
+      "index": -5400,
+      "liquidityNet": "722443576499875724",
+      "liquidityGross": "722443576499875724"
+    },
+    {
+      "index": -3960,
+      "liquidityNet": "1101680818314697127",
+      "liquidityGross": "1101680818314697127"
+    },
+    {
+      "index": -3660,
+      "liquidityNet": "13937078509552318142",
+      "liquidityGross": "13937078509552318142"
+    },
+    {
+      "index": -3300,
+      "liquidityNet": "1248082966901374806",
+      "liquidityGross": "1248082966901374806"
+    },
+    {
+      "index": -3000,
+      "liquidityNet": "142850069454408157",
+      "liquidityGross": "142850069454408157"
+    },
+    {
+      "index": -2820,
+      "liquidityNet": "9386989004093418840",
+      "liquidityGross": "9386989004093418840"
+    },
+    {
+      "index": -2460,
+      "liquidityNet": "828042416518112095",
+      "liquidityGross": "828042416518112095"
+    },
+    {
+      "index": -1320,
+      "liquidityNet": "3894839554564972257",
+      "liquidityGross": "3894839554564972257"
+    },
+    {
+      "index": -1260,
+      "liquidityNet": "11707435931820029504",
+      "liquidityGross": "11707435931820029504"
+    },
+    {
+      "index": -1200,
+      "liquidityNet": "245272240801776873",
+      "liquidityGross": "245272240801776873"
+    },
+    {
+      "index": -1140,
+      "liquidityNet": "34746622817525075663",
+      "liquidityGross": "34746622817525075663"
+    },
+    {
+      "index": -1080,
+      "liquidityNet": "219112627153165557788",
+      "liquidityGross": "219112627153165557788"
+    },
+    {
+      "index": -960,
+      "liquidityNet": "5654079283826539288",
+      "liquidityGross": "5654079283826539288"
+    },
+    {
+      "index": -840,
+      "liquidityNet": "69648352876417727737",
+      "liquidityGross": "69648352876417727737"
+    },
+    {
+      "index": -720,
+      "liquidityNet": "195013673228059737681",
+      "liquidityGross": "195013673228059737681"
+    },
+    {
+      "index": -660,
+      "liquidityNet": "33027340230121578457",
+      "liquidityGross": "33027340230121578457"
+    },
+    {
+      "index": -600,
+      "liquidityNet": "11022133053494808351",
+      "liquidityGross": "11022133053494808351"
+    },
+    {
+      "index": -540,
+      "liquidityNet": "3335728654746303904007",
+      "liquidityGross": "3335728654746303904007"
+    },
+    {
+      "index": -480,
+      "liquidityNet": "3754163024737820641",
+      "liquidityGross": "3754163024737820641"
+    },
+    {
+      "index": -420,
+      "liquidityNet": "259876778872430769900",
+      "liquidityGross": "259876778872430769900"
+    },
+    {
+      "index": -360,
+      "liquidityNet": "85645809909972942985",
+      "liquidityGross": "85645809909972942985"
+    },
+    {
+      "index": -300,
+      "liquidityNet": "13848176475417196022",
+      "liquidityGross": "13848176475417196022"
+    },
+    {
+      "index": -240,
+      "liquidityNet": "9677043631839536067",
+      "liquidityGross": "9677043631839536067"
+    },
+    {
+      "index": -180,
+      "liquidityNet": "2859104607420000593631",
+      "liquidityGross": "2859104607420000593631"
+    },
+    {
+      "index": -120,
+      "liquidityNet": "38013131555623250243113",
+      "liquidityGross": "38013131555623250243113"
+    },
+    {
+      "index": -60,
+      "liquidityNet": "109348137949505871600148",
+      "liquidityGross": "109348137949505871600148"
+    },
+    {
+      "index": 0,
+      "liquidityNet": "13437857349847168389168851",
+      "liquidityGross": "13437857349847168389168851"
+    },
+    {
+      "index": 60,
+      "liquidityNet": "-13237252461969057555119714",
+      "liquidityGross": "13241514737469543882714676"
+    },
+    {
+      "index": 120,
+      "liquidityNet": "-303022435826583810671476",
+      "liquidityGross": "303052648231512485966872"
+    },
+    {
+      "index": 180,
+      "liquidityNet": "-43585813085963973342436",
+      "liquidityGross": "43585813085963973342436"
+    },
+    {
+      "index": 240,
+      "liquidityNet": "-2470425694905872270286",
+      "liquidityGross": "4482074815671461939324"
+    },
+    {
+      "index": 300,
+      "liquidityNet": "-660725772490850521485",
+      "liquidityGross": "660725772490850521485"
+    },
+    {
+      "index": 360,
+      "liquidityNet": "-2463638107056316794",
+      "liquidityGross": "2463638107056316794"
+    },
+    {
+      "index": 420,
+      "liquidityNet": "-80071397897053101031",
+      "liquidityGross": "81350829902665931261"
+    },
+    {
+      "index": 480,
+      "liquidityNet": "-639716002806415115",
+      "liquidityGross": "639716002806415115"
+    },
+    {
+      "index": 540,
+      "liquidityNet": "-9927675063617853188",
+      "liquidityGross": "9927675063617853188"
+    },
+    {
+      "index": 600,
+      "liquidityNet": "-3406815597301242129674",
+      "liquidityGross": "3406815597301242129674"
+    },
+    {
+      "index": 660,
+      "liquidityNet": "-221562698450486155610",
+      "liquidityGross": "221562698450486155610"
+    },
+    {
+      "index": 720,
+      "liquidityNet": "-231849441801088501143",
+      "liquidityGross": "231849441801088501143"
+    },
+    {
+      "index": 780,
+      "liquidityNet": "-1031333503373301439138",
+      "liquidityGross": "1031333503373301439138"
+    },
+    {
+      "index": 840,
+      "liquidityNet": "-11655724825052500735",
+      "liquidityGross": "11655724825052500735"
+    },
+    {
+      "index": 900,
+      "liquidityNet": "-4011776912812740551",
+      "liquidityGross": "4011776912812740551"
+    },
+    {
+      "index": 960,
+      "liquidityNet": "-13280996003193501399",
+      "liquidityGross": "13280996003193501399"
+    },
+    {
+      "index": 1020,
+      "liquidityNet": "-124615995744273818790",
+      "liquidityGross": "124615995744273818790"
+    },
+    {
+      "index": 1080,
+      "liquidityNet": "-3200787980075325790",
+      "liquidityGross": "3200787980075325790"
+    },
+    {
+      "index": 1140,
+      "liquidityNet": "-218637951329762619456",
+      "liquidityGross": "218637951329762619456"
+    },
+    {
+      "index": 1380,
+      "liquidityNet": "-3850308228113574682",
+      "liquidityGross": "3850308228113574682"
+    },
+    {
+      "index": 1560,
+      "liquidityNet": "-2338183734333987208",
+      "liquidityGross": "2338183734333987208"
+    },
+    {
+      "index": 1860,
+      "liquidityNet": "-828042416518112095",
+      "liquidityGross": "828042416518112095"
+    },
+    {
+      "index": 1920,
+      "liquidityNet": "-115107569417226290",
+      "liquidityGross": "115107569417226290"
+    },
+    {
+      "index": 2220,
+      "liquidityNet": "-96873923189243021",
+      "liquidityGross": "96873923189243021"
+    },
+    {
+      "index": 2280,
+      "liquidityNet": "-9386989004093418840",
+      "liquidityGross": "9386989004093418840"
+    },
+    {
+      "index": 2940,
+      "liquidityNet": "-1101680818314697127",
+      "liquidityGross": "1101680818314697127"
+    },
+    {
+      "index": 3060,
+      "liquidityNet": "-142850069454408157",
+      "liquidityGross": "142850069454408157"
+    },
+    {
+      "index": 3120,
+      "liquidityNet": "-1248082966901374806",
+      "liquidityGross": "1248082966901374806"
+    },
+    {
+      "index": 4860,
+      "liquidityNet": "-814001505645003463",
+      "liquidityGross": "814001505645003463"
+    },
+    {
+      "index": 4920,
+      "liquidityNet": "-10937965752626423616",
+      "liquidityGross": "10937965752626423616"
+    },
+    {
+      "index": 5040,
+      "liquidityNet": "-231491612879848424",
+      "liquidityGross": "231491612879848424"
+    },
+    {
+      "index": 5640,
+      "liquidityNet": "-13937078509552318142",
+      "liquidityGross": "13937078509552318142"
+    },
+    {
+      "index": 6540,
+      "liquidityNet": "-722443576499875724",
+      "liquidityGross": "722443576499875724"
+    },
+    {
+      "index": 6960,
+      "liquidityNet": "-88733398942302191270",
+      "liquidityGross": "88733398942302191270"
+    },
+    {
+      "index": 7020,
+      "liquidityNet": "-136242535889669506859",
+      "liquidityGross": "136242535889669506859"
+    },
+    {
+      "index": 7080,
+      "liquidityNet": "-3434599673526788",
+      "liquidityGross": "3434599673526788"
+    },
+    {
+      "index": 10140,
+      "liquidityNet": "-14140895685494506",
+      "liquidityGross": "14140895685494506"
+    },
+    {
+      "index": 10200,
+      "liquidityNet": "-12122845554202449",
+      "liquidityGross": "12122845554202449"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "29435313993514647062502",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "13974407403344632555564",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "12174820759420404094224",
+      "exactInput": true,
+      "expectedAmountCalculated": "12073985790142021586723"
+    },
+    {
+      "amountSpecified": "6337736063771722750976",
+      "exactInput": true,
+      "expectedAmountCalculated": "6288580550686549324214"
+    },
+    {
+      "amountSpecified": "14684201801541299124170",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "10902559479618499403118",
+      "exactInput": true,
+      "expectedAmountCalculated": "10814387746505266192978"
+    },
+    {
+      "amountSpecified": "7068404834608003139976",
+      "exactInput": true,
+      "expectedAmountCalculated": "7013207372717709302458"
+    },
+    {
+      "amountSpecified": "4178842390645132063272",
+      "exactInput": true,
+      "expectedAmountCalculated": "4147086246546263155075"
+    },
+    {
+      "amountSpecified": "12211351839456614995026",
+      "exactInput": true,
+      "expectedAmountCalculated": "12110048143318879860112"
+    },
+    {
+      "amountSpecified": "9722884020157609657325",
+      "exactInput": true,
+      "expectedAmountCalculated": "9645084720130662252470"
+    },
+    {
+      "amountSpecified": "24364061428750550157300",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "5126815064381276589606",
+      "exactInput": true,
+      "expectedAmountCalculated": "5087502145887595938122"
+    },
+    {
+      "amountSpecified": "13368111204661872609596",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "14883324636817186449032",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "9184004036099363037534",
+      "exactInput": true,
+      "expectedAmountCalculated": "9110875760546209908206"
+    },
+    {
+      "amountSpecified": "20921485890775147526490",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "1325030177927627476434",
+      "exactInput": true,
+      "expectedAmountCalculated": "1315235549751202295810"
+    },
+    {
+      "amountSpecified": "6288874118090324702148",
+      "exactInput": true,
+      "expectedAmountCalculated": "6240119884239213730047"
+    },
+    {
+      "amountSpecified": "16912108822685941966325",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "8567276664978091588850",
+      "exactInput": true,
+      "expectedAmountCalculated": "8499442519018322225658"
+    },
+    {
+      "amountSpecified": "17800035292471642861542",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "8347348593281516508118",
+      "exactInput": true,
+      "expectedAmountCalculated": "8281389016896790935861"
+    },
+    {
+      "amountSpecified": "6732594121384434697236",
+      "exactInput": true,
+      "expectedAmountCalculated": "6680183120563420822121"
+    },
+    {
+      "amountSpecified": "8665941553470972406842",
+      "exactInput": true,
+      "expectedAmountCalculated": "8597264152048792815751"
+    },
+    {
+      "amountSpecified": "21371231580129328283826",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "8314096306364422462538",
+      "exactInput": true,
+      "expectedAmountCalculated": "8248419547206882826485"
+    },
+    {
+      "amountSpecified": "14747108777595663409698",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "16715616674456460082032",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "27766702004209784339172",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "17270796829594146127225",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "26639208658083073507938",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "10411692159072812038752",
+      "exactInput": true,
+      "expectedAmountCalculated": "10327860944116603484648"
+    },
+    {
+      "amountSpecified": "13374583493103916395384",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "24863434997935252386768",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "29876077079640967042926",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "27772515373672591645900",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "28172012157233804403798",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "18873947521072898074656",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "17182860225217563047826",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "28729309019491883740734",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "18828809994948824015652",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "25745763231969738565926",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "27450653493121593713964",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "19133260641215609888628",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "13335768451228150910436",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "25547567257659492059112",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "9808715806627316086674",
+      "exactInput": true,
+      "expectedAmountCalculated": "9730168626969587624080"
+    },
+    {
+      "amountSpecified": "4327677727568275210748",
+      "exactInput": true,
+      "expectedAmountCalculated": "4294743774106817973627"
+    },
+    {
+      "amountSpecified": "24215643186510849696198",
+      "exactInput": true,
+      "expectedAmountCalculated": "12829816689543563967079"
+    },
+    {
+      "amountSpecified": "11001956794127119616042",
+      "exactInput": true,
+      "expectedAmountCalculated": "10912901882686548017036"
+    },
+    {
+      "amountSpecified": "525936992034705898020",
+      "exactInput": false,
+      "expectedAmountCalculated": "529822837100113137719"
+    },
+    {
+      "amountSpecified": "6241149508055587498208",
+      "exactInput": false,
+      "expectedAmountCalculated": "6289912264089183065340"
+    },
+    {
+      "amountSpecified": "1621570413566536658280",
+      "exactInput": false,
+      "expectedAmountCalculated": "1633683234777271433659"
+    },
+    {
+      "amountSpecified": "11899589172847069075504",
+      "exactInput": false,
+      "expectedAmountCalculated": "11998262477894016460282"
+    },
+    {
+      "amountSpecified": "4586217274149440438932",
+      "exactInput": false,
+      "expectedAmountCalculated": "4621485719028408050359"
+    },
+    {
+      "amountSpecified": "10684621707148404853188",
+      "exactInput": false,
+      "expectedAmountCalculated": "10771632294281556512496"
+    },
+    {
+      "amountSpecified": "2040953371105633369536",
+      "exactInput": false,
+      "expectedAmountCalculated": "2056262490960169350624"
+    },
+    {
+      "amountSpecified": "6912016898409393730752",
+      "exactInput": false,
+      "expectedAmountCalculated": "6966365940292695745507"
+    },
+    {
+      "amountSpecified": "2864978587113538561710",
+      "exactInput": false,
+      "expectedAmountCalculated": "2886644092862085903345"
+    },
+    {
+      "amountSpecified": "9281227899314889965792",
+      "exactInput": false,
+      "expectedAmountCalculated": "9355841089428771074828"
+    },
+    {
+      "amountSpecified": "3137815688529517473720",
+      "exactInput": false,
+      "expectedAmountCalculated": "3161608051426685321402"
+    },
+    {
+      "amountSpecified": "9042072993113426299796",
+      "exactInput": false,
+      "expectedAmountCalculated": "9114602757686377233399"
+    },
+    {
+      "amountSpecified": "1860601544622179956672",
+      "exactInput": false,
+      "expectedAmountCalculated": "1874532922246680306773"
+    },
+    {
+      "amountSpecified": "802633103401203970170",
+      "exactInput": false,
+      "expectedAmountCalculated": "808579792374114760451"
+    },
+    {
+      "amountSpecified": "9642160000633278903536",
+      "exactInput": false,
+      "expectedAmountCalculated": "9719933611805901552873"
+    },
+    {
+      "amountSpecified": "2156230720772943512940",
+      "exactInput": false,
+      "expectedAmountCalculated": "2172422998645001430432"
+    },
+    {
+      "amountSpecified": "1139040483159537104520",
+      "exactInput": false,
+      "expectedAmountCalculated": "1147508069199959086045"
+    },
+    {
+      "amountSpecified": "5082626530142383514490",
+      "exactInput": false,
+      "expectedAmountCalculated": "5121899931173012673262"
+    },
+    {
+      "amountSpecified": "12366959907828809622144",
+      "exactInput": false,
+      "expectedAmountCalculated": "12471818649871158380396"
+    },
+    {
+      "amountSpecified": "6683480832955809426732",
+      "exactInput": false,
+      "expectedAmountCalculated": "6735919345324687412246"
+    },
+    {
+      "amountSpecified": "1076853198170036786070",
+      "exactInput": false,
+      "expectedAmountCalculated": "1084853511734930463128"
+    },
+    {
+      "amountSpecified": "11320280263534698439248",
+      "exactInput": false,
+      "expectedAmountCalculated": "11413002662096134133617"
+    },
+    {
+      "amountSpecified": "1703916058182063255750",
+      "exactInput": false,
+      "expectedAmountCalculated": "1716654409036756223952"
+    },
+    {
+      "amountSpecified": "5132433179378865836012",
+      "exactInput": false,
+      "expectedAmountCalculated": "5172110435798889534097"
+    },
+    {
+      "amountSpecified": "8456908701872760288900",
+      "exactInput": false,
+      "expectedAmountCalculated": "8524376636204698484499"
+    },
+    {
+      "amountSpecified": "1446761575915043525610",
+      "exactInput": false,
+      "expectedAmountCalculated": "1457549820825950077388"
+    },
+    {
+      "amountSpecified": "8467406830326974949276",
+      "exactInput": false,
+      "expectedAmountCalculated": "8534965127399854805628"
+    },
+    {
+      "amountSpecified": "9431442056654472979968",
+      "exactInput": false,
+      "expectedAmountCalculated": "9507368207591400647265"
+    },
+    {
+      "amountSpecified": "11296602730867220372512",
+      "exactInput": false,
+      "expectedAmountCalculated": "11389111292342730629294"
+    },
+    {
+      "amountSpecified": "2363309626231024459890",
+      "exactInput": false,
+      "expectedAmountCalculated": "2381093328536084413912"
+    },
+    {
+      "amountSpecified": "5865353436942024301650",
+      "exactInput": false,
+      "expectedAmountCalculated": "5911016208006653140350"
+    },
+    {
+      "amountSpecified": "10440160977845227369804",
+      "exactInput": false,
+      "expectedAmountCalculated": "10524990941929738072854"
+    },
+    {
+      "amountSpecified": "4623182504133072246510",
+      "exactInput": false,
+      "expectedAmountCalculated": "4658747916303247499057"
+    },
+    {
+      "amountSpecified": "11462252184312495220188",
+      "exactInput": false,
+      "expectedAmountCalculated": "11556269238281797830331"
+    },
+    {
+      "amountSpecified": "10413385208266007493556",
+      "exactInput": false,
+      "expectedAmountCalculated": "10497976869482058861198"
+    },
+    {
+      "amountSpecified": "2371229747975478364260",
+      "exactInput": false,
+      "expectedAmountCalculated": "2389074443830438576356"
+    },
+    {
+      "amountSpecified": "4885878963021676925250",
+      "exactInput": false,
+      "expectedAmountCalculated": "4923560650399348623409"
+    },
+    {
+      "amountSpecified": "10082482590543132955876",
+      "exactInput": false,
+      "expectedAmountCalculated": "10164138047216479424458"
+    },
+    {
+      "amountSpecified": "10907136210598371897748",
+      "exactInput": false,
+      "expectedAmountCalculated": "10996139393029321433063"
+    },
+    {
+      "amountSpecified": "11223434307067498282336",
+      "exactInput": false,
+      "expectedAmountCalculated": "11315282595764089246271"
+    },
+    {
+      "amountSpecified": "9868124756614690226752",
+      "exactInput": false,
+      "expectedAmountCalculated": "9947886848034589272051"
+    },
+    {
+      "amountSpecified": "5196303027577774138604",
+      "exactInput": false,
+      "expectedAmountCalculated": "5236498710172296899398"
+    },
+    {
+      "amountSpecified": "311797504682761660596",
+      "exactInput": false,
+      "expectedAmountCalculated": "314096237405601116585"
+    },
+    {
+      "amountSpecified": "4790917965966255488310",
+      "exactInput": false,
+      "expectedAmountCalculated": "4827833466002393462337"
+    },
+    {
+      "amountSpecified": "10479290712298250190792",
+      "exactInput": false,
+      "expectedAmountCalculated": "10564469120831288381848"
+    },
+    {
+      "amountSpecified": "7095160947924628694856",
+      "exactInput": false,
+      "expectedAmountCalculated": "7151046656705916814539"
+    },
+    {
+      "amountSpecified": "10622970533300543792884",
+      "exactInput": false,
+      "expectedAmountCalculated": "10709430344535263215302"
+    },
+    {
+      "amountSpecified": "7326984972425811484668",
+      "exactInput": false,
+      "expectedAmountCalculated": "7384822952581033852440"
+    },
+    {
+      "amountSpecified": "3258818034389782285956",
+      "exactInput": false,
+      "expectedAmountCalculated": "3283557193149777837746"
+    },
+    {
+      "amountSpecified": "3943816074109919727396",
+      "exactInput": false,
+      "expectedAmountCalculated": "3973956110158667444346"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x7379e81228514a1D2a6Cf7559203998E20598346.json b/src/__tests__/stubs/swap/0x7379e81228514a1D2a6Cf7559203998E20598346.json
new file mode 100644
index 00000000..c3baec06
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x7379e81228514a1D2a6Cf7559203998E20598346.json
@@ -0,0 +1,871 @@
+{
+  "poolName": "WETH - sETH2 3000",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xFe2e637202056d30016725477c5da089Ab0A043A",
+    "decimals": 18
+  },
+  "fee": 3000,
+  "liquidity": "13592622685982654308777278",
+  "sqrtRatioX96": "79399399960006113686361137426",
+  "tickCurrent": 43,
+  "ticks": [
+    {
+      "index": -138180,
+      "liquidityNet": "14140895685494506",
+      "liquidityGross": "14140895685494506"
+    },
+    {
+      "index": -7080,
+      "liquidityNet": "17216760668619418",
+      "liquidityGross": "17216760668619418"
+    },
+    {
+      "index": -6900,
+      "liquidityNet": "88733398942302191270",
+      "liquidityGross": "88733398942302191270"
+    },
+    {
+      "index": -6840,
+      "liquidityNet": "136223661346633161441",
+      "liquidityGross": "136223661346633161441"
+    },
+    {
+      "index": -6780,
+      "liquidityNet": "3434599673526788",
+      "liquidityGross": "3434599673526788"
+    },
+    {
+      "index": -5400,
+      "liquidityNet": "722443576499875724",
+      "liquidityGross": "722443576499875724"
+    },
+    {
+      "index": -3960,
+      "liquidityNet": "1101680818314697127",
+      "liquidityGross": "1101680818314697127"
+    },
+    {
+      "index": -3660,
+      "liquidityNet": "13937078509552318142",
+      "liquidityGross": "13937078509552318142"
+    },
+    {
+      "index": -3300,
+      "liquidityNet": "1248082966901374806",
+      "liquidityGross": "1248082966901374806"
+    },
+    {
+      "index": -3000,
+      "liquidityNet": "142850069454408157",
+      "liquidityGross": "142850069454408157"
+    },
+    {
+      "index": -2820,
+      "liquidityNet": "9386989004093418840",
+      "liquidityGross": "9386989004093418840"
+    },
+    {
+      "index": -2460,
+      "liquidityNet": "828042416518112095",
+      "liquidityGross": "828042416518112095"
+    },
+    {
+      "index": -1320,
+      "liquidityNet": "3894839554564972257",
+      "liquidityGross": "3894839554564972257"
+    },
+    {
+      "index": -1260,
+      "liquidityNet": "11707435931820029504",
+      "liquidityGross": "11707435931820029504"
+    },
+    {
+      "index": -1200,
+      "liquidityNet": "245272240801776873",
+      "liquidityGross": "245272240801776873"
+    },
+    {
+      "index": -1140,
+      "liquidityNet": "34746622817525075663",
+      "liquidityGross": "34746622817525075663"
+    },
+    {
+      "index": -1080,
+      "liquidityNet": "219112627153165557788",
+      "liquidityGross": "219112627153165557788"
+    },
+    {
+      "index": -960,
+      "liquidityNet": "5654079283826539288",
+      "liquidityGross": "5654079283826539288"
+    },
+    {
+      "index": -840,
+      "liquidityNet": "69648352876417727737",
+      "liquidityGross": "69648352876417727737"
+    },
+    {
+      "index": -720,
+      "liquidityNet": "195013673228059737681",
+      "liquidityGross": "195013673228059737681"
+    },
+    {
+      "index": -660,
+      "liquidityNet": "33027340230121578457",
+      "liquidityGross": "33027340230121578457"
+    },
+    {
+      "index": -600,
+      "liquidityNet": "11022133053494808351",
+      "liquidityGross": "11022133053494808351"
+    },
+    {
+      "index": -540,
+      "liquidityNet": "3335728654746303904007",
+      "liquidityGross": "3335728654746303904007"
+    },
+    {
+      "index": -480,
+      "liquidityNet": "3754163024737820641",
+      "liquidityGross": "3754163024737820641"
+    },
+    {
+      "index": -420,
+      "liquidityNet": "259876778872430769900",
+      "liquidityGross": "259876778872430769900"
+    },
+    {
+      "index": -360,
+      "liquidityNet": "85645809909972942985",
+      "liquidityGross": "85645809909972942985"
+    },
+    {
+      "index": -300,
+      "liquidityNet": "13848176475417196022",
+      "liquidityGross": "13848176475417196022"
+    },
+    {
+      "index": -240,
+      "liquidityNet": "9677043631839536067",
+      "liquidityGross": "9677043631839536067"
+    },
+    {
+      "index": -180,
+      "liquidityNet": "2859104607420000593631",
+      "liquidityGross": "2859104607420000593631"
+    },
+    {
+      "index": -120,
+      "liquidityNet": "38013131555623250243113",
+      "liquidityGross": "38013131555623250243113"
+    },
+    {
+      "index": -60,
+      "liquidityNet": "109348137949505871600148",
+      "liquidityGross": "109348137949505871600148"
+    },
+    {
+      "index": 0,
+      "liquidityNet": "13437857349847168389168851",
+      "liquidityGross": "13437857349847168389168851"
+    },
+    {
+      "index": 60,
+      "liquidityNet": "-13237252461969057555119714",
+      "liquidityGross": "13241514737469543882714676"
+    },
+    {
+      "index": 120,
+      "liquidityNet": "-303022435826583810671476",
+      "liquidityGross": "303052648231512485966872"
+    },
+    {
+      "index": 180,
+      "liquidityNet": "-43585813085963973342436",
+      "liquidityGross": "43585813085963973342436"
+    },
+    {
+      "index": 240,
+      "liquidityNet": "-2470425694905872270286",
+      "liquidityGross": "4482074815671461939324"
+    },
+    {
+      "index": 300,
+      "liquidityNet": "-660725772490850521485",
+      "liquidityGross": "660725772490850521485"
+    },
+    {
+      "index": 360,
+      "liquidityNet": "-2463638107056316794",
+      "liquidityGross": "2463638107056316794"
+    },
+    {
+      "index": 420,
+      "liquidityNet": "-80071397897053101031",
+      "liquidityGross": "81350829902665931261"
+    },
+    {
+      "index": 480,
+      "liquidityNet": "-639716002806415115",
+      "liquidityGross": "639716002806415115"
+    },
+    {
+      "index": 540,
+      "liquidityNet": "-9927675063617853188",
+      "liquidityGross": "9927675063617853188"
+    },
+    {
+      "index": 600,
+      "liquidityNet": "-3406815597301242129674",
+      "liquidityGross": "3406815597301242129674"
+    },
+    {
+      "index": 660,
+      "liquidityNet": "-221562698450486155610",
+      "liquidityGross": "221562698450486155610"
+    },
+    {
+      "index": 720,
+      "liquidityNet": "-231849441801088501143",
+      "liquidityGross": "231849441801088501143"
+    },
+    {
+      "index": 780,
+      "liquidityNet": "-1031333503373301439138",
+      "liquidityGross": "1031333503373301439138"
+    },
+    {
+      "index": 840,
+      "liquidityNet": "-11655724825052500735",
+      "liquidityGross": "11655724825052500735"
+    },
+    {
+      "index": 900,
+      "liquidityNet": "-4011776912812740551",
+      "liquidityGross": "4011776912812740551"
+    },
+    {
+      "index": 960,
+      "liquidityNet": "-13280996003193501399",
+      "liquidityGross": "13280996003193501399"
+    },
+    {
+      "index": 1020,
+      "liquidityNet": "-124615995744273818790",
+      "liquidityGross": "124615995744273818790"
+    },
+    {
+      "index": 1080,
+      "liquidityNet": "-3200787980075325790",
+      "liquidityGross": "3200787980075325790"
+    },
+    {
+      "index": 1140,
+      "liquidityNet": "-218637951329762619456",
+      "liquidityGross": "218637951329762619456"
+    },
+    {
+      "index": 1380,
+      "liquidityNet": "-3850308228113574682",
+      "liquidityGross": "3850308228113574682"
+    },
+    {
+      "index": 1560,
+      "liquidityNet": "-2338183734333987208",
+      "liquidityGross": "2338183734333987208"
+    },
+    {
+      "index": 1860,
+      "liquidityNet": "-828042416518112095",
+      "liquidityGross": "828042416518112095"
+    },
+    {
+      "index": 1920,
+      "liquidityNet": "-115107569417226290",
+      "liquidityGross": "115107569417226290"
+    },
+    {
+      "index": 2220,
+      "liquidityNet": "-96873923189243021",
+      "liquidityGross": "96873923189243021"
+    },
+    {
+      "index": 2280,
+      "liquidityNet": "-9386989004093418840",
+      "liquidityGross": "9386989004093418840"
+    },
+    {
+      "index": 2940,
+      "liquidityNet": "-1101680818314697127",
+      "liquidityGross": "1101680818314697127"
+    },
+    {
+      "index": 3060,
+      "liquidityNet": "-142850069454408157",
+      "liquidityGross": "142850069454408157"
+    },
+    {
+      "index": 3120,
+      "liquidityNet": "-1248082966901374806",
+      "liquidityGross": "1248082966901374806"
+    },
+    {
+      "index": 4860,
+      "liquidityNet": "-814001505645003463",
+      "liquidityGross": "814001505645003463"
+    },
+    {
+      "index": 4920,
+      "liquidityNet": "-10937965752626423616",
+      "liquidityGross": "10937965752626423616"
+    },
+    {
+      "index": 5040,
+      "liquidityNet": "-231491612879848424",
+      "liquidityGross": "231491612879848424"
+    },
+    {
+      "index": 5640,
+      "liquidityNet": "-13937078509552318142",
+      "liquidityGross": "13937078509552318142"
+    },
+    {
+      "index": 6540,
+      "liquidityNet": "-722443576499875724",
+      "liquidityGross": "722443576499875724"
+    },
+    {
+      "index": 6960,
+      "liquidityNet": "-88733398942302191270",
+      "liquidityGross": "88733398942302191270"
+    },
+    {
+      "index": 7020,
+      "liquidityNet": "-136242535889669506859",
+      "liquidityGross": "136242535889669506859"
+    },
+    {
+      "index": 7080,
+      "liquidityNet": "-3434599673526788",
+      "liquidityGross": "3434599673526788"
+    },
+    {
+      "index": 10140,
+      "liquidityNet": "-14140895685494506",
+      "liquidityGross": "14140895685494506"
+    },
+    {
+      "index": 10200,
+      "liquidityNet": "-12122845554202449",
+      "liquidityGross": "12122845554202449"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "1040285159859293206980",
+      "exactInput": true,
+      "expectedAmountCalculated": "1041572790685709803645"
+    },
+    {
+      "amountSpecified": "6766903685956012731056",
+      "exactInput": true,
+      "expectedAmountCalculated": "6772428919160663110995"
+    },
+    {
+      "amountSpecified": "6457801466630990684956",
+      "exactInput": true,
+      "expectedAmountCalculated": "6463221094561201084526"
+    },
+    {
+      "amountSpecified": "5185855511152600514608",
+      "exactInput": true,
+      "expectedAmountCalculated": "5190692759091413769540"
+    },
+    {
+      "amountSpecified": "12808768083012927705764",
+      "exactInput": true,
+      "expectedAmountCalculated": "12813538626986553058394"
+    },
+    {
+      "amountSpecified": "1032268435653218721870",
+      "exactInput": true,
+      "expectedAmountCalculated": "1033546752650096493855"
+    },
+    {
+      "amountSpecified": "3738195924584872104072",
+      "exactInput": true,
+      "expectedAmountCalculated": "3742080884129146640609"
+    },
+    {
+      "amountSpecified": "1530355838663109484620",
+      "exactInput": true,
+      "expectedAmountCalculated": "1532194871790738077903"
+    },
+    {
+      "amountSpecified": "12142042780023345091188",
+      "exactInput": true,
+      "expectedAmountCalculated": "12147159767437797446542"
+    },
+    {
+      "amountSpecified": "4867284213077223938304",
+      "exactInput": true,
+      "expectedAmountCalculated": "4871938348963228014744"
+    },
+    {
+      "amountSpecified": "6965013054628888024348",
+      "exactInput": true,
+      "expectedAmountCalculated": "6970598587232916710927"
+    },
+    {
+      "amountSpecified": "11396070762321530828324",
+      "exactInput": true,
+      "expectedAmountCalculated": "11401498012139874976175"
+    },
+    {
+      "amountSpecified": "1968251367984908152080",
+      "exactInput": true,
+      "expectedAmountCalculated": "1970553199546602243531"
+    },
+    {
+      "amountSpecified": "2347667052602172417104",
+      "exactInput": true,
+      "expectedAmountCalculated": "2350347062263740632540"
+    },
+    {
+      "amountSpecified": "6183951941897313104136",
+      "exactInput": true,
+      "expectedAmountCalculated": "6189266275259945349595"
+    },
+    {
+      "amountSpecified": "4638410512318673675310",
+      "exactInput": true,
+      "expectedAmountCalculated": "4642923881276069106390"
+    },
+    {
+      "amountSpecified": "9408866439612804133852",
+      "exactInput": true,
+      "expectedAmountCalculated": "9414721398052932814501"
+    },
+    {
+      "amountSpecified": "1521386385678368469810",
+      "exactInput": true,
+      "expectedAmountCalculated": "1523215644359697572408"
+    },
+    {
+      "amountSpecified": "3988426293209885847548",
+      "exactInput": true,
+      "expectedAmountCalculated": "3992497890593305247532"
+    },
+    {
+      "amountSpecified": "2595220334220122692380",
+      "exactInput": true,
+      "expectedAmountCalculated": "2598135671583237639878"
+    },
+    {
+      "amountSpecified": "9230143036160457379612",
+      "exactInput": true,
+      "expectedAmountCalculated": "9236008032129307065324"
+    },
+    {
+      "amountSpecified": "12582728118805882503392",
+      "exactInput": true,
+      "expectedAmountCalculated": "12587623429205783466701"
+    },
+    {
+      "amountSpecified": "10591565753765196974204",
+      "exactInput": true,
+      "expectedAmountCalculated": "10597236029938661213079"
+    },
+    {
+      "amountSpecified": "2758526322315339383610",
+      "exactInput": true,
+      "expectedAmountCalculated": "2761591964987412082138"
+    },
+    {
+      "amountSpecified": "6593438511396267471876",
+      "exactInput": true,
+      "expectedAmountCalculated": "6598906209193876210374"
+    },
+    {
+      "amountSpecified": "5048012095070868912450",
+      "exactInput": true,
+      "expectedAmountCalculated": "5052771943388836408732"
+    },
+    {
+      "amountSpecified": "5232781937760907076250",
+      "exactInput": true,
+      "expectedAmountCalculated": "5237644897610171352545"
+    },
+    {
+      "amountSpecified": "6245328504694599594120",
+      "exactInput": true,
+      "expectedAmountCalculated": "6250667395741714430313"
+    },
+    {
+      "amountSpecified": "8812781425069528211688",
+      "exactInput": true,
+      "expectedAmountCalculated": "8818651586590837864642"
+    },
+    {
+      "amountSpecified": "11632714961869835797144",
+      "exactInput": true,
+      "expectedAmountCalculated": "11638052635881128468231"
+    },
+    {
+      "amountSpecified": "5209874458611566906250",
+      "exactInput": true,
+      "expectedAmountCalculated": "5214724907454553239758"
+    },
+    {
+      "amountSpecified": "10540640875850656901638",
+      "exactInput": true,
+      "expectedAmountCalculated": "10546323336783994958989"
+    },
+    {
+      "amountSpecified": "5468093895608409596740",
+      "exactInput": true,
+      "expectedAmountCalculated": "5473080904878738989074"
+    },
+    {
+      "amountSpecified": "550417198167702236910",
+      "exactInput": true,
+      "expectedAmountCalculated": "551118330098410087749"
+    },
+    {
+      "amountSpecified": "12436869461379817579804",
+      "exactInput": true,
+      "expectedAmountCalculated": "12441841299305434394807"
+    },
+    {
+      "amountSpecified": "4812366553318204285052",
+      "exactInput": true,
+      "expectedAmountCalculated": "4816987614955489852178"
+    },
+    {
+      "amountSpecified": "7477589977522053433188",
+      "exactInput": true,
+      "expectedAmountCalculated": "7483304754646092130850"
+    },
+    {
+      "amountSpecified": "10633723279482219716540",
+      "exactInput": true,
+      "expectedAmountCalculated": "10639383180497162449223"
+    },
+    {
+      "amountSpecified": "2550265120774627346640",
+      "exactInput": true,
+      "expectedAmountCalculated": "2553138393068862253376"
+    },
+    {
+      "amountSpecified": "457848794779783129140",
+      "exactInput": true,
+      "expectedAmountCalculated": "458435130579304109762"
+    },
+    {
+      "amountSpecified": "4779974277830441869136",
+      "exactInput": true,
+      "expectedAmountCalculated": "4784575623225188272084"
+    },
+    {
+      "amountSpecified": "297849955520010995079",
+      "exactInput": true,
+      "expectedAmountCalculated": "298234899132075473379"
+    },
+    {
+      "amountSpecified": "9902915901036594645152",
+      "exactInput": true,
+      "expectedAmountCalculated": "9908718699105505907112"
+    },
+    {
+      "amountSpecified": "1560632039332463880090",
+      "exactInput": true,
+      "expectedAmountCalculated": "1562503978471814716104"
+    },
+    {
+      "amountSpecified": "7160991171690025794208",
+      "exactInput": true,
+      "expectedAmountCalculated": "7166630679112932320783"
+    },
+    {
+      "amountSpecified": "7859523354952725647452",
+      "exactInput": true,
+      "expectedAmountCalculated": "7865309330219575046082"
+    },
+    {
+      "amountSpecified": "5715975222640337277810",
+      "exactInput": true,
+      "expectedAmountCalculated": "5721084102297336927593"
+    },
+    {
+      "amountSpecified": "8439934062189835950921",
+      "exactInput": true,
+      "expectedAmountCalculated": "8445787194807508881325"
+    },
+    {
+      "amountSpecified": "6781679031960340753744",
+      "exactInput": true,
+      "expectedAmountCalculated": "6787208961479756814833"
+    },
+    {
+      "amountSpecified": "1398118847190316690890",
+      "exactInput": true,
+      "expectedAmountCalculated": "1399812575891243489409"
+    },
+    {
+      "amountSpecified": "15025159189989865205930",
+      "exactInput": false,
+      "expectedAmountCalculated": "15022006465664994934324"
+    },
+    {
+      "amountSpecified": "23434215273848955549048",
+      "exactInput": false,
+      "expectedAmountCalculated": "23443786245471954791996"
+    },
+    {
+      "amountSpecified": "15330046797649717487442",
+      "exactInput": false,
+      "expectedAmountCalculated": "15327173530447948960653"
+    },
+    {
+      "amountSpecified": "7070991149286670027572",
+      "exactInput": false,
+      "expectedAmountCalculated": "7065377269907107658548"
+    },
+    {
+      "amountSpecified": "28107816012885924409242",
+      "exactInput": false,
+      "expectedAmountCalculated": "28128963226437369326198"
+    },
+    {
+      "amountSpecified": "6393943794165848202856",
+      "exactInput": false,
+      "expectedAmountCalculated": "6388549751958952105313"
+    },
+    {
+      "amountSpecified": "8338628441933895889626",
+      "exactInput": false,
+      "expectedAmountCalculated": "8332783981597895756611"
+    },
+    {
+      "amountSpecified": "14828652525865616198836",
+      "exactInput": false,
+      "expectedAmountCalculated": "14825326932848456061662"
+    },
+    {
+      "amountSpecified": "4549824478555785416944",
+      "exactInput": false,
+      "expectedAmountCalculated": "4545370535306836831593"
+    },
+    {
+      "amountSpecified": "27354041146946872788294",
+      "exactInput": false,
+      "expectedAmountCalculated": "27373103424474204797133"
+    },
+    {
+      "amountSpecified": "7350324567661347751878",
+      "exactInput": false,
+      "expectedAmountCalculated": "7344639604571537337218"
+    },
+    {
+      "amountSpecified": "18890952555528350703522",
+      "exactInput": false,
+      "expectedAmountCalculated": "18892356063044733444286"
+    },
+    {
+      "amountSpecified": "23997239110972449789966",
+      "exactInput": false,
+      "expectedAmountCalculated": "24008034040907451059451"
+    },
+    {
+      "amountSpecified": "25276366771087981786896",
+      "exactInput": false,
+      "expectedAmountCalculated": "25290116077731659940643"
+    },
+    {
+      "amountSpecified": "7869335331445522784942",
+      "exactInput": false,
+      "expectedAmountCalculated": "7863548719947739176290"
+    },
+    {
+      "amountSpecified": "11347233442934432742072",
+      "exactInput": false,
+      "expectedAmountCalculated": "11341786804739443138451"
+    },
+    {
+      "amountSpecified": "23710312468895146422606",
+      "exactInput": false,
+      "expectedAmountCalculated": "23720477810228625681357"
+    },
+    {
+      "amountSpecified": "18853811751424713058410",
+      "exactInput": false,
+      "expectedAmountCalculated": "18855161018986934962706"
+    },
+    {
+      "amountSpecified": "23315545909053830289468",
+      "exactInput": false,
+      "expectedAmountCalculated": "23324864866927536243814"
+    },
+    {
+      "amountSpecified": "8035616242870381019550",
+      "exactInput": false,
+      "expectedAmountCalculated": "8029805433718374674009"
+    },
+    {
+      "amountSpecified": "20986156743434634311424",
+      "exactInput": false,
+      "expectedAmountCalculated": "20990949022711133532365"
+    },
+    {
+      "amountSpecified": "6465881260833740266750",
+      "exactInput": false,
+      "expectedAmountCalculated": "6460460664491818597008"
+    },
+    {
+      "amountSpecified": "23417621974634106026975",
+      "exactInput": false,
+      "expectedAmountCalculated": "23427157582860068034795"
+    },
+    {
+      "amountSpecified": "27137200232588343578202",
+      "exactInput": false,
+      "expectedAmountCalculated": "27155678254004664260542"
+    },
+    {
+      "amountSpecified": "20267180477518149254424",
+      "exactInput": false,
+      "expectedAmountCalculated": "20270737024609005079030"
+    },
+    {
+      "amountSpecified": "6384666503153221911652",
+      "exactInput": false,
+      "expectedAmountCalculated": "6379275940771423139005"
+    },
+    {
+      "amountSpecified": "21910795037862558847375",
+      "exactInput": false,
+      "expectedAmountCalculated": "21917288466140124866608"
+    },
+    {
+      "amountSpecified": "1789024246176094109474",
+      "exactInput": false,
+      "expectedAmountCalculated": "1786910645096824456867"
+    },
+    {
+      "amountSpecified": "7617507928383378793162",
+      "exactInput": false,
+      "expectedAmountCalculated": "7611765696190170721918"
+    },
+    {
+      "amountSpecified": "4681301345684928609072",
+      "exactInput": false,
+      "expectedAmountCalculated": "4676763850546277133004"
+    },
+    {
+      "amountSpecified": "7664121410725182938110",
+      "exactInput": false,
+      "expectedAmountCalculated": "7658370261383755670871"
+    },
+    {
+      "amountSpecified": "359517534823457346825",
+      "exactInput": false,
+      "expectedAmountCalculated": "359055106635010970165"
+    },
+    {
+      "amountSpecified": "14547986423569804028538",
+      "exactInput": false,
+      "expectedAmountCalculated": "14544423776821315890118"
+    },
+    {
+      "amountSpecified": "17815029857712670857594",
+      "exactInput": false,
+      "expectedAmountCalculated": "17814944376282553240082"
+    },
+    {
+      "amountSpecified": "2852932424699663340066",
+      "exactInput": false,
+      "expectedAmountCalculated": "2849784497716364285391"
+    },
+    {
+      "amountSpecified": "23889822983778556171600",
+      "exactInput": false,
+      "expectedAmountCalculated": "23900380794818505115691"
+    },
+    {
+      "amountSpecified": "10693880072370088528170",
+      "exactInput": false,
+      "expectedAmountCalculated": "10688233973627517421396"
+    },
+    {
+      "amountSpecified": "9618442654319058031336",
+      "exactInput": false,
+      "expectedAmountCalculated": "9612604861780234893321"
+    },
+    {
+      "amountSpecified": "27827015739610562844648",
+      "exactInput": false,
+      "expectedAmountCalculated": "27847376464811626361201"
+    },
+    {
+      "amountSpecified": "8831716906898033226970",
+      "exactInput": false,
+      "expectedAmountCalculated": "8825846519058429260936"
+    },
+    {
+      "amountSpecified": "17327729781559667763204",
+      "exactInput": false,
+      "expectedAmountCalculated": "17327025986620978550233"
+    },
+    {
+      "amountSpecified": "27878623526672710654698",
+      "exactInput": false,
+      "expectedAmountCalculated": "27899127926653236192975"
+    },
+    {
+      "amountSpecified": "14223223798897541702442",
+      "exactInput": false,
+      "expectedAmountCalculated": "14219401315340916326752"
+    },
+    {
+      "amountSpecified": "27270406773612962103342",
+      "exactInput": false,
+      "expectedAmountCalculated": "27289242885012879833130"
+    },
+    {
+      "amountSpecified": "29767341400610099412924",
+      "exactInput": false,
+      "expectedAmountCalculated": "29794347948886828371422"
+    },
+    {
+      "amountSpecified": "18308962669440111777330",
+      "exactInput": false,
+      "expectedAmountCalculated": "18309539590032223621859"
+    },
+    {
+      "amountSpecified": "12532193303475161330772",
+      "exactInput": false,
+      "expectedAmountCalculated": "12527268527147560795919"
+    },
+    {
+      "amountSpecified": "7915963656144289201590",
+      "exactInput": false,
+      "expectedAmountCalculated": "7910169849413611335634"
+    },
+    {
+      "amountSpecified": "5616019018932817136748",
+      "exactInput": false,
+      "expectedAmountCalculated": "5610960666562538466381"
+    },
+    {
+      "amountSpecified": "5300868309544469687362",
+      "exactInput": false,
+      "expectedAmountCalculated": "5295971238590453284768"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x7858E59e0C01EA06Df3aF3D20aC7B0003275D4Bf-reversed.json b/src/__tests__/stubs/swap/0x7858E59e0C01EA06Df3aF3D20aC7B0003275D4Bf-reversed.json
new file mode 100644
index 00000000..f0d285c8
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x7858E59e0C01EA06Df3aF3D20aC7B0003275D4Bf-reversed.json
@@ -0,0 +1,831 @@
+{
+  "poolName": "USDC - USDT 500 - reversed",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
+    "decimals": 6
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
+    "decimals": 6
+  },
+  "fee": 500,
+  "liquidity": "10825287712991212",
+  "sqrtRatioX96": "79222885286911942367821307091",
+  "tickCurrent": -2,
+  "ticks": [
+    {
+      "index": -887270,
+      "liquidityNet": "1711875206",
+      "liquidityGross": "1711875206"
+    },
+    {
+      "index": -46050,
+      "liquidityNet": "11700101",
+      "liquidityGross": "11700101"
+    },
+    {
+      "index": -13890,
+      "liquidityNet": "4003593903",
+      "liquidityGross": "4003593903"
+    },
+    {
+      "index": -13880,
+      "liquidityNet": "-4003593903",
+      "liquidityGross": "4003593903"
+    },
+    {
+      "index": -2230,
+      "liquidityNet": "849025702",
+      "liquidityGross": "849025702"
+    },
+    {
+      "index": -1740,
+      "liquidityNet": "120036560",
+      "liquidityGross": "120036560"
+    },
+    {
+      "index": -1200,
+      "liquidityNet": "37128874041",
+      "liquidityGross": "37128874041"
+    },
+    {
+      "index": -1160,
+      "liquidityNet": "-37128874041",
+      "liquidityGross": "37128874041"
+    },
+    {
+      "index": -1050,
+      "liquidityNet": "23132504991",
+      "liquidityGross": "23132504991"
+    },
+    {
+      "index": -960,
+      "liquidityNet": "2387965410",
+      "liquidityGross": "2387965410"
+    },
+    {
+      "index": -950,
+      "liquidityNet": "428695138",
+      "liquidityGross": "428695138"
+    },
+    {
+      "index": -510,
+      "liquidityNet": "12204970288",
+      "liquidityGross": "12204970288"
+    },
+    {
+      "index": -490,
+      "liquidityNet": "109246191",
+      "liquidityGross": "109246191"
+    },
+    {
+      "index": -410,
+      "liquidityNet": "17216175143015",
+      "liquidityGross": "17216175143015"
+    },
+    {
+      "index": -360,
+      "liquidityNet": "185555784",
+      "liquidityGross": "185555784"
+    },
+    {
+      "index": -300,
+      "liquidityNet": "267440887350",
+      "liquidityGross": "267440887350"
+    },
+    {
+      "index": -220,
+      "liquidityNet": "4641040041",
+      "liquidityGross": "4641040041"
+    },
+    {
+      "index": -200,
+      "liquidityNet": "397858280792",
+      "liquidityGross": "397858280792"
+    },
+    {
+      "index": -170,
+      "liquidityNet": "12675517525",
+      "liquidityGross": "12675517525"
+    },
+    {
+      "index": -150,
+      "liquidityNet": "350550438814",
+      "liquidityGross": "350550438814"
+    },
+    {
+      "index": -140,
+      "liquidityNet": "1283075100",
+      "liquidityGross": "1283075100"
+    },
+    {
+      "index": -120,
+      "liquidityNet": "13974827628694",
+      "liquidityGross": "13974827628694"
+    },
+    {
+      "index": -110,
+      "liquidityNet": "5545946094546",
+      "liquidityGross": "5545946094546"
+    },
+    {
+      "index": -100,
+      "liquidityNet": "1487560253415",
+      "liquidityGross": "1492359584437"
+    },
+    {
+      "index": -90,
+      "liquidityNet": "11398564574401",
+      "liquidityGross": "14174772738065"
+    },
+    {
+      "index": -80,
+      "liquidityNet": "38376160046",
+      "liquidityGross": "38376160046"
+    },
+    {
+      "index": -70,
+      "liquidityNet": "693377477324",
+      "liquidityGross": "693377477324"
+    },
+    {
+      "index": -60,
+      "liquidityNet": "367916497937",
+      "liquidityGross": "367916497937"
+    },
+    {
+      "index": -50,
+      "liquidityNet": "532281785720",
+      "liquidityGross": "571988362594"
+    },
+    {
+      "index": -40,
+      "liquidityNet": "1646135069903",
+      "liquidityGross": "1646135069903"
+    },
+    {
+      "index": -30,
+      "liquidityNet": "141313093375929",
+      "liquidityGross": "141313093375929"
+    },
+    {
+      "index": -20,
+      "liquidityNet": "216989342413402",
+      "liquidityGross": "220335366935974"
+    },
+    {
+      "index": -10,
+      "liquidityNet": "10413008525701887",
+      "liquidityGross": "10416341432339087"
+    },
+    {
+      "index": 0,
+      "liquidityNet": "-5928069183207154",
+      "liquidityGross": "8352571276128260"
+    },
+    {
+      "index": 10,
+      "liquidityNet": "-3526130538702756",
+      "liquidityGross": "3527324342174594"
+    },
+    {
+      "index": 20,
+      "liquidityNet": "-1197018726722439",
+      "liquidityGross": "1197018726722439"
+    },
+    {
+      "index": 30,
+      "liquidityNet": "-95730879560046",
+      "liquidityGross": "95730879560046"
+    },
+    {
+      "index": 40,
+      "liquidityNet": "-38719931820591",
+      "liquidityGross": "38719931820591"
+    },
+    {
+      "index": 50,
+      "liquidityNet": "-1178816781319",
+      "liquidityGross": "1218969052417"
+    },
+    {
+      "index": 60,
+      "liquidityNet": "-26244903456",
+      "liquidityGross": "26244903456"
+    },
+    {
+      "index": 70,
+      "liquidityNet": "-710347257977",
+      "liquidityGross": "710347257977"
+    },
+    {
+      "index": 100,
+      "liquidityNet": "-4790443716017",
+      "liquidityGross": "4794776854995"
+    },
+    {
+      "index": 110,
+      "liquidityNet": "-13978852233020",
+      "liquidityGross": "13978852233020"
+    },
+    {
+      "index": 120,
+      "liquidityNet": "-599242017039",
+      "liquidityGross": "599242017039"
+    },
+    {
+      "index": 140,
+      "liquidityNet": "-57889551691",
+      "liquidityGross": "57889551691"
+    },
+    {
+      "index": 150,
+      "liquidityNet": "-363225956339",
+      "liquidityGross": "363225956339"
+    },
+    {
+      "index": 200,
+      "liquidityNet": "-676051331750",
+      "liquidityGross": "676051331750"
+    },
+    {
+      "index": 300,
+      "liquidityNet": "-8661339435",
+      "liquidityGross": "8661339435"
+    },
+    {
+      "index": 360,
+      "liquidityNet": "-185555784",
+      "liquidityGross": "185555784"
+    },
+    {
+      "index": 390,
+      "liquidityNet": "-17186289638636",
+      "liquidityGross": "17186289638636"
+    },
+    {
+      "index": 490,
+      "liquidityNet": "-12204970288",
+      "liquidityGross": "12204970288"
+    },
+    {
+      "index": 510,
+      "liquidityNet": "-12145302",
+      "liquidityGross": "12145302"
+    },
+    {
+      "index": 530,
+      "liquidityNet": "-1283075100",
+      "liquidityGross": "1283075100"
+    },
+    {
+      "index": 950,
+      "liquidityNet": "-23561200129",
+      "liquidityGross": "23561200129"
+    },
+    {
+      "index": 1050,
+      "liquidityNet": "-2460367476",
+      "liquidityGross": "2460367476"
+    },
+    {
+      "index": 1490,
+      "liquidityNet": "-120036560",
+      "liquidityGross": "120036560"
+    },
+    {
+      "index": 1820,
+      "liquidityNet": "-849025702",
+      "liquidityGross": "849025702"
+    },
+    {
+      "index": 27080,
+      "liquidityNet": "198612890",
+      "liquidityGross": "198612890"
+    },
+    {
+      "index": 34000,
+      "liquidityNet": "-198612890",
+      "liquidityGross": "198612890"
+    },
+    {
+      "index": 78920,
+      "liquidityNet": "864595509",
+      "liquidityGross": "864595509"
+    },
+    {
+      "index": 79040,
+      "liquidityNet": "-864595509",
+      "liquidityGross": "864595509"
+    },
+    {
+      "index": 887270,
+      "liquidityNet": "-1711875206",
+      "liquidityGross": "1711875206"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "3332082162681",
+      "exactInput": true,
+      "expectedAmountCalculated": "3329061088455"
+    },
+    {
+      "amountSpecified": "5243982048168",
+      "exactInput": true,
+      "expectedAmountCalculated": "4355684199311"
+    },
+    {
+      "amountSpecified": "2860827827923",
+      "exactInput": true,
+      "expectedAmountCalculated": "2858512153521"
+    },
+    {
+      "amountSpecified": "4197284851285",
+      "exactInput": true,
+      "expectedAmountCalculated": "4190419236431"
+    },
+    {
+      "amountSpecified": "3268782544821",
+      "exactInput": true,
+      "expectedAmountCalculated": "3265868205434"
+    },
+    {
+      "amountSpecified": "4898918201986",
+      "exactInput": true,
+      "expectedAmountCalculated": "4355682045454"
+    },
+    {
+      "amountSpecified": "63556213048",
+      "exactInput": true,
+      "expectedAmountCalculated": "63532525410"
+    },
+    {
+      "amountSpecified": "2776168391013",
+      "exactInput": true,
+      "expectedAmountCalculated": "2773967433088"
+    },
+    {
+      "amountSpecified": "1564551343620",
+      "exactInput": true,
+      "expectedAmountCalculated": "1563672107892"
+    },
+    {
+      "amountSpecified": "3661158895413",
+      "exactInput": true,
+      "expectedAmountCalculated": "3657489048542"
+    },
+    {
+      "amountSpecified": "3994827706876",
+      "exactInput": true,
+      "expectedAmountCalculated": "3990227590351"
+    },
+    {
+      "amountSpecified": "2042500034166",
+      "exactInput": true,
+      "expectedAmountCalculated": "2041170886294"
+    },
+    {
+      "amountSpecified": "671896142897",
+      "exactInput": true,
+      "expectedAmountCalculated": "671607999478"
+    },
+    {
+      "amountSpecified": "2467315710453",
+      "exactInput": true,
+      "expectedAmountCalculated": "2465508495867"
+    },
+    {
+      "amountSpecified": "740051574593",
+      "exactInput": true,
+      "expectedAmountCalculated": "739729508834"
+    },
+    {
+      "amountSpecified": "1995743692783",
+      "exactInput": true,
+      "expectedAmountCalculated": "1994462668340"
+    },
+    {
+      "amountSpecified": "1740516973515",
+      "exactInput": true,
+      "expectedAmountCalculated": "1739482927221"
+    },
+    {
+      "amountSpecified": "2419396714280",
+      "exactInput": true,
+      "expectedAmountCalculated": "2417647106025"
+    },
+    {
+      "amountSpecified": "3990254701921",
+      "exactInput": true,
+      "expectedAmountCalculated": "3985676950810"
+    },
+    {
+      "amountSpecified": "183018847719",
+      "exactInput": true,
+      "expectedAmountCalculated": "182948617869"
+    },
+    {
+      "amountSpecified": "4315668105686",
+      "exactInput": true,
+      "expectedAmountCalculated": "4305636547928"
+    },
+    {
+      "amountSpecified": "4024204851193",
+      "exactInput": true,
+      "expectedAmountCalculated": "4019435794345"
+    },
+    {
+      "amountSpecified": "2982013583469",
+      "exactInput": true,
+      "expectedAmountCalculated": "2979528616140"
+    },
+    {
+      "amountSpecified": "4414359518240",
+      "exactInput": true,
+      "expectedAmountCalculated": "4355628707607"
+    },
+    {
+      "amountSpecified": "5000594800042",
+      "exactInput": true,
+      "expectedAmountCalculated": "4355682923024"
+    },
+    {
+      "amountSpecified": "2822383228393",
+      "exactInput": true,
+      "expectedAmountCalculated": "2820120009731"
+    },
+    {
+      "amountSpecified": "2878920187158",
+      "exactInput": true,
+      "expectedAmountCalculated": "2876579618244"
+    },
+    {
+      "amountSpecified": "1635678245360",
+      "exactInput": true,
+      "expectedAmountCalculated": "1634737954086"
+    },
+    {
+      "amountSpecified": "1423968647592",
+      "exactInput": true,
+      "expectedAmountCalculated": "1423204020124"
+    },
+    {
+      "amountSpecified": "499573454402",
+      "exactInput": true,
+      "expectedAmountCalculated": "499367157015"
+    },
+    {
+      "amountSpecified": "4050706525275",
+      "exactInput": true,
+      "expectedAmountCalculated": "4045746942947"
+    },
+    {
+      "amountSpecified": "3200325879226",
+      "exactInput": true,
+      "expectedAmountCalculated": "3197520409782"
+    },
+    {
+      "amountSpecified": "4382086471027",
+      "exactInput": true,
+      "expectedAmountCalculated": "4355521346252"
+    },
+    {
+      "amountSpecified": "3896140599796",
+      "exactInput": true,
+      "expectedAmountCalculated": "3891903929526"
+    },
+    {
+      "amountSpecified": "5377002835642",
+      "exactInput": true,
+      "expectedAmountCalculated": "4355684637482"
+    },
+    {
+      "amountSpecified": "731143700657",
+      "exactInput": true,
+      "expectedAmountCalculated": "730826140393"
+    },
+    {
+      "amountSpecified": "2062997304426",
+      "exactInput": true,
+      "expectedAmountCalculated": "2061646778992"
+    },
+    {
+      "amountSpecified": "4475315086683",
+      "exactInput": true,
+      "expectedAmountCalculated": "4355661027083"
+    },
+    {
+      "amountSpecified": "2951007892254",
+      "exactInput": true,
+      "expectedAmountCalculated": "2948566808575"
+    },
+    {
+      "amountSpecified": "5288181245904",
+      "exactInput": true,
+      "expectedAmountCalculated": "4355684358906"
+    },
+    {
+      "amountSpecified": "1804327328200",
+      "exactInput": true,
+      "expectedAmountCalculated": "1803234023743"
+    },
+    {
+      "amountSpecified": "4480896132518",
+      "exactInput": true,
+      "expectedAmountCalculated": "4355662300263"
+    },
+    {
+      "amountSpecified": "1540751271604",
+      "exactInput": true,
+      "expectedAmountCalculated": "1539892005296"
+    },
+    {
+      "amountSpecified": "2837593746066",
+      "exactInput": true,
+      "expectedAmountCalculated": "2835309845409"
+    },
+    {
+      "amountSpecified": "4034049423165",
+      "exactInput": true,
+      "expectedAmountCalculated": "4029213824897"
+    },
+    {
+      "amountSpecified": "246926669610",
+      "exactInput": true,
+      "expectedAmountCalculated": "246830459878"
+    },
+    {
+      "amountSpecified": "3336320703156",
+      "exactInput": true,
+      "expectedAmountCalculated": "3333292273768"
+    },
+    {
+      "amountSpecified": "1647710086516",
+      "exactInput": true,
+      "expectedAmountCalculated": "1646759263080"
+    },
+    {
+      "amountSpecified": "4969571619584",
+      "exactInput": true,
+      "expectedAmountCalculated": "4355682686540"
+    },
+    {
+      "amountSpecified": "2745165442505",
+      "exactInput": true,
+      "expectedAmountCalculated": "2743005764085"
+    },
+    {
+      "amountSpecified": "2364145945924",
+      "exactInput": false,
+      "expectedAmountCalculated": "2365832268849"
+    },
+    {
+      "amountSpecified": "4092924825964",
+      "exactInput": false,
+      "expectedAmountCalculated": "4098318809586"
+    },
+    {
+      "amountSpecified": "2832170053818",
+      "exactInput": false,
+      "expectedAmountCalculated": "2834449671696"
+    },
+    {
+      "amountSpecified": "616983088337",
+      "exactInput": false,
+      "expectedAmountCalculated": "617244681119"
+    },
+    {
+      "amountSpecified": "241556156109",
+      "exactInput": false,
+      "expectedAmountCalculated": "241650192289"
+    },
+    {
+      "amountSpecified": "4268447322700",
+      "exactInput": false,
+      "expectedAmountCalculated": "4277281482848"
+    },
+    {
+      "amountSpecified": "865036250368",
+      "exactInput": false,
+      "expectedAmountCalculated": "865425162745"
+    },
+    {
+      "amountSpecified": "1044674306803",
+      "exactInput": false,
+      "expectedAmountCalculated": "1045170242176"
+    },
+    {
+      "amountSpecified": "3431523491202",
+      "exactInput": false,
+      "expectedAmountCalculated": "3434730036793"
+    },
+    {
+      "amountSpecified": "3957833615896",
+      "exactInput": false,
+      "expectedAmountCalculated": "3962291275112"
+    },
+    {
+      "amountSpecified": "2577656011433",
+      "exactInput": false,
+      "expectedAmountCalculated": "2579601877663"
+    },
+    {
+      "amountSpecified": "2947166275782",
+      "exactInput": false,
+      "expectedAmountCalculated": "2949605383691"
+    },
+    {
+      "amountSpecified": "270257328589",
+      "exactInput": false,
+      "expectedAmountCalculated": "270363254725"
+    },
+    {
+      "amountSpecified": "2332102616803",
+      "exactInput": false,
+      "expectedAmountCalculated": "2333751596967"
+    },
+    {
+      "amountSpecified": "765863109347",
+      "exactInput": false,
+      "expectedAmountCalculated": "766198586920"
+    },
+    {
+      "amountSpecified": "3047284048718",
+      "exactInput": false,
+      "expectedAmountCalculated": "3049866417449"
+    },
+    {
+      "amountSpecified": "3638907685055",
+      "exactInput": false,
+      "expectedAmountCalculated": "3642536615554"
+    },
+    {
+      "amountSpecified": "1816025449352",
+      "exactInput": false,
+      "expectedAmountCalculated": "1817130843902"
+    },
+    {
+      "amountSpecified": "3077847510994",
+      "exactInput": false,
+      "expectedAmountCalculated": "3080474430825"
+    },
+    {
+      "amountSpecified": "2186296118227",
+      "exactInput": false,
+      "expectedAmountCalculated": "2187780480867"
+    },
+    {
+      "amountSpecified": "1810541719197",
+      "exactInput": false,
+      "expectedAmountCalculated": "1811641922488"
+    },
+    {
+      "amountSpecified": "1481521365396",
+      "exactInput": false,
+      "expectedAmountCalculated": "1482332594907"
+    },
+    {
+      "amountSpecified": "1810501498443",
+      "exactInput": false,
+      "expectedAmountCalculated": "1811601663704"
+    },
+    {
+      "amountSpecified": "3275424982660",
+      "exactInput": false,
+      "expectedAmountCalculated": "3278355089053"
+    },
+    {
+      "amountSpecified": "3306108619256",
+      "exactInput": false,
+      "expectedAmountCalculated": "3309090250833"
+    },
+    {
+      "amountSpecified": "1312150487876",
+      "exactInput": false,
+      "expectedAmountCalculated": "1312830215555"
+    },
+    {
+      "amountSpecified": "2993806322113",
+      "exactInput": false,
+      "expectedAmountCalculated": "2996311658060"
+    },
+    {
+      "amountSpecified": "1329084480972",
+      "exactInput": false,
+      "expectedAmountCalculated": "1329776828848"
+    },
+    {
+      "amountSpecified": "3658156708578",
+      "exactInput": false,
+      "expectedAmountCalculated": "3661828035046"
+    },
+    {
+      "amountSpecified": "770800027833",
+      "exactInput": false,
+      "expectedAmountCalculated": "771138070382"
+    },
+    {
+      "amountSpecified": "2535376945998",
+      "exactInput": false,
+      "expectedAmountCalculated": "2537269937072"
+    },
+    {
+      "amountSpecified": "2298771202814",
+      "exactInput": false,
+      "expectedAmountCalculated": "2300381784719"
+    },
+    {
+      "amountSpecified": "3174362897858",
+      "exactInput": false,
+      "expectedAmountCalculated": "3177133028883"
+    },
+    {
+      "amountSpecified": "1440820896703",
+      "exactInput": false,
+      "expectedAmountCalculated": "1441599455463"
+    },
+    {
+      "amountSpecified": "484778341036",
+      "exactInput": false,
+      "expectedAmountCalculated": "484977957952"
+    },
+    {
+      "amountSpecified": "401327427491",
+      "exactInput": false,
+      "expectedAmountCalculated": "401489586900"
+    },
+    {
+      "amountSpecified": "703852083706",
+      "exactInput": false,
+      "expectedAmountCalculated": "704156158352"
+    },
+    {
+      "amountSpecified": "4440915546763",
+      "exactInput": false,
+      "expectedAmountCalculated": "31589974430217640647493015868"
+    },
+    {
+      "amountSpecified": "2121750924831",
+      "exactInput": false,
+      "expectedAmountCalculated": "2123165191423"
+    },
+    {
+      "amountSpecified": "4252793646656",
+      "exactInput": false,
+      "expectedAmountCalculated": "4261174019437"
+    },
+    {
+      "amountSpecified": "759620506531",
+      "exactInput": false,
+      "expectedAmountCalculated": "759952755020"
+    },
+    {
+      "amountSpecified": "260028413166",
+      "exactInput": false,
+      "expectedAmountCalculated": "260130084336"
+    },
+    {
+      "amountSpecified": "2844613603699",
+      "exactInput": false,
+      "expectedAmountCalculated": "2846910218672"
+    },
+    {
+      "amountSpecified": "4412809292512",
+      "exactInput": false,
+      "expectedAmountCalculated": "31589974430217640647493015868"
+    },
+    {
+      "amountSpecified": "4141089758472",
+      "exactInput": false,
+      "expectedAmountCalculated": "4147081339684"
+    },
+    {
+      "amountSpecified": "1810891407044",
+      "exactInput": false,
+      "expectedAmountCalculated": "1811991941005"
+    },
+    {
+      "amountSpecified": "242500108766",
+      "exactInput": false,
+      "expectedAmountCalculated": "242594533572"
+    },
+    {
+      "amountSpecified": "2851116204924",
+      "exactInput": false,
+      "expectedAmountCalculated": "2853421727239"
+    },
+    {
+      "amountSpecified": "923892234658",
+      "exactInput": false,
+      "expectedAmountCalculated": "924314759162"
+    },
+    {
+      "amountSpecified": "3493318107465",
+      "exactInput": false,
+      "expectedAmountCalculated": "3496643931898"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x7858E59e0C01EA06Df3aF3D20aC7B0003275D4Bf.json b/src/__tests__/stubs/swap/0x7858E59e0C01EA06Df3aF3D20aC7B0003275D4Bf.json
new file mode 100644
index 00000000..c87fcc7f
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x7858E59e0C01EA06Df3aF3D20aC7B0003275D4Bf.json
@@ -0,0 +1,831 @@
+{
+  "poolName": "USDC - USDT 500",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
+    "decimals": 6
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
+    "decimals": 6
+  },
+  "fee": 500,
+  "liquidity": "10825287712991212",
+  "sqrtRatioX96": "79222885286911942367821307091",
+  "tickCurrent": -2,
+  "ticks": [
+    {
+      "index": -887270,
+      "liquidityNet": "1711875206",
+      "liquidityGross": "1711875206"
+    },
+    {
+      "index": -46050,
+      "liquidityNet": "11700101",
+      "liquidityGross": "11700101"
+    },
+    {
+      "index": -13890,
+      "liquidityNet": "4003593903",
+      "liquidityGross": "4003593903"
+    },
+    {
+      "index": -13880,
+      "liquidityNet": "-4003593903",
+      "liquidityGross": "4003593903"
+    },
+    {
+      "index": -2230,
+      "liquidityNet": "849025702",
+      "liquidityGross": "849025702"
+    },
+    {
+      "index": -1740,
+      "liquidityNet": "120036560",
+      "liquidityGross": "120036560"
+    },
+    {
+      "index": -1200,
+      "liquidityNet": "37128874041",
+      "liquidityGross": "37128874041"
+    },
+    {
+      "index": -1160,
+      "liquidityNet": "-37128874041",
+      "liquidityGross": "37128874041"
+    },
+    {
+      "index": -1050,
+      "liquidityNet": "23132504991",
+      "liquidityGross": "23132504991"
+    },
+    {
+      "index": -960,
+      "liquidityNet": "2387965410",
+      "liquidityGross": "2387965410"
+    },
+    {
+      "index": -950,
+      "liquidityNet": "428695138",
+      "liquidityGross": "428695138"
+    },
+    {
+      "index": -510,
+      "liquidityNet": "12204970288",
+      "liquidityGross": "12204970288"
+    },
+    {
+      "index": -490,
+      "liquidityNet": "109246191",
+      "liquidityGross": "109246191"
+    },
+    {
+      "index": -410,
+      "liquidityNet": "17216175143015",
+      "liquidityGross": "17216175143015"
+    },
+    {
+      "index": -360,
+      "liquidityNet": "185555784",
+      "liquidityGross": "185555784"
+    },
+    {
+      "index": -300,
+      "liquidityNet": "267440887350",
+      "liquidityGross": "267440887350"
+    },
+    {
+      "index": -220,
+      "liquidityNet": "4641040041",
+      "liquidityGross": "4641040041"
+    },
+    {
+      "index": -200,
+      "liquidityNet": "397858280792",
+      "liquidityGross": "397858280792"
+    },
+    {
+      "index": -170,
+      "liquidityNet": "12675517525",
+      "liquidityGross": "12675517525"
+    },
+    {
+      "index": -150,
+      "liquidityNet": "350550438814",
+      "liquidityGross": "350550438814"
+    },
+    {
+      "index": -140,
+      "liquidityNet": "1283075100",
+      "liquidityGross": "1283075100"
+    },
+    {
+      "index": -120,
+      "liquidityNet": "13974827628694",
+      "liquidityGross": "13974827628694"
+    },
+    {
+      "index": -110,
+      "liquidityNet": "5545946094546",
+      "liquidityGross": "5545946094546"
+    },
+    {
+      "index": -100,
+      "liquidityNet": "1487560253415",
+      "liquidityGross": "1492359584437"
+    },
+    {
+      "index": -90,
+      "liquidityNet": "11398564574401",
+      "liquidityGross": "14174772738065"
+    },
+    {
+      "index": -80,
+      "liquidityNet": "38376160046",
+      "liquidityGross": "38376160046"
+    },
+    {
+      "index": -70,
+      "liquidityNet": "693377477324",
+      "liquidityGross": "693377477324"
+    },
+    {
+      "index": -60,
+      "liquidityNet": "367916497937",
+      "liquidityGross": "367916497937"
+    },
+    {
+      "index": -50,
+      "liquidityNet": "532281785720",
+      "liquidityGross": "571988362594"
+    },
+    {
+      "index": -40,
+      "liquidityNet": "1646135069903",
+      "liquidityGross": "1646135069903"
+    },
+    {
+      "index": -30,
+      "liquidityNet": "141313093375929",
+      "liquidityGross": "141313093375929"
+    },
+    {
+      "index": -20,
+      "liquidityNet": "216989342413402",
+      "liquidityGross": "220335366935974"
+    },
+    {
+      "index": -10,
+      "liquidityNet": "10413008525701887",
+      "liquidityGross": "10416341432339087"
+    },
+    {
+      "index": 0,
+      "liquidityNet": "-5928069183207154",
+      "liquidityGross": "8352571276128260"
+    },
+    {
+      "index": 10,
+      "liquidityNet": "-3526130538702756",
+      "liquidityGross": "3527324342174594"
+    },
+    {
+      "index": 20,
+      "liquidityNet": "-1197018726722439",
+      "liquidityGross": "1197018726722439"
+    },
+    {
+      "index": 30,
+      "liquidityNet": "-95730879560046",
+      "liquidityGross": "95730879560046"
+    },
+    {
+      "index": 40,
+      "liquidityNet": "-38719931820591",
+      "liquidityGross": "38719931820591"
+    },
+    {
+      "index": 50,
+      "liquidityNet": "-1178816781319",
+      "liquidityGross": "1218969052417"
+    },
+    {
+      "index": 60,
+      "liquidityNet": "-26244903456",
+      "liquidityGross": "26244903456"
+    },
+    {
+      "index": 70,
+      "liquidityNet": "-710347257977",
+      "liquidityGross": "710347257977"
+    },
+    {
+      "index": 100,
+      "liquidityNet": "-4790443716017",
+      "liquidityGross": "4794776854995"
+    },
+    {
+      "index": 110,
+      "liquidityNet": "-13978852233020",
+      "liquidityGross": "13978852233020"
+    },
+    {
+      "index": 120,
+      "liquidityNet": "-599242017039",
+      "liquidityGross": "599242017039"
+    },
+    {
+      "index": 140,
+      "liquidityNet": "-57889551691",
+      "liquidityGross": "57889551691"
+    },
+    {
+      "index": 150,
+      "liquidityNet": "-363225956339",
+      "liquidityGross": "363225956339"
+    },
+    {
+      "index": 200,
+      "liquidityNet": "-676051331750",
+      "liquidityGross": "676051331750"
+    },
+    {
+      "index": 300,
+      "liquidityNet": "-8661339435",
+      "liquidityGross": "8661339435"
+    },
+    {
+      "index": 360,
+      "liquidityNet": "-185555784",
+      "liquidityGross": "185555784"
+    },
+    {
+      "index": 390,
+      "liquidityNet": "-17186289638636",
+      "liquidityGross": "17186289638636"
+    },
+    {
+      "index": 490,
+      "liquidityNet": "-12204970288",
+      "liquidityGross": "12204970288"
+    },
+    {
+      "index": 510,
+      "liquidityNet": "-12145302",
+      "liquidityGross": "12145302"
+    },
+    {
+      "index": 530,
+      "liquidityNet": "-1283075100",
+      "liquidityGross": "1283075100"
+    },
+    {
+      "index": 950,
+      "liquidityNet": "-23561200129",
+      "liquidityGross": "23561200129"
+    },
+    {
+      "index": 1050,
+      "liquidityNet": "-2460367476",
+      "liquidityGross": "2460367476"
+    },
+    {
+      "index": 1490,
+      "liquidityNet": "-120036560",
+      "liquidityGross": "120036560"
+    },
+    {
+      "index": 1820,
+      "liquidityNet": "-849025702",
+      "liquidityGross": "849025702"
+    },
+    {
+      "index": 27080,
+      "liquidityNet": "198612890",
+      "liquidityGross": "198612890"
+    },
+    {
+      "index": 34000,
+      "liquidityNet": "-198612890",
+      "liquidityGross": "198612890"
+    },
+    {
+      "index": 78920,
+      "liquidityNet": "864595509",
+      "liquidityGross": "864595509"
+    },
+    {
+      "index": 79040,
+      "liquidityNet": "-864595509",
+      "liquidityGross": "864595509"
+    },
+    {
+      "index": 887270,
+      "liquidityNet": "-1711875206",
+      "liquidityGross": "1711875206"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "2381634022921",
+      "exactInput": true,
+      "expectedAmountCalculated": "2379602871913"
+    },
+    {
+      "amountSpecified": "1894264290019",
+      "exactInput": true,
+      "expectedAmountCalculated": "1892733933606"
+    },
+    {
+      "amountSpecified": "3043301247757",
+      "exactInput": true,
+      "expectedAmountCalculated": "3040520103296"
+    },
+    {
+      "amountSpecified": "3378927663183",
+      "exactInput": true,
+      "expectedAmountCalculated": "3375735231553"
+    },
+    {
+      "amountSpecified": "2850387526",
+      "exactInput": true,
+      "expectedAmountCalculated": "2848582067"
+    },
+    {
+      "amountSpecified": "3442642727824",
+      "exactInput": true,
+      "expectedAmountCalculated": "3439369872277"
+    },
+    {
+      "amountSpecified": "4434287057633",
+      "exactInput": true,
+      "expectedAmountCalculated": "4429666046233"
+    },
+    {
+      "amountSpecified": "1352062063332",
+      "exactInput": true,
+      "expectedAmountCalculated": "1351037365207"
+    },
+    {
+      "amountSpecified": "1551886962318",
+      "exactInput": true,
+      "expectedAmountCalculated": "1550682216907"
+    },
+    {
+      "amountSpecified": "3243731814430",
+      "exactInput": true,
+      "expectedAmountCalculated": "3240707553970"
+    },
+    {
+      "amountSpecified": "647247899065",
+      "exactInput": true,
+      "expectedAmountCalculated": "646799446891"
+    },
+    {
+      "amountSpecified": "3983852193432",
+      "exactInput": true,
+      "expectedAmountCalculated": "3979866023056"
+    },
+    {
+      "amountSpecified": "668987674011",
+      "exactInput": true,
+      "expectedAmountCalculated": "668522817503"
+    },
+    {
+      "amountSpecified": "3020287503965",
+      "exactInput": true,
+      "expectedAmountCalculated": "3017533800405"
+    },
+    {
+      "amountSpecified": "3266835379087",
+      "exactInput": true,
+      "expectedAmountCalculated": "3263782618648"
+    },
+    {
+      "amountSpecified": "4344242405177",
+      "exactInput": true,
+      "expectedAmountCalculated": "4339751292938"
+    },
+    {
+      "amountSpecified": "2607336326521",
+      "exactInput": true,
+      "expectedAmountCalculated": "2605058416154"
+    },
+    {
+      "amountSpecified": "3971780911914",
+      "exactInput": true,
+      "expectedAmountCalculated": "3967811240219"
+    },
+    {
+      "amountSpecified": "2035602438761",
+      "exactInput": true,
+      "expectedAmountCalculated": "2033931360807"
+    },
+    {
+      "amountSpecified": "1867964133076",
+      "exactInput": true,
+      "expectedAmountCalculated": "1866459555509"
+    },
+    {
+      "amountSpecified": "4494592084598",
+      "exactInput": true,
+      "expectedAmountCalculated": "4489883241134"
+    },
+    {
+      "amountSpecified": "3054183538054",
+      "exactInput": true,
+      "expectedAmountCalculated": "3051389383868"
+    },
+    {
+      "amountSpecified": "751598299135",
+      "exactInput": true,
+      "expectedAmountCalculated": "751070311333"
+    },
+    {
+      "amountSpecified": "1475530021965",
+      "exactInput": true,
+      "expectedAmountCalculated": "1474394945582"
+    },
+    {
+      "amountSpecified": "3584618480508",
+      "exactInput": true,
+      "expectedAmountCalculated": "3581163725155"
+    },
+    {
+      "amountSpecified": "369129445452",
+      "exactInput": true,
+      "expectedAmountCalculated": "368883161673"
+    },
+    {
+      "amountSpecified": "1037527609515",
+      "exactInput": true,
+      "expectedAmountCalculated": "1036771393255"
+    },
+    {
+      "amountSpecified": "2309593275248",
+      "exactInput": true,
+      "expectedAmountCalculated": "2307638908351"
+    },
+    {
+      "amountSpecified": "2983640757091",
+      "exactInput": true,
+      "expectedAmountCalculated": "2980930548461"
+    },
+    {
+      "amountSpecified": "2841622855138",
+      "exactInput": true,
+      "expectedAmountCalculated": "2839078864124"
+    },
+    {
+      "amountSpecified": "1053689887624",
+      "exactInput": true,
+      "expectedAmountCalculated": "1052920320285"
+    },
+    {
+      "amountSpecified": "4024711300920",
+      "exactInput": true,
+      "expectedAmountCalculated": "4020669086169"
+    },
+    {
+      "amountSpecified": "2214157114324",
+      "exactInput": true,
+      "expectedAmountCalculated": "2212302993598"
+    },
+    {
+      "amountSpecified": "583249807680",
+      "exactInput": true,
+      "expectedAmountCalculated": "582849140815"
+    },
+    {
+      "amountSpecified": "80054414603",
+      "exactInput": true,
+      "expectedAmountCalculated": "80003137259"
+    },
+    {
+      "amountSpecified": "1678249000289",
+      "exactInput": true,
+      "expectedAmountCalculated": "1676926598129"
+    },
+    {
+      "amountSpecified": "4221065143525",
+      "exactInput": true,
+      "expectedAmountCalculated": "4216749307459"
+    },
+    {
+      "amountSpecified": "908426087040",
+      "exactInput": true,
+      "expectedAmountCalculated": "907774787079"
+    },
+    {
+      "amountSpecified": "4030450683737",
+      "exactInput": true,
+      "expectedAmountCalculated": "4026400571916"
+    },
+    {
+      "amountSpecified": "638686641749",
+      "exactInput": true,
+      "expectedAmountCalculated": "638244625772"
+    },
+    {
+      "amountSpecified": "1056331564363",
+      "exactInput": true,
+      "expectedAmountCalculated": "1055559810247"
+    },
+    {
+      "amountSpecified": "1270271803546",
+      "exactInput": true,
+      "expectedAmountCalculated": "1269318676145"
+    },
+    {
+      "amountSpecified": "2173009465584",
+      "exactInput": true,
+      "expectedAmountCalculated": "2171198048140"
+    },
+    {
+      "amountSpecified": "921188532463",
+      "exactInput": true,
+      "expectedAmountCalculated": "920526997865"
+    },
+    {
+      "amountSpecified": "3561026195143",
+      "exactInput": true,
+      "expectedAmountCalculated": "3557601923745"
+    },
+    {
+      "amountSpecified": "3757617858653",
+      "exactInput": true,
+      "expectedAmountCalculated": "3753936433333"
+    },
+    {
+      "amountSpecified": "593656982165",
+      "exactInput": true,
+      "expectedAmountCalculated": "593248596048"
+    },
+    {
+      "amountSpecified": "3731119751875",
+      "exactInput": true,
+      "expectedAmountCalculated": "3727473403131"
+    },
+    {
+      "amountSpecified": "3747091855622",
+      "exactInput": true,
+      "expectedAmountCalculated": "3743424379479"
+    },
+    {
+      "amountSpecified": "3261394142562",
+      "exactInput": true,
+      "expectedAmountCalculated": "3258348103155"
+    },
+    {
+      "amountSpecified": "3935201469373",
+      "exactInput": false,
+      "expectedAmountCalculated": "3939126644759"
+    },
+    {
+      "amountSpecified": "2408343199191",
+      "exactInput": false,
+      "expectedAmountCalculated": "2410405283279"
+    },
+    {
+      "amountSpecified": "1862148697797",
+      "exactInput": false,
+      "expectedAmountCalculated": "1863649058004"
+    },
+    {
+      "amountSpecified": "2421592265616",
+      "exactInput": false,
+      "expectedAmountCalculated": "2423668661074"
+    },
+    {
+      "amountSpecified": "772777264889",
+      "exactInput": false,
+      "expectedAmountCalculated": "773322063139"
+    },
+    {
+      "amountSpecified": "2158781071680",
+      "exactInput": false,
+      "expectedAmountCalculated": "2160579650794"
+    },
+    {
+      "amountSpecified": "4041611375262",
+      "exactInput": false,
+      "expectedAmountCalculated": "4045682474616"
+    },
+    {
+      "amountSpecified": "746946246901",
+      "exactInput": false,
+      "expectedAmountCalculated": "747471050767"
+    },
+    {
+      "amountSpecified": "306756100041",
+      "exactInput": false,
+      "expectedAmountCalculated": "306959143030"
+    },
+    {
+      "amountSpecified": "1518940574961",
+      "exactInput": false,
+      "expectedAmountCalculated": "1520116201689"
+    },
+    {
+      "amountSpecified": "4246486738435",
+      "exactInput": false,
+      "expectedAmountCalculated": "4250844693256"
+    },
+    {
+      "amountSpecified": "3454200608940",
+      "exactInput": false,
+      "expectedAmountCalculated": "3457492315821"
+    },
+    {
+      "amountSpecified": "4681289328501",
+      "exactInput": false,
+      "expectedAmountCalculated": "4686281812303"
+    },
+    {
+      "amountSpecified": "3074172145195",
+      "exactInput": false,
+      "expectedAmountCalculated": "3076993639590"
+    },
+    {
+      "amountSpecified": "4983524552705",
+      "exactInput": false,
+      "expectedAmountCalculated": "4989201090195"
+    },
+    {
+      "amountSpecified": "1359996626474",
+      "exactInput": false,
+      "expectedAmountCalculated": "1361029246412"
+    },
+    {
+      "amountSpecified": "1712330232700",
+      "exactInput": false,
+      "expectedAmountCalculated": "1713686159476"
+    },
+    {
+      "amountSpecified": "4707201958565",
+      "exactInput": false,
+      "expectedAmountCalculated": "4712234057168"
+    },
+    {
+      "amountSpecified": "2370613373285",
+      "exactInput": false,
+      "expectedAmountCalculated": "2372634880313"
+    },
+    {
+      "amountSpecified": "4265246384148",
+      "exactInput": false,
+      "expectedAmountCalculated": "4269630993485"
+    },
+    {
+      "amountSpecified": "4790096065598",
+      "exactInput": false,
+      "expectedAmountCalculated": "4795276254402"
+    },
+    {
+      "amountSpecified": "2379941520822",
+      "exactInput": false,
+      "expectedAmountCalculated": "2381973035427"
+    },
+    {
+      "amountSpecified": "5011744798740",
+      "exactInput": false,
+      "expectedAmountCalculated": "5017525996462"
+    },
+    {
+      "amountSpecified": "2373855209377",
+      "exactInput": false,
+      "expectedAmountCalculated": "2375880192540"
+    },
+    {
+      "amountSpecified": "55388737939",
+      "exactInput": false,
+      "expectedAmountCalculated": "55424112857"
+    },
+    {
+      "amountSpecified": "3519539514539",
+      "exactInput": false,
+      "expectedAmountCalculated": "3522914758325"
+    },
+    {
+      "amountSpecified": "664943312430",
+      "exactInput": false,
+      "expectedAmountCalculated": "665405459881"
+    },
+    {
+      "amountSpecified": "3761960050305",
+      "exactInput": false,
+      "expectedAmountCalculated": "3765652136483"
+    },
+    {
+      "amountSpecified": "1126962643292",
+      "exactInput": false,
+      "expectedAmountCalculated": "1127794042413"
+    },
+    {
+      "amountSpecified": "325418701394",
+      "exactInput": false,
+      "expectedAmountCalculated": "325634658669"
+    },
+    {
+      "amountSpecified": "467371848798",
+      "exactInput": false,
+      "expectedAmountCalculated": "467688143729"
+    },
+    {
+      "amountSpecified": "4410306186386",
+      "exactInput": false,
+      "expectedAmountCalculated": "4414899102322"
+    },
+    {
+      "amountSpecified": "5487563154420",
+      "exactInput": false,
+      "expectedAmountCalculated": "31589974422901656044342147119"
+    },
+    {
+      "amountSpecified": "1813031617872",
+      "exactInput": false,
+      "expectedAmountCalculated": "1814484168994"
+    },
+    {
+      "amountSpecified": "2929533159538",
+      "exactInput": false,
+      "expectedAmountCalculated": "2932182712109"
+    },
+    {
+      "amountSpecified": "3985645335008",
+      "exactInput": false,
+      "expectedAmountCalculated": "3989639424731"
+    },
+    {
+      "amountSpecified": "4867992091028",
+      "exactInput": false,
+      "expectedAmountCalculated": "4873341903308"
+    },
+    {
+      "amountSpecified": "4770472717005",
+      "exactInput": false,
+      "expectedAmountCalculated": "4775614829734"
+    },
+    {
+      "amountSpecified": "3043566023897",
+      "exactInput": false,
+      "expectedAmountCalculated": "3046350811895"
+    },
+    {
+      "amountSpecified": "778099688093",
+      "exactInput": false,
+      "expectedAmountCalculated": "778648621472"
+    },
+    {
+      "amountSpecified": "2580610152457",
+      "exactInput": false,
+      "expectedAmountCalculated": "2582860849788"
+    },
+    {
+      "amountSpecified": "2507337613212",
+      "exactInput": false,
+      "expectedAmountCalculated": "2509507414233"
+    },
+    {
+      "amountSpecified": "4980306162204",
+      "exactInput": false,
+      "expectedAmountCalculated": "4985971798151"
+    },
+    {
+      "amountSpecified": "718885515509",
+      "exactInput": false,
+      "expectedAmountCalculated": "719388738912"
+    },
+    {
+      "amountSpecified": "3281806941225",
+      "exactInput": false,
+      "expectedAmountCalculated": "3284882032021"
+    },
+    {
+      "amountSpecified": "3274899051045",
+      "exactInput": false,
+      "expectedAmountCalculated": "3277965576542"
+    },
+    {
+      "amountSpecified": "1064705450606",
+      "exactInput": false,
+      "expectedAmountCalculated": "1065484791709"
+    },
+    {
+      "amountSpecified": "5393232846430",
+      "exactInput": false,
+      "expectedAmountCalculated": "5405031175449"
+    },
+    {
+      "amountSpecified": "3232697430434",
+      "exactInput": false,
+      "expectedAmountCalculated": "3235711820640"
+    },
+    {
+      "amountSpecified": "3596544075734",
+      "exactInput": false,
+      "expectedAmountCalculated": "3600018785407"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640-reversed.json b/src/__tests__/stubs/swap/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640-reversed.json
new file mode 100644
index 00000000..d4c20eca
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640-reversed.json
@@ -0,0 +1,6616 @@
+{
+  "poolName": "USDC - WETH 500 - reversed",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
+    "decimals": 6
+  },
+  "fee": 500,
+  "liquidity": "49621921044244888348",
+  "sqrtRatioX96": "1808592725114317284201325338695910",
+  "tickCurrent": 200724,
+  "ticks": [
+    {
+      "index": -887270,
+      "liquidityNet": "2716288879863228",
+      "liquidityGross": "2716288879863228"
+    },
+    {
+      "index": -92110,
+      "liquidityNet": "398290794261",
+      "liquidityGross": "398290794261"
+    },
+    {
+      "index": 100,
+      "liquidityNet": "100",
+      "liquidityGross": "100"
+    },
+    {
+      "index": 110,
+      "liquidityNet": "-100",
+      "liquidityGross": "100"
+    },
+    {
+      "index": 22990,
+      "liquidityNet": "6147159285635",
+      "liquidityGross": "6147159285635"
+    },
+    {
+      "index": 46050,
+      "liquidityNet": "49345180497529",
+      "liquidityGross": "49345180497529"
+    },
+    {
+      "index": 92110,
+      "liquidityNet": "25157895928880",
+      "liquidityGross": "25157895928880"
+    },
+    {
+      "index": 102310,
+      "liquidityNet": "17093244380199",
+      "liquidityGross": "17093244380199"
+    },
+    {
+      "index": 108340,
+      "liquidityNet": "2266789968",
+      "liquidityGross": "2266789968"
+    },
+    {
+      "index": 108360,
+      "liquidityNet": "2273693713",
+      "liquidityGross": "2273693713"
+    },
+    {
+      "index": 108390,
+      "liquidityNet": "44739669244",
+      "liquidityGross": "44739669244"
+    },
+    {
+      "index": 115120,
+      "liquidityNet": "144810683332502",
+      "liquidityGross": "144810683332502"
+    },
+    {
+      "index": 156030,
+      "liquidityNet": "27166257770789",
+      "liquidityGross": "27166257770789"
+    },
+    {
+      "index": 161190,
+      "liquidityNet": "574355480",
+      "liquidityGross": "574355480"
+    },
+    {
+      "index": 168120,
+      "liquidityNet": "29191127261591",
+      "liquidityGross": "29191127261591"
+    },
+    {
+      "index": 173230,
+      "liquidityNet": "3859326398247386",
+      "liquidityGross": "3859326398247386"
+    },
+    {
+      "index": 174280,
+      "liquidityNet": "286162066019032",
+      "liquidityGross": "286162066019032"
+    },
+    {
+      "index": 175050,
+      "liquidityNet": "340116935413756",
+      "liquidityGross": "340116935413756"
+    },
+    {
+      "index": 175460,
+      "liquidityNet": "4921975053928",
+      "liquidityGross": "4921975053928"
+    },
+    {
+      "index": 177750,
+      "liquidityNet": "2556963071980969",
+      "liquidityGross": "2556963071980969"
+    },
+    {
+      "index": 178740,
+      "liquidityNet": "99690498623159",
+      "liquidityGross": "99690498623159"
+    },
+    {
+      "index": 180160,
+      "liquidityNet": "314418893940990",
+      "liquidityGross": "314418893940990"
+    },
+    {
+      "index": 180180,
+      "liquidityNet": "419968624358816",
+      "liquidityGross": "419968624358816"
+    },
+    {
+      "index": 181590,
+      "liquidityNet": "105220981852142",
+      "liquidityGross": "105220981852142"
+    },
+    {
+      "index": 181980,
+      "liquidityNet": "24126151433483",
+      "liquidityGross": "24126151433483"
+    },
+    {
+      "index": 182200,
+      "liquidityNet": "1131670065466301",
+      "liquidityGross": "1131670065466301"
+    },
+    {
+      "index": 182390,
+      "liquidityNet": "3031083108180922",
+      "liquidityGross": "3031083108180922"
+    },
+    {
+      "index": 182770,
+      "liquidityNet": "1084560033827482",
+      "liquidityGross": "1084560033827482"
+    },
+    {
+      "index": 183260,
+      "liquidityNet": "14920025509875",
+      "liquidityGross": "14920025509875"
+    },
+    {
+      "index": 184190,
+      "liquidityNet": "40617221865583",
+      "liquidityGross": "40617221865583"
+    },
+    {
+      "index": 184200,
+      "liquidityNet": "17409290878",
+      "liquidityGross": "17409290878"
+    },
+    {
+      "index": 184210,
+      "liquidityNet": "1393414729341552",
+      "liquidityGross": "1393414729341552"
+    },
+    {
+      "index": 184220,
+      "liquidityNet": "4645799703267811",
+      "liquidityGross": "4645799703267811"
+    },
+    {
+      "index": 185050,
+      "liquidityNet": "477197831652989",
+      "liquidityGross": "477197831652989"
+    },
+    {
+      "index": 185270,
+      "liquidityNet": "86488473467059",
+      "liquidityGross": "86488473467059"
+    },
+    {
+      "index": 186300,
+      "liquidityNet": "68676435560479",
+      "liquidityGross": "68676435560479"
+    },
+    {
+      "index": 186320,
+      "liquidityNet": "8039254639562",
+      "liquidityGross": "8039254639562"
+    },
+    {
+      "index": 186420,
+      "liquidityNet": "228699723058089",
+      "liquidityGross": "228699723058089"
+    },
+    {
+      "index": 186430,
+      "liquidityNet": "261844689822052",
+      "liquidityGross": "261844689822052"
+    },
+    {
+      "index": 186450,
+      "liquidityNet": "10512965999177",
+      "liquidityGross": "10512965999177"
+    },
+    {
+      "index": 187090,
+      "liquidityNet": "19044424560471866",
+      "liquidityGross": "19044424560471866"
+    },
+    {
+      "index": 187360,
+      "liquidityNet": "850806041748071",
+      "liquidityGross": "850806041748071"
+    },
+    {
+      "index": 187730,
+      "liquidityNet": "367328826880682",
+      "liquidityGross": "367328826880682"
+    },
+    {
+      "index": 187780,
+      "liquidityNet": "764099728061103",
+      "liquidityGross": "764099728061103"
+    },
+    {
+      "index": 187940,
+      "liquidityNet": "74505996884976",
+      "liquidityGross": "74505996884976"
+    },
+    {
+      "index": 188270,
+      "liquidityNet": "4212306482939579",
+      "liquidityGross": "4212306482939579"
+    },
+    {
+      "index": 188520,
+      "liquidityNet": "2475606916078208",
+      "liquidityGross": "2475606916078208"
+    },
+    {
+      "index": 188690,
+      "liquidityNet": "19316855156189",
+      "liquidityGross": "19316855156189"
+    },
+    {
+      "index": 189100,
+      "liquidityNet": "78220184069471",
+      "liquidityGross": "78220184069471"
+    },
+    {
+      "index": 189320,
+      "liquidityNet": "18444823332822362",
+      "liquidityGross": "18444823332822362"
+    },
+    {
+      "index": 189330,
+      "liquidityNet": "243565064399368",
+      "liquidityGross": "243565064399368"
+    },
+    {
+      "index": 189340,
+      "liquidityNet": "13452407513465956",
+      "liquidityGross": "13452407513465956"
+    },
+    {
+      "index": 189460,
+      "liquidityNet": "2659554920775",
+      "liquidityGross": "2659554920775"
+    },
+    {
+      "index": 189480,
+      "liquidityNet": "657687920129168",
+      "liquidityGross": "657687920129168"
+    },
+    {
+      "index": 189490,
+      "liquidityNet": "453600213217",
+      "liquidityGross": "453600213217"
+    },
+    {
+      "index": 189520,
+      "liquidityNet": "4355219688957",
+      "liquidityGross": "4355219688957"
+    },
+    {
+      "index": 189660,
+      "liquidityNet": "2997242742047791",
+      "liquidityGross": "2997242742047791"
+    },
+    {
+      "index": 189850,
+      "liquidityNet": "468965813987698",
+      "liquidityGross": "468965813987698"
+    },
+    {
+      "index": 190020,
+      "liquidityNet": "90619867897623278",
+      "liquidityGross": "90619867897623278"
+    },
+    {
+      "index": 190130,
+      "liquidityNet": "3077564238585",
+      "liquidityGross": "3077564238585"
+    },
+    {
+      "index": 190140,
+      "liquidityNet": "142527531752494",
+      "liquidityGross": "142527531752494"
+    },
+    {
+      "index": 190190,
+      "liquidityNet": "22089321051557425",
+      "liquidityGross": "22089321051557425"
+    },
+    {
+      "index": 190470,
+      "liquidityNet": "18792719936329890",
+      "liquidityGross": "18792719936329890"
+    },
+    {
+      "index": 190620,
+      "liquidityNet": "16614204290316",
+      "liquidityGross": "16614204290316"
+    },
+    {
+      "index": 190710,
+      "liquidityNet": "137677492457228",
+      "liquidityGross": "137677492457228"
+    },
+    {
+      "index": 190750,
+      "liquidityNet": "5792378655031556",
+      "liquidityGross": "5792378655031556"
+    },
+    {
+      "index": 190760,
+      "liquidityNet": "8008933170518698",
+      "liquidityGross": "8008933170518698"
+    },
+    {
+      "index": 190800,
+      "liquidityNet": "224082011199",
+      "liquidityGross": "224082011199"
+    },
+    {
+      "index": 190860,
+      "liquidityNet": "458239910053180",
+      "liquidityGross": "458239910053180"
+    },
+    {
+      "index": 190890,
+      "liquidityNet": "575535983177301",
+      "liquidityGross": "575535983177301"
+    },
+    {
+      "index": 190920,
+      "liquidityNet": "201125924508196",
+      "liquidityGross": "201125924508196"
+    },
+    {
+      "index": 190940,
+      "liquidityNet": "1144160810605153",
+      "liquidityGross": "1144160810605153"
+    },
+    {
+      "index": 190950,
+      "liquidityNet": "25292570502",
+      "liquidityGross": "25292570502"
+    },
+    {
+      "index": 191070,
+      "liquidityNet": "26970966237299547",
+      "liquidityGross": "26970966237299547"
+    },
+    {
+      "index": 191080,
+      "liquidityNet": "1833420897588024",
+      "liquidityGross": "1833420897588024"
+    },
+    {
+      "index": 191110,
+      "liquidityNet": "2537796806805945",
+      "liquidityGross": "2537796806805945"
+    },
+    {
+      "index": 191140,
+      "liquidityNet": "21452388431607709",
+      "liquidityGross": "21452439016748713"
+    },
+    {
+      "index": 191150,
+      "liquidityNet": "31715293607680278",
+      "liquidityGross": "31715293607680278"
+    },
+    {
+      "index": 191160,
+      "liquidityNet": "550442191879715",
+      "liquidityGross": "550442191879715"
+    },
+    {
+      "index": 191200,
+      "liquidityNet": "567015344253415",
+      "liquidityGross": "567015344253415"
+    },
+    {
+      "index": 191250,
+      "liquidityNet": "91940267068266",
+      "liquidityGross": "91940267068266"
+    },
+    {
+      "index": 191340,
+      "liquidityNet": "47944910966622481",
+      "liquidityGross": "47944910966622481"
+    },
+    {
+      "index": 191350,
+      "liquidityNet": "129827948505068",
+      "liquidityGross": "129827948505068"
+    },
+    {
+      "index": 191360,
+      "liquidityNet": "5188820077378081",
+      "liquidityGross": "5188820077378081"
+    },
+    {
+      "index": 191380,
+      "liquidityNet": "5290420273494589",
+      "liquidityGross": "5290420273494589"
+    },
+    {
+      "index": 191400,
+      "liquidityNet": "255303229099437",
+      "liquidityGross": "255303229099437"
+    },
+    {
+      "index": 191420,
+      "liquidityNet": "938972280513385",
+      "liquidityGross": "938972280513385"
+    },
+    {
+      "index": 191520,
+      "liquidityNet": "30278117302711867",
+      "liquidityGross": "30278117302711867"
+    },
+    {
+      "index": 191590,
+      "liquidityNet": "31987028823439",
+      "liquidityGross": "31987028823439"
+    },
+    {
+      "index": 191650,
+      "liquidityNet": "22299784828533",
+      "liquidityGross": "22299784828533"
+    },
+    {
+      "index": 191660,
+      "liquidityNet": "127110990114945",
+      "liquidityGross": "127110990114945"
+    },
+    {
+      "index": 191720,
+      "liquidityNet": "233928666178226",
+      "liquidityGross": "233928666178226"
+    },
+    {
+      "index": 191780,
+      "liquidityNet": "269054369894937",
+      "liquidityGross": "269054369894937"
+    },
+    {
+      "index": 191790,
+      "liquidityNet": "647230069137340",
+      "liquidityGross": "647230069137340"
+    },
+    {
+      "index": 191840,
+      "liquidityNet": "110172609084353",
+      "liquidityGross": "110172609084353"
+    },
+    {
+      "index": 191870,
+      "liquidityNet": "27685282132444",
+      "liquidityGross": "27685282132444"
+    },
+    {
+      "index": 191930,
+      "liquidityNet": "10497484848368857",
+      "liquidityGross": "10497484848368857"
+    },
+    {
+      "index": 191960,
+      "liquidityNet": "979568660854443",
+      "liquidityGross": "979568660854443"
+    },
+    {
+      "index": 191980,
+      "liquidityNet": "5424360439564036",
+      "liquidityGross": "5424360439564036"
+    },
+    {
+      "index": 192010,
+      "liquidityNet": "-1291672839955340",
+      "liquidityGross": "1291672839955340"
+    },
+    {
+      "index": 192040,
+      "liquidityNet": "-147036927562019",
+      "liquidityGross": "147036927562019"
+    },
+    {
+      "index": 192060,
+      "liquidityNet": "-110172609084353",
+      "liquidityGross": "110172609084353"
+    },
+    {
+      "index": 192070,
+      "liquidityNet": "140326580976",
+      "liquidityGross": "140326580976"
+    },
+    {
+      "index": 192080,
+      "liquidityNet": "4529554013872",
+      "liquidityGross": "4529554013872"
+    },
+    {
+      "index": 192200,
+      "liquidityNet": "7451329750440128",
+      "liquidityGross": "10715171605174410"
+    },
+    {
+      "index": 192340,
+      "liquidityNet": "13506826513573",
+      "liquidityGross": "13506826513573"
+    },
+    {
+      "index": 192380,
+      "liquidityNet": "-2692443696620189",
+      "liquidityGross": "2692443696620189"
+    },
+    {
+      "index": 192430,
+      "liquidityNet": "-10497484848368857",
+      "liquidityGross": "10497484848368857"
+    },
+    {
+      "index": 192470,
+      "liquidityNet": "3651606078237373",
+      "liquidityGross": "3651606078237373"
+    },
+    {
+      "index": 192540,
+      "liquidityNet": "-141815289",
+      "liquidityGross": "2239138129"
+    },
+    {
+      "index": 192580,
+      "liquidityNet": "3790906020488205",
+      "liquidityGross": "3790906020488205"
+    },
+    {
+      "index": 192600,
+      "liquidityNet": "-3644394708515212",
+      "liquidityGross": "3937417332461198"
+    },
+    {
+      "index": 192610,
+      "liquidityNet": "260665095269471",
+      "liquidityGross": "260665095269471"
+    },
+    {
+      "index": 192660,
+      "liquidityNet": "1527033429707466",
+      "liquidityGross": "1527033429707466"
+    },
+    {
+      "index": 192780,
+      "liquidityNet": "37325566006078",
+      "liquidityGross": "37325566006078"
+    },
+    {
+      "index": 192860,
+      "liquidityNet": "132275722559100",
+      "liquidityGross": "132275722559100"
+    },
+    {
+      "index": 192890,
+      "liquidityNet": "12548033716619176",
+      "liquidityGross": "12554507952740636"
+    },
+    {
+      "index": 192900,
+      "liquidityNet": "5875113052435318",
+      "liquidityGross": "5875113052435318"
+    },
+    {
+      "index": 192920,
+      "liquidityNet": "1271190279969978",
+      "liquidityGross": "1271190279969978"
+    },
+    {
+      "index": 192930,
+      "liquidityNet": "380121176868823",
+      "liquidityGross": "380121176868823"
+    },
+    {
+      "index": 192970,
+      "liquidityNet": "-380121176868823",
+      "liquidityGross": "380121176868823"
+    },
+    {
+      "index": 193000,
+      "liquidityNet": "58278198966",
+      "liquidityGross": "58278198966"
+    },
+    {
+      "index": 193010,
+      "liquidityNet": "-140326580976",
+      "liquidityGross": "140326580976"
+    },
+    {
+      "index": 193020,
+      "liquidityNet": "939548715160843",
+      "liquidityGross": "939548715160843"
+    },
+    {
+      "index": 193030,
+      "liquidityNet": "98698960755",
+      "liquidityGross": "98698960755"
+    },
+    {
+      "index": 193120,
+      "liquidityNet": "5093975067",
+      "liquidityGross": "5093975067"
+    },
+    {
+      "index": 193130,
+      "liquidityNet": "1374788092377474",
+      "liquidityGross": "1374788092377474"
+    },
+    {
+      "index": 193160,
+      "liquidityNet": "-639430873",
+      "liquidityGross": "196758490637"
+    },
+    {
+      "index": 193180,
+      "liquidityNet": "-3849302575662331",
+      "liquidityGross": "6999418303465741"
+    },
+    {
+      "index": 193220,
+      "liquidityNet": "-455557811709710",
+      "liquidityGross": "2694674472491632"
+    },
+    {
+      "index": 193260,
+      "liquidityNet": "1104687768",
+      "liquidityGross": "1104687768"
+    },
+    {
+      "index": 193290,
+      "liquidityNet": "-88317105720",
+      "liquidityGross": "107801954044"
+    },
+    {
+      "index": 193300,
+      "liquidityNet": "5490072800",
+      "liquidityGross": "5490072800"
+    },
+    {
+      "index": 193310,
+      "liquidityNet": "1321177965",
+      "liquidityGross": "1321177965"
+    },
+    {
+      "index": 193320,
+      "liquidityNet": "99632773513906",
+      "liquidityGross": "99632773513906"
+    },
+    {
+      "index": 193330,
+      "liquidityNet": "1056433670807",
+      "liquidityGross": "1056433670807"
+    },
+    {
+      "index": 193360,
+      "liquidityNet": "3901301605215",
+      "liquidityGross": "3901301605215"
+    },
+    {
+      "index": 193370,
+      "liquidityNet": "15759466717948",
+      "liquidityGross": "15769654668082"
+    },
+    {
+      "index": 193380,
+      "liquidityNet": "77651808433686788",
+      "liquidityGross": "77651808433686788"
+    },
+    {
+      "index": 193420,
+      "liquidityNet": "87050644984",
+      "liquidityGross": "106535493308"
+    },
+    {
+      "index": 193440,
+      "liquidityNet": "570101417623",
+      "liquidityGross": "570101417623"
+    },
+    {
+      "index": 193450,
+      "liquidityNet": "157249594032733",
+      "liquidityGross": "157249594032733"
+    },
+    {
+      "index": 193460,
+      "liquidityNet": "623826208420208",
+      "liquidityGross": "623826208420208"
+    },
+    {
+      "index": 193510,
+      "liquidityNet": "179220340303798",
+      "liquidityGross": "179220340303798"
+    },
+    {
+      "index": 193530,
+      "liquidityNet": "-157255084105533",
+      "liquidityGross": "157255084105533"
+    },
+    {
+      "index": 193550,
+      "liquidityNet": "-96793069146",
+      "liquidityGross": "96793069146"
+    },
+    {
+      "index": 193560,
+      "liquidityNet": "-91895808203645",
+      "liquidityGross": "91984725932887"
+    },
+    {
+      "index": 193570,
+      "liquidityNet": "417345483866658",
+      "liquidityGross": "417345483866658"
+    },
+    {
+      "index": 193580,
+      "liquidityNet": "-179220340303798",
+      "liquidityGross": "179220340303798"
+    },
+    {
+      "index": 193600,
+      "liquidityNet": "-417345483866658",
+      "liquidityGross": "417345483866658"
+    },
+    {
+      "index": 193630,
+      "liquidityNet": "57987077630908130",
+      "liquidityGross": "57987077630908130"
+    },
+    {
+      "index": 193640,
+      "liquidityNet": "23096167522516331",
+      "liquidityGross": "23096167522516331"
+    },
+    {
+      "index": 193660,
+      "liquidityNet": "-570101417623",
+      "liquidityGross": "570101417623"
+    },
+    {
+      "index": 193670,
+      "liquidityNet": "14150488557745",
+      "liquidityGross": "14150488557745"
+    },
+    {
+      "index": 193680,
+      "liquidityNet": "35416386370631",
+      "liquidityGross": "35416386370631"
+    },
+    {
+      "index": 193690,
+      "liquidityNet": "1501847773342629",
+      "liquidityGross": "1501847773342629"
+    },
+    {
+      "index": 193700,
+      "liquidityNet": "262094583581",
+      "liquidityGross": "262094583581"
+    },
+    {
+      "index": 193710,
+      "liquidityNet": "7952536320912254",
+      "liquidityGross": "7952536320912254"
+    },
+    {
+      "index": 193720,
+      "liquidityNet": "996622660873",
+      "liquidityGross": "996622660873"
+    },
+    {
+      "index": 193730,
+      "liquidityNet": "3908448339193",
+      "liquidityGross": "3908448339193"
+    },
+    {
+      "index": 193760,
+      "liquidityNet": "1004824052",
+      "liquidityGross": "3102146892"
+    },
+    {
+      "index": 193790,
+      "liquidityNet": "2950851383647149",
+      "liquidityGross": "2950851383647149"
+    },
+    {
+      "index": 193820,
+      "liquidityNet": "1042789587533",
+      "liquidityGross": "1042789587533"
+    },
+    {
+      "index": 193830,
+      "liquidityNet": "-26970966237299547",
+      "liquidityGross": "26970966237299547"
+    },
+    {
+      "index": 193840,
+      "liquidityNet": "-44458864621",
+      "liquidityGross": "44458864621"
+    },
+    {
+      "index": 193850,
+      "liquidityNet": "-2950851383647149",
+      "liquidityGross": "2950851383647149"
+    },
+    {
+      "index": 193860,
+      "liquidityNet": "696678463852447",
+      "liquidityGross": "696678463852447"
+    },
+    {
+      "index": 193890,
+      "liquidityNet": "10009087643467074",
+      "liquidityGross": "11230992382562938"
+    },
+    {
+      "index": 193910,
+      "liquidityNet": "33955042064486354",
+      "liquidityGross": "33955042064486354"
+    },
+    {
+      "index": 193930,
+      "liquidityNet": "4070062451646194",
+      "liquidityGross": "4070062451646194"
+    },
+    {
+      "index": 193960,
+      "liquidityNet": "1822386206570",
+      "liquidityGross": "3907965381636"
+    },
+    {
+      "index": 193970,
+      "liquidityNet": "-4070062451646194",
+      "liquidityGross": "4070062451646194"
+    },
+    {
+      "index": 194000,
+      "liquidityNet": "578487187670509",
+      "liquidityGross": "578487187670509"
+    },
+    {
+      "index": 194010,
+      "liquidityNet": "263734251749565",
+      "liquidityGross": "263734251749565"
+    },
+    {
+      "index": 194020,
+      "liquidityNet": "40254458411129649",
+      "liquidityGross": "50632098565885811"
+    },
+    {
+      "index": 194090,
+      "liquidityNet": "-516393172018",
+      "liquidityGross": "5213958416188"
+    },
+    {
+      "index": 194150,
+      "liquidityNet": "623119118803433",
+      "liquidityGross": "623119118803433"
+    },
+    {
+      "index": 194160,
+      "liquidityNet": "967325374532163",
+      "liquidityGross": "967325374532163"
+    },
+    {
+      "index": 194190,
+      "liquidityNet": "450326129199120",
+      "liquidityGross": "450326129199120"
+    },
+    {
+      "index": 194220,
+      "liquidityNet": "-47944910966622481",
+      "liquidityGross": "47944910966622481"
+    },
+    {
+      "index": 194230,
+      "liquidityNet": "-139222667605",
+      "liquidityGross": "4558342576565"
+    },
+    {
+      "index": 194260,
+      "liquidityNet": "1342889865041",
+      "liquidityGross": "1342889865041"
+    },
+    {
+      "index": 194300,
+      "liquidityNet": "-832531733292424",
+      "liquidityGross": "832531733292424"
+    },
+    {
+      "index": 194320,
+      "liquidityNet": "-4921975053928",
+      "liquidityGross": "4921975053928"
+    },
+    {
+      "index": 194330,
+      "liquidityNet": "27821650068152",
+      "liquidityGross": "27821650068152"
+    },
+    {
+      "index": 194340,
+      "liquidityNet": "12926963309367",
+      "liquidityGross": "12926963309367"
+    },
+    {
+      "index": 194350,
+      "liquidityNet": "3531029817741",
+      "liquidityGross": "3531029817741"
+    },
+    {
+      "index": 194360,
+      "liquidityNet": "509757247476",
+      "liquidityGross": "509757247476"
+    },
+    {
+      "index": 194380,
+      "liquidityNet": "-2209802648926",
+      "liquidityGross": "2212642295254"
+    },
+    {
+      "index": 194420,
+      "liquidityNet": "340283129357924",
+      "liquidityGross": "340283129357924"
+    },
+    {
+      "index": 194430,
+      "liquidityNet": "2977903715431593",
+      "liquidityGross": "2977903715431593"
+    },
+    {
+      "index": 194460,
+      "liquidityNet": "5127849862334345",
+      "liquidityGross": "5127849862334345"
+    },
+    {
+      "index": 194580,
+      "liquidityNet": "-657687920129168",
+      "liquidityGross": "657687920129168"
+    },
+    {
+      "index": 194590,
+      "liquidityNet": "268446570641767",
+      "liquidityGross": "268446570641767"
+    },
+    {
+      "index": 194600,
+      "liquidityNet": "1121321520802207",
+      "liquidityGross": "1121321520802207"
+    },
+    {
+      "index": 194610,
+      "liquidityNet": "5967819685",
+      "liquidityGross": "5967819685"
+    },
+    {
+      "index": 194630,
+      "liquidityNet": "6424490195576071",
+      "liquidityGross": "8667133237180485"
+    },
+    {
+      "index": 194640,
+      "liquidityNet": "1238910149582598",
+      "liquidityGross": "1238910149582598"
+    },
+    {
+      "index": 194650,
+      "liquidityNet": "146880718656569979",
+      "liquidityGross": "150541502021557115"
+    },
+    {
+      "index": 194660,
+      "liquidityNet": "14126064628972610",
+      "liquidityGross": "14126064628972610"
+    },
+    {
+      "index": 194670,
+      "liquidityNet": "1200550723673258",
+      "liquidityGross": "1200550723673258"
+    },
+    {
+      "index": 194680,
+      "liquidityNet": "-144772926773805064",
+      "liquidityGross": "152649293904322030"
+    },
+    {
+      "index": 194690,
+      "liquidityNet": "-1093775182336858",
+      "liquidityGross": "1093775182336858"
+    },
+    {
+      "index": 194700,
+      "liquidityNet": "4950483449383950",
+      "liquidityGross": "4950483449383950"
+    },
+    {
+      "index": 194710,
+      "liquidityNet": "367192869355612256",
+      "liquidityGross": "369725591327783112"
+    },
+    {
+      "index": 194720,
+      "liquidityNet": "38466559516912",
+      "liquidityGross": "38466559516912"
+    },
+    {
+      "index": 194750,
+      "liquidityNet": "-1182669380098989",
+      "liquidityGross": "1182669380098989"
+    },
+    {
+      "index": 194790,
+      "liquidityNet": "931490015694351",
+      "liquidityGross": "931490015694351"
+    },
+    {
+      "index": 194800,
+      "liquidityNet": "-239688404716091",
+      "liquidityGross": "1623291626672611"
+    },
+    {
+      "index": 194820,
+      "liquidityNet": "-4998254988088075",
+      "liquidityGross": "5941291889963439"
+    },
+    {
+      "index": 194830,
+      "liquidityNet": "-14688771335513",
+      "liquidityGross": "14688771335513"
+    },
+    {
+      "index": 194840,
+      "liquidityNet": "-26943481088147",
+      "liquidityGross": "49989637945677"
+    },
+    {
+      "index": 194850,
+      "liquidityNet": "-3938183565258483",
+      "liquidityGross": "3938183565258483"
+    },
+    {
+      "index": 194860,
+      "liquidityNet": "176065490988280",
+      "liquidityGross": "176065490988280"
+    },
+    {
+      "index": 194870,
+      "liquidityNet": "76050718029248",
+      "liquidityGross": "76050718029248"
+    },
+    {
+      "index": 194880,
+      "liquidityNet": "151573708324872",
+      "liquidityGross": "151573708324872"
+    },
+    {
+      "index": 194890,
+      "liquidityNet": "187004715148085",
+      "liquidityGross": "187004715148085"
+    },
+    {
+      "index": 194900,
+      "liquidityNet": "66651400156776",
+      "liquidityGross": "66651400156776"
+    },
+    {
+      "index": 194910,
+      "liquidityNet": "-66651400156776",
+      "liquidityGross": "66651400156776"
+    },
+    {
+      "index": 194920,
+      "liquidityNet": "538225609134",
+      "liquidityGross": "538225609134"
+    },
+    {
+      "index": 194940,
+      "liquidityNet": "-158603085041991",
+      "liquidityGross": "329642226505221"
+    },
+    {
+      "index": 194960,
+      "liquidityNet": "-244811998431587",
+      "liquidityGross": "244811998431587"
+    },
+    {
+      "index": 194970,
+      "liquidityNet": "1802701792613418",
+      "liquidityGross": "2105849209263162"
+    },
+    {
+      "index": 194980,
+      "liquidityNet": "6564461945745269",
+      "liquidityGross": "6564461945745269"
+    },
+    {
+      "index": 194990,
+      "liquidityNet": "25652705721581",
+      "liquidityGross": "25652705721581"
+    },
+    {
+      "index": 195000,
+      "liquidityNet": "-10544119557858157",
+      "liquidityGross": "15589353696767803"
+    },
+    {
+      "index": 195010,
+      "liquidityNet": "-25652705721581",
+      "liquidityGross": "25652705721581"
+    },
+    {
+      "index": 195030,
+      "liquidityNet": "26218236507224832",
+      "liquidityGross": "26431787589897632"
+    },
+    {
+      "index": 195040,
+      "liquidityNet": "-268446570641767",
+      "liquidityGross": "268446570641767"
+    },
+    {
+      "index": 195060,
+      "liquidityNet": "694346801997580",
+      "liquidityGross": "694346801997580"
+    },
+    {
+      "index": 195070,
+      "liquidityNet": "-1413125670",
+      "liquidityGross": "1413125670"
+    },
+    {
+      "index": 195080,
+      "liquidityNet": "1401403373492671",
+      "liquidityGross": "1401403373492671"
+    },
+    {
+      "index": 195100,
+      "liquidityNet": "-9608101227835",
+      "liquidityGross": "17405551799311"
+    },
+    {
+      "index": 195120,
+      "liquidityNet": "666421956716576",
+      "liquidityGross": "666421956716576"
+    },
+    {
+      "index": 195200,
+      "liquidityNet": "-1406872423671",
+      "liquidityGross": "1406872423671"
+    },
+    {
+      "index": 195210,
+      "liquidityNet": "-219252698",
+      "liquidityGross": "2785453550"
+    },
+    {
+      "index": 195220,
+      "liquidityNet": "249860422507099",
+      "liquidityGross": "250879937002051"
+    },
+    {
+      "index": 195240,
+      "liquidityNet": "12141064759829",
+      "liquidityGross": "12141064759829"
+    },
+    {
+      "index": 195300,
+      "liquidityNet": "15056748437210771",
+      "liquidityGross": "15056748437210771"
+    },
+    {
+      "index": 195310,
+      "liquidityNet": "24854740811526245",
+      "liquidityGross": "24854740811526245"
+    },
+    {
+      "index": 195320,
+      "liquidityNet": "-647230069137340",
+      "liquidityGross": "647230069137340"
+    },
+    {
+      "index": 195330,
+      "liquidityNet": "48002573667553",
+      "liquidityGross": "48002573667553"
+    },
+    {
+      "index": 195350,
+      "liquidityNet": "203533410679462",
+      "liquidityGross": "203533410679462"
+    },
+    {
+      "index": 195360,
+      "liquidityNet": "532218566682991",
+      "liquidityGross": "532218566682991"
+    },
+    {
+      "index": 195380,
+      "liquidityNet": "104",
+      "liquidityGross": "104"
+    },
+    {
+      "index": 195430,
+      "liquidityNet": "1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 195440,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 195450,
+      "liquidityNet": "98203969114105",
+      "liquidityGross": "98203969114105"
+    },
+    {
+      "index": 195520,
+      "liquidityNet": "130582021559616",
+      "liquidityGross": "130582021559616"
+    },
+    {
+      "index": 195540,
+      "liquidityNet": "-550442191879715",
+      "liquidityGross": "550442191879715"
+    },
+    {
+      "index": 195550,
+      "liquidityNet": "11371938456027640",
+      "liquidityGross": "11568346394255850"
+    },
+    {
+      "index": 195570,
+      "liquidityNet": "14804467337715268",
+      "liquidityGross": "14804467337715268"
+    },
+    {
+      "index": 195580,
+      "liquidityNet": "24235738425984",
+      "liquidityGross": "24235738425984"
+    },
+    {
+      "index": 195590,
+      "liquidityNet": "-14415848812699787",
+      "liquidityGross": "15193085862730749"
+    },
+    {
+      "index": 195600,
+      "liquidityNet": "-384687958841511",
+      "liquidityGross": "392549091189451"
+    },
+    {
+      "index": 195610,
+      "liquidityNet": "1355596925669521547",
+      "liquidityGross": "1355956322656528591"
+    },
+    {
+      "index": 195620,
+      "liquidityNet": "-12537396996603672",
+      "liquidityGross": "12538647922424510"
+    },
+    {
+      "index": 195660,
+      "liquidityNet": "61045376348774",
+      "liquidityGross": "61045376348774"
+    },
+    {
+      "index": 195730,
+      "liquidityNet": "4397491169475027",
+      "liquidityGross": "4397491169475027"
+    },
+    {
+      "index": 195740,
+      "liquidityNet": "101",
+      "liquidityGross": "101"
+    },
+    {
+      "index": 195750,
+      "liquidityNet": "-4350147384955596",
+      "liquidityGross": "4444834953994460"
+    },
+    {
+      "index": 195790,
+      "liquidityNet": "-46686970289721",
+      "liquidityGross": "48000598749143"
+    },
+    {
+      "index": 195800,
+      "liquidityNet": "72232194614980",
+      "liquidityGross": "73483120435818"
+    },
+    {
+      "index": 195820,
+      "liquidityNet": "51329394322148",
+      "liquidityGross": "51329394322148"
+    },
+    {
+      "index": 195830,
+      "liquidityNet": "519652585288",
+      "liquidityGross": "519652585288"
+    },
+    {
+      "index": 195860,
+      "liquidityNet": "3662826946255273",
+      "liquidityGross": "3662826946255273"
+    },
+    {
+      "index": 195870,
+      "liquidityNet": "-3580910745440601",
+      "liquidityGross": "3580910745440601"
+    },
+    {
+      "index": 195890,
+      "liquidityNet": "1130623930463",
+      "liquidityGross": "1130623930463"
+    },
+    {
+      "index": 195910,
+      "liquidityNet": "2509357044073",
+      "liquidityGross": "2509357044073"
+    },
+    {
+      "index": 195930,
+      "liquidityNet": "152608862707730447",
+      "liquidityGross": "152781916909910933"
+    },
+    {
+      "index": 195940,
+      "liquidityNet": "4994883009476853",
+      "liquidityGross": "4994883009476853"
+    },
+    {
+      "index": 195960,
+      "liquidityNet": "-656814229711",
+      "liquidityGross": "656814229711"
+    },
+    {
+      "index": 195970,
+      "liquidityNet": "-1526891065935595",
+      "liquidityGross": "1526891065935595"
+    },
+    {
+      "index": 196000,
+      "liquidityNet": "-37325566006078",
+      "liquidityGross": "37325566006078"
+    },
+    {
+      "index": 196010,
+      "liquidityNet": "13492027754574715",
+      "liquidityGross": "13492027754574715"
+    },
+    {
+      "index": 196030,
+      "liquidityNet": "271363588399423",
+      "liquidityGross": "271363588399423"
+    },
+    {
+      "index": 196050,
+      "liquidityNet": "71652250958",
+      "liquidityGross": "71652250958"
+    },
+    {
+      "index": 196060,
+      "liquidityNet": "-10412471768880",
+      "liquidityGross": "10454677734044"
+    },
+    {
+      "index": 196080,
+      "liquidityNet": "1277492174934785",
+      "liquidityGross": "1277492174934785"
+    },
+    {
+      "index": 196090,
+      "liquidityNet": "-943425518917653",
+      "liquidityGross": "943428409764095"
+    },
+    {
+      "index": 196100,
+      "liquidityNet": "53043049614877",
+      "liquidityGross": "53043049614877"
+    },
+    {
+      "index": 196130,
+      "liquidityNet": "-3898725285738",
+      "liquidityGross": "3898725285738"
+    },
+    {
+      "index": 196160,
+      "liquidityNet": "7699417542060044",
+      "liquidityGross": "8434075195821408"
+    },
+    {
+      "index": 196170,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 196210,
+      "liquidityNet": "64532086810",
+      "liquidityGross": "64532086810"
+    },
+    {
+      "index": 196220,
+      "liquidityNet": "5707363499300068",
+      "liquidityGross": "5707363499300070"
+    },
+    {
+      "index": 196250,
+      "liquidityNet": "23077597236750254",
+      "liquidityGross": "23077597236750254"
+    },
+    {
+      "index": 196260,
+      "liquidityNet": "490097613953569803",
+      "liquidityGross": "494873718523923257"
+    },
+    {
+      "index": 196270,
+      "liquidityNet": "257949016690013",
+      "liquidityGross": "257949016690013"
+    },
+    {
+      "index": 196280,
+      "liquidityNet": "257095857666506",
+      "liquidityGross": "318989869121494"
+    },
+    {
+      "index": 196300,
+      "liquidityNet": "8517146608764286",
+      "liquidityGross": "8517146608764286"
+    },
+    {
+      "index": 196310,
+      "liquidityNet": "1147066429699",
+      "liquidityGross": "1147066429699"
+    },
+    {
+      "index": 196320,
+      "liquidityNet": "-7089965738828687",
+      "liquidityGross": "7089965738828687"
+    },
+    {
+      "index": 196340,
+      "liquidityNet": "12196434850220449",
+      "liquidityGross": "12196434850220449"
+    },
+    {
+      "index": 196470,
+      "liquidityNet": "1951811236200",
+      "liquidityGross": "1951811236200"
+    },
+    {
+      "index": 196480,
+      "liquidityNet": "-698427690830837",
+      "liquidityGross": "698427690830837"
+    },
+    {
+      "index": 196490,
+      "liquidityNet": "108250602293425784",
+      "liquidityGross": "108250602293425784"
+    },
+    {
+      "index": 196500,
+      "liquidityNet": "-108250602293425784",
+      "liquidityGross": "108250602293425784"
+    },
+    {
+      "index": 196510,
+      "liquidityNet": "-2515324863758",
+      "liquidityGross": "2515324863758"
+    },
+    {
+      "index": 196520,
+      "liquidityNet": "-137677492457228",
+      "liquidityGross": "137677492457228"
+    },
+    {
+      "index": 196530,
+      "liquidityNet": "-519652585288",
+      "liquidityGross": "519652585288"
+    },
+    {
+      "index": 196560,
+      "liquidityNet": "739676173805",
+      "liquidityGross": "739676173805"
+    },
+    {
+      "index": 196590,
+      "liquidityNet": "188375883485241",
+      "liquidityGross": "188375883485241"
+    },
+    {
+      "index": 196600,
+      "liquidityNet": "-10898347096848166",
+      "liquidityGross": "12041937753435324"
+    },
+    {
+      "index": 196650,
+      "liquidityNet": "-1829636824896703",
+      "liquidityGross": "1829636824896703"
+    },
+    {
+      "index": 196660,
+      "liquidityNet": "-1951811236200",
+      "liquidityGross": "1951811236200"
+    },
+    {
+      "index": 196690,
+      "liquidityNet": "-1304217361031563",
+      "liquidityGross": "1304217361031563"
+    },
+    {
+      "index": 196740,
+      "liquidityNet": "-100",
+      "liquidityGross": "100"
+    },
+    {
+      "index": 196760,
+      "liquidityNet": "-278499574540156",
+      "liquidityGross": "278499574540156"
+    },
+    {
+      "index": 196770,
+      "liquidityNet": "239359700163574",
+      "liquidityGross": "239359700163574"
+    },
+    {
+      "index": 196790,
+      "liquidityNet": "1066390407623954",
+      "liquidityGross": "1066390407623954"
+    },
+    {
+      "index": 196800,
+      "liquidityNet": "12084217892414819",
+      "liquidityGross": "14216998707662727"
+    },
+    {
+      "index": 196820,
+      "liquidityNet": "31507067812105",
+      "liquidityGross": "31507067812105"
+    },
+    {
+      "index": 196840,
+      "liquidityNet": "-14334110",
+      "liquidityGross": "2876512332"
+    },
+    {
+      "index": 196850,
+      "liquidityNet": "56882",
+      "liquidityGross": "56882"
+    },
+    {
+      "index": 196860,
+      "liquidityNet": "-61045376348774",
+      "liquidityGross": "61045376348774"
+    },
+    {
+      "index": 196870,
+      "liquidityNet": "-1875018971419632",
+      "liquidityGross": "1875018971419632"
+    },
+    {
+      "index": 196890,
+      "liquidityNet": "-428994694244339",
+      "liquidityGross": "429357564633105"
+    },
+    {
+      "index": 196910,
+      "liquidityNet": "37264507541534316",
+      "liquidityGross": "37264507541534316"
+    },
+    {
+      "index": 196920,
+      "liquidityNet": "69186547099629891",
+      "liquidityGross": "69186547099629891"
+    },
+    {
+      "index": 196940,
+      "liquidityNet": "76877750333830274",
+      "liquidityGross": "76877750333830274"
+    },
+    {
+      "index": 196950,
+      "liquidityNet": "3688176262712448",
+      "liquidityGross": "5262175446966750"
+    },
+    {
+      "index": 196970,
+      "liquidityNet": "1021324045353797",
+      "liquidityGross": "1021324045353797"
+    },
+    {
+      "index": 196980,
+      "liquidityNet": "10605642295147",
+      "liquidityGross": "10605642295147"
+    },
+    {
+      "index": 196990,
+      "liquidityNet": "-1021236380313973",
+      "liquidityGross": "1021411710393621"
+    },
+    {
+      "index": 197000,
+      "liquidityNet": "28959425226591",
+      "liquidityGross": "28959425226591"
+    },
+    {
+      "index": 197030,
+      "liquidityNet": "1028121162429240068",
+      "liquidityGross": "1028121162429240068"
+    },
+    {
+      "index": 197050,
+      "liquidityNet": "2174495135868337",
+      "liquidityGross": "2174495135868337"
+    },
+    {
+      "index": 197070,
+      "liquidityNet": "-132275722559100",
+      "liquidityGross": "132275722559100"
+    },
+    {
+      "index": 197080,
+      "liquidityNet": "-15493378422786",
+      "liquidityGross": "15493378422786"
+    },
+    {
+      "index": 197110,
+      "liquidityNet": "-2203454561094928",
+      "liquidityGross": "2203454561094928"
+    },
+    {
+      "index": 197120,
+      "liquidityNet": "-578487187670509",
+      "liquidityGross": "578487187670509"
+    },
+    {
+      "index": 197130,
+      "liquidityNet": "19349839949802235",
+      "liquidityGross": "19349839949802235"
+    },
+    {
+      "index": 197150,
+      "liquidityNet": "58673121414153",
+      "liquidityGross": "59749572632421"
+    },
+    {
+      "index": 197160,
+      "liquidityNet": "1285538759068549",
+      "liquidityGross": "1285538759068549"
+    },
+    {
+      "index": 197200,
+      "liquidityNet": "-1285536236288114",
+      "liquidityGross": "1285541281848984"
+    },
+    {
+      "index": 197220,
+      "liquidityNet": "-108859507196781",
+      "liquidityGross": "108859507196781"
+    },
+    {
+      "index": 197230,
+      "liquidityNet": "107854802543396",
+      "liquidityGross": "107854802543396"
+    },
+    {
+      "index": 197240,
+      "liquidityNet": "-30011967107342",
+      "liquidityGross": "30011967107342"
+    },
+    {
+      "index": 197250,
+      "liquidityNet": "1117313825205008",
+      "liquidityGross": "1117313825205008"
+    },
+    {
+      "index": 197260,
+      "liquidityNet": "8308484297467205",
+      "liquidityGross": "8308484297467205"
+    },
+    {
+      "index": 197280,
+      "liquidityNet": "-1089503677303",
+      "liquidityGross": "1089503677303"
+    },
+    {
+      "index": 197310,
+      "liquidityNet": "-15559019011565462",
+      "liquidityGross": "65620105681416948"
+    },
+    {
+      "index": 197320,
+      "liquidityNet": "515954523577612",
+      "liquidityGross": "515954523577612"
+    },
+    {
+      "index": 197330,
+      "liquidityNet": "23425215916462",
+      "liquidityGross": "23425215916462"
+    },
+    {
+      "index": 197340,
+      "liquidityNet": "-97186012461108",
+      "liquidityGross": "97186012461108"
+    },
+    {
+      "index": 197350,
+      "liquidityNet": "-8205159791593",
+      "liquidityGross": "38645272041331"
+    },
+    {
+      "index": 197360,
+      "liquidityNet": "19815577475052200",
+      "liquidityGross": "19815577475052200"
+    },
+    {
+      "index": 197370,
+      "liquidityNet": "-80461899445995",
+      "liquidityGross": "80461899445995"
+    },
+    {
+      "index": 197380,
+      "liquidityNet": "16132804791609061",
+      "liquidityGross": "18174896587534819"
+    },
+    {
+      "index": 197400,
+      "liquidityNet": "4214403944817820",
+      "liquidityGross": "4214403944817820"
+    },
+    {
+      "index": 197410,
+      "liquidityNet": "641769943988365",
+      "liquidityGross": "641769943988365"
+    },
+    {
+      "index": 197430,
+      "liquidityNet": "273586305705783",
+      "liquidityGross": "483268679727673"
+    },
+    {
+      "index": 197440,
+      "liquidityNet": "-4214403944817820",
+      "liquidityGross": "4214403944817820"
+    },
+    {
+      "index": 197450,
+      "liquidityNet": "-19935533585891",
+      "liquidityGross": "19935533585891"
+    },
+    {
+      "index": 197460,
+      "liquidityNet": "1331726419258918",
+      "liquidityGross": "1331726419258918"
+    },
+    {
+      "index": 197470,
+      "liquidityNet": "61589487649761",
+      "liquidityGross": "61589487649761"
+    },
+    {
+      "index": 197480,
+      "liquidityNet": "-3791079431642",
+      "liquidityGross": "3791079431642"
+    },
+    {
+      "index": 197490,
+      "liquidityNet": "3326796529871528",
+      "liquidityGross": "3385285363373710"
+    },
+    {
+      "index": 197500,
+      "liquidityNet": "210254155767310",
+      "liquidityGross": "210254155767310"
+    },
+    {
+      "index": 197530,
+      "liquidityNet": "539241987876",
+      "liquidityGross": "539241987876"
+    },
+    {
+      "index": 197540,
+      "liquidityNet": "-539241987876",
+      "liquidityGross": "539241987876"
+    },
+    {
+      "index": 197560,
+      "liquidityNet": "27595709583757",
+      "liquidityGross": "27595709583757"
+    },
+    {
+      "index": 197570,
+      "liquidityNet": "11359305584262570",
+      "liquidityGross": "11359308446440792"
+    },
+    {
+      "index": 197580,
+      "liquidityNet": "-77595848930828",
+      "liquidityGross": "190509459765420"
+    },
+    {
+      "index": 197610,
+      "liquidityNet": "-2522780435",
+      "liquidityGross": "2522780435"
+    },
+    {
+      "index": 197620,
+      "liquidityNet": "5353547592293",
+      "liquidityGross": "14063986970207"
+    },
+    {
+      "index": 197630,
+      "liquidityNet": "1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 197650,
+      "liquidityNet": "-5760780561179",
+      "liquidityGross": "5760780561179"
+    },
+    {
+      "index": 197670,
+      "liquidityNet": "-249893997762104",
+      "liquidityGross": "430672260953740"
+    },
+    {
+      "index": 197680,
+      "liquidityNet": "14568995285927909",
+      "liquidityGross": "14568996210244217"
+    },
+    {
+      "index": 197690,
+      "liquidityNet": "303099612637418009",
+      "liquidityGross": "358601972111652859"
+    },
+    {
+      "index": 197700,
+      "liquidityNet": "-56456805417296",
+      "liquidityGross": "56456805417296"
+    },
+    {
+      "index": 197730,
+      "liquidityNet": "2229824879481991308",
+      "liquidityGross": "2229824879481991308"
+    },
+    {
+      "index": 197740,
+      "liquidityNet": "-2227306666471230730",
+      "liquidityGross": "2232343092492751886"
+    },
+    {
+      "index": 197750,
+      "liquidityNet": "-2483845551262789",
+      "liquidityGross": "2483845551262789"
+    },
+    {
+      "index": 197760,
+      "liquidityNet": "34109630703505537",
+      "liquidityGross": "34109630703505537"
+    },
+    {
+      "index": 197780,
+      "liquidityNet": "4669743016197090",
+      "liquidityGross": "4669743016197090"
+    },
+    {
+      "index": 197800,
+      "liquidityNet": "636049161512",
+      "liquidityGross": "636049161512"
+    },
+    {
+      "index": 197830,
+      "liquidityNet": "379370573470532",
+      "liquidityGross": "379370573470532"
+    },
+    {
+      "index": 197850,
+      "liquidityNet": "528665025881541",
+      "liquidityGross": "1311688302342263"
+    },
+    {
+      "index": 197870,
+      "liquidityNet": "76792124006119",
+      "liquidityGross": "76792124006119"
+    },
+    {
+      "index": 197880,
+      "liquidityNet": "11348192472782134",
+      "liquidityGross": "11355019813861590"
+    },
+    {
+      "index": 197900,
+      "liquidityNet": "235168782514976",
+      "liquidityGross": "235168782514976"
+    },
+    {
+      "index": 197920,
+      "liquidityNet": "1002052617193",
+      "liquidityGross": "1002052617193"
+    },
+    {
+      "index": 197930,
+      "liquidityNet": "-111952631281",
+      "liquidityGross": "111952631281"
+    },
+    {
+      "index": 197950,
+      "liquidityNet": "-229499506613758",
+      "liquidityGross": "229499506613758"
+    },
+    {
+      "index": 197970,
+      "liquidityNet": "418422821798964",
+      "liquidityGross": "418422821798964"
+    },
+    {
+      "index": 197990,
+      "liquidityNet": "112570060249486580",
+      "liquidityGross": "112570060249486580"
+    },
+    {
+      "index": 198010,
+      "liquidityNet": "-249790298467899",
+      "liquidityGross": "587055345130029"
+    },
+    {
+      "index": 198020,
+      "liquidityNet": "13575340637762255",
+      "liquidityGross": "13575340637762255"
+    },
+    {
+      "index": 198030,
+      "liquidityNet": "216401649737429",
+      "liquidityGross": "216401649737429"
+    },
+    {
+      "index": 198040,
+      "liquidityNet": "2003387621686770",
+      "liquidityGross": "2003387621686770"
+    },
+    {
+      "index": 198050,
+      "liquidityNet": "-674279690337133",
+      "liquidityGross": "901324799498981"
+    },
+    {
+      "index": 198070,
+      "liquidityNet": "4071810565798819",
+      "liquidityGross": "9313814237263125"
+    },
+    {
+      "index": 198080,
+      "liquidityNet": "221020130757401067",
+      "liquidityGross": "226405463958852399"
+    },
+    {
+      "index": 198090,
+      "liquidityNet": "10299709715660703",
+      "liquidityGross": "10445425030711501"
+    },
+    {
+      "index": 198100,
+      "liquidityNet": "31483146235193862",
+      "liquidityGross": "31483146235193862"
+    },
+    {
+      "index": 198120,
+      "liquidityNet": "441023100358142",
+      "liquidityGross": "441023100358142"
+    },
+    {
+      "index": 198130,
+      "liquidityNet": "-6573490291258874",
+      "liquidityGross": "41890044745372232"
+    },
+    {
+      "index": 198140,
+      "liquidityNet": "-3656442571686344",
+      "liquidityGross": "3656442571686344"
+    },
+    {
+      "index": 198180,
+      "liquidityNet": "-4815919305638541",
+      "liquidityGross": "4815919305638541"
+    },
+    {
+      "index": 198190,
+      "liquidityNet": "2520117026651115",
+      "liquidityGross": "2520117026651115"
+    },
+    {
+      "index": 198200,
+      "liquidityNet": "80477762689449585",
+      "liquidityGross": "134611675073310603"
+    },
+    {
+      "index": 198210,
+      "liquidityNet": "4860235671811",
+      "liquidityGross": "4860235671811"
+    },
+    {
+      "index": 198230,
+      "liquidityNet": "-423183514771199",
+      "liquidityGross": "426082557277119"
+    },
+    {
+      "index": 198240,
+      "liquidityNet": "4550675798641959",
+      "liquidityGross": "4550675798641959"
+    },
+    {
+      "index": 198260,
+      "liquidityNet": "26270459940136",
+      "liquidityGross": "26270459940136"
+    },
+    {
+      "index": 198280,
+      "liquidityNet": "2425792700834001",
+      "liquidityGross": "2425792700834001"
+    },
+    {
+      "index": 198300,
+      "liquidityNet": "1950729426929533984",
+      "liquidityGross": "1950729426929533984"
+    },
+    {
+      "index": 198310,
+      "liquidityNet": "583202296252334",
+      "liquidityGross": "583202296252334"
+    },
+    {
+      "index": 198320,
+      "liquidityNet": "1146768154074710",
+      "liquidityGross": "1148772259309096"
+    },
+    {
+      "index": 198340,
+      "liquidityNet": "-1147770206691903",
+      "liquidityGross": "1147770206691903"
+    },
+    {
+      "index": 198360,
+      "liquidityNet": "107586336075943848",
+      "liquidityGross": "107586336075943848"
+    },
+    {
+      "index": 198370,
+      "liquidityNet": "6302802252419399",
+      "liquidityGross": "6302802252419399"
+    },
+    {
+      "index": 198390,
+      "liquidityNet": "727811398499474",
+      "liquidityGross": "727811398499474"
+    },
+    {
+      "index": 198400,
+      "liquidityNet": "8204970573788434",
+      "liquidityGross": "8216309125590870"
+    },
+    {
+      "index": 198410,
+      "liquidityNet": "17970615309438",
+      "liquidityGross": "22218930097578"
+    },
+    {
+      "index": 198430,
+      "liquidityNet": "2162774987716",
+      "liquidityGross": "3434873310740"
+    },
+    {
+      "index": 198440,
+      "liquidityNet": "1583560436618910",
+      "liquidityGross": "1583560436618910"
+    },
+    {
+      "index": 198460,
+      "liquidityNet": "1799883131054776",
+      "liquidityGross": "3293393955165586"
+    },
+    {
+      "index": 198470,
+      "liquidityNet": "1628328088740271",
+      "liquidityGross": "1628328088740271"
+    },
+    {
+      "index": 198480,
+      "liquidityNet": "29754702619600026",
+      "liquidityGross": "29754702619600026"
+    },
+    {
+      "index": 198490,
+      "liquidityNet": "52185809016684303",
+      "liquidityGross": "54940669278596981"
+    },
+    {
+      "index": 198500,
+      "liquidityNet": "-384755858111626",
+      "liquidityGross": "4708521228108736"
+    },
+    {
+      "index": 198510,
+      "liquidityNet": "119190812656174",
+      "liquidityGross": "122089855162094"
+    },
+    {
+      "index": 198580,
+      "liquidityNet": "107907205957887",
+      "liquidityGross": "107907205957887"
+    },
+    {
+      "index": 198600,
+      "liquidityNet": "51427460257425",
+      "liquidityGross": "51427460257425"
+    },
+    {
+      "index": 198630,
+      "liquidityNet": "467134147350546",
+      "liquidityGross": "467134147350546"
+    },
+    {
+      "index": 198640,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 198670,
+      "liquidityNet": "140160796245489",
+      "liquidityGross": "140160796245489"
+    },
+    {
+      "index": 198700,
+      "liquidityNet": "65103290879460141",
+      "liquidityGross": "65103290879460141"
+    },
+    {
+      "index": 198710,
+      "liquidityNet": "2940050237113096",
+      "liquidityGross": "4106454829617764"
+    },
+    {
+      "index": 198720,
+      "liquidityNet": "43658130821840098",
+      "liquidityGross": "44932766617621296"
+    },
+    {
+      "index": 198730,
+      "liquidityNet": "26075555928603057",
+      "liquidityGross": "26144809601099223"
+    },
+    {
+      "index": 198740,
+      "liquidityNet": "30629382107360",
+      "liquidityGross": "30629382107360"
+    },
+    {
+      "index": 198750,
+      "liquidityNet": "6285003095436316",
+      "liquidityGross": "6285003095436316"
+    },
+    {
+      "index": 198760,
+      "liquidityNet": "-5595190946529056",
+      "liquidityGross": "7115749034324558"
+    },
+    {
+      "index": 198770,
+      "liquidityNet": "561229497237733",
+      "liquidityGross": "635138719483709"
+    },
+    {
+      "index": 198780,
+      "liquidityNet": "94065349026900",
+      "liquidityGross": "94463577941782"
+    },
+    {
+      "index": 198790,
+      "liquidityNet": "-124282503654",
+      "liquidityGross": "124282503654"
+    },
+    {
+      "index": 198800,
+      "liquidityNet": "51744123260872",
+      "liquidityGross": "51744123260872"
+    },
+    {
+      "index": 198840,
+      "liquidityNet": "-3947986720071",
+      "liquidityGross": "3947986720071"
+    },
+    {
+      "index": 198850,
+      "liquidityNet": "12828316653834241",
+      "liquidityGross": "12828316653834241"
+    },
+    {
+      "index": 198860,
+      "liquidityNet": "240",
+      "liquidityGross": "240"
+    },
+    {
+      "index": 198870,
+      "liquidityNet": "34953370807185856",
+      "liquidityGross": "34953370807185856"
+    },
+    {
+      "index": 198880,
+      "liquidityNet": "-90388669437425",
+      "liquidityGross": "90388669437903"
+    },
+    {
+      "index": 198890,
+      "liquidityNet": "259866411883789",
+      "liquidityGross": "259866411883789"
+    },
+    {
+      "index": 198900,
+      "liquidityNet": "3551260861702801",
+      "liquidityGross": "3551260861703281"
+    },
+    {
+      "index": 198910,
+      "liquidityNet": "68450388288066495",
+      "liquidityGross": "69798511071972593"
+    },
+    {
+      "index": 198920,
+      "liquidityNet": "621300726370159",
+      "liquidityGross": "621300726370637"
+    },
+    {
+      "index": 198930,
+      "liquidityNet": "2352167643522470",
+      "liquidityGross": "2352167643522470"
+    },
+    {
+      "index": 198940,
+      "liquidityNet": "0",
+      "liquidityGross": "478"
+    },
+    {
+      "index": 198960,
+      "liquidityNet": "-621300726370159",
+      "liquidityGross": "621300726370637"
+    },
+    {
+      "index": 198970,
+      "liquidityNet": "-2273026156991999",
+      "liquidityGross": "32866188895287389"
+    },
+    {
+      "index": 198980,
+      "liquidityNet": "7993934029419796",
+      "liquidityGross": "7993934029420274"
+    },
+    {
+      "index": 198990,
+      "liquidityNet": "-12001000000",
+      "liquidityGross": "12001000000"
+    },
+    {
+      "index": 199000,
+      "liquidityNet": "24038071170169357",
+      "liquidityGross": "24038071170169835"
+    },
+    {
+      "index": 199010,
+      "liquidityNet": "18883109894822472",
+      "liquidityGross": "18883109894822472"
+    },
+    {
+      "index": 199020,
+      "liquidityNet": "3033942595297547",
+      "liquidityGross": "3033942595298107"
+    },
+    {
+      "index": 199040,
+      "liquidityNet": "160986607571152579",
+      "liquidityGross": "160986607571152579"
+    },
+    {
+      "index": 199110,
+      "liquidityNet": "113774666175076406",
+      "liquidityGross": "113774666175076406"
+    },
+    {
+      "index": 199120,
+      "liquidityNet": "96996883273420",
+      "liquidityGross": "96996883273420"
+    },
+    {
+      "index": 199130,
+      "liquidityNet": "98231119712762513",
+      "liquidityGross": "98231119712762513"
+    },
+    {
+      "index": 199140,
+      "liquidityNet": "287831479234176",
+      "liquidityGross": "287831479234176"
+    },
+    {
+      "index": 199150,
+      "liquidityNet": "11462273504473359",
+      "liquidityGross": "11462273504473359"
+    },
+    {
+      "index": 199170,
+      "liquidityNet": "5999074318646826",
+      "liquidityGross": "5999074318646826"
+    },
+    {
+      "index": 199190,
+      "liquidityNet": "423874074045457691",
+      "liquidityGross": "423874074045457691"
+    },
+    {
+      "index": 199200,
+      "liquidityNet": "100223342217648247",
+      "liquidityGross": "100223342217648247"
+    },
+    {
+      "index": 199210,
+      "liquidityNet": "49769134584853057",
+      "liquidityGross": "49769134584853057"
+    },
+    {
+      "index": 199220,
+      "liquidityNet": "7804032612094",
+      "liquidityGross": "7804033643152"
+    },
+    {
+      "index": 199230,
+      "liquidityNet": "33324672752",
+      "liquidityGross": "33324672752"
+    },
+    {
+      "index": 199240,
+      "liquidityNet": "34001021076",
+      "liquidityGross": "34001021076"
+    },
+    {
+      "index": 199260,
+      "liquidityNet": "1412845600394584",
+      "liquidityGross": "1412845600395550"
+    },
+    {
+      "index": 199270,
+      "liquidityNet": "235153370912212152",
+      "liquidityGross": "238290106296484238"
+    },
+    {
+      "index": 199280,
+      "liquidityNet": "141573744020547",
+      "liquidityGross": "256647986449811"
+    },
+    {
+      "index": 199290,
+      "liquidityNet": "-105111543762166",
+      "liquidityGross": "109153784458372"
+    },
+    {
+      "index": 199300,
+      "liquidityNet": "998204009364140",
+      "liquidityGross": "1525672512863270"
+    },
+    {
+      "index": 199310,
+      "liquidityNet": "1232897269801649942",
+      "liquidityGross": "1232905718593506444"
+    },
+    {
+      "index": 199320,
+      "liquidityNet": "-193993547609020",
+      "liquidityGross": "706658710789220"
+    },
+    {
+      "index": 199330,
+      "liquidityNet": "107659548539528713",
+      "liquidityGross": "107715860669603383"
+    },
+    {
+      "index": 199340,
+      "liquidityNet": "26111089409760648",
+      "liquidityGross": "26509311140231006"
+    },
+    {
+      "index": 199350,
+      "liquidityNet": "4504926015017263",
+      "liquidityGross": "4504926015017263"
+    },
+    {
+      "index": 199360,
+      "liquidityNet": "158954789842134537",
+      "liquidityGross": "160964350133503355"
+    },
+    {
+      "index": 199370,
+      "liquidityNet": "1880341791572614",
+      "liquidityGross": "1880341791572614"
+    },
+    {
+      "index": 199380,
+      "liquidityNet": "6474923285325082046",
+      "liquidityGross": "6474923285325082046"
+    },
+    {
+      "index": 199390,
+      "liquidityNet": "994374771300344",
+      "liquidityGross": "994374771300344"
+    },
+    {
+      "index": 199400,
+      "liquidityNet": "142612818611191",
+      "liquidityGross": "142612818611191"
+    },
+    {
+      "index": 199410,
+      "liquidityNet": "143482313763056",
+      "liquidityGross": "143482313763056"
+    },
+    {
+      "index": 199420,
+      "liquidityNet": "-1",
+      "liquidityGross": "467"
+    },
+    {
+      "index": 199430,
+      "liquidityNet": "147027300519372",
+      "liquidityGross": "147027300519372"
+    },
+    {
+      "index": 199440,
+      "liquidityNet": "1899041480369804",
+      "liquidityGross": "2188380183882334"
+    },
+    {
+      "index": 199450,
+      "liquidityNet": "1201771128326191",
+      "liquidityGross": "1412846255267071"
+    },
+    {
+      "index": 199460,
+      "liquidityNet": "0",
+      "liquidityGross": "466"
+    },
+    {
+      "index": 199480,
+      "liquidityNet": "8239912412074840",
+      "liquidityGross": "8239979061420810"
+    },
+    {
+      "index": 199490,
+      "liquidityNet": "72667697625386",
+      "liquidityGross": "72735699667538"
+    },
+    {
+      "index": 199500,
+      "liquidityNet": "6416206835002535",
+      "liquidityGross": "6416206835003001"
+    },
+    {
+      "index": 199510,
+      "liquidityNet": "312791007627569",
+      "liquidityGross": "312791007627569"
+    },
+    {
+      "index": 199520,
+      "liquidityNet": "840517650888278",
+      "liquidityGross": "840517650888742"
+    },
+    {
+      "index": 199530,
+      "liquidityNet": "5757243178841036",
+      "liquidityGross": "5757243178841036"
+    },
+    {
+      "index": 199540,
+      "liquidityNet": "10768488",
+      "liquidityGross": "10769012"
+    },
+    {
+      "index": 199550,
+      "liquidityNet": "17825251636512",
+      "liquidityGross": "17825251636512"
+    },
+    {
+      "index": 199560,
+      "liquidityNet": "15472452151690877",
+      "liquidityGross": "15472452151692083"
+    },
+    {
+      "index": 199570,
+      "liquidityNet": "6114792526958",
+      "liquidityGross": "6114792526958"
+    },
+    {
+      "index": 199580,
+      "liquidityNet": "22120029465348452",
+      "liquidityGross": "25352070110841350"
+    },
+    {
+      "index": 199590,
+      "liquidityNet": "121246296152115048",
+      "liquidityGross": "121246296152115048"
+    },
+    {
+      "index": 199600,
+      "liquidityNet": "8081256192600922",
+      "liquidityGross": "8081256214159970"
+    },
+    {
+      "index": 199610,
+      "liquidityNet": "554516766264862",
+      "liquidityGross": "566746351318776"
+    },
+    {
+      "index": 199620,
+      "liquidityNet": "70072682474816863",
+      "liquidityGross": "70585347637997525"
+    },
+    {
+      "index": 199630,
+      "liquidityNet": "83414536357410972",
+      "liquidityGross": "83414536357410972"
+    },
+    {
+      "index": 199640,
+      "liquidityNet": "26567530838118786",
+      "liquidityGross": "26567530838119248"
+    },
+    {
+      "index": 199650,
+      "liquidityNet": "7186381820563285",
+      "liquidityGross": "7186381820563285"
+    },
+    {
+      "index": 199660,
+      "liquidityNet": "-231",
+      "liquidityGross": "231"
+    },
+    {
+      "index": 199670,
+      "liquidityNet": "1736407504686488",
+      "liquidityGross": "1736407504686488"
+    },
+    {
+      "index": 199680,
+      "liquidityNet": "28920861147733799",
+      "liquidityGross": "29246671882482247"
+    },
+    {
+      "index": 199690,
+      "liquidityNet": "7909125589637955",
+      "liquidityGross": "7909125589637955"
+    },
+    {
+      "index": 199700,
+      "liquidityNet": "4504520889587501130",
+      "liquidityGross": "4504520889587501132"
+    },
+    {
+      "index": 199710,
+      "liquidityNet": "1472300347213447",
+      "liquidityGross": "2518420175484145"
+    },
+    {
+      "index": 199720,
+      "liquidityNet": "31306401172623370",
+      "liquidityGross": "31306401172623830"
+    },
+    {
+      "index": 199730,
+      "liquidityNet": "26525848241261528",
+      "liquidityGross": "26525848241261528"
+    },
+    {
+      "index": 199740,
+      "liquidityNet": "215",
+      "liquidityGross": "675"
+    },
+    {
+      "index": 199750,
+      "liquidityNet": "9582754414430996",
+      "liquidityGross": "10830406831271412"
+    },
+    {
+      "index": 199760,
+      "liquidityNet": "378282550384025",
+      "liquidityGross": "378282550384025"
+    },
+    {
+      "index": 199770,
+      "liquidityNet": "8597498922924268",
+      "liquidityGross": "8597498922924268"
+    },
+    {
+      "index": 199780,
+      "liquidityNet": "137963829456633635",
+      "liquidityGross": "137963829456634525"
+    },
+    {
+      "index": 199790,
+      "liquidityNet": "7482315808084071",
+      "liquidityGross": "7482315808084071"
+    },
+    {
+      "index": 199800,
+      "liquidityNet": "1655120850143687147",
+      "liquidityGross": "1655374417479099385"
+    },
+    {
+      "index": 199810,
+      "liquidityNet": "83342973348188501",
+      "liquidityGross": "83342973348188501"
+    },
+    {
+      "index": 199820,
+      "liquidityNet": "230219045872598476",
+      "liquidityGross": "231390103575126856"
+    },
+    {
+      "index": 199830,
+      "liquidityNet": "21194882207436478",
+      "liquidityGross": "21660547022181668"
+    },
+    {
+      "index": 199840,
+      "liquidityNet": "2081877105603907",
+      "liquidityGross": "2081877127423209"
+    },
+    {
+      "index": 199850,
+      "liquidityNet": "-820631083506296077",
+      "liquidityGross": "924350070223956413"
+    },
+    {
+      "index": 199860,
+      "liquidityNet": "-569821497482118520",
+      "liquidityGross": "907393621521497868"
+    },
+    {
+      "index": 199870,
+      "liquidityNet": "41911535470350665",
+      "liquidityGross": "43750919368518715"
+    },
+    {
+      "index": 199880,
+      "liquidityNet": "21559742482043464",
+      "liquidityGross": "21559742482043464"
+    },
+    {
+      "index": 199890,
+      "liquidityNet": "12584329546343768",
+      "liquidityGross": "43177492284639160"
+    },
+    {
+      "index": 199900,
+      "liquidityNet": "21906",
+      "liquidityGross": "21906760"
+    },
+    {
+      "index": 199910,
+      "liquidityNet": "123704697866143",
+      "liquidityGross": "123704697866143"
+    },
+    {
+      "index": 199920,
+      "liquidityNet": "29857530722191866",
+      "liquidityGross": "29857530722191866"
+    },
+    {
+      "index": 199930,
+      "liquidityNet": "33456764940481257",
+      "liquidityGross": "33504417994154955"
+    },
+    {
+      "index": 199940,
+      "liquidityNet": "-29032829899663126",
+      "liquidityGross": "30682231544698668"
+    },
+    {
+      "index": 199960,
+      "liquidityNet": "11070820453310039",
+      "liquidityGross": "11070820475260643"
+    },
+    {
+      "index": 199970,
+      "liquidityNet": "1083185132210257",
+      "liquidityGross": "1116270011201989"
+    },
+    {
+      "index": 199980,
+      "liquidityNet": "21993",
+      "liquidityGross": "21994559"
+    },
+    {
+      "index": 199990,
+      "liquidityNet": "7197720345673193",
+      "liquidityGross": "9397175489085439"
+    },
+    {
+      "index": 200000,
+      "liquidityNet": "1605710512969327",
+      "liquidityGross": "1605710534963875"
+    },
+    {
+      "index": 200020,
+      "liquidityNet": "5370641659879528",
+      "liquidityGross": "5370641681896080"
+    },
+    {
+      "index": 200030,
+      "liquidityNet": "15325426544691817",
+      "liquidityGross": "15325608013875949"
+    },
+    {
+      "index": 200040,
+      "liquidityNet": "398572231262239",
+      "liquidityGross": "398572253300817"
+    },
+    {
+      "index": 200050,
+      "liquidityNet": "-8919047359563174",
+      "liquidityGross": "313054167782741984"
+    },
+    {
+      "index": 200060,
+      "liquidityNet": "273823769457091598",
+      "liquidityGross": "343378359204324554"
+    },
+    {
+      "index": 200070,
+      "liquidityNet": "17851501801140605",
+      "liquidityGross": "17851501801140605"
+    },
+    {
+      "index": 200080,
+      "liquidityNet": "-115057734742961661",
+      "liquidityGross": "160489192241823129"
+    },
+    {
+      "index": 200090,
+      "liquidityNet": "109380106198284367",
+      "liquidityGross": "109380106198284367"
+    },
+    {
+      "index": 200100,
+      "liquidityNet": "22127",
+      "liquidityGross": "22126917"
+    },
+    {
+      "index": 200120,
+      "liquidityNet": "11670835151271814",
+      "liquidityGross": "11670835173398720"
+    },
+    {
+      "index": 200130,
+      "liquidityNet": "11901810237124",
+      "liquidityGross": "11901810237124"
+    },
+    {
+      "index": 200140,
+      "liquidityNet": "22170",
+      "liquidityGross": "22171212"
+    },
+    {
+      "index": 200150,
+      "liquidityNet": "2648876282165976646",
+      "liquidityGross": "2703082934417984192"
+    },
+    {
+      "index": 200160,
+      "liquidityNet": "1031129291021580",
+      "liquidityGross": "1031129314115160"
+    },
+    {
+      "index": 200170,
+      "liquidityNet": "56805110376235456",
+      "liquidityGross": "56805110376235456"
+    },
+    {
+      "index": 200180,
+      "liquidityNet": "22214",
+      "liquidityGross": "22215598"
+    },
+    {
+      "index": 200190,
+      "liquidityNet": "330074972096519488",
+      "liquidityGross": "330074972096519488"
+    },
+    {
+      "index": 200200,
+      "liquidityNet": "4864519251917511",
+      "liquidityGross": "4864519274133097"
+    },
+    {
+      "index": 200210,
+      "liquidityNet": "22822244363483345",
+      "liquidityGross": "22822772564769223"
+    },
+    {
+      "index": 200220,
+      "liquidityNet": "134848202396828106",
+      "liquidityGross": "134848202419065918"
+    },
+    {
+      "index": 200230,
+      "liquidityNet": "8847676765216444",
+      "liquidityGross": "8847676765216444"
+    },
+    {
+      "index": 200240,
+      "liquidityNet": "89728689931635115",
+      "liquidityGross": "89728689953895173"
+    },
+    {
+      "index": 200250,
+      "liquidityNet": "2669393669504159087",
+      "liquidityGross": "2669393669504159089"
+    },
+    {
+      "index": 200260,
+      "liquidityNet": "1823587814445156598",
+      "liquidityGross": "1823587814467438926"
+    },
+    {
+      "index": 200270,
+      "liquidityNet": "-948939232917322",
+      "liquidityGross": "150846727150715862"
+    },
+    {
+      "index": 200280,
+      "liquidityNet": "416573223836415670",
+      "liquidityGross": "416866246482666278"
+    },
+    {
+      "index": 200290,
+      "liquidityNet": "28047796353793493",
+      "liquidityGross": "28047796353793493"
+    },
+    {
+      "index": 200300,
+      "liquidityNet": "45783215185878971",
+      "liquidityGross": "45783215208205907"
+    },
+    {
+      "index": 200310,
+      "liquidityNet": "1393802380455888235",
+      "liquidityGross": "2351975340248585723"
+    },
+    {
+      "index": 200320,
+      "liquidityNet": "-1679040644294733",
+      "liquidityGross": "1914499722776823"
+    },
+    {
+      "index": 200330,
+      "liquidityNet": "706897342121559",
+      "liquidityGross": "986666902984531"
+    },
+    {
+      "index": 200340,
+      "liquidityNet": "10487898950570658",
+      "liquidityGross": "10487898950571104"
+    },
+    {
+      "index": 200350,
+      "liquidityNet": "-15129925699259",
+      "liquidityGross": "15129925699259"
+    },
+    {
+      "index": 200360,
+      "liquidityNet": "-1529101265216115683",
+      "liquidityGross": "2095119356377415493"
+    },
+    {
+      "index": 200370,
+      "liquidityNet": "56153373155086500",
+      "liquidityGross": "56161234287434440"
+    },
+    {
+      "index": 200380,
+      "liquidityNet": "21591386132277365",
+      "liquidityGross": "21591386132277811"
+    },
+    {
+      "index": 200400,
+      "liquidityNet": "721462180939766186",
+      "liquidityGross": "721649890953426892"
+    },
+    {
+      "index": 200410,
+      "liquidityNet": "7562900545001656899",
+      "liquidityGross": "7563020325724689525"
+    },
+    {
+      "index": 200420,
+      "liquidityNet": "122792561080834992",
+      "liquidityGross": "122792561080834992"
+    },
+    {
+      "index": 200430,
+      "liquidityNet": "76098638659453937",
+      "liquidityGross": "76098638659567701"
+    },
+    {
+      "index": 200440,
+      "liquidityNet": "260131807101760512",
+      "liquidityGross": "505716929263430496"
+    },
+    {
+      "index": 200450,
+      "liquidityNet": "494337652979015",
+      "liquidityGross": "494337652979015"
+    },
+    {
+      "index": 200460,
+      "liquidityNet": "26429387428990399",
+      "liquidityGross": "36685087153659535"
+    },
+    {
+      "index": 200470,
+      "liquidityNet": "366054136624965",
+      "liquidityGross": "366054136624965"
+    },
+    {
+      "index": 200480,
+      "liquidityNet": "85598905866577510",
+      "liquidityGross": "85631009417023408"
+    },
+    {
+      "index": 200490,
+      "liquidityNet": "29164169180900802",
+      "liquidityGross": "29866844823619812"
+    },
+    {
+      "index": 200500,
+      "liquidityNet": "9194570337914247",
+      "liquidityGross": "9194570337914689"
+    },
+    {
+      "index": 200510,
+      "liquidityNet": "24252930905950995",
+      "liquidityGross": "24252930905950995"
+    },
+    {
+      "index": 200520,
+      "liquidityNet": "217222240647202335",
+      "liquidityGross": "217222240647202777"
+    },
+    {
+      "index": 200530,
+      "liquidityNet": "8496572872236250",
+      "liquidityGross": "8496572872236250"
+    },
+    {
+      "index": 200540,
+      "liquidityNet": "178947565092661224",
+      "liquidityGross": "178947565092661666"
+    },
+    {
+      "index": 200550,
+      "liquidityNet": "31021245291791061",
+      "liquidityGross": "31021245291791061"
+    },
+    {
+      "index": 200560,
+      "liquidityNet": "282068168500661743",
+      "liquidityGross": "528132650478839561"
+    },
+    {
+      "index": 200570,
+      "liquidityNet": "-2199496923394392",
+      "liquidityGross": "92969786415735736"
+    },
+    {
+      "index": 200580,
+      "liquidityNet": "-7147649920558069",
+      "liquidityGross": "8840218138281881"
+    },
+    {
+      "index": 200590,
+      "liquidityNet": "26918549042096306",
+      "liquidityGross": "26918549042096308"
+    },
+    {
+      "index": 200600,
+      "liquidityNet": "6600473913026672",
+      "liquidityGross": "48317786542341084"
+    },
+    {
+      "index": 200610,
+      "liquidityNet": "-721545657990910331",
+      "liquidityGross": "758177354837646245"
+    },
+    {
+      "index": 200620,
+      "liquidityNet": "70113564624182253",
+      "liquidityGross": "77416776780657439"
+    },
+    {
+      "index": 200630,
+      "liquidityNet": "891041462564186109",
+      "liquidityGross": "891041462564186109"
+    },
+    {
+      "index": 200640,
+      "liquidityNet": "886899512547283482",
+      "liquidityGross": "886899512547283922"
+    },
+    {
+      "index": 200660,
+      "liquidityNet": "164179030455461680",
+      "liquidityGross": "164179030455462118"
+    },
+    {
+      "index": 200670,
+      "liquidityNet": "5760221439728129",
+      "liquidityGross": "5760221439728129"
+    },
+    {
+      "index": 200680,
+      "liquidityNet": "0",
+      "liquidityGross": "438"
+    },
+    {
+      "index": 200690,
+      "liquidityNet": "-4431817664767818096",
+      "liquidityGross": "4515320646312034458"
+    },
+    {
+      "index": 200700,
+      "liquidityNet": "329802072089518005",
+      "liquidityGross": "329802072089518443"
+    },
+    {
+      "index": 200710,
+      "liquidityNet": "63519320361488549",
+      "liquidityGross": "63712952793601363"
+    },
+    {
+      "index": 200720,
+      "liquidityNet": "11326358095449369398",
+      "liquidityGross": "11572516946678273042"
+    },
+    {
+      "index": 200730,
+      "liquidityNet": "-896759331134831790",
+      "liquidityGross": "915435867462302832"
+    },
+    {
+      "index": 200740,
+      "liquidityNet": "-6556478977109273791",
+      "liquidityGross": "16387557332826858037"
+    },
+    {
+      "index": 200750,
+      "liquidityNet": "1330373137489079117",
+      "liquidityGross": "1330373137489079117"
+    },
+    {
+      "index": 200760,
+      "liquidityNet": "-2798927622401150720",
+      "liquidityGross": "2798927622401151156"
+    },
+    {
+      "index": 200770,
+      "liquidityNet": "99948782914202197",
+      "liquidityGross": "99968374863378589"
+    },
+    {
+      "index": 200780,
+      "liquidityNet": "71046584940734104",
+      "liquidityGross": "71046584940734540"
+    },
+    {
+      "index": 200790,
+      "liquidityNet": "86180224729488471",
+      "liquidityGross": "90976379456664321"
+    },
+    {
+      "index": 200800,
+      "liquidityNet": "635348449390159984",
+      "liquidityGross": "640609531705446610"
+    },
+    {
+      "index": 200810,
+      "liquidityNet": "51631089274146117",
+      "liquidityGross": "52495448700046895"
+    },
+    {
+      "index": 200820,
+      "liquidityNet": "-5993968503364597861",
+      "liquidityGross": "9692111026087490817"
+    },
+    {
+      "index": 200830,
+      "liquidityNet": "-47910009445632542",
+      "liquidityGross": "277172604030642950"
+    },
+    {
+      "index": 200840,
+      "liquidityNet": "7596167931496732",
+      "liquidityGross": "7596167931497168"
+    },
+    {
+      "index": 200850,
+      "liquidityNet": "1012696303032043669",
+      "liquidityGross": "1012696303032043669"
+    },
+    {
+      "index": 200860,
+      "liquidityNet": "-6183212720467023049",
+      "liquidityGross": "6766633850183141009"
+    },
+    {
+      "index": 200870,
+      "liquidityNet": "-751047612334367468",
+      "liquidityGross": "1595706725306050718"
+    },
+    {
+      "index": 200880,
+      "liquidityNet": "38448221184406801",
+      "liquidityGross": "51658863206028065"
+    },
+    {
+      "index": 200890,
+      "liquidityNet": "-390682004606462477",
+      "liquidityGross": "712978264448449813"
+    },
+    {
+      "index": 200900,
+      "liquidityNet": "327199406754221",
+      "liquidityGross": "26781779608263545"
+    },
+    {
+      "index": 200910,
+      "liquidityNet": "-4180249612199558599",
+      "liquidityGross": "4180249612199558599"
+    },
+    {
+      "index": 200920,
+      "liquidityNet": "6916801786928416",
+      "liquidityGross": "7164211182661202"
+    },
+    {
+      "index": 200930,
+      "liquidityNet": "-213248255750177443",
+      "liquidityGross": "405026285904700851"
+    },
+    {
+      "index": 200940,
+      "liquidityNet": "-2117324260056968",
+      "liquidityGross": "2117324283156034"
+    },
+    {
+      "index": 200950,
+      "liquidityNet": "46000622442587",
+      "liquidityGross": "52535757470035"
+    },
+    {
+      "index": 200960,
+      "liquidityNet": "2438137347342752",
+      "liquidityGross": "2438137370418730"
+    },
+    {
+      "index": 200970,
+      "liquidityNet": "-354355541934659304",
+      "liquidityGross": "461684016578925982"
+    },
+    {
+      "index": 200980,
+      "liquidityNet": "-91900264703769069",
+      "liquidityGross": "95513483339659953"
+    },
+    {
+      "index": 200990,
+      "liquidityNet": "-1948862198721036",
+      "liquidityGross": "5662241274700164"
+    },
+    {
+      "index": 201000,
+      "liquidityNet": "34078984097905235",
+      "liquidityGross": "34158139160655377"
+    },
+    {
+      "index": 201010,
+      "liquidityNet": "-48006193944861678",
+      "liquidityGross": "58450071821529408"
+    },
+    {
+      "index": 201020,
+      "liquidityNet": "-17527251614786158",
+      "liquidityGross": "17553750124684126"
+    },
+    {
+      "index": 201030,
+      "liquidityNet": "-48280681807244807",
+      "liquidityGross": "55140068084878523"
+    },
+    {
+      "index": 201040,
+      "liquidityNet": "-22687753755229123",
+      "liquidityGross": "72725196545263629"
+    },
+    {
+      "index": 201060,
+      "liquidityNet": "3023978232121509",
+      "liquidityGross": "8639654265415585"
+    },
+    {
+      "index": 201070,
+      "liquidityNet": "-158869152661679509",
+      "liquidityGross": "159157096431658219"
+    },
+    {
+      "index": 201080,
+      "liquidityNet": "9562216859279795",
+      "liquidityGross": "29080671981521603"
+    },
+    {
+      "index": 201090,
+      "liquidityNet": "-833457085856255639",
+      "liquidityGross": "930519797420031261"
+    },
+    {
+      "index": 201100,
+      "liquidityNet": "-229022415697057542",
+      "liquidityGross": "264971927275510300"
+    },
+    {
+      "index": 201110,
+      "liquidityNet": "-1009591086007243788",
+      "liquidityGross": "1009608270760765788"
+    },
+    {
+      "index": 201120,
+      "liquidityNet": "-145600270439663161",
+      "liquidityGross": "244489585219697367"
+    },
+    {
+      "index": 201130,
+      "liquidityNet": "42908189342333",
+      "liquidityGross": "42908189342333"
+    },
+    {
+      "index": 201140,
+      "liquidityNet": "-44526500832793782",
+      "liquidityGross": "44713913194665734"
+    },
+    {
+      "index": 201150,
+      "liquidityNet": "-49612824150025752",
+      "liquidityGross": "102118497279097498"
+    },
+    {
+      "index": 201160,
+      "liquidityNet": "-10553070512230102",
+      "liquidityGross": "10553070535584646"
+    },
+    {
+      "index": 201170,
+      "liquidityNet": "-238780451783699032",
+      "liquidityGross": "260023587897909376"
+    },
+    {
+      "index": 201180,
+      "liquidityNet": "-41528045381404489",
+      "liquidityGross": "57990631862456435"
+    },
+    {
+      "index": 201190,
+      "liquidityNet": "-8678935992035267",
+      "liquidityGross": "8678935992035267"
+    },
+    {
+      "index": 201200,
+      "liquidityNet": "68656450882722045",
+      "liquidityGross": "188874969853588577"
+    },
+    {
+      "index": 201210,
+      "liquidityNet": "-49210222223957655",
+      "liquidityGross": "49288975455954989"
+    },
+    {
+      "index": 201220,
+      "liquidityNet": "32663125752444018",
+      "liquidityGross": "32663125775821928"
+    },
+    {
+      "index": 201230,
+      "liquidityNet": "-147334423776913671",
+      "liquidityGross": "147479620630125413"
+    },
+    {
+      "index": 201240,
+      "liquidityNet": "-822750826395193684",
+      "liquidityGross": "843843178199290364"
+    },
+    {
+      "index": 201250,
+      "liquidityNet": "-152307974389081237",
+      "liquidityGross": "156254235235239679"
+    },
+    {
+      "index": 201260,
+      "liquidityNet": "1800677742560060",
+      "liquidityGross": "2057072917845040"
+    },
+    {
+      "index": 201270,
+      "liquidityNet": "5835180526827076",
+      "liquidityGross": "14013393209654990"
+    },
+    {
+      "index": 201280,
+      "liquidityNet": "-10243836476342916",
+      "liquidityGross": "10563949023297542"
+    },
+    {
+      "index": 201290,
+      "liquidityNet": "-23137434083302816",
+      "liquidityGross": "32145014071921248"
+    },
+    {
+      "index": 201300,
+      "liquidityNet": "-271692424073044573",
+      "liquidityGross": "293481511965870657"
+    },
+    {
+      "index": 201310,
+      "liquidityNet": "-38022783032438476",
+      "liquidityGross": "96016240359986216"
+    },
+    {
+      "index": 201320,
+      "liquidityNet": "513332694999225",
+      "liquidityGross": "513332718494311"
+    },
+    {
+      "index": 201330,
+      "liquidityNet": "-25975852840535327",
+      "liquidityGross": "50025938735941485"
+    },
+    {
+      "index": 201340,
+      "liquidityNet": "-6895672205197129",
+      "liquidityGross": "6895672228762803"
+    },
+    {
+      "index": 201350,
+      "liquidityNet": "29467489120877759",
+      "liquidityGross": "125389320150677105"
+    },
+    {
+      "index": 201360,
+      "liquidityNet": "-1064226327608617477",
+      "liquidityGross": "2189715792942616077"
+    },
+    {
+      "index": 201370,
+      "liquidityNet": "-48828997260325574",
+      "liquidityGross": "60070261943851276"
+    },
+    {
+      "index": 201380,
+      "liquidityNet": "-11045428470743058",
+      "liquidityGross": "11056163653748162"
+    },
+    {
+      "index": 201390,
+      "liquidityNet": "-3290301384269211",
+      "liquidityGross": "4543605131661309"
+    },
+    {
+      "index": 201400,
+      "liquidityNet": "-357479342691157",
+      "liquidityGross": "5452961417861233"
+    },
+    {
+      "index": 201410,
+      "liquidityNet": "-49121007213349993",
+      "liquidityGross": "56763340165261195"
+    },
+    {
+      "index": 201420,
+      "liquidityNet": "11573617101217358776",
+      "liquidityGross": "11594758813819351392"
+    },
+    {
+      "index": 201430,
+      "liquidityNet": "-11597449798978757460",
+      "liquidityGross": "11597449798978757460"
+    },
+    {
+      "index": 201440,
+      "liquidityNet": "-17913642049130778",
+      "liquidityGross": "18003486980690214"
+    },
+    {
+      "index": 201450,
+      "liquidityNet": "-35232833095431518",
+      "liquidityGross": "37108035895778908"
+    },
+    {
+      "index": 201460,
+      "liquidityNet": "-395066145362318090",
+      "liquidityGross": "396581855496461860"
+    },
+    {
+      "index": 201470,
+      "liquidityNet": "-136005540793516",
+      "liquidityGross": "155297788834908"
+    },
+    {
+      "index": 201480,
+      "liquidityNet": "-5823488913123549",
+      "liquidityGross": "8213101458369141"
+    },
+    {
+      "index": 201490,
+      "liquidityNet": "13761402588167887",
+      "liquidityGross": "24719760169605269"
+    },
+    {
+      "index": 201500,
+      "liquidityNet": "-21158989145987503",
+      "liquidityGross": "21498729788861771"
+    },
+    {
+      "index": 201510,
+      "liquidityNet": "-10261381818471293",
+      "liquidityGross": "10261381818471293"
+    },
+    {
+      "index": 201520,
+      "liquidityNet": "-115140956455107833",
+      "liquidityGross": "202287150582216269"
+    },
+    {
+      "index": 201530,
+      "liquidityNet": "-83463267831595904",
+      "liquidityGross": "100220937915027644"
+    },
+    {
+      "index": 201550,
+      "liquidityNet": "2807071367541151",
+      "liquidityGross": "2807071367541151"
+    },
+    {
+      "index": 201560,
+      "liquidityNet": "-21610661642597384",
+      "liquidityGross": "21610661642597384"
+    },
+    {
+      "index": 201570,
+      "liquidityNet": "-36774368663866320",
+      "liquidityGross": "36774368663866320"
+    },
+    {
+      "index": 201580,
+      "liquidityNet": "-26744946402636313",
+      "liquidityGross": "28581452742955361"
+    },
+    {
+      "index": 201590,
+      "liquidityNet": "-26811358880399494",
+      "liquidityGross": "28398252941659652"
+    },
+    {
+      "index": 201600,
+      "liquidityNet": "410380428060669",
+      "liquidityGross": "410380428060669"
+    },
+    {
+      "index": 201610,
+      "liquidityNet": "-349670988210687664",
+      "liquidityGross": "358908895064268008"
+    },
+    {
+      "index": 201620,
+      "liquidityNet": "3516016034981983",
+      "liquidityGross": "3696174073189255"
+    },
+    {
+      "index": 201630,
+      "liquidityNet": "-4618953426790172",
+      "liquidityGross": "4618953426790172"
+    },
+    {
+      "index": 201640,
+      "liquidityNet": "524501732181106",
+      "liquidityGross": "1590607403644516"
+    },
+    {
+      "index": 201650,
+      "liquidityNet": "-191362473390877648",
+      "liquidityGross": "203616758845995482"
+    },
+    {
+      "index": 201660,
+      "liquidityNet": "-276980705405505102",
+      "liquidityGross": "282140623290553576"
+    },
+    {
+      "index": 201670,
+      "liquidityNet": "-774285023369930",
+      "liquidityGross": "1526028180916272"
+    },
+    {
+      "index": 201680,
+      "liquidityNet": "-6650567572052662",
+      "liquidityGross": "6753412481711868"
+    },
+    {
+      "index": 201690,
+      "liquidityNet": "566308630248197110",
+      "liquidityGross": "583134052137765268"
+    },
+    {
+      "index": 201700,
+      "liquidityNet": "-1563344814481532075",
+      "liquidityGross": "1628428264317818251"
+    },
+    {
+      "index": 201710,
+      "liquidityNet": "-21427272521106217",
+      "liquidityGross": "79865941175875579"
+    },
+    {
+      "index": 201720,
+      "liquidityNet": "-32708121169212582",
+      "liquidityGross": "34224237746440986"
+    },
+    {
+      "index": 201730,
+      "liquidityNet": "-21383147445443985",
+      "liquidityGross": "33084417792221887"
+    },
+    {
+      "index": 201740,
+      "liquidityNet": "3764382379568089",
+      "liquidityGross": "4046043792926405"
+    },
+    {
+      "index": 201750,
+      "liquidityNet": "-9755667637125203",
+      "liquidityGross": "9990503008051075"
+    },
+    {
+      "index": 201760,
+      "liquidityNet": "-249203495220362265",
+      "liquidityGross": "249251602690359807"
+    },
+    {
+      "index": 201770,
+      "liquidityNet": "-8544138",
+      "liquidityGross": "8544138"
+    },
+    {
+      "index": 201780,
+      "liquidityNet": "-7622980953567690",
+      "liquidityGross": "66642490476555152"
+    },
+    {
+      "index": 201790,
+      "liquidityNet": "-36330483023229516",
+      "liquidityGross": "36339090272903892"
+    },
+    {
+      "index": 201800,
+      "liquidityNet": "405190027079312",
+      "liquidityGross": "2261785529966850"
+    },
+    {
+      "index": 201810,
+      "liquidityNet": "41379965445721",
+      "liquidityGross": "204313405245005"
+    },
+    {
+      "index": 201820,
+      "liquidityNet": "-1091932118231234655",
+      "liquidityGross": "1091932118232135859"
+    },
+    {
+      "index": 201830,
+      "liquidityNet": "-171134552795488083",
+      "liquidityGross": "414208305722263529"
+    },
+    {
+      "index": 201840,
+      "liquidityNet": "-121129085725865328",
+      "liquidityGross": "121135673578617938"
+    },
+    {
+      "index": 201850,
+      "liquidityNet": "-75303493831926",
+      "liquidityGross": "75303493831926"
+    },
+    {
+      "index": 201860,
+      "liquidityNet": "-122272753120230",
+      "liquidityGross": "122272753120230"
+    },
+    {
+      "index": 201870,
+      "liquidityNet": "-88669700916985",
+      "liquidityGross": "88669700916985"
+    },
+    {
+      "index": 201880,
+      "liquidityNet": "-1766515834100923",
+      "liquidityGross": "3437675712407749"
+    },
+    {
+      "index": 201890,
+      "liquidityNet": "-458367699352338",
+      "liquidityGross": "458367699352338"
+    },
+    {
+      "index": 201900,
+      "liquidityNet": "-4431660235401940",
+      "liquidityGross": "4493440683999086"
+    },
+    {
+      "index": 201910,
+      "liquidityNet": "-9260285849082789",
+      "liquidityGross": "13833083667344875"
+    },
+    {
+      "index": 201920,
+      "liquidityNet": "-1738585428729070",
+      "liquidityGross": "4715286245257922"
+    },
+    {
+      "index": 201930,
+      "liquidityNet": "23241749605766319",
+      "liquidityGross": "112216472962306733"
+    },
+    {
+      "index": 201940,
+      "liquidityNet": "-3034738425303833051",
+      "liquidityGross": "3053557501036615147"
+    },
+    {
+      "index": 201950,
+      "liquidityNet": "-3114157086768885",
+      "liquidityGross": "4477263312186507"
+    },
+    {
+      "index": 201960,
+      "liquidityNet": "-44776497235134451",
+      "liquidityGross": "44776497235134451"
+    },
+    {
+      "index": 201970,
+      "liquidityNet": "-49712160206619825",
+      "liquidityGross": "49712160206619825"
+    },
+    {
+      "index": 201980,
+      "liquidityNet": "-10066320121934",
+      "liquidityGross": "10066320121934"
+    },
+    {
+      "index": 201990,
+      "liquidityNet": "-840071149170962",
+      "liquidityGross": "996435191148086"
+    },
+    {
+      "index": 202000,
+      "liquidityNet": "-9404901850316890",
+      "liquidityGross": "12142257739403582"
+    },
+    {
+      "index": 202020,
+      "liquidityNet": "-78959830287212",
+      "liquidityGross": "861495207367116"
+    },
+    {
+      "index": 202030,
+      "liquidityNet": "-19681069684118474",
+      "liquidityGross": "19681069684118474"
+    },
+    {
+      "index": 202040,
+      "liquidityNet": "-1165747826076894",
+      "liquidityGross": "1165747826076894"
+    },
+    {
+      "index": 202050,
+      "liquidityNet": "1376619873996067",
+      "liquidityGross": "2209197104005241"
+    },
+    {
+      "index": 202060,
+      "liquidityNet": "8436127642814334",
+      "liquidityGross": "9796903894284592"
+    },
+    {
+      "index": 202070,
+      "liquidityNet": "1288058365433151",
+      "liquidityGross": "1293148213816101"
+    },
+    {
+      "index": 202080,
+      "liquidityNet": "-73070071297889159",
+      "liquidityGross": "73070128171024785"
+    },
+    {
+      "index": 202090,
+      "liquidityNet": "970342617187212",
+      "liquidityGross": "976930469939822"
+    },
+    {
+      "index": 202100,
+      "liquidityNet": "-53569006412700928",
+      "liquidityGross": "53701942256493246"
+    },
+    {
+      "index": 202110,
+      "liquidityNet": "-10898725544321237",
+      "liquidityGross": "12655722288034691"
+    },
+    {
+      "index": 202120,
+      "liquidityNet": "45043509598898541",
+      "liquidityGross": "72194190874423051"
+    },
+    {
+      "index": 202130,
+      "liquidityNet": "-951777963521160",
+      "liquidityGross": "965216526301328"
+    },
+    {
+      "index": 202140,
+      "liquidityNet": "-1670602104762057",
+      "liquidityGross": "1670602104762057"
+    },
+    {
+      "index": 202150,
+      "liquidityNet": "-364603659538827",
+      "liquidityGross": "364603659538827"
+    },
+    {
+      "index": 202160,
+      "liquidityNet": "20574360226623880",
+      "liquidityGross": "38963500902452374"
+    },
+    {
+      "index": 202170,
+      "liquidityNet": "-1373350113049426",
+      "liquidityGross": "1913911544240254"
+    },
+    {
+      "index": 202180,
+      "liquidityNet": "6535876479462466",
+      "liquidityGross": "15539493789797686"
+    },
+    {
+      "index": 202190,
+      "liquidityNet": "-7386979692485740",
+      "liquidityGross": "9207916142272892"
+    },
+    {
+      "index": 202200,
+      "liquidityNet": "-671686240346780",
+      "liquidityGross": "671686240346780"
+    },
+    {
+      "index": 202220,
+      "liquidityNet": "-11055510386266588",
+      "liquidityGross": "11055510386266588"
+    },
+    {
+      "index": 202230,
+      "liquidityNet": "-4103722736827623",
+      "liquidityGross": "18101816103496709"
+    },
+    {
+      "index": 202240,
+      "liquidityNet": "-93620543258627251",
+      "liquidityGross": "96115135046076265"
+    },
+    {
+      "index": 202250,
+      "liquidityNet": "-3641091362703799",
+      "liquidityGross": "3654194458733395"
+    },
+    {
+      "index": 202270,
+      "liquidityNet": "-12251514953123763",
+      "liquidityGross": "12251514953123763"
+    },
+    {
+      "index": 202280,
+      "liquidityNet": "816720477268299439",
+      "liquidityGross": "825870073121684229"
+    },
+    {
+      "index": 202300,
+      "liquidityNet": "-11084662278637130",
+      "liquidityGross": "11084662278637130"
+    },
+    {
+      "index": 202310,
+      "liquidityNet": "-2344830301760739",
+      "liquidityGross": "3242271553036253"
+    },
+    {
+      "index": 202320,
+      "liquidityNet": "-831250256889325687",
+      "liquidityGross": "831298056868132467"
+    },
+    {
+      "index": 202330,
+      "liquidityNet": "107968343054654009",
+      "liquidityGross": "143460852918264485"
+    },
+    {
+      "index": 202340,
+      "liquidityNet": "-2867857501586457",
+      "liquidityGross": "2882558075673819"
+    },
+    {
+      "index": 202350,
+      "liquidityNet": "-2797948329110004",
+      "liquidityGross": "3265554006921530"
+    },
+    {
+      "index": 202360,
+      "liquidityNet": "34819269149958665",
+      "liquidityGross": "37270854539388783"
+    },
+    {
+      "index": 202370,
+      "liquidityNet": "6240233923573",
+      "liquidityGross": "6240233923573"
+    },
+    {
+      "index": 202380,
+      "liquidityNet": "-472601045232238",
+      "liquidityGross": "523260015173924"
+    },
+    {
+      "index": 202390,
+      "liquidityNet": "-20432476475754134",
+      "liquidityGross": "20442456479086160"
+    },
+    {
+      "index": 202400,
+      "liquidityNet": "-230027177384346",
+      "liquidityGross": "230027177384346"
+    },
+    {
+      "index": 202410,
+      "liquidityNet": "509344362",
+      "liquidityGross": "509344362"
+    },
+    {
+      "index": 202420,
+      "liquidityNet": "-107086574682477476",
+      "liquidityGross": "107103388961538476"
+    },
+    {
+      "index": 202440,
+      "liquidityNet": "-15278194426472981",
+      "liquidityGross": "15278194525971949"
+    },
+    {
+      "index": 202450,
+      "liquidityNet": "-287831479091601",
+      "liquidityGross": "287831479091601"
+    },
+    {
+      "index": 202460,
+      "liquidityNet": "4542363584665",
+      "liquidityGross": "4542363584665"
+    },
+    {
+      "index": 202470,
+      "liquidityNet": "-29877112013953965",
+      "liquidityGross": "30050359356606863"
+    },
+    {
+      "index": 202480,
+      "liquidityNet": "-44275665096795788",
+      "liquidityGross": "44275665096795788"
+    },
+    {
+      "index": 202490,
+      "liquidityNet": "-146357401238207317",
+      "liquidityGross": "146721046839430969"
+    },
+    {
+      "index": 202520,
+      "liquidityNet": "-2953543329732",
+      "liquidityGross": "2953543329732"
+    },
+    {
+      "index": 202530,
+      "liquidityNet": "-116841091324299275",
+      "liquidityGross": "131640933223130111"
+    },
+    {
+      "index": 202540,
+      "liquidityNet": "-202767183570549192",
+      "liquidityGross": "216616060274485820"
+    },
+    {
+      "index": 202550,
+      "liquidityNet": "-5195601277153734",
+      "liquidityGross": "26291089704482684"
+    },
+    {
+      "index": 202560,
+      "liquidityNet": "-459955252882190",
+      "liquidityGross": "459955252882190"
+    },
+    {
+      "index": 202570,
+      "liquidityNet": "-4859133151455839",
+      "liquidityGross": "4859133151455839"
+    },
+    {
+      "index": 202580,
+      "liquidityNet": "-27629903522568740",
+      "liquidityGross": "27629903522568740"
+    },
+    {
+      "index": 202590,
+      "liquidityNet": "241358961409755510",
+      "liquidityGross": "348878444641193762"
+    },
+    {
+      "index": 202600,
+      "liquidityNet": "-3378502426865895",
+      "liquidityGross": "3378502426865895"
+    },
+    {
+      "index": 202610,
+      "liquidityNet": "21337935354225231",
+      "liquidityGross": "21337938545051985"
+    },
+    {
+      "index": 202620,
+      "liquidityNet": "76647675693143",
+      "liquidityGross": "325121148207127"
+    },
+    {
+      "index": 202640,
+      "liquidityNet": "-200884411950135",
+      "liquidityGross": "200884411950135"
+    },
+    {
+      "index": 202650,
+      "liquidityNet": "-329341230206379176",
+      "liquidityGross": "329348872987282030"
+    },
+    {
+      "index": 202660,
+      "liquidityNet": "180991561758783",
+      "liquidityGross": "180991561758783"
+    },
+    {
+      "index": 202670,
+      "liquidityNet": "-23831377505989420",
+      "liquidityGross": "38206290753892856"
+    },
+    {
+      "index": 202690,
+      "liquidityNet": "-23146013902397416",
+      "liquidityGross": "23146013902397416"
+    },
+    {
+      "index": 202700,
+      "liquidityNet": "-20772375426615470",
+      "liquidityGross": "21901806505125870"
+    },
+    {
+      "index": 202720,
+      "liquidityNet": "405576329100360",
+      "liquidityGross": "405576329100360"
+    },
+    {
+      "index": 202730,
+      "liquidityNet": "90396281546259192",
+      "liquidityGross": "97799699944661734"
+    },
+    {
+      "index": 202740,
+      "liquidityNet": "-3037736220415963",
+      "liquidityGross": "3037736220415963"
+    },
+    {
+      "index": 202750,
+      "liquidityNet": "-93560532509352696",
+      "liquidityGross": "93747853905742260"
+    },
+    {
+      "index": 202760,
+      "liquidityNet": "-405576329100360",
+      "liquidityGross": "405576329100360"
+    },
+    {
+      "index": 202770,
+      "liquidityNet": "-635852809160212",
+      "liquidityGross": "635852809160212"
+    },
+    {
+      "index": 202780,
+      "liquidityNet": "5776734942728244605",
+      "liquidityGross": "5791191913916698043"
+    },
+    {
+      "index": 202790,
+      "liquidityNet": "-40221649031222737",
+      "liquidityGross": "40221649031222737"
+    },
+    {
+      "index": 202800,
+      "liquidityNet": "-14251238810495905",
+      "liquidityGross": "15722171234914321"
+    },
+    {
+      "index": 202810,
+      "liquidityNet": "-5783963428322471324",
+      "liquidityGross": "5783963428322471324"
+    },
+    {
+      "index": 202820,
+      "liquidityNet": "-3054432197225825",
+      "liquidityGross": "3054432197225825"
+    },
+    {
+      "index": 202830,
+      "liquidityNet": "-38922018744565728",
+      "liquidityGross": "38922018744565728"
+    },
+    {
+      "index": 202850,
+      "liquidityNet": "-58175568214256",
+      "liquidityGross": "58175568214256"
+    },
+    {
+      "index": 202860,
+      "liquidityNet": "-67975954800147300",
+      "liquidityGross": "68112193475663014"
+    },
+    {
+      "index": 202890,
+      "liquidityNet": "-117343664000136805",
+      "liquidityGross": "117343664000136805"
+    },
+    {
+      "index": 202900,
+      "liquidityNet": "-825808589555170",
+      "liquidityGross": "825808589555170"
+    },
+    {
+      "index": 202910,
+      "liquidityNet": "-10121237530302916",
+      "liquidityGross": "10121237530302916"
+    },
+    {
+      "index": 202920,
+      "liquidityNet": "-84530376755870",
+      "liquidityGross": "87649379101026"
+    },
+    {
+      "index": 202940,
+      "liquidityNet": "-796587335862446",
+      "liquidityGross": "796587335862446"
+    },
+    {
+      "index": 202950,
+      "liquidityNet": "-948671121908992858",
+      "liquidityGross": "948671121908992858"
+    },
+    {
+      "index": 202960,
+      "liquidityNet": "-59370982431327",
+      "liquidityGross": "59370982431327"
+    },
+    {
+      "index": 202970,
+      "liquidityNet": "-2249015999852481",
+      "liquidityGross": "2251115715142683"
+    },
+    {
+      "index": 202980,
+      "liquidityNet": "-3535471656628434",
+      "liquidityGross": "3535471656628434"
+    },
+    {
+      "index": 202990,
+      "liquidityNet": "-107526728392219397",
+      "liquidityGross": "107668949728771117"
+    },
+    {
+      "index": 203010,
+      "liquidityNet": "751058565067519",
+      "liquidityGross": "751058565067519"
+    },
+    {
+      "index": 203020,
+      "liquidityNet": "-5427363054589145",
+      "liquidityGross": "5427363054589145"
+    },
+    {
+      "index": 203030,
+      "liquidityNet": "-751058565067519",
+      "liquidityGross": "751058565067519"
+    },
+    {
+      "index": 203040,
+      "liquidityNet": "1610409625250298",
+      "liquidityGross": "2570544726075090"
+    },
+    {
+      "index": 203050,
+      "liquidityNet": "598080051491788",
+      "liquidityGross": "598080051491788"
+    },
+    {
+      "index": 203060,
+      "liquidityNet": "-124376291961447294",
+      "liquidityGross": "124376291961447294"
+    },
+    {
+      "index": 203070,
+      "liquidityNet": "-310721796639633079",
+      "liquidityGross": "310809731008809123"
+    },
+    {
+      "index": 203080,
+      "liquidityNet": "-2259109698993759",
+      "liquidityGross": "2259109698993759"
+    },
+    {
+      "index": 203090,
+      "liquidityNet": "-5919178647771635",
+      "liquidityGross": "5919178647771635"
+    },
+    {
+      "index": 203100,
+      "liquidityNet": "-10584263938085660",
+      "liquidityGross": "10584263938085660"
+    },
+    {
+      "index": 203120,
+      "liquidityNet": "-59044928994905929",
+      "liquidityGross": "59044928994905929"
+    },
+    {
+      "index": 203130,
+      "liquidityNet": "-10580609711082580",
+      "liquidityGross": "10604723647805806"
+    },
+    {
+      "index": 203150,
+      "liquidityNet": "-2490240553657268",
+      "liquidityGross": "2617543059021470"
+    },
+    {
+      "index": 203160,
+      "liquidityNet": "-118382694350808",
+      "liquidityGross": "118382694350808"
+    },
+    {
+      "index": 203170,
+      "liquidityNet": "-44240702707658051",
+      "liquidityGross": "44240702707658051"
+    },
+    {
+      "index": 203180,
+      "liquidityNet": "-1532305183284796762",
+      "liquidityGross": "1532331999930257576"
+    },
+    {
+      "index": 203190,
+      "liquidityNet": "-273145815816140404",
+      "liquidityGross": "364183044897490936"
+    },
+    {
+      "index": 203200,
+      "liquidityNet": "-446199429187",
+      "liquidityGross": "446199429187"
+    },
+    {
+      "index": 203220,
+      "liquidityNet": "-99632773513906",
+      "liquidityGross": "99632773513906"
+    },
+    {
+      "index": 203240,
+      "liquidityNet": "-266605143742795",
+      "liquidityGross": "266605143742795"
+    },
+    {
+      "index": 203250,
+      "liquidityNet": "-13732380138929825",
+      "liquidityGross": "13732380138929825"
+    },
+    {
+      "index": 203260,
+      "liquidityNet": "-344527804283594427",
+      "liquidityGross": "344527804283594427"
+    },
+    {
+      "index": 203270,
+      "liquidityNet": "-78182020988562",
+      "liquidityGross": "78182020988562"
+    },
+    {
+      "index": 203280,
+      "liquidityNet": "-141109082375197",
+      "liquidityGross": "141109082375197"
+    },
+    {
+      "index": 203290,
+      "liquidityNet": "-173667836620054",
+      "liquidityGross": "173667836620054"
+    },
+    {
+      "index": 203320,
+      "liquidityNet": "-107444741888516166",
+      "liquidityGross": "107727930262340472"
+    },
+    {
+      "index": 203360,
+      "liquidityNet": "-1590441756031",
+      "liquidityGross": "1590441756031"
+    },
+    {
+      "index": 203380,
+      "liquidityNet": "-233928666178226",
+      "liquidityGross": "233928666178226"
+    },
+    {
+      "index": 203400,
+      "liquidityNet": "-1161999841948538",
+      "liquidityGross": "1161999841948538"
+    },
+    {
+      "index": 203430,
+      "liquidityNet": "-28017424191321",
+      "liquidityGross": "28017424191321"
+    },
+    {
+      "index": 203440,
+      "liquidityNet": "-26325012048561232",
+      "liquidityGross": "26325012048561232"
+    },
+    {
+      "index": 203460,
+      "liquidityNet": "-4401764424180",
+      "liquidityGross": "4401764424180"
+    },
+    {
+      "index": 203490,
+      "liquidityNet": "-124452066388693",
+      "liquidityGross": "186449951995901"
+    },
+    {
+      "index": 203510,
+      "liquidityNet": "-4611735329692443",
+      "liquidityGross": "4611735329692443"
+    },
+    {
+      "index": 203520,
+      "liquidityNet": "-1059262452971998",
+      "liquidityGross": "1059262452971998"
+    },
+    {
+      "index": 203530,
+      "liquidityNet": "-152005493014295120",
+      "liquidityGross": "155235131367302914"
+    },
+    {
+      "index": 203540,
+      "liquidityNet": "-7350287043681",
+      "liquidityGross": "7350287043681"
+    },
+    {
+      "index": 203550,
+      "liquidityNet": "20971821802851",
+      "liquidityGross": "20971821802851"
+    },
+    {
+      "index": 203560,
+      "liquidityNet": "-18792719936329890",
+      "liquidityGross": "18792719936329890"
+    },
+    {
+      "index": 203570,
+      "liquidityNet": "-5899250351493038",
+      "liquidityGross": "5899250351493038"
+    },
+    {
+      "index": 203580,
+      "liquidityNet": "-168179071593168",
+      "liquidityGross": "168179071593168"
+    },
+    {
+      "index": 203590,
+      "liquidityNet": "-27875338890377923",
+      "liquidityGross": "27875338890377923"
+    },
+    {
+      "index": 203600,
+      "liquidityNet": "-5910489098981366",
+      "liquidityGross": "5910571395471842"
+    },
+    {
+      "index": 203630,
+      "liquidityNet": "-129109087751637",
+      "liquidityGross": "129109087751637"
+    },
+    {
+      "index": 203640,
+      "liquidityNet": "-598080051491778",
+      "liquidityGross": "598080051491778"
+    },
+    {
+      "index": 203660,
+      "liquidityNet": "-5370550925265424",
+      "liquidityGross": "5370550925265424"
+    },
+    {
+      "index": 203670,
+      "liquidityNet": "-21154981350808709",
+      "liquidityGross": "21154981350808709"
+    },
+    {
+      "index": 203680,
+      "liquidityNet": "-9465849077733665",
+      "liquidityGross": "9465849077733665"
+    },
+    {
+      "index": 203690,
+      "liquidityNet": "-8517146608764286",
+      "liquidityGross": "8517146608764286"
+    },
+    {
+      "index": 203700,
+      "liquidityNet": "-421152259379735",
+      "liquidityGross": "421152259379735"
+    },
+    {
+      "index": 203730,
+      "liquidityNet": "-247968835368456",
+      "liquidityGross": "247968835368456"
+    },
+    {
+      "index": 203740,
+      "liquidityNet": "2157907934377",
+      "liquidityGross": "2157907934377"
+    },
+    {
+      "index": 203750,
+      "liquidityNet": "-994374771300344",
+      "liquidityGross": "994374771300344"
+    },
+    {
+      "index": 203780,
+      "liquidityNet": "-119484624337468",
+      "liquidityGross": "194670783066752"
+    },
+    {
+      "index": 203790,
+      "liquidityNet": "-688528184236989",
+      "liquidityGross": "688528184236989"
+    },
+    {
+      "index": 203800,
+      "liquidityNet": "-11454766002544427",
+      "liquidityGross": "11454766002544427"
+    },
+    {
+      "index": 203820,
+      "liquidityNet": "-8568979496467",
+      "liquidityGross": "8568979496467"
+    },
+    {
+      "index": 203830,
+      "liquidityNet": "-82370407695995194",
+      "liquidityGross": "82370407695995194"
+    },
+    {
+      "index": 203870,
+      "liquidityNet": "-22354625601916090",
+      "liquidityGross": "22383612605140590"
+    },
+    {
+      "index": 203880,
+      "liquidityNet": "-101891681444220498",
+      "liquidityGross": "250986815675338614"
+    },
+    {
+      "index": 203890,
+      "liquidityNet": "-5402653489740557",
+      "liquidityGross": "5522957185131475"
+    },
+    {
+      "index": 203920,
+      "liquidityNet": "-7500972438780182",
+      "liquidityGross": "7500972438780182"
+    },
+    {
+      "index": 203930,
+      "liquidityNet": "-122954391212465",
+      "liquidityGross": "122954391212465"
+    },
+    {
+      "index": 203940,
+      "liquidityNet": "-125115328654739",
+      "liquidityGross": "125115328654739"
+    },
+    {
+      "index": 203950,
+      "liquidityNet": "-1892354376788876",
+      "liquidityGross": "1892422190011586"
+    },
+    {
+      "index": 203960,
+      "liquidityNet": "1184074883211",
+      "liquidityGross": "1184074883211"
+    },
+    {
+      "index": 203970,
+      "liquidityNet": "-13879694876776362",
+      "liquidityGross": "13879694876776362"
+    },
+    {
+      "index": 203980,
+      "liquidityNet": "-831652196853786",
+      "liquidityGross": "831652196853786"
+    },
+    {
+      "index": 203990,
+      "liquidityNet": "-30179410295001851",
+      "liquidityGross": "30209836295031439"
+    },
+    {
+      "index": 204000,
+      "liquidityNet": "-304462446998520",
+      "liquidityGross": "304462446998520"
+    },
+    {
+      "index": 204010,
+      "liquidityNet": "-3429058199275889",
+      "liquidityGross": "3429058199275889"
+    },
+    {
+      "index": 204020,
+      "liquidityNet": "-39504409779544",
+      "liquidityGross": "39504409779544"
+    },
+    {
+      "index": 204040,
+      "liquidityNet": "-7168655126983",
+      "liquidityGross": "7168655126983"
+    },
+    {
+      "index": 204050,
+      "liquidityNet": "-249109236287187",
+      "liquidityGross": "249109236287187"
+    },
+    {
+      "index": 204070,
+      "liquidityNet": "-35688137068311",
+      "liquidityGross": "35688137068311"
+    },
+    {
+      "index": 204080,
+      "liquidityNet": "-241457568182226",
+      "liquidityGross": "330955833062834"
+    },
+    {
+      "index": 204090,
+      "liquidityNet": "18189109251578716",
+      "liquidityGross": "18387597821752590"
+    },
+    {
+      "index": 204110,
+      "liquidityNet": "-19687921304879",
+      "liquidityGross": "19687921304879"
+    },
+    {
+      "index": 204130,
+      "liquidityNet": "-10835316234146763",
+      "liquidityGross": "10835316234146763"
+    },
+    {
+      "index": 204150,
+      "liquidityNet": "-21207135419861",
+      "liquidityGross": "21207135419861"
+    },
+    {
+      "index": 204160,
+      "liquidityNet": "527279115156",
+      "liquidityGross": "527279115156"
+    },
+    {
+      "index": 204170,
+      "liquidityNet": "81134504679928",
+      "liquidityGross": "81134504679928"
+    },
+    {
+      "index": 204180,
+      "liquidityNet": "1004655231506",
+      "liquidityGross": "1004655231506"
+    },
+    {
+      "index": 204190,
+      "liquidityNet": "760269801176884",
+      "liquidityGross": "760269801176884"
+    },
+    {
+      "index": 204200,
+      "liquidityNet": "-2415672262133317",
+      "liquidityGross": "3810257185495703"
+    },
+    {
+      "index": 204220,
+      "liquidityNet": "-3840195834080811",
+      "liquidityGross": "3840195834080811"
+    },
+    {
+      "index": 204230,
+      "liquidityNet": "-78334431607176",
+      "liquidityGross": "78334431607176"
+    },
+    {
+      "index": 204240,
+      "liquidityNet": "-2451097497516621",
+      "liquidityGross": "2463010472742111"
+    },
+    {
+      "index": 204260,
+      "liquidityNet": "2298787003010616",
+      "liquidityGross": "2298787003010616"
+    },
+    {
+      "index": 204280,
+      "liquidityNet": "-1004655231506",
+      "liquidityGross": "1004655231506"
+    },
+    {
+      "index": 204290,
+      "liquidityNet": "-1284040267305373",
+      "liquidityGross": "1284040267305373"
+    },
+    {
+      "index": 204300,
+      "liquidityNet": "-4669743016197090",
+      "liquidityGross": "4669743016197090"
+    },
+    {
+      "index": 204310,
+      "liquidityNet": "-301222294305306",
+      "liquidityGross": "301222294305306"
+    },
+    {
+      "index": 204320,
+      "liquidityNet": "-833767159812218",
+      "liquidityGross": "833767159812218"
+    },
+    {
+      "index": 204330,
+      "liquidityNet": "-1549393456859454",
+      "liquidityGross": "1549393456859454"
+    },
+    {
+      "index": 204340,
+      "liquidityNet": "-237154681430032",
+      "liquidityGross": "1221404299579232"
+    },
+    {
+      "index": 204350,
+      "liquidityNet": "-151122514200101",
+      "liquidityGross": "151122514200101"
+    },
+    {
+      "index": 204360,
+      "liquidityNet": "46922130405323",
+      "liquidityGross": "46922130405323"
+    },
+    {
+      "index": 204370,
+      "liquidityNet": "-2735118071781937",
+      "liquidityGross": "2830229765652865"
+    },
+    {
+      "index": 204380,
+      "liquidityNet": "-497297810940347",
+      "liquidityGross": "519981051129559"
+    },
+    {
+      "index": 204390,
+      "liquidityNet": "62260722446112",
+      "liquidityGross": "110238563569440"
+    },
+    {
+      "index": 204400,
+      "liquidityNet": "-410380428060669",
+      "liquidityGross": "410380428060669"
+    },
+    {
+      "index": 204410,
+      "liquidityNet": "-36993022405489",
+      "liquidityGross": "36993022405489"
+    },
+    {
+      "index": 204420,
+      "liquidityNet": "705718046666078",
+      "liquidityGross": "713558590062242"
+    },
+    {
+      "index": 204460,
+      "liquidityNet": "-171331631582231",
+      "liquidityGross": "171331631582231"
+    },
+    {
+      "index": 204470,
+      "liquidityNet": "-86249643007776",
+      "liquidityGross": "86249643007776"
+    },
+    {
+      "index": 204490,
+      "liquidityNet": "-682074899506235",
+      "liquidityGross": "700123227743079"
+    },
+    {
+      "index": 204500,
+      "liquidityNet": "17194630157723692",
+      "liquidityGross": "17194630157723712"
+    },
+    {
+      "index": 204520,
+      "liquidityNet": "-30640467192306251",
+      "liquidityGross": "30640467192306251"
+    },
+    {
+      "index": 204530,
+      "liquidityNet": "21821905",
+      "liquidityGross": "21821905"
+    },
+    {
+      "index": 204550,
+      "liquidityNet": "-33615509923089",
+      "liquidityGross": "33615509923089"
+    },
+    {
+      "index": 204560,
+      "liquidityNet": "-30278117302711867",
+      "liquidityGross": "30278117302711867"
+    },
+    {
+      "index": 204570,
+      "liquidityNet": "17618420282610",
+      "liquidityGross": "17618420282610"
+    },
+    {
+      "index": 204600,
+      "liquidityNet": "9126393214898066",
+      "liquidityGross": "9501019172237514"
+    },
+    {
+      "index": 204610,
+      "liquidityNet": "-819954003079660188",
+      "liquidityGross": "822636370236894254"
+    },
+    {
+      "index": 204620,
+      "liquidityNet": "-407478132439942865",
+      "liquidityGross": "408951845849531601"
+    },
+    {
+      "index": 204630,
+      "liquidityNet": "7827702024297",
+      "liquidityGross": "70566664789457"
+    },
+    {
+      "index": 204640,
+      "liquidityNet": "394387707481",
+      "liquidityGross": "394387707481"
+    },
+    {
+      "index": 204650,
+      "liquidityNet": "483807816176512806",
+      "liquidityGross": "483897666823298480"
+    },
+    {
+      "index": 204660,
+      "liquidityNet": "-394387707481",
+      "liquidityGross": "394387707481"
+    },
+    {
+      "index": 204670,
+      "liquidityNet": "-1966158769478",
+      "liquidityGross": "76428208044276"
+    },
+    {
+      "index": 204680,
+      "liquidityNet": "-365989215113157",
+      "liquidityGross": "365989215113157"
+    },
+    {
+      "index": 204690,
+      "liquidityNet": "-691801610978260",
+      "liquidityGross": "691801610978260"
+    },
+    {
+      "index": 204700,
+      "liquidityNet": "-48002573667553",
+      "liquidityGross": "48002573667553"
+    },
+    {
+      "index": 204710,
+      "liquidityNet": "10468400421554",
+      "liquidityGross": "12836550187976"
+    },
+    {
+      "index": 204720,
+      "liquidityNet": "-44749132440304",
+      "liquidityGross": "44749132440304"
+    },
+    {
+      "index": 204730,
+      "liquidityNet": "9669673096868",
+      "liquidityGross": "9669673096868"
+    },
+    {
+      "index": 204740,
+      "liquidityNet": "-2466853868199081",
+      "liquidityGross": "2466853868199081"
+    },
+    {
+      "index": 204750,
+      "liquidityNet": "1087800237554443",
+      "liquidityGross": "1087800237554443"
+    },
+    {
+      "index": 204770,
+      "liquidityNet": "-78636084370152579",
+      "liquidityGross": "78636084370152579"
+    },
+    {
+      "index": 204780,
+      "liquidityNet": "706283957825458",
+      "liquidityGross": "706283957825458"
+    },
+    {
+      "index": 204790,
+      "liquidityNet": "-58556667865517",
+      "liquidityGross": "58556667865517"
+    },
+    {
+      "index": 204800,
+      "liquidityNet": "-691926928106848",
+      "liquidityGross": "720640987544068"
+    },
+    {
+      "index": 204810,
+      "liquidityNet": "-3552255192960607",
+      "liquidityGross": "3552255192960607"
+    },
+    {
+      "index": 204820,
+      "liquidityNet": "-8811768495241",
+      "liquidityGross": "8811768495241"
+    },
+    {
+      "index": 204840,
+      "liquidityNet": "1123171640712713492",
+      "liquidityGross": "1123171640712713492"
+    },
+    {
+      "index": 204850,
+      "liquidityNet": "-41027107698155479",
+      "liquidityGross": "41027107698155479"
+    },
+    {
+      "index": 204860,
+      "liquidityNet": "-262068004012",
+      "liquidityGross": "262121163150"
+    },
+    {
+      "index": 204870,
+      "liquidityNet": "-17153850689571940",
+      "liquidityGross": "17153850689571940"
+    },
+    {
+      "index": 204880,
+      "liquidityNet": "-19255743505664219",
+      "liquidityGross": "19255743505664219"
+    },
+    {
+      "index": 204890,
+      "liquidityNet": "-1126886845007964942",
+      "liquidityGross": "1126886845007964942"
+    },
+    {
+      "index": 204900,
+      "liquidityNet": "612816006342343",
+      "liquidityGross": "612816059501481"
+    },
+    {
+      "index": 204910,
+      "liquidityNet": "-910271637044215",
+      "liquidityGross": "910271637044215"
+    },
+    {
+      "index": 204930,
+      "liquidityNet": "-6510470788869",
+      "liquidityGross": "6510470788869"
+    },
+    {
+      "index": 204950,
+      "liquidityNet": "-105581613824062",
+      "liquidityGross": "105581613824062"
+    },
+    {
+      "index": 204960,
+      "liquidityNet": "5708588153368",
+      "liquidityGross": "5708588153368"
+    },
+    {
+      "index": 204970,
+      "liquidityNet": "-37231024637399",
+      "liquidityGross": "37231024637399"
+    },
+    {
+      "index": 204990,
+      "liquidityNet": "-6939965696533228",
+      "liquidityGross": "6939965696533228"
+    },
+    {
+      "index": 205000,
+      "liquidityNet": "-15213000014794",
+      "liquidityGross": "15213000014794"
+    },
+    {
+      "index": 205010,
+      "liquidityNet": "-21750710531480344",
+      "liquidityGross": "26255504537132640"
+    },
+    {
+      "index": 205020,
+      "liquidityNet": "-23096167522516331",
+      "liquidityGross": "23096167522516331"
+    },
+    {
+      "index": 205070,
+      "liquidityNet": "3258972779416",
+      "liquidityGross": "3258972779416"
+    },
+    {
+      "index": 205090,
+      "liquidityNet": "-3258972779416",
+      "liquidityGross": "3258972779416"
+    },
+    {
+      "index": 205140,
+      "liquidityNet": "3815506156622",
+      "liquidityGross": "3815506156622"
+    },
+    {
+      "index": 205170,
+      "liquidityNet": "4400210496858560",
+      "liquidityGross": "4400210496858560"
+    },
+    {
+      "index": 205180,
+      "liquidityNet": "72247538655926",
+      "liquidityGross": "72247538655926"
+    },
+    {
+      "index": 205190,
+      "liquidityNet": "-5708588153368",
+      "liquidityGross": "5708588153368"
+    },
+    {
+      "index": 205200,
+      "liquidityNet": "-220320331631789",
+      "liquidityGross": "220320331631789"
+    },
+    {
+      "index": 205210,
+      "liquidityNet": "12887701135087",
+      "liquidityGross": "12887701135087"
+    },
+    {
+      "index": 205230,
+      "liquidityNet": "-634827392864265",
+      "liquidityGross": "801300565028347"
+    },
+    {
+      "index": 205240,
+      "liquidityNet": "-1514735474477716",
+      "liquidityGross": "1514735474477716"
+    },
+    {
+      "index": 205250,
+      "liquidityNet": "336182637417384077",
+      "liquidityGross": "374256509161189981"
+    },
+    {
+      "index": 205260,
+      "liquidityNet": "-1499595978505299",
+      "liquidityGross": "1684415142656301"
+    },
+    {
+      "index": 205270,
+      "liquidityNet": "-2593293572625430",
+      "liquidityGross": "3398831072892930"
+    },
+    {
+      "index": 205280,
+      "liquidityNet": "-99792128182741",
+      "liquidityGross": "132749183409933"
+    },
+    {
+      "index": 205300,
+      "liquidityNet": "-163892614366023",
+      "liquidityGross": "163892614366023"
+    },
+    {
+      "index": 205310,
+      "liquidityNet": "-1985342447386808",
+      "liquidityGross": "1985342447386808"
+    },
+    {
+      "index": 205320,
+      "liquidityNet": "-271363588399423",
+      "liquidityGross": "271363588399423"
+    },
+    {
+      "index": 205330,
+      "liquidityNet": "-402433206073545",
+      "liquidityGross": "402504409717545"
+    },
+    {
+      "index": 205340,
+      "liquidityNet": "44796499913674165",
+      "liquidityGross": "44811942494943623"
+    },
+    {
+      "index": 205350,
+      "liquidityNet": "35413176029881",
+      "liquidityGross": "35413176029881"
+    },
+    {
+      "index": 205370,
+      "liquidityNet": "-44870724728027053",
+      "liquidityGross": "44870724728027053"
+    },
+    {
+      "index": 205380,
+      "liquidityNet": "56032323483674",
+      "liquidityGross": "58520881195404"
+    },
+    {
+      "index": 205390,
+      "liquidityNet": "-118649762111922",
+      "liquidityGross": "118649762111922"
+    },
+    {
+      "index": 205400,
+      "liquidityNet": "583282889055648",
+      "liquidityGross": "583282889055648"
+    },
+    {
+      "index": 205410,
+      "liquidityNet": "-6758088908837321",
+      "liquidityGross": "6758088908837321"
+    },
+    {
+      "index": 205420,
+      "liquidityNet": "-164197565681071562",
+      "liquidityGross": "164707193778739032"
+    },
+    {
+      "index": 205430,
+      "liquidityNet": "-353217963702092",
+      "liquidityGross": "796401770329540"
+    },
+    {
+      "index": 205460,
+      "liquidityNet": "-2337388845635494",
+      "liquidityGross": "2369908845622768"
+    },
+    {
+      "index": 205490,
+      "liquidityNet": "-306650251862229",
+      "liquidityGross": "641096205773331"
+    },
+    {
+      "index": 205500,
+      "liquidityNet": "-5141291429292",
+      "liquidityGross": "5141291429292"
+    },
+    {
+      "index": 205510,
+      "liquidityNet": "-16259999993637",
+      "liquidityGross": "16259999993637"
+    },
+    {
+      "index": 205530,
+      "liquidityNet": "-167222976955551",
+      "liquidityGross": "167222976955551"
+    },
+    {
+      "index": 205550,
+      "liquidityNet": "-3451039620638601",
+      "liquidityGross": "3507909960310679"
+    },
+    {
+      "index": 205560,
+      "liquidityNet": "22741687028344",
+      "liquidityGross": "22741687028344"
+    },
+    {
+      "index": 205570,
+      "liquidityNet": "-28435169836039",
+      "liquidityGross": "28435169836039"
+    },
+    {
+      "index": 205580,
+      "liquidityNet": "-4212306482939579",
+      "liquidityGross": "4212306482939579"
+    },
+    {
+      "index": 205590,
+      "liquidityNet": "-353302553495521487",
+      "liquidityGross": "353347604875428615"
+    },
+    {
+      "index": 205600,
+      "liquidityNet": "-2039510908215550",
+      "liquidityGross": "2039510908215550"
+    },
+    {
+      "index": 205610,
+      "liquidityNet": "-22741687028344",
+      "liquidityGross": "22741687028344"
+    },
+    {
+      "index": 205630,
+      "liquidityNet": "-22525689953564",
+      "liquidityGross": "22525689953564"
+    },
+    {
+      "index": 205640,
+      "liquidityNet": "-583282889055648",
+      "liquidityGross": "583282889055648"
+    },
+    {
+      "index": 205650,
+      "liquidityNet": "-58352048721294",
+      "liquidityGross": "58352048721294"
+    },
+    {
+      "index": 205710,
+      "liquidityNet": "-16256970617849682",
+      "liquidityGross": "16256970617849682"
+    },
+    {
+      "index": 205740,
+      "liquidityNet": "-939548715160843",
+      "liquidityGross": "939548715160843"
+    },
+    {
+      "index": 205800,
+      "liquidityNet": "-46922130405323",
+      "liquidityGross": "46922130405323"
+    },
+    {
+      "index": 205830,
+      "liquidityNet": "-51329394322148",
+      "liquidityGross": "51329394322148"
+    },
+    {
+      "index": 205850,
+      "liquidityNet": "-473313866919909335",
+      "liquidityGross": "473313866919909335"
+    },
+    {
+      "index": 205870,
+      "liquidityNet": "-39644808284562",
+      "liquidityGross": "39644808284562"
+    },
+    {
+      "index": 205920,
+      "liquidityNet": "5921513161873",
+      "liquidityGross": "5921513161873"
+    },
+    {
+      "index": 205930,
+      "liquidityNet": "-5921513161873",
+      "liquidityGross": "5921513161873"
+    },
+    {
+      "index": 205940,
+      "liquidityNet": "-82404870876443",
+      "liquidityGross": "82404870876443"
+    },
+    {
+      "index": 205950,
+      "liquidityNet": "-61589487649761",
+      "liquidityGross": "61589487649761"
+    },
+    {
+      "index": 205970,
+      "liquidityNet": "-838123396175157",
+      "liquidityGross": "838123396175157"
+    },
+    {
+      "index": 205980,
+      "liquidityNet": "-256576460294339",
+      "liquidityGross": "256576460294339"
+    },
+    {
+      "index": 205990,
+      "liquidityNet": "-14566093142378",
+      "liquidityGross": "14566093142378"
+    },
+    {
+      "index": 206010,
+      "liquidityNet": "32531821528337648659",
+      "liquidityGross": "32531821528337648659"
+    },
+    {
+      "index": 206020,
+      "liquidityNet": "-32528044278444658533",
+      "liquidityGross": "32528044278444658533"
+    },
+    {
+      "index": 206050,
+      "liquidityNet": "-612816032921912",
+      "liquidityGross": "612816032921912"
+    },
+    {
+      "index": 206060,
+      "liquidityNet": "-31437128917895",
+      "liquidityGross": "31437128917895"
+    },
+    {
+      "index": 206100,
+      "liquidityNet": "-16614204290316",
+      "liquidityGross": "16614204290316"
+    },
+    {
+      "index": 206130,
+      "liquidityNet": "382765298101521",
+      "liquidityGross": "382765298101521"
+    },
+    {
+      "index": 206180,
+      "liquidityNet": "-2798824149228",
+      "liquidityGross": "2798824149228"
+    },
+    {
+      "index": 206190,
+      "liquidityNet": "-8070561896919252",
+      "liquidityGross": "8070561896919252"
+    },
+    {
+      "index": 206220,
+      "liquidityNet": "-5959368720827708",
+      "liquidityGross": "5959368720827708"
+    },
+    {
+      "index": 206230,
+      "liquidityNet": "-1975143919291571979",
+      "liquidityGross": "1975143919291571979"
+    },
+    {
+      "index": 206240,
+      "liquidityNet": "-17892961313414584",
+      "liquidityGross": "17892961313414584"
+    },
+    {
+      "index": 206250,
+      "liquidityNet": "-30410086366488",
+      "liquidityGross": "30410086366488"
+    },
+    {
+      "index": 206260,
+      "liquidityNet": "-477197831652989",
+      "liquidityGross": "477197831652989"
+    },
+    {
+      "index": 206270,
+      "liquidityNet": "-5751910975682424",
+      "liquidityGross": "5751910975682424"
+    },
+    {
+      "index": 206290,
+      "liquidityNet": "-50501250685294087",
+      "liquidityGross": "59138806508715147"
+    },
+    {
+      "index": 206300,
+      "liquidityNet": "-10837566255075",
+      "liquidityGross": "10837566255075"
+    },
+    {
+      "index": 206310,
+      "liquidityNet": "-1571547840004406",
+      "liquidityGross": "1571547840004406"
+    },
+    {
+      "index": 206320,
+      "liquidityNet": "-4132589508320855",
+      "liquidityGross": "4132589508320855"
+    },
+    {
+      "index": 206370,
+      "liquidityNet": "122973486683145",
+      "liquidityGross": "122973486683145"
+    },
+    {
+      "index": 206380,
+      "liquidityNet": "-128273656740017",
+      "liquidityGross": "128273656740017"
+    },
+    {
+      "index": 206410,
+      "liquidityNet": "5517325292675",
+      "liquidityGross": "5517325292675"
+    },
+    {
+      "index": 206420,
+      "liquidityNet": "-11049102235124771",
+      "liquidityGross": "11049102235124771"
+    },
+    {
+      "index": 206450,
+      "liquidityNet": "-5517325292675",
+      "liquidityGross": "5517325292675"
+    },
+    {
+      "index": 206460,
+      "liquidityNet": "-201125924508196",
+      "liquidityGross": "201125924508196"
+    },
+    {
+      "index": 206480,
+      "liquidityNet": "-99690498623159",
+      "liquidityGross": "99690498623159"
+    },
+    {
+      "index": 206530,
+      "liquidityNet": "-46445625148087",
+      "liquidityGross": "46445625148087"
+    },
+    {
+      "index": 206560,
+      "liquidityNet": "-10456351239484",
+      "liquidityGross": "10456351239484"
+    },
+    {
+      "index": 206570,
+      "liquidityNet": "-760688819106815",
+      "liquidityGross": "760688819106815"
+    },
+    {
+      "index": 206610,
+      "liquidityNet": "2527659888995960",
+      "liquidityGross": "2527659888995960"
+    },
+    {
+      "index": 206670,
+      "liquidityNet": "-33658255133282",
+      "liquidityGross": "33658255133282"
+    },
+    {
+      "index": 206690,
+      "liquidityNet": "39249186082639",
+      "liquidityGross": "39249186082639"
+    },
+    {
+      "index": 206710,
+      "liquidityNet": "-220240747841422",
+      "liquidityGross": "220240747841422"
+    },
+    {
+      "index": 206730,
+      "liquidityNet": "-10562824529975",
+      "liquidityGross": "10562824529975"
+    },
+    {
+      "index": 206750,
+      "liquidityNet": "-483459293186418329",
+      "liquidityGross": "483459293186418329"
+    },
+    {
+      "index": 206760,
+      "liquidityNet": "-8873442704364704",
+      "liquidityGross": "8873442704364704"
+    },
+    {
+      "index": 206770,
+      "liquidityNet": "-141594186912153",
+      "liquidityGross": "141594186912153"
+    },
+    {
+      "index": 206830,
+      "liquidityNet": "-694708090551947",
+      "liquidityGross": "694708090551947"
+    },
+    {
+      "index": 206880,
+      "liquidityNet": "-30998942803604",
+      "liquidityGross": "30998942803604"
+    },
+    {
+      "index": 206910,
+      "liquidityNet": "-598059825857067",
+      "liquidityGross": "598059825857067"
+    },
+    {
+      "index": 206940,
+      "liquidityNet": "-17096653242566701",
+      "liquidityGross": "17096653242566701"
+    },
+    {
+      "index": 206950,
+      "liquidityNet": "-2527659888995960",
+      "liquidityGross": "2527659888995960"
+    },
+    {
+      "index": 207010,
+      "liquidityNet": "-558175980798664",
+      "liquidityGross": "558175980798664"
+    },
+    {
+      "index": 207040,
+      "liquidityNet": "-18395399899085",
+      "liquidityGross": "18395399899085"
+    },
+    {
+      "index": 207060,
+      "liquidityNet": "-18271369512818720",
+      "liquidityGross": "18271369512818720"
+    },
+    {
+      "index": 207090,
+      "liquidityNet": "-21599131813462",
+      "liquidityGross": "21599131813462"
+    },
+    {
+      "index": 207150,
+      "liquidityNet": "-1142187257652872",
+      "liquidityGross": "1142187257652872"
+    },
+    {
+      "index": 207210,
+      "liquidityNet": "369149760427048",
+      "liquidityGross": "369149760427048"
+    },
+    {
+      "index": 207240,
+      "liquidityNet": "-215751777120631230",
+      "liquidityGross": "215751777120631230"
+    },
+    {
+      "index": 207250,
+      "liquidityNet": "-52413300934563898",
+      "liquidityGross": "52413300934563898"
+    },
+    {
+      "index": 207290,
+      "liquidityNet": "-2783161847380816",
+      "liquidityGross": "2783161847380816"
+    },
+    {
+      "index": 207300,
+      "liquidityNet": "-915169295699311",
+      "liquidityGross": "915169295699311"
+    },
+    {
+      "index": 207330,
+      "liquidityNet": "-1457334165987",
+      "liquidityGross": "1457334165987"
+    },
+    {
+      "index": 207340,
+      "liquidityNet": "-6272943264431859",
+      "liquidityGross": "6272943264431859"
+    },
+    {
+      "index": 207350,
+      "liquidityNet": "-16773063288308",
+      "liquidityGross": "16773063288308"
+    },
+    {
+      "index": 207380,
+      "liquidityNet": "-702264205372362",
+      "liquidityGross": "702264205372362"
+    },
+    {
+      "index": 207390,
+      "liquidityNet": "-766305413629205",
+      "liquidityGross": "766305413629205"
+    },
+    {
+      "index": 207420,
+      "liquidityNet": "-7824325986414",
+      "liquidityGross": "7824325986414"
+    },
+    {
+      "index": 207450,
+      "liquidityNet": "-1840302449900792",
+      "liquidityGross": "1840302449900792"
+    },
+    {
+      "index": 207470,
+      "liquidityNet": "-63651252682101",
+      "liquidityGross": "63651252682101"
+    },
+    {
+      "index": 207500,
+      "liquidityNet": "-48416121667083",
+      "liquidityGross": "48416121667083"
+    },
+    {
+      "index": 207670,
+      "liquidityNet": "-17618420282610",
+      "liquidityGross": "17618420282610"
+    },
+    {
+      "index": 207760,
+      "liquidityNet": "-1078804458086029",
+      "liquidityGross": "1078804458086029"
+    },
+    {
+      "index": 207780,
+      "liquidityNet": "-33955042064486354",
+      "liquidityGross": "33955042064486354"
+    },
+    {
+      "index": 207860,
+      "liquidityNet": "-4448634799655273",
+      "liquidityGross": "4448634799655273"
+    },
+    {
+      "index": 207900,
+      "liquidityNet": "-33663120308853",
+      "liquidityGross": "33663120308853"
+    },
+    {
+      "index": 207910,
+      "liquidityNet": "-8",
+      "liquidityGross": "8"
+    },
+    {
+      "index": 207960,
+      "liquidityNet": "-441023100358142",
+      "liquidityGross": "441023100358142"
+    },
+    {
+      "index": 207970,
+      "liquidityNet": "-94485541321849",
+      "liquidityGross": "94485541321849"
+    },
+    {
+      "index": 208000,
+      "liquidityNet": "-331682908570970",
+      "liquidityGross": "331682908570970"
+    },
+    {
+      "index": 208010,
+      "liquidityNet": "-2073248747064156",
+      "liquidityGross": "2073248747064156"
+    },
+    {
+      "index": 208030,
+      "liquidityNet": "-288042863394000",
+      "liquidityGross": "288042863394000"
+    },
+    {
+      "index": 208060,
+      "liquidityNet": "-4864474765144478",
+      "liquidityGross": "4864474765144478"
+    },
+    {
+      "index": 208190,
+      "liquidityNet": "-1493123283396",
+      "liquidityGross": "1493123283396"
+    },
+    {
+      "index": 208220,
+      "liquidityNet": "-377900920245434",
+      "liquidityGross": "377900920245434"
+    },
+    {
+      "index": 208290,
+      "liquidityNet": "-20810025052312863",
+      "liquidityGross": "20810025052312863"
+    },
+    {
+      "index": 208300,
+      "liquidityNet": "-25409671890749458",
+      "liquidityGross": "25409671890749458"
+    },
+    {
+      "index": 208370,
+      "liquidityNet": "-120640333909134",
+      "liquidityGross": "120640333909134"
+    },
+    {
+      "index": 208430,
+      "liquidityNet": "-15816971942115",
+      "liquidityGross": "15816971942115"
+    },
+    {
+      "index": 208520,
+      "liquidityNet": "-14200570625857586",
+      "liquidityGross": "14200570625857586"
+    },
+    {
+      "index": 208570,
+      "liquidityNet": "-3141856666550976",
+      "liquidityGross": "3141856666550976"
+    },
+    {
+      "index": 208590,
+      "liquidityNet": "-43967184588022",
+      "liquidityGross": "43967184588022"
+    },
+    {
+      "index": 208650,
+      "liquidityNet": "-1238910149582598",
+      "liquidityGross": "1238910149582598"
+    },
+    {
+      "index": 208760,
+      "liquidityNet": "-1759243635560",
+      "liquidityGross": "1759243635560"
+    },
+    {
+      "index": 208830,
+      "liquidityNet": "-706725267863471",
+      "liquidityGross": "706725267863471"
+    },
+    {
+      "index": 208860,
+      "liquidityNet": "-94869802148839",
+      "liquidityGross": "94869802148839"
+    },
+    {
+      "index": 208870,
+      "liquidityNet": "-4010234152988707",
+      "liquidityGross": "4010234152988707"
+    },
+    {
+      "index": 208930,
+      "liquidityNet": "-394603099286572",
+      "liquidityGross": "394603099286572"
+    },
+    {
+      "index": 208940,
+      "liquidityNet": "-120503006880265",
+      "liquidityGross": "120503006880265"
+    },
+    {
+      "index": 208980,
+      "liquidityNet": "-13150608300038773",
+      "liquidityGross": "13150608300038773"
+    },
+    {
+      "index": 208990,
+      "liquidityNet": "-304641516522664",
+      "liquidityGross": "304641516522664"
+    },
+    {
+      "index": 209090,
+      "liquidityNet": "-250370179754575",
+      "liquidityGross": "250370179754575"
+    },
+    {
+      "index": 209120,
+      "liquidityNet": "-14039449939",
+      "liquidityGross": "14039449939"
+    },
+    {
+      "index": 209140,
+      "liquidityNet": "-34367459497789",
+      "liquidityGross": "34367459497789"
+    },
+    {
+      "index": 209200,
+      "liquidityNet": "-24840936900047495",
+      "liquidityGross": "24840936900047495"
+    },
+    {
+      "index": 209270,
+      "liquidityNet": "-35392087769334",
+      "liquidityGross": "35392087769334"
+    },
+    {
+      "index": 209320,
+      "liquidityNet": "-75751395251488",
+      "liquidityGross": "75751395251488"
+    },
+    {
+      "index": 209350,
+      "liquidityNet": "-482949918683832",
+      "liquidityGross": "482949918683832"
+    },
+    {
+      "index": 209400,
+      "liquidityNet": "-24235738425984",
+      "liquidityGross": "24235738425984"
+    },
+    {
+      "index": 209460,
+      "liquidityNet": "-90619867897623278",
+      "liquidityGross": "90619867897623278"
+    },
+    {
+      "index": 209470,
+      "liquidityNet": "-433445481122238279",
+      "liquidityGross": "433445481122238279"
+    },
+    {
+      "index": 209480,
+      "liquidityNet": "-221942155460408",
+      "liquidityGross": "221942155460408"
+    },
+    {
+      "index": 209500,
+      "liquidityNet": "-1628328088740271",
+      "liquidityGross": "1628328088740271"
+    },
+    {
+      "index": 209540,
+      "liquidityNet": "-458070806587746",
+      "liquidityGross": "458070806587746"
+    },
+    {
+      "index": 209650,
+      "liquidityNet": "-382668060908266",
+      "liquidityGross": "382668060908266"
+    },
+    {
+      "index": 209720,
+      "liquidityNet": "-2112575031004604",
+      "liquidityGross": "2112575031004604"
+    },
+    {
+      "index": 209730,
+      "liquidityNet": "-1311433111652150",
+      "liquidityGross": "1311433111652150"
+    },
+    {
+      "index": 209820,
+      "liquidityNet": "-5290420273494589",
+      "liquidityGross": "5290420273494589"
+    },
+    {
+      "index": 209860,
+      "liquidityNet": "-349507721410030",
+      "liquidityGross": "349507721410030"
+    },
+    {
+      "index": 209900,
+      "liquidityNet": "-191701986657523",
+      "liquidityGross": "191701986657523"
+    },
+    {
+      "index": 210120,
+      "liquidityNet": "-13443165164246818",
+      "liquidityGross": "13443165164246818"
+    },
+    {
+      "index": 210380,
+      "liquidityNet": "-228699723058089",
+      "liquidityGross": "228699723058089"
+    },
+    {
+      "index": 210530,
+      "liquidityNet": "-129827948505068",
+      "liquidityGross": "129827948505068"
+    },
+    {
+      "index": 210560,
+      "liquidityNet": "-460703960771530",
+      "liquidityGross": "460703960771530"
+    },
+    {
+      "index": 210780,
+      "liquidityNet": "-111371497598617",
+      "liquidityGross": "111371497598617"
+    },
+    {
+      "index": 210810,
+      "liquidityNet": "-13363292876297819",
+      "liquidityGross": "13494494298280475"
+    },
+    {
+      "index": 210820,
+      "liquidityNet": "-7952536320912254",
+      "liquidityGross": "7952536320912254"
+    },
+    {
+      "index": 210830,
+      "liquidityNet": "-13348687223838",
+      "liquidityGross": "13348687223838"
+    },
+    {
+      "index": 211310,
+      "liquidityNet": "-2649113876628352",
+      "liquidityGross": "2649113876628352"
+    },
+    {
+      "index": 211320,
+      "liquidityNet": "-532218566682991",
+      "liquidityGross": "532218566682991"
+    },
+    {
+      "index": 211400,
+      "liquidityNet": "-1639404066381375",
+      "liquidityGross": "1639404066381375"
+    },
+    {
+      "index": 211440,
+      "liquidityNet": "-2659554920775",
+      "liquidityGross": "2659554920775"
+    },
+    {
+      "index": 211550,
+      "liquidityNet": "-1366052033351",
+      "liquidityGross": "1367464418001"
+    },
+    {
+      "index": 211560,
+      "liquidityNet": "-706192325",
+      "liquidityGross": "706192325"
+    },
+    {
+      "index": 211860,
+      "liquidityNet": "-4650970484447871",
+      "liquidityGross": "4650970484447871"
+    },
+    {
+      "index": 212020,
+      "liquidityNet": "-687370872372034",
+      "liquidityGross": "687370872372034"
+    },
+    {
+      "index": 212080,
+      "liquidityNet": "-4860235671811",
+      "liquidityGross": "4860235671811"
+    },
+    {
+      "index": 212160,
+      "liquidityNet": "-4554637977519",
+      "liquidityGross": "4554637977519"
+    },
+    {
+      "index": 212350,
+      "liquidityNet": "-371820381035680863",
+      "liquidityGross": "371820381035680863"
+    },
+    {
+      "index": 212510,
+      "liquidityNet": "-187004715148085",
+      "liquidityGross": "187004715148085"
+    },
+    {
+      "index": 212600,
+      "liquidityNet": "-13452407513465956",
+      "liquidityGross": "13452407513465956"
+    },
+    {
+      "index": 212830,
+      "liquidityNet": "-7361966495185",
+      "liquidityGross": "7361966495185"
+    },
+    {
+      "index": 213690,
+      "liquidityNet": "-971125615989006",
+      "liquidityGross": "971125615989006"
+    },
+    {
+      "index": 213920,
+      "liquidityNet": "-468965813987698",
+      "liquidityGross": "468965813987698"
+    },
+    {
+      "index": 214170,
+      "liquidityNet": "-9512207854279111",
+      "liquidityGross": "9512207854279111"
+    },
+    {
+      "index": 214200,
+      "liquidityNet": "-369149760427048",
+      "liquidityGross": "369149760427048"
+    },
+    {
+      "index": 214210,
+      "liquidityNet": "-419968624358816",
+      "liquidityGross": "419968624358816"
+    },
+    {
+      "index": 214480,
+      "liquidityNet": "-286162066019032",
+      "liquidityGross": "286162066019032"
+    },
+    {
+      "index": 214930,
+      "liquidityNet": "-458239910053180",
+      "liquidityGross": "458239910053180"
+    },
+    {
+      "index": 215680,
+      "liquidityNet": "-1675802191493858",
+      "liquidityGross": "1675802191493858"
+    },
+    {
+      "index": 216410,
+      "liquidityNet": "-8984147390834767",
+      "liquidityGross": "8984147390834767"
+    },
+    {
+      "index": 216830,
+      "liquidityNet": "-40617221865583",
+      "liquidityGross": "40617221865583"
+    },
+    {
+      "index": 218240,
+      "liquidityNet": "-661293721197889",
+      "liquidityGross": "661293721197889"
+    },
+    {
+      "index": 219270,
+      "liquidityNet": "-86488473467059",
+      "liquidityGross": "86488473467059"
+    },
+    {
+      "index": 219280,
+      "liquidityNet": "-5673322713141237",
+      "liquidityGross": "5673322713141237"
+    },
+    {
+      "index": 219510,
+      "liquidityNet": "-269054369894937",
+      "liquidityGross": "269054369894937"
+    },
+    {
+      "index": 219600,
+      "liquidityNet": "-224082011199",
+      "liquidityGross": "224082011199"
+    },
+    {
+      "index": 220710,
+      "liquidityNet": "-710205531707728",
+      "liquidityGross": "710205531707728"
+    },
+    {
+      "index": 221390,
+      "liquidityNet": "-938972280513385",
+      "liquidityGross": "938972280513385"
+    },
+    {
+      "index": 221990,
+      "liquidityNet": "-1131670065466301",
+      "liquidityGross": "1131670065466301"
+    },
+    {
+      "index": 222430,
+      "liquidityNet": "-63150",
+      "liquidityGross": "63150"
+    },
+    {
+      "index": 223040,
+      "liquidityNet": "-2978621036090",
+      "liquidityGross": "2978621036090"
+    },
+    {
+      "index": 223300,
+      "liquidityNet": "-3619481095470562",
+      "liquidityGross": "3619481095470562"
+    },
+    {
+      "index": 223330,
+      "liquidityNet": "-2399901926881892",
+      "liquidityGross": "2399901926881892"
+    },
+    {
+      "index": 223340,
+      "liquidityNet": "-18396900994865185",
+      "liquidityGross": "18396900994865185"
+    },
+    {
+      "index": 223800,
+      "liquidityNet": "-2479296715876650",
+      "liquidityGross": "2479296715876650"
+    },
+    {
+      "index": 225630,
+      "liquidityNet": "-35531670596",
+      "liquidityGross": "35531670596"
+    },
+    {
+      "index": 225700,
+      "liquidityNet": "-34337229047",
+      "liquidityGross": "34337229047"
+    },
+    {
+      "index": 230270,
+      "liquidityNet": "-574355480",
+      "liquidityGross": "574355480"
+    },
+    {
+      "index": 238030,
+      "liquidityNet": "1356881278244106196",
+      "liquidityGross": "1356881278244106196"
+    },
+    {
+      "index": 238040,
+      "liquidityNet": "-1356881278244106196",
+      "liquidityGross": "1356881278244106196"
+    },
+    {
+      "index": 248140,
+      "liquidityNet": "-27166257770789",
+      "liquidityGross": "27166257770789"
+    },
+    {
+      "index": 249240,
+      "liquidityNet": "-407275582840",
+      "liquidityGross": "407275582840"
+    },
+    {
+      "index": 269390,
+      "liquidityNet": "-24250664520",
+      "liquidityGross": "24250664520"
+    },
+    {
+      "index": 276300,
+      "liquidityNet": "2998029234933125",
+      "liquidityGross": "2998064053514881"
+    },
+    {
+      "index": 276320,
+      "liquidityNet": "-2998046136457217",
+      "liquidityGross": "2998048170679513"
+    },
+    {
+      "index": 292530,
+      "liquidityNet": "-2266789968",
+      "liquidityGross": "2266789968"
+    },
+    {
+      "index": 292560,
+      "liquidityNet": "-2273693713",
+      "liquidityGross": "2273693713"
+    },
+    {
+      "index": 292600,
+      "liquidityNet": "-44739669244",
+      "liquidityGross": "44739669244"
+    },
+    {
+      "index": 310340,
+      "liquidityNet": "-28436567813",
+      "liquidityGross": "28436567813"
+    },
+    {
+      "index": 315450,
+      "liquidityNet": "9660803619765056",
+      "liquidityGross": "9660803619765056"
+    },
+    {
+      "index": 318320,
+      "liquidityNet": "1760538380457838",
+      "liquidityGross": "1760538380457838"
+    },
+    {
+      "index": 322380,
+      "liquidityNet": "-9710148800262585",
+      "liquidityGross": "9710148800262585"
+    },
+    {
+      "index": 343580,
+      "liquidityNet": "209568465799064",
+      "liquidityGross": "209568465799064"
+    },
+    {
+      "index": 344450,
+      "liquidityNet": "3216578076775223",
+      "liquidityGross": "3216578076775223"
+    },
+    {
+      "index": 345410,
+      "liquidityNet": "-5186684923032125",
+      "liquidityGross": "5186684923032125"
+    },
+    {
+      "index": 349460,
+      "liquidityNet": "144400874551320",
+      "liquidityGross": "144400874551320"
+    },
+    {
+      "index": 351240,
+      "liquidityNet": "127004648638536",
+      "liquidityGross": "127004648638536"
+    },
+    {
+      "index": 352340,
+      "liquidityNet": "-144400874551320",
+      "liquidityGross": "144400874551320"
+    },
+    {
+      "index": 354570,
+      "liquidityNet": "47845114297170429",
+      "liquidityGross": "47845114297170429"
+    },
+    {
+      "index": 357790,
+      "liquidityNet": "-1017111148",
+      "liquidityGross": "1017111148"
+    },
+    {
+      "index": 358040,
+      "liquidityNet": "297698757815726047",
+      "liquidityGross": "297698757815726047"
+    },
+    {
+      "index": 358080,
+      "liquidityNet": "-297698757815726047",
+      "liquidityGross": "297698757815726047"
+    },
+    {
+      "index": 359260,
+      "liquidityNet": "-47845114297170429",
+      "liquidityGross": "47845114297170429"
+    },
+    {
+      "index": 391460,
+      "liquidityNet": "11099171960",
+      "liquidityGross": "11099171960"
+    },
+    {
+      "index": 414490,
+      "liquidityNet": "-361670769950375",
+      "liquidityGross": "361670769950375"
+    },
+    {
+      "index": 437510,
+      "liquidityNet": "-6147159285635",
+      "liquidityGross": "6147159285635"
+    },
+    {
+      "index": 759890,
+      "liquidityNet": "-398290794261",
+      "liquidityGross": "398290794261"
+    },
+    {
+      "index": 887270,
+      "liquidityNet": "-2633350168448325",
+      "liquidityGross": "2633350168448325"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "2466706282029645923904",
+      "exactInput": true,
+      "expectedAmountCalculated": "4720190741138"
+    },
+    {
+      "amountSpecified": "51348672952734122871360",
+      "exactInput": true,
+      "expectedAmountCalculated": "88982577874610"
+    },
+    {
+      "amountSpecified": "16760283751441505882880",
+      "exactInput": true,
+      "expectedAmountCalculated": "31456497853737"
+    },
+    {
+      "amountSpecified": "51359894484395339955840",
+      "exactInput": true,
+      "expectedAmountCalculated": "88998908942333"
+    },
+    {
+      "amountSpecified": "36919815817502369094145",
+      "exactInput": true,
+      "expectedAmountCalculated": "66545689223012"
+    },
+    {
+      "amountSpecified": "42495154913588298143040",
+      "exactInput": true,
+      "expectedAmountCalculated": "75509260710993"
+    },
+    {
+      "amountSpecified": "48910495074690091664640",
+      "exactInput": true,
+      "expectedAmountCalculated": "85381556266344"
+    },
+    {
+      "amountSpecified": "8708931841141667440032",
+      "exactInput": true,
+      "expectedAmountCalculated": "16548699312288"
+    },
+    {
+      "amountSpecified": "51780230009279125273920",
+      "exactInput": true,
+      "expectedAmountCalculated": "89609049579281"
+    },
+    {
+      "amountSpecified": "2973212309392002254304",
+      "exactInput": true,
+      "expectedAmountCalculated": "5686442834858"
+    },
+    {
+      "amountSpecified": "56080300733155614464640",
+      "exactInput": true,
+      "expectedAmountCalculated": "95671257156290"
+    },
+    {
+      "amountSpecified": "53473868793248685774720",
+      "exactInput": true,
+      "expectedAmountCalculated": "92035699845092"
+    },
+    {
+      "amountSpecified": "37137470689684568775825",
+      "exactInput": true,
+      "expectedAmountCalculated": "66902316547872"
+    },
+    {
+      "amountSpecified": "42850711990814457213120",
+      "exactInput": true,
+      "expectedAmountCalculated": "76068614519108"
+    },
+    {
+      "amountSpecified": "52548652083037075230720",
+      "exactInput": true,
+      "expectedAmountCalculated": "90716359644690"
+    },
+    {
+      "amountSpecified": "61037969200559602130880",
+      "exactInput": true,
+      "expectedAmountCalculated": "102261932982493"
+    },
+    {
+      "amountSpecified": "47009090411824269718080",
+      "exactInput": true,
+      "expectedAmountCalculated": "82507934322900"
+    },
+    {
+      "amountSpecified": "4056276067043305612416",
+      "exactInput": true,
+      "expectedAmountCalculated": "7749085231287"
+    },
+    {
+      "amountSpecified": "16949955187927990650240",
+      "exactInput": true,
+      "expectedAmountCalculated": "31802239572050"
+    },
+    {
+      "amountSpecified": "18252616701526656985536",
+      "exactInput": true,
+      "expectedAmountCalculated": "34169543766004"
+    },
+    {
+      "amountSpecified": "26272314232456110052416",
+      "exactInput": true,
+      "expectedAmountCalculated": "48457488984491"
+    },
+    {
+      "amountSpecified": "22284279590453213284224",
+      "exactInput": true,
+      "expectedAmountCalculated": "41414793372967"
+    },
+    {
+      "amountSpecified": "52402131981611084050560",
+      "exactInput": true,
+      "expectedAmountCalculated": "90506033300669"
+    },
+    {
+      "amountSpecified": "50126630049753329392320",
+      "exactInput": true,
+      "expectedAmountCalculated": "87190811637095"
+    },
+    {
+      "amountSpecified": "10545608258575298420666",
+      "exactInput": true,
+      "expectedAmountCalculated": "19987676086176"
+    },
+    {
+      "amountSpecified": "58468429974634929238080",
+      "exactInput": true,
+      "expectedAmountCalculated": "98897984041466"
+    },
+    {
+      "amountSpecified": "53154859307155382474880",
+      "exactInput": true,
+      "expectedAmountCalculated": "91582510161219"
+    },
+    {
+      "amountSpecified": "54839757812434082251621",
+      "exactInput": true,
+      "expectedAmountCalculated": "93955895241735"
+    },
+    {
+      "amountSpecified": "12308638635842802358560",
+      "exactInput": true,
+      "expectedAmountCalculated": "23267939515708"
+    },
+    {
+      "amountSpecified": "7609155559527198855360",
+      "exactInput": true,
+      "expectedAmountCalculated": "14479054328718"
+    },
+    {
+      "amountSpecified": "43923575352498351881280",
+      "exactInput": true,
+      "expectedAmountCalculated": "77747589306783"
+    },
+    {
+      "amountSpecified": "25668617401722678206760",
+      "exactInput": true,
+      "expectedAmountCalculated": "47399658894798"
+    },
+    {
+      "amountSpecified": "8961568755171167265312",
+      "exactInput": true,
+      "expectedAmountCalculated": "17023039636998"
+    },
+    {
+      "amountSpecified": "45807176851720343666880",
+      "exactInput": true,
+      "expectedAmountCalculated": "80667083651448"
+    },
+    {
+      "amountSpecified": "55050817207175352850560",
+      "exactInput": true,
+      "expectedAmountCalculated": "94249664115237"
+    },
+    {
+      "amountSpecified": "26166519183199786512576",
+      "exactInput": true,
+      "expectedAmountCalculated": "48272324847446"
+    },
+    {
+      "amountSpecified": "46863734242272660323520",
+      "exactInput": true,
+      "expectedAmountCalculated": "82286292115797"
+    },
+    {
+      "amountSpecified": "52086618091925912564160",
+      "exactInput": true,
+      "expectedAmountCalculated": "90051821436524"
+    },
+    {
+      "amountSpecified": "53115026148517187312640",
+      "exactInput": true,
+      "expectedAmountCalculated": "91525796316839"
+    },
+    {
+      "amountSpecified": "16504551510093583634880",
+      "exactInput": true,
+      "expectedAmountCalculated": "30989927513804"
+    },
+    {
+      "amountSpecified": "1335774408899413514550",
+      "exactInput": true,
+      "expectedAmountCalculated": "2558976167350"
+    },
+    {
+      "amountSpecified": "40292578306158975097598",
+      "exactInput": true,
+      "expectedAmountCalculated": "72011233102701"
+    },
+    {
+      "amountSpecified": "45311608110599045953920",
+      "exactInput": true,
+      "expectedAmountCalculated": "79902938368758"
+    },
+    {
+      "amountSpecified": "55499682680287467236160",
+      "exactInput": true,
+      "expectedAmountCalculated": "94871801339736"
+    },
+    {
+      "amountSpecified": "30250831661741155343424",
+      "exactInput": true,
+      "expectedAmountCalculated": "55351321215463"
+    },
+    {
+      "amountSpecified": "15767526351883308440256",
+      "exactInput": true,
+      "expectedAmountCalculated": "29642629163020"
+    },
+    {
+      "amountSpecified": "61605595298058942486720",
+      "exactInput": true,
+      "expectedAmountCalculated": "102989113236348"
+    },
+    {
+      "amountSpecified": "36337654652177781127680",
+      "exactInput": true,
+      "expectedAmountCalculated": "65589209112120"
+    },
+    {
+      "amountSpecified": "17054207933287799461824",
+      "exactInput": true,
+      "expectedAmountCalculated": "31992165370237"
+    },
+    {
+      "amountSpecified": "349488824595663290100",
+      "exactInput": true,
+      "expectedAmountCalculated": "670131074601"
+    },
+    {
+      "amountSpecified": "95122497945983",
+      "exactInput": false,
+      "expectedAmountCalculated": "55681290168182212749503"
+    },
+    {
+      "amountSpecified": "112574343532105",
+      "exactInput": false,
+      "expectedAmountCalculated": "69549385166076385928700"
+    },
+    {
+      "amountSpecified": "88039116706257",
+      "exactInput": false,
+      "expectedAmountCalculated": "50702958531815021872877"
+    },
+    {
+      "amountSpecified": "91596055916775",
+      "exactInput": false,
+      "expectedAmountCalculated": "53164376133266388747993"
+    },
+    {
+      "amountSpecified": "73088433666062",
+      "exactInput": false,
+      "expectedAmountCalculated": "40967055286528968967010"
+    },
+    {
+      "amountSpecified": "105230803591538",
+      "exactInput": false,
+      "expectedAmountCalculated": "63384083299767990004322"
+    },
+    {
+      "amountSpecified": "68912722032642",
+      "exactInput": false,
+      "expectedAmountCalculated": "38370628708856741831427"
+    },
+    {
+      "amountSpecified": "91574779310422",
+      "exactInput": false,
+      "expectedAmountCalculated": "53149428356735890191144"
+    },
+    {
+      "amountSpecified": "107431012832215",
+      "exactInput": false,
+      "expectedAmountCalculated": "65175422703671260210514"
+    },
+    {
+      "amountSpecified": "104808854813611",
+      "exactInput": false,
+      "expectedAmountCalculated": "63045859259629996675215"
+    },
+    {
+      "amountSpecified": "33907461892150",
+      "exactInput": false,
+      "expectedAmountCalculated": "18108054095961206979408"
+    },
+    {
+      "amountSpecified": "85038221840563",
+      "exactInput": false,
+      "expectedAmountCalculated": "48681603314670075179662"
+    },
+    {
+      "amountSpecified": "60318044264800",
+      "exactInput": false,
+      "expectedAmountCalculated": "33171947756450356519617"
+    },
+    {
+      "amountSpecified": "103042540541346",
+      "exactInput": false,
+      "expectedAmountCalculated": "61647484345536730214254"
+    },
+    {
+      "amountSpecified": "124082247421567",
+      "exactInput": false,
+      "expectedAmountCalculated": "48594363519248297529632902347576646"
+    },
+    {
+      "amountSpecified": "79733961077046",
+      "exactInput": false,
+      "expectedAmountCalculated": "45202274110667678994730"
+    },
+    {
+      "amountSpecified": "34649529120811",
+      "exactInput": false,
+      "expectedAmountCalculated": "18517598114103356733545"
+    },
+    {
+      "amountSpecified": "60416545069414",
+      "exactInput": false,
+      "expectedAmountCalculated": "33230454265327929629387"
+    },
+    {
+      "amountSpecified": "58390365018105",
+      "exactInput": false,
+      "expectedAmountCalculated": "32031840255323780018100"
+    },
+    {
+      "amountSpecified": "108900245014466",
+      "exactInput": false,
+      "expectedAmountCalculated": "66397102910248022786938"
+    },
+    {
+      "amountSpecified": "75498989374542",
+      "exactInput": false,
+      "expectedAmountCalculated": "42488634720909539783659"
+    },
+    {
+      "amountSpecified": "52773478959791",
+      "exactInput": false,
+      "expectedAmountCalculated": "28753701650079601710776"
+    },
+    {
+      "amountSpecified": "17856838472361",
+      "exactInput": false,
+      "expectedAmountCalculated": "9406193523219124669219"
+    },
+    {
+      "amountSpecified": "117052458295966",
+      "exactInput": false,
+      "expectedAmountCalculated": "73620829344414138663199"
+    },
+    {
+      "amountSpecified": "13600206376209",
+      "exactInput": false,
+      "expectedAmountCalculated": "7143277714067203648519"
+    },
+    {
+      "amountSpecified": "20346568615515",
+      "exactInput": false,
+      "expectedAmountCalculated": "10737967894978036670796"
+    },
+    {
+      "amountSpecified": "49563046968502",
+      "exactInput": false,
+      "expectedAmountCalculated": "26905082332833467138993"
+    },
+    {
+      "amountSpecified": "46048466260619",
+      "exactInput": false,
+      "expectedAmountCalculated": "24899951878311358481747"
+    },
+    {
+      "amountSpecified": "59284117085703",
+      "exactInput": false,
+      "expectedAmountCalculated": "32559291677255620002854"
+    },
+    {
+      "amountSpecified": "32280940421643",
+      "exactInput": false,
+      "expectedAmountCalculated": "17212805639919264955678"
+    },
+    {
+      "amountSpecified": "54508746106121",
+      "exactInput": false,
+      "expectedAmountCalculated": "29760191184904229573296"
+    },
+    {
+      "amountSpecified": "75593490074909",
+      "exactInput": false,
+      "expectedAmountCalculated": "42548635306544715154726"
+    },
+    {
+      "amountSpecified": "91551407032176",
+      "exactInput": false,
+      "expectedAmountCalculated": "53133011477314904905696"
+    },
+    {
+      "amountSpecified": "87871725341815",
+      "exactInput": false,
+      "expectedAmountCalculated": "50588917073920213486011"
+    },
+    {
+      "amountSpecified": "69868481027004",
+      "exactInput": false,
+      "expectedAmountCalculated": "38960666094943088794170"
+    },
+    {
+      "amountSpecified": "49107506460508",
+      "exactInput": false,
+      "expectedAmountCalculated": "26644122688900286213547"
+    },
+    {
+      "amountSpecified": "44483373132977",
+      "exactInput": false,
+      "expectedAmountCalculated": "24012976054897531391772"
+    },
+    {
+      "amountSpecified": "108892291690752",
+      "exactInput": false,
+      "expectedAmountCalculated": "66390433858769945848974"
+    },
+    {
+      "amountSpecified": "19734304104093",
+      "exactInput": false,
+      "expectedAmountCalculated": "10409884130871503379525"
+    },
+    {
+      "amountSpecified": "109166101734870",
+      "exactInput": false,
+      "expectedAmountCalculated": "66620388826918856004287"
+    },
+    {
+      "amountSpecified": "93214495536601",
+      "exactInput": false,
+      "expectedAmountCalculated": "54309608780001434738563"
+    },
+    {
+      "amountSpecified": "51021630689772",
+      "exactInput": false,
+      "expectedAmountCalculated": "27742841107745975196551"
+    },
+    {
+      "amountSpecified": "13220439369502",
+      "exactInput": false,
+      "expectedAmountCalculated": "6942159634539215733795"
+    },
+    {
+      "amountSpecified": "3849989236945",
+      "exactInput": false,
+      "expectedAmountCalculated": "2011019425603316493472"
+    },
+    {
+      "amountSpecified": "92186932657554",
+      "exactInput": false,
+      "expectedAmountCalculated": "53580606417255712749478"
+    },
+    {
+      "amountSpecified": "18911405518521",
+      "exactInput": false,
+      "expectedAmountCalculated": "9969528454786620687184"
+    },
+    {
+      "amountSpecified": "1363236900085",
+      "exactInput": false,
+      "expectedAmountCalculated": "711188941737335364377"
+    },
+    {
+      "amountSpecified": "112067154643463",
+      "exactInput": false,
+      "expectedAmountCalculated": "69105101904562237567787"
+    },
+    {
+      "amountSpecified": "2592907995150",
+      "exactInput": false,
+      "expectedAmountCalculated": "1353510165182940223482"
+    },
+    {
+      "amountSpecified": "31940738702489",
+      "exactInput": false,
+      "expectedAmountCalculated": "17025974831836598724692"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640.json b/src/__tests__/stubs/swap/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640.json
new file mode 100644
index 00000000..e431e24c
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640.json
@@ -0,0 +1,6616 @@
+{
+  "poolName": "USDC - WETH 500",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
+    "decimals": 6
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "fee": 500,
+  "liquidity": "49621921044244888348",
+  "sqrtRatioX96": "1808592126067514407788720536148985",
+  "tickCurrent": 200724,
+  "ticks": [
+    {
+      "index": -887270,
+      "liquidityNet": "2716288879863228",
+      "liquidityGross": "2716288879863228"
+    },
+    {
+      "index": -92110,
+      "liquidityNet": "398290794261",
+      "liquidityGross": "398290794261"
+    },
+    {
+      "index": 100,
+      "liquidityNet": "100",
+      "liquidityGross": "100"
+    },
+    {
+      "index": 110,
+      "liquidityNet": "-100",
+      "liquidityGross": "100"
+    },
+    {
+      "index": 22990,
+      "liquidityNet": "6147159285635",
+      "liquidityGross": "6147159285635"
+    },
+    {
+      "index": 46050,
+      "liquidityNet": "49345180497529",
+      "liquidityGross": "49345180497529"
+    },
+    {
+      "index": 92110,
+      "liquidityNet": "25157895928880",
+      "liquidityGross": "25157895928880"
+    },
+    {
+      "index": 102310,
+      "liquidityNet": "17093244380199",
+      "liquidityGross": "17093244380199"
+    },
+    {
+      "index": 108340,
+      "liquidityNet": "2266789968",
+      "liquidityGross": "2266789968"
+    },
+    {
+      "index": 108360,
+      "liquidityNet": "2273693713",
+      "liquidityGross": "2273693713"
+    },
+    {
+      "index": 108390,
+      "liquidityNet": "44739669244",
+      "liquidityGross": "44739669244"
+    },
+    {
+      "index": 115120,
+      "liquidityNet": "144810683332502",
+      "liquidityGross": "144810683332502"
+    },
+    {
+      "index": 156030,
+      "liquidityNet": "27166257770789",
+      "liquidityGross": "27166257770789"
+    },
+    {
+      "index": 161190,
+      "liquidityNet": "574355480",
+      "liquidityGross": "574355480"
+    },
+    {
+      "index": 168120,
+      "liquidityNet": "29191127261591",
+      "liquidityGross": "29191127261591"
+    },
+    {
+      "index": 173230,
+      "liquidityNet": "3859326398247386",
+      "liquidityGross": "3859326398247386"
+    },
+    {
+      "index": 174280,
+      "liquidityNet": "286162066019032",
+      "liquidityGross": "286162066019032"
+    },
+    {
+      "index": 175050,
+      "liquidityNet": "340116935413756",
+      "liquidityGross": "340116935413756"
+    },
+    {
+      "index": 175460,
+      "liquidityNet": "4921975053928",
+      "liquidityGross": "4921975053928"
+    },
+    {
+      "index": 177750,
+      "liquidityNet": "2556963071980969",
+      "liquidityGross": "2556963071980969"
+    },
+    {
+      "index": 178740,
+      "liquidityNet": "99690498623159",
+      "liquidityGross": "99690498623159"
+    },
+    {
+      "index": 180160,
+      "liquidityNet": "314418893940990",
+      "liquidityGross": "314418893940990"
+    },
+    {
+      "index": 180180,
+      "liquidityNet": "419968624358816",
+      "liquidityGross": "419968624358816"
+    },
+    {
+      "index": 181590,
+      "liquidityNet": "105220981852142",
+      "liquidityGross": "105220981852142"
+    },
+    {
+      "index": 181980,
+      "liquidityNet": "24126151433483",
+      "liquidityGross": "24126151433483"
+    },
+    {
+      "index": 182200,
+      "liquidityNet": "1131670065466301",
+      "liquidityGross": "1131670065466301"
+    },
+    {
+      "index": 182390,
+      "liquidityNet": "3031083108180922",
+      "liquidityGross": "3031083108180922"
+    },
+    {
+      "index": 182770,
+      "liquidityNet": "1084560033827482",
+      "liquidityGross": "1084560033827482"
+    },
+    {
+      "index": 183260,
+      "liquidityNet": "14920025509875",
+      "liquidityGross": "14920025509875"
+    },
+    {
+      "index": 184190,
+      "liquidityNet": "40617221865583",
+      "liquidityGross": "40617221865583"
+    },
+    {
+      "index": 184200,
+      "liquidityNet": "17409290878",
+      "liquidityGross": "17409290878"
+    },
+    {
+      "index": 184210,
+      "liquidityNet": "1393414729341552",
+      "liquidityGross": "1393414729341552"
+    },
+    {
+      "index": 184220,
+      "liquidityNet": "4645799703267811",
+      "liquidityGross": "4645799703267811"
+    },
+    {
+      "index": 185050,
+      "liquidityNet": "477197831652989",
+      "liquidityGross": "477197831652989"
+    },
+    {
+      "index": 185270,
+      "liquidityNet": "86488473467059",
+      "liquidityGross": "86488473467059"
+    },
+    {
+      "index": 186300,
+      "liquidityNet": "68676435560479",
+      "liquidityGross": "68676435560479"
+    },
+    {
+      "index": 186320,
+      "liquidityNet": "8039254639562",
+      "liquidityGross": "8039254639562"
+    },
+    {
+      "index": 186420,
+      "liquidityNet": "228699723058089",
+      "liquidityGross": "228699723058089"
+    },
+    {
+      "index": 186430,
+      "liquidityNet": "261844689822052",
+      "liquidityGross": "261844689822052"
+    },
+    {
+      "index": 186450,
+      "liquidityNet": "10512965999177",
+      "liquidityGross": "10512965999177"
+    },
+    {
+      "index": 187090,
+      "liquidityNet": "19044424560471866",
+      "liquidityGross": "19044424560471866"
+    },
+    {
+      "index": 187360,
+      "liquidityNet": "850806041748071",
+      "liquidityGross": "850806041748071"
+    },
+    {
+      "index": 187730,
+      "liquidityNet": "367328826880682",
+      "liquidityGross": "367328826880682"
+    },
+    {
+      "index": 187780,
+      "liquidityNet": "764099728061103",
+      "liquidityGross": "764099728061103"
+    },
+    {
+      "index": 187940,
+      "liquidityNet": "74505996884976",
+      "liquidityGross": "74505996884976"
+    },
+    {
+      "index": 188270,
+      "liquidityNet": "4212306482939579",
+      "liquidityGross": "4212306482939579"
+    },
+    {
+      "index": 188520,
+      "liquidityNet": "2475606916078208",
+      "liquidityGross": "2475606916078208"
+    },
+    {
+      "index": 188690,
+      "liquidityNet": "19316855156189",
+      "liquidityGross": "19316855156189"
+    },
+    {
+      "index": 189100,
+      "liquidityNet": "78220184069471",
+      "liquidityGross": "78220184069471"
+    },
+    {
+      "index": 189320,
+      "liquidityNet": "18444823332822362",
+      "liquidityGross": "18444823332822362"
+    },
+    {
+      "index": 189330,
+      "liquidityNet": "243565064399368",
+      "liquidityGross": "243565064399368"
+    },
+    {
+      "index": 189340,
+      "liquidityNet": "13452407513465956",
+      "liquidityGross": "13452407513465956"
+    },
+    {
+      "index": 189460,
+      "liquidityNet": "2659554920775",
+      "liquidityGross": "2659554920775"
+    },
+    {
+      "index": 189480,
+      "liquidityNet": "657687920129168",
+      "liquidityGross": "657687920129168"
+    },
+    {
+      "index": 189490,
+      "liquidityNet": "453600213217",
+      "liquidityGross": "453600213217"
+    },
+    {
+      "index": 189520,
+      "liquidityNet": "4355219688957",
+      "liquidityGross": "4355219688957"
+    },
+    {
+      "index": 189660,
+      "liquidityNet": "2997242742047791",
+      "liquidityGross": "2997242742047791"
+    },
+    {
+      "index": 189850,
+      "liquidityNet": "468965813987698",
+      "liquidityGross": "468965813987698"
+    },
+    {
+      "index": 190020,
+      "liquidityNet": "90619867897623278",
+      "liquidityGross": "90619867897623278"
+    },
+    {
+      "index": 190130,
+      "liquidityNet": "3077564238585",
+      "liquidityGross": "3077564238585"
+    },
+    {
+      "index": 190140,
+      "liquidityNet": "142527531752494",
+      "liquidityGross": "142527531752494"
+    },
+    {
+      "index": 190190,
+      "liquidityNet": "22089321051557425",
+      "liquidityGross": "22089321051557425"
+    },
+    {
+      "index": 190470,
+      "liquidityNet": "18792719936329890",
+      "liquidityGross": "18792719936329890"
+    },
+    {
+      "index": 190620,
+      "liquidityNet": "16614204290316",
+      "liquidityGross": "16614204290316"
+    },
+    {
+      "index": 190710,
+      "liquidityNet": "137677492457228",
+      "liquidityGross": "137677492457228"
+    },
+    {
+      "index": 190750,
+      "liquidityNet": "5792378655031556",
+      "liquidityGross": "5792378655031556"
+    },
+    {
+      "index": 190760,
+      "liquidityNet": "8008933170518698",
+      "liquidityGross": "8008933170518698"
+    },
+    {
+      "index": 190800,
+      "liquidityNet": "224082011199",
+      "liquidityGross": "224082011199"
+    },
+    {
+      "index": 190860,
+      "liquidityNet": "458239910053180",
+      "liquidityGross": "458239910053180"
+    },
+    {
+      "index": 190890,
+      "liquidityNet": "575535983177301",
+      "liquidityGross": "575535983177301"
+    },
+    {
+      "index": 190920,
+      "liquidityNet": "201125924508196",
+      "liquidityGross": "201125924508196"
+    },
+    {
+      "index": 190940,
+      "liquidityNet": "1144160810605153",
+      "liquidityGross": "1144160810605153"
+    },
+    {
+      "index": 190950,
+      "liquidityNet": "25292570502",
+      "liquidityGross": "25292570502"
+    },
+    {
+      "index": 191070,
+      "liquidityNet": "26970966237299547",
+      "liquidityGross": "26970966237299547"
+    },
+    {
+      "index": 191080,
+      "liquidityNet": "1833420897588024",
+      "liquidityGross": "1833420897588024"
+    },
+    {
+      "index": 191110,
+      "liquidityNet": "2537796806805945",
+      "liquidityGross": "2537796806805945"
+    },
+    {
+      "index": 191140,
+      "liquidityNet": "21452388431607709",
+      "liquidityGross": "21452439016748713"
+    },
+    {
+      "index": 191150,
+      "liquidityNet": "31715293607680278",
+      "liquidityGross": "31715293607680278"
+    },
+    {
+      "index": 191160,
+      "liquidityNet": "550442191879715",
+      "liquidityGross": "550442191879715"
+    },
+    {
+      "index": 191200,
+      "liquidityNet": "567015344253415",
+      "liquidityGross": "567015344253415"
+    },
+    {
+      "index": 191250,
+      "liquidityNet": "91940267068266",
+      "liquidityGross": "91940267068266"
+    },
+    {
+      "index": 191340,
+      "liquidityNet": "47944910966622481",
+      "liquidityGross": "47944910966622481"
+    },
+    {
+      "index": 191350,
+      "liquidityNet": "129827948505068",
+      "liquidityGross": "129827948505068"
+    },
+    {
+      "index": 191360,
+      "liquidityNet": "5188820077378081",
+      "liquidityGross": "5188820077378081"
+    },
+    {
+      "index": 191380,
+      "liquidityNet": "5290420273494589",
+      "liquidityGross": "5290420273494589"
+    },
+    {
+      "index": 191400,
+      "liquidityNet": "255303229099437",
+      "liquidityGross": "255303229099437"
+    },
+    {
+      "index": 191420,
+      "liquidityNet": "938972280513385",
+      "liquidityGross": "938972280513385"
+    },
+    {
+      "index": 191520,
+      "liquidityNet": "30278117302711867",
+      "liquidityGross": "30278117302711867"
+    },
+    {
+      "index": 191590,
+      "liquidityNet": "31987028823439",
+      "liquidityGross": "31987028823439"
+    },
+    {
+      "index": 191650,
+      "liquidityNet": "22299784828533",
+      "liquidityGross": "22299784828533"
+    },
+    {
+      "index": 191660,
+      "liquidityNet": "127110990114945",
+      "liquidityGross": "127110990114945"
+    },
+    {
+      "index": 191720,
+      "liquidityNet": "233928666178226",
+      "liquidityGross": "233928666178226"
+    },
+    {
+      "index": 191780,
+      "liquidityNet": "269054369894937",
+      "liquidityGross": "269054369894937"
+    },
+    {
+      "index": 191790,
+      "liquidityNet": "647230069137340",
+      "liquidityGross": "647230069137340"
+    },
+    {
+      "index": 191840,
+      "liquidityNet": "110172609084353",
+      "liquidityGross": "110172609084353"
+    },
+    {
+      "index": 191870,
+      "liquidityNet": "27685282132444",
+      "liquidityGross": "27685282132444"
+    },
+    {
+      "index": 191930,
+      "liquidityNet": "10497484848368857",
+      "liquidityGross": "10497484848368857"
+    },
+    {
+      "index": 191960,
+      "liquidityNet": "979568660854443",
+      "liquidityGross": "979568660854443"
+    },
+    {
+      "index": 191980,
+      "liquidityNet": "5424360439564036",
+      "liquidityGross": "5424360439564036"
+    },
+    {
+      "index": 192010,
+      "liquidityNet": "-1291672839955340",
+      "liquidityGross": "1291672839955340"
+    },
+    {
+      "index": 192040,
+      "liquidityNet": "-147036927562019",
+      "liquidityGross": "147036927562019"
+    },
+    {
+      "index": 192060,
+      "liquidityNet": "-110172609084353",
+      "liquidityGross": "110172609084353"
+    },
+    {
+      "index": 192070,
+      "liquidityNet": "140326580976",
+      "liquidityGross": "140326580976"
+    },
+    {
+      "index": 192080,
+      "liquidityNet": "4529554013872",
+      "liquidityGross": "4529554013872"
+    },
+    {
+      "index": 192200,
+      "liquidityNet": "7451329750440128",
+      "liquidityGross": "10715171605174410"
+    },
+    {
+      "index": 192340,
+      "liquidityNet": "13506826513573",
+      "liquidityGross": "13506826513573"
+    },
+    {
+      "index": 192380,
+      "liquidityNet": "-2692443696620189",
+      "liquidityGross": "2692443696620189"
+    },
+    {
+      "index": 192430,
+      "liquidityNet": "-10497484848368857",
+      "liquidityGross": "10497484848368857"
+    },
+    {
+      "index": 192470,
+      "liquidityNet": "3651606078237373",
+      "liquidityGross": "3651606078237373"
+    },
+    {
+      "index": 192540,
+      "liquidityNet": "-141815289",
+      "liquidityGross": "2239138129"
+    },
+    {
+      "index": 192580,
+      "liquidityNet": "3790906020488205",
+      "liquidityGross": "3790906020488205"
+    },
+    {
+      "index": 192600,
+      "liquidityNet": "-3644394708515212",
+      "liquidityGross": "3937417332461198"
+    },
+    {
+      "index": 192610,
+      "liquidityNet": "260665095269471",
+      "liquidityGross": "260665095269471"
+    },
+    {
+      "index": 192660,
+      "liquidityNet": "1527033429707466",
+      "liquidityGross": "1527033429707466"
+    },
+    {
+      "index": 192780,
+      "liquidityNet": "37325566006078",
+      "liquidityGross": "37325566006078"
+    },
+    {
+      "index": 192860,
+      "liquidityNet": "132275722559100",
+      "liquidityGross": "132275722559100"
+    },
+    {
+      "index": 192890,
+      "liquidityNet": "12548033716619176",
+      "liquidityGross": "12554507952740636"
+    },
+    {
+      "index": 192900,
+      "liquidityNet": "5875113052435318",
+      "liquidityGross": "5875113052435318"
+    },
+    {
+      "index": 192920,
+      "liquidityNet": "1271190279969978",
+      "liquidityGross": "1271190279969978"
+    },
+    {
+      "index": 192930,
+      "liquidityNet": "380121176868823",
+      "liquidityGross": "380121176868823"
+    },
+    {
+      "index": 192970,
+      "liquidityNet": "-380121176868823",
+      "liquidityGross": "380121176868823"
+    },
+    {
+      "index": 193000,
+      "liquidityNet": "58278198966",
+      "liquidityGross": "58278198966"
+    },
+    {
+      "index": 193010,
+      "liquidityNet": "-140326580976",
+      "liquidityGross": "140326580976"
+    },
+    {
+      "index": 193020,
+      "liquidityNet": "939548715160843",
+      "liquidityGross": "939548715160843"
+    },
+    {
+      "index": 193030,
+      "liquidityNet": "98698960755",
+      "liquidityGross": "98698960755"
+    },
+    {
+      "index": 193120,
+      "liquidityNet": "5093975067",
+      "liquidityGross": "5093975067"
+    },
+    {
+      "index": 193130,
+      "liquidityNet": "1374788092377474",
+      "liquidityGross": "1374788092377474"
+    },
+    {
+      "index": 193160,
+      "liquidityNet": "-639430873",
+      "liquidityGross": "196758490637"
+    },
+    {
+      "index": 193180,
+      "liquidityNet": "-3849302575662331",
+      "liquidityGross": "6999418303465741"
+    },
+    {
+      "index": 193220,
+      "liquidityNet": "-455557811709710",
+      "liquidityGross": "2694674472491632"
+    },
+    {
+      "index": 193260,
+      "liquidityNet": "1104687768",
+      "liquidityGross": "1104687768"
+    },
+    {
+      "index": 193290,
+      "liquidityNet": "-88317105720",
+      "liquidityGross": "107801954044"
+    },
+    {
+      "index": 193300,
+      "liquidityNet": "5490072800",
+      "liquidityGross": "5490072800"
+    },
+    {
+      "index": 193310,
+      "liquidityNet": "1321177965",
+      "liquidityGross": "1321177965"
+    },
+    {
+      "index": 193320,
+      "liquidityNet": "99632773513906",
+      "liquidityGross": "99632773513906"
+    },
+    {
+      "index": 193330,
+      "liquidityNet": "1056433670807",
+      "liquidityGross": "1056433670807"
+    },
+    {
+      "index": 193360,
+      "liquidityNet": "3901301605215",
+      "liquidityGross": "3901301605215"
+    },
+    {
+      "index": 193370,
+      "liquidityNet": "15759466717948",
+      "liquidityGross": "15769654668082"
+    },
+    {
+      "index": 193380,
+      "liquidityNet": "77651808433686788",
+      "liquidityGross": "77651808433686788"
+    },
+    {
+      "index": 193420,
+      "liquidityNet": "87050644984",
+      "liquidityGross": "106535493308"
+    },
+    {
+      "index": 193440,
+      "liquidityNet": "570101417623",
+      "liquidityGross": "570101417623"
+    },
+    {
+      "index": 193450,
+      "liquidityNet": "157249594032733",
+      "liquidityGross": "157249594032733"
+    },
+    {
+      "index": 193460,
+      "liquidityNet": "623826208420208",
+      "liquidityGross": "623826208420208"
+    },
+    {
+      "index": 193510,
+      "liquidityNet": "179220340303798",
+      "liquidityGross": "179220340303798"
+    },
+    {
+      "index": 193530,
+      "liquidityNet": "-157255084105533",
+      "liquidityGross": "157255084105533"
+    },
+    {
+      "index": 193550,
+      "liquidityNet": "-96793069146",
+      "liquidityGross": "96793069146"
+    },
+    {
+      "index": 193560,
+      "liquidityNet": "-91895808203645",
+      "liquidityGross": "91984725932887"
+    },
+    {
+      "index": 193570,
+      "liquidityNet": "417345483866658",
+      "liquidityGross": "417345483866658"
+    },
+    {
+      "index": 193580,
+      "liquidityNet": "-179220340303798",
+      "liquidityGross": "179220340303798"
+    },
+    {
+      "index": 193600,
+      "liquidityNet": "-417345483866658",
+      "liquidityGross": "417345483866658"
+    },
+    {
+      "index": 193630,
+      "liquidityNet": "57987077630908130",
+      "liquidityGross": "57987077630908130"
+    },
+    {
+      "index": 193640,
+      "liquidityNet": "23096167522516331",
+      "liquidityGross": "23096167522516331"
+    },
+    {
+      "index": 193660,
+      "liquidityNet": "-570101417623",
+      "liquidityGross": "570101417623"
+    },
+    {
+      "index": 193670,
+      "liquidityNet": "14150488557745",
+      "liquidityGross": "14150488557745"
+    },
+    {
+      "index": 193680,
+      "liquidityNet": "35416386370631",
+      "liquidityGross": "35416386370631"
+    },
+    {
+      "index": 193690,
+      "liquidityNet": "1501847773342629",
+      "liquidityGross": "1501847773342629"
+    },
+    {
+      "index": 193700,
+      "liquidityNet": "262094583581",
+      "liquidityGross": "262094583581"
+    },
+    {
+      "index": 193710,
+      "liquidityNet": "7952536320912254",
+      "liquidityGross": "7952536320912254"
+    },
+    {
+      "index": 193720,
+      "liquidityNet": "996622660873",
+      "liquidityGross": "996622660873"
+    },
+    {
+      "index": 193730,
+      "liquidityNet": "3908448339193",
+      "liquidityGross": "3908448339193"
+    },
+    {
+      "index": 193760,
+      "liquidityNet": "1004824052",
+      "liquidityGross": "3102146892"
+    },
+    {
+      "index": 193790,
+      "liquidityNet": "2950851383647149",
+      "liquidityGross": "2950851383647149"
+    },
+    {
+      "index": 193820,
+      "liquidityNet": "1042789587533",
+      "liquidityGross": "1042789587533"
+    },
+    {
+      "index": 193830,
+      "liquidityNet": "-26970966237299547",
+      "liquidityGross": "26970966237299547"
+    },
+    {
+      "index": 193840,
+      "liquidityNet": "-44458864621",
+      "liquidityGross": "44458864621"
+    },
+    {
+      "index": 193850,
+      "liquidityNet": "-2950851383647149",
+      "liquidityGross": "2950851383647149"
+    },
+    {
+      "index": 193860,
+      "liquidityNet": "696678463852447",
+      "liquidityGross": "696678463852447"
+    },
+    {
+      "index": 193890,
+      "liquidityNet": "10009087643467074",
+      "liquidityGross": "11230992382562938"
+    },
+    {
+      "index": 193910,
+      "liquidityNet": "33955042064486354",
+      "liquidityGross": "33955042064486354"
+    },
+    {
+      "index": 193930,
+      "liquidityNet": "4070062451646194",
+      "liquidityGross": "4070062451646194"
+    },
+    {
+      "index": 193960,
+      "liquidityNet": "1822386206570",
+      "liquidityGross": "3907965381636"
+    },
+    {
+      "index": 193970,
+      "liquidityNet": "-4070062451646194",
+      "liquidityGross": "4070062451646194"
+    },
+    {
+      "index": 194000,
+      "liquidityNet": "578487187670509",
+      "liquidityGross": "578487187670509"
+    },
+    {
+      "index": 194010,
+      "liquidityNet": "263734251749565",
+      "liquidityGross": "263734251749565"
+    },
+    {
+      "index": 194020,
+      "liquidityNet": "40254458411129649",
+      "liquidityGross": "50632098565885811"
+    },
+    {
+      "index": 194090,
+      "liquidityNet": "-516393172018",
+      "liquidityGross": "5213958416188"
+    },
+    {
+      "index": 194150,
+      "liquidityNet": "623119118803433",
+      "liquidityGross": "623119118803433"
+    },
+    {
+      "index": 194160,
+      "liquidityNet": "967325374532163",
+      "liquidityGross": "967325374532163"
+    },
+    {
+      "index": 194190,
+      "liquidityNet": "450326129199120",
+      "liquidityGross": "450326129199120"
+    },
+    {
+      "index": 194220,
+      "liquidityNet": "-47944910966622481",
+      "liquidityGross": "47944910966622481"
+    },
+    {
+      "index": 194230,
+      "liquidityNet": "-139222667605",
+      "liquidityGross": "4558342576565"
+    },
+    {
+      "index": 194260,
+      "liquidityNet": "1342889865041",
+      "liquidityGross": "1342889865041"
+    },
+    {
+      "index": 194300,
+      "liquidityNet": "-832531733292424",
+      "liquidityGross": "832531733292424"
+    },
+    {
+      "index": 194320,
+      "liquidityNet": "-4921975053928",
+      "liquidityGross": "4921975053928"
+    },
+    {
+      "index": 194330,
+      "liquidityNet": "27821650068152",
+      "liquidityGross": "27821650068152"
+    },
+    {
+      "index": 194340,
+      "liquidityNet": "12926963309367",
+      "liquidityGross": "12926963309367"
+    },
+    {
+      "index": 194350,
+      "liquidityNet": "3531029817741",
+      "liquidityGross": "3531029817741"
+    },
+    {
+      "index": 194360,
+      "liquidityNet": "509757247476",
+      "liquidityGross": "509757247476"
+    },
+    {
+      "index": 194380,
+      "liquidityNet": "-2209802648926",
+      "liquidityGross": "2212642295254"
+    },
+    {
+      "index": 194420,
+      "liquidityNet": "340283129357924",
+      "liquidityGross": "340283129357924"
+    },
+    {
+      "index": 194430,
+      "liquidityNet": "2977903715431593",
+      "liquidityGross": "2977903715431593"
+    },
+    {
+      "index": 194460,
+      "liquidityNet": "5127849862334345",
+      "liquidityGross": "5127849862334345"
+    },
+    {
+      "index": 194580,
+      "liquidityNet": "-657687920129168",
+      "liquidityGross": "657687920129168"
+    },
+    {
+      "index": 194590,
+      "liquidityNet": "268446570641767",
+      "liquidityGross": "268446570641767"
+    },
+    {
+      "index": 194600,
+      "liquidityNet": "1121321520802207",
+      "liquidityGross": "1121321520802207"
+    },
+    {
+      "index": 194610,
+      "liquidityNet": "5967819685",
+      "liquidityGross": "5967819685"
+    },
+    {
+      "index": 194630,
+      "liquidityNet": "6424490195576071",
+      "liquidityGross": "8667133237180485"
+    },
+    {
+      "index": 194640,
+      "liquidityNet": "1238910149582598",
+      "liquidityGross": "1238910149582598"
+    },
+    {
+      "index": 194650,
+      "liquidityNet": "146880718656569979",
+      "liquidityGross": "150541502021557115"
+    },
+    {
+      "index": 194660,
+      "liquidityNet": "14126064628972610",
+      "liquidityGross": "14126064628972610"
+    },
+    {
+      "index": 194670,
+      "liquidityNet": "1200550723673258",
+      "liquidityGross": "1200550723673258"
+    },
+    {
+      "index": 194680,
+      "liquidityNet": "-144772926773805064",
+      "liquidityGross": "152649293904322030"
+    },
+    {
+      "index": 194690,
+      "liquidityNet": "-1093775182336858",
+      "liquidityGross": "1093775182336858"
+    },
+    {
+      "index": 194700,
+      "liquidityNet": "4950483449383950",
+      "liquidityGross": "4950483449383950"
+    },
+    {
+      "index": 194710,
+      "liquidityNet": "367192869355612256",
+      "liquidityGross": "369725591327783112"
+    },
+    {
+      "index": 194720,
+      "liquidityNet": "38466559516912",
+      "liquidityGross": "38466559516912"
+    },
+    {
+      "index": 194750,
+      "liquidityNet": "-1182669380098989",
+      "liquidityGross": "1182669380098989"
+    },
+    {
+      "index": 194790,
+      "liquidityNet": "931490015694351",
+      "liquidityGross": "931490015694351"
+    },
+    {
+      "index": 194800,
+      "liquidityNet": "-239688404716091",
+      "liquidityGross": "1623291626672611"
+    },
+    {
+      "index": 194820,
+      "liquidityNet": "-4998254988088075",
+      "liquidityGross": "5941291889963439"
+    },
+    {
+      "index": 194830,
+      "liquidityNet": "-14688771335513",
+      "liquidityGross": "14688771335513"
+    },
+    {
+      "index": 194840,
+      "liquidityNet": "-26943481088147",
+      "liquidityGross": "49989637945677"
+    },
+    {
+      "index": 194850,
+      "liquidityNet": "-3938183565258483",
+      "liquidityGross": "3938183565258483"
+    },
+    {
+      "index": 194860,
+      "liquidityNet": "176065490988280",
+      "liquidityGross": "176065490988280"
+    },
+    {
+      "index": 194870,
+      "liquidityNet": "76050718029248",
+      "liquidityGross": "76050718029248"
+    },
+    {
+      "index": 194880,
+      "liquidityNet": "151573708324872",
+      "liquidityGross": "151573708324872"
+    },
+    {
+      "index": 194890,
+      "liquidityNet": "187004715148085",
+      "liquidityGross": "187004715148085"
+    },
+    {
+      "index": 194900,
+      "liquidityNet": "66651400156776",
+      "liquidityGross": "66651400156776"
+    },
+    {
+      "index": 194910,
+      "liquidityNet": "-66651400156776",
+      "liquidityGross": "66651400156776"
+    },
+    {
+      "index": 194920,
+      "liquidityNet": "538225609134",
+      "liquidityGross": "538225609134"
+    },
+    {
+      "index": 194940,
+      "liquidityNet": "-158603085041991",
+      "liquidityGross": "329642226505221"
+    },
+    {
+      "index": 194960,
+      "liquidityNet": "-244811998431587",
+      "liquidityGross": "244811998431587"
+    },
+    {
+      "index": 194970,
+      "liquidityNet": "1802701792613418",
+      "liquidityGross": "2105849209263162"
+    },
+    {
+      "index": 194980,
+      "liquidityNet": "6564461945745269",
+      "liquidityGross": "6564461945745269"
+    },
+    {
+      "index": 194990,
+      "liquidityNet": "25652705721581",
+      "liquidityGross": "25652705721581"
+    },
+    {
+      "index": 195000,
+      "liquidityNet": "-10544119557858157",
+      "liquidityGross": "15589353696767803"
+    },
+    {
+      "index": 195010,
+      "liquidityNet": "-25652705721581",
+      "liquidityGross": "25652705721581"
+    },
+    {
+      "index": 195030,
+      "liquidityNet": "26218236507224832",
+      "liquidityGross": "26431787589897632"
+    },
+    {
+      "index": 195040,
+      "liquidityNet": "-268446570641767",
+      "liquidityGross": "268446570641767"
+    },
+    {
+      "index": 195060,
+      "liquidityNet": "694346801997580",
+      "liquidityGross": "694346801997580"
+    },
+    {
+      "index": 195070,
+      "liquidityNet": "-1413125670",
+      "liquidityGross": "1413125670"
+    },
+    {
+      "index": 195080,
+      "liquidityNet": "1401403373492671",
+      "liquidityGross": "1401403373492671"
+    },
+    {
+      "index": 195100,
+      "liquidityNet": "-9608101227835",
+      "liquidityGross": "17405551799311"
+    },
+    {
+      "index": 195120,
+      "liquidityNet": "666421956716576",
+      "liquidityGross": "666421956716576"
+    },
+    {
+      "index": 195200,
+      "liquidityNet": "-1406872423671",
+      "liquidityGross": "1406872423671"
+    },
+    {
+      "index": 195210,
+      "liquidityNet": "-219252698",
+      "liquidityGross": "2785453550"
+    },
+    {
+      "index": 195220,
+      "liquidityNet": "249860422507099",
+      "liquidityGross": "250879937002051"
+    },
+    {
+      "index": 195240,
+      "liquidityNet": "12141064759829",
+      "liquidityGross": "12141064759829"
+    },
+    {
+      "index": 195300,
+      "liquidityNet": "15056748437210771",
+      "liquidityGross": "15056748437210771"
+    },
+    {
+      "index": 195310,
+      "liquidityNet": "24854740811526245",
+      "liquidityGross": "24854740811526245"
+    },
+    {
+      "index": 195320,
+      "liquidityNet": "-647230069137340",
+      "liquidityGross": "647230069137340"
+    },
+    {
+      "index": 195330,
+      "liquidityNet": "48002573667553",
+      "liquidityGross": "48002573667553"
+    },
+    {
+      "index": 195350,
+      "liquidityNet": "203533410679462",
+      "liquidityGross": "203533410679462"
+    },
+    {
+      "index": 195360,
+      "liquidityNet": "532218566682991",
+      "liquidityGross": "532218566682991"
+    },
+    {
+      "index": 195380,
+      "liquidityNet": "104",
+      "liquidityGross": "104"
+    },
+    {
+      "index": 195430,
+      "liquidityNet": "1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 195440,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 195450,
+      "liquidityNet": "98203969114105",
+      "liquidityGross": "98203969114105"
+    },
+    {
+      "index": 195520,
+      "liquidityNet": "130582021559616",
+      "liquidityGross": "130582021559616"
+    },
+    {
+      "index": 195540,
+      "liquidityNet": "-550442191879715",
+      "liquidityGross": "550442191879715"
+    },
+    {
+      "index": 195550,
+      "liquidityNet": "11371938456027640",
+      "liquidityGross": "11568346394255850"
+    },
+    {
+      "index": 195570,
+      "liquidityNet": "14804467337715268",
+      "liquidityGross": "14804467337715268"
+    },
+    {
+      "index": 195580,
+      "liquidityNet": "24235738425984",
+      "liquidityGross": "24235738425984"
+    },
+    {
+      "index": 195590,
+      "liquidityNet": "-14415848812699787",
+      "liquidityGross": "15193085862730749"
+    },
+    {
+      "index": 195600,
+      "liquidityNet": "-384687958841511",
+      "liquidityGross": "392549091189451"
+    },
+    {
+      "index": 195610,
+      "liquidityNet": "1355596925669521547",
+      "liquidityGross": "1355956322656528591"
+    },
+    {
+      "index": 195620,
+      "liquidityNet": "-12537396996603672",
+      "liquidityGross": "12538647922424510"
+    },
+    {
+      "index": 195660,
+      "liquidityNet": "61045376348774",
+      "liquidityGross": "61045376348774"
+    },
+    {
+      "index": 195730,
+      "liquidityNet": "4397491169475027",
+      "liquidityGross": "4397491169475027"
+    },
+    {
+      "index": 195740,
+      "liquidityNet": "101",
+      "liquidityGross": "101"
+    },
+    {
+      "index": 195750,
+      "liquidityNet": "-4350147384955596",
+      "liquidityGross": "4444834953994460"
+    },
+    {
+      "index": 195790,
+      "liquidityNet": "-46686970289721",
+      "liquidityGross": "48000598749143"
+    },
+    {
+      "index": 195800,
+      "liquidityNet": "72232194614980",
+      "liquidityGross": "73483120435818"
+    },
+    {
+      "index": 195820,
+      "liquidityNet": "51329394322148",
+      "liquidityGross": "51329394322148"
+    },
+    {
+      "index": 195830,
+      "liquidityNet": "519652585288",
+      "liquidityGross": "519652585288"
+    },
+    {
+      "index": 195860,
+      "liquidityNet": "3662826946255273",
+      "liquidityGross": "3662826946255273"
+    },
+    {
+      "index": 195870,
+      "liquidityNet": "-3580910745440601",
+      "liquidityGross": "3580910745440601"
+    },
+    {
+      "index": 195890,
+      "liquidityNet": "1130623930463",
+      "liquidityGross": "1130623930463"
+    },
+    {
+      "index": 195910,
+      "liquidityNet": "2509357044073",
+      "liquidityGross": "2509357044073"
+    },
+    {
+      "index": 195930,
+      "liquidityNet": "152608862707730447",
+      "liquidityGross": "152781916909910933"
+    },
+    {
+      "index": 195940,
+      "liquidityNet": "4994883009476853",
+      "liquidityGross": "4994883009476853"
+    },
+    {
+      "index": 195960,
+      "liquidityNet": "-656814229711",
+      "liquidityGross": "656814229711"
+    },
+    {
+      "index": 195970,
+      "liquidityNet": "-1526891065935595",
+      "liquidityGross": "1526891065935595"
+    },
+    {
+      "index": 196000,
+      "liquidityNet": "-37325566006078",
+      "liquidityGross": "37325566006078"
+    },
+    {
+      "index": 196010,
+      "liquidityNet": "13492027754574715",
+      "liquidityGross": "13492027754574715"
+    },
+    {
+      "index": 196030,
+      "liquidityNet": "271363588399423",
+      "liquidityGross": "271363588399423"
+    },
+    {
+      "index": 196050,
+      "liquidityNet": "71652250958",
+      "liquidityGross": "71652250958"
+    },
+    {
+      "index": 196060,
+      "liquidityNet": "-10412471768880",
+      "liquidityGross": "10454677734044"
+    },
+    {
+      "index": 196080,
+      "liquidityNet": "1277492174934785",
+      "liquidityGross": "1277492174934785"
+    },
+    {
+      "index": 196090,
+      "liquidityNet": "-943425518917653",
+      "liquidityGross": "943428409764095"
+    },
+    {
+      "index": 196100,
+      "liquidityNet": "53043049614877",
+      "liquidityGross": "53043049614877"
+    },
+    {
+      "index": 196130,
+      "liquidityNet": "-3898725285738",
+      "liquidityGross": "3898725285738"
+    },
+    {
+      "index": 196160,
+      "liquidityNet": "7699417542060044",
+      "liquidityGross": "8434075195821408"
+    },
+    {
+      "index": 196170,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 196210,
+      "liquidityNet": "64532086810",
+      "liquidityGross": "64532086810"
+    },
+    {
+      "index": 196220,
+      "liquidityNet": "5707363499300068",
+      "liquidityGross": "5707363499300070"
+    },
+    {
+      "index": 196250,
+      "liquidityNet": "23077597236750254",
+      "liquidityGross": "23077597236750254"
+    },
+    {
+      "index": 196260,
+      "liquidityNet": "490097613953569803",
+      "liquidityGross": "494873718523923257"
+    },
+    {
+      "index": 196270,
+      "liquidityNet": "257949016690013",
+      "liquidityGross": "257949016690013"
+    },
+    {
+      "index": 196280,
+      "liquidityNet": "257095857666506",
+      "liquidityGross": "318989869121494"
+    },
+    {
+      "index": 196300,
+      "liquidityNet": "8517146608764286",
+      "liquidityGross": "8517146608764286"
+    },
+    {
+      "index": 196310,
+      "liquidityNet": "1147066429699",
+      "liquidityGross": "1147066429699"
+    },
+    {
+      "index": 196320,
+      "liquidityNet": "-7089965738828687",
+      "liquidityGross": "7089965738828687"
+    },
+    {
+      "index": 196340,
+      "liquidityNet": "12196434850220449",
+      "liquidityGross": "12196434850220449"
+    },
+    {
+      "index": 196470,
+      "liquidityNet": "1951811236200",
+      "liquidityGross": "1951811236200"
+    },
+    {
+      "index": 196480,
+      "liquidityNet": "-698427690830837",
+      "liquidityGross": "698427690830837"
+    },
+    {
+      "index": 196490,
+      "liquidityNet": "108250602293425784",
+      "liquidityGross": "108250602293425784"
+    },
+    {
+      "index": 196500,
+      "liquidityNet": "-108250602293425784",
+      "liquidityGross": "108250602293425784"
+    },
+    {
+      "index": 196510,
+      "liquidityNet": "-2515324863758",
+      "liquidityGross": "2515324863758"
+    },
+    {
+      "index": 196520,
+      "liquidityNet": "-137677492457228",
+      "liquidityGross": "137677492457228"
+    },
+    {
+      "index": 196530,
+      "liquidityNet": "-519652585288",
+      "liquidityGross": "519652585288"
+    },
+    {
+      "index": 196560,
+      "liquidityNet": "739676173805",
+      "liquidityGross": "739676173805"
+    },
+    {
+      "index": 196590,
+      "liquidityNet": "188375883485241",
+      "liquidityGross": "188375883485241"
+    },
+    {
+      "index": 196600,
+      "liquidityNet": "-10898347096848166",
+      "liquidityGross": "12041937753435324"
+    },
+    {
+      "index": 196650,
+      "liquidityNet": "-1829636824896703",
+      "liquidityGross": "1829636824896703"
+    },
+    {
+      "index": 196660,
+      "liquidityNet": "-1951811236200",
+      "liquidityGross": "1951811236200"
+    },
+    {
+      "index": 196690,
+      "liquidityNet": "-1304217361031563",
+      "liquidityGross": "1304217361031563"
+    },
+    {
+      "index": 196740,
+      "liquidityNet": "-100",
+      "liquidityGross": "100"
+    },
+    {
+      "index": 196760,
+      "liquidityNet": "-278499574540156",
+      "liquidityGross": "278499574540156"
+    },
+    {
+      "index": 196770,
+      "liquidityNet": "239359700163574",
+      "liquidityGross": "239359700163574"
+    },
+    {
+      "index": 196790,
+      "liquidityNet": "1066390407623954",
+      "liquidityGross": "1066390407623954"
+    },
+    {
+      "index": 196800,
+      "liquidityNet": "12084217892414819",
+      "liquidityGross": "14216998707662727"
+    },
+    {
+      "index": 196820,
+      "liquidityNet": "31507067812105",
+      "liquidityGross": "31507067812105"
+    },
+    {
+      "index": 196840,
+      "liquidityNet": "-14334110",
+      "liquidityGross": "2876512332"
+    },
+    {
+      "index": 196850,
+      "liquidityNet": "56882",
+      "liquidityGross": "56882"
+    },
+    {
+      "index": 196860,
+      "liquidityNet": "-61045376348774",
+      "liquidityGross": "61045376348774"
+    },
+    {
+      "index": 196870,
+      "liquidityNet": "-1875018971419632",
+      "liquidityGross": "1875018971419632"
+    },
+    {
+      "index": 196890,
+      "liquidityNet": "-428994694244339",
+      "liquidityGross": "429357564633105"
+    },
+    {
+      "index": 196910,
+      "liquidityNet": "37264507541534316",
+      "liquidityGross": "37264507541534316"
+    },
+    {
+      "index": 196920,
+      "liquidityNet": "69186547099629891",
+      "liquidityGross": "69186547099629891"
+    },
+    {
+      "index": 196940,
+      "liquidityNet": "76877750333830274",
+      "liquidityGross": "76877750333830274"
+    },
+    {
+      "index": 196950,
+      "liquidityNet": "3688176262712448",
+      "liquidityGross": "5262175446966750"
+    },
+    {
+      "index": 196970,
+      "liquidityNet": "1021324045353797",
+      "liquidityGross": "1021324045353797"
+    },
+    {
+      "index": 196980,
+      "liquidityNet": "10605642295147",
+      "liquidityGross": "10605642295147"
+    },
+    {
+      "index": 196990,
+      "liquidityNet": "-1021236380313973",
+      "liquidityGross": "1021411710393621"
+    },
+    {
+      "index": 197000,
+      "liquidityNet": "28959425226591",
+      "liquidityGross": "28959425226591"
+    },
+    {
+      "index": 197030,
+      "liquidityNet": "1028121162429240068",
+      "liquidityGross": "1028121162429240068"
+    },
+    {
+      "index": 197050,
+      "liquidityNet": "2174495135868337",
+      "liquidityGross": "2174495135868337"
+    },
+    {
+      "index": 197070,
+      "liquidityNet": "-132275722559100",
+      "liquidityGross": "132275722559100"
+    },
+    {
+      "index": 197080,
+      "liquidityNet": "-15493378422786",
+      "liquidityGross": "15493378422786"
+    },
+    {
+      "index": 197110,
+      "liquidityNet": "-2203454561094928",
+      "liquidityGross": "2203454561094928"
+    },
+    {
+      "index": 197120,
+      "liquidityNet": "-578487187670509",
+      "liquidityGross": "578487187670509"
+    },
+    {
+      "index": 197130,
+      "liquidityNet": "19349839949802235",
+      "liquidityGross": "19349839949802235"
+    },
+    {
+      "index": 197150,
+      "liquidityNet": "58673121414153",
+      "liquidityGross": "59749572632421"
+    },
+    {
+      "index": 197160,
+      "liquidityNet": "1285538759068549",
+      "liquidityGross": "1285538759068549"
+    },
+    {
+      "index": 197200,
+      "liquidityNet": "-1285536236288114",
+      "liquidityGross": "1285541281848984"
+    },
+    {
+      "index": 197220,
+      "liquidityNet": "-108859507196781",
+      "liquidityGross": "108859507196781"
+    },
+    {
+      "index": 197230,
+      "liquidityNet": "107854802543396",
+      "liquidityGross": "107854802543396"
+    },
+    {
+      "index": 197240,
+      "liquidityNet": "-30011967107342",
+      "liquidityGross": "30011967107342"
+    },
+    {
+      "index": 197250,
+      "liquidityNet": "1117313825205008",
+      "liquidityGross": "1117313825205008"
+    },
+    {
+      "index": 197260,
+      "liquidityNet": "8308484297467205",
+      "liquidityGross": "8308484297467205"
+    },
+    {
+      "index": 197280,
+      "liquidityNet": "-1089503677303",
+      "liquidityGross": "1089503677303"
+    },
+    {
+      "index": 197310,
+      "liquidityNet": "-15559019011565462",
+      "liquidityGross": "65620105681416948"
+    },
+    {
+      "index": 197320,
+      "liquidityNet": "515954523577612",
+      "liquidityGross": "515954523577612"
+    },
+    {
+      "index": 197330,
+      "liquidityNet": "23425215916462",
+      "liquidityGross": "23425215916462"
+    },
+    {
+      "index": 197340,
+      "liquidityNet": "-97186012461108",
+      "liquidityGross": "97186012461108"
+    },
+    {
+      "index": 197350,
+      "liquidityNet": "-8205159791593",
+      "liquidityGross": "38645272041331"
+    },
+    {
+      "index": 197360,
+      "liquidityNet": "19815577475052200",
+      "liquidityGross": "19815577475052200"
+    },
+    {
+      "index": 197370,
+      "liquidityNet": "-80461899445995",
+      "liquidityGross": "80461899445995"
+    },
+    {
+      "index": 197380,
+      "liquidityNet": "16132804791609061",
+      "liquidityGross": "18174896587534819"
+    },
+    {
+      "index": 197400,
+      "liquidityNet": "4214403944817820",
+      "liquidityGross": "4214403944817820"
+    },
+    {
+      "index": 197410,
+      "liquidityNet": "641769943988365",
+      "liquidityGross": "641769943988365"
+    },
+    {
+      "index": 197430,
+      "liquidityNet": "273586305705783",
+      "liquidityGross": "483268679727673"
+    },
+    {
+      "index": 197440,
+      "liquidityNet": "-4214403944817820",
+      "liquidityGross": "4214403944817820"
+    },
+    {
+      "index": 197450,
+      "liquidityNet": "-19935533585891",
+      "liquidityGross": "19935533585891"
+    },
+    {
+      "index": 197460,
+      "liquidityNet": "1331726419258918",
+      "liquidityGross": "1331726419258918"
+    },
+    {
+      "index": 197470,
+      "liquidityNet": "61589487649761",
+      "liquidityGross": "61589487649761"
+    },
+    {
+      "index": 197480,
+      "liquidityNet": "-3791079431642",
+      "liquidityGross": "3791079431642"
+    },
+    {
+      "index": 197490,
+      "liquidityNet": "3326796529871528",
+      "liquidityGross": "3385285363373710"
+    },
+    {
+      "index": 197500,
+      "liquidityNet": "210254155767310",
+      "liquidityGross": "210254155767310"
+    },
+    {
+      "index": 197530,
+      "liquidityNet": "539241987876",
+      "liquidityGross": "539241987876"
+    },
+    {
+      "index": 197540,
+      "liquidityNet": "-539241987876",
+      "liquidityGross": "539241987876"
+    },
+    {
+      "index": 197560,
+      "liquidityNet": "27595709583757",
+      "liquidityGross": "27595709583757"
+    },
+    {
+      "index": 197570,
+      "liquidityNet": "11359305584262570",
+      "liquidityGross": "11359308446440792"
+    },
+    {
+      "index": 197580,
+      "liquidityNet": "-77595848930828",
+      "liquidityGross": "190509459765420"
+    },
+    {
+      "index": 197610,
+      "liquidityNet": "-2522780435",
+      "liquidityGross": "2522780435"
+    },
+    {
+      "index": 197620,
+      "liquidityNet": "5353547592293",
+      "liquidityGross": "14063986970207"
+    },
+    {
+      "index": 197630,
+      "liquidityNet": "1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 197650,
+      "liquidityNet": "-5760780561179",
+      "liquidityGross": "5760780561179"
+    },
+    {
+      "index": 197670,
+      "liquidityNet": "-249893997762104",
+      "liquidityGross": "430672260953740"
+    },
+    {
+      "index": 197680,
+      "liquidityNet": "14568995285927909",
+      "liquidityGross": "14568996210244217"
+    },
+    {
+      "index": 197690,
+      "liquidityNet": "303099612637418009",
+      "liquidityGross": "358601972111652859"
+    },
+    {
+      "index": 197700,
+      "liquidityNet": "-56456805417296",
+      "liquidityGross": "56456805417296"
+    },
+    {
+      "index": 197730,
+      "liquidityNet": "2229824879481991308",
+      "liquidityGross": "2229824879481991308"
+    },
+    {
+      "index": 197740,
+      "liquidityNet": "-2227306666471230730",
+      "liquidityGross": "2232343092492751886"
+    },
+    {
+      "index": 197750,
+      "liquidityNet": "-2483845551262789",
+      "liquidityGross": "2483845551262789"
+    },
+    {
+      "index": 197760,
+      "liquidityNet": "34109630703505537",
+      "liquidityGross": "34109630703505537"
+    },
+    {
+      "index": 197780,
+      "liquidityNet": "4669743016197090",
+      "liquidityGross": "4669743016197090"
+    },
+    {
+      "index": 197800,
+      "liquidityNet": "636049161512",
+      "liquidityGross": "636049161512"
+    },
+    {
+      "index": 197830,
+      "liquidityNet": "379370573470532",
+      "liquidityGross": "379370573470532"
+    },
+    {
+      "index": 197850,
+      "liquidityNet": "528665025881541",
+      "liquidityGross": "1311688302342263"
+    },
+    {
+      "index": 197870,
+      "liquidityNet": "76792124006119",
+      "liquidityGross": "76792124006119"
+    },
+    {
+      "index": 197880,
+      "liquidityNet": "11348192472782134",
+      "liquidityGross": "11355019813861590"
+    },
+    {
+      "index": 197900,
+      "liquidityNet": "235168782514976",
+      "liquidityGross": "235168782514976"
+    },
+    {
+      "index": 197920,
+      "liquidityNet": "1002052617193",
+      "liquidityGross": "1002052617193"
+    },
+    {
+      "index": 197930,
+      "liquidityNet": "-111952631281",
+      "liquidityGross": "111952631281"
+    },
+    {
+      "index": 197950,
+      "liquidityNet": "-229499506613758",
+      "liquidityGross": "229499506613758"
+    },
+    {
+      "index": 197970,
+      "liquidityNet": "418422821798964",
+      "liquidityGross": "418422821798964"
+    },
+    {
+      "index": 197990,
+      "liquidityNet": "112570060249486580",
+      "liquidityGross": "112570060249486580"
+    },
+    {
+      "index": 198010,
+      "liquidityNet": "-249790298467899",
+      "liquidityGross": "587055345130029"
+    },
+    {
+      "index": 198020,
+      "liquidityNet": "13575340637762255",
+      "liquidityGross": "13575340637762255"
+    },
+    {
+      "index": 198030,
+      "liquidityNet": "216401649737429",
+      "liquidityGross": "216401649737429"
+    },
+    {
+      "index": 198040,
+      "liquidityNet": "2003387621686770",
+      "liquidityGross": "2003387621686770"
+    },
+    {
+      "index": 198050,
+      "liquidityNet": "-674279690337133",
+      "liquidityGross": "901324799498981"
+    },
+    {
+      "index": 198070,
+      "liquidityNet": "4071810565798819",
+      "liquidityGross": "9313814237263125"
+    },
+    {
+      "index": 198080,
+      "liquidityNet": "221020130757401067",
+      "liquidityGross": "226405463958852399"
+    },
+    {
+      "index": 198090,
+      "liquidityNet": "10299709715660703",
+      "liquidityGross": "10445425030711501"
+    },
+    {
+      "index": 198100,
+      "liquidityNet": "31483146235193862",
+      "liquidityGross": "31483146235193862"
+    },
+    {
+      "index": 198120,
+      "liquidityNet": "441023100358142",
+      "liquidityGross": "441023100358142"
+    },
+    {
+      "index": 198130,
+      "liquidityNet": "-6573490291258874",
+      "liquidityGross": "41890044745372232"
+    },
+    {
+      "index": 198140,
+      "liquidityNet": "-3656442571686344",
+      "liquidityGross": "3656442571686344"
+    },
+    {
+      "index": 198180,
+      "liquidityNet": "-4815919305638541",
+      "liquidityGross": "4815919305638541"
+    },
+    {
+      "index": 198190,
+      "liquidityNet": "2520117026651115",
+      "liquidityGross": "2520117026651115"
+    },
+    {
+      "index": 198200,
+      "liquidityNet": "80477762689449585",
+      "liquidityGross": "134611675073310603"
+    },
+    {
+      "index": 198210,
+      "liquidityNet": "4860235671811",
+      "liquidityGross": "4860235671811"
+    },
+    {
+      "index": 198230,
+      "liquidityNet": "-423183514771199",
+      "liquidityGross": "426082557277119"
+    },
+    {
+      "index": 198240,
+      "liquidityNet": "4550675798641959",
+      "liquidityGross": "4550675798641959"
+    },
+    {
+      "index": 198260,
+      "liquidityNet": "26270459940136",
+      "liquidityGross": "26270459940136"
+    },
+    {
+      "index": 198280,
+      "liquidityNet": "2425792700834001",
+      "liquidityGross": "2425792700834001"
+    },
+    {
+      "index": 198300,
+      "liquidityNet": "1950729426929533984",
+      "liquidityGross": "1950729426929533984"
+    },
+    {
+      "index": 198310,
+      "liquidityNet": "583202296252334",
+      "liquidityGross": "583202296252334"
+    },
+    {
+      "index": 198320,
+      "liquidityNet": "1146768154074710",
+      "liquidityGross": "1148772259309096"
+    },
+    {
+      "index": 198340,
+      "liquidityNet": "-1147770206691903",
+      "liquidityGross": "1147770206691903"
+    },
+    {
+      "index": 198360,
+      "liquidityNet": "107586336075943848",
+      "liquidityGross": "107586336075943848"
+    },
+    {
+      "index": 198370,
+      "liquidityNet": "6302802252419399",
+      "liquidityGross": "6302802252419399"
+    },
+    {
+      "index": 198390,
+      "liquidityNet": "727811398499474",
+      "liquidityGross": "727811398499474"
+    },
+    {
+      "index": 198400,
+      "liquidityNet": "8204970573788434",
+      "liquidityGross": "8216309125590870"
+    },
+    {
+      "index": 198410,
+      "liquidityNet": "17970615309438",
+      "liquidityGross": "22218930097578"
+    },
+    {
+      "index": 198430,
+      "liquidityNet": "2162774987716",
+      "liquidityGross": "3434873310740"
+    },
+    {
+      "index": 198440,
+      "liquidityNet": "1583560436618910",
+      "liquidityGross": "1583560436618910"
+    },
+    {
+      "index": 198460,
+      "liquidityNet": "1799883131054776",
+      "liquidityGross": "3293393955165586"
+    },
+    {
+      "index": 198470,
+      "liquidityNet": "1628328088740271",
+      "liquidityGross": "1628328088740271"
+    },
+    {
+      "index": 198480,
+      "liquidityNet": "29754702619600026",
+      "liquidityGross": "29754702619600026"
+    },
+    {
+      "index": 198490,
+      "liquidityNet": "52185809016684303",
+      "liquidityGross": "54940669278596981"
+    },
+    {
+      "index": 198500,
+      "liquidityNet": "-384755858111626",
+      "liquidityGross": "4708521228108736"
+    },
+    {
+      "index": 198510,
+      "liquidityNet": "119190812656174",
+      "liquidityGross": "122089855162094"
+    },
+    {
+      "index": 198580,
+      "liquidityNet": "107907205957887",
+      "liquidityGross": "107907205957887"
+    },
+    {
+      "index": 198600,
+      "liquidityNet": "51427460257425",
+      "liquidityGross": "51427460257425"
+    },
+    {
+      "index": 198630,
+      "liquidityNet": "467134147350546",
+      "liquidityGross": "467134147350546"
+    },
+    {
+      "index": 198640,
+      "liquidityNet": "-1",
+      "liquidityGross": "1"
+    },
+    {
+      "index": 198670,
+      "liquidityNet": "140160796245489",
+      "liquidityGross": "140160796245489"
+    },
+    {
+      "index": 198700,
+      "liquidityNet": "65103290879460141",
+      "liquidityGross": "65103290879460141"
+    },
+    {
+      "index": 198710,
+      "liquidityNet": "2940050237113096",
+      "liquidityGross": "4106454829617764"
+    },
+    {
+      "index": 198720,
+      "liquidityNet": "43658130821840098",
+      "liquidityGross": "44932766617621296"
+    },
+    {
+      "index": 198730,
+      "liquidityNet": "26075555928603057",
+      "liquidityGross": "26144809601099223"
+    },
+    {
+      "index": 198740,
+      "liquidityNet": "30629382107360",
+      "liquidityGross": "30629382107360"
+    },
+    {
+      "index": 198750,
+      "liquidityNet": "6285003095436316",
+      "liquidityGross": "6285003095436316"
+    },
+    {
+      "index": 198760,
+      "liquidityNet": "-5595190946529056",
+      "liquidityGross": "7115749034324558"
+    },
+    {
+      "index": 198770,
+      "liquidityNet": "561229497237733",
+      "liquidityGross": "635138719483709"
+    },
+    {
+      "index": 198780,
+      "liquidityNet": "94065349026900",
+      "liquidityGross": "94463577941782"
+    },
+    {
+      "index": 198790,
+      "liquidityNet": "-124282503654",
+      "liquidityGross": "124282503654"
+    },
+    {
+      "index": 198800,
+      "liquidityNet": "51744123260872",
+      "liquidityGross": "51744123260872"
+    },
+    {
+      "index": 198840,
+      "liquidityNet": "-3947986720071",
+      "liquidityGross": "3947986720071"
+    },
+    {
+      "index": 198850,
+      "liquidityNet": "12828316653834241",
+      "liquidityGross": "12828316653834241"
+    },
+    {
+      "index": 198860,
+      "liquidityNet": "240",
+      "liquidityGross": "240"
+    },
+    {
+      "index": 198870,
+      "liquidityNet": "34953370807185856",
+      "liquidityGross": "34953370807185856"
+    },
+    {
+      "index": 198880,
+      "liquidityNet": "-90388669437425",
+      "liquidityGross": "90388669437903"
+    },
+    {
+      "index": 198890,
+      "liquidityNet": "259866411883789",
+      "liquidityGross": "259866411883789"
+    },
+    {
+      "index": 198900,
+      "liquidityNet": "3551260861702801",
+      "liquidityGross": "3551260861703281"
+    },
+    {
+      "index": 198910,
+      "liquidityNet": "68450388288066495",
+      "liquidityGross": "69798511071972593"
+    },
+    {
+      "index": 198920,
+      "liquidityNet": "621300726370159",
+      "liquidityGross": "621300726370637"
+    },
+    {
+      "index": 198930,
+      "liquidityNet": "2352167643522470",
+      "liquidityGross": "2352167643522470"
+    },
+    {
+      "index": 198940,
+      "liquidityNet": "0",
+      "liquidityGross": "478"
+    },
+    {
+      "index": 198960,
+      "liquidityNet": "-621300726370159",
+      "liquidityGross": "621300726370637"
+    },
+    {
+      "index": 198970,
+      "liquidityNet": "-2273026156991999",
+      "liquidityGross": "32866188895287389"
+    },
+    {
+      "index": 198980,
+      "liquidityNet": "7993934029419796",
+      "liquidityGross": "7993934029420274"
+    },
+    {
+      "index": 198990,
+      "liquidityNet": "-12001000000",
+      "liquidityGross": "12001000000"
+    },
+    {
+      "index": 199000,
+      "liquidityNet": "24038071170169357",
+      "liquidityGross": "24038071170169835"
+    },
+    {
+      "index": 199010,
+      "liquidityNet": "18883109894822472",
+      "liquidityGross": "18883109894822472"
+    },
+    {
+      "index": 199020,
+      "liquidityNet": "3033942595297547",
+      "liquidityGross": "3033942595298107"
+    },
+    {
+      "index": 199040,
+      "liquidityNet": "160986607571152579",
+      "liquidityGross": "160986607571152579"
+    },
+    {
+      "index": 199110,
+      "liquidityNet": "113774666175076406",
+      "liquidityGross": "113774666175076406"
+    },
+    {
+      "index": 199120,
+      "liquidityNet": "96996883273420",
+      "liquidityGross": "96996883273420"
+    },
+    {
+      "index": 199130,
+      "liquidityNet": "98231119712762513",
+      "liquidityGross": "98231119712762513"
+    },
+    {
+      "index": 199140,
+      "liquidityNet": "287831479234176",
+      "liquidityGross": "287831479234176"
+    },
+    {
+      "index": 199150,
+      "liquidityNet": "11462273504473359",
+      "liquidityGross": "11462273504473359"
+    },
+    {
+      "index": 199170,
+      "liquidityNet": "5999074318646826",
+      "liquidityGross": "5999074318646826"
+    },
+    {
+      "index": 199190,
+      "liquidityNet": "423874074045457691",
+      "liquidityGross": "423874074045457691"
+    },
+    {
+      "index": 199200,
+      "liquidityNet": "100223342217648247",
+      "liquidityGross": "100223342217648247"
+    },
+    {
+      "index": 199210,
+      "liquidityNet": "49769134584853057",
+      "liquidityGross": "49769134584853057"
+    },
+    {
+      "index": 199220,
+      "liquidityNet": "7804032612094",
+      "liquidityGross": "7804033643152"
+    },
+    {
+      "index": 199230,
+      "liquidityNet": "33324672752",
+      "liquidityGross": "33324672752"
+    },
+    {
+      "index": 199240,
+      "liquidityNet": "34001021076",
+      "liquidityGross": "34001021076"
+    },
+    {
+      "index": 199260,
+      "liquidityNet": "1412845600394584",
+      "liquidityGross": "1412845600395550"
+    },
+    {
+      "index": 199270,
+      "liquidityNet": "235153370912212152",
+      "liquidityGross": "238290106296484238"
+    },
+    {
+      "index": 199280,
+      "liquidityNet": "141573744020547",
+      "liquidityGross": "256647986449811"
+    },
+    {
+      "index": 199290,
+      "liquidityNet": "-105111543762166",
+      "liquidityGross": "109153784458372"
+    },
+    {
+      "index": 199300,
+      "liquidityNet": "998204009364140",
+      "liquidityGross": "1525672512863270"
+    },
+    {
+      "index": 199310,
+      "liquidityNet": "1232897269801649942",
+      "liquidityGross": "1232905718593506444"
+    },
+    {
+      "index": 199320,
+      "liquidityNet": "-193993547609020",
+      "liquidityGross": "706658710789220"
+    },
+    {
+      "index": 199330,
+      "liquidityNet": "107659548539528713",
+      "liquidityGross": "107715860669603383"
+    },
+    {
+      "index": 199340,
+      "liquidityNet": "26111089409760648",
+      "liquidityGross": "26509311140231006"
+    },
+    {
+      "index": 199350,
+      "liquidityNet": "4504926015017263",
+      "liquidityGross": "4504926015017263"
+    },
+    {
+      "index": 199360,
+      "liquidityNet": "158954789842134537",
+      "liquidityGross": "160964350133503355"
+    },
+    {
+      "index": 199370,
+      "liquidityNet": "1880341791572614",
+      "liquidityGross": "1880341791572614"
+    },
+    {
+      "index": 199380,
+      "liquidityNet": "6474923285325082046",
+      "liquidityGross": "6474923285325082046"
+    },
+    {
+      "index": 199390,
+      "liquidityNet": "994374771300344",
+      "liquidityGross": "994374771300344"
+    },
+    {
+      "index": 199400,
+      "liquidityNet": "142612818611191",
+      "liquidityGross": "142612818611191"
+    },
+    {
+      "index": 199410,
+      "liquidityNet": "143482313763056",
+      "liquidityGross": "143482313763056"
+    },
+    {
+      "index": 199420,
+      "liquidityNet": "-1",
+      "liquidityGross": "467"
+    },
+    {
+      "index": 199430,
+      "liquidityNet": "147027300519372",
+      "liquidityGross": "147027300519372"
+    },
+    {
+      "index": 199440,
+      "liquidityNet": "1899041480369804",
+      "liquidityGross": "2188380183882334"
+    },
+    {
+      "index": 199450,
+      "liquidityNet": "1201771128326191",
+      "liquidityGross": "1412846255267071"
+    },
+    {
+      "index": 199460,
+      "liquidityNet": "0",
+      "liquidityGross": "466"
+    },
+    {
+      "index": 199480,
+      "liquidityNet": "8239912412074840",
+      "liquidityGross": "8239979061420810"
+    },
+    {
+      "index": 199490,
+      "liquidityNet": "72667697625386",
+      "liquidityGross": "72735699667538"
+    },
+    {
+      "index": 199500,
+      "liquidityNet": "6416206835002535",
+      "liquidityGross": "6416206835003001"
+    },
+    {
+      "index": 199510,
+      "liquidityNet": "312791007627569",
+      "liquidityGross": "312791007627569"
+    },
+    {
+      "index": 199520,
+      "liquidityNet": "840517650888278",
+      "liquidityGross": "840517650888742"
+    },
+    {
+      "index": 199530,
+      "liquidityNet": "5757243178841036",
+      "liquidityGross": "5757243178841036"
+    },
+    {
+      "index": 199540,
+      "liquidityNet": "10768488",
+      "liquidityGross": "10769012"
+    },
+    {
+      "index": 199550,
+      "liquidityNet": "17825251636512",
+      "liquidityGross": "17825251636512"
+    },
+    {
+      "index": 199560,
+      "liquidityNet": "15472452151690877",
+      "liquidityGross": "15472452151692083"
+    },
+    {
+      "index": 199570,
+      "liquidityNet": "6114792526958",
+      "liquidityGross": "6114792526958"
+    },
+    {
+      "index": 199580,
+      "liquidityNet": "22120029465348452",
+      "liquidityGross": "25352070110841350"
+    },
+    {
+      "index": 199590,
+      "liquidityNet": "121246296152115048",
+      "liquidityGross": "121246296152115048"
+    },
+    {
+      "index": 199600,
+      "liquidityNet": "8081256192600922",
+      "liquidityGross": "8081256214159970"
+    },
+    {
+      "index": 199610,
+      "liquidityNet": "554516766264862",
+      "liquidityGross": "566746351318776"
+    },
+    {
+      "index": 199620,
+      "liquidityNet": "70072682474816863",
+      "liquidityGross": "70585347637997525"
+    },
+    {
+      "index": 199630,
+      "liquidityNet": "83414536357410972",
+      "liquidityGross": "83414536357410972"
+    },
+    {
+      "index": 199640,
+      "liquidityNet": "26567530838118786",
+      "liquidityGross": "26567530838119248"
+    },
+    {
+      "index": 199650,
+      "liquidityNet": "7186381820563285",
+      "liquidityGross": "7186381820563285"
+    },
+    {
+      "index": 199660,
+      "liquidityNet": "-231",
+      "liquidityGross": "231"
+    },
+    {
+      "index": 199670,
+      "liquidityNet": "1736407504686488",
+      "liquidityGross": "1736407504686488"
+    },
+    {
+      "index": 199680,
+      "liquidityNet": "28920861147733799",
+      "liquidityGross": "29246671882482247"
+    },
+    {
+      "index": 199690,
+      "liquidityNet": "7909125589637955",
+      "liquidityGross": "7909125589637955"
+    },
+    {
+      "index": 199700,
+      "liquidityNet": "4504520889587501130",
+      "liquidityGross": "4504520889587501132"
+    },
+    {
+      "index": 199710,
+      "liquidityNet": "1472300347213447",
+      "liquidityGross": "2518420175484145"
+    },
+    {
+      "index": 199720,
+      "liquidityNet": "31306401172623370",
+      "liquidityGross": "31306401172623830"
+    },
+    {
+      "index": 199730,
+      "liquidityNet": "26525848241261528",
+      "liquidityGross": "26525848241261528"
+    },
+    {
+      "index": 199740,
+      "liquidityNet": "215",
+      "liquidityGross": "675"
+    },
+    {
+      "index": 199750,
+      "liquidityNet": "9582754414430996",
+      "liquidityGross": "10830406831271412"
+    },
+    {
+      "index": 199760,
+      "liquidityNet": "378282550384025",
+      "liquidityGross": "378282550384025"
+    },
+    {
+      "index": 199770,
+      "liquidityNet": "8597498922924268",
+      "liquidityGross": "8597498922924268"
+    },
+    {
+      "index": 199780,
+      "liquidityNet": "137963829456633635",
+      "liquidityGross": "137963829456634525"
+    },
+    {
+      "index": 199790,
+      "liquidityNet": "7482315808084071",
+      "liquidityGross": "7482315808084071"
+    },
+    {
+      "index": 199800,
+      "liquidityNet": "1655120850143687147",
+      "liquidityGross": "1655374417479099385"
+    },
+    {
+      "index": 199810,
+      "liquidityNet": "83342973348188501",
+      "liquidityGross": "83342973348188501"
+    },
+    {
+      "index": 199820,
+      "liquidityNet": "230219045872598476",
+      "liquidityGross": "231390103575126856"
+    },
+    {
+      "index": 199830,
+      "liquidityNet": "21194882207436478",
+      "liquidityGross": "21660547022181668"
+    },
+    {
+      "index": 199840,
+      "liquidityNet": "2081877105603907",
+      "liquidityGross": "2081877127423209"
+    },
+    {
+      "index": 199850,
+      "liquidityNet": "-820631083506296077",
+      "liquidityGross": "924350070223956413"
+    },
+    {
+      "index": 199860,
+      "liquidityNet": "-569821497482118520",
+      "liquidityGross": "907393621521497868"
+    },
+    {
+      "index": 199870,
+      "liquidityNet": "41911535470350665",
+      "liquidityGross": "43750919368518715"
+    },
+    {
+      "index": 199880,
+      "liquidityNet": "21559742482043464",
+      "liquidityGross": "21559742482043464"
+    },
+    {
+      "index": 199890,
+      "liquidityNet": "12584329546343768",
+      "liquidityGross": "43177492284639160"
+    },
+    {
+      "index": 199900,
+      "liquidityNet": "21906",
+      "liquidityGross": "21906760"
+    },
+    {
+      "index": 199910,
+      "liquidityNet": "123704697866143",
+      "liquidityGross": "123704697866143"
+    },
+    {
+      "index": 199920,
+      "liquidityNet": "29857530722191866",
+      "liquidityGross": "29857530722191866"
+    },
+    {
+      "index": 199930,
+      "liquidityNet": "33456764940481257",
+      "liquidityGross": "33504417994154955"
+    },
+    {
+      "index": 199940,
+      "liquidityNet": "-29032829899663126",
+      "liquidityGross": "30682231544698668"
+    },
+    {
+      "index": 199960,
+      "liquidityNet": "11070820453310039",
+      "liquidityGross": "11070820475260643"
+    },
+    {
+      "index": 199970,
+      "liquidityNet": "1083185132210257",
+      "liquidityGross": "1116270011201989"
+    },
+    {
+      "index": 199980,
+      "liquidityNet": "21993",
+      "liquidityGross": "21994559"
+    },
+    {
+      "index": 199990,
+      "liquidityNet": "7197720345673193",
+      "liquidityGross": "9397175489085439"
+    },
+    {
+      "index": 200000,
+      "liquidityNet": "1605710512969327",
+      "liquidityGross": "1605710534963875"
+    },
+    {
+      "index": 200020,
+      "liquidityNet": "5370641659879528",
+      "liquidityGross": "5370641681896080"
+    },
+    {
+      "index": 200030,
+      "liquidityNet": "15325426544691817",
+      "liquidityGross": "15325608013875949"
+    },
+    {
+      "index": 200040,
+      "liquidityNet": "398572231262239",
+      "liquidityGross": "398572253300817"
+    },
+    {
+      "index": 200050,
+      "liquidityNet": "-8919047359563174",
+      "liquidityGross": "313054167782741984"
+    },
+    {
+      "index": 200060,
+      "liquidityNet": "273823769457091598",
+      "liquidityGross": "343378359204324554"
+    },
+    {
+      "index": 200070,
+      "liquidityNet": "17851501801140605",
+      "liquidityGross": "17851501801140605"
+    },
+    {
+      "index": 200080,
+      "liquidityNet": "-115057734742961661",
+      "liquidityGross": "160489192241823129"
+    },
+    {
+      "index": 200090,
+      "liquidityNet": "109380106198284367",
+      "liquidityGross": "109380106198284367"
+    },
+    {
+      "index": 200100,
+      "liquidityNet": "22127",
+      "liquidityGross": "22126917"
+    },
+    {
+      "index": 200120,
+      "liquidityNet": "11670835151271814",
+      "liquidityGross": "11670835173398720"
+    },
+    {
+      "index": 200130,
+      "liquidityNet": "11901810237124",
+      "liquidityGross": "11901810237124"
+    },
+    {
+      "index": 200140,
+      "liquidityNet": "22170",
+      "liquidityGross": "22171212"
+    },
+    {
+      "index": 200150,
+      "liquidityNet": "2648876282165976646",
+      "liquidityGross": "2703082934417984192"
+    },
+    {
+      "index": 200160,
+      "liquidityNet": "1031129291021580",
+      "liquidityGross": "1031129314115160"
+    },
+    {
+      "index": 200170,
+      "liquidityNet": "56805110376235456",
+      "liquidityGross": "56805110376235456"
+    },
+    {
+      "index": 200180,
+      "liquidityNet": "22214",
+      "liquidityGross": "22215598"
+    },
+    {
+      "index": 200190,
+      "liquidityNet": "330074972096519488",
+      "liquidityGross": "330074972096519488"
+    },
+    {
+      "index": 200200,
+      "liquidityNet": "4864519251917511",
+      "liquidityGross": "4864519274133097"
+    },
+    {
+      "index": 200210,
+      "liquidityNet": "22822244363483345",
+      "liquidityGross": "22822772564769223"
+    },
+    {
+      "index": 200220,
+      "liquidityNet": "134848202396828106",
+      "liquidityGross": "134848202419065918"
+    },
+    {
+      "index": 200230,
+      "liquidityNet": "8847676765216444",
+      "liquidityGross": "8847676765216444"
+    },
+    {
+      "index": 200240,
+      "liquidityNet": "89728689931635115",
+      "liquidityGross": "89728689953895173"
+    },
+    {
+      "index": 200250,
+      "liquidityNet": "2669393669504159087",
+      "liquidityGross": "2669393669504159089"
+    },
+    {
+      "index": 200260,
+      "liquidityNet": "1823587814445156598",
+      "liquidityGross": "1823587814467438926"
+    },
+    {
+      "index": 200270,
+      "liquidityNet": "-948939232917322",
+      "liquidityGross": "150846727150715862"
+    },
+    {
+      "index": 200280,
+      "liquidityNet": "416573223836415670",
+      "liquidityGross": "416866246482666278"
+    },
+    {
+      "index": 200290,
+      "liquidityNet": "28047796353793493",
+      "liquidityGross": "28047796353793493"
+    },
+    {
+      "index": 200300,
+      "liquidityNet": "45783215185878971",
+      "liquidityGross": "45783215208205907"
+    },
+    {
+      "index": 200310,
+      "liquidityNet": "1393802380455888235",
+      "liquidityGross": "2351975340248585723"
+    },
+    {
+      "index": 200320,
+      "liquidityNet": "-1679040644294733",
+      "liquidityGross": "1914499722776823"
+    },
+    {
+      "index": 200330,
+      "liquidityNet": "706897342121559",
+      "liquidityGross": "986666902984531"
+    },
+    {
+      "index": 200340,
+      "liquidityNet": "10487898950570658",
+      "liquidityGross": "10487898950571104"
+    },
+    {
+      "index": 200350,
+      "liquidityNet": "-15129925699259",
+      "liquidityGross": "15129925699259"
+    },
+    {
+      "index": 200360,
+      "liquidityNet": "-1529101265216115683",
+      "liquidityGross": "2095119356377415493"
+    },
+    {
+      "index": 200370,
+      "liquidityNet": "56153373155086500",
+      "liquidityGross": "56161234287434440"
+    },
+    {
+      "index": 200380,
+      "liquidityNet": "21591386132277365",
+      "liquidityGross": "21591386132277811"
+    },
+    {
+      "index": 200400,
+      "liquidityNet": "721462180939766186",
+      "liquidityGross": "721649890953426892"
+    },
+    {
+      "index": 200410,
+      "liquidityNet": "7562900545001656899",
+      "liquidityGross": "7563020325724689525"
+    },
+    {
+      "index": 200420,
+      "liquidityNet": "122792561080834992",
+      "liquidityGross": "122792561080834992"
+    },
+    {
+      "index": 200430,
+      "liquidityNet": "76098638659453937",
+      "liquidityGross": "76098638659567701"
+    },
+    {
+      "index": 200440,
+      "liquidityNet": "260131807101760512",
+      "liquidityGross": "505716929263430496"
+    },
+    {
+      "index": 200450,
+      "liquidityNet": "494337652979015",
+      "liquidityGross": "494337652979015"
+    },
+    {
+      "index": 200460,
+      "liquidityNet": "26429387428990399",
+      "liquidityGross": "36685087153659535"
+    },
+    {
+      "index": 200470,
+      "liquidityNet": "366054136624965",
+      "liquidityGross": "366054136624965"
+    },
+    {
+      "index": 200480,
+      "liquidityNet": "85598905866577510",
+      "liquidityGross": "85631009417023408"
+    },
+    {
+      "index": 200490,
+      "liquidityNet": "29164169180900802",
+      "liquidityGross": "29866844823619812"
+    },
+    {
+      "index": 200500,
+      "liquidityNet": "9194570337914247",
+      "liquidityGross": "9194570337914689"
+    },
+    {
+      "index": 200510,
+      "liquidityNet": "24252930905950995",
+      "liquidityGross": "24252930905950995"
+    },
+    {
+      "index": 200520,
+      "liquidityNet": "217222240647202335",
+      "liquidityGross": "217222240647202777"
+    },
+    {
+      "index": 200530,
+      "liquidityNet": "8496572872236250",
+      "liquidityGross": "8496572872236250"
+    },
+    {
+      "index": 200540,
+      "liquidityNet": "178947565092661224",
+      "liquidityGross": "178947565092661666"
+    },
+    {
+      "index": 200550,
+      "liquidityNet": "31021245291791061",
+      "liquidityGross": "31021245291791061"
+    },
+    {
+      "index": 200560,
+      "liquidityNet": "282068168500661743",
+      "liquidityGross": "528132650478839561"
+    },
+    {
+      "index": 200570,
+      "liquidityNet": "-2199496923394392",
+      "liquidityGross": "92969786415735736"
+    },
+    {
+      "index": 200580,
+      "liquidityNet": "-7147649920558069",
+      "liquidityGross": "8840218138281881"
+    },
+    {
+      "index": 200590,
+      "liquidityNet": "26918549042096306",
+      "liquidityGross": "26918549042096308"
+    },
+    {
+      "index": 200600,
+      "liquidityNet": "6600473913026672",
+      "liquidityGross": "48317786542341084"
+    },
+    {
+      "index": 200610,
+      "liquidityNet": "-721545657990910331",
+      "liquidityGross": "758177354837646245"
+    },
+    {
+      "index": 200620,
+      "liquidityNet": "70113564624182253",
+      "liquidityGross": "77416776780657439"
+    },
+    {
+      "index": 200630,
+      "liquidityNet": "891041462564186109",
+      "liquidityGross": "891041462564186109"
+    },
+    {
+      "index": 200640,
+      "liquidityNet": "886899512547283482",
+      "liquidityGross": "886899512547283922"
+    },
+    {
+      "index": 200660,
+      "liquidityNet": "164179030455461680",
+      "liquidityGross": "164179030455462118"
+    },
+    {
+      "index": 200670,
+      "liquidityNet": "5760221439728129",
+      "liquidityGross": "5760221439728129"
+    },
+    {
+      "index": 200680,
+      "liquidityNet": "0",
+      "liquidityGross": "438"
+    },
+    {
+      "index": 200690,
+      "liquidityNet": "-4431817664767818096",
+      "liquidityGross": "4515320646312034458"
+    },
+    {
+      "index": 200700,
+      "liquidityNet": "329802072089518005",
+      "liquidityGross": "329802072089518443"
+    },
+    {
+      "index": 200710,
+      "liquidityNet": "63519320361488549",
+      "liquidityGross": "63712952793601363"
+    },
+    {
+      "index": 200720,
+      "liquidityNet": "11326358095449369398",
+      "liquidityGross": "11572516946678273042"
+    },
+    {
+      "index": 200730,
+      "liquidityNet": "-896759331134831790",
+      "liquidityGross": "915435867462302832"
+    },
+    {
+      "index": 200740,
+      "liquidityNet": "-6556478977109273791",
+      "liquidityGross": "16387557332826858037"
+    },
+    {
+      "index": 200750,
+      "liquidityNet": "1330373137489079117",
+      "liquidityGross": "1330373137489079117"
+    },
+    {
+      "index": 200760,
+      "liquidityNet": "-2798927622401150720",
+      "liquidityGross": "2798927622401151156"
+    },
+    {
+      "index": 200770,
+      "liquidityNet": "99948782914202197",
+      "liquidityGross": "99968374863378589"
+    },
+    {
+      "index": 200780,
+      "liquidityNet": "71046584940734104",
+      "liquidityGross": "71046584940734540"
+    },
+    {
+      "index": 200790,
+      "liquidityNet": "86180224729488471",
+      "liquidityGross": "90976379456664321"
+    },
+    {
+      "index": 200800,
+      "liquidityNet": "635348449390159984",
+      "liquidityGross": "640609531705446610"
+    },
+    {
+      "index": 200810,
+      "liquidityNet": "51631089274146117",
+      "liquidityGross": "52495448700046895"
+    },
+    {
+      "index": 200820,
+      "liquidityNet": "-5993968503364597861",
+      "liquidityGross": "9692111026087490817"
+    },
+    {
+      "index": 200830,
+      "liquidityNet": "-47910009445632542",
+      "liquidityGross": "277172604030642950"
+    },
+    {
+      "index": 200840,
+      "liquidityNet": "7596167931496732",
+      "liquidityGross": "7596167931497168"
+    },
+    {
+      "index": 200850,
+      "liquidityNet": "1012696303032043669",
+      "liquidityGross": "1012696303032043669"
+    },
+    {
+      "index": 200860,
+      "liquidityNet": "-6183212720467023049",
+      "liquidityGross": "6766633850183141009"
+    },
+    {
+      "index": 200870,
+      "liquidityNet": "-751047612334367468",
+      "liquidityGross": "1595706725306050718"
+    },
+    {
+      "index": 200880,
+      "liquidityNet": "38448221184406801",
+      "liquidityGross": "51658863206028065"
+    },
+    {
+      "index": 200890,
+      "liquidityNet": "-390682004606462477",
+      "liquidityGross": "712978264448449813"
+    },
+    {
+      "index": 200900,
+      "liquidityNet": "327199406754221",
+      "liquidityGross": "26781779608263545"
+    },
+    {
+      "index": 200910,
+      "liquidityNet": "-4180249612199558599",
+      "liquidityGross": "4180249612199558599"
+    },
+    {
+      "index": 200920,
+      "liquidityNet": "6916801786928416",
+      "liquidityGross": "7164211182661202"
+    },
+    {
+      "index": 200930,
+      "liquidityNet": "-213248255750177443",
+      "liquidityGross": "405026285904700851"
+    },
+    {
+      "index": 200940,
+      "liquidityNet": "-2117324260056968",
+      "liquidityGross": "2117324283156034"
+    },
+    {
+      "index": 200950,
+      "liquidityNet": "46000622442587",
+      "liquidityGross": "52535757470035"
+    },
+    {
+      "index": 200960,
+      "liquidityNet": "2438137347342752",
+      "liquidityGross": "2438137370418730"
+    },
+    {
+      "index": 200970,
+      "liquidityNet": "-354355541934659304",
+      "liquidityGross": "461684016578925982"
+    },
+    {
+      "index": 200980,
+      "liquidityNet": "-91900264703769069",
+      "liquidityGross": "95513483339659953"
+    },
+    {
+      "index": 200990,
+      "liquidityNet": "-1948862198721036",
+      "liquidityGross": "5662241274700164"
+    },
+    {
+      "index": 201000,
+      "liquidityNet": "34078984097905235",
+      "liquidityGross": "34158139160655377"
+    },
+    {
+      "index": 201010,
+      "liquidityNet": "-48006193944861678",
+      "liquidityGross": "58450071821529408"
+    },
+    {
+      "index": 201020,
+      "liquidityNet": "-17527251614786158",
+      "liquidityGross": "17553750124684126"
+    },
+    {
+      "index": 201030,
+      "liquidityNet": "-48280681807244807",
+      "liquidityGross": "55140068084878523"
+    },
+    {
+      "index": 201040,
+      "liquidityNet": "-22687753755229123",
+      "liquidityGross": "72725196545263629"
+    },
+    {
+      "index": 201060,
+      "liquidityNet": "3023978232121509",
+      "liquidityGross": "8639654265415585"
+    },
+    {
+      "index": 201070,
+      "liquidityNet": "-158869152661679509",
+      "liquidityGross": "159157096431658219"
+    },
+    {
+      "index": 201080,
+      "liquidityNet": "9562216859279795",
+      "liquidityGross": "29080671981521603"
+    },
+    {
+      "index": 201090,
+      "liquidityNet": "-833457085856255639",
+      "liquidityGross": "930519797420031261"
+    },
+    {
+      "index": 201100,
+      "liquidityNet": "-229022415697057542",
+      "liquidityGross": "264971927275510300"
+    },
+    {
+      "index": 201110,
+      "liquidityNet": "-1009591086007243788",
+      "liquidityGross": "1009608270760765788"
+    },
+    {
+      "index": 201120,
+      "liquidityNet": "-145600270439663161",
+      "liquidityGross": "244489585219697367"
+    },
+    {
+      "index": 201130,
+      "liquidityNet": "42908189342333",
+      "liquidityGross": "42908189342333"
+    },
+    {
+      "index": 201140,
+      "liquidityNet": "-44526500832793782",
+      "liquidityGross": "44713913194665734"
+    },
+    {
+      "index": 201150,
+      "liquidityNet": "-49612824150025752",
+      "liquidityGross": "102118497279097498"
+    },
+    {
+      "index": 201160,
+      "liquidityNet": "-10553070512230102",
+      "liquidityGross": "10553070535584646"
+    },
+    {
+      "index": 201170,
+      "liquidityNet": "-238780451783699032",
+      "liquidityGross": "260023587897909376"
+    },
+    {
+      "index": 201180,
+      "liquidityNet": "-41528045381404489",
+      "liquidityGross": "57990631862456435"
+    },
+    {
+      "index": 201190,
+      "liquidityNet": "-8678935992035267",
+      "liquidityGross": "8678935992035267"
+    },
+    {
+      "index": 201200,
+      "liquidityNet": "68656450882722045",
+      "liquidityGross": "188874969853588577"
+    },
+    {
+      "index": 201210,
+      "liquidityNet": "-49210222223957655",
+      "liquidityGross": "49288975455954989"
+    },
+    {
+      "index": 201220,
+      "liquidityNet": "32663125752444018",
+      "liquidityGross": "32663125775821928"
+    },
+    {
+      "index": 201230,
+      "liquidityNet": "-147334423776913671",
+      "liquidityGross": "147479620630125413"
+    },
+    {
+      "index": 201240,
+      "liquidityNet": "-822750826395193684",
+      "liquidityGross": "843843178199290364"
+    },
+    {
+      "index": 201250,
+      "liquidityNet": "-152307974389081237",
+      "liquidityGross": "156254235235239679"
+    },
+    {
+      "index": 201260,
+      "liquidityNet": "1800677742560060",
+      "liquidityGross": "2057072917845040"
+    },
+    {
+      "index": 201270,
+      "liquidityNet": "5835180526827076",
+      "liquidityGross": "14013393209654990"
+    },
+    {
+      "index": 201280,
+      "liquidityNet": "-10243836476342916",
+      "liquidityGross": "10563949023297542"
+    },
+    {
+      "index": 201290,
+      "liquidityNet": "-23137434083302816",
+      "liquidityGross": "32145014071921248"
+    },
+    {
+      "index": 201300,
+      "liquidityNet": "-271692424073044573",
+      "liquidityGross": "293481511965870657"
+    },
+    {
+      "index": 201310,
+      "liquidityNet": "-38022783032438476",
+      "liquidityGross": "96016240359986216"
+    },
+    {
+      "index": 201320,
+      "liquidityNet": "513332694999225",
+      "liquidityGross": "513332718494311"
+    },
+    {
+      "index": 201330,
+      "liquidityNet": "-25975852840535327",
+      "liquidityGross": "50025938735941485"
+    },
+    {
+      "index": 201340,
+      "liquidityNet": "-6895672205197129",
+      "liquidityGross": "6895672228762803"
+    },
+    {
+      "index": 201350,
+      "liquidityNet": "29467489120877759",
+      "liquidityGross": "125389320150677105"
+    },
+    {
+      "index": 201360,
+      "liquidityNet": "-1064226327608617477",
+      "liquidityGross": "2189715792942616077"
+    },
+    {
+      "index": 201370,
+      "liquidityNet": "-48828997260325574",
+      "liquidityGross": "60070261943851276"
+    },
+    {
+      "index": 201380,
+      "liquidityNet": "-11045428470743058",
+      "liquidityGross": "11056163653748162"
+    },
+    {
+      "index": 201390,
+      "liquidityNet": "-3290301384269211",
+      "liquidityGross": "4543605131661309"
+    },
+    {
+      "index": 201400,
+      "liquidityNet": "-357479342691157",
+      "liquidityGross": "5452961417861233"
+    },
+    {
+      "index": 201410,
+      "liquidityNet": "-49121007213349993",
+      "liquidityGross": "56763340165261195"
+    },
+    {
+      "index": 201420,
+      "liquidityNet": "11573617101217358776",
+      "liquidityGross": "11594758813819351392"
+    },
+    {
+      "index": 201430,
+      "liquidityNet": "-11597449798978757460",
+      "liquidityGross": "11597449798978757460"
+    },
+    {
+      "index": 201440,
+      "liquidityNet": "-17913642049130778",
+      "liquidityGross": "18003486980690214"
+    },
+    {
+      "index": 201450,
+      "liquidityNet": "-35232833095431518",
+      "liquidityGross": "37108035895778908"
+    },
+    {
+      "index": 201460,
+      "liquidityNet": "-395066145362318090",
+      "liquidityGross": "396581855496461860"
+    },
+    {
+      "index": 201470,
+      "liquidityNet": "-136005540793516",
+      "liquidityGross": "155297788834908"
+    },
+    {
+      "index": 201480,
+      "liquidityNet": "-5823488913123549",
+      "liquidityGross": "8213101458369141"
+    },
+    {
+      "index": 201490,
+      "liquidityNet": "13761402588167887",
+      "liquidityGross": "24719760169605269"
+    },
+    {
+      "index": 201500,
+      "liquidityNet": "-21158989145987503",
+      "liquidityGross": "21498729788861771"
+    },
+    {
+      "index": 201510,
+      "liquidityNet": "-10261381818471293",
+      "liquidityGross": "10261381818471293"
+    },
+    {
+      "index": 201520,
+      "liquidityNet": "-115140956455107833",
+      "liquidityGross": "202287150582216269"
+    },
+    {
+      "index": 201530,
+      "liquidityNet": "-83463267831595904",
+      "liquidityGross": "100220937915027644"
+    },
+    {
+      "index": 201550,
+      "liquidityNet": "2807071367541151",
+      "liquidityGross": "2807071367541151"
+    },
+    {
+      "index": 201560,
+      "liquidityNet": "-21610661642597384",
+      "liquidityGross": "21610661642597384"
+    },
+    {
+      "index": 201570,
+      "liquidityNet": "-36774368663866320",
+      "liquidityGross": "36774368663866320"
+    },
+    {
+      "index": 201580,
+      "liquidityNet": "-26744946402636313",
+      "liquidityGross": "28581452742955361"
+    },
+    {
+      "index": 201590,
+      "liquidityNet": "-26811358880399494",
+      "liquidityGross": "28398252941659652"
+    },
+    {
+      "index": 201600,
+      "liquidityNet": "410380428060669",
+      "liquidityGross": "410380428060669"
+    },
+    {
+      "index": 201610,
+      "liquidityNet": "-349670988210687664",
+      "liquidityGross": "358908895064268008"
+    },
+    {
+      "index": 201620,
+      "liquidityNet": "3516016034981983",
+      "liquidityGross": "3696174073189255"
+    },
+    {
+      "index": 201630,
+      "liquidityNet": "-4618953426790172",
+      "liquidityGross": "4618953426790172"
+    },
+    {
+      "index": 201640,
+      "liquidityNet": "524501732181106",
+      "liquidityGross": "1590607403644516"
+    },
+    {
+      "index": 201650,
+      "liquidityNet": "-191362473390877648",
+      "liquidityGross": "203616758845995482"
+    },
+    {
+      "index": 201660,
+      "liquidityNet": "-276980705405505102",
+      "liquidityGross": "282140623290553576"
+    },
+    {
+      "index": 201670,
+      "liquidityNet": "-774285023369930",
+      "liquidityGross": "1526028180916272"
+    },
+    {
+      "index": 201680,
+      "liquidityNet": "-6650567572052662",
+      "liquidityGross": "6753412481711868"
+    },
+    {
+      "index": 201690,
+      "liquidityNet": "566308630248197110",
+      "liquidityGross": "583134052137765268"
+    },
+    {
+      "index": 201700,
+      "liquidityNet": "-1563344814481532075",
+      "liquidityGross": "1628428264317818251"
+    },
+    {
+      "index": 201710,
+      "liquidityNet": "-21427272521106217",
+      "liquidityGross": "79865941175875579"
+    },
+    {
+      "index": 201720,
+      "liquidityNet": "-32708121169212582",
+      "liquidityGross": "34224237746440986"
+    },
+    {
+      "index": 201730,
+      "liquidityNet": "-21383147445443985",
+      "liquidityGross": "33084417792221887"
+    },
+    {
+      "index": 201740,
+      "liquidityNet": "3764382379568089",
+      "liquidityGross": "4046043792926405"
+    },
+    {
+      "index": 201750,
+      "liquidityNet": "-9755667637125203",
+      "liquidityGross": "9990503008051075"
+    },
+    {
+      "index": 201760,
+      "liquidityNet": "-249203495220362265",
+      "liquidityGross": "249251602690359807"
+    },
+    {
+      "index": 201770,
+      "liquidityNet": "-8544138",
+      "liquidityGross": "8544138"
+    },
+    {
+      "index": 201780,
+      "liquidityNet": "-7622980953567690",
+      "liquidityGross": "66642490476555152"
+    },
+    {
+      "index": 201790,
+      "liquidityNet": "-36330483023229516",
+      "liquidityGross": "36339090272903892"
+    },
+    {
+      "index": 201800,
+      "liquidityNet": "405190027079312",
+      "liquidityGross": "2261785529966850"
+    },
+    {
+      "index": 201810,
+      "liquidityNet": "41379965445721",
+      "liquidityGross": "204313405245005"
+    },
+    {
+      "index": 201820,
+      "liquidityNet": "-1091932118231234655",
+      "liquidityGross": "1091932118232135859"
+    },
+    {
+      "index": 201830,
+      "liquidityNet": "-171134552795488083",
+      "liquidityGross": "414208305722263529"
+    },
+    {
+      "index": 201840,
+      "liquidityNet": "-121129085725865328",
+      "liquidityGross": "121135673578617938"
+    },
+    {
+      "index": 201850,
+      "liquidityNet": "-75303493831926",
+      "liquidityGross": "75303493831926"
+    },
+    {
+      "index": 201860,
+      "liquidityNet": "-122272753120230",
+      "liquidityGross": "122272753120230"
+    },
+    {
+      "index": 201870,
+      "liquidityNet": "-88669700916985",
+      "liquidityGross": "88669700916985"
+    },
+    {
+      "index": 201880,
+      "liquidityNet": "-1766515834100923",
+      "liquidityGross": "3437675712407749"
+    },
+    {
+      "index": 201890,
+      "liquidityNet": "-458367699352338",
+      "liquidityGross": "458367699352338"
+    },
+    {
+      "index": 201900,
+      "liquidityNet": "-4431660235401940",
+      "liquidityGross": "4493440683999086"
+    },
+    {
+      "index": 201910,
+      "liquidityNet": "-9260285849082789",
+      "liquidityGross": "13833083667344875"
+    },
+    {
+      "index": 201920,
+      "liquidityNet": "-1738585428729070",
+      "liquidityGross": "4715286245257922"
+    },
+    {
+      "index": 201930,
+      "liquidityNet": "23241749605766319",
+      "liquidityGross": "112216472962306733"
+    },
+    {
+      "index": 201940,
+      "liquidityNet": "-3034738425303833051",
+      "liquidityGross": "3053557501036615147"
+    },
+    {
+      "index": 201950,
+      "liquidityNet": "-3114157086768885",
+      "liquidityGross": "4477263312186507"
+    },
+    {
+      "index": 201960,
+      "liquidityNet": "-44776497235134451",
+      "liquidityGross": "44776497235134451"
+    },
+    {
+      "index": 201970,
+      "liquidityNet": "-49712160206619825",
+      "liquidityGross": "49712160206619825"
+    },
+    {
+      "index": 201980,
+      "liquidityNet": "-10066320121934",
+      "liquidityGross": "10066320121934"
+    },
+    {
+      "index": 201990,
+      "liquidityNet": "-840071149170962",
+      "liquidityGross": "996435191148086"
+    },
+    {
+      "index": 202000,
+      "liquidityNet": "-9404901850316890",
+      "liquidityGross": "12142257739403582"
+    },
+    {
+      "index": 202020,
+      "liquidityNet": "-78959830287212",
+      "liquidityGross": "861495207367116"
+    },
+    {
+      "index": 202030,
+      "liquidityNet": "-19681069684118474",
+      "liquidityGross": "19681069684118474"
+    },
+    {
+      "index": 202040,
+      "liquidityNet": "-1165747826076894",
+      "liquidityGross": "1165747826076894"
+    },
+    {
+      "index": 202050,
+      "liquidityNet": "1376619873996067",
+      "liquidityGross": "2209197104005241"
+    },
+    {
+      "index": 202060,
+      "liquidityNet": "8436127642814334",
+      "liquidityGross": "9796903894284592"
+    },
+    {
+      "index": 202070,
+      "liquidityNet": "1288058365433151",
+      "liquidityGross": "1293148213816101"
+    },
+    {
+      "index": 202080,
+      "liquidityNet": "-73070071297889159",
+      "liquidityGross": "73070128171024785"
+    },
+    {
+      "index": 202090,
+      "liquidityNet": "970342617187212",
+      "liquidityGross": "976930469939822"
+    },
+    {
+      "index": 202100,
+      "liquidityNet": "-53569006412700928",
+      "liquidityGross": "53701942256493246"
+    },
+    {
+      "index": 202110,
+      "liquidityNet": "-10898725544321237",
+      "liquidityGross": "12655722288034691"
+    },
+    {
+      "index": 202120,
+      "liquidityNet": "45043509598898541",
+      "liquidityGross": "72194190874423051"
+    },
+    {
+      "index": 202130,
+      "liquidityNet": "-951777963521160",
+      "liquidityGross": "965216526301328"
+    },
+    {
+      "index": 202140,
+      "liquidityNet": "-1670602104762057",
+      "liquidityGross": "1670602104762057"
+    },
+    {
+      "index": 202150,
+      "liquidityNet": "-364603659538827",
+      "liquidityGross": "364603659538827"
+    },
+    {
+      "index": 202160,
+      "liquidityNet": "20574360226623880",
+      "liquidityGross": "38963500902452374"
+    },
+    {
+      "index": 202170,
+      "liquidityNet": "-1373350113049426",
+      "liquidityGross": "1913911544240254"
+    },
+    {
+      "index": 202180,
+      "liquidityNet": "6535876479462466",
+      "liquidityGross": "15539493789797686"
+    },
+    {
+      "index": 202190,
+      "liquidityNet": "-7386979692485740",
+      "liquidityGross": "9207916142272892"
+    },
+    {
+      "index": 202200,
+      "liquidityNet": "-671686240346780",
+      "liquidityGross": "671686240346780"
+    },
+    {
+      "index": 202220,
+      "liquidityNet": "-11055510386266588",
+      "liquidityGross": "11055510386266588"
+    },
+    {
+      "index": 202230,
+      "liquidityNet": "-4103722736827623",
+      "liquidityGross": "18101816103496709"
+    },
+    {
+      "index": 202240,
+      "liquidityNet": "-93620543258627251",
+      "liquidityGross": "96115135046076265"
+    },
+    {
+      "index": 202250,
+      "liquidityNet": "-3641091362703799",
+      "liquidityGross": "3654194458733395"
+    },
+    {
+      "index": 202270,
+      "liquidityNet": "-12251514953123763",
+      "liquidityGross": "12251514953123763"
+    },
+    {
+      "index": 202280,
+      "liquidityNet": "816720477268299439",
+      "liquidityGross": "825870073121684229"
+    },
+    {
+      "index": 202300,
+      "liquidityNet": "-11084662278637130",
+      "liquidityGross": "11084662278637130"
+    },
+    {
+      "index": 202310,
+      "liquidityNet": "-2344830301760739",
+      "liquidityGross": "3242271553036253"
+    },
+    {
+      "index": 202320,
+      "liquidityNet": "-831250256889325687",
+      "liquidityGross": "831298056868132467"
+    },
+    {
+      "index": 202330,
+      "liquidityNet": "107968343054654009",
+      "liquidityGross": "143460852918264485"
+    },
+    {
+      "index": 202340,
+      "liquidityNet": "-2867857501586457",
+      "liquidityGross": "2882558075673819"
+    },
+    {
+      "index": 202350,
+      "liquidityNet": "-2797948329110004",
+      "liquidityGross": "3265554006921530"
+    },
+    {
+      "index": 202360,
+      "liquidityNet": "34819269149958665",
+      "liquidityGross": "37270854539388783"
+    },
+    {
+      "index": 202370,
+      "liquidityNet": "6240233923573",
+      "liquidityGross": "6240233923573"
+    },
+    {
+      "index": 202380,
+      "liquidityNet": "-472601045232238",
+      "liquidityGross": "523260015173924"
+    },
+    {
+      "index": 202390,
+      "liquidityNet": "-20432476475754134",
+      "liquidityGross": "20442456479086160"
+    },
+    {
+      "index": 202400,
+      "liquidityNet": "-230027177384346",
+      "liquidityGross": "230027177384346"
+    },
+    {
+      "index": 202410,
+      "liquidityNet": "509344362",
+      "liquidityGross": "509344362"
+    },
+    {
+      "index": 202420,
+      "liquidityNet": "-107086574682477476",
+      "liquidityGross": "107103388961538476"
+    },
+    {
+      "index": 202440,
+      "liquidityNet": "-15278194426472981",
+      "liquidityGross": "15278194525971949"
+    },
+    {
+      "index": 202450,
+      "liquidityNet": "-287831479091601",
+      "liquidityGross": "287831479091601"
+    },
+    {
+      "index": 202460,
+      "liquidityNet": "4542363584665",
+      "liquidityGross": "4542363584665"
+    },
+    {
+      "index": 202470,
+      "liquidityNet": "-29877112013953965",
+      "liquidityGross": "30050359356606863"
+    },
+    {
+      "index": 202480,
+      "liquidityNet": "-44275665096795788",
+      "liquidityGross": "44275665096795788"
+    },
+    {
+      "index": 202490,
+      "liquidityNet": "-146357401238207317",
+      "liquidityGross": "146721046839430969"
+    },
+    {
+      "index": 202520,
+      "liquidityNet": "-2953543329732",
+      "liquidityGross": "2953543329732"
+    },
+    {
+      "index": 202530,
+      "liquidityNet": "-116841091324299275",
+      "liquidityGross": "131640933223130111"
+    },
+    {
+      "index": 202540,
+      "liquidityNet": "-202767183570549192",
+      "liquidityGross": "216616060274485820"
+    },
+    {
+      "index": 202550,
+      "liquidityNet": "-5195601277153734",
+      "liquidityGross": "26291089704482684"
+    },
+    {
+      "index": 202560,
+      "liquidityNet": "-459955252882190",
+      "liquidityGross": "459955252882190"
+    },
+    {
+      "index": 202570,
+      "liquidityNet": "-4859133151455839",
+      "liquidityGross": "4859133151455839"
+    },
+    {
+      "index": 202580,
+      "liquidityNet": "-27629903522568740",
+      "liquidityGross": "27629903522568740"
+    },
+    {
+      "index": 202590,
+      "liquidityNet": "241358961409755510",
+      "liquidityGross": "348878444641193762"
+    },
+    {
+      "index": 202600,
+      "liquidityNet": "-3378502426865895",
+      "liquidityGross": "3378502426865895"
+    },
+    {
+      "index": 202610,
+      "liquidityNet": "21337935354225231",
+      "liquidityGross": "21337938545051985"
+    },
+    {
+      "index": 202620,
+      "liquidityNet": "76647675693143",
+      "liquidityGross": "325121148207127"
+    },
+    {
+      "index": 202640,
+      "liquidityNet": "-200884411950135",
+      "liquidityGross": "200884411950135"
+    },
+    {
+      "index": 202650,
+      "liquidityNet": "-329341230206379176",
+      "liquidityGross": "329348872987282030"
+    },
+    {
+      "index": 202660,
+      "liquidityNet": "180991561758783",
+      "liquidityGross": "180991561758783"
+    },
+    {
+      "index": 202670,
+      "liquidityNet": "-23831377505989420",
+      "liquidityGross": "38206290753892856"
+    },
+    {
+      "index": 202690,
+      "liquidityNet": "-23146013902397416",
+      "liquidityGross": "23146013902397416"
+    },
+    {
+      "index": 202700,
+      "liquidityNet": "-20772375426615470",
+      "liquidityGross": "21901806505125870"
+    },
+    {
+      "index": 202720,
+      "liquidityNet": "405576329100360",
+      "liquidityGross": "405576329100360"
+    },
+    {
+      "index": 202730,
+      "liquidityNet": "90396281546259192",
+      "liquidityGross": "97799699944661734"
+    },
+    {
+      "index": 202740,
+      "liquidityNet": "-3037736220415963",
+      "liquidityGross": "3037736220415963"
+    },
+    {
+      "index": 202750,
+      "liquidityNet": "-93560532509352696",
+      "liquidityGross": "93747853905742260"
+    },
+    {
+      "index": 202760,
+      "liquidityNet": "-405576329100360",
+      "liquidityGross": "405576329100360"
+    },
+    {
+      "index": 202770,
+      "liquidityNet": "-635852809160212",
+      "liquidityGross": "635852809160212"
+    },
+    {
+      "index": 202780,
+      "liquidityNet": "5776734942728244605",
+      "liquidityGross": "5791191913916698043"
+    },
+    {
+      "index": 202790,
+      "liquidityNet": "-40221649031222737",
+      "liquidityGross": "40221649031222737"
+    },
+    {
+      "index": 202800,
+      "liquidityNet": "-14251238810495905",
+      "liquidityGross": "15722171234914321"
+    },
+    {
+      "index": 202810,
+      "liquidityNet": "-5783963428322471324",
+      "liquidityGross": "5783963428322471324"
+    },
+    {
+      "index": 202820,
+      "liquidityNet": "-3054432197225825",
+      "liquidityGross": "3054432197225825"
+    },
+    {
+      "index": 202830,
+      "liquidityNet": "-38922018744565728",
+      "liquidityGross": "38922018744565728"
+    },
+    {
+      "index": 202850,
+      "liquidityNet": "-58175568214256",
+      "liquidityGross": "58175568214256"
+    },
+    {
+      "index": 202860,
+      "liquidityNet": "-67975954800147300",
+      "liquidityGross": "68112193475663014"
+    },
+    {
+      "index": 202890,
+      "liquidityNet": "-117343664000136805",
+      "liquidityGross": "117343664000136805"
+    },
+    {
+      "index": 202900,
+      "liquidityNet": "-825808589555170",
+      "liquidityGross": "825808589555170"
+    },
+    {
+      "index": 202910,
+      "liquidityNet": "-10121237530302916",
+      "liquidityGross": "10121237530302916"
+    },
+    {
+      "index": 202920,
+      "liquidityNet": "-84530376755870",
+      "liquidityGross": "87649379101026"
+    },
+    {
+      "index": 202940,
+      "liquidityNet": "-796587335862446",
+      "liquidityGross": "796587335862446"
+    },
+    {
+      "index": 202950,
+      "liquidityNet": "-948671121908992858",
+      "liquidityGross": "948671121908992858"
+    },
+    {
+      "index": 202960,
+      "liquidityNet": "-59370982431327",
+      "liquidityGross": "59370982431327"
+    },
+    {
+      "index": 202970,
+      "liquidityNet": "-2249015999852481",
+      "liquidityGross": "2251115715142683"
+    },
+    {
+      "index": 202980,
+      "liquidityNet": "-3535471656628434",
+      "liquidityGross": "3535471656628434"
+    },
+    {
+      "index": 202990,
+      "liquidityNet": "-107526728392219397",
+      "liquidityGross": "107668949728771117"
+    },
+    {
+      "index": 203010,
+      "liquidityNet": "751058565067519",
+      "liquidityGross": "751058565067519"
+    },
+    {
+      "index": 203020,
+      "liquidityNet": "-5427363054589145",
+      "liquidityGross": "5427363054589145"
+    },
+    {
+      "index": 203030,
+      "liquidityNet": "-751058565067519",
+      "liquidityGross": "751058565067519"
+    },
+    {
+      "index": 203040,
+      "liquidityNet": "1610409625250298",
+      "liquidityGross": "2570544726075090"
+    },
+    {
+      "index": 203050,
+      "liquidityNet": "598080051491788",
+      "liquidityGross": "598080051491788"
+    },
+    {
+      "index": 203060,
+      "liquidityNet": "-124376291961447294",
+      "liquidityGross": "124376291961447294"
+    },
+    {
+      "index": 203070,
+      "liquidityNet": "-310721796639633079",
+      "liquidityGross": "310809731008809123"
+    },
+    {
+      "index": 203080,
+      "liquidityNet": "-2259109698993759",
+      "liquidityGross": "2259109698993759"
+    },
+    {
+      "index": 203090,
+      "liquidityNet": "-5919178647771635",
+      "liquidityGross": "5919178647771635"
+    },
+    {
+      "index": 203100,
+      "liquidityNet": "-10584263938085660",
+      "liquidityGross": "10584263938085660"
+    },
+    {
+      "index": 203120,
+      "liquidityNet": "-59044928994905929",
+      "liquidityGross": "59044928994905929"
+    },
+    {
+      "index": 203130,
+      "liquidityNet": "-10580609711082580",
+      "liquidityGross": "10604723647805806"
+    },
+    {
+      "index": 203150,
+      "liquidityNet": "-2490240553657268",
+      "liquidityGross": "2617543059021470"
+    },
+    {
+      "index": 203160,
+      "liquidityNet": "-118382694350808",
+      "liquidityGross": "118382694350808"
+    },
+    {
+      "index": 203170,
+      "liquidityNet": "-44240702707658051",
+      "liquidityGross": "44240702707658051"
+    },
+    {
+      "index": 203180,
+      "liquidityNet": "-1532305183284796762",
+      "liquidityGross": "1532331999930257576"
+    },
+    {
+      "index": 203190,
+      "liquidityNet": "-273145815816140404",
+      "liquidityGross": "364183044897490936"
+    },
+    {
+      "index": 203200,
+      "liquidityNet": "-446199429187",
+      "liquidityGross": "446199429187"
+    },
+    {
+      "index": 203220,
+      "liquidityNet": "-99632773513906",
+      "liquidityGross": "99632773513906"
+    },
+    {
+      "index": 203240,
+      "liquidityNet": "-266605143742795",
+      "liquidityGross": "266605143742795"
+    },
+    {
+      "index": 203250,
+      "liquidityNet": "-13732380138929825",
+      "liquidityGross": "13732380138929825"
+    },
+    {
+      "index": 203260,
+      "liquidityNet": "-344527804283594427",
+      "liquidityGross": "344527804283594427"
+    },
+    {
+      "index": 203270,
+      "liquidityNet": "-78182020988562",
+      "liquidityGross": "78182020988562"
+    },
+    {
+      "index": 203280,
+      "liquidityNet": "-141109082375197",
+      "liquidityGross": "141109082375197"
+    },
+    {
+      "index": 203290,
+      "liquidityNet": "-173667836620054",
+      "liquidityGross": "173667836620054"
+    },
+    {
+      "index": 203320,
+      "liquidityNet": "-107444741888516166",
+      "liquidityGross": "107727930262340472"
+    },
+    {
+      "index": 203360,
+      "liquidityNet": "-1590441756031",
+      "liquidityGross": "1590441756031"
+    },
+    {
+      "index": 203380,
+      "liquidityNet": "-233928666178226",
+      "liquidityGross": "233928666178226"
+    },
+    {
+      "index": 203400,
+      "liquidityNet": "-1161999841948538",
+      "liquidityGross": "1161999841948538"
+    },
+    {
+      "index": 203430,
+      "liquidityNet": "-28017424191321",
+      "liquidityGross": "28017424191321"
+    },
+    {
+      "index": 203440,
+      "liquidityNet": "-26325012048561232",
+      "liquidityGross": "26325012048561232"
+    },
+    {
+      "index": 203460,
+      "liquidityNet": "-4401764424180",
+      "liquidityGross": "4401764424180"
+    },
+    {
+      "index": 203490,
+      "liquidityNet": "-124452066388693",
+      "liquidityGross": "186449951995901"
+    },
+    {
+      "index": 203510,
+      "liquidityNet": "-4611735329692443",
+      "liquidityGross": "4611735329692443"
+    },
+    {
+      "index": 203520,
+      "liquidityNet": "-1059262452971998",
+      "liquidityGross": "1059262452971998"
+    },
+    {
+      "index": 203530,
+      "liquidityNet": "-152005493014295120",
+      "liquidityGross": "155235131367302914"
+    },
+    {
+      "index": 203540,
+      "liquidityNet": "-7350287043681",
+      "liquidityGross": "7350287043681"
+    },
+    {
+      "index": 203550,
+      "liquidityNet": "20971821802851",
+      "liquidityGross": "20971821802851"
+    },
+    {
+      "index": 203560,
+      "liquidityNet": "-18792719936329890",
+      "liquidityGross": "18792719936329890"
+    },
+    {
+      "index": 203570,
+      "liquidityNet": "-5899250351493038",
+      "liquidityGross": "5899250351493038"
+    },
+    {
+      "index": 203580,
+      "liquidityNet": "-168179071593168",
+      "liquidityGross": "168179071593168"
+    },
+    {
+      "index": 203590,
+      "liquidityNet": "-27875338890377923",
+      "liquidityGross": "27875338890377923"
+    },
+    {
+      "index": 203600,
+      "liquidityNet": "-5910489098981366",
+      "liquidityGross": "5910571395471842"
+    },
+    {
+      "index": 203630,
+      "liquidityNet": "-129109087751637",
+      "liquidityGross": "129109087751637"
+    },
+    {
+      "index": 203640,
+      "liquidityNet": "-598080051491778",
+      "liquidityGross": "598080051491778"
+    },
+    {
+      "index": 203660,
+      "liquidityNet": "-5370550925265424",
+      "liquidityGross": "5370550925265424"
+    },
+    {
+      "index": 203670,
+      "liquidityNet": "-21154981350808709",
+      "liquidityGross": "21154981350808709"
+    },
+    {
+      "index": 203680,
+      "liquidityNet": "-9465849077733665",
+      "liquidityGross": "9465849077733665"
+    },
+    {
+      "index": 203690,
+      "liquidityNet": "-8517146608764286",
+      "liquidityGross": "8517146608764286"
+    },
+    {
+      "index": 203700,
+      "liquidityNet": "-421152259379735",
+      "liquidityGross": "421152259379735"
+    },
+    {
+      "index": 203730,
+      "liquidityNet": "-247968835368456",
+      "liquidityGross": "247968835368456"
+    },
+    {
+      "index": 203740,
+      "liquidityNet": "2157907934377",
+      "liquidityGross": "2157907934377"
+    },
+    {
+      "index": 203750,
+      "liquidityNet": "-994374771300344",
+      "liquidityGross": "994374771300344"
+    },
+    {
+      "index": 203780,
+      "liquidityNet": "-119484624337468",
+      "liquidityGross": "194670783066752"
+    },
+    {
+      "index": 203790,
+      "liquidityNet": "-688528184236989",
+      "liquidityGross": "688528184236989"
+    },
+    {
+      "index": 203800,
+      "liquidityNet": "-11454766002544427",
+      "liquidityGross": "11454766002544427"
+    },
+    {
+      "index": 203820,
+      "liquidityNet": "-8568979496467",
+      "liquidityGross": "8568979496467"
+    },
+    {
+      "index": 203830,
+      "liquidityNet": "-82370407695995194",
+      "liquidityGross": "82370407695995194"
+    },
+    {
+      "index": 203870,
+      "liquidityNet": "-22354625601916090",
+      "liquidityGross": "22383612605140590"
+    },
+    {
+      "index": 203880,
+      "liquidityNet": "-101891681444220498",
+      "liquidityGross": "250986815675338614"
+    },
+    {
+      "index": 203890,
+      "liquidityNet": "-5402653489740557",
+      "liquidityGross": "5522957185131475"
+    },
+    {
+      "index": 203920,
+      "liquidityNet": "-7500972438780182",
+      "liquidityGross": "7500972438780182"
+    },
+    {
+      "index": 203930,
+      "liquidityNet": "-122954391212465",
+      "liquidityGross": "122954391212465"
+    },
+    {
+      "index": 203940,
+      "liquidityNet": "-125115328654739",
+      "liquidityGross": "125115328654739"
+    },
+    {
+      "index": 203950,
+      "liquidityNet": "-1892354376788876",
+      "liquidityGross": "1892422190011586"
+    },
+    {
+      "index": 203960,
+      "liquidityNet": "1184074883211",
+      "liquidityGross": "1184074883211"
+    },
+    {
+      "index": 203970,
+      "liquidityNet": "-13879694876776362",
+      "liquidityGross": "13879694876776362"
+    },
+    {
+      "index": 203980,
+      "liquidityNet": "-831652196853786",
+      "liquidityGross": "831652196853786"
+    },
+    {
+      "index": 203990,
+      "liquidityNet": "-30179410295001851",
+      "liquidityGross": "30209836295031439"
+    },
+    {
+      "index": 204000,
+      "liquidityNet": "-304462446998520",
+      "liquidityGross": "304462446998520"
+    },
+    {
+      "index": 204010,
+      "liquidityNet": "-3429058199275889",
+      "liquidityGross": "3429058199275889"
+    },
+    {
+      "index": 204020,
+      "liquidityNet": "-39504409779544",
+      "liquidityGross": "39504409779544"
+    },
+    {
+      "index": 204040,
+      "liquidityNet": "-7168655126983",
+      "liquidityGross": "7168655126983"
+    },
+    {
+      "index": 204050,
+      "liquidityNet": "-249109236287187",
+      "liquidityGross": "249109236287187"
+    },
+    {
+      "index": 204070,
+      "liquidityNet": "-35688137068311",
+      "liquidityGross": "35688137068311"
+    },
+    {
+      "index": 204080,
+      "liquidityNet": "-241457568182226",
+      "liquidityGross": "330955833062834"
+    },
+    {
+      "index": 204090,
+      "liquidityNet": "18189109251578716",
+      "liquidityGross": "18387597821752590"
+    },
+    {
+      "index": 204110,
+      "liquidityNet": "-19687921304879",
+      "liquidityGross": "19687921304879"
+    },
+    {
+      "index": 204130,
+      "liquidityNet": "-10835316234146763",
+      "liquidityGross": "10835316234146763"
+    },
+    {
+      "index": 204150,
+      "liquidityNet": "-21207135419861",
+      "liquidityGross": "21207135419861"
+    },
+    {
+      "index": 204160,
+      "liquidityNet": "527279115156",
+      "liquidityGross": "527279115156"
+    },
+    {
+      "index": 204170,
+      "liquidityNet": "81134504679928",
+      "liquidityGross": "81134504679928"
+    },
+    {
+      "index": 204180,
+      "liquidityNet": "1004655231506",
+      "liquidityGross": "1004655231506"
+    },
+    {
+      "index": 204190,
+      "liquidityNet": "760269801176884",
+      "liquidityGross": "760269801176884"
+    },
+    {
+      "index": 204200,
+      "liquidityNet": "-2415672262133317",
+      "liquidityGross": "3810257185495703"
+    },
+    {
+      "index": 204220,
+      "liquidityNet": "-3840195834080811",
+      "liquidityGross": "3840195834080811"
+    },
+    {
+      "index": 204230,
+      "liquidityNet": "-78334431607176",
+      "liquidityGross": "78334431607176"
+    },
+    {
+      "index": 204240,
+      "liquidityNet": "-2451097497516621",
+      "liquidityGross": "2463010472742111"
+    },
+    {
+      "index": 204260,
+      "liquidityNet": "2298787003010616",
+      "liquidityGross": "2298787003010616"
+    },
+    {
+      "index": 204280,
+      "liquidityNet": "-1004655231506",
+      "liquidityGross": "1004655231506"
+    },
+    {
+      "index": 204290,
+      "liquidityNet": "-1284040267305373",
+      "liquidityGross": "1284040267305373"
+    },
+    {
+      "index": 204300,
+      "liquidityNet": "-4669743016197090",
+      "liquidityGross": "4669743016197090"
+    },
+    {
+      "index": 204310,
+      "liquidityNet": "-301222294305306",
+      "liquidityGross": "301222294305306"
+    },
+    {
+      "index": 204320,
+      "liquidityNet": "-833767159812218",
+      "liquidityGross": "833767159812218"
+    },
+    {
+      "index": 204330,
+      "liquidityNet": "-1549393456859454",
+      "liquidityGross": "1549393456859454"
+    },
+    {
+      "index": 204340,
+      "liquidityNet": "-237154681430032",
+      "liquidityGross": "1221404299579232"
+    },
+    {
+      "index": 204350,
+      "liquidityNet": "-151122514200101",
+      "liquidityGross": "151122514200101"
+    },
+    {
+      "index": 204360,
+      "liquidityNet": "46922130405323",
+      "liquidityGross": "46922130405323"
+    },
+    {
+      "index": 204370,
+      "liquidityNet": "-2735118071781937",
+      "liquidityGross": "2830229765652865"
+    },
+    {
+      "index": 204380,
+      "liquidityNet": "-497297810940347",
+      "liquidityGross": "519981051129559"
+    },
+    {
+      "index": 204390,
+      "liquidityNet": "62260722446112",
+      "liquidityGross": "110238563569440"
+    },
+    {
+      "index": 204400,
+      "liquidityNet": "-410380428060669",
+      "liquidityGross": "410380428060669"
+    },
+    {
+      "index": 204410,
+      "liquidityNet": "-36993022405489",
+      "liquidityGross": "36993022405489"
+    },
+    {
+      "index": 204420,
+      "liquidityNet": "705718046666078",
+      "liquidityGross": "713558590062242"
+    },
+    {
+      "index": 204460,
+      "liquidityNet": "-171331631582231",
+      "liquidityGross": "171331631582231"
+    },
+    {
+      "index": 204470,
+      "liquidityNet": "-86249643007776",
+      "liquidityGross": "86249643007776"
+    },
+    {
+      "index": 204490,
+      "liquidityNet": "-682074899506235",
+      "liquidityGross": "700123227743079"
+    },
+    {
+      "index": 204500,
+      "liquidityNet": "17194630157723692",
+      "liquidityGross": "17194630157723712"
+    },
+    {
+      "index": 204520,
+      "liquidityNet": "-30640467192306251",
+      "liquidityGross": "30640467192306251"
+    },
+    {
+      "index": 204530,
+      "liquidityNet": "21821905",
+      "liquidityGross": "21821905"
+    },
+    {
+      "index": 204550,
+      "liquidityNet": "-33615509923089",
+      "liquidityGross": "33615509923089"
+    },
+    {
+      "index": 204560,
+      "liquidityNet": "-30278117302711867",
+      "liquidityGross": "30278117302711867"
+    },
+    {
+      "index": 204570,
+      "liquidityNet": "17618420282610",
+      "liquidityGross": "17618420282610"
+    },
+    {
+      "index": 204600,
+      "liquidityNet": "9126393214898066",
+      "liquidityGross": "9501019172237514"
+    },
+    {
+      "index": 204610,
+      "liquidityNet": "-819954003079660188",
+      "liquidityGross": "822636370236894254"
+    },
+    {
+      "index": 204620,
+      "liquidityNet": "-407478132439942865",
+      "liquidityGross": "408951845849531601"
+    },
+    {
+      "index": 204630,
+      "liquidityNet": "7827702024297",
+      "liquidityGross": "70566664789457"
+    },
+    {
+      "index": 204640,
+      "liquidityNet": "394387707481",
+      "liquidityGross": "394387707481"
+    },
+    {
+      "index": 204650,
+      "liquidityNet": "483807816176512806",
+      "liquidityGross": "483897666823298480"
+    },
+    {
+      "index": 204660,
+      "liquidityNet": "-394387707481",
+      "liquidityGross": "394387707481"
+    },
+    {
+      "index": 204670,
+      "liquidityNet": "-1966158769478",
+      "liquidityGross": "76428208044276"
+    },
+    {
+      "index": 204680,
+      "liquidityNet": "-365989215113157",
+      "liquidityGross": "365989215113157"
+    },
+    {
+      "index": 204690,
+      "liquidityNet": "-691801610978260",
+      "liquidityGross": "691801610978260"
+    },
+    {
+      "index": 204700,
+      "liquidityNet": "-48002573667553",
+      "liquidityGross": "48002573667553"
+    },
+    {
+      "index": 204710,
+      "liquidityNet": "10468400421554",
+      "liquidityGross": "12836550187976"
+    },
+    {
+      "index": 204720,
+      "liquidityNet": "-44749132440304",
+      "liquidityGross": "44749132440304"
+    },
+    {
+      "index": 204730,
+      "liquidityNet": "9669673096868",
+      "liquidityGross": "9669673096868"
+    },
+    {
+      "index": 204740,
+      "liquidityNet": "-2466853868199081",
+      "liquidityGross": "2466853868199081"
+    },
+    {
+      "index": 204750,
+      "liquidityNet": "1087800237554443",
+      "liquidityGross": "1087800237554443"
+    },
+    {
+      "index": 204770,
+      "liquidityNet": "-78636084370152579",
+      "liquidityGross": "78636084370152579"
+    },
+    {
+      "index": 204780,
+      "liquidityNet": "706283957825458",
+      "liquidityGross": "706283957825458"
+    },
+    {
+      "index": 204790,
+      "liquidityNet": "-58556667865517",
+      "liquidityGross": "58556667865517"
+    },
+    {
+      "index": 204800,
+      "liquidityNet": "-691926928106848",
+      "liquidityGross": "720640987544068"
+    },
+    {
+      "index": 204810,
+      "liquidityNet": "-3552255192960607",
+      "liquidityGross": "3552255192960607"
+    },
+    {
+      "index": 204820,
+      "liquidityNet": "-8811768495241",
+      "liquidityGross": "8811768495241"
+    },
+    {
+      "index": 204840,
+      "liquidityNet": "1123171640712713492",
+      "liquidityGross": "1123171640712713492"
+    },
+    {
+      "index": 204850,
+      "liquidityNet": "-41027107698155479",
+      "liquidityGross": "41027107698155479"
+    },
+    {
+      "index": 204860,
+      "liquidityNet": "-262068004012",
+      "liquidityGross": "262121163150"
+    },
+    {
+      "index": 204870,
+      "liquidityNet": "-17153850689571940",
+      "liquidityGross": "17153850689571940"
+    },
+    {
+      "index": 204880,
+      "liquidityNet": "-19255743505664219",
+      "liquidityGross": "19255743505664219"
+    },
+    {
+      "index": 204890,
+      "liquidityNet": "-1126886845007964942",
+      "liquidityGross": "1126886845007964942"
+    },
+    {
+      "index": 204900,
+      "liquidityNet": "612816006342343",
+      "liquidityGross": "612816059501481"
+    },
+    {
+      "index": 204910,
+      "liquidityNet": "-910271637044215",
+      "liquidityGross": "910271637044215"
+    },
+    {
+      "index": 204930,
+      "liquidityNet": "-6510470788869",
+      "liquidityGross": "6510470788869"
+    },
+    {
+      "index": 204950,
+      "liquidityNet": "-105581613824062",
+      "liquidityGross": "105581613824062"
+    },
+    {
+      "index": 204960,
+      "liquidityNet": "5708588153368",
+      "liquidityGross": "5708588153368"
+    },
+    {
+      "index": 204970,
+      "liquidityNet": "-37231024637399",
+      "liquidityGross": "37231024637399"
+    },
+    {
+      "index": 204990,
+      "liquidityNet": "-6939965696533228",
+      "liquidityGross": "6939965696533228"
+    },
+    {
+      "index": 205000,
+      "liquidityNet": "-15213000014794",
+      "liquidityGross": "15213000014794"
+    },
+    {
+      "index": 205010,
+      "liquidityNet": "-21750710531480344",
+      "liquidityGross": "26255504537132640"
+    },
+    {
+      "index": 205020,
+      "liquidityNet": "-23096167522516331",
+      "liquidityGross": "23096167522516331"
+    },
+    {
+      "index": 205070,
+      "liquidityNet": "3258972779416",
+      "liquidityGross": "3258972779416"
+    },
+    {
+      "index": 205090,
+      "liquidityNet": "-3258972779416",
+      "liquidityGross": "3258972779416"
+    },
+    {
+      "index": 205140,
+      "liquidityNet": "3815506156622",
+      "liquidityGross": "3815506156622"
+    },
+    {
+      "index": 205170,
+      "liquidityNet": "4400210496858560",
+      "liquidityGross": "4400210496858560"
+    },
+    {
+      "index": 205180,
+      "liquidityNet": "72247538655926",
+      "liquidityGross": "72247538655926"
+    },
+    {
+      "index": 205190,
+      "liquidityNet": "-5708588153368",
+      "liquidityGross": "5708588153368"
+    },
+    {
+      "index": 205200,
+      "liquidityNet": "-220320331631789",
+      "liquidityGross": "220320331631789"
+    },
+    {
+      "index": 205210,
+      "liquidityNet": "12887701135087",
+      "liquidityGross": "12887701135087"
+    },
+    {
+      "index": 205230,
+      "liquidityNet": "-634827392864265",
+      "liquidityGross": "801300565028347"
+    },
+    {
+      "index": 205240,
+      "liquidityNet": "-1514735474477716",
+      "liquidityGross": "1514735474477716"
+    },
+    {
+      "index": 205250,
+      "liquidityNet": "336182637417384077",
+      "liquidityGross": "374256509161189981"
+    },
+    {
+      "index": 205260,
+      "liquidityNet": "-1499595978505299",
+      "liquidityGross": "1684415142656301"
+    },
+    {
+      "index": 205270,
+      "liquidityNet": "-2593293572625430",
+      "liquidityGross": "3398831072892930"
+    },
+    {
+      "index": 205280,
+      "liquidityNet": "-99792128182741",
+      "liquidityGross": "132749183409933"
+    },
+    {
+      "index": 205300,
+      "liquidityNet": "-163892614366023",
+      "liquidityGross": "163892614366023"
+    },
+    {
+      "index": 205310,
+      "liquidityNet": "-1985342447386808",
+      "liquidityGross": "1985342447386808"
+    },
+    {
+      "index": 205320,
+      "liquidityNet": "-271363588399423",
+      "liquidityGross": "271363588399423"
+    },
+    {
+      "index": 205330,
+      "liquidityNet": "-402433206073545",
+      "liquidityGross": "402504409717545"
+    },
+    {
+      "index": 205340,
+      "liquidityNet": "44796499913674165",
+      "liquidityGross": "44811942494943623"
+    },
+    {
+      "index": 205350,
+      "liquidityNet": "35413176029881",
+      "liquidityGross": "35413176029881"
+    },
+    {
+      "index": 205370,
+      "liquidityNet": "-44870724728027053",
+      "liquidityGross": "44870724728027053"
+    },
+    {
+      "index": 205380,
+      "liquidityNet": "56032323483674",
+      "liquidityGross": "58520881195404"
+    },
+    {
+      "index": 205390,
+      "liquidityNet": "-118649762111922",
+      "liquidityGross": "118649762111922"
+    },
+    {
+      "index": 205400,
+      "liquidityNet": "583282889055648",
+      "liquidityGross": "583282889055648"
+    },
+    {
+      "index": 205410,
+      "liquidityNet": "-6758088908837321",
+      "liquidityGross": "6758088908837321"
+    },
+    {
+      "index": 205420,
+      "liquidityNet": "-164197565681071562",
+      "liquidityGross": "164707193778739032"
+    },
+    {
+      "index": 205430,
+      "liquidityNet": "-353217963702092",
+      "liquidityGross": "796401770329540"
+    },
+    {
+      "index": 205460,
+      "liquidityNet": "-2337388845635494",
+      "liquidityGross": "2369908845622768"
+    },
+    {
+      "index": 205490,
+      "liquidityNet": "-306650251862229",
+      "liquidityGross": "641096205773331"
+    },
+    {
+      "index": 205500,
+      "liquidityNet": "-5141291429292",
+      "liquidityGross": "5141291429292"
+    },
+    {
+      "index": 205510,
+      "liquidityNet": "-16259999993637",
+      "liquidityGross": "16259999993637"
+    },
+    {
+      "index": 205530,
+      "liquidityNet": "-167222976955551",
+      "liquidityGross": "167222976955551"
+    },
+    {
+      "index": 205550,
+      "liquidityNet": "-3451039620638601",
+      "liquidityGross": "3507909960310679"
+    },
+    {
+      "index": 205560,
+      "liquidityNet": "22741687028344",
+      "liquidityGross": "22741687028344"
+    },
+    {
+      "index": 205570,
+      "liquidityNet": "-28435169836039",
+      "liquidityGross": "28435169836039"
+    },
+    {
+      "index": 205580,
+      "liquidityNet": "-4212306482939579",
+      "liquidityGross": "4212306482939579"
+    },
+    {
+      "index": 205590,
+      "liquidityNet": "-353302553495521487",
+      "liquidityGross": "353347604875428615"
+    },
+    {
+      "index": 205600,
+      "liquidityNet": "-2039510908215550",
+      "liquidityGross": "2039510908215550"
+    },
+    {
+      "index": 205610,
+      "liquidityNet": "-22741687028344",
+      "liquidityGross": "22741687028344"
+    },
+    {
+      "index": 205630,
+      "liquidityNet": "-22525689953564",
+      "liquidityGross": "22525689953564"
+    },
+    {
+      "index": 205640,
+      "liquidityNet": "-583282889055648",
+      "liquidityGross": "583282889055648"
+    },
+    {
+      "index": 205650,
+      "liquidityNet": "-58352048721294",
+      "liquidityGross": "58352048721294"
+    },
+    {
+      "index": 205710,
+      "liquidityNet": "-16256970617849682",
+      "liquidityGross": "16256970617849682"
+    },
+    {
+      "index": 205740,
+      "liquidityNet": "-939548715160843",
+      "liquidityGross": "939548715160843"
+    },
+    {
+      "index": 205800,
+      "liquidityNet": "-46922130405323",
+      "liquidityGross": "46922130405323"
+    },
+    {
+      "index": 205830,
+      "liquidityNet": "-51329394322148",
+      "liquidityGross": "51329394322148"
+    },
+    {
+      "index": 205850,
+      "liquidityNet": "-473313866919909335",
+      "liquidityGross": "473313866919909335"
+    },
+    {
+      "index": 205870,
+      "liquidityNet": "-39644808284562",
+      "liquidityGross": "39644808284562"
+    },
+    {
+      "index": 205920,
+      "liquidityNet": "5921513161873",
+      "liquidityGross": "5921513161873"
+    },
+    {
+      "index": 205930,
+      "liquidityNet": "-5921513161873",
+      "liquidityGross": "5921513161873"
+    },
+    {
+      "index": 205940,
+      "liquidityNet": "-82404870876443",
+      "liquidityGross": "82404870876443"
+    },
+    {
+      "index": 205950,
+      "liquidityNet": "-61589487649761",
+      "liquidityGross": "61589487649761"
+    },
+    {
+      "index": 205970,
+      "liquidityNet": "-838123396175157",
+      "liquidityGross": "838123396175157"
+    },
+    {
+      "index": 205980,
+      "liquidityNet": "-256576460294339",
+      "liquidityGross": "256576460294339"
+    },
+    {
+      "index": 205990,
+      "liquidityNet": "-14566093142378",
+      "liquidityGross": "14566093142378"
+    },
+    {
+      "index": 206010,
+      "liquidityNet": "32531821528337648659",
+      "liquidityGross": "32531821528337648659"
+    },
+    {
+      "index": 206020,
+      "liquidityNet": "-32528044278444658533",
+      "liquidityGross": "32528044278444658533"
+    },
+    {
+      "index": 206050,
+      "liquidityNet": "-612816032921912",
+      "liquidityGross": "612816032921912"
+    },
+    {
+      "index": 206060,
+      "liquidityNet": "-31437128917895",
+      "liquidityGross": "31437128917895"
+    },
+    {
+      "index": 206100,
+      "liquidityNet": "-16614204290316",
+      "liquidityGross": "16614204290316"
+    },
+    {
+      "index": 206130,
+      "liquidityNet": "382765298101521",
+      "liquidityGross": "382765298101521"
+    },
+    {
+      "index": 206180,
+      "liquidityNet": "-2798824149228",
+      "liquidityGross": "2798824149228"
+    },
+    {
+      "index": 206190,
+      "liquidityNet": "-8070561896919252",
+      "liquidityGross": "8070561896919252"
+    },
+    {
+      "index": 206220,
+      "liquidityNet": "-5959368720827708",
+      "liquidityGross": "5959368720827708"
+    },
+    {
+      "index": 206230,
+      "liquidityNet": "-1975143919291571979",
+      "liquidityGross": "1975143919291571979"
+    },
+    {
+      "index": 206240,
+      "liquidityNet": "-17892961313414584",
+      "liquidityGross": "17892961313414584"
+    },
+    {
+      "index": 206250,
+      "liquidityNet": "-30410086366488",
+      "liquidityGross": "30410086366488"
+    },
+    {
+      "index": 206260,
+      "liquidityNet": "-477197831652989",
+      "liquidityGross": "477197831652989"
+    },
+    {
+      "index": 206270,
+      "liquidityNet": "-5751910975682424",
+      "liquidityGross": "5751910975682424"
+    },
+    {
+      "index": 206290,
+      "liquidityNet": "-50501250685294087",
+      "liquidityGross": "59138806508715147"
+    },
+    {
+      "index": 206300,
+      "liquidityNet": "-10837566255075",
+      "liquidityGross": "10837566255075"
+    },
+    {
+      "index": 206310,
+      "liquidityNet": "-1571547840004406",
+      "liquidityGross": "1571547840004406"
+    },
+    {
+      "index": 206320,
+      "liquidityNet": "-4132589508320855",
+      "liquidityGross": "4132589508320855"
+    },
+    {
+      "index": 206370,
+      "liquidityNet": "122973486683145",
+      "liquidityGross": "122973486683145"
+    },
+    {
+      "index": 206380,
+      "liquidityNet": "-128273656740017",
+      "liquidityGross": "128273656740017"
+    },
+    {
+      "index": 206410,
+      "liquidityNet": "5517325292675",
+      "liquidityGross": "5517325292675"
+    },
+    {
+      "index": 206420,
+      "liquidityNet": "-11049102235124771",
+      "liquidityGross": "11049102235124771"
+    },
+    {
+      "index": 206450,
+      "liquidityNet": "-5517325292675",
+      "liquidityGross": "5517325292675"
+    },
+    {
+      "index": 206460,
+      "liquidityNet": "-201125924508196",
+      "liquidityGross": "201125924508196"
+    },
+    {
+      "index": 206480,
+      "liquidityNet": "-99690498623159",
+      "liquidityGross": "99690498623159"
+    },
+    {
+      "index": 206530,
+      "liquidityNet": "-46445625148087",
+      "liquidityGross": "46445625148087"
+    },
+    {
+      "index": 206560,
+      "liquidityNet": "-10456351239484",
+      "liquidityGross": "10456351239484"
+    },
+    {
+      "index": 206570,
+      "liquidityNet": "-760688819106815",
+      "liquidityGross": "760688819106815"
+    },
+    {
+      "index": 206610,
+      "liquidityNet": "2527659888995960",
+      "liquidityGross": "2527659888995960"
+    },
+    {
+      "index": 206670,
+      "liquidityNet": "-33658255133282",
+      "liquidityGross": "33658255133282"
+    },
+    {
+      "index": 206690,
+      "liquidityNet": "39249186082639",
+      "liquidityGross": "39249186082639"
+    },
+    {
+      "index": 206710,
+      "liquidityNet": "-220240747841422",
+      "liquidityGross": "220240747841422"
+    },
+    {
+      "index": 206730,
+      "liquidityNet": "-10562824529975",
+      "liquidityGross": "10562824529975"
+    },
+    {
+      "index": 206750,
+      "liquidityNet": "-483459293186418329",
+      "liquidityGross": "483459293186418329"
+    },
+    {
+      "index": 206760,
+      "liquidityNet": "-8873442704364704",
+      "liquidityGross": "8873442704364704"
+    },
+    {
+      "index": 206770,
+      "liquidityNet": "-141594186912153",
+      "liquidityGross": "141594186912153"
+    },
+    {
+      "index": 206830,
+      "liquidityNet": "-694708090551947",
+      "liquidityGross": "694708090551947"
+    },
+    {
+      "index": 206880,
+      "liquidityNet": "-30998942803604",
+      "liquidityGross": "30998942803604"
+    },
+    {
+      "index": 206910,
+      "liquidityNet": "-598059825857067",
+      "liquidityGross": "598059825857067"
+    },
+    {
+      "index": 206940,
+      "liquidityNet": "-17096653242566701",
+      "liquidityGross": "17096653242566701"
+    },
+    {
+      "index": 206950,
+      "liquidityNet": "-2527659888995960",
+      "liquidityGross": "2527659888995960"
+    },
+    {
+      "index": 207010,
+      "liquidityNet": "-558175980798664",
+      "liquidityGross": "558175980798664"
+    },
+    {
+      "index": 207040,
+      "liquidityNet": "-18395399899085",
+      "liquidityGross": "18395399899085"
+    },
+    {
+      "index": 207060,
+      "liquidityNet": "-18271369512818720",
+      "liquidityGross": "18271369512818720"
+    },
+    {
+      "index": 207090,
+      "liquidityNet": "-21599131813462",
+      "liquidityGross": "21599131813462"
+    },
+    {
+      "index": 207150,
+      "liquidityNet": "-1142187257652872",
+      "liquidityGross": "1142187257652872"
+    },
+    {
+      "index": 207210,
+      "liquidityNet": "369149760427048",
+      "liquidityGross": "369149760427048"
+    },
+    {
+      "index": 207240,
+      "liquidityNet": "-215751777120631230",
+      "liquidityGross": "215751777120631230"
+    },
+    {
+      "index": 207250,
+      "liquidityNet": "-52413300934563898",
+      "liquidityGross": "52413300934563898"
+    },
+    {
+      "index": 207290,
+      "liquidityNet": "-2783161847380816",
+      "liquidityGross": "2783161847380816"
+    },
+    {
+      "index": 207300,
+      "liquidityNet": "-915169295699311",
+      "liquidityGross": "915169295699311"
+    },
+    {
+      "index": 207330,
+      "liquidityNet": "-1457334165987",
+      "liquidityGross": "1457334165987"
+    },
+    {
+      "index": 207340,
+      "liquidityNet": "-6272943264431859",
+      "liquidityGross": "6272943264431859"
+    },
+    {
+      "index": 207350,
+      "liquidityNet": "-16773063288308",
+      "liquidityGross": "16773063288308"
+    },
+    {
+      "index": 207380,
+      "liquidityNet": "-702264205372362",
+      "liquidityGross": "702264205372362"
+    },
+    {
+      "index": 207390,
+      "liquidityNet": "-766305413629205",
+      "liquidityGross": "766305413629205"
+    },
+    {
+      "index": 207420,
+      "liquidityNet": "-7824325986414",
+      "liquidityGross": "7824325986414"
+    },
+    {
+      "index": 207450,
+      "liquidityNet": "-1840302449900792",
+      "liquidityGross": "1840302449900792"
+    },
+    {
+      "index": 207470,
+      "liquidityNet": "-63651252682101",
+      "liquidityGross": "63651252682101"
+    },
+    {
+      "index": 207500,
+      "liquidityNet": "-48416121667083",
+      "liquidityGross": "48416121667083"
+    },
+    {
+      "index": 207670,
+      "liquidityNet": "-17618420282610",
+      "liquidityGross": "17618420282610"
+    },
+    {
+      "index": 207760,
+      "liquidityNet": "-1078804458086029",
+      "liquidityGross": "1078804458086029"
+    },
+    {
+      "index": 207780,
+      "liquidityNet": "-33955042064486354",
+      "liquidityGross": "33955042064486354"
+    },
+    {
+      "index": 207860,
+      "liquidityNet": "-4448634799655273",
+      "liquidityGross": "4448634799655273"
+    },
+    {
+      "index": 207900,
+      "liquidityNet": "-33663120308853",
+      "liquidityGross": "33663120308853"
+    },
+    {
+      "index": 207910,
+      "liquidityNet": "-8",
+      "liquidityGross": "8"
+    },
+    {
+      "index": 207960,
+      "liquidityNet": "-441023100358142",
+      "liquidityGross": "441023100358142"
+    },
+    {
+      "index": 207970,
+      "liquidityNet": "-94485541321849",
+      "liquidityGross": "94485541321849"
+    },
+    {
+      "index": 208000,
+      "liquidityNet": "-331682908570970",
+      "liquidityGross": "331682908570970"
+    },
+    {
+      "index": 208010,
+      "liquidityNet": "-2073248747064156",
+      "liquidityGross": "2073248747064156"
+    },
+    {
+      "index": 208030,
+      "liquidityNet": "-288042863394000",
+      "liquidityGross": "288042863394000"
+    },
+    {
+      "index": 208060,
+      "liquidityNet": "-4864474765144478",
+      "liquidityGross": "4864474765144478"
+    },
+    {
+      "index": 208190,
+      "liquidityNet": "-1493123283396",
+      "liquidityGross": "1493123283396"
+    },
+    {
+      "index": 208220,
+      "liquidityNet": "-377900920245434",
+      "liquidityGross": "377900920245434"
+    },
+    {
+      "index": 208290,
+      "liquidityNet": "-20810025052312863",
+      "liquidityGross": "20810025052312863"
+    },
+    {
+      "index": 208300,
+      "liquidityNet": "-25409671890749458",
+      "liquidityGross": "25409671890749458"
+    },
+    {
+      "index": 208370,
+      "liquidityNet": "-120640333909134",
+      "liquidityGross": "120640333909134"
+    },
+    {
+      "index": 208430,
+      "liquidityNet": "-15816971942115",
+      "liquidityGross": "15816971942115"
+    },
+    {
+      "index": 208520,
+      "liquidityNet": "-14200570625857586",
+      "liquidityGross": "14200570625857586"
+    },
+    {
+      "index": 208570,
+      "liquidityNet": "-3141856666550976",
+      "liquidityGross": "3141856666550976"
+    },
+    {
+      "index": 208590,
+      "liquidityNet": "-43967184588022",
+      "liquidityGross": "43967184588022"
+    },
+    {
+      "index": 208650,
+      "liquidityNet": "-1238910149582598",
+      "liquidityGross": "1238910149582598"
+    },
+    {
+      "index": 208760,
+      "liquidityNet": "-1759243635560",
+      "liquidityGross": "1759243635560"
+    },
+    {
+      "index": 208830,
+      "liquidityNet": "-706725267863471",
+      "liquidityGross": "706725267863471"
+    },
+    {
+      "index": 208860,
+      "liquidityNet": "-94869802148839",
+      "liquidityGross": "94869802148839"
+    },
+    {
+      "index": 208870,
+      "liquidityNet": "-4010234152988707",
+      "liquidityGross": "4010234152988707"
+    },
+    {
+      "index": 208930,
+      "liquidityNet": "-394603099286572",
+      "liquidityGross": "394603099286572"
+    },
+    {
+      "index": 208940,
+      "liquidityNet": "-120503006880265",
+      "liquidityGross": "120503006880265"
+    },
+    {
+      "index": 208980,
+      "liquidityNet": "-13150608300038773",
+      "liquidityGross": "13150608300038773"
+    },
+    {
+      "index": 208990,
+      "liquidityNet": "-304641516522664",
+      "liquidityGross": "304641516522664"
+    },
+    {
+      "index": 209090,
+      "liquidityNet": "-250370179754575",
+      "liquidityGross": "250370179754575"
+    },
+    {
+      "index": 209120,
+      "liquidityNet": "-14039449939",
+      "liquidityGross": "14039449939"
+    },
+    {
+      "index": 209140,
+      "liquidityNet": "-34367459497789",
+      "liquidityGross": "34367459497789"
+    },
+    {
+      "index": 209200,
+      "liquidityNet": "-24840936900047495",
+      "liquidityGross": "24840936900047495"
+    },
+    {
+      "index": 209270,
+      "liquidityNet": "-35392087769334",
+      "liquidityGross": "35392087769334"
+    },
+    {
+      "index": 209320,
+      "liquidityNet": "-75751395251488",
+      "liquidityGross": "75751395251488"
+    },
+    {
+      "index": 209350,
+      "liquidityNet": "-482949918683832",
+      "liquidityGross": "482949918683832"
+    },
+    {
+      "index": 209400,
+      "liquidityNet": "-24235738425984",
+      "liquidityGross": "24235738425984"
+    },
+    {
+      "index": 209460,
+      "liquidityNet": "-90619867897623278",
+      "liquidityGross": "90619867897623278"
+    },
+    {
+      "index": 209470,
+      "liquidityNet": "-433445481122238279",
+      "liquidityGross": "433445481122238279"
+    },
+    {
+      "index": 209480,
+      "liquidityNet": "-221942155460408",
+      "liquidityGross": "221942155460408"
+    },
+    {
+      "index": 209500,
+      "liquidityNet": "-1628328088740271",
+      "liquidityGross": "1628328088740271"
+    },
+    {
+      "index": 209540,
+      "liquidityNet": "-458070806587746",
+      "liquidityGross": "458070806587746"
+    },
+    {
+      "index": 209650,
+      "liquidityNet": "-382668060908266",
+      "liquidityGross": "382668060908266"
+    },
+    {
+      "index": 209720,
+      "liquidityNet": "-2112575031004604",
+      "liquidityGross": "2112575031004604"
+    },
+    {
+      "index": 209730,
+      "liquidityNet": "-1311433111652150",
+      "liquidityGross": "1311433111652150"
+    },
+    {
+      "index": 209820,
+      "liquidityNet": "-5290420273494589",
+      "liquidityGross": "5290420273494589"
+    },
+    {
+      "index": 209860,
+      "liquidityNet": "-349507721410030",
+      "liquidityGross": "349507721410030"
+    },
+    {
+      "index": 209900,
+      "liquidityNet": "-191701986657523",
+      "liquidityGross": "191701986657523"
+    },
+    {
+      "index": 210120,
+      "liquidityNet": "-13443165164246818",
+      "liquidityGross": "13443165164246818"
+    },
+    {
+      "index": 210380,
+      "liquidityNet": "-228699723058089",
+      "liquidityGross": "228699723058089"
+    },
+    {
+      "index": 210530,
+      "liquidityNet": "-129827948505068",
+      "liquidityGross": "129827948505068"
+    },
+    {
+      "index": 210560,
+      "liquidityNet": "-460703960771530",
+      "liquidityGross": "460703960771530"
+    },
+    {
+      "index": 210780,
+      "liquidityNet": "-111371497598617",
+      "liquidityGross": "111371497598617"
+    },
+    {
+      "index": 210810,
+      "liquidityNet": "-13363292876297819",
+      "liquidityGross": "13494494298280475"
+    },
+    {
+      "index": 210820,
+      "liquidityNet": "-7952536320912254",
+      "liquidityGross": "7952536320912254"
+    },
+    {
+      "index": 210830,
+      "liquidityNet": "-13348687223838",
+      "liquidityGross": "13348687223838"
+    },
+    {
+      "index": 211310,
+      "liquidityNet": "-2649113876628352",
+      "liquidityGross": "2649113876628352"
+    },
+    {
+      "index": 211320,
+      "liquidityNet": "-532218566682991",
+      "liquidityGross": "532218566682991"
+    },
+    {
+      "index": 211400,
+      "liquidityNet": "-1639404066381375",
+      "liquidityGross": "1639404066381375"
+    },
+    {
+      "index": 211440,
+      "liquidityNet": "-2659554920775",
+      "liquidityGross": "2659554920775"
+    },
+    {
+      "index": 211550,
+      "liquidityNet": "-1366052033351",
+      "liquidityGross": "1367464418001"
+    },
+    {
+      "index": 211560,
+      "liquidityNet": "-706192325",
+      "liquidityGross": "706192325"
+    },
+    {
+      "index": 211860,
+      "liquidityNet": "-4650970484447871",
+      "liquidityGross": "4650970484447871"
+    },
+    {
+      "index": 212020,
+      "liquidityNet": "-687370872372034",
+      "liquidityGross": "687370872372034"
+    },
+    {
+      "index": 212080,
+      "liquidityNet": "-4860235671811",
+      "liquidityGross": "4860235671811"
+    },
+    {
+      "index": 212160,
+      "liquidityNet": "-4554637977519",
+      "liquidityGross": "4554637977519"
+    },
+    {
+      "index": 212350,
+      "liquidityNet": "-371820381035680863",
+      "liquidityGross": "371820381035680863"
+    },
+    {
+      "index": 212510,
+      "liquidityNet": "-187004715148085",
+      "liquidityGross": "187004715148085"
+    },
+    {
+      "index": 212600,
+      "liquidityNet": "-13452407513465956",
+      "liquidityGross": "13452407513465956"
+    },
+    {
+      "index": 212830,
+      "liquidityNet": "-7361966495185",
+      "liquidityGross": "7361966495185"
+    },
+    {
+      "index": 213690,
+      "liquidityNet": "-971125615989006",
+      "liquidityGross": "971125615989006"
+    },
+    {
+      "index": 213920,
+      "liquidityNet": "-468965813987698",
+      "liquidityGross": "468965813987698"
+    },
+    {
+      "index": 214170,
+      "liquidityNet": "-9512207854279111",
+      "liquidityGross": "9512207854279111"
+    },
+    {
+      "index": 214200,
+      "liquidityNet": "-369149760427048",
+      "liquidityGross": "369149760427048"
+    },
+    {
+      "index": 214210,
+      "liquidityNet": "-419968624358816",
+      "liquidityGross": "419968624358816"
+    },
+    {
+      "index": 214480,
+      "liquidityNet": "-286162066019032",
+      "liquidityGross": "286162066019032"
+    },
+    {
+      "index": 214930,
+      "liquidityNet": "-458239910053180",
+      "liquidityGross": "458239910053180"
+    },
+    {
+      "index": 215680,
+      "liquidityNet": "-1675802191493858",
+      "liquidityGross": "1675802191493858"
+    },
+    {
+      "index": 216410,
+      "liquidityNet": "-8984147390834767",
+      "liquidityGross": "8984147390834767"
+    },
+    {
+      "index": 216830,
+      "liquidityNet": "-40617221865583",
+      "liquidityGross": "40617221865583"
+    },
+    {
+      "index": 218240,
+      "liquidityNet": "-661293721197889",
+      "liquidityGross": "661293721197889"
+    },
+    {
+      "index": 219270,
+      "liquidityNet": "-86488473467059",
+      "liquidityGross": "86488473467059"
+    },
+    {
+      "index": 219280,
+      "liquidityNet": "-5673322713141237",
+      "liquidityGross": "5673322713141237"
+    },
+    {
+      "index": 219510,
+      "liquidityNet": "-269054369894937",
+      "liquidityGross": "269054369894937"
+    },
+    {
+      "index": 219600,
+      "liquidityNet": "-224082011199",
+      "liquidityGross": "224082011199"
+    },
+    {
+      "index": 220710,
+      "liquidityNet": "-710205531707728",
+      "liquidityGross": "710205531707728"
+    },
+    {
+      "index": 221390,
+      "liquidityNet": "-938972280513385",
+      "liquidityGross": "938972280513385"
+    },
+    {
+      "index": 221990,
+      "liquidityNet": "-1131670065466301",
+      "liquidityGross": "1131670065466301"
+    },
+    {
+      "index": 222430,
+      "liquidityNet": "-63150",
+      "liquidityGross": "63150"
+    },
+    {
+      "index": 223040,
+      "liquidityNet": "-2978621036090",
+      "liquidityGross": "2978621036090"
+    },
+    {
+      "index": 223300,
+      "liquidityNet": "-3619481095470562",
+      "liquidityGross": "3619481095470562"
+    },
+    {
+      "index": 223330,
+      "liquidityNet": "-2399901926881892",
+      "liquidityGross": "2399901926881892"
+    },
+    {
+      "index": 223340,
+      "liquidityNet": "-18396900994865185",
+      "liquidityGross": "18396900994865185"
+    },
+    {
+      "index": 223800,
+      "liquidityNet": "-2479296715876650",
+      "liquidityGross": "2479296715876650"
+    },
+    {
+      "index": 225630,
+      "liquidityNet": "-35531670596",
+      "liquidityGross": "35531670596"
+    },
+    {
+      "index": 225700,
+      "liquidityNet": "-34337229047",
+      "liquidityGross": "34337229047"
+    },
+    {
+      "index": 230270,
+      "liquidityNet": "-574355480",
+      "liquidityGross": "574355480"
+    },
+    {
+      "index": 238030,
+      "liquidityNet": "1356881278244106196",
+      "liquidityGross": "1356881278244106196"
+    },
+    {
+      "index": 238040,
+      "liquidityNet": "-1356881278244106196",
+      "liquidityGross": "1356881278244106196"
+    },
+    {
+      "index": 248140,
+      "liquidityNet": "-27166257770789",
+      "liquidityGross": "27166257770789"
+    },
+    {
+      "index": 249240,
+      "liquidityNet": "-407275582840",
+      "liquidityGross": "407275582840"
+    },
+    {
+      "index": 269390,
+      "liquidityNet": "-24250664520",
+      "liquidityGross": "24250664520"
+    },
+    {
+      "index": 276300,
+      "liquidityNet": "2998029234933125",
+      "liquidityGross": "2998064053514881"
+    },
+    {
+      "index": 276320,
+      "liquidityNet": "-2998046136457217",
+      "liquidityGross": "2998048170679513"
+    },
+    {
+      "index": 292530,
+      "liquidityNet": "-2266789968",
+      "liquidityGross": "2266789968"
+    },
+    {
+      "index": 292560,
+      "liquidityNet": "-2273693713",
+      "liquidityGross": "2273693713"
+    },
+    {
+      "index": 292600,
+      "liquidityNet": "-44739669244",
+      "liquidityGross": "44739669244"
+    },
+    {
+      "index": 310340,
+      "liquidityNet": "-28436567813",
+      "liquidityGross": "28436567813"
+    },
+    {
+      "index": 315450,
+      "liquidityNet": "9660803619765056",
+      "liquidityGross": "9660803619765056"
+    },
+    {
+      "index": 318320,
+      "liquidityNet": "1760538380457838",
+      "liquidityGross": "1760538380457838"
+    },
+    {
+      "index": 322380,
+      "liquidityNet": "-9710148800262585",
+      "liquidityGross": "9710148800262585"
+    },
+    {
+      "index": 343580,
+      "liquidityNet": "209568465799064",
+      "liquidityGross": "209568465799064"
+    },
+    {
+      "index": 344450,
+      "liquidityNet": "3216578076775223",
+      "liquidityGross": "3216578076775223"
+    },
+    {
+      "index": 345410,
+      "liquidityNet": "-5186684923032125",
+      "liquidityGross": "5186684923032125"
+    },
+    {
+      "index": 349460,
+      "liquidityNet": "144400874551320",
+      "liquidityGross": "144400874551320"
+    },
+    {
+      "index": 351240,
+      "liquidityNet": "127004648638536",
+      "liquidityGross": "127004648638536"
+    },
+    {
+      "index": 352340,
+      "liquidityNet": "-144400874551320",
+      "liquidityGross": "144400874551320"
+    },
+    {
+      "index": 354570,
+      "liquidityNet": "47845114297170429",
+      "liquidityGross": "47845114297170429"
+    },
+    {
+      "index": 357790,
+      "liquidityNet": "-1017111148",
+      "liquidityGross": "1017111148"
+    },
+    {
+      "index": 358040,
+      "liquidityNet": "297698757815726047",
+      "liquidityGross": "297698757815726047"
+    },
+    {
+      "index": 358080,
+      "liquidityNet": "-297698757815726047",
+      "liquidityGross": "297698757815726047"
+    },
+    {
+      "index": 359260,
+      "liquidityNet": "-47845114297170429",
+      "liquidityGross": "47845114297170429"
+    },
+    {
+      "index": 391460,
+      "liquidityNet": "11099171960",
+      "liquidityGross": "11099171960"
+    },
+    {
+      "index": 414490,
+      "liquidityNet": "-361670769950375",
+      "liquidityGross": "361670769950375"
+    },
+    {
+      "index": 437510,
+      "liquidityNet": "-6147159285635",
+      "liquidityGross": "6147159285635"
+    },
+    {
+      "index": 759890,
+      "liquidityNet": "-398290794261",
+      "liquidityGross": "398290794261"
+    },
+    {
+      "index": 887270,
+      "liquidityNet": "-2633350168448325",
+      "liquidityGross": "2633350168448325"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "84338747597534",
+      "exactInput": true,
+      "expectedAmountCalculated": "41451395278165398869473"
+    },
+    {
+      "amountSpecified": "20961157117574",
+      "exactInput": true,
+      "expectedAmountCalculated": "10791514623494969728666"
+    },
+    {
+      "amountSpecified": "6823947068688",
+      "exactInput": true,
+      "expectedAmountCalculated": "3540657881043348839174"
+    },
+    {
+      "amountSpecified": "40174234812512",
+      "exactInput": true,
+      "expectedAmountCalculated": "20453537539579980985463"
+    },
+    {
+      "amountSpecified": "23909060772913",
+      "exactInput": true,
+      "expectedAmountCalculated": "12289121923624933840577"
+    },
+    {
+      "amountSpecified": "103801468980837",
+      "exactInput": true,
+      "expectedAmountCalculated": "49765663064510632716728"
+    },
+    {
+      "amountSpecified": "112388318029411",
+      "exactInput": true,
+      "expectedAmountCalculated": "53110647806016370317973"
+    },
+    {
+      "amountSpecified": "2514476885471",
+      "exactInput": true,
+      "expectedAmountCalculated": "1307841403786436621655"
+    },
+    {
+      "amountSpecified": "6115339846779",
+      "exactInput": true,
+      "expectedAmountCalculated": "3174227641015594732729"
+    },
+    {
+      "amountSpecified": "15041788003",
+      "exactInput": true,
+      "expectedAmountCalculated": "7834321001897749255"
+    },
+    {
+      "amountSpecified": "116583730666032",
+      "exactInput": true,
+      "expectedAmountCalculated": "54657745379113551394814"
+    },
+    {
+      "amountSpecified": "122647073399400",
+      "exactInput": true,
+      "expectedAmountCalculated": "56780827766371495710220"
+    },
+    {
+      "amountSpecified": "115796399493805",
+      "exactInput": true,
+      "expectedAmountCalculated": "54371714981179331212441"
+    },
+    {
+      "amountSpecified": "72833016073441",
+      "exactInput": true,
+      "expectedAmountCalculated": "36175788344738907195602"
+    },
+    {
+      "amountSpecified": "83906409385855",
+      "exactInput": true,
+      "expectedAmountCalculated": "41256713256248951288324"
+    },
+    {
+      "amountSpecified": "119018481772153",
+      "exactInput": true,
+      "expectedAmountCalculated": "55528412981021516972872"
+    },
+    {
+      "amountSpecified": "102484789752801",
+      "exactInput": true,
+      "expectedAmountCalculated": "49231987812399138507559"
+    },
+    {
+      "amountSpecified": "89975307231645",
+      "exactInput": true,
+      "expectedAmountCalculated": "43950850369522917568032"
+    },
+    {
+      "amountSpecified": "99488624545012",
+      "exactInput": true,
+      "expectedAmountCalculated": "48000165310430252911155"
+    },
+    {
+      "amountSpecified": "55419617943212",
+      "exactInput": true,
+      "expectedAmountCalculated": "27915673217243288997852"
+    },
+    {
+      "amountSpecified": "63709377647920",
+      "exactInput": true,
+      "expectedAmountCalculated": "31883360408887197853425"
+    },
+    {
+      "amountSpecified": "91533297347187",
+      "exactInput": true,
+      "expectedAmountCalculated": "44628557066304277952958"
+    },
+    {
+      "amountSpecified": "62981439908978",
+      "exactInput": true,
+      "expectedAmountCalculated": "31537405494488043553405"
+    },
+    {
+      "amountSpecified": "36781133846003",
+      "exactInput": true,
+      "expectedAmountCalculated": "18765472168155371846698"
+    },
+    {
+      "amountSpecified": "113973810052537",
+      "exactInput": true,
+      "expectedAmountCalculated": "53702000362923694306757"
+    },
+    {
+      "amountSpecified": "35563742383448",
+      "exactInput": true,
+      "expectedAmountCalculated": "18157801465986068113370"
+    },
+    {
+      "amountSpecified": "21256002931516",
+      "exactInput": true,
+      "expectedAmountCalculated": "10941526454692969882340"
+    },
+    {
+      "amountSpecified": "50555854204101",
+      "exactInput": true,
+      "expectedAmountCalculated": "25558248565399900916837"
+    },
+    {
+      "amountSpecified": "61131777974278",
+      "exactInput": true,
+      "expectedAmountCalculated": "30656281844737061097409"
+    },
+    {
+      "amountSpecified": "70844358187387",
+      "exactInput": true,
+      "expectedAmountCalculated": "35247794193794630806256"
+    },
+    {
+      "amountSpecified": "34161045659136",
+      "exactInput": true,
+      "expectedAmountCalculated": "17456352194088159429815"
+    },
+    {
+      "amountSpecified": "41496145225387",
+      "exactInput": true,
+      "expectedAmountCalculated": "21108733211652046483290"
+    },
+    {
+      "amountSpecified": "90825871145496",
+      "exactInput": true,
+      "expectedAmountCalculated": "44321546311597922751821"
+    },
+    {
+      "amountSpecified": "113010930012199",
+      "exactInput": true,
+      "expectedAmountCalculated": "53343848095198193206770"
+    },
+    {
+      "amountSpecified": "33591877369733",
+      "exactInput": true,
+      "expectedAmountCalculated": "17171344309491225239646"
+    },
+    {
+      "amountSpecified": "49098958324633",
+      "exactInput": true,
+      "expectedAmountCalculated": "24847793205536895650779"
+    },
+    {
+      "amountSpecified": "63062894438270",
+      "exactInput": true,
+      "expectedAmountCalculated": "31576139958112332821298"
+    },
+    {
+      "amountSpecified": "64970990248366",
+      "exactInput": true,
+      "expectedAmountCalculated": "32481809851371126451972"
+    },
+    {
+      "amountSpecified": "21615506725910",
+      "exactInput": true,
+      "expectedAmountCalculated": "11124367955156713593482"
+    },
+    {
+      "amountSpecified": "53952823662654",
+      "exactInput": true,
+      "expectedAmountCalculated": "27207056423545573767032"
+    },
+    {
+      "amountSpecified": "114514614932123",
+      "exactInput": true,
+      "expectedAmountCalculated": "53901834334390931113260"
+    },
+    {
+      "amountSpecified": "88806749611672",
+      "exactInput": true,
+      "expectedAmountCalculated": "43438765632044851234993"
+    },
+    {
+      "amountSpecified": "96611709433658",
+      "exactInput": true,
+      "expectedAmountCalculated": "46797903146769085603083"
+    },
+    {
+      "amountSpecified": "110835146114280",
+      "exactInput": true,
+      "expectedAmountCalculated": "52523317473594761534129"
+    },
+    {
+      "amountSpecified": "95375939850715",
+      "exactInput": true,
+      "expectedAmountCalculated": "46275587678079786101728"
+    },
+    {
+      "amountSpecified": "43013171906105",
+      "exactInput": true,
+      "expectedAmountCalculated": "21858830488181790086626"
+    },
+    {
+      "amountSpecified": "43660951996753",
+      "exactInput": true,
+      "expectedAmountCalculated": "22178537247255251529502"
+    },
+    {
+      "amountSpecified": "115095604857257",
+      "exactInput": true,
+      "expectedAmountCalculated": "54115467080370776012087"
+    },
+    {
+      "amountSpecified": "68330612100204",
+      "exactInput": true,
+      "expectedAmountCalculated": "34068188695204773014014"
+    },
+    {
+      "amountSpecified": "26791460677209",
+      "exactInput": true,
+      "expectedAmountCalculated": "13748667785618450501839"
+    },
+    {
+      "amountSpecified": "26145038227099635873208",
+      "exactInput": false,
+      "expectedAmountCalculated": "51762242865985"
+    },
+    {
+      "amountSpecified": "26334522228711114829350",
+      "exactInput": false,
+      "expectedAmountCalculated": "52152406033581"
+    },
+    {
+      "amountSpecified": "58882717987766561518264",
+      "exactInput": false,
+      "expectedAmountCalculated": "129144932517545"
+    },
+    {
+      "amountSpecified": "57593129750579790790088",
+      "exactInput": false,
+      "expectedAmountCalculated": "125087415925347"
+    },
+    {
+      "amountSpecified": "52543936874104380066984",
+      "exactInput": false,
+      "expectedAmountCalculated": "110889315320095"
+    },
+    {
+      "amountSpecified": "46933887153207455764414",
+      "exactInput": false,
+      "expectedAmountCalculated": "96934829564686"
+    },
+    {
+      "amountSpecified": "54669796999825677736336",
+      "exactInput": false,
+      "expectedAmountCalculated": "116617023029091"
+    },
+    {
+      "amountSpecified": "19000239724498634462236",
+      "exactInput": false,
+      "expectedAmountCalculated": "37252026427824"
+    },
+    {
+      "amountSpecified": "23209281473819433955184",
+      "exactInput": false,
+      "expectedAmountCalculated": "45754347721290"
+    },
+    {
+      "amountSpecified": "46806332514009864347192",
+      "exactInput": false,
+      "expectedAmountCalculated": "96631722234694"
+    },
+    {
+      "amountSpecified": "11375029656101598315724",
+      "exactInput": false,
+      "expectedAmountCalculated": "22108594418856"
+    },
+    {
+      "amountSpecified": "51624665352126222704625",
+      "exactInput": false,
+      "expectedAmountCalculated": "108498382295051"
+    },
+    {
+      "amountSpecified": "58502128172775323593834",
+      "exactInput": false,
+      "expectedAmountCalculated": "127919078454269"
+    },
+    {
+      "amountSpecified": "52499633701587623101570",
+      "exactInput": false,
+      "expectedAmountCalculated": "110772958356864"
+    },
+    {
+      "amountSpecified": "5366598389441149769196",
+      "exactInput": false,
+      "expectedAmountCalculated": "10363186838474"
+    },
+    {
+      "amountSpecified": "7930050958664473934698",
+      "exactInput": false,
+      "expectedAmountCalculated": "15355539770446"
+    },
+    {
+      "amountSpecified": "1645445011411805700675",
+      "exactInput": false,
+      "expectedAmountCalculated": "3164778569615"
+    },
+    {
+      "amountSpecified": "60905378172976917747556",
+      "exactInput": false,
+      "expectedAmountCalculated": "137082484597330"
+    },
+    {
+      "amountSpecified": "32767678781292839036734",
+      "exactInput": false,
+      "expectedAmountCalculated": "65574752173529"
+    },
+    {
+      "amountSpecified": "20963782472743115219352",
+      "exactInput": false,
+      "expectedAmountCalculated": "41203440855561"
+    },
+    {
+      "amountSpecified": "33304392200988068801674",
+      "exactInput": false,
+      "expectedAmountCalculated": "66710258304575"
+    },
+    {
+      "amountSpecified": "22138771990650002315700",
+      "exactInput": false,
+      "expectedAmountCalculated": "43580341587828"
+    },
+    {
+      "amountSpecified": "33463229714146050642866",
+      "exactInput": false,
+      "expectedAmountCalculated": "67046795684483"
+    },
+    {
+      "amountSpecified": "16011022494980237622478",
+      "exactInput": false,
+      "expectedAmountCalculated": "31279242067078"
+    },
+    {
+      "amountSpecified": "54235837674157397140232",
+      "exactInput": false,
+      "expectedAmountCalculated": "115424264931010"
+    },
+    {
+      "amountSpecified": "15283580771233974988448",
+      "exactInput": false,
+      "expectedAmountCalculated": "29833202857735"
+    },
+    {
+      "amountSpecified": "8149362006682309523536",
+      "exactInput": false,
+      "expectedAmountCalculated": "15783933366502"
+    },
+    {
+      "amountSpecified": "23825551794074116953608",
+      "exactInput": false,
+      "expectedAmountCalculated": "47009799061559"
+    },
+    {
+      "amountSpecified": "57658775260626696025064",
+      "exactInput": false,
+      "expectedAmountCalculated": "125288155723214"
+    },
+    {
+      "amountSpecified": "38389549797083092152804",
+      "exactInput": false,
+      "expectedAmountCalculated": "77617739963632"
+    },
+    {
+      "amountSpecified": "34281060742584645653814",
+      "exactInput": false,
+      "expectedAmountCalculated": "68783137626963"
+    },
+    {
+      "amountSpecified": "47880929727081162825594",
+      "exactInput": false,
+      "expectedAmountCalculated": "99201254054245"
+    },
+    {
+      "amountSpecified": "42681290041226857373612",
+      "exactInput": false,
+      "expectedAmountCalculated": "87091552717378"
+    },
+    {
+      "amountSpecified": "12558632743711904781992",
+      "exactInput": false,
+      "expectedAmountCalculated": "24440605091793"
+    },
+    {
+      "amountSpecified": "6497501342139749473084",
+      "exactInput": false,
+      "expectedAmountCalculated": "12562239402721"
+    },
+    {
+      "amountSpecified": "18788453668242710450004",
+      "exactInput": false,
+      "expectedAmountCalculated": "36827215790125"
+    },
+    {
+      "amountSpecified": "4555588377801263104044",
+      "exactInput": false,
+      "expectedAmountCalculated": "8789477949786"
+    },
+    {
+      "amountSpecified": "38996775827344357215150",
+      "exactInput": false,
+      "expectedAmountCalculated": "78940356781371"
+    },
+    {
+      "amountSpecified": "45263454013887925528886",
+      "exactInput": false,
+      "expectedAmountCalculated": "93004996790171"
+    },
+    {
+      "amountSpecified": "39187498493075978223814",
+      "exactInput": false,
+      "expectedAmountCalculated": "79356688682740"
+    },
+    {
+      "amountSpecified": "12889764051594364903008",
+      "exactInput": false,
+      "expectedAmountCalculated": "25094115103747"
+    },
+    {
+      "amountSpecified": "19862446853534374360060",
+      "exactInput": false,
+      "expectedAmountCalculated": "38984159726784"
+    },
+    {
+      "amountSpecified": "11687862693469935028042",
+      "exactInput": false,
+      "expectedAmountCalculated": "22724365015390"
+    },
+    {
+      "amountSpecified": "7859842170260924992690",
+      "exactInput": false,
+      "expectedAmountCalculated": "15218439742690"
+    },
+    {
+      "amountSpecified": "4968207561740104831944",
+      "exactInput": false,
+      "expectedAmountCalculated": "9589788742683"
+    },
+    {
+      "amountSpecified": "48684582756774526654086",
+      "exactInput": false,
+      "expectedAmountCalculated": "101147049938956"
+    },
+    {
+      "amountSpecified": "13580100862838623403328",
+      "exactInput": false,
+      "expectedAmountCalculated": "26458086261198"
+    },
+    {
+      "amountSpecified": "1232254264570926104625",
+      "exactInput": false,
+      "expectedAmountCalculated": "2368948066310"
+    },
+    {
+      "amountSpecified": "21494169318026786531284",
+      "exactInput": false,
+      "expectedAmountCalculated": "42275178576619"
+    },
+    {
+      "amountSpecified": "15423098374282377100128",
+      "exactInput": false,
+      "expectedAmountCalculated": "30110310154567"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x94E4b2E24523CF9B3e631A6943C346dF9687c723-reversed.json b/src/__tests__/stubs/swap/0x94E4b2E24523CF9B3e631A6943C346dF9687c723-reversed.json
new file mode 100644
index 00000000..b2579706
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x94E4b2E24523CF9B3e631A6943C346dF9687c723-reversed.json
@@ -0,0 +1,576 @@
+{
+  "poolName": "SHIB - WETH 500 - reversed",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE",
+    "decimals": 18
+  },
+  "fee": 500,
+  "liquidity": "32391504326547460469621",
+  "sqrtRatioX96": "4978602236714915775648950",
+  "tickCurrent": -193509,
+  "ticks": [
+    {
+      "index": -286230,
+      "liquidityNet": "16577780792160432511",
+      "liquidityGross": "16577780792160432511"
+    },
+    {
+      "index": -233120,
+      "liquidityNet": "975770712391583144379",
+      "liquidityGross": "975770712391583144379"
+    },
+    {
+      "index": -207240,
+      "liquidityNet": "6601393608435415407533",
+      "liquidityGross": "6601393608435415407533"
+    },
+    {
+      "index": -200310,
+      "liquidityNet": "22788814099344550056038",
+      "liquidityGross": "22788814099344550056038"
+    },
+    {
+      "index": -198080,
+      "liquidityNet": "2008948125583751429160",
+      "liquidityGross": "2008948125583751429160"
+    },
+    {
+      "index": -191150,
+      "liquidityNet": "-24797762224928301485198",
+      "liquidityGross": "24797762224928301485198"
+    },
+    {
+      "index": -189360,
+      "liquidityNet": "261273839969392937085901",
+      "liquidityGross": "261273839969392937085901"
+    },
+    {
+      "index": -189340,
+      "liquidityNet": "-261273839969392937085901",
+      "liquidityGross": "261273839969392937085901"
+    },
+    {
+      "index": -102020,
+      "liquidityNet": "-16577780792160432511",
+      "liquidityGross": "16577780792160432511"
+    },
+    {
+      "index": 0,
+      "liquidityNet": "-6601393608435415407533",
+      "liquidityGross": "6601393608435415407533"
+    },
+    {
+      "index": 887270,
+      "liquidityNet": "-975770712391583144379",
+      "liquidityGross": "975770712391583144379"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "189054662919594836",
+      "exactInput": true,
+      "expectedAmountCalculated": "43788487820246073385669208"
+    },
+    {
+      "amountSpecified": "40020463961001504",
+      "exactInput": true,
+      "expectedAmountCalculated": "9934757375727881369265152"
+    },
+    {
+      "amountSpecified": "310783046331377193",
+      "exactInput": true,
+      "expectedAmountCalculated": "67470761782042205196394265"
+    },
+    {
+      "amountSpecified": "535011494644200558",
+      "exactInput": true,
+      "expectedAmountCalculated": "95735926873751083232020784"
+    },
+    {
+      "amountSpecified": "505082267281343076",
+      "exactInput": true,
+      "expectedAmountCalculated": "92912201210086606637399674"
+    },
+    {
+      "amountSpecified": "398980556067510412",
+      "exactInput": true,
+      "expectedAmountCalculated": "80841968038800631804660228"
+    },
+    {
+      "amountSpecified": "316885785942661518",
+      "exactInput": true,
+      "expectedAmountCalculated": "68490137618427552488409383"
+    },
+    {
+      "amountSpecified": "320616331174493074",
+      "exactInput": true,
+      "expectedAmountCalculated": "69112977757755683651917938"
+    },
+    {
+      "amountSpecified": "164733397177190448",
+      "exactInput": true,
+      "expectedAmountCalculated": "38576823551936474071142789"
+    },
+    {
+      "amountSpecified": "93886392449221344",
+      "exactInput": true,
+      "expectedAmountCalculated": "22717232841659838115455934"
+    },
+    {
+      "amountSpecified": "186679100158933016",
+      "exactInput": true,
+      "expectedAmountCalculated": "43284467166183810594362411"
+    },
+    {
+      "amountSpecified": "186237640182843207",
+      "exactInput": true,
+      "expectedAmountCalculated": "43190684358272585611395470"
+    },
+    {
+      "amountSpecified": "630812642961676904",
+      "exactInput": true,
+      "expectedAmountCalculated": "103501726219030480867369392"
+    },
+    {
+      "amountSpecified": "338726616774121343",
+      "exactInput": true,
+      "expectedAmountCalculated": "72089504116508847013556348"
+    },
+    {
+      "amountSpecified": "10235310466862326",
+      "exactInput": true,
+      "expectedAmountCalculated": "2577809487941801487882588"
+    },
+    {
+      "amountSpecified": "339045981177457333",
+      "exactInput": true,
+      "expectedAmountCalculated": "72140520157705031684352621"
+    },
+    {
+      "amountSpecified": "699309254403364376",
+      "exactInput": true,
+      "expectedAmountCalculated": "108105288174038998466641665"
+    },
+    {
+      "amountSpecified": "524004281345637910",
+      "exactInput": true,
+      "expectedAmountCalculated": "94722429612991411249255473"
+    },
+    {
+      "amountSpecified": "19766996722830901",
+      "exactInput": true,
+      "expectedAmountCalculated": "4955330511560673348711924"
+    },
+    {
+      "amountSpecified": "343405555030067894",
+      "exactInput": true,
+      "expectedAmountCalculated": "72831547511730349163160353"
+    },
+    {
+      "amountSpecified": "630098467784919432",
+      "exactInput": true,
+      "expectedAmountCalculated": "103450004020436281945936457"
+    },
+    {
+      "amountSpecified": "320688892615067674",
+      "exactInput": true,
+      "expectedAmountCalculated": "69125090175028487539632486"
+    },
+    {
+      "amountSpecified": "627610181857131875",
+      "exactInput": true,
+      "expectedAmountCalculated": "103269148009979159289449344"
+    },
+    {
+      "amountSpecified": "366955616920801708",
+      "exactInput": true,
+      "expectedAmountCalculated": "76398798789971495037831632"
+    },
+    {
+      "amountSpecified": "603459742400122634",
+      "exactInput": true,
+      "expectedAmountCalculated": "101459799041824306993194381"
+    },
+    {
+      "amountSpecified": "637240207529740052",
+      "exactInput": true,
+      "expectedAmountCalculated": "103963528509577360739267319"
+    },
+    {
+      "amountSpecified": "549742667579600156",
+      "exactInput": true,
+      "expectedAmountCalculated": "97049307379129476837070108"
+    },
+    {
+      "amountSpecified": "69928886371732233",
+      "exactInput": true,
+      "expectedAmountCalculated": "17112799302831321314015408"
+    },
+    {
+      "amountSpecified": "7199635750823206",
+      "exactInput": true,
+      "expectedAmountCalculated": "1815954441738407368112515"
+    },
+    {
+      "amountSpecified": "245568601850762526",
+      "exactInput": true,
+      "expectedAmountCalculated": "55469566877949533744867314"
+    },
+    {
+      "amountSpecified": "150940548671102153",
+      "exactInput": true,
+      "expectedAmountCalculated": "35569733991395934171153045"
+    },
+    {
+      "amountSpecified": "583723088885095734",
+      "exactInput": true,
+      "expectedAmountCalculated": "99904405829268804799322265"
+    },
+    {
+      "amountSpecified": "626666098432253478",
+      "exactInput": true,
+      "expectedAmountCalculated": "103200264216625350246585544"
+    },
+    {
+      "amountSpecified": "520390153042937622",
+      "exactInput": true,
+      "expectedAmountCalculated": "94383437887155692452249076"
+    },
+    {
+      "amountSpecified": "87413481725848335",
+      "exactInput": true,
+      "expectedAmountCalculated": "21215475900284455764171319"
+    },
+    {
+      "amountSpecified": "533740595807628952",
+      "exactInput": true,
+      "expectedAmountCalculated": "95620339563915171583266912"
+    },
+    {
+      "amountSpecified": "316657191232429950",
+      "exactInput": true,
+      "expectedAmountCalculated": "68451964901527701466208389"
+    },
+    {
+      "amountSpecified": "304965490846317556",
+      "exactInput": true,
+      "expectedAmountCalculated": "66498455281482275293498882"
+    },
+    {
+      "amountSpecified": "406830537282442278",
+      "exactInput": true,
+      "expectedAmountCalculated": "81866158201886961886076232"
+    },
+    {
+      "amountSpecified": "530279094084084076",
+      "exactInput": true,
+      "expectedAmountCalculated": "95303638271669993042491095"
+    },
+    {
+      "amountSpecified": "36086374924348493",
+      "exactInput": true,
+      "expectedAmountCalculated": "8975155776922952143854761"
+    },
+    {
+      "amountSpecified": "676751946371404330",
+      "exactInput": true,
+      "expectedAmountCalculated": "106663426163672390107265245"
+    },
+    {
+      "amountSpecified": "568535565157363328",
+      "exactInput": true,
+      "expectedAmountCalculated": "98657193264411541246519250"
+    },
+    {
+      "amountSpecified": "4750029472497587",
+      "exactInput": true,
+      "expectedAmountCalculated": "1199531346795848257708539"
+    },
+    {
+      "amountSpecified": "584164773573585392",
+      "exactInput": true,
+      "expectedAmountCalculated": "99940007466805439735882317"
+    },
+    {
+      "amountSpecified": "378707815338996145",
+      "exactInput": true,
+      "expectedAmountCalculated": "78080893856413298763436424"
+    },
+    {
+      "amountSpecified": "183779091476540254",
+      "exactInput": true,
+      "expectedAmountCalculated": "42667713361172944855060946"
+    },
+    {
+      "amountSpecified": "109266316843944811",
+      "exactInput": true,
+      "expectedAmountCalculated": "26249134062538559351492451"
+    },
+    {
+      "amountSpecified": "63512734618197360",
+      "exactInput": true,
+      "expectedAmountCalculated": "15590145018615905029814083"
+    },
+    {
+      "amountSpecified": "212814183933987824",
+      "exactInput": true,
+      "expectedAmountCalculated": "48770946978637351002533643"
+    },
+    {
+      "amountSpecified": "144081384176994623520737824",
+      "exactInput": false,
+      "expectedAmountCalculated": "2138383556580298390"
+    },
+    {
+      "amountSpecified": "70605655297819948726285904",
+      "exactInput": false,
+      "expectedAmountCalculated": "329583821586335161"
+    },
+    {
+      "amountSpecified": "4695252920933611332535528",
+      "exactInput": false,
+      "expectedAmountCalculated": "18720000836262248"
+    },
+    {
+      "amountSpecified": "171794503588048507284452128",
+      "exactInput": false,
+      "expectedAmountCalculated": "18006319471283562009927577464183520364466"
+    },
+    {
+      "amountSpecified": "66560167812812654057437728",
+      "exactInput": false,
+      "expectedAmountCalculated": "305334581411879686"
+    },
+    {
+      "amountSpecified": "74992435369053772138194992",
+      "exactInput": false,
+      "expectedAmountCalculated": "357455731006815219"
+    },
+    {
+      "amountSpecified": "39438504293754487622741587",
+      "exactInput": false,
+      "expectedAmountCalculated": "168717855548566641"
+    },
+    {
+      "amountSpecified": "98138783155760725628936992",
+      "exactInput": false,
+      "expectedAmountCalculated": "562382075887773821"
+    },
+    {
+      "amountSpecified": "26842045811003228836339463",
+      "exactInput": false,
+      "expectedAmountCalculated": "111869990035091863"
+    },
+    {
+      "amountSpecified": "22771584805851482234254032",
+      "exactInput": false,
+      "expectedAmountCalculated": "94121401560881030"
+    },
+    {
+      "amountSpecified": "164579257168538760460375125",
+      "exactInput": false,
+      "expectedAmountCalculated": "16051738317770151261"
+    },
+    {
+      "amountSpecified": "142236603501424163020213021",
+      "exactInput": false,
+      "expectedAmountCalculated": "1967267438454888812"
+    },
+    {
+      "amountSpecified": "128992503795785616492524608",
+      "exactInput": false,
+      "expectedAmountCalculated": "1212581212453518033"
+    },
+    {
+      "amountSpecified": "36188209146452628950890292",
+      "exactInput": false,
+      "expectedAmountCalculated": "153763218231134300"
+    },
+    {
+      "amountSpecified": "48911763197986964371328264",
+      "exactInput": false,
+      "expectedAmountCalculated": "213493058609859569"
+    },
+    {
+      "amountSpecified": "35266314873604260003009356",
+      "exactInput": false,
+      "expectedAmountCalculated": "149558427359970451"
+    },
+    {
+      "amountSpecified": "41670478491922989385789505",
+      "exactInput": false,
+      "expectedAmountCalculated": "179106014072026084"
+    },
+    {
+      "amountSpecified": "74513565181199892041767836",
+      "exactInput": false,
+      "expectedAmountCalculated": "354286147103256976"
+    },
+    {
+      "amountSpecified": "32368954437803054132876173",
+      "exactInput": false,
+      "expectedAmountCalculated": "136447942299205732"
+    },
+    {
+      "amountSpecified": "12070084653029119509382097",
+      "exactInput": false,
+      "expectedAmountCalculated": "48828509699714946"
+    },
+    {
+      "amountSpecified": "91275321825783288147264528",
+      "exactInput": false,
+      "expectedAmountCalculated": "488739807466272812"
+    },
+    {
+      "amountSpecified": "53850584499596677382537265",
+      "exactInput": false,
+      "expectedAmountCalculated": "237565109636280279"
+    },
+    {
+      "amountSpecified": "135154906561010418126700240",
+      "exactInput": false,
+      "expectedAmountCalculated": "1488286886584683538"
+    },
+    {
+      "amountSpecified": "114479720844565849107531017",
+      "exactInput": false,
+      "expectedAmountCalculated": "813567301967054265"
+    },
+    {
+      "amountSpecified": "147892656923946444402752400",
+      "exactInput": false,
+      "expectedAmountCalculated": "2590779356206241643"
+    },
+    {
+      "amountSpecified": "43504320107051128536417032",
+      "exactInput": false,
+      "expectedAmountCalculated": "187714692642126041"
+    },
+    {
+      "amountSpecified": "158419583189671744901827968",
+      "exactInput": false,
+      "expectedAmountCalculated": "5688074792606681861"
+    },
+    {
+      "amountSpecified": "121504081109647227086333360",
+      "exactInput": false,
+      "expectedAmountCalculated": "975667799759223838"
+    },
+    {
+      "amountSpecified": "110658597713128975972713184",
+      "exactInput": false,
+      "expectedAmountCalculated": "742032206102019952"
+    },
+    {
+      "amountSpecified": "160022508380926917038251264",
+      "exactInput": false,
+      "expectedAmountCalculated": "6866546862078094591"
+    },
+    {
+      "amountSpecified": "60008961878390900558385808",
+      "exactInput": false,
+      "expectedAmountCalculated": "268575566529756335"
+    },
+    {
+      "amountSpecified": "156306688765483019940407088",
+      "exactInput": false,
+      "expectedAmountCalculated": "4623463634481646879"
+    },
+    {
+      "amountSpecified": "31374404606093027208269964",
+      "exactInput": false,
+      "expectedAmountCalculated": "131983809154810164"
+    },
+    {
+      "amountSpecified": "24506214830490641899194387",
+      "exactInput": false,
+      "expectedAmountCalculated": "101648991107641538"
+    },
+    {
+      "amountSpecified": "164329602614365116896225024",
+      "exactInput": false,
+      "expectedAmountCalculated": "14976022770464526739"
+    },
+    {
+      "amountSpecified": "82942823540937164591973506",
+      "exactInput": false,
+      "expectedAmountCalculated": "415286264726469595"
+    },
+    {
+      "amountSpecified": "73143673848029362158811184",
+      "exactInput": false,
+      "expectedAmountCalculated": "345395506308757919"
+    },
+    {
+      "amountSpecified": "87148063189773376134744294",
+      "exactInput": false,
+      "expectedAmountCalculated": "450467113224808897"
+    },
+    {
+      "amountSpecified": "87183743608682959574045888",
+      "exactInput": false,
+      "expectedAmountCalculated": "450781255775255082"
+    },
+    {
+      "amountSpecified": "34753302089712064950629456",
+      "exactInput": false,
+      "expectedAmountCalculated": "147225543103035897"
+    },
+    {
+      "amountSpecified": "147605488536341035530050992",
+      "exactInput": false,
+      "expectedAmountCalculated": "2550835809331230636"
+    },
+    {
+      "amountSpecified": "110735028086510343368207552",
+      "exactInput": false,
+      "expectedAmountCalculated": "743369678179220558"
+    },
+    {
+      "amountSpecified": "16338431834964152534934224",
+      "exactInput": false,
+      "expectedAmountCalculated": "66660969390959792"
+    },
+    {
+      "amountSpecified": "79755800736979468025156176",
+      "exactInput": false,
+      "expectedAmountCalculated": "390854378040161748"
+    },
+    {
+      "amountSpecified": "61296480416107068469697303",
+      "exactInput": false,
+      "expectedAmountCalculated": "275432270958618036"
+    },
+    {
+      "amountSpecified": "132182162172654931736726736",
+      "exactInput": false,
+      "expectedAmountCalculated": "1343480575386098011"
+    },
+    {
+      "amountSpecified": "96939403997477388854900192",
+      "exactInput": false,
+      "expectedAmountCalculated": "548489123395713937"
+    },
+    {
+      "amountSpecified": "118516071925821298929285296",
+      "exactInput": false,
+      "expectedAmountCalculated": "901102415949731121"
+    },
+    {
+      "amountSpecified": "19258697404980083928638418",
+      "exactInput": false,
+      "expectedAmountCalculated": "79038110711557229"
+    },
+    {
+      "amountSpecified": "27980456593582087675060937",
+      "exactInput": false,
+      "expectedAmountCalculated": "116886885869968403"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x94E4b2E24523CF9B3e631A6943C346dF9687c723.json b/src/__tests__/stubs/swap/0x94E4b2E24523CF9B3e631A6943C346dF9687c723.json
new file mode 100644
index 00000000..c3eda754
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x94E4b2E24523CF9B3e631A6943C346dF9687c723.json
@@ -0,0 +1,576 @@
+{
+  "poolName": "SHIB - WETH 500",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "fee": 500,
+  "liquidity": "32391504326547460469621",
+  "sqrtRatioX96": "4978602236714915775648950",
+  "tickCurrent": -193509,
+  "ticks": [
+    {
+      "index": -286230,
+      "liquidityNet": "16577780792160432511",
+      "liquidityGross": "16577780792160432511"
+    },
+    {
+      "index": -233120,
+      "liquidityNet": "975770712391583144379",
+      "liquidityGross": "975770712391583144379"
+    },
+    {
+      "index": -207240,
+      "liquidityNet": "6601393608435415407533",
+      "liquidityGross": "6601393608435415407533"
+    },
+    {
+      "index": -200310,
+      "liquidityNet": "22788814099344550056038",
+      "liquidityGross": "22788814099344550056038"
+    },
+    {
+      "index": -198080,
+      "liquidityNet": "2008948125583751429160",
+      "liquidityGross": "2008948125583751429160"
+    },
+    {
+      "index": -191150,
+      "liquidityNet": "-24797762224928301485198",
+      "liquidityGross": "24797762224928301485198"
+    },
+    {
+      "index": -189360,
+      "liquidityNet": "261273839969392937085901",
+      "liquidityGross": "261273839969392937085901"
+    },
+    {
+      "index": -189340,
+      "liquidityNet": "-261273839969392937085901",
+      "liquidityGross": "261273839969392937085901"
+    },
+    {
+      "index": -102020,
+      "liquidityNet": "-16577780792160432511",
+      "liquidityGross": "16577780792160432511"
+    },
+    {
+      "index": 0,
+      "liquidityNet": "-6601393608435415407533",
+      "liquidityGross": "6601393608435415407533"
+    },
+    {
+      "index": 887270,
+      "liquidityNet": "-975770712391583144379",
+      "liquidityGross": "975770712391583144379"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "117350431656501874192202144",
+      "exactInput": true,
+      "expectedAmountCalculated": "377299588209436553"
+    },
+    {
+      "amountSpecified": "36794539395776636242588422",
+      "exactInput": true,
+      "expectedAmountCalculated": "135547826251688006"
+    },
+    {
+      "amountSpecified": "53637373686389011642777328",
+      "exactInput": true,
+      "expectedAmountCalculated": "191750114653803747"
+    },
+    {
+      "amountSpecified": "129320455737730973103636784",
+      "exactInput": true,
+      "expectedAmountCalculated": "408069410447948511"
+    },
+    {
+      "amountSpecified": "89168342530649932950145616",
+      "exactInput": true,
+      "expectedAmountCalculated": "300046732740058163"
+    },
+    {
+      "amountSpecified": "122612845947615405498088512",
+      "exactInput": true,
+      "expectedAmountCalculated": "390969153565286859"
+    },
+    {
+      "amountSpecified": "132750622708852577411248048",
+      "exactInput": true,
+      "expectedAmountCalculated": "416677480938519174"
+    },
+    {
+      "amountSpecified": "148795497537203002468326336",
+      "exactInput": true,
+      "expectedAmountCalculated": "455697724390294046"
+    },
+    {
+      "amountSpecified": "147606069381713152150207728",
+      "exactInput": true,
+      "expectedAmountCalculated": "452874061068105656"
+    },
+    {
+      "amountSpecified": "53582813394780046661730556",
+      "exactInput": true,
+      "expectedAmountCalculated": "191573422987656737"
+    },
+    {
+      "amountSpecified": "166728085268246872342449056",
+      "exactInput": true,
+      "expectedAmountCalculated": "497001611985998664"
+    },
+    {
+      "amountSpecified": "175591859944278821801039744",
+      "exactInput": true,
+      "expectedAmountCalculated": "516577226800803923"
+    },
+    {
+      "amountSpecified": "107735804184027825778499536",
+      "exactInput": true,
+      "expectedAmountCalculated": "351728834678519919"
+    },
+    {
+      "amountSpecified": "51630488384678626709665217",
+      "exactInput": true,
+      "expectedAmountCalculated": "185228519847336025"
+    },
+    {
+      "amountSpecified": "21340479446373968418071326",
+      "exactInput": true,
+      "expectedAmountCalculated": "80878613969202705"
+    },
+    {
+      "amountSpecified": "67983767112448642326894176",
+      "exactInput": true,
+      "expectedAmountCalculated": "237064187529208104"
+    },
+    {
+      "amountSpecified": "120070703376352223060683376",
+      "exactInput": true,
+      "expectedAmountCalculated": "384393976497450678"
+    },
+    {
+      "amountSpecified": "29995828787974520729377596",
+      "exactInput": true,
+      "expectedAmountCalculated": "111878629354779498"
+    },
+    {
+      "amountSpecified": "148179435729677587976390859",
+      "exactInput": true,
+      "expectedAmountCalculated": "454236558388242569"
+    },
+    {
+      "amountSpecified": "3669081205020770706022336",
+      "exactInput": true,
+      "expectedAmountCalculated": "14378613797988019"
+    },
+    {
+      "amountSpecified": "134965323722947721995066336",
+      "exactInput": true,
+      "expectedAmountCalculated": "422185526299807575"
+    },
+    {
+      "amountSpecified": "15532331073853075255692586",
+      "exactInput": true,
+      "expectedAmountCalculated": "59509793751076873"
+    },
+    {
+      "amountSpecified": "48158559486411181559561017",
+      "exactInput": true,
+      "expectedAmountCalculated": "173836482677814075"
+    },
+    {
+      "amountSpecified": "127434353679887573735657248",
+      "exactInput": true,
+      "expectedAmountCalculated": "403297063040988044"
+    },
+    {
+      "amountSpecified": "100623227177996370557009349",
+      "exactInput": true,
+      "expectedAmountCalculated": "332299080595067582"
+    },
+    {
+      "amountSpecified": "96157946481061620546813264",
+      "exactInput": true,
+      "expectedAmountCalculated": "319870261767086731"
+    },
+    {
+      "amountSpecified": "6084641585666770102294700",
+      "exactInput": true,
+      "expectedAmountCalculated": "23734473590548376"
+    },
+    {
+      "amountSpecified": "51471641790265678923487493",
+      "exactInput": true,
+      "expectedAmountCalculated": "184710359383548670"
+    },
+    {
+      "amountSpecified": "95953522206784405316034864",
+      "exactInput": true,
+      "expectedAmountCalculated": "319296916195510888"
+    },
+    {
+      "amountSpecified": "46928230223168905044278314",
+      "exactInput": true,
+      "expectedAmountCalculated": "169765808418883632"
+    },
+    {
+      "amountSpecified": "162206738002352002368247616",
+      "exactInput": true,
+      "expectedAmountCalculated": "486806654086133806"
+    },
+    {
+      "amountSpecified": "70074948376717999333028992",
+      "exactInput": true,
+      "expectedAmountCalculated": "243483988055566863"
+    },
+    {
+      "amountSpecified": "99670747157275841643100384",
+      "exactInput": true,
+      "expectedAmountCalculated": "329663047629788117"
+    },
+    {
+      "amountSpecified": "70144575558086623631739390",
+      "exactInput": true,
+      "expectedAmountCalculated": "243696950953345599"
+    },
+    {
+      "amountSpecified": "41602771931112892352051156",
+      "exactInput": true,
+      "expectedAmountCalculated": "151938708113883316"
+    },
+    {
+      "amountSpecified": "11535300137775193174610252",
+      "exactInput": true,
+      "expectedAmountCalculated": "44530805581651019"
+    },
+    {
+      "amountSpecified": "50231418586875041962361227",
+      "exactInput": true,
+      "expectedAmountCalculated": "180654727930974003"
+    },
+    {
+      "amountSpecified": "98265665779725369612347920",
+      "exactInput": true,
+      "expectedAmountCalculated": "325759488024078554"
+    },
+    {
+      "amountSpecified": "172670563581074325897651856",
+      "exactInput": true,
+      "expectedAmountCalculated": "510184701069745186"
+    },
+    {
+      "amountSpecified": "102035808040168472802375552",
+      "exactInput": true,
+      "expectedAmountCalculated": "336193497359991557"
+    },
+    {
+      "amountSpecified": "81914308257519454786445024",
+      "exactInput": true,
+      "expectedAmountCalculated": "278982911762538620"
+    },
+    {
+      "amountSpecified": "85730704797625106851807760",
+      "exactInput": true,
+      "expectedAmountCalculated": "290128068753012216"
+    },
+    {
+      "amountSpecified": "39891178362697652332170425",
+      "exactInput": true,
+      "expectedAmountCalculated": "146136540465463306"
+    },
+    {
+      "amountSpecified": "57530898888095196279762992",
+      "exactInput": true,
+      "expectedAmountCalculated": "204272325136913144"
+    },
+    {
+      "amountSpecified": "6078798146492302811528336",
+      "exactInput": true,
+      "expectedAmountCalculated": "23711945514393241"
+    },
+    {
+      "amountSpecified": "69515933248968118677591154",
+      "exactInput": true,
+      "expectedAmountCalculated": "241772338140351912"
+    },
+    {
+      "amountSpecified": "42335472532141170393642144",
+      "exactInput": true,
+      "expectedAmountCalculated": "154411626621539525"
+    },
+    {
+      "amountSpecified": "99457798582259531364510528",
+      "exactInput": true,
+      "expectedAmountCalculated": "329072586021986223"
+    },
+    {
+      "amountSpecified": "171889155522293485435608080",
+      "exactInput": true,
+      "expectedAmountCalculated": "508465005820484539"
+    },
+    {
+      "amountSpecified": "145794506702276669578973136",
+      "exactInput": true,
+      "expectedAmountCalculated": "448552698973660036"
+    },
+    {
+      "amountSpecified": "365420879995407666",
+      "exactInput": false,
+      "expectedAmountCalculated": "112847407341361223724414710"
+    },
+    {
+      "amountSpecified": "316285468321073424",
+      "exactInput": false,
+      "expectedAmountCalculated": "94882040367125781643928601"
+    },
+    {
+      "amountSpecified": "706082698897491826",
+      "exactInput": false,
+      "expectedAmountCalculated": "382890537843740233739716216"
+    },
+    {
+      "amountSpecified": "200667359402801911",
+      "exactInput": false,
+      "expectedAmountCalculated": "56404560863932141879862195"
+    },
+    {
+      "amountSpecified": "92808890899142581",
+      "exactInput": false,
+      "expectedAmountCalculated": "24638770154064681263989767"
+    },
+    {
+      "amountSpecified": "336901140972141248",
+      "exactInput": false,
+      "expectedAmountCalculated": "102293179613115497824772742"
+    },
+    {
+      "amountSpecified": "366663325983845370",
+      "exactInput": false,
+      "expectedAmountCalculated": "113315396383392480491171198"
+    },
+    {
+      "amountSpecified": "468117107096679050",
+      "exactInput": false,
+      "expectedAmountCalculated": "154081349358005961255919536"
+    },
+    {
+      "amountSpecified": "623135779956238118",
+      "exactInput": false,
+      "expectedAmountCalculated": "231409777571550236824253129"
+    },
+    {
+      "amountSpecified": "430851449118517928",
+      "exactInput": false,
+      "expectedAmountCalculated": "138482593851704619704836675"
+    },
+    {
+      "amountSpecified": "291153110084621628",
+      "exactInput": false,
+      "expectedAmountCalculated": "86084155055249589934948089"
+    },
+    {
+      "amountSpecified": "9939849414955509",
+      "exactInput": false,
+      "expectedAmountCalculated": "2530855421268274396538564"
+    },
+    {
+      "amountSpecified": "536641305636854210",
+      "exactInput": false,
+      "expectedAmountCalculated": "184934343807845995865344224"
+    },
+    {
+      "amountSpecified": "287024959792594174",
+      "exactInput": false,
+      "expectedAmountCalculated": "84663230725295318709358578"
+    },
+    {
+      "amountSpecified": "325012840779529808",
+      "exactInput": false,
+      "expectedAmountCalculated": "97997641714727331274374195"
+    },
+    {
+      "amountSpecified": "400527314484740976",
+      "exactInput": false,
+      "expectedAmountCalculated": "126344757966985464486869506"
+    },
+    {
+      "amountSpecified": "245022362829082754",
+      "exactInput": false,
+      "expectedAmountCalculated": "70578284844379656668637107"
+    },
+    {
+      "amountSpecified": "95334073652228385",
+      "exactInput": false,
+      "expectedAmountCalculated": "25342093588501617033139420"
+    },
+    {
+      "amountSpecified": "603992112495893635",
+      "exactInput": false,
+      "expectedAmountCalculated": "219305812597241757587908145"
+    },
+    {
+      "amountSpecified": "695679665393226400",
+      "exactInput": false,
+      "expectedAmountCalculated": "330103333337388350147140324"
+    },
+    {
+      "amountSpecified": "169430391461762516",
+      "exactInput": false,
+      "expectedAmountCalculated": "46827092462287848194315597"
+    },
+    {
+      "amountSpecified": "720515231032444426",
+      "exactInput": false,
+      "expectedAmountCalculated": "382890537843740233739716216"
+    },
+    {
+      "amountSpecified": "458619679802252372",
+      "exactInput": false,
+      "expectedAmountCalculated": "150031119872096402171587921"
+    },
+    {
+      "amountSpecified": "512638552627085250",
+      "exactInput": false,
+      "expectedAmountCalculated": "173788834783430092238407479"
+    },
+    {
+      "amountSpecified": "215580110640466006",
+      "exactInput": false,
+      "expectedAmountCalculated": "61092862372703603379801826"
+    },
+    {
+      "amountSpecified": "578059589985058506",
+      "exactInput": false,
+      "expectedAmountCalculated": "205097850344439027916362012"
+    },
+    {
+      "amountSpecified": "464422662536489794",
+      "exactInput": false,
+      "expectedAmountCalculated": "152499616309419510284518760"
+    },
+    {
+      "amountSpecified": "244236147228803414",
+      "exactInput": false,
+      "expectedAmountCalculated": "70320937178353880017087735"
+    },
+    {
+      "amountSpecified": "117316819635759245",
+      "exactInput": false,
+      "expectedAmountCalculated": "31543041051742423875144471"
+    },
+    {
+      "amountSpecified": "496509951405576208",
+      "exactInput": false,
+      "expectedAmountCalculated": "166508568596926115003068315"
+    },
+    {
+      "amountSpecified": "240523324631898497",
+      "exactInput": false,
+      "expectedAmountCalculated": "69108685392859673376981933"
+    },
+    {
+      "amountSpecified": "734047114584648110",
+      "exactInput": false,
+      "expectedAmountCalculated": "382890537843740233739716216"
+    },
+    {
+      "amountSpecified": "394099441648151302",
+      "exactInput": false,
+      "expectedAmountCalculated": "123830256977102030671257792"
+    },
+    {
+      "amountSpecified": "505266377670126942",
+      "exactInput": false,
+      "expectedAmountCalculated": "170440738613836871423845206"
+    },
+    {
+      "amountSpecified": "505934906261262092",
+      "exactInput": false,
+      "expectedAmountCalculated": "170742928714692386612976844"
+    },
+    {
+      "amountSpecified": "554930257679618958",
+      "exactInput": false,
+      "expectedAmountCalculated": "193686934813706975742005394"
+    },
+    {
+      "amountSpecified": "121424196392847305",
+      "exactInput": false,
+      "expectedAmountCalculated": "32717453281222586999548991"
+    },
+    {
+      "amountSpecified": "21835031603379347",
+      "exactInput": false,
+      "expectedAmountCalculated": "5592414559995562606999828"
+    },
+    {
+      "amountSpecified": "396392952218872056",
+      "exactInput": false,
+      "expectedAmountCalculated": "124725185657311033945662526"
+    },
+    {
+      "amountSpecified": "456690069954687178",
+      "exactInput": false,
+      "expectedAmountCalculated": "149214588070372665383256238"
+    },
+    {
+      "amountSpecified": "513775706809963896",
+      "exactInput": false,
+      "expectedAmountCalculated": "174308369001290961243997455"
+    },
+    {
+      "amountSpecified": "10867521365258033",
+      "exactInput": false,
+      "expectedAmountCalculated": "2768324424217237242723651"
+    },
+    {
+      "amountSpecified": "591222129398354822",
+      "exactInput": false,
+      "expectedAmountCalculated": "212025634172112274729372467"
+    },
+    {
+      "amountSpecified": "310104624885031636",
+      "exactInput": false,
+      "expectedAmountCalculated": "92694595182144590386343283"
+    },
+    {
+      "amountSpecified": "266220116584667310",
+      "exactInput": false,
+      "expectedAmountCalculated": "77603046823889699774332449"
+    },
+    {
+      "amountSpecified": "516758032649071564",
+      "exactInput": false,
+      "expectedAmountCalculated": "175674868689298965770445024"
+    },
+    {
+      "amountSpecified": "734481937826377456",
+      "exactInput": false,
+      "expectedAmountCalculated": "382890537843740233739716216"
+    },
+    {
+      "amountSpecified": "283643165373389304",
+      "exactInput": false,
+      "expectedAmountCalculated": "83504194963434296074411707"
+    },
+    {
+      "amountSpecified": "329003723925267898",
+      "exactInput": false,
+      "expectedAmountCalculated": "99432973226377543662239589"
+    },
+    {
+      "amountSpecified": "289048950348645902",
+      "exactInput": false,
+      "expectedAmountCalculated": "85359056245368372822842037"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x97e7d56A0408570bA1a7852De36350f7713906ec-reversed.json b/src/__tests__/stubs/swap/0x97e7d56A0408570bA1a7852De36350f7713906ec-reversed.json
new file mode 100644
index 00000000..74f3e493
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x97e7d56A0408570bA1a7852De36350f7713906ec-reversed.json
@@ -0,0 +1,581 @@
+{
+  "poolName": "DAI - FRAX 500 - reversed",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0x853d955aCEf822Db058eb8505911ED77F175b99e",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
+    "decimals": 18
+  },
+  "fee": 500,
+  "liquidity": "3907950011669101730849306463",
+  "sqrtRatioX96": "79250355604504340626979173308",
+  "tickCurrent": 5,
+  "ticks": [
+    {
+      "index": -887270,
+      "liquidityNet": "195965479893812429046081",
+      "liquidityGross": "195965479893812429046081"
+    },
+    {
+      "index": -80,
+      "liquidityNet": "2553788884381704257911",
+      "liquidityGross": "2553788884381704257911"
+    },
+    {
+      "index": -50,
+      "liquidityNet": "3907397232478574333540242550",
+      "liquidityGross": "3907397232478574333540242550"
+    },
+    {
+      "index": -20,
+      "liquidityNet": "81726355507026415174",
+      "liquidityGross": "81726355507026415174"
+    },
+    {
+      "index": -10,
+      "liquidityNet": "112130682668486108766786",
+      "liquidityGross": "112130682668486108766786"
+    },
+    {
+      "index": 0,
+      "liquidityNet": "242047512725210040577961",
+      "liquidityGross": "242047512725210040577961"
+    },
+    {
+      "index": 10,
+      "liquidityNet": "-112130682668486108766786",
+      "liquidityGross": "112130682668486108766786"
+    },
+    {
+      "index": 20,
+      "liquidityNet": "-242129239080717066993135",
+      "liquidityGross": "242129239080717066993135"
+    },
+    {
+      "index": 50,
+      "liquidityNet": "-3907350715518819612887193347",
+      "liquidityGross": "3907350715518819612887193347"
+    },
+    {
+      "index": 60,
+      "liquidityNet": "-46516959754720653049203",
+      "liquidityGross": "46516959754720653049203"
+    },
+    {
+      "index": 70,
+      "liquidityNet": "-2553788884381704257911",
+      "liquidityGross": "2553788884381704257911"
+    },
+    {
+      "index": 887270,
+      "liquidityNet": "-195965479893812429046081",
+      "liquidityGross": "195965479893812429046081"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "9373881426684490770919044",
+      "exactInput": true,
+      "expectedAmountCalculated": "8814052975595564833072817"
+    },
+    {
+      "amountSpecified": "6719737223456315386927425",
+      "exactInput": true,
+      "expectedAmountCalculated": "6701102123481184917133734"
+    },
+    {
+      "amountSpecified": "6079889269202649438963783",
+      "exactInput": true,
+      "expectedAmountCalculated": "6064019050427254501139863"
+    },
+    {
+      "amountSpecified": "1293164467971528939495114",
+      "exactInput": true,
+      "expectedAmountCalculated": "1291367090186195070258681"
+    },
+    {
+      "amountSpecified": "10147537205042655615057231",
+      "exactInput": true,
+      "expectedAmountCalculated": "8834489371392875367830090"
+    },
+    {
+      "amountSpecified": "6014083533893629006111485",
+      "exactInput": true,
+      "expectedAmountCalculated": "5998485866993765038191281"
+    },
+    {
+      "amountSpecified": "4833375459980173390715145",
+      "exactInput": true,
+      "expectedAmountCalculated": "4822293680214449450060990"
+    },
+    {
+      "amountSpecified": "3694808758992315743909235",
+      "exactInput": true,
+      "expectedAmountCalculated": "3687409658307351501846755"
+    },
+    {
+      "amountSpecified": "302942457243402335515761",
+      "exactInput": true,
+      "expectedAmountCalculated": "302597984994958072436654"
+    },
+    {
+      "amountSpecified": "3560790334968712762557744",
+      "exactInput": true,
+      "expectedAmountCalculated": "3553781284039017169120284"
+    },
+    {
+      "amountSpecified": "4741583096698238189928159",
+      "exactInput": true,
+      "expectedAmountCalculated": "4730822679338468300144904"
+    },
+    {
+      "amountSpecified": "6978058991236510422099255",
+      "exactInput": true,
+      "expectedAmountCalculated": "6958248675315844176136582"
+    },
+    {
+      "amountSpecified": "3061118453194490425434012",
+      "exactInput": true,
+      "expectedAmountCalculated": "3055482987531087657474080"
+    },
+    {
+      "amountSpecified": "2750839761335814463106103",
+      "exactInput": true,
+      "expectedAmountCalculated": "2745993202508873764873077"
+    },
+    {
+      "amountSpecified": "5628515693807215957421961",
+      "exactInput": true,
+      "expectedAmountCalculated": "5614470703297855407338553"
+    },
+    {
+      "amountSpecified": "2062565739424057085214501",
+      "exactInput": true,
+      "expectedAmountCalculated": "2059293971527129455607974"
+    },
+    {
+      "amountSpecified": "4347714259503056987288994",
+      "exactInput": true,
+      "expectedAmountCalculated": "4338284076532459985673344"
+    },
+    {
+      "amountSpecified": "5422736762260106604530205",
+      "exactInput": true,
+      "expectedAmountCalculated": "5409489492117440536227248"
+    },
+    {
+      "amountSpecified": "6664513677531595691089896",
+      "exactInput": true,
+      "expectedAmountCalculated": "6646125412992950020740315"
+    },
+    {
+      "amountSpecified": "6471418853947592819575044",
+      "exactInput": true,
+      "expectedAmountCalculated": "6453881488793990964322917"
+    },
+    {
+      "amountSpecified": "383610709426941681723206",
+      "exactInput": true,
+      "expectedAmountCalculated": "383166607694175354889032"
+    },
+    {
+      "amountSpecified": "9466690474610920919722443",
+      "exactInput": true,
+      "expectedAmountCalculated": "8818220852829493585682956"
+    },
+    {
+      "amountSpecified": "6785479005669794418046923",
+      "exactInput": true,
+      "expectedAmountCalculated": "6766548035423384262938298"
+    },
+    {
+      "amountSpecified": "10829145281689084309374072",
+      "exactInput": true,
+      "expectedAmountCalculated": "8841272864412214196802699"
+    },
+    {
+      "amountSpecified": "667687548976812864823116",
+      "exactInput": true,
+      "expectedAmountCalculated": "666866141434350738372537"
+    },
+    {
+      "amountSpecified": "7046601146651276106797241",
+      "exactInput": true,
+      "expectedAmountCalculated": "7026473310573566784240612"
+    },
+    {
+      "amountSpecified": "7355458682072660096941947",
+      "exactInput": true,
+      "expectedAmountCalculated": "7333870456925663579212620"
+    },
+    {
+      "amountSpecified": "9114040056415701790849227",
+      "exactInput": true,
+      "expectedAmountCalculated": "8795745538735375096131512"
+    },
+    {
+      "amountSpecified": "9810226842520605257367303",
+      "exactInput": true,
+      "expectedAmountCalculated": "8828533380530995990286894"
+    },
+    {
+      "amountSpecified": "9135551239798027206129228",
+      "exactInput": true,
+      "expectedAmountCalculated": "8797824302029432374580787"
+    },
+    {
+      "amountSpecified": "2522711261094480044543403",
+      "exactInput": true,
+      "expectedAmountCalculated": "2518413429260362873536759"
+    },
+    {
+      "amountSpecified": "11044246575125935148246673",
+      "exactInput": true,
+      "expectedAmountCalculated": "8842660831051066197359403"
+    },
+    {
+      "amountSpecified": "9601818587756838570598785",
+      "exactInput": true,
+      "expectedAmountCalculated": "8823040440974844772880879"
+    },
+    {
+      "amountSpecified": "7206037407952660844482542",
+      "exactInput": true,
+      "expectedAmountCalculated": "7185161752037039291356207"
+    },
+    {
+      "amountSpecified": "8801152390654122516187506",
+      "exactInput": true,
+      "expectedAmountCalculated": "8732573927277269521164990"
+    },
+    {
+      "amountSpecified": "6104043436103222235237492",
+      "exactInput": true,
+      "expectedAmountCalculated": "6088072623975378530965448"
+    },
+    {
+      "amountSpecified": "9082153232942741165132166",
+      "exactInput": true,
+      "expectedAmountCalculated": "8792384275923298753154709"
+    },
+    {
+      "amountSpecified": "2437143881876704100646288",
+      "exactInput": true,
+      "expectedAmountCalculated": "2433045026163051406426582"
+    },
+    {
+      "amountSpecified": "4394674533129269252783052",
+      "exactInput": true,
+      "expectedAmountCalculated": "4385089895761657725425538"
+    },
+    {
+      "amountSpecified": "9247739850994018848199827",
+      "exactInput": true,
+      "expectedAmountCalculated": "8806742319922733683975396"
+    },
+    {
+      "amountSpecified": "6010313986497175540413174",
+      "exactInput": true,
+      "expectedAmountCalculated": "5994731865491165004693537"
+    },
+    {
+      "amountSpecified": "3946829785325924900643321",
+      "exactInput": true,
+      "expectedAmountCalculated": "3938672417036022342772103"
+    },
+    {
+      "amountSpecified": "6225617388714564253596519",
+      "exactInput": true,
+      "expectedAmountCalculated": "6209135760778206620460214"
+    },
+    {
+      "amountSpecified": "3190681727782802891188602",
+      "exactInput": true,
+      "expectedAmountCalculated": "3184702314341172738864918"
+    },
+    {
+      "amountSpecified": "9266947084539701308564422",
+      "exactInput": true,
+      "expectedAmountCalculated": "8808009528095547125501991"
+    },
+    {
+      "amountSpecified": "529396405614734108811836",
+      "exactInput": true,
+      "expectedAmountCalculated": "528763821282014314220784"
+    },
+    {
+      "amountSpecified": "5690941955269341641831031",
+      "exactInput": true,
+      "expectedAmountCalculated": "5676650705186117623874680"
+    },
+    {
+      "amountSpecified": "11003269523769923965598751",
+      "exactInput": true,
+      "expectedAmountCalculated": "8842414770901085298775395"
+    },
+    {
+      "amountSpecified": "10652112429335431162714764",
+      "exactInput": true,
+      "expectedAmountCalculated": "8839922960611944787457583"
+    },
+    {
+      "amountSpecified": "8543684225726208326096064",
+      "exactInput": true,
+      "expectedAmountCalculated": "8516025902840177896891781"
+    },
+    {
+      "amountSpecified": "6728179395009890533261700",
+      "exactInput": false,
+      "expectedAmountCalculated": "6746936639294939311871284"
+    },
+    {
+      "amountSpecified": "2693742735644962429368600",
+      "exactInput": false,
+      "expectedAmountCalculated": "2698460959007431739572321"
+    },
+    {
+      "amountSpecified": "8747315602619873734567545",
+      "exactInput": false,
+      "expectedAmountCalculated": "8842140997017585030462483"
+    },
+    {
+      "amountSpecified": "7951067519296485984206400",
+      "exactInput": false,
+      "expectedAmountCalculated": "7975735009785274527340729"
+    },
+    {
+      "amountSpecified": "318744377634251763012248",
+      "exactInput": false,
+      "expectedAmountCalculated": "319108549578772493315007"
+    },
+    {
+      "amountSpecified": "7992226327820991087054850",
+      "exactInput": false,
+      "expectedAmountCalculated": "8017106149539524206953648"
+    },
+    {
+      "amountSpecified": "8858592712955904165119950",
+      "exactInput": false,
+      "expectedAmountCalculated": "3616235854899614079650488755341097129023341"
+    },
+    {
+      "amountSpecified": "3633279818752323761255410",
+      "exactInput": false,
+      "expectedAmountCalculated": "3640519813278512438187655"
+    },
+    {
+      "amountSpecified": "4737224263797148646590100",
+      "exactInput": false,
+      "expectedAmountCalculated": "4748007031594472864838563"
+    },
+    {
+      "amountSpecified": "2437368085153375698858050",
+      "exactInput": false,
+      "expectedAmountCalculated": "2441476927077946341495702"
+    },
+    {
+      "amountSpecified": "5695919137730394943604300",
+      "exactInput": false,
+      "expectedAmountCalculated": "5710287103017220484369096"
+    },
+    {
+      "amountSpecified": "5840840972015237909712200",
+      "exactInput": false,
+      "expectedAmountCalculated": "5855792052560001494162649"
+    },
+    {
+      "amountSpecified": "8561083956432977838820600",
+      "exactInput": false,
+      "expectedAmountCalculated": "8588987900870817005775098"
+    },
+    {
+      "amountSpecified": "4096039870576900682342640",
+      "exactInput": false,
+      "expectedAmountCalculated": "4104688674709876378819867"
+    },
+    {
+      "amountSpecified": "2012384797981435953868870",
+      "exactInput": false,
+      "expectedAmountCalculated": "2015557823548555220490111"
+    },
+    {
+      "amountSpecified": "4024350940852457942195150",
+      "exactInput": false,
+      "expectedAmountCalculated": "4032774291966578603364153"
+    },
+    {
+      "amountSpecified": "7806707853793228786432950",
+      "exactInput": false,
+      "expectedAmountCalculated": "7830637522299883879863239"
+    },
+    {
+      "amountSpecified": "3179319566778385737785760",
+      "exactInput": false,
+      "expectedAmountCalculated": "3185284481537919794386917"
+    },
+    {
+      "amountSpecified": "7070450395192360495426250",
+      "exactInput": false,
+      "expectedAmountCalculated": "7090784173645233195111870"
+    },
+    {
+      "amountSpecified": "3993782645991011876120305",
+      "exactInput": false,
+      "expectedAmountCalculated": "4002110667011148137891732"
+    },
+    {
+      "amountSpecified": "8120309156865225365200612",
+      "exactInput": false,
+      "expectedAmountCalculated": "8145855325103159311406858"
+    },
+    {
+      "amountSpecified": "3781532855892993620624590",
+      "exactInput": false,
+      "expectedAmountCalculated": "3789212202906367088030869"
+    },
+    {
+      "amountSpecified": "4215896489804989594078045",
+      "exactInput": false,
+      "expectedAmountCalculated": "4224928130239255749157504"
+    },
+    {
+      "amountSpecified": "7496137492545037064248300",
+      "exactInput": false,
+      "expectedAmountCalculated": "7518516258595719132617818"
+    },
+    {
+      "amountSpecified": "6257752597613207786923850",
+      "exactInput": false,
+      "expectedAmountCalculated": "6274441484235862009574335"
+    },
+    {
+      "amountSpecified": "5178162299262971270319100",
+      "exactInput": false,
+      "expectedAmountCalculated": "5190535290413956869834175"
+    },
+    {
+      "amountSpecified": "8425629424999350916263450",
+      "exactInput": false,
+      "expectedAmountCalculated": "8452798134735678470215624"
+    },
+    {
+      "amountSpecified": "5079367016740354015497600",
+      "exactInput": false,
+      "expectedAmountCalculated": "5091375011823101265712369"
+    },
+    {
+      "amountSpecified": "1062056174556062868126010",
+      "exactInput": false,
+      "expectedAmountCalculated": "1063471946570419620585971"
+    },
+    {
+      "amountSpecified": "1024255828104141653867330",
+      "exactInput": false,
+      "expectedAmountCalculated": "1025611284459098484548985"
+    },
+    {
+      "amountSpecified": "5476121652308548075597950",
+      "exactInput": false,
+      "expectedAmountCalculated": "5489625860907576187761154"
+    },
+    {
+      "amountSpecified": "6981380992669714305627150",
+      "exactInput": false,
+      "expectedAmountCalculated": "7001298698575609790370459"
+    },
+    {
+      "amountSpecified": "423736444746918687243310",
+      "exactInput": false,
+      "expectedAmountCalculated": "424231973923414672487493"
+    },
+    {
+      "amountSpecified": "5879649455477397110202450",
+      "exactInput": false,
+      "expectedAmountCalculated": "5894758523260148217748199"
+    },
+    {
+      "amountSpecified": "1068399766131283923227440",
+      "exactInput": false,
+      "expectedAmountCalculated": "1069825732032688851630761"
+    },
+    {
+      "amountSpecified": "1482563093466673635178960",
+      "exactInput": false,
+      "expectedAmountCalculated": "1484699270101035863877207"
+    },
+    {
+      "amountSpecified": "682878217652155359668625",
+      "exactInput": false,
+      "expectedAmountCalculated": "683722150637186349963814"
+    },
+    {
+      "amountSpecified": "8094624878468998182892700",
+      "exactInput": false,
+      "expectedAmountCalculated": "8120036746977872202446524"
+    },
+    {
+      "amountSpecified": "173716361911066756857515",
+      "exactInput": false,
+      "expectedAmountCalculated": "173908380141121176820633"
+    },
+    {
+      "amountSpecified": "3422688078340785991912450",
+      "exactInput": false,
+      "expectedAmountCalculated": "3429323396644492009868784"
+    },
+    {
+      "amountSpecified": "2427485296890088518288700",
+      "exactInput": false,
+      "expectedAmountCalculated": "2431571323805860375074099"
+    },
+    {
+      "amountSpecified": "7223961820101080130084250",
+      "exactInput": false,
+      "expectedAmountCalculated": "7245022295859296446103329"
+    },
+    {
+      "amountSpecified": "5484618552455225043435300",
+      "exactInput": false,
+      "expectedAmountCalculated": "5498155689990706354889690"
+    },
+    {
+      "amountSpecified": "1729541171076188389563655",
+      "exactInput": false,
+      "expectedAmountCalculated": "1732142754298818627193910"
+    },
+    {
+      "amountSpecified": "3624968192406493116192250",
+      "exactInput": false,
+      "expectedAmountCalculated": "3632183889580087761462281"
+    },
+    {
+      "amountSpecified": "8663598564054306478884850",
+      "exactInput": false,
+      "expectedAmountCalculated": "8692074654655129200304189"
+    },
+    {
+      "amountSpecified": "3534317341195999995397200",
+      "exactInput": false,
+      "expectedAmountCalculated": "3541270344240892593249406"
+    },
+    {
+      "amountSpecified": "8549254076501782114001300",
+      "exactInput": false,
+      "expectedAmountCalculated": "8577093432218174404125232"
+    },
+    {
+      "amountSpecified": "2663599168207979661667975",
+      "exactInput": false,
+      "expectedAmountCalculated": "2668243991900582881111317"
+    },
+    {
+      "amountSpecified": "7091481862471677277592700",
+      "exactInput": false,
+      "expectedAmountCalculated": "7111914482445634053333435"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0x97e7d56A0408570bA1a7852De36350f7713906ec.json b/src/__tests__/stubs/swap/0x97e7d56A0408570bA1a7852De36350f7713906ec.json
new file mode 100644
index 00000000..51437dc6
--- /dev/null
+++ b/src/__tests__/stubs/swap/0x97e7d56A0408570bA1a7852De36350f7713906ec.json
@@ -0,0 +1,581 @@
+{
+  "poolName": "DAI - FRAX 500",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0x853d955aCEf822Db058eb8505911ED77F175b99e",
+    "decimals": 18
+  },
+  "fee": 500,
+  "liquidity": "3907950011669101730849306463",
+  "sqrtRatioX96": "79250355604504340626979173308",
+  "tickCurrent": 5,
+  "ticks": [
+    {
+      "index": -887270,
+      "liquidityNet": "195965479893812429046081",
+      "liquidityGross": "195965479893812429046081"
+    },
+    {
+      "index": -80,
+      "liquidityNet": "2553788884381704257911",
+      "liquidityGross": "2553788884381704257911"
+    },
+    {
+      "index": -50,
+      "liquidityNet": "3907397232478574333540242550",
+      "liquidityGross": "3907397232478574333540242550"
+    },
+    {
+      "index": -20,
+      "liquidityNet": "81726355507026415174",
+      "liquidityGross": "81726355507026415174"
+    },
+    {
+      "index": -10,
+      "liquidityNet": "112130682668486108766786",
+      "liquidityGross": "112130682668486108766786"
+    },
+    {
+      "index": 0,
+      "liquidityNet": "242047512725210040577961",
+      "liquidityGross": "242047512725210040577961"
+    },
+    {
+      "index": 10,
+      "liquidityNet": "-112130682668486108766786",
+      "liquidityGross": "112130682668486108766786"
+    },
+    {
+      "index": 20,
+      "liquidityNet": "-242129239080717066993135",
+      "liquidityGross": "242129239080717066993135"
+    },
+    {
+      "index": 50,
+      "liquidityNet": "-3907350715518819612887193347",
+      "liquidityGross": "3907350715518819612887193347"
+    },
+    {
+      "index": 60,
+      "liquidityNet": "-46516959754720653049203",
+      "liquidityGross": "46516959754720653049203"
+    },
+    {
+      "index": 70,
+      "liquidityNet": "-2553788884381704257911",
+      "liquidityGross": "2553788884381704257911"
+    },
+    {
+      "index": 887270,
+      "liquidityNet": "-195965479893812429046081",
+      "liquidityGross": "195965479893812429046081"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "8749694033103506235644100",
+      "exactInput": true,
+      "expectedAmountCalculated": "8730674899113218742273994"
+    },
+    {
+      "amountSpecified": "8717996651200082843358300",
+      "exactInput": true,
+      "expectedAmountCalculated": "8699116809043357780457334"
+    },
+    {
+      "amountSpecified": "8054396360287485218439960",
+      "exactInput": true,
+      "expectedAmountCalculated": "8038315370023056800794761"
+    },
+    {
+      "amountSpecified": "6734868797151815183568650",
+      "exactInput": true,
+      "expectedAmountCalculated": "6723687598330146095454716"
+    },
+    {
+      "amountSpecified": "1870229707966344377874320",
+      "exactInput": true,
+      "expectedAmountCalculated": "1869447503954257161024241"
+    },
+    {
+      "amountSpecified": "6878121573597162971957050",
+      "exactInput": true,
+      "expectedAmountCalculated": "6866451312650650602533317"
+    },
+    {
+      "amountSpecified": "4379833832437537934360450",
+      "exactInput": true,
+      "expectedAmountCalculated": "4375194154392049818006614"
+    },
+    {
+      "amountSpecified": "2547014908800721339065075",
+      "exactInput": true,
+      "expectedAmountCalculated": "2545509098371885353536077"
+    },
+    {
+      "amountSpecified": "8791945220208799718521650",
+      "exactInput": true,
+      "expectedAmountCalculated": "8772739622357883500260722"
+    },
+    {
+      "amountSpecified": "1488068471547517830015540",
+      "exactInput": true,
+      "expectedAmountCalculated": "1487591478674320489222329"
+    },
+    {
+      "amountSpecified": "7564135533377857886880450",
+      "exactInput": true,
+      "expectedAmountCalculated": "7549978458256549214934609"
+    },
+    {
+      "amountSpecified": "2829483076189566636742100",
+      "exactInput": true,
+      "expectedAmountCalculated": "2827606055902354364362847"
+    },
+    {
+      "amountSpecified": "2106286585535122572493890",
+      "exactInput": true,
+      "expectedAmountCalculated": "2105278568691982168377529"
+    },
+    {
+      "amountSpecified": "1811772666409470204986150",
+      "exactInput": true,
+      "expectedAmountCalculated": "1811041984071534053638036"
+    },
+    {
+      "amountSpecified": "704698960653579774075160",
+      "exactInput": true,
+      "expectedAmountCalculated": "704614232981911877806797"
+    },
+    {
+      "amountSpecified": "4114434300668570600043300",
+      "exactInput": true,
+      "expectedAmountCalculated": "4110354559184857417749606"
+    },
+    {
+      "amountSpecified": "1416720290651672135241165",
+      "exactInput": true,
+      "expectedAmountCalculated": "1416292010752951807076350"
+    },
+    {
+      "amountSpecified": "4602791197711122506880350",
+      "exactInput": true,
+      "expectedAmountCalculated": "4597653360263856422261265"
+    },
+    {
+      "amountSpecified": "8437774843328444687959600",
+      "exactInput": true,
+      "expectedAmountCalculated": "8420104198259981727049430"
+    },
+    {
+      "amountSpecified": "8054047299078823537550550",
+      "exactInput": true,
+      "expectedAmountCalculated": "8037967722116642124136657"
+    },
+    {
+      "amountSpecified": "22110793344328026894345",
+      "exactInput": true,
+      "expectedAmountCalculated": "22111995590113712428622"
+    },
+    {
+      "amountSpecified": "5220749065739719631090400",
+      "exactInput": true,
+      "expectedAmountCalculated": "5214098027714940483278478"
+    },
+    {
+      "amountSpecified": "190718058955364775361546",
+      "exactInput": true,
+      "expectedAmountCalculated": "190720202297397171774646"
+    },
+    {
+      "amountSpecified": "2200840183280743488712250",
+      "exactInput": true,
+      "expectedAmountCalculated": "2199733730365068809724921"
+    },
+    {
+      "amountSpecified": "691070983388297384761295",
+      "exactInput": true,
+      "expectedAmountCalculated": "690990302929231142380738"
+    },
+    {
+      "amountSpecified": "2896178251094401318483350",
+      "exactInput": true,
+      "expectedAmountCalculated": "2894207636492369901770222"
+    },
+    {
+      "amountSpecified": "4615441602232112769549855",
+      "exactInput": true,
+      "expectedAmountCalculated": "4610274739674485439773169"
+    },
+    {
+      "amountSpecified": "8376937171951467556753250",
+      "exactInput": true,
+      "expectedAmountCalculated": "8359523775515473007298292"
+    },
+    {
+      "amountSpecified": "2912792774919709805213145",
+      "exactInput": true,
+      "expectedAmountCalculated": "2910798491541080896873767"
+    },
+    {
+      "amountSpecified": "6156462885531898941385450",
+      "exactInput": true,
+      "expectedAmountCalculated": "6147150087874548951322353"
+    },
+    {
+      "amountSpecified": "1185985874374607623477600",
+      "exactInput": true,
+      "expectedAmountCalculated": "1185697313156068478137108"
+    },
+    {
+      "amountSpecified": "6596799346327845888737350",
+      "exactInput": true,
+      "expectedAmountCalculated": "6586079626534432462345290"
+    },
+    {
+      "amountSpecified": "80814400727649112029116",
+      "exactInput": true,
+      "expectedAmountCalculated": "80817581171874043752808"
+    },
+    {
+      "amountSpecified": "3694763482871806651279600",
+      "exactInput": true,
+      "expectedAmountCalculated": "3691495822572442194705604"
+    },
+    {
+      "amountSpecified": "2184744069204494932803900",
+      "exactInput": true,
+      "expectedAmountCalculated": "2183654695910971259895049"
+    },
+    {
+      "amountSpecified": "3445052062259793986952050",
+      "exactInput": true,
+      "expectedAmountCalculated": "3442224957842104430458600"
+    },
+    {
+      "amountSpecified": "3202388228711710575224600",
+      "exactInput": true,
+      "expectedAmountCalculated": "3199958755270260884375297"
+    },
+    {
+      "amountSpecified": "1416488146136491030289060",
+      "exactInput": true,
+      "expectedAmountCalculated": "1416060020487468980282527"
+    },
+    {
+      "amountSpecified": "7116463403554008447710250",
+      "exactInput": true,
+      "expectedAmountCalculated": "7103956299890072968055461"
+    },
+    {
+      "amountSpecified": "1543183960856294446323810",
+      "exactInput": true,
+      "expectedAmountCalculated": "1542667556511319341255219"
+    },
+    {
+      "amountSpecified": "2036099999634634767000475",
+      "exactInput": true,
+      "expectedAmountCalculated": "2035162097676522503486278"
+    },
+    {
+      "amountSpecified": "5838702811638108086594700",
+      "exactInput": true,
+      "expectedAmountCalculated": "5830343946245230327732121"
+    },
+    {
+      "amountSpecified": "6826838173513750113764350",
+      "exactInput": true,
+      "expectedAmountCalculated": "6815344193599937615085014"
+    },
+    {
+      "amountSpecified": "8278707563732172001145150",
+      "exactInput": true,
+      "expectedAmountCalculated": "8261705553152428907460049"
+    },
+    {
+      "amountSpecified": "8672604445037179122117224",
+      "exactInput": true,
+      "expectedAmountCalculated": "8653923186221836257092612"
+    },
+    {
+      "amountSpecified": "4340014943266906395827060",
+      "exactInput": true,
+      "expectedAmountCalculated": "4335461565404916031947324"
+    },
+    {
+      "amountSpecified": "1333871833336226712352550",
+      "exactInput": true,
+      "expectedAmountCalculated": "1333496853123457104021586"
+    },
+    {
+      "amountSpecified": "1172273436050838555294410",
+      "exactInput": true,
+      "expectedAmountCalculated": "1171992321430825712129071"
+    },
+    {
+      "amountSpecified": "6377439263166837946905550",
+      "exactInput": true,
+      "expectedAmountCalculated": "6367432764746018643581232"
+    },
+    {
+      "amountSpecified": "162851646862565472978534",
+      "exactInput": true,
+      "expectedAmountCalculated": "162854637989311318007367"
+    },
+    {
+      "amountSpecified": "4605459340132735010197515",
+      "exactInput": false,
+      "expectedAmountCalculated": "4610615119171048875393178"
+    },
+    {
+      "amountSpecified": "5385184670707950259137588",
+      "exactInput": false,
+      "expectedAmountCalculated": "5392290282152869475486018"
+    },
+    {
+      "amountSpecified": "6465369082529241999926097",
+      "exactInput": false,
+      "expectedAmountCalculated": "6475692007695608428134270"
+    },
+    {
+      "amountSpecified": "3311236312991887743693357",
+      "exactInput": false,
+      "expectedAmountCalculated": "3313844687601420845623728"
+    },
+    {
+      "amountSpecified": "9842131003732633811836476",
+      "exactInput": false,
+      "expectedAmountCalculated": "9866383189195680904039103"
+    },
+    {
+      "amountSpecified": "2809236731332448250164706",
+      "exactInput": false,
+      "expectedAmountCalculated": "2811088337619808117027382"
+    },
+    {
+      "amountSpecified": "7795854222707830027585821",
+      "exactInput": false,
+      "expectedAmountCalculated": "7810964639051367372084661"
+    },
+    {
+      "amountSpecified": "5753403037929780809919105",
+      "exactInput": false,
+      "expectedAmountCalculated": "5761538012752643967271209"
+    },
+    {
+      "amountSpecified": "1499359512129561052953165",
+      "exactInput": false,
+      "expectedAmountCalculated": "1499844795471643957862346"
+    },
+    {
+      "amountSpecified": "7303836672297646554710679",
+      "exactInput": false,
+      "expectedAmountCalculated": "7317070536906814257320649"
+    },
+    {
+      "amountSpecified": "1506491135467799810853129",
+      "exactInput": false,
+      "expectedAmountCalculated": "1506981477491531605332795"
+    },
+    {
+      "amountSpecified": "9759540254461726016023896",
+      "exactInput": false,
+      "expectedAmountCalculated": "9783381682197410103713143"
+    },
+    {
+      "amountSpecified": "3222019018972811489430537",
+      "exactInput": false,
+      "expectedAmountCalculated": "3224483453988288238889956"
+    },
+    {
+      "amountSpecified": "2278985252215438579706682",
+      "exactInput": false,
+      "expectedAmountCalculated": "2280177824445134321372296"
+    },
+    {
+      "amountSpecified": "2812111835675402958936936",
+      "exactInput": false,
+      "expectedAmountCalculated": "2813967408255077711787358"
+    },
+    {
+      "amountSpecified": "8807494779432870669321921",
+      "exactInput": false,
+      "expectedAmountCalculated": "8826855127053171983117010"
+    },
+    {
+      "amountSpecified": "9097296900000571678803033",
+      "exactInput": false,
+      "expectedAmountCalculated": "9117971839035718150911511"
+    },
+    {
+      "amountSpecified": "10108320703157985867862284",
+      "exactInput": false,
+      "expectedAmountCalculated": "10133920692032326611351000"
+    },
+    {
+      "amountSpecified": "5097936677305110988688463",
+      "exactInput": false,
+      "expectedAmountCalculated": "5104287647703139914011272"
+    },
+    {
+      "amountSpecified": "7600630448652922908274344",
+      "exactInput": false,
+      "expectedAmountCalculated": "7614981373577789203098621"
+    },
+    {
+      "amountSpecified": "4904985627729388014585936",
+      "exactInput": false,
+      "expectedAmountCalculated": "4910853485455001780708665"
+    },
+    {
+      "amountSpecified": "6984140142692789932430601",
+      "exactInput": false,
+      "expectedAmountCalculated": "6996221450406900940060730"
+    },
+    {
+      "amountSpecified": "9678268781385402544858911",
+      "exactInput": false,
+      "expectedAmountCalculated": "9701709445246841116779903"
+    },
+    {
+      "amountSpecified": "5230969711376923279299192",
+      "exactInput": false,
+      "expectedAmountCalculated": "5237664908766534216554691"
+    },
+    {
+      "amountSpecified": "5960090471704100972730096",
+      "exactInput": false,
+      "expectedAmountCalculated": "5968833778216010180065449"
+    },
+    {
+      "amountSpecified": "6254540987343120800839692",
+      "exactInput": false,
+      "expectedAmountCalculated": "6264188857422328583124234"
+    },
+    {
+      "amountSpecified": "4497895861697134374532842",
+      "exactInput": false,
+      "expectedAmountCalculated": "4502807167043822259295637"
+    },
+    {
+      "amountSpecified": "825399053927112843577293",
+      "exactInput": false,
+      "expectedAmountCalculated": "825523817898620800351430"
+    },
+    {
+      "amountSpecified": "411440631472052044071315",
+      "exactInput": false,
+      "expectedAmountCalculated": "411459241422794224349887"
+    },
+    {
+      "amountSpecified": "10434551611105022054227749",
+      "exactInput": false,
+      "expectedAmountCalculated": "10461853239753459507032924"
+    },
+    {
+      "amountSpecified": "6483285396129412759925838",
+      "exactInput": false,
+      "expectedAmountCalculated": "6493666741535408335230268"
+    },
+    {
+      "amountSpecified": "4293013362491261410963257",
+      "exactInput": false,
+      "expectedAmountCalculated": "4297475437189559471723557"
+    },
+    {
+      "amountSpecified": "9597451235797283303066172",
+      "exactInput": false,
+      "expectedAmountCalculated": "9620496750410041955529450"
+    },
+    {
+      "amountSpecified": "9267355940391884687171352",
+      "exactInput": false,
+      "expectedAmountCalculated": "9288822442117377480782641"
+    },
+    {
+      "amountSpecified": "5701994099938417141196601",
+      "exactInput": false,
+      "expectedAmountCalculated": "5709981175248295936742862"
+    },
+    {
+      "amountSpecified": "8488471345262023707307038",
+      "exactInput": false,
+      "expectedAmountCalculated": "8506434574436217905526540"
+    },
+    {
+      "amountSpecified": "10981125225489407965082937",
+      "exactInput": false,
+      "expectedAmountCalculated": "11271599388723355180122570"
+    },
+    {
+      "amountSpecified": "6996273373019881875481374",
+      "exactInput": false,
+      "expectedAmountCalculated": "7008397463073215325076527"
+    },
+    {
+      "amountSpecified": "145428581909653829592428",
+      "exactInput": false,
+      "expectedAmountCalculated": "145425262529145199080658"
+    },
+    {
+      "amountSpecified": "6038241191105772333193335",
+      "exactInput": false,
+      "expectedAmountCalculated": "6047220234986344769806156"
+    },
+    {
+      "amountSpecified": "3175659574221619924004898",
+      "exactInput": false,
+      "expectedAmountCalculated": "3178050826699838719385214"
+    },
+    {
+      "amountSpecified": "5339635907072890959295185",
+      "exactInput": false,
+      "expectedAmountCalculated": "5346619027650064046092648"
+    },
+    {
+      "amountSpecified": "6796144920121176328719651",
+      "exactInput": false,
+      "expectedAmountCalculated": "6807573024151094677321936"
+    },
+    {
+      "amountSpecified": "9450595831147924615036227",
+      "exactInput": false,
+      "expectedAmountCalculated": "9472931927726227555134351"
+    },
+    {
+      "amountSpecified": "8948939915203005200966271",
+      "exactInput": false,
+      "expectedAmountCalculated": "8968936476498607631272942"
+    },
+    {
+      "amountSpecified": "9412583826949565846311551",
+      "exactInput": false,
+      "expectedAmountCalculated": "9434738108879984116469321"
+    },
+    {
+      "amountSpecified": "7090271920947575555671266",
+      "exactInput": false,
+      "expectedAmountCalculated": "7102730020265029592584147"
+    },
+    {
+      "amountSpecified": "7227372189455498563139382",
+      "exactInput": false,
+      "expectedAmountCalculated": "7240325603155709568735967"
+    },
+    {
+      "amountSpecified": "2678373318099078885099852",
+      "exactInput": false,
+      "expectedAmountCalculated": "2680048881103071594368548"
+    },
+    {
+      "amountSpecified": "4593490752659257571252514",
+      "exactInput": false,
+      "expectedAmountCalculated": "4598619035385294170372879"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0xC5aF84701f98Fa483eCe78aF83F11b6C38ACA71D-reversed.json b/src/__tests__/stubs/swap/0xC5aF84701f98Fa483eCe78aF83F11b6C38ACA71D-reversed.json
new file mode 100644
index 00000000..b6669e12
--- /dev/null
+++ b/src/__tests__/stubs/swap/0xC5aF84701f98Fa483eCe78aF83F11b6C38ACA71D-reversed.json
@@ -0,0 +1,1081 @@
+{
+  "poolName": "WETH - USDT 10000 - reversed",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
+    "decimals": 6
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "fee": 10000,
+  "liquidity": "1195608466398061992",
+  "sqrtRatioX96": "3475524941899941871752436",
+  "tickCurrent": -200697,
+  "ticks": [
+    {
+      "index": -414400,
+      "liquidityNet": "146690162039125",
+      "liquidityGross": "146690162039125"
+    },
+    {
+      "index": -359200,
+      "liquidityNet": "419448773100127",
+      "liquidityGross": "419448773100127"
+    },
+    {
+      "index": -357400,
+      "liquidityNet": "451942354858930",
+      "liquidityGross": "451942354858930"
+    },
+    {
+      "index": -356400,
+      "liquidityNet": "-419448773100127",
+      "liquidityGross": "419448773100127"
+    },
+    {
+      "index": -355000,
+      "liquidityNet": "-451942354858930",
+      "liquidityGross": "451942354858930"
+    },
+    {
+      "index": -344200,
+      "liquidityNet": "3502135572623270972",
+      "liquidityGross": "3502135572623270972"
+    },
+    {
+      "index": -342200,
+      "liquidityNet": "-3502135572623270972",
+      "liquidityGross": "3502135572623270972"
+    },
+    {
+      "index": -322400,
+      "liquidityNet": "899576784",
+      "liquidityGross": "899576784"
+    },
+    {
+      "index": -299400,
+      "liquidityNet": "32290717139",
+      "liquidityGross": "32290717139"
+    },
+    {
+      "index": -278600,
+      "liquidityNet": "14311034407",
+      "liquidityGross": "14311034407"
+    },
+    {
+      "index": -277400,
+      "liquidityNet": "19812295698",
+      "liquidityGross": "19812295698"
+    },
+    {
+      "index": -276600,
+      "liquidityNet": "14799801483",
+      "liquidityGross": "14799801483"
+    },
+    {
+      "index": -276400,
+      "liquidityNet": "8755146764407",
+      "liquidityGross": "8755146764407"
+    },
+    {
+      "index": -276000,
+      "liquidityNet": "32265332776",
+      "liquidityGross": "32265332776"
+    },
+    {
+      "index": -275600,
+      "liquidityNet": "18706495209",
+      "liquidityGross": "18706495209"
+    },
+    {
+      "index": -275400,
+      "liquidityNet": "19094175035",
+      "liquidityGross": "19094175035"
+    },
+    {
+      "index": -274600,
+      "liquidityNet": "20845473656",
+      "liquidityGross": "20845473656"
+    },
+    {
+      "index": -265400,
+      "liquidityNet": "17576958214",
+      "liquidityGross": "17576958214"
+    },
+    {
+      "index": -253200,
+      "liquidityNet": "187479826619",
+      "liquidityGross": "187479826619"
+    },
+    {
+      "index": -234400,
+      "liquidityNet": "4826024768",
+      "liquidityGross": "4826024768"
+    },
+    {
+      "index": -232600,
+      "liquidityNet": "-885509074099",
+      "liquidityGross": "885509074099"
+    },
+    {
+      "index": -231000,
+      "liquidityNet": "20057847093",
+      "liquidityGross": "20057847093"
+    },
+    {
+      "index": -227400,
+      "liquidityNet": "17979578507",
+      "liquidityGross": "17979578507"
+    },
+    {
+      "index": -223200,
+      "liquidityNet": "15430490130916",
+      "liquidityGross": "15430490130916"
+    },
+    {
+      "index": -216200,
+      "liquidityNet": "36636976702467",
+      "liquidityGross": "36636976702467"
+    },
+    {
+      "index": -215400,
+      "liquidityNet": "5967488376028",
+      "liquidityGross": "5967488376028"
+    },
+    {
+      "index": -215000,
+      "liquidityNet": "2190577310472",
+      "liquidityGross": "2190577310472"
+    },
+    {
+      "index": -214200,
+      "liquidityNet": "5374764797053",
+      "liquidityGross": "5376563950621"
+    },
+    {
+      "index": -213200,
+      "liquidityNet": "104469187898",
+      "liquidityGross": "104469187898"
+    },
+    {
+      "index": -212600,
+      "liquidityNet": "8282329270545",
+      "liquidityGross": "8282329270545"
+    },
+    {
+      "index": -212000,
+      "liquidityNet": "119766066482",
+      "liquidityGross": "119766066482"
+    },
+    {
+      "index": -211400,
+      "liquidityNet": "630656174262",
+      "liquidityGross": "630656174262"
+    },
+    {
+      "index": -210600,
+      "liquidityNet": "28254220475727",
+      "liquidityGross": "28254220475727"
+    },
+    {
+      "index": -209800,
+      "liquidityNet": "1757292996543697",
+      "liquidityGross": "1757292996543697"
+    },
+    {
+      "index": -209400,
+      "liquidityNet": "5535644336283",
+      "liquidityGross": "5535644336283"
+    },
+    {
+      "index": -208600,
+      "liquidityNet": "8950706421098",
+      "liquidityGross": "8950706421098"
+    },
+    {
+      "index": -208400,
+      "liquidityNet": "1128541744290",
+      "liquidityGross": "1128541744290"
+    },
+    {
+      "index": -208000,
+      "liquidityNet": "-28173882670413",
+      "liquidityGross": "28334558281041"
+    },
+    {
+      "index": -207800,
+      "liquidityNet": "102622729020",
+      "liquidityGross": "102622729020"
+    },
+    {
+      "index": -207200,
+      "liquidityNet": "11329290367011",
+      "liquidityGross": "11329290367011"
+    },
+    {
+      "index": -207000,
+      "liquidityNet": "-64509729298",
+      "liquidityGross": "64509729298"
+    },
+    {
+      "index": -206200,
+      "liquidityNet": "45979425885291",
+      "liquidityGross": "45979425885291"
+    },
+    {
+      "index": -205600,
+      "liquidityNet": "72474035526736",
+      "liquidityGross": "72474035526736"
+    },
+    {
+      "index": -205400,
+      "liquidityNet": "22010340084929333",
+      "liquidityGross": "22010340084929333"
+    },
+    {
+      "index": -204600,
+      "liquidityNet": "-72474035526736",
+      "liquidityGross": "72474035526736"
+    },
+    {
+      "index": -204200,
+      "liquidityNet": "-4206843533907",
+      "liquidityGross": "4206843533907"
+    },
+    {
+      "index": -203800,
+      "liquidityNet": "109987289261836",
+      "liquidityGross": "109987289261836"
+    },
+    {
+      "index": -203400,
+      "liquidityNet": "11846457098019",
+      "liquidityGross": "11846457098019"
+    },
+    {
+      "index": -203200,
+      "liquidityNet": "8508076308926723",
+      "liquidityGross": "8508076308926723"
+    },
+    {
+      "index": -202400,
+      "liquidityNet": "535386597671184475",
+      "liquidityGross": "535386597671184475"
+    },
+    {
+      "index": -202200,
+      "liquidityNet": "10736730037",
+      "liquidityGross": "10736730037"
+    },
+    {
+      "index": -201800,
+      "liquidityNet": "-21976113546559342",
+      "liquidityGross": "22044566623299324"
+    },
+    {
+      "index": -201600,
+      "liquidityNet": "649501874921039168",
+      "liquidityGross": "649501874921039168"
+    },
+    {
+      "index": -200600,
+      "liquidityNet": "5748204410952",
+      "liquidityGross": "5748204410952"
+    },
+    {
+      "index": -200400,
+      "liquidityNet": "-3406647412469",
+      "liquidityGross": "24654419950525"
+    },
+    {
+      "index": -200200,
+      "liquidityNet": "-32058881170660",
+      "liquidityGross": "32309954929032"
+    },
+    {
+      "index": -200000,
+      "liquidityNet": "-238512288610609",
+      "liquidityGross": "238512288610609"
+    },
+    {
+      "index": -199600,
+      "liquidityNet": "3042906290341",
+      "liquidityGross": "3042906290341"
+    },
+    {
+      "index": -199400,
+      "liquidityNet": "-3147375478239",
+      "liquidityGross": "3147375478239"
+    },
+    {
+      "index": -199000,
+      "liquidityNet": "97176554175227",
+      "liquidityGross": "97176554175227"
+    },
+    {
+      "index": -198800,
+      "liquidityNet": "-97176554175227",
+      "liquidityGross": "97176554175227"
+    },
+    {
+      "index": -198600,
+      "liquidityNet": "-5535644336283",
+      "liquidityGross": "5535644336283"
+    },
+    {
+      "index": -198400,
+      "liquidityNet": "-26330988296859",
+      "liquidityGross": "26330988296859"
+    },
+    {
+      "index": -198200,
+      "liquidityNet": "7387595974130",
+      "liquidityGross": "7627128107094"
+    },
+    {
+      "index": -198000,
+      "liquidityNet": "-6926729184770",
+      "liquidityGross": "8087994896454"
+    },
+    {
+      "index": -197800,
+      "liquidityNet": "1011760345123",
+      "liquidityGross": "1011760345123"
+    },
+    {
+      "index": -197400,
+      "liquidityNet": "15195215094782",
+      "liquidityGross": "15195215094782"
+    },
+    {
+      "index": -197200,
+      "liquidityNet": "1575371644913",
+      "liquidityGross": "1575371644913"
+    },
+    {
+      "index": -197000,
+      "liquidityNet": "-1575371644913",
+      "liquidityGross": "1575371644913"
+    },
+    {
+      "index": -196800,
+      "liquidityNet": "4285852416248",
+      "liquidityGross": "4285852416248"
+    },
+    {
+      "index": -196600,
+      "liquidityNet": "-4091388687082",
+      "liquidityGross": "4480316145414"
+    },
+    {
+      "index": -196200,
+      "liquidityNet": "-8539225251923",
+      "liquidityGross": "12004316162923"
+    },
+    {
+      "index": -196000,
+      "liquidityNet": "-1898841604898517",
+      "liquidityGross": "1905211179050099"
+    },
+    {
+      "index": -195800,
+      "liquidityNet": "171809229549785",
+      "liquidityGross": "171809229549785"
+    },
+    {
+      "index": -195400,
+      "liquidityNet": "19191658726460",
+      "liquidityGross": "19191658726460"
+    },
+    {
+      "index": -195200,
+      "liquidityNet": "641030934706645",
+      "liquidityGross": "641030934706645"
+    },
+    {
+      "index": -195000,
+      "liquidityNet": "906748246190775",
+      "liquidityGross": "980022199595709"
+    },
+    {
+      "index": -194800,
+      "liquidityNet": "-8559945972655577",
+      "liquidityGross": "9917791281599799"
+    },
+    {
+      "index": -194600,
+      "liquidityNet": "-1082039108789932",
+      "liquidityGross": "1120596714883096"
+    },
+    {
+      "index": -194400,
+      "liquidityNet": "-205264877911035",
+      "liquidityGross": "205471288605679"
+    },
+    {
+      "index": -194200,
+      "liquidityNet": "-11818230058127",
+      "liquidityGross": "11818230058127"
+    },
+    {
+      "index": -194000,
+      "liquidityNet": "-35633470603",
+      "liquidityGross": "2141436037669"
+    },
+    {
+      "index": -193800,
+      "liquidityNet": "-157330293089831",
+      "liquidityGross": "157330293089831"
+    },
+    {
+      "index": -193600,
+      "liquidityNet": "-4173244762462",
+      "liquidityGross": "26805788522158"
+    },
+    {
+      "index": -193400,
+      "liquidityNet": "-11756776641663",
+      "liquidityGross": "11756776641663"
+    },
+    {
+      "index": -193200,
+      "liquidityNet": "-12768653114847",
+      "liquidityGross": "12768653114847"
+    },
+    {
+      "index": -193000,
+      "liquidityNet": "-1556649562235",
+      "liquidityGross": "1556649562235"
+    },
+    {
+      "index": -192800,
+      "liquidityNet": "-1052901283533",
+      "liquidityGross": "1052901283533"
+    },
+    {
+      "index": -192400,
+      "liquidityNet": "-194463729166",
+      "liquidityGross": "194463729166"
+    },
+    {
+      "index": -192200,
+      "liquidityNet": "-12313221127286",
+      "liquidityGross": "12313221127286"
+    },
+    {
+      "index": -192000,
+      "liquidityNet": "-99482172234021",
+      "liquidityGross": "99482172234021"
+    },
+    {
+      "index": -191600,
+      "liquidityNet": "-113868826575",
+      "liquidityGross": "113868826575"
+    },
+    {
+      "index": -191200,
+      "liquidityNet": "-1606494506888",
+      "liquidityGross": "2084155194904"
+    },
+    {
+      "index": -191000,
+      "liquidityNet": "-9173343289660",
+      "liquidityGross": "9173343289660"
+    },
+    {
+      "index": -190600,
+      "liquidityNet": "-229803052462",
+      "liquidityGross": "229803052462"
+    },
+    {
+      "index": -189400,
+      "liquidityNet": "-61013724418594",
+      "liquidityGross": "61013724418594"
+    },
+    {
+      "index": -189000,
+      "liquidityNet": "-171494156584",
+      "liquidityGross": "171494156584"
+    },
+    {
+      "index": -188800,
+      "liquidityNet": "-2190577310472",
+      "liquidityGross": "2190577310472"
+    },
+    {
+      "index": -188200,
+      "liquidityNet": "-15562754805",
+      "liquidityGross": "15562754805"
+    },
+    {
+      "index": -188000,
+      "liquidityNet": "-981757577",
+      "liquidityGross": "981757577"
+    },
+    {
+      "index": -187800,
+      "liquidityNet": "-2042120320145",
+      "liquidityGross": "2042120320145"
+    },
+    {
+      "index": -186400,
+      "liquidityNet": "-4795323550355",
+      "liquidityGross": "4795323550355"
+    },
+    {
+      "index": -185400,
+      "liquidityNet": "-15430490130916",
+      "liquidityGross": "15430490130916"
+    },
+    {
+      "index": -185200,
+      "liquidityNet": "-15875510682",
+      "liquidityGross": "15875510682"
+    },
+    {
+      "index": -184200,
+      "liquidityNet": "-1184894167576178339",
+      "liquidityGross": "1184894167576178339"
+    },
+    {
+      "index": -183200,
+      "liquidityNet": "-17172598986",
+      "liquidityGross": "17172598986"
+    },
+    {
+      "index": -183000,
+      "liquidityNet": "-17979578507",
+      "liquidityGross": "17979578507"
+    },
+    {
+      "index": -177200,
+      "liquidityNet": "-1389267593088",
+      "liquidityGross": "1389267593088"
+    },
+    {
+      "index": -168200,
+      "liquidityNet": "-20057847093",
+      "liquidityGross": "20057847093"
+    },
+    {
+      "index": -161400,
+      "liquidityNet": "-34561850094",
+      "liquidityGross": "34561850094"
+    },
+    {
+      "index": -161200,
+      "liquidityNet": "-4331411812348",
+      "liquidityGross": "4331411812348"
+    },
+    {
+      "index": -138200,
+      "liquidityNet": "-17342965334",
+      "liquidityGross": "17342965334"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "566285068320",
+      "exactInput": true,
+      "expectedAmountCalculated": "288251173978267827134"
+    },
+    {
+      "amountSpecified": "1886093363167",
+      "exactInput": true,
+      "expectedAmountCalculated": "936966481588891383271"
+    },
+    {
+      "amountSpecified": "1610846751680",
+      "exactInput": true,
+      "expectedAmountCalculated": "804265434795886683587"
+    },
+    {
+      "amountSpecified": "2959582014437",
+      "exactInput": true,
+      "expectedAmountCalculated": "1442032426639159712878"
+    },
+    {
+      "amountSpecified": "1666202738196",
+      "exactInput": true,
+      "expectedAmountCalculated": "831060888961039262635"
+    },
+    {
+      "amountSpecified": "2391291237452",
+      "exactInput": true,
+      "expectedAmountCalculated": "1177097276128724130073"
+    },
+    {
+      "amountSpecified": "2186035258366",
+      "exactInput": true,
+      "expectedAmountCalculated": "1080065539251555941387"
+    },
+    {
+      "amountSpecified": "1945962036057",
+      "exactInput": true,
+      "expectedAmountCalculated": "965654058693256199378"
+    },
+    {
+      "amountSpecified": "2739850885246",
+      "exactInput": true,
+      "expectedAmountCalculated": "1340235524769857995279"
+    },
+    {
+      "amountSpecified": "201394078161",
+      "exactInput": true,
+      "expectedAmountCalculated": "103217279934105247526"
+    },
+    {
+      "amountSpecified": "2649642302628",
+      "exactInput": true,
+      "expectedAmountCalculated": "1298210845718930547892"
+    },
+    {
+      "amountSpecified": "3080617796966",
+      "exactInput": true,
+      "expectedAmountCalculated": "1497764877276531844318"
+    },
+    {
+      "amountSpecified": "2535853454990",
+      "exactInput": true,
+      "expectedAmountCalculated": "1245006196624377757717"
+    },
+    {
+      "amountSpecified": "2617246793260",
+      "exactInput": true,
+      "expectedAmountCalculated": "1283085745295568269719"
+    },
+    {
+      "amountSpecified": "1863981643054",
+      "exactInput": true,
+      "expectedAmountCalculated": "926355254263078905919"
+    },
+    {
+      "amountSpecified": "1358213097314",
+      "exactInput": true,
+      "expectedAmountCalculated": "681283159267153128154"
+    },
+    {
+      "amountSpecified": "1781129955927",
+      "exactInput": true,
+      "expectedAmountCalculated": "886519216005677064364"
+    },
+    {
+      "amountSpecified": "516399652728",
+      "exactInput": true,
+      "expectedAmountCalculated": "263103558186726750848"
+    },
+    {
+      "amountSpecified": "307975402438",
+      "exactInput": true,
+      "expectedAmountCalculated": "157525986581031344683"
+    },
+    {
+      "amountSpecified": "766075648087",
+      "exactInput": true,
+      "expectedAmountCalculated": "388499228805119963989"
+    },
+    {
+      "amountSpecified": "1793330453040",
+      "exactInput": true,
+      "expectedAmountCalculated": "892392921594654426733"
+    },
+    {
+      "amountSpecified": "264009558928",
+      "exactInput": true,
+      "expectedAmountCalculated": "135149458444648275965"
+    },
+    {
+      "amountSpecified": "678828171322",
+      "exactInput": true,
+      "expectedAmountCalculated": "344813261823490716556"
+    },
+    {
+      "amountSpecified": "2257938571293",
+      "exactInput": true,
+      "expectedAmountCalculated": "1114138851309285530579"
+    },
+    {
+      "amountSpecified": "2200295696899",
+      "exactInput": true,
+      "expectedAmountCalculated": "1086830291390221962125"
+    },
+    {
+      "amountSpecified": "1932860408684",
+      "exactInput": true,
+      "expectedAmountCalculated": "959381433231608984281"
+    },
+    {
+      "amountSpecified": "107084422572",
+      "exactInput": true,
+      "expectedAmountCalculated": "54979765973928514677"
+    },
+    {
+      "amountSpecified": "3509329895672",
+      "exactInput": true,
+      "expectedAmountCalculated": "1693249145583764345113"
+    },
+    {
+      "amountSpecified": "2349824921100",
+      "exactInput": true,
+      "expectedAmountCalculated": "1157552730167784518617"
+    },
+    {
+      "amountSpecified": "2138182672549",
+      "exactInput": true,
+      "expectedAmountCalculated": "1057340027079161957900"
+    },
+    {
+      "amountSpecified": "1828005881024",
+      "exactInput": true,
+      "expectedAmountCalculated": "909072491743581090029"
+    },
+    {
+      "amountSpecified": "2357744747899",
+      "exactInput": true,
+      "expectedAmountCalculated": "1161287889024131796012"
+    },
+    {
+      "amountSpecified": "902740000075",
+      "exactInput": true,
+      "expectedAmountCalculated": "456644507388496609575"
+    },
+    {
+      "amountSpecified": "2509316590927",
+      "exactInput": true,
+      "expectedAmountCalculated": "1232566876064288298014"
+    },
+    {
+      "amountSpecified": "1541468073720",
+      "exactInput": true,
+      "expectedAmountCalculated": "770605361428682765511"
+    },
+    {
+      "amountSpecified": "1216100901500",
+      "exactInput": true,
+      "expectedAmountCalculated": "611598907906393006585"
+    },
+    {
+      "amountSpecified": "34958056022",
+      "exactInput": true,
+      "expectedAmountCalculated": "17972741890239808128"
+    },
+    {
+      "amountSpecified": "1547279407217",
+      "exactInput": true,
+      "expectedAmountCalculated": "773428101385228943269"
+    },
+    {
+      "amountSpecified": "3317358614269",
+      "exactInput": true,
+      "expectedAmountCalculated": "1606082219194928366417"
+    },
+    {
+      "amountSpecified": "1452017561750",
+      "exactInput": true,
+      "expectedAmountCalculated": "727080504917886943644"
+    },
+    {
+      "amountSpecified": "2003556412841",
+      "exactInput": true,
+      "expectedAmountCalculated": "993192876280348099531"
+    },
+    {
+      "amountSpecified": "1655399086862",
+      "exactInput": true,
+      "expectedAmountCalculated": "825835570359066237695"
+    },
+    {
+      "amountSpecified": "83515260525",
+      "exactInput": true,
+      "expectedAmountCalculated": "42897826944941214416"
+    },
+    {
+      "amountSpecified": "2918392863626",
+      "exactInput": true,
+      "expectedAmountCalculated": "1423011307034924817922"
+    },
+    {
+      "amountSpecified": "1271870435137",
+      "exactInput": true,
+      "expectedAmountCalculated": "638988840588034363969"
+    },
+    {
+      "amountSpecified": "841346050529",
+      "exactInput": true,
+      "expectedAmountCalculated": "426074307448156530681"
+    },
+    {
+      "amountSpecified": "833970332413",
+      "exactInput": true,
+      "expectedAmountCalculated": "422396985324795740269"
+    },
+    {
+      "amountSpecified": "546672770442",
+      "exactInput": true,
+      "expectedAmountCalculated": "278370057916993652191"
+    },
+    {
+      "amountSpecified": "404266929516",
+      "exactInput": true,
+      "expectedAmountCalculated": "206405041223596239462"
+    },
+    {
+      "amountSpecified": "1331252286585",
+      "exactInput": true,
+      "expectedAmountCalculated": "668091044410041545116"
+    },
+    {
+      "amountSpecified": "1394925795401954175456",
+      "exactInput": false,
+      "expectedAmountCalculated": "2857686098204"
+    },
+    {
+      "amountSpecified": "9237753674590929533703",
+      "exactInput": false,
+      "expectedAmountCalculated": "27176430453257"
+    },
+    {
+      "amountSpecified": "14005077141517726908601",
+      "exactInput": false,
+      "expectedAmountCalculated": "56190151700124"
+    },
+    {
+      "amountSpecified": "8266426778495829018502",
+      "exactInput": false,
+      "expectedAmountCalculated": "23068818610699"
+    },
+    {
+      "amountSpecified": "5913478449685954567318",
+      "exactInput": false,
+      "expectedAmountCalculated": "14680140483683"
+    },
+    {
+      "amountSpecified": "5280721720659878980125",
+      "exactInput": false,
+      "expectedAmountCalculated": "12731730956260"
+    },
+    {
+      "amountSpecified": "2470429844769563122581",
+      "exactInput": false,
+      "expectedAmountCalculated": "5280651765369"
+    },
+    {
+      "amountSpecified": "7091819773651816320160",
+      "exactInput": false,
+      "expectedAmountCalculated": "18634966761702"
+    },
+    {
+      "amountSpecified": "10060259949619348843040",
+      "exactInput": false,
+      "expectedAmountCalculated": "31021425675553"
+    },
+    {
+      "amountSpecified": "6576208870354253559406",
+      "exactInput": false,
+      "expectedAmountCalculated": "16848889158775"
+    },
+    {
+      "amountSpecified": "3861387685845728820483",
+      "exactInput": false,
+      "expectedAmountCalculated": "8744760892108"
+    },
+    {
+      "amountSpecified": "8405968132118884552594",
+      "exactInput": false,
+      "expectedAmountCalculated": "23632628160336"
+    },
+    {
+      "amountSpecified": "11729067998736025954656",
+      "exactInput": false,
+      "expectedAmountCalculated": "40089315430402"
+    },
+    {
+      "amountSpecified": "6637366835840405204096",
+      "exactInput": false,
+      "expectedAmountCalculated": "17056064087592"
+    },
+    {
+      "amountSpecified": "3443750214944490551104",
+      "exactInput": false,
+      "expectedAmountCalculated": "7662129164440"
+    },
+    {
+      "amountSpecified": "5630249840551753198225",
+      "exactInput": false,
+      "expectedAmountCalculated": "13793905555171"
+    },
+    {
+      "amountSpecified": "12562642771714682767448",
+      "exactInput": false,
+      "expectedAmountCalculated": "45399914337403"
+    },
+    {
+      "amountSpecified": "14721740834664263733662",
+      "exactInput": false,
+      "expectedAmountCalculated": "62488457184984"
+    },
+    {
+      "amountSpecified": "11058308075685316718256",
+      "exactInput": false,
+      "expectedAmountCalculated": "36217423779295"
+    },
+    {
+      "amountSpecified": "13046010862657623219945",
+      "exactInput": false,
+      "expectedAmountCalculated": "48768536230459"
+    },
+    {
+      "amountSpecified": "3923513129832387243904",
+      "exactInput": false,
+      "expectedAmountCalculated": "8909119695531"
+    },
+    {
+      "amountSpecified": "5341432844889179830368",
+      "exactInput": false,
+      "expectedAmountCalculated": "12913792602246"
+    },
+    {
+      "amountSpecified": "7585174771713538165094",
+      "exactInput": false,
+      "expectedAmountCalculated": "20432174170128"
+    },
+    {
+      "amountSpecified": "6080003555426230157299",
+      "exactInput": false,
+      "expectedAmountCalculated": "15212292169958"
+    },
+    {
+      "amountSpecified": "9586355873203592984018",
+      "exactInput": false,
+      "expectedAmountCalculated": "28761888603464"
+    },
+    {
+      "amountSpecified": "3836324979140622291040",
+      "exactInput": false,
+      "expectedAmountCalculated": "8678702029630"
+    },
+    {
+      "amountSpecified": "6586145586996810690339",
+      "exactInput": false,
+      "expectedAmountCalculated": "16882466640333"
+    },
+    {
+      "amountSpecified": "13966379641568601834225",
+      "exactInput": false,
+      "expectedAmountCalculated": "55869665640462"
+    },
+    {
+      "amountSpecified": "7600976895410341711955",
+      "exactInput": false,
+      "expectedAmountCalculated": "20491243338939"
+    },
+    {
+      "amountSpecified": "3890959366921201552384",
+      "exactInput": false,
+      "expectedAmountCalculated": "8822886566093"
+    },
+    {
+      "amountSpecified": "13010564228127002343406",
+      "exactInput": false,
+      "expectedAmountCalculated": "48513637311789"
+    },
+    {
+      "amountSpecified": "1693914895264944722944",
+      "exactInput": false,
+      "expectedAmountCalculated": "3510801142673"
+    },
+    {
+      "amountSpecified": "5155617549644150248521",
+      "exactInput": false,
+      "expectedAmountCalculated": "12359721563221"
+    },
+    {
+      "amountSpecified": "7290822472790981973248",
+      "exactInput": false,
+      "expectedAmountCalculated": "19349116743396"
+    },
+    {
+      "amountSpecified": "581735463534187739084",
+      "exactInput": false,
+      "expectedAmountCalculated": "1155425487455"
+    },
+    {
+      "amountSpecified": "9151879985439737795164",
+      "exactInput": false,
+      "expectedAmountCalculated": "26795340982540"
+    },
+    {
+      "amountSpecified": "8939765429671507616138",
+      "exactInput": false,
+      "expectedAmountCalculated": "25869488680503"
+    },
+    {
+      "amountSpecified": "13475407786091861051283",
+      "exactInput": false,
+      "expectedAmountCalculated": "51961924553448"
+    },
+    {
+      "amountSpecified": "13669292873410573153671",
+      "exactInput": false,
+      "expectedAmountCalculated": "53470887192141"
+    },
+    {
+      "amountSpecified": "4869209349793131416284",
+      "exactInput": false,
+      "expectedAmountCalculated": "11523719130730"
+    },
+    {
+      "amountSpecified": "8979469730793649730067",
+      "exactInput": false,
+      "expectedAmountCalculated": "26041141509443"
+    },
+    {
+      "amountSpecified": "2997190944540457160672",
+      "exactInput": false,
+      "expectedAmountCalculated": "6545775205837"
+    },
+    {
+      "amountSpecified": "12422103533916627860372",
+      "exactInput": false,
+      "expectedAmountCalculated": "44462199957027"
+    },
+    {
+      "amountSpecified": "1957063632429070291648",
+      "exactInput": false,
+      "expectedAmountCalculated": "4098402025243"
+    },
+    {
+      "amountSpecified": "13303527263648532096715",
+      "exactInput": false,
+      "expectedAmountCalculated": "50659755645037"
+    },
+    {
+      "amountSpecified": "3292259814092011717728",
+      "exactInput": false,
+      "expectedAmountCalculated": "7278753617855"
+    },
+    {
+      "amountSpecified": "2780169684472705501112",
+      "exactInput": false,
+      "expectedAmountCalculated": "6017956853473"
+    },
+    {
+      "amountSpecified": "3755378592342382398432",
+      "exactInput": false,
+      "expectedAmountCalculated": "8466310851040"
+    },
+    {
+      "amountSpecified": "3745691586351948465166",
+      "exactInput": false,
+      "expectedAmountCalculated": "8440991615724"
+    },
+    {
+      "amountSpecified": "7518414744524888197088",
+      "exactInput": false,
+      "expectedAmountCalculated": "20183675081791"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0xC5aF84701f98Fa483eCe78aF83F11b6C38ACA71D.json b/src/__tests__/stubs/swap/0xC5aF84701f98Fa483eCe78aF83F11b6C38ACA71D.json
new file mode 100644
index 00000000..f8c98b10
--- /dev/null
+++ b/src/__tests__/stubs/swap/0xC5aF84701f98Fa483eCe78aF83F11b6C38ACA71D.json
@@ -0,0 +1,1081 @@
+{
+  "poolName": "WETH - USDT 10000",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
+    "decimals": 6
+  },
+  "fee": 10000,
+  "liquidity": "1195608466398061992",
+  "sqrtRatioX96": "3475524941899941871752436",
+  "tickCurrent": -200697,
+  "ticks": [
+    {
+      "index": -414400,
+      "liquidityNet": "146690162039125",
+      "liquidityGross": "146690162039125"
+    },
+    {
+      "index": -359200,
+      "liquidityNet": "419448773100127",
+      "liquidityGross": "419448773100127"
+    },
+    {
+      "index": -357400,
+      "liquidityNet": "451942354858930",
+      "liquidityGross": "451942354858930"
+    },
+    {
+      "index": -356400,
+      "liquidityNet": "-419448773100127",
+      "liquidityGross": "419448773100127"
+    },
+    {
+      "index": -355000,
+      "liquidityNet": "-451942354858930",
+      "liquidityGross": "451942354858930"
+    },
+    {
+      "index": -344200,
+      "liquidityNet": "3502135572623270972",
+      "liquidityGross": "3502135572623270972"
+    },
+    {
+      "index": -342200,
+      "liquidityNet": "-3502135572623270972",
+      "liquidityGross": "3502135572623270972"
+    },
+    {
+      "index": -322400,
+      "liquidityNet": "899576784",
+      "liquidityGross": "899576784"
+    },
+    {
+      "index": -299400,
+      "liquidityNet": "32290717139",
+      "liquidityGross": "32290717139"
+    },
+    {
+      "index": -278600,
+      "liquidityNet": "14311034407",
+      "liquidityGross": "14311034407"
+    },
+    {
+      "index": -277400,
+      "liquidityNet": "19812295698",
+      "liquidityGross": "19812295698"
+    },
+    {
+      "index": -276600,
+      "liquidityNet": "14799801483",
+      "liquidityGross": "14799801483"
+    },
+    {
+      "index": -276400,
+      "liquidityNet": "8755146764407",
+      "liquidityGross": "8755146764407"
+    },
+    {
+      "index": -276000,
+      "liquidityNet": "32265332776",
+      "liquidityGross": "32265332776"
+    },
+    {
+      "index": -275600,
+      "liquidityNet": "18706495209",
+      "liquidityGross": "18706495209"
+    },
+    {
+      "index": -275400,
+      "liquidityNet": "19094175035",
+      "liquidityGross": "19094175035"
+    },
+    {
+      "index": -274600,
+      "liquidityNet": "20845473656",
+      "liquidityGross": "20845473656"
+    },
+    {
+      "index": -265400,
+      "liquidityNet": "17576958214",
+      "liquidityGross": "17576958214"
+    },
+    {
+      "index": -253200,
+      "liquidityNet": "187479826619",
+      "liquidityGross": "187479826619"
+    },
+    {
+      "index": -234400,
+      "liquidityNet": "4826024768",
+      "liquidityGross": "4826024768"
+    },
+    {
+      "index": -232600,
+      "liquidityNet": "-885509074099",
+      "liquidityGross": "885509074099"
+    },
+    {
+      "index": -231000,
+      "liquidityNet": "20057847093",
+      "liquidityGross": "20057847093"
+    },
+    {
+      "index": -227400,
+      "liquidityNet": "17979578507",
+      "liquidityGross": "17979578507"
+    },
+    {
+      "index": -223200,
+      "liquidityNet": "15430490130916",
+      "liquidityGross": "15430490130916"
+    },
+    {
+      "index": -216200,
+      "liquidityNet": "36636976702467",
+      "liquidityGross": "36636976702467"
+    },
+    {
+      "index": -215400,
+      "liquidityNet": "5967488376028",
+      "liquidityGross": "5967488376028"
+    },
+    {
+      "index": -215000,
+      "liquidityNet": "2190577310472",
+      "liquidityGross": "2190577310472"
+    },
+    {
+      "index": -214200,
+      "liquidityNet": "5374764797053",
+      "liquidityGross": "5376563950621"
+    },
+    {
+      "index": -213200,
+      "liquidityNet": "104469187898",
+      "liquidityGross": "104469187898"
+    },
+    {
+      "index": -212600,
+      "liquidityNet": "8282329270545",
+      "liquidityGross": "8282329270545"
+    },
+    {
+      "index": -212000,
+      "liquidityNet": "119766066482",
+      "liquidityGross": "119766066482"
+    },
+    {
+      "index": -211400,
+      "liquidityNet": "630656174262",
+      "liquidityGross": "630656174262"
+    },
+    {
+      "index": -210600,
+      "liquidityNet": "28254220475727",
+      "liquidityGross": "28254220475727"
+    },
+    {
+      "index": -209800,
+      "liquidityNet": "1757292996543697",
+      "liquidityGross": "1757292996543697"
+    },
+    {
+      "index": -209400,
+      "liquidityNet": "5535644336283",
+      "liquidityGross": "5535644336283"
+    },
+    {
+      "index": -208600,
+      "liquidityNet": "8950706421098",
+      "liquidityGross": "8950706421098"
+    },
+    {
+      "index": -208400,
+      "liquidityNet": "1128541744290",
+      "liquidityGross": "1128541744290"
+    },
+    {
+      "index": -208000,
+      "liquidityNet": "-28173882670413",
+      "liquidityGross": "28334558281041"
+    },
+    {
+      "index": -207800,
+      "liquidityNet": "102622729020",
+      "liquidityGross": "102622729020"
+    },
+    {
+      "index": -207200,
+      "liquidityNet": "11329290367011",
+      "liquidityGross": "11329290367011"
+    },
+    {
+      "index": -207000,
+      "liquidityNet": "-64509729298",
+      "liquidityGross": "64509729298"
+    },
+    {
+      "index": -206200,
+      "liquidityNet": "45979425885291",
+      "liquidityGross": "45979425885291"
+    },
+    {
+      "index": -205600,
+      "liquidityNet": "72474035526736",
+      "liquidityGross": "72474035526736"
+    },
+    {
+      "index": -205400,
+      "liquidityNet": "22010340084929333",
+      "liquidityGross": "22010340084929333"
+    },
+    {
+      "index": -204600,
+      "liquidityNet": "-72474035526736",
+      "liquidityGross": "72474035526736"
+    },
+    {
+      "index": -204200,
+      "liquidityNet": "-4206843533907",
+      "liquidityGross": "4206843533907"
+    },
+    {
+      "index": -203800,
+      "liquidityNet": "109987289261836",
+      "liquidityGross": "109987289261836"
+    },
+    {
+      "index": -203400,
+      "liquidityNet": "11846457098019",
+      "liquidityGross": "11846457098019"
+    },
+    {
+      "index": -203200,
+      "liquidityNet": "8508076308926723",
+      "liquidityGross": "8508076308926723"
+    },
+    {
+      "index": -202400,
+      "liquidityNet": "535386597671184475",
+      "liquidityGross": "535386597671184475"
+    },
+    {
+      "index": -202200,
+      "liquidityNet": "10736730037",
+      "liquidityGross": "10736730037"
+    },
+    {
+      "index": -201800,
+      "liquidityNet": "-21976113546559342",
+      "liquidityGross": "22044566623299324"
+    },
+    {
+      "index": -201600,
+      "liquidityNet": "649501874921039168",
+      "liquidityGross": "649501874921039168"
+    },
+    {
+      "index": -200600,
+      "liquidityNet": "5748204410952",
+      "liquidityGross": "5748204410952"
+    },
+    {
+      "index": -200400,
+      "liquidityNet": "-3406647412469",
+      "liquidityGross": "24654419950525"
+    },
+    {
+      "index": -200200,
+      "liquidityNet": "-32058881170660",
+      "liquidityGross": "32309954929032"
+    },
+    {
+      "index": -200000,
+      "liquidityNet": "-238512288610609",
+      "liquidityGross": "238512288610609"
+    },
+    {
+      "index": -199600,
+      "liquidityNet": "3042906290341",
+      "liquidityGross": "3042906290341"
+    },
+    {
+      "index": -199400,
+      "liquidityNet": "-3147375478239",
+      "liquidityGross": "3147375478239"
+    },
+    {
+      "index": -199000,
+      "liquidityNet": "97176554175227",
+      "liquidityGross": "97176554175227"
+    },
+    {
+      "index": -198800,
+      "liquidityNet": "-97176554175227",
+      "liquidityGross": "97176554175227"
+    },
+    {
+      "index": -198600,
+      "liquidityNet": "-5535644336283",
+      "liquidityGross": "5535644336283"
+    },
+    {
+      "index": -198400,
+      "liquidityNet": "-26330988296859",
+      "liquidityGross": "26330988296859"
+    },
+    {
+      "index": -198200,
+      "liquidityNet": "7387595974130",
+      "liquidityGross": "7627128107094"
+    },
+    {
+      "index": -198000,
+      "liquidityNet": "-6926729184770",
+      "liquidityGross": "8087994896454"
+    },
+    {
+      "index": -197800,
+      "liquidityNet": "1011760345123",
+      "liquidityGross": "1011760345123"
+    },
+    {
+      "index": -197400,
+      "liquidityNet": "15195215094782",
+      "liquidityGross": "15195215094782"
+    },
+    {
+      "index": -197200,
+      "liquidityNet": "1575371644913",
+      "liquidityGross": "1575371644913"
+    },
+    {
+      "index": -197000,
+      "liquidityNet": "-1575371644913",
+      "liquidityGross": "1575371644913"
+    },
+    {
+      "index": -196800,
+      "liquidityNet": "4285852416248",
+      "liquidityGross": "4285852416248"
+    },
+    {
+      "index": -196600,
+      "liquidityNet": "-4091388687082",
+      "liquidityGross": "4480316145414"
+    },
+    {
+      "index": -196200,
+      "liquidityNet": "-8539225251923",
+      "liquidityGross": "12004316162923"
+    },
+    {
+      "index": -196000,
+      "liquidityNet": "-1898841604898517",
+      "liquidityGross": "1905211179050099"
+    },
+    {
+      "index": -195800,
+      "liquidityNet": "171809229549785",
+      "liquidityGross": "171809229549785"
+    },
+    {
+      "index": -195400,
+      "liquidityNet": "19191658726460",
+      "liquidityGross": "19191658726460"
+    },
+    {
+      "index": -195200,
+      "liquidityNet": "641030934706645",
+      "liquidityGross": "641030934706645"
+    },
+    {
+      "index": -195000,
+      "liquidityNet": "906748246190775",
+      "liquidityGross": "980022199595709"
+    },
+    {
+      "index": -194800,
+      "liquidityNet": "-8559945972655577",
+      "liquidityGross": "9917791281599799"
+    },
+    {
+      "index": -194600,
+      "liquidityNet": "-1082039108789932",
+      "liquidityGross": "1120596714883096"
+    },
+    {
+      "index": -194400,
+      "liquidityNet": "-205264877911035",
+      "liquidityGross": "205471288605679"
+    },
+    {
+      "index": -194200,
+      "liquidityNet": "-11818230058127",
+      "liquidityGross": "11818230058127"
+    },
+    {
+      "index": -194000,
+      "liquidityNet": "-35633470603",
+      "liquidityGross": "2141436037669"
+    },
+    {
+      "index": -193800,
+      "liquidityNet": "-157330293089831",
+      "liquidityGross": "157330293089831"
+    },
+    {
+      "index": -193600,
+      "liquidityNet": "-4173244762462",
+      "liquidityGross": "26805788522158"
+    },
+    {
+      "index": -193400,
+      "liquidityNet": "-11756776641663",
+      "liquidityGross": "11756776641663"
+    },
+    {
+      "index": -193200,
+      "liquidityNet": "-12768653114847",
+      "liquidityGross": "12768653114847"
+    },
+    {
+      "index": -193000,
+      "liquidityNet": "-1556649562235",
+      "liquidityGross": "1556649562235"
+    },
+    {
+      "index": -192800,
+      "liquidityNet": "-1052901283533",
+      "liquidityGross": "1052901283533"
+    },
+    {
+      "index": -192400,
+      "liquidityNet": "-194463729166",
+      "liquidityGross": "194463729166"
+    },
+    {
+      "index": -192200,
+      "liquidityNet": "-12313221127286",
+      "liquidityGross": "12313221127286"
+    },
+    {
+      "index": -192000,
+      "liquidityNet": "-99482172234021",
+      "liquidityGross": "99482172234021"
+    },
+    {
+      "index": -191600,
+      "liquidityNet": "-113868826575",
+      "liquidityGross": "113868826575"
+    },
+    {
+      "index": -191200,
+      "liquidityNet": "-1606494506888",
+      "liquidityGross": "2084155194904"
+    },
+    {
+      "index": -191000,
+      "liquidityNet": "-9173343289660",
+      "liquidityGross": "9173343289660"
+    },
+    {
+      "index": -190600,
+      "liquidityNet": "-229803052462",
+      "liquidityGross": "229803052462"
+    },
+    {
+      "index": -189400,
+      "liquidityNet": "-61013724418594",
+      "liquidityGross": "61013724418594"
+    },
+    {
+      "index": -189000,
+      "liquidityNet": "-171494156584",
+      "liquidityGross": "171494156584"
+    },
+    {
+      "index": -188800,
+      "liquidityNet": "-2190577310472",
+      "liquidityGross": "2190577310472"
+    },
+    {
+      "index": -188200,
+      "liquidityNet": "-15562754805",
+      "liquidityGross": "15562754805"
+    },
+    {
+      "index": -188000,
+      "liquidityNet": "-981757577",
+      "liquidityGross": "981757577"
+    },
+    {
+      "index": -187800,
+      "liquidityNet": "-2042120320145",
+      "liquidityGross": "2042120320145"
+    },
+    {
+      "index": -186400,
+      "liquidityNet": "-4795323550355",
+      "liquidityGross": "4795323550355"
+    },
+    {
+      "index": -185400,
+      "liquidityNet": "-15430490130916",
+      "liquidityGross": "15430490130916"
+    },
+    {
+      "index": -185200,
+      "liquidityNet": "-15875510682",
+      "liquidityGross": "15875510682"
+    },
+    {
+      "index": -184200,
+      "liquidityNet": "-1184894167576178339",
+      "liquidityGross": "1184894167576178339"
+    },
+    {
+      "index": -183200,
+      "liquidityNet": "-17172598986",
+      "liquidityGross": "17172598986"
+    },
+    {
+      "index": -183000,
+      "liquidityNet": "-17979578507",
+      "liquidityGross": "17979578507"
+    },
+    {
+      "index": -177200,
+      "liquidityNet": "-1389267593088",
+      "liquidityGross": "1389267593088"
+    },
+    {
+      "index": -168200,
+      "liquidityNet": "-20057847093",
+      "liquidityGross": "20057847093"
+    },
+    {
+      "index": -161400,
+      "liquidityNet": "-34561850094",
+      "liquidityGross": "34561850094"
+    },
+    {
+      "index": -161200,
+      "liquidityNet": "-4331411812348",
+      "liquidityGross": "4331411812348"
+    },
+    {
+      "index": -138200,
+      "liquidityNet": "-17342965334",
+      "liquidityGross": "17342965334"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "2509299685327586368448",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408087538299"
+    },
+    {
+      "amountSpecified": "4414927747573876248544",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408117627580"
+    },
+    {
+      "amountSpecified": "6031410830359164005504",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408121124188"
+    },
+    {
+      "amountSpecified": "7562632195412259677888",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408123212768"
+    },
+    {
+      "amountSpecified": "12421373416400837682231",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408129839630"
+    },
+    {
+      "amountSpecified": "11768380046309821282593",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408128949049"
+    },
+    {
+      "amountSpecified": "8139042466059869808603",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408123998973"
+    },
+    {
+      "amountSpecified": "9491549509867910648756",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408125843709"
+    },
+    {
+      "amountSpecified": "6581996069123815301639",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408121875192"
+    },
+    {
+      "amountSpecified": "7488359979329216326656",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408123111463"
+    },
+    {
+      "amountSpecified": "9332758175188353751389",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408125627130"
+    },
+    {
+      "amountSpecified": "6494919838979694367174",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408121756420"
+    },
+    {
+      "amountSpecified": "3585090504549770055602",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408113149216"
+    },
+    {
+      "amountSpecified": "5965568492421059258944",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408121034378"
+    },
+    {
+      "amountSpecified": "9846789139297455091958",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408126328226"
+    },
+    {
+      "amountSpecified": "10352944183360985586628",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408127018572"
+    },
+    {
+      "amountSpecified": "8901631259325988903328",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408125039103"
+    },
+    {
+      "amountSpecified": "4386566505645930151151",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408117524883"
+    },
+    {
+      "amountSpecified": "14826715149767178646978",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408133120038"
+    },
+    {
+      "amountSpecified": "10970441068712145000",
+      "exactInput": true,
+      "expectedAmountCalculated": "20891417585"
+    },
+    {
+      "amountSpecified": "11190993948465889658406",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408128161573"
+    },
+    {
+      "amountSpecified": "6249339208272446511856",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408121421445"
+    },
+    {
+      "amountSpecified": "14067276146617724938368",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408132084332"
+    },
+    {
+      "amountSpecified": "12888451423728639888858",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408130476645"
+    },
+    {
+      "amountSpecified": "6049367341161878539889",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408121148681"
+    },
+    {
+      "amountSpecified": "7928796660063123142986",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408123712206"
+    },
+    {
+      "amountSpecified": "10442405753422916168324",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408127140588"
+    },
+    {
+      "amountSpecified": "14685399593055622052686",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408132927316"
+    },
+    {
+      "amountSpecified": "3388307283890830193056",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408111328871"
+    },
+    {
+      "amountSpecified": "5004935976085736652696",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408119331459"
+    },
+    {
+      "amountSpecified": "6663759648991084743149",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408121986718"
+    },
+    {
+      "amountSpecified": "13211300258607252561408",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408130916952"
+    },
+    {
+      "amountSpecified": "3927810987006704208507",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408115454455"
+    },
+    {
+      "amountSpecified": "8486783921629738714153",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408124473276"
+    },
+    {
+      "amountSpecified": "11131726095601378006455",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408128080740"
+    },
+    {
+      "amountSpecified": "8580357977583300532486",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408124600906"
+    },
+    {
+      "amountSpecified": "4420938158888145983104",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408117649041"
+    },
+    {
+      "amountSpecified": "6933668677282617482816",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408122354872"
+    },
+    {
+      "amountSpecified": "11280837024819868481596",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408128284108"
+    },
+    {
+      "amountSpecified": "2727125155629954682176",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408098454137"
+    },
+    {
+      "amountSpecified": "583676957551025933276",
+      "exactInput": true,
+      "expectedAmountCalculated": "1088875173726"
+    },
+    {
+      "amountSpecified": "6034415270033264202227",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408121128286"
+    },
+    {
+      "amountSpecified": "10589210578070507133308",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408127340813"
+    },
+    {
+      "amountSpecified": "493411450201555783584",
+      "exactInput": true,
+      "expectedAmountCalculated": "923445770932"
+    },
+    {
+      "amountSpecified": "6697232898497237948369",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408122032375"
+    },
+    {
+      "amountSpecified": "8986200899332254479899",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408125154451"
+    },
+    {
+      "amountSpecified": "14664589392794411619152",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408132898936"
+    },
+    {
+      "amountSpecified": "10832211292106747179617",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408127672238"
+    },
+    {
+      "amountSpecified": "14630794327221151953999",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408132852847"
+    },
+    {
+      "amountSpecified": "6134050697374476464129",
+      "exactInput": true,
+      "expectedAmountCalculated": "3408121264190"
+    },
+    {
+      "amountSpecified": "755163311732",
+      "exactInput": false,
+      "expectedAmountCalculated": "402181963603137723857"
+    },
+    {
+      "amountSpecified": "3051653475832",
+      "exactInput": false,
+      "expectedAmountCalculated": "1708270009459966963149"
+    },
+    {
+      "amountSpecified": "651099701497",
+      "exactInput": false,
+      "expectedAmountCalculated": "346063503372007910500"
+    },
+    {
+      "amountSpecified": "2287474071552",
+      "exactInput": false,
+      "expectedAmountCalculated": "1255469436012658152330"
+    },
+    {
+      "amountSpecified": "1972215896649",
+      "exactInput": false,
+      "expectedAmountCalculated": "1075680838358688672732"
+    },
+    {
+      "amountSpecified": "3084871949286",
+      "exactInput": false,
+      "expectedAmountCalculated": "1728636577160521577549"
+    },
+    {
+      "amountSpecified": "3179077827209",
+      "exactInput": false,
+      "expectedAmountCalculated": "1786715840252374440972"
+    },
+    {
+      "amountSpecified": "3355369854205",
+      "exactInput": false,
+      "expectedAmountCalculated": "1904032959397782082095"
+    },
+    {
+      "amountSpecified": "98206692535",
+      "exactInput": false,
+      "expectedAmountCalculated": "51646179175760476923"
+    },
+    {
+      "amountSpecified": "1662492081244",
+      "exactInput": false,
+      "expectedAmountCalculated": "901222118706716355928"
+    },
+    {
+      "amountSpecified": "1216964057205",
+      "exactInput": false,
+      "expectedAmountCalculated": "653968272172535266422"
+    },
+    {
+      "amountSpecified": "2467865810121",
+      "exactInput": false,
+      "expectedAmountCalculated": "1359684375226739305604"
+    },
+    {
+      "amountSpecified": "2373708977842",
+      "exactInput": false,
+      "expectedAmountCalculated": "1305088862274649240567"
+    },
+    {
+      "amountSpecified": "2497465007836",
+      "exactInput": false,
+      "expectedAmountCalculated": "1376940552039591580032"
+    },
+    {
+      "amountSpecified": "148700109158",
+      "exactInput": false,
+      "expectedAmountCalculated": "78275796471215966708"
+    },
+    {
+      "amountSpecified": "2826798648890",
+      "exactInput": false,
+      "expectedAmountCalculated": "1571936321017681047308"
+    },
+    {
+      "amountSpecified": "399607535614",
+      "exactInput": false,
+      "expectedAmountCalculated": "211367605570253225825"
+    },
+    {
+      "amountSpecified": "2838020606476",
+      "exactInput": false,
+      "expectedAmountCalculated": "1578677987612481111536"
+    },
+    {
+      "amountSpecified": "1253191460061",
+      "exactInput": false,
+      "expectedAmountCalculated": "673912586719489127383"
+    },
+    {
+      "amountSpecified": "3268602067365",
+      "exactInput": false,
+      "expectedAmountCalculated": "1842715457981553642080"
+    },
+    {
+      "amountSpecified": "2940835327872",
+      "exactInput": false,
+      "expectedAmountCalculated": "1640748418513407350020"
+    },
+    {
+      "amountSpecified": "1782642774270",
+      "exactInput": false,
+      "expectedAmountCalculated": "968646400477083856652"
+    },
+    {
+      "amountSpecified": "712850302074",
+      "exactInput": false,
+      "expectedAmountCalculated": "379336560018663921770"
+    },
+    {
+      "amountSpecified": "2731821148409",
+      "exactInput": false,
+      "expectedAmountCalculated": "1515136963432933000213"
+    },
+    {
+      "amountSpecified": "2806598030460",
+      "exactInput": false,
+      "expectedAmountCalculated": "1559817015777120698678"
+    },
+    {
+      "amountSpecified": "966045902210",
+      "exactInput": false,
+      "expectedAmountCalculated": "516600484169053379041"
+    },
+    {
+      "amountSpecified": "674299440605",
+      "exactInput": false,
+      "expectedAmountCalculated": "358554903435738754259"
+    },
+    {
+      "amountSpecified": "1351749148813",
+      "exactInput": false,
+      "expectedAmountCalculated": "728314794518092940047"
+    },
+    {
+      "amountSpecified": "1227509809295",
+      "exactInput": false,
+      "expectedAmountCalculated": "659771126458210771265"
+    },
+    {
+      "amountSpecified": "1574021710866",
+      "exactInput": false,
+      "expectedAmountCalculated": "851779290325481556843"
+    },
+    {
+      "amountSpecified": "2352704644411",
+      "exactInput": false,
+      "expectedAmountCalculated": "1292971145676858295091"
+    },
+    {
+      "amountSpecified": "2944717954555",
+      "exactInput": false,
+      "expectedAmountCalculated": "1643103193486483438327"
+    },
+    {
+      "amountSpecified": "256953946661",
+      "exactInput": false,
+      "expectedAmountCalculated": "135541214432294662467"
+    },
+    {
+      "amountSpecified": "2028385620221",
+      "exactInput": false,
+      "expectedAmountCalculated": "1107549266332353563889"
+    },
+    {
+      "amountSpecified": "3236294207850",
+      "exactInput": false,
+      "expectedAmountCalculated": "1822223900670966102674"
+    },
+    {
+      "amountSpecified": "212993193465",
+      "exactInput": false,
+      "expectedAmountCalculated": "112257703017521803158"
+    },
+    {
+      "amountSpecified": "1897558689985",
+      "exactInput": false,
+      "expectedAmountCalculated": "1033432983588574607359"
+    },
+    {
+      "amountSpecified": "2439732012378",
+      "exactInput": false,
+      "expectedAmountCalculated": "1343324097515965439199"
+    },
+    {
+      "amountSpecified": "2126914992937",
+      "exactInput": false,
+      "expectedAmountCalculated": "1163622699453301858069"
+    },
+    {
+      "amountSpecified": "1439774354979",
+      "exactInput": false,
+      "expectedAmountCalculated": "777080978046151525320"
+    },
+    {
+      "amountSpecified": "4504746338",
+      "exactInput": false,
+      "expectedAmountCalculated": "2364780293883099458"
+    },
+    {
+      "amountSpecified": "943106360207",
+      "exactInput": false,
+      "expectedAmountCalculated": "504108765055701436818"
+    },
+    {
+      "amountSpecified": "1494760541926",
+      "exactInput": false,
+      "expectedAmountCalculated": "807628962048713528221"
+    },
+    {
+      "amountSpecified": "2712893477800",
+      "exactInput": false,
+      "expectedAmountCalculated": "1503872723548226782670"
+    },
+    {
+      "amountSpecified": "1198680867742",
+      "exactInput": false,
+      "expectedAmountCalculated": "643913512416548661776"
+    },
+    {
+      "amountSpecified": "686689723502",
+      "exactInput": false,
+      "expectedAmountCalculated": "365230771543146159489"
+    },
+    {
+      "amountSpecified": "3475229401005",
+      "exactInput": false,
+      "expectedAmountCalculated": "10178485805876882491193985"
+    },
+    {
+      "amountSpecified": "1812586650601",
+      "exactInput": false,
+      "expectedAmountCalculated": "985499644427210313344"
+    },
+    {
+      "amountSpecified": "166512411270",
+      "exactInput": false,
+      "expectedAmountCalculated": "87682062414375757388"
+    },
+    {
+      "amountSpecified": "1135370214397",
+      "exactInput": false,
+      "expectedAmountCalculated": "609151460798104935527"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0xCBCdF9626bC03E24f779434178A73a0B4bad62eD-reversed.json b/src/__tests__/stubs/swap/0xCBCdF9626bC03E24f779434178A73a0B4bad62eD-reversed.json
new file mode 100644
index 00000000..b4cd3072
--- /dev/null
+++ b/src/__tests__/stubs/swap/0xCBCdF9626bC03E24f779434178A73a0B4bad62eD-reversed.json
@@ -0,0 +1,2571 @@
+{
+  "poolName": "WBTC - WETH 3000 - reversed",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
+    "decimals": 8
+  },
+  "fee": 3000,
+  "liquidity": "1826992573206841143",
+  "sqrtRatioX96": "31591175518489111072165776310393141",
+  "tickCurrent": 257934,
+  "ticks": [
+    {
+      "index": -887220,
+      "liquidityNet": "82174936226787",
+      "liquidityGross": "82174936226787"
+    },
+    {
+      "index": -887160,
+      "liquidityNet": "80064092962998",
+      "liquidityGross": "80064092962998"
+    },
+    {
+      "index": -92100,
+      "liquidityNet": "456406095307",
+      "liquidityGross": "456406095307"
+    },
+    {
+      "index": 0,
+      "liquidityNet": "10943161472679",
+      "liquidityGross": "10943161472679"
+    },
+    {
+      "index": 92040,
+      "liquidityNet": "1620915153",
+      "liquidityGross": "1620915153"
+    },
+    {
+      "index": 92100,
+      "liquidityNet": "3974353998848",
+      "liquidityGross": "3974353998848"
+    },
+    {
+      "index": 152640,
+      "liquidityNet": "40166358066529",
+      "liquidityGross": "40166358066529"
+    },
+    {
+      "index": 152880,
+      "liquidityNet": "-40166358066529",
+      "liquidityGross": "40166358066529"
+    },
+    {
+      "index": 153360,
+      "liquidityNet": "155684471699734",
+      "liquidityGross": "155684471699734"
+    },
+    {
+      "index": 153420,
+      "liquidityNet": "-155684471699734",
+      "liquidityGross": "155684471699734"
+    },
+    {
+      "index": 161220,
+      "liquidityNet": "181470429131796",
+      "liquidityGross": "181470429131796"
+    },
+    {
+      "index": 176220,
+      "liquidityNet": "358354299830",
+      "liquidityGross": "358354299830"
+    },
+    {
+      "index": 183180,
+      "liquidityNet": "-358354299830",
+      "liquidityGross": "358354299830"
+    },
+    {
+      "index": 184200,
+      "liquidityNet": "-79344120619876",
+      "liquidityGross": "80784065306120"
+    },
+    {
+      "index": 206580,
+      "liquidityNet": "54402074932",
+      "liquidityGross": "54402074932"
+    },
+    {
+      "index": 206640,
+      "liquidityNet": "-54402074932",
+      "liquidityGross": "54402074932"
+    },
+    {
+      "index": 214920,
+      "liquidityNet": "31454785349939",
+      "liquidityGross": "31454785349939"
+    },
+    {
+      "index": 216420,
+      "liquidityNet": "3151604679224",
+      "liquidityGross": "3151604679224"
+    },
+    {
+      "index": 217740,
+      "liquidityNet": "-31454785349939",
+      "liquidityGross": "31454785349939"
+    },
+    {
+      "index": 223320,
+      "liquidityNet": "340095002",
+      "liquidityGross": "340095002"
+    },
+    {
+      "index": 230100,
+      "liquidityNet": "10499785476924",
+      "liquidityGross": "10499785476924"
+    },
+    {
+      "index": 230160,
+      "liquidityNet": "1670921212240",
+      "liquidityGross": "1670921212240"
+    },
+    {
+      "index": 230220,
+      "liquidityNet": "248504515915",
+      "liquidityGross": "248504515915"
+    },
+    {
+      "index": 230280,
+      "liquidityNet": "11377831611211",
+      "liquidityGross": "14720354225695"
+    },
+    {
+      "index": 231180,
+      "liquidityNet": "10325006026",
+      "liquidityGross": "10325006026"
+    },
+    {
+      "index": 231240,
+      "liquidityNet": "9636087679",
+      "liquidityGross": "9636087679"
+    },
+    {
+      "index": 231300,
+      "liquidityNet": "4067292562252",
+      "liquidityGross": "4067292562252"
+    },
+    {
+      "index": 231360,
+      "liquidityNet": "10098305733",
+      "liquidityGross": "10098305733"
+    },
+    {
+      "index": 231420,
+      "liquidityNet": "105440390087",
+      "liquidityGross": "105440390087"
+    },
+    {
+      "index": 231480,
+      "liquidityNet": "389377464792",
+      "liquidityGross": "389377464792"
+    },
+    {
+      "index": 231540,
+      "liquidityNet": "62725860270",
+      "liquidityGross": "62725860270"
+    },
+    {
+      "index": 234060,
+      "liquidityNet": "24418298514298",
+      "liquidityGross": "24418298514298"
+    },
+    {
+      "index": 234300,
+      "liquidityNet": "-379213263309",
+      "liquidityGross": "379213263309"
+    },
+    {
+      "index": 235620,
+      "liquidityNet": "13143858905286",
+      "liquidityGross": "13143858905286"
+    },
+    {
+      "index": 237180,
+      "liquidityNet": "4066391507115",
+      "liquidityGross": "4218743418661"
+    },
+    {
+      "index": 237300,
+      "liquidityNet": "2512358234332724",
+      "liquidityGross": "2512358234332724"
+    },
+    {
+      "index": 237420,
+      "liquidityNet": "788243782725",
+      "liquidityGross": "788243782725"
+    },
+    {
+      "index": 239460,
+      "liquidityNet": "8584538262056",
+      "liquidityGross": "8584538262056"
+    },
+    {
+      "index": 239760,
+      "liquidityNet": "3095863280482",
+      "liquidityGross": "3095863280482"
+    },
+    {
+      "index": 240420,
+      "liquidityNet": "12999196246833",
+      "liquidityGross": "12999196246833"
+    },
+    {
+      "index": 240780,
+      "liquidityNet": "7818819408261",
+      "liquidityGross": "7818819408261"
+    },
+    {
+      "index": 241260,
+      "liquidityNet": "1856215464927",
+      "liquidityGross": "1856215464927"
+    },
+    {
+      "index": 241380,
+      "liquidityNet": "7814421206784",
+      "liquidityGross": "7814421206784"
+    },
+    {
+      "index": 242340,
+      "liquidityNet": "3373862096954",
+      "liquidityGross": "3373862096954"
+    },
+    {
+      "index": 242820,
+      "liquidityNet": "2611786952298",
+      "liquidityGross": "2611786952298"
+    },
+    {
+      "index": 243360,
+      "liquidityNet": "103000565770",
+      "liquidityGross": "103000565770"
+    },
+    {
+      "index": 244140,
+      "liquidityNet": "217561198854734",
+      "liquidityGross": "217561198854734"
+    },
+    {
+      "index": 244860,
+      "liquidityNet": "893004067318",
+      "liquidityGross": "893004067318"
+    },
+    {
+      "index": 245520,
+      "liquidityNet": "266126101590362",
+      "liquidityGross": "266126101590362"
+    },
+    {
+      "index": 245700,
+      "liquidityNet": "16758180163",
+      "liquidityGross": "16758180163"
+    },
+    {
+      "index": 245940,
+      "liquidityNet": "76701235421656",
+      "liquidityGross": "76701235421656"
+    },
+    {
+      "index": 246180,
+      "liquidityNet": "4890971540",
+      "liquidityGross": "4890971540"
+    },
+    {
+      "index": 246360,
+      "liquidityNet": "1235247247938725",
+      "liquidityGross": "1235247247938725"
+    },
+    {
+      "index": 246420,
+      "liquidityNet": "69925333162032",
+      "liquidityGross": "69925333162032"
+    },
+    {
+      "index": 246480,
+      "liquidityNet": "83562433586",
+      "liquidityGross": "83562433586"
+    },
+    {
+      "index": 246540,
+      "liquidityNet": "837767553892",
+      "liquidityGross": "837767553892"
+    },
+    {
+      "index": 246600,
+      "liquidityNet": "4814170393189",
+      "liquidityGross": "4814170393189"
+    },
+    {
+      "index": 246660,
+      "liquidityNet": "14690532940788",
+      "liquidityGross": "14690532940788"
+    },
+    {
+      "index": 246720,
+      "liquidityNet": "243908811117210",
+      "liquidityGross": "243908811117210"
+    },
+    {
+      "index": 246780,
+      "liquidityNet": "233944583115",
+      "liquidityGross": "233944583115"
+    },
+    {
+      "index": 246840,
+      "liquidityNet": "1143995552",
+      "liquidityGross": "1143995552"
+    },
+    {
+      "index": 246900,
+      "liquidityNet": "263365923015",
+      "liquidityGross": "263365923015"
+    },
+    {
+      "index": 246960,
+      "liquidityNet": "14264473913293",
+      "liquidityGross": "14264473913293"
+    },
+    {
+      "index": 247320,
+      "liquidityNet": "48519918747269",
+      "liquidityGross": "48519918747269"
+    },
+    {
+      "index": 247380,
+      "liquidityNet": "117622952159219",
+      "liquidityGross": "117622952159219"
+    },
+    {
+      "index": 247440,
+      "liquidityNet": "665770897850117",
+      "liquidityGross": "665770897850117"
+    },
+    {
+      "index": 247620,
+      "liquidityNet": "487875820420",
+      "liquidityGross": "487875820420"
+    },
+    {
+      "index": 247740,
+      "liquidityNet": "11523276594189",
+      "liquidityGross": "11523276594189"
+    },
+    {
+      "index": 247860,
+      "liquidityNet": "1649567047148",
+      "liquidityGross": "1649567047148"
+    },
+    {
+      "index": 247920,
+      "liquidityNet": "5342639837069495",
+      "liquidityGross": "5342639837069495"
+    },
+    {
+      "index": 247980,
+      "liquidityNet": "23028334649368",
+      "liquidityGross": "23028334649368"
+    },
+    {
+      "index": 248040,
+      "liquidityNet": "252942942781",
+      "liquidityGross": "252942942781"
+    },
+    {
+      "index": 248100,
+      "liquidityNet": "24372131940667",
+      "liquidityGross": "24372131940667"
+    },
+    {
+      "index": 248160,
+      "liquidityNet": "102373720892200",
+      "liquidityGross": "102373720892200"
+    },
+    {
+      "index": 248280,
+      "liquidityNet": "5974932615038",
+      "liquidityGross": "5974932615038"
+    },
+    {
+      "index": 248340,
+      "liquidityNet": "745663361773900",
+      "liquidityGross": "745663361773900"
+    },
+    {
+      "index": 248400,
+      "liquidityNet": "106096220552937",
+      "liquidityGross": "106096220552937"
+    },
+    {
+      "index": 248460,
+      "liquidityNet": "15823287912623",
+      "liquidityGross": "15823287912623"
+    },
+    {
+      "index": 248520,
+      "liquidityNet": "339165199161295",
+      "liquidityGross": "339165199161295"
+    },
+    {
+      "index": 248580,
+      "liquidityNet": "96340504853",
+      "liquidityGross": "96340504853"
+    },
+    {
+      "index": 248640,
+      "liquidityNet": "34036669144137",
+      "liquidityGross": "34036669144137"
+    },
+    {
+      "index": 248700,
+      "liquidityNet": "106728159577006",
+      "liquidityGross": "106728159577006"
+    },
+    {
+      "index": 248760,
+      "liquidityNet": "130017625795223",
+      "liquidityGross": "130017625795223"
+    },
+    {
+      "index": 248820,
+      "liquidityNet": "231267402130471",
+      "liquidityGross": "231267402130471"
+    },
+    {
+      "index": 248880,
+      "liquidityNet": "1191600446578",
+      "liquidityGross": "1191600446578"
+    },
+    {
+      "index": 248940,
+      "liquidityNet": "10262040820492",
+      "liquidityGross": "10262040820492"
+    },
+    {
+      "index": 249000,
+      "liquidityNet": "375045998526336",
+      "liquidityGross": "375045998526336"
+    },
+    {
+      "index": 249060,
+      "liquidityNet": "14220938232775",
+      "liquidityGross": "14220938232775"
+    },
+    {
+      "index": 249120,
+      "liquidityNet": "8546121898214",
+      "liquidityGross": "8546121898214"
+    },
+    {
+      "index": 249180,
+      "liquidityNet": "805435724180",
+      "liquidityGross": "805435724180"
+    },
+    {
+      "index": 249240,
+      "liquidityNet": "2458914255421348",
+      "liquidityGross": "2458914255421348"
+    },
+    {
+      "index": 249300,
+      "liquidityNet": "753689707471433",
+      "liquidityGross": "753689707471433"
+    },
+    {
+      "index": 249360,
+      "liquidityNet": "250509876783271",
+      "liquidityGross": "250509876783271"
+    },
+    {
+      "index": 249420,
+      "liquidityNet": "15459403677425",
+      "liquidityGross": "15459403677425"
+    },
+    {
+      "index": 249480,
+      "liquidityNet": "204634341236947",
+      "liquidityGross": "204634341236947"
+    },
+    {
+      "index": 249540,
+      "liquidityNet": "536139191751638",
+      "liquidityGross": "536139191751638"
+    },
+    {
+      "index": 249600,
+      "liquidityNet": "1362751680139023",
+      "liquidityGross": "1362751680139023"
+    },
+    {
+      "index": 249660,
+      "liquidityNet": "75072282227263",
+      "liquidityGross": "75072282227263"
+    },
+    {
+      "index": 249720,
+      "liquidityNet": "128404454018236",
+      "liquidityGross": "128404454018236"
+    },
+    {
+      "index": 249780,
+      "liquidityNet": "752941312872158",
+      "liquidityGross": "752941312872158"
+    },
+    {
+      "index": 249840,
+      "liquidityNet": "150303272592282",
+      "liquidityGross": "150303272592282"
+    },
+    {
+      "index": 249900,
+      "liquidityNet": "2999000185960519",
+      "liquidityGross": "2999000185960519"
+    },
+    {
+      "index": 249960,
+      "liquidityNet": "1897487030889456",
+      "liquidityGross": "1897487030889456"
+    },
+    {
+      "index": 250020,
+      "liquidityNet": "338541271525525",
+      "liquidityGross": "338541271525525"
+    },
+    {
+      "index": 250080,
+      "liquidityNet": "1019910411632819",
+      "liquidityGross": "1019910411632819"
+    },
+    {
+      "index": 250140,
+      "liquidityNet": "349559136168929",
+      "liquidityGross": "349559136168929"
+    },
+    {
+      "index": 250200,
+      "liquidityNet": "357255210710225",
+      "liquidityGross": "357255210710225"
+    },
+    {
+      "index": 250260,
+      "liquidityNet": "236399678077506",
+      "liquidityGross": "236399678077506"
+    },
+    {
+      "index": 250320,
+      "liquidityNet": "149802042174914",
+      "liquidityGross": "149802042174914"
+    },
+    {
+      "index": 250380,
+      "liquidityNet": "22684152997344",
+      "liquidityGross": "22684152997344"
+    },
+    {
+      "index": 250440,
+      "liquidityNet": "162814016216893",
+      "liquidityGross": "162814016216893"
+    },
+    {
+      "index": 250500,
+      "liquidityNet": "2873122593562261",
+      "liquidityGross": "2873122593562261"
+    },
+    {
+      "index": 250560,
+      "liquidityNet": "721265962680257",
+      "liquidityGross": "721265962680257"
+    },
+    {
+      "index": 250620,
+      "liquidityNet": "3321833231733709",
+      "liquidityGross": "3321833231733709"
+    },
+    {
+      "index": 250680,
+      "liquidityNet": "379136360814294",
+      "liquidityGross": "379136360814294"
+    },
+    {
+      "index": 250740,
+      "liquidityNet": "30685778627595",
+      "liquidityGross": "30685778627595"
+    },
+    {
+      "index": 250800,
+      "liquidityNet": "486676008472444",
+      "liquidityGross": "486676008472444"
+    },
+    {
+      "index": 250860,
+      "liquidityNet": "495251715841078",
+      "liquidityGross": "495251715841078"
+    },
+    {
+      "index": 250920,
+      "liquidityNet": "546196098082915",
+      "liquidityGross": "546196098082915"
+    },
+    {
+      "index": 250980,
+      "liquidityNet": "17457607258488",
+      "liquidityGross": "17457607258488"
+    },
+    {
+      "index": 251040,
+      "liquidityNet": "18739094027110",
+      "liquidityGross": "18739094027110"
+    },
+    {
+      "index": 251100,
+      "liquidityNet": "116746369690747",
+      "liquidityGross": "116746369690747"
+    },
+    {
+      "index": 251160,
+      "liquidityNet": "26215123110965",
+      "liquidityGross": "26215123110965"
+    },
+    {
+      "index": 251220,
+      "liquidityNet": "1969053748268138",
+      "liquidityGross": "1969053748268138"
+    },
+    {
+      "index": 251280,
+      "liquidityNet": "1744914434361",
+      "liquidityGross": "1744914434361"
+    },
+    {
+      "index": 251340,
+      "liquidityNet": "180353178844777",
+      "liquidityGross": "180353178844777"
+    },
+    {
+      "index": 251400,
+      "liquidityNet": "128509974135464",
+      "liquidityGross": "128509974135464"
+    },
+    {
+      "index": 251460,
+      "liquidityNet": "540981291328174",
+      "liquidityGross": "540981291328174"
+    },
+    {
+      "index": 251520,
+      "liquidityNet": "5731476751822266",
+      "liquidityGross": "5731476751822266"
+    },
+    {
+      "index": 251580,
+      "liquidityNet": "26703188780726",
+      "liquidityGross": "26703188780726"
+    },
+    {
+      "index": 251640,
+      "liquidityNet": "506062280322839",
+      "liquidityGross": "506062280322839"
+    },
+    {
+      "index": 251700,
+      "liquidityNet": "244084381320927",
+      "liquidityGross": "244084381320927"
+    },
+    {
+      "index": 251760,
+      "liquidityNet": "472259833373720",
+      "liquidityGross": "472259833373720"
+    },
+    {
+      "index": 251820,
+      "liquidityNet": "72486190536708",
+      "liquidityGross": "72486190536708"
+    },
+    {
+      "index": 251880,
+      "liquidityNet": "931553309070",
+      "liquidityGross": "931553309070"
+    },
+    {
+      "index": 251940,
+      "liquidityNet": "293375936683379",
+      "liquidityGross": "293375936683379"
+    },
+    {
+      "index": 252000,
+      "liquidityNet": "103709076861484",
+      "liquidityGross": "103709076861484"
+    },
+    {
+      "index": 252060,
+      "liquidityNet": "10396565017847",
+      "liquidityGross": "10396565017847"
+    },
+    {
+      "index": 252120,
+      "liquidityNet": "219076530609482",
+      "liquidityGross": "219076530609482"
+    },
+    {
+      "index": 252180,
+      "liquidityNet": "156092492819634",
+      "liquidityGross": "156092492819634"
+    },
+    {
+      "index": 252240,
+      "liquidityNet": "1115420578481664",
+      "liquidityGross": "1115420578481664"
+    },
+    {
+      "index": 252300,
+      "liquidityNet": "7031828617233349",
+      "liquidityGross": "7031828617233349"
+    },
+    {
+      "index": 252360,
+      "liquidityNet": "733766399181670",
+      "liquidityGross": "733766399181670"
+    },
+    {
+      "index": 252420,
+      "liquidityNet": "84805612483975",
+      "liquidityGross": "84805612483975"
+    },
+    {
+      "index": 252480,
+      "liquidityNet": "9463874529391447",
+      "liquidityGross": "9463874529391447"
+    },
+    {
+      "index": 252540,
+      "liquidityNet": "7619953195446359",
+      "liquidityGross": "7619953195446359"
+    },
+    {
+      "index": 252600,
+      "liquidityNet": "16406775025846",
+      "liquidityGross": "16406775025846"
+    },
+    {
+      "index": 252660,
+      "liquidityNet": "2212907952699581",
+      "liquidityGross": "2212907952699581"
+    },
+    {
+      "index": 252720,
+      "liquidityNet": "30877568635642",
+      "liquidityGross": "30877568635642"
+    },
+    {
+      "index": 252780,
+      "liquidityNet": "1127243612814164",
+      "liquidityGross": "1127243612814164"
+    },
+    {
+      "index": 252840,
+      "liquidityNet": "121022273918801",
+      "liquidityGross": "121022273918801"
+    },
+    {
+      "index": 252900,
+      "liquidityNet": "3444505408543",
+      "liquidityGross": "3444505408543"
+    },
+    {
+      "index": 252960,
+      "liquidityNet": "2921179233331",
+      "liquidityGross": "2921179233331"
+    },
+    {
+      "index": 253020,
+      "liquidityNet": "16328660267242",
+      "liquidityGross": "16328660267242"
+    },
+    {
+      "index": 253080,
+      "liquidityNet": "280182070401033",
+      "liquidityGross": "280182070401033"
+    },
+    {
+      "index": 253140,
+      "liquidityNet": "60418933087985",
+      "liquidityGross": "60418933087985"
+    },
+    {
+      "index": 253200,
+      "liquidityNet": "2221329753927173",
+      "liquidityGross": "2221329753927173"
+    },
+    {
+      "index": 253260,
+      "liquidityNet": "785975068283793",
+      "liquidityGross": "785975068283793"
+    },
+    {
+      "index": 253320,
+      "liquidityNet": "11068031251918845",
+      "liquidityGross": "11068031251918845"
+    },
+    {
+      "index": 253380,
+      "liquidityNet": "1045385900711870",
+      "liquidityGross": "1045385900711870"
+    },
+    {
+      "index": 253440,
+      "liquidityNet": "52071127547319",
+      "liquidityGross": "52071127547319"
+    },
+    {
+      "index": 253500,
+      "liquidityNet": "905430992202364",
+      "liquidityGross": "905430992202364"
+    },
+    {
+      "index": 253560,
+      "liquidityNet": "743934772353060",
+      "liquidityGross": "743934772353060"
+    },
+    {
+      "index": 253620,
+      "liquidityNet": "1720814520558933",
+      "liquidityGross": "1720814520558933"
+    },
+    {
+      "index": 253680,
+      "liquidityNet": "1694339960854588",
+      "liquidityGross": "1694339960854588"
+    },
+    {
+      "index": 253740,
+      "liquidityNet": "1265620344704839",
+      "liquidityGross": "1265620344704839"
+    },
+    {
+      "index": 253800,
+      "liquidityNet": "6822448654094831",
+      "liquidityGross": "6822448654094831"
+    },
+    {
+      "index": 253860,
+      "liquidityNet": "1693329952501742",
+      "liquidityGross": "1693329952501742"
+    },
+    {
+      "index": 253920,
+      "liquidityNet": "125002317687877",
+      "liquidityGross": "125002317687877"
+    },
+    {
+      "index": 253980,
+      "liquidityNet": "3223198388506118",
+      "liquidityGross": "3223198388506118"
+    },
+    {
+      "index": 254040,
+      "liquidityNet": "7233669530042180",
+      "liquidityGross": "7233669530042180"
+    },
+    {
+      "index": 254100,
+      "liquidityNet": "1354995309152257",
+      "liquidityGross": "1354995309152257"
+    },
+    {
+      "index": 254160,
+      "liquidityNet": "232717215486581",
+      "liquidityGross": "232717215486581"
+    },
+    {
+      "index": 254220,
+      "liquidityNet": "1251624436633624",
+      "liquidityGross": "1251624436633624"
+    },
+    {
+      "index": 254280,
+      "liquidityNet": "2397734105813300",
+      "liquidityGross": "2397734105813300"
+    },
+    {
+      "index": 254340,
+      "liquidityNet": "5944750269566964",
+      "liquidityGross": "5944750269566964"
+    },
+    {
+      "index": 254400,
+      "liquidityNet": "293897761293656",
+      "liquidityGross": "293897761293656"
+    },
+    {
+      "index": 254460,
+      "liquidityNet": "27750958550784078",
+      "liquidityGross": "27750958550784078"
+    },
+    {
+      "index": 254520,
+      "liquidityNet": "8803885001420580",
+      "liquidityGross": "8803885001420580"
+    },
+    {
+      "index": 254580,
+      "liquidityNet": "4832503942071766",
+      "liquidityGross": "4832503942071766"
+    },
+    {
+      "index": 254640,
+      "liquidityNet": "18878251447853522",
+      "liquidityGross": "18878251447853522"
+    },
+    {
+      "index": 254700,
+      "liquidityNet": "47159747312520861",
+      "liquidityGross": "47159747312520861"
+    },
+    {
+      "index": 254760,
+      "liquidityNet": "2210341898134274",
+      "liquidityGross": "2210341898134274"
+    },
+    {
+      "index": 254820,
+      "liquidityNet": "708906823292029",
+      "liquidityGross": "708906823292029"
+    },
+    {
+      "index": 254880,
+      "liquidityNet": "79311941684663448",
+      "liquidityGross": "79311941684663448"
+    },
+    {
+      "index": 254940,
+      "liquidityNet": "131611058716155639",
+      "liquidityGross": "131611058716155639"
+    },
+    {
+      "index": 255000,
+      "liquidityNet": "1598723641314836",
+      "liquidityGross": "1598723641314836"
+    },
+    {
+      "index": 255060,
+      "liquidityNet": "3570483212215165",
+      "liquidityGross": "3570483212215165"
+    },
+    {
+      "index": 255120,
+      "liquidityNet": "-685298200223732",
+      "liquidityGross": "17722528321831664"
+    },
+    {
+      "index": 255180,
+      "liquidityNet": "10072938869856001",
+      "liquidityGross": "10094548691501753"
+    },
+    {
+      "index": 255240,
+      "liquidityNet": "21324359501748223",
+      "liquidityGross": "21324359501748223"
+    },
+    {
+      "index": 255300,
+      "liquidityNet": "4364228887048905",
+      "liquidityGross": "4364237096627033"
+    },
+    {
+      "index": 255360,
+      "liquidityNet": "3206055008276559",
+      "liquidityGross": "3206055008276559"
+    },
+    {
+      "index": 255420,
+      "liquidityNet": "8337914674210692",
+      "liquidityGross": "8337914674210692"
+    },
+    {
+      "index": 255480,
+      "liquidityNet": "7341369571915483",
+      "liquidityGross": "7343598454325075"
+    },
+    {
+      "index": 255540,
+      "liquidityNet": "66767515757170606",
+      "liquidityGross": "66845387101892372"
+    },
+    {
+      "index": 255600,
+      "liquidityNet": "162909027590248760",
+      "liquidityGross": "162909027590248760"
+    },
+    {
+      "index": 255660,
+      "liquidityNet": "216964302409007549",
+      "liquidityGross": "216964302409007549"
+    },
+    {
+      "index": 255720,
+      "liquidityNet": "385116797387086698",
+      "liquidityGross": "385116797387086698"
+    },
+    {
+      "index": 255780,
+      "liquidityNet": "40303492606471480",
+      "liquidityGross": "40303492606471480"
+    },
+    {
+      "index": 255840,
+      "liquidityNet": "3851053596342728",
+      "liquidityGross": "3851053596342728"
+    },
+    {
+      "index": 255900,
+      "liquidityNet": "61739626823736178",
+      "liquidityGross": "61761883437367390"
+    },
+    {
+      "index": 255960,
+      "liquidityNet": "7555831027318727",
+      "liquidityGross": "8019972741275283"
+    },
+    {
+      "index": 256020,
+      "liquidityNet": "11360440169028523",
+      "liquidityGross": "11827319419190403"
+    },
+    {
+      "index": 256080,
+      "liquidityNet": "60072349123153735",
+      "liquidityGross": "60213912612514587"
+    },
+    {
+      "index": 256140,
+      "liquidityNet": "-74357472016628479",
+      "liquidityGross": "170532390299599075"
+    },
+    {
+      "index": 256200,
+      "liquidityNet": "16239859943100246",
+      "liquidityGross": "18578000780338238"
+    },
+    {
+      "index": 256260,
+      "liquidityNet": "438562623027249",
+      "liquidityGross": "524155195785499"
+    },
+    {
+      "index": 256320,
+      "liquidityNet": "416244761851792821",
+      "liquidityGross": "418360901573548409"
+    },
+    {
+      "index": 256380,
+      "liquidityNet": "35258940131745361",
+      "liquidityGross": "35354281359858859"
+    },
+    {
+      "index": 256440,
+      "liquidityNet": "87429969783283206",
+      "liquidityGross": "87498002263567942"
+    },
+    {
+      "index": 256500,
+      "liquidityNet": "36662462787136434",
+      "liquidityGross": "37079399801719790"
+    },
+    {
+      "index": 256560,
+      "liquidityNet": "24690609809160596",
+      "liquidityGross": "26861955491935480"
+    },
+    {
+      "index": 256620,
+      "liquidityNet": "1530693759002640",
+      "liquidityGross": "2266872875510184"
+    },
+    {
+      "index": 256680,
+      "liquidityNet": "450725489682812642",
+      "liquidityGross": "617845694976651704"
+    },
+    {
+      "index": 256740,
+      "liquidityNet": "7757717182115128",
+      "liquidityGross": "9508460709542130"
+    },
+    {
+      "index": 256800,
+      "liquidityNet": "13959272670778670",
+      "liquidityGross": "16092031679955394"
+    },
+    {
+      "index": 256860,
+      "liquidityNet": "4834815815433126",
+      "liquidityGross": "5917950403250604"
+    },
+    {
+      "index": 256920,
+      "liquidityNet": "3833542223902956",
+      "liquidityGross": "4512613781521666"
+    },
+    {
+      "index": 256980,
+      "liquidityNet": "-513765185254136771",
+      "liquidityGross": "518982345775389407"
+    },
+    {
+      "index": 257040,
+      "liquidityNet": "-399680035107951409",
+      "liquidityGross": "403620542995899807"
+    },
+    {
+      "index": 257100,
+      "liquidityNet": "944424023373490",
+      "liquidityGross": "3694067897442130"
+    },
+    {
+      "index": 257160,
+      "liquidityNet": "-17670767329996145",
+      "liquidityGross": "29594233102383831"
+    },
+    {
+      "index": 257220,
+      "liquidityNet": "11968596416695458",
+      "liquidityGross": "39720579701453480"
+    },
+    {
+      "index": 257280,
+      "liquidityNet": "-1571540551183525",
+      "liquidityGross": "13904101892598927"
+    },
+    {
+      "index": 257340,
+      "liquidityNet": "11998694428887359",
+      "liquidityGross": "12966404404911551"
+    },
+    {
+      "index": 257400,
+      "liquidityNet": "-41005393479443210",
+      "liquidityGross": "77763278732931152"
+    },
+    {
+      "index": 257460,
+      "liquidityNet": "-40685333587385153",
+      "liquidityGross": "65686824302883035"
+    },
+    {
+      "index": 257520,
+      "liquidityNet": "-61225490611514652",
+      "liquidityGross": "70184420136930512"
+    },
+    {
+      "index": 257580,
+      "liquidityNet": "-18439176989338244",
+      "liquidityGross": "27257534142204174"
+    },
+    {
+      "index": 257640,
+      "liquidityNet": "-354819799885904976",
+      "liquidityGross": "354826232508972794"
+    },
+    {
+      "index": 257700,
+      "liquidityNet": "555307873298135460",
+      "liquidityGross": "580538043725177658"
+    },
+    {
+      "index": 257760,
+      "liquidityNet": "188207080226230989",
+      "liquidityGross": "249978444371764207"
+    },
+    {
+      "index": 257820,
+      "liquidityNet": "-41778268035859589",
+      "liquidityGross": "41831402034343447"
+    },
+    {
+      "index": 257880,
+      "liquidityNet": "-2514493092005759",
+      "liquidityGross": "12524194724929907"
+    },
+    {
+      "index": 257940,
+      "liquidityNet": "-3653336697694042",
+      "liquidityGross": "3948963147827352"
+    },
+    {
+      "index": 258000,
+      "liquidityNet": "-17407959736997210",
+      "liquidityGross": "18022766627074666"
+    },
+    {
+      "index": 258060,
+      "liquidityNet": "-304461910237094107",
+      "liquidityGross": "304487554300627439"
+    },
+    {
+      "index": 258120,
+      "liquidityNet": "-27435537767419192",
+      "liquidityGross": "27512736265079542"
+    },
+    {
+      "index": 258180,
+      "liquidityNet": "-70075898568894367",
+      "liquidityGross": "71239752558266035"
+    },
+    {
+      "index": 258240,
+      "liquidityNet": "-77730101655027806",
+      "liquidityGross": "77788860536221776"
+    },
+    {
+      "index": 258300,
+      "liquidityNet": "-480160670015383231",
+      "liquidityGross": "480234010987500729"
+    },
+    {
+      "index": 258360,
+      "liquidityNet": "-7951267675408107",
+      "liquidityGross": "7959900060977557"
+    },
+    {
+      "index": 258420,
+      "liquidityNet": "-53269633953047198",
+      "liquidityGross": "53282183913353050"
+    },
+    {
+      "index": 258480,
+      "liquidityNet": "-44754280784339065",
+      "liquidityGross": "45021576650539311"
+    },
+    {
+      "index": 258540,
+      "liquidityNet": "-8452946696940052",
+      "liquidityGross": "8452946696940052"
+    },
+    {
+      "index": 258600,
+      "liquidityNet": "-7622516282077012",
+      "liquidityGross": "7622516282077012"
+    },
+    {
+      "index": 258660,
+      "liquidityNet": "-31482996411331240",
+      "liquidityGross": "31482996411331240"
+    },
+    {
+      "index": 258720,
+      "liquidityNet": "-10379774337647228",
+      "liquidityGross": "10390946286213796"
+    },
+    {
+      "index": 258780,
+      "liquidityNet": "-3847257447300179",
+      "liquidityGross": "3950604565611973"
+    },
+    {
+      "index": 258840,
+      "liquidityNet": "-97900646011974339",
+      "liquidityGross": "97900646011974339"
+    },
+    {
+      "index": 258900,
+      "liquidityNet": "-9889601170069464",
+      "liquidityGross": "10062092408600412"
+    },
+    {
+      "index": 258960,
+      "liquidityNet": "-25494043572351332",
+      "liquidityGross": "25494043572351332"
+    },
+    {
+      "index": 259020,
+      "liquidityNet": "-1984614229062349",
+      "liquidityGross": "1984614229062349"
+    },
+    {
+      "index": 259080,
+      "liquidityNet": "-60946434614754049",
+      "liquidityGross": "60946434614754049"
+    },
+    {
+      "index": 259140,
+      "liquidityNet": "-1768354554263411",
+      "liquidityGross": "1768354554263411"
+    },
+    {
+      "index": 259200,
+      "liquidityNet": "-58824567876657891",
+      "liquidityGross": "58824567876657891"
+    },
+    {
+      "index": 259260,
+      "liquidityNet": "-68275004505972738",
+      "liquidityGross": "68275004505972738"
+    },
+    {
+      "index": 259320,
+      "liquidityNet": "-2364480825489862",
+      "liquidityGross": "2364480825489862"
+    },
+    {
+      "index": 259380,
+      "liquidityNet": "-1189512312699562",
+      "liquidityGross": "3335990605197778"
+    },
+    {
+      "index": 259440,
+      "liquidityNet": "-2460236402350929",
+      "liquidityGross": "2460236402350929"
+    },
+    {
+      "index": 259500,
+      "liquidityNet": "-535417280350002",
+      "liquidityGross": "535417280350002"
+    },
+    {
+      "index": 259560,
+      "liquidityNet": "-85731255951348",
+      "liquidityGross": "85731255951348"
+    },
+    {
+      "index": 259620,
+      "liquidityNet": "-1026247794534376",
+      "liquidityGross": "1026247794534376"
+    },
+    {
+      "index": 259680,
+      "liquidityNet": "-276049909077726",
+      "liquidityGross": "276049909077726"
+    },
+    {
+      "index": 259740,
+      "liquidityNet": "-2702260478188734",
+      "liquidityGross": "2702260478188734"
+    },
+    {
+      "index": 259800,
+      "liquidityNet": "-1163565651941686",
+      "liquidityGross": "1163565651941686"
+    },
+    {
+      "index": 259860,
+      "liquidityNet": "-710040743947057",
+      "liquidityGross": "710040743947057"
+    },
+    {
+      "index": 259920,
+      "liquidityNet": "-830712491263343",
+      "liquidityGross": "830712491263343"
+    },
+    {
+      "index": 259980,
+      "liquidityNet": "-4689302966707254",
+      "liquidityGross": "4692619231168190"
+    },
+    {
+      "index": 260040,
+      "liquidityNet": "-14807473500577126",
+      "liquidityGross": "14807473500577126"
+    },
+    {
+      "index": 260100,
+      "liquidityNet": "-3390547462651817",
+      "liquidityGross": "3390547462651817"
+    },
+    {
+      "index": 260160,
+      "liquidityNet": "-2213051740643507",
+      "liquidityGross": "2213051740643507"
+    },
+    {
+      "index": 260220,
+      "liquidityNet": "-16333264145033263",
+      "liquidityGross": "16333264145033263"
+    },
+    {
+      "index": 260280,
+      "liquidityNet": "-202256047650577199",
+      "liquidityGross": "202256047650577199"
+    },
+    {
+      "index": 260340,
+      "liquidityNet": "-2305739590349437",
+      "liquidityGross": "2305739590349437"
+    },
+    {
+      "index": 260400,
+      "liquidityNet": "-482148621584562",
+      "liquidityGross": "482148621584562"
+    },
+    {
+      "index": 260460,
+      "liquidityNet": "-5151763950535971",
+      "liquidityGross": "5151763950535971"
+    },
+    {
+      "index": 260520,
+      "liquidityNet": "-4949460699961",
+      "liquidityGross": "4949460699961"
+    },
+    {
+      "index": 260580,
+      "liquidityNet": "-792216572972459",
+      "liquidityGross": "792216572972459"
+    },
+    {
+      "index": 260640,
+      "liquidityNet": "-1659069837896683",
+      "liquidityGross": "1659069837896683"
+    },
+    {
+      "index": 260700,
+      "liquidityNet": "-471050672837794",
+      "liquidityGross": "471050672837794"
+    },
+    {
+      "index": 260760,
+      "liquidityNet": "-1427210936238126",
+      "liquidityGross": "1427210936238126"
+    },
+    {
+      "index": 260820,
+      "liquidityNet": "-160567446454122",
+      "liquidityGross": "160567446454122"
+    },
+    {
+      "index": 260880,
+      "liquidityNet": "-4660514545814",
+      "liquidityGross": "4660514545814"
+    },
+    {
+      "index": 260940,
+      "liquidityNet": "-949190291053485",
+      "liquidityGross": "949190291053485"
+    },
+    {
+      "index": 261000,
+      "liquidityNet": "-701508382094315",
+      "liquidityGross": "701508382094315"
+    },
+    {
+      "index": 261060,
+      "liquidityNet": "-192494897286115",
+      "liquidityGross": "192494897286115"
+    },
+    {
+      "index": 261120,
+      "liquidityNet": "-97448428510165",
+      "liquidityGross": "97448428510165"
+    },
+    {
+      "index": 261180,
+      "liquidityNet": "-768965647069",
+      "liquidityGross": "768965647069"
+    },
+    {
+      "index": 261240,
+      "liquidityNet": "-4290736218537318",
+      "liquidityGross": "4290736218537318"
+    },
+    {
+      "index": 261300,
+      "liquidityNet": "-5099128904602610",
+      "liquidityGross": "5099128904602610"
+    },
+    {
+      "index": 261360,
+      "liquidityNet": "-1609462935217957",
+      "liquidityGross": "1609462935217957"
+    },
+    {
+      "index": 261420,
+      "liquidityNet": "-1090436462449794",
+      "liquidityGross": "1090436462449794"
+    },
+    {
+      "index": 261480,
+      "liquidityNet": "-427691948100201",
+      "liquidityGross": "427691948100201"
+    },
+    {
+      "index": 261540,
+      "liquidityNet": "-25222997794671",
+      "liquidityGross": "25222997794671"
+    },
+    {
+      "index": 261600,
+      "liquidityNet": "-14172746964296",
+      "liquidityGross": "14172746964296"
+    },
+    {
+      "index": 261660,
+      "liquidityNet": "-33286914116176",
+      "liquidityGross": "33286914116176"
+    },
+    {
+      "index": 261720,
+      "liquidityNet": "-390958960205477",
+      "liquidityGross": "390958960205477"
+    },
+    {
+      "index": 261780,
+      "liquidityNet": "-2170475390497",
+      "liquidityGross": "2170475390497"
+    },
+    {
+      "index": 261840,
+      "liquidityNet": "-40685506569662",
+      "liquidityGross": "40685506569662"
+    },
+    {
+      "index": 261900,
+      "liquidityNet": "-768317113367493",
+      "liquidityGross": "768317113367493"
+    },
+    {
+      "index": 261960,
+      "liquidityNet": "-349615904032981",
+      "liquidityGross": "349615904032981"
+    },
+    {
+      "index": 262020,
+      "liquidityNet": "-91960406332603",
+      "liquidityGross": "91960406332603"
+    },
+    {
+      "index": 262080,
+      "liquidityNet": "-443641166532945",
+      "liquidityGross": "443641166532945"
+    },
+    {
+      "index": 262140,
+      "liquidityNet": "-38227973445101",
+      "liquidityGross": "38227973445101"
+    },
+    {
+      "index": 262200,
+      "liquidityNet": "-903825331042290",
+      "liquidityGross": "903825331042290"
+    },
+    {
+      "index": 262260,
+      "liquidityNet": "-13128065406663",
+      "liquidityGross": "13128065406663"
+    },
+    {
+      "index": 262320,
+      "liquidityNet": "-121957304230580",
+      "liquidityGross": "121957304230580"
+    },
+    {
+      "index": 262380,
+      "liquidityNet": "-424848915752761",
+      "liquidityGross": "424848915752761"
+    },
+    {
+      "index": 262440,
+      "liquidityNet": "-14652087781394115",
+      "liquidityGross": "14652087781394115"
+    },
+    {
+      "index": 262500,
+      "liquidityNet": "-1770941642899971",
+      "liquidityGross": "1770941642899971"
+    },
+    {
+      "index": 262560,
+      "liquidityNet": "-1647348926749984",
+      "liquidityGross": "1647348926749984"
+    },
+    {
+      "index": 262620,
+      "liquidityNet": "-142827709793555",
+      "liquidityGross": "142827709793555"
+    },
+    {
+      "index": 262680,
+      "liquidityNet": "-236240897581658",
+      "liquidityGross": "236240897581658"
+    },
+    {
+      "index": 262740,
+      "liquidityNet": "-3198063287248",
+      "liquidityGross": "3198063287248"
+    },
+    {
+      "index": 262800,
+      "liquidityNet": "-28405605552220",
+      "liquidityGross": "28405605552220"
+    },
+    {
+      "index": 262860,
+      "liquidityNet": "-127001888471234",
+      "liquidityGross": "127001888471234"
+    },
+    {
+      "index": 262920,
+      "liquidityNet": "-1875443486130867",
+      "liquidityGross": "1875443486130867"
+    },
+    {
+      "index": 262980,
+      "liquidityNet": "-338041427279495",
+      "liquidityGross": "338041427279495"
+    },
+    {
+      "index": 263040,
+      "liquidityNet": "-678050751391",
+      "liquidityGross": "678050751391"
+    },
+    {
+      "index": 263100,
+      "liquidityNet": "-2233936785039147",
+      "liquidityGross": "2233936785039147"
+    },
+    {
+      "index": 263160,
+      "liquidityNet": "-784249058176776",
+      "liquidityGross": "784249058176776"
+    },
+    {
+      "index": 263220,
+      "liquidityNet": "-184063967535124",
+      "liquidityGross": "184063967535124"
+    },
+    {
+      "index": 263280,
+      "liquidityNet": "-88096801401735",
+      "liquidityGross": "88096801401735"
+    },
+    {
+      "index": 263340,
+      "liquidityNet": "-198487481613624",
+      "liquidityGross": "198487481613624"
+    },
+    {
+      "index": 263400,
+      "liquidityNet": "-452889034759715",
+      "liquidityGross": "452889034759715"
+    },
+    {
+      "index": 263460,
+      "liquidityNet": "-606799883869495",
+      "liquidityGross": "606799883869495"
+    },
+    {
+      "index": 263520,
+      "liquidityNet": "-7638454561936103",
+      "liquidityGross": "7638454561936103"
+    },
+    {
+      "index": 263580,
+      "liquidityNet": "-126821769296502",
+      "liquidityGross": "126821769296502"
+    },
+    {
+      "index": 263640,
+      "liquidityNet": "-6110861158994498",
+      "liquidityGross": "6110861158994498"
+    },
+    {
+      "index": 263700,
+      "liquidityNet": "-1245903277890155",
+      "liquidityGross": "1245903277890155"
+    },
+    {
+      "index": 263760,
+      "liquidityNet": "-2890954460186027",
+      "liquidityGross": "2890954460186027"
+    },
+    {
+      "index": 263820,
+      "liquidityNet": "-2254895454670155",
+      "liquidityGross": "2254895454670155"
+    },
+    {
+      "index": 263880,
+      "liquidityNet": "-331818644781597",
+      "liquidityGross": "331818644781597"
+    },
+    {
+      "index": 263940,
+      "liquidityNet": "-1012237412969331",
+      "liquidityGross": "1012237412969331"
+    },
+    {
+      "index": 264000,
+      "liquidityNet": "-355849039791761",
+      "liquidityGross": "355849039791761"
+    },
+    {
+      "index": 264060,
+      "liquidityNet": "-830913905222007",
+      "liquidityGross": "830913905222007"
+    },
+    {
+      "index": 264120,
+      "liquidityNet": "-232657278104839",
+      "liquidityGross": "232657278104839"
+    },
+    {
+      "index": 264180,
+      "liquidityNet": "-223175670932954",
+      "liquidityGross": "223175670932954"
+    },
+    {
+      "index": 264240,
+      "liquidityNet": "-45075145059172",
+      "liquidityGross": "45075145059172"
+    },
+    {
+      "index": 264300,
+      "liquidityNet": "-514961937591143",
+      "liquidityGross": "514961937591143"
+    },
+    {
+      "index": 264360,
+      "liquidityNet": "-1836640574139053",
+      "liquidityGross": "1836640574139053"
+    },
+    {
+      "index": 264420,
+      "liquidityNet": "-399126992437212",
+      "liquidityGross": "399126992437212"
+    },
+    {
+      "index": 264480,
+      "liquidityNet": "-3386196039666481",
+      "liquidityGross": "3386196039666481"
+    },
+    {
+      "index": 264540,
+      "liquidityNet": "-169026268794532",
+      "liquidityGross": "169026268794532"
+    },
+    {
+      "index": 264600,
+      "liquidityNet": "-38164370768122",
+      "liquidityGross": "38164370768122"
+    },
+    {
+      "index": 264660,
+      "liquidityNet": "-6838638581919",
+      "liquidityGross": "6838638581919"
+    },
+    {
+      "index": 264720,
+      "liquidityNet": "-6934819008835",
+      "liquidityGross": "6934819008835"
+    },
+    {
+      "index": 264780,
+      "liquidityNet": "-634419296225677",
+      "liquidityGross": "634419296225677"
+    },
+    {
+      "index": 264840,
+      "liquidityNet": "-17477855897294",
+      "liquidityGross": "17477855897294"
+    },
+    {
+      "index": 264900,
+      "liquidityNet": "-1087328233426084",
+      "liquidityGross": "1087328233426084"
+    },
+    {
+      "index": 264960,
+      "liquidityNet": "-9592653857021",
+      "liquidityGross": "9592653857021"
+    },
+    {
+      "index": 265020,
+      "liquidityNet": "-964623108704",
+      "liquidityGross": "964623108704"
+    },
+    {
+      "index": 265080,
+      "liquidityNet": "-53874582028033",
+      "liquidityGross": "53874582028033"
+    },
+    {
+      "index": 265140,
+      "liquidityNet": "-417896448821485",
+      "liquidityGross": "417896448821485"
+    },
+    {
+      "index": 265200,
+      "liquidityNet": "-115757424347917",
+      "liquidityGross": "115757424347917"
+    },
+    {
+      "index": 265260,
+      "liquidityNet": "-247937698964119",
+      "liquidityGross": "247937698964119"
+    },
+    {
+      "index": 265320,
+      "liquidityNet": "-549333109125871",
+      "liquidityGross": "549333109125871"
+    },
+    {
+      "index": 265380,
+      "liquidityNet": "-682184643186092",
+      "liquidityGross": "682184643186092"
+    },
+    {
+      "index": 265440,
+      "liquidityNet": "-80696202126881",
+      "liquidityGross": "80696202126881"
+    },
+    {
+      "index": 265500,
+      "liquidityNet": "-646838003704937",
+      "liquidityGross": "646838003704937"
+    },
+    {
+      "index": 265560,
+      "liquidityNet": "-422423521362347",
+      "liquidityGross": "422423521362347"
+    },
+    {
+      "index": 265620,
+      "liquidityNet": "-11390495459371",
+      "liquidityGross": "11390495459371"
+    },
+    {
+      "index": 265680,
+      "liquidityNet": "-14264473913293",
+      "liquidityGross": "14264473913293"
+    },
+    {
+      "index": 265740,
+      "liquidityNet": "-809676720010",
+      "liquidityGross": "809676720010"
+    },
+    {
+      "index": 265800,
+      "liquidityNet": "-228442660393752",
+      "liquidityGross": "228442660393752"
+    },
+    {
+      "index": 265980,
+      "liquidityNet": "-1109158269877",
+      "liquidityGross": "1109158269877"
+    },
+    {
+      "index": 266220,
+      "liquidityNet": "-40234494434",
+      "liquidityGross": "40234494434"
+    },
+    {
+      "index": 266520,
+      "liquidityNet": "-95239241762338",
+      "liquidityGross": "95239241762338"
+    },
+    {
+      "index": 266580,
+      "liquidityNet": "-7345787342181",
+      "liquidityGross": "7345787342181"
+    },
+    {
+      "index": 266640,
+      "liquidityNet": "-893004067318",
+      "liquidityGross": "893004067318"
+    },
+    {
+      "index": 266700,
+      "liquidityNet": "-238322377607001",
+      "liquidityGross": "238322377607001"
+    },
+    {
+      "index": 266940,
+      "liquidityNet": "-3816659140777",
+      "liquidityGross": "3816659140777"
+    },
+    {
+      "index": 267000,
+      "liquidityNet": "-14630998912172",
+      "liquidityGross": "14630998912172"
+    },
+    {
+      "index": 267060,
+      "liquidityNet": "-2002323771185",
+      "liquidityGross": "2002323771185"
+    },
+    {
+      "index": 267120,
+      "liquidityNet": "-4026522741505",
+      "liquidityGross": "4026522741505"
+    },
+    {
+      "index": 267180,
+      "liquidityNet": "-878049993248372",
+      "liquidityGross": "878049993248372"
+    },
+    {
+      "index": 267720,
+      "liquidityNet": "-1432820167102",
+      "liquidityGross": "1432820167102"
+    },
+    {
+      "index": 268260,
+      "liquidityNet": "-41247994973279",
+      "liquidityGross": "41247994973279"
+    },
+    {
+      "index": 268320,
+      "liquidityNet": "-3921753993726",
+      "liquidityGross": "3921753993726"
+    },
+    {
+      "index": 268620,
+      "liquidityNet": "-7842385042332",
+      "liquidityGross": "7842385042332"
+    },
+    {
+      "index": 268920,
+      "liquidityNet": "-48860694293",
+      "liquidityGross": "48860694293"
+    },
+    {
+      "index": 268980,
+      "liquidityNet": "-233944583115",
+      "liquidityGross": "233944583115"
+    },
+    {
+      "index": 269160,
+      "liquidityNet": "-2921179233331",
+      "liquidityGross": "2921179233331"
+    },
+    {
+      "index": 269220,
+      "liquidityNet": "-116527715609",
+      "liquidityGross": "116527715609"
+    },
+    {
+      "index": 269280,
+      "liquidityNet": "-4816040963852",
+      "liquidityGross": "4816040963852"
+    },
+    {
+      "index": 269400,
+      "liquidityNet": "-515347242942616",
+      "liquidityGross": "515347242942616"
+    },
+    {
+      "index": 270420,
+      "liquidityNet": "-120389476854562",
+      "liquidityGross": "120389476854562"
+    },
+    {
+      "index": 270540,
+      "liquidityNet": "-34804953692",
+      "liquidityGross": "34804953692"
+    },
+    {
+      "index": 270840,
+      "liquidityNet": "-1649567047148",
+      "liquidityGross": "1649567047148"
+    },
+    {
+      "index": 271080,
+      "liquidityNet": "-103000565770",
+      "liquidityGross": "103000565770"
+    },
+    {
+      "index": 271500,
+      "liquidityNet": "-7387510370926",
+      "liquidityGross": "7387510370926"
+    },
+    {
+      "index": 271680,
+      "liquidityNet": "-6060018180622",
+      "liquidityGross": "6060018180622"
+    },
+    {
+      "index": 272280,
+      "liquidityNet": "-4538579708481",
+      "liquidityGross": "4538579708481"
+    },
+    {
+      "index": 272520,
+      "liquidityNet": "-202950841112641",
+      "liquidityGross": "202950841112641"
+    },
+    {
+      "index": 272580,
+      "liquidityNet": "-1537745525855",
+      "liquidityGross": "1537745525855"
+    },
+    {
+      "index": 276300,
+      "liquidityNet": "-2543662313063992",
+      "liquidityGross": "2543662313063992"
+    },
+    {
+      "index": 278940,
+      "liquidityNet": "-5164088638751",
+      "liquidityGross": "5164088638751"
+    },
+    {
+      "index": 280080,
+      "liquidityNet": "-24418298514298",
+      "liquidityGross": "24418298514298"
+    },
+    {
+      "index": 280500,
+      "liquidityNet": "-6081508773089",
+      "liquidityGross": "6081508773089"
+    },
+    {
+      "index": 281220,
+      "liquidityNet": "-33872560240",
+      "liquidityGross": "33872560240"
+    },
+    {
+      "index": 282180,
+      "liquidityNet": "-2366835767353",
+      "liquidityGross": "2366835767353"
+    },
+    {
+      "index": 283260,
+      "liquidityNet": "-12241814398321",
+      "liquidityGross": "12241814398321"
+    },
+    {
+      "index": 283800,
+      "liquidityNet": "-1410203189999",
+      "liquidityGross": "1410203189999"
+    },
+    {
+      "index": 329460,
+      "liquidityNet": "-643796387349",
+      "liquidityGross": "643796387349"
+    },
+    {
+      "index": 368460,
+      "liquidityNet": "-486522234414488",
+      "liquidityGross": "486522234414488"
+    },
+    {
+      "index": 391440,
+      "liquidityNet": "-456406095307",
+      "liquidityGross": "456406095307"
+    },
+    {
+      "index": 437520,
+      "liquidityNet": "-10943161472679",
+      "liquidityGross": "10943161472679"
+    },
+    {
+      "index": 887220,
+      "liquidityNet": "-97132329311971",
+      "liquidityGross": "97132329311971"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "72721547897334353679174",
+      "exactInput": true,
+      "expectedAmountCalculated": "213462426503"
+    },
+    {
+      "amountSpecified": "80997952817860143429390",
+      "exactInput": true,
+      "expectedAmountCalculated": "213464488882"
+    },
+    {
+      "amountSpecified": "85926903725663797719444",
+      "exactInput": true,
+      "expectedAmountCalculated": "213465372362"
+    },
+    {
+      "amountSpecified": "63194610895077726703512",
+      "exactInput": true,
+      "expectedAmountCalculated": "213458314167"
+    },
+    {
+      "amountSpecified": "30580531703914154213853",
+      "exactInput": true,
+      "expectedAmountCalculated": "178237068295"
+    },
+    {
+      "amountSpecified": "72257509904071131578826",
+      "exactInput": true,
+      "expectedAmountCalculated": "213462280589"
+    },
+    {
+      "amountSpecified": "51889505656343523296574",
+      "exactInput": true,
+      "expectedAmountCalculated": "213445619456"
+    },
+    {
+      "amountSpecified": "49869564175008199906968",
+      "exactInput": true,
+      "expectedAmountCalculated": "213440600670"
+    },
+    {
+      "amountSpecified": "87032198992894418323716",
+      "exactInput": true,
+      "expectedAmountCalculated": "213465545650"
+    },
+    {
+      "amountSpecified": "4901284733368494178603",
+      "exactInput": true,
+      "expectedAmountCalculated": "30529122435"
+    },
+    {
+      "amountSpecified": "59010426707801001870906",
+      "exactInput": true,
+      "expectedAmountCalculated": "213455277807"
+    },
+    {
+      "amountSpecified": "82037855668207908847134",
+      "exactInput": true,
+      "expectedAmountCalculated": "213464692075"
+    },
+    {
+      "amountSpecified": "55859903739554264211750",
+      "exactInput": true,
+      "expectedAmountCalculated": "213452003901"
+    },
+    {
+      "amountSpecified": "51916760440794602199870",
+      "exactInput": true,
+      "expectedAmountCalculated": "213445676539"
+    },
+    {
+      "amountSpecified": "36768785705879140181044",
+      "exactInput": true,
+      "expectedAmountCalculated": "206149867345"
+    },
+    {
+      "amountSpecified": "75387784404878358767016",
+      "exactInput": true,
+      "expectedAmountCalculated": "213463192998"
+    },
+    {
+      "amountSpecified": "50037861437598424280622",
+      "exactInput": true,
+      "expectedAmountCalculated": "213441088225"
+    },
+    {
+      "amountSpecified": "49188406551479684249142",
+      "exactInput": true,
+      "expectedAmountCalculated": "213438464742"
+    },
+    {
+      "amountSpecified": "25276224039555845987418",
+      "exactInput": true,
+      "expectedAmountCalculated": "150425144436"
+    },
+    {
+      "amountSpecified": "77832195934752787537254",
+      "exactInput": true,
+      "expectedAmountCalculated": "213463803519"
+    },
+    {
+      "amountSpecified": "76441865262372249534544",
+      "exactInput": true,
+      "expectedAmountCalculated": "213463466012"
+    },
+    {
+      "amountSpecified": "57808038841012021421046",
+      "exactInput": true,
+      "expectedAmountCalculated": "213454156938"
+    },
+    {
+      "amountSpecified": "2903141168770234880285",
+      "exactInput": true,
+      "expectedAmountCalculated": "18132820621"
+    },
+    {
+      "amountSpecified": "84872766707597571527502",
+      "exactInput": true,
+      "expectedAmountCalculated": "213465199334"
+    },
+    {
+      "amountSpecified": "88031670194673424858896",
+      "exactInput": true,
+      "expectedAmountCalculated": "213465695637"
+    },
+    {
+      "amountSpecified": "58479693815104389332214",
+      "exactInput": true,
+      "expectedAmountCalculated": "213454800012"
+    },
+    {
+      "amountSpecified": "32635383766301981286853",
+      "exactInput": true,
+      "expectedAmountCalculated": "188445290535"
+    },
+    {
+      "amountSpecified": "88639139276068841701794",
+      "exactInput": true,
+      "expectedAmountCalculated": "213465783854"
+    },
+    {
+      "amountSpecified": "70303360971283466983770",
+      "exactInput": true,
+      "expectedAmountCalculated": "213461618831"
+    },
+    {
+      "amountSpecified": "78759342024465513264174",
+      "exactInput": true,
+      "expectedAmountCalculated": "213464015507"
+    },
+    {
+      "amountSpecified": "49633010329206391217838",
+      "exactInput": true,
+      "expectedAmountCalculated": "213439889574"
+    },
+    {
+      "amountSpecified": "26134390128777467672436",
+      "exactInput": true,
+      "expectedAmountCalculated": "155058901426"
+    },
+    {
+      "amountSpecified": "38328940649605043175396",
+      "exactInput": true,
+      "expectedAmountCalculated": "211153178191"
+    },
+    {
+      "amountSpecified": "84258960918525838417632",
+      "exactInput": true,
+      "expectedAmountCalculated": "213465094880"
+    },
+    {
+      "amountSpecified": "40982232045633405462705",
+      "exactInput": true,
+      "expectedAmountCalculated": "213304305615"
+    },
+    {
+      "amountSpecified": "47210393676629830764486",
+      "exactInput": true,
+      "expectedAmountCalculated": "213430282044"
+    },
+    {
+      "amountSpecified": "34789077639223081823033",
+      "exactInput": true,
+      "expectedAmountCalculated": "198221507548"
+    },
+    {
+      "amountSpecified": "10700552247532886468037",
+      "exactInput": true,
+      "expectedAmountCalculated": "66054721006"
+    },
+    {
+      "amountSpecified": "32034761136132546177810",
+      "exactInput": true,
+      "expectedAmountCalculated": "185518282874"
+    },
+    {
+      "amountSpecified": "45093822473634817066998",
+      "exactInput": true,
+      "expectedAmountCalculated": "213415761503"
+    },
+    {
+      "amountSpecified": "5511683959863863497065",
+      "exactInput": true,
+      "expectedAmountCalculated": "34301159324"
+    },
+    {
+      "amountSpecified": "64532432915621761995192",
+      "exactInput": true,
+      "expectedAmountCalculated": "213459076001"
+    },
+    {
+      "amountSpecified": "36528166755368703283813",
+      "exactInput": true,
+      "expectedAmountCalculated": "205248438072"
+    },
+    {
+      "amountSpecified": "72415629993558814638054",
+      "exactInput": true,
+      "expectedAmountCalculated": "213462330763"
+    },
+    {
+      "amountSpecified": "86447123202814462133508",
+      "exactInput": true,
+      "expectedAmountCalculated": "213465454925"
+    },
+    {
+      "amountSpecified": "41758909661557888458407",
+      "exactInput": true,
+      "expectedAmountCalculated": "213349680308"
+    },
+    {
+      "amountSpecified": "100168225963451787072",
+      "exactInput": true,
+      "expectedAmountCalculated": "628048528"
+    },
+    {
+      "amountSpecified": "55525502800381924321890",
+      "exactInput": true,
+      "expectedAmountCalculated": "213451583647"
+    },
+    {
+      "amountSpecified": "5434958867044871705667",
+      "exactInput": true,
+      "expectedAmountCalculated": "33827445344"
+    },
+    {
+      "amountSpecified": "28337178804967674964847",
+      "exactInput": true,
+      "expectedAmountCalculated": "166713713929"
+    },
+    {
+      "amountSpecified": "86891866277",
+      "exactInput": false,
+      "expectedAmountCalculated": "14166428856633653630159"
+    },
+    {
+      "amountSpecified": "191885399504",
+      "exactInput": false,
+      "expectedAmountCalculated": "33365217307895877794606"
+    },
+    {
+      "amountSpecified": "71526915730",
+      "exactInput": false,
+      "expectedAmountCalculated": "11604516478458598959903"
+    },
+    {
+      "amountSpecified": "199741011814",
+      "exactInput": false,
+      "expectedAmountCalculated": "35149037112757915246411"
+    },
+    {
+      "amountSpecified": "25120114262",
+      "exactInput": false,
+      "expectedAmountCalculated": "4028045765955447676340"
+    },
+    {
+      "amountSpecified": "133725499297",
+      "exactInput": false,
+      "expectedAmountCalculated": "22255256708958351698943"
+    },
+    {
+      "amountSpecified": "33846062983",
+      "exactInput": false,
+      "expectedAmountCalculated": "5437973905908031489846"
+    },
+    {
+      "amountSpecified": "72941658180",
+      "exactInput": false,
+      "expectedAmountCalculated": "11838813257291423448937"
+    },
+    {
+      "amountSpecified": "167712426537",
+      "exactInput": false,
+      "expectedAmountCalculated": "28528971447355351758975"
+    },
+    {
+      "amountSpecified": "153758208440",
+      "exactInput": false,
+      "expectedAmountCalculated": "25892511901503043795767"
+    },
+    {
+      "amountSpecified": "27389807775",
+      "exactInput": false,
+      "expectedAmountCalculated": "4394201645467001101150"
+    },
+    {
+      "amountSpecified": "108493989483",
+      "exactInput": false,
+      "expectedAmountCalculated": "17839770871486826126514"
+    },
+    {
+      "amountSpecified": "106187801194",
+      "exactInput": false,
+      "expectedAmountCalculated": "17443278332961335450385"
+    },
+    {
+      "amountSpecified": "61010506786",
+      "exactInput": false,
+      "expectedAmountCalculated": "9869969689995747600914"
+    },
+    {
+      "amountSpecified": "110570334561",
+      "exactInput": false,
+      "expectedAmountCalculated": "18197684847379341620516"
+    },
+    {
+      "amountSpecified": "19700087587",
+      "exactInput": false,
+      "expectedAmountCalculated": "3155156747179257225936"
+    },
+    {
+      "amountSpecified": "180191812390",
+      "exactInput": false,
+      "expectedAmountCalculated": "30967965961906236901662"
+    },
+    {
+      "amountSpecified": "179089978788",
+      "exactInput": false,
+      "expectedAmountCalculated": "30749319898490796942933"
+    },
+    {
+      "amountSpecified": "96835726963",
+      "exactInput": false,
+      "expectedAmountCalculated": "15846240368663356332793"
+    },
+    {
+      "amountSpecified": "188583932557",
+      "exactInput": false,
+      "expectedAmountCalculated": "32664277783985932043518"
+    },
+    {
+      "amountSpecified": "179113407590",
+      "exactInput": false,
+      "expectedAmountCalculated": "30753962041865988085412"
+    },
+    {
+      "amountSpecified": "828426599",
+      "exactInput": false,
+      "expectedAmountCalculated": "132132548124339451327"
+    },
+    {
+      "amountSpecified": "150564699034",
+      "exactInput": false,
+      "expectedAmountCalculated": "25301926891750195185357"
+    },
+    {
+      "amountSpecified": "21971252584",
+      "exactInput": false,
+      "expectedAmountCalculated": "3520669709126402142003"
+    },
+    {
+      "amountSpecified": "208077141140",
+      "exactInput": false,
+      "expectedAmountCalculated": "37302216905149738344795"
+    },
+    {
+      "amountSpecified": "71503807088",
+      "exactInput": false,
+      "expectedAmountCalculated": "11600692077195756251289"
+    },
+    {
+      "amountSpecified": "46938829884",
+      "exactInput": false,
+      "expectedAmountCalculated": "7565793437378000076216"
+    },
+    {
+      "amountSpecified": "120016407860",
+      "exactInput": false,
+      "expectedAmountCalculated": "19837439357977249041545"
+    },
+    {
+      "amountSpecified": "96490855791",
+      "exactInput": false,
+      "expectedAmountCalculated": "15787670112832276219998"
+    },
+    {
+      "amountSpecified": "25000195973",
+      "exactInput": false,
+      "expectedAmountCalculated": "4008710339467527877901"
+    },
+    {
+      "amountSpecified": "3696980241",
+      "exactInput": false,
+      "expectedAmountCalculated": "590031517035158702258"
+    },
+    {
+      "amountSpecified": "34571653864",
+      "exactInput": false,
+      "expectedAmountCalculated": "5555503339716241305014"
+    },
+    {
+      "amountSpecified": "82239037672",
+      "exactInput": false,
+      "expectedAmountCalculated": "13386539681528821312715"
+    },
+    {
+      "amountSpecified": "69537044509",
+      "exactInput": false,
+      "expectedAmountCalculated": "11275449545913729424542"
+    },
+    {
+      "amountSpecified": "184964480064",
+      "exactInput": false,
+      "expectedAmountCalculated": "31922993000147316769685"
+    },
+    {
+      "amountSpecified": "151715673684",
+      "exactInput": false,
+      "expectedAmountCalculated": "25514246203758916933025"
+    },
+    {
+      "amountSpecified": "26400837517",
+      "exactInput": false,
+      "expectedAmountCalculated": "4234611697692346066760"
+    },
+    {
+      "amountSpecified": "67328001028",
+      "exactInput": false,
+      "expectedAmountCalculated": "10910616204228870314590"
+    },
+    {
+      "amountSpecified": "103030206309",
+      "exactInput": false,
+      "expectedAmountCalculated": "16902155986163550583354"
+    },
+    {
+      "amountSpecified": "152269532732",
+      "exactInput": false,
+      "expectedAmountCalculated": "25616630025114417923108"
+    },
+    {
+      "amountSpecified": "75256783812",
+      "exactInput": false,
+      "expectedAmountCalculated": "12222911130979206654543"
+    },
+    {
+      "amountSpecified": "150929254199",
+      "exactInput": false,
+      "expectedAmountCalculated": "25369111238546612690353"
+    },
+    {
+      "amountSpecified": "206807920755",
+      "exactInput": false,
+      "expectedAmountCalculated": "36947816949627190343031"
+    },
+    {
+      "amountSpecified": "172007038679",
+      "exactInput": false,
+      "expectedAmountCalculated": "29359337983979202146408"
+    },
+    {
+      "amountSpecified": "195421301009",
+      "exactInput": false,
+      "expectedAmountCalculated": "34145434096654313405590"
+    },
+    {
+      "amountSpecified": "151285005614",
+      "exactInput": false,
+      "expectedAmountCalculated": "25434731042751635712189"
+    },
+    {
+      "amountSpecified": "74047907546",
+      "exactInput": false,
+      "expectedAmountCalculated": "12022242230325239060692"
+    },
+    {
+      "amountSpecified": "142525051021",
+      "exactInput": false,
+      "expectedAmountCalculated": "23834928970226547086066"
+    },
+    {
+      "amountSpecified": "195908932134",
+      "exactInput": false,
+      "expectedAmountCalculated": "34255741422214603748876"
+    },
+    {
+      "amountSpecified": "7161947198",
+      "exactInput": false,
+      "expectedAmountCalculated": "1143901477142033714407"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0xCBCdF9626bC03E24f779434178A73a0B4bad62eD.json b/src/__tests__/stubs/swap/0xCBCdF9626bC03E24f779434178A73a0B4bad62eD.json
new file mode 100644
index 00000000..14a4c395
--- /dev/null
+++ b/src/__tests__/stubs/swap/0xCBCdF9626bC03E24f779434178A73a0B4bad62eD.json
@@ -0,0 +1,2571 @@
+{
+  "poolName": "WBTC - WETH 3000",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
+    "decimals": 8
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "fee": 3000,
+  "liquidity": "1826992573206841143",
+  "sqrtRatioX96": "31591175518489111072165776310393141",
+  "tickCurrent": 257934,
+  "ticks": [
+    {
+      "index": -887220,
+      "liquidityNet": "82174936226787",
+      "liquidityGross": "82174936226787"
+    },
+    {
+      "index": -887160,
+      "liquidityNet": "80064092962998",
+      "liquidityGross": "80064092962998"
+    },
+    {
+      "index": -92100,
+      "liquidityNet": "456406095307",
+      "liquidityGross": "456406095307"
+    },
+    {
+      "index": 0,
+      "liquidityNet": "10943161472679",
+      "liquidityGross": "10943161472679"
+    },
+    {
+      "index": 92040,
+      "liquidityNet": "1620915153",
+      "liquidityGross": "1620915153"
+    },
+    {
+      "index": 92100,
+      "liquidityNet": "3974353998848",
+      "liquidityGross": "3974353998848"
+    },
+    {
+      "index": 152640,
+      "liquidityNet": "40166358066529",
+      "liquidityGross": "40166358066529"
+    },
+    {
+      "index": 152880,
+      "liquidityNet": "-40166358066529",
+      "liquidityGross": "40166358066529"
+    },
+    {
+      "index": 153360,
+      "liquidityNet": "155684471699734",
+      "liquidityGross": "155684471699734"
+    },
+    {
+      "index": 153420,
+      "liquidityNet": "-155684471699734",
+      "liquidityGross": "155684471699734"
+    },
+    {
+      "index": 161220,
+      "liquidityNet": "181470429131796",
+      "liquidityGross": "181470429131796"
+    },
+    {
+      "index": 176220,
+      "liquidityNet": "358354299830",
+      "liquidityGross": "358354299830"
+    },
+    {
+      "index": 183180,
+      "liquidityNet": "-358354299830",
+      "liquidityGross": "358354299830"
+    },
+    {
+      "index": 184200,
+      "liquidityNet": "-79344120619876",
+      "liquidityGross": "80784065306120"
+    },
+    {
+      "index": 206580,
+      "liquidityNet": "54402074932",
+      "liquidityGross": "54402074932"
+    },
+    {
+      "index": 206640,
+      "liquidityNet": "-54402074932",
+      "liquidityGross": "54402074932"
+    },
+    {
+      "index": 214920,
+      "liquidityNet": "31454785349939",
+      "liquidityGross": "31454785349939"
+    },
+    {
+      "index": 216420,
+      "liquidityNet": "3151604679224",
+      "liquidityGross": "3151604679224"
+    },
+    {
+      "index": 217740,
+      "liquidityNet": "-31454785349939",
+      "liquidityGross": "31454785349939"
+    },
+    {
+      "index": 223320,
+      "liquidityNet": "340095002",
+      "liquidityGross": "340095002"
+    },
+    {
+      "index": 230100,
+      "liquidityNet": "10499785476924",
+      "liquidityGross": "10499785476924"
+    },
+    {
+      "index": 230160,
+      "liquidityNet": "1670921212240",
+      "liquidityGross": "1670921212240"
+    },
+    {
+      "index": 230220,
+      "liquidityNet": "248504515915",
+      "liquidityGross": "248504515915"
+    },
+    {
+      "index": 230280,
+      "liquidityNet": "11377831611211",
+      "liquidityGross": "14720354225695"
+    },
+    {
+      "index": 231180,
+      "liquidityNet": "10325006026",
+      "liquidityGross": "10325006026"
+    },
+    {
+      "index": 231240,
+      "liquidityNet": "9636087679",
+      "liquidityGross": "9636087679"
+    },
+    {
+      "index": 231300,
+      "liquidityNet": "4067292562252",
+      "liquidityGross": "4067292562252"
+    },
+    {
+      "index": 231360,
+      "liquidityNet": "10098305733",
+      "liquidityGross": "10098305733"
+    },
+    {
+      "index": 231420,
+      "liquidityNet": "105440390087",
+      "liquidityGross": "105440390087"
+    },
+    {
+      "index": 231480,
+      "liquidityNet": "389377464792",
+      "liquidityGross": "389377464792"
+    },
+    {
+      "index": 231540,
+      "liquidityNet": "62725860270",
+      "liquidityGross": "62725860270"
+    },
+    {
+      "index": 234060,
+      "liquidityNet": "24418298514298",
+      "liquidityGross": "24418298514298"
+    },
+    {
+      "index": 234300,
+      "liquidityNet": "-379213263309",
+      "liquidityGross": "379213263309"
+    },
+    {
+      "index": 235620,
+      "liquidityNet": "13143858905286",
+      "liquidityGross": "13143858905286"
+    },
+    {
+      "index": 237180,
+      "liquidityNet": "4066391507115",
+      "liquidityGross": "4218743418661"
+    },
+    {
+      "index": 237300,
+      "liquidityNet": "2512358234332724",
+      "liquidityGross": "2512358234332724"
+    },
+    {
+      "index": 237420,
+      "liquidityNet": "788243782725",
+      "liquidityGross": "788243782725"
+    },
+    {
+      "index": 239460,
+      "liquidityNet": "8584538262056",
+      "liquidityGross": "8584538262056"
+    },
+    {
+      "index": 239760,
+      "liquidityNet": "3095863280482",
+      "liquidityGross": "3095863280482"
+    },
+    {
+      "index": 240420,
+      "liquidityNet": "12999196246833",
+      "liquidityGross": "12999196246833"
+    },
+    {
+      "index": 240780,
+      "liquidityNet": "7818819408261",
+      "liquidityGross": "7818819408261"
+    },
+    {
+      "index": 241260,
+      "liquidityNet": "1856215464927",
+      "liquidityGross": "1856215464927"
+    },
+    {
+      "index": 241380,
+      "liquidityNet": "7814421206784",
+      "liquidityGross": "7814421206784"
+    },
+    {
+      "index": 242340,
+      "liquidityNet": "3373862096954",
+      "liquidityGross": "3373862096954"
+    },
+    {
+      "index": 242820,
+      "liquidityNet": "2611786952298",
+      "liquidityGross": "2611786952298"
+    },
+    {
+      "index": 243360,
+      "liquidityNet": "103000565770",
+      "liquidityGross": "103000565770"
+    },
+    {
+      "index": 244140,
+      "liquidityNet": "217561198854734",
+      "liquidityGross": "217561198854734"
+    },
+    {
+      "index": 244860,
+      "liquidityNet": "893004067318",
+      "liquidityGross": "893004067318"
+    },
+    {
+      "index": 245520,
+      "liquidityNet": "266126101590362",
+      "liquidityGross": "266126101590362"
+    },
+    {
+      "index": 245700,
+      "liquidityNet": "16758180163",
+      "liquidityGross": "16758180163"
+    },
+    {
+      "index": 245940,
+      "liquidityNet": "76701235421656",
+      "liquidityGross": "76701235421656"
+    },
+    {
+      "index": 246180,
+      "liquidityNet": "4890971540",
+      "liquidityGross": "4890971540"
+    },
+    {
+      "index": 246360,
+      "liquidityNet": "1235247247938725",
+      "liquidityGross": "1235247247938725"
+    },
+    {
+      "index": 246420,
+      "liquidityNet": "69925333162032",
+      "liquidityGross": "69925333162032"
+    },
+    {
+      "index": 246480,
+      "liquidityNet": "83562433586",
+      "liquidityGross": "83562433586"
+    },
+    {
+      "index": 246540,
+      "liquidityNet": "837767553892",
+      "liquidityGross": "837767553892"
+    },
+    {
+      "index": 246600,
+      "liquidityNet": "4814170393189",
+      "liquidityGross": "4814170393189"
+    },
+    {
+      "index": 246660,
+      "liquidityNet": "14690532940788",
+      "liquidityGross": "14690532940788"
+    },
+    {
+      "index": 246720,
+      "liquidityNet": "243908811117210",
+      "liquidityGross": "243908811117210"
+    },
+    {
+      "index": 246780,
+      "liquidityNet": "233944583115",
+      "liquidityGross": "233944583115"
+    },
+    {
+      "index": 246840,
+      "liquidityNet": "1143995552",
+      "liquidityGross": "1143995552"
+    },
+    {
+      "index": 246900,
+      "liquidityNet": "263365923015",
+      "liquidityGross": "263365923015"
+    },
+    {
+      "index": 246960,
+      "liquidityNet": "14264473913293",
+      "liquidityGross": "14264473913293"
+    },
+    {
+      "index": 247320,
+      "liquidityNet": "48519918747269",
+      "liquidityGross": "48519918747269"
+    },
+    {
+      "index": 247380,
+      "liquidityNet": "117622952159219",
+      "liquidityGross": "117622952159219"
+    },
+    {
+      "index": 247440,
+      "liquidityNet": "665770897850117",
+      "liquidityGross": "665770897850117"
+    },
+    {
+      "index": 247620,
+      "liquidityNet": "487875820420",
+      "liquidityGross": "487875820420"
+    },
+    {
+      "index": 247740,
+      "liquidityNet": "11523276594189",
+      "liquidityGross": "11523276594189"
+    },
+    {
+      "index": 247860,
+      "liquidityNet": "1649567047148",
+      "liquidityGross": "1649567047148"
+    },
+    {
+      "index": 247920,
+      "liquidityNet": "5342639837069495",
+      "liquidityGross": "5342639837069495"
+    },
+    {
+      "index": 247980,
+      "liquidityNet": "23028334649368",
+      "liquidityGross": "23028334649368"
+    },
+    {
+      "index": 248040,
+      "liquidityNet": "252942942781",
+      "liquidityGross": "252942942781"
+    },
+    {
+      "index": 248100,
+      "liquidityNet": "24372131940667",
+      "liquidityGross": "24372131940667"
+    },
+    {
+      "index": 248160,
+      "liquidityNet": "102373720892200",
+      "liquidityGross": "102373720892200"
+    },
+    {
+      "index": 248280,
+      "liquidityNet": "5974932615038",
+      "liquidityGross": "5974932615038"
+    },
+    {
+      "index": 248340,
+      "liquidityNet": "745663361773900",
+      "liquidityGross": "745663361773900"
+    },
+    {
+      "index": 248400,
+      "liquidityNet": "106096220552937",
+      "liquidityGross": "106096220552937"
+    },
+    {
+      "index": 248460,
+      "liquidityNet": "15823287912623",
+      "liquidityGross": "15823287912623"
+    },
+    {
+      "index": 248520,
+      "liquidityNet": "339165199161295",
+      "liquidityGross": "339165199161295"
+    },
+    {
+      "index": 248580,
+      "liquidityNet": "96340504853",
+      "liquidityGross": "96340504853"
+    },
+    {
+      "index": 248640,
+      "liquidityNet": "34036669144137",
+      "liquidityGross": "34036669144137"
+    },
+    {
+      "index": 248700,
+      "liquidityNet": "106728159577006",
+      "liquidityGross": "106728159577006"
+    },
+    {
+      "index": 248760,
+      "liquidityNet": "130017625795223",
+      "liquidityGross": "130017625795223"
+    },
+    {
+      "index": 248820,
+      "liquidityNet": "231267402130471",
+      "liquidityGross": "231267402130471"
+    },
+    {
+      "index": 248880,
+      "liquidityNet": "1191600446578",
+      "liquidityGross": "1191600446578"
+    },
+    {
+      "index": 248940,
+      "liquidityNet": "10262040820492",
+      "liquidityGross": "10262040820492"
+    },
+    {
+      "index": 249000,
+      "liquidityNet": "375045998526336",
+      "liquidityGross": "375045998526336"
+    },
+    {
+      "index": 249060,
+      "liquidityNet": "14220938232775",
+      "liquidityGross": "14220938232775"
+    },
+    {
+      "index": 249120,
+      "liquidityNet": "8546121898214",
+      "liquidityGross": "8546121898214"
+    },
+    {
+      "index": 249180,
+      "liquidityNet": "805435724180",
+      "liquidityGross": "805435724180"
+    },
+    {
+      "index": 249240,
+      "liquidityNet": "2458914255421348",
+      "liquidityGross": "2458914255421348"
+    },
+    {
+      "index": 249300,
+      "liquidityNet": "753689707471433",
+      "liquidityGross": "753689707471433"
+    },
+    {
+      "index": 249360,
+      "liquidityNet": "250509876783271",
+      "liquidityGross": "250509876783271"
+    },
+    {
+      "index": 249420,
+      "liquidityNet": "15459403677425",
+      "liquidityGross": "15459403677425"
+    },
+    {
+      "index": 249480,
+      "liquidityNet": "204634341236947",
+      "liquidityGross": "204634341236947"
+    },
+    {
+      "index": 249540,
+      "liquidityNet": "536139191751638",
+      "liquidityGross": "536139191751638"
+    },
+    {
+      "index": 249600,
+      "liquidityNet": "1362751680139023",
+      "liquidityGross": "1362751680139023"
+    },
+    {
+      "index": 249660,
+      "liquidityNet": "75072282227263",
+      "liquidityGross": "75072282227263"
+    },
+    {
+      "index": 249720,
+      "liquidityNet": "128404454018236",
+      "liquidityGross": "128404454018236"
+    },
+    {
+      "index": 249780,
+      "liquidityNet": "752941312872158",
+      "liquidityGross": "752941312872158"
+    },
+    {
+      "index": 249840,
+      "liquidityNet": "150303272592282",
+      "liquidityGross": "150303272592282"
+    },
+    {
+      "index": 249900,
+      "liquidityNet": "2999000185960519",
+      "liquidityGross": "2999000185960519"
+    },
+    {
+      "index": 249960,
+      "liquidityNet": "1897487030889456",
+      "liquidityGross": "1897487030889456"
+    },
+    {
+      "index": 250020,
+      "liquidityNet": "338541271525525",
+      "liquidityGross": "338541271525525"
+    },
+    {
+      "index": 250080,
+      "liquidityNet": "1019910411632819",
+      "liquidityGross": "1019910411632819"
+    },
+    {
+      "index": 250140,
+      "liquidityNet": "349559136168929",
+      "liquidityGross": "349559136168929"
+    },
+    {
+      "index": 250200,
+      "liquidityNet": "357255210710225",
+      "liquidityGross": "357255210710225"
+    },
+    {
+      "index": 250260,
+      "liquidityNet": "236399678077506",
+      "liquidityGross": "236399678077506"
+    },
+    {
+      "index": 250320,
+      "liquidityNet": "149802042174914",
+      "liquidityGross": "149802042174914"
+    },
+    {
+      "index": 250380,
+      "liquidityNet": "22684152997344",
+      "liquidityGross": "22684152997344"
+    },
+    {
+      "index": 250440,
+      "liquidityNet": "162814016216893",
+      "liquidityGross": "162814016216893"
+    },
+    {
+      "index": 250500,
+      "liquidityNet": "2873122593562261",
+      "liquidityGross": "2873122593562261"
+    },
+    {
+      "index": 250560,
+      "liquidityNet": "721265962680257",
+      "liquidityGross": "721265962680257"
+    },
+    {
+      "index": 250620,
+      "liquidityNet": "3321833231733709",
+      "liquidityGross": "3321833231733709"
+    },
+    {
+      "index": 250680,
+      "liquidityNet": "379136360814294",
+      "liquidityGross": "379136360814294"
+    },
+    {
+      "index": 250740,
+      "liquidityNet": "30685778627595",
+      "liquidityGross": "30685778627595"
+    },
+    {
+      "index": 250800,
+      "liquidityNet": "486676008472444",
+      "liquidityGross": "486676008472444"
+    },
+    {
+      "index": 250860,
+      "liquidityNet": "495251715841078",
+      "liquidityGross": "495251715841078"
+    },
+    {
+      "index": 250920,
+      "liquidityNet": "546196098082915",
+      "liquidityGross": "546196098082915"
+    },
+    {
+      "index": 250980,
+      "liquidityNet": "17457607258488",
+      "liquidityGross": "17457607258488"
+    },
+    {
+      "index": 251040,
+      "liquidityNet": "18739094027110",
+      "liquidityGross": "18739094027110"
+    },
+    {
+      "index": 251100,
+      "liquidityNet": "116746369690747",
+      "liquidityGross": "116746369690747"
+    },
+    {
+      "index": 251160,
+      "liquidityNet": "26215123110965",
+      "liquidityGross": "26215123110965"
+    },
+    {
+      "index": 251220,
+      "liquidityNet": "1969053748268138",
+      "liquidityGross": "1969053748268138"
+    },
+    {
+      "index": 251280,
+      "liquidityNet": "1744914434361",
+      "liquidityGross": "1744914434361"
+    },
+    {
+      "index": 251340,
+      "liquidityNet": "180353178844777",
+      "liquidityGross": "180353178844777"
+    },
+    {
+      "index": 251400,
+      "liquidityNet": "128509974135464",
+      "liquidityGross": "128509974135464"
+    },
+    {
+      "index": 251460,
+      "liquidityNet": "540981291328174",
+      "liquidityGross": "540981291328174"
+    },
+    {
+      "index": 251520,
+      "liquidityNet": "5731476751822266",
+      "liquidityGross": "5731476751822266"
+    },
+    {
+      "index": 251580,
+      "liquidityNet": "26703188780726",
+      "liquidityGross": "26703188780726"
+    },
+    {
+      "index": 251640,
+      "liquidityNet": "506062280322839",
+      "liquidityGross": "506062280322839"
+    },
+    {
+      "index": 251700,
+      "liquidityNet": "244084381320927",
+      "liquidityGross": "244084381320927"
+    },
+    {
+      "index": 251760,
+      "liquidityNet": "472259833373720",
+      "liquidityGross": "472259833373720"
+    },
+    {
+      "index": 251820,
+      "liquidityNet": "72486190536708",
+      "liquidityGross": "72486190536708"
+    },
+    {
+      "index": 251880,
+      "liquidityNet": "931553309070",
+      "liquidityGross": "931553309070"
+    },
+    {
+      "index": 251940,
+      "liquidityNet": "293375936683379",
+      "liquidityGross": "293375936683379"
+    },
+    {
+      "index": 252000,
+      "liquidityNet": "103709076861484",
+      "liquidityGross": "103709076861484"
+    },
+    {
+      "index": 252060,
+      "liquidityNet": "10396565017847",
+      "liquidityGross": "10396565017847"
+    },
+    {
+      "index": 252120,
+      "liquidityNet": "219076530609482",
+      "liquidityGross": "219076530609482"
+    },
+    {
+      "index": 252180,
+      "liquidityNet": "156092492819634",
+      "liquidityGross": "156092492819634"
+    },
+    {
+      "index": 252240,
+      "liquidityNet": "1115420578481664",
+      "liquidityGross": "1115420578481664"
+    },
+    {
+      "index": 252300,
+      "liquidityNet": "7031828617233349",
+      "liquidityGross": "7031828617233349"
+    },
+    {
+      "index": 252360,
+      "liquidityNet": "733766399181670",
+      "liquidityGross": "733766399181670"
+    },
+    {
+      "index": 252420,
+      "liquidityNet": "84805612483975",
+      "liquidityGross": "84805612483975"
+    },
+    {
+      "index": 252480,
+      "liquidityNet": "9463874529391447",
+      "liquidityGross": "9463874529391447"
+    },
+    {
+      "index": 252540,
+      "liquidityNet": "7619953195446359",
+      "liquidityGross": "7619953195446359"
+    },
+    {
+      "index": 252600,
+      "liquidityNet": "16406775025846",
+      "liquidityGross": "16406775025846"
+    },
+    {
+      "index": 252660,
+      "liquidityNet": "2212907952699581",
+      "liquidityGross": "2212907952699581"
+    },
+    {
+      "index": 252720,
+      "liquidityNet": "30877568635642",
+      "liquidityGross": "30877568635642"
+    },
+    {
+      "index": 252780,
+      "liquidityNet": "1127243612814164",
+      "liquidityGross": "1127243612814164"
+    },
+    {
+      "index": 252840,
+      "liquidityNet": "121022273918801",
+      "liquidityGross": "121022273918801"
+    },
+    {
+      "index": 252900,
+      "liquidityNet": "3444505408543",
+      "liquidityGross": "3444505408543"
+    },
+    {
+      "index": 252960,
+      "liquidityNet": "2921179233331",
+      "liquidityGross": "2921179233331"
+    },
+    {
+      "index": 253020,
+      "liquidityNet": "16328660267242",
+      "liquidityGross": "16328660267242"
+    },
+    {
+      "index": 253080,
+      "liquidityNet": "280182070401033",
+      "liquidityGross": "280182070401033"
+    },
+    {
+      "index": 253140,
+      "liquidityNet": "60418933087985",
+      "liquidityGross": "60418933087985"
+    },
+    {
+      "index": 253200,
+      "liquidityNet": "2221329753927173",
+      "liquidityGross": "2221329753927173"
+    },
+    {
+      "index": 253260,
+      "liquidityNet": "785975068283793",
+      "liquidityGross": "785975068283793"
+    },
+    {
+      "index": 253320,
+      "liquidityNet": "11068031251918845",
+      "liquidityGross": "11068031251918845"
+    },
+    {
+      "index": 253380,
+      "liquidityNet": "1045385900711870",
+      "liquidityGross": "1045385900711870"
+    },
+    {
+      "index": 253440,
+      "liquidityNet": "52071127547319",
+      "liquidityGross": "52071127547319"
+    },
+    {
+      "index": 253500,
+      "liquidityNet": "905430992202364",
+      "liquidityGross": "905430992202364"
+    },
+    {
+      "index": 253560,
+      "liquidityNet": "743934772353060",
+      "liquidityGross": "743934772353060"
+    },
+    {
+      "index": 253620,
+      "liquidityNet": "1720814520558933",
+      "liquidityGross": "1720814520558933"
+    },
+    {
+      "index": 253680,
+      "liquidityNet": "1694339960854588",
+      "liquidityGross": "1694339960854588"
+    },
+    {
+      "index": 253740,
+      "liquidityNet": "1265620344704839",
+      "liquidityGross": "1265620344704839"
+    },
+    {
+      "index": 253800,
+      "liquidityNet": "6822448654094831",
+      "liquidityGross": "6822448654094831"
+    },
+    {
+      "index": 253860,
+      "liquidityNet": "1693329952501742",
+      "liquidityGross": "1693329952501742"
+    },
+    {
+      "index": 253920,
+      "liquidityNet": "125002317687877",
+      "liquidityGross": "125002317687877"
+    },
+    {
+      "index": 253980,
+      "liquidityNet": "3223198388506118",
+      "liquidityGross": "3223198388506118"
+    },
+    {
+      "index": 254040,
+      "liquidityNet": "7233669530042180",
+      "liquidityGross": "7233669530042180"
+    },
+    {
+      "index": 254100,
+      "liquidityNet": "1354995309152257",
+      "liquidityGross": "1354995309152257"
+    },
+    {
+      "index": 254160,
+      "liquidityNet": "232717215486581",
+      "liquidityGross": "232717215486581"
+    },
+    {
+      "index": 254220,
+      "liquidityNet": "1251624436633624",
+      "liquidityGross": "1251624436633624"
+    },
+    {
+      "index": 254280,
+      "liquidityNet": "2397734105813300",
+      "liquidityGross": "2397734105813300"
+    },
+    {
+      "index": 254340,
+      "liquidityNet": "5944750269566964",
+      "liquidityGross": "5944750269566964"
+    },
+    {
+      "index": 254400,
+      "liquidityNet": "293897761293656",
+      "liquidityGross": "293897761293656"
+    },
+    {
+      "index": 254460,
+      "liquidityNet": "27750958550784078",
+      "liquidityGross": "27750958550784078"
+    },
+    {
+      "index": 254520,
+      "liquidityNet": "8803885001420580",
+      "liquidityGross": "8803885001420580"
+    },
+    {
+      "index": 254580,
+      "liquidityNet": "4832503942071766",
+      "liquidityGross": "4832503942071766"
+    },
+    {
+      "index": 254640,
+      "liquidityNet": "18878251447853522",
+      "liquidityGross": "18878251447853522"
+    },
+    {
+      "index": 254700,
+      "liquidityNet": "47159747312520861",
+      "liquidityGross": "47159747312520861"
+    },
+    {
+      "index": 254760,
+      "liquidityNet": "2210341898134274",
+      "liquidityGross": "2210341898134274"
+    },
+    {
+      "index": 254820,
+      "liquidityNet": "708906823292029",
+      "liquidityGross": "708906823292029"
+    },
+    {
+      "index": 254880,
+      "liquidityNet": "79311941684663448",
+      "liquidityGross": "79311941684663448"
+    },
+    {
+      "index": 254940,
+      "liquidityNet": "131611058716155639",
+      "liquidityGross": "131611058716155639"
+    },
+    {
+      "index": 255000,
+      "liquidityNet": "1598723641314836",
+      "liquidityGross": "1598723641314836"
+    },
+    {
+      "index": 255060,
+      "liquidityNet": "3570483212215165",
+      "liquidityGross": "3570483212215165"
+    },
+    {
+      "index": 255120,
+      "liquidityNet": "-685298200223732",
+      "liquidityGross": "17722528321831664"
+    },
+    {
+      "index": 255180,
+      "liquidityNet": "10072938869856001",
+      "liquidityGross": "10094548691501753"
+    },
+    {
+      "index": 255240,
+      "liquidityNet": "21324359501748223",
+      "liquidityGross": "21324359501748223"
+    },
+    {
+      "index": 255300,
+      "liquidityNet": "4364228887048905",
+      "liquidityGross": "4364237096627033"
+    },
+    {
+      "index": 255360,
+      "liquidityNet": "3206055008276559",
+      "liquidityGross": "3206055008276559"
+    },
+    {
+      "index": 255420,
+      "liquidityNet": "8337914674210692",
+      "liquidityGross": "8337914674210692"
+    },
+    {
+      "index": 255480,
+      "liquidityNet": "7341369571915483",
+      "liquidityGross": "7343598454325075"
+    },
+    {
+      "index": 255540,
+      "liquidityNet": "66767515757170606",
+      "liquidityGross": "66845387101892372"
+    },
+    {
+      "index": 255600,
+      "liquidityNet": "162909027590248760",
+      "liquidityGross": "162909027590248760"
+    },
+    {
+      "index": 255660,
+      "liquidityNet": "216964302409007549",
+      "liquidityGross": "216964302409007549"
+    },
+    {
+      "index": 255720,
+      "liquidityNet": "385116797387086698",
+      "liquidityGross": "385116797387086698"
+    },
+    {
+      "index": 255780,
+      "liquidityNet": "40303492606471480",
+      "liquidityGross": "40303492606471480"
+    },
+    {
+      "index": 255840,
+      "liquidityNet": "3851053596342728",
+      "liquidityGross": "3851053596342728"
+    },
+    {
+      "index": 255900,
+      "liquidityNet": "61739626823736178",
+      "liquidityGross": "61761883437367390"
+    },
+    {
+      "index": 255960,
+      "liquidityNet": "7555831027318727",
+      "liquidityGross": "8019972741275283"
+    },
+    {
+      "index": 256020,
+      "liquidityNet": "11360440169028523",
+      "liquidityGross": "11827319419190403"
+    },
+    {
+      "index": 256080,
+      "liquidityNet": "60072349123153735",
+      "liquidityGross": "60213912612514587"
+    },
+    {
+      "index": 256140,
+      "liquidityNet": "-74357472016628479",
+      "liquidityGross": "170532390299599075"
+    },
+    {
+      "index": 256200,
+      "liquidityNet": "16239859943100246",
+      "liquidityGross": "18578000780338238"
+    },
+    {
+      "index": 256260,
+      "liquidityNet": "438562623027249",
+      "liquidityGross": "524155195785499"
+    },
+    {
+      "index": 256320,
+      "liquidityNet": "416244761851792821",
+      "liquidityGross": "418360901573548409"
+    },
+    {
+      "index": 256380,
+      "liquidityNet": "35258940131745361",
+      "liquidityGross": "35354281359858859"
+    },
+    {
+      "index": 256440,
+      "liquidityNet": "87429969783283206",
+      "liquidityGross": "87498002263567942"
+    },
+    {
+      "index": 256500,
+      "liquidityNet": "36662462787136434",
+      "liquidityGross": "37079399801719790"
+    },
+    {
+      "index": 256560,
+      "liquidityNet": "24690609809160596",
+      "liquidityGross": "26861955491935480"
+    },
+    {
+      "index": 256620,
+      "liquidityNet": "1530693759002640",
+      "liquidityGross": "2266872875510184"
+    },
+    {
+      "index": 256680,
+      "liquidityNet": "450725489682812642",
+      "liquidityGross": "617845694976651704"
+    },
+    {
+      "index": 256740,
+      "liquidityNet": "7757717182115128",
+      "liquidityGross": "9508460709542130"
+    },
+    {
+      "index": 256800,
+      "liquidityNet": "13959272670778670",
+      "liquidityGross": "16092031679955394"
+    },
+    {
+      "index": 256860,
+      "liquidityNet": "4834815815433126",
+      "liquidityGross": "5917950403250604"
+    },
+    {
+      "index": 256920,
+      "liquidityNet": "3833542223902956",
+      "liquidityGross": "4512613781521666"
+    },
+    {
+      "index": 256980,
+      "liquidityNet": "-513765185254136771",
+      "liquidityGross": "518982345775389407"
+    },
+    {
+      "index": 257040,
+      "liquidityNet": "-399680035107951409",
+      "liquidityGross": "403620542995899807"
+    },
+    {
+      "index": 257100,
+      "liquidityNet": "944424023373490",
+      "liquidityGross": "3694067897442130"
+    },
+    {
+      "index": 257160,
+      "liquidityNet": "-17670767329996145",
+      "liquidityGross": "29594233102383831"
+    },
+    {
+      "index": 257220,
+      "liquidityNet": "11968596416695458",
+      "liquidityGross": "39720579701453480"
+    },
+    {
+      "index": 257280,
+      "liquidityNet": "-1571540551183525",
+      "liquidityGross": "13904101892598927"
+    },
+    {
+      "index": 257340,
+      "liquidityNet": "11998694428887359",
+      "liquidityGross": "12966404404911551"
+    },
+    {
+      "index": 257400,
+      "liquidityNet": "-41005393479443210",
+      "liquidityGross": "77763278732931152"
+    },
+    {
+      "index": 257460,
+      "liquidityNet": "-40685333587385153",
+      "liquidityGross": "65686824302883035"
+    },
+    {
+      "index": 257520,
+      "liquidityNet": "-61225490611514652",
+      "liquidityGross": "70184420136930512"
+    },
+    {
+      "index": 257580,
+      "liquidityNet": "-18439176989338244",
+      "liquidityGross": "27257534142204174"
+    },
+    {
+      "index": 257640,
+      "liquidityNet": "-354819799885904976",
+      "liquidityGross": "354826232508972794"
+    },
+    {
+      "index": 257700,
+      "liquidityNet": "555307873298135460",
+      "liquidityGross": "580538043725177658"
+    },
+    {
+      "index": 257760,
+      "liquidityNet": "188207080226230989",
+      "liquidityGross": "249978444371764207"
+    },
+    {
+      "index": 257820,
+      "liquidityNet": "-41778268035859589",
+      "liquidityGross": "41831402034343447"
+    },
+    {
+      "index": 257880,
+      "liquidityNet": "-2514493092005759",
+      "liquidityGross": "12524194724929907"
+    },
+    {
+      "index": 257940,
+      "liquidityNet": "-3653336697694042",
+      "liquidityGross": "3948963147827352"
+    },
+    {
+      "index": 258000,
+      "liquidityNet": "-17407959736997210",
+      "liquidityGross": "18022766627074666"
+    },
+    {
+      "index": 258060,
+      "liquidityNet": "-304461910237094107",
+      "liquidityGross": "304487554300627439"
+    },
+    {
+      "index": 258120,
+      "liquidityNet": "-27435537767419192",
+      "liquidityGross": "27512736265079542"
+    },
+    {
+      "index": 258180,
+      "liquidityNet": "-70075898568894367",
+      "liquidityGross": "71239752558266035"
+    },
+    {
+      "index": 258240,
+      "liquidityNet": "-77730101655027806",
+      "liquidityGross": "77788860536221776"
+    },
+    {
+      "index": 258300,
+      "liquidityNet": "-480160670015383231",
+      "liquidityGross": "480234010987500729"
+    },
+    {
+      "index": 258360,
+      "liquidityNet": "-7951267675408107",
+      "liquidityGross": "7959900060977557"
+    },
+    {
+      "index": 258420,
+      "liquidityNet": "-53269633953047198",
+      "liquidityGross": "53282183913353050"
+    },
+    {
+      "index": 258480,
+      "liquidityNet": "-44754280784339065",
+      "liquidityGross": "45021576650539311"
+    },
+    {
+      "index": 258540,
+      "liquidityNet": "-8452946696940052",
+      "liquidityGross": "8452946696940052"
+    },
+    {
+      "index": 258600,
+      "liquidityNet": "-7622516282077012",
+      "liquidityGross": "7622516282077012"
+    },
+    {
+      "index": 258660,
+      "liquidityNet": "-31482996411331240",
+      "liquidityGross": "31482996411331240"
+    },
+    {
+      "index": 258720,
+      "liquidityNet": "-10379774337647228",
+      "liquidityGross": "10390946286213796"
+    },
+    {
+      "index": 258780,
+      "liquidityNet": "-3847257447300179",
+      "liquidityGross": "3950604565611973"
+    },
+    {
+      "index": 258840,
+      "liquidityNet": "-97900646011974339",
+      "liquidityGross": "97900646011974339"
+    },
+    {
+      "index": 258900,
+      "liquidityNet": "-9889601170069464",
+      "liquidityGross": "10062092408600412"
+    },
+    {
+      "index": 258960,
+      "liquidityNet": "-25494043572351332",
+      "liquidityGross": "25494043572351332"
+    },
+    {
+      "index": 259020,
+      "liquidityNet": "-1984614229062349",
+      "liquidityGross": "1984614229062349"
+    },
+    {
+      "index": 259080,
+      "liquidityNet": "-60946434614754049",
+      "liquidityGross": "60946434614754049"
+    },
+    {
+      "index": 259140,
+      "liquidityNet": "-1768354554263411",
+      "liquidityGross": "1768354554263411"
+    },
+    {
+      "index": 259200,
+      "liquidityNet": "-58824567876657891",
+      "liquidityGross": "58824567876657891"
+    },
+    {
+      "index": 259260,
+      "liquidityNet": "-68275004505972738",
+      "liquidityGross": "68275004505972738"
+    },
+    {
+      "index": 259320,
+      "liquidityNet": "-2364480825489862",
+      "liquidityGross": "2364480825489862"
+    },
+    {
+      "index": 259380,
+      "liquidityNet": "-1189512312699562",
+      "liquidityGross": "3335990605197778"
+    },
+    {
+      "index": 259440,
+      "liquidityNet": "-2460236402350929",
+      "liquidityGross": "2460236402350929"
+    },
+    {
+      "index": 259500,
+      "liquidityNet": "-535417280350002",
+      "liquidityGross": "535417280350002"
+    },
+    {
+      "index": 259560,
+      "liquidityNet": "-85731255951348",
+      "liquidityGross": "85731255951348"
+    },
+    {
+      "index": 259620,
+      "liquidityNet": "-1026247794534376",
+      "liquidityGross": "1026247794534376"
+    },
+    {
+      "index": 259680,
+      "liquidityNet": "-276049909077726",
+      "liquidityGross": "276049909077726"
+    },
+    {
+      "index": 259740,
+      "liquidityNet": "-2702260478188734",
+      "liquidityGross": "2702260478188734"
+    },
+    {
+      "index": 259800,
+      "liquidityNet": "-1163565651941686",
+      "liquidityGross": "1163565651941686"
+    },
+    {
+      "index": 259860,
+      "liquidityNet": "-710040743947057",
+      "liquidityGross": "710040743947057"
+    },
+    {
+      "index": 259920,
+      "liquidityNet": "-830712491263343",
+      "liquidityGross": "830712491263343"
+    },
+    {
+      "index": 259980,
+      "liquidityNet": "-4689302966707254",
+      "liquidityGross": "4692619231168190"
+    },
+    {
+      "index": 260040,
+      "liquidityNet": "-14807473500577126",
+      "liquidityGross": "14807473500577126"
+    },
+    {
+      "index": 260100,
+      "liquidityNet": "-3390547462651817",
+      "liquidityGross": "3390547462651817"
+    },
+    {
+      "index": 260160,
+      "liquidityNet": "-2213051740643507",
+      "liquidityGross": "2213051740643507"
+    },
+    {
+      "index": 260220,
+      "liquidityNet": "-16333264145033263",
+      "liquidityGross": "16333264145033263"
+    },
+    {
+      "index": 260280,
+      "liquidityNet": "-202256047650577199",
+      "liquidityGross": "202256047650577199"
+    },
+    {
+      "index": 260340,
+      "liquidityNet": "-2305739590349437",
+      "liquidityGross": "2305739590349437"
+    },
+    {
+      "index": 260400,
+      "liquidityNet": "-482148621584562",
+      "liquidityGross": "482148621584562"
+    },
+    {
+      "index": 260460,
+      "liquidityNet": "-5151763950535971",
+      "liquidityGross": "5151763950535971"
+    },
+    {
+      "index": 260520,
+      "liquidityNet": "-4949460699961",
+      "liquidityGross": "4949460699961"
+    },
+    {
+      "index": 260580,
+      "liquidityNet": "-792216572972459",
+      "liquidityGross": "792216572972459"
+    },
+    {
+      "index": 260640,
+      "liquidityNet": "-1659069837896683",
+      "liquidityGross": "1659069837896683"
+    },
+    {
+      "index": 260700,
+      "liquidityNet": "-471050672837794",
+      "liquidityGross": "471050672837794"
+    },
+    {
+      "index": 260760,
+      "liquidityNet": "-1427210936238126",
+      "liquidityGross": "1427210936238126"
+    },
+    {
+      "index": 260820,
+      "liquidityNet": "-160567446454122",
+      "liquidityGross": "160567446454122"
+    },
+    {
+      "index": 260880,
+      "liquidityNet": "-4660514545814",
+      "liquidityGross": "4660514545814"
+    },
+    {
+      "index": 260940,
+      "liquidityNet": "-949190291053485",
+      "liquidityGross": "949190291053485"
+    },
+    {
+      "index": 261000,
+      "liquidityNet": "-701508382094315",
+      "liquidityGross": "701508382094315"
+    },
+    {
+      "index": 261060,
+      "liquidityNet": "-192494897286115",
+      "liquidityGross": "192494897286115"
+    },
+    {
+      "index": 261120,
+      "liquidityNet": "-97448428510165",
+      "liquidityGross": "97448428510165"
+    },
+    {
+      "index": 261180,
+      "liquidityNet": "-768965647069",
+      "liquidityGross": "768965647069"
+    },
+    {
+      "index": 261240,
+      "liquidityNet": "-4290736218537318",
+      "liquidityGross": "4290736218537318"
+    },
+    {
+      "index": 261300,
+      "liquidityNet": "-5099128904602610",
+      "liquidityGross": "5099128904602610"
+    },
+    {
+      "index": 261360,
+      "liquidityNet": "-1609462935217957",
+      "liquidityGross": "1609462935217957"
+    },
+    {
+      "index": 261420,
+      "liquidityNet": "-1090436462449794",
+      "liquidityGross": "1090436462449794"
+    },
+    {
+      "index": 261480,
+      "liquidityNet": "-427691948100201",
+      "liquidityGross": "427691948100201"
+    },
+    {
+      "index": 261540,
+      "liquidityNet": "-25222997794671",
+      "liquidityGross": "25222997794671"
+    },
+    {
+      "index": 261600,
+      "liquidityNet": "-14172746964296",
+      "liquidityGross": "14172746964296"
+    },
+    {
+      "index": 261660,
+      "liquidityNet": "-33286914116176",
+      "liquidityGross": "33286914116176"
+    },
+    {
+      "index": 261720,
+      "liquidityNet": "-390958960205477",
+      "liquidityGross": "390958960205477"
+    },
+    {
+      "index": 261780,
+      "liquidityNet": "-2170475390497",
+      "liquidityGross": "2170475390497"
+    },
+    {
+      "index": 261840,
+      "liquidityNet": "-40685506569662",
+      "liquidityGross": "40685506569662"
+    },
+    {
+      "index": 261900,
+      "liquidityNet": "-768317113367493",
+      "liquidityGross": "768317113367493"
+    },
+    {
+      "index": 261960,
+      "liquidityNet": "-349615904032981",
+      "liquidityGross": "349615904032981"
+    },
+    {
+      "index": 262020,
+      "liquidityNet": "-91960406332603",
+      "liquidityGross": "91960406332603"
+    },
+    {
+      "index": 262080,
+      "liquidityNet": "-443641166532945",
+      "liquidityGross": "443641166532945"
+    },
+    {
+      "index": 262140,
+      "liquidityNet": "-38227973445101",
+      "liquidityGross": "38227973445101"
+    },
+    {
+      "index": 262200,
+      "liquidityNet": "-903825331042290",
+      "liquidityGross": "903825331042290"
+    },
+    {
+      "index": 262260,
+      "liquidityNet": "-13128065406663",
+      "liquidityGross": "13128065406663"
+    },
+    {
+      "index": 262320,
+      "liquidityNet": "-121957304230580",
+      "liquidityGross": "121957304230580"
+    },
+    {
+      "index": 262380,
+      "liquidityNet": "-424848915752761",
+      "liquidityGross": "424848915752761"
+    },
+    {
+      "index": 262440,
+      "liquidityNet": "-14652087781394115",
+      "liquidityGross": "14652087781394115"
+    },
+    {
+      "index": 262500,
+      "liquidityNet": "-1770941642899971",
+      "liquidityGross": "1770941642899971"
+    },
+    {
+      "index": 262560,
+      "liquidityNet": "-1647348926749984",
+      "liquidityGross": "1647348926749984"
+    },
+    {
+      "index": 262620,
+      "liquidityNet": "-142827709793555",
+      "liquidityGross": "142827709793555"
+    },
+    {
+      "index": 262680,
+      "liquidityNet": "-236240897581658",
+      "liquidityGross": "236240897581658"
+    },
+    {
+      "index": 262740,
+      "liquidityNet": "-3198063287248",
+      "liquidityGross": "3198063287248"
+    },
+    {
+      "index": 262800,
+      "liquidityNet": "-28405605552220",
+      "liquidityGross": "28405605552220"
+    },
+    {
+      "index": 262860,
+      "liquidityNet": "-127001888471234",
+      "liquidityGross": "127001888471234"
+    },
+    {
+      "index": 262920,
+      "liquidityNet": "-1875443486130867",
+      "liquidityGross": "1875443486130867"
+    },
+    {
+      "index": 262980,
+      "liquidityNet": "-338041427279495",
+      "liquidityGross": "338041427279495"
+    },
+    {
+      "index": 263040,
+      "liquidityNet": "-678050751391",
+      "liquidityGross": "678050751391"
+    },
+    {
+      "index": 263100,
+      "liquidityNet": "-2233936785039147",
+      "liquidityGross": "2233936785039147"
+    },
+    {
+      "index": 263160,
+      "liquidityNet": "-784249058176776",
+      "liquidityGross": "784249058176776"
+    },
+    {
+      "index": 263220,
+      "liquidityNet": "-184063967535124",
+      "liquidityGross": "184063967535124"
+    },
+    {
+      "index": 263280,
+      "liquidityNet": "-88096801401735",
+      "liquidityGross": "88096801401735"
+    },
+    {
+      "index": 263340,
+      "liquidityNet": "-198487481613624",
+      "liquidityGross": "198487481613624"
+    },
+    {
+      "index": 263400,
+      "liquidityNet": "-452889034759715",
+      "liquidityGross": "452889034759715"
+    },
+    {
+      "index": 263460,
+      "liquidityNet": "-606799883869495",
+      "liquidityGross": "606799883869495"
+    },
+    {
+      "index": 263520,
+      "liquidityNet": "-7638454561936103",
+      "liquidityGross": "7638454561936103"
+    },
+    {
+      "index": 263580,
+      "liquidityNet": "-126821769296502",
+      "liquidityGross": "126821769296502"
+    },
+    {
+      "index": 263640,
+      "liquidityNet": "-6110861158994498",
+      "liquidityGross": "6110861158994498"
+    },
+    {
+      "index": 263700,
+      "liquidityNet": "-1245903277890155",
+      "liquidityGross": "1245903277890155"
+    },
+    {
+      "index": 263760,
+      "liquidityNet": "-2890954460186027",
+      "liquidityGross": "2890954460186027"
+    },
+    {
+      "index": 263820,
+      "liquidityNet": "-2254895454670155",
+      "liquidityGross": "2254895454670155"
+    },
+    {
+      "index": 263880,
+      "liquidityNet": "-331818644781597",
+      "liquidityGross": "331818644781597"
+    },
+    {
+      "index": 263940,
+      "liquidityNet": "-1012237412969331",
+      "liquidityGross": "1012237412969331"
+    },
+    {
+      "index": 264000,
+      "liquidityNet": "-355849039791761",
+      "liquidityGross": "355849039791761"
+    },
+    {
+      "index": 264060,
+      "liquidityNet": "-830913905222007",
+      "liquidityGross": "830913905222007"
+    },
+    {
+      "index": 264120,
+      "liquidityNet": "-232657278104839",
+      "liquidityGross": "232657278104839"
+    },
+    {
+      "index": 264180,
+      "liquidityNet": "-223175670932954",
+      "liquidityGross": "223175670932954"
+    },
+    {
+      "index": 264240,
+      "liquidityNet": "-45075145059172",
+      "liquidityGross": "45075145059172"
+    },
+    {
+      "index": 264300,
+      "liquidityNet": "-514961937591143",
+      "liquidityGross": "514961937591143"
+    },
+    {
+      "index": 264360,
+      "liquidityNet": "-1836640574139053",
+      "liquidityGross": "1836640574139053"
+    },
+    {
+      "index": 264420,
+      "liquidityNet": "-399126992437212",
+      "liquidityGross": "399126992437212"
+    },
+    {
+      "index": 264480,
+      "liquidityNet": "-3386196039666481",
+      "liquidityGross": "3386196039666481"
+    },
+    {
+      "index": 264540,
+      "liquidityNet": "-169026268794532",
+      "liquidityGross": "169026268794532"
+    },
+    {
+      "index": 264600,
+      "liquidityNet": "-38164370768122",
+      "liquidityGross": "38164370768122"
+    },
+    {
+      "index": 264660,
+      "liquidityNet": "-6838638581919",
+      "liquidityGross": "6838638581919"
+    },
+    {
+      "index": 264720,
+      "liquidityNet": "-6934819008835",
+      "liquidityGross": "6934819008835"
+    },
+    {
+      "index": 264780,
+      "liquidityNet": "-634419296225677",
+      "liquidityGross": "634419296225677"
+    },
+    {
+      "index": 264840,
+      "liquidityNet": "-17477855897294",
+      "liquidityGross": "17477855897294"
+    },
+    {
+      "index": 264900,
+      "liquidityNet": "-1087328233426084",
+      "liquidityGross": "1087328233426084"
+    },
+    {
+      "index": 264960,
+      "liquidityNet": "-9592653857021",
+      "liquidityGross": "9592653857021"
+    },
+    {
+      "index": 265020,
+      "liquidityNet": "-964623108704",
+      "liquidityGross": "964623108704"
+    },
+    {
+      "index": 265080,
+      "liquidityNet": "-53874582028033",
+      "liquidityGross": "53874582028033"
+    },
+    {
+      "index": 265140,
+      "liquidityNet": "-417896448821485",
+      "liquidityGross": "417896448821485"
+    },
+    {
+      "index": 265200,
+      "liquidityNet": "-115757424347917",
+      "liquidityGross": "115757424347917"
+    },
+    {
+      "index": 265260,
+      "liquidityNet": "-247937698964119",
+      "liquidityGross": "247937698964119"
+    },
+    {
+      "index": 265320,
+      "liquidityNet": "-549333109125871",
+      "liquidityGross": "549333109125871"
+    },
+    {
+      "index": 265380,
+      "liquidityNet": "-682184643186092",
+      "liquidityGross": "682184643186092"
+    },
+    {
+      "index": 265440,
+      "liquidityNet": "-80696202126881",
+      "liquidityGross": "80696202126881"
+    },
+    {
+      "index": 265500,
+      "liquidityNet": "-646838003704937",
+      "liquidityGross": "646838003704937"
+    },
+    {
+      "index": 265560,
+      "liquidityNet": "-422423521362347",
+      "liquidityGross": "422423521362347"
+    },
+    {
+      "index": 265620,
+      "liquidityNet": "-11390495459371",
+      "liquidityGross": "11390495459371"
+    },
+    {
+      "index": 265680,
+      "liquidityNet": "-14264473913293",
+      "liquidityGross": "14264473913293"
+    },
+    {
+      "index": 265740,
+      "liquidityNet": "-809676720010",
+      "liquidityGross": "809676720010"
+    },
+    {
+      "index": 265800,
+      "liquidityNet": "-228442660393752",
+      "liquidityGross": "228442660393752"
+    },
+    {
+      "index": 265980,
+      "liquidityNet": "-1109158269877",
+      "liquidityGross": "1109158269877"
+    },
+    {
+      "index": 266220,
+      "liquidityNet": "-40234494434",
+      "liquidityGross": "40234494434"
+    },
+    {
+      "index": 266520,
+      "liquidityNet": "-95239241762338",
+      "liquidityGross": "95239241762338"
+    },
+    {
+      "index": 266580,
+      "liquidityNet": "-7345787342181",
+      "liquidityGross": "7345787342181"
+    },
+    {
+      "index": 266640,
+      "liquidityNet": "-893004067318",
+      "liquidityGross": "893004067318"
+    },
+    {
+      "index": 266700,
+      "liquidityNet": "-238322377607001",
+      "liquidityGross": "238322377607001"
+    },
+    {
+      "index": 266940,
+      "liquidityNet": "-3816659140777",
+      "liquidityGross": "3816659140777"
+    },
+    {
+      "index": 267000,
+      "liquidityNet": "-14630998912172",
+      "liquidityGross": "14630998912172"
+    },
+    {
+      "index": 267060,
+      "liquidityNet": "-2002323771185",
+      "liquidityGross": "2002323771185"
+    },
+    {
+      "index": 267120,
+      "liquidityNet": "-4026522741505",
+      "liquidityGross": "4026522741505"
+    },
+    {
+      "index": 267180,
+      "liquidityNet": "-878049993248372",
+      "liquidityGross": "878049993248372"
+    },
+    {
+      "index": 267720,
+      "liquidityNet": "-1432820167102",
+      "liquidityGross": "1432820167102"
+    },
+    {
+      "index": 268260,
+      "liquidityNet": "-41247994973279",
+      "liquidityGross": "41247994973279"
+    },
+    {
+      "index": 268320,
+      "liquidityNet": "-3921753993726",
+      "liquidityGross": "3921753993726"
+    },
+    {
+      "index": 268620,
+      "liquidityNet": "-7842385042332",
+      "liquidityGross": "7842385042332"
+    },
+    {
+      "index": 268920,
+      "liquidityNet": "-48860694293",
+      "liquidityGross": "48860694293"
+    },
+    {
+      "index": 268980,
+      "liquidityNet": "-233944583115",
+      "liquidityGross": "233944583115"
+    },
+    {
+      "index": 269160,
+      "liquidityNet": "-2921179233331",
+      "liquidityGross": "2921179233331"
+    },
+    {
+      "index": 269220,
+      "liquidityNet": "-116527715609",
+      "liquidityGross": "116527715609"
+    },
+    {
+      "index": 269280,
+      "liquidityNet": "-4816040963852",
+      "liquidityGross": "4816040963852"
+    },
+    {
+      "index": 269400,
+      "liquidityNet": "-515347242942616",
+      "liquidityGross": "515347242942616"
+    },
+    {
+      "index": 270420,
+      "liquidityNet": "-120389476854562",
+      "liquidityGross": "120389476854562"
+    },
+    {
+      "index": 270540,
+      "liquidityNet": "-34804953692",
+      "liquidityGross": "34804953692"
+    },
+    {
+      "index": 270840,
+      "liquidityNet": "-1649567047148",
+      "liquidityGross": "1649567047148"
+    },
+    {
+      "index": 271080,
+      "liquidityNet": "-103000565770",
+      "liquidityGross": "103000565770"
+    },
+    {
+      "index": 271500,
+      "liquidityNet": "-7387510370926",
+      "liquidityGross": "7387510370926"
+    },
+    {
+      "index": 271680,
+      "liquidityNet": "-6060018180622",
+      "liquidityGross": "6060018180622"
+    },
+    {
+      "index": 272280,
+      "liquidityNet": "-4538579708481",
+      "liquidityGross": "4538579708481"
+    },
+    {
+      "index": 272520,
+      "liquidityNet": "-202950841112641",
+      "liquidityGross": "202950841112641"
+    },
+    {
+      "index": 272580,
+      "liquidityNet": "-1537745525855",
+      "liquidityGross": "1537745525855"
+    },
+    {
+      "index": 276300,
+      "liquidityNet": "-2543662313063992",
+      "liquidityGross": "2543662313063992"
+    },
+    {
+      "index": 278940,
+      "liquidityNet": "-5164088638751",
+      "liquidityGross": "5164088638751"
+    },
+    {
+      "index": 280080,
+      "liquidityNet": "-24418298514298",
+      "liquidityGross": "24418298514298"
+    },
+    {
+      "index": 280500,
+      "liquidityNet": "-6081508773089",
+      "liquidityGross": "6081508773089"
+    },
+    {
+      "index": 281220,
+      "liquidityNet": "-33872560240",
+      "liquidityGross": "33872560240"
+    },
+    {
+      "index": 282180,
+      "liquidityNet": "-2366835767353",
+      "liquidityGross": "2366835767353"
+    },
+    {
+      "index": 283260,
+      "liquidityNet": "-12241814398321",
+      "liquidityGross": "12241814398321"
+    },
+    {
+      "index": 283800,
+      "liquidityNet": "-1410203189999",
+      "liquidityGross": "1410203189999"
+    },
+    {
+      "index": 329460,
+      "liquidityNet": "-643796387349",
+      "liquidityGross": "643796387349"
+    },
+    {
+      "index": 368460,
+      "liquidityNet": "-486522234414488",
+      "liquidityGross": "486522234414488"
+    },
+    {
+      "index": 391440,
+      "liquidityNet": "-456406095307",
+      "liquidityGross": "456406095307"
+    },
+    {
+      "index": 437520,
+      "liquidityNet": "-10943161472679",
+      "liquidityGross": "10943161472679"
+    },
+    {
+      "index": 887220,
+      "liquidityNet": "-97132329311971",
+      "liquidityGross": "97132329311971"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "54517213017",
+      "exactInput": true,
+      "expectedAmountCalculated": "8540366807265584113429"
+    },
+    {
+      "amountSpecified": "150712630324",
+      "exactInput": true,
+      "expectedAmountCalculated": "23050261563741022506147"
+    },
+    {
+      "amountSpecified": "203044517283",
+      "exactInput": true,
+      "expectedAmountCalculated": "30670792007306381974038"
+    },
+    {
+      "amountSpecified": "109463182693",
+      "exactInput": true,
+      "expectedAmountCalculated": "16911812787887576740818"
+    },
+    {
+      "amountSpecified": "32063145155",
+      "exactInput": true,
+      "expectedAmountCalculated": "5047286578752534332865"
+    },
+    {
+      "amountSpecified": "1432534616",
+      "exactInput": true,
+      "expectedAmountCalculated": "227006000055976523771"
+    },
+    {
+      "amountSpecified": "146872177772",
+      "exactInput": true,
+      "expectedAmountCalculated": "22483774658015620280376"
+    },
+    {
+      "amountSpecified": "126207185996",
+      "exactInput": true,
+      "expectedAmountCalculated": "19417934142677404094734"
+    },
+    {
+      "amountSpecified": "165585606267",
+      "exactInput": true,
+      "expectedAmountCalculated": "25234443860442961149402"
+    },
+    {
+      "amountSpecified": "99981592387",
+      "exactInput": true,
+      "expectedAmountCalculated": "15483812451366312601171"
+    },
+    {
+      "amountSpecified": "155085379342",
+      "exactInput": true,
+      "expectedAmountCalculated": "23694014154078641535022"
+    },
+    {
+      "amountSpecified": "177767924152",
+      "exactInput": true,
+      "expectedAmountCalculated": "27012212150492654182086"
+    },
+    {
+      "amountSpecified": "181262410653",
+      "exactInput": true,
+      "expectedAmountCalculated": "27520306477471066009065"
+    },
+    {
+      "amountSpecified": "47731014258",
+      "exactInput": true,
+      "expectedAmountCalculated": "7488472033886271825335"
+    },
+    {
+      "amountSpecified": "144899525212",
+      "exactInput": true,
+      "expectedAmountCalculated": "22192399294464705590021"
+    },
+    {
+      "amountSpecified": "158633370086",
+      "exactInput": true,
+      "expectedAmountCalculated": "24215370328167151111640"
+    },
+    {
+      "amountSpecified": "208039493243",
+      "exactInput": true,
+      "expectedAmountCalculated": "31389799922886426877490"
+    },
+    {
+      "amountSpecified": "166023394893",
+      "exactInput": true,
+      "expectedAmountCalculated": "25298505287909110507703"
+    },
+    {
+      "amountSpecified": "69573362398",
+      "exactInput": true,
+      "expectedAmountCalculated": "10858462022111402961911"
+    },
+    {
+      "amountSpecified": "176436910172",
+      "exactInput": true,
+      "expectedAmountCalculated": "26818467056323488066321"
+    },
+    {
+      "amountSpecified": "13999131071",
+      "exactInput": true,
+      "expectedAmountCalculated": "2212319095461053131567"
+    },
+    {
+      "amountSpecified": "56314643351",
+      "exactInput": true,
+      "expectedAmountCalculated": "8818293961125653187338"
+    },
+    {
+      "amountSpecified": "4258133512",
+      "exactInput": true,
+      "expectedAmountCalculated": "674348869087911135048"
+    },
+    {
+      "amountSpecified": "37657076868",
+      "exactInput": true,
+      "expectedAmountCalculated": "5920786411483408784305"
+    },
+    {
+      "amountSpecified": "55797044640",
+      "exactInput": true,
+      "expectedAmountCalculated": "8738296063805428545272"
+    },
+    {
+      "amountSpecified": "147663414742",
+      "exactInput": true,
+      "expectedAmountCalculated": "22600570351240231948502"
+    },
+    {
+      "amountSpecified": "138022790265",
+      "exactInput": true,
+      "expectedAmountCalculated": "21174539154740097079295"
+    },
+    {
+      "amountSpecified": "124833470867",
+      "exactInput": true,
+      "expectedAmountCalculated": "19213069829600320529464"
+    },
+    {
+      "amountSpecified": "198716754524",
+      "exactInput": true,
+      "expectedAmountCalculated": "30046899861375124268467"
+    },
+    {
+      "amountSpecified": "145435508597",
+      "exactInput": true,
+      "expectedAmountCalculated": "22271594724807551304460"
+    },
+    {
+      "amountSpecified": "11030434955",
+      "exactInput": true,
+      "expectedAmountCalculated": "1744291568585530650455"
+    },
+    {
+      "amountSpecified": "217623222841",
+      "exactInput": true,
+      "expectedAmountCalculated": "32766361079713838637564"
+    },
+    {
+      "amountSpecified": "153593140225",
+      "exactInput": true,
+      "expectedAmountCalculated": "23474477398464812856293"
+    },
+    {
+      "amountSpecified": "161941866639",
+      "exactInput": true,
+      "expectedAmountCalculated": "24700749417618921582776"
+    },
+    {
+      "amountSpecified": "214266574490",
+      "exactInput": true,
+      "expectedAmountCalculated": "32284673285824221510912"
+    },
+    {
+      "amountSpecified": "16568508619",
+      "exactInput": true,
+      "expectedAmountCalculated": "2616906567523592641790"
+    },
+    {
+      "amountSpecified": "57412652940",
+      "exactInput": true,
+      "expectedAmountCalculated": "8987902354517054615514"
+    },
+    {
+      "amountSpecified": "103221321341",
+      "exactInput": true,
+      "expectedAmountCalculated": "15972477028983867723557"
+    },
+    {
+      "amountSpecified": "213564514849",
+      "exactInput": true,
+      "expectedAmountCalculated": "32183865261692386319121"
+    },
+    {
+      "amountSpecified": "190033601385",
+      "exactInput": true,
+      "expectedAmountCalculated": "28792105428103547575177"
+    },
+    {
+      "amountSpecified": "109159882929",
+      "exactInput": true,
+      "expectedAmountCalculated": "16866234745584525341115"
+    },
+    {
+      "amountSpecified": "130639987421",
+      "exactInput": true,
+      "expectedAmountCalculated": "20078098972855710012446"
+    },
+    {
+      "amountSpecified": "211226718595",
+      "exactInput": true,
+      "expectedAmountCalculated": "31848032128015082166395"
+    },
+    {
+      "amountSpecified": "112986894227",
+      "exactInput": true,
+      "expectedAmountCalculated": "17440857618295027073076"
+    },
+    {
+      "amountSpecified": "109067830086",
+      "exactInput": true,
+      "expectedAmountCalculated": "16852400287613897664167"
+    },
+    {
+      "amountSpecified": "6170574837",
+      "exactInput": true,
+      "expectedAmountCalculated": "976810823712019109708"
+    },
+    {
+      "amountSpecified": "151917444658",
+      "exactInput": true,
+      "expectedAmountCalculated": "23227766148756541622890"
+    },
+    {
+      "amountSpecified": "188603397855",
+      "exactInput": true,
+      "expectedAmountCalculated": "28585038315580531862222"
+    },
+    {
+      "amountSpecified": "108089930501",
+      "exactInput": true,
+      "expectedAmountCalculated": "16705395517473705963570"
+    },
+    {
+      "amountSpecified": "195767049621",
+      "exactInput": true,
+      "expectedAmountCalculated": "29621095801428680577980"
+    },
+    {
+      "amountSpecified": "29898416689203374800915",
+      "exactInput": false,
+      "expectedAmountCalculated": "197687787858"
+    },
+    {
+      "amountSpecified": "16345174567463240489184",
+      "exactInput": false,
+      "expectedAmountCalculated": "105695633672"
+    },
+    {
+      "amountSpecified": "1587465312086951540721",
+      "exactInput": false,
+      "expectedAmountCalculated": "10036541698"
+    },
+    {
+      "amountSpecified": "24636355583725221814555",
+      "exactInput": false,
+      "expectedAmountCalculated": "161502643165"
+    },
+    {
+      "amountSpecified": "71590366402946240497716",
+      "exactInput": false,
+      "expectedAmountCalculated": "501857981552"
+    },
+    {
+      "amountSpecified": "21846980109123013254683",
+      "exactInput": false,
+      "expectedAmountCalculated": "142563354921"
+    },
+    {
+      "amountSpecified": "28923253919974499736133",
+      "exactInput": false,
+      "expectedAmountCalculated": "190939832920"
+    },
+    {
+      "amountSpecified": "80261004155042955971118",
+      "exactInput": false,
+      "expectedAmountCalculated": "571455770688"
+    },
+    {
+      "amountSpecified": "7626467834444244399292",
+      "exactInput": false,
+      "expectedAmountCalculated": "48620035153"
+    },
+    {
+      "amountSpecified": "76577742181273463869896",
+      "exactInput": false,
+      "expectedAmountCalculated": "541218644761"
+    },
+    {
+      "amountSpecified": "45058690948285772141490",
+      "exactInput": false,
+      "expectedAmountCalculated": "304431827239"
+    },
+    {
+      "amountSpecified": "62167409652727228677432",
+      "exactInput": false,
+      "expectedAmountCalculated": "429715281410"
+    },
+    {
+      "amountSpecified": "86419670489073751815246",
+      "exactInput": false,
+      "expectedAmountCalculated": "628741918650"
+    },
+    {
+      "amountSpecified": "68079465982853100396816",
+      "exactInput": false,
+      "expectedAmountCalculated": "474675371908"
+    },
+    {
+      "amountSpecified": "46077109113485906624196",
+      "exactInput": false,
+      "expectedAmountCalculated": "311727309199"
+    },
+    {
+      "amountSpecified": "44274257637742763664635",
+      "exactInput": false,
+      "expectedAmountCalculated": "298824892265"
+    },
+    {
+      "amountSpecified": "23847531497092055717952",
+      "exactInput": false,
+      "expectedAmountCalculated": "156129495352"
+    },
+    {
+      "amountSpecified": "69640694823242255144106",
+      "exactInput": false,
+      "expectedAmountCalculated": "486716450255"
+    },
+    {
+      "amountSpecified": "27274850514226776252336",
+      "exactInput": false,
+      "expectedAmountCalculated": "179573545838"
+    },
+    {
+      "amountSpecified": "23304875244824112170546",
+      "exactInput": false,
+      "expectedAmountCalculated": "152441037339"
+    },
+    {
+      "amountSpecified": "39794399253651312784143",
+      "exactInput": false,
+      "expectedAmountCalculated": "266981617559"
+    },
+    {
+      "amountSpecified": "46288332473263659467724",
+      "exactInput": false,
+      "expectedAmountCalculated": "313242820362"
+    },
+    {
+      "amountSpecified": "27177000984673176050850",
+      "exactInput": false,
+      "expectedAmountCalculated": "178900659517"
+    },
+    {
+      "amountSpecified": "81780231934566309773824",
+      "exactInput": false,
+      "expectedAmountCalculated": "584339623560"
+    },
+    {
+      "amountSpecified": "65705115471809624979036",
+      "exactInput": false,
+      "expectedAmountCalculated": "456499871960"
+    },
+    {
+      "amountSpecified": "32430978269974139582965",
+      "exactInput": false,
+      "expectedAmountCalculated": "215285749718"
+    },
+    {
+      "amountSpecified": "9695773648926814560072",
+      "exactInput": false,
+      "expectedAmountCalculated": "62004339617"
+    },
+    {
+      "amountSpecified": "46230043588761478773072",
+      "exactInput": false,
+      "expectedAmountCalculated": "312824519533"
+    },
+    {
+      "amountSpecified": "39104613193043895529725",
+      "exactInput": false,
+      "expectedAmountCalculated": "262105164878"
+    },
+    {
+      "amountSpecified": "48175219610455603261404",
+      "exactInput": false,
+      "expectedAmountCalculated": "326817879603"
+    },
+    {
+      "amountSpecified": "9382303151866060454542",
+      "exactInput": false,
+      "expectedAmountCalculated": "59969169533"
+    },
+    {
+      "amountSpecified": "21359961406962822793464",
+      "exactInput": false,
+      "expectedAmountCalculated": "139273860109"
+    },
+    {
+      "amountSpecified": "73952113596684864737226",
+      "exactInput": false,
+      "expectedAmountCalculated": "520361025722"
+    },
+    {
+      "amountSpecified": "17150168255287549015386",
+      "exactInput": false,
+      "expectedAmountCalculated": "111050029720"
+    },
+    {
+      "amountSpecified": "47059721095165730353344",
+      "exactInput": false,
+      "expectedAmountCalculated": "318784506382"
+    },
+    {
+      "amountSpecified": "20584506395556189708195",
+      "exactInput": false,
+      "expectedAmountCalculated": "134046653200"
+    },
+    {
+      "amountSpecified": "74061782509185910792434",
+      "exactInput": false,
+      "expectedAmountCalculated": "521224765810"
+    },
+    {
+      "amountSpecified": "8823166294647292282345",
+      "exactInput": false,
+      "expectedAmountCalculated": "56346174125"
+    },
+    {
+      "amountSpecified": "23448793712010859777354",
+      "exactInput": false,
+      "expectedAmountCalculated": "153418631330"
+    },
+    {
+      "amountSpecified": "1044049308307613031199",
+      "exactInput": false,
+      "expectedAmountCalculated": "6595934147"
+    },
+    {
+      "amountSpecified": "34375117863632630874314",
+      "exactInput": false,
+      "expectedAmountCalculated": "228858131120"
+    },
+    {
+      "amountSpecified": "6929919392454392019553",
+      "exactInput": false,
+      "expectedAmountCalculated": "44136378541"
+    },
+    {
+      "amountSpecified": "74289629484084120676758",
+      "exactInput": false,
+      "expectedAmountCalculated": "523021039012"
+    },
+    {
+      "amountSpecified": "5731107529748009549483",
+      "exactInput": false,
+      "expectedAmountCalculated": "36441242882"
+    },
+    {
+      "amountSpecified": "79762102664801313536052",
+      "exactInput": false,
+      "expectedAmountCalculated": "567280817153"
+    },
+    {
+      "amountSpecified": "48941830411257350472192",
+      "exactInput": false,
+      "expectedAmountCalculated": "332352182853"
+    },
+    {
+      "amountSpecified": "75120732697439587299576",
+      "exactInput": false,
+      "expectedAmountCalculated": "529593800462"
+    },
+    {
+      "amountSpecified": "64161916002901303111770",
+      "exactInput": false,
+      "expectedAmountCalculated": "444773535973"
+    },
+    {
+      "amountSpecified": "55225497335974895029530",
+      "exactInput": false,
+      "expectedAmountCalculated": "378139792836"
+    },
+    {
+      "amountSpecified": "63560244884754067792542",
+      "exactInput": false,
+      "expectedAmountCalculated": "440219440832"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0xE0554a476A092703abdB3Ef35c80e0D76d32939F-reversed.json b/src/__tests__/stubs/swap/0xE0554a476A092703abdB3Ef35c80e0D76d32939F-reversed.json
new file mode 100644
index 00000000..b0f567bf
--- /dev/null
+++ b/src/__tests__/stubs/swap/0xE0554a476A092703abdB3Ef35c80e0D76d32939F-reversed.json
@@ -0,0 +1,1296 @@
+{
+  "poolName": "USDC - WETH 100 - reversed",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
+    "decimals": 6
+  },
+  "fee": 100,
+  "liquidity": "73846696942996",
+  "sqrtRatioX96": "1806870622813976949294462024300008",
+  "tickCurrent": 200705,
+  "ticks": [
+    {
+      "index": -887272,
+      "liquidityNet": "19120405947756",
+      "liquidityGross": "19120405947756"
+    },
+    {
+      "index": 132854,
+      "liquidityNet": "125332561609",
+      "liquidityGross": "125332561609"
+    },
+    {
+      "index": 190194,
+      "liquidityNet": "3185200246545",
+      "liquidityGross": "3185200246545"
+    },
+    {
+      "index": 195690,
+      "liquidityNet": "11451835",
+      "liquidityGross": "11451835"
+    },
+    {
+      "index": 195753,
+      "liquidityNet": "-11451835",
+      "liquidityGross": "11451835"
+    },
+    {
+      "index": 195941,
+      "liquidityNet": "1155317221850",
+      "liquidityGross": "1155317221850"
+    },
+    {
+      "index": 196003,
+      "liquidityNet": "-1155317221850",
+      "liquidityGross": "1155317221850"
+    },
+    {
+      "index": 196772,
+      "liquidityNet": "358932402229492",
+      "liquidityGross": "358932402229492"
+    },
+    {
+      "index": 196801,
+      "liquidityNet": "-358932402229492",
+      "liquidityGross": "358932402229492"
+    },
+    {
+      "index": 197033,
+      "liquidityNet": "161320121767775",
+      "liquidityGross": "161320121767775"
+    },
+    {
+      "index": 197046,
+      "liquidityNet": "-161320121767775",
+      "liquidityGross": "161320121767775"
+    },
+    {
+      "index": 197100,
+      "liquidityNet": "39934519306858",
+      "liquidityGross": "39934519306858"
+    },
+    {
+      "index": 197140,
+      "liquidityNet": "-39934519306858",
+      "liquidityGross": "39934519306858"
+    },
+    {
+      "index": 197191,
+      "liquidityNet": "237288793647016",
+      "liquidityGross": "237288793647016"
+    },
+    {
+      "index": 197218,
+      "liquidityNet": "-237288793647016",
+      "liquidityGross": "237288793647016"
+    },
+    {
+      "index": 197353,
+      "liquidityNet": "20498400330754",
+      "liquidityGross": "20498400330754"
+    },
+    {
+      "index": 197380,
+      "liquidityNet": "-20498400330754",
+      "liquidityGross": "20498400330754"
+    },
+    {
+      "index": 197396,
+      "liquidityNet": "152059032381",
+      "liquidityGross": "152059032381"
+    },
+    {
+      "index": 197670,
+      "liquidityNet": "49628385116752",
+      "liquidityGross": "49628385116752"
+    },
+    {
+      "index": 197785,
+      "liquidityNet": "86152843936",
+      "liquidityGross": "86152843936"
+    },
+    {
+      "index": 197806,
+      "liquidityNet": "-86152843936",
+      "liquidityGross": "86152843936"
+    },
+    {
+      "index": 197848,
+      "liquidityNet": "3724892662139",
+      "liquidityGross": "3724892662139"
+    },
+    {
+      "index": 197888,
+      "liquidityNet": "-3724892662139",
+      "liquidityGross": "3724892662139"
+    },
+    {
+      "index": 197903,
+      "liquidityNet": "5366964393945",
+      "liquidityGross": "5366964393945"
+    },
+    {
+      "index": 197928,
+      "liquidityNet": "-5366964393945",
+      "liquidityGross": "5366964393945"
+    },
+    {
+      "index": 200311,
+      "liquidityNet": "1635314037953",
+      "liquidityGross": "1635314037953"
+    },
+    {
+      "index": 200410,
+      "liquidityNet": "10493807154154",
+      "liquidityGross": "10493807154154"
+    },
+    {
+      "index": 200416,
+      "liquidityNet": "51176939373823",
+      "liquidityGross": "51176939373823"
+    },
+    {
+      "index": 200430,
+      "liquidityNet": "-10493807154154",
+      "liquidityGross": "10493807154154"
+    },
+    {
+      "index": 200437,
+      "liquidityNet": "112570704155117",
+      "liquidityGross": "112570704155117"
+    },
+    {
+      "index": 200439,
+      "liquidityNet": "-51176939373823",
+      "liquidityGross": "51176939373823"
+    },
+    {
+      "index": 200457,
+      "liquidityNet": "-112570704155117",
+      "liquidityGross": "112570704155117"
+    },
+    {
+      "index": 200489,
+      "liquidityNet": "341704272",
+      "liquidityGross": "341704272"
+    },
+    {
+      "index": 200494,
+      "liquidityNet": "1965795881223827",
+      "liquidityGross": "1965795881223827"
+    },
+    {
+      "index": 200509,
+      "liquidityNet": "-341704272",
+      "liquidityGross": "341704272"
+    },
+    {
+      "index": 200516,
+      "liquidityNet": "-1965795881223827",
+      "liquidityGross": "1965795881223827"
+    },
+    {
+      "index": 200824,
+      "liquidityNet": "123539804499",
+      "liquidityGross": "123539804499"
+    },
+    {
+      "index": 201227,
+      "liquidityNet": "32490726189301",
+      "liquidityGross": "32490726189301"
+    },
+    {
+      "index": 201246,
+      "liquidityNet": "-32490726189301",
+      "liquidityGross": "32490726189301"
+    },
+    {
+      "index": 201253,
+      "liquidityNet": "102257414503605",
+      "liquidityGross": "102257414503605"
+    },
+    {
+      "index": 201300,
+      "liquidityNet": "258047151006956",
+      "liquidityGross": "258047151006956"
+    },
+    {
+      "index": 201318,
+      "liquidityNet": "-258047151006956",
+      "liquidityGross": "258047151006956"
+    },
+    {
+      "index": 201344,
+      "liquidityNet": "142968103242240",
+      "liquidityGross": "142968103242240"
+    },
+    {
+      "index": 201362,
+      "liquidityNet": "15528781649616",
+      "liquidityGross": "15528781649616"
+    },
+    {
+      "index": 201364,
+      "liquidityNet": "-142968103242240",
+      "liquidityGross": "142968103242240"
+    },
+    {
+      "index": 201377,
+      "liquidityNet": "1350404366788071",
+      "liquidityGross": "1350404366788071"
+    },
+    {
+      "index": 201398,
+      "liquidityNet": "93802116984498157",
+      "liquidityGross": "93802116984498157"
+    },
+    {
+      "index": 201444,
+      "liquidityNet": "6903962207882",
+      "liquidityGross": "6903962207882"
+    },
+    {
+      "index": 201445,
+      "liquidityNet": "-93802116984498157",
+      "liquidityGross": "93802116984498157"
+    },
+    {
+      "index": 201462,
+      "liquidityNet": "-6903962207882",
+      "liquidityGross": "6903962207882"
+    },
+    {
+      "index": 201476,
+      "liquidityNet": "-1350404366788071",
+      "liquidityGross": "1350404366788071"
+    },
+    {
+      "index": 201508,
+      "liquidityNet": "21057125352503",
+      "liquidityGross": "21057125352503"
+    },
+    {
+      "index": 201528,
+      "liquidityNet": "-21057125352503",
+      "liquidityGross": "21057125352503"
+    },
+    {
+      "index": 201532,
+      "liquidityNet": "98558611732786",
+      "liquidityGross": "98558611732786"
+    },
+    {
+      "index": 201533,
+      "liquidityNet": "40225627431772",
+      "liquidityGross": "40225627431772"
+    },
+    {
+      "index": 201544,
+      "liquidityNet": "-98558611732786",
+      "liquidityGross": "98558611732786"
+    },
+    {
+      "index": 201545,
+      "liquidityNet": "520590759322759",
+      "liquidityGross": "520590759322759"
+    },
+    {
+      "index": 201551,
+      "liquidityNet": "-40225627431772",
+      "liquidityGross": "40225627431772"
+    },
+    {
+      "index": 201565,
+      "liquidityNet": "-520590759322759",
+      "liquidityGross": "520590759322759"
+    },
+    {
+      "index": 201568,
+      "liquidityNet": "228639497932",
+      "liquidityGross": "228639497932"
+    },
+    {
+      "index": 201586,
+      "liquidityNet": "-228639497932",
+      "liquidityGross": "228639497932"
+    },
+    {
+      "index": 201603,
+      "liquidityNet": "763560952324850",
+      "liquidityGross": "763560952324850"
+    },
+    {
+      "index": 201629,
+      "liquidityNet": "-674312633834985",
+      "liquidityGross": "674312633834985"
+    },
+    {
+      "index": 201639,
+      "liquidityNet": "-89248318489865",
+      "liquidityGross": "89248318489865"
+    },
+    {
+      "index": 201656,
+      "liquidityNet": "498719487194",
+      "liquidityGross": "498719487194"
+    },
+    {
+      "index": 201674,
+      "liquidityNet": "-498719487194",
+      "liquidityGross": "498719487194"
+    },
+    {
+      "index": 201915,
+      "liquidityNet": "2265624825567",
+      "liquidityGross": "2265624825567"
+    },
+    {
+      "index": 201949,
+      "liquidityNet": "-2265624825567",
+      "liquidityGross": "2265624825567"
+    },
+    {
+      "index": 202190,
+      "liquidityNet": "49923308774004",
+      "liquidityGross": "49923308774004"
+    },
+    {
+      "index": 202200,
+      "liquidityNet": "31968829915427",
+      "liquidityGross": "31968829915427"
+    },
+    {
+      "index": 202210,
+      "liquidityNet": "-49923308774004",
+      "liquidityGross": "49923308774004"
+    },
+    {
+      "index": 202234,
+      "liquidityNet": "-31968829915427",
+      "liquidityGross": "31968829915427"
+    },
+    {
+      "index": 202243,
+      "liquidityNet": "158273542983972",
+      "liquidityGross": "158273542983972"
+    },
+    {
+      "index": 202262,
+      "liquidityNet": "-158273542983972",
+      "liquidityGross": "158273542983972"
+    },
+    {
+      "index": 202309,
+      "liquidityNet": "7454595934184",
+      "liquidityGross": "7454595934184"
+    },
+    {
+      "index": 202329,
+      "liquidityNet": "-7454595934184",
+      "liquidityGross": "7454595934184"
+    },
+    {
+      "index": 202400,
+      "liquidityNet": "53842970520848",
+      "liquidityGross": "53842970520848"
+    },
+    {
+      "index": 202420,
+      "liquidityNet": "-53842970520848",
+      "liquidityGross": "53842970520848"
+    },
+    {
+      "index": 202550,
+      "liquidityNet": "5973840651613",
+      "liquidityGross": "5973840651613"
+    },
+    {
+      "index": 202569,
+      "liquidityNet": "-5973840651613",
+      "liquidityGross": "5973840651613"
+    },
+    {
+      "index": 202642,
+      "liquidityNet": "52117442109784",
+      "liquidityGross": "52117442109784"
+    },
+    {
+      "index": 202648,
+      "liquidityNet": "11753011198508",
+      "liquidityGross": "11753011198508"
+    },
+    {
+      "index": 202662,
+      "liquidityNet": "-52117442109784",
+      "liquidityGross": "52117442109784"
+    },
+    {
+      "index": 202668,
+      "liquidityNet": "-11753011198508",
+      "liquidityGross": "11753011198508"
+    },
+    {
+      "index": 202758,
+      "liquidityNet": "5459716818008",
+      "liquidityGross": "5459716818008"
+    },
+    {
+      "index": 202764,
+      "liquidityNet": "316852345136416",
+      "liquidityGross": "316852345136416"
+    },
+    {
+      "index": 202778,
+      "liquidityNet": "-5459716818008",
+      "liquidityGross": "5459716818008"
+    },
+    {
+      "index": 202779,
+      "liquidityNet": "-316852345136416",
+      "liquidityGross": "316852345136416"
+    },
+    {
+      "index": 202857,
+      "liquidityNet": "1920242289029",
+      "liquidityGross": "1920242289029"
+    },
+    {
+      "index": 202874,
+      "liquidityNet": "390523500031359",
+      "liquidityGross": "390523500031359"
+    },
+    {
+      "index": 202904,
+      "liquidityNet": "-1920242289029",
+      "liquidityGross": "1920242289029"
+    },
+    {
+      "index": 202914,
+      "liquidityNet": "-390523500031359",
+      "liquidityGross": "390523500031359"
+    },
+    {
+      "index": 203117,
+      "liquidityNet": "23376906740732",
+      "liquidityGross": "23376906740732"
+    },
+    {
+      "index": 203163,
+      "liquidityNet": "-23376906740732",
+      "liquidityGross": "23376906740732"
+    },
+    {
+      "index": 203188,
+      "liquidityNet": "1651181106958",
+      "liquidityGross": "1651181106958"
+    },
+    {
+      "index": 203326,
+      "liquidityNet": "256425666647287",
+      "liquidityGross": "256425666647287"
+    },
+    {
+      "index": 203328,
+      "liquidityNet": "-256425666647287",
+      "liquidityGross": "256425666647287"
+    },
+    {
+      "index": 203754,
+      "liquidityNet": "16215617759239",
+      "liquidityGross": "16215617759239"
+    },
+    {
+      "index": 203774,
+      "liquidityNet": "-16215617759239",
+      "liquidityGross": "16215617759239"
+    },
+    {
+      "index": 203878,
+      "liquidityNet": "-1651181106958",
+      "liquidityGross": "1651181106958"
+    },
+    {
+      "index": 204245,
+      "liquidityNet": "36239904137",
+      "liquidityGross": "36239904137"
+    },
+    {
+      "index": 204258,
+      "liquidityNet": "20911183283685",
+      "liquidityGross": "20911183283685"
+    },
+    {
+      "index": 204272,
+      "liquidityNet": "-36239904137",
+      "liquidityGross": "36239904137"
+    },
+    {
+      "index": 204299,
+      "liquidityNet": "-20911183283685",
+      "liquidityGross": "20911183283685"
+    },
+    {
+      "index": 204339,
+      "liquidityNet": "483480800570853",
+      "liquidityGross": "483480800570853"
+    },
+    {
+      "index": 204352,
+      "liquidityNet": "494054955281522",
+      "liquidityGross": "494054955281522"
+    },
+    {
+      "index": 204366,
+      "liquidityNet": "-483480800570853",
+      "liquidityGross": "483480800570853"
+    },
+    {
+      "index": 204392,
+      "liquidityNet": "-494054955281522",
+      "liquidityGross": "494054955281522"
+    },
+    {
+      "index": 204419,
+      "liquidityNet": "7966915220782",
+      "liquidityGross": "7966915220782"
+    },
+    {
+      "index": 204445,
+      "liquidityNet": "-7966915220782",
+      "liquidityGross": "7966915220782"
+    },
+    {
+      "index": 204470,
+      "liquidityNet": "38975179617",
+      "liquidityGross": "38975179617"
+    },
+    {
+      "index": 204498,
+      "liquidityNet": "35907392385540",
+      "liquidityGross": "35907392385540"
+    },
+    {
+      "index": 204510,
+      "liquidityNet": "-38975179617",
+      "liquidityGross": "38975179617"
+    },
+    {
+      "index": 204511,
+      "liquidityNet": "-1269170421",
+      "liquidityGross": "1269170421"
+    },
+    {
+      "index": 204524,
+      "liquidityNet": "-35907392385540",
+      "liquidityGross": "35907392385540"
+    },
+    {
+      "index": 204619,
+      "liquidityNet": "20679384810490",
+      "liquidityGross": "20679384810490"
+    },
+    {
+      "index": 204693,
+      "liquidityNet": "15954922174379",
+      "liquidityGross": "15954922174379"
+    },
+    {
+      "index": 204706,
+      "liquidityNet": "-6732000427842",
+      "liquidityGross": "25177843920916"
+    },
+    {
+      "index": 204719,
+      "liquidityNet": "-9222921746537",
+      "liquidityGross": "9222921746537"
+    },
+    {
+      "index": 204839,
+      "liquidityNet": "34817785215685",
+      "liquidityGross": "34817785215685"
+    },
+    {
+      "index": 204879,
+      "liquidityNet": "-34817785215685",
+      "liquidityGross": "34817785215685"
+    },
+    {
+      "index": 204962,
+      "liquidityNet": "7987074227838",
+      "liquidityGross": "7987074227838"
+    },
+    {
+      "index": 204975,
+      "liquidityNet": "386751965172",
+      "liquidityGross": "386751965172"
+    },
+    {
+      "index": 204980,
+      "liquidityNet": "-7987074227838",
+      "liquidityGross": "7987074227838"
+    },
+    {
+      "index": 205015,
+      "liquidityNet": "-386751965172",
+      "liquidityGross": "386751965172"
+    },
+    {
+      "index": 205126,
+      "liquidityNet": "1597535700929",
+      "liquidityGross": "1597535700929"
+    },
+    {
+      "index": 205131,
+      "liquidityNet": "704675110774520",
+      "liquidityGross": "704675110774520"
+    },
+    {
+      "index": 205136,
+      "liquidityNet": "580465554696",
+      "liquidityGross": "580465554696"
+    },
+    {
+      "index": 205151,
+      "liquidityNet": "-704675110774520",
+      "liquidityGross": "704675110774520"
+    },
+    {
+      "index": 205155,
+      "liquidityNet": "-580465554696",
+      "liquidityGross": "580465554696"
+    },
+    {
+      "index": 205166,
+      "liquidityNet": "-1597535700929",
+      "liquidityGross": "1597535700929"
+    },
+    {
+      "index": 205233,
+      "liquidityNet": "41460525381026",
+      "liquidityGross": "41460525381026"
+    },
+    {
+      "index": 205253,
+      "liquidityNet": "-41460525381026",
+      "liquidityGross": "41460525381026"
+    },
+    {
+      "index": 205305,
+      "liquidityNet": "2049647381602",
+      "liquidityGross": "2049647381602"
+    },
+    {
+      "index": 205324,
+      "liquidityNet": "4463281717621",
+      "liquidityGross": "4463281717621"
+    },
+    {
+      "index": 205325,
+      "liquidityNet": "-2049647381602",
+      "liquidityGross": "2049647381602"
+    },
+    {
+      "index": 205344,
+      "liquidityNet": "-4463281717621",
+      "liquidityGross": "4463281717621"
+    },
+    {
+      "index": 205428,
+      "liquidityNet": "29924870231490",
+      "liquidityGross": "29924870231490"
+    },
+    {
+      "index": 205447,
+      "liquidityNet": "-29924870231490",
+      "liquidityGross": "29924870231490"
+    },
+    {
+      "index": 205503,
+      "liquidityNet": "-102257414503605",
+      "liquidityGross": "102257414503605"
+    },
+    {
+      "index": 205623,
+      "liquidityNet": "6264827616763",
+      "liquidityGross": "6264827616763"
+    },
+    {
+      "index": 205643,
+      "liquidityNet": "-6264827616763",
+      "liquidityGross": "6264827616763"
+    },
+    {
+      "index": 205873,
+      "liquidityNet": "139511863457719",
+      "liquidityGross": "139511863457719"
+    },
+    {
+      "index": 205884,
+      "liquidityNet": "-139511863457719",
+      "liquidityGross": "139511863457719"
+    },
+    {
+      "index": 206426,
+      "liquidityNet": "-49628385116752",
+      "liquidityGross": "49628385116752"
+    },
+    {
+      "index": 207237,
+      "liquidityNet": "-15528781649616",
+      "liquidityGross": "15528781649616"
+    },
+    {
+      "index": 207242,
+      "liquidityNet": "-20679384810490",
+      "liquidityGross": "20679384810490"
+    },
+    {
+      "index": 207243,
+      "liquidityNet": "-1635314037953",
+      "liquidityGross": "1635314037953"
+    },
+    {
+      "index": 207564,
+      "liquidityNet": "321375728884980",
+      "liquidityGross": "321375728884980"
+    },
+    {
+      "index": 207566,
+      "liquidityNet": "-321375728884980",
+      "liquidityGross": "321375728884980"
+    },
+    {
+      "index": 209613,
+      "liquidityNet": "-123539804499",
+      "liquidityGross": "123539804499"
+    },
+    {
+      "index": 210809,
+      "liquidityNet": "-152059032381",
+      "liquidityGross": "152059032381"
+    },
+    {
+      "index": 214174,
+      "liquidityNet": "-3185200246545",
+      "liquidityGross": "3185200246545"
+    },
+    {
+      "index": 271054,
+      "liquidityNet": "-125332561609",
+      "liquidityGross": "125332561609"
+    },
+    {
+      "index": 887272,
+      "liquidityNet": "-19119136777335",
+      "liquidityGross": "19119136777335"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "206935875190156993",
+      "exactInput": true,
+      "expectedAmountCalculated": "375391145"
+    },
+    {
+      "amountSpecified": "2734838332339875392",
+      "exactInput": true,
+      "expectedAmountCalculated": "4904674197"
+    },
+    {
+      "amountSpecified": "1914254994633618416",
+      "exactInput": true,
+      "expectedAmountCalculated": "3435536114"
+    },
+    {
+      "amountSpecified": "3045377865827571296",
+      "exactInput": true,
+      "expectedAmountCalculated": "5460372202"
+    },
+    {
+      "amountSpecified": "1060651767254580912",
+      "exactInput": true,
+      "expectedAmountCalculated": "1906144552"
+    },
+    {
+      "amountSpecified": "772327604896792440",
+      "exactInput": true,
+      "expectedAmountCalculated": "1389295346"
+    },
+    {
+      "amountSpecified": "1383467091758492848",
+      "exactInput": true,
+      "expectedAmountCalculated": "2484665529"
+    },
+    {
+      "amountSpecified": "131600349838527074",
+      "exactInput": true,
+      "expectedAmountCalculated": "240255202"
+    },
+    {
+      "amountSpecified": "3236598957381350848",
+      "exactInput": true,
+      "expectedAmountCalculated": "5802478494"
+    },
+    {
+      "amountSpecified": "1705547359636968552",
+      "exactInput": true,
+      "expectedAmountCalculated": "3061703972"
+    },
+    {
+      "amountSpecified": "1593421018259345104",
+      "exactInput": true,
+      "expectedAmountCalculated": "2860837338"
+    },
+    {
+      "amountSpecified": "2364046012393847168",
+      "exactInput": true,
+      "expectedAmountCalculated": "4240955641"
+    },
+    {
+      "amountSpecified": "1524562368440434962",
+      "exactInput": true,
+      "expectedAmountCalculated": "2737471889"
+    },
+    {
+      "amountSpecified": "727736512823775072",
+      "exactInput": true,
+      "expectedAmountCalculated": "1309349643"
+    },
+    {
+      "amountSpecified": "3225633041791688040",
+      "exactInput": true,
+      "expectedAmountCalculated": "5782861365"
+    },
+    {
+      "amountSpecified": "2060599442119156376",
+      "exactInput": true,
+      "expectedAmountCalculated": "3697623494"
+    },
+    {
+      "amountSpecified": "3259674150099342176",
+      "exactInput": true,
+      "expectedAmountCalculated": "5843757509"
+    },
+    {
+      "amountSpecified": "2742293512320229232",
+      "exactInput": true,
+      "expectedAmountCalculated": "4918016735"
+    },
+    {
+      "amountSpecified": "98077794184122478",
+      "exactInput": true,
+      "expectedAmountCalculated": "180095502"
+    },
+    {
+      "amountSpecified": "2470154542301796744",
+      "exactInput": true,
+      "expectedAmountCalculated": "4430912304"
+    },
+    {
+      "amountSpecified": "2515717524868844472",
+      "exactInput": true,
+      "expectedAmountCalculated": "4512474169"
+    },
+    {
+      "amountSpecified": "2778691431194643624",
+      "exactInput": true,
+      "expectedAmountCalculated": "4983156838"
+    },
+    {
+      "amountSpecified": "254637976358777328",
+      "exactInput": true,
+      "expectedAmountCalculated": "460953914"
+    },
+    {
+      "amountSpecified": "579986270816245482",
+      "exactInput": true,
+      "expectedAmountCalculated": "1044431127"
+    },
+    {
+      "amountSpecified": "381517825290369384",
+      "exactInput": true,
+      "expectedAmountCalculated": "688519350"
+    },
+    {
+      "amountSpecified": "592426558224021828",
+      "exactInput": true,
+      "expectedAmountCalculated": "1066738099"
+    },
+    {
+      "amountSpecified": "340531692159446552",
+      "exactInput": true,
+      "expectedAmountCalculated": "615011449"
+    },
+    {
+      "amountSpecified": "2480084313479823540",
+      "exactInput": true,
+      "expectedAmountCalculated": "4448687775"
+    },
+    {
+      "amountSpecified": "984641638211060670",
+      "exactInput": true,
+      "expectedAmountCalculated": "1769901821"
+    },
+    {
+      "amountSpecified": "2139727672148899424",
+      "exactInput": true,
+      "expectedAmountCalculated": "3839319580"
+    },
+    {
+      "amountSpecified": "2912874224921524832",
+      "exactInput": true,
+      "expectedAmountCalculated": "5223280994"
+    },
+    {
+      "amountSpecified": "2549731169114291824",
+      "exactInput": true,
+      "expectedAmountCalculated": "4573359523"
+    },
+    {
+      "amountSpecified": "2182592243579159960",
+      "exactInput": true,
+      "expectedAmountCalculated": "3916073642"
+    },
+    {
+      "amountSpecified": "7409640844605511",
+      "exactInput": true,
+      "expectedAmountCalculated": "14182487"
+    },
+    {
+      "amountSpecified": "115395724107133977",
+      "exactInput": true,
+      "expectedAmountCalculated": "211185084"
+    },
+    {
+      "amountSpecified": "1967506875457043632",
+      "exactInput": true,
+      "expectedAmountCalculated": "3530908523"
+    },
+    {
+      "amountSpecified": "865451132983087544",
+      "exactInput": true,
+      "expectedAmountCalculated": "1556242830"
+    },
+    {
+      "amountSpecified": "368270072817529118",
+      "exactInput": true,
+      "expectedAmountCalculated": "664760034"
+    },
+    {
+      "amountSpecified": "21157086283524208",
+      "exactInput": true,
+      "expectedAmountCalculated": "40169705"
+    },
+    {
+      "amountSpecified": "564129357542093590",
+      "exactInput": true,
+      "expectedAmountCalculated": "1015997365"
+    },
+    {
+      "amountSpecified": "1323602374707791976",
+      "exactInput": true,
+      "expectedAmountCalculated": "2377393820"
+    },
+    {
+      "amountSpecified": "246330690759719050",
+      "exactInput": true,
+      "expectedAmountCalculated": "446053482"
+    },
+    {
+      "amountSpecified": "2086329723230956344",
+      "exactInput": true,
+      "expectedAmountCalculated": "3743700179"
+    },
+    {
+      "amountSpecified": "2752708154713456920",
+      "exactInput": true,
+      "expectedAmountCalculated": "4936655677"
+    },
+    {
+      "amountSpecified": "2223031938648095928",
+      "exactInput": true,
+      "expectedAmountCalculated": "3988483002"
+    },
+    {
+      "amountSpecified": "1502966833867598792",
+      "exactInput": true,
+      "expectedAmountCalculated": "2698780311"
+    },
+    {
+      "amountSpecified": "1858806838019817496",
+      "exactInput": true,
+      "expectedAmountCalculated": "3336225453"
+    },
+    {
+      "amountSpecified": "2604223070992990848",
+      "exactInput": true,
+      "expectedAmountCalculated": "4670897688"
+    },
+    {
+      "amountSpecified": "2647025338042775952",
+      "exactInput": true,
+      "expectedAmountCalculated": "4747508601"
+    },
+    {
+      "amountSpecified": "2067999022888675712",
+      "exactInput": true,
+      "expectedAmountCalculated": "3710874454"
+    },
+    {
+      "amountSpecified": "6513939585",
+      "exactInput": false,
+      "expectedAmountCalculated": "3634375664842147871"
+    },
+    {
+      "amountSpecified": "2849333276",
+      "exactInput": false,
+      "expectedAmountCalculated": "1586999640207812746"
+    },
+    {
+      "amountSpecified": "6961034836",
+      "exactInput": false,
+      "expectedAmountCalculated": "3884417705249299297"
+    },
+    {
+      "amountSpecified": "7179070301",
+      "exactInput": false,
+      "expectedAmountCalculated": "4006376118116646066"
+    },
+    {
+      "amountSpecified": "15690729260",
+      "exactInput": false,
+      "expectedAmountCalculated": "352707837330874046725984060605897"
+    },
+    {
+      "amountSpecified": "13069893802",
+      "exactInput": false,
+      "expectedAmountCalculated": "352707837330874046725984060605897"
+    },
+    {
+      "amountSpecified": "3996150839",
+      "exactInput": false,
+      "expectedAmountCalculated": "2227314411819451309"
+    },
+    {
+      "amountSpecified": "8896526847",
+      "exactInput": false,
+      "expectedAmountCalculated": "4967499014746524209"
+    },
+    {
+      "amountSpecified": "12848686855",
+      "exactInput": false,
+      "expectedAmountCalculated": "352707837330874046725984060605897"
+    },
+    {
+      "amountSpecified": "6541103876",
+      "exactInput": false,
+      "expectedAmountCalculated": "3649565956717725823"
+    },
+    {
+      "amountSpecified": "10252386885",
+      "exactInput": false,
+      "expectedAmountCalculated": "5738634409962602075"
+    },
+    {
+      "amountSpecified": "12153531972",
+      "exactInput": false,
+      "expectedAmountCalculated": "7676367748972685234"
+    },
+    {
+      "amountSpecified": "10195809512",
+      "exactInput": false,
+      "expectedAmountCalculated": "5703972316767376241"
+    },
+    {
+      "amountSpecified": "19448096541",
+      "exactInput": false,
+      "expectedAmountCalculated": "352707837330874046725984060605897"
+    },
+    {
+      "amountSpecified": "3914584240",
+      "exactInput": false,
+      "expectedAmountCalculated": "2181760446436060231"
+    },
+    {
+      "amountSpecified": "1145817019",
+      "exactInput": false,
+      "expectedAmountCalculated": "636528876944846352"
+    },
+    {
+      "amountSpecified": "11212971205",
+      "exactInput": false,
+      "expectedAmountCalculated": "6405654717312397523"
+    },
+    {
+      "amountSpecified": "14217846545",
+      "exactInput": false,
+      "expectedAmountCalculated": "352707837330874046725984060605897"
+    },
+    {
+      "amountSpecified": "6342147422",
+      "exactInput": false,
+      "expectedAmountCalculated": "3538314098587398377"
+    },
+    {
+      "amountSpecified": "12902162623",
+      "exactInput": false,
+      "expectedAmountCalculated": "352707837330874046725984060605897"
+    },
+    {
+      "amountSpecified": "10142867711",
+      "exactInput": false,
+      "expectedAmountCalculated": "5671934608913248737"
+    },
+    {
+      "amountSpecified": "11428286411",
+      "exactInput": false,
+      "expectedAmountCalculated": "6577568176349605623"
+    },
+    {
+      "amountSpecified": "2703113864",
+      "exactInput": false,
+      "expectedAmountCalculated": "1505385566369802129"
+    },
+    {
+      "amountSpecified": "13276666460",
+      "exactInput": false,
+      "expectedAmountCalculated": "352707837330874046725984060605897"
+    },
+    {
+      "amountSpecified": "9522206419",
+      "exactInput": false,
+      "expectedAmountCalculated": "5317845393322015743"
+    },
+    {
+      "amountSpecified": "21067430877",
+      "exactInput": false,
+      "expectedAmountCalculated": "352707837330874046725984060605897"
+    },
+    {
+      "amountSpecified": "14763113229",
+      "exactInput": false,
+      "expectedAmountCalculated": "352707837330874046725984060605897"
+    },
+    {
+      "amountSpecified": "1029340018",
+      "exactInput": false,
+      "expectedAmountCalculated": "571570247496909288"
+    },
+    {
+      "amountSpecified": "5181898498",
+      "exactInput": false,
+      "expectedAmountCalculated": "2889748302356638644"
+    },
+    {
+      "amountSpecified": "1136298411",
+      "exactInput": false,
+      "expectedAmountCalculated": "631220257178138964"
+    },
+    {
+      "amountSpecified": "6678273413",
+      "exactInput": false,
+      "expectedAmountCalculated": "3726274390899430362"
+    },
+    {
+      "amountSpecified": "5326505490",
+      "exactInput": false,
+      "expectedAmountCalculated": "2970561591736519207"
+    },
+    {
+      "amountSpecified": "3636673172",
+      "exactInput": false,
+      "expectedAmountCalculated": "2026564282154287824"
+    },
+    {
+      "amountSpecified": "5638694581",
+      "exactInput": false,
+      "expectedAmountCalculated": "3145047517754183091"
+    },
+    {
+      "amountSpecified": "10379143949",
+      "exactInput": false,
+      "expectedAmountCalculated": "5818105686728937803"
+    },
+    {
+      "amountSpecified": "20856309768",
+      "exactInput": false,
+      "expectedAmountCalculated": "352707837330874046725984060605897"
+    },
+    {
+      "amountSpecified": "2366863936",
+      "exactInput": false,
+      "expectedAmountCalculated": "1317726173176802367"
+    },
+    {
+      "amountSpecified": "7577481611",
+      "exactInput": false,
+      "expectedAmountCalculated": "4229262067259458712"
+    },
+    {
+      "amountSpecified": "10360020573",
+      "exactInput": false,
+      "expectedAmountCalculated": "5805953091341417325"
+    },
+    {
+      "amountSpecified": "15484557162",
+      "exactInput": false,
+      "expectedAmountCalculated": "352707837330874046725984060605897"
+    },
+    {
+      "amountSpecified": "17305123209",
+      "exactInput": false,
+      "expectedAmountCalculated": "352707837330874046725984060605897"
+    },
+    {
+      "amountSpecified": "2824225770",
+      "exactInput": false,
+      "expectedAmountCalculated": "1572985171722762725"
+    },
+    {
+      "amountSpecified": "15414272230",
+      "exactInput": false,
+      "expectedAmountCalculated": "352707837330874046725984060605897"
+    },
+    {
+      "amountSpecified": "10218731267",
+      "exactInput": false,
+      "expectedAmountCalculated": "5717955138655729133"
+    },
+    {
+      "amountSpecified": "14574287027",
+      "exactInput": false,
+      "expectedAmountCalculated": "352707837330874046725984060605897"
+    },
+    {
+      "amountSpecified": "4692674927",
+      "exactInput": false,
+      "expectedAmountCalculated": "2616389777697183807"
+    },
+    {
+      "amountSpecified": "7554224190",
+      "exactInput": false,
+      "expectedAmountCalculated": "4216249799155329155"
+    },
+    {
+      "amountSpecified": "17353940811",
+      "exactInput": false,
+      "expectedAmountCalculated": "352707837330874046725984060605897"
+    },
+    {
+      "amountSpecified": "4872079414",
+      "exactInput": false,
+      "expectedAmountCalculated": "2716626115581183048"
+    },
+    {
+      "amountSpecified": "15343956797",
+      "exactInput": false,
+      "expectedAmountCalculated": "352707837330874046725984060605897"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0xE0554a476A092703abdB3Ef35c80e0D76d32939F.json b/src/__tests__/stubs/swap/0xE0554a476A092703abdB3Ef35c80e0D76d32939F.json
new file mode 100644
index 00000000..5faff986
--- /dev/null
+++ b/src/__tests__/stubs/swap/0xE0554a476A092703abdB3Ef35c80e0D76d32939F.json
@@ -0,0 +1,1296 @@
+{
+  "poolName": "USDC - WETH 100",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
+    "decimals": 6
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "fee": 100,
+  "liquidity": "73846696942996",
+  "sqrtRatioX96": "1806870622813976949294462024300008",
+  "tickCurrent": 200705,
+  "ticks": [
+    {
+      "index": -887272,
+      "liquidityNet": "19120405947756",
+      "liquidityGross": "19120405947756"
+    },
+    {
+      "index": 132854,
+      "liquidityNet": "125332561609",
+      "liquidityGross": "125332561609"
+    },
+    {
+      "index": 190194,
+      "liquidityNet": "3185200246545",
+      "liquidityGross": "3185200246545"
+    },
+    {
+      "index": 195690,
+      "liquidityNet": "11451835",
+      "liquidityGross": "11451835"
+    },
+    {
+      "index": 195753,
+      "liquidityNet": "-11451835",
+      "liquidityGross": "11451835"
+    },
+    {
+      "index": 195941,
+      "liquidityNet": "1155317221850",
+      "liquidityGross": "1155317221850"
+    },
+    {
+      "index": 196003,
+      "liquidityNet": "-1155317221850",
+      "liquidityGross": "1155317221850"
+    },
+    {
+      "index": 196772,
+      "liquidityNet": "358932402229492",
+      "liquidityGross": "358932402229492"
+    },
+    {
+      "index": 196801,
+      "liquidityNet": "-358932402229492",
+      "liquidityGross": "358932402229492"
+    },
+    {
+      "index": 197033,
+      "liquidityNet": "161320121767775",
+      "liquidityGross": "161320121767775"
+    },
+    {
+      "index": 197046,
+      "liquidityNet": "-161320121767775",
+      "liquidityGross": "161320121767775"
+    },
+    {
+      "index": 197100,
+      "liquidityNet": "39934519306858",
+      "liquidityGross": "39934519306858"
+    },
+    {
+      "index": 197140,
+      "liquidityNet": "-39934519306858",
+      "liquidityGross": "39934519306858"
+    },
+    {
+      "index": 197191,
+      "liquidityNet": "237288793647016",
+      "liquidityGross": "237288793647016"
+    },
+    {
+      "index": 197218,
+      "liquidityNet": "-237288793647016",
+      "liquidityGross": "237288793647016"
+    },
+    {
+      "index": 197353,
+      "liquidityNet": "20498400330754",
+      "liquidityGross": "20498400330754"
+    },
+    {
+      "index": 197380,
+      "liquidityNet": "-20498400330754",
+      "liquidityGross": "20498400330754"
+    },
+    {
+      "index": 197396,
+      "liquidityNet": "152059032381",
+      "liquidityGross": "152059032381"
+    },
+    {
+      "index": 197670,
+      "liquidityNet": "49628385116752",
+      "liquidityGross": "49628385116752"
+    },
+    {
+      "index": 197785,
+      "liquidityNet": "86152843936",
+      "liquidityGross": "86152843936"
+    },
+    {
+      "index": 197806,
+      "liquidityNet": "-86152843936",
+      "liquidityGross": "86152843936"
+    },
+    {
+      "index": 197848,
+      "liquidityNet": "3724892662139",
+      "liquidityGross": "3724892662139"
+    },
+    {
+      "index": 197888,
+      "liquidityNet": "-3724892662139",
+      "liquidityGross": "3724892662139"
+    },
+    {
+      "index": 197903,
+      "liquidityNet": "5366964393945",
+      "liquidityGross": "5366964393945"
+    },
+    {
+      "index": 197928,
+      "liquidityNet": "-5366964393945",
+      "liquidityGross": "5366964393945"
+    },
+    {
+      "index": 200311,
+      "liquidityNet": "1635314037953",
+      "liquidityGross": "1635314037953"
+    },
+    {
+      "index": 200410,
+      "liquidityNet": "10493807154154",
+      "liquidityGross": "10493807154154"
+    },
+    {
+      "index": 200416,
+      "liquidityNet": "51176939373823",
+      "liquidityGross": "51176939373823"
+    },
+    {
+      "index": 200430,
+      "liquidityNet": "-10493807154154",
+      "liquidityGross": "10493807154154"
+    },
+    {
+      "index": 200437,
+      "liquidityNet": "112570704155117",
+      "liquidityGross": "112570704155117"
+    },
+    {
+      "index": 200439,
+      "liquidityNet": "-51176939373823",
+      "liquidityGross": "51176939373823"
+    },
+    {
+      "index": 200457,
+      "liquidityNet": "-112570704155117",
+      "liquidityGross": "112570704155117"
+    },
+    {
+      "index": 200489,
+      "liquidityNet": "341704272",
+      "liquidityGross": "341704272"
+    },
+    {
+      "index": 200494,
+      "liquidityNet": "1965795881223827",
+      "liquidityGross": "1965795881223827"
+    },
+    {
+      "index": 200509,
+      "liquidityNet": "-341704272",
+      "liquidityGross": "341704272"
+    },
+    {
+      "index": 200516,
+      "liquidityNet": "-1965795881223827",
+      "liquidityGross": "1965795881223827"
+    },
+    {
+      "index": 200824,
+      "liquidityNet": "123539804499",
+      "liquidityGross": "123539804499"
+    },
+    {
+      "index": 201227,
+      "liquidityNet": "32490726189301",
+      "liquidityGross": "32490726189301"
+    },
+    {
+      "index": 201246,
+      "liquidityNet": "-32490726189301",
+      "liquidityGross": "32490726189301"
+    },
+    {
+      "index": 201253,
+      "liquidityNet": "102257414503605",
+      "liquidityGross": "102257414503605"
+    },
+    {
+      "index": 201300,
+      "liquidityNet": "258047151006956",
+      "liquidityGross": "258047151006956"
+    },
+    {
+      "index": 201318,
+      "liquidityNet": "-258047151006956",
+      "liquidityGross": "258047151006956"
+    },
+    {
+      "index": 201344,
+      "liquidityNet": "142968103242240",
+      "liquidityGross": "142968103242240"
+    },
+    {
+      "index": 201362,
+      "liquidityNet": "15528781649616",
+      "liquidityGross": "15528781649616"
+    },
+    {
+      "index": 201364,
+      "liquidityNet": "-142968103242240",
+      "liquidityGross": "142968103242240"
+    },
+    {
+      "index": 201377,
+      "liquidityNet": "1350404366788071",
+      "liquidityGross": "1350404366788071"
+    },
+    {
+      "index": 201398,
+      "liquidityNet": "93802116984498157",
+      "liquidityGross": "93802116984498157"
+    },
+    {
+      "index": 201444,
+      "liquidityNet": "6903962207882",
+      "liquidityGross": "6903962207882"
+    },
+    {
+      "index": 201445,
+      "liquidityNet": "-93802116984498157",
+      "liquidityGross": "93802116984498157"
+    },
+    {
+      "index": 201462,
+      "liquidityNet": "-6903962207882",
+      "liquidityGross": "6903962207882"
+    },
+    {
+      "index": 201476,
+      "liquidityNet": "-1350404366788071",
+      "liquidityGross": "1350404366788071"
+    },
+    {
+      "index": 201508,
+      "liquidityNet": "21057125352503",
+      "liquidityGross": "21057125352503"
+    },
+    {
+      "index": 201528,
+      "liquidityNet": "-21057125352503",
+      "liquidityGross": "21057125352503"
+    },
+    {
+      "index": 201532,
+      "liquidityNet": "98558611732786",
+      "liquidityGross": "98558611732786"
+    },
+    {
+      "index": 201533,
+      "liquidityNet": "40225627431772",
+      "liquidityGross": "40225627431772"
+    },
+    {
+      "index": 201544,
+      "liquidityNet": "-98558611732786",
+      "liquidityGross": "98558611732786"
+    },
+    {
+      "index": 201545,
+      "liquidityNet": "520590759322759",
+      "liquidityGross": "520590759322759"
+    },
+    {
+      "index": 201551,
+      "liquidityNet": "-40225627431772",
+      "liquidityGross": "40225627431772"
+    },
+    {
+      "index": 201565,
+      "liquidityNet": "-520590759322759",
+      "liquidityGross": "520590759322759"
+    },
+    {
+      "index": 201568,
+      "liquidityNet": "228639497932",
+      "liquidityGross": "228639497932"
+    },
+    {
+      "index": 201586,
+      "liquidityNet": "-228639497932",
+      "liquidityGross": "228639497932"
+    },
+    {
+      "index": 201603,
+      "liquidityNet": "763560952324850",
+      "liquidityGross": "763560952324850"
+    },
+    {
+      "index": 201629,
+      "liquidityNet": "-674312633834985",
+      "liquidityGross": "674312633834985"
+    },
+    {
+      "index": 201639,
+      "liquidityNet": "-89248318489865",
+      "liquidityGross": "89248318489865"
+    },
+    {
+      "index": 201656,
+      "liquidityNet": "498719487194",
+      "liquidityGross": "498719487194"
+    },
+    {
+      "index": 201674,
+      "liquidityNet": "-498719487194",
+      "liquidityGross": "498719487194"
+    },
+    {
+      "index": 201915,
+      "liquidityNet": "2265624825567",
+      "liquidityGross": "2265624825567"
+    },
+    {
+      "index": 201949,
+      "liquidityNet": "-2265624825567",
+      "liquidityGross": "2265624825567"
+    },
+    {
+      "index": 202190,
+      "liquidityNet": "49923308774004",
+      "liquidityGross": "49923308774004"
+    },
+    {
+      "index": 202200,
+      "liquidityNet": "31968829915427",
+      "liquidityGross": "31968829915427"
+    },
+    {
+      "index": 202210,
+      "liquidityNet": "-49923308774004",
+      "liquidityGross": "49923308774004"
+    },
+    {
+      "index": 202234,
+      "liquidityNet": "-31968829915427",
+      "liquidityGross": "31968829915427"
+    },
+    {
+      "index": 202243,
+      "liquidityNet": "158273542983972",
+      "liquidityGross": "158273542983972"
+    },
+    {
+      "index": 202262,
+      "liquidityNet": "-158273542983972",
+      "liquidityGross": "158273542983972"
+    },
+    {
+      "index": 202309,
+      "liquidityNet": "7454595934184",
+      "liquidityGross": "7454595934184"
+    },
+    {
+      "index": 202329,
+      "liquidityNet": "-7454595934184",
+      "liquidityGross": "7454595934184"
+    },
+    {
+      "index": 202400,
+      "liquidityNet": "53842970520848",
+      "liquidityGross": "53842970520848"
+    },
+    {
+      "index": 202420,
+      "liquidityNet": "-53842970520848",
+      "liquidityGross": "53842970520848"
+    },
+    {
+      "index": 202550,
+      "liquidityNet": "5973840651613",
+      "liquidityGross": "5973840651613"
+    },
+    {
+      "index": 202569,
+      "liquidityNet": "-5973840651613",
+      "liquidityGross": "5973840651613"
+    },
+    {
+      "index": 202642,
+      "liquidityNet": "52117442109784",
+      "liquidityGross": "52117442109784"
+    },
+    {
+      "index": 202648,
+      "liquidityNet": "11753011198508",
+      "liquidityGross": "11753011198508"
+    },
+    {
+      "index": 202662,
+      "liquidityNet": "-52117442109784",
+      "liquidityGross": "52117442109784"
+    },
+    {
+      "index": 202668,
+      "liquidityNet": "-11753011198508",
+      "liquidityGross": "11753011198508"
+    },
+    {
+      "index": 202758,
+      "liquidityNet": "5459716818008",
+      "liquidityGross": "5459716818008"
+    },
+    {
+      "index": 202764,
+      "liquidityNet": "316852345136416",
+      "liquidityGross": "316852345136416"
+    },
+    {
+      "index": 202778,
+      "liquidityNet": "-5459716818008",
+      "liquidityGross": "5459716818008"
+    },
+    {
+      "index": 202779,
+      "liquidityNet": "-316852345136416",
+      "liquidityGross": "316852345136416"
+    },
+    {
+      "index": 202857,
+      "liquidityNet": "1920242289029",
+      "liquidityGross": "1920242289029"
+    },
+    {
+      "index": 202874,
+      "liquidityNet": "390523500031359",
+      "liquidityGross": "390523500031359"
+    },
+    {
+      "index": 202904,
+      "liquidityNet": "-1920242289029",
+      "liquidityGross": "1920242289029"
+    },
+    {
+      "index": 202914,
+      "liquidityNet": "-390523500031359",
+      "liquidityGross": "390523500031359"
+    },
+    {
+      "index": 203117,
+      "liquidityNet": "23376906740732",
+      "liquidityGross": "23376906740732"
+    },
+    {
+      "index": 203163,
+      "liquidityNet": "-23376906740732",
+      "liquidityGross": "23376906740732"
+    },
+    {
+      "index": 203188,
+      "liquidityNet": "1651181106958",
+      "liquidityGross": "1651181106958"
+    },
+    {
+      "index": 203326,
+      "liquidityNet": "256425666647287",
+      "liquidityGross": "256425666647287"
+    },
+    {
+      "index": 203328,
+      "liquidityNet": "-256425666647287",
+      "liquidityGross": "256425666647287"
+    },
+    {
+      "index": 203754,
+      "liquidityNet": "16215617759239",
+      "liquidityGross": "16215617759239"
+    },
+    {
+      "index": 203774,
+      "liquidityNet": "-16215617759239",
+      "liquidityGross": "16215617759239"
+    },
+    {
+      "index": 203878,
+      "liquidityNet": "-1651181106958",
+      "liquidityGross": "1651181106958"
+    },
+    {
+      "index": 204245,
+      "liquidityNet": "36239904137",
+      "liquidityGross": "36239904137"
+    },
+    {
+      "index": 204258,
+      "liquidityNet": "20911183283685",
+      "liquidityGross": "20911183283685"
+    },
+    {
+      "index": 204272,
+      "liquidityNet": "-36239904137",
+      "liquidityGross": "36239904137"
+    },
+    {
+      "index": 204299,
+      "liquidityNet": "-20911183283685",
+      "liquidityGross": "20911183283685"
+    },
+    {
+      "index": 204339,
+      "liquidityNet": "483480800570853",
+      "liquidityGross": "483480800570853"
+    },
+    {
+      "index": 204352,
+      "liquidityNet": "494054955281522",
+      "liquidityGross": "494054955281522"
+    },
+    {
+      "index": 204366,
+      "liquidityNet": "-483480800570853",
+      "liquidityGross": "483480800570853"
+    },
+    {
+      "index": 204392,
+      "liquidityNet": "-494054955281522",
+      "liquidityGross": "494054955281522"
+    },
+    {
+      "index": 204419,
+      "liquidityNet": "7966915220782",
+      "liquidityGross": "7966915220782"
+    },
+    {
+      "index": 204445,
+      "liquidityNet": "-7966915220782",
+      "liquidityGross": "7966915220782"
+    },
+    {
+      "index": 204470,
+      "liquidityNet": "38975179617",
+      "liquidityGross": "38975179617"
+    },
+    {
+      "index": 204498,
+      "liquidityNet": "35907392385540",
+      "liquidityGross": "35907392385540"
+    },
+    {
+      "index": 204510,
+      "liquidityNet": "-38975179617",
+      "liquidityGross": "38975179617"
+    },
+    {
+      "index": 204511,
+      "liquidityNet": "-1269170421",
+      "liquidityGross": "1269170421"
+    },
+    {
+      "index": 204524,
+      "liquidityNet": "-35907392385540",
+      "liquidityGross": "35907392385540"
+    },
+    {
+      "index": 204619,
+      "liquidityNet": "20679384810490",
+      "liquidityGross": "20679384810490"
+    },
+    {
+      "index": 204693,
+      "liquidityNet": "15954922174379",
+      "liquidityGross": "15954922174379"
+    },
+    {
+      "index": 204706,
+      "liquidityNet": "-6732000427842",
+      "liquidityGross": "25177843920916"
+    },
+    {
+      "index": 204719,
+      "liquidityNet": "-9222921746537",
+      "liquidityGross": "9222921746537"
+    },
+    {
+      "index": 204839,
+      "liquidityNet": "34817785215685",
+      "liquidityGross": "34817785215685"
+    },
+    {
+      "index": 204879,
+      "liquidityNet": "-34817785215685",
+      "liquidityGross": "34817785215685"
+    },
+    {
+      "index": 204962,
+      "liquidityNet": "7987074227838",
+      "liquidityGross": "7987074227838"
+    },
+    {
+      "index": 204975,
+      "liquidityNet": "386751965172",
+      "liquidityGross": "386751965172"
+    },
+    {
+      "index": 204980,
+      "liquidityNet": "-7987074227838",
+      "liquidityGross": "7987074227838"
+    },
+    {
+      "index": 205015,
+      "liquidityNet": "-386751965172",
+      "liquidityGross": "386751965172"
+    },
+    {
+      "index": 205126,
+      "liquidityNet": "1597535700929",
+      "liquidityGross": "1597535700929"
+    },
+    {
+      "index": 205131,
+      "liquidityNet": "704675110774520",
+      "liquidityGross": "704675110774520"
+    },
+    {
+      "index": 205136,
+      "liquidityNet": "580465554696",
+      "liquidityGross": "580465554696"
+    },
+    {
+      "index": 205151,
+      "liquidityNet": "-704675110774520",
+      "liquidityGross": "704675110774520"
+    },
+    {
+      "index": 205155,
+      "liquidityNet": "-580465554696",
+      "liquidityGross": "580465554696"
+    },
+    {
+      "index": 205166,
+      "liquidityNet": "-1597535700929",
+      "liquidityGross": "1597535700929"
+    },
+    {
+      "index": 205233,
+      "liquidityNet": "41460525381026",
+      "liquidityGross": "41460525381026"
+    },
+    {
+      "index": 205253,
+      "liquidityNet": "-41460525381026",
+      "liquidityGross": "41460525381026"
+    },
+    {
+      "index": 205305,
+      "liquidityNet": "2049647381602",
+      "liquidityGross": "2049647381602"
+    },
+    {
+      "index": 205324,
+      "liquidityNet": "4463281717621",
+      "liquidityGross": "4463281717621"
+    },
+    {
+      "index": 205325,
+      "liquidityNet": "-2049647381602",
+      "liquidityGross": "2049647381602"
+    },
+    {
+      "index": 205344,
+      "liquidityNet": "-4463281717621",
+      "liquidityGross": "4463281717621"
+    },
+    {
+      "index": 205428,
+      "liquidityNet": "29924870231490",
+      "liquidityGross": "29924870231490"
+    },
+    {
+      "index": 205447,
+      "liquidityNet": "-29924870231490",
+      "liquidityGross": "29924870231490"
+    },
+    {
+      "index": 205503,
+      "liquidityNet": "-102257414503605",
+      "liquidityGross": "102257414503605"
+    },
+    {
+      "index": 205623,
+      "liquidityNet": "6264827616763",
+      "liquidityGross": "6264827616763"
+    },
+    {
+      "index": 205643,
+      "liquidityNet": "-6264827616763",
+      "liquidityGross": "6264827616763"
+    },
+    {
+      "index": 205873,
+      "liquidityNet": "139511863457719",
+      "liquidityGross": "139511863457719"
+    },
+    {
+      "index": 205884,
+      "liquidityNet": "-139511863457719",
+      "liquidityGross": "139511863457719"
+    },
+    {
+      "index": 206426,
+      "liquidityNet": "-49628385116752",
+      "liquidityGross": "49628385116752"
+    },
+    {
+      "index": 207237,
+      "liquidityNet": "-15528781649616",
+      "liquidityGross": "15528781649616"
+    },
+    {
+      "index": 207242,
+      "liquidityNet": "-20679384810490",
+      "liquidityGross": "20679384810490"
+    },
+    {
+      "index": 207243,
+      "liquidityNet": "-1635314037953",
+      "liquidityGross": "1635314037953"
+    },
+    {
+      "index": 207564,
+      "liquidityNet": "321375728884980",
+      "liquidityGross": "321375728884980"
+    },
+    {
+      "index": 207566,
+      "liquidityNet": "-321375728884980",
+      "liquidityGross": "321375728884980"
+    },
+    {
+      "index": 209613,
+      "liquidityNet": "-123539804499",
+      "liquidityGross": "123539804499"
+    },
+    {
+      "index": 210809,
+      "liquidityNet": "-152059032381",
+      "liquidityGross": "152059032381"
+    },
+    {
+      "index": 214174,
+      "liquidityNet": "-3185200246545",
+      "liquidityGross": "3185200246545"
+    },
+    {
+      "index": 271054,
+      "liquidityNet": "-125332561609",
+      "liquidityGross": "125332561609"
+    },
+    {
+      "index": 887272,
+      "liquidityNet": "-19119136777335",
+      "liquidityGross": "19119136777335"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "10333483477",
+      "exactInput": true,
+      "expectedAmountCalculated": "667365319109586267"
+    },
+    {
+      "amountSpecified": "14027105857",
+      "exactInput": true,
+      "expectedAmountCalculated": "676453843768543346"
+    },
+    {
+      "amountSpecified": "13573406388",
+      "exactInput": true,
+      "expectedAmountCalculated": "675599549373103229"
+    },
+    {
+      "amountSpecified": "14355920450",
+      "exactInput": true,
+      "expectedAmountCalculated": "677039764501648742"
+    },
+    {
+      "amountSpecified": "1328877971",
+      "exactInput": true,
+      "expectedAmountCalculated": "464455246449688712"
+    },
+    {
+      "amountSpecified": "6362763639",
+      "exactInput": true,
+      "expectedAmountCalculated": "646232542371756792"
+    },
+    {
+      "amountSpecified": "19088290560",
+      "exactInput": true,
+      "expectedAmountCalculated": "683262918732190407"
+    },
+    {
+      "amountSpecified": "11994833096",
+      "exactInput": true,
+      "expectedAmountCalculated": "672132945041821582"
+    },
+    {
+      "amountSpecified": "14689010340",
+      "exactInput": true,
+      "expectedAmountCalculated": "677606966097897708"
+    },
+    {
+      "amountSpecified": "373288884",
+      "exactInput": true,
+      "expectedAmountCalculated": "182142695298878419"
+    },
+    {
+      "amountSpecified": "4343355348",
+      "exactInput": true,
+      "expectedAmountCalculated": "621400684703003837"
+    },
+    {
+      "amountSpecified": "7514412689",
+      "exactInput": true,
+      "expectedAmountCalculated": "654593596403183462"
+    },
+    {
+      "amountSpecified": "8887938343",
+      "exactInput": true,
+      "expectedAmountCalculated": "661803110177271451"
+    },
+    {
+      "amountSpecified": "4541779871",
+      "exactInput": true,
+      "expectedAmountCalculated": "624772207767545923"
+    },
+    {
+      "amountSpecified": "17022910206",
+      "exactInput": true,
+      "expectedAmountCalculated": "680966808925907072"
+    },
+    {
+      "amountSpecified": "14531967166",
+      "exactInput": true,
+      "expectedAmountCalculated": "677342735057101281"
+    },
+    {
+      "amountSpecified": "17965527896",
+      "exactInput": true,
+      "expectedAmountCalculated": "682079399727044666"
+    },
+    {
+      "amountSpecified": "15958136313",
+      "exactInput": true,
+      "expectedAmountCalculated": "679554167364796957"
+    },
+    {
+      "amountSpecified": "21238343400",
+      "exactInput": true,
+      "expectedAmountCalculated": "685183771386125598"
+    },
+    {
+      "amountSpecified": "14507315205",
+      "exactInput": true,
+      "expectedAmountCalculated": "677300745748088776"
+    },
+    {
+      "amountSpecified": "21389609237",
+      "exactInput": true,
+      "expectedAmountCalculated": "685304525253609077"
+    },
+    {
+      "amountSpecified": "16261379050",
+      "exactInput": true,
+      "expectedAmountCalculated": "679975061709516575"
+    },
+    {
+      "amountSpecified": "19026616211",
+      "exactInput": true,
+      "expectedAmountCalculated": "683201489728407330"
+    },
+    {
+      "amountSpecified": "14646440730",
+      "exactInput": true,
+      "expectedAmountCalculated": "677535892366731746"
+    },
+    {
+      "amountSpecified": "3679635692",
+      "exactInput": true,
+      "expectedAmountCalculated": "607634728571701331"
+    },
+    {
+      "amountSpecified": "11109936441",
+      "exactInput": true,
+      "expectedAmountCalculated": "669767441159838260"
+    },
+    {
+      "amountSpecified": "10655020949",
+      "exactInput": true,
+      "expectedAmountCalculated": "668401645580577132"
+    },
+    {
+      "amountSpecified": "15618849839",
+      "exactInput": true,
+      "expectedAmountCalculated": "679064150596240994"
+    },
+    {
+      "amountSpecified": "6282735179",
+      "exactInput": true,
+      "expectedAmountCalculated": "645541610654488657"
+    },
+    {
+      "amountSpecified": "940378198",
+      "exactInput": true,
+      "expectedAmountCalculated": "387062308701894510"
+    },
+    {
+      "amountSpecified": "6625936926",
+      "exactInput": true,
+      "expectedAmountCalculated": "648390889507620367"
+    },
+    {
+      "amountSpecified": "12222593121",
+      "exactInput": true,
+      "expectedAmountCalculated": "672687381086057190"
+    },
+    {
+      "amountSpecified": "12665023176",
+      "exactInput": true,
+      "expectedAmountCalculated": "673708403055212272"
+    },
+    {
+      "amountSpecified": "12183170039",
+      "exactInput": true,
+      "expectedAmountCalculated": "672592869834534751"
+    },
+    {
+      "amountSpecified": "2974097465",
+      "exactInput": true,
+      "expectedAmountCalculated": "586743397312078157"
+    },
+    {
+      "amountSpecified": "5589602496",
+      "exactInput": true,
+      "expectedAmountCalculated": "638762048655406567"
+    },
+    {
+      "amountSpecified": "1727970257",
+      "exactInput": true,
+      "expectedAmountCalculated": "513021513759576473"
+    },
+    {
+      "amountSpecified": "14729667308",
+      "exactInput": true,
+      "expectedAmountCalculated": "677674468800658585"
+    },
+    {
+      "amountSpecified": "2344241493",
+      "exactInput": true,
+      "expectedAmountCalculated": "558409375686555692"
+    },
+    {
+      "amountSpecified": "15125067006",
+      "exactInput": true,
+      "expectedAmountCalculated": "678312304565692135"
+    },
+    {
+      "amountSpecified": "10049058956",
+      "exactInput": true,
+      "expectedAmountCalculated": "666394555628849127"
+    },
+    {
+      "amountSpecified": "8653723929",
+      "exactInput": true,
+      "expectedAmountCalculated": "660731444087269263"
+    },
+    {
+      "amountSpecified": "13760061470",
+      "exactInput": true,
+      "expectedAmountCalculated": "675957721851259721"
+    },
+    {
+      "amountSpecified": "7417565246",
+      "exactInput": true,
+      "expectedAmountCalculated": "653987485403912812"
+    },
+    {
+      "amountSpecified": "189734233",
+      "exactInput": true,
+      "expectedAmountCalculated": "96418157160999552"
+    },
+    {
+      "amountSpecified": "2995466394",
+      "exactInput": true,
+      "expectedAmountCalculated": "587510453271926744"
+    },
+    {
+      "amountSpecified": "17337401361",
+      "exactInput": true,
+      "expectedAmountCalculated": "681351283337006348"
+    },
+    {
+      "amountSpecified": "17905275981",
+      "exactInput": true,
+      "expectedAmountCalculated": "682011743764815914"
+    },
+    {
+      "amountSpecified": "19886998083",
+      "exactInput": true,
+      "expectedAmountCalculated": "684024421033770283"
+    },
+    {
+      "amountSpecified": "2523012866",
+      "exactInput": true,
+      "expectedAmountCalculated": "567770202795809565"
+    },
+    {
+      "amountSpecified": "2391433892605803192",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "2644182192143646584",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "927118276546862832",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "1925382009443268664",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "3024346569634943952",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "94877122601683614",
+      "exactInput": false,
+      "expectedAmountCalculated": "186613885"
+    },
+    {
+      "amountSpecified": "3137953991171678120",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "271909753266375712",
+      "exactInput": false,
+      "expectedAmountCalculated": "589109185"
+    },
+    {
+      "amountSpecified": "1991076143013076072",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "3015846664078381856",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "517211128913055",
+      "exactInput": false,
+      "expectedAmountCalculated": "994833"
+    },
+    {
+      "amountSpecified": "1593588584458680624",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "1196876262550511102",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "2833857123718974192",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "38357763505042067",
+      "exactInput": false,
+      "expectedAmountCalculated": "74895886"
+    },
+    {
+      "amountSpecified": "569454347238180040",
+      "exactInput": false,
+      "expectedAmountCalculated": "2557847639"
+    },
+    {
+      "amountSpecified": "3254950949704712784",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "1209238240983577488",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "69658562595367187",
+      "exactInput": false,
+      "expectedAmountCalculated": "136347363"
+    },
+    {
+      "amountSpecified": "2795313112603636044",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "1119268596996906244",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "1456750615704780398",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "1103454800939745696",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "1272384350716905608",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "1881131703670032528",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "513739709754126984",
+      "exactInput": false,
+      "expectedAmountCalculated": "1735413427"
+    },
+    {
+      "amountSpecified": "3194227704058853000",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "1849508277960303296",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "67605315252179434",
+      "exactInput": false,
+      "expectedAmountCalculated": "132304694"
+    },
+    {
+      "amountSpecified": "1994197131826751064",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "1647642999918021968",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "3054138978013319152",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "796691650594317264",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "823332887315136122",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "329685355353199170",
+      "exactInput": false,
+      "expectedAmountCalculated": "746539944"
+    },
+    {
+      "amountSpecified": "1611201242026935658",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "829352769160474968",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "1407267024767849876",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "3174088874115667448",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "3073429952929472976",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "1400602409407103192",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "2817149389029997064",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "1780799782394966216",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "1995571580167131488",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "2826409565349748928",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "258223740764201096",
+      "exactInput": false,
+      "expectedAmountCalculated": "554470907"
+    },
+    {
+      "amountSpecified": "2373786144872617312",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "3287436863792471688",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "1949677923121758632",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    },
+    {
+      "amountSpecified": "2593917147351271264",
+      "exactInput": false,
+      "expectedAmountCalculated": "352731250700708188644966486832971"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0xEe4Cf3b78A74aFfa38C6a926282bCd8B5952818d-reversed.json b/src/__tests__/stubs/swap/0xEe4Cf3b78A74aFfa38C6a926282bCd8B5952818d-reversed.json
new file mode 100644
index 00000000..42de5154
--- /dev/null
+++ b/src/__tests__/stubs/swap/0xEe4Cf3b78A74aFfa38C6a926282bCd8B5952818d-reversed.json
@@ -0,0 +1,606 @@
+{
+  "poolName": "USDC - USDT 3000 - reversed",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
+    "decimals": 6
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
+    "decimals": 6
+  },
+  "fee": 3000,
+  "liquidity": "1173863227499",
+  "sqrtRatioX96": "79231985686531733011582846043",
+  "tickCurrent": 0,
+  "ticks": [
+    {
+      "index": -39120,
+      "liquidityNet": "58287719",
+      "liquidityGross": "58287719"
+    },
+    {
+      "index": -6960,
+      "liquidityNet": "84330158",
+      "liquidityGross": "84330158"
+    },
+    {
+      "index": -6900,
+      "liquidityNet": "57452803",
+      "liquidityGross": "57452803"
+    },
+    {
+      "index": -6840,
+      "liquidityNet": "34458772",
+      "liquidityGross": "34458772"
+    },
+    {
+      "index": -2220,
+      "liquidityNet": "39875074",
+      "liquidityGross": "39875074"
+    },
+    {
+      "index": -900,
+      "liquidityNet": "4624204095",
+      "liquidityGross": "4624204095"
+    },
+    {
+      "index": -120,
+      "liquidityNet": "81857891747",
+      "liquidityGross": "81857891747"
+    },
+    {
+      "index": -60,
+      "liquidityNet": "1087164087529",
+      "liquidityGross": "1087164087529"
+    },
+    {
+      "index": 0,
+      "liquidityNet": "-57360398",
+      "liquidityGross": "59215040"
+    },
+    {
+      "index": 60,
+      "liquidityNet": "-1084543297060",
+      "liquidityGross": "1084543297060"
+    },
+    {
+      "index": 120,
+      "liquidityNet": "-81274665441",
+      "liquidityGross": "81274665441"
+    },
+    {
+      "index": 180,
+      "liquidityNet": "-3089781156",
+      "liquidityGross": "3089781156"
+    },
+    {
+      "index": 300,
+      "liquidityNet": "-4624204095",
+      "liquidityGross": "4624204095"
+    },
+    {
+      "index": 420,
+      "liquidityNet": "-115162940",
+      "liquidityGross": "115162940"
+    },
+    {
+      "index": 1800,
+      "liquidityNet": "-39875074",
+      "liquidityGross": "39875074"
+    },
+    {
+      "index": 4020,
+      "liquidityNet": "-84330158",
+      "liquidityGross": "84330158"
+    },
+    {
+      "index": 6960,
+      "liquidityNet": "-91911575",
+      "liquidityGross": "91911575"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "6952387",
+      "exactInput": true,
+      "expectedAmountCalculated": "6930819"
+    },
+    {
+      "amountSpecified": "3819495023",
+      "exactInput": true,
+      "expectedAmountCalculated": "3792775182"
+    },
+    {
+      "amountSpecified": "687972120",
+      "exactInput": true,
+      "expectedAmountCalculated": "685441514"
+    },
+    {
+      "amountSpecified": "3554813403",
+      "exactInput": true,
+      "expectedAmountCalculated": "3533083906"
+    },
+    {
+      "amountSpecified": "630251502",
+      "exactInput": true,
+      "expectedAmountCalculated": "627963979"
+    },
+    {
+      "amountSpecified": "4267809177",
+      "exactInput": true,
+      "expectedAmountCalculated": "3822828972"
+    },
+    {
+      "amountSpecified": "1469226715",
+      "exactInput": true,
+      "expectedAmountCalculated": "1462852324"
+    },
+    {
+      "amountSpecified": "1108314143",
+      "exactInput": true,
+      "expectedAmountCalculated": "1103843537"
+    },
+    {
+      "amountSpecified": "3572136257",
+      "exactInput": true,
+      "expectedAmountCalculated": "3550219819"
+    },
+    {
+      "amountSpecified": "3041544247",
+      "exactInput": true,
+      "expectedAmountCalculated": "3024314694"
+    },
+    {
+      "amountSpecified": "1023322526",
+      "exactInput": true,
+      "expectedAmountCalculated": "1019268255"
+    },
+    {
+      "amountSpecified": "891091344",
+      "exactInput": true,
+      "expectedAmountCalculated": "887660555"
+    },
+    {
+      "amountSpecified": "331925384",
+      "exactInput": true,
+      "expectedAmountCalculated": "330804416"
+    },
+    {
+      "amountSpecified": "1075621410",
+      "exactInput": true,
+      "expectedAmountCalculated": "1071312394"
+    },
+    {
+      "amountSpecified": "3504690909",
+      "exactInput": true,
+      "expectedAmountCalculated": "3483465107"
+    },
+    {
+      "amountSpecified": "904190647",
+      "exactInput": true,
+      "expectedAmountCalculated": "900699412"
+    },
+    {
+      "amountSpecified": "658633969",
+      "exactInput": true,
+      "expectedAmountCalculated": "656227621"
+    },
+    {
+      "amountSpecified": "4105668880",
+      "exactInput": true,
+      "expectedAmountCalculated": "3822828972"
+    },
+    {
+      "amountSpecified": "2772147400",
+      "exactInput": true,
+      "expectedAmountCalculated": "2757073092"
+    },
+    {
+      "amountSpecified": "2778634283",
+      "exactInput": true,
+      "expectedAmountCalculated": "2763509513"
+    },
+    {
+      "amountSpecified": "1214999916",
+      "exactInput": true,
+      "expectedAmountCalculated": "1209989441"
+    },
+    {
+      "amountSpecified": "2747568360",
+      "exactInput": true,
+      "expectedAmountCalculated": "2732684618"
+    },
+    {
+      "amountSpecified": "1144011148",
+      "exactInput": true,
+      "expectedAmountCalculated": "1139362041"
+    },
+    {
+      "amountSpecified": "3317199210",
+      "exactInput": true,
+      "expectedAmountCalculated": "3297638118"
+    },
+    {
+      "amountSpecified": "1683321910",
+      "exactInput": true,
+      "expectedAmountCalculated": "1675714332"
+    },
+    {
+      "amountSpecified": "1481643261",
+      "exactInput": true,
+      "expectedAmountCalculated": "1475199463"
+    },
+    {
+      "amountSpecified": "780395116",
+      "exactInput": true,
+      "expectedAmountCalculated": "777463555"
+    },
+    {
+      "amountSpecified": "846368735",
+      "exactInput": true,
+      "expectedAmountCalculated": "843142133"
+    },
+    {
+      "amountSpecified": "453816498",
+      "exactInput": true,
+      "expectedAmountCalculated": "452237082"
+    },
+    {
+      "amountSpecified": "1789890265",
+      "exactInput": true,
+      "expectedAmountCalculated": "1781640042"
+    },
+    {
+      "amountSpecified": "4203246866",
+      "exactInput": true,
+      "expectedAmountCalculated": "3822828972"
+    },
+    {
+      "amountSpecified": "84055418",
+      "exactInput": true,
+      "expectedAmountCalculated": "83789182"
+    },
+    {
+      "amountSpecified": "3316452928",
+      "exactInput": true,
+      "expectedAmountCalculated": "3296898321"
+    },
+    {
+      "amountSpecified": "3325532169",
+      "exactInput": true,
+      "expectedAmountCalculated": "3305898608"
+    },
+    {
+      "amountSpecified": "891881291",
+      "exactInput": true,
+      "expectedAmountCalculated": "888446866"
+    },
+    {
+      "amountSpecified": "74908890",
+      "exactInput": true,
+      "expectedAmountCalculated": "74672205"
+    },
+    {
+      "amountSpecified": "1644553962",
+      "exactInput": true,
+      "expectedAmountCalculated": "1637175419"
+    },
+    {
+      "amountSpecified": "1326534960",
+      "exactInput": true,
+      "expectedAmountCalculated": "1320939533"
+    },
+    {
+      "amountSpecified": "2269846946",
+      "exactInput": true,
+      "expectedAmountCalculated": "2258465232"
+    },
+    {
+      "amountSpecified": "2434019716",
+      "exactInput": true,
+      "expectedAmountCalculated": "2421477810"
+    },
+    {
+      "amountSpecified": "1408368023",
+      "exactInput": true,
+      "expectedAmountCalculated": "1402330065"
+    },
+    {
+      "amountSpecified": "3277311505",
+      "exactInput": true,
+      "expectedAmountCalculated": "3258095688"
+    },
+    {
+      "amountSpecified": "3566885242",
+      "exactInput": true,
+      "expectedAmountCalculated": "3545026168"
+    },
+    {
+      "amountSpecified": "452357569",
+      "exactInput": true,
+      "expectedAmountCalculated": "450783789"
+    },
+    {
+      "amountSpecified": "191221963",
+      "exactInput": true,
+      "expectedAmountCalculated": "190598944"
+    },
+    {
+      "amountSpecified": "1475098082",
+      "exactInput": true,
+      "expectedAmountCalculated": "1468690903"
+    },
+    {
+      "amountSpecified": "3924725166",
+      "exactInput": true,
+      "expectedAmountCalculated": "3822828972"
+    },
+    {
+      "amountSpecified": "2168808021",
+      "exactInput": true,
+      "expectedAmountCalculated": "2158117781"
+    },
+    {
+      "amountSpecified": "2282743746",
+      "exactInput": true,
+      "expectedAmountCalculated": "2271272533"
+    },
+    {
+      "amountSpecified": "2377006690",
+      "exactInput": true,
+      "expectedAmountCalculated": "2364872830"
+    },
+    {
+      "amountSpecified": "2342026008",
+      "exactInput": false,
+      "expectedAmountCalculated": "2353996733"
+    },
+    {
+      "amountSpecified": "1133071967",
+      "exactInput": false,
+      "expectedAmountCalculated": "1137689305"
+    },
+    {
+      "amountSpecified": "685038316",
+      "exactInput": false,
+      "expectedAmountCalculated": "687567197"
+    },
+    {
+      "amountSpecified": "3548365771",
+      "exactInput": false,
+      "expectedAmountCalculated": "3570261661"
+    },
+    {
+      "amountSpecified": "3345026647",
+      "exactInput": false,
+      "expectedAmountCalculated": "3365005074"
+    },
+    {
+      "amountSpecified": "2565852221",
+      "exactInput": false,
+      "expectedAmountCalculated": "2579459827"
+    },
+    {
+      "amountSpecified": "3899047035",
+      "exactInput": false,
+      "expectedAmountCalculated": "3863427302"
+    },
+    {
+      "amountSpecified": "1449597158",
+      "exactInput": false,
+      "expectedAmountCalculated": "1455897327"
+    },
+    {
+      "amountSpecified": "2090145375",
+      "exactInput": false,
+      "expectedAmountCalculated": "2100377061"
+    },
+    {
+      "amountSpecified": "2189151815",
+      "exactInput": false,
+      "expectedAmountCalculated": "2200054056"
+    },
+    {
+      "amountSpecified": "2542275136",
+      "exactInput": false,
+      "expectedAmountCalculated": "2555706258"
+    },
+    {
+      "amountSpecified": "1263249583",
+      "exactInput": false,
+      "expectedAmountCalculated": "1268538222"
+    },
+    {
+      "amountSpecified": "2408205070",
+      "exactInput": false,
+      "expectedAmountCalculated": "2420650803"
+    },
+    {
+      "amountSpecified": "463432276",
+      "exactInput": false,
+      "expectedAmountCalculated": "465055228"
+    },
+    {
+      "amountSpecified": "2960172523",
+      "exactInput": false,
+      "expectedAmountCalculated": "2976873567"
+    },
+    {
+      "amountSpecified": "3690370098",
+      "exactInput": false,
+      "expectedAmountCalculated": "3714066363"
+    },
+    {
+      "amountSpecified": "643004573",
+      "exactInput": false,
+      "expectedAmountCalculated": "645355159"
+    },
+    {
+      "amountSpecified": "292305421",
+      "exactInput": false,
+      "expectedAmountCalculated": "293286308"
+    },
+    {
+      "amountSpecified": "3271234797",
+      "exactInput": false,
+      "expectedAmountCalculated": "3290565043"
+    },
+    {
+      "amountSpecified": "3152667966",
+      "exactInput": false,
+      "expectedAmountCalculated": "3170976385"
+    },
+    {
+      "amountSpecified": "2722921351",
+      "exactInput": false,
+      "expectedAmountCalculated": "2737729092"
+    },
+    {
+      "amountSpecified": "3783178507",
+      "exactInput": false,
+      "expectedAmountCalculated": "3808809141"
+    },
+    {
+      "amountSpecified": "241530145",
+      "exactInput": false,
+      "expectedAmountCalculated": "242330161"
+    },
+    {
+      "amountSpecified": "597282919",
+      "exactInput": false,
+      "expectedAmountCalculated": "599443002"
+    },
+    {
+      "amountSpecified": "3260137493",
+      "exactInput": false,
+      "expectedAmountCalculated": "3279371073"
+    },
+    {
+      "amountSpecified": "851251747",
+      "exactInput": false,
+      "expectedAmountCalculated": "854515291"
+    },
+    {
+      "amountSpecified": "519658181",
+      "exactInput": false,
+      "expectedAmountCalculated": "521503028"
+    },
+    {
+      "amountSpecified": "1737487634",
+      "exactInput": false,
+      "expectedAmountCalculated": "1745467646"
+    },
+    {
+      "amountSpecified": "3544736993",
+      "exactInput": false,
+      "expectedAmountCalculated": "3566592892"
+    },
+    {
+      "amountSpecified": "918373758",
+      "exactInput": false,
+      "expectedAmountCalculated": "921947394"
+    },
+    {
+      "amountSpecified": "1455391779",
+      "exactInput": false,
+      "expectedAmountCalculated": "1461724359"
+    },
+    {
+      "amountSpecified": "3743539818",
+      "exactInput": false,
+      "expectedAmountCalculated": "3768063229"
+    },
+    {
+      "amountSpecified": "3900821413",
+      "exactInput": false,
+      "expectedAmountCalculated": "3863427302"
+    },
+    {
+      "amountSpecified": "3809674427",
+      "exactInput": false,
+      "expectedAmountCalculated": "3841349722"
+    },
+    {
+      "amountSpecified": "1774607828",
+      "exactInput": false,
+      "expectedAmountCalculated": "1782814791"
+    },
+    {
+      "amountSpecified": "1389567224",
+      "exactInput": false,
+      "expectedAmountCalculated": "1395535038"
+    },
+    {
+      "amountSpecified": "2949391606",
+      "exactInput": false,
+      "expectedAmountCalculated": "2966004515"
+    },
+    {
+      "amountSpecified": "1577840610",
+      "exactInput": false,
+      "expectedAmountCalculated": "1584871514"
+    },
+    {
+      "amountSpecified": "2798714834",
+      "exactInput": false,
+      "expectedAmountCalculated": "2814116886"
+    },
+    {
+      "amountSpecified": "2593156626",
+      "exactInput": false,
+      "expectedAmountCalculated": "2606969812"
+    },
+    {
+      "amountSpecified": "582598274",
+      "exactInput": false,
+      "expectedAmountCalculated": "584697931"
+    },
+    {
+      "amountSpecified": "1367611365",
+      "exactInput": false,
+      "expectedAmountCalculated": "1373459163"
+    },
+    {
+      "amountSpecified": "3959225815",
+      "exactInput": false,
+      "expectedAmountCalculated": "3863427302"
+    },
+    {
+      "amountSpecified": "98174133",
+      "exactInput": false,
+      "expectedAmountCalculated": "98487283"
+    },
+    {
+      "amountSpecified": "2537178979",
+      "exactInput": false,
+      "expectedAmountCalculated": "2550572080"
+    },
+    {
+      "amountSpecified": "2295387751",
+      "exactInput": false,
+      "expectedAmountCalculated": "2307028248"
+    },
+    {
+      "amountSpecified": "1304115603",
+      "exactInput": false,
+      "expectedAmountCalculated": "1309620973"
+    },
+    {
+      "amountSpecified": "3333885056",
+      "exactInput": false,
+      "expectedAmountCalculated": "3353765015"
+    },
+    {
+      "amountSpecified": "2123452079",
+      "exactInput": false,
+      "expectedAmountCalculated": "2133907466"
+    },
+    {
+      "amountSpecified": "1986271379",
+      "exactInput": false,
+      "expectedAmountCalculated": "1995817649"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0xEe4Cf3b78A74aFfa38C6a926282bCd8B5952818d.json b/src/__tests__/stubs/swap/0xEe4Cf3b78A74aFfa38C6a926282bCd8B5952818d.json
new file mode 100644
index 00000000..5b94794b
--- /dev/null
+++ b/src/__tests__/stubs/swap/0xEe4Cf3b78A74aFfa38C6a926282bCd8B5952818d.json
@@ -0,0 +1,606 @@
+{
+  "poolName": "USDC - USDT 3000",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
+    "decimals": 6
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
+    "decimals": 6
+  },
+  "fee": 3000,
+  "liquidity": "1173863227499",
+  "sqrtRatioX96": "79231985686531733011582846043",
+  "tickCurrent": 0,
+  "ticks": [
+    {
+      "index": -39120,
+      "liquidityNet": "58287719",
+      "liquidityGross": "58287719"
+    },
+    {
+      "index": -6960,
+      "liquidityNet": "84330158",
+      "liquidityGross": "84330158"
+    },
+    {
+      "index": -6900,
+      "liquidityNet": "57452803",
+      "liquidityGross": "57452803"
+    },
+    {
+      "index": -6840,
+      "liquidityNet": "34458772",
+      "liquidityGross": "34458772"
+    },
+    {
+      "index": -2220,
+      "liquidityNet": "39875074",
+      "liquidityGross": "39875074"
+    },
+    {
+      "index": -900,
+      "liquidityNet": "4624204095",
+      "liquidityGross": "4624204095"
+    },
+    {
+      "index": -120,
+      "liquidityNet": "81857891747",
+      "liquidityGross": "81857891747"
+    },
+    {
+      "index": -60,
+      "liquidityNet": "1087164087529",
+      "liquidityGross": "1087164087529"
+    },
+    {
+      "index": 0,
+      "liquidityNet": "-57360398",
+      "liquidityGross": "59215040"
+    },
+    {
+      "index": 60,
+      "liquidityNet": "-1084543297060",
+      "liquidityGross": "1084543297060"
+    },
+    {
+      "index": 120,
+      "liquidityNet": "-81274665441",
+      "liquidityGross": "81274665441"
+    },
+    {
+      "index": 180,
+      "liquidityNet": "-3089781156",
+      "liquidityGross": "3089781156"
+    },
+    {
+      "index": 300,
+      "liquidityNet": "-4624204095",
+      "liquidityGross": "4624204095"
+    },
+    {
+      "index": 420,
+      "liquidityNet": "-115162940",
+      "liquidityGross": "115162940"
+    },
+    {
+      "index": 1800,
+      "liquidityNet": "-39875074",
+      "liquidityGross": "39875074"
+    },
+    {
+      "index": 4020,
+      "liquidityNet": "-84330158",
+      "liquidityGross": "84330158"
+    },
+    {
+      "index": 6960,
+      "liquidityNet": "-91911575",
+      "liquidityGross": "91911575"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "886114118",
+      "exactInput": true,
+      "expectedAmountCalculated": "882876577"
+    },
+    {
+      "amountSpecified": "2527123216",
+      "exactInput": true,
+      "expectedAmountCalculated": "2514388203"
+    },
+    {
+      "amountSpecified": "2459281533",
+      "exactInput": true,
+      "expectedAmountCalculated": "2447029092"
+    },
+    {
+      "amountSpecified": "451722824",
+      "exactInput": true,
+      "expectedAmountCalculated": "450238378"
+    },
+    {
+      "amountSpecified": "1671307756",
+      "exactInput": true,
+      "expectedAmountCalculated": "1664092470"
+    },
+    {
+      "amountSpecified": "3225922471",
+      "exactInput": true,
+      "expectedAmountCalculated": "3207766205"
+    },
+    {
+      "amountSpecified": "1367384021",
+      "exactInput": true,
+      "expectedAmountCalculated": "1361831854"
+    },
+    {
+      "amountSpecified": "2592906776",
+      "exactInput": true,
+      "expectedAmountCalculated": "2579696433"
+    },
+    {
+      "amountSpecified": "2877941726",
+      "exactInput": true,
+      "expectedAmountCalculated": "2862587709"
+    },
+    {
+      "amountSpecified": "1717486069",
+      "exactInput": true,
+      "expectedAmountCalculated": "1710004452"
+    },
+    {
+      "amountSpecified": "1364993273",
+      "exactInput": true,
+      "expectedAmountCalculated": "1359453571"
+    },
+    {
+      "amountSpecified": "1063746442",
+      "exactInput": true,
+      "expectedAmountCalculated": "1059700141"
+    },
+    {
+      "amountSpecified": "1630615595",
+      "exactInput": true,
+      "expectedAmountCalculated": "1623632019"
+    },
+    {
+      "amountSpecified": "3366245046",
+      "exactInput": true,
+      "expectedAmountCalculated": "3346901216"
+    },
+    {
+      "amountSpecified": "696199213",
+      "exactInput": true,
+      "expectedAmountCalculated": "693767373"
+    },
+    {
+      "amountSpecified": "482231686",
+      "exactInput": true,
+      "expectedAmountCalculated": "480634533"
+    },
+    {
+      "amountSpecified": "3138412244",
+      "exactInput": true,
+      "expectedAmountCalculated": "3120979840"
+    },
+    {
+      "amountSpecified": "150423066",
+      "exactInput": true,
+      "expectedAmountCalculated": "149967108"
+    },
+    {
+      "amountSpecified": "3975787697",
+      "exactInput": true,
+      "expectedAmountCalculated": "3946769867"
+    },
+    {
+      "amountSpecified": "1091997704",
+      "exactInput": true,
+      "expectedAmountCalculated": "1087817863"
+    },
+    {
+      "amountSpecified": "1364297009",
+      "exactInput": true,
+      "expectedAmountCalculated": "1358760935"
+    },
+    {
+      "amountSpecified": "119963670",
+      "exactInput": true,
+      "expectedAmountCalculated": "119603134"
+    },
+    {
+      "amountSpecified": "3305729242",
+      "exactInput": true,
+      "expectedAmountCalculated": "3286901619"
+    },
+    {
+      "amountSpecified": "2516216979",
+      "exactInput": true,
+      "expectedAmountCalculated": "2503560067"
+    },
+    {
+      "amountSpecified": "3478720550",
+      "exactInput": true,
+      "expectedAmountCalculated": "3458400954"
+    },
+    {
+      "amountSpecified": "409837861",
+      "exactInput": true,
+      "expectedAmountCalculated": "408505583"
+    },
+    {
+      "amountSpecified": "3371800672",
+      "exactInput": true,
+      "expectedAmountCalculated": "3352409144"
+    },
+    {
+      "amountSpecified": "783290616",
+      "exactInput": true,
+      "expectedAmountCalculated": "780496865"
+    },
+    {
+      "amountSpecified": "3411653477",
+      "exactInput": true,
+      "expectedAmountCalculated": "3391918269"
+    },
+    {
+      "amountSpecified": "805008082",
+      "exactInput": true,
+      "expectedAmountCalculated": "802122086"
+    },
+    {
+      "amountSpecified": "1167822221",
+      "exactInput": true,
+      "expectedAmountCalculated": "1163277300"
+    },
+    {
+      "amountSpecified": "928288686",
+      "exactInput": true,
+      "expectedAmountCalculated": "924863951"
+    },
+    {
+      "amountSpecified": "1857103293",
+      "exactInput": true,
+      "expectedAmountCalculated": "1848794571"
+    },
+    {
+      "amountSpecified": "949379264",
+      "exactInput": true,
+      "expectedAmountCalculated": "945859790"
+    },
+    {
+      "amountSpecified": "2934381111",
+      "exactInput": true,
+      "expectedAmountCalculated": "2918586422"
+    },
+    {
+      "amountSpecified": "3310103957",
+      "exactInput": true,
+      "expectedAmountCalculated": "3291239224"
+    },
+    {
+      "amountSpecified": "2606639437",
+      "exactInput": true,
+      "expectedAmountCalculated": "2593328948"
+    },
+    {
+      "amountSpecified": "3838165612",
+      "exactInput": true,
+      "expectedAmountCalculated": "3813961830"
+    },
+    {
+      "amountSpecified": "496522781",
+      "exactInput": true,
+      "expectedAmountCalculated": "494872291"
+    },
+    {
+      "amountSpecified": "2273142783",
+      "exactInput": true,
+      "expectedAmountCalculated": "2262174598"
+    },
+    {
+      "amountSpecified": "3055803003",
+      "exactInput": true,
+      "expectedAmountCalculated": "3039042115"
+    },
+    {
+      "amountSpecified": "2408984030",
+      "exactInput": true,
+      "expectedAmountCalculated": "2397084366"
+    },
+    {
+      "amountSpecified": "3136360241",
+      "exactInput": true,
+      "expectedAmountCalculated": "3118944657"
+    },
+    {
+      "amountSpecified": "394183000",
+      "exactInput": true,
+      "expectedAmountCalculated": "392906835"
+    },
+    {
+      "amountSpecified": "643113754",
+      "exactInput": true,
+      "expectedAmountCalculated": "640896221"
+    },
+    {
+      "amountSpecified": "1969869276",
+      "exactInput": true,
+      "expectedAmountCalculated": "1960868529"
+    },
+    {
+      "amountSpecified": "1069033022",
+      "exactInput": true,
+      "expectedAmountCalculated": "1064961835"
+    },
+    {
+      "amountSpecified": "2463923514",
+      "exactInput": true,
+      "expectedAmountCalculated": "2451638301"
+    },
+    {
+      "amountSpecified": "1319634916",
+      "exactInput": true,
+      "expectedAmountCalculated": "1314329871"
+    },
+    {
+      "amountSpecified": "875815629",
+      "exactInput": true,
+      "expectedAmountCalculated": "872623342"
+    },
+    {
+      "amountSpecified": "728446032",
+      "exactInput": false,
+      "expectedAmountCalculated": "731021036"
+    },
+    {
+      "amountSpecified": "3486500197",
+      "exactInput": false,
+      "expectedAmountCalculated": "3507069079"
+    },
+    {
+      "amountSpecified": "2602859443",
+      "exactInput": false,
+      "expectedAmountCalculated": "2616240134"
+    },
+    {
+      "amountSpecified": "600639537",
+      "exactInput": false,
+      "expectedAmountCalculated": "602697101"
+    },
+    {
+      "amountSpecified": "2882937016",
+      "exactInput": false,
+      "expectedAmountCalculated": "2898450544"
+    },
+    {
+      "amountSpecified": "1922280770",
+      "exactInput": false,
+      "expectedAmountCalculated": "1931040815"
+    },
+    {
+      "amountSpecified": "508804926",
+      "exactInput": false,
+      "expectedAmountCalculated": "510507944"
+    },
+    {
+      "amountSpecified": "2483914554",
+      "exactInput": false,
+      "expectedAmountCalculated": "2496430282"
+    },
+    {
+      "amountSpecified": "2109148465",
+      "exactInput": false,
+      "expectedAmountCalculated": "2119097946"
+    },
+    {
+      "amountSpecified": "2690614456",
+      "exactInput": false,
+      "expectedAmountCalculated": "2704648897"
+    },
+    {
+      "amountSpecified": "2063627555",
+      "exactInput": false,
+      "expectedAmountCalculated": "2073281765"
+    },
+    {
+      "amountSpecified": "1925772773",
+      "exactInput": false,
+      "expectedAmountCalculated": "1934554495"
+    },
+    {
+      "amountSpecified": "201341783",
+      "exactInput": false,
+      "expectedAmountCalculated": "201962778"
+    },
+    {
+      "amountSpecified": "47482256",
+      "exactInput": false,
+      "expectedAmountCalculated": "47622463"
+    },
+    {
+      "amountSpecified": "4088969603",
+      "exactInput": false,
+      "expectedAmountCalculated": "4168765834"
+    },
+    {
+      "amountSpecified": "738698806",
+      "exactInput": false,
+      "expectedAmountCalculated": "741316532"
+    },
+    {
+      "amountSpecified": "4072477816",
+      "exactInput": false,
+      "expectedAmountCalculated": "4129801035"
+    },
+    {
+      "amountSpecified": "271933990",
+      "exactInput": false,
+      "expectedAmountCalculated": "272789116"
+    },
+    {
+      "amountSpecified": "3656926196",
+      "exactInput": false,
+      "expectedAmountCalculated": "3679112456"
+    },
+    {
+      "amountSpecified": "4234232645",
+      "exactInput": false,
+      "expectedAmountCalculated": "4473039692"
+    },
+    {
+      "amountSpecified": "2970339592",
+      "exactInput": false,
+      "expectedAmountCalculated": "2986546342"
+    },
+    {
+      "amountSpecified": "1778335055",
+      "exactInput": false,
+      "expectedAmountCalculated": "1786219749"
+    },
+    {
+      "amountSpecified": "1389868993",
+      "exactInput": false,
+      "expectedAmountCalculated": "1395568835"
+    },
+    {
+      "amountSpecified": "1030088210",
+      "exactInput": false,
+      "expectedAmountCalculated": "1033995337"
+    },
+    {
+      "amountSpecified": "2084032042",
+      "exactInput": false,
+      "expectedAmountCalculated": "2093818165"
+    },
+    {
+      "amountSpecified": "2714514266",
+      "exactInput": false,
+      "expectedAmountCalculated": "2728729049"
+    },
+    {
+      "amountSpecified": "3334983688",
+      "exactInput": false,
+      "expectedAmountCalculated": "3354224492"
+    },
+    {
+      "amountSpecified": "1566804198",
+      "exactInput": false,
+      "expectedAmountCalculated": "1573467075"
+    },
+    {
+      "amountSpecified": "3470415361",
+      "exactInput": false,
+      "expectedAmountCalculated": "3490841377"
+    },
+    {
+      "amountSpecified": "2123129389",
+      "exactInput": false,
+      "expectedAmountCalculated": "2133170272"
+    },
+    {
+      "amountSpecified": "4193515517",
+      "exactInput": false,
+      "expectedAmountCalculated": "4473039692"
+    },
+    {
+      "amountSpecified": "1062220031",
+      "exactInput": false,
+      "expectedAmountCalculated": "1066278244"
+    },
+    {
+      "amountSpecified": "3332067797",
+      "exactInput": false,
+      "expectedAmountCalculated": "3351283431"
+    },
+    {
+      "amountSpecified": "3373017834",
+      "exactInput": false,
+      "expectedAmountCalculated": "3392588296"
+    },
+    {
+      "amountSpecified": "2698163079",
+      "exactInput": false,
+      "expectedAmountCalculated": "2712254374"
+    },
+    {
+      "amountSpecified": "3353177353",
+      "exactInput": false,
+      "expectedAmountCalculated": "3372575538"
+    },
+    {
+      "amountSpecified": "1569697063",
+      "exactInput": false,
+      "expectedAmountCalculated": "1576376132"
+    },
+    {
+      "amountSpecified": "3163322600",
+      "exactInput": false,
+      "expectedAmountCalculated": "3181106553"
+    },
+    {
+      "amountSpecified": "3239115128",
+      "exactInput": false,
+      "expectedAmountCalculated": "3257536056"
+    },
+    {
+      "amountSpecified": "1514931034",
+      "exactInput": false,
+      "expectedAmountCalculated": "1521306009"
+    },
+    {
+      "amountSpecified": "3581451209",
+      "exactInput": false,
+      "expectedAmountCalculated": "3602873311"
+    },
+    {
+      "amountSpecified": "599596774",
+      "exactInput": false,
+      "expectedAmountCalculated": "601650231"
+    },
+    {
+      "amountSpecified": "483829926",
+      "exactInput": false,
+      "expectedAmountCalculated": "485439019"
+    },
+    {
+      "amountSpecified": "4225532867",
+      "exactInput": false,
+      "expectedAmountCalculated": "4473039692"
+    },
+    {
+      "amountSpecified": "3800126589",
+      "exactInput": false,
+      "expectedAmountCalculated": "3824129362"
+    },
+    {
+      "amountSpecified": "3230395029",
+      "exactInput": false,
+      "expectedAmountCalculated": "3248742169"
+    },
+    {
+      "amountSpecified": "200426062",
+      "exactInput": false,
+      "expectedAmountCalculated": "201044076"
+    },
+    {
+      "amountSpecified": "4140671946",
+      "exactInput": false,
+      "expectedAmountCalculated": "4473039692"
+    },
+    {
+      "amountSpecified": "4180306790",
+      "exactInput": false,
+      "expectedAmountCalculated": "4473039692"
+    },
+    {
+      "amountSpecified": "3946778875",
+      "exactInput": false,
+      "expectedAmountCalculated": "3975797288"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0xF239009A101B6B930A527DEaaB6961b6E7deC8a6-reversed.json b/src/__tests__/stubs/swap/0xF239009A101B6B930A527DEaaB6961b6E7deC8a6-reversed.json
new file mode 100644
index 00000000..afc4e95c
--- /dev/null
+++ b/src/__tests__/stubs/swap/0xF239009A101B6B930A527DEaaB6961b6E7deC8a6-reversed.json
@@ -0,0 +1,1091 @@
+{
+  "poolName": "PEPE - WETH 10000 - reversed",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0x6982508145454Ce325dDbE47a25d4ec3d2311933",
+    "decimals": 18
+  },
+  "fee": 10000,
+  "liquidity": "10156046117830261618063385",
+  "sqrtRatioX96": "2244691134103096738087479",
+  "tickCurrent": -209441,
+  "ticks": [
+    {
+      "index": -887200,
+      "liquidityNet": "517199863860450406158866",
+      "liquidityGross": "517199863860450406158866"
+    },
+    {
+      "index": -290400,
+      "liquidityNet": "13342094047964905807053",
+      "liquidityGross": "13342094047964905807053"
+    },
+    {
+      "index": -252200,
+      "liquidityNet": "91509957451538236354",
+      "liquidityGross": "91509957451538236354"
+    },
+    {
+      "index": -235600,
+      "liquidityNet": "1206219551707984885936",
+      "liquidityGross": "1206219551707984885936"
+    },
+    {
+      "index": -234600,
+      "liquidityNet": "258588061414405218381769",
+      "liquidityGross": "258588061414405218381769"
+    },
+    {
+      "index": -234000,
+      "liquidityNet": "8285172333522824565833",
+      "liquidityGross": "8285172333522824565833"
+    },
+    {
+      "index": -233800,
+      "liquidityNet": "7395033276464251896910",
+      "liquidityGross": "7395033276464251896910"
+    },
+    {
+      "index": -231600,
+      "liquidityNet": "162498762449169018178378",
+      "liquidityGross": "162498762449169018178378"
+    },
+    {
+      "index": -229600,
+      "liquidityNet": "16315671705391118484729",
+      "liquidityGross": "16315671705391118484729"
+    },
+    {
+      "index": -229200,
+      "liquidityNet": "16222394198372227982232",
+      "liquidityGross": "16222394198372227982232"
+    },
+    {
+      "index": -229000,
+      "liquidityNet": "9036517652843527797255",
+      "liquidityGross": "9036517652843527797255"
+    },
+    {
+      "index": -227000,
+      "liquidityNet": "209711727853478671907034",
+      "liquidityGross": "209711727853478671907034"
+    },
+    {
+      "index": -226800,
+      "liquidityNet": "1575772092711578921657",
+      "liquidityGross": "1575772092711578921657"
+    },
+    {
+      "index": -225800,
+      "liquidityNet": "-162498762449169018178378",
+      "liquidityGross": "162498762449169018178378"
+    },
+    {
+      "index": -225400,
+      "liquidityNet": "547860167553311134178",
+      "liquidityGross": "547860167553311134178"
+    },
+    {
+      "index": -224600,
+      "liquidityNet": "19072673525378104652878",
+      "liquidityGross": "19072673525378104652878"
+    },
+    {
+      "index": -224200,
+      "liquidityNet": "-9036517652843527797255",
+      "liquidityGross": "9036517652843527797255"
+    },
+    {
+      "index": -223200,
+      "liquidityNet": "400075290929721223756532",
+      "liquidityGross": "400075290929721223756532"
+    },
+    {
+      "index": -222200,
+      "liquidityNet": "9683110729317004998170",
+      "liquidityGross": "9683110729317004998170"
+    },
+    {
+      "index": -221600,
+      "liquidityNet": "2855396205521062121507502",
+      "liquidityGross": "2855396205521062121507502"
+    },
+    {
+      "index": -221200,
+      "liquidityNet": "2881611167176431595264",
+      "liquidityGross": "17671677720104935389084"
+    },
+    {
+      "index": -220200,
+      "liquidityNet": "-208324672282613600199326",
+      "liquidityGross": "211098783424343743614742"
+    },
+    {
+      "index": -220000,
+      "liquidityNet": "8431557903031724793443",
+      "liquidityGross": "8431557903031724793443"
+    },
+    {
+      "index": -219800,
+      "liquidityNet": "63246967675192590987255",
+      "liquidityGross": "63246967675192590987255"
+    },
+    {
+      "index": -219600,
+      "liquidityNet": "12286220812230608081452",
+      "liquidityGross": "12286220812230608081452"
+    },
+    {
+      "index": -219400,
+      "liquidityNet": "26135691960265291778382",
+      "liquidityGross": "26135691960265291778382"
+    },
+    {
+      "index": -219000,
+      "liquidityNet": "-16315671705391118484729",
+      "liquidityGross": "16315671705391118484729"
+    },
+    {
+      "index": -218800,
+      "liquidityNet": "438651270916202285495",
+      "liquidityGross": "438651270916202285495"
+    },
+    {
+      "index": -218400,
+      "liquidityNet": "86654206436911759257417",
+      "liquidityGross": "86654206436911759257417"
+    },
+    {
+      "index": -217200,
+      "liquidityNet": "6562881966103803041242",
+      "liquidityGross": "6562881966103803041242"
+    },
+    {
+      "index": -217000,
+      "liquidityNet": "57017572648198237634885",
+      "liquidityGross": "57017572648198237634885"
+    },
+    {
+      "index": -216600,
+      "liquidityNet": "22197906823556842004359",
+      "liquidityGross": "22197906823556842004359"
+    },
+    {
+      "index": -216400,
+      "liquidityNet": "359432524255620617",
+      "liquidityGross": "359432524255620617"
+    },
+    {
+      "index": -216000,
+      "liquidityNet": "356826778386418503341",
+      "liquidityGross": "356826778386418503341"
+    },
+    {
+      "index": -215800,
+      "liquidityNet": "11870278423694765758282",
+      "liquidityGross": "11870278423694765758282"
+    },
+    {
+      "index": -215600,
+      "liquidityNet": "-1206219551707984885936",
+      "liquidityGross": "1206219551707984885936"
+    },
+    {
+      "index": -215400,
+      "liquidityNet": "411578207703070618285634",
+      "liquidityGross": "411578207703070618285634"
+    },
+    {
+      "index": -215200,
+      "liquidityNet": "17102931425120115456582",
+      "liquidityGross": "17102931425120115456582"
+    },
+    {
+      "index": -215000,
+      "liquidityNet": "31612969470953177652049",
+      "liquidityGross": "31612969470953177652049"
+    },
+    {
+      "index": -214800,
+      "liquidityNet": "22835547797493846685522",
+      "liquidityGross": "22835547797493846685522"
+    },
+    {
+      "index": -214200,
+      "liquidityNet": "1000823111550636850050813",
+      "liquidityGross": "1000823111550636850050813"
+    },
+    {
+      "index": -214000,
+      "liquidityNet": "1153330353847095271972182",
+      "liquidityGross": "1153330353847095271972182"
+    },
+    {
+      "index": -213800,
+      "liquidityNet": "268842954135152000630089",
+      "liquidityGross": "285706069941215450216975"
+    },
+    {
+      "index": -213600,
+      "liquidityNet": "34447070890826010736501",
+      "liquidityGross": "34447070890826010736501"
+    },
+    {
+      "index": -213400,
+      "liquidityNet": "3328956451720568101673",
+      "liquidityGross": "3328956451720568101673"
+    },
+    {
+      "index": -213000,
+      "liquidityNet": "99301423475807141247319",
+      "liquidityGross": "99301423475807141247319"
+    },
+    {
+      "index": -212600,
+      "liquidityNet": "806252165093540833408524",
+      "liquidityGross": "806252165093540833408524"
+    },
+    {
+      "index": -212000,
+      "liquidityNet": "-28799518430299021482869",
+      "liquidityGross": "28799518430299021482869"
+    },
+    {
+      "index": -211800,
+      "liquidityNet": "-91509957451538236354",
+      "liquidityGross": "91509957451538236354"
+    },
+    {
+      "index": -211600,
+      "liquidityNet": "-8833032501076135700011",
+      "liquidityGross": "8833032501076135700011"
+    },
+    {
+      "index": -211400,
+      "liquidityNet": "228499680295552945322020",
+      "liquidityGross": "228499680295552945322020"
+    },
+    {
+      "index": -211200,
+      "liquidityNet": "73571774100575845434859",
+      "liquidityGross": "73571774100575845434859"
+    },
+    {
+      "index": -211000,
+      "liquidityNet": "64197529899811126986828",
+      "liquidityGross": "64197529899811126986828"
+    },
+    {
+      "index": -210800,
+      "liquidityNet": "248110341096773472983233",
+      "liquidityGross": "1479276103732206132837863"
+    },
+    {
+      "index": -210600,
+      "liquidityNet": "98073763129222944465383",
+      "liquidityGross": "98073763129222944465383"
+    },
+    {
+      "index": -210400,
+      "liquidityNet": "93922186381245965491568",
+      "liquidityGross": "93922186381245965491568"
+    },
+    {
+      "index": -210200,
+      "liquidityNet": "378843723555682225409013",
+      "liquidityGross": "378843723555682225409013"
+    },
+    {
+      "index": -210000,
+      "liquidityNet": "412791766182921270053031",
+      "liquidityGross": "412791766182921270053031"
+    },
+    {
+      "index": -209800,
+      "liquidityNet": "20034329829489325564717",
+      "liquidityGross": "20034329829489325564717"
+    },
+    {
+      "index": -209600,
+      "liquidityNet": "319326561482968036496003",
+      "liquidityGross": "319326561482968036496003"
+    },
+    {
+      "index": -209200,
+      "liquidityNet": "279445968404119504205297",
+      "liquidityGross": "279445968404119504205297"
+    },
+    {
+      "index": -208600,
+      "liquidityNet": "135939977590172158439402",
+      "liquidityGross": "135939977590172158439402"
+    },
+    {
+      "index": -208400,
+      "liquidityNet": "346743548814389760008995",
+      "liquidityGross": "1154894641961576651788635"
+    },
+    {
+      "index": -208200,
+      "liquidityNet": "-375178012057295182575013",
+      "liquidityGross": "381971430291819759289047"
+    },
+    {
+      "index": -208000,
+      "liquidityNet": "308361742598328957885026",
+      "liquidityGross": "478257300518085396708988"
+    },
+    {
+      "index": -207200,
+      "liquidityNet": "-457250591014531650344099",
+      "liquidityGross": "457250591014531650344099"
+    },
+    {
+      "index": -207000,
+      "liquidityNet": "785497059625",
+      "liquidityGross": "785497059625"
+    },
+    {
+      "index": -206800,
+      "liquidityNet": "-322243956508640790678374",
+      "liquidityGross": "322243956508640790678374"
+    },
+    {
+      "index": -206400,
+      "liquidityNet": "12169392563853058509086",
+      "liquidityGross": "12170111428901569750320"
+    },
+    {
+      "index": -206200,
+      "liquidityNet": "12528556451929890166563325",
+      "liquidityGross": "12800436407110234483442129"
+    },
+    {
+      "index": -206000,
+      "liquidityNet": "-161320730805201032512263",
+      "liquidityGross": "161320730805201032512263"
+    },
+    {
+      "index": -205600,
+      "liquidityNet": "-1532788819637103617746",
+      "liquidityGross": "115066792959194507955318"
+    },
+    {
+      "index": -205400,
+      "liquidityNet": "-198691928567398841400152",
+      "liquidityGross": "198691928567398841400152"
+    },
+    {
+      "index": -205200,
+      "liquidityNet": "-6562881966103803041242",
+      "liquidityGross": "6562881966103803041242"
+    },
+    {
+      "index": -204600,
+      "liquidityNet": "7307148557998861766742",
+      "liquidityGross": "7307148557998861766742"
+    },
+    {
+      "index": -204400,
+      "liquidityNet": "-52335282371380182561279",
+      "liquidityGross": "52335282371380182561279"
+    },
+    {
+      "index": -204200,
+      "liquidityNet": "-25645194052425379746013",
+      "liquidityGross": "25645194052425379746013"
+    },
+    {
+      "index": -203200,
+      "liquidityNet": "-37310865536270483167112",
+      "liquidityGross": "37310865536270483167112"
+    },
+    {
+      "index": -202600,
+      "liquidityNet": "-12775463032146834539798",
+      "liquidityGross": "12775463032146834539798"
+    },
+    {
+      "index": -202400,
+      "liquidityNet": "-85194180547836571449483",
+      "liquidityGross": "85194180547836571449483"
+    },
+    {
+      "index": -202200,
+      "liquidityNet": "-12664853256298448743506068",
+      "liquidityGross": "12664853256298448743506068"
+    },
+    {
+      "index": -202000,
+      "liquidityNet": "-11870278423694765758282",
+      "liquidityGross": "11870278423694765758282"
+    },
+    {
+      "index": -201800,
+      "liquidityNet": "-2392335750553488171561",
+      "liquidityGross": "2392335750553488171561"
+    },
+    {
+      "index": -201600,
+      "liquidityNet": "-409840949390038635481695",
+      "liquidityGross": "409840949390038635481695"
+    },
+    {
+      "index": -201400,
+      "liquidityNet": "-92940548989352461206840",
+      "liquidityGross": "92940548989352461206840"
+    },
+    {
+      "index": -201200,
+      "liquidityNet": "-130471543866274781599431",
+      "liquidityGross": "130471543866274781599431"
+    },
+    {
+      "index": -201000,
+      "liquidityNet": "-318637658713718157078794",
+      "liquidityGross": "318637658713718157078794"
+    },
+    {
+      "index": -200400,
+      "liquidityNet": "-728674707531556958491281",
+      "liquidityGross": "728674707531556958491281"
+    },
+    {
+      "index": -200200,
+      "liquidityNet": "-1195456335377909542514906",
+      "liquidityGross": "1195456335377909542514906"
+    },
+    {
+      "index": -200000,
+      "liquidityNet": "-277274512038183725423532",
+      "liquidityGross": "277274512038183725423532"
+    },
+    {
+      "index": -199400,
+      "liquidityNet": "-160978375742574661863577",
+      "liquidityGross": "160978375742574661863577"
+    },
+    {
+      "index": -198800,
+      "liquidityNet": "-5510685222168006414902",
+      "liquidityGross": "5510685222168006414902"
+    },
+    {
+      "index": -198200,
+      "liquidityNet": "-43833896082420919713469",
+      "liquidityGross": "43833896082420919713469"
+    },
+    {
+      "index": -197200,
+      "liquidityNet": "-288878520603034400833739",
+      "liquidityGross": "288878520603034400833739"
+    },
+    {
+      "index": -197000,
+      "liquidityNet": "-838048028362064423164535",
+      "liquidityGross": "838048028362064423164535"
+    },
+    {
+      "index": -196200,
+      "liquidityNet": "-8716219609327824163211",
+      "liquidityGross": "8716219609327824163211"
+    },
+    {
+      "index": -195200,
+      "liquidityNet": "-41344750656850300650699",
+      "liquidityGross": "41344750656850300650699"
+    },
+    {
+      "index": -195000,
+      "liquidityNet": "370483489168999076360901338",
+      "liquidityGross": "370483489168999076360901338"
+    },
+    {
+      "index": -194800,
+      "liquidityNet": "-370483489168999076360901338",
+      "liquidityGross": "370483489168999076360901338"
+    },
+    {
+      "index": -190200,
+      "liquidityNet": "-393309521558207177297007",
+      "liquidityGross": "393309521558207177297007"
+    },
+    {
+      "index": -189000,
+      "liquidityNet": "-400075290929721223756532",
+      "liquidityGross": "400075290929721223756532"
+    },
+    {
+      "index": -188600,
+      "liquidityNet": "-16222394198372227982232",
+      "liquidityGross": "16222394198372227982232"
+    },
+    {
+      "index": -186000,
+      "liquidityNet": "-9683110729317004998170",
+      "liquidityGross": "9683110729317004998170"
+    },
+    {
+      "index": -183200,
+      "liquidityNet": "-20034329829489325564717",
+      "liquidityGross": "20034329829489325564717"
+    },
+    {
+      "index": -182200,
+      "liquidityNet": "-51004463605528809094240",
+      "liquidityGross": "51004463605528809094240"
+    },
+    {
+      "index": -181600,
+      "liquidityNet": "-3328956451720568101673",
+      "liquidityGross": "3328956451720568101673"
+    },
+    {
+      "index": -164600,
+      "liquidityNet": "-1387055570865071707708",
+      "liquidityGross": "1387055570865071707708"
+    },
+    {
+      "index": -138200,
+      "liquidityNet": "-52658506641128710646311",
+      "liquidityGross": "52658506641128710646311"
+    },
+    {
+      "index": -122800,
+      "liquidityNet": "-13342094047964905807053",
+      "liquidityGross": "13342094047964905807053"
+    },
+    {
+      "index": -111400,
+      "liquidityNet": "-12169751996377314129703",
+      "liquidityGross": "12169751996377314129703"
+    },
+    {
+      "index": 0,
+      "liquidityNet": "-197160454861164746722053",
+      "liquidityGross": "197160454861164746722053"
+    },
+    {
+      "index": 53000,
+      "liquidityNet": "-14610321085036740634797",
+      "liquidityGross": "14610321085036740634797"
+    },
+    {
+      "index": 138200,
+      "liquidityNet": "-2872805519283562709264549",
+      "liquidityGross": "2872805519283562709264549"
+    },
+    {
+      "index": 887200,
+      "liquidityNet": "-761014099564303395125042",
+      "liquidityGross": "761014099564303395125042"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "23486322887137251246",
+      "exactInput": true,
+      "expectedAmountCalculated": "26848374279586106359166645592"
+    },
+    {
+      "amountSpecified": "69283497082450037583",
+      "exactInput": true,
+      "expectedAmountCalculated": "69799199262906376126309083063"
+    },
+    {
+      "amountSpecified": "8841977826969744390",
+      "exactInput": true,
+      "expectedAmountCalculated": "10586161336396072613993841539"
+    },
+    {
+      "amountSpecified": "40316949474843534066",
+      "exactInput": true,
+      "expectedAmountCalculated": "43850722337958296695394510542"
+    },
+    {
+      "amountSpecified": "101204652604226459232",
+      "exactInput": true,
+      "expectedAmountCalculated": "95985937041208686001292550971"
+    },
+    {
+      "amountSpecified": "91550768874326720679",
+      "exactInput": true,
+      "expectedAmountCalculated": "88289748386882750223123760276"
+    },
+    {
+      "amountSpecified": "1131801209014443539",
+      "exactInput": true,
+      "expectedAmountCalculated": "1390475831486752174200039184"
+    },
+    {
+      "amountSpecified": "62354662885024569605",
+      "exactInput": true,
+      "expectedAmountCalculated": "63825791156200221253749999779"
+    },
+    {
+      "amountSpecified": "611732231419955847",
+      "exactInput": true,
+      "expectedAmountCalculated": "752886368972043412433098035"
+    },
+    {
+      "amountSpecified": "86546710467106482768",
+      "exactInput": true,
+      "expectedAmountCalculated": "84225685090673688825213878644"
+    },
+    {
+      "amountSpecified": "75462307545469784352",
+      "exactInput": true,
+      "expectedAmountCalculated": "75036277147567154339276175946"
+    },
+    {
+      "amountSpecified": "78031668521125325272",
+      "exactInput": true,
+      "expectedAmountCalculated": "77189630719364517281757857137"
+    },
+    {
+      "amountSpecified": "68746957403230835463",
+      "exactInput": true,
+      "expectedAmountCalculated": "69340476603824544401635461791"
+    },
+    {
+      "amountSpecified": "61565583141852578789",
+      "exactInput": true,
+      "expectedAmountCalculated": "63138648821662339695631999316"
+    },
+    {
+      "amountSpecified": "21031036939898739804",
+      "exactInput": true,
+      "expectedAmountCalculated": "24223575888515128187511358787"
+    },
+    {
+      "amountSpecified": "78644193608368816057",
+      "exactInput": true,
+      "expectedAmountCalculated": "77700890646043211477681536408"
+    },
+    {
+      "amountSpecified": "82845781250848476672",
+      "exactInput": true,
+      "expectedAmountCalculated": "81186360780537638007947301633"
+    },
+    {
+      "amountSpecified": "74731705315585578855",
+      "exactInput": true,
+      "expectedAmountCalculated": "74421368124720642340649640923"
+    },
+    {
+      "amountSpecified": "42132153429731434328",
+      "exactInput": true,
+      "expectedAmountCalculated": "45585695551070383374194003191"
+    },
+    {
+      "amountSpecified": "67976609367859161921",
+      "exactInput": true,
+      "expectedAmountCalculated": "68680739090927320474720323585"
+    },
+    {
+      "amountSpecified": "46876955967540489054",
+      "exactInput": true,
+      "expectedAmountCalculated": "50032717134081477598577309049"
+    },
+    {
+      "amountSpecified": "19898511987418120133",
+      "exactInput": true,
+      "expectedAmountCalculated": "22999408372306584797046153692"
+    },
+    {
+      "amountSpecified": "81549151742257396554",
+      "exactInput": true,
+      "expectedAmountCalculated": "80114713088729829379944469688"
+    },
+    {
+      "amountSpecified": "29002830732056523408",
+      "exactInput": true,
+      "expectedAmountCalculated": "32607190417107891705726775043"
+    },
+    {
+      "amountSpecified": "94796484458591378666",
+      "exactInput": true,
+      "expectedAmountCalculated": "90898253331555651870973209013"
+    },
+    {
+      "amountSpecified": "57466278248500632364",
+      "exactInput": true,
+      "expectedAmountCalculated": "59546029964091406332054185143"
+    },
+    {
+      "amountSpecified": "97520592086806063224",
+      "exactInput": true,
+      "expectedAmountCalculated": "93071072105799424993928568407"
+    },
+    {
+      "amountSpecified": "74500321962933048434",
+      "exactInput": true,
+      "expectedAmountCalculated": "74226384019241965559310879622"
+    },
+    {
+      "amountSpecified": "74246525471977287366",
+      "exactInput": true,
+      "expectedAmountCalculated": "74012379059702094566005088497"
+    },
+    {
+      "amountSpecified": "41846922982153132128",
+      "exactInput": true,
+      "expectedAmountCalculated": "45314304230216941929720202418"
+    },
+    {
+      "amountSpecified": "41838971031347662830",
+      "exactInput": true,
+      "expectedAmountCalculated": "45306731548043048578503676768"
+    },
+    {
+      "amountSpecified": "25827071656077665178",
+      "exactInput": true,
+      "expectedAmountCalculated": "29314956324747741730451036091"
+    },
+    {
+      "amountSpecified": "67249767145486526566",
+      "exactInput": true,
+      "expectedAmountCalculated": "68057050153191484030040176679"
+    },
+    {
+      "amountSpecified": "466650959599273847",
+      "exactInput": true,
+      "expectedAmountCalculated": "574614548465479890314320939"
+    },
+    {
+      "amountSpecified": "1928531046268592675",
+      "exactInput": true,
+      "expectedAmountCalculated": "2362847327541881941240283081"
+    },
+    {
+      "amountSpecified": "595417414117143578",
+      "exactInput": true,
+      "expectedAmountCalculated": "732848039903572054325164352"
+    },
+    {
+      "amountSpecified": "62077442789091770257",
+      "exactInput": true,
+      "expectedAmountCalculated": "63584545363310046972707455959"
+    },
+    {
+      "amountSpecified": "34461907289739913794",
+      "exactInput": true,
+      "expectedAmountCalculated": "38125158874321147410205096394"
+    },
+    {
+      "amountSpecified": "93876820475342241722",
+      "exactInput": true,
+      "expectedAmountCalculated": "90161319211590428032871386105"
+    },
+    {
+      "amountSpecified": "11412729607447911414",
+      "exactInput": true,
+      "expectedAmountCalculated": "13550378320057538069201543240"
+    },
+    {
+      "amountSpecified": "59066619369495034248",
+      "exactInput": true,
+      "expectedAmountCalculated": "60953136494926424428149662995"
+    },
+    {
+      "amountSpecified": "73206478335061045716",
+      "exactInput": true,
+      "expectedAmountCalculated": "73133933494237685999773007135"
+    },
+    {
+      "amountSpecified": "88509484443681867531",
+      "exactInput": true,
+      "expectedAmountCalculated": "85825941016557656471918615441"
+    },
+    {
+      "amountSpecified": "74533393433119322037",
+      "exactInput": true,
+      "expectedAmountCalculated": "74254260079924324207633507737"
+    },
+    {
+      "amountSpecified": "79577590709530695663",
+      "exactInput": true,
+      "expectedAmountCalculated": "78478434965326191959380946032"
+    },
+    {
+      "amountSpecified": "67145142309777434182",
+      "exactInput": true,
+      "expectedAmountCalculated": "67967176686230214929896856150"
+    },
+    {
+      "amountSpecified": "48006258326136948117",
+      "exactInput": true,
+      "expectedAmountCalculated": "51072547779261029069396711968"
+    },
+    {
+      "amountSpecified": "10061386531205664256",
+      "exactInput": true,
+      "expectedAmountCalculated": "11998359015112675179242299454"
+    },
+    {
+      "amountSpecified": "45283098292460613081",
+      "exactInput": true,
+      "expectedAmountCalculated": "48553078628048708645903575972"
+    },
+    {
+      "amountSpecified": "76797762125777182861",
+      "exactInput": true,
+      "expectedAmountCalculated": "76157278982788642239348362395"
+    },
+    {
+      "amountSpecified": "160417507290913069927516111050",
+      "exactInput": false,
+      "expectedAmountCalculated": "192397659554698601762"
+    },
+    {
+      "amountSpecified": "239822498255686946314083763065",
+      "exactInput": false,
+      "expectedAmountCalculated": "379918851004490596866"
+    },
+    {
+      "amountSpecified": "184087596022402161169390662324",
+      "exactInput": false,
+      "expectedAmountCalculated": "231654176133484683282"
+    },
+    {
+      "amountSpecified": "311276862421402993262267072799",
+      "exactInput": false,
+      "expectedAmountCalculated": "656339454145656877568"
+    },
+    {
+      "amountSpecified": "332130446371196615537842854981",
+      "exactInput": false,
+      "expectedAmountCalculated": "894179368228120842616"
+    },
+    {
+      "amountSpecified": "165994935671113343045967158898",
+      "exactInput": false,
+      "expectedAmountCalculated": "201287056683173488689"
+    },
+    {
+      "amountSpecified": "216184384247917315051579335201",
+      "exactInput": false,
+      "expectedAmountCalculated": "301930853035024547516"
+    },
+    {
+      "amountSpecified": "237254172211451283672471395337",
+      "exactInput": false,
+      "expectedAmountCalculated": "371058857015474619132"
+    },
+    {
+      "amountSpecified": "271342852375753045729499065464",
+      "exactInput": false,
+      "expectedAmountCalculated": "489235248183504884169"
+    },
+    {
+      "amountSpecified": "203849768850181439298501849675",
+      "exactInput": false,
+      "expectedAmountCalculated": "271033206819739126687"
+    },
+    {
+      "amountSpecified": "89251231528181379429178376103",
+      "exactInput": false,
+      "expectedAmountCalculated": "92744017710947406601"
+    },
+    {
+      "amountSpecified": "342020800080862878986653981464",
+      "exactInput": false,
+      "expectedAmountCalculated": "1197740243316667997803"
+    },
+    {
+      "amountSpecified": "272188483863154673648191961799",
+      "exactInput": false,
+      "expectedAmountCalculated": "492182858832835357700"
+    },
+    {
+      "amountSpecified": "69550502570390370924994536483",
+      "exactInput": false,
+      "expectedAmountCalculated": "68992519263713702453"
+    },
+    {
+      "amountSpecified": "234631992458285664535153023093",
+      "exactInput": false,
+      "expectedAmountCalculated": "362020389722893195488"
+    },
+    {
+      "amountSpecified": "300475255676927617019904902802",
+      "exactInput": false,
+      "expectedAmountCalculated": "596894627160429068364"
+    },
+    {
+      "amountSpecified": "310855477657526836071472228836",
+      "exactInput": false,
+      "expectedAmountCalculated": "653586283307932815497"
+    },
+    {
+      "amountSpecified": "153504478790704454661231987756",
+      "exactInput": false,
+      "expectedAmountCalculated": "181622284984074396624"
+    },
+    {
+      "amountSpecified": "201969145308489269028231730401",
+      "exactInput": false,
+      "expectedAmountCalculated": "266840073170698908602"
+    },
+    {
+      "amountSpecified": "106338491944586556473479238718",
+      "exactInput": false,
+      "expectedAmountCalculated": "114570449689389442620"
+    },
+    {
+      "amountSpecified": "268658218149546562811840385663",
+      "exactInput": false,
+      "expectedAmountCalculated": "479882609308754028623"
+    },
+    {
+      "amountSpecified": "168324293296222887156117840576",
+      "exactInput": false,
+      "expectedAmountCalculated": "205052800442589002223"
+    },
+    {
+      "amountSpecified": "179170674342360949489914149463",
+      "exactInput": false,
+      "expectedAmountCalculated": "223046692388323586694"
+    },
+    {
+      "amountSpecified": "357859508790016866743050267404",
+      "exactInput": false,
+      "expectedAmountCalculated": "7233814130902093726337"
+    },
+    {
+      "amountSpecified": "214531800055558818183045492924",
+      "exactInput": false,
+      "expectedAmountCalculated": "297410800193636822280"
+    },
+    {
+      "amountSpecified": "111090218533043808702544375482",
+      "exactInput": false,
+      "expectedAmountCalculated": "120856549299582106251"
+    },
+    {
+      "amountSpecified": "138812710797277587073200735342",
+      "exactInput": false,
+      "expectedAmountCalculated": "159572295977957386867"
+    },
+    {
+      "amountSpecified": "257506033365573168887627985096",
+      "exactInput": false,
+      "expectedAmountCalculated": "441114958356080967916"
+    },
+    {
+      "amountSpecified": "159944255191457931399123321921",
+      "exactInput": false,
+      "expectedAmountCalculated": "191651524451295600094"
+    },
+    {
+      "amountSpecified": "306547907407105172267024154435",
+      "exactInput": false,
+      "expectedAmountCalculated": "627765923867207238677"
+    },
+    {
+      "amountSpecified": "345925645190973944485523171856",
+      "exactInput": false,
+      "expectedAmountCalculated": "1433989881352346772620"
+    },
+    {
+      "amountSpecified": "299309339426828427565116291876",
+      "exactInput": false,
+      "expectedAmountCalculated": "591561779030631183044"
+    },
+    {
+      "amountSpecified": "374478525127873123916694386658",
+      "exactInput": false,
+      "expectedAmountCalculated": "14128547786271905481904664315222730266860613"
+    },
+    {
+      "amountSpecified": "75761138250994836731584733892",
+      "exactInput": false,
+      "expectedAmountCalculated": "76325314452364095297"
+    },
+    {
+      "amountSpecified": "205906421352870957959828636937",
+      "exactInput": false,
+      "expectedAmountCalculated": "275762380394591119300"
+    },
+    {
+      "amountSpecified": "301621870471175211796063260357",
+      "exactInput": false,
+      "expectedAmountCalculated": "602312741214792948056"
+    },
+    {
+      "amountSpecified": "108650189212306292614302279612",
+      "exactInput": false,
+      "expectedAmountCalculated": "117616478957472811972"
+    },
+    {
+      "amountSpecified": "132916172650173860073061174356",
+      "exactInput": false,
+      "expectedAmountCalculated": "151032162265335625579"
+    },
+    {
+      "amountSpecified": "246960480367701911499120667053",
+      "exactInput": false,
+      "expectedAmountCalculated": "404580123873589060543"
+    },
+    {
+      "amountSpecified": "265839936547098938699125766763",
+      "exactInput": false,
+      "expectedAmountCalculated": "470072823162059291609"
+    },
+    {
+      "amountSpecified": "242412672774913867685101252428",
+      "exactInput": false,
+      "expectedAmountCalculated": "388861397691851524265"
+    },
+    {
+      "amountSpecified": "39049520091722843702936270730",
+      "exactInput": false,
+      "expectedAmountCalculated": "35393576275062217808"
+    },
+    {
+      "amountSpecified": "262551508295781296245737532386",
+      "exactInput": false,
+      "expectedAmountCalculated": "458637490424827751738"
+    },
+    {
+      "amountSpecified": "261062499421441850033908232793",
+      "exactInput": false,
+      "expectedAmountCalculated": "453463407495204311916"
+    },
+    {
+      "amountSpecified": "235780129521643824517048816755",
+      "exactInput": false,
+      "expectedAmountCalculated": "365977028617607489266"
+    },
+    {
+      "amountSpecified": "58559492802016585091131736226",
+      "exactInput": false,
+      "expectedAmountCalculated": "56348237683836585705"
+    },
+    {
+      "amountSpecified": "86928427417137204600854450736",
+      "exactInput": false,
+      "expectedAmountCalculated": "89867466069788264214"
+    },
+    {
+      "amountSpecified": "343266759783463460481488559174",
+      "exactInput": false,
+      "expectedAmountCalculated": "1261236774089785057428"
+    },
+    {
+      "amountSpecified": "27178675895535680125899085182",
+      "exactInput": false,
+      "expectedAmountCalculated": "23797887475852653337"
+    },
+    {
+      "amountSpecified": "42674513545234701623515357032",
+      "exactInput": false,
+      "expectedAmountCalculated": "39097371806527270183"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0xF239009A101B6B930A527DEaaB6961b6E7deC8a6.json b/src/__tests__/stubs/swap/0xF239009A101B6B930A527DEaaB6961b6E7deC8a6.json
new file mode 100644
index 00000000..f13cbe20
--- /dev/null
+++ b/src/__tests__/stubs/swap/0xF239009A101B6B930A527DEaaB6961b6E7deC8a6.json
@@ -0,0 +1,1091 @@
+{
+  "poolName": "PEPE - WETH 10000",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0x6982508145454Ce325dDbE47a25d4ec3d2311933",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "fee": 10000,
+  "liquidity": "10156046117830261618063385",
+  "sqrtRatioX96": "2244691134103096738087479",
+  "tickCurrent": -209441,
+  "ticks": [
+    {
+      "index": -887200,
+      "liquidityNet": "517199863860450406158866",
+      "liquidityGross": "517199863860450406158866"
+    },
+    {
+      "index": -290400,
+      "liquidityNet": "13342094047964905807053",
+      "liquidityGross": "13342094047964905807053"
+    },
+    {
+      "index": -252200,
+      "liquidityNet": "91509957451538236354",
+      "liquidityGross": "91509957451538236354"
+    },
+    {
+      "index": -235600,
+      "liquidityNet": "1206219551707984885936",
+      "liquidityGross": "1206219551707984885936"
+    },
+    {
+      "index": -234600,
+      "liquidityNet": "258588061414405218381769",
+      "liquidityGross": "258588061414405218381769"
+    },
+    {
+      "index": -234000,
+      "liquidityNet": "8285172333522824565833",
+      "liquidityGross": "8285172333522824565833"
+    },
+    {
+      "index": -233800,
+      "liquidityNet": "7395033276464251896910",
+      "liquidityGross": "7395033276464251896910"
+    },
+    {
+      "index": -231600,
+      "liquidityNet": "162498762449169018178378",
+      "liquidityGross": "162498762449169018178378"
+    },
+    {
+      "index": -229600,
+      "liquidityNet": "16315671705391118484729",
+      "liquidityGross": "16315671705391118484729"
+    },
+    {
+      "index": -229200,
+      "liquidityNet": "16222394198372227982232",
+      "liquidityGross": "16222394198372227982232"
+    },
+    {
+      "index": -229000,
+      "liquidityNet": "9036517652843527797255",
+      "liquidityGross": "9036517652843527797255"
+    },
+    {
+      "index": -227000,
+      "liquidityNet": "209711727853478671907034",
+      "liquidityGross": "209711727853478671907034"
+    },
+    {
+      "index": -226800,
+      "liquidityNet": "1575772092711578921657",
+      "liquidityGross": "1575772092711578921657"
+    },
+    {
+      "index": -225800,
+      "liquidityNet": "-162498762449169018178378",
+      "liquidityGross": "162498762449169018178378"
+    },
+    {
+      "index": -225400,
+      "liquidityNet": "547860167553311134178",
+      "liquidityGross": "547860167553311134178"
+    },
+    {
+      "index": -224600,
+      "liquidityNet": "19072673525378104652878",
+      "liquidityGross": "19072673525378104652878"
+    },
+    {
+      "index": -224200,
+      "liquidityNet": "-9036517652843527797255",
+      "liquidityGross": "9036517652843527797255"
+    },
+    {
+      "index": -223200,
+      "liquidityNet": "400075290929721223756532",
+      "liquidityGross": "400075290929721223756532"
+    },
+    {
+      "index": -222200,
+      "liquidityNet": "9683110729317004998170",
+      "liquidityGross": "9683110729317004998170"
+    },
+    {
+      "index": -221600,
+      "liquidityNet": "2855396205521062121507502",
+      "liquidityGross": "2855396205521062121507502"
+    },
+    {
+      "index": -221200,
+      "liquidityNet": "2881611167176431595264",
+      "liquidityGross": "17671677720104935389084"
+    },
+    {
+      "index": -220200,
+      "liquidityNet": "-208324672282613600199326",
+      "liquidityGross": "211098783424343743614742"
+    },
+    {
+      "index": -220000,
+      "liquidityNet": "8431557903031724793443",
+      "liquidityGross": "8431557903031724793443"
+    },
+    {
+      "index": -219800,
+      "liquidityNet": "63246967675192590987255",
+      "liquidityGross": "63246967675192590987255"
+    },
+    {
+      "index": -219600,
+      "liquidityNet": "12286220812230608081452",
+      "liquidityGross": "12286220812230608081452"
+    },
+    {
+      "index": -219400,
+      "liquidityNet": "26135691960265291778382",
+      "liquidityGross": "26135691960265291778382"
+    },
+    {
+      "index": -219000,
+      "liquidityNet": "-16315671705391118484729",
+      "liquidityGross": "16315671705391118484729"
+    },
+    {
+      "index": -218800,
+      "liquidityNet": "438651270916202285495",
+      "liquidityGross": "438651270916202285495"
+    },
+    {
+      "index": -218400,
+      "liquidityNet": "86654206436911759257417",
+      "liquidityGross": "86654206436911759257417"
+    },
+    {
+      "index": -217200,
+      "liquidityNet": "6562881966103803041242",
+      "liquidityGross": "6562881966103803041242"
+    },
+    {
+      "index": -217000,
+      "liquidityNet": "57017572648198237634885",
+      "liquidityGross": "57017572648198237634885"
+    },
+    {
+      "index": -216600,
+      "liquidityNet": "22197906823556842004359",
+      "liquidityGross": "22197906823556842004359"
+    },
+    {
+      "index": -216400,
+      "liquidityNet": "359432524255620617",
+      "liquidityGross": "359432524255620617"
+    },
+    {
+      "index": -216000,
+      "liquidityNet": "356826778386418503341",
+      "liquidityGross": "356826778386418503341"
+    },
+    {
+      "index": -215800,
+      "liquidityNet": "11870278423694765758282",
+      "liquidityGross": "11870278423694765758282"
+    },
+    {
+      "index": -215600,
+      "liquidityNet": "-1206219551707984885936",
+      "liquidityGross": "1206219551707984885936"
+    },
+    {
+      "index": -215400,
+      "liquidityNet": "411578207703070618285634",
+      "liquidityGross": "411578207703070618285634"
+    },
+    {
+      "index": -215200,
+      "liquidityNet": "17102931425120115456582",
+      "liquidityGross": "17102931425120115456582"
+    },
+    {
+      "index": -215000,
+      "liquidityNet": "31612969470953177652049",
+      "liquidityGross": "31612969470953177652049"
+    },
+    {
+      "index": -214800,
+      "liquidityNet": "22835547797493846685522",
+      "liquidityGross": "22835547797493846685522"
+    },
+    {
+      "index": -214200,
+      "liquidityNet": "1000823111550636850050813",
+      "liquidityGross": "1000823111550636850050813"
+    },
+    {
+      "index": -214000,
+      "liquidityNet": "1153330353847095271972182",
+      "liquidityGross": "1153330353847095271972182"
+    },
+    {
+      "index": -213800,
+      "liquidityNet": "268842954135152000630089",
+      "liquidityGross": "285706069941215450216975"
+    },
+    {
+      "index": -213600,
+      "liquidityNet": "34447070890826010736501",
+      "liquidityGross": "34447070890826010736501"
+    },
+    {
+      "index": -213400,
+      "liquidityNet": "3328956451720568101673",
+      "liquidityGross": "3328956451720568101673"
+    },
+    {
+      "index": -213000,
+      "liquidityNet": "99301423475807141247319",
+      "liquidityGross": "99301423475807141247319"
+    },
+    {
+      "index": -212600,
+      "liquidityNet": "806252165093540833408524",
+      "liquidityGross": "806252165093540833408524"
+    },
+    {
+      "index": -212000,
+      "liquidityNet": "-28799518430299021482869",
+      "liquidityGross": "28799518430299021482869"
+    },
+    {
+      "index": -211800,
+      "liquidityNet": "-91509957451538236354",
+      "liquidityGross": "91509957451538236354"
+    },
+    {
+      "index": -211600,
+      "liquidityNet": "-8833032501076135700011",
+      "liquidityGross": "8833032501076135700011"
+    },
+    {
+      "index": -211400,
+      "liquidityNet": "228499680295552945322020",
+      "liquidityGross": "228499680295552945322020"
+    },
+    {
+      "index": -211200,
+      "liquidityNet": "73571774100575845434859",
+      "liquidityGross": "73571774100575845434859"
+    },
+    {
+      "index": -211000,
+      "liquidityNet": "64197529899811126986828",
+      "liquidityGross": "64197529899811126986828"
+    },
+    {
+      "index": -210800,
+      "liquidityNet": "248110341096773472983233",
+      "liquidityGross": "1479276103732206132837863"
+    },
+    {
+      "index": -210600,
+      "liquidityNet": "98073763129222944465383",
+      "liquidityGross": "98073763129222944465383"
+    },
+    {
+      "index": -210400,
+      "liquidityNet": "93922186381245965491568",
+      "liquidityGross": "93922186381245965491568"
+    },
+    {
+      "index": -210200,
+      "liquidityNet": "378843723555682225409013",
+      "liquidityGross": "378843723555682225409013"
+    },
+    {
+      "index": -210000,
+      "liquidityNet": "412791766182921270053031",
+      "liquidityGross": "412791766182921270053031"
+    },
+    {
+      "index": -209800,
+      "liquidityNet": "20034329829489325564717",
+      "liquidityGross": "20034329829489325564717"
+    },
+    {
+      "index": -209600,
+      "liquidityNet": "319326561482968036496003",
+      "liquidityGross": "319326561482968036496003"
+    },
+    {
+      "index": -209200,
+      "liquidityNet": "279445968404119504205297",
+      "liquidityGross": "279445968404119504205297"
+    },
+    {
+      "index": -208600,
+      "liquidityNet": "135939977590172158439402",
+      "liquidityGross": "135939977590172158439402"
+    },
+    {
+      "index": -208400,
+      "liquidityNet": "346743548814389760008995",
+      "liquidityGross": "1154894641961576651788635"
+    },
+    {
+      "index": -208200,
+      "liquidityNet": "-375178012057295182575013",
+      "liquidityGross": "381971430291819759289047"
+    },
+    {
+      "index": -208000,
+      "liquidityNet": "308361742598328957885026",
+      "liquidityGross": "478257300518085396708988"
+    },
+    {
+      "index": -207200,
+      "liquidityNet": "-457250591014531650344099",
+      "liquidityGross": "457250591014531650344099"
+    },
+    {
+      "index": -207000,
+      "liquidityNet": "785497059625",
+      "liquidityGross": "785497059625"
+    },
+    {
+      "index": -206800,
+      "liquidityNet": "-322243956508640790678374",
+      "liquidityGross": "322243956508640790678374"
+    },
+    {
+      "index": -206400,
+      "liquidityNet": "12169392563853058509086",
+      "liquidityGross": "12170111428901569750320"
+    },
+    {
+      "index": -206200,
+      "liquidityNet": "12528556451929890166563325",
+      "liquidityGross": "12800436407110234483442129"
+    },
+    {
+      "index": -206000,
+      "liquidityNet": "-161320730805201032512263",
+      "liquidityGross": "161320730805201032512263"
+    },
+    {
+      "index": -205600,
+      "liquidityNet": "-1532788819637103617746",
+      "liquidityGross": "115066792959194507955318"
+    },
+    {
+      "index": -205400,
+      "liquidityNet": "-198691928567398841400152",
+      "liquidityGross": "198691928567398841400152"
+    },
+    {
+      "index": -205200,
+      "liquidityNet": "-6562881966103803041242",
+      "liquidityGross": "6562881966103803041242"
+    },
+    {
+      "index": -204600,
+      "liquidityNet": "7307148557998861766742",
+      "liquidityGross": "7307148557998861766742"
+    },
+    {
+      "index": -204400,
+      "liquidityNet": "-52335282371380182561279",
+      "liquidityGross": "52335282371380182561279"
+    },
+    {
+      "index": -204200,
+      "liquidityNet": "-25645194052425379746013",
+      "liquidityGross": "25645194052425379746013"
+    },
+    {
+      "index": -203200,
+      "liquidityNet": "-37310865536270483167112",
+      "liquidityGross": "37310865536270483167112"
+    },
+    {
+      "index": -202600,
+      "liquidityNet": "-12775463032146834539798",
+      "liquidityGross": "12775463032146834539798"
+    },
+    {
+      "index": -202400,
+      "liquidityNet": "-85194180547836571449483",
+      "liquidityGross": "85194180547836571449483"
+    },
+    {
+      "index": -202200,
+      "liquidityNet": "-12664853256298448743506068",
+      "liquidityGross": "12664853256298448743506068"
+    },
+    {
+      "index": -202000,
+      "liquidityNet": "-11870278423694765758282",
+      "liquidityGross": "11870278423694765758282"
+    },
+    {
+      "index": -201800,
+      "liquidityNet": "-2392335750553488171561",
+      "liquidityGross": "2392335750553488171561"
+    },
+    {
+      "index": -201600,
+      "liquidityNet": "-409840949390038635481695",
+      "liquidityGross": "409840949390038635481695"
+    },
+    {
+      "index": -201400,
+      "liquidityNet": "-92940548989352461206840",
+      "liquidityGross": "92940548989352461206840"
+    },
+    {
+      "index": -201200,
+      "liquidityNet": "-130471543866274781599431",
+      "liquidityGross": "130471543866274781599431"
+    },
+    {
+      "index": -201000,
+      "liquidityNet": "-318637658713718157078794",
+      "liquidityGross": "318637658713718157078794"
+    },
+    {
+      "index": -200400,
+      "liquidityNet": "-728674707531556958491281",
+      "liquidityGross": "728674707531556958491281"
+    },
+    {
+      "index": -200200,
+      "liquidityNet": "-1195456335377909542514906",
+      "liquidityGross": "1195456335377909542514906"
+    },
+    {
+      "index": -200000,
+      "liquidityNet": "-277274512038183725423532",
+      "liquidityGross": "277274512038183725423532"
+    },
+    {
+      "index": -199400,
+      "liquidityNet": "-160978375742574661863577",
+      "liquidityGross": "160978375742574661863577"
+    },
+    {
+      "index": -198800,
+      "liquidityNet": "-5510685222168006414902",
+      "liquidityGross": "5510685222168006414902"
+    },
+    {
+      "index": -198200,
+      "liquidityNet": "-43833896082420919713469",
+      "liquidityGross": "43833896082420919713469"
+    },
+    {
+      "index": -197200,
+      "liquidityNet": "-288878520603034400833739",
+      "liquidityGross": "288878520603034400833739"
+    },
+    {
+      "index": -197000,
+      "liquidityNet": "-838048028362064423164535",
+      "liquidityGross": "838048028362064423164535"
+    },
+    {
+      "index": -196200,
+      "liquidityNet": "-8716219609327824163211",
+      "liquidityGross": "8716219609327824163211"
+    },
+    {
+      "index": -195200,
+      "liquidityNet": "-41344750656850300650699",
+      "liquidityGross": "41344750656850300650699"
+    },
+    {
+      "index": -195000,
+      "liquidityNet": "370483489168999076360901338",
+      "liquidityGross": "370483489168999076360901338"
+    },
+    {
+      "index": -194800,
+      "liquidityNet": "-370483489168999076360901338",
+      "liquidityGross": "370483489168999076360901338"
+    },
+    {
+      "index": -190200,
+      "liquidityNet": "-393309521558207177297007",
+      "liquidityGross": "393309521558207177297007"
+    },
+    {
+      "index": -189000,
+      "liquidityNet": "-400075290929721223756532",
+      "liquidityGross": "400075290929721223756532"
+    },
+    {
+      "index": -188600,
+      "liquidityNet": "-16222394198372227982232",
+      "liquidityGross": "16222394198372227982232"
+    },
+    {
+      "index": -186000,
+      "liquidityNet": "-9683110729317004998170",
+      "liquidityGross": "9683110729317004998170"
+    },
+    {
+      "index": -183200,
+      "liquidityNet": "-20034329829489325564717",
+      "liquidityGross": "20034329829489325564717"
+    },
+    {
+      "index": -182200,
+      "liquidityNet": "-51004463605528809094240",
+      "liquidityGross": "51004463605528809094240"
+    },
+    {
+      "index": -181600,
+      "liquidityNet": "-3328956451720568101673",
+      "liquidityGross": "3328956451720568101673"
+    },
+    {
+      "index": -164600,
+      "liquidityNet": "-1387055570865071707708",
+      "liquidityGross": "1387055570865071707708"
+    },
+    {
+      "index": -138200,
+      "liquidityNet": "-52658506641128710646311",
+      "liquidityGross": "52658506641128710646311"
+    },
+    {
+      "index": -122800,
+      "liquidityNet": "-13342094047964905807053",
+      "liquidityGross": "13342094047964905807053"
+    },
+    {
+      "index": -111400,
+      "liquidityNet": "-12169751996377314129703",
+      "liquidityGross": "12169751996377314129703"
+    },
+    {
+      "index": 0,
+      "liquidityNet": "-197160454861164746722053",
+      "liquidityGross": "197160454861164746722053"
+    },
+    {
+      "index": 53000,
+      "liquidityNet": "-14610321085036740634797",
+      "liquidityGross": "14610321085036740634797"
+    },
+    {
+      "index": 138200,
+      "liquidityNet": "-2872805519283562709264549",
+      "liquidityGross": "2872805519283562709264549"
+    },
+    {
+      "index": 887200,
+      "liquidityNet": "-761014099564303395125042",
+      "liquidityGross": "761014099564303395125042"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "259074848761117632519369236787",
+      "exactInput": true,
+      "expectedAmountCalculated": "89622837396152954565"
+    },
+    {
+      "amountSpecified": "235400732855135533618250703651",
+      "exactInput": true,
+      "expectedAmountCalculated": "88698617921453535040"
+    },
+    {
+      "amountSpecified": "355852085207678591595746382441",
+      "exactInput": true,
+      "expectedAmountCalculated": "91064634109429169065"
+    },
+    {
+      "amountSpecified": "164205662548818862637230733844",
+      "exactInput": true,
+      "expectedAmountCalculated": "79644318723484932343"
+    },
+    {
+      "amountSpecified": "88133329164595803104338626087",
+      "exactInput": true,
+      "expectedAmountCalculated": "54465372880512739129"
+    },
+    {
+      "amountSpecified": "8397433197910520137362629424",
+      "exactInput": true,
+      "expectedAmountCalculated": "6519907475938705737"
+    },
+    {
+      "amountSpecified": "156220521162990252007028602656",
+      "exactInput": true,
+      "expectedAmountCalculated": "77668786509469340244"
+    },
+    {
+      "amountSpecified": "197762211743534262741395886078",
+      "exactInput": true,
+      "expectedAmountCalculated": "85588511945706160636"
+    },
+    {
+      "amountSpecified": "222694351108634348982059588679",
+      "exactInput": true,
+      "expectedAmountCalculated": "87918603314069854982"
+    },
+    {
+      "amountSpecified": "129894668654437786394206433928",
+      "exactInput": true,
+      "expectedAmountCalculated": "70235964263511912671"
+    },
+    {
+      "amountSpecified": "77098298237871823465556283048",
+      "exactInput": true,
+      "expectedAmountCalculated": "49219593985361384200"
+    },
+    {
+      "amountSpecified": "33136825528338425807927751204",
+      "exactInput": true,
+      "expectedAmountCalculated": "23979630930535476159"
+    },
+    {
+      "amountSpecified": "151548651126571176884281811922",
+      "exactInput": true,
+      "expectedAmountCalculated": "76458477873882349371"
+    },
+    {
+      "amountSpecified": "307037053462493368591252778817",
+      "exactInput": true,
+      "expectedAmountCalculated": "90576345342066238687"
+    },
+    {
+      "amountSpecified": "230433382830270876654533633211",
+      "exactInput": true,
+      "expectedAmountCalculated": "88424627255733438996"
+    },
+    {
+      "amountSpecified": "247123469180154352964141224023",
+      "exactInput": true,
+      "expectedAmountCalculated": "89219821417743951973"
+    },
+    {
+      "amountSpecified": "160760556909091776761432022822",
+      "exactInput": true,
+      "expectedAmountCalculated": "78805931172699520171"
+    },
+    {
+      "amountSpecified": "27922672493080965955496286162",
+      "exactInput": true,
+      "expectedAmountCalculated": "20512260046039934659"
+    },
+    {
+      "amountSpecified": "8733742542100319099097972654",
+      "exactInput": true,
+      "expectedAmountCalculated": "6774694957475291511"
+    },
+    {
+      "amountSpecified": "8784151329917396987394484896",
+      "exactInput": true,
+      "expectedAmountCalculated": "6812843407221220376"
+    },
+    {
+      "amountSpecified": "131480927526885293574358259517",
+      "exactInput": true,
+      "expectedAmountCalculated": "70729755651377248291"
+    },
+    {
+      "amountSpecified": "126368845702570862987474885664",
+      "exactInput": true,
+      "expectedAmountCalculated": "69114651940227590512"
+    },
+    {
+      "amountSpecified": "234166665781671560746165401576",
+      "exactInput": true,
+      "expectedAmountCalculated": "88634025033281979976"
+    },
+    {
+      "amountSpecified": "117615874141574573601110322636",
+      "exactInput": true,
+      "expectedAmountCalculated": "66182694396537841635"
+    },
+    {
+      "amountSpecified": "217146675957512168464193743986",
+      "exactInput": true,
+      "expectedAmountCalculated": "87500337080664357229"
+    },
+    {
+      "amountSpecified": "347864806096461981114508833084",
+      "exactInput": true,
+      "expectedAmountCalculated": "91002203285081093297"
+    },
+    {
+      "amountSpecified": "224569476322141480874032802211",
+      "exactInput": true,
+      "expectedAmountCalculated": "88049264725161987169"
+    },
+    {
+      "amountSpecified": "288106407009648045886557119385",
+      "exactInput": true,
+      "expectedAmountCalculated": "90286000839895906196"
+    },
+    {
+      "amountSpecified": "105717794737261921214673564216",
+      "exactInput": true,
+      "expectedAmountCalculated": "61824287499186972853"
+    },
+    {
+      "amountSpecified": "311495948761197361617547104216",
+      "exactInput": true,
+      "expectedAmountCalculated": "90634099436844970904"
+    },
+    {
+      "amountSpecified": "72952067384500145224219669848",
+      "exactInput": true,
+      "expectedAmountCalculated": "47122899391964843658"
+    },
+    {
+      "amountSpecified": "35209728825581926978977252162",
+      "exactInput": true,
+      "expectedAmountCalculated": "25327880484957711997"
+    },
+    {
+      "amountSpecified": "9476501608488825872627609832",
+      "exactInput": true,
+      "expectedAmountCalculated": "7335718484964063164"
+    },
+    {
+      "amountSpecified": "255054295552348937842096604628",
+      "exactInput": true,
+      "expectedAmountCalculated": "89498699421531196197"
+    },
+    {
+      "amountSpecified": "250183513954564095732270748731",
+      "exactInput": true,
+      "expectedAmountCalculated": "89333305360970496104"
+    },
+    {
+      "amountSpecified": "172069958295827988247573838082",
+      "exactInput": true,
+      "expectedAmountCalculated": "81445371886997949326"
+    },
+    {
+      "amountSpecified": "282777240232519949926060898238",
+      "exactInput": true,
+      "expectedAmountCalculated": "90187974276225200519"
+    },
+    {
+      "amountSpecified": "82750936563488712970578290835",
+      "exactInput": true,
+      "expectedAmountCalculated": "51970601915247600000"
+    },
+    {
+      "amountSpecified": "185414738386685234309377626411",
+      "exactInput": true,
+      "expectedAmountCalculated": "83893469637246181121"
+    },
+    {
+      "amountSpecified": "10150395030723177367439389248",
+      "exactInput": true,
+      "expectedAmountCalculated": "7842721915573114649"
+    },
+    {
+      "amountSpecified": "143375154082414385579118560364",
+      "exactInput": true,
+      "expectedAmountCalculated": "74235493931593220189"
+    },
+    {
+      "amountSpecified": "226133840754245187457053620127",
+      "exactInput": true,
+      "expectedAmountCalculated": "88154462674607543934"
+    },
+    {
+      "amountSpecified": "105715345923686080896097953078",
+      "exactInput": true,
+      "expectedAmountCalculated": "61823342456822754279"
+    },
+    {
+      "amountSpecified": "282753834836930701616654358258",
+      "exactInput": true,
+      "expectedAmountCalculated": "90187524811897829133"
+    },
+    {
+      "amountSpecified": "9270595266764489207204567802",
+      "exactInput": true,
+      "expectedAmountCalculated": "7180425020083488910"
+    },
+    {
+      "amountSpecified": "170897956328874316721809244118",
+      "exactInput": true,
+      "expectedAmountCalculated": "81192968571978379353"
+    },
+    {
+      "amountSpecified": "193542985563086530976133391149",
+      "exactInput": true,
+      "expectedAmountCalculated": "85058677072209309296"
+    },
+    {
+      "amountSpecified": "227654714519322877587577358421",
+      "exactInput": true,
+      "expectedAmountCalculated": "88253554144769732785"
+    },
+    {
+      "amountSpecified": "341215020493239032337918724521",
+      "exactInput": true,
+      "expectedAmountCalculated": "90946002942109061498"
+    },
+    {
+      "amountSpecified": "113964669179235525409457251056",
+      "exactInput": true,
+      "expectedAmountCalculated": "64893321433454203752"
+    },
+    {
+      "amountSpecified": "86249349209613028439",
+      "exactInput": false,
+      "expectedAmountCalculated": "203625355490294547878189727438"
+    },
+    {
+      "amountSpecified": "46074511149153209190",
+      "exactInput": false,
+      "expectedAmountCalculated": "70919594237290977632283495352"
+    },
+    {
+      "amountSpecified": "14628085071090388188",
+      "exactInput": false,
+      "expectedAmountCalculated": "19434020701739741643311846824"
+    },
+    {
+      "amountSpecified": "71009490277474772674",
+      "exactInput": false,
+      "expectedAmountCalculated": "132388896924658964417307675682"
+    },
+    {
+      "amountSpecified": "43757144351871681666",
+      "exactInput": false,
+      "expectedAmountCalculated": "66515993445874148941296935391"
+    },
+    {
+      "amountSpecified": "4086773526827786508",
+      "exactInput": false,
+      "expectedAmountCalculated": "5217276559430122496813081845"
+    },
+    {
+      "amountSpecified": "7126284846707280150",
+      "exactInput": false,
+      "expectedAmountCalculated": "9198865317133349993753011789"
+    },
+    {
+      "amountSpecified": "24932251568305398576",
+      "exactInput": false,
+      "expectedAmountCalculated": "34598706548486964845509976173"
+    },
+    {
+      "amountSpecified": "34528178806162151910",
+      "exactInput": false,
+      "expectedAmountCalculated": "50096981075905431117122429295"
+    },
+    {
+      "amountSpecified": "135555606212108603",
+      "exactInput": false,
+      "expectedAmountCalculated": "170660463016786378929953246"
+    },
+    {
+      "amountSpecified": "71840432332543122408",
+      "exactInput": false,
+      "expectedAmountCalculated": "135126654208673051214649551337"
+    },
+    {
+      "amountSpecified": "49068491565604882504",
+      "exactInput": false,
+      "expectedAmountCalculated": "76795434638221158629640911184"
+    },
+    {
+      "amountSpecified": "840611478201348499",
+      "exactInput": false,
+      "expectedAmountCalculated": "1060905543476439414812925599"
+    },
+    {
+      "amountSpecified": "49415896531346472588",
+      "exactInput": false,
+      "expectedAmountCalculated": "77492794899602314184796266467"
+    },
+    {
+      "amountSpecified": "89412188277199702418",
+      "exactInput": false,
+      "expectedAmountCalculated": "252442013897225126293497139743"
+    },
+    {
+      "amountSpecified": "51484162893512687112",
+      "exactInput": false,
+      "expectedAmountCalculated": "81730589299220016473245115050"
+    },
+    {
+      "amountSpecified": "63683407402803949586",
+      "exactInput": false,
+      "expectedAmountCalculated": "110641310798921988684924221806"
+    },
+    {
+      "amountSpecified": "30681154432795647431",
+      "exactInput": false,
+      "expectedAmountCalculated": "43709609689706504319588329757"
+    },
+    {
+      "amountSpecified": "92307669340168606880",
+      "exactInput": false,
+      "expectedAmountCalculated": "1473664754863164878315403298298"
+    },
+    {
+      "amountSpecified": "75532325207526051466",
+      "exactInput": false,
+      "expectedAmountCalculated": "148080165453623661790158130848"
+    },
+    {
+      "amountSpecified": "85587724574810358832",
+      "exactInput": false,
+      "expectedAmountCalculated": "197755643275830791144219122324"
+    },
+    {
+      "amountSpecified": "29669334371978810094",
+      "exactInput": false,
+      "expectedAmountCalculated": "42069171233361898402585364469"
+    },
+    {
+      "amountSpecified": "92766943229335432288",
+      "exactInput": false,
+      "expectedAmountCalculated": "9602033648388599474716589630400700810689834"
+    },
+    {
+      "amountSpecified": "323559397901367128",
+      "exactInput": false,
+      "expectedAmountCalculated": "407618080885610585566263584"
+    },
+    {
+      "amountSpecified": "20929968958449558372",
+      "exactInput": false,
+      "expectedAmountCalculated": "28542163251211100330222984142"
+    },
+    {
+      "amountSpecified": "30434388202669406088",
+      "exactInput": false,
+      "expectedAmountCalculated": "43308042786480050278587603512"
+    },
+    {
+      "amountSpecified": "89983814131700411573",
+      "exactInput": false,
+      "expectedAmountCalculated": "272998133046793340038653422703"
+    },
+    {
+      "amountSpecified": "92619612385589878134",
+      "exactInput": false,
+      "expectedAmountCalculated": "9602033648388599474716589630400700810689834"
+    },
+    {
+      "amountSpecified": "22375089847701017856",
+      "exactInput": false,
+      "expectedAmountCalculated": "30703472314434694369230778392"
+    },
+    {
+      "amountSpecified": "85325191466149008808",
+      "exactInput": false,
+      "expectedAmountCalculated": "195616201687985478522512222331"
+    },
+    {
+      "amountSpecified": "2519074016962390176",
+      "exactInput": false,
+      "expectedAmountCalculated": "3197950126012669455737780910"
+    },
+    {
+      "amountSpecified": "30202462566134987282",
+      "exactInput": false,
+      "expectedAmountCalculated": "42931504486741388853906651963"
+    },
+    {
+      "amountSpecified": "11874422723863315968",
+      "exactInput": false,
+      "expectedAmountCalculated": "15604843793590327971251387698"
+    },
+    {
+      "amountSpecified": "75491831390428144384",
+      "exactInput": false,
+      "expectedAmountCalculated": "147930557539175947337014735667"
+    },
+    {
+      "amountSpecified": "70995824375294133644",
+      "exactInput": false,
+      "expectedAmountCalculated": "132344381120797401662415880282"
+    },
+    {
+      "amountSpecified": "38668103361021116766",
+      "exactInput": false,
+      "expectedAmountCalculated": "57252941827764821994521195650"
+    },
+    {
+      "amountSpecified": "95126081392521863999",
+      "exactInput": false,
+      "expectedAmountCalculated": "9602033648388599474716589630400700810689834"
+    },
+    {
+      "amountSpecified": "27446397177114968466",
+      "exactInput": false,
+      "expectedAmountCalculated": "38521198134607326360986974707"
+    },
+    {
+      "amountSpecified": "89918418156611122141",
+      "exactInput": false,
+      "expectedAmountCalculated": "270189678513621595539469303983"
+    },
+    {
+      "amountSpecified": "1566104804454814951",
+      "exactInput": false,
+      "expectedAmountCalculated": "1981535370374195524419199628"
+    },
+    {
+      "amountSpecified": "31368780354809023539",
+      "exactInput": false,
+      "expectedAmountCalculated": "44833698181573927500758835237"
+    },
+    {
+      "amountSpecified": "60283868699563792066",
+      "exactInput": false,
+      "expectedAmountCalculated": "101795909992779092376990405335"
+    },
+    {
+      "amountSpecified": "77841088910279734865",
+      "exactInput": false,
+      "expectedAmountCalculated": "156898871434997827640465212625"
+    },
+    {
+      "amountSpecified": "19973001730130134512",
+      "exactInput": false,
+      "expectedAmountCalculated": "27126345871999797151319425470"
+    },
+    {
+      "amountSpecified": "19058951535478652987",
+      "exactInput": false,
+      "expectedAmountCalculated": "25785291504582379089645506168"
+    },
+    {
+      "amountSpecified": "58905907332768103622",
+      "exactInput": false,
+      "expectedAmountCalculated": "98401776435418754498304567889"
+    },
+    {
+      "amountSpecified": "78033966760454713729",
+      "exactInput": false,
+      "expectedAmountCalculated": "157662234023395142310728936405"
+    },
+    {
+      "amountSpecified": "38037426408443675381",
+      "exactInput": false,
+      "expectedAmountCalculated": "56141957698026991383325286796"
+    },
+    {
+      "amountSpecified": "53033741847673449184",
+      "exactInput": false,
+      "expectedAmountCalculated": "85013562079600965038878839084"
+    },
+    {
+      "amountSpecified": "76683559510370479709",
+      "exactInput": false,
+      "expectedAmountCalculated": "152405347683615666858326038279"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0xa786568aa87fFB8AAFD1E532B66909eeb8D79399-reversed.json b/src/__tests__/stubs/swap/0xa786568aa87fFB8AAFD1E532B66909eeb8D79399-reversed.json
new file mode 100644
index 00000000..f58bc2c7
--- /dev/null
+++ b/src/__tests__/stubs/swap/0xa786568aa87fFB8AAFD1E532B66909eeb8D79399-reversed.json
@@ -0,0 +1,531 @@
+{
+  "poolName": "PEPE - WETH 100 - reversed",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0x6982508145454Ce325dDbE47a25d4ec3d2311933",
+    "decimals": 18
+  },
+  "fee": 100,
+  "liquidity": "315747746162410228624129",
+  "sqrtRatioX96": "1980628661138867532755874",
+  "tickCurrent": -211945,
+  "ticks": [
+    {
+      "index": -214663,
+      "liquidityNet": "315747746162410228624129",
+      "liquidityGross": "315747746162410228624129"
+    },
+    {
+      "index": -211944,
+      "liquidityNet": "-315747746162410228624129",
+      "liquidityGross": "315747746162410228624129"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "562248551964960900",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "616261336559912600",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "596818314676834400",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "235002432871024070",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "753688685680569600",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "450993699725781500",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "9609758526614106",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "153087435995370450",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "329047224816065670",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "230970480724713930",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "116123078241914040",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "936398288232586300",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "928820655782342400",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "347892669981895160",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "874852183783002600",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "15279593455000272",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "720607666249920800",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "798417601717902100",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "448220118555277470",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "927179236306219900",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "922272019495961500",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "449549386719374700",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "47578929278271060",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "262785577616713200",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "329792332457566230",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "98863991034434660",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "78984767874115120",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "566096056968906900",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "700326150172943600",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "817272926760607400",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "608914037960106300",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "434502542970236940",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "12664081815403881",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "911356630156491900",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "773366697910648800",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "221620813735674550",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "132901037671965700",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "535666250801295900",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "279425140626437200",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "907699039480523800",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "567710967886354800",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "496666235942548440",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "512591569414447600",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "297181002084172100",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "755451394735215900",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "97782222814797090",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "584654636044555900",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "104875308048375970",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "628699463490644640",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "52976881507746699",
+      "exactInput": true,
+      "expectedAmountCalculated": "33175425705361481641199"
+    },
+    {
+      "amountSpecified": "361270476146910230716389",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "1546393232512702708716729",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "1100120299003470462661839",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "3538120397973343065437608",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "1441575586561640413782948",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "3438243967748635754533456",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "92326999539669249703446",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "269488866539774642679933",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "3284067440684515197778904",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "1347676629222019956192858",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "2060869755739586743637112",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "1896689265013339274095640",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "1692103661932249317765195",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "1491648574816905357146805",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "1056186528318825049724584",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "293211180387092248139544",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "1892617026136642450064376",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "3237472975237090772419136",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "3087035100428277692725664",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "2902615373160141700952984",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "580865769081092309004536",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "3606436689636045789754408",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "3668704952612453826217912",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "3632292063682472530408680",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "1098780139347766304149161",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "1924966730102125859092200",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "2247342438497870445247960",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "2219308798736486197982120",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "1785169517739338796732608",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "2514997083040964744230280",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "1364713399732774616200305",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "3678558052441151766455352",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "52554182629868186543500",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "957678908607069638283399",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "2589478444720195396252575",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "3023801930163005401351808",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "2692090255848955738851976",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "1223569108986364652166416",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "2007386723500266162921976",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "1168352105715455446228611",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "773221190416847028821076",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "1105173797548699706406520",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "2812423552518194425929256",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "1814329007437295721033501",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "1359015919770139480882221",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "1734241910812005822727731",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "2365850821352420661301448",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "3202533610773853052758328",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "282621331605613385199906",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    },
+    {
+      "amountSpecified": "2051386139527580462756736",
+      "exactInput": false,
+      "expectedAmountCalculated": "20735190414872"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0xa786568aa87fFB8AAFD1E532B66909eeb8D79399.json b/src/__tests__/stubs/swap/0xa786568aa87fFB8AAFD1E532B66909eeb8D79399.json
new file mode 100644
index 00000000..e9fef595
--- /dev/null
+++ b/src/__tests__/stubs/swap/0xa786568aa87fFB8AAFD1E532B66909eeb8D79399.json
@@ -0,0 +1,531 @@
+{
+  "poolName": "PEPE - WETH 100",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0x6982508145454Ce325dDbE47a25d4ec3d2311933",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "fee": 100,
+  "liquidity": "315747746162410228624129",
+  "sqrtRatioX96": "1980628661138867532755874",
+  "tickCurrent": -211945,
+  "ticks": [
+    {
+      "index": -214663,
+      "liquidityNet": "315747746162410228624129",
+      "liquidityGross": "315747746162410228624129"
+    },
+    {
+      "index": -211944,
+      "liquidityNet": "-315747746162410228624129",
+      "liquidityGross": "315747746162410228624129"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "2716265144385707239799336",
+      "exactInput": true,
+      "expectedAmountCalculated": "1697001792979095"
+    },
+    {
+      "amountSpecified": "564060523786905479533176",
+      "exactInput": true,
+      "expectedAmountCalculated": "352459996926562"
+    },
+    {
+      "amountSpecified": "1394581849530146639421976",
+      "exactInput": true,
+      "expectedAmountCalculated": "871363939230642"
+    },
+    {
+      "amountSpecified": "1248291145567356626552712",
+      "exactInput": true,
+      "expectedAmountCalculated": "779967476395114"
+    },
+    {
+      "amountSpecified": "140473041077340549352848",
+      "exactInput": true,
+      "expectedAmountCalculated": "87779211302129"
+    },
+    {
+      "amountSpecified": "1076828044468653453556755",
+      "exactInput": true,
+      "expectedAmountCalculated": "672841632429588"
+    },
+    {
+      "amountSpecified": "1925237266887787246850859",
+      "exactInput": true,
+      "expectedAmountCalculated": "1202878027523496"
+    },
+    {
+      "amountSpecified": "1264755199662525044706609",
+      "exactInput": true,
+      "expectedAmountCalculated": "790253651330561"
+    },
+    {
+      "amountSpecified": "82053820627045033812675",
+      "exactInput": true,
+      "expectedAmountCalculated": "51274272375581"
+    },
+    {
+      "amountSpecified": "477520262424387151869978",
+      "exactInput": true,
+      "expectedAmountCalculated": "298386318782626"
+    },
+    {
+      "amountSpecified": "633610069639048523708925",
+      "exactInput": true,
+      "expectedAmountCalculated": "395916686659715"
+    },
+    {
+      "amountSpecified": "1387371848142868226377792",
+      "exactInput": true,
+      "expectedAmountCalculated": "866859474140138"
+    },
+    {
+      "amountSpecified": "3243325819352119553398096",
+      "exactInput": true,
+      "expectedAmountCalculated": "2026201362327020"
+    },
+    {
+      "amountSpecified": "137261049897867821873178",
+      "exactInput": true,
+      "expectedAmountCalculated": "85772114519957"
+    },
+    {
+      "amountSpecified": "343835641349421770418429",
+      "exactInput": true,
+      "expectedAmountCalculated": "214853578235748"
+    },
+    {
+      "amountSpecified": "3327068625315206344870232",
+      "exactInput": true,
+      "expectedAmountCalculated": "2078504188670219"
+    },
+    {
+      "amountSpecified": "595922101927203980575416",
+      "exactInput": true,
+      "expectedAmountCalculated": "372368147721782"
+    },
+    {
+      "amountSpecified": "1541274777202451618359851",
+      "exactInput": true,
+      "expectedAmountCalculated": "963009569572847"
+    },
+    {
+      "amountSpecified": "2744664777610197128108232",
+      "exactInput": true,
+      "expectedAmountCalculated": "1714740767765551"
+    },
+    {
+      "amountSpecified": "521982480169887575095845",
+      "exactInput": true,
+      "expectedAmountCalculated": "326168112165754"
+    },
+    {
+      "amountSpecified": "2879658804115694200127544",
+      "exactInput": true,
+      "expectedAmountCalculated": "1799059626574526"
+    },
+    {
+      "amountSpecified": "2440350844285455063354576",
+      "exactInput": true,
+      "expectedAmountCalculated": "1524656091717490"
+    },
+    {
+      "amountSpecified": "716765355970765340217279",
+      "exactInput": true,
+      "expectedAmountCalculated": "447874032323380"
+    },
+    {
+      "amountSpecified": "2919865811916928219873216",
+      "exactInput": true,
+      "expectedAmountCalculated": "1824173048926252"
+    },
+    {
+      "amountSpecified": "2627458753506667735732336",
+      "exactInput": true,
+      "expectedAmountCalculated": "1641531043398332"
+    },
+    {
+      "amountSpecified": "2118939904996756787115846",
+      "exactInput": true,
+      "expectedAmountCalculated": "1323882109631997"
+    },
+    {
+      "amountSpecified": "2768267021380990699911144",
+      "exactInput": true,
+      "expectedAmountCalculated": "1729483137168903"
+    },
+    {
+      "amountSpecified": "649135392904980411174675",
+      "exactInput": true,
+      "expectedAmountCalculated": "405617319555893"
+    },
+    {
+      "amountSpecified": "1739516063049965572065792",
+      "exactInput": true,
+      "expectedAmountCalculated": "1086856382390790"
+    },
+    {
+      "amountSpecified": "3448875190610586108667854",
+      "exactInput": true,
+      "expectedAmountCalculated": "2154579069580268"
+    },
+    {
+      "amountSpecified": "405387186200289545675703",
+      "exactInput": true,
+      "expectedAmountCalculated": "253314236948313"
+    },
+    {
+      "amountSpecified": "1719352141801625070293256",
+      "exactInput": true,
+      "expectedAmountCalculated": "1074259600800561"
+    },
+    {
+      "amountSpecified": "3641549085622269145174192",
+      "exactInput": true,
+      "expectedAmountCalculated": "2274911489816933"
+    },
+    {
+      "amountSpecified": "2944223473066588324741392",
+      "exactInput": true,
+      "expectedAmountCalculated": "1839386842230055"
+    },
+    {
+      "amountSpecified": "2017180762058424115061664",
+      "exactInput": true,
+      "expectedAmountCalculated": "1260314663179697"
+    },
+    {
+      "amountSpecified": "295111144236702879732381",
+      "exactInput": true,
+      "expectedAmountCalculated": "184407671173343"
+    },
+    {
+      "amountSpecified": "380840893643764933601103",
+      "exactInput": true,
+      "expectedAmountCalculated": "237976460823579"
+    },
+    {
+      "amountSpecified": "1414939232770620597431895",
+      "exactInput": true,
+      "expectedAmountCalculated": "884082233876231"
+    },
+    {
+      "amountSpecified": "684879674631073300185282",
+      "exactInput": true,
+      "expectedAmountCalculated": "427951202202684"
+    },
+    {
+      "amountSpecified": "2588143012483272362539024",
+      "exactInput": true,
+      "expectedAmountCalculated": "1616973174091328"
+    },
+    {
+      "amountSpecified": "1771890236125013097613191",
+      "exactInput": true,
+      "expectedAmountCalculated": "1107081054289882"
+    },
+    {
+      "amountSpecified": "2843722273556363329587712",
+      "exactInput": true,
+      "expectedAmountCalculated": "1776613422339943"
+    },
+    {
+      "amountSpecified": "2173980255748943554562936",
+      "exactInput": true,
+      "expectedAmountCalculated": "1358264584017538"
+    },
+    {
+      "amountSpecified": "281248486549890708622893",
+      "exactInput": true,
+      "expectedAmountCalculated": "175745431360566"
+    },
+    {
+      "amountSpecified": "3395463355348627443358816",
+      "exactInput": true,
+      "expectedAmountCalculated": "2121220629484193"
+    },
+    {
+      "amountSpecified": "151296102910426507041372",
+      "exactInput": true,
+      "expectedAmountCalculated": "94542277334552"
+    },
+    {
+      "amountSpecified": "2050956854252724490629984",
+      "exactInput": true,
+      "expectedAmountCalculated": "1281414206900739"
+    },
+    {
+      "amountSpecified": "1781755421778290559069560",
+      "exactInput": true,
+      "expectedAmountCalculated": "1113243975440377"
+    },
+    {
+      "amountSpecified": "454137457684543177940871",
+      "exactInput": true,
+      "expectedAmountCalculated": "283775717424338"
+    },
+    {
+      "amountSpecified": "1282972919630768565875392",
+      "exactInput": true,
+      "expectedAmountCalculated": "801635425162394"
+    },
+    {
+      "amountSpecified": "107549520042762080",
+      "exactInput": false,
+      "expectedAmountCalculated": "174486975339797468437575711"
+    },
+    {
+      "amountSpecified": "544335926981398965",
+      "exactInput": false,
+      "expectedAmountCalculated": "935611573199352023444733159"
+    },
+    {
+      "amountSpecified": "520519648074988830",
+      "exactInput": false,
+      "expectedAmountCalculated": "891785814295888067955150733"
+    },
+    {
+      "amountSpecified": "644395643732160100",
+      "exactInput": false,
+      "expectedAmountCalculated": "1122883914070635701433310372"
+    },
+    {
+      "amountSpecified": "265585079253671070",
+      "exactInput": false,
+      "expectedAmountCalculated": "439809018418006339452700641"
+    },
+    {
+      "amountSpecified": "617748899776372500",
+      "exactInput": false,
+      "expectedAmountCalculated": "1072508492660949243782374435"
+    },
+    {
+      "amountSpecified": "351869449087307550",
+      "exactInput": false,
+      "expectedAmountCalculated": "589362739696097463474484239"
+    },
+    {
+      "amountSpecified": "160076019897529060",
+      "exactInput": false,
+      "expectedAmountCalculated": "261469280757841631982414192"
+    },
+    {
+      "amountSpecified": "643119607212695700",
+      "exactInput": false,
+      "expectedAmountCalculated": "1120463137482179620130589167"
+    },
+    {
+      "amountSpecified": "105352557911552180",
+      "exactInput": false,
+      "expectedAmountCalculated": "170874435569786891799989349"
+    },
+    {
+      "amountSpecified": "519076621124261500",
+      "exactInput": false,
+      "expectedAmountCalculated": "889139509682087250139064765"
+    },
+    {
+      "amountSpecified": "122086248998652720",
+      "exactInput": false,
+      "expectedAmountCalculated": "198441684637912703012625838"
+    },
+    {
+      "amountSpecified": "469736028282120350",
+      "exactInput": false,
+      "expectedAmountCalculated": "799274912289877585688113125"
+    },
+    {
+      "amountSpecified": "385547517975349360",
+      "exactInput": false,
+      "expectedAmountCalculated": "648668475081718236817125044"
+    },
+    {
+      "amountSpecified": "624490468790127800",
+      "exactInput": false,
+      "expectedAmountCalculated": "1085218465545953540163543084"
+    },
+    {
+      "amountSpecified": "483145777489094640",
+      "exactInput": false,
+      "expectedAmountCalculated": "823579820995306904815445929"
+    },
+    {
+      "amountSpecified": "537513783086304800",
+      "exactInput": false,
+      "expectedAmountCalculated": "923028735426291918225458741"
+    },
+    {
+      "amountSpecified": "301821196548341940",
+      "exactInput": false,
+      "expectedAmountCalculated": "502201769673276262859069659"
+    },
+    {
+      "amountSpecified": "156664547018517950",
+      "exactInput": false,
+      "expectedAmountCalculated": "255784120784807993492603154"
+    },
+    {
+      "amountSpecified": "885324672524097405",
+      "exactInput": false,
+      "expectedAmountCalculated": "1595748502568142559031962846"
+    },
+    {
+      "amountSpecified": "912675954978827500",
+      "exactInput": false,
+      "expectedAmountCalculated": "1651493161537428231342427454"
+    },
+    {
+      "amountSpecified": "732916385325149500",
+      "exactInput": false,
+      "expectedAmountCalculated": "1292923133547475881435578786"
+    },
+    {
+      "amountSpecified": "101002465681506730",
+      "exactInput": false,
+      "expectedAmountCalculated": "163727440387442477750579186"
+    },
+    {
+      "amountSpecified": "966854444637289500",
+      "exactInput": false,
+      "expectedAmountCalculated": "1763214089362009474223527104"
+    },
+    {
+      "amountSpecified": "134206362474051270",
+      "exactInput": false,
+      "expectedAmountCalculated": "218482729872004872905280147"
+    },
+    {
+      "amountSpecified": "72289256724625600",
+      "exactInput": false,
+      "expectedAmountCalculated": "116752427555129997938309275"
+    },
+    {
+      "amountSpecified": "787453044138947175",
+      "exactInput": false,
+      "expectedAmountCalculated": "1399791456514783108206316370"
+    },
+    {
+      "amountSpecified": "113925432019135850",
+      "exactInput": false,
+      "expectedAmountCalculated": "184982658259728672299429569"
+    },
+    {
+      "amountSpecified": "16791972028716850",
+      "exactInput": false,
+      "expectedAmountCalculated": "26929175769544780625504393"
+    },
+    {
+      "amountSpecified": "264740576567391800",
+      "exactInput": false,
+      "expectedAmountCalculated": "438361988897111284644308922"
+    },
+    {
+      "amountSpecified": "85940613189942060",
+      "exactInput": false,
+      "expectedAmountCalculated": "139043057847125879597399626"
+    },
+    {
+      "amountSpecified": "152704357323399040",
+      "exactInput": false,
+      "expectedAmountCalculated": "249190818781954101655318960"
+    },
+    {
+      "amountSpecified": "742283764303992300",
+      "exactInput": false,
+      "expectedAmountCalculated": "1311163211047519330893621446"
+    },
+    {
+      "amountSpecified": "798990601682809200",
+      "exactInput": false,
+      "expectedAmountCalculated": "1422610658857822214090543934"
+    },
+    {
+      "amountSpecified": "898923217334331600",
+      "exactInput": false,
+      "expectedAmountCalculated": "1623409207356035789930282991"
+    },
+    {
+      "amountSpecified": "207394710659453580",
+      "exactInput": false,
+      "expectedAmountCalculated": "340845527013917144509546021"
+    },
+    {
+      "amountSpecified": "610404396808598655",
+      "exactInput": false,
+      "expectedAmountCalculated": "1058688581061408644973188351"
+    },
+    {
+      "amountSpecified": "345704842117234200",
+      "exactInput": false,
+      "expectedAmountCalculated": "578564417416075430586303753"
+    },
+    {
+      "amountSpecified": "388618893480974900",
+      "exactInput": false,
+      "expectedAmountCalculated": "654103529515149477237653230"
+    },
+    {
+      "amountSpecified": "627236853632631400",
+      "exactInput": false,
+      "expectedAmountCalculated": "1090403023733940145103968087"
+    },
+    {
+      "amountSpecified": "437017997715387200",
+      "exactInput": false,
+      "expectedAmountCalculated": "740340976198329927935252115"
+    },
+    {
+      "amountSpecified": "782915889901447200",
+      "exactInput": false,
+      "expectedAmountCalculated": "1390838072790042404282074728"
+    },
+    {
+      "amountSpecified": "950710565891968800",
+      "exactInput": false,
+      "expectedAmountCalculated": "1729741580833535887048280554"
+    },
+    {
+      "amountSpecified": "336486841825727200",
+      "exactInput": false,
+      "expectedAmountCalculated": "562450442917622423598523542"
+    },
+    {
+      "amountSpecified": "58926469664716930",
+      "exactInput": false,
+      "expectedAmountCalculated": "95008224029669261462431597"
+    },
+    {
+      "amountSpecified": "534505784278537900",
+      "exactInput": false,
+      "expectedAmountCalculated": "917488160210249010960400290"
+    },
+    {
+      "amountSpecified": "605416031978315610",
+      "exactInput": false,
+      "expectedAmountCalculated": "1049318021655958050855343331"
+    },
+    {
+      "amountSpecified": "472096307019881370",
+      "exactInput": false,
+      "expectedAmountCalculated": "803546502037378661890327668"
+    },
+    {
+      "amountSpecified": "860518848904290696",
+      "exactInput": false,
+      "expectedAmountCalculated": "1545566682538137145287889968"
+    },
+    {
+      "amountSpecified": "583425341750777300",
+      "exactInput": false,
+      "expectedAmountCalculated": "1008161340587738431485104953"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0xbb256c2F1B677e27118b0345FD2b3894D2E6D487-reversed.json b/src/__tests__/stubs/swap/0xbb256c2F1B677e27118b0345FD2b3894D2E6D487-reversed.json
new file mode 100644
index 00000000..845fd0e6
--- /dev/null
+++ b/src/__tests__/stubs/swap/0xbb256c2F1B677e27118b0345FD2b3894D2E6D487-reversed.json
@@ -0,0 +1,556 @@
+{
+  "poolName": "USDC - USDT 10000 - reversed",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
+    "decimals": 6
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
+    "decimals": 6
+  },
+  "fee": 10000,
+  "liquidity": "12738018149",
+  "sqrtRatioX96": "78870880896987367462649497935",
+  "tickCurrent": -91,
+  "ticks": [
+    {
+      "index": -5200,
+      "liquidityNet": "194728455",
+      "liquidityGross": "194728455"
+    },
+    {
+      "index": -200,
+      "liquidityNet": "12543289694",
+      "liquidityGross": "12543289694"
+    },
+    {
+      "index": 0,
+      "liquidityNet": "-30314066",
+      "liquidityGross": "30314066"
+    },
+    {
+      "index": 200,
+      "liquidityNet": "-12411459746",
+      "liquidityGross": "12614491510"
+    },
+    {
+      "index": 400,
+      "liquidityNet": "206092367",
+      "liquidityGross": "409124131"
+    },
+    {
+      "index": 600,
+      "liquidityNet": "-307608249",
+      "liquidityGross": "307608249"
+    },
+    {
+      "index": 1000,
+      "liquidityNet": "-194728455",
+      "liquidityGross": "194728455"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "27961299",
+      "exactInput": true,
+      "expectedAmountCalculated": "27872202"
+    },
+    {
+      "amountSpecified": "65997214",
+      "exactInput": true,
+      "expectedAmountCalculated": "65592550"
+    },
+    {
+      "amountSpecified": "100547355",
+      "exactInput": true,
+      "expectedAmountCalculated": "99663081"
+    },
+    {
+      "amountSpecified": "33478582",
+      "exactInput": true,
+      "expectedAmountCalculated": "33357567"
+    },
+    {
+      "amountSpecified": "82209049",
+      "exactInput": true,
+      "expectedAmountCalculated": "81602136"
+    },
+    {
+      "amountSpecified": "25314736",
+      "exactInput": true,
+      "expectedAmountCalculated": "25239275"
+    },
+    {
+      "amountSpecified": "71678400",
+      "exactInput": true,
+      "expectedAmountCalculated": "71207458"
+    },
+    {
+      "amountSpecified": "29420683",
+      "exactInput": true,
+      "expectedAmountCalculated": "29323602"
+    },
+    {
+      "amountSpecified": "99479399",
+      "exactInput": true,
+      "expectedAmountCalculated": "98612687"
+    },
+    {
+      "amountSpecified": "87482270",
+      "exactInput": true,
+      "expectedAmountCalculated": "86800875"
+    },
+    {
+      "amountSpecified": "67603643",
+      "exactInput": true,
+      "expectedAmountCalculated": "67180742"
+    },
+    {
+      "amountSpecified": "43209242",
+      "exactInput": true,
+      "expectedAmountCalculated": "43020457"
+    },
+    {
+      "amountSpecified": "40814846",
+      "exactInput": true,
+      "expectedAmountCalculated": "40644094"
+    },
+    {
+      "amountSpecified": "19291603",
+      "exactInput": true,
+      "expectedAmountCalculated": "19243127"
+    },
+    {
+      "amountSpecified": "9771166",
+      "exactInput": true,
+      "expectedAmountCalculated": "9753852"
+    },
+    {
+      "amountSpecified": "79434936",
+      "exactInput": true,
+      "expectedAmountCalculated": "78865494"
+    },
+    {
+      "amountSpecified": "1982835",
+      "exactInput": true,
+      "expectedAmountCalculated": "1980524"
+    },
+    {
+      "amountSpecified": "13058641",
+      "exactInput": true,
+      "expectedAmountCalculated": "13032159"
+    },
+    {
+      "amountSpecified": "110703349",
+      "exactInput": true,
+      "expectedAmountCalculated": "109643355"
+    },
+    {
+      "amountSpecified": "17991606",
+      "exactInput": true,
+      "expectedAmountCalculated": "17948215"
+    },
+    {
+      "amountSpecified": "44405075",
+      "exactInput": true,
+      "expectedAmountCalculated": "44206952"
+    },
+    {
+      "amountSpecified": "32290886",
+      "exactInput": true,
+      "expectedAmountCalculated": "32177140"
+    },
+    {
+      "amountSpecified": "79929760",
+      "exactInput": true,
+      "expectedAmountCalculated": "79353721"
+    },
+    {
+      "amountSpecified": "8208649",
+      "exactInput": true,
+      "expectedAmountCalculated": "8195102"
+    },
+    {
+      "amountSpecified": "98671066",
+      "exactInput": true,
+      "expectedAmountCalculated": "97817532"
+    },
+    {
+      "amountSpecified": "4104598",
+      "exactInput": true,
+      "expectedAmountCalculated": "4099137"
+    },
+    {
+      "amountSpecified": "80693067",
+      "exactInput": true,
+      "expectedAmountCalculated": "80106778"
+    },
+    {
+      "amountSpecified": "50776264",
+      "exactInput": true,
+      "expectedAmountCalculated": "50524670"
+    },
+    {
+      "amountSpecified": "23889364",
+      "exactInput": true,
+      "expectedAmountCalculated": "23820798"
+    },
+    {
+      "amountSpecified": "18770032",
+      "exactInput": true,
+      "expectedAmountCalculated": "18723628"
+    },
+    {
+      "amountSpecified": "111290031",
+      "exactInput": true,
+      "expectedAmountCalculated": "110219405"
+    },
+    {
+      "amountSpecified": "33696605",
+      "exactInput": true,
+      "expectedAmountCalculated": "33574231"
+    },
+    {
+      "amountSpecified": "51856924",
+      "exactInput": true,
+      "expectedAmountCalculated": "51595639"
+    },
+    {
+      "amountSpecified": "60506340",
+      "exactInput": true,
+      "expectedAmountCalculated": "60161011"
+    },
+    {
+      "amountSpecified": "71620359",
+      "exactInput": true,
+      "expectedAmountCalculated": "71150120"
+    },
+    {
+      "amountSpecified": "15538803",
+      "exactInput": true,
+      "expectedAmountCalculated": "15504293"
+    },
+    {
+      "amountSpecified": "62780506",
+      "exactInput": true,
+      "expectedAmountCalculated": "62411165"
+    },
+    {
+      "amountSpecified": "25269829",
+      "exactInput": true,
+      "expectedAmountCalculated": "25194590"
+    },
+    {
+      "amountSpecified": "100214370",
+      "exactInput": true,
+      "expectedAmountCalculated": "99335591"
+    },
+    {
+      "amountSpecified": "42165865",
+      "exactInput": true,
+      "expectedAmountCalculated": "41985047"
+    },
+    {
+      "amountSpecified": "81795340",
+      "exactInput": true,
+      "expectedAmountCalculated": "81194090"
+    },
+    {
+      "amountSpecified": "106630415",
+      "exactInput": true,
+      "expectedAmountCalculated": "105642780"
+    },
+    {
+      "amountSpecified": "85868063",
+      "exactInput": true,
+      "expectedAmountCalculated": "85209921"
+    },
+    {
+      "amountSpecified": "44093837",
+      "exactInput": true,
+      "expectedAmountCalculated": "43898165"
+    },
+    {
+      "amountSpecified": "72845538",
+      "exactInput": true,
+      "expectedAmountCalculated": "72360366"
+    },
+    {
+      "amountSpecified": "99081739",
+      "exactInput": true,
+      "expectedAmountCalculated": "98221523"
+    },
+    {
+      "amountSpecified": "32383218",
+      "exactInput": true,
+      "expectedAmountCalculated": "32268914"
+    },
+    {
+      "amountSpecified": "75301708",
+      "exactInput": true,
+      "expectedAmountCalculated": "74785904"
+    },
+    {
+      "amountSpecified": "13780318",
+      "exactInput": true,
+      "expectedAmountCalculated": "13751599"
+    },
+    {
+      "amountSpecified": "98758049",
+      "exactInput": true,
+      "expectedAmountCalculated": "97903102"
+    },
+    {
+      "amountSpecified": "115119605",
+      "exactInput": false,
+      "expectedAmountCalculated": "116282827"
+    },
+    {
+      "amountSpecified": "50023733",
+      "exactInput": false,
+      "expectedAmountCalculated": "50270857"
+    },
+    {
+      "amountSpecified": "99549706",
+      "exactInput": false,
+      "expectedAmountCalculated": "100432076"
+    },
+    {
+      "amountSpecified": "119886106",
+      "exactInput": false,
+      "expectedAmountCalculated": "121143110"
+    },
+    {
+      "amountSpecified": "44590040",
+      "exactInput": false,
+      "expectedAmountCalculated": "44791226"
+    },
+    {
+      "amountSpecified": "133938990",
+      "exactInput": false,
+      "expectedAmountCalculated": "135493837"
+    },
+    {
+      "amountSpecified": "23715148",
+      "exactInput": false,
+      "expectedAmountCalculated": "23783214"
+    },
+    {
+      "amountSpecified": "127343662",
+      "exactInput": false,
+      "expectedAmountCalculated": "128754750"
+    },
+    {
+      "amountSpecified": "39632792",
+      "exactInput": false,
+      "expectedAmountCalculated": "39796140"
+    },
+    {
+      "amountSpecified": "126747411",
+      "exactInput": false,
+      "expectedAmountCalculated": "128145850"
+    },
+    {
+      "amountSpecified": "117307955",
+      "exactInput": false,
+      "expectedAmountCalculated": "118513779"
+    },
+    {
+      "amountSpecified": "142413196",
+      "exactInput": false,
+      "expectedAmountCalculated": "144163094"
+    },
+    {
+      "amountSpecified": "178271305",
+      "exactInput": false,
+      "expectedAmountCalculated": "180975746"
+    },
+    {
+      "amountSpecified": "56562552",
+      "exactInput": false,
+      "expectedAmountCalculated": "56871155"
+    },
+    {
+      "amountSpecified": "168370879",
+      "exactInput": false,
+      "expectedAmountCalculated": "170790826"
+    },
+    {
+      "amountSpecified": "67291529",
+      "exactInput": false,
+      "expectedAmountCalculated": "67715717"
+    },
+    {
+      "amountSpecified": "43610605",
+      "exactInput": false,
+      "expectedAmountCalculated": "43804008"
+    },
+    {
+      "amountSpecified": "191877259",
+      "exactInput": false,
+      "expectedAmountCalculated": "195174545"
+    },
+    {
+      "amountSpecified": "149110940",
+      "exactInput": false,
+      "expectedAmountCalculated": "151023239"
+    },
+    {
+      "amountSpecified": "32152125",
+      "exactInput": false,
+      "expectedAmountCalculated": "32265720"
+    },
+    {
+      "amountSpecified": "108682853",
+      "exactInput": false,
+      "expectedAmountCalculated": "109725239"
+    },
+    {
+      "amountSpecified": "107912173",
+      "exactInput": false,
+      "expectedAmountCalculated": "108940539"
+    },
+    {
+      "amountSpecified": "110146452",
+      "exactInput": false,
+      "expectedAmountCalculated": "111215728"
+    },
+    {
+      "amountSpecified": "1757689",
+      "exactInput": false,
+      "expectedAmountCalculated": "1759710"
+    },
+    {
+      "amountSpecified": "98087864",
+      "exactInput": false,
+      "expectedAmountCalculated": "98945866"
+    },
+    {
+      "amountSpecified": "14331668",
+      "exactInput": false,
+      "expectedAmountCalculated": "14362250"
+    },
+    {
+      "amountSpecified": "57366098",
+      "exactInput": false,
+      "expectedAmountCalculated": "57682724"
+    },
+    {
+      "amountSpecified": "130233218",
+      "exactInput": false,
+      "expectedAmountCalculated": "131706425"
+    },
+    {
+      "amountSpecified": "27446188",
+      "exactInput": false,
+      "expectedAmountCalculated": "27533005"
+    },
+    {
+      "amountSpecified": "4857562",
+      "exactInput": false,
+      "expectedAmountCalculated": "4864323"
+    },
+    {
+      "amountSpecified": "142007864",
+      "exactInput": false,
+      "expectedAmountCalculated": "143748167"
+    },
+    {
+      "amountSpecified": "69569146",
+      "exactInput": false,
+      "expectedAmountCalculated": "70020230"
+    },
+    {
+      "amountSpecified": "41750911",
+      "exactInput": false,
+      "expectedAmountCalculated": "41929951"
+    },
+    {
+      "amountSpecified": "47192513",
+      "exactInput": false,
+      "expectedAmountCalculated": "47415119"
+    },
+    {
+      "amountSpecified": "161613167",
+      "exactInput": false,
+      "expectedAmountCalculated": "163848117"
+    },
+    {
+      "amountSpecified": "87218563",
+      "exactInput": false,
+      "expectedAmountCalculated": "87906130"
+    },
+    {
+      "amountSpecified": "94980472",
+      "exactInput": false,
+      "expectedAmountCalculated": "95787816"
+    },
+    {
+      "amountSpecified": "103328488",
+      "exactInput": false,
+      "expectedAmountCalculated": "104275438"
+    },
+    {
+      "amountSpecified": "107113104",
+      "exactInput": false,
+      "expectedAmountCalculated": "108127033"
+    },
+    {
+      "amountSpecified": "140475587",
+      "exactInput": false,
+      "expectedAmountCalculated": "142179860"
+    },
+    {
+      "amountSpecified": "193229332",
+      "exactInput": false,
+      "expectedAmountCalculated": "196633953"
+    },
+    {
+      "amountSpecified": "90865814",
+      "exactInput": false,
+      "expectedAmountCalculated": "91608460"
+    },
+    {
+      "amountSpecified": "123649388",
+      "exactInput": false,
+      "expectedAmountCalculated": "124983025"
+    },
+    {
+      "amountSpecified": "106250309",
+      "exactInput": false,
+      "expectedAmountCalculated": "107248766"
+    },
+    {
+      "amountSpecified": "136353823",
+      "exactInput": false,
+      "expectedAmountCalculated": "137963067"
+    },
+    {
+      "amountSpecified": "156440393",
+      "exactInput": false,
+      "expectedAmountCalculated": "158538762"
+    },
+    {
+      "amountSpecified": "25350888",
+      "exactInput": false,
+      "expectedAmountCalculated": "25426905"
+    },
+    {
+      "amountSpecified": "120625110",
+      "exactInput": false,
+      "expectedAmountCalculated": "121896983"
+    },
+    {
+      "amountSpecified": "70945592",
+      "exactInput": false,
+      "expectedAmountCalculated": "71413331"
+    },
+    {
+      "amountSpecified": "62088093",
+      "exactInput": false,
+      "expectedAmountCalculated": "62453936"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0xbb256c2F1B677e27118b0345FD2b3894D2E6D487.json b/src/__tests__/stubs/swap/0xbb256c2F1B677e27118b0345FD2b3894D2E6D487.json
new file mode 100644
index 00000000..5571d19c
--- /dev/null
+++ b/src/__tests__/stubs/swap/0xbb256c2F1B677e27118b0345FD2b3894D2E6D487.json
@@ -0,0 +1,556 @@
+{
+  "poolName": "USDC - USDT 10000",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
+    "decimals": 6
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
+    "decimals": 6
+  },
+  "fee": 10000,
+  "liquidity": "12738018149",
+  "sqrtRatioX96": "78870880896987367462649497935",
+  "tickCurrent": -91,
+  "ticks": [
+    {
+      "index": -5200,
+      "liquidityNet": "194728455",
+      "liquidityGross": "194728455"
+    },
+    {
+      "index": -200,
+      "liquidityNet": "12543289694",
+      "liquidityGross": "12543289694"
+    },
+    {
+      "index": 0,
+      "liquidityNet": "-30314066",
+      "liquidityGross": "30314066"
+    },
+    {
+      "index": 200,
+      "liquidityNet": "-12411459746",
+      "liquidityGross": "12614491510"
+    },
+    {
+      "index": 400,
+      "liquidityNet": "206092367",
+      "liquidityGross": "409124131"
+    },
+    {
+      "index": 600,
+      "liquidityNet": "-307608249",
+      "liquidityGross": "307608249"
+    },
+    {
+      "index": 1000,
+      "liquidityNet": "-194728455",
+      "liquidityGross": "194728455"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "133685032",
+      "exactInput": true,
+      "expectedAmountCalculated": "111939978"
+    },
+    {
+      "amountSpecified": "43845718",
+      "exactInput": true,
+      "expectedAmountCalculated": "42871217"
+    },
+    {
+      "amountSpecified": "19294480",
+      "exactInput": true,
+      "expectedAmountCalculated": "18901429"
+    },
+    {
+      "amountSpecified": "89631940",
+      "exactInput": true,
+      "expectedAmountCalculated": "85810312"
+    },
+    {
+      "amountSpecified": "72080697",
+      "exactInput": true,
+      "expectedAmountCalculated": "70320166"
+    },
+    {
+      "amountSpecified": "21272598",
+      "exactInput": true,
+      "expectedAmountCalculated": "20836067"
+    },
+    {
+      "amountSpecified": "109093795",
+      "exactInput": true,
+      "expectedAmountCalculated": "100301323"
+    },
+    {
+      "amountSpecified": "134151759",
+      "exactInput": true,
+      "expectedAmountCalculated": "111939978"
+    },
+    {
+      "amountSpecified": "148780347",
+      "exactInput": true,
+      "expectedAmountCalculated": "111939978"
+    },
+    {
+      "amountSpecified": "38697951",
+      "exactInput": true,
+      "expectedAmountCalculated": "37852888"
+    },
+    {
+      "amountSpecified": "31068996",
+      "exactInput": true,
+      "expectedAmountCalculated": "30408424"
+    },
+    {
+      "amountSpecified": "71197182",
+      "exactInput": true,
+      "expectedAmountCalculated": "69468115"
+    },
+    {
+      "amountSpecified": "78105273",
+      "exactInput": true,
+      "expectedAmountCalculated": "75935124"
+    },
+    {
+      "amountSpecified": "136049396",
+      "exactInput": true,
+      "expectedAmountCalculated": "111939978"
+    },
+    {
+      "amountSpecified": "98191803",
+      "exactInput": true,
+      "expectedAmountCalculated": "92491526"
+    },
+    {
+      "amountSpecified": "160064188",
+      "exactInput": true,
+      "expectedAmountCalculated": "111939978"
+    },
+    {
+      "amountSpecified": "125107601",
+      "exactInput": true,
+      "expectedAmountCalculated": "110551443"
+    },
+    {
+      "amountSpecified": "76499978",
+      "exactInput": true,
+      "expectedAmountCalculated": "74471362"
+    },
+    {
+      "amountSpecified": "88309011",
+      "exactInput": true,
+      "expectedAmountCalculated": "84730476"
+    },
+    {
+      "amountSpecified": "145560265",
+      "exactInput": true,
+      "expectedAmountCalculated": "111939978"
+    },
+    {
+      "amountSpecified": "2537088",
+      "exactInput": true,
+      "expectedAmountCalculated": "2488626"
+    },
+    {
+      "amountSpecified": "114162709",
+      "exactInput": true,
+      "expectedAmountCalculated": "103692686"
+    },
+    {
+      "amountSpecified": "126152473",
+      "exactInput": true,
+      "expectedAmountCalculated": "111175294"
+    },
+    {
+      "amountSpecified": "106898529",
+      "exactInput": true,
+      "expectedAmountCalculated": "98787090"
+    },
+    {
+      "amountSpecified": "58972930",
+      "exactInput": true,
+      "expectedAmountCalculated": "57595036"
+    },
+    {
+      "amountSpecified": "131007040",
+      "exactInput": true,
+      "expectedAmountCalculated": "111939978"
+    },
+    {
+      "amountSpecified": "51234027",
+      "exactInput": true,
+      "expectedAmountCalculated": "50066793"
+    },
+    {
+      "amountSpecified": "114012452",
+      "exactInput": true,
+      "expectedAmountCalculated": "103594203"
+    },
+    {
+      "amountSpecified": "110646811",
+      "exactInput": true,
+      "expectedAmountCalculated": "101355701"
+    },
+    {
+      "amountSpecified": "55727560",
+      "exactInput": true,
+      "expectedAmountCalculated": "54439101"
+    },
+    {
+      "amountSpecified": "85205591",
+      "exactInput": true,
+      "expectedAmountCalculated": "82144643"
+    },
+    {
+      "amountSpecified": "133038897",
+      "exactInput": true,
+      "expectedAmountCalculated": "111939978"
+    },
+    {
+      "amountSpecified": "157529507",
+      "exactInput": true,
+      "expectedAmountCalculated": "111939978"
+    },
+    {
+      "amountSpecified": "105320364",
+      "exactInput": true,
+      "expectedAmountCalculated": "97680884"
+    },
+    {
+      "amountSpecified": "12218858",
+      "exactInput": true,
+      "expectedAmountCalculated": "11976492"
+    },
+    {
+      "amountSpecified": "114001329",
+      "exactInput": true,
+      "expectedAmountCalculated": "103586907"
+    },
+    {
+      "amountSpecified": "80731298",
+      "exactInput": true,
+      "expectedAmountCalculated": "78281001"
+    },
+    {
+      "amountSpecified": "30257639",
+      "exactInput": true,
+      "expectedAmountCalculated": "29616172"
+    },
+    {
+      "amountSpecified": "54941096",
+      "exactInput": true,
+      "expectedAmountCalculated": "53674073"
+    },
+    {
+      "amountSpecified": "116168722",
+      "exactInput": true,
+      "expectedAmountCalculated": "104995867"
+    },
+    {
+      "amountSpecified": "5642711",
+      "exactInput": true,
+      "expectedAmountCalculated": "5533597"
+    },
+    {
+      "amountSpecified": "107317902",
+      "exactInput": true,
+      "expectedAmountCalculated": "99078548"
+    },
+    {
+      "amountSpecified": "53867969",
+      "exactInput": true,
+      "expectedAmountCalculated": "52630045"
+    },
+    {
+      "amountSpecified": "161741424",
+      "exactInput": true,
+      "expectedAmountCalculated": "111939978"
+    },
+    {
+      "amountSpecified": "12963973",
+      "exactInput": true,
+      "expectedAmountCalculated": "12706095"
+    },
+    {
+      "amountSpecified": "42777404",
+      "exactInput": true,
+      "expectedAmountCalculated": "41830092"
+    },
+    {
+      "amountSpecified": "63163746",
+      "exactInput": true,
+      "expectedAmountCalculated": "61668030"
+    },
+    {
+      "amountSpecified": "155923578",
+      "exactInput": true,
+      "expectedAmountCalculated": "111939978"
+    },
+    {
+      "amountSpecified": "188074041",
+      "exactInput": true,
+      "expectedAmountCalculated": "111939978"
+    },
+    {
+      "amountSpecified": "160302428",
+      "exactInput": true,
+      "expectedAmountCalculated": "111939978"
+    },
+    {
+      "amountSpecified": "21288842",
+      "exactInput": false,
+      "expectedAmountCalculated": "21735637"
+    },
+    {
+      "amountSpecified": "82282163",
+      "exactInput": false,
+      "expectedAmountCalculated": "85368390"
+    },
+    {
+      "amountSpecified": "82868967",
+      "exactInput": false,
+      "expectedAmountCalculated": "86065869"
+    },
+    {
+      "amountSpecified": "111019108",
+      "exactInput": false,
+      "expectedAmountCalculated": "125890071"
+    },
+    {
+      "amountSpecified": "24690164",
+      "exactInput": false,
+      "expectedAmountCalculated": "25215119"
+    },
+    {
+      "amountSpecified": "110200899",
+      "exactInput": false,
+      "expectedAmountCalculated": "124524249"
+    },
+    {
+      "amountSpecified": "83319458",
+      "exactInput": false,
+      "expectedAmountCalculated": "86604432"
+    },
+    {
+      "amountSpecified": "107953776",
+      "exactInput": false,
+      "expectedAmountCalculated": "120847765"
+    },
+    {
+      "amountSpecified": "104550521",
+      "exactInput": false,
+      "expectedAmountCalculated": "115479458"
+    },
+    {
+      "amountSpecified": "89611045",
+      "exactInput": false,
+      "expectedAmountCalculated": "94420055"
+    },
+    {
+      "amountSpecified": "3841005",
+      "exactInput": false,
+      "expectedAmountCalculated": "3916221"
+    },
+    {
+      "amountSpecified": "103416875",
+      "exactInput": false,
+      "expectedAmountCalculated": "113742372"
+    },
+    {
+      "amountSpecified": "29926345",
+      "exactInput": false,
+      "expectedAmountCalculated": "30575279"
+    },
+    {
+      "amountSpecified": "8142030",
+      "exactInput": false,
+      "expectedAmountCalculated": "8304285"
+    },
+    {
+      "amountSpecified": "80676727",
+      "exactInput": false,
+      "expectedAmountCalculated": "83483220"
+    },
+    {
+      "amountSpecified": "66777928",
+      "exactInput": false,
+      "expectedAmountCalculated": "68425289"
+    },
+    {
+      "amountSpecified": "36477314",
+      "exactInput": false,
+      "expectedAmountCalculated": "37287611"
+    },
+    {
+      "amountSpecified": "43012683",
+      "exactInput": false,
+      "expectedAmountCalculated": "43990892"
+    },
+    {
+      "amountSpecified": "49038088",
+      "exactInput": false,
+      "expectedAmountCalculated": "50177253"
+    },
+    {
+      "amountSpecified": "86603800",
+      "exactInput": false,
+      "expectedAmountCalculated": "90614436"
+    },
+    {
+      "amountSpecified": "76212765",
+      "exactInput": false,
+      "expectedAmountCalculated": "78412611"
+    },
+    {
+      "amountSpecified": "88959382",
+      "exactInput": false,
+      "expectedAmountCalculated": "93584165"
+    },
+    {
+      "amountSpecified": "96816782",
+      "exactInput": false,
+      "expectedAmountCalculated": "104102292"
+    },
+    {
+      "amountSpecified": "68814961",
+      "exactInput": false,
+      "expectedAmountCalculated": "70523963"
+    },
+    {
+      "amountSpecified": "79628503",
+      "exactInput": false,
+      "expectedAmountCalculated": "82270254"
+    },
+    {
+      "amountSpecified": "77945688",
+      "exactInput": false,
+      "expectedAmountCalculated": "80351843"
+    },
+    {
+      "amountSpecified": "25609662",
+      "exactInput": false,
+      "expectedAmountCalculated": "26156067"
+    },
+    {
+      "amountSpecified": "96273254",
+      "exactInput": false,
+      "expectedAmountCalculated": "103342617"
+    },
+    {
+      "amountSpecified": "74318306",
+      "exactInput": false,
+      "expectedAmountCalculated": "76333568"
+    },
+    {
+      "amountSpecified": "62219728",
+      "exactInput": false,
+      "expectedAmountCalculated": "63731612"
+    },
+    {
+      "amountSpecified": "42406696",
+      "exactInput": false,
+      "expectedAmountCalculated": "43369044"
+    },
+    {
+      "amountSpecified": "42356863",
+      "exactInput": false,
+      "expectedAmountCalculated": "43317910"
+    },
+    {
+      "amountSpecified": "100061510",
+      "exactInput": false,
+      "expectedAmountCalculated": "108743390"
+    },
+    {
+      "amountSpecified": "24299748",
+      "exactInput": false,
+      "expectedAmountCalculated": "24815636"
+    },
+    {
+      "amountSpecified": "47620387",
+      "exactInput": false,
+      "expectedAmountCalculated": "48721150"
+    },
+    {
+      "amountSpecified": "59234930",
+      "exactInput": false,
+      "expectedAmountCalculated": "60659937"
+    },
+    {
+      "amountSpecified": "110600886",
+      "exactInput": false,
+      "expectedAmountCalculated": "125190097"
+    },
+    {
+      "amountSpecified": "72280352",
+      "exactInput": false,
+      "expectedAmountCalculated": "74143384"
+    },
+    {
+      "amountSpecified": "26766896",
+      "exactInput": false,
+      "expectedAmountCalculated": "27340491"
+    },
+    {
+      "amountSpecified": "54608170",
+      "exactInput": false,
+      "expectedAmountCalculated": "55901379"
+    },
+    {
+      "amountSpecified": "45524804",
+      "exactInput": false,
+      "expectedAmountCalculated": "46569402"
+    },
+    {
+      "amountSpecified": "85342843",
+      "exactInput": false,
+      "expectedAmountCalculated": "89057250"
+    },
+    {
+      "amountSpecified": "64924578",
+      "exactInput": false,
+      "expectedAmountCalculated": "66516445"
+    },
+    {
+      "amountSpecified": "100174873",
+      "exactInput": false,
+      "expectedAmountCalculated": "108908901"
+    },
+    {
+      "amountSpecified": "38668830",
+      "exactInput": false,
+      "expectedAmountCalculated": "39534661"
+    },
+    {
+      "amountSpecified": "24756037",
+      "exactInput": false,
+      "expectedAmountCalculated": "25282524"
+    },
+    {
+      "amountSpecified": "101744523",
+      "exactInput": false,
+      "expectedAmountCalculated": "111224670"
+    },
+    {
+      "amountSpecified": "88534570",
+      "exactInput": false,
+      "expectedAmountCalculated": "93042638"
+    },
+    {
+      "amountSpecified": "33675099",
+      "exactInput": false,
+      "expectedAmountCalculated": "34415521"
+    },
+    {
+      "amountSpecified": "56608223",
+      "exactInput": false,
+      "expectedAmountCalculated": "57957977"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0xe6ff8b9A37B0fab776134636D9981Aa778c4e718-reversed.json b/src/__tests__/stubs/swap/0xe6ff8b9A37B0fab776134636D9981Aa778c4e718-reversed.json
new file mode 100644
index 00000000..7c9670da
--- /dev/null
+++ b/src/__tests__/stubs/swap/0xe6ff8b9A37B0fab776134636D9981Aa778c4e718-reversed.json
@@ -0,0 +1,551 @@
+{
+  "poolName": "WBTC - WETH 100 - reversed",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
+    "decimals": 8
+  },
+  "fee": 100,
+  "liquidity": "13195665270215",
+  "sqrtRatioX96": "31534158556296275043776311491008340",
+  "tickCurrent": 257897,
+  "ticks": [
+    {
+      "index": 230270,
+      "liquidityNet": "897319015269",
+      "liquidityGross": "897319015269"
+    },
+    {
+      "index": 255309,
+      "liquidityNet": "12298346254946",
+      "liquidityGross": "12298346254946"
+    },
+    {
+      "index": 257555,
+      "liquidityNet": "433353236042807",
+      "liquidityGross": "433353236042807"
+    },
+    {
+      "index": 257736,
+      "liquidityNet": "-433353236042807",
+      "liquidityGross": "433353236042807"
+    },
+    {
+      "index": 258948,
+      "liquidityNet": "-12298346254946",
+      "liquidityGross": "12298346254946"
+    },
+    {
+      "index": 368432,
+      "liquidityNet": "-897319015269",
+      "liquidityGross": "897319015269"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "961445669689887360",
+      "exactInput": true,
+      "expectedAmountCalculated": "3071387"
+    },
+    {
+      "amountSpecified": "1234894458005292720",
+      "exactInput": true,
+      "expectedAmountCalculated": "3228562"
+    },
+    {
+      "amountSpecified": "2288965721183783280",
+      "exactInput": true,
+      "expectedAmountCalculated": "3496803"
+    },
+    {
+      "amountSpecified": "314599324150035456",
+      "exactInput": true,
+      "expectedAmountCalculated": "1860698"
+    },
+    {
+      "amountSpecified": "94757902330853304",
+      "exactInput": true,
+      "expectedAmountCalculated": "587494"
+    },
+    {
+      "amountSpecified": "1862208345402365280",
+      "exactInput": true,
+      "expectedAmountCalculated": "3423042"
+    },
+    {
+      "amountSpecified": "1219548599430502800",
+      "exactInput": true,
+      "expectedAmountCalculated": "3221476"
+    },
+    {
+      "amountSpecified": "1151211045482578800",
+      "exactInput": true,
+      "expectedAmountCalculated": "3187797"
+    },
+    {
+      "amountSpecified": "1494291802935976080",
+      "exactInput": true,
+      "expectedAmountCalculated": "3327619"
+    },
+    {
+      "amountSpecified": "480366851285439888",
+      "exactInput": true,
+      "expectedAmountCalculated": "2431157"
+    },
+    {
+      "amountSpecified": "2181143265583553760",
+      "exactInput": true,
+      "expectedAmountCalculated": "3480780"
+    },
+    {
+      "amountSpecified": "2099882989078460640",
+      "exactInput": true,
+      "expectedAmountCalculated": "3467664"
+    },
+    {
+      "amountSpecified": "1755249420136046968",
+      "exactInput": true,
+      "expectedAmountCalculated": "3399217"
+    },
+    {
+      "amountSpecified": "1545988585475380320",
+      "exactInput": true,
+      "expectedAmountCalculated": "3343613"
+    },
+    {
+      "amountSpecified": "1854149682330866880",
+      "exactInput": true,
+      "expectedAmountCalculated": "3421339"
+    },
+    {
+      "amountSpecified": "2091905806229577360",
+      "exactInput": true,
+      "expectedAmountCalculated": "3466324"
+    },
+    {
+      "amountSpecified": "1055363392600611600",
+      "exactInput": true,
+      "expectedAmountCalculated": "3133808"
+    },
+    {
+      "amountSpecified": "235777677507968520",
+      "exactInput": true,
+      "expectedAmountCalculated": "1424249"
+    },
+    {
+      "amountSpecified": "1365415182783406560",
+      "exactInput": true,
+      "expectedAmountCalculated": "3282809"
+    },
+    {
+      "amountSpecified": "1836328779303912326",
+      "exactInput": true,
+      "expectedAmountCalculated": "3417520"
+    },
+    {
+      "amountSpecified": "1102360769544152496",
+      "exactInput": true,
+      "expectedAmountCalculated": "3161362"
+    },
+    {
+      "amountSpecified": "1479212661272889191",
+      "exactInput": true,
+      "expectedAmountCalculated": "3322755"
+    },
+    {
+      "amountSpecified": "560121295688826480",
+      "exactInput": true,
+      "expectedAmountCalculated": "2602488"
+    },
+    {
+      "amountSpecified": "1080929613509576160",
+      "exactInput": true,
+      "expectedAmountCalculated": "3149071"
+    },
+    {
+      "amountSpecified": "873588777182719440",
+      "exactInput": true,
+      "expectedAmountCalculated": "3002018"
+    },
+    {
+      "amountSpecified": "2079633794382571920",
+      "exactInput": true,
+      "expectedAmountCalculated": "3464243"
+    },
+    {
+      "amountSpecified": "1780075618403861280",
+      "exactInput": true,
+      "expectedAmountCalculated": "3404990"
+    },
+    {
+      "amountSpecified": "1282241795347665120",
+      "exactInput": true,
+      "expectedAmountCalculated": "3249431"
+    },
+    {
+      "amountSpecified": "295266484909916112",
+      "exactInput": true,
+      "expectedAmountCalculated": "1762473"
+    },
+    {
+      "amountSpecified": "332867919165230208",
+      "exactInput": true,
+      "expectedAmountCalculated": "1945326"
+    },
+    {
+      "amountSpecified": "2158076291890894793",
+      "exactInput": true,
+      "expectedAmountCalculated": "3477154"
+    },
+    {
+      "amountSpecified": "140697894645753144",
+      "exactInput": true,
+      "expectedAmountCalculated": "864889"
+    },
+    {
+      "amountSpecified": "2089413701386792320",
+      "exactInput": true,
+      "expectedAmountCalculated": "3465903"
+    },
+    {
+      "amountSpecified": "1027609272597720960",
+      "exactInput": true,
+      "expectedAmountCalculated": "3116451"
+    },
+    {
+      "amountSpecified": "755646197323450320",
+      "exactInput": true,
+      "expectedAmountCalculated": "2886317"
+    },
+    {
+      "amountSpecified": "965305812595464552",
+      "exactInput": true,
+      "expectedAmountCalculated": "3074171"
+    },
+    {
+      "amountSpecified": "1216008487170754320",
+      "exactInput": true,
+      "expectedAmountCalculated": "3219817"
+    },
+    {
+      "amountSpecified": "119892771999217339",
+      "exactInput": true,
+      "expectedAmountCalculated": "739851"
+    },
+    {
+      "amountSpecified": "1018585362089329752",
+      "exactInput": true,
+      "expectedAmountCalculated": "3110620"
+    },
+    {
+      "amountSpecified": "1059791298314418552",
+      "exactInput": true,
+      "expectedAmountCalculated": "3136500"
+    },
+    {
+      "amountSpecified": "2290349840236018080",
+      "exactInput": true,
+      "expectedAmountCalculated": "3496999"
+    },
+    {
+      "amountSpecified": "1659424554124080960",
+      "exactInput": true,
+      "expectedAmountCalculated": "3375402"
+    },
+    {
+      "amountSpecified": "1649357390369645040",
+      "exactInput": true,
+      "expectedAmountCalculated": "3372748"
+    },
+    {
+      "amountSpecified": "1414301643006841680",
+      "exactInput": true,
+      "expectedAmountCalculated": "3300709"
+    },
+    {
+      "amountSpecified": "220668177382392384",
+      "exactInput": true,
+      "expectedAmountCalculated": "1336658"
+    },
+    {
+      "amountSpecified": "1835260751731153200",
+      "exactInput": true,
+      "expectedAmountCalculated": "3417289"
+    },
+    {
+      "amountSpecified": "283204018876267752",
+      "exactInput": true,
+      "expectedAmountCalculated": "1696077"
+    },
+    {
+      "amountSpecified": "526037377775653440",
+      "exactInput": true,
+      "expectedAmountCalculated": "2534667"
+    },
+    {
+      "amountSpecified": "1689828134328794379",
+      "exactInput": true,
+      "expectedAmountCalculated": "3383235"
+    },
+    {
+      "amountSpecified": "2160556820574545520",
+      "exactInput": true,
+      "expectedAmountCalculated": "3477547"
+    },
+    {
+      "amountSpecified": "1276197",
+      "exactInput": false,
+      "expectedAmountCalculated": "210287063441240784"
+    },
+    {
+      "amountSpecified": "1050839",
+      "exactInput": false,
+      "expectedAmountCalculated": "171937791302687153"
+    },
+    {
+      "amountSpecified": "1061451",
+      "exactInput": false,
+      "expectedAmountCalculated": "173731551052557635"
+    },
+    {
+      "amountSpecified": "2062600",
+      "exactInput": false,
+      "expectedAmountCalculated": "361067825809948541"
+    },
+    {
+      "amountSpecified": "2705935",
+      "exactInput": false,
+      "expectedAmountCalculated": "619996628627610603"
+    },
+    {
+      "amountSpecified": "397294",
+      "exactInput": false,
+      "expectedAmountCalculated": "63708085356843666"
+    },
+    {
+      "amountSpecified": "68800",
+      "exactInput": false,
+      "expectedAmountCalculated": "10922885426852751"
+    },
+    {
+      "amountSpecified": "1244142",
+      "exactInput": false,
+      "expectedAmountCalculated": "204799220532142698"
+    },
+    {
+      "amountSpecified": "3513187",
+      "exactInput": false,
+      "expectedAmountCalculated": "2410329972102817185"
+    },
+    {
+      "amountSpecified": "2523013",
+      "exactInput": false,
+      "expectedAmountCalculated": "520534868982463086"
+    },
+    {
+      "amountSpecified": "1360691",
+      "exactInput": false,
+      "expectedAmountCalculated": "224805535893930750"
+    },
+    {
+      "amountSpecified": "3355468",
+      "exactInput": false,
+      "expectedAmountCalculated": "1586534068113598233"
+    },
+    {
+      "amountSpecified": "2954265",
+      "exactInput": false,
+      "expectedAmountCalculated": "821152849807758085"
+    },
+    {
+      "amountSpecified": "892795",
+      "exactInput": false,
+      "expectedAmountCalculated": "145363074793753467"
+    },
+    {
+      "amountSpecified": "1431314",
+      "exactInput": false,
+      "expectedAmountCalculated": "236999914610842935"
+    },
+    {
+      "amountSpecified": "2207056",
+      "exactInput": false,
+      "expectedAmountCalculated": "401389465607909985"
+    },
+    {
+      "amountSpecified": "3610960",
+      "exactInput": false,
+      "expectedAmountCalculated": "3503984205988547882"
+    },
+    {
+      "amountSpecified": "2330829",
+      "exactInput": false,
+      "expectedAmountCalculated": "442099538629336186"
+    },
+    {
+      "amountSpecified": "1349759",
+      "exactInput": false,
+      "expectedAmountCalculated": "222922762556723031"
+    },
+    {
+      "amountSpecified": "328018",
+      "exactInput": false,
+      "expectedAmountCalculated": "52488324052634586"
+    },
+    {
+      "amountSpecified": "2821883",
+      "exactInput": false,
+      "expectedAmountCalculated": "701643892243050572"
+    },
+    {
+      "amountSpecified": "1520707",
+      "exactInput": false,
+      "expectedAmountCalculated": "252513508498741920"
+    },
+    {
+      "amountSpecified": "658431",
+      "exactInput": false,
+      "expectedAmountCalculated": "106431196448929673"
+    },
+    {
+      "amountSpecified": "3829447",
+      "exactInput": false,
+      "expectedAmountCalculated": "89647423590577603059"
+    },
+    {
+      "amountSpecified": "2992716",
+      "exactInput": false,
+      "expectedAmountCalculated": "862907746466689009"
+    },
+    {
+      "amountSpecified": "637590",
+      "exactInput": false,
+      "expectedAmountCalculated": "102996323382980193"
+    },
+    {
+      "amountSpecified": "1227299",
+      "exactInput": false,
+      "expectedAmountCalculated": "201920101198575702"
+    },
+    {
+      "amountSpecified": "1270074",
+      "exactInput": false,
+      "expectedAmountCalculated": "209237948109807481"
+    },
+    {
+      "amountSpecified": "3082831",
+      "exactInput": false,
+      "expectedAmountCalculated": "977496387528137766"
+    },
+    {
+      "amountSpecified": "3377901",
+      "exactInput": false,
+      "expectedAmountCalculated": "1669009397591838452"
+    },
+    {
+      "amountSpecified": "670917",
+      "exactInput": false,
+      "expectedAmountCalculated": "108491189104389430"
+    },
+    {
+      "amountSpecified": "3322656",
+      "exactInput": false,
+      "expectedAmountCalculated": "1478906481698806686"
+    },
+    {
+      "amountSpecified": "3577777",
+      "exactInput": false,
+      "expectedAmountCalculated": "3039524086635185347"
+    },
+    {
+      "amountSpecified": "589710",
+      "exactInput": false,
+      "expectedAmountCalculated": "95121718000754874"
+    },
+    {
+      "amountSpecified": "2170983",
+      "exactInput": false,
+      "expectedAmountCalculated": "390664688110622091"
+    },
+    {
+      "amountSpecified": "2344755",
+      "exactInput": false,
+      "expectedAmountCalculated": "447103052101740345"
+    },
+    {
+      "amountSpecified": "1821400",
+      "exactInput": false,
+      "expectedAmountCalculated": "306638137762308595"
+    },
+    {
+      "amountSpecified": "3129077",
+      "exactInput": false,
+      "expectedAmountCalculated": "1047663322225296084"
+    },
+    {
+      "amountSpecified": "322989",
+      "exactInput": false,
+      "expectedAmountCalculated": "51675683667313553"
+    },
+    {
+      "amountSpecified": "680527",
+      "exactInput": false,
+      "expectedAmountCalculated": "110077748363511637"
+    },
+    {
+      "amountSpecified": "1607170",
+      "exactInput": false,
+      "expectedAmountCalculated": "267602126498996001"
+    },
+    {
+      "amountSpecified": "3832923",
+      "exactInput": false,
+      "expectedAmountCalculated": "89647423590577603059"
+    },
+    {
+      "amountSpecified": "1835418",
+      "exactInput": false,
+      "expectedAmountCalculated": "309441991190037526"
+    },
+    {
+      "amountSpecified": "3774816",
+      "exactInput": false,
+      "expectedAmountCalculated": "13340530131494529596"
+    },
+    {
+      "amountSpecified": "2603117",
+      "exactInput": false,
+      "expectedAmountCalculated": "560454904803797106"
+    },
+    {
+      "amountSpecified": "937831",
+      "exactInput": false,
+      "expectedAmountCalculated": "152909205389958502"
+    },
+    {
+      "amountSpecified": "1674170",
+      "exactInput": false,
+      "expectedAmountCalculated": "279351265019220637"
+    },
+    {
+      "amountSpecified": "2735559",
+      "exactInput": false,
+      "expectedAmountCalculated": "639218884962053440"
+    },
+    {
+      "amountSpecified": "1422739",
+      "exactInput": false,
+      "expectedAmountCalculated": "235516385550881735"
+    },
+    {
+      "amountSpecified": "1652079",
+      "exactInput": false,
+      "expectedAmountCalculated": "275471858476324454"
+    }
+  ]
+}
diff --git a/src/__tests__/stubs/swap/0xe6ff8b9A37B0fab776134636D9981Aa778c4e718.json b/src/__tests__/stubs/swap/0xe6ff8b9A37B0fab776134636D9981Aa778c4e718.json
new file mode 100644
index 00000000..620a03e4
--- /dev/null
+++ b/src/__tests__/stubs/swap/0xe6ff8b9A37B0fab776134636D9981Aa778c4e718.json
@@ -0,0 +1,551 @@
+{
+  "poolName": "WBTC - WETH 100",
+  "tokenA": {
+    "chainId": 1,
+    "address": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
+    "decimals": 8
+  },
+  "tokenB": {
+    "chainId": 1,
+    "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
+    "decimals": 18
+  },
+  "fee": 100,
+  "liquidity": "13195665270215",
+  "sqrtRatioX96": "31534158556296275043776311491008340",
+  "tickCurrent": 257897,
+  "ticks": [
+    {
+      "index": 230270,
+      "liquidityNet": "897319015269",
+      "liquidityGross": "897319015269"
+    },
+    {
+      "index": 255309,
+      "liquidityNet": "12298346254946",
+      "liquidityGross": "12298346254946"
+    },
+    {
+      "index": 257555,
+      "liquidityNet": "433353236042807",
+      "liquidityGross": "433353236042807"
+    },
+    {
+      "index": 257736,
+      "liquidityNet": "-433353236042807",
+      "liquidityGross": "433353236042807"
+    },
+    {
+      "index": 258948,
+      "liquidityNet": "-12298346254946",
+      "liquidityGross": "12298346254946"
+    },
+    {
+      "index": 368432,
+      "liquidityNet": "-897319015269",
+      "liquidityGross": "897319015269"
+    }
+  ],
+  "tests": [
+    {
+      "amountSpecified": "1437917",
+      "exactInput": true,
+      "expectedAmountCalculated": "224264076255483458"
+    },
+    {
+      "amountSpecified": "1372425",
+      "exactInput": true,
+      "expectedAmountCalculated": "214077002192745022"
+    },
+    {
+      "amountSpecified": "451268",
+      "exactInput": true,
+      "expectedAmountCalculated": "70670163129209739"
+    },
+    {
+      "amountSpecified": "1260163",
+      "exactInput": true,
+      "expectedAmountCalculated": "196612371769612279"
+    },
+    {
+      "amountSpecified": "300261",
+      "exactInput": true,
+      "expectedAmountCalculated": "47138915343507209"
+    },
+    {
+      "amountSpecified": "2026888",
+      "exactInput": true,
+      "expectedAmountCalculated": "315822951568638302"
+    },
+    {
+      "amountSpecified": "126853",
+      "exactInput": true,
+      "expectedAmountCalculated": "20017101422245492"
+    },
+    {
+      "amountSpecified": "478553",
+      "exactInput": true,
+      "expectedAmountCalculated": "74921394057706270"
+    },
+    {
+      "amountSpecified": "1155241",
+      "exactInput": true,
+      "expectedAmountCalculated": "180286607584933103"
+    },
+    {
+      "amountSpecified": "513026",
+      "exactInput": true,
+      "expectedAmountCalculated": "80292052716819688"
+    },
+    {
+      "amountSpecified": "3060065",
+      "exactInput": true,
+      "expectedAmountCalculated": "476206325258313132"
+    },
+    {
+      "amountSpecified": "2293947",
+      "exactInput": true,
+      "expectedAmountCalculated": "357307384418495654"
+    },
+    {
+      "amountSpecified": "1999274",
+      "exactInput": true,
+      "expectedAmountCalculated": "311532362398154938"
+    },
+    {
+      "amountSpecified": "3282819",
+      "exactInput": true,
+      "expectedAmountCalculated": "510746916621015898"
+    },
+    {
+      "amountSpecified": "1325441",
+      "exactInput": true,
+      "expectedAmountCalculated": "206768171374468364"
+    },
+    {
+      "amountSpecified": "2612031",
+      "exactInput": true,
+      "expectedAmountCalculated": "406692460695549230"
+    },
+    {
+      "amountSpecified": "2504887",
+      "exactInput": true,
+      "expectedAmountCalculated": "390060631001024365"
+    },
+    {
+      "amountSpecified": "2858478",
+      "exactInput": true,
+      "expectedAmountCalculated": "444936392573227280"
+    },
+    {
+      "amountSpecified": "508301",
+      "exactInput": true,
+      "expectedAmountCalculated": "79556019631234487"
+    },
+    {
+      "amountSpecified": "3448892",
+      "exactInput": true,
+      "expectedAmountCalculated": "536489696772672774"
+    },
+    {
+      "amountSpecified": "3012439",
+      "exactInput": true,
+      "expectedAmountCalculated": "468819646573026358"
+    },
+    {
+      "amountSpecified": "2579222",
+      "exactInput": true,
+      "expectedAmountCalculated": "401599992537409594"
+    },
+    {
+      "amountSpecified": "292873",
+      "exactInput": true,
+      "expectedAmountCalculated": "45987532043050983"
+    },
+    {
+      "amountSpecified": "1990252",
+      "exactInput": true,
+      "expectedAmountCalculated": "310130350615254606"
+    },
+    {
+      "amountSpecified": "612813",
+      "exactInput": true,
+      "expectedAmountCalculated": "95836589125498985"
+    },
+    {
+      "amountSpecified": "1249135",
+      "exactInput": true,
+      "expectedAmountCalculated": "194896698990229600"
+    },
+    {
+      "amountSpecified": "3350335",
+      "exactInput": true,
+      "expectedAmountCalculated": "521213324864063683"
+    },
+    {
+      "amountSpecified": "2563865",
+      "exactInput": true,
+      "expectedAmountCalculated": "399216110077290087"
+    },
+    {
+      "amountSpecified": "848191",
+      "exactInput": true,
+      "expectedAmountCalculated": "132492340531338699"
+    },
+    {
+      "amountSpecified": "1696220",
+      "exactInput": true,
+      "expectedAmountCalculated": "264430443563569391"
+    },
+    {
+      "amountSpecified": "2255738",
+      "exactInput": true,
+      "expectedAmountCalculated": "351373291612903192"
+    },
+    {
+      "amountSpecified": "1109659",
+      "exactInput": true,
+      "expectedAmountCalculated": "173193027215933125"
+    },
+    {
+      "amountSpecified": "412061",
+      "exactInput": true,
+      "expectedAmountCalculated": "64561201446362531"
+    },
+    {
+      "amountSpecified": "1217624",
+      "exactInput": true,
+      "expectedAmountCalculated": "189993792306341869"
+    },
+    {
+      "amountSpecified": "981106",
+      "exactInput": true,
+      "expectedAmountCalculated": "153184490217969656"
+    },
+    {
+      "amountSpecified": "3550353",
+      "exactInput": true,
+      "expectedAmountCalculated": "552213148104763144"
+    },
+    {
+      "amountSpecified": "1137315",
+      "exactInput": true,
+      "expectedAmountCalculated": "177497054988514201"
+    },
+    {
+      "amountSpecified": "433628",
+      "exactInput": true,
+      "expectedAmountCalculated": "67921704795222253"
+    },
+    {
+      "amountSpecified": "1337406",
+      "exactInput": true,
+      "expectedAmountCalculated": "208629546806111593"
+    },
+    {
+      "amountSpecified": "614848",
+      "exactInput": true,
+      "expectedAmountCalculated": "96153598907266911"
+    },
+    {
+      "amountSpecified": "504257",
+      "exactInput": true,
+      "expectedAmountCalculated": "78925930539892325"
+    },
+    {
+      "amountSpecified": "3299407",
+      "exactInput": true,
+      "expectedAmountCalculated": "513318634595123161"
+    },
+    {
+      "amountSpecified": "3143573",
+      "exactInput": true,
+      "expectedAmountCalculated": "489156837601183828"
+    },
+    {
+      "amountSpecified": "2695087",
+      "exactInput": true,
+      "expectedAmountCalculated": "419583058742369968"
+    },
+    {
+      "amountSpecified": "2139440",
+      "exactInput": true,
+      "expectedAmountCalculated": "333309006441724972"
+    },
+    {
+      "amountSpecified": "1067831",
+      "exactInput": true,
+      "expectedAmountCalculated": "166683357619439580"
+    },
+    {
+      "amountSpecified": "2647683",
+      "exactInput": true,
+      "expectedAmountCalculated": "412226081579582584"
+    },
+    {
+      "amountSpecified": "2031317",
+      "exactInput": true,
+      "expectedAmountCalculated": "316511017611599804"
+    },
+    {
+      "amountSpecified": "3349940",
+      "exactInput": true,
+      "expectedAmountCalculated": "521152088782850187"
+    },
+    {
+      "amountSpecified": "1724205",
+      "exactInput": true,
+      "expectedAmountCalculated": "268781009806927370"
+    },
+    {
+      "amountSpecified": "2023238606254405440",
+      "exactInput": false,
+      "expectedAmountCalculated": "13328917"
+    },
+    {
+      "amountSpecified": "613048104329277099",
+      "exactInput": false,
+      "expectedAmountCalculated": "3943080"
+    },
+    {
+      "amountSpecified": "151701887124886704",
+      "exactInput": false,
+      "expectedAmountCalculated": "971582"
+    },
+    {
+      "amountSpecified": "627766536088797840",
+      "exactInput": false,
+      "expectedAmountCalculated": "4038136"
+    },
+    {
+      "amountSpecified": "884574236546000304",
+      "exactInput": false,
+      "expectedAmountCalculated": "5699264"
+    },
+    {
+      "amountSpecified": "1718320117167652715",
+      "exactInput": false,
+      "expectedAmountCalculated": "11135547"
+    },
+    {
+      "amountSpecified": "729401105645542464",
+      "exactInput": false,
+      "expectedAmountCalculated": "4694966"
+    },
+    {
+      "amountSpecified": "1810583561114037360",
+      "exactInput": false,
+      "expectedAmountCalculated": "11770902"
+    },
+    {
+      "amountSpecified": "2104338004370338560",
+      "exactInput": false,
+      "expectedAmountCalculated": "13960314"
+    },
+    {
+      "amountSpecified": "1245814317879969120",
+      "exactInput": false,
+      "expectedAmountCalculated": "8044148"
+    },
+    {
+      "amountSpecified": "887788646841787536",
+      "exactInput": false,
+      "expectedAmountCalculated": "5720088"
+    },
+    {
+      "amountSpecified": "1038550101878707992",
+      "exactInput": false,
+      "expectedAmountCalculated": "6697571"
+    },
+    {
+      "amountSpecified": "419818814876333592",
+      "exactInput": false,
+      "expectedAmountCalculated": "2696606"
+    },
+    {
+      "amountSpecified": "1498293647713419600",
+      "exactInput": false,
+      "expectedAmountCalculated": "9688795"
+    },
+    {
+      "amountSpecified": "537894674452200768",
+      "exactInput": false,
+      "expectedAmountCalculated": "3457958"
+    },
+    {
+      "amountSpecified": "1456484649163116960",
+      "exactInput": false,
+      "expectedAmountCalculated": "9416123"
+    },
+    {
+      "amountSpecified": "1871905917187304400",
+      "exactInput": false,
+      "expectedAmountCalculated": "12206365"
+    },
+    {
+      "amountSpecified": "2322880459440303360",
+      "exactInput": false,
+      "expectedAmountCalculated": "16734844"
+    },
+    {
+      "amountSpecified": "2296330194858900720",
+      "exactInput": false,
+      "expectedAmountCalculated": "16094172"
+    },
+    {
+      "amountSpecified": "718987744514729592",
+      "exactInput": false,
+      "expectedAmountCalculated": "4627633"
+    },
+    {
+      "amountSpecified": "2347291448110802640",
+      "exactInput": false,
+      "expectedAmountCalculated": "17530243"
+    },
+    {
+      "amountSpecified": "2072111441019085200",
+      "exactInput": false,
+      "expectedAmountCalculated": "13706817"
+    },
+    {
+      "amountSpecified": "945136145925823368",
+      "exactInput": false,
+      "expectedAmountCalculated": "6091711"
+    },
+    {
+      "amountSpecified": "1367511794008662480",
+      "exactInput": false,
+      "expectedAmountCalculated": "8836291"
+    },
+    {
+      "amountSpecified": "1411527840368865120",
+      "exactInput": false,
+      "expectedAmountCalculated": "9123068"
+    },
+    {
+      "amountSpecified": "2275796115647068080",
+      "exactInput": false,
+      "expectedAmountCalculated": "15706200"
+    },
+    {
+      "amountSpecified": "1713458010457962720",
+      "exactInput": false,
+      "expectedAmountCalculated": "11102705"
+    },
+    {
+      "amountSpecified": "663657477655858224",
+      "exactInput": false,
+      "expectedAmountCalculated": "4270001"
+    },
+    {
+      "amountSpecified": "2339785777346019600",
+      "exactInput": false,
+      "expectedAmountCalculated": "17258657"
+    },
+    {
+      "amountSpecified": "234704203512855792",
+      "exactInput": false,
+      "expectedAmountCalculated": "1505045"
+    },
+    {
+      "amountSpecified": "1266517468741560240",
+      "exactInput": false,
+      "expectedAmountCalculated": "8178829"
+    },
+    {
+      "amountSpecified": "2217946657371083040",
+      "exactInput": false,
+      "expectedAmountCalculated": "14924933"
+    },
+    {
+      "amountSpecified": "113936063280137208",
+      "exactInput": false,
+      "expectedAmountCalculated": "729023"
+    },
+    {
+      "amountSpecified": "98591970895920864",
+      "exactInput": false,
+      "expectedAmountCalculated": "630504"
+    },
+    {
+      "amountSpecified": "24038066878336396",
+      "exactInput": false,
+      "expectedAmountCalculated": "152453"
+    },
+    {
+      "amountSpecified": "1240605225082664640",
+      "exactInput": false,
+      "expectedAmountCalculated": "8010266"
+    },
+    {
+      "amountSpecified": "1920081507509339280",
+      "exactInput": false,
+      "expectedAmountCalculated": "12556156"
+    },
+    {
+      "amountSpecified": "1407303391242014880",
+      "exactInput": false,
+      "expectedAmountCalculated": "9095538"
+    },
+    {
+      "amountSpecified": "1748454630739973280",
+      "exactInput": false,
+      "expectedAmountCalculated": "11340507"
+    },
+    {
+      "amountSpecified": "3623513976209992",
+      "exactInput": false,
+      "expectedAmountCalculated": "22892"
+    },
+    {
+      "amountSpecified": "2039491220812219499",
+      "exactInput": false,
+      "expectedAmountCalculated": "13453725"
+    },
+    {
+      "amountSpecified": "1738273825362094080",
+      "exactInput": false,
+      "expectedAmountCalculated": "11270989"
+    },
+    {
+      "amountSpecified": "1116008974467048624",
+      "exactInput": false,
+      "expectedAmountCalculated": "7200442"
+    },
+    {
+      "amountSpecified": "2387366123026786759",
+      "exactInput": false,
+      "expectedAmountCalculated": "19634919"
+    },
+    {
+      "amountSpecified": "2147691356812281237",
+      "exactInput": false,
+      "expectedAmountCalculated": "14306882"
+    },
+    {
+      "amountSpecified": "1250979312824247360",
+      "exactInput": false,
+      "expectedAmountCalculated": "8077744"
+    },
+    {
+      "amountSpecified": "1606747281336564240",
+      "exactInput": false,
+      "expectedAmountCalculated": "10396720"
+    },
+    {
+      "amountSpecified": "1093484503060731504",
+      "exactInput": false,
+      "expectedAmountCalculated": "7054165"
+    },
+    {
+      "amountSpecified": "909266208750721440",
+      "exactInput": false,
+      "expectedAmountCalculated": "5859237"
+    },
+    {
+      "amountSpecified": "783117565330180200",
+      "exactInput": false,
+      "expectedAmountCalculated": "5042424"
+    }
+  ]
+}
diff --git a/src/swapRouter.test.ts b/src/__tests__/swapRouter.test.ts
similarity index 97%
rename from src/swapRouter.test.ts
rename to src/__tests__/swapRouter.test.ts
index e099c21e..01d31e72 100644
--- a/src/swapRouter.test.ts
+++ b/src/__tests__/swapRouter.test.ts
@@ -1,11 +1,11 @@
 import JSBI from 'jsbi'
 import { CurrencyAmount, Ether, Percent, Token, TradeType, WETH9 } from '@uniswap/sdk-core'
-import { FeeAmount, TICK_SPACINGS } from './constants'
-import { Pool } from './entities/pool'
-import { SwapRouter } from './swapRouter'
-import { nearestUsableTick, TickMath } from './utils'
-import { encodeSqrtRatioX96 } from './utils/encodeSqrtRatioX96'
-import { Route, Trade } from './entities'
+import { FeeAmount, TICK_SPACINGS } from 'src/constants'
+import { Pool } from 'src/entities/pool'
+import { SwapRouter } from 'src/swapRouter'
+import { nearestUsableTick, TickMath } from 'src/utils'
+import { encodeSqrtRatioX96 } from 'src/utils/encodeSqrtRatioX96'
+import { Route, Trade } from 'src/entities'
 
 describe('SwapRouter', () => {
   const ETHER = Ether.onChain(1)
@@ -24,13 +24,13 @@ describe('SwapRouter', () => {
       {
         index: nearestUsableTick(TickMath.MIN_TICK, TICK_SPACINGS[feeAmount]),
         liquidityNet: liquidity,
-        liquidityGross: liquidity
+        liquidityGross: liquidity,
       },
       {
         index: nearestUsableTick(TickMath.MAX_TICK, TICK_SPACINGS[feeAmount]),
         liquidityNet: -liquidity,
-        liquidityGross: liquidity
-      }
+        liquidityGross: liquidity,
+      },
     ])
   }
 
@@ -57,7 +57,7 @@ describe('SwapRouter', () => {
         const { calldata, value } = SwapRouter.swapCallParameters(trade, {
           slippageTolerance,
           recipient,
-          deadline
+          deadline,
         })
 
         expect(calldata).toBe(
@@ -75,7 +75,7 @@ describe('SwapRouter', () => {
         const { calldata, value } = SwapRouter.swapCallParameters(trade, {
           slippageTolerance,
           recipient,
-          deadline
+          deadline,
         })
 
         expect(calldata).toBe(
@@ -93,7 +93,7 @@ describe('SwapRouter', () => {
         const { calldata, value } = SwapRouter.swapCallParameters(trade, {
           slippageTolerance,
           recipient,
-          deadline
+          deadline,
         })
 
         expect(calldata).toBe(
@@ -111,7 +111,7 @@ describe('SwapRouter', () => {
         const { calldata, value } = SwapRouter.swapCallParameters(trade, {
           slippageTolerance,
           recipient,
-          deadline
+          deadline,
         })
 
         expect(calldata).toBe(
@@ -129,7 +129,7 @@ describe('SwapRouter', () => {
         const { calldata, value } = SwapRouter.swapCallParameters(trade, {
           slippageTolerance,
           recipient,
-          deadline
+          deadline,
         })
 
         expect(calldata).toBe(
@@ -147,7 +147,7 @@ describe('SwapRouter', () => {
         const { calldata, value } = SwapRouter.swapCallParameters(trade, {
           slippageTolerance,
           recipient,
-          deadline
+          deadline,
         })
 
         expect(calldata).toBe(
@@ -165,7 +165,7 @@ describe('SwapRouter', () => {
         const { calldata, value } = SwapRouter.swapCallParameters(trade, {
           slippageTolerance,
           recipient,
-          deadline
+          deadline,
         })
 
         expect(calldata).toBe(
@@ -183,7 +183,7 @@ describe('SwapRouter', () => {
         const { calldata, value } = SwapRouter.swapCallParameters(trade, {
           slippageTolerance,
           recipient,
-          deadline
+          deadline,
         })
 
         expect(calldata).toBe(
@@ -202,7 +202,7 @@ describe('SwapRouter', () => {
           slippageTolerance,
           recipient,
           deadline,
-          sqrtPriceLimitX96: JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(128))
+          sqrtPriceLimitX96: JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(128)),
         })
 
         expect(calldata).toBe(
@@ -223,8 +223,8 @@ describe('SwapRouter', () => {
           deadline,
           fee: {
             fee: new Percent(5, 1000),
-            recipient
-          }
+            recipient,
+          },
         })
 
         expect(calldata).toBe(
@@ -245,8 +245,8 @@ describe('SwapRouter', () => {
           deadline,
           fee: {
             fee: new Percent(5, 1000),
-            recipient
-          }
+            recipient,
+          },
         })
 
         expect(calldata).toBe(
@@ -267,8 +267,8 @@ describe('SwapRouter', () => {
           deadline,
           fee: {
             fee: new Percent(5, 1000),
-            recipient
-          }
+            recipient,
+          },
         })
 
         expect(calldata).toBe(
@@ -296,7 +296,7 @@ describe('SwapRouter', () => {
       const { calldata, value } = SwapRouter.swapCallParameters([trade1, trade2], {
         slippageTolerance,
         recipient,
-        deadline
+        deadline,
       })
 
       expect(calldata).toBe(
@@ -321,7 +321,7 @@ describe('SwapRouter', () => {
       const { calldata, value } = SwapRouter.swapCallParameters([trade1, trade2], {
         slippageTolerance,
         recipient,
-        deadline
+        deadline,
       })
 
       expect(calldata).toBe(
@@ -346,7 +346,7 @@ describe('SwapRouter', () => {
       const { calldata, value } = SwapRouter.swapCallParameters([trade1, trade2], {
         slippageTolerance,
         recipient,
-        deadline
+        deadline,
       })
 
       expect(calldata).toBe(
@@ -371,7 +371,7 @@ describe('SwapRouter', () => {
       const { calldata, value } = SwapRouter.swapCallParameters([trade1, trade2], {
         slippageTolerance,
         recipient,
-        deadline
+        deadline,
       })
 
       expect(calldata).toBe(
@@ -396,7 +396,7 @@ describe('SwapRouter', () => {
       const { calldata, value } = SwapRouter.swapCallParameters([trade1, trade2], {
         slippageTolerance,
         recipient,
-        deadline
+        deadline,
       })
 
       expect(calldata).toBe(
@@ -421,7 +421,7 @@ describe('SwapRouter', () => {
       const { calldata, value } = SwapRouter.swapCallParameters([trade1, trade2], {
         slippageTolerance,
         recipient,
-        deadline
+        deadline,
       })
 
       expect(calldata).toBe(
@@ -446,7 +446,7 @@ describe('SwapRouter', () => {
       const { calldata, value } = SwapRouter.swapCallParameters([trade1, trade2], {
         slippageTolerance,
         recipient,
-        deadline
+        deadline,
       })
 
       expect(calldata).toBe(
@@ -471,7 +471,7 @@ describe('SwapRouter', () => {
       const { calldata, value } = SwapRouter.swapCallParameters([trade1, trade2], {
         slippageTolerance,
         recipient,
-        deadline
+        deadline,
       })
 
       expect(calldata).toBe(
@@ -496,7 +496,7 @@ describe('SwapRouter', () => {
       const { calldata, value } = SwapRouter.swapCallParameters([trade1, trade2], {
         slippageTolerance,
         recipient,
-        deadline
+        deadline,
       })
 
       expect(calldata).toBe(
@@ -521,7 +521,7 @@ describe('SwapRouter', () => {
       const { calldata, value } = SwapRouter.swapCallParameters([trade1, trade2], {
         slippageTolerance,
         recipient,
-        deadline
+        deadline,
       })
 
       expect(calldata).toBe(
@@ -547,7 +547,7 @@ describe('SwapRouter', () => {
         SwapRouter.swapCallParameters([trade1, trade2], {
           slippageTolerance,
           recipient,
-          deadline
+          deadline,
         })
       ).toThrow('TOKEN_IN_DIFF')
     })
@@ -569,7 +569,7 @@ describe('SwapRouter', () => {
         SwapRouter.swapCallParameters([trade1, trade2], {
           slippageTolerance,
           recipient,
-          deadline
+          deadline,
         })
       ).toThrow('TOKEN_OUT_DIFF')
     })
@@ -590,7 +590,7 @@ describe('SwapRouter', () => {
         slippageTolerance,
         recipient,
         deadline,
-        sqrtPriceLimitX96: JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(128))
+        sqrtPriceLimitX96: JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(128)),
       })
 
       expect(calldata).toBe(
@@ -618,8 +618,8 @@ describe('SwapRouter', () => {
         deadline,
         fee: {
           fee: new Percent(5, 1000),
-          recipient
-        }
+          recipient,
+        },
       })
 
       expect(calldata).toBe(
@@ -647,8 +647,8 @@ describe('SwapRouter', () => {
         deadline,
         fee: {
           fee: new Percent(5, 1000),
-          recipient
-        }
+          recipient,
+        },
       })
 
       expect(calldata).toBe(
@@ -676,8 +676,8 @@ describe('SwapRouter', () => {
         deadline,
         fee: {
           fee: new Percent(5, 1000),
-          recipient
-        }
+          recipient,
+        },
       })
 
       expect(calldata).toBe(
@@ -692,7 +692,7 @@ describe('SwapRouter', () => {
       const trade = await Trade.fromRoutes<Token, Token, TradeType.EXACT_INPUT>(
         [
           { amount: CurrencyAmount.fromRawAmount(token0, 100), route: new Route([pool_0_3], token0, token3) },
-          { amount: CurrencyAmount.fromRawAmount(token0, 100), route: new Route([pool_0_2, pool_2_3], token0, token3) }
+          { amount: CurrencyAmount.fromRawAmount(token0, 100), route: new Route([pool_0_2, pool_2_3], token0, token3) },
         ],
         TradeType.EXACT_INPUT
       )
@@ -700,7 +700,7 @@ describe('SwapRouter', () => {
       const { calldata, value } = SwapRouter.swapCallParameters([trade], {
         slippageTolerance,
         recipient,
-        deadline
+        deadline,
       })
 
       expect(calldata).toBe(
@@ -713,7 +713,7 @@ describe('SwapRouter', () => {
       const trade = await Trade.fromRoutes<Token, Token, TradeType.EXACT_INPUT>(
         [
           { amount: CurrencyAmount.fromRawAmount(token0, 100), route: new Route([pool_0_1, pool_1_3], token0, token3) },
-          { amount: CurrencyAmount.fromRawAmount(token0, 100), route: new Route([pool_0_2, pool_2_3], token0, token3) }
+          { amount: CurrencyAmount.fromRawAmount(token0, 100), route: new Route([pool_0_2, pool_2_3], token0, token3) },
         ],
         TradeType.EXACT_INPUT
       )
@@ -721,7 +721,7 @@ describe('SwapRouter', () => {
       const { calldata, value } = SwapRouter.swapCallParameters([trade], {
         slippageTolerance,
         recipient,
-        deadline
+        deadline,
       })
 
       expect(calldata).toBe(
@@ -735,12 +735,12 @@ describe('SwapRouter', () => {
         [
           {
             amount: CurrencyAmount.fromRawAmount(Ether.onChain(1), 100),
-            route: new Route([pool_1_weth, pool_1_3], ETHER, token3)
+            route: new Route([pool_1_weth, pool_1_3], ETHER, token3),
           },
           {
             amount: CurrencyAmount.fromRawAmount(Ether.onChain(1), 100),
-            route: new Route([pool_3_weth], ETHER, token3)
-          }
+            route: new Route([pool_3_weth], ETHER, token3),
+          },
         ],
         TradeType.EXACT_INPUT
       )
@@ -748,7 +748,7 @@ describe('SwapRouter', () => {
       const { calldata, value } = SwapRouter.swapCallParameters([trade], {
         slippageTolerance,
         recipient,
-        deadline
+        deadline,
       })
 
       expect(calldata).toBe(
@@ -762,9 +762,9 @@ describe('SwapRouter', () => {
         [
           {
             amount: CurrencyAmount.fromRawAmount(token3, 100),
-            route: new Route([pool_1_weth, pool_1_3], ETHER, token3)
+            route: new Route([pool_1_weth, pool_1_3], ETHER, token3),
           },
-          { amount: CurrencyAmount.fromRawAmount(token3, 100), route: new Route([pool_3_weth], ETHER, token3) }
+          { amount: CurrencyAmount.fromRawAmount(token3, 100), route: new Route([pool_3_weth], ETHER, token3) },
         ],
         TradeType.EXACT_OUTPUT
       )
@@ -772,7 +772,7 @@ describe('SwapRouter', () => {
       const { calldata, value } = SwapRouter.swapCallParameters([trade], {
         slippageTolerance,
         recipient,
-        deadline
+        deadline,
       })
 
       expect(calldata).toBe(
@@ -786,12 +786,12 @@ describe('SwapRouter', () => {
         [
           {
             amount: CurrencyAmount.fromRawAmount(token3, 100),
-            route: new Route([pool_1_3, pool_1_weth], token3, ETHER)
+            route: new Route([pool_1_3, pool_1_weth], token3, ETHER),
           },
           {
             amount: CurrencyAmount.fromRawAmount(token3, 100),
-            route: new Route([pool_3_weth], token3, ETHER)
-          }
+            route: new Route([pool_3_weth], token3, ETHER),
+          },
         ],
         TradeType.EXACT_INPUT
       )
@@ -799,7 +799,7 @@ describe('SwapRouter', () => {
       const { calldata, value } = SwapRouter.swapCallParameters([trade], {
         slippageTolerance,
         recipient,
-        deadline
+        deadline,
       })
 
       expect(calldata).toBe(
@@ -813,12 +813,12 @@ describe('SwapRouter', () => {
         [
           {
             amount: CurrencyAmount.fromRawAmount(Ether.onChain(1), 100),
-            route: new Route([pool_1_3, pool_1_weth], token3, ETHER)
+            route: new Route([pool_1_3, pool_1_weth], token3, ETHER),
           },
           {
             amount: CurrencyAmount.fromRawAmount(Ether.onChain(1), 100),
-            route: new Route([pool_3_weth], token3, ETHER)
-          }
+            route: new Route([pool_3_weth], token3, ETHER),
+          },
         ],
         TradeType.EXACT_OUTPUT
       )
@@ -826,7 +826,7 @@ describe('SwapRouter', () => {
       const { calldata, value } = SwapRouter.swapCallParameters([trade], {
         slippageTolerance,
         recipient,
-        deadline
+        deadline,
       })
 
       expect(calldata).toBe(
@@ -839,7 +839,7 @@ describe('SwapRouter', () => {
       const trade = await Trade.fromRoutes<Token, Token, TradeType.EXACT_OUTPUT>(
         [
           { amount: CurrencyAmount.fromRawAmount(token3, 100), route: new Route([pool_0_3], token0, token3) },
-          { amount: CurrencyAmount.fromRawAmount(token3, 100), route: new Route([pool_0_2, pool_2_3], token0, token3) }
+          { amount: CurrencyAmount.fromRawAmount(token3, 100), route: new Route([pool_0_2, pool_2_3], token0, token3) },
         ],
         TradeType.EXACT_OUTPUT
       )
@@ -847,7 +847,7 @@ describe('SwapRouter', () => {
       const { calldata, value } = SwapRouter.swapCallParameters([trade], {
         slippageTolerance,
         recipient,
-        deadline
+        deadline,
       })
 
       expect(calldata).toBe(
@@ -860,7 +860,7 @@ describe('SwapRouter', () => {
       const trade = await Trade.fromRoutes<Token, Token, TradeType.EXACT_OUTPUT>(
         [
           { amount: CurrencyAmount.fromRawAmount(token3, 100), route: new Route([pool_0_1, pool_1_3], token0, token3) },
-          { amount: CurrencyAmount.fromRawAmount(token3, 100), route: new Route([pool_0_2, pool_2_3], token0, token3) }
+          { amount: CurrencyAmount.fromRawAmount(token3, 100), route: new Route([pool_0_2, pool_2_3], token0, token3) },
         ],
         TradeType.EXACT_OUTPUT
       )
@@ -868,7 +868,7 @@ describe('SwapRouter', () => {
       const { calldata, value } = SwapRouter.swapCallParameters([trade], {
         slippageTolerance,
         recipient,
-        deadline
+        deadline,
       })
 
       expect(calldata).toBe(
diff --git a/src/utils/computePoolAddress.test.ts b/src/__tests__/utils/computePoolAddress.test.ts
similarity index 89%
rename from src/utils/computePoolAddress.test.ts
rename to src/__tests__/utils/computePoolAddress.test.ts
index 18fb92c2..051b6779 100644
--- a/src/utils/computePoolAddress.test.ts
+++ b/src/__tests__/utils/computePoolAddress.test.ts
@@ -1,6 +1,6 @@
 import { Token } from '@uniswap/sdk-core'
-import { FeeAmount } from '../constants'
-import { computePoolAddress } from './computePoolAddress'
+import { FeeAmount } from 'src/constants'
+import { computePoolAddress } from 'src/utils/computePoolAddress'
 
 describe('#computePoolAddress', () => {
   const factoryAddress = '0x1111111111111111111111111111111111111111'
@@ -11,7 +11,7 @@ describe('#computePoolAddress', () => {
       factoryAddress,
       fee: FeeAmount.LOW,
       tokenA,
-      tokenB
+      tokenB,
     })
 
     expect(result).toEqual('0x90B1b09A9715CaDbFD9331b3A7652B24BfBEfD32')
@@ -26,7 +26,7 @@ describe('#computePoolAddress', () => {
       factoryAddress,
       fee: FeeAmount.LOW,
       tokenA,
-      tokenB
+      tokenB,
     })
 
     tokenA = DAI
@@ -36,7 +36,7 @@ describe('#computePoolAddress', () => {
       factoryAddress,
       fee: FeeAmount.LOW,
       tokenA,
-      tokenB
+      tokenB,
     })
 
     expect(resultA).toEqual(resultB)
diff --git a/src/utils/encodeRouteToPath.test.ts b/src/__tests__/utils/encodeRouteToPath.test.ts
similarity index 94%
rename from src/utils/encodeRouteToPath.test.ts
rename to src/__tests__/utils/encodeRouteToPath.test.ts
index 4c6c4af1..b96825fa 100644
--- a/src/utils/encodeRouteToPath.test.ts
+++ b/src/__tests__/utils/encodeRouteToPath.test.ts
@@ -1,9 +1,9 @@
 import { Ether, Token, WETH9 } from '@uniswap/sdk-core'
-import { FeeAmount } from '../constants'
-import { Pool } from '../entities/pool'
-import { Route } from '../entities/route'
-import { encodeRouteToPath } from './encodeRouteToPath'
-import { encodeSqrtRatioX96 } from './encodeSqrtRatioX96'
+import { FeeAmount } from 'src/constants'
+import { Pool } from 'src/entities/pool'
+import { Route } from 'src/entities/route'
+import { encodeRouteToPath } from 'src/utils/encodeRouteToPath'
+import { encodeSqrtRatioX96 } from 'src/utils/encodeSqrtRatioX96'
 
 describe('#encodeRouteToPath', () => {
   const ETHER = Ether.onChain(1)
diff --git a/src/utils/encodeSqrtRatioX96.test.ts b/src/__tests__/utils/encodeSqrtRatioX96.test.ts
similarity index 85%
rename from src/utils/encodeSqrtRatioX96.test.ts
rename to src/__tests__/utils/encodeSqrtRatioX96.test.ts
index 5d490228..a38d03b3 100644
--- a/src/utils/encodeSqrtRatioX96.test.ts
+++ b/src/__tests__/utils/encodeSqrtRatioX96.test.ts
@@ -1,6 +1,6 @@
 import JSBI from 'jsbi'
-import { Q96 } from '../internalConstants'
-import { encodeSqrtRatioX96 } from './encodeSqrtRatioX96'
+import { Q96 } from 'src/internalConstants'
+import { encodeSqrtRatioX96 } from 'src/utils/encodeSqrtRatioX96'
 
 describe('#encodeSqrtRatioX96', () => {
   it('1/1', () => {
diff --git a/src/utils/isSorted.test.ts b/src/__tests__/utils/isSorted.test.ts
similarity index 97%
rename from src/utils/isSorted.test.ts
rename to src/__tests__/utils/isSorted.test.ts
index 3c36e50e..c7fbebb9 100644
--- a/src/utils/isSorted.test.ts
+++ b/src/__tests__/utils/isSorted.test.ts
@@ -1,4 +1,4 @@
-import { isSorted } from './isSorted'
+import { isSorted } from 'src/utils/isSorted'
 
 describe('#isSorted', () => {
   it('empty list', () => {
diff --git a/src/utils/maxLiquidityForAmounts.test.ts b/src/__tests__/utils/maxLiquidityForAmounts.test.ts
similarity index 98%
rename from src/utils/maxLiquidityForAmounts.test.ts
rename to src/__tests__/utils/maxLiquidityForAmounts.test.ts
index 83b0eb4c..2d76892d 100644
--- a/src/utils/maxLiquidityForAmounts.test.ts
+++ b/src/__tests__/utils/maxLiquidityForAmounts.test.ts
@@ -1,7 +1,7 @@
 import { MaxUint256 } from '@uniswap/sdk-core'
 import JSBI from 'jsbi'
-import { encodeSqrtRatioX96 } from './encodeSqrtRatioX96'
-import { maxLiquidityForAmounts } from './maxLiquidityForAmounts'
+import { encodeSqrtRatioX96 } from 'src/utils/encodeSqrtRatioX96'
+import { maxLiquidityForAmounts } from 'src/utils/maxLiquidityForAmounts'
 
 describe('#maxLiquidityForAmounts', () => {
   describe('imprecise', () => {
diff --git a/src/utils/mostSignificantBit.test.ts b/src/__tests__/utils/mostSignificantBit.test.ts
similarity index 89%
rename from src/utils/mostSignificantBit.test.ts
rename to src/__tests__/utils/mostSignificantBit.test.ts
index 15621f98..3cb249d5 100644
--- a/src/utils/mostSignificantBit.test.ts
+++ b/src/__tests__/utils/mostSignificantBit.test.ts
@@ -1,7 +1,7 @@
 import { MaxUint256 } from '@uniswap/sdk-core'
 import JSBI from 'jsbi'
-import { ONE } from '../internalConstants'
-import { mostSignificantBit } from './mostSignificantBit'
+import { ONE } from 'src/internalConstants'
+import { mostSignificantBit } from 'src/utils/mostSignificantBit'
 
 describe('mostSignificantBit', () => {
   it('throws for zero', () => {
diff --git a/src/utils/nearestUsableTick.test.ts b/src/__tests__/utils/nearestUsableTick.test.ts
similarity index 92%
rename from src/utils/nearestUsableTick.test.ts
rename to src/__tests__/utils/nearestUsableTick.test.ts
index 2f453133..c42fc027 100644
--- a/src/utils/nearestUsableTick.test.ts
+++ b/src/__tests__/utils/nearestUsableTick.test.ts
@@ -1,5 +1,5 @@
-import { nearestUsableTick } from './nearestUsableTick'
-import { TickMath } from './tickMath'
+import { nearestUsableTick } from 'src/utils/nearestUsableTick'
+import { TickMath } from 'src/utils/tickMath'
 
 describe('#nearestUsableTick', () => {
   it('throws if tickSpacing is 0', () => {
diff --git a/src/utils/position.test.ts b/src/__tests__/utils/position.test.ts
similarity index 88%
rename from src/utils/position.test.ts
rename to src/__tests__/utils/position.test.ts
index 54c817af..455b6d33 100644
--- a/src/utils/position.test.ts
+++ b/src/__tests__/utils/position.test.ts
@@ -1,6 +1,6 @@
 import JSBI from 'jsbi'
-import { PositionLibrary } from '.'
-import { ZERO } from '../internalConstants'
+import { PositionLibrary } from 'src/utils'
+import { ZERO } from 'src/internalConstants'
 
 describe('PositionLibrary', () => {
   describe('#getTokensOwed', () => {
diff --git a/src/utils/priceTickConversions.test.ts b/src/__tests__/utils/priceTickConversions.test.ts
similarity index 96%
rename from src/utils/priceTickConversions.test.ts
rename to src/__tests__/utils/priceTickConversions.test.ts
index fabaf6c0..34cbfd15 100644
--- a/src/utils/priceTickConversions.test.ts
+++ b/src/__tests__/utils/priceTickConversions.test.ts
@@ -1,6 +1,6 @@
 import { Price, Token } from '@uniswap/sdk-core'
-import { tickToPrice } from './index'
-import { priceToClosestTick } from './priceTickConversions'
+import { tickToPrice } from 'src/index'
+import { priceToClosestTick } from 'src/utils/priceTickConversions'
 
 describe('priceTickConversions', () => {
   /**
@@ -9,7 +9,7 @@ describe('priceTickConversions', () => {
   function token({
     sortOrder,
     decimals = 18,
-    chainId = 1
+    chainId = 1,
   }: {
     sortOrder: number
     decimals?: number
diff --git a/src/utils/tickLibrary.test.ts b/src/__tests__/utils/tickLibrary.test.ts
similarity index 86%
rename from src/utils/tickLibrary.test.ts
rename to src/__tests__/utils/tickLibrary.test.ts
index d2492338..ad03a57f 100644
--- a/src/utils/tickLibrary.test.ts
+++ b/src/__tests__/utils/tickLibrary.test.ts
@@ -1,6 +1,6 @@
 import JSBI from 'jsbi'
-import { ZERO } from '../internalConstants'
-import { TickLibrary } from './tickLibrary'
+import { ZERO } from 'src/internalConstants'
+import { TickLibrary } from 'src/utils/tickLibrary'
 
 describe('TickLibrary', () => {
   describe('#getFeeGrowthInside', () => {
@@ -8,11 +8,11 @@ describe('TickLibrary', () => {
       const [feeGrowthInside0X128, feeGrowthInside1X128] = TickLibrary.getFeeGrowthInside(
         {
           feeGrowthOutside0X128: ZERO,
-          feeGrowthOutside1X128: ZERO
+          feeGrowthOutside1X128: ZERO,
         },
         {
           feeGrowthOutside0X128: ZERO,
-          feeGrowthOutside1X128: ZERO
+          feeGrowthOutside1X128: ZERO,
         },
         -1,
         1,
@@ -28,11 +28,11 @@ describe('TickLibrary', () => {
       const [feeGrowthInside0X128, feeGrowthInside1X128] = TickLibrary.getFeeGrowthInside(
         {
           feeGrowthOutside0X128: ZERO,
-          feeGrowthOutside1X128: ZERO
+          feeGrowthOutside1X128: ZERO,
         },
         {
           feeGrowthOutside0X128: ZERO,
-          feeGrowthOutside1X128: ZERO
+          feeGrowthOutside1X128: ZERO,
         },
         -1,
         1,
@@ -48,11 +48,11 @@ describe('TickLibrary', () => {
       const [feeGrowthInside0X128, feeGrowthInside1X128] = TickLibrary.getFeeGrowthInside(
         {
           feeGrowthOutside0X128: JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(128)),
-          feeGrowthOutside1X128: JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(128))
+          feeGrowthOutside1X128: JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(128)),
         },
         {
           feeGrowthOutside0X128: ZERO,
-          feeGrowthOutside1X128: ZERO
+          feeGrowthOutside1X128: ZERO,
         },
         -1,
         1,
@@ -68,11 +68,11 @@ describe('TickLibrary', () => {
       const [feeGrowthInside0X128, feeGrowthInside1X128] = TickLibrary.getFeeGrowthInside(
         {
           feeGrowthOutside0X128: JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(127)),
-          feeGrowthOutside1X128: JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(127))
+          feeGrowthOutside1X128: JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(127)),
         },
         {
           feeGrowthOutside0X128: ZERO,
-          feeGrowthOutside1X128: ZERO
+          feeGrowthOutside1X128: ZERO,
         },
         -1,
         1,
diff --git a/src/utils/tickList.test.ts b/src/__tests__/utils/tickList.test.ts
similarity index 95%
rename from src/utils/tickList.test.ts
rename to src/__tests__/utils/tickList.test.ts
index efda8fb6..7f5d415a 100644
--- a/src/utils/tickList.test.ts
+++ b/src/__tests__/utils/tickList.test.ts
@@ -1,6 +1,6 @@
-import { Tick } from '../entities/tick'
-import { TickList } from './tickList'
-import { TickMath } from './tickMath'
+import { Tick } from 'src/entities/tick'
+import { TickList } from 'src/utils/tickList'
+import { TickMath } from 'src/utils/tickMath'
 
 describe('TickList', () => {
   let highTick: Tick
@@ -11,17 +11,17 @@ describe('TickList', () => {
     lowTick = new Tick({
       index: TickMath.MIN_TICK + 1,
       liquidityNet: 10,
-      liquidityGross: 10
+      liquidityGross: 10,
     })
     midTick = new Tick({
       index: 0,
       liquidityNet: -5,
-      liquidityGross: 5
+      liquidityGross: 5,
     })
     highTick = new Tick({
       index: TickMath.MAX_TICK - 1,
       liquidityNet: -5,
-      liquidityGross: 5
+      liquidityGross: 5,
     })
   })
 
@@ -137,13 +137,13 @@ describe('TickList', () => {
         new Tick({
           index: 0,
           liquidityNet: 0,
-          liquidityGross: 0
+          liquidityGross: 0,
         }),
         new Tick({
           index: 511,
           liquidityNet: 0,
-          liquidityGross: 0
-        })
+          liquidityGross: 0,
+        }),
       ]
 
       expect(TickList.nextInitializedTickWithinOneWord(ticks, 0, false, 1)).toEqual([255, false])
diff --git a/src/utils/tickMath.test.ts b/src/__tests__/utils/tickMath.test.ts
similarity index 94%
rename from src/utils/tickMath.test.ts
rename to src/__tests__/utils/tickMath.test.ts
index 1983e99a..7a408b7b 100644
--- a/src/utils/tickMath.test.ts
+++ b/src/__tests__/utils/tickMath.test.ts
@@ -1,6 +1,6 @@
 import JSBI from 'jsbi'
-import { ONE } from '../internalConstants'
-import { TickMath } from './tickMath'
+import { ONE } from 'src/internalConstants'
+import { TickMath } from 'src/utils/tickMath'
 
 describe('TickMath', () => {
   describe('#MIN_TICK', () => {
diff --git a/src/constants.ts b/src/constants.ts
index 241d6785..3dbe3ffa 100644
--- a/src/constants.ts
+++ b/src/constants.ts
@@ -11,7 +11,7 @@ export enum FeeAmount {
   LOWEST = 100,
   LOW = 500,
   MEDIUM = 3000,
-  HIGH = 10000
+  HIGH = 10000,
 }
 
 /**
@@ -21,5 +21,5 @@ export const TICK_SPACINGS: { [amount in FeeAmount]: number } = {
   [FeeAmount.LOWEST]: 1,
   [FeeAmount.LOW]: 10,
   [FeeAmount.MEDIUM]: 60,
-  [FeeAmount.HIGH]: 200
+  [FeeAmount.HIGH]: 200,
 }
diff --git a/src/entities/pool.ts b/src/entities/pool.ts
index d810118a..1fb91357 100644
--- a/src/entities/pool.ts
+++ b/src/entities/pool.ts
@@ -2,7 +2,7 @@ import { BigintIsh, CurrencyAmount, Price, Token } from '@uniswap/sdk-core'
 import JSBI from 'jsbi'
 import invariant from 'tiny-invariant'
 import { FACTORY_ADDRESS, FeeAmount, TICK_SPACINGS } from '../constants'
-import { NEGATIVE_ONE, ONE, Q192, ZERO } from '../internalConstants'
+import { Q192_BIGINT } from '../internalConstants'
 import { computePoolAddress } from '../utils/computePoolAddress'
 import { LiquidityMath } from '../utils/liquidityMath'
 import { SwapMath } from '../utils/swapMath'
@@ -10,15 +10,16 @@ import { TickMath } from '../utils/tickMath'
 import { Tick, TickConstructorArgs } from './tick'
 import { NoTickDataProvider, TickDataProvider } from './tickDataProvider'
 import { TickListDataProvider } from './tickListDataProvider'
+import { bigIntFromBigintIsh } from 'src/utils/bigintIsh'
 
 interface StepComputations {
-  sqrtPriceStartX96: JSBI
+  sqrtPriceStartX96: bigint
   tickNext: number
   initialized: boolean
-  sqrtPriceNextX96: JSBI
-  amountIn: JSBI
-  amountOut: JSBI
-  feeAmount: JSBI
+  sqrtPriceNextX96: bigint
+  amountIn: bigint
+  amountOut: bigint
+  feeAmount: bigint
 }
 
 /**
@@ -33,8 +34,14 @@ export class Pool {
   public readonly token0: Token
   public readonly token1: Token
   public readonly fee: FeeAmount
-  public readonly sqrtRatioX96: JSBI
-  public readonly liquidity: JSBI
+  public get sqrtRatioX96(): JSBI {
+    return JSBI.BigInt(this._sqrtRatioX96.toString(10))
+  }
+  public readonly _sqrtRatioX96: bigint
+  public get liquidity(): JSBI {
+    return JSBI.BigInt(this._liquidity.toString(10))
+  }
+  public readonly _liquidity: bigint
   public readonly tickCurrent: number
   public readonly tickDataProvider: TickDataProvider
 
@@ -53,7 +60,7 @@ export class Pool {
       fee,
       tokenA,
       tokenB,
-      initCodeHashManualOverride
+      initCodeHashManualOverride,
     })
   }
 
@@ -78,18 +85,18 @@ export class Pool {
   ) {
     invariant(Number.isInteger(fee) && fee < 1_000_000, 'FEE')
 
-    const tickCurrentSqrtRatioX96 = TickMath.getSqrtRatioAtTick(tickCurrent)
-    const nextTickSqrtRatioX96 = TickMath.getSqrtRatioAtTick(tickCurrent + 1)
+    const tickCurrentSqrtRatioX96 = TickMath.getSqrtRatioAtTickBigInt(tickCurrent)
+    const nextTickSqrtRatioX96 = TickMath.getSqrtRatioAtTickBigInt(tickCurrent + 1)
     invariant(
-      JSBI.greaterThanOrEqual(JSBI.BigInt(sqrtRatioX96), tickCurrentSqrtRatioX96) &&
-        JSBI.lessThanOrEqual(JSBI.BigInt(sqrtRatioX96), nextTickSqrtRatioX96),
+      bigIntFromBigintIsh(sqrtRatioX96) >= tickCurrentSqrtRatioX96 &&
+        bigIntFromBigintIsh(sqrtRatioX96) <= nextTickSqrtRatioX96,
       'PRICE_BOUNDS'
     )
     // always create a copy of the list since we want the pool's tick list to be immutable
     ;[this.token0, this.token1] = tokenA.sortsBefore(tokenB) ? [tokenA, tokenB] : [tokenB, tokenA]
     this.fee = fee
-    this.sqrtRatioX96 = JSBI.BigInt(sqrtRatioX96)
-    this.liquidity = JSBI.BigInt(liquidity)
+    this._sqrtRatioX96 = bigIntFromBigintIsh(sqrtRatioX96)
+    this._liquidity = bigIntFromBigintIsh(liquidity)
     this.tickCurrent = tickCurrent
     this.tickDataProvider = Array.isArray(ticks) ? new TickListDataProvider(ticks, TICK_SPACINGS[fee]) : ticks
   }
@@ -109,12 +116,7 @@ export class Pool {
   public get token0Price(): Price<Token, Token> {
     return (
       this._token0Price ??
-      (this._token0Price = new Price(
-        this.token0,
-        this.token1,
-        Q192,
-        JSBI.multiply(this.sqrtRatioX96, this.sqrtRatioX96)
-      ))
+      (this._token0Price = new Price(this.token0, this.token1, Q192_BIGINT, this._sqrtRatioX96 * this._sqrtRatioX96))
     )
   }
 
@@ -124,12 +126,7 @@ export class Pool {
   public get token1Price(): Price<Token, Token> {
     return (
       this._token1Price ??
-      (this._token1Price = new Price(
-        this.token1,
-        this.token0,
-        JSBI.multiply(this.sqrtRatioX96, this.sqrtRatioX96),
-        Q192
-      ))
+      (this._token1Price = new Price(this.token1, this.token0, this._sqrtRatioX96 * this._sqrtRatioX96, Q192_BIGINT))
     )
   }
 
@@ -158,21 +155,24 @@ export class Pool {
    */
   public async getOutputAmount(
     inputAmount: CurrencyAmount<Token>,
-    sqrtPriceLimitX96?: JSBI
+    sqrtPriceLimitX96?: bigint | JSBI
   ): Promise<[CurrencyAmount<Token>, Pool]> {
     invariant(this.involvesToken(inputAmount.currency), 'TOKEN')
 
     const zeroForOne = inputAmount.currency.equals(this.token0)
 
-    const { amountCalculated: outputAmount, sqrtRatioX96, liquidity, tickCurrent } = await this.swap(
-      zeroForOne,
-      inputAmount.quotient,
-      sqrtPriceLimitX96
-    )
+    const {
+      amountCalculated: outputAmount,
+      sqrtRatioX96,
+      liquidity,
+      tickCurrent,
+    } = await this.swap(zeroForOne, inputAmount.quotient, sqrtPriceLimitX96)
     const outputToken = zeroForOne ? this.token1 : this.token0
+
+    const negation = BigInt(outputAmount.toString(10)) * -1n
     return [
-      CurrencyAmount.fromRawAmount(outputToken, JSBI.multiply(outputAmount, NEGATIVE_ONE)),
-      new Pool(this.token0, this.token1, this.fee, sqrtRatioX96, liquidity, tickCurrent, this.tickDataProvider)
+      CurrencyAmount.fromRawAmount(outputToken, negation),
+      new Pool(this.token0, this.token1, this.fee, sqrtRatioX96, liquidity, tickCurrent, this.tickDataProvider),
     ]
   }
 
@@ -184,21 +184,22 @@ export class Pool {
    */
   public async getInputAmount(
     outputAmount: CurrencyAmount<Token>,
-    sqrtPriceLimitX96?: JSBI
+    sqrtPriceLimitX96?: bigint | JSBI
   ): Promise<[CurrencyAmount<Token>, Pool]> {
     invariant(outputAmount.currency.isToken && this.involvesToken(outputAmount.currency), 'TOKEN')
 
     const zeroForOne = outputAmount.currency.equals(this.token1)
 
-    const { amountCalculated: inputAmount, sqrtRatioX96, liquidity, tickCurrent } = await this.swap(
-      zeroForOne,
-      JSBI.multiply(outputAmount.quotient, NEGATIVE_ONE),
-      sqrtPriceLimitX96
-    )
+    const {
+      amountCalculated: inputAmount,
+      sqrtRatioX96,
+      liquidity,
+      tickCurrent,
+    } = await this.swap(zeroForOne, outputAmount.quotientBigInt * -1n, sqrtPriceLimitX96)
     const inputToken = zeroForOne ? this.token0 : this.token1
     return [
       CurrencyAmount.fromRawAmount(inputToken, inputAmount),
-      new Pool(this.token0, this.token1, this.fee, sqrtRatioX96, liquidity, tickCurrent, this.tickDataProvider)
+      new Pool(this.token0, this.token1, this.fee, sqrtRatioX96, liquidity, tickCurrent, this.tickDataProvider),
     ]
   }
 
@@ -212,38 +213,39 @@ export class Pool {
    * @returns liquidity
    * @returns tickCurrent
    */
-  private async swap(
+  private async swap<T extends bigint | JSBI>(
     zeroForOne: boolean,
-    amountSpecified: JSBI,
-    sqrtPriceLimitX96?: JSBI
-  ): Promise<{ amountCalculated: JSBI; sqrtRatioX96: JSBI; liquidity: JSBI; tickCurrent: number }> {
-    if (!sqrtPriceLimitX96)
-      sqrtPriceLimitX96 = zeroForOne
-        ? JSBI.add(TickMath.MIN_SQRT_RATIO, ONE)
-        : JSBI.subtract(TickMath.MAX_SQRT_RATIO, ONE)
+    _amountSpecified: T,
+    _sqrtPriceLimitX96?: T
+  ): Promise<{ amountCalculated: T; sqrtRatioX96: T; liquidity: T; tickCurrent: number }> {
+    const amountSpecified = bigIntFromBigintIsh(_amountSpecified)
+    const defaultSqrtPriceLimitX96 = zeroForOne
+      ? TickMath.MIN_SQRT_RATIO_BIGINT + 1n
+      : TickMath.MAX_SQRT_RATIO_BIGINT - 1n
+    const sqrtPriceLimitX96 = _sqrtPriceLimitX96 ? bigIntFromBigintIsh(_sqrtPriceLimitX96) : defaultSqrtPriceLimitX96
 
     if (zeroForOne) {
-      invariant(JSBI.greaterThan(sqrtPriceLimitX96, TickMath.MIN_SQRT_RATIO), 'RATIO_MIN')
-      invariant(JSBI.lessThan(sqrtPriceLimitX96, this.sqrtRatioX96), 'RATIO_CURRENT')
+      invariant(sqrtPriceLimitX96 > TickMath.MIN_SQRT_RATIO_BIGINT, 'RATIO_MIN')
+      invariant(sqrtPriceLimitX96 < this._sqrtRatioX96, 'RATIO_CURRENT')
     } else {
-      invariant(JSBI.lessThan(sqrtPriceLimitX96, TickMath.MAX_SQRT_RATIO), 'RATIO_MAX')
-      invariant(JSBI.greaterThan(sqrtPriceLimitX96, this.sqrtRatioX96), 'RATIO_CURRENT')
+      invariant(sqrtPriceLimitX96 < TickMath.MAX_SQRT_RATIO_BIGINT, 'RATIO_MAX')
+      invariant(sqrtPriceLimitX96 > this._sqrtRatioX96, 'RATIO_CURRENT')
     }
 
-    const exactInput = JSBI.greaterThanOrEqual(amountSpecified, ZERO)
+    const exactInput = amountSpecified >= 0n
 
     // keep track of swap state
 
     const state = {
       amountSpecifiedRemaining: amountSpecified,
-      amountCalculated: ZERO,
-      sqrtPriceX96: this.sqrtRatioX96,
+      amountCalculated: 0n,
+      sqrtPriceX96: this._sqrtRatioX96,
       tick: this.tickCurrent,
-      liquidity: this.liquidity
+      liquidity: this._liquidity,
     }
 
     // start swap while loop
-    while (JSBI.notEqual(state.amountSpecifiedRemaining, ZERO) && state.sqrtPriceX96 != sqrtPriceLimitX96) {
+    while (state.amountSpecifiedRemaining !== 0n && state.sqrtPriceX96 !== sqrtPriceLimitX96) {
       let step: Partial<StepComputations> = {}
       step.sqrtPriceStartX96 = state.sqrtPriceX96
 
@@ -262,12 +264,10 @@ export class Pool {
         step.tickNext = TickMath.MAX_TICK
       }
 
-      step.sqrtPriceNextX96 = TickMath.getSqrtRatioAtTick(step.tickNext)
+      step.sqrtPriceNextX96 = TickMath.getSqrtRatioAtTickBigInt(step.tickNext)
       ;[state.sqrtPriceX96, step.amountIn, step.amountOut, step.feeAmount] = SwapMath.computeSwapStep(
         state.sqrtPriceX96,
-        (zeroForOne
-        ? JSBI.lessThan(step.sqrtPriceNextX96, sqrtPriceLimitX96)
-        : JSBI.greaterThan(step.sqrtPriceNextX96, sqrtPriceLimitX96))
+        (zeroForOne ? step.sqrtPriceNextX96 < sqrtPriceLimitX96 : step.sqrtPriceNextX96 > sqrtPriceLimitX96)
           ? sqrtPriceLimitX96
           : step.sqrtPriceNextX96,
         state.liquidity,
@@ -276,41 +276,47 @@ export class Pool {
       )
 
       if (exactInput) {
-        state.amountSpecifiedRemaining = JSBI.subtract(
-          state.amountSpecifiedRemaining,
-          JSBI.add(step.amountIn, step.feeAmount)
-        )
-        state.amountCalculated = JSBI.subtract(state.amountCalculated, step.amountOut)
+        state.amountSpecifiedRemaining = state.amountSpecifiedRemaining - (step.amountIn + step.feeAmount)
+        state.amountCalculated = state.amountCalculated - step.amountOut
       } else {
-        state.amountSpecifiedRemaining = JSBI.add(state.amountSpecifiedRemaining, step.amountOut)
-        state.amountCalculated = JSBI.add(state.amountCalculated, JSBI.add(step.amountIn, step.feeAmount))
+        state.amountSpecifiedRemaining = state.amountSpecifiedRemaining + step.amountOut
+        state.amountCalculated = state.amountCalculated + (step.amountIn + step.feeAmount)
       }
 
       // TODO
-      if (JSBI.equal(state.sqrtPriceX96, step.sqrtPriceNextX96)) {
+      if (state.sqrtPriceX96 === step.sqrtPriceNextX96) {
         // if the tick is initialized, run the tick transition
         if (step.initialized) {
-          let liquidityNet = JSBI.BigInt((await this.tickDataProvider.getTick(step.tickNext)).liquidityNet)
+          let liquidityNet = bigIntFromBigintIsh((await this.tickDataProvider.getTick(step.tickNext)).liquidityNet)
           // if we're moving leftward, we interpret liquidityNet as the opposite sign
           // safe because liquidityNet cannot be type(int128).min
-          if (zeroForOne) liquidityNet = JSBI.multiply(liquidityNet, NEGATIVE_ONE)
+          if (zeroForOne) liquidityNet = liquidityNet * -1n
 
           state.liquidity = LiquidityMath.addDelta(state.liquidity, liquidityNet)
         }
 
         state.tick = zeroForOne ? step.tickNext - 1 : step.tickNext
-      } else if (JSBI.notEqual(state.sqrtPriceX96, step.sqrtPriceStartX96)) {
+      } else if (state.sqrtPriceX96 !== step.sqrtPriceStartX96) {
         // updated comparison function
         // recompute unless we're on a lower tick boundary (i.e. already transitioned ticks), and haven't moved
         state.tick = TickMath.getTickAtSqrtRatio(state.sqrtPriceX96)
       }
     }
 
-    return {
-      amountCalculated: state.amountCalculated,
-      sqrtRatioX96: state.sqrtPriceX96,
-      liquidity: state.liquidity,
-      tickCurrent: state.tick
+    if (typeof _amountSpecified === 'bigint') {
+      return {
+        amountCalculated: state.amountCalculated as T,
+        sqrtRatioX96: state.sqrtPriceX96 as T,
+        liquidity: state.liquidity as T,
+        tickCurrent: state.tick,
+      }
+    } else {
+      return {
+        amountCalculated: JSBI.BigInt(state.amountCalculated.toString(10)) as T,
+        sqrtRatioX96: JSBI.BigInt(state.sqrtPriceX96.toString(10)) as T,
+        liquidity: JSBI.BigInt(state.liquidity.toString(10)) as T,
+        tickCurrent: state.tick,
+      }
     }
   }
 
diff --git a/src/entities/position.ts b/src/entities/position.ts
index 011f5bea..c4e823cb 100644
--- a/src/entities/position.ts
+++ b/src/entities/position.ts
@@ -1,4 +1,4 @@
-import { BigintIsh, MaxUint256, Percent, Price, CurrencyAmount, Token } from '@uniswap/sdk-core'
+import { BigintIsh, Percent, Price, CurrencyAmount, Token, MaxUint256BigInt } from '@uniswap/sdk-core'
 import JSBI from 'jsbi'
 import invariant from 'tiny-invariant'
 import { ZERO } from '../internalConstants'
@@ -6,7 +6,7 @@ import { maxLiquidityForAmounts } from '../utils/maxLiquidityForAmounts'
 import { tickToPrice } from '../utils/priceTickConversions'
 import { SqrtPriceMath } from '../utils/sqrtPriceMath'
 import { TickMath } from '../utils/tickMath'
-import { encodeSqrtRatioX96 } from '../utils/encodeSqrtRatioX96'
+import { encodeSqrtRatioX96BigInt } from '../utils/encodeSqrtRatioX96'
 import { Pool } from './pool'
 
 interface PositionConstructorArgs {
@@ -23,12 +23,15 @@ export class Position {
   public readonly pool: Pool
   public readonly tickLower: number
   public readonly tickUpper: number
-  public readonly liquidity: JSBI
+  public get liquidity(): JSBI {
+    return JSBI.BigInt(this._liquidity.toString(10))
+  }
+  public readonly _liquidity: bigint
 
   // cached resuts for the getters
   private _token0Amount: CurrencyAmount<Token> | null = null
   private _token1Amount: CurrencyAmount<Token> | null = null
-  private _mintAmounts: Readonly<{ amount0: JSBI; amount1: JSBI }> | null = null
+  private _mintAmounts: Readonly<{ amount0: bigint; amount1: bigint }> | null = null
 
   /**
    * Constructs a position for a given pool with the given liquidity
@@ -45,7 +48,11 @@ export class Position {
     this.pool = pool
     this.tickLower = tickLower
     this.tickUpper = tickUpper
-    this.liquidity = JSBI.BigInt(liquidity)
+    if (typeof liquidity === 'bigint') {
+      this._liquidity = BigInt(liquidity)
+    } else {
+      this._liquidity = BigInt(liquidity.toString(10))
+    }
   }
 
   /**
@@ -71,9 +78,9 @@ export class Position {
         this._token0Amount = CurrencyAmount.fromRawAmount(
           this.pool.token0,
           SqrtPriceMath.getAmount0Delta(
-            TickMath.getSqrtRatioAtTick(this.tickLower),
-            TickMath.getSqrtRatioAtTick(this.tickUpper),
-            this.liquidity,
+            TickMath.getSqrtRatioAtTickBigInt(this.tickLower),
+            TickMath.getSqrtRatioAtTickBigInt(this.tickUpper),
+            this._liquidity,
             false
           )
         )
@@ -81,9 +88,9 @@ export class Position {
         this._token0Amount = CurrencyAmount.fromRawAmount(
           this.pool.token0,
           SqrtPriceMath.getAmount0Delta(
-            this.pool.sqrtRatioX96,
-            TickMath.getSqrtRatioAtTick(this.tickUpper),
-            this.liquidity,
+            this.pool._sqrtRatioX96,
+            TickMath.getSqrtRatioAtTickBigInt(this.tickUpper),
+            this._liquidity,
             false
           )
         )
@@ -105,9 +112,9 @@ export class Position {
         this._token1Amount = CurrencyAmount.fromRawAmount(
           this.pool.token1,
           SqrtPriceMath.getAmount1Delta(
-            TickMath.getSqrtRatioAtTick(this.tickLower),
-            this.pool.sqrtRatioX96,
-            this.liquidity,
+            TickMath.getSqrtRatioAtTickBigInt(this.tickLower),
+            this.pool._sqrtRatioX96,
+            this._liquidity,
             false
           )
         )
@@ -115,9 +122,9 @@ export class Position {
         this._token1Amount = CurrencyAmount.fromRawAmount(
           this.pool.token1,
           SqrtPriceMath.getAmount1Delta(
-            TickMath.getSqrtRatioAtTick(this.tickLower),
-            TickMath.getSqrtRatioAtTick(this.tickUpper),
-            this.liquidity,
+            TickMath.getSqrtRatioAtTickBigInt(this.tickLower),
+            TickMath.getSqrtRatioAtTickBigInt(this.tickUpper),
+            this._liquidity,
             false
           )
         )
@@ -131,20 +138,23 @@ export class Position {
    * @param slippageTolerance The amount by which the price can 'slip' before the transaction will revert
    * @returns The sqrt ratios after slippage
    */
-  private ratiosAfterSlippage(slippageTolerance: Percent): { sqrtRatioX96Lower: JSBI; sqrtRatioX96Upper: JSBI } {
+  private ratiosAfterSlippage(slippageTolerance: Percent): {
+    sqrtRatioX96Lower: bigint
+    sqrtRatioX96Upper: bigint
+  } {
     const priceLower = this.pool.token0Price.asFraction.multiply(new Percent(1).subtract(slippageTolerance))
     const priceUpper = this.pool.token0Price.asFraction.multiply(slippageTolerance.add(1))
-    let sqrtRatioX96Lower = encodeSqrtRatioX96(priceLower.numerator, priceLower.denominator)
-    if (JSBI.lessThanOrEqual(sqrtRatioX96Lower, TickMath.MIN_SQRT_RATIO)) {
-      sqrtRatioX96Lower = JSBI.add(TickMath.MIN_SQRT_RATIO, JSBI.BigInt(1))
+    let sqrtRatioX96Lower = encodeSqrtRatioX96BigInt(priceLower._numerator, priceLower._denominator)
+    if (sqrtRatioX96Lower <= TickMath.MIN_SQRT_RATIO_BIGINT) {
+      sqrtRatioX96Lower = TickMath.MIN_SQRT_RATIO_BIGINT + 1n
     }
-    let sqrtRatioX96Upper = encodeSqrtRatioX96(priceUpper.numerator, priceUpper.denominator)
-    if (JSBI.greaterThanOrEqual(sqrtRatioX96Upper, TickMath.MAX_SQRT_RATIO)) {
-      sqrtRatioX96Upper = JSBI.subtract(TickMath.MAX_SQRT_RATIO, JSBI.BigInt(1))
+    let sqrtRatioX96Upper = encodeSqrtRatioX96BigInt(priceUpper._numerator, priceUpper._denominator)
+    if (sqrtRatioX96Upper >= TickMath.MAX_SQRT_RATIO_BIGINT) {
+      sqrtRatioX96Upper = TickMath.MAX_SQRT_RATIO_BIGINT - 1n
     }
     return {
       sqrtRatioX96Lower,
-      sqrtRatioX96Upper
+      sqrtRatioX96Upper,
     }
   }
 
@@ -154,7 +164,7 @@ export class Position {
    * @param slippageTolerance Tolerance of unfavorable slippage from the current price
    * @returns The amounts, with slippage
    */
-  public mintAmountsWithSlippage(slippageTolerance: Percent): Readonly<{ amount0: JSBI; amount1: JSBI }> {
+  public mintAmountsWithSlippageBigInt(slippageTolerance: Percent): Readonly<{ amount0: bigint; amount1: bigint }> {
     // get lower/upper prices
     const { sqrtRatioX96Upper, sqrtRatioX96Lower } = this.ratiosAfterSlippage(slippageTolerance)
 
@@ -181,8 +191,8 @@ export class Position {
       pool: this.pool,
       tickLower: this.tickLower,
       tickUpper: this.tickUpper,
-      ...this.mintAmounts, // the mint amounts are what will be passed as calldata
-      useFullPrecision: false
+      ...this.mintAmountsBigInt, // the mint amounts are what will be passed as calldata
+      useFullPrecision: false,
     })
 
     // we want the smaller amounts...
@@ -191,18 +201,32 @@ export class Position {
       pool: poolUpper,
       liquidity: positionThatWillBeCreated.liquidity,
       tickLower: this.tickLower,
-      tickUpper: this.tickUpper
-    }).mintAmounts
+      tickUpper: this.tickUpper,
+    }).mintAmountsBigInt
     // ...and the lower for amount1
     const { amount1 } = new Position({
       pool: poolLower,
       liquidity: positionThatWillBeCreated.liquidity,
       tickLower: this.tickLower,
-      tickUpper: this.tickUpper
-    }).mintAmounts
+      tickUpper: this.tickUpper,
+    }).mintAmountsBigInt
 
     return { amount0, amount1 }
   }
+  /**
+   * Returns the minimum amounts that must be sent in order to safely mint the amount of liquidity held by the position
+   * with the given slippage tolerance
+   * @param slippageTolerance Tolerance of unfavorable slippage from the current price
+   * @returns The amounts, with slippage
+   */
+  public mintAmountsWithSlippage(slippageTolerance: Percent): Readonly<{ amount0: JSBI; amount1: JSBI }> {
+    const bigInts = this.mintAmountsWithSlippageBigInt(slippageTolerance)
+
+    return {
+      amount0: JSBI.BigInt(bigInts.amount0.toString(10)),
+      amount1: JSBI.BigInt(bigInts.amount1.toString(10)),
+    }
+  }
 
   /**
    * Returns the minimum amounts that should be requested in order to safely burn the amount of liquidity held by the
@@ -210,7 +234,7 @@ export class Position {
    * @param slippageTolerance tolerance of unfavorable slippage from the current price
    * @returns The amounts, with slippage
    */
-  public burnAmountsWithSlippage(slippageTolerance: Percent): Readonly<{ amount0: JSBI; amount1: JSBI }> {
+  public burnAmountsWithSlippageBigInt(slippageTolerance: Percent): Readonly<{ amount0: bigint; amount1: bigint }> {
     // get lower/upper prices
     const { sqrtRatioX96Upper, sqrtRatioX96Lower } = this.ratiosAfterSlippage(slippageTolerance)
 
@@ -238,64 +262,87 @@ export class Position {
       pool: poolUpper,
       liquidity: this.liquidity,
       tickLower: this.tickLower,
-      tickUpper: this.tickUpper
+      tickUpper: this.tickUpper,
     }).amount0
     // ...and the lower for amount1
     const amount1 = new Position({
       pool: poolLower,
       liquidity: this.liquidity,
       tickLower: this.tickLower,
-      tickUpper: this.tickUpper
+      tickUpper: this.tickUpper,
     }).amount1
 
-    return { amount0: amount0.quotient, amount1: amount1.quotient }
+    return { amount0: amount0.quotientBigInt, amount1: amount1.quotientBigInt }
+  }
+  /**
+   * Returns the minimum amounts that should be requested in order to safely burn the amount of liquidity held by the
+   * position with the given slippage tolerance
+   * @param slippageTolerance tolerance of unfavorable slippage from the current price
+   * @returns The amounts, with slippage
+   */
+  public burnAmountsWithSlippage(slippageTolerance: Percent): Readonly<{ amount0: JSBI; amount1: JSBI }> {
+    const bigInts = this.burnAmountsWithSlippageBigInt(slippageTolerance)
+
+    return {
+      amount0: JSBI.BigInt(bigInts.amount0.toString(10)),
+      amount1: JSBI.BigInt(bigInts.amount1.toString(10)),
+    }
   }
 
   /**
    * Returns the minimum amounts that must be sent in order to mint the amount of liquidity held by the position at
    * the current price for the pool
    */
-  public get mintAmounts(): Readonly<{ amount0: JSBI; amount1: JSBI }> {
+  public get mintAmountsBigInt(): Readonly<{ amount0: bigint; amount1: bigint }> {
     if (this._mintAmounts === null) {
       if (this.pool.tickCurrent < this.tickLower) {
         return {
           amount0: SqrtPriceMath.getAmount0Delta(
-            TickMath.getSqrtRatioAtTick(this.tickLower),
-            TickMath.getSqrtRatioAtTick(this.tickUpper),
-            this.liquidity,
+            TickMath.getSqrtRatioAtTickBigInt(this.tickLower),
+            TickMath.getSqrtRatioAtTickBigInt(this.tickUpper),
+            this._liquidity,
             true
           ),
-          amount1: ZERO
+          amount1: 0n,
         }
       } else if (this.pool.tickCurrent < this.tickUpper) {
         return {
           amount0: SqrtPriceMath.getAmount0Delta(
-            this.pool.sqrtRatioX96,
-            TickMath.getSqrtRatioAtTick(this.tickUpper),
-            this.liquidity,
+            this.pool._sqrtRatioX96,
+            TickMath.getSqrtRatioAtTickBigInt(this.tickUpper),
+            this._liquidity,
             true
           ),
           amount1: SqrtPriceMath.getAmount1Delta(
-            TickMath.getSqrtRatioAtTick(this.tickLower),
-            this.pool.sqrtRatioX96,
-            this.liquidity,
+            TickMath.getSqrtRatioAtTickBigInt(this.tickLower),
+            this.pool._sqrtRatioX96,
+            this._liquidity,
             true
-          )
+          ),
         }
       } else {
         return {
-          amount0: ZERO,
+          amount0: 0n,
           amount1: SqrtPriceMath.getAmount1Delta(
-            TickMath.getSqrtRatioAtTick(this.tickLower),
-            TickMath.getSqrtRatioAtTick(this.tickUpper),
-            this.liquidity,
+            TickMath.getSqrtRatioAtTickBigInt(this.tickLower),
+            TickMath.getSqrtRatioAtTickBigInt(this.tickUpper),
+            this._liquidity,
             true
-          )
+          ),
         }
       }
     }
     return this._mintAmounts
   }
+  /**
+   * Returns the minimum amounts that must be sent in order to mint the amount of liquidity held by the position at
+   * the current price for the pool
+   */
+  public get mintAmounts(): Readonly<{ amount0: JSBI; amount1: JSBI }> {
+    const bigInts = this.mintAmountsBigInt
+
+    return { amount0: JSBI.BigInt(bigInts.amount0.toString(10)), amount1: JSBI.BigInt(bigInts.amount1.toString(10)) }
+  }
 
   /**
    * Computes the maximum amount of liquidity received for a given amount of token0, token1,
@@ -315,7 +362,7 @@ export class Position {
     tickUpper,
     amount0,
     amount1,
-    useFullPrecision
+    useFullPrecision,
   }: {
     pool: Pool
     tickLower: number
@@ -324,20 +371,20 @@ export class Position {
     amount1: BigintIsh
     useFullPrecision: boolean
   }) {
-    const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower)
-    const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper)
+    const sqrtRatioAX96 = TickMath.getSqrtRatioAtTickBigInt(tickLower)
+    const sqrtRatioBX96 = TickMath.getSqrtRatioAtTickBigInt(tickUpper)
     return new Position({
       pool,
       tickLower,
       tickUpper,
       liquidity: maxLiquidityForAmounts(
-        pool.sqrtRatioX96,
+        pool._sqrtRatioX96,
         sqrtRatioAX96,
         sqrtRatioBX96,
         amount0,
         amount1,
         useFullPrecision
-      )
+      ),
     })
   }
 
@@ -356,7 +403,7 @@ export class Position {
     tickLower,
     tickUpper,
     amount0,
-    useFullPrecision
+    useFullPrecision,
   }: {
     pool: Pool
     tickLower: number
@@ -364,7 +411,7 @@ export class Position {
     amount0: BigintIsh
     useFullPrecision: boolean
   }) {
-    return Position.fromAmounts({ pool, tickLower, tickUpper, amount0, amount1: MaxUint256, useFullPrecision })
+    return Position.fromAmounts({ pool, tickLower, tickUpper, amount0, amount1: MaxUint256BigInt, useFullPrecision })
   }
 
   /**
@@ -379,7 +426,7 @@ export class Position {
     pool,
     tickLower,
     tickUpper,
-    amount1
+    amount1,
   }: {
     pool: Pool
     tickLower: number
@@ -387,6 +434,13 @@ export class Position {
     amount1: BigintIsh
   }) {
     // this function always uses full precision,
-    return Position.fromAmounts({ pool, tickLower, tickUpper, amount0: MaxUint256, amount1, useFullPrecision: true })
+    return Position.fromAmounts({
+      pool,
+      tickLower,
+      tickUpper,
+      amount0: MaxUint256BigInt,
+      amount1,
+      useFullPrecision: true,
+    })
   }
 }
diff --git a/src/entities/route.ts b/src/entities/route.ts
index 2cbadc90..7b7d6ff8 100644
--- a/src/entities/route.ts
+++ b/src/entities/route.ts
@@ -26,7 +26,7 @@ export class Route<TInput extends Currency, TOutput extends Currency> {
     invariant(pools.length > 0, 'POOLS')
 
     const chainId = pools[0].chainId
-    const allOnSameChain = pools.every(pool => pool.chainId === chainId)
+    const allOnSameChain = pools.every((pool) => pool.chainId === chainId)
     invariant(allOnSameChain, 'CHAIN_IDS')
 
     const wrappedInput = input.wrapped
@@ -66,21 +66,21 @@ export class Route<TInput extends Currency, TOutput extends Currency> {
         return nextInput.equals(pool.token0)
           ? {
               nextInput: pool.token1,
-              price: price.multiply(pool.token0Price)
+              price: price.multiply(pool.token0Price),
             }
           : {
               nextInput: pool.token0,
-              price: price.multiply(pool.token1Price)
+              price: price.multiply(pool.token1Price),
             }
       },
       this.pools[0].token0.equals(this.input.wrapped)
         ? {
             nextInput: this.pools[0].token1,
-            price: this.pools[0].token0Price
+            price: this.pools[0].token0Price,
           }
         : {
             nextInput: this.pools[0].token0,
-            price: this.pools[0].token1Price
+            price: this.pools[0].token1Price,
           }
     ).price
 
diff --git a/src/entities/tick.ts b/src/entities/tick.ts
index 95fbd0a6..de537cfd 100644
--- a/src/entities/tick.ts
+++ b/src/entities/tick.ts
@@ -2,6 +2,7 @@ import JSBI from 'jsbi'
 import invariant from 'tiny-invariant'
 import { BigintIsh } from '@uniswap/sdk-core'
 import { TickMath } from '../utils'
+import { bigIntFromBigintIsh } from 'src/utils/bigintIsh'
 
 export interface TickConstructorArgs {
   index: number
@@ -11,13 +12,19 @@ export interface TickConstructorArgs {
 
 export class Tick {
   public readonly index: number
-  public readonly liquidityGross: JSBI
-  public readonly liquidityNet: JSBI
+  public get liquidityGross(): JSBI {
+    return JSBI.BigInt(this._liquidityGross.toString(10))
+  }
+  public get liquidityNet(): JSBI {
+    return JSBI.BigInt(this._liquidityNet.toString(10))
+  }
+  public readonly _liquidityGross: bigint
+  public readonly _liquidityNet: bigint
 
   constructor({ index, liquidityGross, liquidityNet }: TickConstructorArgs) {
     invariant(index >= TickMath.MIN_TICK && index <= TickMath.MAX_TICK, 'TICK')
     this.index = index
-    this.liquidityGross = JSBI.BigInt(liquidityGross)
-    this.liquidityNet = JSBI.BigInt(liquidityNet)
+    this._liquidityGross = bigIntFromBigintIsh(liquidityGross)
+    this._liquidityNet = bigIntFromBigintIsh(liquidityNet)
   }
 }
diff --git a/src/entities/tickListDataProvider.ts b/src/entities/tickListDataProvider.ts
index 370504d1..c226e5ae 100644
--- a/src/entities/tickListDataProvider.ts
+++ b/src/entities/tickListDataProvider.ts
@@ -10,7 +10,7 @@ export class TickListDataProvider implements TickDataProvider {
   private ticks: readonly Tick[]
 
   constructor(ticks: (Tick | TickConstructorArgs)[], tickSpacing: number) {
-    const ticksMapped: Tick[] = ticks.map(t => (t instanceof Tick ? t : new Tick(t)))
+    const ticksMapped: Tick[] = ticks.map((t) => (t instanceof Tick ? t : new Tick(t)))
     TickList.validateList(ticksMapped, tickSpacing)
     this.ticks = ticksMapped
   }
diff --git a/src/entities/trade.ts b/src/entities/trade.ts
index 1420ad2d..aabb990c 100644
--- a/src/entities/trade.ts
+++ b/src/entities/trade.ts
@@ -259,7 +259,7 @@ export class Trade<TInput extends Currency, TOutput extends Currency, TTradeType
 
     return new Trade({
       routes: [{ inputAmount, outputAmount, route }],
-      tradeType
+      tradeType,
     })
   }
 
@@ -330,7 +330,7 @@ export class Trade<TInput extends Currency, TOutput extends Currency, TTradeType
 
     return new Trade({
       routes: populatedRoutes,
-      tradeType
+      tradeType,
     })
   }
 
@@ -359,9 +359,9 @@ export class Trade<TInput extends Currency, TOutput extends Currency, TTradeType
         {
           inputAmount: constructorArguments.inputAmount,
           outputAmount: constructorArguments.outputAmount,
-          route: constructorArguments.route
-        }
-      ]
+          route: constructorArguments.route,
+        },
+      ],
     })
   }
 
@@ -396,7 +396,7 @@ export class Trade<TInput extends Currency, TOutput extends Currency, TTradeType
    */
   private constructor({
     routes,
-    tradeType
+    tradeType,
   }: {
     routes: {
       route: Route<TInput, TOutput>
@@ -518,7 +518,7 @@ export class Trade<TInput extends Currency, TOutput extends Currency, TTradeType
         ;[amountOut] = await pool.getOutputAmount(amountIn)
       } catch (error) {
         // input too low
-        if (error.isInsufficientInputAmountError) {
+        if ((error as any).isInsufficientInputAmountError) {
           continue
         }
         throw error
@@ -545,7 +545,7 @@ export class Trade<TInput extends Currency, TOutput extends Currency, TTradeType
           currencyOut,
           {
             maxNumResults,
-            maxHops: maxHops - 1
+            maxHops: maxHops - 1,
           },
           [...currentPools, pool],
           amountOut,
@@ -599,7 +599,7 @@ export class Trade<TInput extends Currency, TOutput extends Currency, TTradeType
         ;[amountIn] = await pool.getInputAmount(amountOut)
       } catch (error) {
         // not enough liquidity in this pool
-        if (error.isInsufficientReservesError) {
+        if ((error as any).isInsufficientReservesError) {
           continue
         }
         throw error
@@ -626,7 +626,7 @@ export class Trade<TInput extends Currency, TOutput extends Currency, TTradeType
           currencyAmountOut,
           {
             maxNumResults,
-            maxHops: maxHops - 1
+            maxHops: maxHops - 1,
           },
           [pool, ...currentPools],
           amountIn,
diff --git a/src/internalConstants.ts b/src/internalConstants.ts
index 97e66505..cebf0f1a 100644
--- a/src/internalConstants.ts
+++ b/src/internalConstants.ts
@@ -8,3 +8,5 @@ export const ONE = JSBI.BigInt(1)
 // used in liquidity amount math
 export const Q96 = JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(96))
 export const Q192 = JSBI.exponentiate(Q96, JSBI.BigInt(2))
+export const Q96_BIGINT = 2n ** 96n
+export const Q192_BIGINT = 2n ** 192n
diff --git a/src/nonfungiblePositionManager.ts b/src/nonfungiblePositionManager.ts
index acdf0a0d..f633381b 100644
--- a/src/nonfungiblePositionManager.ts
+++ b/src/nonfungiblePositionManager.ts
@@ -5,12 +5,10 @@ import {
   CurrencyAmount,
   validateAndParseAddress,
   Currency,
-  NativeCurrency
+  NativeCurrency,
 } from '@uniswap/sdk-core'
-import JSBI from 'jsbi'
 import invariant from 'tiny-invariant'
 import { Position } from './entities/position'
-import { ONE, ZERO } from './internalConstants'
 import { MethodParameters, toHex } from './utils/calldata'
 import { Interface } from '@ethersproject/abi'
 import INonfungiblePositionManager from '@uniswap/v3-periphery/artifacts/contracts/NonfungiblePositionManager.sol/NonfungiblePositionManager.json'
@@ -20,7 +18,7 @@ import { Pool } from './entities'
 import { Multicall } from './multicall'
 import { Payments } from './payments'
 
-const MaxUint128 = toHex(JSBI.subtract(JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(128)), JSBI.BigInt(1)))
+const MaxUint128 = `0x${(2n ** 128n - 1n).toString(16)}`
 
 export interface MintSpecificOptions {
   /**
@@ -99,7 +97,7 @@ export interface SafeTransferOptions {
 
 // type guard
 function isMint(options: AddLiquidityOptions): options is MintOptions {
-  return Object.keys(options).some(k => k === 'recipient')
+  return Object.keys(options).some((k) => k === 'recipient')
 }
 
 export interface CollectOptions {
@@ -185,24 +183,24 @@ export abstract class NonfungiblePositionManager {
       pool.token0.address,
       pool.token1.address,
       pool.fee,
-      toHex(pool.sqrtRatioX96)
+      toHex(pool.sqrtRatioX96),
     ])
   }
 
   public static createCallParameters(pool: Pool): MethodParameters {
     return {
       calldata: this.encodeCreate(pool),
-      value: toHex(0)
+      value: toHex(0),
     }
   }
 
   public static addCallParameters(position: Position, options: AddLiquidityOptions): MethodParameters {
-    invariant(JSBI.greaterThan(position.liquidity, ZERO), 'ZERO_LIQUIDITY')
+    invariant(position._liquidity > 0n, 'ZERO_LIQUIDITY')
 
     const calldatas: string[] = []
 
     // get amounts
-    const { amount0: amount0Desired, amount1: amount1Desired } = position.mintAmounts
+    const { amount0: amount0Desired, amount1: amount1Desired } = position.mintAmountsBigInt
 
     // adjust for slippage
     const minimumAmounts = position.mintAmountsWithSlippage(options.slippageTolerance)
@@ -241,8 +239,8 @@ export abstract class NonfungiblePositionManager {
             amount0Min,
             amount1Min,
             recipient,
-            deadline
-          }
+            deadline,
+          },
         ])
       )
     } else {
@@ -255,8 +253,8 @@ export abstract class NonfungiblePositionManager {
             amount1Desired: toHex(amount1Desired),
             amount0Min,
             amount1Min,
-            deadline
-          }
+            deadline,
+          },
         ])
       )
     }
@@ -270,7 +268,7 @@ export abstract class NonfungiblePositionManager {
       const wrappedValue = position.pool.token0.equals(wrapped) ? amount0Desired : amount1Desired
 
       // we only need to refund if we're actually sending ETH
-      if (JSBI.greaterThan(wrappedValue, ZERO)) {
+      if (wrappedValue > 0n) {
         calldatas.push(Payments.encodeRefundETH())
       }
 
@@ -279,7 +277,7 @@ export abstract class NonfungiblePositionManager {
 
     return {
       calldata: Multicall.encodeMulticall(calldatas),
-      value
+      value,
     }
   }
 
@@ -300,8 +298,8 @@ export abstract class NonfungiblePositionManager {
           tokenId,
           recipient: involvesETH ? ADDRESS_ZERO : recipient,
           amount0Max: MaxUint128,
-          amount1Max: MaxUint128
-        }
+          amount1Max: MaxUint128,
+        },
       ])
     )
 
@@ -328,7 +326,7 @@ export abstract class NonfungiblePositionManager {
 
     return {
       calldata: Multicall.encodeMulticall(calldatas),
-      value: toHex(0)
+      value: toHex(0),
     }
   }
 
@@ -349,9 +347,9 @@ export abstract class NonfungiblePositionManager {
       pool: position.pool,
       liquidity: options.liquidityPercentage.multiply(position.liquidity).quotient,
       tickLower: position.tickLower,
-      tickUpper: position.tickUpper
+      tickUpper: position.tickUpper,
     })
-    invariant(JSBI.greaterThan(partialPosition.liquidity, ZERO), 'ZERO_LIQUIDITY')
+    invariant(partialPosition._liquidity > 0n, 'ZERO_LIQUIDITY')
 
     // slippage-adjusted underlying amounts
     const { amount0: amount0Min, amount1: amount1Min } = partialPosition.burnAmountsWithSlippage(
@@ -366,7 +364,7 @@ export abstract class NonfungiblePositionManager {
           toHex(options.permit.deadline),
           options.permit.v,
           options.permit.r,
-          options.permit.s
+          options.permit.s,
         ])
       )
     }
@@ -379,8 +377,8 @@ export abstract class NonfungiblePositionManager {
           liquidity: toHex(partialPosition.liquidity),
           amount0Min: toHex(amount0Min),
           amount1Min: toHex(amount1Min),
-          deadline
-        }
+          deadline,
+        },
       ])
     )
 
@@ -395,11 +393,11 @@ export abstract class NonfungiblePositionManager {
         expectedCurrencyOwed1: expectedCurrencyOwed1.add(
           CurrencyAmount.fromRawAmount(expectedCurrencyOwed1.currency, amount1Min)
         ),
-        ...rest
+        ...rest,
       })
     )
 
-    if (options.liquidityPercentage.equalTo(ONE)) {
+    if (options.liquidityPercentage.equalTo(1n)) {
       if (options.burnToken) {
         calldatas.push(NonfungiblePositionManager.INTERFACE.encodeFunctionData('burn', [tokenId]))
       }
@@ -409,7 +407,7 @@ export abstract class NonfungiblePositionManager {
 
     return {
       calldata: Multicall.encodeMulticall(calldatas),
-      value: toHex(0)
+      value: toHex(0),
     }
   }
 
@@ -427,12 +425,12 @@ export abstract class NonfungiblePositionManager {
       calldata = NonfungiblePositionManager.INTERFACE.encodeFunctionData('safeTransferFrom(address,address,uint256)', [
         sender,
         recipient,
-        toHex(options.tokenId)
+        toHex(options.tokenId),
       ])
     }
     return {
       calldata: calldata,
-      value: toHex(0)
+      value: toHex(0),
     }
   }
 }
diff --git a/src/payments.ts b/src/payments.ts
index 5ce1ed86..78cb0583 100644
--- a/src/payments.ts
+++ b/src/payments.ts
@@ -1,7 +1,6 @@
-import JSBI from 'jsbi'
 import { Interface } from '@ethersproject/abi'
 import IPeripheryPaymentsWithFee from '@uniswap/v3-periphery/artifacts/contracts/interfaces/IPeripheryPaymentsWithFee.sol/IPeripheryPaymentsWithFee.json'
-import { Percent, Token, validateAndParseAddress } from '@uniswap/sdk-core'
+import { BigintIsh, Percent, Token, validateAndParseAddress } from '@uniswap/sdk-core'
 import { toHex } from './utils/calldata'
 
 export interface FeeOptions {
@@ -28,7 +27,7 @@ export abstract class Payments {
     return toHex(fee.multiply(10_000).quotient)
   }
 
-  public static encodeUnwrapWETH9(amountMinimum: JSBI, recipient: string, feeOptions?: FeeOptions): string {
+  public static encodeUnwrapWETH9(amountMinimum: BigintIsh, recipient: string, feeOptions?: FeeOptions): string {
     recipient = validateAndParseAddress(recipient)
 
     if (!!feeOptions) {
@@ -39,7 +38,7 @@ export abstract class Payments {
         toHex(amountMinimum),
         recipient,
         feeBips,
-        feeRecipient
+        feeRecipient,
       ])
     } else {
       return Payments.INTERFACE.encodeFunctionData('unwrapWETH9', [toHex(amountMinimum), recipient])
@@ -48,7 +47,7 @@ export abstract class Payments {
 
   public static encodeSweepToken(
     token: Token,
-    amountMinimum: JSBI,
+    amountMinimum: BigintIsh,
     recipient: string,
     feeOptions?: FeeOptions
   ): string {
@@ -63,7 +62,7 @@ export abstract class Payments {
         toHex(amountMinimum),
         recipient,
         feeBips,
-        feeRecipient
+        feeRecipient,
       ])
     } else {
       return Payments.INTERFACE.encodeFunctionData('sweepToken', [token.address, toHex(amountMinimum), recipient])
diff --git a/src/quoter.ts b/src/quoter.ts
index c3a95b47..75ccc578 100644
--- a/src/quoter.ts
+++ b/src/quoter.ts
@@ -64,12 +64,12 @@ export abstract class SwapQuoter {
         tokenIn: route.tokenPath[0].address,
         tokenOut: route.tokenPath[1].address,
         fee: route.pools[0].fee,
-        sqrtPriceLimitX96: toHex(options?.sqrtPriceLimitX96 ?? 0)
+        sqrtPriceLimitX96: toHex(options?.sqrtPriceLimitX96 ?? 0),
       }
 
       const v2QuoteParams = {
         ...baseQuoteParams,
-        ...(tradeType == TradeType.EXACT_INPUT ? { amountIn: quoteAmount } : { amount: quoteAmount })
+        ...(tradeType == TradeType.EXACT_INPUT ? { amountIn: quoteAmount } : { amount: quoteAmount }),
       }
 
       const v1QuoteParams = [
@@ -77,7 +77,7 @@ export abstract class SwapQuoter {
         baseQuoteParams.tokenOut,
         baseQuoteParams.fee,
         quoteAmount,
-        baseQuoteParams.sqrtPriceLimitX96
+        baseQuoteParams.sqrtPriceLimitX96,
       ]
 
       const tradeTypeFunctionName =
@@ -94,7 +94,7 @@ export abstract class SwapQuoter {
     }
     return {
       calldata,
-      value: toHex(0)
+      value: toHex(0),
     }
   }
 }
diff --git a/src/selfPermit.ts b/src/selfPermit.ts
index 5ba1b014..99cf9d70 100644
--- a/src/selfPermit.ts
+++ b/src/selfPermit.ts
@@ -41,7 +41,7 @@ export abstract class SelfPermit {
           toHex(options.expiry),
           options.v,
           options.r,
-          options.s
+          options.s,
         ])
       : SelfPermit.INTERFACE.encodeFunctionData('selfPermit', [
           token.address,
@@ -49,7 +49,7 @@ export abstract class SelfPermit {
           toHex(options.deadline),
           options.v,
           options.r,
-          options.s
+          options.s,
         ])
   }
 }
diff --git a/src/staker.ts b/src/staker.ts
index c559a256..137e38eb 100644
--- a/src/staker.ts
+++ b/src/staker.ts
@@ -84,7 +84,7 @@ export abstract class Staker {
     calldatas.push(
       Staker.INTERFACE.encodeFunctionData('unstakeToken', [
         this._encodeIncentiveKey(incentiveKey),
-        toHex(options.tokenId)
+        toHex(options.tokenId),
       ])
     )
     const recipient: string = validateAndParseAddress(options.recipient)
@@ -117,13 +117,13 @@ export abstract class Staker {
       calldatas.push(
         Staker.INTERFACE.encodeFunctionData('stakeToken', [
           this._encodeIncentiveKey(incentiveKey),
-          toHex(options.tokenId)
+          toHex(options.tokenId),
         ])
       )
     }
     return {
       calldata: Multicall.encodeMulticall(calldatas),
-      value: toHex(0)
+      value: toHex(0),
     }
   }
 
@@ -144,7 +144,7 @@ export abstract class Staker {
     const claimOptions = {
       tokenId: withdrawOptions.tokenId,
       recipient: withdrawOptions.recipient,
-      amount: withdrawOptions.amount
+      amount: withdrawOptions.amount,
     }
 
     for (let i = 0; i < incentiveKeys.length; i++) {
@@ -156,12 +156,12 @@ export abstract class Staker {
       Staker.INTERFACE.encodeFunctionData('withdrawToken', [
         toHex(withdrawOptions.tokenId),
         owner,
-        withdrawOptions.data ? withdrawOptions.data : toHex(0)
+        withdrawOptions.data ? withdrawOptions.data : toHex(0),
       ])
     )
     return {
       calldata: Multicall.encodeMulticall(calldatas),
-      value: toHex(0)
+      value: toHex(0),
     }
   }
 
@@ -199,7 +199,7 @@ export abstract class Staker {
       pool: Pool.getAddress(token0, token1, fee),
       startTime: toHex(incentiveKey.startTime),
       endTime: toHex(incentiveKey.endTime),
-      refundee
+      refundee,
     }
   }
 }
diff --git a/src/swapRouter.ts b/src/swapRouter.ts
index 7e31abc6..32dd9b94 100644
--- a/src/swapRouter.ts
+++ b/src/swapRouter.ts
@@ -75,11 +75,11 @@ export abstract class SwapRouter {
 
     // All trades should have the same starting and ending token.
     invariant(
-      trades.every(trade => trade.inputAmount.currency.wrapped.equals(tokenIn)),
+      trades.every((trade) => trade.inputAmount.currency.wrapped.equals(tokenIn)),
       'TOKEN_IN_DIFF'
     )
     invariant(
-      trades.every(trade => trade.outputAmount.currency.wrapped.equals(tokenOut)),
+      trades.every((trade) => trade.outputAmount.currency.wrapped.equals(tokenOut)),
       'TOKEN_OUT_DIFF'
     )
 
@@ -131,7 +131,7 @@ export abstract class SwapRouter {
               deadline,
               amountIn,
               amountOutMinimum: amountOut,
-              sqrtPriceLimitX96: toHex(options.sqrtPriceLimitX96 ?? 0)
+              sqrtPriceLimitX96: toHex(options.sqrtPriceLimitX96 ?? 0),
             }
 
             calldatas.push(SwapRouter.INTERFACE.encodeFunctionData('exactInputSingle', [exactInputSingleParams]))
@@ -144,7 +144,7 @@ export abstract class SwapRouter {
               deadline,
               amountOut,
               amountInMaximum: amountIn,
-              sqrtPriceLimitX96: toHex(options.sqrtPriceLimitX96 ?? 0)
+              sqrtPriceLimitX96: toHex(options.sqrtPriceLimitX96 ?? 0),
             }
 
             calldatas.push(SwapRouter.INTERFACE.encodeFunctionData('exactOutputSingle', [exactOutputSingleParams]))
@@ -160,7 +160,7 @@ export abstract class SwapRouter {
               recipient: routerMustCustody ? ADDRESS_ZERO : recipient,
               deadline,
               amountIn,
-              amountOutMinimum: amountOut
+              amountOutMinimum: amountOut,
             }
 
             calldatas.push(SwapRouter.INTERFACE.encodeFunctionData('exactInput', [exactInputParams]))
@@ -170,7 +170,7 @@ export abstract class SwapRouter {
               recipient: routerMustCustody ? ADDRESS_ZERO : recipient,
               deadline,
               amountOut,
-              amountInMaximum: amountIn
+              amountInMaximum: amountIn,
             }
 
             calldatas.push(SwapRouter.INTERFACE.encodeFunctionData('exactOutput', [exactOutputParams]))
@@ -206,7 +206,7 @@ export abstract class SwapRouter {
 
     return {
       calldata: Multicall.encodeMulticall(calldatas),
-      value: toHex(totalValue.quotient)
+      value: toHex(totalValue.quotient),
     }
   }
 }
diff --git a/src/utils/bigintIsh.ts b/src/utils/bigintIsh.ts
new file mode 100644
index 00000000..194076e5
--- /dev/null
+++ b/src/utils/bigintIsh.ts
@@ -0,0 +1,9 @@
+import { BigintIsh } from '@uniswap/sdk-core'
+
+export function bigIntFromBigintIsh(bigintIsh: BigintIsh): bigint {
+  if (typeof bigintIsh === 'bigint') {
+    return BigInt(bigintIsh)
+  }
+
+  return BigInt(bigintIsh.toString(10))
+}
diff --git a/src/utils/calldata.ts b/src/utils/calldata.ts
index 8bcc066e..51e3086e 100644
--- a/src/utils/calldata.ts
+++ b/src/utils/calldata.ts
@@ -1,5 +1,5 @@
 import { BigintIsh } from '@uniswap/sdk-core'
-import JSBI from 'jsbi'
+import { bigIntFromBigintIsh } from './bigintIsh'
 
 /**
  * Generated method parameters for executing a call.
@@ -21,7 +21,7 @@ export interface MethodParameters {
  * @returns The hex encoded calldata
  */
 export function toHex(bigintIsh: BigintIsh) {
-  const bigInt = JSBI.BigInt(bigintIsh)
+  const bigInt = bigIntFromBigintIsh(bigintIsh)
   let hex = bigInt.toString(16)
   if (hex.length % 2 !== 0) {
     hex = `0${hex}`
diff --git a/src/utils/computePoolAddress.ts b/src/utils/computePoolAddress.ts
index 18de4a7f..5395eb55 100644
--- a/src/utils/computePoolAddress.ts
+++ b/src/utils/computePoolAddress.ts
@@ -18,7 +18,7 @@ export function computePoolAddress({
   tokenA,
   tokenB,
   fee,
-  initCodeHashManualOverride
+  initCodeHashManualOverride,
 }: {
   factoryAddress: string
   tokenA: Token
diff --git a/src/utils/encodeRouteToPath.ts b/src/utils/encodeRouteToPath.ts
index 387eed52..83c64d38 100644
--- a/src/utils/encodeRouteToPath.ts
+++ b/src/utils/encodeRouteToPath.ts
@@ -22,13 +22,13 @@ export function encodeRouteToPath(route: Route<Currency, Currency>, exactOutput:
         return {
           inputToken: outputToken,
           types: ['address', 'uint24', 'address'],
-          path: [inputToken.address, pool.fee, outputToken.address]
+          path: [inputToken.address, pool.fee, outputToken.address],
         }
       } else {
         return {
           inputToken: outputToken,
           types: [...types, 'uint24', 'address'],
-          path: [...path, pool.fee, outputToken.address]
+          path: [...path, pool.fee, outputToken.address],
         }
       }
     },
diff --git a/src/utils/encodeSqrtRatioX96.ts b/src/utils/encodeSqrtRatioX96.ts
index 4705c3e4..b45749fa 100644
--- a/src/utils/encodeSqrtRatioX96.ts
+++ b/src/utils/encodeSqrtRatioX96.ts
@@ -1,5 +1,6 @@
 import JSBI from 'jsbi'
 import { BigintIsh, sqrt } from '@uniswap/sdk-core'
+import { bigIntFromBigintIsh } from './bigintIsh'
 
 /**
  * Returns the sqrt ratio as a Q64.96 corresponding to a given ratio of amount1 and amount0
@@ -7,10 +8,20 @@ import { BigintIsh, sqrt } from '@uniswap/sdk-core'
  * @param amount0 The denominator amount i.e., the amount of token0
  * @returns The sqrt ratio
  */
+export function encodeSqrtRatioX96BigInt(amount1: BigintIsh, amount0: BigintIsh): bigint {
+  const numerator = bigIntFromBigintIsh(amount1) << 192n
+  const denominator = bigIntFromBigintIsh(amount0)
+  const ratioX192 = numerator / denominator
 
-export function encodeSqrtRatioX96(amount1: BigintIsh, amount0: BigintIsh): JSBI {
-  const numerator = JSBI.leftShift(JSBI.BigInt(amount1), JSBI.BigInt(192))
-  const denominator = JSBI.BigInt(amount0)
-  const ratioX192 = JSBI.divide(numerator, denominator)
   return sqrt(ratioX192)
 }
+
+/**
+ * Returns the sqrt ratio as a Q64.96 corresponding to a given ratio of amount1 and amount0
+ * @param amount1 The numerator amount i.e., the amount of token1
+ * @param amount0 The denominator amount i.e., the amount of token0
+ * @returns The sqrt ratio
+ */
+export function encodeSqrtRatioX96(amount1: BigintIsh, amount0: BigintIsh): JSBI {
+  return JSBI.BigInt(encodeSqrtRatioX96BigInt(amount1, amount0).toString(10))
+}
diff --git a/src/utils/fullMath.ts b/src/utils/fullMath.ts
index 97f1a360..8a15bd97 100644
--- a/src/utils/fullMath.ts
+++ b/src/utils/fullMath.ts
@@ -1,5 +1,5 @@
 import JSBI from 'jsbi'
-import { ONE, ZERO } from '../internalConstants'
+import { bigIntFromBigintIsh } from './bigintIsh'
 
 export abstract class FullMath {
   /**
@@ -7,10 +7,21 @@ export abstract class FullMath {
    */
   private constructor() {}
 
-  public static mulDivRoundingUp(a: JSBI, b: JSBI, denominator: JSBI): JSBI {
-    const product = JSBI.multiply(a, b)
-    let result = JSBI.divide(product, denominator)
-    if (JSBI.notEqual(JSBI.remainder(product, denominator), ZERO)) result = JSBI.add(result, ONE)
-    return result
+  public static mulDivRoundingUp<T extends bigint | JSBI>(_a: T, _b: T, _denominator: T): T {
+    const a = bigIntFromBigintIsh(_a)
+    const b = bigIntFromBigintIsh(_b)
+    const denominator = bigIntFromBigintIsh(_denominator)
+
+    const product = a * b
+    let result = product / denominator
+    if (product % denominator !== 0n) {
+      result = result + 1n
+    }
+
+    if (typeof _a === 'bigint') {
+      return result as T
+    } else {
+      return JSBI.BigInt(result.toString(10)) as T
+    }
   }
 }
diff --git a/src/utils/liquidityMath.ts b/src/utils/liquidityMath.ts
index 42529c1d..2cd263b4 100644
--- a/src/utils/liquidityMath.ts
+++ b/src/utils/liquidityMath.ts
@@ -1,5 +1,5 @@
 import JSBI from 'jsbi'
-import { NEGATIVE_ONE, ZERO } from '../internalConstants'
+import { bigIntFromBigintIsh } from './bigintIsh'
 
 export abstract class LiquidityMath {
   /**
@@ -7,11 +7,21 @@ export abstract class LiquidityMath {
    */
   private constructor() {}
 
-  public static addDelta(x: JSBI, y: JSBI): JSBI {
-    if (JSBI.lessThan(y, ZERO)) {
-      return JSBI.subtract(x, JSBI.multiply(y, NEGATIVE_ONE))
+  public static addDelta<T extends bigint | JSBI>(_x: T, _y: T): T {
+    const x = bigIntFromBigintIsh(_x)
+    const y = bigIntFromBigintIsh(_y)
+
+    let returnValue: bigint
+    if (y < 0n) {
+      returnValue = x - y * -1n
+    } else {
+      returnValue = x + y
+    }
+
+    if (typeof _x === 'bigint') {
+      return returnValue as T
     } else {
-      return JSBI.add(x, y)
+      return JSBI.BigInt(returnValue.toString(10)) as T
     }
   }
 }
diff --git a/src/utils/maxLiquidityForAmounts.ts b/src/utils/maxLiquidityForAmounts.ts
index 598f9756..358c2eed 100644
--- a/src/utils/maxLiquidityForAmounts.ts
+++ b/src/utils/maxLiquidityForAmounts.ts
@@ -1,6 +1,7 @@
 import { BigintIsh } from '@uniswap/sdk-core'
 import JSBI from 'jsbi'
-import { Q96 } from '../internalConstants'
+import { Q96_BIGINT } from '../internalConstants'
+import { bigIntFromBigintIsh } from './bigintIsh'
 
 /**
  * Returns an imprecise maximum amount of liquidity received for a given amount of token 0.
@@ -13,12 +14,27 @@ import { Q96 } from '../internalConstants'
  * @param amount0 The token0 amount
  * @returns liquidity for amount0, imprecise
  */
-function maxLiquidityForAmount0Imprecise(sqrtRatioAX96: JSBI, sqrtRatioBX96: JSBI, amount0: BigintIsh): JSBI {
-  if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {
+function maxLiquidityForAmount0Imprecise<T extends bigint | JSBI>(
+  _sqrtRatioAX96: T,
+  _sqrtRatioBX96: T,
+  _amount0: BigintIsh
+): T {
+  let sqrtRatioAX96 = bigIntFromBigintIsh(_sqrtRatioAX96)
+  let sqrtRatioBX96 = bigIntFromBigintIsh(_sqrtRatioBX96)
+  const amount0 = bigIntFromBigintIsh(_amount0)
+
+  if (sqrtRatioAX96 > sqrtRatioBX96) {
     ;[sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96]
   }
-  const intermediate = JSBI.divide(JSBI.multiply(sqrtRatioAX96, sqrtRatioBX96), Q96)
-  return JSBI.divide(JSBI.multiply(JSBI.BigInt(amount0), intermediate), JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96))
+  const intermediate = (sqrtRatioAX96 * sqrtRatioBX96) / Q96_BIGINT
+
+  const returnValue = (amount0 * intermediate) / (sqrtRatioBX96 - sqrtRatioAX96)
+
+  if (typeof _sqrtRatioAX96 === 'bigint') {
+    return returnValue as T
+  } else {
+    return JSBI.BigInt(returnValue.toString(10)) as T
+  }
 }
 
 /**
@@ -29,15 +45,29 @@ function maxLiquidityForAmount0Imprecise(sqrtRatioAX96: JSBI, sqrtRatioBX96: JSB
  * @param amount0 The token0 amount
  * @returns liquidity for amount0, precise
  */
-function maxLiquidityForAmount0Precise(sqrtRatioAX96: JSBI, sqrtRatioBX96: JSBI, amount0: BigintIsh): JSBI {
-  if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {
+function maxLiquidityForAmount0Precise<T extends bigint | JSBI>(
+  _sqrtRatioAX96: T,
+  _sqrtRatioBX96: T,
+  _amount0: BigintIsh
+): T {
+  let sqrtRatioAX96 = bigIntFromBigintIsh(_sqrtRatioAX96)
+  let sqrtRatioBX96 = bigIntFromBigintIsh(_sqrtRatioBX96)
+  const amount0 = bigIntFromBigintIsh(_amount0)
+
+  if (sqrtRatioAX96 > sqrtRatioBX96) {
     ;[sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96]
   }
 
-  const numerator = JSBI.multiply(JSBI.multiply(JSBI.BigInt(amount0), sqrtRatioAX96), sqrtRatioBX96)
-  const denominator = JSBI.multiply(Q96, JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96))
+  const numerator = amount0 * sqrtRatioAX96 * sqrtRatioBX96
+  const denominator = Q96_BIGINT * (sqrtRatioBX96 - sqrtRatioAX96)
+
+  const returnValue = numerator / denominator
 
-  return JSBI.divide(numerator, denominator)
+  if (typeof _sqrtRatioAX96 === 'bigint') {
+    return returnValue as T
+  } else {
+    return JSBI.BigInt(returnValue.toString(10)) as T
+  }
 }
 
 /**
@@ -47,11 +77,21 @@ function maxLiquidityForAmount0Precise(sqrtRatioAX96: JSBI, sqrtRatioBX96: JSBI,
  * @param amount1 The token1 amount
  * @returns liquidity for amount1
  */
-function maxLiquidityForAmount1(sqrtRatioAX96: JSBI, sqrtRatioBX96: JSBI, amount1: BigintIsh): JSBI {
-  if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {
+function maxLiquidityForAmount1<T extends bigint | JSBI>(_sqrtRatioAX96: T, _sqrtRatioBX96: T, _amount1: BigintIsh): T {
+  let sqrtRatioAX96 = bigIntFromBigintIsh(_sqrtRatioAX96)
+  let sqrtRatioBX96 = bigIntFromBigintIsh(_sqrtRatioBX96)
+  const amount1 = bigIntFromBigintIsh(_amount1)
+
+  if (sqrtRatioAX96 > sqrtRatioBX96) {
     ;[sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96]
   }
-  return JSBI.divide(JSBI.multiply(JSBI.BigInt(amount1), Q96), JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96))
+  const returnValue = (amount1 * Q96_BIGINT) / (sqrtRatioBX96 - sqrtRatioAX96)
+
+  if (typeof _sqrtRatioAX96 === 'bigint') {
+    return returnValue as T
+  } else {
+    return JSBI.BigInt(returnValue.toString(10)) as T
+  }
 }
 
 /**
@@ -65,27 +105,40 @@ function maxLiquidityForAmount1(sqrtRatioAX96: JSBI, sqrtRatioBX96: JSBI, amount
  * @param useFullPrecision if false, liquidity will be maximized according to what the router can calculate,
  * not what core can theoretically support
  */
-export function maxLiquidityForAmounts(
-  sqrtRatioCurrentX96: JSBI,
-  sqrtRatioAX96: JSBI,
-  sqrtRatioBX96: JSBI,
-  amount0: BigintIsh,
-  amount1: BigintIsh,
+export function maxLiquidityForAmounts<T extends bigint | JSBI>(
+  _sqrtRatioCurrentX96: T,
+  _sqrtRatioAX96: T,
+  _sqrtRatioBX96: T,
+  _amount0: BigintIsh,
+  _amount1: BigintIsh,
   useFullPrecision: boolean
-): JSBI {
-  if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {
+): T {
+  const sqrtRatioCurrentX96 = bigIntFromBigintIsh(_sqrtRatioCurrentX96)
+  let sqrtRatioAX96 = bigIntFromBigintIsh(_sqrtRatioAX96)
+  let sqrtRatioBX96 = bigIntFromBigintIsh(_sqrtRatioBX96)
+  const amount0 = bigIntFromBigintIsh(_amount0)
+  const amount1 = bigIntFromBigintIsh(_amount1)
+
+  if (sqrtRatioAX96 > sqrtRatioBX96) {
     ;[sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96]
   }
 
   const maxLiquidityForAmount0 = useFullPrecision ? maxLiquidityForAmount0Precise : maxLiquidityForAmount0Imprecise
 
-  if (JSBI.lessThanOrEqual(sqrtRatioCurrentX96, sqrtRatioAX96)) {
-    return maxLiquidityForAmount0(sqrtRatioAX96, sqrtRatioBX96, amount0)
-  } else if (JSBI.lessThan(sqrtRatioCurrentX96, sqrtRatioBX96)) {
+  let returnValue: bigint
+  if (sqrtRatioCurrentX96 <= sqrtRatioAX96) {
+    returnValue = maxLiquidityForAmount0(sqrtRatioAX96, sqrtRatioBX96, amount0)
+  } else if (sqrtRatioCurrentX96 < sqrtRatioBX96) {
     const liquidity0 = maxLiquidityForAmount0(sqrtRatioCurrentX96, sqrtRatioBX96, amount0)
     const liquidity1 = maxLiquidityForAmount1(sqrtRatioAX96, sqrtRatioCurrentX96, amount1)
-    return JSBI.lessThan(liquidity0, liquidity1) ? liquidity0 : liquidity1
+    returnValue = liquidity0 < liquidity1 ? liquidity0 : liquidity1
+  } else {
+    returnValue = maxLiquidityForAmount1(sqrtRatioAX96, sqrtRatioBX96, amount1)
+  }
+
+  if (typeof _sqrtRatioCurrentX96 === 'bigint') {
+    return returnValue as T
   } else {
-    return maxLiquidityForAmount1(sqrtRatioAX96, sqrtRatioBX96, amount1)
+    return JSBI.BigInt(returnValue.toString(10)) as T
   }
 }
diff --git a/src/utils/mostSignificantBit.ts b/src/utils/mostSignificantBit.ts
index d14587fd..2ba5b50d 100644
--- a/src/utils/mostSignificantBit.ts
+++ b/src/utils/mostSignificantBit.ts
@@ -1,22 +1,20 @@
-import { MaxUint256 } from '@uniswap/sdk-core'
+import { MaxUint256BigInt } from '@uniswap/sdk-core'
 import JSBI from 'jsbi'
 import invariant from 'tiny-invariant'
-import { ZERO } from '../internalConstants'
+import { bigIntFromBigintIsh } from './bigintIsh'
 
-const TWO = JSBI.BigInt(2)
-const POWERS_OF_2 = [128, 64, 32, 16, 8, 4, 2, 1].map((pow: number): [number, JSBI] => [
-  pow,
-  JSBI.exponentiate(TWO, JSBI.BigInt(pow))
-])
+const POWERS_OF_2 = [128, 64, 32, 16, 8, 4, 2, 1].map((pow: number): [number, bigint] => [pow, 2n ** BigInt(pow)])
 
-export function mostSignificantBit(x: JSBI): number {
-  invariant(JSBI.greaterThan(x, ZERO), 'ZERO')
-  invariant(JSBI.lessThanOrEqual(x, MaxUint256), 'MAX')
+export function mostSignificantBit(_x: bigint | JSBI): number {
+  let x = bigIntFromBigintIsh(_x)
+
+  invariant(x > 0n, 'ZERO')
+  invariant(x <= MaxUint256BigInt, 'MAX')
 
   let msb: number = 0
   for (const [power, min] of POWERS_OF_2) {
-    if (JSBI.greaterThanOrEqual(x, min)) {
-      x = JSBI.signedRightShift(x, JSBI.BigInt(power))
+    if (x >= min) {
+      x = x >> BigInt(power)
       msb += power
     }
   }
diff --git a/src/utils/position.ts b/src/utils/position.ts
index 8b7b6307..e8d27c36 100644
--- a/src/utils/position.ts
+++ b/src/utils/position.ts
@@ -1,7 +1,8 @@
 import JSBI from 'jsbi'
-import { subIn256 } from '.'
+import { subIn256 } from './tickLibrary'
+import { bigIntFromBigintIsh } from './bigintIsh'
 
-const Q128 = JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(128))
+const Q128 = 2n ** 128n
 
 export abstract class PositionLibrary {
   /**
@@ -10,23 +11,27 @@ export abstract class PositionLibrary {
   private constructor() {}
 
   // replicates the portions of Position#update required to compute unaccounted fees
-  public static getTokensOwed(
-    feeGrowthInside0LastX128: JSBI,
-    feeGrowthInside1LastX128: JSBI,
-    liquidity: JSBI,
-    feeGrowthInside0X128: JSBI,
-    feeGrowthInside1X128: JSBI
-  ) {
-    const tokensOwed0 = JSBI.divide(
-      JSBI.multiply(subIn256(feeGrowthInside0X128, feeGrowthInside0LastX128), liquidity),
-      Q128
-    )
+  public static getTokensOwed<T extends bigint | JSBI>(
+    _feeGrowthInside0LastX128: T,
+    _feeGrowthInside1LastX128: T,
+    _liquidity: T,
+    _feeGrowthInside0X128: T,
+    _feeGrowthInside1X128: T
+  ): [T, T] {
+    const feeGrowthInside0LastX128 = bigIntFromBigintIsh(_feeGrowthInside0LastX128)
+    const feeGrowthInside1LastX128 = bigIntFromBigintIsh(_feeGrowthInside1LastX128)
+    const liquidity = bigIntFromBigintIsh(_liquidity)
+    const feeGrowthInside0X128 = bigIntFromBigintIsh(_feeGrowthInside0X128)
+    const feeGrowthInside1X128 = bigIntFromBigintIsh(_feeGrowthInside1X128)
 
-    const tokensOwed1 = JSBI.divide(
-      JSBI.multiply(subIn256(feeGrowthInside1X128, feeGrowthInside1LastX128), liquidity),
-      Q128
-    )
+    const tokensOwed0 = (subIn256(feeGrowthInside0X128, feeGrowthInside0LastX128) * liquidity) / Q128
 
-    return [tokensOwed0, tokensOwed1]
+    const tokensOwed1 = (subIn256(feeGrowthInside1X128, feeGrowthInside1LastX128) * liquidity) / Q128
+
+    if (typeof _feeGrowthInside0LastX128 === 'bigint') {
+      return [tokensOwed0 as T, tokensOwed1 as T]
+    } else {
+      return [JSBI.BigInt(tokensOwed0.toString(10)) as T, JSBI.BigInt(tokensOwed1.toString(10)) as T]
+    }
   }
 }
diff --git a/src/utils/priceTickConversions.ts b/src/utils/priceTickConversions.ts
index 027a056a..d3f179a2 100644
--- a/src/utils/priceTickConversions.ts
+++ b/src/utils/priceTickConversions.ts
@@ -1,7 +1,6 @@
 import { Price, Token } from '@uniswap/sdk-core'
-import JSBI from 'jsbi'
 import { Q192 } from '../internalConstants'
-import { encodeSqrtRatioX96 } from './encodeSqrtRatioX96'
+import { encodeSqrtRatioX96BigInt } from './encodeSqrtRatioX96'
 import { TickMath } from './tickMath'
 
 /**
@@ -12,9 +11,9 @@ import { TickMath } from './tickMath'
  * @param tick the tick for which to return the price
  */
 export function tickToPrice(baseToken: Token, quoteToken: Token, tick: number): Price<Token, Token> {
-  const sqrtRatioX96 = TickMath.getSqrtRatioAtTick(tick)
+  const sqrtRatioX96 = TickMath.getSqrtRatioAtTickBigInt(tick)
 
-  const ratioX192 = JSBI.multiply(sqrtRatioX96, sqrtRatioX96)
+  const ratioX192 = sqrtRatioX96 * sqrtRatioX96
 
   return baseToken.sortsBefore(quoteToken)
     ? new Price(baseToken, quoteToken, Q192, ratioX192)
@@ -30,8 +29,8 @@ export function priceToClosestTick(price: Price<Token, Token>): number {
   const sorted = price.baseCurrency.sortsBefore(price.quoteCurrency)
 
   const sqrtRatioX96 = sorted
-    ? encodeSqrtRatioX96(price.numerator, price.denominator)
-    : encodeSqrtRatioX96(price.denominator, price.numerator)
+    ? encodeSqrtRatioX96BigInt(price.numerator, price.denominator)
+    : encodeSqrtRatioX96BigInt(price.denominator, price.numerator)
 
   let tick = TickMath.getTickAtSqrtRatio(sqrtRatioX96)
   const nextTickPrice = tickToPrice(price.baseCurrency, price.quoteCurrency, tick + 1)
diff --git a/src/utils/sqrtPriceMath.ts b/src/utils/sqrtPriceMath.ts
index 2c9af375..735fbf5d 100644
--- a/src/utils/sqrtPriceMath.ts
+++ b/src/utils/sqrtPriceMath.ts
@@ -1,19 +1,18 @@
-import { MaxUint256 } from '@uniswap/sdk-core'
+import { MaxUint256BigInt } from '@uniswap/sdk-core'
 import JSBI from 'jsbi'
 import invariant from 'tiny-invariant'
-import { ONE, ZERO, Q96 } from '../internalConstants'
+import { Q96_BIGINT } from '../internalConstants'
 import { FullMath } from './fullMath'
+import { bigIntFromBigintIsh } from './bigintIsh'
 
-const MaxUint160 = JSBI.subtract(JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(160)), ONE)
+const MaxUint160 = 2n ** 160n - 1n
 
-function multiplyIn256(x: JSBI, y: JSBI): JSBI {
-  const product = JSBI.multiply(x, y)
-  return JSBI.bitwiseAnd(product, MaxUint256)
+function multiplyIn256BigInt(x: bigint, y: bigint): bigint {
+  return (x * y) & MaxUint256BigInt
 }
 
-function addIn256(x: JSBI, y: JSBI): JSBI {
-  const sum = JSBI.add(x, y)
-  return JSBI.bitwiseAnd(sum, MaxUint256)
+function addIn256BigInt(x: bigint, y: bigint): bigint {
+  return (x + y) & MaxUint256BigInt
 }
 
 export abstract class SqrtPriceMath {
@@ -22,98 +21,161 @@ export abstract class SqrtPriceMath {
    */
   private constructor() {}
 
-  public static getAmount0Delta(sqrtRatioAX96: JSBI, sqrtRatioBX96: JSBI, liquidity: JSBI, roundUp: boolean): JSBI {
-    if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {
+  public static getAmount0Delta<T extends bigint | JSBI>(
+    _sqrtRatioAX96: T,
+    _sqrtRatioBX96: T,
+    _liquidity: T,
+    roundUp: boolean
+  ): T {
+    let sqrtRatioAX96 = bigIntFromBigintIsh(_sqrtRatioAX96)
+    let sqrtRatioBX96 = bigIntFromBigintIsh(_sqrtRatioBX96)
+    const liquidity = bigIntFromBigintIsh(_liquidity)
+
+    if (sqrtRatioAX96 > sqrtRatioBX96) {
       ;[sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96]
     }
 
-    const numerator1 = JSBI.leftShift(liquidity, JSBI.BigInt(96))
-    const numerator2 = JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96)
+    const numerator1 = liquidity << 96n
+    const numerator2 = sqrtRatioBX96 - sqrtRatioAX96
 
-    return roundUp
-      ? FullMath.mulDivRoundingUp(FullMath.mulDivRoundingUp(numerator1, numerator2, sqrtRatioBX96), ONE, sqrtRatioAX96)
-      : JSBI.divide(JSBI.divide(JSBI.multiply(numerator1, numerator2), sqrtRatioBX96), sqrtRatioAX96)
+    let returnValue: bigint
+    if (roundUp) {
+      returnValue = FullMath.mulDivRoundingUp(
+        FullMath.mulDivRoundingUp(numerator1, numerator2, sqrtRatioBX96),
+        1n,
+        sqrtRatioAX96
+      )
+    } else {
+      returnValue = (numerator1 * numerator2) / sqrtRatioBX96 / sqrtRatioAX96
+    }
+
+    if (typeof _sqrtRatioAX96 === 'bigint') {
+      return returnValue as T
+    } else {
+      return JSBI.BigInt(returnValue.toString(10)) as T
+    }
   }
 
-  public static getAmount1Delta(sqrtRatioAX96: JSBI, sqrtRatioBX96: JSBI, liquidity: JSBI, roundUp: boolean): JSBI {
-    if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {
+  public static getAmount1Delta<T extends bigint | JSBI>(
+    _sqrtRatioAX96: T,
+    _sqrtRatioBX96: T,
+    _liquidity: T,
+    roundUp: boolean
+  ): T {
+    let sqrtRatioAX96 = bigIntFromBigintIsh(_sqrtRatioAX96)
+    let sqrtRatioBX96 = bigIntFromBigintIsh(_sqrtRatioBX96)
+    const liquidity = bigIntFromBigintIsh(_liquidity)
+
+    if (sqrtRatioAX96 > sqrtRatioBX96) {
       ;[sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96]
     }
 
-    return roundUp
-      ? FullMath.mulDivRoundingUp(liquidity, JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96), Q96)
-      : JSBI.divide(JSBI.multiply(liquidity, JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96)), Q96)
+    let returnValue: bigint
+    if (roundUp) {
+      returnValue = FullMath.mulDivRoundingUp(liquidity, sqrtRatioBX96 - sqrtRatioAX96, Q96_BIGINT)
+    } else {
+      returnValue = (liquidity * (sqrtRatioBX96 - sqrtRatioAX96)) / Q96_BIGINT
+    }
+
+    if (typeof _sqrtRatioAX96 === 'bigint') {
+      return returnValue as T
+    } else {
+      return JSBI.BigInt(returnValue.toString(10)) as T
+    }
   }
 
-  public static getNextSqrtPriceFromInput(sqrtPX96: JSBI, liquidity: JSBI, amountIn: JSBI, zeroForOne: boolean): JSBI {
-    invariant(JSBI.greaterThan(sqrtPX96, ZERO))
-    invariant(JSBI.greaterThan(liquidity, ZERO))
+  public static getNextSqrtPriceFromInput<T extends bigint | JSBI>(
+    _sqrtPX96: T,
+    _liquidity: T,
+    _amountIn: T,
+    zeroForOne: boolean
+  ): T {
+    const sqrtPX96: bigint = bigIntFromBigintIsh(_sqrtPX96)
+    const liquidity: bigint = bigIntFromBigintIsh(_liquidity)
+    const amountIn: bigint = bigIntFromBigintIsh(_amountIn)
+
+    invariant(sqrtPX96 > 0n)
+    invariant(liquidity > 0n)
 
-    return zeroForOne
+    const returnValue = zeroForOne
       ? this.getNextSqrtPriceFromAmount0RoundingUp(sqrtPX96, liquidity, amountIn, true)
       : this.getNextSqrtPriceFromAmount1RoundingDown(sqrtPX96, liquidity, amountIn, true)
+
+    if (typeof _sqrtPX96 === 'bigint') {
+      return returnValue as T
+    } else {
+      return JSBI.BigInt(returnValue.toString(10)) as T
+    }
   }
 
-  public static getNextSqrtPriceFromOutput(
-    sqrtPX96: JSBI,
-    liquidity: JSBI,
-    amountOut: JSBI,
+  public static getNextSqrtPriceFromOutput<T extends bigint | JSBI>(
+    _sqrtPX96: T,
+    _liquidity: T,
+    _amountOut: T,
     zeroForOne: boolean
-  ): JSBI {
-    invariant(JSBI.greaterThan(sqrtPX96, ZERO))
-    invariant(JSBI.greaterThan(liquidity, ZERO))
+  ): T {
+    const sqrtPX96: bigint = bigIntFromBigintIsh(_sqrtPX96)
+    const liquidity: bigint = bigIntFromBigintIsh(_liquidity)
+    const amountOut: bigint = bigIntFromBigintIsh(_amountOut)
 
-    return zeroForOne
+    invariant(sqrtPX96 > 0n)
+    invariant(liquidity > 0n)
+
+    const returnValue = zeroForOne
       ? this.getNextSqrtPriceFromAmount1RoundingDown(sqrtPX96, liquidity, amountOut, false)
       : this.getNextSqrtPriceFromAmount0RoundingUp(sqrtPX96, liquidity, amountOut, false)
+
+    if (typeof _sqrtPX96 === 'bigint') {
+      return returnValue as T
+    } else {
+      return JSBI.BigInt(returnValue.toString(10)) as T
+    }
   }
 
   private static getNextSqrtPriceFromAmount0RoundingUp(
-    sqrtPX96: JSBI,
-    liquidity: JSBI,
-    amount: JSBI,
+    sqrtPX96: bigint,
+    liquidity: bigint,
+    amount: bigint,
     add: boolean
-  ): JSBI {
-    if (JSBI.equal(amount, ZERO)) return sqrtPX96
-    const numerator1 = JSBI.leftShift(liquidity, JSBI.BigInt(96))
+  ): bigint {
+    if (amount === 0n) return sqrtPX96
+    const numerator1 = liquidity << 96n
 
     if (add) {
-      let product = multiplyIn256(amount, sqrtPX96)
-      if (JSBI.equal(JSBI.divide(product, amount), sqrtPX96)) {
-        const denominator = addIn256(numerator1, product)
-        if (JSBI.greaterThanOrEqual(denominator, numerator1)) {
+      let product = multiplyIn256BigInt(amount, sqrtPX96)
+      if (product / amount === sqrtPX96) {
+        const denominator = addIn256BigInt(numerator1, product)
+        if (denominator >= numerator1) {
           return FullMath.mulDivRoundingUp(numerator1, sqrtPX96, denominator)
         }
       }
 
-      return FullMath.mulDivRoundingUp(numerator1, ONE, JSBI.add(JSBI.divide(numerator1, sqrtPX96), amount))
+      return FullMath.mulDivRoundingUp(numerator1, 1n, numerator1 / sqrtPX96 + amount)
     } else {
-      let product = multiplyIn256(amount, sqrtPX96)
+      let product = multiplyIn256BigInt(amount, sqrtPX96)
 
-      invariant(JSBI.equal(JSBI.divide(product, amount), sqrtPX96))
-      invariant(JSBI.greaterThan(numerator1, product))
-      const denominator = JSBI.subtract(numerator1, product)
+      invariant(product / amount === sqrtPX96)
+      invariant(numerator1 > product)
+      const denominator = numerator1 - product
       return FullMath.mulDivRoundingUp(numerator1, sqrtPX96, denominator)
     }
   }
 
   private static getNextSqrtPriceFromAmount1RoundingDown(
-    sqrtPX96: JSBI,
-    liquidity: JSBI,
-    amount: JSBI,
+    sqrtPX96: bigint,
+    liquidity: bigint,
+    amount: bigint,
     add: boolean
-  ): JSBI {
+  ): bigint {
     if (add) {
-      const quotient = JSBI.lessThanOrEqual(amount, MaxUint160)
-        ? JSBI.divide(JSBI.leftShift(amount, JSBI.BigInt(96)), liquidity)
-        : JSBI.divide(JSBI.multiply(amount, Q96), liquidity)
+      const quotient = amount <= MaxUint160 ? (amount << 96n) / liquidity : (amount * Q96_BIGINT) / liquidity
 
-      return JSBI.add(sqrtPX96, quotient)
+      return sqrtPX96 + quotient
     } else {
-      const quotient = FullMath.mulDivRoundingUp(amount, Q96, liquidity)
+      const quotient = FullMath.mulDivRoundingUp(amount, Q96_BIGINT, liquidity)
 
-      invariant(JSBI.greaterThan(sqrtPX96, quotient))
-      return JSBI.subtract(sqrtPX96, quotient)
+      invariant(sqrtPX96 > quotient)
+      return sqrtPX96 - quotient
     }
   }
 }
diff --git a/src/utils/swapMath.ts b/src/utils/swapMath.ts
index 8189ee17..7101493d 100644
--- a/src/utils/swapMath.ts
+++ b/src/utils/swapMath.ts
@@ -1,10 +1,10 @@
 import JSBI from 'jsbi'
 import { FeeAmount } from '../constants'
-import { NEGATIVE_ONE, ZERO } from '../internalConstants'
 import { FullMath } from './fullMath'
 import { SqrtPriceMath } from './sqrtPriceMath'
+import { bigIntFromBigintIsh } from './bigintIsh'
 
-const MAX_FEE = JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(6))
+const MAX_FEE = 10n ** 6n
 
 export abstract class SwapMath {
   /**
@@ -12,32 +12,34 @@ export abstract class SwapMath {
    */
   private constructor() {}
 
-  public static computeSwapStep(
-    sqrtRatioCurrentX96: JSBI,
-    sqrtRatioTargetX96: JSBI,
-    liquidity: JSBI,
-    amountRemaining: JSBI,
+  public static computeSwapStep<T extends bigint | JSBI>(
+    _sqrtRatioCurrentX96: T,
+    _sqrtRatioTargetX96: T,
+    _liquidity: T,
+    _amountRemaining: T,
     feePips: FeeAmount
-  ): [JSBI, JSBI, JSBI, JSBI] {
+  ): [T, T, T, T] {
+    const sqrtRatioCurrentX96 = bigIntFromBigintIsh(_sqrtRatioCurrentX96)
+    const sqrtRatioTargetX96 = bigIntFromBigintIsh(_sqrtRatioTargetX96)
+    const liquidity = bigIntFromBigintIsh(_liquidity)
+    const amountRemaining = bigIntFromBigintIsh(_amountRemaining)
+
     const returnValues: Partial<{
-      sqrtRatioNextX96: JSBI
-      amountIn: JSBI
-      amountOut: JSBI
-      feeAmount: JSBI
+      sqrtRatioNextX96: bigint
+      amountIn: bigint
+      amountOut: bigint
+      feeAmount: bigint
     }> = {}
 
-    const zeroForOne = JSBI.greaterThanOrEqual(sqrtRatioCurrentX96, sqrtRatioTargetX96)
-    const exactIn = JSBI.greaterThanOrEqual(amountRemaining, ZERO)
+    const zeroForOne = sqrtRatioCurrentX96 >= sqrtRatioTargetX96
+    const exactIn = amountRemaining >= 0n
 
     if (exactIn) {
-      const amountRemainingLessFee = JSBI.divide(
-        JSBI.multiply(amountRemaining, JSBI.subtract(MAX_FEE, JSBI.BigInt(feePips))),
-        MAX_FEE
-      )
+      const amountRemainingLessFee = (amountRemaining * (MAX_FEE - BigInt(feePips))) / MAX_FEE
       returnValues.amountIn = zeroForOne
         ? SqrtPriceMath.getAmount0Delta(sqrtRatioTargetX96, sqrtRatioCurrentX96, liquidity, true)
         : SqrtPriceMath.getAmount1Delta(sqrtRatioCurrentX96, sqrtRatioTargetX96, liquidity, true)
-      if (JSBI.greaterThanOrEqual(amountRemainingLessFee, returnValues.amountIn!)) {
+      if (amountRemainingLessFee >= returnValues.amountIn!) {
         returnValues.sqrtRatioNextX96 = sqrtRatioTargetX96
       } else {
         returnValues.sqrtRatioNextX96 = SqrtPriceMath.getNextSqrtPriceFromInput(
@@ -51,19 +53,19 @@ export abstract class SwapMath {
       returnValues.amountOut = zeroForOne
         ? SqrtPriceMath.getAmount1Delta(sqrtRatioTargetX96, sqrtRatioCurrentX96, liquidity, false)
         : SqrtPriceMath.getAmount0Delta(sqrtRatioCurrentX96, sqrtRatioTargetX96, liquidity, false)
-      if (JSBI.greaterThanOrEqual(JSBI.multiply(amountRemaining, NEGATIVE_ONE), returnValues.amountOut)) {
+      if (amountRemaining * -1n >= returnValues.amountOut!) {
         returnValues.sqrtRatioNextX96 = sqrtRatioTargetX96
       } else {
         returnValues.sqrtRatioNextX96 = SqrtPriceMath.getNextSqrtPriceFromOutput(
           sqrtRatioCurrentX96,
           liquidity,
-          JSBI.multiply(amountRemaining, NEGATIVE_ONE),
+          amountRemaining * -1n,
           zeroForOne
         )
       }
     }
 
-    const max = JSBI.equal(sqrtRatioTargetX96, returnValues.sqrtRatioNextX96)
+    const max = sqrtRatioTargetX96 === returnValues.sqrtRatioNextX96
 
     if (zeroForOne) {
       returnValues.amountIn =
@@ -85,21 +87,35 @@ export abstract class SwapMath {
           : SqrtPriceMath.getAmount0Delta(sqrtRatioCurrentX96, returnValues.sqrtRatioNextX96, liquidity, false)
     }
 
-    if (!exactIn && JSBI.greaterThan(returnValues.amountOut!, JSBI.multiply(amountRemaining, NEGATIVE_ONE))) {
-      returnValues.amountOut = JSBI.multiply(amountRemaining, NEGATIVE_ONE)
+    if (!exactIn && returnValues.amountOut! > amountRemaining * -1n) {
+      returnValues.amountOut = amountRemaining * -1n
     }
 
-    if (exactIn && JSBI.notEqual(returnValues.sqrtRatioNextX96, sqrtRatioTargetX96)) {
+    if (exactIn && returnValues.sqrtRatioNextX96 !== sqrtRatioTargetX96) {
       // we didn't reach the target, so take the remainder of the maximum input as fee
-      returnValues.feeAmount = JSBI.subtract(amountRemaining, returnValues.amountIn!)
+      returnValues.feeAmount = amountRemaining - returnValues.amountIn!
     } else {
       returnValues.feeAmount = FullMath.mulDivRoundingUp(
         returnValues.amountIn!,
-        JSBI.BigInt(feePips),
-        JSBI.subtract(MAX_FEE, JSBI.BigInt(feePips))
+        BigInt(feePips),
+        MAX_FEE - BigInt(feePips)
       )
     }
 
-    return [returnValues.sqrtRatioNextX96!, returnValues.amountIn!, returnValues.amountOut!, returnValues.feeAmount!]
+    if (typeof _sqrtRatioCurrentX96 === 'bigint') {
+      return [
+        returnValues.sqrtRatioNextX96! as T,
+        returnValues.amountIn! as T,
+        returnValues.amountOut! as T,
+        returnValues.feeAmount! as T,
+      ]
+    } else {
+      return [
+        JSBI.BigInt(returnValues.sqrtRatioNextX96!.toString(10)) as T,
+        JSBI.BigInt(returnValues.amountIn!.toString(10)) as T,
+        JSBI.BigInt(returnValues.amountOut!.toString(10)) as T,
+        JSBI.BigInt(returnValues.feeAmount!.toString(10)) as T,
+      ]
+    }
   }
 }
diff --git a/src/utils/tickLibrary.ts b/src/utils/tickLibrary.ts
index e21f2706..452378d1 100644
--- a/src/utils/tickLibrary.ts
+++ b/src/utils/tickLibrary.ts
@@ -1,20 +1,30 @@
 import JSBI from 'jsbi'
-import { ZERO } from '../internalConstants'
+import { bigIntFromBigintIsh } from './bigintIsh'
 
-interface FeeGrowthOutside {
-  feeGrowthOutside0X128: JSBI
-  feeGrowthOutside1X128: JSBI
+interface FeeGrowthOutside<T extends bigint | JSBI> {
+  feeGrowthOutside0X128: T
+  feeGrowthOutside1X128: T
 }
 
-const Q256 = JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(256))
+const Q256 = 2n ** 256n
 
-export function subIn256(x: JSBI, y: JSBI): JSBI {
-  const difference = JSBI.subtract(x, y)
+export function subIn256<T extends bigint | JSBI>(_x: T, _y: T): T {
+  const x = bigIntFromBigintIsh(_x)
+  const y = bigIntFromBigintIsh(_y)
 
-  if (JSBI.lessThan(difference, ZERO)) {
-    return JSBI.add(Q256, difference)
+  const difference = x - y
+
+  let returnValue: bigint
+  if (difference < 0n) {
+    returnValue = Q256 + difference
   } else {
-    return difference
+    returnValue = difference
+  }
+
+  if (typeof _x === 'bigint') {
+    return returnValue as T
+  } else {
+    return JSBI.BigInt(returnValue.toString(10)) as T
   }
 }
 
@@ -24,17 +34,28 @@ export abstract class TickLibrary {
    */
   private constructor() {}
 
-  public static getFeeGrowthInside(
-    feeGrowthOutsideLower: FeeGrowthOutside,
-    feeGrowthOutsideUpper: FeeGrowthOutside,
+  public static getFeeGrowthInside<T extends bigint | JSBI>(
+    _feeGrowthOutsideLower: FeeGrowthOutside<T>,
+    _feeGrowthOutsideUpper: FeeGrowthOutside<T>,
     tickLower: number,
     tickUpper: number,
     tickCurrent: number,
-    feeGrowthGlobal0X128: JSBI,
-    feeGrowthGlobal1X128: JSBI
-  ) {
-    let feeGrowthBelow0X128: JSBI
-    let feeGrowthBelow1X128: JSBI
+    _feeGrowthGlobal0X128: T,
+    _feeGrowthGlobal1X128: T
+  ): [T, T] {
+    const feeGrowthOutsideLower: FeeGrowthOutside<bigint> = {
+      feeGrowthOutside0X128: BigInt(_feeGrowthOutsideLower.feeGrowthOutside0X128.toString(10)),
+      feeGrowthOutside1X128: BigInt(_feeGrowthOutsideLower.feeGrowthOutside1X128.toString(10)),
+    }
+    const feeGrowthOutsideUpper: FeeGrowthOutside<bigint> = {
+      feeGrowthOutside0X128: BigInt(_feeGrowthOutsideUpper.feeGrowthOutside0X128.toString(10)),
+      feeGrowthOutside1X128: BigInt(_feeGrowthOutsideUpper.feeGrowthOutside1X128.toString(10)),
+    }
+    const feeGrowthGlobal0X128 = bigIntFromBigintIsh(_feeGrowthGlobal0X128)
+    const feeGrowthGlobal1X128 = bigIntFromBigintIsh(_feeGrowthGlobal1X128)
+
+    let feeGrowthBelow0X128: bigint
+    let feeGrowthBelow1X128: bigint
     if (tickCurrent >= tickLower) {
       feeGrowthBelow0X128 = feeGrowthOutsideLower.feeGrowthOutside0X128
       feeGrowthBelow1X128 = feeGrowthOutsideLower.feeGrowthOutside1X128
@@ -43,8 +64,8 @@ export abstract class TickLibrary {
       feeGrowthBelow1X128 = subIn256(feeGrowthGlobal1X128, feeGrowthOutsideLower.feeGrowthOutside1X128)
     }
 
-    let feeGrowthAbove0X128: JSBI
-    let feeGrowthAbove1X128: JSBI
+    let feeGrowthAbove0X128: bigint
+    let feeGrowthAbove1X128: bigint
     if (tickCurrent < tickUpper) {
       feeGrowthAbove0X128 = feeGrowthOutsideUpper.feeGrowthOutside0X128
       feeGrowthAbove1X128 = feeGrowthOutsideUpper.feeGrowthOutside1X128
@@ -53,9 +74,15 @@ export abstract class TickLibrary {
       feeGrowthAbove1X128 = subIn256(feeGrowthGlobal1X128, feeGrowthOutsideUpper.feeGrowthOutside1X128)
     }
 
-    return [
+    const returnValue = [
       subIn256(subIn256(feeGrowthGlobal0X128, feeGrowthBelow0X128), feeGrowthAbove0X128),
-      subIn256(subIn256(feeGrowthGlobal1X128, feeGrowthBelow1X128), feeGrowthAbove1X128)
+      subIn256(subIn256(feeGrowthGlobal1X128, feeGrowthBelow1X128), feeGrowthAbove1X128),
     ]
+
+    if (typeof _feeGrowthOutsideLower === 'bigint') {
+      return returnValue as [T, T]
+    } else {
+      return [JSBI.BigInt(returnValue[0].toString(10)) as T, JSBI.BigInt(returnValue[1].toString(10)) as T]
+    }
   }
 }
diff --git a/src/utils/tickList.ts b/src/utils/tickList.ts
index d6988ac0..d356c65b 100644
--- a/src/utils/tickList.ts
+++ b/src/utils/tickList.ts
@@ -1,7 +1,5 @@
-import JSBI from 'jsbi'
 import invariant from 'tiny-invariant'
 import { Tick } from '../entities/tick'
-import { ZERO } from '../internalConstants'
 import { isSorted } from './isSorted'
 
 function tickComparator(a: Tick, b: Tick) {
@@ -26,13 +24,7 @@ export abstract class TickList {
     )
 
     // ensure tick liquidity deltas sum to 0
-    invariant(
-      JSBI.equal(
-        ticks.reduce((accumulator, { liquidityNet }) => JSBI.add(accumulator, liquidityNet), ZERO),
-        ZERO
-      ),
-      'ZERO_NET'
-    )
+    invariant(ticks.reduce((accumulator, { _liquidityNet }) => accumulator + _liquidityNet, 0n) === 0n, 'ZERO_NET')
 
     invariant(isSorted(ticks, tickComparator), 'SORTED')
   }
diff --git a/src/utils/tickMath.ts b/src/utils/tickMath.ts
index 37910bcf..36df419d 100644
--- a/src/utils/tickMath.ts
+++ b/src/utils/tickMath.ts
@@ -1,14 +1,14 @@
-import { MaxUint256 } from '@uniswap/sdk-core'
+import { MaxUint256BigInt } from '@uniswap/sdk-core'
 import JSBI from 'jsbi'
 import invariant from 'tiny-invariant'
-import { ONE, ZERO } from '../internalConstants'
 import { mostSignificantBit } from './mostSignificantBit'
+import { bigIntFromBigintIsh } from './bigintIsh'
 
-function mulShift(val: JSBI, mulBy: string): JSBI {
-  return JSBI.signedRightShift(JSBI.multiply(val, JSBI.BigInt(mulBy)), JSBI.BigInt(128))
+function mulShift(val: bigint, mulBy: bigint): bigint {
+  return (val * mulBy) >> 128n
 }
 
-const Q32 = JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(32))
+const Q32 = 2n ** 32n
 
 export abstract class TickMath {
   /**
@@ -29,49 +29,63 @@ export abstract class TickMath {
    * The sqrt ratio corresponding to the minimum tick that could be used on any pool.
    */
   public static MIN_SQRT_RATIO: JSBI = JSBI.BigInt('4295128739')
+  /**
+   * The sqrt ratio corresponding to the minimum tick that could be used on any pool.
+   */
+  public static MIN_SQRT_RATIO_BIGINT: bigint = BigInt('4295128739')
   /**
    * The sqrt ratio corresponding to the maximum tick that could be used on any pool.
    */
   public static MAX_SQRT_RATIO: JSBI = JSBI.BigInt('1461446703485210103287273052203988822378723970342')
+  /**
+   * The sqrt ratio corresponding to the maximum tick that could be used on any pool.
+   */
+  public static MAX_SQRT_RATIO_BIGINT: bigint = BigInt('1461446703485210103287273052203988822378723970342')
 
   /**
    * Returns the sqrt ratio as a Q64.96 for the given tick. The sqrt ratio is computed as sqrt(1.0001)^tick
    * @param tick the tick for which to compute the sqrt ratio
    */
-  public static getSqrtRatioAtTick(tick: number): JSBI {
+  public static getSqrtRatioAtTickBigInt(tick: number): bigint {
     invariant(tick >= TickMath.MIN_TICK && tick <= TickMath.MAX_TICK && Number.isInteger(tick), 'TICK')
     const absTick: number = tick < 0 ? tick * -1 : tick
 
-    let ratio: JSBI =
+    let ratio: bigint =
       (absTick & 0x1) != 0
-        ? JSBI.BigInt('0xfffcb933bd6fad37aa2d162d1a594001')
-        : JSBI.BigInt('0x100000000000000000000000000000000')
-    if ((absTick & 0x2) != 0) ratio = mulShift(ratio, '0xfff97272373d413259a46990580e213a')
-    if ((absTick & 0x4) != 0) ratio = mulShift(ratio, '0xfff2e50f5f656932ef12357cf3c7fdcc')
-    if ((absTick & 0x8) != 0) ratio = mulShift(ratio, '0xffe5caca7e10e4e61c3624eaa0941cd0')
-    if ((absTick & 0x10) != 0) ratio = mulShift(ratio, '0xffcb9843d60f6159c9db58835c926644')
-    if ((absTick & 0x20) != 0) ratio = mulShift(ratio, '0xff973b41fa98c081472e6896dfb254c0')
-    if ((absTick & 0x40) != 0) ratio = mulShift(ratio, '0xff2ea16466c96a3843ec78b326b52861')
-    if ((absTick & 0x80) != 0) ratio = mulShift(ratio, '0xfe5dee046a99a2a811c461f1969c3053')
-    if ((absTick & 0x100) != 0) ratio = mulShift(ratio, '0xfcbe86c7900a88aedcffc83b479aa3a4')
-    if ((absTick & 0x200) != 0) ratio = mulShift(ratio, '0xf987a7253ac413176f2b074cf7815e54')
-    if ((absTick & 0x400) != 0) ratio = mulShift(ratio, '0xf3392b0822b70005940c7a398e4b70f3')
-    if ((absTick & 0x800) != 0) ratio = mulShift(ratio, '0xe7159475a2c29b7443b29c7fa6e889d9')
-    if ((absTick & 0x1000) != 0) ratio = mulShift(ratio, '0xd097f3bdfd2022b8845ad8f792aa5825')
-    if ((absTick & 0x2000) != 0) ratio = mulShift(ratio, '0xa9f746462d870fdf8a65dc1f90e061e5')
-    if ((absTick & 0x4000) != 0) ratio = mulShift(ratio, '0x70d869a156d2a1b890bb3df62baf32f7')
-    if ((absTick & 0x8000) != 0) ratio = mulShift(ratio, '0x31be135f97d08fd981231505542fcfa6')
-    if ((absTick & 0x10000) != 0) ratio = mulShift(ratio, '0x9aa508b5b7a84e1c677de54f3e99bc9')
-    if ((absTick & 0x20000) != 0) ratio = mulShift(ratio, '0x5d6af8dedb81196699c329225ee604')
-    if ((absTick & 0x40000) != 0) ratio = mulShift(ratio, '0x2216e584f5fa1ea926041bedfe98')
-    if ((absTick & 0x80000) != 0) ratio = mulShift(ratio, '0x48a170391f7dc42444e8fa2')
-
-    if (tick > 0) ratio = JSBI.divide(MaxUint256, ratio)
+        ? BigInt('0xfffcb933bd6fad37aa2d162d1a594001')
+        : BigInt('0x100000000000000000000000000000000')
+    if ((absTick & 0x2) != 0) ratio = mulShift(ratio, BigInt('0xfff97272373d413259a46990580e213a'))
+    if ((absTick & 0x4) != 0) ratio = mulShift(ratio, BigInt('0xfff2e50f5f656932ef12357cf3c7fdcc'))
+    if ((absTick & 0x8) != 0) ratio = mulShift(ratio, BigInt('0xffe5caca7e10e4e61c3624eaa0941cd0'))
+    if ((absTick & 0x10) != 0) ratio = mulShift(ratio, BigInt('0xffcb9843d60f6159c9db58835c926644'))
+    if ((absTick & 0x20) != 0) ratio = mulShift(ratio, BigInt('0xff973b41fa98c081472e6896dfb254c0'))
+    if ((absTick & 0x40) != 0) ratio = mulShift(ratio, BigInt('0xff2ea16466c96a3843ec78b326b52861'))
+    if ((absTick & 0x80) != 0) ratio = mulShift(ratio, BigInt('0xfe5dee046a99a2a811c461f1969c3053'))
+    if ((absTick & 0x100) != 0) ratio = mulShift(ratio, BigInt('0xfcbe86c7900a88aedcffc83b479aa3a4'))
+    if ((absTick & 0x200) != 0) ratio = mulShift(ratio, BigInt('0xf987a7253ac413176f2b074cf7815e54'))
+    if ((absTick & 0x400) != 0) ratio = mulShift(ratio, BigInt('0xf3392b0822b70005940c7a398e4b70f3'))
+    if ((absTick & 0x800) != 0) ratio = mulShift(ratio, BigInt('0xe7159475a2c29b7443b29c7fa6e889d9'))
+    if ((absTick & 0x1000) != 0) ratio = mulShift(ratio, BigInt('0xd097f3bdfd2022b8845ad8f792aa5825'))
+    if ((absTick & 0x2000) != 0) ratio = mulShift(ratio, BigInt('0xa9f746462d870fdf8a65dc1f90e061e5'))
+    if ((absTick & 0x4000) != 0) ratio = mulShift(ratio, BigInt('0x70d869a156d2a1b890bb3df62baf32f7'))
+    if ((absTick & 0x8000) != 0) ratio = mulShift(ratio, BigInt('0x31be135f97d08fd981231505542fcfa6'))
+    if ((absTick & 0x10000) != 0) ratio = mulShift(ratio, BigInt('0x9aa508b5b7a84e1c677de54f3e99bc9'))
+    if ((absTick & 0x20000) != 0) ratio = mulShift(ratio, BigInt('0x5d6af8dedb81196699c329225ee604'))
+    if ((absTick & 0x40000) != 0) ratio = mulShift(ratio, BigInt('0x2216e584f5fa1ea926041bedfe98'))
+    if ((absTick & 0x80000) != 0) ratio = mulShift(ratio, BigInt('0x48a170391f7dc42444e8fa2'))
+
+    if (tick > 0) ratio = MaxUint256BigInt / ratio
 
     // back to Q96
-    return JSBI.greaterThan(JSBI.remainder(ratio, Q32), ZERO)
-      ? JSBI.add(JSBI.divide(ratio, Q32), ONE)
-      : JSBI.divide(ratio, Q32)
+    return ratio % Q32 > 0n ? ratio / Q32 + 1n : ratio / Q32
+  }
+
+  /**
+   * Returns the sqrt ratio as a Q64.96 for the given tick. The sqrt ratio is computed as sqrt(1.0001)^tick
+   * @param tick the tick for which to compute the sqrt ratio
+   */
+  public static getSqrtRatioAtTick(tick: number): JSBI {
+    return JSBI.BigInt(this.getSqrtRatioAtTickBigInt(tick).toString(10))
   }
 
   /**
@@ -79,51 +93,42 @@ export abstract class TickMath {
    * and #getSqrtRatioAtTick(tick + 1) > sqrtRatioX96
    * @param sqrtRatioX96 the sqrt ratio as a Q64.96 for which to compute the tick
    */
-  public static getTickAtSqrtRatio(sqrtRatioX96: JSBI): number {
+  public static getTickAtSqrtRatio(_sqrtRatioX96: bigint | JSBI): number {
+    const sqrtRatioX96: bigint = bigIntFromBigintIsh(_sqrtRatioX96)
+
     invariant(
-      JSBI.greaterThanOrEqual(sqrtRatioX96, TickMath.MIN_SQRT_RATIO) &&
-        JSBI.lessThan(sqrtRatioX96, TickMath.MAX_SQRT_RATIO),
+      sqrtRatioX96 >= TickMath.MIN_SQRT_RATIO_BIGINT && sqrtRatioX96 < TickMath.MAX_SQRT_RATIO_BIGINT,
       'SQRT_RATIO'
     )
 
-    const sqrtRatioX128 = JSBI.leftShift(sqrtRatioX96, JSBI.BigInt(32))
+    const sqrtRatioX128 = sqrtRatioX96 << 32n
 
-    const msb = mostSignificantBit(sqrtRatioX128)
+    const msb = BigInt(mostSignificantBit(sqrtRatioX128))
 
-    let r: JSBI
-    if (JSBI.greaterThanOrEqual(JSBI.BigInt(msb), JSBI.BigInt(128))) {
-      r = JSBI.signedRightShift(sqrtRatioX128, JSBI.BigInt(msb - 127))
+    let r: bigint
+    if (msb >= 128n) {
+      r = sqrtRatioX128 >> (msb - 127n)
     } else {
-      r = JSBI.leftShift(sqrtRatioX128, JSBI.BigInt(127 - msb))
+      r = sqrtRatioX128 << (127n - msb)
     }
 
-    let log_2: JSBI = JSBI.leftShift(JSBI.subtract(JSBI.BigInt(msb), JSBI.BigInt(128)), JSBI.BigInt(64))
+    let log_2: bigint = (msb - 128n) << 64n
 
     for (let i = 0; i < 14; i++) {
-      r = JSBI.signedRightShift(JSBI.multiply(r, r), JSBI.BigInt(127))
-      const f = JSBI.signedRightShift(r, JSBI.BigInt(128))
-      log_2 = JSBI.bitwiseOr(log_2, JSBI.leftShift(f, JSBI.BigInt(63 - i)))
-      r = JSBI.signedRightShift(r, f)
+      r = (r * r) >> 127n
+      const f = r >> 128n
+      log_2 = log_2 | (f << (63n - BigInt(i)))
+      r = r >> f
     }
 
-    const log_sqrt10001 = JSBI.multiply(log_2, JSBI.BigInt('255738958999603826347141'))
+    const log_sqrt10001 = log_2 * BigInt('255738958999603826347141')
 
-    const tickLow = JSBI.toNumber(
-      JSBI.signedRightShift(
-        JSBI.subtract(log_sqrt10001, JSBI.BigInt('3402992956809132418596140100660247210')),
-        JSBI.BigInt(128)
-      )
-    )
-    const tickHigh = JSBI.toNumber(
-      JSBI.signedRightShift(
-        JSBI.add(log_sqrt10001, JSBI.BigInt('291339464771989622907027621153398088495')),
-        JSBI.BigInt(128)
-      )
-    )
+    const tickLow = Number((log_sqrt10001 - BigInt('3402992956809132418596140100660247210')) >> 128n)
+    const tickHigh = Number((log_sqrt10001 + BigInt('291339464771989622907027621153398088495')) >> 128n)
 
     return tickLow === tickHigh
       ? tickLow
-      : JSBI.lessThanOrEqual(TickMath.getSqrtRatioAtTick(tickHigh), sqrtRatioX96)
+      : TickMath.getSqrtRatioAtTickBigInt(tickHigh) <= sqrtRatioX96
       ? tickHigh
       : tickLow
   }
diff --git a/tsconfig.json b/tsconfig.json
index 00863842..879e7e78 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,7 +1,8 @@
 {
-  "include": ["src"],
+  "include": ["src/**/*"],
+  "exclude": ["src/**/*.test.ts"],
   "compilerOptions": {
-    "target": "es2018",
+    "target": "es2020",
     "module": "esnext",
     "importHelpers": true,
     "declaration": true,
@@ -19,6 +20,8 @@
     "noFallthroughCasesInSwitch": true,
     "moduleResolution": "node",
     "esModuleInterop": true,
-    "resolveJsonModule": true
+    "resolveJsonModule": true,
+    "outDir": "dist",
+    "baseUrl": "."
   }
 }
diff --git a/yarn.lock b/yarn.lock
deleted file mode 100644
index dfdd6387..00000000
--- a/yarn.lock
+++ /dev/null
@@ -1,6604 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11", "@babel/code-frame@^7.5.5":
-  version "7.12.11"
-  resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
-  integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
-  dependencies:
-    "@babel/highlight" "^7.10.4"
-
-"@babel/compat-data@^7.12.5", "@babel/compat-data@^7.12.7":
-  version "7.12.7"
-  resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41"
-  integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==
-
-"@babel/core@^7.1.0", "@babel/core@^7.4.4", "@babel/core@^7.7.5":
-  version "7.12.10"
-  resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd"
-  integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==
-  dependencies:
-    "@babel/code-frame" "^7.10.4"
-    "@babel/generator" "^7.12.10"
-    "@babel/helper-module-transforms" "^7.12.1"
-    "@babel/helpers" "^7.12.5"
-    "@babel/parser" "^7.12.10"
-    "@babel/template" "^7.12.7"
-    "@babel/traverse" "^7.12.10"
-    "@babel/types" "^7.12.10"
-    convert-source-map "^1.7.0"
-    debug "^4.1.0"
-    gensync "^1.0.0-beta.1"
-    json5 "^2.1.2"
-    lodash "^4.17.19"
-    semver "^5.4.1"
-    source-map "^0.5.0"
-
-"@babel/generator@^7.12.10", "@babel/generator@^7.12.11":
-  version "7.12.11"
-  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af"
-  integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==
-  dependencies:
-    "@babel/types" "^7.12.11"
-    jsesc "^2.5.1"
-    source-map "^0.5.0"
-
-"@babel/helper-annotate-as-pure@^7.10.4":
-  version "7.12.10"
-  resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d"
-  integrity sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==
-  dependencies:
-    "@babel/types" "^7.12.10"
-
-"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4":
-  version "7.10.4"
-  resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3"
-  integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==
-  dependencies:
-    "@babel/helper-explode-assignable-expression" "^7.10.4"
-    "@babel/types" "^7.10.4"
-
-"@babel/helper-compilation-targets@^7.10.4", "@babel/helper-compilation-targets@^7.12.5":
-  version "7.12.5"
-  resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz#cb470c76198db6a24e9dbc8987275631e5d29831"
-  integrity sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==
-  dependencies:
-    "@babel/compat-data" "^7.12.5"
-    "@babel/helper-validator-option" "^7.12.1"
-    browserslist "^4.14.5"
-    semver "^5.5.0"
-
-"@babel/helper-create-class-features-plugin@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e"
-  integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==
-  dependencies:
-    "@babel/helper-function-name" "^7.10.4"
-    "@babel/helper-member-expression-to-functions" "^7.12.1"
-    "@babel/helper-optimise-call-expression" "^7.10.4"
-    "@babel/helper-replace-supers" "^7.12.1"
-    "@babel/helper-split-export-declaration" "^7.10.4"
-
-"@babel/helper-create-regexp-features-plugin@^7.12.1":
-  version "7.12.7"
-  resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz#2084172e95443fa0a09214ba1bb328f9aea1278f"
-  integrity sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==
-  dependencies:
-    "@babel/helper-annotate-as-pure" "^7.10.4"
-    regexpu-core "^4.7.1"
-
-"@babel/helper-define-map@^7.10.4":
-  version "7.10.5"
-  resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30"
-  integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==
-  dependencies:
-    "@babel/helper-function-name" "^7.10.4"
-    "@babel/types" "^7.10.5"
-    lodash "^4.17.19"
-
-"@babel/helper-define-polyfill-provider@^0.0.3":
-  version "0.0.3"
-  resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.0.3.tgz#df9da66285b884ce66417abdd0b6ca91198149bd"
-  integrity sha512-dULDd/APiP4JowYDAMosecKOi/1v+UId99qhBGiO3myM29KtAVKS/R3x3OJJNBR0FeYB1BcYb2dCwkhqvxWXXQ==
-  dependencies:
-    "@babel/helper-compilation-targets" "^7.10.4"
-    "@babel/helper-module-imports" "^7.10.4"
-    "@babel/helper-plugin-utils" "^7.10.4"
-    "@babel/traverse" "^7.11.5"
-    debug "^4.1.1"
-    lodash.debounce "^4.0.8"
-    resolve "^1.14.2"
-    semver "^6.1.2"
-
-"@babel/helper-explode-assignable-expression@^7.10.4":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz#8006a466695c4ad86a2a5f2fb15b5f2c31ad5633"
-  integrity sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==
-  dependencies:
-    "@babel/types" "^7.12.1"
-
-"@babel/helper-function-name@^7.10.4", "@babel/helper-function-name@^7.12.11":
-  version "7.12.11"
-  resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42"
-  integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==
-  dependencies:
-    "@babel/helper-get-function-arity" "^7.12.10"
-    "@babel/template" "^7.12.7"
-    "@babel/types" "^7.12.11"
-
-"@babel/helper-get-function-arity@^7.12.10":
-  version "7.12.10"
-  resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf"
-  integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==
-  dependencies:
-    "@babel/types" "^7.12.10"
-
-"@babel/helper-hoist-variables@^7.10.4":
-  version "7.10.4"
-  resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e"
-  integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==
-  dependencies:
-    "@babel/types" "^7.10.4"
-
-"@babel/helper-member-expression-to-functions@^7.12.1", "@babel/helper-member-expression-to-functions@^7.12.7":
-  version "7.12.7"
-  resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855"
-  integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==
-  dependencies:
-    "@babel/types" "^7.12.7"
-
-"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.5":
-  version "7.12.5"
-  resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb"
-  integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==
-  dependencies:
-    "@babel/types" "^7.12.5"
-
-"@babel/helper-module-transforms@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c"
-  integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==
-  dependencies:
-    "@babel/helper-module-imports" "^7.12.1"
-    "@babel/helper-replace-supers" "^7.12.1"
-    "@babel/helper-simple-access" "^7.12.1"
-    "@babel/helper-split-export-declaration" "^7.11.0"
-    "@babel/helper-validator-identifier" "^7.10.4"
-    "@babel/template" "^7.10.4"
-    "@babel/traverse" "^7.12.1"
-    "@babel/types" "^7.12.1"
-    lodash "^4.17.19"
-
-"@babel/helper-optimise-call-expression@^7.10.4", "@babel/helper-optimise-call-expression@^7.12.10":
-  version "7.12.10"
-  resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d"
-  integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==
-  dependencies:
-    "@babel/types" "^7.12.10"
-
-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
-  version "7.10.4"
-  resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375"
-  integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==
-
-"@babel/helper-remap-async-to-generator@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd"
-  integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==
-  dependencies:
-    "@babel/helper-annotate-as-pure" "^7.10.4"
-    "@babel/helper-wrap-function" "^7.10.4"
-    "@babel/types" "^7.12.1"
-
-"@babel/helper-replace-supers@^7.12.1":
-  version "7.12.11"
-  resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz#ea511658fc66c7908f923106dd88e08d1997d60d"
-  integrity sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==
-  dependencies:
-    "@babel/helper-member-expression-to-functions" "^7.12.7"
-    "@babel/helper-optimise-call-expression" "^7.12.10"
-    "@babel/traverse" "^7.12.10"
-    "@babel/types" "^7.12.11"
-
-"@babel/helper-simple-access@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136"
-  integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==
-  dependencies:
-    "@babel/types" "^7.12.1"
-
-"@babel/helper-skip-transparent-expression-wrappers@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf"
-  integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==
-  dependencies:
-    "@babel/types" "^7.12.1"
-
-"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0", "@babel/helper-split-export-declaration@^7.12.11":
-  version "7.12.11"
-  resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a"
-  integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==
-  dependencies:
-    "@babel/types" "^7.12.11"
-
-"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11":
-  version "7.12.11"
-  resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
-  integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
-
-"@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.11":
-  version "7.12.11"
-  resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz#d66cb8b7a3e7fe4c6962b32020a131ecf0847f4f"
-  integrity sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw==
-
-"@babel/helper-wrap-function@^7.10.4":
-  version "7.12.3"
-  resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9"
-  integrity sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==
-  dependencies:
-    "@babel/helper-function-name" "^7.10.4"
-    "@babel/template" "^7.10.4"
-    "@babel/traverse" "^7.10.4"
-    "@babel/types" "^7.10.4"
-
-"@babel/helpers@^7.12.5":
-  version "7.12.5"
-  resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e"
-  integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==
-  dependencies:
-    "@babel/template" "^7.10.4"
-    "@babel/traverse" "^7.12.5"
-    "@babel/types" "^7.12.5"
-
-"@babel/highlight@^7.10.4":
-  version "7.10.4"
-  resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143"
-  integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==
-  dependencies:
-    "@babel/helper-validator-identifier" "^7.10.4"
-    chalk "^2.0.0"
-    js-tokens "^4.0.0"
-
-"@babel/parser@^7.1.0", "@babel/parser@^7.11.5", "@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.7.0":
-  version "7.12.11"
-  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79"
-  integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==
-
-"@babel/plugin-proposal-async-generator-functions@^7.12.1":
-  version "7.12.12"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz#04b8f24fd4532008ab4e79f788468fd5a8476566"
-  integrity sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-    "@babel/helper-remap-async-to-generator" "^7.12.1"
-    "@babel/plugin-syntax-async-generators" "^7.8.0"
-
-"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.4.4":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de"
-  integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==
-  dependencies:
-    "@babel/helper-create-class-features-plugin" "^7.12.1"
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-proposal-dynamic-import@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc"
-  integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-    "@babel/plugin-syntax-dynamic-import" "^7.8.0"
-
-"@babel/plugin-proposal-export-namespace-from@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4"
-  integrity sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-    "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
-
-"@babel/plugin-proposal-json-strings@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c"
-  integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-    "@babel/plugin-syntax-json-strings" "^7.8.0"
-
-"@babel/plugin-proposal-logical-assignment-operators@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751"
-  integrity sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-    "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
-
-"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c"
-  integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-    "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0"
-
-"@babel/plugin-proposal-numeric-separator@^7.12.7":
-  version "7.12.7"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz#8bf253de8139099fea193b297d23a9d406ef056b"
-  integrity sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-    "@babel/plugin-syntax-numeric-separator" "^7.10.4"
-
-"@babel/plugin-proposal-object-rest-spread@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069"
-  integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-    "@babel/plugin-syntax-object-rest-spread" "^7.8.0"
-    "@babel/plugin-transform-parameters" "^7.12.1"
-
-"@babel/plugin-proposal-optional-catch-binding@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942"
-  integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-    "@babel/plugin-syntax-optional-catch-binding" "^7.8.0"
-
-"@babel/plugin-proposal-optional-chaining@^7.12.7":
-  version "7.12.7"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz#e02f0ea1b5dc59d401ec16fb824679f683d3303c"
-  integrity sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-    "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
-    "@babel/plugin-syntax-optional-chaining" "^7.8.0"
-
-"@babel/plugin-proposal-private-methods@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389"
-  integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==
-  dependencies:
-    "@babel/helper-create-class-features-plugin" "^7.12.1"
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072"
-  integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==
-  dependencies:
-    "@babel/helper-create-regexp-features-plugin" "^7.12.1"
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4":
-  version "7.8.4"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
-  integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-bigint@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea"
-  integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-class-properties@^7.12.1", "@babel/plugin-syntax-class-properties@^7.8.3":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978"
-  integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-syntax-dynamic-import@^7.8.0":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
-  integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-export-namespace-from@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a"
-  integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
-
-"@babel/plugin-syntax-import-meta@^7.8.3":
-  version "7.10.4"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51"
-  integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
-  integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3":
-  version "7.10.4"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
-  integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
-  integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3":
-  version "7.10.4"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
-  integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
-  integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
-  integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
-  integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-top-level-await@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0"
-  integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-arrow-functions@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3"
-  integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-async-to-generator@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1"
-  integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==
-  dependencies:
-    "@babel/helper-module-imports" "^7.12.1"
-    "@babel/helper-plugin-utils" "^7.10.4"
-    "@babel/helper-remap-async-to-generator" "^7.12.1"
-
-"@babel/plugin-transform-block-scoped-functions@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9"
-  integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-block-scoping@^7.12.11":
-  version "7.12.12"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz#d93a567a152c22aea3b1929bb118d1d0a175cdca"
-  integrity sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-classes@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6"
-  integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==
-  dependencies:
-    "@babel/helper-annotate-as-pure" "^7.10.4"
-    "@babel/helper-define-map" "^7.10.4"
-    "@babel/helper-function-name" "^7.10.4"
-    "@babel/helper-optimise-call-expression" "^7.10.4"
-    "@babel/helper-plugin-utils" "^7.10.4"
-    "@babel/helper-replace-supers" "^7.12.1"
-    "@babel/helper-split-export-declaration" "^7.10.4"
-    globals "^11.1.0"
-
-"@babel/plugin-transform-computed-properties@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852"
-  integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-destructuring@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847"
-  integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.4.4":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975"
-  integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==
-  dependencies:
-    "@babel/helper-create-regexp-features-plugin" "^7.12.1"
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-duplicate-keys@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228"
-  integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-exponentiation-operator@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0"
-  integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==
-  dependencies:
-    "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4"
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-for-of@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa"
-  integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-function-name@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667"
-  integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==
-  dependencies:
-    "@babel/helper-function-name" "^7.10.4"
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-literals@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57"
-  integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-member-expression-literals@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad"
-  integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-modules-amd@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9"
-  integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==
-  dependencies:
-    "@babel/helper-module-transforms" "^7.12.1"
-    "@babel/helper-plugin-utils" "^7.10.4"
-    babel-plugin-dynamic-import-node "^2.3.3"
-
-"@babel/plugin-transform-modules-commonjs@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648"
-  integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==
-  dependencies:
-    "@babel/helper-module-transforms" "^7.12.1"
-    "@babel/helper-plugin-utils" "^7.10.4"
-    "@babel/helper-simple-access" "^7.12.1"
-    babel-plugin-dynamic-import-node "^2.3.3"
-
-"@babel/plugin-transform-modules-systemjs@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086"
-  integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==
-  dependencies:
-    "@babel/helper-hoist-variables" "^7.10.4"
-    "@babel/helper-module-transforms" "^7.12.1"
-    "@babel/helper-plugin-utils" "^7.10.4"
-    "@babel/helper-validator-identifier" "^7.10.4"
-    babel-plugin-dynamic-import-node "^2.3.3"
-
-"@babel/plugin-transform-modules-umd@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902"
-  integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==
-  dependencies:
-    "@babel/helper-module-transforms" "^7.12.1"
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753"
-  integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==
-  dependencies:
-    "@babel/helper-create-regexp-features-plugin" "^7.12.1"
-
-"@babel/plugin-transform-new-target@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0"
-  integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-object-super@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e"
-  integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-    "@babel/helper-replace-supers" "^7.12.1"
-
-"@babel/plugin-transform-parameters@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d"
-  integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-property-literals@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd"
-  integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-regenerator@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753"
-  integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==
-  dependencies:
-    regenerator-transform "^0.14.2"
-
-"@babel/plugin-transform-reserved-words@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8"
-  integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-shorthand-properties@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3"
-  integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-spread@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e"
-  integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-    "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
-
-"@babel/plugin-transform-sticky-regex@^7.12.7":
-  version "7.12.7"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz#560224613ab23987453948ed21d0b0b193fa7fad"
-  integrity sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-template-literals@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843"
-  integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-typeof-symbol@^7.12.10":
-  version "7.12.10"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz#de01c4c8f96580bd00f183072b0d0ecdcf0dec4b"
-  integrity sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-unicode-escapes@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709"
-  integrity sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/plugin-transform-unicode-regex@^7.12.1":
-  version "7.12.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb"
-  integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==
-  dependencies:
-    "@babel/helper-create-regexp-features-plugin" "^7.12.1"
-    "@babel/helper-plugin-utils" "^7.10.4"
-
-"@babel/preset-env@^7.11.0":
-  version "7.12.11"
-  resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.11.tgz#55d5f7981487365c93dbbc84507b1c7215e857f9"
-  integrity sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==
-  dependencies:
-    "@babel/compat-data" "^7.12.7"
-    "@babel/helper-compilation-targets" "^7.12.5"
-    "@babel/helper-module-imports" "^7.12.5"
-    "@babel/helper-plugin-utils" "^7.10.4"
-    "@babel/helper-validator-option" "^7.12.11"
-    "@babel/plugin-proposal-async-generator-functions" "^7.12.1"
-    "@babel/plugin-proposal-class-properties" "^7.12.1"
-    "@babel/plugin-proposal-dynamic-import" "^7.12.1"
-    "@babel/plugin-proposal-export-namespace-from" "^7.12.1"
-    "@babel/plugin-proposal-json-strings" "^7.12.1"
-    "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1"
-    "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1"
-    "@babel/plugin-proposal-numeric-separator" "^7.12.7"
-    "@babel/plugin-proposal-object-rest-spread" "^7.12.1"
-    "@babel/plugin-proposal-optional-catch-binding" "^7.12.1"
-    "@babel/plugin-proposal-optional-chaining" "^7.12.7"
-    "@babel/plugin-proposal-private-methods" "^7.12.1"
-    "@babel/plugin-proposal-unicode-property-regex" "^7.12.1"
-    "@babel/plugin-syntax-async-generators" "^7.8.0"
-    "@babel/plugin-syntax-class-properties" "^7.12.1"
-    "@babel/plugin-syntax-dynamic-import" "^7.8.0"
-    "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
-    "@babel/plugin-syntax-json-strings" "^7.8.0"
-    "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
-    "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0"
-    "@babel/plugin-syntax-numeric-separator" "^7.10.4"
-    "@babel/plugin-syntax-object-rest-spread" "^7.8.0"
-    "@babel/plugin-syntax-optional-catch-binding" "^7.8.0"
-    "@babel/plugin-syntax-optional-chaining" "^7.8.0"
-    "@babel/plugin-syntax-top-level-await" "^7.12.1"
-    "@babel/plugin-transform-arrow-functions" "^7.12.1"
-    "@babel/plugin-transform-async-to-generator" "^7.12.1"
-    "@babel/plugin-transform-block-scoped-functions" "^7.12.1"
-    "@babel/plugin-transform-block-scoping" "^7.12.11"
-    "@babel/plugin-transform-classes" "^7.12.1"
-    "@babel/plugin-transform-computed-properties" "^7.12.1"
-    "@babel/plugin-transform-destructuring" "^7.12.1"
-    "@babel/plugin-transform-dotall-regex" "^7.12.1"
-    "@babel/plugin-transform-duplicate-keys" "^7.12.1"
-    "@babel/plugin-transform-exponentiation-operator" "^7.12.1"
-    "@babel/plugin-transform-for-of" "^7.12.1"
-    "@babel/plugin-transform-function-name" "^7.12.1"
-    "@babel/plugin-transform-literals" "^7.12.1"
-    "@babel/plugin-transform-member-expression-literals" "^7.12.1"
-    "@babel/plugin-transform-modules-amd" "^7.12.1"
-    "@babel/plugin-transform-modules-commonjs" "^7.12.1"
-    "@babel/plugin-transform-modules-systemjs" "^7.12.1"
-    "@babel/plugin-transform-modules-umd" "^7.12.1"
-    "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1"
-    "@babel/plugin-transform-new-target" "^7.12.1"
-    "@babel/plugin-transform-object-super" "^7.12.1"
-    "@babel/plugin-transform-parameters" "^7.12.1"
-    "@babel/plugin-transform-property-literals" "^7.12.1"
-    "@babel/plugin-transform-regenerator" "^7.12.1"
-    "@babel/plugin-transform-reserved-words" "^7.12.1"
-    "@babel/plugin-transform-shorthand-properties" "^7.12.1"
-    "@babel/plugin-transform-spread" "^7.12.1"
-    "@babel/plugin-transform-sticky-regex" "^7.12.7"
-    "@babel/plugin-transform-template-literals" "^7.12.1"
-    "@babel/plugin-transform-typeof-symbol" "^7.12.10"
-    "@babel/plugin-transform-unicode-escapes" "^7.12.1"
-    "@babel/plugin-transform-unicode-regex" "^7.12.1"
-    "@babel/preset-modules" "^0.1.3"
-    "@babel/types" "^7.12.11"
-    core-js-compat "^3.8.0"
-    semver "^5.5.0"
-
-"@babel/preset-modules@^0.1.3":
-  version "0.1.4"
-  resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e"
-  integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.0.0"
-    "@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
-    "@babel/plugin-transform-dotall-regex" "^7.4.4"
-    "@babel/types" "^7.4.4"
-    esutils "^2.0.2"
-
-"@babel/runtime-corejs3@^7.10.2":
-  version "7.12.5"
-  resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.12.5.tgz#ffee91da0eb4c6dae080774e94ba606368e414f4"
-  integrity sha512-roGr54CsTmNPPzZoCP1AmDXuBoNao7tnSA83TXTwt+UK5QVyh1DIJnrgYRPWKCF2flqZQXwa7Yr8v7VmLzF0YQ==
-  dependencies:
-    core-js-pure "^3.0.0"
-    regenerator-runtime "^0.13.4"
-
-"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4":
-  version "7.12.5"
-  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e"
-  integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==
-  dependencies:
-    regenerator-runtime "^0.13.4"
-
-"@babel/template@^7.10.4", "@babel/template@^7.12.7", "@babel/template@^7.3.3":
-  version "7.12.7"
-  resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc"
-  integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==
-  dependencies:
-    "@babel/code-frame" "^7.10.4"
-    "@babel/parser" "^7.12.7"
-    "@babel/types" "^7.12.7"
-
-"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.11.5", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5", "@babel/traverse@^7.7.0":
-  version "7.12.12"
-  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376"
-  integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==
-  dependencies:
-    "@babel/code-frame" "^7.12.11"
-    "@babel/generator" "^7.12.11"
-    "@babel/helper-function-name" "^7.12.11"
-    "@babel/helper-split-export-declaration" "^7.12.11"
-    "@babel/parser" "^7.12.11"
-    "@babel/types" "^7.12.12"
-    debug "^4.1.0"
-    globals "^11.1.0"
-    lodash "^4.17.19"
-
-"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0":
-  version "7.12.12"
-  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299"
-  integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==
-  dependencies:
-    "@babel/helper-validator-identifier" "^7.12.11"
-    lodash "^4.17.19"
-    to-fast-properties "^2.0.0"
-
-"@bcoe/v8-coverage@^0.2.3":
-  version "0.2.3"
-  resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
-  integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
-
-"@cnakazawa/watch@^1.0.3":
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a"
-  integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==
-  dependencies:
-    exec-sh "^0.3.2"
-    minimist "^1.2.0"
-
-"@ethersproject/abi@^5.0.12":
-  version "5.0.12"
-  resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.12.tgz#9aebe6aedc05ce45bb6c41b06d80bd195b7de77c"
-  integrity sha512-Ujr/3bwyYYjXLDQfebeiiTuvOw9XtUKM8av6YkoBeMXyGQM9GkjrQlwJMNwGTmqjATH/ZNbRgCh98GjOLiIB1Q==
-  dependencies:
-    "@ethersproject/address" "^5.0.9"
-    "@ethersproject/bignumber" "^5.0.13"
-    "@ethersproject/bytes" "^5.0.9"
-    "@ethersproject/constants" "^5.0.8"
-    "@ethersproject/hash" "^5.0.10"
-    "@ethersproject/keccak256" "^5.0.7"
-    "@ethersproject/logger" "^5.0.8"
-    "@ethersproject/properties" "^5.0.7"
-    "@ethersproject/strings" "^5.0.8"
-
-"@ethersproject/abstract-provider@^5.0.8":
-  version "5.0.9"
-  resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.0.9.tgz#a55410b73e3994842884eb82b1f43e3a9f653eea"
-  integrity sha512-X9fMkqpeu9ayC3JyBkeeZhn35P4xQkpGX/l+FrxDtEW9tybf/UWXSMi8bGThpPtfJ6q6U2LDetXSpSwK4TfYQQ==
-  dependencies:
-    "@ethersproject/bignumber" "^5.0.13"
-    "@ethersproject/bytes" "^5.0.9"
-    "@ethersproject/logger" "^5.0.8"
-    "@ethersproject/networks" "^5.0.7"
-    "@ethersproject/properties" "^5.0.7"
-    "@ethersproject/transactions" "^5.0.9"
-    "@ethersproject/web" "^5.0.12"
-
-"@ethersproject/abstract-signer@^5.0.10":
-  version "5.0.13"
-  resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.0.13.tgz#59b4d0367d6327ec53bc269c6730c44a4a3b043c"
-  integrity sha512-VBIZEI5OK0TURoCYyw0t3w+TEO4kdwnI9wvt4kqUwyxSn3YCRpXYVl0Xoe7XBR/e5+nYOi2MyFGJ3tsFwONecQ==
-  dependencies:
-    "@ethersproject/abstract-provider" "^5.0.8"
-    "@ethersproject/bignumber" "^5.0.13"
-    "@ethersproject/bytes" "^5.0.9"
-    "@ethersproject/logger" "^5.0.8"
-    "@ethersproject/properties" "^5.0.7"
-
-"@ethersproject/address@^5.0.2":
-  version "5.0.9"
-  resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.9.tgz#347ef30dc8243c682574a3f23ff63f73c8f8cbf1"
-  integrity sha512-gKkmbZDMyGbVjr8nA5P0md1GgESqSGH7ILIrDidPdNXBl4adqbuA3OAuZx/O2oGpL6PtJ9BDa0kHheZ1ToHU3w==
-  dependencies:
-    "@ethersproject/bignumber" "^5.0.13"
-    "@ethersproject/bytes" "^5.0.9"
-    "@ethersproject/keccak256" "^5.0.7"
-    "@ethersproject/logger" "^5.0.8"
-    "@ethersproject/rlp" "^5.0.7"
-
-"@ethersproject/address@^5.0.9":
-  version "5.0.10"
-  resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.10.tgz#2bc69fdff4408e0570471cd19dee577ab06a10d0"
-  integrity sha512-70vqESmW5Srua1kMDIN6uVfdneZMaMyRYH4qPvkAXGkbicrCOsA9m01vIloA4wYiiF+HLEfL1ENKdn5jb9xiAw==
-  dependencies:
-    "@ethersproject/bignumber" "^5.0.13"
-    "@ethersproject/bytes" "^5.0.9"
-    "@ethersproject/keccak256" "^5.0.7"
-    "@ethersproject/logger" "^5.0.8"
-    "@ethersproject/rlp" "^5.0.7"
-
-"@ethersproject/base64@^5.0.7":
-  version "5.0.8"
-  resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.0.8.tgz#1bc4b4b8c59c1debf972c7164b96c0b8964a20a1"
-  integrity sha512-PNbpHOMgZpZ1skvQl119pV2YkCPXmZTxw+T92qX0z7zaMFPypXWTZBzim+hUceb//zx4DFjeGT4aSjZRTOYThg==
-  dependencies:
-    "@ethersproject/bytes" "^5.0.9"
-
-"@ethersproject/bignumber@^5.0.13":
-  version "5.0.13"
-  resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.13.tgz#a5466412b3b80104097b9c694f6ae827df4353fe"
-  integrity sha512-b89bX5li6aK492yuPP5mPgRVgIxxBP7ksaBtKX5QQBsrZTpNOjf/MR4CjcUrAw8g+RQuD6kap9lPjFgY4U1/5A==
-  dependencies:
-    "@ethersproject/bytes" "^5.0.9"
-    "@ethersproject/logger" "^5.0.8"
-    bn.js "^4.4.0"
-
-"@ethersproject/bytes@^5.0.9":
-  version "5.0.9"
-  resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.9.tgz#2748247402ad20df69f3a3e935dc7b58c0d75c08"
-  integrity sha512-k+17ZViDtAugC0s7HM6rdsTWEdIYII4RPCDkPEuxKc6i40Bs+m6tjRAtCECX06wKZnrEoR9pjOJRXHJ/VLoOcA==
-  dependencies:
-    "@ethersproject/logger" "^5.0.8"
-
-"@ethersproject/constants@^5.0.8":
-  version "5.0.9"
-  resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.9.tgz#81ac44c3bf612de63eb1c490b314ea1b932cda9f"
-  integrity sha512-2uAKH89UcaJP/Sc+54u92BtJtZ4cPgcS1p0YbB1L3tlkavwNvth+kNCUplIB1Becqs7BOZr0B/3dMNjhJDy4Dg==
-  dependencies:
-    "@ethersproject/bignumber" "^5.0.13"
-
-"@ethersproject/hash@^5.0.10":
-  version "5.0.11"
-  resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.11.tgz#da89517438bbbf8a39df56fff09f0a71669ae7a7"
-  integrity sha512-H3KJ9fk33XWJ2djAW03IL7fg3DsDMYjO1XijiUb1hJ85vYfhvxu0OmsU7d3tg2Uv1H1kFSo8ghr3WFQ8c+NL3g==
-  dependencies:
-    "@ethersproject/abstract-signer" "^5.0.10"
-    "@ethersproject/address" "^5.0.9"
-    "@ethersproject/bignumber" "^5.0.13"
-    "@ethersproject/bytes" "^5.0.9"
-    "@ethersproject/keccak256" "^5.0.7"
-    "@ethersproject/logger" "^5.0.8"
-    "@ethersproject/properties" "^5.0.7"
-    "@ethersproject/strings" "^5.0.8"
-
-"@ethersproject/keccak256@^5.0.7":
-  version "5.0.7"
-  resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.7.tgz#2eedb5e4c160fcdf0079660f8ae362d7855ea943"
-  integrity sha512-zpUBmofWvx9PGfc7IICobgFQSgNmTOGTGLUxSYqZzY/T+b4y/2o5eqf/GGmD7qnTGzKQ42YlLNo+LeDP2qe55g==
-  dependencies:
-    "@ethersproject/bytes" "^5.0.9"
-    js-sha3 "0.5.7"
-
-"@ethersproject/logger@^5.0.8":
-  version "5.0.8"
-  resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.8.tgz#135c1903d35c878265f3cbf2b287042c4c20d5d4"
-  integrity sha512-SkJCTaVTnaZ3/ieLF5pVftxGEFX56pTH+f2Slrpv7cU0TNpUZNib84QQdukd++sWUp/S7j5t5NW+WegbXd4U/A==
-
-"@ethersproject/networks@^5.0.7":
-  version "5.0.8"
-  resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.0.8.tgz#37e6f8c058f2d540373ea5939056cd3de069132e"
-  integrity sha512-PYpptlO2Tu5f/JEBI5hdlMds5k1DY1QwVbh3LKPb3un9dQA2bC51vd2/gRWAgSBpF3kkmZOj4FhD7ATLX4H+DA==
-  dependencies:
-    "@ethersproject/logger" "^5.0.8"
-
-"@ethersproject/properties@^5.0.7":
-  version "5.0.8"
-  resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.8.tgz#e45d28d25402c73394873dbf058f856c966cae01"
-  integrity sha512-zEnLMze2Eu2VDPj/05QwCwMKHh506gpT9PP9KPVd4dDB+5d6AcROUYVLoIIQgBYK7X/Gw0UJmG3oVtnxOQafAw==
-  dependencies:
-    "@ethersproject/logger" "^5.0.8"
-
-"@ethersproject/rlp@^5.0.7":
-  version "5.0.7"
-  resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.7.tgz#cfa4fa6415960a435b7814e1a29bdfea657e2b6e"
-  integrity sha512-ulUTVEuV7PT4jJTPpfhRHK57tkLEDEY9XSYJtrSNHOqdwMvH0z7BM2AKIMq4LVDlnu4YZASdKrkFGEIO712V9w==
-  dependencies:
-    "@ethersproject/bytes" "^5.0.9"
-    "@ethersproject/logger" "^5.0.8"
-
-"@ethersproject/sha2@^5.0.7":
-  version "5.0.8"
-  resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.0.8.tgz#9903c67e562739d8b312820b0a265b9c9bf35fc3"
-  integrity sha512-ILP1ZgyvDj4rrdE+AXrTv9V88m7x87uga2VZ/FeULKPumOEw/4bGnJz/oQ8zDnDvVYRCJ+48VaQBS2CFLbk1ww==
-  dependencies:
-    "@ethersproject/bytes" "^5.0.9"
-    "@ethersproject/logger" "^5.0.8"
-    hash.js "1.1.3"
-
-"@ethersproject/signing-key@^5.0.8":
-  version "5.0.10"
-  resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.0.10.tgz#05e26e04f0aa5360dc78674d7331bacea8fea5c1"
-  integrity sha512-w5it3GbFOvN6e0mTd5gDNj+bwSe6L9jqqYjU+uaYS8/hAEp4qYLk5p8ZjbJJkNn7u1p0iwocp8X9oH/OdK8apA==
-  dependencies:
-    "@ethersproject/bytes" "^5.0.9"
-    "@ethersproject/logger" "^5.0.8"
-    "@ethersproject/properties" "^5.0.7"
-    elliptic "6.5.4"
-
-"@ethersproject/solidity@^5.0.9":
-  version "5.0.9"
-  resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.0.9.tgz#49100fbe9f364ac56f7ff7c726f4f3d151901134"
-  integrity sha512-LIxSAYEQgLRXE3mRPCq39ou61kqP8fDrGqEeNcaNJS3aLbmAOS8MZp56uK++WsdI9hj8sNsFh78hrAa6zR9Jag==
-  dependencies:
-    "@ethersproject/bignumber" "^5.0.13"
-    "@ethersproject/bytes" "^5.0.9"
-    "@ethersproject/keccak256" "^5.0.7"
-    "@ethersproject/sha2" "^5.0.7"
-    "@ethersproject/strings" "^5.0.8"
-
-"@ethersproject/strings@^5.0.8":
-  version "5.0.9"
-  resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.9.tgz#8e2eb2918b140231e1d1b883d77e43213a8ac280"
-  integrity sha512-ogxBpcUpdO524CYs841MoJHgHxEPUy0bJFDS4Ezg8My+WYVMfVAOlZSLss0Rurbeeam8CpUVDzM4zUn09SU66Q==
-  dependencies:
-    "@ethersproject/bytes" "^5.0.9"
-    "@ethersproject/constants" "^5.0.8"
-    "@ethersproject/logger" "^5.0.8"
-
-"@ethersproject/transactions@^5.0.9":
-  version "5.0.10"
-  resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.10.tgz#d50cafd80d27206336f80114bc0f18bc18687331"
-  integrity sha512-Tqpp+vKYQyQdJQQk4M73tDzO7ODf2D42/sJOcKlDAAbdSni13v6a+31hUdo02qYXhVYwIs+ZjHnO4zKv5BNk8w==
-  dependencies:
-    "@ethersproject/address" "^5.0.9"
-    "@ethersproject/bignumber" "^5.0.13"
-    "@ethersproject/bytes" "^5.0.9"
-    "@ethersproject/constants" "^5.0.8"
-    "@ethersproject/keccak256" "^5.0.7"
-    "@ethersproject/logger" "^5.0.8"
-    "@ethersproject/properties" "^5.0.7"
-    "@ethersproject/rlp" "^5.0.7"
-    "@ethersproject/signing-key" "^5.0.8"
-
-"@ethersproject/web@^5.0.12":
-  version "5.0.13"
-  resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.0.13.tgz#5a92ac6d835d2ebce95b6b645a86668736e2f532"
-  integrity sha512-G3x/Ns7pQm21ALnWLbdBI5XkW/jrsbXXffI9hKNPHqf59mTxHYtlNiSwxdoTSwCef3Hn7uvGZpaSgTyxs7IufQ==
-  dependencies:
-    "@ethersproject/base64" "^5.0.7"
-    "@ethersproject/bytes" "^5.0.9"
-    "@ethersproject/logger" "^5.0.8"
-    "@ethersproject/properties" "^5.0.7"
-    "@ethersproject/strings" "^5.0.8"
-
-"@istanbuljs/load-nyc-config@^1.0.0":
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced"
-  integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==
-  dependencies:
-    camelcase "^5.3.1"
-    find-up "^4.1.0"
-    get-package-type "^0.1.0"
-    js-yaml "^3.13.1"
-    resolve-from "^5.0.0"
-
-"@istanbuljs/schema@^0.1.2":
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd"
-  integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==
-
-"@jest/console@^25.5.0":
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.5.0.tgz#770800799d510f37329c508a9edd0b7b447d9abb"
-  integrity sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==
-  dependencies:
-    "@jest/types" "^25.5.0"
-    chalk "^3.0.0"
-    jest-message-util "^25.5.0"
-    jest-util "^25.5.0"
-    slash "^3.0.0"
-
-"@jest/core@^25.5.4":
-  version "25.5.4"
-  resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.5.4.tgz#3ef7412f7339210f003cdf36646bbca786efe7b4"
-  integrity sha512-3uSo7laYxF00Dg/DMgbn4xMJKmDdWvZnf89n8Xj/5/AeQ2dOQmn6b6Hkj/MleyzZWXpwv+WSdYWl4cLsy2JsoA==
-  dependencies:
-    "@jest/console" "^25.5.0"
-    "@jest/reporters" "^25.5.1"
-    "@jest/test-result" "^25.5.0"
-    "@jest/transform" "^25.5.1"
-    "@jest/types" "^25.5.0"
-    ansi-escapes "^4.2.1"
-    chalk "^3.0.0"
-    exit "^0.1.2"
-    graceful-fs "^4.2.4"
-    jest-changed-files "^25.5.0"
-    jest-config "^25.5.4"
-    jest-haste-map "^25.5.1"
-    jest-message-util "^25.5.0"
-    jest-regex-util "^25.2.6"
-    jest-resolve "^25.5.1"
-    jest-resolve-dependencies "^25.5.4"
-    jest-runner "^25.5.4"
-    jest-runtime "^25.5.4"
-    jest-snapshot "^25.5.1"
-    jest-util "^25.5.0"
-    jest-validate "^25.5.0"
-    jest-watcher "^25.5.0"
-    micromatch "^4.0.2"
-    p-each-series "^2.1.0"
-    realpath-native "^2.0.0"
-    rimraf "^3.0.0"
-    slash "^3.0.0"
-    strip-ansi "^6.0.0"
-
-"@jest/environment@^25.5.0":
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.5.0.tgz#aa33b0c21a716c65686638e7ef816c0e3a0c7b37"
-  integrity sha512-U2VXPEqL07E/V7pSZMSQCvV5Ea4lqOlT+0ZFijl/i316cRMHvZ4qC+jBdryd+lmRetjQo0YIQr6cVPNxxK87mA==
-  dependencies:
-    "@jest/fake-timers" "^25.5.0"
-    "@jest/types" "^25.5.0"
-    jest-mock "^25.5.0"
-
-"@jest/fake-timers@^25.5.0":
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.5.0.tgz#46352e00533c024c90c2bc2ad9f2959f7f114185"
-  integrity sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ==
-  dependencies:
-    "@jest/types" "^25.5.0"
-    jest-message-util "^25.5.0"
-    jest-mock "^25.5.0"
-    jest-util "^25.5.0"
-    lolex "^5.0.0"
-
-"@jest/globals@^25.5.2":
-  version "25.5.2"
-  resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-25.5.2.tgz#5e45e9de8d228716af3257eeb3991cc2e162ca88"
-  integrity sha512-AgAS/Ny7Q2RCIj5kZ+0MuKM1wbF0WMLxbCVl/GOMoCNbODRdJ541IxJ98xnZdVSZXivKpJlNPIWa3QmY0l4CXA==
-  dependencies:
-    "@jest/environment" "^25.5.0"
-    "@jest/types" "^25.5.0"
-    expect "^25.5.0"
-
-"@jest/reporters@^25.5.1":
-  version "25.5.1"
-  resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.5.1.tgz#cb686bcc680f664c2dbaf7ed873e93aa6811538b"
-  integrity sha512-3jbd8pPDTuhYJ7vqiHXbSwTJQNavczPs+f1kRprRDxETeE3u6srJ+f0NPuwvOmk+lmunZzPkYWIFZDLHQPkviw==
-  dependencies:
-    "@bcoe/v8-coverage" "^0.2.3"
-    "@jest/console" "^25.5.0"
-    "@jest/test-result" "^25.5.0"
-    "@jest/transform" "^25.5.1"
-    "@jest/types" "^25.5.0"
-    chalk "^3.0.0"
-    collect-v8-coverage "^1.0.0"
-    exit "^0.1.2"
-    glob "^7.1.2"
-    graceful-fs "^4.2.4"
-    istanbul-lib-coverage "^3.0.0"
-    istanbul-lib-instrument "^4.0.0"
-    istanbul-lib-report "^3.0.0"
-    istanbul-lib-source-maps "^4.0.0"
-    istanbul-reports "^3.0.2"
-    jest-haste-map "^25.5.1"
-    jest-resolve "^25.5.1"
-    jest-util "^25.5.0"
-    jest-worker "^25.5.0"
-    slash "^3.0.0"
-    source-map "^0.6.0"
-    string-length "^3.1.0"
-    terminal-link "^2.0.0"
-    v8-to-istanbul "^4.1.3"
-  optionalDependencies:
-    node-notifier "^6.0.0"
-
-"@jest/source-map@^25.5.0":
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-25.5.0.tgz#df5c20d6050aa292c2c6d3f0d2c7606af315bd1b"
-  integrity sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ==
-  dependencies:
-    callsites "^3.0.0"
-    graceful-fs "^4.2.4"
-    source-map "^0.6.0"
-
-"@jest/test-result@^25.5.0":
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.5.0.tgz#139a043230cdeffe9ba2d8341b27f2efc77ce87c"
-  integrity sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==
-  dependencies:
-    "@jest/console" "^25.5.0"
-    "@jest/types" "^25.5.0"
-    "@types/istanbul-lib-coverage" "^2.0.0"
-    collect-v8-coverage "^1.0.0"
-
-"@jest/test-sequencer@^25.5.4":
-  version "25.5.4"
-  resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.5.4.tgz#9b4e685b36954c38d0f052e596d28161bdc8b737"
-  integrity sha512-pTJGEkSeg1EkCO2YWq6hbFvKNXk8ejqlxiOg1jBNLnWrgXOkdY6UmqZpwGFXNnRt9B8nO1uWMzLLZ4eCmhkPNA==
-  dependencies:
-    "@jest/test-result" "^25.5.0"
-    graceful-fs "^4.2.4"
-    jest-haste-map "^25.5.1"
-    jest-runner "^25.5.4"
-    jest-runtime "^25.5.4"
-
-"@jest/transform@^25.5.1":
-  version "25.5.1"
-  resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.5.1.tgz#0469ddc17699dd2bf985db55fa0fb9309f5c2db3"
-  integrity sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg==
-  dependencies:
-    "@babel/core" "^7.1.0"
-    "@jest/types" "^25.5.0"
-    babel-plugin-istanbul "^6.0.0"
-    chalk "^3.0.0"
-    convert-source-map "^1.4.0"
-    fast-json-stable-stringify "^2.0.0"
-    graceful-fs "^4.2.4"
-    jest-haste-map "^25.5.1"
-    jest-regex-util "^25.2.6"
-    jest-util "^25.5.0"
-    micromatch "^4.0.2"
-    pirates "^4.0.1"
-    realpath-native "^2.0.0"
-    slash "^3.0.0"
-    source-map "^0.6.1"
-    write-file-atomic "^3.0.0"
-
-"@jest/types@^24.9.0":
-  version "24.9.0"
-  resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59"
-  integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==
-  dependencies:
-    "@types/istanbul-lib-coverage" "^2.0.0"
-    "@types/istanbul-reports" "^1.1.1"
-    "@types/yargs" "^13.0.0"
-
-"@jest/types@^25.5.0":
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d"
-  integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==
-  dependencies:
-    "@types/istanbul-lib-coverage" "^2.0.0"
-    "@types/istanbul-reports" "^1.1.1"
-    "@types/yargs" "^15.0.0"
-    chalk "^3.0.0"
-
-"@openzeppelin/contracts@3.4.1-solc-0.7-2":
-  version "3.4.1-solc-0.7-2"
-  resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-3.4.1-solc-0.7-2.tgz#371c67ebffe50f551c3146a9eec5fe6ffe862e92"
-  integrity sha512-tAG9LWg8+M2CMu7hIsqHPaTyG4uDzjr6mhvH96LvOpLZZj6tgzTluBt+LsCf1/QaYrlis6pITvpIaIhE+iZB+Q==
-
-"@openzeppelin/contracts@3.4.2-solc-0.7":
-  version "3.4.2-solc-0.7"
-  resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-3.4.2-solc-0.7.tgz#38f4dbab672631034076ccdf2f3201fab1726635"
-  integrity sha512-W6QmqgkADuFcTLzHL8vVoNBtkwjvQRpYIAom7KiUNoLKghyx3FgH0GBjt8NRvigV1ZmMOBllvE1By1C+bi8WpA==
-
-"@rollup/plugin-babel@^5.1.0":
-  version "5.2.2"
-  resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.2.2.tgz#e5623a01dd8e37e004ba87f2de218c611727d9b2"
-  integrity sha512-MjmH7GvFT4TW8xFdIeFS3wqIX646y5tACdxkTO+khbHvS3ZcVJL6vkAHLw2wqPmkhwCfWHoNsp15VYNwW6JEJA==
-  dependencies:
-    "@babel/helper-module-imports" "^7.10.4"
-    "@rollup/pluginutils" "^3.1.0"
-
-"@rollup/plugin-commonjs@^11.0.0":
-  version "11.1.0"
-  resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-11.1.0.tgz#60636c7a722f54b41e419e1709df05c7234557ef"
-  integrity sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA==
-  dependencies:
-    "@rollup/pluginutils" "^3.0.8"
-    commondir "^1.0.1"
-    estree-walker "^1.0.1"
-    glob "^7.1.2"
-    is-reference "^1.1.2"
-    magic-string "^0.25.2"
-    resolve "^1.11.0"
-
-"@rollup/plugin-json@^4.0.0":
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3"
-  integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==
-  dependencies:
-    "@rollup/pluginutils" "^3.0.8"
-
-"@rollup/plugin-node-resolve@^9.0.0":
-  version "9.0.0"
-  resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz#39bd0034ce9126b39c1699695f440b4b7d2b62e6"
-  integrity sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==
-  dependencies:
-    "@rollup/pluginutils" "^3.1.0"
-    "@types/resolve" "1.17.1"
-    builtin-modules "^3.1.0"
-    deepmerge "^4.2.2"
-    is-module "^1.0.0"
-    resolve "^1.17.0"
-
-"@rollup/plugin-replace@^2.2.1":
-  version "2.3.4"
-  resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.3.4.tgz#7dd84c17755d62b509577f2db37eb524d7ca88ca"
-  integrity sha512-waBhMzyAtjCL1GwZes2jaE9MjuQ/DQF2BatH3fRivUF3z0JBFrU0U6iBNC/4WR+2rLKhaAhPWDNPYp4mI6RqdQ==
-  dependencies:
-    "@rollup/pluginutils" "^3.1.0"
-    magic-string "^0.25.7"
-
-"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.0.9", "@rollup/pluginutils@^3.1.0":
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b"
-  integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==
-  dependencies:
-    "@types/estree" "0.0.39"
-    estree-walker "^1.0.1"
-    picomatch "^2.2.2"
-
-"@sinonjs/commons@^1.7.0":
-  version "1.8.2"
-  resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.2.tgz#858f5c4b48d80778fde4b9d541f27edc0d56488b"
-  integrity sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw==
-  dependencies:
-    type-detect "4.0.8"
-
-"@types/babel__core@^7.1.7":
-  version "7.1.12"
-  resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d"
-  integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ==
-  dependencies:
-    "@babel/parser" "^7.1.0"
-    "@babel/types" "^7.0.0"
-    "@types/babel__generator" "*"
-    "@types/babel__template" "*"
-    "@types/babel__traverse" "*"
-
-"@types/babel__generator@*":
-  version "7.6.2"
-  resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.2.tgz#f3d71178e187858f7c45e30380f8f1b7415a12d8"
-  integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==
-  dependencies:
-    "@babel/types" "^7.0.0"
-
-"@types/babel__template@*":
-  version "7.4.0"
-  resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.0.tgz#0c888dd70b3ee9eebb6e4f200e809da0076262be"
-  integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==
-  dependencies:
-    "@babel/parser" "^7.1.0"
-    "@babel/types" "^7.0.0"
-
-"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6":
-  version "7.11.0"
-  resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.0.tgz#b9a1efa635201ba9bc850323a8793ee2d36c04a0"
-  integrity sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg==
-  dependencies:
-    "@babel/types" "^7.3.0"
-
-"@types/eslint-visitor-keys@^1.0.0":
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d"
-  integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==
-
-"@types/estree@*":
-  version "0.0.46"
-  resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe"
-  integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==
-
-"@types/estree@0.0.39":
-  version "0.0.39"
-  resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
-  integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
-
-"@types/graceful-fs@^4.1.2":
-  version "4.1.4"
-  resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.4.tgz#4ff9f641a7c6d1a3508ff88bc3141b152772e753"
-  integrity sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg==
-  dependencies:
-    "@types/node" "*"
-
-"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762"
-  integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==
-
-"@types/istanbul-lib-report@*":
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686"
-  integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==
-  dependencies:
-    "@types/istanbul-lib-coverage" "*"
-
-"@types/istanbul-reports@^1.1.1":
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2"
-  integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==
-  dependencies:
-    "@types/istanbul-lib-coverage" "*"
-    "@types/istanbul-lib-report" "*"
-
-"@types/jest@^24.0.25":
-  version "24.9.1"
-  resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.9.1.tgz#02baf9573c78f1b9974a5f36778b366aa77bd534"
-  integrity sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q==
-  dependencies:
-    jest-diff "^24.3.0"
-
-"@types/jest@^25.2.1":
-  version "25.2.3"
-  resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.2.3.tgz#33d27e4c4716caae4eced355097a47ad363fdcaf"
-  integrity sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw==
-  dependencies:
-    jest-diff "^25.2.1"
-    pretty-format "^25.2.1"
-
-"@types/json-schema@^7.0.3":
-  version "7.0.7"
-  resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad"
-  integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==
-
-"@types/json5@^0.0.29":
-  version "0.0.29"
-  resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
-  integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
-
-"@types/node@*":
-  version "14.14.22"
-  resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18"
-  integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw==
-
-"@types/normalize-package-data@^2.4.0":
-  version "2.4.0"
-  resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
-  integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==
-
-"@types/parse-json@^4.0.0":
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
-  integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
-
-"@types/prettier@^1.19.0":
-  version "1.19.1"
-  resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f"
-  integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==
-
-"@types/resolve@1.17.1":
-  version "1.17.1"
-  resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6"
-  integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==
-  dependencies:
-    "@types/node" "*"
-
-"@types/stack-utils@^1.0.1":
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
-  integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==
-
-"@types/yargs-parser@*":
-  version "20.2.0"
-  resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9"
-  integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==
-
-"@types/yargs@^13.0.0":
-  version "13.0.11"
-  resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.11.tgz#def2f0c93e4bdf2c61d7e34899b17e34be28d3b1"
-  integrity sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==
-  dependencies:
-    "@types/yargs-parser" "*"
-
-"@types/yargs@^15.0.0":
-  version "15.0.12"
-  resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.12.tgz#6234ce3e3e3fa32c5db301a170f96a599c960d74"
-  integrity sha512-f+fD/fQAo3BCbCDlrUpznF1A5Zp9rB0noS5vnoormHSIPFKL0Z2DcUJ3Gxp5ytH4uLRNxy7AwYUC9exZzqGMAw==
-  dependencies:
-    "@types/yargs-parser" "*"
-
-"@typescript-eslint/eslint-plugin@^2.12.0":
-  version "2.34.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9"
-  integrity sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==
-  dependencies:
-    "@typescript-eslint/experimental-utils" "2.34.0"
-    functional-red-black-tree "^1.0.1"
-    regexpp "^3.0.0"
-    tsutils "^3.17.1"
-
-"@typescript-eslint/experimental-utils@2.34.0":
-  version "2.34.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f"
-  integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==
-  dependencies:
-    "@types/json-schema" "^7.0.3"
-    "@typescript-eslint/typescript-estree" "2.34.0"
-    eslint-scope "^5.0.0"
-    eslint-utils "^2.0.0"
-
-"@typescript-eslint/parser@^2.12.0":
-  version "2.34.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.34.0.tgz#50252630ca319685420e9a39ca05fe185a256bc8"
-  integrity sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==
-  dependencies:
-    "@types/eslint-visitor-keys" "^1.0.0"
-    "@typescript-eslint/experimental-utils" "2.34.0"
-    "@typescript-eslint/typescript-estree" "2.34.0"
-    eslint-visitor-keys "^1.1.0"
-
-"@typescript-eslint/typescript-estree@2.34.0":
-  version "2.34.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5"
-  integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==
-  dependencies:
-    debug "^4.1.1"
-    eslint-visitor-keys "^1.1.0"
-    glob "^7.1.6"
-    is-glob "^4.0.1"
-    lodash "^4.17.15"
-    semver "^7.3.2"
-    tsutils "^3.17.1"
-
-"@uniswap/lib@^4.0.1-alpha":
-  version "4.0.1-alpha"
-  resolved "https://registry.yarnpkg.com/@uniswap/lib/-/lib-4.0.1-alpha.tgz#2881008e55f075344675b3bca93f020b028fbd02"
-  integrity sha512-f6UIliwBbRsgVLxIaBANF6w09tYqc6Y/qXdsrbEmXHyFA7ILiKrIwRFXe1yOg8M3cksgVsO9N7yuL2DdCGQKBA==
-
-"@uniswap/sdk-core@^4":
-  version "4.0.2"
-  resolved "https://registry.yarnpkg.com/@uniswap/sdk-core/-/sdk-core-4.0.2.tgz#2eca2b5bf00bad74519aef918465c19218285b4b"
-  integrity sha512-rR5xobsAAP4yMYC7C+0+duVx0pFoDn2lV9kTWpoKgH1WJuw7hD1uDEvuevU2dL89TuixVgGvnYd0QxmrMtsIlg==
-  dependencies:
-    "@ethersproject/address" "^5.0.2"
-    big.js "^5.2.2"
-    decimal.js-light "^2.5.0"
-    jsbi "^3.1.4"
-    tiny-invariant "^1.1.0"
-    toformat "^2.0.0"
-
-"@uniswap/swap-router-contracts@^1.2.1":
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/@uniswap/swap-router-contracts/-/swap-router-contracts-1.2.1.tgz#223c8b6672b7754080d95ca917763d98feb5e696"
-  integrity sha512-aRNiZYIOpJ0uYxujPxvQsUEuNJWLC4bvnmU40TlNej1rGWHPyDL1PmnVzebu8UpW9EGeKlvDjsNGTyo53dih9Q==
-  dependencies:
-    "@openzeppelin/contracts" "3.4.2-solc-0.7"
-    "@uniswap/v2-core" "1.0.1"
-    "@uniswap/v3-core" "1.0.0"
-    "@uniswap/v3-periphery" "1.4.1"
-    dotenv "^14.2.0"
-    hardhat-watcher "^2.1.1"
-
-"@uniswap/v2-core@1.0.1":
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/@uniswap/v2-core/-/v2-core-1.0.1.tgz#af8f508bf183204779938969e2e54043e147d425"
-  integrity sha512-MtybtkUPSyysqLY2U210NBDeCHX+ltHt3oADGdjqoThZaFRDKwM6k1Nb3F0A3hk5hwuQvytFWhrWHOEq6nVJ8Q==
-
-"@uniswap/v3-core@1.0.0":
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/@uniswap/v3-core/-/v3-core-1.0.0.tgz#6c24adacc4c25dceee0ba3ca142b35adbd7e359d"
-  integrity sha512-kSC4djMGKMHj7sLMYVnn61k9nu+lHjMIxgg9CDQT+s2QYLoA56GbSK9Oxr+qJXzzygbkrmuY6cwgP6cW2JXPFA==
-
-"@uniswap/v3-periphery@1.4.1":
-  version "1.4.1"
-  resolved "https://registry.yarnpkg.com/@uniswap/v3-periphery/-/v3-periphery-1.4.1.tgz#b90f08b7386163c0abfd7258831caef6339c7862"
-  integrity sha512-Ab0ZCKOQrQMKIcpBTezTsEhWfQjItd0TtkCG8mPhoQu+wC67nPaf4hYUhM6wGHeFUmDiYY5MpEQuokB0ENvoTg==
-  dependencies:
-    "@openzeppelin/contracts" "3.4.2-solc-0.7"
-    "@uniswap/lib" "^4.0.1-alpha"
-    "@uniswap/v2-core" "1.0.1"
-    "@uniswap/v3-core" "1.0.0"
-    base64-sol "1.0.1"
-    hardhat-watcher "^2.1.1"
-
-"@uniswap/v3-periphery@^1.0.1", "@uniswap/v3-periphery@^1.1.1":
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/@uniswap/v3-periphery/-/v3-periphery-1.1.1.tgz#be6dfca7b29318ea0d76a7baf15d3b33c3c5e90a"
-  integrity sha512-orqD2Xy4lxVPF6pxd7ECSJY0gzEuqyeVSDHjzM86uWxOXlA4Nlh5pvI959KaS32pSOFBOVVA4XbbZywbJj+CZg==
-  dependencies:
-    "@openzeppelin/contracts" "3.4.1-solc-0.7-2"
-    "@uniswap/lib" "^4.0.1-alpha"
-    "@uniswap/v2-core" "1.0.1"
-    "@uniswap/v3-core" "1.0.0"
-    base64-sol "1.0.1"
-    hardhat-watcher "^2.1.1"
-
-"@uniswap/v3-staker@1.0.0":
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/@uniswap/v3-staker/-/v3-staker-1.0.0.tgz#9a6915ec980852479dfc903f50baf822ff8fa66e"
-  integrity sha512-JV0Qc46Px5alvg6YWd+UIaGH9lDuYG/Js7ngxPit1SPaIP30AlVer1UYB7BRYeUVVxE+byUyIeN5jeQ7LLDjIw==
-  dependencies:
-    "@openzeppelin/contracts" "3.4.1-solc-0.7-2"
-    "@uniswap/v3-core" "1.0.0"
-    "@uniswap/v3-periphery" "^1.0.1"
-
-abab@^2.0.0:
-  version "2.0.5"
-  resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a"
-  integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==
-
-acorn-globals@^4.3.2:
-  version "4.3.4"
-  resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7"
-  integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==
-  dependencies:
-    acorn "^6.0.1"
-    acorn-walk "^6.0.1"
-
-acorn-jsx@^5.2.0:
-  version "5.3.1"
-  resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b"
-  integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==
-
-acorn-walk@^6.0.1:
-  version "6.2.0"
-  resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c"
-  integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==
-
-acorn@^6.0.1:
-  version "6.4.2"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6"
-  integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
-
-acorn@^7.1.0, acorn@^7.1.1:
-  version "7.4.1"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
-  integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
-
-ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3:
-  version "6.12.6"
-  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
-  integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
-  dependencies:
-    fast-deep-equal "^3.1.1"
-    fast-json-stable-stringify "^2.0.0"
-    json-schema-traverse "^0.4.1"
-    uri-js "^4.2.2"
-
-ansi-colors@^4.1.1:
-  version "4.1.1"
-  resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
-  integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
-
-ansi-escapes@^3.0.0:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
-  integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
-
-ansi-escapes@^4.2.1:
-  version "4.3.1"
-  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61"
-  integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==
-  dependencies:
-    type-fest "^0.11.0"
-
-ansi-regex@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
-  integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
-
-ansi-regex@^4.0.0, ansi-regex@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
-  integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
-
-ansi-regex@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
-  integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
-
-ansi-styles@^3.2.0, ansi-styles@^3.2.1:
-  version "3.2.1"
-  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
-  integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
-  dependencies:
-    color-convert "^1.9.0"
-
-ansi-styles@^4.0.0, ansi-styles@^4.1.0:
-  version "4.3.0"
-  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
-  integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
-  dependencies:
-    color-convert "^2.0.1"
-
-anymatch@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
-  integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
-  dependencies:
-    micromatch "^3.1.4"
-    normalize-path "^2.1.1"
-
-anymatch@^3.0.3:
-  version "3.1.1"
-  resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
-  integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
-  dependencies:
-    normalize-path "^3.0.0"
-    picomatch "^2.0.4"
-
-anymatch@~3.1.2:
-  version "3.1.2"
-  resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
-  integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
-  dependencies:
-    normalize-path "^3.0.0"
-    picomatch "^2.0.4"
-
-argparse@^1.0.7:
-  version "1.0.10"
-  resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
-  integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
-  dependencies:
-    sprintf-js "~1.0.2"
-
-aria-query@^4.2.2:
-  version "4.2.2"
-  resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b"
-  integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==
-  dependencies:
-    "@babel/runtime" "^7.10.2"
-    "@babel/runtime-corejs3" "^7.10.2"
-
-arr-diff@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
-  integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
-
-arr-flatten@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
-  integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
-
-arr-union@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
-  integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
-
-array-equal@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
-  integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=
-
-array-includes@^3.1.1, array-includes@^3.1.2:
-  version "3.1.2"
-  resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8"
-  integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==
-  dependencies:
-    call-bind "^1.0.0"
-    define-properties "^1.1.3"
-    es-abstract "^1.18.0-next.1"
-    get-intrinsic "^1.0.1"
-    is-string "^1.0.5"
-
-array-unique@^0.3.2:
-  version "0.3.2"
-  resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
-  integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
-
-array.prototype.flat@^1.2.3:
-  version "1.2.4"
-  resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123"
-  integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==
-  dependencies:
-    call-bind "^1.0.0"
-    define-properties "^1.1.3"
-    es-abstract "^1.18.0-next.1"
-
-array.prototype.flatmap@^1.2.3:
-  version "1.2.4"
-  resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9"
-  integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==
-  dependencies:
-    call-bind "^1.0.0"
-    define-properties "^1.1.3"
-    es-abstract "^1.18.0-next.1"
-    function-bind "^1.1.1"
-
-asn1@~0.2.3:
-  version "0.2.4"
-  resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
-  integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
-  dependencies:
-    safer-buffer "~2.1.0"
-
-assert-plus@1.0.0, assert-plus@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
-  integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
-
-assign-symbols@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
-  integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
-
-ast-types-flow@^0.0.7:
-  version "0.0.7"
-  resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
-  integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0=
-
-astral-regex@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
-  integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
-
-asynckit@^0.4.0:
-  version "0.4.0"
-  resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
-  integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
-
-asyncro@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/asyncro/-/asyncro-3.0.0.tgz#3c7a732e263bc4a42499042f48d7d858e9c0134e"
-  integrity sha512-nEnWYfrBmA3taTiuiOoZYmgJ/CNrSoQLeLs29SeLcPu60yaw/mHDBHV0iOZ051fTvsTHxpCY+gXibqT9wbQYfg==
-
-at-least-node@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
-  integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
-
-atob@^2.1.2:
-  version "2.1.2"
-  resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
-  integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
-
-aws-sign2@~0.7.0:
-  version "0.7.0"
-  resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
-  integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
-
-aws4@^1.8.0:
-  version "1.11.0"
-  resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59"
-  integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==
-
-axe-core@^4.0.2:
-  version "4.1.1"
-  resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.1.1.tgz#70a7855888e287f7add66002211a423937063eaf"
-  integrity sha512-5Kgy8Cz6LPC9DJcNb3yjAXTu3XihQgEdnIg50c//zOC/MyLP0Clg+Y8Sh9ZjjnvBrDZU4DgXS9C3T9r4/scGZQ==
-
-axobject-query@^2.2.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be"
-  integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==
-
-babel-eslint@^10.0.3:
-  version "10.1.0"
-  resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232"
-  integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==
-  dependencies:
-    "@babel/code-frame" "^7.0.0"
-    "@babel/parser" "^7.7.0"
-    "@babel/traverse" "^7.7.0"
-    "@babel/types" "^7.7.0"
-    eslint-visitor-keys "^1.0.0"
-    resolve "^1.12.0"
-
-babel-jest@^25.5.1:
-  version "25.5.1"
-  resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.5.1.tgz#bc2e6101f849d6f6aec09720ffc7bc5332e62853"
-  integrity sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ==
-  dependencies:
-    "@jest/transform" "^25.5.1"
-    "@jest/types" "^25.5.0"
-    "@types/babel__core" "^7.1.7"
-    babel-plugin-istanbul "^6.0.0"
-    babel-preset-jest "^25.5.0"
-    chalk "^3.0.0"
-    graceful-fs "^4.2.4"
-    slash "^3.0.0"
-
-babel-plugin-annotate-pure-calls@^0.4.0:
-  version "0.4.0"
-  resolved "https://registry.yarnpkg.com/babel-plugin-annotate-pure-calls/-/babel-plugin-annotate-pure-calls-0.4.0.tgz#78aa00fd878c4fcde4d49f3da397fcf5defbcce8"
-  integrity sha512-oi4M/PWUJOU9ZyRGoPTfPMqdyMp06jbJAomd3RcyYuzUtBOddv98BqLm96Lucpi2QFoQHkdGQt0ACvw7VzVEQA==
-
-babel-plugin-dev-expression@^0.2.1:
-  version "0.2.2"
-  resolved "https://registry.yarnpkg.com/babel-plugin-dev-expression/-/babel-plugin-dev-expression-0.2.2.tgz#c18de18a06150f9480edd151acbb01d2e65e999b"
-  integrity sha512-y32lfBif+c2FIh5dwGfcc/IfX5aw/Bru7Du7W2n17sJE/GJGAsmIk5DPW/8JOoeKpXW5evJfJOvRq5xkiS6vng==
-
-babel-plugin-dynamic-import-node@^2.3.3:
-  version "2.3.3"
-  resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
-  integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==
-  dependencies:
-    object.assign "^4.1.0"
-
-babel-plugin-istanbul@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765"
-  integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.0.0"
-    "@istanbuljs/load-nyc-config" "^1.0.0"
-    "@istanbuljs/schema" "^0.1.2"
-    istanbul-lib-instrument "^4.0.0"
-    test-exclude "^6.0.0"
-
-babel-plugin-jest-hoist@^25.5.0:
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.5.0.tgz#129c80ba5c7fc75baf3a45b93e2e372d57ca2677"
-  integrity sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g==
-  dependencies:
-    "@babel/template" "^7.3.3"
-    "@babel/types" "^7.3.3"
-    "@types/babel__traverse" "^7.0.6"
-
-babel-plugin-macros@^2.6.1:
-  version "2.8.0"
-  resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138"
-  integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==
-  dependencies:
-    "@babel/runtime" "^7.7.2"
-    cosmiconfig "^6.0.0"
-    resolve "^1.12.0"
-
-babel-plugin-polyfill-regenerator@^0.0.4:
-  version "0.0.4"
-  resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.0.4.tgz#588641af9a2cb4e299b1400c47672a4a104d2459"
-  integrity sha512-+/uCzO9JTYVZVGCpZpVAQkgPGt2zkR0VYiZvJ4aVoCe4ccgpKvNQqcjzAgQzSsjK64Jhc5hvrCR3l0087BevkA==
-  dependencies:
-    "@babel/helper-define-polyfill-provider" "^0.0.3"
-
-babel-plugin-transform-rename-import@^2.3.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/babel-plugin-transform-rename-import/-/babel-plugin-transform-rename-import-2.3.0.tgz#5d9d645f937b0ca5c26a24b2510a06277b6ffd9b"
-  integrity sha512-dPgJoT57XC0PqSnLgl2FwNvxFrWlspatX2dkk7yjKQj5HHGw071vAcOf+hqW8ClqcBDMvEbm6mevn5yHAD8mlQ==
-
-babel-preset-current-node-syntax@^0.1.2:
-  version "0.1.4"
-  resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.4.tgz#826f1f8e7245ad534714ba001f84f7e906c3b615"
-  integrity sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w==
-  dependencies:
-    "@babel/plugin-syntax-async-generators" "^7.8.4"
-    "@babel/plugin-syntax-bigint" "^7.8.3"
-    "@babel/plugin-syntax-class-properties" "^7.8.3"
-    "@babel/plugin-syntax-import-meta" "^7.8.3"
-    "@babel/plugin-syntax-json-strings" "^7.8.3"
-    "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3"
-    "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
-    "@babel/plugin-syntax-numeric-separator" "^7.8.3"
-    "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
-    "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
-    "@babel/plugin-syntax-optional-chaining" "^7.8.3"
-
-babel-preset-jest@^25.5.0:
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.5.0.tgz#c1d7f191829487a907764c65307faa0e66590b49"
-  integrity sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw==
-  dependencies:
-    babel-plugin-jest-hoist "^25.5.0"
-    babel-preset-current-node-syntax "^0.1.2"
-
-balanced-match@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
-  integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
-
-base64-sol@1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/base64-sol/-/base64-sol-1.0.1.tgz#91317aa341f0bc763811783c5729f1c2574600f6"
-  integrity sha512-ld3cCNMeXt4uJXmLZBHFGMvVpK9KsLVEhPpFRXnvSVAqABKbuNZg/+dsq3NuM+wxFLb/UrVkz7m1ciWmkMfTbg==
-
-base@^0.11.1:
-  version "0.11.2"
-  resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
-  integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
-  dependencies:
-    cache-base "^1.0.1"
-    class-utils "^0.3.5"
-    component-emitter "^1.2.1"
-    define-property "^1.0.0"
-    isobject "^3.0.1"
-    mixin-deep "^1.2.0"
-    pascalcase "^0.1.1"
-
-bcrypt-pbkdf@^1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
-  integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
-  dependencies:
-    tweetnacl "^0.14.3"
-
-big.js@^5.2.2:
-  version "5.2.2"
-  resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
-  integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
-
-binary-extensions@^2.0.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
-  integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
-
-bn.js@^4.11.9:
-  version "4.12.0"
-  resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
-  integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
-
-bn.js@^4.4.0:
-  version "4.11.9"
-  resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828"
-  integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==
-
-brace-expansion@^1.1.7:
-  version "1.1.11"
-  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
-  integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
-  dependencies:
-    balanced-match "^1.0.0"
-    concat-map "0.0.1"
-
-braces@^2.3.1:
-  version "2.3.2"
-  resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
-  integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
-  dependencies:
-    arr-flatten "^1.1.0"
-    array-unique "^0.3.2"
-    extend-shallow "^2.0.1"
-    fill-range "^4.0.0"
-    isobject "^3.0.1"
-    repeat-element "^1.1.2"
-    snapdragon "^0.8.1"
-    snapdragon-node "^2.0.1"
-    split-string "^3.0.2"
-    to-regex "^3.0.1"
-
-braces@^3.0.1, braces@~3.0.2:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
-  integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
-  dependencies:
-    fill-range "^7.0.1"
-
-brorand@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
-  integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
-
-browser-process-hrtime@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626"
-  integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
-
-browser-resolve@^1.11.3:
-  version "1.11.3"
-  resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6"
-  integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==
-  dependencies:
-    resolve "1.1.7"
-
-browserslist@^4.14.5, browserslist@^4.16.1:
-  version "4.16.1"
-  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.1.tgz#bf757a2da376b3447b800a16f0f1c96358138766"
-  integrity sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==
-  dependencies:
-    caniuse-lite "^1.0.30001173"
-    colorette "^1.2.1"
-    electron-to-chromium "^1.3.634"
-    escalade "^3.1.1"
-    node-releases "^1.1.69"
-
-bs-logger@0.x:
-  version "0.2.6"
-  resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8"
-  integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==
-  dependencies:
-    fast-json-stable-stringify "2.x"
-
-bser@2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05"
-  integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==
-  dependencies:
-    node-int64 "^0.4.0"
-
-buffer-from@1.x, buffer-from@^1.0.0:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
-  integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
-
-builtin-modules@^3.1.0:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887"
-  integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==
-
-cache-base@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
-  integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
-  dependencies:
-    collection-visit "^1.0.0"
-    component-emitter "^1.2.1"
-    get-value "^2.0.6"
-    has-value "^1.0.0"
-    isobject "^3.0.1"
-    set-value "^2.0.0"
-    to-object-path "^0.3.0"
-    union-value "^1.0.0"
-    unset-value "^1.0.0"
-
-call-bind@^1.0.0, call-bind@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
-  integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
-  dependencies:
-    function-bind "^1.1.1"
-    get-intrinsic "^1.0.2"
-
-callsites@^3.0.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
-  integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
-
-camelcase@^5.0.0, camelcase@^5.3.1:
-  version "5.3.1"
-  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
-  integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
-
-camelcase@^6.0.0:
-  version "6.2.0"
-  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809"
-  integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==
-
-caniuse-lite@^1.0.30001173:
-  version "1.0.30001179"
-  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001179.tgz#b0803883b4471a6c62066fb1752756f8afc699c8"
-  integrity sha512-blMmO0QQujuUWZKyVrD1msR4WNDAqb/UPO1Sw2WWsQ7deoM5bJiicKnWJ1Y0NS/aGINSnKPIWBMw5luX+NDUCA==
-
-capture-exit@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4"
-  integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==
-  dependencies:
-    rsvp "^4.8.4"
-
-caseless@~0.12.0:
-  version "0.12.0"
-  resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
-  integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
-
-chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2:
-  version "2.4.2"
-  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
-  integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
-  dependencies:
-    ansi-styles "^3.2.1"
-    escape-string-regexp "^1.0.5"
-    supports-color "^5.3.0"
-
-chalk@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
-  integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
-  dependencies:
-    ansi-styles "^4.1.0"
-    supports-color "^7.1.0"
-
-chalk@^4.0.0, chalk@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
-  integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
-  dependencies:
-    ansi-styles "^4.1.0"
-    supports-color "^7.1.0"
-
-chardet@^0.7.0:
-  version "0.7.0"
-  resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
-  integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
-
-chokidar@^3.4.3:
-  version "3.5.2"
-  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
-  integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==
-  dependencies:
-    anymatch "~3.1.2"
-    braces "~3.0.2"
-    glob-parent "~5.1.2"
-    is-binary-path "~2.1.0"
-    is-glob "~4.0.1"
-    normalize-path "~3.0.0"
-    readdirp "~3.6.0"
-  optionalDependencies:
-    fsevents "~2.3.2"
-
-ci-info@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
-  integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
-
-class-utils@^0.3.5:
-  version "0.3.6"
-  resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
-  integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
-  dependencies:
-    arr-union "^3.1.0"
-    define-property "^0.2.5"
-    isobject "^3.0.0"
-    static-extend "^0.1.1"
-
-cli-cursor@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
-  integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=
-  dependencies:
-    restore-cursor "^2.0.0"
-
-cli-cursor@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
-  integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
-  dependencies:
-    restore-cursor "^3.1.0"
-
-cli-spinners@^1.3.1:
-  version "1.3.1"
-  resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a"
-  integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==
-
-cli-spinners@^2.2.0:
-  version "2.5.0"
-  resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.5.0.tgz#12763e47251bf951cb75c201dfa58ff1bcb2d047"
-  integrity sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==
-
-cli-width@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6"
-  integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==
-
-cliui@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1"
-  integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==
-  dependencies:
-    string-width "^4.2.0"
-    strip-ansi "^6.0.0"
-    wrap-ansi "^6.2.0"
-
-clone@^1.0.2:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
-  integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
-
-co@^4.6.0:
-  version "4.6.0"
-  resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
-  integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
-
-collect-v8-coverage@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59"
-  integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==
-
-collection-visit@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
-  integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
-  dependencies:
-    map-visit "^1.0.0"
-    object-visit "^1.0.0"
-
-color-convert@^1.9.0:
-  version "1.9.3"
-  resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
-  integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
-  dependencies:
-    color-name "1.1.3"
-
-color-convert@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
-  integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
-  dependencies:
-    color-name "~1.1.4"
-
-color-name@1.1.3:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
-  integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
-
-color-name@~1.1.4:
-  version "1.1.4"
-  resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
-  integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-
-colorette@^1.2.1:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b"
-  integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==
-
-combined-stream@^1.0.6, combined-stream@~1.0.6:
-  version "1.0.8"
-  resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
-  integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
-  dependencies:
-    delayed-stream "~1.0.0"
-
-commander@^2.20.0:
-  version "2.20.3"
-  resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
-  integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
-
-commondir@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
-  integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
-
-component-emitter@^1.2.1:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
-  integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
-
-concat-map@0.0.1:
-  version "0.0.1"
-  resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
-  integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
-
-confusing-browser-globals@^1.0.9:
-  version "1.0.10"
-  resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59"
-  integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==
-
-contains-path@^0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
-  integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
-
-convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0:
-  version "1.7.0"
-  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
-  integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==
-  dependencies:
-    safe-buffer "~5.1.1"
-
-copy-descriptor@^0.1.0:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
-  integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
-
-core-js-compat@^3.8.0:
-  version "3.8.3"
-  resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.3.tgz#9123fb6b9cad30f0651332dc77deba48ef9b0b3f"
-  integrity sha512-1sCb0wBXnBIL16pfFG1Gkvei6UzvKyTNYpiC41yrdjEv0UoJoq9E/abTMzyYJ6JpTkAj15dLjbqifIzEBDVvog==
-  dependencies:
-    browserslist "^4.16.1"
-    semver "7.0.0"
-
-core-js-pure@^3.0.0:
-  version "3.8.3"
-  resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.8.3.tgz#10e9e3b2592ecaede4283e8f3ad7020811587c02"
-  integrity sha512-V5qQZVAr9K0xu7jXg1M7qTEwuxUgqr7dUOezGaNa7i+Xn9oXAU/d1fzqD9ObuwpVQOaorO5s70ckyi1woP9lVA==
-
-core-util-is@1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
-  integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
-
-cosmiconfig@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982"
-  integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==
-  dependencies:
-    "@types/parse-json" "^4.0.0"
-    import-fresh "^3.1.0"
-    parse-json "^5.0.0"
-    path-type "^4.0.0"
-    yaml "^1.7.2"
-
-cross-spawn@^6.0.0, cross-spawn@^6.0.5:
-  version "6.0.5"
-  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
-  integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
-  dependencies:
-    nice-try "^1.0.4"
-    path-key "^2.0.1"
-    semver "^5.5.0"
-    shebang-command "^1.2.0"
-    which "^1.2.9"
-
-cross-spawn@^7.0.0:
-  version "7.0.3"
-  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
-  integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
-  dependencies:
-    path-key "^3.1.0"
-    shebang-command "^2.0.0"
-    which "^2.0.1"
-
-cssom@^0.4.1:
-  version "0.4.4"
-  resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10"
-  integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==
-
-cssom@~0.3.6:
-  version "0.3.8"
-  resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
-  integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
-
-cssstyle@^2.0.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852"
-  integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==
-  dependencies:
-    cssom "~0.3.6"
-
-damerau-levenshtein@^1.0.6:
-  version "1.0.6"
-  resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791"
-  integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==
-
-dashdash@^1.12.0:
-  version "1.14.1"
-  resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
-  integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
-  dependencies:
-    assert-plus "^1.0.0"
-
-data-urls@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe"
-  integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==
-  dependencies:
-    abab "^2.0.0"
-    whatwg-mimetype "^2.2.0"
-    whatwg-url "^7.0.0"
-
-debug@^2.2.0, debug@^2.3.3, debug@^2.6.9:
-  version "2.6.9"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
-  integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
-  dependencies:
-    ms "2.0.0"
-
-debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
-  version "4.3.1"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
-  integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
-  dependencies:
-    ms "2.1.2"
-
-decamelize@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
-  integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
-
-decimal.js-light@^2.5.0:
-  version "2.5.1"
-  resolved "https://registry.yarnpkg.com/decimal.js-light/-/decimal.js-light-2.5.1.tgz#134fd32508f19e208f4fb2f8dac0d2626a867934"
-  integrity sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==
-
-decode-uri-component@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
-  integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
-
-deep-is@~0.1.3:
-  version "0.1.3"
-  resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
-  integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
-
-deepmerge@^4.2.2:
-  version "4.2.2"
-  resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
-  integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
-
-defaults@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
-  integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=
-  dependencies:
-    clone "^1.0.2"
-
-define-properties@^1.1.3:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
-  integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
-  dependencies:
-    object-keys "^1.0.12"
-
-define-property@^0.2.5:
-  version "0.2.5"
-  resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
-  integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
-  dependencies:
-    is-descriptor "^0.1.0"
-
-define-property@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
-  integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
-  dependencies:
-    is-descriptor "^1.0.0"
-
-define-property@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
-  integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
-  dependencies:
-    is-descriptor "^1.0.2"
-    isobject "^3.0.1"
-
-delayed-stream@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
-  integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
-
-detect-newline@^3.0.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
-  integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==
-
-diff-sequences@^24.9.0:
-  version "24.9.0"
-  resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5"
-  integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==
-
-diff-sequences@^25.2.6:
-  version "25.2.6"
-  resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd"
-  integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==
-
-doctrine@1.5.0:
-  version "1.5.0"
-  resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
-  integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=
-  dependencies:
-    esutils "^2.0.2"
-    isarray "^1.0.0"
-
-doctrine@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
-  integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
-  dependencies:
-    esutils "^2.0.2"
-
-doctrine@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
-  integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
-  dependencies:
-    esutils "^2.0.2"
-
-domexception@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90"
-  integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==
-  dependencies:
-    webidl-conversions "^4.0.2"
-
-dotenv@^14.2.0:
-  version "14.3.2"
-  resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-14.3.2.tgz#7c30b3a5f777c79a3429cb2db358eef6751e8369"
-  integrity sha512-vwEppIphpFdvaMCaHfCEv9IgwcxMljMw2TnAQBB4VWPvzXQLTb82jwmdOKzlEVUL3gNFT4l4TPKO+Bn+sqcrVQ==
-
-ecc-jsbn@~0.1.1:
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
-  integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
-  dependencies:
-    jsbn "~0.1.0"
-    safer-buffer "^2.1.0"
-
-electron-to-chromium@^1.3.634:
-  version "1.3.645"
-  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.645.tgz#c0b269ae2ecece5aedc02dd4586397d8096affb1"
-  integrity sha512-T7mYop3aDpRHIQaUYcmzmh6j9MAe560n6ukqjJMbVC6bVTau7dSpvB18bcsBPPtOSe10cKxhJFtlbEzLa0LL1g==
-
-elliptic@6.5.4:
-  version "6.5.4"
-  resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
-  integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
-  dependencies:
-    bn.js "^4.11.9"
-    brorand "^1.1.0"
-    hash.js "^1.0.0"
-    hmac-drbg "^1.0.1"
-    inherits "^2.0.4"
-    minimalistic-assert "^1.0.1"
-    minimalistic-crypto-utils "^1.0.1"
-
-emoji-regex@^7.0.1:
-  version "7.0.3"
-  resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
-  integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
-
-emoji-regex@^8.0.0:
-  version "8.0.0"
-  resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
-  integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
-
-emoji-regex@^9.0.0:
-  version "9.2.0"
-  resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.0.tgz#a26da8e832b16a9753309f25e35e3c0efb9a066a"
-  integrity sha512-DNc3KFPK18bPdElMJnf/Pkv5TXhxFU3YFDEuGLDRtPmV4rkmCjBkCSEp22u6rBHdSN9Vlp/GK7k98prmE1Jgug==
-
-end-of-stream@^1.1.0:
-  version "1.4.4"
-  resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
-  integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
-  dependencies:
-    once "^1.4.0"
-
-enquirer@^2.3.4:
-  version "2.3.6"
-  resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
-  integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
-  dependencies:
-    ansi-colors "^4.1.1"
-
-error-ex@^1.2.0, error-ex@^1.3.1:
-  version "1.3.2"
-  resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
-  integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
-  dependencies:
-    is-arrayish "^0.2.1"
-
-es-abstract@^1.17.0-next.1:
-  version "1.17.7"
-  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c"
-  integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==
-  dependencies:
-    es-to-primitive "^1.2.1"
-    function-bind "^1.1.1"
-    has "^1.0.3"
-    has-symbols "^1.0.1"
-    is-callable "^1.2.2"
-    is-regex "^1.1.1"
-    object-inspect "^1.8.0"
-    object-keys "^1.1.1"
-    object.assign "^4.1.1"
-    string.prototype.trimend "^1.0.1"
-    string.prototype.trimstart "^1.0.1"
-
-es-abstract@^1.18.0-next.1:
-  version "1.18.0-next.2"
-  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2"
-  integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==
-  dependencies:
-    call-bind "^1.0.2"
-    es-to-primitive "^1.2.1"
-    function-bind "^1.1.1"
-    get-intrinsic "^1.0.2"
-    has "^1.0.3"
-    has-symbols "^1.0.1"
-    is-callable "^1.2.2"
-    is-negative-zero "^2.0.1"
-    is-regex "^1.1.1"
-    object-inspect "^1.9.0"
-    object-keys "^1.1.1"
-    object.assign "^4.1.2"
-    string.prototype.trimend "^1.0.3"
-    string.prototype.trimstart "^1.0.3"
-
-es-to-primitive@^1.2.1:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
-  integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
-  dependencies:
-    is-callable "^1.1.4"
-    is-date-object "^1.0.1"
-    is-symbol "^1.0.2"
-
-escalade@^3.1.1:
-  version "3.1.1"
-  resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
-  integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
-
-escape-string-regexp@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
-  integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
-
-escape-string-regexp@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
-  integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
-
-escodegen@^1.11.1:
-  version "1.14.3"
-  resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503"
-  integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==
-  dependencies:
-    esprima "^4.0.1"
-    estraverse "^4.2.0"
-    esutils "^2.0.2"
-    optionator "^0.8.1"
-  optionalDependencies:
-    source-map "~0.6.1"
-
-eslint-config-prettier@^6.0.0:
-  version "6.15.0"
-  resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9"
-  integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==
-  dependencies:
-    get-stdin "^6.0.0"
-
-eslint-config-react-app@^5.2.1:
-  version "5.2.1"
-  resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz#698bf7aeee27f0cea0139eaef261c7bf7dd623df"
-  integrity sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==
-  dependencies:
-    confusing-browser-globals "^1.0.9"
-
-eslint-import-resolver-node@^0.3.4:
-  version "0.3.4"
-  resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717"
-  integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==
-  dependencies:
-    debug "^2.6.9"
-    resolve "^1.13.1"
-
-eslint-module-utils@^2.6.0:
-  version "2.6.0"
-  resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6"
-  integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==
-  dependencies:
-    debug "^2.6.9"
-    pkg-dir "^2.0.0"
-
-eslint-plugin-flowtype@^3.13.0:
-  version "3.13.0"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.13.0.tgz#e241ebd39c0ce519345a3f074ec1ebde4cf80f2c"
-  integrity sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw==
-  dependencies:
-    lodash "^4.17.15"
-
-eslint-plugin-import@^2.18.2:
-  version "2.22.1"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702"
-  integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==
-  dependencies:
-    array-includes "^3.1.1"
-    array.prototype.flat "^1.2.3"
-    contains-path "^0.1.0"
-    debug "^2.6.9"
-    doctrine "1.5.0"
-    eslint-import-resolver-node "^0.3.4"
-    eslint-module-utils "^2.6.0"
-    has "^1.0.3"
-    minimatch "^3.0.4"
-    object.values "^1.1.1"
-    read-pkg-up "^2.0.0"
-    resolve "^1.17.0"
-    tsconfig-paths "^3.9.0"
-
-eslint-plugin-jsx-a11y@^6.2.3:
-  version "6.4.1"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd"
-  integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==
-  dependencies:
-    "@babel/runtime" "^7.11.2"
-    aria-query "^4.2.2"
-    array-includes "^3.1.1"
-    ast-types-flow "^0.0.7"
-    axe-core "^4.0.2"
-    axobject-query "^2.2.0"
-    damerau-levenshtein "^1.0.6"
-    emoji-regex "^9.0.0"
-    has "^1.0.3"
-    jsx-ast-utils "^3.1.0"
-    language-tags "^1.0.5"
-
-eslint-plugin-prettier@^3.1.0:
-  version "3.3.1"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz#7079cfa2497078905011e6f82e8dd8453d1371b7"
-  integrity sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==
-  dependencies:
-    prettier-linter-helpers "^1.0.0"
-
-eslint-plugin-react-hooks@^2.2.0:
-  version "2.5.1"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.5.1.tgz#4ef5930592588ce171abeb26f400c7fbcbc23cd0"
-  integrity sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g==
-
-eslint-plugin-react@^7.14.3:
-  version "7.22.0"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz#3d1c542d1d3169c45421c1215d9470e341707269"
-  integrity sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA==
-  dependencies:
-    array-includes "^3.1.1"
-    array.prototype.flatmap "^1.2.3"
-    doctrine "^2.1.0"
-    has "^1.0.3"
-    jsx-ast-utils "^2.4.1 || ^3.0.0"
-    object.entries "^1.1.2"
-    object.fromentries "^2.0.2"
-    object.values "^1.1.1"
-    prop-types "^15.7.2"
-    resolve "^1.18.1"
-    string.prototype.matchall "^4.0.2"
-
-eslint-scope@^5.0.0:
-  version "5.1.1"
-  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
-  integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
-  dependencies:
-    esrecurse "^4.3.0"
-    estraverse "^4.1.1"
-
-eslint-utils@^1.4.3:
-  version "1.4.3"
-  resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f"
-  integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==
-  dependencies:
-    eslint-visitor-keys "^1.1.0"
-
-eslint-utils@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
-  integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
-  dependencies:
-    eslint-visitor-keys "^1.1.0"
-
-eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
-  integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
-
-eslint@^6.1.0:
-  version "6.8.0"
-  resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb"
-  integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==
-  dependencies:
-    "@babel/code-frame" "^7.0.0"
-    ajv "^6.10.0"
-    chalk "^2.1.0"
-    cross-spawn "^6.0.5"
-    debug "^4.0.1"
-    doctrine "^3.0.0"
-    eslint-scope "^5.0.0"
-    eslint-utils "^1.4.3"
-    eslint-visitor-keys "^1.1.0"
-    espree "^6.1.2"
-    esquery "^1.0.1"
-    esutils "^2.0.2"
-    file-entry-cache "^5.0.1"
-    functional-red-black-tree "^1.0.1"
-    glob-parent "^5.0.0"
-    globals "^12.1.0"
-    ignore "^4.0.6"
-    import-fresh "^3.0.0"
-    imurmurhash "^0.1.4"
-    inquirer "^7.0.0"
-    is-glob "^4.0.0"
-    js-yaml "^3.13.1"
-    json-stable-stringify-without-jsonify "^1.0.1"
-    levn "^0.3.0"
-    lodash "^4.17.14"
-    minimatch "^3.0.4"
-    mkdirp "^0.5.1"
-    natural-compare "^1.4.0"
-    optionator "^0.8.3"
-    progress "^2.0.0"
-    regexpp "^2.0.1"
-    semver "^6.1.2"
-    strip-ansi "^5.2.0"
-    strip-json-comments "^3.0.1"
-    table "^5.2.3"
-    text-table "^0.2.0"
-    v8-compile-cache "^2.0.3"
-
-espree@^6.1.2:
-  version "6.2.1"
-  resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a"
-  integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==
-  dependencies:
-    acorn "^7.1.1"
-    acorn-jsx "^5.2.0"
-    eslint-visitor-keys "^1.1.0"
-
-esprima@^4.0.0, esprima@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
-  integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
-
-esquery@^1.0.1:
-  version "1.3.1"
-  resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57"
-  integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==
-  dependencies:
-    estraverse "^5.1.0"
-
-esrecurse@^4.3.0:
-  version "4.3.0"
-  resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
-  integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
-  dependencies:
-    estraverse "^5.2.0"
-
-estraverse@^4.1.1, estraverse@^4.2.0:
-  version "4.3.0"
-  resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
-  integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
-
-estraverse@^5.1.0, estraverse@^5.2.0:
-  version "5.2.0"
-  resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
-  integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
-
-estree-walker@^0.6.1:
-  version "0.6.1"
-  resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
-  integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
-
-estree-walker@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
-  integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
-
-esutils@^2.0.2:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
-  integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
-
-exec-sh@^0.3.2:
-  version "0.3.4"
-  resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5"
-  integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==
-
-execa@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
-  integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
-  dependencies:
-    cross-spawn "^6.0.0"
-    get-stream "^4.0.0"
-    is-stream "^1.1.0"
-    npm-run-path "^2.0.0"
-    p-finally "^1.0.0"
-    signal-exit "^3.0.0"
-    strip-eof "^1.0.0"
-
-execa@^3.2.0:
-  version "3.4.0"
-  resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89"
-  integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==
-  dependencies:
-    cross-spawn "^7.0.0"
-    get-stream "^5.0.0"
-    human-signals "^1.1.1"
-    is-stream "^2.0.0"
-    merge-stream "^2.0.0"
-    npm-run-path "^4.0.0"
-    onetime "^5.1.0"
-    p-finally "^2.0.0"
-    signal-exit "^3.0.2"
-    strip-final-newline "^2.0.0"
-
-execa@^4.0.3:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a"
-  integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==
-  dependencies:
-    cross-spawn "^7.0.0"
-    get-stream "^5.0.0"
-    human-signals "^1.1.1"
-    is-stream "^2.0.0"
-    merge-stream "^2.0.0"
-    npm-run-path "^4.0.0"
-    onetime "^5.1.0"
-    signal-exit "^3.0.2"
-    strip-final-newline "^2.0.0"
-
-exit@^0.1.2:
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
-  integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=
-
-expand-brackets@^2.1.4:
-  version "2.1.4"
-  resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
-  integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
-  dependencies:
-    debug "^2.3.3"
-    define-property "^0.2.5"
-    extend-shallow "^2.0.1"
-    posix-character-classes "^0.1.0"
-    regex-not "^1.0.0"
-    snapdragon "^0.8.1"
-    to-regex "^3.0.1"
-
-expect@^25.5.0:
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/expect/-/expect-25.5.0.tgz#f07f848712a2813bb59167da3fb828ca21f58bba"
-  integrity sha512-w7KAXo0+6qqZZhovCaBVPSIqQp7/UTcx4M9uKt2m6pd2VB1voyC8JizLRqeEqud3AAVP02g+hbErDu5gu64tlA==
-  dependencies:
-    "@jest/types" "^25.5.0"
-    ansi-styles "^4.0.0"
-    jest-get-type "^25.2.6"
-    jest-matcher-utils "^25.5.0"
-    jest-message-util "^25.5.0"
-    jest-regex-util "^25.2.6"
-
-extend-shallow@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
-  integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
-  dependencies:
-    is-extendable "^0.1.0"
-
-extend-shallow@^3.0.0, extend-shallow@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
-  integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
-  dependencies:
-    assign-symbols "^1.0.0"
-    is-extendable "^1.0.1"
-
-extend@~3.0.2:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
-  integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
-
-external-editor@^3.0.3:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
-  integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
-  dependencies:
-    chardet "^0.7.0"
-    iconv-lite "^0.4.24"
-    tmp "^0.0.33"
-
-extglob@^2.0.4:
-  version "2.0.4"
-  resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
-  integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
-  dependencies:
-    array-unique "^0.3.2"
-    define-property "^1.0.0"
-    expand-brackets "^2.1.4"
-    extend-shallow "^2.0.1"
-    fragment-cache "^0.2.1"
-    regex-not "^1.0.0"
-    snapdragon "^0.8.1"
-    to-regex "^3.0.1"
-
-extsprintf@1.3.0:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
-  integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
-
-extsprintf@^1.2.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
-  integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
-
-fast-deep-equal@^3.1.1:
-  version "3.1.3"
-  resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
-  integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
-
-fast-diff@^1.1.2:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
-  integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
-
-fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
-  integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
-
-fast-levenshtein@~2.0.6:
-  version "2.0.6"
-  resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
-  integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
-
-fb-watchman@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85"
-  integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==
-  dependencies:
-    bser "2.1.1"
-
-figures@^3.0.0:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
-  integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
-  dependencies:
-    escape-string-regexp "^1.0.5"
-
-file-entry-cache@^5.0.1:
-  version "5.0.1"
-  resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c"
-  integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==
-  dependencies:
-    flat-cache "^2.0.1"
-
-fill-range@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
-  integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
-  dependencies:
-    extend-shallow "^2.0.1"
-    is-number "^3.0.0"
-    repeat-string "^1.6.1"
-    to-regex-range "^2.1.0"
-
-fill-range@^7.0.1:
-  version "7.0.1"
-  resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
-  integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
-  dependencies:
-    to-regex-range "^5.0.1"
-
-find-cache-dir@^3.3.1:
-  version "3.3.1"
-  resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880"
-  integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==
-  dependencies:
-    commondir "^1.0.1"
-    make-dir "^3.0.2"
-    pkg-dir "^4.1.0"
-
-find-up@^2.0.0, find-up@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
-  integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
-  dependencies:
-    locate-path "^2.0.0"
-
-find-up@^4.0.0, find-up@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
-  integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
-  dependencies:
-    locate-path "^5.0.0"
-    path-exists "^4.0.0"
-
-flat-cache@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0"
-  integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==
-  dependencies:
-    flatted "^2.0.0"
-    rimraf "2.6.3"
-    write "1.0.3"
-
-flatted@^2.0.0:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138"
-  integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==
-
-for-in@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
-  integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
-
-forever-agent@~0.6.1:
-  version "0.6.1"
-  resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
-  integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
-
-form-data@~2.3.2:
-  version "2.3.3"
-  resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
-  integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
-  dependencies:
-    asynckit "^0.4.0"
-    combined-stream "^1.0.6"
-    mime-types "^2.1.12"
-
-fragment-cache@^0.2.1:
-  version "0.2.1"
-  resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
-  integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
-  dependencies:
-    map-cache "^0.2.2"
-
-fs-extra@8.1.0:
-  version "8.1.0"
-  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
-  integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
-  dependencies:
-    graceful-fs "^4.2.0"
-    jsonfile "^4.0.0"
-    universalify "^0.1.0"
-
-fs-extra@^9.0.0:
-  version "9.1.0"
-  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
-  integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
-  dependencies:
-    at-least-node "^1.0.0"
-    graceful-fs "^4.2.0"
-    jsonfile "^6.0.1"
-    universalify "^2.0.0"
-
-fs.realpath@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
-  integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
-
-fsevents@^2.1.2:
-  version "2.3.1"
-  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.1.tgz#b209ab14c61012636c8863507edf7fb68cc54e9f"
-  integrity sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==
-
-fsevents@~2.3.2:
-  version "2.3.2"
-  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
-  integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
-
-function-bind@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
-  integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
-
-functional-red-black-tree@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
-  integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
-
-gensync@^1.0.0-beta.1:
-  version "1.0.0-beta.2"
-  resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
-  integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
-
-get-caller-file@^2.0.1:
-  version "2.0.5"
-  resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
-  integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
-
-get-intrinsic@^1.0.1, get-intrinsic@^1.0.2:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.0.tgz#892e62931e6938c8a23ea5aaebcfb67bd97da97e"
-  integrity sha512-M11rgtQp5GZMZzDL7jLTNxbDfurpzuau5uqRWDPvlHjfvg3TdScAZo96GLvhMjImrmR8uAt0FS2RLoMrfWGKlg==
-  dependencies:
-    function-bind "^1.1.1"
-    has "^1.0.3"
-    has-symbols "^1.0.1"
-
-get-package-type@^0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
-  integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
-
-get-stdin@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b"
-  integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==
-
-get-stream@^4.0.0:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
-  integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
-  dependencies:
-    pump "^3.0.0"
-
-get-stream@^5.0.0:
-  version "5.2.0"
-  resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
-  integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
-  dependencies:
-    pump "^3.0.0"
-
-get-value@^2.0.3, get-value@^2.0.6:
-  version "2.0.6"
-  resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
-  integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
-
-getpass@^0.1.1:
-  version "0.1.7"
-  resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
-  integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
-  dependencies:
-    assert-plus "^1.0.0"
-
-glob-parent@^5.0.0:
-  version "5.1.1"
-  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
-  integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
-  dependencies:
-    is-glob "^4.0.1"
-
-glob-parent@~5.1.2:
-  version "5.1.2"
-  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
-  integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
-  dependencies:
-    is-glob "^4.0.1"
-
-glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
-  version "7.1.6"
-  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
-  integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
-  dependencies:
-    fs.realpath "^1.0.0"
-    inflight "^1.0.4"
-    inherits "2"
-    minimatch "^3.0.4"
-    once "^1.3.0"
-    path-is-absolute "^1.0.0"
-
-globals@^11.1.0:
-  version "11.12.0"
-  resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
-  integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-
-globals@^12.1.0:
-  version "12.4.0"
-  resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8"
-  integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==
-  dependencies:
-    type-fest "^0.8.1"
-
-globalyzer@0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465"
-  integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==
-
-globrex@^0.1.2:
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098"
-  integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==
-
-graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4:
-  version "4.2.4"
-  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
-  integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
-
-growly@^1.3.0:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
-  integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
-
-har-schema@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
-  integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
-
-har-validator@~5.1.3:
-  version "5.1.5"
-  resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd"
-  integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
-  dependencies:
-    ajv "^6.12.3"
-    har-schema "^2.0.0"
-
-hardhat-watcher@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/hardhat-watcher/-/hardhat-watcher-2.1.1.tgz#8b05fec429ed45da11808bbf6054a90f3e34c51a"
-  integrity sha512-zilmvxAYD34IofBrwOliQn4z92UiDmt2c949DW4Gokf0vS0qk4YTfVCi/LmUBICThGygNANE3WfnRTpjCJGtDA==
-  dependencies:
-    chokidar "^3.4.3"
-
-has-flag@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
-  integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
-
-has-flag@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
-  integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
-
-has-symbols@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
-  integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
-
-has-value@^0.3.1:
-  version "0.3.1"
-  resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
-  integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
-  dependencies:
-    get-value "^2.0.3"
-    has-values "^0.1.4"
-    isobject "^2.0.0"
-
-has-value@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
-  integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
-  dependencies:
-    get-value "^2.0.6"
-    has-values "^1.0.0"
-    isobject "^3.0.0"
-
-has-values@^0.1.4:
-  version "0.1.4"
-  resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
-  integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
-
-has-values@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
-  integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
-  dependencies:
-    is-number "^3.0.0"
-    kind-of "^4.0.0"
-
-has@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
-  integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
-  dependencies:
-    function-bind "^1.1.1"
-
-hash.js@1.1.3:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846"
-  integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==
-  dependencies:
-    inherits "^2.0.3"
-    minimalistic-assert "^1.0.0"
-
-hash.js@^1.0.0, hash.js@^1.0.3:
-  version "1.1.7"
-  resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
-  integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
-  dependencies:
-    inherits "^2.0.3"
-    minimalistic-assert "^1.0.1"
-
-hmac-drbg@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
-  integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
-  dependencies:
-    hash.js "^1.0.3"
-    minimalistic-assert "^1.0.0"
-    minimalistic-crypto-utils "^1.0.1"
-
-hosted-git-info@^2.1.4:
-  version "2.8.8"
-  resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
-  integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
-
-html-encoding-sniffer@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8"
-  integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==
-  dependencies:
-    whatwg-encoding "^1.0.1"
-
-html-escaper@^2.0.0:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
-  integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
-
-http-signature@~1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
-  integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
-  dependencies:
-    assert-plus "^1.0.0"
-    jsprim "^1.2.2"
-    sshpk "^1.7.0"
-
-human-signals@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
-  integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
-
-humanize-duration@^3.15.3:
-  version "3.25.1"
-  resolved "https://registry.yarnpkg.com/humanize-duration/-/humanize-duration-3.25.1.tgz#50e12bf4b3f515ec91106107ee981e8cfe955d6f"
-  integrity sha512-P+dRo48gpLgc2R9tMRgiDRNULPKCmqFYgguwqOO2C0fjO35TgdURDQDANSR1Nt92iHlbHGMxOTnsB8H8xnMa2Q==
-
-iconv-lite@0.4.24, iconv-lite@^0.4.24:
-  version "0.4.24"
-  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
-  integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
-  dependencies:
-    safer-buffer ">= 2.1.2 < 3"
-
-ignore@^4.0.6:
-  version "4.0.6"
-  resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
-  integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
-
-import-fresh@^3.0.0, import-fresh@^3.1.0:
-  version "3.3.0"
-  resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
-  integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
-  dependencies:
-    parent-module "^1.0.0"
-    resolve-from "^4.0.0"
-
-import-local@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6"
-  integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==
-  dependencies:
-    pkg-dir "^4.2.0"
-    resolve-cwd "^3.0.0"
-
-imurmurhash@^0.1.4:
-  version "0.1.4"
-  resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
-  integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
-
-inflight@^1.0.4:
-  version "1.0.6"
-  resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
-  integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
-  dependencies:
-    once "^1.3.0"
-    wrappy "1"
-
-inherits@2, inherits@^2.0.3, inherits@^2.0.4:
-  version "2.0.4"
-  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
-  integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-
-inquirer@^7.0.0:
-  version "7.3.3"
-  resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003"
-  integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==
-  dependencies:
-    ansi-escapes "^4.2.1"
-    chalk "^4.1.0"
-    cli-cursor "^3.1.0"
-    cli-width "^3.0.0"
-    external-editor "^3.0.3"
-    figures "^3.0.0"
-    lodash "^4.17.19"
-    mute-stream "0.0.8"
-    run-async "^2.4.0"
-    rxjs "^6.6.0"
-    string-width "^4.1.0"
-    strip-ansi "^6.0.0"
-    through "^2.3.6"
-
-internal-slot@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3"
-  integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==
-  dependencies:
-    es-abstract "^1.17.0-next.1"
-    has "^1.0.3"
-    side-channel "^1.0.2"
-
-interpret@^1.0.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
-  integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
-
-ip-regex@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
-  integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
-
-is-accessor-descriptor@^0.1.6:
-  version "0.1.6"
-  resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
-  integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
-  dependencies:
-    kind-of "^3.0.2"
-
-is-accessor-descriptor@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
-  integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
-  dependencies:
-    kind-of "^6.0.0"
-
-is-arrayish@^0.2.1:
-  version "0.2.1"
-  resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
-  integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
-
-is-binary-path@~2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
-  integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
-  dependencies:
-    binary-extensions "^2.0.0"
-
-is-buffer@^1.1.5:
-  version "1.1.6"
-  resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
-  integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
-
-is-callable@^1.1.4, is-callable@^1.2.2:
-  version "1.2.2"
-  resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9"
-  integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==
-
-is-ci@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
-  integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
-  dependencies:
-    ci-info "^2.0.0"
-
-is-core-module@^2.1.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
-  integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==
-  dependencies:
-    has "^1.0.3"
-
-is-data-descriptor@^0.1.4:
-  version "0.1.4"
-  resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
-  integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
-  dependencies:
-    kind-of "^3.0.2"
-
-is-data-descriptor@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
-  integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
-  dependencies:
-    kind-of "^6.0.0"
-
-is-date-object@^1.0.1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
-  integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
-
-is-descriptor@^0.1.0:
-  version "0.1.6"
-  resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
-  integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
-  dependencies:
-    is-accessor-descriptor "^0.1.6"
-    is-data-descriptor "^0.1.4"
-    kind-of "^5.0.0"
-
-is-descriptor@^1.0.0, is-descriptor@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
-  integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
-  dependencies:
-    is-accessor-descriptor "^1.0.0"
-    is-data-descriptor "^1.0.0"
-    kind-of "^6.0.2"
-
-is-docker@^2.0.0:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156"
-  integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==
-
-is-extendable@^0.1.0, is-extendable@^0.1.1:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
-  integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
-
-is-extendable@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
-  integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
-  dependencies:
-    is-plain-object "^2.0.4"
-
-is-extglob@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
-  integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
-
-is-fullwidth-code-point@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
-  integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
-
-is-fullwidth-code-point@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
-  integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
-
-is-generator-fn@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
-  integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==
-
-is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
-  integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
-  dependencies:
-    is-extglob "^2.1.1"
-
-is-interactive@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e"
-  integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==
-
-is-module@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
-  integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
-
-is-negative-zero@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
-  integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
-
-is-number@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
-  integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
-  dependencies:
-    kind-of "^3.0.2"
-
-is-number@^7.0.0:
-  version "7.0.0"
-  resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
-  integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
-
-is-plain-object@^2.0.3, is-plain-object@^2.0.4:
-  version "2.0.4"
-  resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
-  integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
-  dependencies:
-    isobject "^3.0.1"
-
-is-reference@^1.1.2:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7"
-  integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==
-  dependencies:
-    "@types/estree" "*"
-
-is-regex@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9"
-  integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==
-  dependencies:
-    has-symbols "^1.0.1"
-
-is-stream@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
-  integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
-
-is-stream@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
-  integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==
-
-is-string@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6"
-  integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==
-
-is-symbol@^1.0.2:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
-  integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
-  dependencies:
-    has-symbols "^1.0.1"
-
-is-typedarray@^1.0.0, is-typedarray@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
-  integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
-
-is-windows@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
-  integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
-
-is-wsl@^2.1.1:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
-  integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
-  dependencies:
-    is-docker "^2.0.0"
-
-isarray@1.0.0, isarray@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
-  integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
-
-isexe@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
-  integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
-
-isobject@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
-  integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
-  dependencies:
-    isarray "1.0.0"
-
-isobject@^3.0.0, isobject@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
-  integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
-
-isstream@~0.1.2:
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
-  integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
-
-istanbul-lib-coverage@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec"
-  integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==
-
-istanbul-lib-instrument@^4.0.0:
-  version "4.0.3"
-  resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d"
-  integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==
-  dependencies:
-    "@babel/core" "^7.7.5"
-    "@istanbuljs/schema" "^0.1.2"
-    istanbul-lib-coverage "^3.0.0"
-    semver "^6.3.0"
-
-istanbul-lib-report@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6"
-  integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==
-  dependencies:
-    istanbul-lib-coverage "^3.0.0"
-    make-dir "^3.0.0"
-    supports-color "^7.1.0"
-
-istanbul-lib-source-maps@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9"
-  integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==
-  dependencies:
-    debug "^4.1.1"
-    istanbul-lib-coverage "^3.0.0"
-    source-map "^0.6.1"
-
-istanbul-reports@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b"
-  integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==
-  dependencies:
-    html-escaper "^2.0.0"
-    istanbul-lib-report "^3.0.0"
-
-jest-changed-files@^25.5.0:
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-25.5.0.tgz#141cc23567ceb3f534526f8614ba39421383634c"
-  integrity sha512-EOw9QEqapsDT7mKF162m8HFzRPbmP8qJQny6ldVOdOVBz3ACgPm/1nAn5fPQ/NDaYhX/AHkrGwwkCncpAVSXcw==
-  dependencies:
-    "@jest/types" "^25.5.0"
-    execa "^3.2.0"
-    throat "^5.0.0"
-
-jest-cli@^25.5.4:
-  version "25.5.4"
-  resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.5.4.tgz#b9f1a84d1301a92c5c217684cb79840831db9f0d"
-  integrity sha512-rG8uJkIiOUpnREh1768/N3n27Cm+xPFkSNFO91tgg+8o2rXeVLStz+vkXkGr4UtzH6t1SNbjwoiswd7p4AhHTw==
-  dependencies:
-    "@jest/core" "^25.5.4"
-    "@jest/test-result" "^25.5.0"
-    "@jest/types" "^25.5.0"
-    chalk "^3.0.0"
-    exit "^0.1.2"
-    graceful-fs "^4.2.4"
-    import-local "^3.0.2"
-    is-ci "^2.0.0"
-    jest-config "^25.5.4"
-    jest-util "^25.5.0"
-    jest-validate "^25.5.0"
-    prompts "^2.0.1"
-    realpath-native "^2.0.0"
-    yargs "^15.3.1"
-
-jest-config@^25.5.4:
-  version "25.5.4"
-  resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.5.4.tgz#38e2057b3f976ef7309b2b2c8dcd2a708a67f02c"
-  integrity sha512-SZwR91SwcdK6bz7Gco8qL7YY2sx8tFJYzvg216DLihTWf+LKY/DoJXpM9nTzYakSyfblbqeU48p/p7Jzy05Atg==
-  dependencies:
-    "@babel/core" "^7.1.0"
-    "@jest/test-sequencer" "^25.5.4"
-    "@jest/types" "^25.5.0"
-    babel-jest "^25.5.1"
-    chalk "^3.0.0"
-    deepmerge "^4.2.2"
-    glob "^7.1.1"
-    graceful-fs "^4.2.4"
-    jest-environment-jsdom "^25.5.0"
-    jest-environment-node "^25.5.0"
-    jest-get-type "^25.2.6"
-    jest-jasmine2 "^25.5.4"
-    jest-regex-util "^25.2.6"
-    jest-resolve "^25.5.1"
-    jest-util "^25.5.0"
-    jest-validate "^25.5.0"
-    micromatch "^4.0.2"
-    pretty-format "^25.5.0"
-    realpath-native "^2.0.0"
-
-jest-diff@^24.3.0:
-  version "24.9.0"
-  resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da"
-  integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==
-  dependencies:
-    chalk "^2.0.1"
-    diff-sequences "^24.9.0"
-    jest-get-type "^24.9.0"
-    pretty-format "^24.9.0"
-
-jest-diff@^25.2.1, jest-diff@^25.5.0:
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9"
-  integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==
-  dependencies:
-    chalk "^3.0.0"
-    diff-sequences "^25.2.6"
-    jest-get-type "^25.2.6"
-    pretty-format "^25.5.0"
-
-jest-docblock@^25.3.0:
-  version "25.3.0"
-  resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-25.3.0.tgz#8b777a27e3477cd77a168c05290c471a575623ef"
-  integrity sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg==
-  dependencies:
-    detect-newline "^3.0.0"
-
-jest-each@^25.5.0:
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.5.0.tgz#0c3c2797e8225cb7bec7e4d249dcd96b934be516"
-  integrity sha512-QBogUxna3D8vtiItvn54xXde7+vuzqRrEeaw8r1s+1TG9eZLVJE5ZkKoSUlqFwRjnlaA4hyKGiu9OlkFIuKnjA==
-  dependencies:
-    "@jest/types" "^25.5.0"
-    chalk "^3.0.0"
-    jest-get-type "^25.2.6"
-    jest-util "^25.5.0"
-    pretty-format "^25.5.0"
-
-jest-environment-jsdom@^25.5.0:
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.5.0.tgz#dcbe4da2ea997707997040ecf6e2560aec4e9834"
-  integrity sha512-7Jr02ydaq4jaWMZLY+Skn8wL5nVIYpWvmeatOHL3tOcV3Zw8sjnPpx+ZdeBfc457p8jCR9J6YCc+Lga0oIy62A==
-  dependencies:
-    "@jest/environment" "^25.5.0"
-    "@jest/fake-timers" "^25.5.0"
-    "@jest/types" "^25.5.0"
-    jest-mock "^25.5.0"
-    jest-util "^25.5.0"
-    jsdom "^15.2.1"
-
-jest-environment-node@^25.5.0:
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.5.0.tgz#0f55270d94804902988e64adca37c6ce0f7d07a1"
-  integrity sha512-iuxK6rQR2En9EID+2k+IBs5fCFd919gVVK5BeND82fYeLWPqvRcFNPKu9+gxTwfB5XwBGBvZ0HFQa+cHtIoslA==
-  dependencies:
-    "@jest/environment" "^25.5.0"
-    "@jest/fake-timers" "^25.5.0"
-    "@jest/types" "^25.5.0"
-    jest-mock "^25.5.0"
-    jest-util "^25.5.0"
-    semver "^6.3.0"
-
-jest-get-type@^24.9.0:
-  version "24.9.0"
-  resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e"
-  integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==
-
-jest-get-type@^25.2.6:
-  version "25.2.6"
-  resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877"
-  integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==
-
-jest-haste-map@^25.5.1:
-  version "25.5.1"
-  resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.5.1.tgz#1df10f716c1d94e60a1ebf7798c9fb3da2620943"
-  integrity sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ==
-  dependencies:
-    "@jest/types" "^25.5.0"
-    "@types/graceful-fs" "^4.1.2"
-    anymatch "^3.0.3"
-    fb-watchman "^2.0.0"
-    graceful-fs "^4.2.4"
-    jest-serializer "^25.5.0"
-    jest-util "^25.5.0"
-    jest-worker "^25.5.0"
-    micromatch "^4.0.2"
-    sane "^4.0.3"
-    walker "^1.0.7"
-    which "^2.0.2"
-  optionalDependencies:
-    fsevents "^2.1.2"
-
-jest-jasmine2@^25.5.4:
-  version "25.5.4"
-  resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.5.4.tgz#66ca8b328fb1a3c5364816f8958f6970a8526968"
-  integrity sha512-9acbWEfbmS8UpdcfqnDO+uBUgKa/9hcRh983IHdM+pKmJPL77G0sWAAK0V0kr5LK3a8cSBfkFSoncXwQlRZfkQ==
-  dependencies:
-    "@babel/traverse" "^7.1.0"
-    "@jest/environment" "^25.5.0"
-    "@jest/source-map" "^25.5.0"
-    "@jest/test-result" "^25.5.0"
-    "@jest/types" "^25.5.0"
-    chalk "^3.0.0"
-    co "^4.6.0"
-    expect "^25.5.0"
-    is-generator-fn "^2.0.0"
-    jest-each "^25.5.0"
-    jest-matcher-utils "^25.5.0"
-    jest-message-util "^25.5.0"
-    jest-runtime "^25.5.4"
-    jest-snapshot "^25.5.1"
-    jest-util "^25.5.0"
-    pretty-format "^25.5.0"
-    throat "^5.0.0"
-
-jest-leak-detector@^25.5.0:
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.5.0.tgz#2291c6294b0ce404241bb56fe60e2d0c3e34f0bb"
-  integrity sha512-rV7JdLsanS8OkdDpZtgBf61L5xZ4NnYLBq72r6ldxahJWWczZjXawRsoHyXzibM5ed7C2QRjpp6ypgwGdKyoVA==
-  dependencies:
-    jest-get-type "^25.2.6"
-    pretty-format "^25.5.0"
-
-jest-matcher-utils@^25.5.0:
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.5.0.tgz#fbc98a12d730e5d2453d7f1ed4a4d948e34b7867"
-  integrity sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw==
-  dependencies:
-    chalk "^3.0.0"
-    jest-diff "^25.5.0"
-    jest-get-type "^25.2.6"
-    pretty-format "^25.5.0"
-
-jest-message-util@^25.5.0:
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.5.0.tgz#ea11d93204cc7ae97456e1d8716251185b8880ea"
-  integrity sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==
-  dependencies:
-    "@babel/code-frame" "^7.0.0"
-    "@jest/types" "^25.5.0"
-    "@types/stack-utils" "^1.0.1"
-    chalk "^3.0.0"
-    graceful-fs "^4.2.4"
-    micromatch "^4.0.2"
-    slash "^3.0.0"
-    stack-utils "^1.0.1"
-
-jest-mock@^25.5.0:
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.5.0.tgz#a91a54dabd14e37ecd61665d6b6e06360a55387a"
-  integrity sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA==
-  dependencies:
-    "@jest/types" "^25.5.0"
-
-jest-pnp-resolver@^1.2.1:
-  version "1.2.2"
-  resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c"
-  integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==
-
-jest-regex-util@^25.2.1, jest-regex-util@^25.2.6:
-  version "25.2.6"
-  resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964"
-  integrity sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw==
-
-jest-resolve-dependencies@^25.5.4:
-  version "25.5.4"
-  resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.5.4.tgz#85501f53957c8e3be446e863a74777b5a17397a7"
-  integrity sha512-yFmbPd+DAQjJQg88HveObcGBA32nqNZ02fjYmtL16t1xw9bAttSn5UGRRhzMHIQbsep7znWvAvnD4kDqOFM0Uw==
-  dependencies:
-    "@jest/types" "^25.5.0"
-    jest-regex-util "^25.2.6"
-    jest-snapshot "^25.5.1"
-
-jest-resolve@^25.5.1:
-  version "25.5.1"
-  resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.5.1.tgz#0e6fbcfa7c26d2a5fe8f456088dc332a79266829"
-  integrity sha512-Hc09hYch5aWdtejsUZhA+vSzcotf7fajSlPA6EZPE1RmPBAD39XtJhvHWFStid58iit4IPDLI/Da4cwdDmAHiQ==
-  dependencies:
-    "@jest/types" "^25.5.0"
-    browser-resolve "^1.11.3"
-    chalk "^3.0.0"
-    graceful-fs "^4.2.4"
-    jest-pnp-resolver "^1.2.1"
-    read-pkg-up "^7.0.1"
-    realpath-native "^2.0.0"
-    resolve "^1.17.0"
-    slash "^3.0.0"
-
-jest-runner@^25.5.4:
-  version "25.5.4"
-  resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.5.4.tgz#ffec5df3875da5f5c878ae6d0a17b8e4ecd7c71d"
-  integrity sha512-V/2R7fKZo6blP8E9BL9vJ8aTU4TH2beuqGNxHbxi6t14XzTb+x90B3FRgdvuHm41GY8ch4xxvf0ATH4hdpjTqg==
-  dependencies:
-    "@jest/console" "^25.5.0"
-    "@jest/environment" "^25.5.0"
-    "@jest/test-result" "^25.5.0"
-    "@jest/types" "^25.5.0"
-    chalk "^3.0.0"
-    exit "^0.1.2"
-    graceful-fs "^4.2.4"
-    jest-config "^25.5.4"
-    jest-docblock "^25.3.0"
-    jest-haste-map "^25.5.1"
-    jest-jasmine2 "^25.5.4"
-    jest-leak-detector "^25.5.0"
-    jest-message-util "^25.5.0"
-    jest-resolve "^25.5.1"
-    jest-runtime "^25.5.4"
-    jest-util "^25.5.0"
-    jest-worker "^25.5.0"
-    source-map-support "^0.5.6"
-    throat "^5.0.0"
-
-jest-runtime@^25.5.4:
-  version "25.5.4"
-  resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.5.4.tgz#dc981fe2cb2137abcd319e74ccae7f7eeffbfaab"
-  integrity sha512-RWTt8LeWh3GvjYtASH2eezkc8AehVoWKK20udV6n3/gC87wlTbE1kIA+opCvNWyyPeBs6ptYsc6nyHUb1GlUVQ==
-  dependencies:
-    "@jest/console" "^25.5.0"
-    "@jest/environment" "^25.5.0"
-    "@jest/globals" "^25.5.2"
-    "@jest/source-map" "^25.5.0"
-    "@jest/test-result" "^25.5.0"
-    "@jest/transform" "^25.5.1"
-    "@jest/types" "^25.5.0"
-    "@types/yargs" "^15.0.0"
-    chalk "^3.0.0"
-    collect-v8-coverage "^1.0.0"
-    exit "^0.1.2"
-    glob "^7.1.3"
-    graceful-fs "^4.2.4"
-    jest-config "^25.5.4"
-    jest-haste-map "^25.5.1"
-    jest-message-util "^25.5.0"
-    jest-mock "^25.5.0"
-    jest-regex-util "^25.2.6"
-    jest-resolve "^25.5.1"
-    jest-snapshot "^25.5.1"
-    jest-util "^25.5.0"
-    jest-validate "^25.5.0"
-    realpath-native "^2.0.0"
-    slash "^3.0.0"
-    strip-bom "^4.0.0"
-    yargs "^15.3.1"
-
-jest-serializer@^25.5.0:
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.5.0.tgz#a993f484e769b4ed54e70e0efdb74007f503072b"
-  integrity sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==
-  dependencies:
-    graceful-fs "^4.2.4"
-
-jest-snapshot@^25.5.1:
-  version "25.5.1"
-  resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.5.1.tgz#1a2a576491f9961eb8d00c2e5fd479bc28e5ff7f"
-  integrity sha512-C02JE1TUe64p2v1auUJ2ze5vcuv32tkv9PyhEb318e8XOKF7MOyXdJ7kdjbvrp3ChPLU2usI7Rjxs97Dj5P0uQ==
-  dependencies:
-    "@babel/types" "^7.0.0"
-    "@jest/types" "^25.5.0"
-    "@types/prettier" "^1.19.0"
-    chalk "^3.0.0"
-    expect "^25.5.0"
-    graceful-fs "^4.2.4"
-    jest-diff "^25.5.0"
-    jest-get-type "^25.2.6"
-    jest-matcher-utils "^25.5.0"
-    jest-message-util "^25.5.0"
-    jest-resolve "^25.5.1"
-    make-dir "^3.0.0"
-    natural-compare "^1.4.0"
-    pretty-format "^25.5.0"
-    semver "^6.3.0"
-
-jest-util@^25.5.0:
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.5.0.tgz#31c63b5d6e901274d264a4fec849230aa3fa35b0"
-  integrity sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==
-  dependencies:
-    "@jest/types" "^25.5.0"
-    chalk "^3.0.0"
-    graceful-fs "^4.2.4"
-    is-ci "^2.0.0"
-    make-dir "^3.0.0"
-
-jest-validate@^25.5.0:
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.5.0.tgz#fb4c93f332c2e4cf70151a628e58a35e459a413a"
-  integrity sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ==
-  dependencies:
-    "@jest/types" "^25.5.0"
-    camelcase "^5.3.1"
-    chalk "^3.0.0"
-    jest-get-type "^25.2.6"
-    leven "^3.1.0"
-    pretty-format "^25.5.0"
-
-jest-watch-typeahead@^0.5.0:
-  version "0.5.0"
-  resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.5.0.tgz#903dba6112f22daae7e90b0a271853f7ff182008"
-  integrity sha512-4r36w9vU8+rdg48hj0Z7TvcSqVP6Ao8dk04grlHQNgduyCB0SqrI0xWIl85ZhXrzYvxQ0N5H+rRLAejkQzEHeQ==
-  dependencies:
-    ansi-escapes "^4.2.1"
-    chalk "^3.0.0"
-    jest-regex-util "^25.2.1"
-    jest-watcher "^25.2.4"
-    slash "^3.0.0"
-    string-length "^3.1.0"
-    strip-ansi "^6.0.0"
-
-jest-watcher@^25.2.4, jest-watcher@^25.5.0:
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.5.0.tgz#d6110d101df98badebe435003956fd4a465e8456"
-  integrity sha512-XrSfJnVASEl+5+bb51V0Q7WQx65dTSk7NL4yDdVjPnRNpM0hG+ncFmDYJo9O8jaSRcAitVbuVawyXCRoxGrT5Q==
-  dependencies:
-    "@jest/test-result" "^25.5.0"
-    "@jest/types" "^25.5.0"
-    ansi-escapes "^4.2.1"
-    chalk "^3.0.0"
-    jest-util "^25.5.0"
-    string-length "^3.1.0"
-
-jest-worker@^24.9.0:
-  version "24.9.0"
-  resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5"
-  integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==
-  dependencies:
-    merge-stream "^2.0.0"
-    supports-color "^6.1.0"
-
-jest-worker@^25.5.0:
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1"
-  integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==
-  dependencies:
-    merge-stream "^2.0.0"
-    supports-color "^7.0.0"
-
-jest@^25.3.0:
-  version "25.5.4"
-  resolved "https://registry.yarnpkg.com/jest/-/jest-25.5.4.tgz#f21107b6489cfe32b076ce2adcadee3587acb9db"
-  integrity sha512-hHFJROBTqZahnO+X+PMtT6G2/ztqAZJveGqz//FnWWHurizkD05PQGzRZOhF3XP6z7SJmL+5tCfW8qV06JypwQ==
-  dependencies:
-    "@jest/core" "^25.5.4"
-    import-local "^3.0.2"
-    jest-cli "^25.5.4"
-
-jpjs@^1.2.1:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/jpjs/-/jpjs-1.2.1.tgz#f343833de8838a5beba1f42d5a219be0114c44b7"
-  integrity sha512-GxJWybWU4NV0RNKi6EIqk6IRPOTqd/h+U7sbtyuD7yUISUzV78LdHnq2xkevJsTlz/EImux4sWj+wfMiwKLkiw==
-
-js-sha3@0.5.7:
-  version "0.5.7"
-  resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7"
-  integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=
-
-"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
-  integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-
-js-yaml@^3.13.1:
-  version "3.14.1"
-  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
-  integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
-  dependencies:
-    argparse "^1.0.7"
-    esprima "^4.0.0"
-
-jsbi@^3.1.4:
-  version "3.1.4"
-  resolved "https://registry.yarnpkg.com/jsbi/-/jsbi-3.1.4.tgz#9654dd02207a66a4911b4e4bb74265bc2cbc9dd0"
-  integrity sha512-52QRRFSsi9impURE8ZUbzAMCLjPm4THO7H2fcuIvaaeFTbSysvkodbQQXIVsNgq/ypDbq6dJiuGKL0vZ/i9hUg==
-
-jsbn@~0.1.0:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
-  integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
-
-jsdom@^15.2.1:
-  version "15.2.1"
-  resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5"
-  integrity sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==
-  dependencies:
-    abab "^2.0.0"
-    acorn "^7.1.0"
-    acorn-globals "^4.3.2"
-    array-equal "^1.0.0"
-    cssom "^0.4.1"
-    cssstyle "^2.0.0"
-    data-urls "^1.1.0"
-    domexception "^1.0.1"
-    escodegen "^1.11.1"
-    html-encoding-sniffer "^1.0.2"
-    nwsapi "^2.2.0"
-    parse5 "5.1.0"
-    pn "^1.1.0"
-    request "^2.88.0"
-    request-promise-native "^1.0.7"
-    saxes "^3.1.9"
-    symbol-tree "^3.2.2"
-    tough-cookie "^3.0.1"
-    w3c-hr-time "^1.0.1"
-    w3c-xmlserializer "^1.1.2"
-    webidl-conversions "^4.0.2"
-    whatwg-encoding "^1.0.5"
-    whatwg-mimetype "^2.3.0"
-    whatwg-url "^7.0.0"
-    ws "^7.0.0"
-    xml-name-validator "^3.0.0"
-
-jsesc@^2.5.1:
-  version "2.5.2"
-  resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
-  integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
-
-jsesc@~0.5.0:
-  version "0.5.0"
-  resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
-  integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
-
-json-parse-even-better-errors@^2.3.0:
-  version "2.3.1"
-  resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
-  integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
-
-json-schema-traverse@^0.4.1:
-  version "0.4.1"
-  resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
-  integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
-
-json-schema@0.2.3:
-  version "0.2.3"
-  resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
-  integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
-
-json-stable-stringify-without-jsonify@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
-  integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
-
-json-stringify-safe@~5.0.1:
-  version "5.0.1"
-  resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
-  integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
-
-json5@2.x, json5@^2.1.2:
-  version "2.1.3"
-  resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43"
-  integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==
-  dependencies:
-    minimist "^1.2.5"
-
-json5@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
-  integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
-  dependencies:
-    minimist "^1.2.0"
-
-jsonfile@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
-  integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
-  optionalDependencies:
-    graceful-fs "^4.1.6"
-
-jsonfile@^6.0.1:
-  version "6.1.0"
-  resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
-  integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
-  dependencies:
-    universalify "^2.0.0"
-  optionalDependencies:
-    graceful-fs "^4.1.6"
-
-jsprim@^1.2.2:
-  version "1.4.1"
-  resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
-  integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
-  dependencies:
-    assert-plus "1.0.0"
-    extsprintf "1.3.0"
-    json-schema "0.2.3"
-    verror "1.10.0"
-
-"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82"
-  integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==
-  dependencies:
-    array-includes "^3.1.2"
-    object.assign "^4.1.2"
-
-kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
-  version "3.2.2"
-  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
-  integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
-  dependencies:
-    is-buffer "^1.1.5"
-
-kind-of@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
-  integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
-  dependencies:
-    is-buffer "^1.1.5"
-
-kind-of@^5.0.0:
-  version "5.1.0"
-  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
-  integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
-
-kind-of@^6.0.0, kind-of@^6.0.2:
-  version "6.0.3"
-  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
-  integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
-
-kleur@^3.0.3:
-  version "3.0.3"
-  resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
-  integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
-
-language-subtag-registry@~0.3.2:
-  version "0.3.21"
-  resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a"
-  integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==
-
-language-tags@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a"
-  integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=
-  dependencies:
-    language-subtag-registry "~0.3.2"
-
-leven@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
-  integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
-
-levn@^0.3.0, levn@~0.3.0:
-  version "0.3.0"
-  resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
-  integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
-  dependencies:
-    prelude-ls "~1.1.2"
-    type-check "~0.3.2"
-
-lines-and-columns@^1.1.6:
-  version "1.1.6"
-  resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
-  integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
-
-load-json-file@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
-  integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=
-  dependencies:
-    graceful-fs "^4.1.2"
-    parse-json "^2.2.0"
-    pify "^2.0.0"
-    strip-bom "^3.0.0"
-
-locate-path@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
-  integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
-  dependencies:
-    p-locate "^2.0.0"
-    path-exists "^3.0.0"
-
-locate-path@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
-  integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
-  dependencies:
-    p-locate "^4.1.0"
-
-lodash.debounce@^4.0.8:
-  version "4.0.8"
-  resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
-  integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
-
-lodash.memoize@4.x:
-  version "4.1.2"
-  resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
-  integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
-
-lodash.merge@^4.6.2:
-  version "4.6.2"
-  resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
-  integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
-
-lodash.sortby@^4.7.0:
-  version "4.7.0"
-  resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
-  integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
-
-lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19:
-  version "4.17.20"
-  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
-  integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
-
-log-symbols@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4"
-  integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==
-  dependencies:
-    chalk "^2.4.2"
-
-log-update@^2.3.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708"
-  integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg=
-  dependencies:
-    ansi-escapes "^3.0.0"
-    cli-cursor "^2.0.0"
-    wrap-ansi "^3.0.1"
-
-lolex@^5.0.0:
-  version "5.1.2"
-  resolved "https://registry.yarnpkg.com/lolex/-/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367"
-  integrity sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==
-  dependencies:
-    "@sinonjs/commons" "^1.7.0"
-
-loose-envify@^1.4.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
-  integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
-  dependencies:
-    js-tokens "^3.0.0 || ^4.0.0"
-
-lower-case@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
-  integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
-  dependencies:
-    tslib "^2.0.3"
-
-lru-cache@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
-  integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
-  dependencies:
-    yallist "^4.0.0"
-
-magic-string@^0.25.2, magic-string@^0.25.7:
-  version "0.25.7"
-  resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
-  integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==
-  dependencies:
-    sourcemap-codec "^1.4.4"
-
-make-dir@^3.0.0, make-dir@^3.0.2:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
-  integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
-  dependencies:
-    semver "^6.0.0"
-
-make-error@1.x:
-  version "1.3.6"
-  resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
-  integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
-
-makeerror@1.0.x:
-  version "1.0.11"
-  resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c"
-  integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=
-  dependencies:
-    tmpl "1.0.x"
-
-map-cache@^0.2.2:
-  version "0.2.2"
-  resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
-  integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
-
-map-visit@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
-  integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
-  dependencies:
-    object-visit "^1.0.0"
-
-merge-stream@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
-  integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
-
-micromatch@4.x, micromatch@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259"
-  integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==
-  dependencies:
-    braces "^3.0.1"
-    picomatch "^2.0.5"
-
-micromatch@^3.1.4:
-  version "3.1.10"
-  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
-  integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
-  dependencies:
-    arr-diff "^4.0.0"
-    array-unique "^0.3.2"
-    braces "^2.3.1"
-    define-property "^2.0.2"
-    extend-shallow "^3.0.2"
-    extglob "^2.0.4"
-    fragment-cache "^0.2.1"
-    kind-of "^6.0.2"
-    nanomatch "^1.2.9"
-    object.pick "^1.3.0"
-    regex-not "^1.0.0"
-    snapdragon "^0.8.1"
-    to-regex "^3.0.2"
-
-mime-db@1.45.0:
-  version "1.45.0"
-  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea"
-  integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==
-
-mime-types@^2.1.12, mime-types@~2.1.19:
-  version "2.1.28"
-  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd"
-  integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==
-  dependencies:
-    mime-db "1.45.0"
-
-mimic-fn@^1.0.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
-  integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
-
-mimic-fn@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
-  integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
-
-minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
-  integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
-
-minimalistic-crypto-utils@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
-  integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
-
-minimatch@^3.0.4:
-  version "3.0.4"
-  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
-  integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
-  dependencies:
-    brace-expansion "^1.1.7"
-
-minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5:
-  version "1.2.5"
-  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
-  integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
-
-mixin-deep@^1.2.0:
-  version "1.3.2"
-  resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
-  integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
-  dependencies:
-    for-in "^1.0.2"
-    is-extendable "^1.0.1"
-
-mkdirp@0.x, mkdirp@^0.5.1:
-  version "0.5.5"
-  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
-  integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
-  dependencies:
-    minimist "^1.2.5"
-
-mri@^1.1.0:
-  version "1.1.6"
-  resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.6.tgz#49952e1044db21dbf90f6cd92bc9c9a777d415a6"
-  integrity sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==
-
-ms@2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
-  integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
-
-ms@2.1.2:
-  version "2.1.2"
-  resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
-  integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-
-mute-stream@0.0.8:
-  version "0.0.8"
-  resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
-  integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
-
-nanomatch@^1.2.9:
-  version "1.2.13"
-  resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
-  integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
-  dependencies:
-    arr-diff "^4.0.0"
-    array-unique "^0.3.2"
-    define-property "^2.0.2"
-    extend-shallow "^3.0.2"
-    fragment-cache "^0.2.1"
-    is-windows "^1.0.2"
-    kind-of "^6.0.2"
-    object.pick "^1.3.0"
-    regex-not "^1.0.0"
-    snapdragon "^0.8.1"
-    to-regex "^3.0.1"
-
-natural-compare@^1.4.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
-  integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
-
-nice-try@^1.0.4:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
-  integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
-
-no-case@^3.0.4:
-  version "3.0.4"
-  resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
-  integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
-  dependencies:
-    lower-case "^2.0.2"
-    tslib "^2.0.3"
-
-node-int64@^0.4.0:
-  version "0.4.0"
-  resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
-  integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=
-
-node-modules-regexp@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40"
-  integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
-
-node-notifier@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-6.0.0.tgz#cea319e06baa16deec8ce5cd7f133c4a46b68e12"
-  integrity sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw==
-  dependencies:
-    growly "^1.3.0"
-    is-wsl "^2.1.1"
-    semver "^6.3.0"
-    shellwords "^0.1.1"
-    which "^1.3.1"
-
-node-releases@^1.1.69:
-  version "1.1.70"
-  resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.70.tgz#66e0ed0273aa65666d7fe78febe7634875426a08"
-  integrity sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw==
-
-normalize-package-data@^2.3.2, normalize-package-data@^2.5.0:
-  version "2.5.0"
-  resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
-  integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
-  dependencies:
-    hosted-git-info "^2.1.4"
-    resolve "^1.10.0"
-    semver "2 || 3 || 4 || 5"
-    validate-npm-package-license "^3.0.1"
-
-normalize-path@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
-  integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
-  dependencies:
-    remove-trailing-separator "^1.0.1"
-
-normalize-path@^3.0.0, normalize-path@~3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
-  integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-
-npm-run-path@^2.0.0:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
-  integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
-  dependencies:
-    path-key "^2.0.0"
-
-npm-run-path@^4.0.0:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
-  integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
-  dependencies:
-    path-key "^3.0.0"
-
-nwsapi@^2.2.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
-  integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==
-
-oauth-sign@~0.9.0:
-  version "0.9.0"
-  resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
-  integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
-
-object-assign@^4.1.1:
-  version "4.1.1"
-  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
-  integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
-
-object-copy@^0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
-  integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
-  dependencies:
-    copy-descriptor "^0.1.0"
-    define-property "^0.2.5"
-    kind-of "^3.0.3"
-
-object-inspect@^1.8.0, object-inspect@^1.9.0:
-  version "1.9.0"
-  resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a"
-  integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==
-
-object-keys@^1.0.12, object-keys@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
-  integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
-
-object-visit@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
-  integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
-  dependencies:
-    isobject "^3.0.0"
-
-object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2:
-  version "4.1.2"
-  resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
-  integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
-  dependencies:
-    call-bind "^1.0.0"
-    define-properties "^1.1.3"
-    has-symbols "^1.0.1"
-    object-keys "^1.1.1"
-
-object.entries@^1.1.2:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6"
-  integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==
-  dependencies:
-    call-bind "^1.0.0"
-    define-properties "^1.1.3"
-    es-abstract "^1.18.0-next.1"
-    has "^1.0.3"
-
-object.fromentries@^2.0.2:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.3.tgz#13cefcffa702dc67750314a3305e8cb3fad1d072"
-  integrity sha512-IDUSMXs6LOSJBWE++L0lzIbSqHl9KDCfff2x/JSEIDtEUavUnyMYC2ZGay/04Zq4UT8lvd4xNhU4/YHKibAOlw==
-  dependencies:
-    call-bind "^1.0.0"
-    define-properties "^1.1.3"
-    es-abstract "^1.18.0-next.1"
-    has "^1.0.3"
-
-object.pick@^1.3.0:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
-  integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
-  dependencies:
-    isobject "^3.0.1"
-
-object.values@^1.1.1:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731"
-  integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==
-  dependencies:
-    call-bind "^1.0.0"
-    define-properties "^1.1.3"
-    es-abstract "^1.18.0-next.1"
-    has "^1.0.3"
-
-once@^1.3.0, once@^1.3.1, once@^1.4.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
-  integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
-  dependencies:
-    wrappy "1"
-
-onetime@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
-  integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=
-  dependencies:
-    mimic-fn "^1.0.0"
-
-onetime@^5.1.0:
-  version "5.1.2"
-  resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
-  integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
-  dependencies:
-    mimic-fn "^2.1.0"
-
-optionator@^0.8.1, optionator@^0.8.3:
-  version "0.8.3"
-  resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
-  integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
-  dependencies:
-    deep-is "~0.1.3"
-    fast-levenshtein "~2.0.6"
-    levn "~0.3.0"
-    prelude-ls "~1.1.2"
-    type-check "~0.3.2"
-    word-wrap "~1.2.3"
-
-ora@^4.0.3:
-  version "4.1.1"
-  resolved "https://registry.yarnpkg.com/ora/-/ora-4.1.1.tgz#566cc0348a15c36f5f0e979612842e02ba9dddbc"
-  integrity sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==
-  dependencies:
-    chalk "^3.0.0"
-    cli-cursor "^3.1.0"
-    cli-spinners "^2.2.0"
-    is-interactive "^1.0.0"
-    log-symbols "^3.0.0"
-    mute-stream "0.0.8"
-    strip-ansi "^6.0.0"
-    wcwidth "^1.0.1"
-
-os-tmpdir@~1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
-  integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
-
-p-each-series@^2.1.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a"
-  integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==
-
-p-finally@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
-  integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
-
-p-finally@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561"
-  integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==
-
-p-limit@^1.1.0:
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
-  integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
-  dependencies:
-    p-try "^1.0.0"
-
-p-limit@^2.2.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
-  integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
-  dependencies:
-    p-try "^2.0.0"
-
-p-locate@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
-  integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
-  dependencies:
-    p-limit "^1.1.0"
-
-p-locate@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
-  integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
-  dependencies:
-    p-limit "^2.2.0"
-
-p-try@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
-  integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
-
-p-try@^2.0.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
-  integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
-
-parent-module@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
-  integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
-  dependencies:
-    callsites "^3.0.0"
-
-parse-json@^2.2.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
-  integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
-  dependencies:
-    error-ex "^1.2.0"
-
-parse-json@^5.0.0:
-  version "5.2.0"
-  resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
-  integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
-  dependencies:
-    "@babel/code-frame" "^7.0.0"
-    error-ex "^1.3.1"
-    json-parse-even-better-errors "^2.3.0"
-    lines-and-columns "^1.1.6"
-
-parse5@5.1.0:
-  version "5.1.0"
-  resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2"
-  integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==
-
-pascal-case@^3.1.1:
-  version "3.1.2"
-  resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb"
-  integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==
-  dependencies:
-    no-case "^3.0.4"
-    tslib "^2.0.3"
-
-pascalcase@^0.1.1:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
-  integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
-
-path-exists@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
-  integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
-
-path-exists@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
-  integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
-
-path-is-absolute@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
-  integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
-
-path-key@^2.0.0, path-key@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
-  integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
-
-path-key@^3.0.0, path-key@^3.1.0:
-  version "3.1.1"
-  resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
-  integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
-
-path-parse@^1.0.6:
-  version "1.0.6"
-  resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
-  integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
-
-path-type@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
-  integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=
-  dependencies:
-    pify "^2.0.0"
-
-path-type@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
-  integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
-
-performance-now@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
-  integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
-
-picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.2:
-  version "2.2.2"
-  resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
-  integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
-
-picomatch@^2.2.1:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
-  integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
-
-pify@^2.0.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
-  integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
-
-pirates@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87"
-  integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==
-  dependencies:
-    node-modules-regexp "^1.0.0"
-
-pkg-dir@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
-  integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
-  dependencies:
-    find-up "^2.1.0"
-
-pkg-dir@^4.1.0, pkg-dir@^4.2.0:
-  version "4.2.0"
-  resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
-  integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
-  dependencies:
-    find-up "^4.0.0"
-
-pn@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb"
-  integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==
-
-posix-character-classes@^0.1.0:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
-  integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
-
-prelude-ls@~1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
-  integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
-
-prettier-linter-helpers@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
-  integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
-  dependencies:
-    fast-diff "^1.1.2"
-
-prettier@^1.19.1:
-  version "1.19.1"
-  resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
-  integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
-
-pretty-format@^24.9.0:
-  version "24.9.0"
-  resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9"
-  integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==
-  dependencies:
-    "@jest/types" "^24.9.0"
-    ansi-regex "^4.0.0"
-    ansi-styles "^3.2.0"
-    react-is "^16.8.4"
-
-pretty-format@^25.2.1, pretty-format@^25.5.0:
-  version "25.5.0"
-  resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a"
-  integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==
-  dependencies:
-    "@jest/types" "^25.5.0"
-    ansi-regex "^5.0.0"
-    ansi-styles "^4.0.0"
-    react-is "^16.12.0"
-
-progress-estimator@^0.2.2:
-  version "0.2.2"
-  resolved "https://registry.yarnpkg.com/progress-estimator/-/progress-estimator-0.2.2.tgz#1c3947a5782ea56e40c8fccc290ac7ceeb1b91cb"
-  integrity sha512-GF76Ac02MTJD6o2nMNtmtOFjwWCnHcvXyn5HOWPQnEMO8OTLw7LAvNmrwe8LmdsB+eZhwUu9fX/c9iQnBxWaFA==
-  dependencies:
-    chalk "^2.4.1"
-    cli-spinners "^1.3.1"
-    humanize-duration "^3.15.3"
-    log-update "^2.3.0"
-
-progress@^2.0.0:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
-  integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
-
-prompts@^2.0.1:
-  version "2.4.0"
-  resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7"
-  integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==
-  dependencies:
-    kleur "^3.0.3"
-    sisteransi "^1.0.5"
-
-prop-types@^15.7.2:
-  version "15.7.2"
-  resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
-  integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
-  dependencies:
-    loose-envify "^1.4.0"
-    object-assign "^4.1.1"
-    react-is "^16.8.1"
-
-psl@^1.1.28:
-  version "1.8.0"
-  resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
-  integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
-
-pump@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
-  integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
-  dependencies:
-    end-of-stream "^1.1.0"
-    once "^1.3.1"
-
-punycode@^2.1.0, punycode@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
-  integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
-
-qs@~6.5.2:
-  version "6.5.2"
-  resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
-  integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
-
-randombytes@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
-  integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
-  dependencies:
-    safe-buffer "^5.1.0"
-
-react-is@^16.12.0, react-is@^16.8.1, react-is@^16.8.4:
-  version "16.13.1"
-  resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
-  integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
-
-read-pkg-up@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
-  integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=
-  dependencies:
-    find-up "^2.0.0"
-    read-pkg "^2.0.0"
-
-read-pkg-up@^7.0.1:
-  version "7.0.1"
-  resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507"
-  integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==
-  dependencies:
-    find-up "^4.1.0"
-    read-pkg "^5.2.0"
-    type-fest "^0.8.1"
-
-read-pkg@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
-  integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=
-  dependencies:
-    load-json-file "^2.0.0"
-    normalize-package-data "^2.3.2"
-    path-type "^2.0.0"
-
-read-pkg@^5.2.0:
-  version "5.2.0"
-  resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc"
-  integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==
-  dependencies:
-    "@types/normalize-package-data" "^2.4.0"
-    normalize-package-data "^2.5.0"
-    parse-json "^5.0.0"
-    type-fest "^0.6.0"
-
-readdirp@~3.6.0:
-  version "3.6.0"
-  resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
-  integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
-  dependencies:
-    picomatch "^2.2.1"
-
-realpath-native@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866"
-  integrity sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q==
-
-rechoir@^0.6.2:
-  version "0.6.2"
-  resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
-  integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=
-  dependencies:
-    resolve "^1.1.6"
-
-regenerate-unicode-properties@^8.2.0:
-  version "8.2.0"
-  resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec"
-  integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==
-  dependencies:
-    regenerate "^1.4.0"
-
-regenerate@^1.4.0:
-  version "1.4.2"
-  resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
-  integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
-
-regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7:
-  version "0.13.7"
-  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
-  integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
-
-regenerator-transform@^0.14.2:
-  version "0.14.5"
-  resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4"
-  integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==
-  dependencies:
-    "@babel/runtime" "^7.8.4"
-
-regex-not@^1.0.0, regex-not@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
-  integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
-  dependencies:
-    extend-shallow "^3.0.2"
-    safe-regex "^1.1.0"
-
-regexp.prototype.flags@^1.3.0:
-  version "1.3.1"
-  resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26"
-  integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==
-  dependencies:
-    call-bind "^1.0.2"
-    define-properties "^1.1.3"
-
-regexpp@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f"
-  integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
-
-regexpp@^3.0.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
-  integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
-
-regexpu-core@^4.7.1:
-  version "4.7.1"
-  resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6"
-  integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==
-  dependencies:
-    regenerate "^1.4.0"
-    regenerate-unicode-properties "^8.2.0"
-    regjsgen "^0.5.1"
-    regjsparser "^0.6.4"
-    unicode-match-property-ecmascript "^1.0.4"
-    unicode-match-property-value-ecmascript "^1.2.0"
-
-regjsgen@^0.5.1:
-  version "0.5.2"
-  resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
-  integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==
-
-regjsparser@^0.6.4:
-  version "0.6.6"
-  resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.6.tgz#6d8c939d1a654f78859b08ddcc4aa777f3fa800a"
-  integrity sha512-jjyuCp+IEMIm3N1H1LLTJW1EISEJV9+5oHdEyrt43Pg9cDSb6rrLZei2cVWpl0xTjmmlpec/lEQGYgM7xfpGCQ==
-  dependencies:
-    jsesc "~0.5.0"
-
-remove-trailing-separator@^1.0.1:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
-  integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
-
-repeat-element@^1.1.2:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
-  integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
-
-repeat-string@^1.6.1:
-  version "1.6.1"
-  resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
-  integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
-
-request-promise-core@1.1.4:
-  version "1.1.4"
-  resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f"
-  integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==
-  dependencies:
-    lodash "^4.17.19"
-
-request-promise-native@^1.0.7:
-  version "1.0.9"
-  resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28"
-  integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==
-  dependencies:
-    request-promise-core "1.1.4"
-    stealthy-require "^1.1.1"
-    tough-cookie "^2.3.3"
-
-request@^2.88.0:
-  version "2.88.2"
-  resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
-  integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
-  dependencies:
-    aws-sign2 "~0.7.0"
-    aws4 "^1.8.0"
-    caseless "~0.12.0"
-    combined-stream "~1.0.6"
-    extend "~3.0.2"
-    forever-agent "~0.6.1"
-    form-data "~2.3.2"
-    har-validator "~5.1.3"
-    http-signature "~1.2.0"
-    is-typedarray "~1.0.0"
-    isstream "~0.1.2"
-    json-stringify-safe "~5.0.1"
-    mime-types "~2.1.19"
-    oauth-sign "~0.9.0"
-    performance-now "^2.1.0"
-    qs "~6.5.2"
-    safe-buffer "^5.1.2"
-    tough-cookie "~2.5.0"
-    tunnel-agent "^0.6.0"
-    uuid "^3.3.2"
-
-require-directory@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
-  integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
-
-require-main-filename@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
-  integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
-
-resolve-cwd@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
-  integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==
-  dependencies:
-    resolve-from "^5.0.0"
-
-resolve-from@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
-  integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
-
-resolve-from@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
-  integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
-
-resolve-url@^0.2.1:
-  version "0.2.1"
-  resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
-  integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
-
-resolve@1.1.7:
-  version "1.1.7"
-  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
-  integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
-
-resolve@1.17.0:
-  version "1.17.0"
-  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
-  integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==
-  dependencies:
-    path-parse "^1.0.6"
-
-resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1:
-  version "1.19.0"
-  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c"
-  integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==
-  dependencies:
-    is-core-module "^2.1.0"
-    path-parse "^1.0.6"
-
-restore-cursor@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
-  integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368=
-  dependencies:
-    onetime "^2.0.0"
-    signal-exit "^3.0.2"
-
-restore-cursor@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
-  integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
-  dependencies:
-    onetime "^5.1.0"
-    signal-exit "^3.0.2"
-
-ret@~0.1.10:
-  version "0.1.15"
-  resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
-  integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
-
-rimraf@2.6.3:
-  version "2.6.3"
-  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
-  integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
-  dependencies:
-    glob "^7.1.3"
-
-rimraf@^3.0.0:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
-  integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
-  dependencies:
-    glob "^7.1.3"
-
-rollup-plugin-sourcemaps@^0.6.2:
-  version "0.6.3"
-  resolved "https://registry.yarnpkg.com/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz#bf93913ffe056e414419607f1d02780d7ece84ed"
-  integrity sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==
-  dependencies:
-    "@rollup/pluginutils" "^3.0.9"
-    source-map-resolve "^0.6.0"
-
-rollup-plugin-terser@^5.1.2:
-  version "5.3.1"
-  resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz#8c650062c22a8426c64268548957463bf981b413"
-  integrity sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==
-  dependencies:
-    "@babel/code-frame" "^7.5.5"
-    jest-worker "^24.9.0"
-    rollup-pluginutils "^2.8.2"
-    serialize-javascript "^4.0.0"
-    terser "^4.6.2"
-
-rollup-plugin-typescript2@^0.27.3:
-  version "0.27.3"
-  resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.27.3.tgz#cd9455ac026d325b20c5728d2cc54a08a771b68b"
-  integrity sha512-gmYPIFmALj9D3Ga1ZbTZAKTXq1JKlTQBtj299DXhqYz9cL3g/AQfUvbb2UhH+Nf++cCq941W2Mv7UcrcgLzJJg==
-  dependencies:
-    "@rollup/pluginutils" "^3.1.0"
-    find-cache-dir "^3.3.1"
-    fs-extra "8.1.0"
-    resolve "1.17.0"
-    tslib "2.0.1"
-
-rollup-pluginutils@^2.8.2:
-  version "2.8.2"
-  resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e"
-  integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==
-  dependencies:
-    estree-walker "^0.6.1"
-
-rollup@^1.32.1:
-  version "1.32.1"
-  resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4"
-  integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==
-  dependencies:
-    "@types/estree" "*"
-    "@types/node" "*"
-    acorn "^7.1.0"
-
-rsvp@^4.8.4:
-  version "4.8.5"
-  resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
-  integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==
-
-run-async@^2.4.0:
-  version "2.4.1"
-  resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
-  integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
-
-rxjs@^6.6.0:
-  version "6.6.3"
-  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552"
-  integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==
-  dependencies:
-    tslib "^1.9.0"
-
-sade@^1.4.2:
-  version "1.7.4"
-  resolved "https://registry.yarnpkg.com/sade/-/sade-1.7.4.tgz#ea681e0c65d248d2095c90578c03ca0bb1b54691"
-  integrity sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==
-  dependencies:
-    mri "^1.1.0"
-
-safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2:
-  version "5.2.1"
-  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
-  integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-
-safe-buffer@~5.1.1:
-  version "5.1.2"
-  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
-  integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-
-safe-regex@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
-  integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
-  dependencies:
-    ret "~0.1.10"
-
-"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
-  version "2.1.2"
-  resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
-  integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
-
-sane@^4.0.3:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded"
-  integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==
-  dependencies:
-    "@cnakazawa/watch" "^1.0.3"
-    anymatch "^2.0.0"
-    capture-exit "^2.0.0"
-    exec-sh "^0.3.2"
-    execa "^1.0.0"
-    fb-watchman "^2.0.0"
-    micromatch "^3.1.4"
-    minimist "^1.1.1"
-    walker "~1.0.5"
-
-saxes@^3.1.9:
-  version "3.1.11"
-  resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b"
-  integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==
-  dependencies:
-    xmlchars "^2.1.1"
-
-"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0:
-  version "5.7.1"
-  resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
-  integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
-
-semver@6.x, semver@^6.0.0, semver@^6.1.2, semver@^6.3.0:
-  version "6.3.0"
-  resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
-  integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
-
-semver@7.0.0:
-  version "7.0.0"
-  resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
-  integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
-
-semver@^7.1.1, semver@^7.3.2:
-  version "7.3.4"
-  resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
-  integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
-  dependencies:
-    lru-cache "^6.0.0"
-
-serialize-javascript@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa"
-  integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==
-  dependencies:
-    randombytes "^2.1.0"
-
-set-blocking@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
-  integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
-
-set-value@^2.0.0, set-value@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
-  integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
-  dependencies:
-    extend-shallow "^2.0.1"
-    is-extendable "^0.1.1"
-    is-plain-object "^2.0.3"
-    split-string "^3.0.1"
-
-shebang-command@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
-  integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
-  dependencies:
-    shebang-regex "^1.0.0"
-
-shebang-command@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
-  integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
-  dependencies:
-    shebang-regex "^3.0.0"
-
-shebang-regex@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
-  integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
-
-shebang-regex@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
-  integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
-
-shelljs@^0.8.3:
-  version "0.8.4"
-  resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2"
-  integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==
-  dependencies:
-    glob "^7.0.0"
-    interpret "^1.0.0"
-    rechoir "^0.6.2"
-
-shellwords@^0.1.1:
-  version "0.1.1"
-  resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
-  integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
-
-side-channel@^1.0.2, side-channel@^1.0.3:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
-  integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
-  dependencies:
-    call-bind "^1.0.0"
-    get-intrinsic "^1.0.2"
-    object-inspect "^1.9.0"
-
-signal-exit@^3.0.0, signal-exit@^3.0.2:
-  version "3.0.3"
-  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
-  integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
-
-sisteransi@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
-  integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
-
-slash@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
-  integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
-
-slice-ansi@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636"
-  integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
-  dependencies:
-    ansi-styles "^3.2.0"
-    astral-regex "^1.0.0"
-    is-fullwidth-code-point "^2.0.0"
-
-snapdragon-node@^2.0.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
-  integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
-  dependencies:
-    define-property "^1.0.0"
-    isobject "^3.0.0"
-    snapdragon-util "^3.0.1"
-
-snapdragon-util@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
-  integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
-  dependencies:
-    kind-of "^3.2.0"
-
-snapdragon@^0.8.1:
-  version "0.8.2"
-  resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
-  integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
-  dependencies:
-    base "^0.11.1"
-    debug "^2.2.0"
-    define-property "^0.2.5"
-    extend-shallow "^2.0.1"
-    map-cache "^0.2.2"
-    source-map "^0.5.6"
-    source-map-resolve "^0.5.0"
-    use "^3.1.0"
-
-source-map-resolve@^0.5.0:
-  version "0.5.3"
-  resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
-  integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==
-  dependencies:
-    atob "^2.1.2"
-    decode-uri-component "^0.2.0"
-    resolve-url "^0.2.1"
-    source-map-url "^0.4.0"
-    urix "^0.1.0"
-
-source-map-resolve@^0.6.0:
-  version "0.6.0"
-  resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2"
-  integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==
-  dependencies:
-    atob "^2.1.2"
-    decode-uri-component "^0.2.0"
-
-source-map-support@^0.5.6, source-map-support@~0.5.12:
-  version "0.5.19"
-  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
-  integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
-  dependencies:
-    buffer-from "^1.0.0"
-    source-map "^0.6.0"
-
-source-map-url@^0.4.0:
-  version "0.4.0"
-  resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
-  integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
-
-source-map@^0.5.0, source-map@^0.5.6:
-  version "0.5.7"
-  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
-  integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
-
-source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
-  version "0.6.1"
-  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
-  integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-
-source-map@^0.7.3:
-  version "0.7.3"
-  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
-  integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
-
-sourcemap-codec@^1.4.4:
-  version "1.4.8"
-  resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
-  integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
-
-spdx-correct@^3.0.0:
-  version "3.1.1"
-  resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
-  integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
-  dependencies:
-    spdx-expression-parse "^3.0.0"
-    spdx-license-ids "^3.0.0"
-
-spdx-exceptions@^2.1.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
-  integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
-
-spdx-expression-parse@^3.0.0:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
-  integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
-  dependencies:
-    spdx-exceptions "^2.1.0"
-    spdx-license-ids "^3.0.0"
-
-spdx-license-ids@^3.0.0:
-  version "3.0.7"
-  resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65"
-  integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==
-
-split-string@^3.0.1, split-string@^3.0.2:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
-  integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
-  dependencies:
-    extend-shallow "^3.0.0"
-
-sprintf-js@~1.0.2:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
-  integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
-
-sshpk@^1.7.0:
-  version "1.16.1"
-  resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
-  integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
-  dependencies:
-    asn1 "~0.2.3"
-    assert-plus "^1.0.0"
-    bcrypt-pbkdf "^1.0.0"
-    dashdash "^1.12.0"
-    ecc-jsbn "~0.1.1"
-    getpass "^0.1.1"
-    jsbn "~0.1.0"
-    safer-buffer "^2.0.2"
-    tweetnacl "~0.14.0"
-
-stack-utils@^1.0.1:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.4.tgz#4b600971dcfc6aed0cbdf2a8268177cc916c87c8"
-  integrity sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w==
-  dependencies:
-    escape-string-regexp "^2.0.0"
-
-static-extend@^0.1.1:
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
-  integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
-  dependencies:
-    define-property "^0.2.5"
-    object-copy "^0.1.0"
-
-stealthy-require@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
-  integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=
-
-string-length@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837"
-  integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==
-  dependencies:
-    astral-regex "^1.0.0"
-    strip-ansi "^5.2.0"
-
-string-width@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
-  integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
-  dependencies:
-    is-fullwidth-code-point "^2.0.0"
-    strip-ansi "^4.0.0"
-
-string-width@^3.0.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
-  integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
-  dependencies:
-    emoji-regex "^7.0.1"
-    is-fullwidth-code-point "^2.0.0"
-    strip-ansi "^5.1.0"
-
-string-width@^4.1.0, string-width@^4.2.0:
-  version "4.2.0"
-  resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
-  integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==
-  dependencies:
-    emoji-regex "^8.0.0"
-    is-fullwidth-code-point "^3.0.0"
-    strip-ansi "^6.0.0"
-
-string.prototype.matchall@^4.0.2:
-  version "4.0.3"
-  resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.3.tgz#24243399bc31b0a49d19e2b74171a15653ec996a"
-  integrity sha512-OBxYDA2ifZQ2e13cP82dWFMaCV9CGF8GzmN4fljBVw5O5wep0lu4gacm1OL6MjROoUnB8VbkWRThqkV2YFLNxw==
-  dependencies:
-    call-bind "^1.0.0"
-    define-properties "^1.1.3"
-    es-abstract "^1.18.0-next.1"
-    has-symbols "^1.0.1"
-    internal-slot "^1.0.2"
-    regexp.prototype.flags "^1.3.0"
-    side-channel "^1.0.3"
-
-string.prototype.trimend@^1.0.1, string.prototype.trimend@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b"
-  integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==
-  dependencies:
-    call-bind "^1.0.0"
-    define-properties "^1.1.3"
-
-string.prototype.trimstart@^1.0.1, string.prototype.trimstart@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa"
-  integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==
-  dependencies:
-    call-bind "^1.0.0"
-    define-properties "^1.1.3"
-
-strip-ansi@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
-  integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
-  dependencies:
-    ansi-regex "^3.0.0"
-
-strip-ansi@^5.1.0, strip-ansi@^5.2.0:
-  version "5.2.0"
-  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
-  integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
-  dependencies:
-    ansi-regex "^4.1.0"
-
-strip-ansi@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
-  integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
-  dependencies:
-    ansi-regex "^5.0.0"
-
-strip-bom@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
-  integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
-
-strip-bom@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878"
-  integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==
-
-strip-eof@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
-  integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
-
-strip-final-newline@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
-  integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
-
-strip-json-comments@^3.0.1:
-  version "3.1.1"
-  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
-  integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
-
-supports-color@^5.3.0:
-  version "5.5.0"
-  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
-  integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
-  dependencies:
-    has-flag "^3.0.0"
-
-supports-color@^6.1.0:
-  version "6.1.0"
-  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
-  integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
-  dependencies:
-    has-flag "^3.0.0"
-
-supports-color@^7.0.0, supports-color@^7.1.0:
-  version "7.2.0"
-  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
-  integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
-  dependencies:
-    has-flag "^4.0.0"
-
-supports-hyperlinks@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47"
-  integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==
-  dependencies:
-    has-flag "^4.0.0"
-    supports-color "^7.0.0"
-
-symbol-tree@^3.2.2:
-  version "3.2.4"
-  resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
-  integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
-
-table@^5.2.3:
-  version "5.4.6"
-  resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e"
-  integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==
-  dependencies:
-    ajv "^6.10.2"
-    lodash "^4.17.14"
-    slice-ansi "^2.1.0"
-    string-width "^3.0.0"
-
-terminal-link@^2.0.0:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994"
-  integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==
-  dependencies:
-    ansi-escapes "^4.2.1"
-    supports-hyperlinks "^2.0.0"
-
-terser@^4.6.2:
-  version "4.8.0"
-  resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17"
-  integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==
-  dependencies:
-    commander "^2.20.0"
-    source-map "~0.6.1"
-    source-map-support "~0.5.12"
-
-test-exclude@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"
-  integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==
-  dependencies:
-    "@istanbuljs/schema" "^0.1.2"
-    glob "^7.1.4"
-    minimatch "^3.0.4"
-
-text-table@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
-  integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
-
-throat@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b"
-  integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==
-
-through@^2.3.6:
-  version "2.3.8"
-  resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
-  integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
-
-tiny-glob@^0.2.6:
-  version "0.2.8"
-  resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.8.tgz#b2792c396cc62db891ffa161fe8b33e76123e531"
-  integrity sha512-vkQP7qOslq63XRX9kMswlby99kyO5OvKptw7AMwBVMjXEI7Tb61eoI5DydyEMOseyGS5anDN1VPoVxEvH01q8w==
-  dependencies:
-    globalyzer "0.1.0"
-    globrex "^0.1.2"
-
-tiny-invariant@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875"
-  integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==
-
-tiny-warning@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
-  integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
-
-tmp@^0.0.33:
-  version "0.0.33"
-  resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
-  integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
-  dependencies:
-    os-tmpdir "~1.0.2"
-
-tmpl@1.0.x:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
-  integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=
-
-to-fast-properties@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
-  integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
-
-to-object-path@^0.3.0:
-  version "0.3.0"
-  resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
-  integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
-  dependencies:
-    kind-of "^3.0.2"
-
-to-regex-range@^2.1.0:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
-  integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
-  dependencies:
-    is-number "^3.0.0"
-    repeat-string "^1.6.1"
-
-to-regex-range@^5.0.1:
-  version "5.0.1"
-  resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
-  integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
-  dependencies:
-    is-number "^7.0.0"
-
-to-regex@^3.0.1, to-regex@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
-  integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
-  dependencies:
-    define-property "^2.0.2"
-    extend-shallow "^3.0.2"
-    regex-not "^1.0.2"
-    safe-regex "^1.1.0"
-
-toformat@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/toformat/-/toformat-2.0.0.tgz#7a043fd2dfbe9021a4e36e508835ba32056739d8"
-  integrity sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ==
-
-tough-cookie@^2.3.3, tough-cookie@~2.5.0:
-  version "2.5.0"
-  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
-  integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
-  dependencies:
-    psl "^1.1.28"
-    punycode "^2.1.1"
-
-tough-cookie@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2"
-  integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==
-  dependencies:
-    ip-regex "^2.1.0"
-    psl "^1.1.28"
-    punycode "^2.1.1"
-
-tr46@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
-  integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=
-  dependencies:
-    punycode "^2.1.0"
-
-ts-jest@^25.3.1:
-  version "25.5.1"
-  resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-25.5.1.tgz#2913afd08f28385d54f2f4e828be4d261f4337c7"
-  integrity sha512-kHEUlZMK8fn8vkxDjwbHlxXRB9dHYpyzqKIGDNxbzs+Rz+ssNDSDNusEK8Fk/sDd4xE6iKoQLfFkFVaskmTJyw==
-  dependencies:
-    bs-logger "0.x"
-    buffer-from "1.x"
-    fast-json-stable-stringify "2.x"
-    json5 "2.x"
-    lodash.memoize "4.x"
-    make-error "1.x"
-    micromatch "4.x"
-    mkdirp "0.x"
-    semver "6.x"
-    yargs-parser "18.x"
-
-tsconfig-paths@^3.9.0:
-  version "3.9.0"
-  resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b"
-  integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==
-  dependencies:
-    "@types/json5" "^0.0.29"
-    json5 "^1.0.1"
-    minimist "^1.2.0"
-    strip-bom "^3.0.0"
-
-tsdx@^0.14.1:
-  version "0.14.1"
-  resolved "https://registry.yarnpkg.com/tsdx/-/tsdx-0.14.1.tgz#8771d509b6fc523ad971bae3a63ebe3a88355ab3"
-  integrity sha512-keHmFdCL2kx5nYFlBdbE3639HQ2v9iGedAFAajobrUTH2wfX0nLPdDhbHv+GHLQZqf0c5ur1XteE8ek/+Eyj5w==
-  dependencies:
-    "@babel/core" "^7.4.4"
-    "@babel/helper-module-imports" "^7.0.0"
-    "@babel/parser" "^7.11.5"
-    "@babel/plugin-proposal-class-properties" "^7.4.4"
-    "@babel/preset-env" "^7.11.0"
-    "@babel/traverse" "^7.11.5"
-    "@rollup/plugin-babel" "^5.1.0"
-    "@rollup/plugin-commonjs" "^11.0.0"
-    "@rollup/plugin-json" "^4.0.0"
-    "@rollup/plugin-node-resolve" "^9.0.0"
-    "@rollup/plugin-replace" "^2.2.1"
-    "@types/jest" "^25.2.1"
-    "@typescript-eslint/eslint-plugin" "^2.12.0"
-    "@typescript-eslint/parser" "^2.12.0"
-    ansi-escapes "^4.2.1"
-    asyncro "^3.0.0"
-    babel-eslint "^10.0.3"
-    babel-plugin-annotate-pure-calls "^0.4.0"
-    babel-plugin-dev-expression "^0.2.1"
-    babel-plugin-macros "^2.6.1"
-    babel-plugin-polyfill-regenerator "^0.0.4"
-    babel-plugin-transform-rename-import "^2.3.0"
-    camelcase "^6.0.0"
-    chalk "^4.0.0"
-    enquirer "^2.3.4"
-    eslint "^6.1.0"
-    eslint-config-prettier "^6.0.0"
-    eslint-config-react-app "^5.2.1"
-    eslint-plugin-flowtype "^3.13.0"
-    eslint-plugin-import "^2.18.2"
-    eslint-plugin-jsx-a11y "^6.2.3"
-    eslint-plugin-prettier "^3.1.0"
-    eslint-plugin-react "^7.14.3"
-    eslint-plugin-react-hooks "^2.2.0"
-    execa "^4.0.3"
-    fs-extra "^9.0.0"
-    jest "^25.3.0"
-    jest-watch-typeahead "^0.5.0"
-    jpjs "^1.2.1"
-    lodash.merge "^4.6.2"
-    ora "^4.0.3"
-    pascal-case "^3.1.1"
-    prettier "^1.19.1"
-    progress-estimator "^0.2.2"
-    regenerator-runtime "^0.13.7"
-    rollup "^1.32.1"
-    rollup-plugin-sourcemaps "^0.6.2"
-    rollup-plugin-terser "^5.1.2"
-    rollup-plugin-typescript2 "^0.27.3"
-    sade "^1.4.2"
-    semver "^7.1.1"
-    shelljs "^0.8.3"
-    tiny-glob "^0.2.6"
-    ts-jest "^25.3.1"
-    tslib "^1.9.3"
-    typescript "^3.7.3"
-
-tslib@2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e"
-  integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==
-
-tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
-  version "1.14.1"
-  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
-  integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-
-tslib@^2.0.3:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
-  integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==
-
-tsutils@^3.17.1:
-  version "3.20.0"
-  resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.20.0.tgz#ea03ea45462e146b53d70ce0893de453ff24f698"
-  integrity sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg==
-  dependencies:
-    tslib "^1.8.1"
-
-tunnel-agent@^0.6.0:
-  version "0.6.0"
-  resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
-  integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
-  dependencies:
-    safe-buffer "^5.0.1"
-
-tweetnacl@^0.14.3, tweetnacl@~0.14.0:
-  version "0.14.5"
-  resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
-  integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
-
-type-check@~0.3.2:
-  version "0.3.2"
-  resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
-  integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
-  dependencies:
-    prelude-ls "~1.1.2"
-
-type-detect@4.0.8:
-  version "4.0.8"
-  resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
-  integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
-
-type-fest@^0.11.0:
-  version "0.11.0"
-  resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1"
-  integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==
-
-type-fest@^0.6.0:
-  version "0.6.0"
-  resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
-  integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==
-
-type-fest@^0.8.1:
-  version "0.8.1"
-  resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
-  integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
-
-typedarray-to-buffer@^3.1.5:
-  version "3.1.5"
-  resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
-  integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
-  dependencies:
-    is-typedarray "^1.0.0"
-
-typescript@^3.7.3:
-  version "3.9.7"
-  resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa"
-  integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==
-
-unicode-canonical-property-names-ecmascript@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
-  integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==
-
-unicode-match-property-ecmascript@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c"
-  integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==
-  dependencies:
-    unicode-canonical-property-names-ecmascript "^1.0.4"
-    unicode-property-aliases-ecmascript "^1.0.4"
-
-unicode-match-property-value-ecmascript@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531"
-  integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==
-
-unicode-property-aliases-ecmascript@^1.0.4:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4"
-  integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==
-
-union-value@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
-  integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
-  dependencies:
-    arr-union "^3.1.0"
-    get-value "^2.0.6"
-    is-extendable "^0.1.1"
-    set-value "^2.0.1"
-
-universalify@^0.1.0:
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
-  integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
-
-universalify@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
-  integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
-
-unset-value@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
-  integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
-  dependencies:
-    has-value "^0.3.1"
-    isobject "^3.0.0"
-
-uri-js@^4.2.2:
-  version "4.4.1"
-  resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
-  integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
-  dependencies:
-    punycode "^2.1.0"
-
-urix@^0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
-  integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
-
-use@^3.1.0:
-  version "3.1.1"
-  resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
-  integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
-
-uuid@^3.3.2:
-  version "3.4.0"
-  resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
-  integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
-
-v8-compile-cache@^2.0.3:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132"
-  integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==
-
-v8-to-istanbul@^4.1.3:
-  version "4.1.4"
-  resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz#b97936f21c0e2d9996d4985e5c5156e9d4e49cd6"
-  integrity sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ==
-  dependencies:
-    "@types/istanbul-lib-coverage" "^2.0.1"
-    convert-source-map "^1.6.0"
-    source-map "^0.7.3"
-
-validate-npm-package-license@^3.0.1:
-  version "3.0.4"
-  resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
-  integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
-  dependencies:
-    spdx-correct "^3.0.0"
-    spdx-expression-parse "^3.0.0"
-
-verror@1.10.0:
-  version "1.10.0"
-  resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
-  integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
-  dependencies:
-    assert-plus "^1.0.0"
-    core-util-is "1.0.2"
-    extsprintf "^1.2.0"
-
-w3c-hr-time@^1.0.1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd"
-  integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==
-  dependencies:
-    browser-process-hrtime "^1.0.0"
-
-w3c-xmlserializer@^1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794"
-  integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==
-  dependencies:
-    domexception "^1.0.1"
-    webidl-conversions "^4.0.2"
-    xml-name-validator "^3.0.0"
-
-walker@^1.0.7, walker@~1.0.5:
-  version "1.0.7"
-  resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"
-  integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=
-  dependencies:
-    makeerror "1.0.x"
-
-wcwidth@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
-  integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=
-  dependencies:
-    defaults "^1.0.3"
-
-webidl-conversions@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
-  integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
-
-whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0"
-  integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
-  dependencies:
-    iconv-lite "0.4.24"
-
-whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
-  integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
-
-whatwg-url@^7.0.0:
-  version "7.1.0"
-  resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06"
-  integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==
-  dependencies:
-    lodash.sortby "^4.7.0"
-    tr46 "^1.0.1"
-    webidl-conversions "^4.0.2"
-
-which-module@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
-  integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
-
-which@^1.2.9, which@^1.3.1:
-  version "1.3.1"
-  resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
-  integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
-  dependencies:
-    isexe "^2.0.0"
-
-which@^2.0.1, which@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
-  integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
-  dependencies:
-    isexe "^2.0.0"
-
-word-wrap@~1.2.3:
-  version "1.2.3"
-  resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
-  integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
-
-wrap-ansi@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba"
-  integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=
-  dependencies:
-    string-width "^2.1.1"
-    strip-ansi "^4.0.0"
-
-wrap-ansi@^6.2.0:
-  version "6.2.0"
-  resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
-  integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
-  dependencies:
-    ansi-styles "^4.0.0"
-    string-width "^4.1.0"
-    strip-ansi "^6.0.0"
-
-wrappy@1:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
-  integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
-
-write-file-atomic@^3.0.0:
-  version "3.0.3"
-  resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
-  integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==
-  dependencies:
-    imurmurhash "^0.1.4"
-    is-typedarray "^1.0.0"
-    signal-exit "^3.0.2"
-    typedarray-to-buffer "^3.1.5"
-
-write@1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3"
-  integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==
-  dependencies:
-    mkdirp "^0.5.1"
-
-ws@^7.0.0:
-  version "7.4.2"
-  resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.2.tgz#782100048e54eb36fe9843363ab1c68672b261dd"
-  integrity sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA==
-
-xml-name-validator@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
-  integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
-
-xmlchars@^2.1.1:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
-  integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
-
-y18n@^4.0.0:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4"
-  integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==
-
-yallist@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
-  integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-
-yaml@^1.7.2:
-  version "1.10.0"
-  resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e"
-  integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==
-
-yargs-parser@18.x, yargs-parser@^18.1.2:
-  version "18.1.3"
-  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
-  integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
-  dependencies:
-    camelcase "^5.0.0"
-    decamelize "^1.2.0"
-
-yargs@^15.3.1:
-  version "15.4.1"
-  resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"
-  integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==
-  dependencies:
-    cliui "^6.0.0"
-    decamelize "^1.2.0"
-    find-up "^4.1.0"
-    get-caller-file "^2.0.1"
-    require-directory "^2.1.1"
-    require-main-filename "^2.0.0"
-    set-blocking "^2.0.0"
-    string-width "^4.2.0"
-    which-module "^2.0.0"
-    y18n "^4.0.0"
-    yargs-parser "^18.1.2"