From cae70a01a49ddf0100b342516711eb727f6e32a2 Mon Sep 17 00:00:00 2001 From: cby3149 Date: Mon, 20 Dec 2021 16:48:01 -0800 Subject: [PATCH 1/8] Deployed NFT bridges --- packages/boba/contracts/hardhat.config.ts | 13 +++++++++++++ packages/boba/contracts/package.json | 1 + ..._0x8376ac6C3f73a25Dd994E0b0669ca7ee0C02F089.json | 8 +++++++- ..._0x93A96D6A5beb1F661cf052722A1424CDDA3e9418.json | 4 ++-- yarn.lock | 13 +++++++++++++ 5 files changed, 36 insertions(+), 3 deletions(-) diff --git a/packages/boba/contracts/hardhat.config.ts b/packages/boba/contracts/hardhat.config.ts index 280fefc42..fde21636c 100644 --- a/packages/boba/contracts/hardhat.config.ts +++ b/packages/boba/contracts/hardhat.config.ts @@ -1,9 +1,16 @@ import { HardhatUserConfig } from 'hardhat/types' +import * as dotenv from 'dotenv' + +// Hardhat plugins import 'hardhat-deploy' import '@nomiclabs/hardhat-ethers' import '@nomiclabs/hardhat-waffle' +import "@nomiclabs/hardhat-etherscan" import './tasks/deploy' +// Load environment variables from .env +dotenv.config() + const config: HardhatUserConfig = { mocha: { timeout: 300000, @@ -21,6 +28,9 @@ const config: HardhatUserConfig = { '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80', ], }, + mainnet: { + url: process.env.L1_NODE_WEB3_URL, + }, }, solidity: { compilers: [ @@ -67,6 +77,9 @@ const config: HardhatUserConfig = { default: 0, }, }, + etherscan: { + apiKey: process.env.ETHERSCAN_KEY, + }, } export default config diff --git a/packages/boba/contracts/package.json b/packages/boba/contracts/package.json index e7b9299c3..7dbc4f353 100644 --- a/packages/boba/contracts/package.json +++ b/packages/boba/contracts/package.json @@ -20,6 +20,7 @@ "@eth-optimism/core-utils": "^0.6.0", "@ethersproject/abstract-provider": "^5.5.1", "@ethersproject/abstract-signer": "^5.5.0", + "@nomiclabs/hardhat-etherscan": "^2.1.8", "@nomiclabs/hardhat-waffle": "^2.0.1", "@openzeppelin/contracts": "4.3.2", "chalk": "^4.1.1", diff --git a/packages/boba/register/addresses/addressesMainnet_0x8376ac6C3f73a25Dd994E0b0669ca7ee0C02F089.json b/packages/boba/register/addresses/addressesMainnet_0x8376ac6C3f73a25Dd994E0b0669ca7ee0C02F089.json index 1b9d1ebdf..550073ed6 100644 --- a/packages/boba/register/addresses/addressesMainnet_0x8376ac6C3f73a25Dd994E0b0669ca7ee0C02F089.json +++ b/packages/boba/register/addresses/addressesMainnet_0x8376ac6C3f73a25Dd994E0b0669ca7ee0C02F089.json @@ -46,6 +46,8 @@ "TK_L1MATIC": "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0", "TK_L2MATIC": "0x26b664736217407E0FA252b4578DB23B1E3819F3", "TK_L2xBOBA": "0x5747a93C87943A9567c6db00b38F1E78bF14b7C0", + "NFT_L1BOBA": "0xD3782AB15fA9983Cb4208de1B49ccA00f1332b43", + "NFT_L2BOBA": "0x22AB0eaBe9db0F30B8066F61D893b4b966F01A7d", "L1CrossDomainMessengerFast": "0x329996D52cDbC617492428680A7a892e8f1c7c8C", "OVM_L1CrossDomainMessengerFast": "0x329996D52cDbC617492428680A7a892e8f1c7c8C", "Proxy__L1CrossDomainMessengerFast": "0xD05b8fD53614e1569cAC01c6D8d41416d0a7257E", @@ -62,5 +64,9 @@ "BobaFixedSavings": "0xA9F76f4556044ACE32Af0989A10eB8CF40963128", "Proxy__BobaFixedSavings": "0x9Fb3051148ff6EFCD0B5bA0Afa22EB0B9fC67A69", "BobaAirdropL1": "0xF5dBd4Cedc64f97Cbc01aB4A9210e41864aac17a", - "BobaAirdropL2": "0x0A1f3CB6E19083C5d72046489487077Beae4D469" + "BobaAirdropL2": "0x0A1f3CB6E19083C5d72046489487077Beae4D469", + "L1NFTBridge": "0xB095a3A4f4e6b4Fd9825a4932Ad6522D4949c8fF", + "L2NFTBridge": "0xE791c5A8aC5299bb946226d6E4864022c982371b", + "Proxy__L1NFTBridge": "0xC891F466e53f40603250837282eAE4e22aD5b088", + "Proxy__L2NFTBridge": "0xFB823b65D0Dc219fdC0d759172D1E098dA32f9eb" } diff --git a/packages/boba/register/addresses/addressesRinkeby_0x93A96D6A5beb1F661cf052722A1424CDDA3e9418.json b/packages/boba/register/addresses/addressesRinkeby_0x93A96D6A5beb1F661cf052722A1424CDDA3e9418.json index b5af45faf..021010bb2 100644 --- a/packages/boba/register/addresses/addressesRinkeby_0x93A96D6A5beb1F661cf052722A1424CDDA3e9418.json +++ b/packages/boba/register/addresses/addressesRinkeby_0x93A96D6A5beb1F661cf052722A1424CDDA3e9418.json @@ -44,8 +44,8 @@ "TK_L2xBOBA": "0xebE42F5cEA2184F6b416bFFAB0744b11281AE95b", "NFT_L1BOBA": "0xa0b66988270154d7e2b5f4707682bbb7c7a8671f", "NFT_L2BOBA": "0x21Cb36a422b75388aFe3b7291b34c7b3c976A05A", - "NFT_L1BOBO": "0x0168bfe341d8c30faa7e0b6900104ceafd1e6b16", - "NFT_L2BOBO": "0x98F7d955E529A577543Eddf240dfF401781fce99", + "NFT_L1BOBO": "0x151325621966039835F1Ce7a1E3c5bA88A4F05d6", + "NFT_L2BOBO": "0x66C893019bC366eB497f49c8Df79e63AF73124eA", "L1CrossDomainMessengerFast": "0x2f28C228C2d9C8dB957E3A842C34E1c3f03f38CB", "Proxy__L1CrossDomainMessengerFast": "0xe2a82CE9671A283190DD5E3f077027979F2c039E", "L2LiquidityPool": "0x270216Baf279Ec201D490A26911dfa4F555B26F2", diff --git a/yarn.lock b/yarn.lock index 306b9b9a7..27855b8b3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3821,6 +3821,19 @@ node-fetch "^2.6.0" semver "^6.3.0" +"@nomiclabs/hardhat-etherscan@^2.1.8": + version "2.1.8" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-2.1.8.tgz#e206275e96962cd15e5ba9148b44388bc922d8c2" + integrity sha512-0+rj0SsZotVOcTLyDOxnOc3Gulo8upo0rsw/h+gBPcmtj91YqYJNhdARHoBxOhhE8z+5IUQPx+Dii04lXT14PA== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@ethersproject/address" "^5.0.2" + cbor "^5.0.2" + debug "^4.1.1" + fs-extra "^7.0.1" + node-fetch "^2.6.0" + semver "^6.3.0" + "@nomiclabs/hardhat-waffle@^2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.1.tgz#5d43654fba780720c5033dea240fe14f70ef4bd2" From 11f7b7ec44c7ff53a23792db2f439f7a728c7527 Mon Sep 17 00:00:00 2001 From: cby3149 Date: Mon, 20 Dec 2021 16:55:47 -0800 Subject: [PATCH 2/8] Fix lint --- packages/boba/contracts/hardhat.config.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/boba/contracts/hardhat.config.ts b/packages/boba/contracts/hardhat.config.ts index fde21636c..f3e3236a3 100644 --- a/packages/boba/contracts/hardhat.config.ts +++ b/packages/boba/contracts/hardhat.config.ts @@ -11,6 +11,11 @@ import './tasks/deploy' // Load environment variables from .env dotenv.config() +// Fix lint +if (!process.env.L1_NODE_WEB3_URL) { + process.env.L1_NODE_WEB3_URL = 'http://localhost:9545' +} + const config: HardhatUserConfig = { mocha: { timeout: 300000, From 7a20a8e07d206402936755edd6ec746705684a43 Mon Sep 17 00:00:00 2001 From: cby3149 Date: Mon, 20 Dec 2021 17:04:21 -0800 Subject: [PATCH 3/8] Update README.md --- packages/boba/contracts/contracts/bridges/README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/boba/contracts/contracts/bridges/README.md b/packages/boba/contracts/contracts/bridges/README.md index fdd1a4eb6..6803c41fd 100644 --- a/packages/boba/contracts/contracts/bridges/README.md +++ b/packages/boba/contracts/contracts/bridges/README.md @@ -80,7 +80,7 @@ await tx.wait() ## Native L2 NFT -The L2 NFT creator should deploy [L1StandardERC721](https://github.com/omgnetwork/optimism-v2/tree/develop/packages/boba/contracts/contracts/standards) on the Boba Network. +The L2 NFT creator should deploy [L1StandardERC721](https://github.com/omgnetwork/optimism-v2/tree/develop/packages/boba/contracts/contracts/standards) on the Mainnet. ```js const Factory__L2StandardERC721 = new ethers.ContractFactory( @@ -149,9 +149,10 @@ await tx.wait() ### Mainnet -| Contract Name | Contract Address | -| ------------- | ---------------- | -| | | +| Contract Name | Contract Address | +| ------------------ | ------------------------------------------ | +| Proxy__L1NFTBridge | 0xC891F466e53f40603250837282eAE4e22aD5b088 | +| Proxy__L2NFTBridge | 0xFB823b65D0Dc219fdC0d759172D1E098dA32f9eb | ### Rinkeby From 4079326b3ecb57b685bcd8d0af36723de536bf0f Mon Sep 17 00:00:00 2001 From: cby3149 Date: Mon, 20 Dec 2021 17:58:23 -0800 Subject: [PATCH 4/8] Fix BobaFixedSavings tests --- integration-tests/test/boba_fixed_savings.spec.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/integration-tests/test/boba_fixed_savings.spec.ts b/integration-tests/test/boba_fixed_savings.spec.ts index 40a22cdc0..56379224d 100644 --- a/integration-tests/test/boba_fixed_savings.spec.ts +++ b/integration-tests/test/boba_fixed_savings.spec.ts @@ -337,7 +337,7 @@ describe('Boba Fixed Savings', async () => { const depositTime = stakeData.depositTimestamp await expect( FixedSavings.connect(env.l2Wallet.address).unstake(stakeData.stakeId) - ).to.be.revertedWith('Not on unstaking period') + ).to.be.revertedWith('Not in unstaking period') // advance time until the end of lock period const expectedLockEndTime = depositTime.add(BigNumber.from(LOCK_TIME)) @@ -351,10 +351,10 @@ describe('Boba Fixed Savings', async () => { .sub(BigNumber.from(3600)) await moveTimeForward(timeToMove.toNumber()) - // still not on unstaking period + // still not in unstaking period await expect( FixedSavings.connect(env.l2Wallet).unstake(stakeData.stakeId) - ).to.be.revertedWith('Not on unstaking period') + ).to.be.revertedWith('Not in unstaking period') }) let preBalanceStaker @@ -456,7 +456,7 @@ describe('Boba Fixed Savings', async () => { await moveTimeForward(timeToMove.toNumber()) await expect( FixedSavings.connect(env.l2Wallet).unstake(stakeData.stakeId) - ).to.be.revertedWith('Not on unstaking period') + ).to.be.revertedWith('Not in unstaking period') // this is the start of second period }) From 531ce91980ff2b15b730d432754edad0d23088c2 Mon Sep 17 00:00:00 2001 From: cby3149 Date: Tue, 21 Dec 2021 14:12:38 -0800 Subject: [PATCH 5/8] Support extra burn in gas oracle --- packages/boba/gas-price-oracle/package.json | 1 + packages/boba/gas-price-oracle/src/service.ts | 132 +++++++++++++++++- 2 files changed, 127 insertions(+), 6 deletions(-) diff --git a/packages/boba/gas-price-oracle/package.json b/packages/boba/gas-price-oracle/package.json index c2dedad38..93a30ffdc 100644 --- a/packages/boba/gas-price-oracle/package.json +++ b/packages/boba/gas-price-oracle/package.json @@ -25,6 +25,7 @@ ], "license": "MIT", "devDependencies": { + "@boba/contracts": "0.0.1", "@eth-optimism/contracts": "^0.4.1", "@eth-optimism/core-utils": "^0.5.1", "@ethersproject/providers": "^5.0.24", diff --git a/packages/boba/gas-price-oracle/src/service.ts b/packages/boba/gas-price-oracle/src/service.ts index 771b12dbd..5588afd64 100644 --- a/packages/boba/gas-price-oracle/src/service.ts +++ b/packages/boba/gas-price-oracle/src/service.ts @@ -16,10 +16,12 @@ import { sleep } from '@eth-optimism/core-utils' import { BaseService } from '@eth-optimism/common-ts' import { loadContract } from '@eth-optimism/contracts' -import L1StandardBridgeJson from './abi/L1StandardBridge.json' -import DiscretionaryExitBurnJson from './abi/DiscretionaryExitBurn.json' -import L1LiquidityPoolJson from './abi/L1LiquidityPool.json' -import L2LiquidityPoolJson from './abi/L2LiquidityPool.json' +import L1StandardBridgeJson from '@eth-optimism/contracts/artifacts/contracts/L1/messaging/L1StandardBridge.sol/L1StandardBridge.json' +import DiscretionaryExitBurnJson from '@boba/contracts/artifacts/contracts/DiscretionaryExitBurn.sol/DiscretionaryExitBurn.json' +import L1LiquidityPoolJson from '@boba/contracts/artifacts/contracts/LP/L1LiquidityPool.sol/L1LiquidityPool.json' +import L2LiquidityPoolJson from '@boba/contracts/artifacts/contracts/LP/L2LiquidityPool.sol/L2LiquidityPool.json' +import L1NFTBridgeJson from '@boba/contracts/artifacts/contracts/bridges/L1NFTBridge.sol/L1NFTBridge.json' +import L2NFTBridgeJson from '@boba/contracts/artifacts/contracts/bridges/L2NFTBridge.sol/L2NFTBridge.json' interface GasPriceOracleOptions { // Providers for interacting with L1 and L2. @@ -77,6 +79,8 @@ export class GasPriceOracleService extends BaseService { Proxy__L2LiquidityPool: Contract CanonicalTransactionChain: Contract StateCommitmentChain: Contract + Proxy__L1NFTBridge: Contract + Proxy__L2NFTBridge: Contract L1ETHBalance: BigNumber L1ETHCostFee: BigNumber L2ETHVaultBalance: BigNumber @@ -160,7 +164,30 @@ export class GasPriceOracleService extends BaseService { address: this.state.Proxy__L2LiquidityPool.address, }) - this.logger.info('Connecting to CanonicalTransactionChain...') + this.logger.info('Connecting to Proxy__L1NFTBridge...') + const Proxy__L1NFTBridgeAddress = + await this.state.Lib_AddressManager.getAddress('Proxy__L1NFTBridge') + this.state.Proxy__L1NFTBridge = new Contract( + Proxy__L1NFTBridgeAddress, + L1NFTBridgeJson.abi, + this.options.gasPriceOracleOwnerWallet + ) + this.logger.info('Connected to Proxy__L1NFTBridge', { + address: this.state.Proxy__L1NFTBridge.address, + }) + + const Proxy__L2NFTBridgeAddress = + await this.state.Lib_AddressManager.getAddress('Proxy__L2NFTBridge') + this.state.Proxy__L2NFTBridge = new Contract( + Proxy__L2NFTBridgeAddress, + L2NFTBridgeJson.abi, + this.options.gasPriceOracleOwnerWallet + ) + this.logger.info('Connected to Proxy__L2NFTBridge', { + address: this.state.Proxy__L2NFTBridge.address, + }) + + this.logger.info('Connecting to CanonicalTransactionChain...') const CanonicalTransactionChainAddress = await this.state.Lib_AddressManager.getAddress('CanonicalTransactionChain') this.state.CanonicalTransactionChain = loadContract( @@ -220,7 +247,9 @@ export class GasPriceOracleService extends BaseService { await this._updateGasPrice() await this._updateFastExitGasBurnFee() await this._updateClassicalExitGasBurnFee() - await this._updateOverheadFee() + // disabled + // await this._updateOverheadFee() + await this._updateNFTBridgeGasBurnFee() } } @@ -777,4 +806,95 @@ export class GasPriceOracleService extends BaseService { this.logger.warn(`CAN\'T UPDATE OVER HEAD RATIO ${error}`) } } + + private async _updateNFTBridgeGasBurnFee(): Promise { + try { + const latestL1Block = await this.options.l1RpcProvider.getBlockNumber() + const L1NFTBridgeSuccessLog = + await this.state.Proxy__L1NFTBridge.queryFilter( + this.state.Proxy__L1NFTBridge.filters.NFTWithdrawalFinalized(), + Number(latestL1Block) - 10000, + Number(latestL1Block) + ) + const L1NFTBridgeFailureLog = + await this.state.Proxy__L1NFTBridge.queryFilter( + this.state.Proxy__L1NFTBridge.filters.NFTWithdrawalFailed(), + Number(latestL1Block) - 10000, + Number(latestL1Block) + ) + + const orderedL1NFTBridgeLog = orderBy( + [...L1NFTBridgeSuccessLog, ...L1NFTBridgeFailureLog], + 'blockNumber', + 'desc' + ) + + // Calculate the average fee of last 50 relayed messages + let L1NFTRelayerCost = BigNumber.from(0) + const transactionHashList = orderedL1NFTBridgeLog.reduce( + (acc, cur, index) => { + if ( + index < 50 && + acc.length < 10 && + !acc.includes(cur.transactionHash) + ) { + acc.push(cur.transactionHash) + } + return acc + }, + [] + ) + const numberOfMessages = [ + ...L1NFTBridgeSuccessLog, + ...L1NFTBridgeFailureLog, + ].filter((i) => transactionHashList.includes(i.transactionHash)).length + + if (numberOfMessages) { + for (const hash of transactionHashList) { + const txReceipt = + await this.options.l1RpcProvider.getTransactionReceipt(hash) + L1NFTRelayerCost = L1NFTRelayerCost.add( + txReceipt.effectiveGasPrice.mul(txReceipt.gasUsed) + ) + } + + const messageFee = L1NFTRelayerCost.div( + BigNumber.from(numberOfMessages) + ) + const extraChargeFee = messageFee + .mul(BigNumber.from(this.options.burnedGasFeeRatio100X)) + .div(BigNumber.from(100)) + const L2GasPrice = await this.options.l2RpcProvider.getGasPrice() + const targetExtraGasRelay = extraChargeFee + .div(L2GasPrice) + .gt(BigNumber.from(this.options.maxBurnedGas)) + ? BigNumber.from(this.options.maxBurnedGas) + : extraChargeFee.div(L2GasPrice) + + const extraGasRelay = + await this.state.Proxy__L2NFTBridge.extraGasRelay() + + if (targetExtraGasRelay.toString() === extraGasRelay.toString()) { + this.logger.info('No need to update extra gas', { + targetExtraGasRelay: Number(targetExtraGasRelay.toString()), + extraGasRelay: Number(extraGasRelay.toString()), + }) + } else { + this.logger.debug('Updating extra gas for Proxy__L2NFTBridge...') + const tx = await this.state.Proxy__L2NFTBridge.configureExtraGasRelay( + targetExtraGasRelay, + { gasPrice: 0 } + ) + await tx.wait() + this.logger.info('Updated Proxy__L2NFTBridge extra gas', { + extraGasRelay: Number(targetExtraGasRelay.toString()), + }) + } + } else { + this.logger.info('No need to update extra gas for NFT') + } + } catch (error) { + this.logger.warn(`CAN\'T UPDATE NFT EXIT BURNED RATIO ${error}`) + } + } } From 326cbf54a7e29e57ef1491f3351c864feedf6650 Mon Sep 17 00:00:00 2001 From: cby3149 Date: Tue, 21 Dec 2021 15:56:50 -0800 Subject: [PATCH 6/8] Add @boba package in gas oracle --- ops/docker/Dockerfile.boba_gas-price-oracle | 2 + .../src/abi/DiscretionaryExitBurn.json | 89 -- .../src/abi/L1LiquidityPool.json | 812 ------------------ .../src/abi/L1StandardBridge.json | 421 --------- .../src/abi/L2LiquidityPool.json | 791 ----------------- 5 files changed, 2 insertions(+), 2113 deletions(-) delete mode 100644 packages/boba/gas-price-oracle/src/abi/DiscretionaryExitBurn.json delete mode 100644 packages/boba/gas-price-oracle/src/abi/L1LiquidityPool.json delete mode 100644 packages/boba/gas-price-oracle/src/abi/L1StandardBridge.json delete mode 100644 packages/boba/gas-price-oracle/src/abi/L2LiquidityPool.json diff --git a/ops/docker/Dockerfile.boba_gas-price-oracle b/ops/docker/Dockerfile.boba_gas-price-oracle index b24e2d761..21aa543e2 100644 --- a/ops/docker/Dockerfile.boba_gas-price-oracle +++ b/ops/docker/Dockerfile.boba_gas-price-oracle @@ -6,6 +6,8 @@ WORKDIR /opt/optimism/ COPY --from=builder /optimism/*.json /optimism/yarn.lock ./ COPY --from=builder /optimism/node_modules ./node_modules +# copy @boba package +COPY --from=builder /optimism/packages/boba/contracts ./node_modules/@boba/contracts # copy deps (would have been nice if docker followed the symlinks required) COPY --from=builder /optimism/packages/core-utils/package.json ./packages/core-utils/package.json diff --git a/packages/boba/gas-price-oracle/src/abi/DiscretionaryExitBurn.json b/packages/boba/gas-price-oracle/src/abi/DiscretionaryExitBurn.json deleted file mode 100644 index ef13bf052..000000000 --- a/packages/boba/gas-price-oracle/src/abi/DiscretionaryExitBurn.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "DiscretionaryExitBurn", - "sourceName": "contracts/DiscretionaryExitBurn.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_l2Bridge", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "uint32", - "name": "_l1Gas", - "type": "uint32" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "burnAndWithdraw", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_extraGas", - "type": "uint256" - } - ], - "name": "configureExtraGasRelay", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "extraGasRelay", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "l2Bridge", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50604051610bd6380380610bd683398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610b43806100936000396000f3fe60806040526004361061003f5760003560e01c80636f0fbfb41461004457806370ac318014610059578063ae1f6aaf14610082578063b5e241f1146100d4575b600080fd5b610057610052366004610892565b6100f4565b005b34801561006557600080fd5b5061006f60015481565b6040519081526020015b60405180910390f35b34801561008e57600080fd5b506000546100af9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610079565b3480156100e057600080fd5b506100576100ef36600461093a565b610373565b60005a9050600154811161018f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f496e73756666696369656e742047617320466f7220612052656c61792054726160448201527f6e73616374696f6e00000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60006101a6600154836104c490919063ffffffff16565b905060005b815a11156101c557806101bd81610982565b9150506101ab565b341515806101fd575073ffffffffffffffffffffffffffffffffffffffff881673420000000000000000000000000000000000000614155b610263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f416d6f756e7420496e636f7272656374000000000000000000000000000000006044820152606401610186565b34156102845734965073420000000000000000000000000000000000000697505b73ffffffffffffffffffffffffffffffffffffffff8816734200000000000000000000000000000000000006146102d7576102d773ffffffffffffffffffffffffffffffffffffffff891633308a6104d7565b6000546040517fa3a7954800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063a3a7954890610337908b9033908c908c908c908c906004016109bb565b600060405180830381600087803b15801561035157600080fd5b505af1158015610365573d6000803e3d6000fd5b505050505050505050505050565b73420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103cd57600080fd5b505afa1580156103e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104059190610a47565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f63616c6c6572206973206e6f74207468652067617350726963654f7261636c6560448201527f206f776e657200000000000000000000000000000000000000000000000000006064820152608401610186565b600155565b60006104d08284610a64565b9392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261056c908590610572565b50505050565b60006105d4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166106839092919063ffffffff16565b80519091501561067e57808060200190518101906105f29190610a7b565b61067e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610186565b505050565b6060610692848460008561069a565b949350505050565b60608247101561072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610186565b843b610794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610186565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516107bd9190610ac9565b60006040518083038185875af1925050503d80600081146107fa576040519150601f19603f3d011682016040523d82523d6000602084013e6107ff565b606091505b509150915061080f82828661081a565b979650505050505050565b606083156108295750816104d0565b8251156108395782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101869190610ae5565b73ffffffffffffffffffffffffffffffffffffffff8116811461088f57600080fd5b50565b6000806000806000608086880312156108aa57600080fd5b85356108b58161086d565b945060208601359350604086013563ffffffff811681146108d557600080fd5b9250606086013567ffffffffffffffff808211156108f257600080fd5b818801915088601f83011261090657600080fd5b81358181111561091557600080fd5b89602082850101111561092757600080fd5b9699959850939650602001949392505050565b60006020828403121561094c57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156109b4576109b4610953565b5060010190565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015263ffffffff8516606083015260a060808301528260a0830152828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050979650505050505050565b600060208284031215610a5957600080fd5b81516104d08161086d565b600082821015610a7657610a76610953565b500390565b600060208284031215610a8d57600080fd5b815180151581146104d057600080fd5b60005b83811015610ab8578181015183820152602001610aa0565b8381111561056c5750506000910152565b60008251610adb818460208701610a9d565b9190910192915050565b6020815260008251806020840152610b04816040850160208701610a9d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea164736f6c6343000809000a", - "deployedBytecode": "0x60806040526004361061003f5760003560e01c80636f0fbfb41461004457806370ac318014610059578063ae1f6aaf14610082578063b5e241f1146100d4575b600080fd5b610057610052366004610892565b6100f4565b005b34801561006557600080fd5b5061006f60015481565b6040519081526020015b60405180910390f35b34801561008e57600080fd5b506000546100af9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610079565b3480156100e057600080fd5b506100576100ef36600461093a565b610373565b60005a9050600154811161018f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f496e73756666696369656e742047617320466f7220612052656c61792054726160448201527f6e73616374696f6e00000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60006101a6600154836104c490919063ffffffff16565b905060005b815a11156101c557806101bd81610982565b9150506101ab565b341515806101fd575073ffffffffffffffffffffffffffffffffffffffff881673420000000000000000000000000000000000000614155b610263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f416d6f756e7420496e636f7272656374000000000000000000000000000000006044820152606401610186565b34156102845734965073420000000000000000000000000000000000000697505b73ffffffffffffffffffffffffffffffffffffffff8816734200000000000000000000000000000000000006146102d7576102d773ffffffffffffffffffffffffffffffffffffffff891633308a6104d7565b6000546040517fa3a7954800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063a3a7954890610337908b9033908c908c908c908c906004016109bb565b600060405180830381600087803b15801561035157600080fd5b505af1158015610365573d6000803e3d6000fd5b505050505050505050505050565b73420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103cd57600080fd5b505afa1580156103e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104059190610a47565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f63616c6c6572206973206e6f74207468652067617350726963654f7261636c6560448201527f206f776e657200000000000000000000000000000000000000000000000000006064820152608401610186565b600155565b60006104d08284610a64565b9392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261056c908590610572565b50505050565b60006105d4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166106839092919063ffffffff16565b80519091501561067e57808060200190518101906105f29190610a7b565b61067e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610186565b505050565b6060610692848460008561069a565b949350505050565b60608247101561072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610186565b843b610794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610186565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516107bd9190610ac9565b60006040518083038185875af1925050503d80600081146107fa576040519150601f19603f3d011682016040523d82523d6000602084013e6107ff565b606091505b509150915061080f82828661081a565b979650505050505050565b606083156108295750816104d0565b8251156108395782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101869190610ae5565b73ffffffffffffffffffffffffffffffffffffffff8116811461088f57600080fd5b50565b6000806000806000608086880312156108aa57600080fd5b85356108b58161086d565b945060208601359350604086013563ffffffff811681146108d557600080fd5b9250606086013567ffffffffffffffff808211156108f257600080fd5b818801915088601f83011261090657600080fd5b81358181111561091557600080fd5b89602082850101111561092757600080fd5b9699959850939650602001949392505050565b60006020828403121561094c57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156109b4576109b4610953565b5060010190565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015263ffffffff8516606083015260a060808301528260a0830152828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050979650505050505050565b600060208284031215610a5957600080fd5b81516104d08161086d565b600082821015610a7657610a76610953565b500390565b600060208284031215610a8d57600080fd5b815180151581146104d057600080fd5b60005b83811015610ab8578181015183820152602001610aa0565b8381111561056c5750506000910152565b60008251610adb818460208701610a9d565b9190910192915050565b6020815260008251806020840152610b04816040850160208701610a9d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea164736f6c6343000809000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/boba/gas-price-oracle/src/abi/L1LiquidityPool.json b/packages/boba/gas-price-oracle/src/abi/L1LiquidityPool.json deleted file mode 100644 index d252865b0..000000000 --- a/packages/boba/gas-price-oracle/src/abi/L1LiquidityPool.json +++ /dev/null @@ -1,812 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "L1LiquidityPool", - "sourceName": "contracts/LP/L1LiquidityPool.sol", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "AddLiquidity", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "receivedAmount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "ClientDepositL1", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "userRewardFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "ownerRewardFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "totalFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "ClientPayL1", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "userRewardFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "ownerRewardFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "totalFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "ClientPayL1Settlement", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "receiver", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "OwnerRecoverFee", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Paused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "RebalanceLP", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Unpaused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "receiver", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "WithdrawLiquidity", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "receiver", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "WithdrawReward", - "type": "event" - }, - { - "inputs": [], - "name": "L1StandardBridgeAddress", - "outputs": [ - { - "internalType": "address payable", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "L2LiquidityPoolAddress", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "SAFE_GAS_STIPEND", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "SETTLEMENT_L2_GAS", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "addLiquidity", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "clientDepositL1", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address payable", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "clientPayL1", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address payable", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "clientPayL1Settlement", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_userRewardFeeRate", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_ownerRewardFeeRate", - "type": "uint256" - } - ], - "name": "configureFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "_l2GasFee", - "type": "uint32" - }, - { - "internalType": "uint256", - "name": "_safeGas", - "type": "uint256" - } - ], - "name": "configureGas", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l1CrossDomainMessenger", - "type": "address" - }, - { - "internalType": "address", - "name": "_l1CrossDomainMessengerFast", - "type": "address" - }, - { - "internalType": "address", - "name": "_L2LiquidityPoolAddress", - "type": "address" - }, - { - "internalType": "address payable", - "name": "_L1StandardBridgeAddress", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "l1CrossDomainMessenger", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - } - ], - "name": "ownerRecoverFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "ownerRewardFeeRate", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "paused", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "poolInfo", - "outputs": [ - { - "internalType": "address", - "name": "l1TokenAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "l2TokenAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "userDepositAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastAccUserReward", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "accUserReward", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "accUserRewardPerShare", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "accOwnerReward", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "startTime", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "rebalanceLP", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l1TokenAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "_l2TokenAddress", - "type": "address" - } - ], - "name": "registerPool", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "relayerMessenger", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "senderMessenger", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "unpause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "updateUserRewardPerShare", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "userInfo", - "outputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "rewardDebt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "pendingReward", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "userRewardFeeRate", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "internalType": "address payable", - "name": "_to", - "type": "address" - } - ], - "name": "withdrawLiquidity", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - } - ], - "name": "withdrawReward", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b0319908116909155600180549091169055613ab08061003c6000396000f3fe6080604052600436106101c25760003560e01c8063818c021e116100f7578063c95f9d0e11610095578063f2fde38b11610064578063f2fde38b146105bb578063f64b5f44146105db578063f72e5aa0146105ee578063f8c8765e1461060e57600080fd5b8063c95f9d0e14610536578063cf26fb1b14610549578063d04a966a14610569578063d1dd871a1461059b57600080fd5b80638cac7893116100d15780638cac7893146104255780638da5cb5b146104455780639a7b5f1114610465578063a71198691461051657600080fd5b8063818c021e146103d057806381e6bdac146103f05780638456cb591461041057600080fd5b806349561dc41161016457806353174cc11161013e57806353174cc11461034d5780635c975abb1461036d57806368be42ca146103905780637286e5e5146103b057600080fd5b806349561dc4146102df578063508e01c4146102ff578063513f31321461033757600080fd5b8063369fd102116101a0578063369fd102146102745780633f4ba83a146102945780633f89e952146102a9578063435fd571146102c957600080fd5b80630f208beb146101c757806312f54c1a1461022e578063358fc07e14610250575b600080fd5b3480156101d357600080fd5b5061020e6101e23660046136f1565b609960209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060015b60405180910390f35b34801561023a57600080fd5b5061024e61024936600461372a565b61062e565b005b34801561025c57600080fd5b50610266609d5481565b604051908152602001610225565b34801561028057600080fd5b5061024e61028f366004613747565b6106c4565b3480156102a057600080fd5b5061024e6107f0565b3480156102b557600080fd5b5061024e6102c436600461377c565b610868565b3480156102d557600080fd5b50610266609c5481565b3480156102eb57600080fd5b5061024e6102fa3660046137a1565b610d2a565b34801561030b57600080fd5b5060005461031f906001600160a01b031681565b6040516001600160a01b039091168152602001610225565b34801561034357600080fd5b50610266609f5481565b34801561035957600080fd5b5061024e6103683660046137e3565b610feb565b34801561037957600080fd5b5060665460ff166040519015158152602001610225565b34801561039c57600080fd5b5061024e6103ab3660046137a1565b6113bc565b3480156103bc57600080fd5b5061024e6103cb3660046136f1565b611694565b3480156103dc57600080fd5b5060015461031f906001600160a01b031681565b3480156103fc57600080fd5b5061024e61040b3660046137a1565b6118c4565b34801561041c57600080fd5b5061024e611b31565b34801561043157600080fd5b5060a15461031f906001600160a01b031681565b34801561045157600080fd5b50609a5461031f906001600160a01b031681565b34801561047157600080fd5b506104d061048036600461372a565b609860205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701546001600160a01b03968716979590961695939492939192909188565b604080516001600160a01b03998a168152989097166020890152958701949094526060860192909252608085015260a084015260c083015260e082015261010001610225565b34801561052257600080fd5b5060a05461031f906001600160a01b031681565b61024e61054436600461377c565b611ba7565b34801561055557600080fd5b5061024e6105643660046137e3565b611e75565b34801561057557600080fd5b50609e546105869063ffffffff1681565b60405163ffffffff9091168152602001610225565b3480156105a757600080fd5b5061024e6105b636600461381a565b6123ca565b3480156105c757600080fd5b5061024e6105d636600461372a565b612605565b61024e6105e936600461377c565b6126ad565b3480156105fa57600080fd5b50609b5461031f906001600160a01b031681565b34801561061a57600080fd5b5061024e61062936600461383c565b6128e8565b6001600160a01b03811660009081526098602052604090206004810154600382015410156106c057600061067382600301548360040154612c2190919063ffffffff16565b905081600201546000146106b45760028201546106ae906106a39061069d8464e8d4a51000612c34565b90612c40565b600584015490612c4c565b60058301555b50600481015460038201555b5050565b609a546001600160a01b03163314806106e65750609a546001600160a01b0316155b6107375760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064015b60405180910390fd5b609b546001600160a01b03166107b55760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a6564000000000000000000000000000000000000000000000000000000606482015260840161072e565b609e80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9390931692909217909155609f55565b609a546001600160a01b03163314806108125750609a546001600160a01b0316155b61085e5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b610866612c58565b565b609a546001600160a01b031633148061088a5750609a546001600160a01b0316155b6108d65760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b60665460ff16156109295760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b816109765760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f727265637400000000000000000000000000000000604482015260640161072e565b6001600160a01b038082166000908152609860205260409020609b549091166109e15760405162461bcd60e51b815260206004820152601e60248201527f4c32204c697175696469747920506f6f6c204e6f742052656769737465720000604482015260640161072e565b60018101546001600160a01b0316610a3b5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b6001600160a01b038216610b385747831115610a995760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f20526562616c616e6365204c5000000000000000000000604482015260640161072e565b60a154609b54609e546040517f9a2ac6d50000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff90911660248201526060604482015260006064820152911690639a2ac6d59085906084016000604051808303818588803b158015610b1a57600080fd5b505af1158015610b2e573d6000803e3d6000fd5b5050505050610ce4565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038316906370a082319060240160206040518083038186803b158015610b9057600080fd5b505afa158015610ba4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc89190613898565b831115610c175760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f20526562616c616e6365204c5000000000000000000000604482015260640161072e565b60a154610c31906001600160a01b03848116911685612d12565b60a1546001820154609b54609e546040517f838b25200000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152938416602482015291831660448301526064820187905263ffffffff16608482015260c060a4820152600060c482015291169063838b25209060e401600060405180830381600087803b158015610ccb57600080fd5b505af1158015610cdf573d6000803e3d6000fd5b505050505b604080518481526001600160a01b03841660208201527f40637a7e139eeb28b936b8decebe78604164b2ade81ce7f4c70deb132e7614c2910160405180910390a1505050565b60665460ff1615610d7d5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b0380831660009081526098602090815260408083206099835281842033855290925290912060018201549192909116610dff5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b6000610e41610e368360010154610e3064e8d4a5100061069d88600501548860000154612c3490919063ffffffff16565b90612c21565b600284015490612c4c565b905085811015610e935760405162461bcd60e51b815260206004820152601560248201527f576974686472617720526577617264204572726f720000000000000000000000604482015260640161072e565b610e9d8187612c21565b600283015560058301548254610ebd9164e8d4a510009161069d91612c34565b60018301556001600160a01b03851615610eea57610ee56001600160a01b0386168588612e89565b610f93565b6000846001600160a01b0316609f5488604051600060405180830381858888f193505050503d8060008114610f3b576040519150601f19603f3d011682016040523d82523d6000602084013e610f40565b606091505b5050905080610f915760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080513381526001600160a01b0386811660208301528183018990528716606082015290517f3cb7cb475a33eda02ee6e719b6c2fc0c899157cfc6f098daf545354dbbce41ec9181900360800190a1505050505050565b609b546001600160a01b03166110096001546001600160a01b031690565b6001600160a01b0316336001600160a01b03161461108f5760405162461bcd60e51b815260206004820152602a60248201527f58434841494e3a206d657373656e67657220636f6e747261637420756e61757460448201527f68656e7469636174656400000000000000000000000000000000000000000000606482015260840161072e565b806001600160a01b03166110ab6001546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156110e357600080fd5b505afa1580156110f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111b91906138b1565b6001600160a01b0316146111975760405162461bcd60e51b815260206004820152602c60248201527f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f60448201527f6d61696e206d6573736167650000000000000000000000000000000000000000606482015260840161072e565b60665460ff16156111ea5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b0382166000908152609860205260408120609c5490919061121b906103e89061069d908890612c34565b9050600061123a6103e861069d609d5489612c3490919063ffffffff16565b905060006112488383612c4c565b905060006112568883612c21565b60048601549091506112689085612c4c565b6004860155600685015461127c9084612c4c565b60068601556001600160a01b038716156112a9576112a46001600160a01b0388168a83612e89565b611352565b6000896001600160a01b0316609f5483604051600060405180830381858888f193505050503d80600081146112fa576040519150601f19603f3d011682016040523d82523d6000602084013e6112ff565b606091505b50509050806113505760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080516001600160a01b038b81168252602082018490528183018790526060820186905260808201859052891660a082015290517fe42a885e97ef72aed483b57141e41f9d64499b43411f58b60a0e07fcdb6e824a9181900360c00190a1505050505050505050565b60665460ff161561140f5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b03808316600090815260986020908152604080832060998352818420338552909252909120600182015491929091166114915760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b80548511156114e25760405162461bcd60e51b815260206004820152600e60248201527f5769746864726177204572726f72000000000000000000000000000000000000604482015260640161072e565b6114eb8461062e565b61152561151a8260010154610e3064e8d4a5100061069d87600501548760000154612c3490919063ffffffff16565b600283015490612c4c565b600282015580546115369086612c21565b80825560058301546115539164e8d4a510009161069d9190612c34565b600182015560028201546115679086612c21565b60028301556001600160a01b038416156115945761158f6001600160a01b0385168487612e89565b61163d565b6000836001600160a01b0316609f5487604051600060405180830381858888f193505050503d80600081146115e5576040519150601f19603f3d011682016040523d82523d6000602084013e6115ea565b606091505b505090508061163b5760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080513381526001600160a01b0385811660208301528183018890528616606082015290517ffa2e8fcf14fd6ea11b6ebe7caf7de210198b8fe1eaf0e06d19f8d87c73860c469181900360800190a15050505050565b609a546001600160a01b03163314806116b65750609a546001600160a01b0316155b6117025760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b806001600160a01b0316826001600160a01b0316141561178a5760405162461bcd60e51b815260206004820152602860248201527f6c3120616e64206c3220746f6b656e206164647265737365732063616e6e6f7460448201527f2062652073616d65000000000000000000000000000000000000000000000000606482015260840161072e565b6001600160a01b0380831660009081526098602052604090206001810154909116156117f85760405162461bcd60e51b815260206004820181905260248201527f546f6b656e204164647265737320416c72656164792052656769737465726564604482015260640161072e565b5060408051610100810182526001600160a01b0393841680825292841660208083019182526000838501818152606085018281526080860183815260a0870184815260c088018581524260e08a019081529a865260989096529790932095518654908a167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178755945160018701805491909a16951694909417909755955160028401559051600383015593516004820155905160058201559151600683015551600790910155565b609a546001600160a01b03163314806118e65750609a546001600160a01b0316155b6119325760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b6001600160a01b038083166000908152609860205260409020600181015490911661199f5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b83816006015410156119f35760405162461bcd60e51b815260206004820152601b60248201527f4f776e657220526577617264205769746864726177204572726f720000000000604482015260640161072e565b6006810154611a029085612c21565b60068201556001600160a01b03831615611a2f57611a2a6001600160a01b0384168386612e89565b611ad8565b6000826001600160a01b0316609f5486604051600060405180830381858888f193505050503d8060008114611a80576040519150601f19603f3d011682016040523d82523d6000602084013e611a85565b606091505b5050905080611ad65760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080513381526001600160a01b03808516602083015291810186905290841660608201527f3cb71b9a1fb601579f96812b9f86ab5e914fc3e54c98d5f84d95581b2b9884f3906080015b60405180910390a150505050565b609a546001600160a01b0316331480611b535750609a546001600160a01b0316155b611b9f5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b610866612ed2565b600280541415611bf95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161072e565b6002805560665460ff1615611c505760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b34151580611c6657506001600160a01b03811615155b611cb25760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f727265637400000000000000000000000000000000604482015260640161072e565b3415611cbf575034905060005b6001600160a01b0380821660009081526098602090815260408083206099835281842033855290925290912060018201549192909116611d415760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b611d4a8361062e565b805415611db657611d8061151a8260010154610e3064e8d4a5100061069d87600501548760000154612c3490919063ffffffff16565b600282015560058201548154611dac9164e8d4a510009161069d9190611da69089612c4c565b90612c34565b6001820155611ddc565b611dd664e8d4a5100061069d846005015487612c3490919063ffffffff16565b60018201555b6001600160a01b03831615611e0057611e006001600160a01b038416333087612f78565b8054611e0c9085612c4c565b81556002820154611e1d9085612c4c565b600283015560408051338152602081018690526001600160a01b0385168183015290517f5852d1d46e583f7e92c2a572221de0e681d82ef71f489847e056b9445c0147369181900360600190a1505060016002555050565b609b546001600160a01b0316611e936001546001600160a01b031690565b6001600160a01b0316336001600160a01b031614611f195760405162461bcd60e51b815260206004820152602a60248201527f58434841494e3a206d657373656e67657220636f6e747261637420756e61757460448201527f68656e7469636174656400000000000000000000000000000000000000000000606482015260840161072e565b806001600160a01b0316611f356001546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015611f6d57600080fd5b505afa158015611f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa591906138b1565b6001600160a01b0316146120215760405162461bcd60e51b815260206004820152602c60248201527f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f60448201527f6d61696e206d6573736167650000000000000000000000000000000000000000606482015260840161072e565b60665460ff16156120745760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b0382166000908152609860205260408120609c5482906120a4906103e89061069d908990612c34565b905060006120c36103e861069d609d548a612c3490919063ffffffff16565b905060006120d18383612c4c565b905060006120df8983612c21565b90506001600160a01b038816156121d1576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038916906370a082319060240160206040518083038186803b15801561214857600080fd5b505afa15801561215c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121809190613898565b81111561219057600195506122b1565b600485015461219f9085612c4c565b600486015560068501546121b39084612c4c565b60068601556121cc6001600160a01b0389168b83612e89565b6122b1565b478111156121e257600195506122b1565b60048501546121f19085612c4c565b600486015560068501546122059084612c4c565b6006860155609f546040516000916001600160a01b038d1691849084818181858888f193505050503d8060008114612259576040519150601f19603f3d011682016040523d82523d6000602084013e61225e565b606091505b50509050806122af5760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b851561235e576001850154604080516001600160a01b038d81166024830152604482018d90529283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f650a767b00000000000000000000000000000000000000000000000000000000179052609b54609e5491926123589291169063ffffffff1683612fc9565b506123be565b604080516001600160a01b038c811682526020820184905281830187905260608201869052608082018590528a1660a082015290517ffe1f8646fcb202e48551fbfd19085116c64b291c60cede7dce3665a57c05e3819181900360c00190a15b50505050505050505050565b609b546001600160a01b03166123e86001546001600160a01b031690565b6001600160a01b0316336001600160a01b03161461246e5760405162461bcd60e51b815260206004820152602a60248201527f58434841494e3a206d657373656e67657220636f6e747261637420756e61757460448201527f68656e7469636174656400000000000000000000000000000000000000000000606482015260840161072e565b806001600160a01b031661248a6001546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156124c257600080fd5b505afa1580156124d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fa91906138b1565b6001600160a01b0316146125765760405162461bcd60e51b815260206004820152602c60248201527f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f60448201527f6d61696e206d6573736167650000000000000000000000000000000000000000606482015260840161072e565b609b546001600160a01b03166125f45760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a6564000000000000000000000000000000000000000000000000000000606482015260840161072e565b50609c91909155609d55565b505050565b609a546001600160a01b03163314806126275750609a546001600160a01b0316155b6126735760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b609a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60665460ff16156127005760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b3415158061271657506001600160a01b03811615155b6127625760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f727265637400000000000000000000000000000000604482015260640161072e565b341561276f575034905060005b6001600160a01b03808216600090815260986020526040902060018101549091166127dc5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b6001600160a01b03821615612800576128006001600160a01b038316333086612f78565b600181015460408051336024820152604481018690526001600160a01b039283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fbd2d1cab00000000000000000000000000000000000000000000000000000000179052609b54609e54919261289f9291169063ffffffff1683612fc9565b60408051338152602081018690526001600160a01b038516918101919091527f860e25c3d48fb81f0b272550dd125a5a6ab20ee7511dd3e250d04964bd37a7a990606001611b23565b609a546001600160a01b031633148061290a5750609a546001600160a01b0316155b6129565760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b609b546001600160a01b0316156129af5760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420686173206265656e20696e697469616c697a6564000000604482015260640161072e565b6001547501000000000000000000000000000000000000000000900460ff16806129f4575060015474010000000000000000000000000000000000000000900460ff16155b612a665760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff16158015612acd57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6001600160a01b03851615801590612aed57506001600160a01b03841615155b8015612b0157506001600160a01b03831615155b612b4d5760405162461bcd60e51b815260206004820152601860248201527f7a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000604482015260640161072e565b600080546001600160a01b038781167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560018054878416908316179055609b805486841690831617905560a1805492851692821692909217909155609a8054909116331790556023609c55600f609d55612bd362155cc06108fc6106c4565b612bdb61304d565b612be361319d565b612beb613314565b8015612c1a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b5050505050565b6000612c2d82846138fd565b9392505050565b6000612c2d8284613914565b6000612c2d8284613951565b6000612c2d828461398c565b60665460ff16612caa5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161072e565b606680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e9060440160206040518083038186803b158015612d7757600080fd5b505afa158015612d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612daf9190613898565b612db9919061398c565b6040516001600160a01b038516602482015260448101829052909150612e839085907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613468565b50505050565b6040516001600160a01b0383166024820152604481018290526126009084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612e01565b60665460ff1615612f255760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b606680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612cf53390565b6040516001600160a01b0380851660248301528316604482015260648101829052612e839085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612e01565b6000546040517f3dbb202b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633dbb202b9061301690869085908790600401613a1a565b600060405180830381600087803b15801561303057600080fd5b505af1158015613044573d6000803e3d6000fd5b50505050505050565b6001547501000000000000000000000000000000000000000000900460ff1680613092575060015474010000000000000000000000000000000000000000900460ff16155b6131045760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff1615801561316b57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b801561319a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b50565b6001547501000000000000000000000000000000000000000000900460ff16806131e2575060015474010000000000000000000000000000000000000000900460ff16155b6132545760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff161580156132bb57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b606680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055801561319a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6001547501000000000000000000000000000000000000000000900460ff1680613359575060015474010000000000000000000000000000000000000000900460ff16155b6133cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff1615801561343257600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6001600255801561319a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b60006134bd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661354d9092919063ffffffff16565b80519091501561260057808060200190518101906134db9190613a52565b6126005760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161072e565b606061355c8484600085613564565b949350505050565b6060824710156135dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161072e565b843b61362a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161072e565b600080866001600160a01b031685876040516136469190613a74565b60006040518083038185875af1925050503d8060008114613683576040519150601f19603f3d011682016040523d82523d6000602084013e613688565b606091505b50915091506136988282866136a3565b979650505050505050565b606083156136b2575081612c2d565b8251156136c25782518084602001fd5b8160405162461bcd60e51b815260040161072e9190613a90565b6001600160a01b038116811461319a57600080fd5b6000806040838503121561370457600080fd5b823561370f816136dc565b9150602083013561371f816136dc565b809150509250929050565b60006020828403121561373c57600080fd5b8135612c2d816136dc565b6000806040838503121561375a57600080fd5b823563ffffffff8116811461376e57600080fd5b946020939093013593505050565b6000806040838503121561378f57600080fd5b82359150602083013561371f816136dc565b6000806000606084860312156137b657600080fd5b8335925060208401356137c8816136dc565b915060408401356137d8816136dc565b809150509250925092565b6000806000606084860312156137f857600080fd5b8335613803816136dc565b92506020840135915060408401356137d8816136dc565b6000806040838503121561382d57600080fd5b50508035926020909101359150565b6000806000806080858703121561385257600080fd5b843561385d816136dc565b9350602085013561386d816136dc565b9250604085013561387d816136dc565b9150606085013561388d816136dc565b939692955090935050565b6000602082840312156138aa57600080fd5b5051919050565b6000602082840312156138c357600080fd5b8151612c2d816136dc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561390f5761390f6138ce565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561394c5761394c6138ce565b500290565b600082613987577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000821982111561399f5761399f6138ce565b500190565b60005b838110156139bf5781810151838201526020016139a7565b83811115612e835750506000910152565b600081518084526139e88160208601602086016139a4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6001600160a01b0384168152606060208201526000613a3c60608301856139d0565b905063ffffffff83166040830152949350505050565b600060208284031215613a6457600080fd5b81518015158114612c2d57600080fd5b60008251613a868184602087016139a4565b9190910192915050565b602081526000612c2d60208301846139d056fea164736f6c6343000809000a", - "deployedBytecode": "0x6080604052600436106101c25760003560e01c8063818c021e116100f7578063c95f9d0e11610095578063f2fde38b11610064578063f2fde38b146105bb578063f64b5f44146105db578063f72e5aa0146105ee578063f8c8765e1461060e57600080fd5b8063c95f9d0e14610536578063cf26fb1b14610549578063d04a966a14610569578063d1dd871a1461059b57600080fd5b80638cac7893116100d15780638cac7893146104255780638da5cb5b146104455780639a7b5f1114610465578063a71198691461051657600080fd5b8063818c021e146103d057806381e6bdac146103f05780638456cb591461041057600080fd5b806349561dc41161016457806353174cc11161013e57806353174cc11461034d5780635c975abb1461036d57806368be42ca146103905780637286e5e5146103b057600080fd5b806349561dc4146102df578063508e01c4146102ff578063513f31321461033757600080fd5b8063369fd102116101a0578063369fd102146102745780633f4ba83a146102945780633f89e952146102a9578063435fd571146102c957600080fd5b80630f208beb146101c757806312f54c1a1461022e578063358fc07e14610250575b600080fd5b3480156101d357600080fd5b5061020e6101e23660046136f1565b609960209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060015b60405180910390f35b34801561023a57600080fd5b5061024e61024936600461372a565b61062e565b005b34801561025c57600080fd5b50610266609d5481565b604051908152602001610225565b34801561028057600080fd5b5061024e61028f366004613747565b6106c4565b3480156102a057600080fd5b5061024e6107f0565b3480156102b557600080fd5b5061024e6102c436600461377c565b610868565b3480156102d557600080fd5b50610266609c5481565b3480156102eb57600080fd5b5061024e6102fa3660046137a1565b610d2a565b34801561030b57600080fd5b5060005461031f906001600160a01b031681565b6040516001600160a01b039091168152602001610225565b34801561034357600080fd5b50610266609f5481565b34801561035957600080fd5b5061024e6103683660046137e3565b610feb565b34801561037957600080fd5b5060665460ff166040519015158152602001610225565b34801561039c57600080fd5b5061024e6103ab3660046137a1565b6113bc565b3480156103bc57600080fd5b5061024e6103cb3660046136f1565b611694565b3480156103dc57600080fd5b5060015461031f906001600160a01b031681565b3480156103fc57600080fd5b5061024e61040b3660046137a1565b6118c4565b34801561041c57600080fd5b5061024e611b31565b34801561043157600080fd5b5060a15461031f906001600160a01b031681565b34801561045157600080fd5b50609a5461031f906001600160a01b031681565b34801561047157600080fd5b506104d061048036600461372a565b609860205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701546001600160a01b03968716979590961695939492939192909188565b604080516001600160a01b03998a168152989097166020890152958701949094526060860192909252608085015260a084015260c083015260e082015261010001610225565b34801561052257600080fd5b5060a05461031f906001600160a01b031681565b61024e61054436600461377c565b611ba7565b34801561055557600080fd5b5061024e6105643660046137e3565b611e75565b34801561057557600080fd5b50609e546105869063ffffffff1681565b60405163ffffffff9091168152602001610225565b3480156105a757600080fd5b5061024e6105b636600461381a565b6123ca565b3480156105c757600080fd5b5061024e6105d636600461372a565b612605565b61024e6105e936600461377c565b6126ad565b3480156105fa57600080fd5b50609b5461031f906001600160a01b031681565b34801561061a57600080fd5b5061024e61062936600461383c565b6128e8565b6001600160a01b03811660009081526098602052604090206004810154600382015410156106c057600061067382600301548360040154612c2190919063ffffffff16565b905081600201546000146106b45760028201546106ae906106a39061069d8464e8d4a51000612c34565b90612c40565b600584015490612c4c565b60058301555b50600481015460038201555b5050565b609a546001600160a01b03163314806106e65750609a546001600160a01b0316155b6107375760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064015b60405180910390fd5b609b546001600160a01b03166107b55760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a6564000000000000000000000000000000000000000000000000000000606482015260840161072e565b609e80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9390931692909217909155609f55565b609a546001600160a01b03163314806108125750609a546001600160a01b0316155b61085e5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b610866612c58565b565b609a546001600160a01b031633148061088a5750609a546001600160a01b0316155b6108d65760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b60665460ff16156109295760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b816109765760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f727265637400000000000000000000000000000000604482015260640161072e565b6001600160a01b038082166000908152609860205260409020609b549091166109e15760405162461bcd60e51b815260206004820152601e60248201527f4c32204c697175696469747920506f6f6c204e6f742052656769737465720000604482015260640161072e565b60018101546001600160a01b0316610a3b5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b6001600160a01b038216610b385747831115610a995760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f20526562616c616e6365204c5000000000000000000000604482015260640161072e565b60a154609b54609e546040517f9a2ac6d50000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff90911660248201526060604482015260006064820152911690639a2ac6d59085906084016000604051808303818588803b158015610b1a57600080fd5b505af1158015610b2e573d6000803e3d6000fd5b5050505050610ce4565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038316906370a082319060240160206040518083038186803b158015610b9057600080fd5b505afa158015610ba4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc89190613898565b831115610c175760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f20526562616c616e6365204c5000000000000000000000604482015260640161072e565b60a154610c31906001600160a01b03848116911685612d12565b60a1546001820154609b54609e546040517f838b25200000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152938416602482015291831660448301526064820187905263ffffffff16608482015260c060a4820152600060c482015291169063838b25209060e401600060405180830381600087803b158015610ccb57600080fd5b505af1158015610cdf573d6000803e3d6000fd5b505050505b604080518481526001600160a01b03841660208201527f40637a7e139eeb28b936b8decebe78604164b2ade81ce7f4c70deb132e7614c2910160405180910390a1505050565b60665460ff1615610d7d5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b0380831660009081526098602090815260408083206099835281842033855290925290912060018201549192909116610dff5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b6000610e41610e368360010154610e3064e8d4a5100061069d88600501548860000154612c3490919063ffffffff16565b90612c21565b600284015490612c4c565b905085811015610e935760405162461bcd60e51b815260206004820152601560248201527f576974686472617720526577617264204572726f720000000000000000000000604482015260640161072e565b610e9d8187612c21565b600283015560058301548254610ebd9164e8d4a510009161069d91612c34565b60018301556001600160a01b03851615610eea57610ee56001600160a01b0386168588612e89565b610f93565b6000846001600160a01b0316609f5488604051600060405180830381858888f193505050503d8060008114610f3b576040519150601f19603f3d011682016040523d82523d6000602084013e610f40565b606091505b5050905080610f915760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080513381526001600160a01b0386811660208301528183018990528716606082015290517f3cb7cb475a33eda02ee6e719b6c2fc0c899157cfc6f098daf545354dbbce41ec9181900360800190a1505050505050565b609b546001600160a01b03166110096001546001600160a01b031690565b6001600160a01b0316336001600160a01b03161461108f5760405162461bcd60e51b815260206004820152602a60248201527f58434841494e3a206d657373656e67657220636f6e747261637420756e61757460448201527f68656e7469636174656400000000000000000000000000000000000000000000606482015260840161072e565b806001600160a01b03166110ab6001546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156110e357600080fd5b505afa1580156110f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111b91906138b1565b6001600160a01b0316146111975760405162461bcd60e51b815260206004820152602c60248201527f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f60448201527f6d61696e206d6573736167650000000000000000000000000000000000000000606482015260840161072e565b60665460ff16156111ea5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b0382166000908152609860205260408120609c5490919061121b906103e89061069d908890612c34565b9050600061123a6103e861069d609d5489612c3490919063ffffffff16565b905060006112488383612c4c565b905060006112568883612c21565b60048601549091506112689085612c4c565b6004860155600685015461127c9084612c4c565b60068601556001600160a01b038716156112a9576112a46001600160a01b0388168a83612e89565b611352565b6000896001600160a01b0316609f5483604051600060405180830381858888f193505050503d80600081146112fa576040519150601f19603f3d011682016040523d82523d6000602084013e6112ff565b606091505b50509050806113505760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080516001600160a01b038b81168252602082018490528183018790526060820186905260808201859052891660a082015290517fe42a885e97ef72aed483b57141e41f9d64499b43411f58b60a0e07fcdb6e824a9181900360c00190a1505050505050505050565b60665460ff161561140f5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b03808316600090815260986020908152604080832060998352818420338552909252909120600182015491929091166114915760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b80548511156114e25760405162461bcd60e51b815260206004820152600e60248201527f5769746864726177204572726f72000000000000000000000000000000000000604482015260640161072e565b6114eb8461062e565b61152561151a8260010154610e3064e8d4a5100061069d87600501548760000154612c3490919063ffffffff16565b600283015490612c4c565b600282015580546115369086612c21565b80825560058301546115539164e8d4a510009161069d9190612c34565b600182015560028201546115679086612c21565b60028301556001600160a01b038416156115945761158f6001600160a01b0385168487612e89565b61163d565b6000836001600160a01b0316609f5487604051600060405180830381858888f193505050503d80600081146115e5576040519150601f19603f3d011682016040523d82523d6000602084013e6115ea565b606091505b505090508061163b5760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080513381526001600160a01b0385811660208301528183018890528616606082015290517ffa2e8fcf14fd6ea11b6ebe7caf7de210198b8fe1eaf0e06d19f8d87c73860c469181900360800190a15050505050565b609a546001600160a01b03163314806116b65750609a546001600160a01b0316155b6117025760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b806001600160a01b0316826001600160a01b0316141561178a5760405162461bcd60e51b815260206004820152602860248201527f6c3120616e64206c3220746f6b656e206164647265737365732063616e6e6f7460448201527f2062652073616d65000000000000000000000000000000000000000000000000606482015260840161072e565b6001600160a01b0380831660009081526098602052604090206001810154909116156117f85760405162461bcd60e51b815260206004820181905260248201527f546f6b656e204164647265737320416c72656164792052656769737465726564604482015260640161072e565b5060408051610100810182526001600160a01b0393841680825292841660208083019182526000838501818152606085018281526080860183815260a0870184815260c088018581524260e08a019081529a865260989096529790932095518654908a167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178755945160018701805491909a16951694909417909755955160028401559051600383015593516004820155905160058201559151600683015551600790910155565b609a546001600160a01b03163314806118e65750609a546001600160a01b0316155b6119325760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b6001600160a01b038083166000908152609860205260409020600181015490911661199f5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b83816006015410156119f35760405162461bcd60e51b815260206004820152601b60248201527f4f776e657220526577617264205769746864726177204572726f720000000000604482015260640161072e565b6006810154611a029085612c21565b60068201556001600160a01b03831615611a2f57611a2a6001600160a01b0384168386612e89565b611ad8565b6000826001600160a01b0316609f5486604051600060405180830381858888f193505050503d8060008114611a80576040519150601f19603f3d011682016040523d82523d6000602084013e611a85565b606091505b5050905080611ad65760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080513381526001600160a01b03808516602083015291810186905290841660608201527f3cb71b9a1fb601579f96812b9f86ab5e914fc3e54c98d5f84d95581b2b9884f3906080015b60405180910390a150505050565b609a546001600160a01b0316331480611b535750609a546001600160a01b0316155b611b9f5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b610866612ed2565b600280541415611bf95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161072e565b6002805560665460ff1615611c505760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b34151580611c6657506001600160a01b03811615155b611cb25760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f727265637400000000000000000000000000000000604482015260640161072e565b3415611cbf575034905060005b6001600160a01b0380821660009081526098602090815260408083206099835281842033855290925290912060018201549192909116611d415760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b611d4a8361062e565b805415611db657611d8061151a8260010154610e3064e8d4a5100061069d87600501548760000154612c3490919063ffffffff16565b600282015560058201548154611dac9164e8d4a510009161069d9190611da69089612c4c565b90612c34565b6001820155611ddc565b611dd664e8d4a5100061069d846005015487612c3490919063ffffffff16565b60018201555b6001600160a01b03831615611e0057611e006001600160a01b038416333087612f78565b8054611e0c9085612c4c565b81556002820154611e1d9085612c4c565b600283015560408051338152602081018690526001600160a01b0385168183015290517f5852d1d46e583f7e92c2a572221de0e681d82ef71f489847e056b9445c0147369181900360600190a1505060016002555050565b609b546001600160a01b0316611e936001546001600160a01b031690565b6001600160a01b0316336001600160a01b031614611f195760405162461bcd60e51b815260206004820152602a60248201527f58434841494e3a206d657373656e67657220636f6e747261637420756e61757460448201527f68656e7469636174656400000000000000000000000000000000000000000000606482015260840161072e565b806001600160a01b0316611f356001546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015611f6d57600080fd5b505afa158015611f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa591906138b1565b6001600160a01b0316146120215760405162461bcd60e51b815260206004820152602c60248201527f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f60448201527f6d61696e206d6573736167650000000000000000000000000000000000000000606482015260840161072e565b60665460ff16156120745760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b0382166000908152609860205260408120609c5482906120a4906103e89061069d908990612c34565b905060006120c36103e861069d609d548a612c3490919063ffffffff16565b905060006120d18383612c4c565b905060006120df8983612c21565b90506001600160a01b038816156121d1576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038916906370a082319060240160206040518083038186803b15801561214857600080fd5b505afa15801561215c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121809190613898565b81111561219057600195506122b1565b600485015461219f9085612c4c565b600486015560068501546121b39084612c4c565b60068601556121cc6001600160a01b0389168b83612e89565b6122b1565b478111156121e257600195506122b1565b60048501546121f19085612c4c565b600486015560068501546122059084612c4c565b6006860155609f546040516000916001600160a01b038d1691849084818181858888f193505050503d8060008114612259576040519150601f19603f3d011682016040523d82523d6000602084013e61225e565b606091505b50509050806122af5760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b851561235e576001850154604080516001600160a01b038d81166024830152604482018d90529283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f650a767b00000000000000000000000000000000000000000000000000000000179052609b54609e5491926123589291169063ffffffff1683612fc9565b506123be565b604080516001600160a01b038c811682526020820184905281830187905260608201869052608082018590528a1660a082015290517ffe1f8646fcb202e48551fbfd19085116c64b291c60cede7dce3665a57c05e3819181900360c00190a15b50505050505050505050565b609b546001600160a01b03166123e86001546001600160a01b031690565b6001600160a01b0316336001600160a01b03161461246e5760405162461bcd60e51b815260206004820152602a60248201527f58434841494e3a206d657373656e67657220636f6e747261637420756e61757460448201527f68656e7469636174656400000000000000000000000000000000000000000000606482015260840161072e565b806001600160a01b031661248a6001546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156124c257600080fd5b505afa1580156124d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fa91906138b1565b6001600160a01b0316146125765760405162461bcd60e51b815260206004820152602c60248201527f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f60448201527f6d61696e206d6573736167650000000000000000000000000000000000000000606482015260840161072e565b609b546001600160a01b03166125f45760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a6564000000000000000000000000000000000000000000000000000000606482015260840161072e565b50609c91909155609d55565b505050565b609a546001600160a01b03163314806126275750609a546001600160a01b0316155b6126735760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b609a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60665460ff16156127005760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b3415158061271657506001600160a01b03811615155b6127625760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f727265637400000000000000000000000000000000604482015260640161072e565b341561276f575034905060005b6001600160a01b03808216600090815260986020526040902060018101549091166127dc5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b6001600160a01b03821615612800576128006001600160a01b038316333086612f78565b600181015460408051336024820152604481018690526001600160a01b039283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fbd2d1cab00000000000000000000000000000000000000000000000000000000179052609b54609e54919261289f9291169063ffffffff1683612fc9565b60408051338152602081018690526001600160a01b038516918101919091527f860e25c3d48fb81f0b272550dd125a5a6ab20ee7511dd3e250d04964bd37a7a990606001611b23565b609a546001600160a01b031633148061290a5750609a546001600160a01b0316155b6129565760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b609b546001600160a01b0316156129af5760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420686173206265656e20696e697469616c697a6564000000604482015260640161072e565b6001547501000000000000000000000000000000000000000000900460ff16806129f4575060015474010000000000000000000000000000000000000000900460ff16155b612a665760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff16158015612acd57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6001600160a01b03851615801590612aed57506001600160a01b03841615155b8015612b0157506001600160a01b03831615155b612b4d5760405162461bcd60e51b815260206004820152601860248201527f7a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000604482015260640161072e565b600080546001600160a01b038781167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560018054878416908316179055609b805486841690831617905560a1805492851692821692909217909155609a8054909116331790556023609c55600f609d55612bd362155cc06108fc6106c4565b612bdb61304d565b612be361319d565b612beb613314565b8015612c1a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b5050505050565b6000612c2d82846138fd565b9392505050565b6000612c2d8284613914565b6000612c2d8284613951565b6000612c2d828461398c565b60665460ff16612caa5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161072e565b606680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e9060440160206040518083038186803b158015612d7757600080fd5b505afa158015612d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612daf9190613898565b612db9919061398c565b6040516001600160a01b038516602482015260448101829052909150612e839085907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613468565b50505050565b6040516001600160a01b0383166024820152604481018290526126009084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612e01565b60665460ff1615612f255760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b606680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612cf53390565b6040516001600160a01b0380851660248301528316604482015260648101829052612e839085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612e01565b6000546040517f3dbb202b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633dbb202b9061301690869085908790600401613a1a565b600060405180830381600087803b15801561303057600080fd5b505af1158015613044573d6000803e3d6000fd5b50505050505050565b6001547501000000000000000000000000000000000000000000900460ff1680613092575060015474010000000000000000000000000000000000000000900460ff16155b6131045760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff1615801561316b57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b801561319a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b50565b6001547501000000000000000000000000000000000000000000900460ff16806131e2575060015474010000000000000000000000000000000000000000900460ff16155b6132545760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff161580156132bb57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b606680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055801561319a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6001547501000000000000000000000000000000000000000000900460ff1680613359575060015474010000000000000000000000000000000000000000900460ff16155b6133cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff1615801561343257600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6001600255801561319a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b60006134bd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661354d9092919063ffffffff16565b80519091501561260057808060200190518101906134db9190613a52565b6126005760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161072e565b606061355c8484600085613564565b949350505050565b6060824710156135dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161072e565b843b61362a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161072e565b600080866001600160a01b031685876040516136469190613a74565b60006040518083038185875af1925050503d8060008114613683576040519150601f19603f3d011682016040523d82523d6000602084013e613688565b606091505b50915091506136988282866136a3565b979650505050505050565b606083156136b2575081612c2d565b8251156136c25782518084602001fd5b8160405162461bcd60e51b815260040161072e9190613a90565b6001600160a01b038116811461319a57600080fd5b6000806040838503121561370457600080fd5b823561370f816136dc565b9150602083013561371f816136dc565b809150509250929050565b60006020828403121561373c57600080fd5b8135612c2d816136dc565b6000806040838503121561375a57600080fd5b823563ffffffff8116811461376e57600080fd5b946020939093013593505050565b6000806040838503121561378f57600080fd5b82359150602083013561371f816136dc565b6000806000606084860312156137b657600080fd5b8335925060208401356137c8816136dc565b915060408401356137d8816136dc565b809150509250925092565b6000806000606084860312156137f857600080fd5b8335613803816136dc565b92506020840135915060408401356137d8816136dc565b6000806040838503121561382d57600080fd5b50508035926020909101359150565b6000806000806080858703121561385257600080fd5b843561385d816136dc565b9350602085013561386d816136dc565b9250604085013561387d816136dc565b9150606085013561388d816136dc565b939692955090935050565b6000602082840312156138aa57600080fd5b5051919050565b6000602082840312156138c357600080fd5b8151612c2d816136dc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561390f5761390f6138ce565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561394c5761394c6138ce565b500290565b600082613987577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000821982111561399f5761399f6138ce565b500190565b60005b838110156139bf5781810151838201526020016139a7565b83811115612e835750506000910152565b600081518084526139e88160208601602086016139a4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6001600160a01b0384168152606060208201526000613a3c60608301856139d0565b905063ffffffff83166040830152949350505050565b600060208284031215613a6457600080fd5b81518015158114612c2d57600080fd5b60008251613a868184602087016139a4565b9190910192915050565b602081526000612c2d60208301846139d056fea164736f6c6343000809000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/boba/gas-price-oracle/src/abi/L1StandardBridge.json b/packages/boba/gas-price-oracle/src/abi/L1StandardBridge.json deleted file mode 100644 index c8bca236d..000000000 --- a/packages/boba/gas-price-oracle/src/abi/L1StandardBridge.json +++ /dev/null @@ -1,421 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "L1StandardBridge", - "sourceName": "contracts/L1/messaging/L1StandardBridge.sol", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "ERC20DepositInitiated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "ERC20WithdrawalFinalized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "ETHDepositInitiated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "ETHWithdrawalFinalized", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "uint32", - "name": "_l2Gas", - "type": "uint32" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "depositERC20", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "uint32", - "name": "_l2Gas", - "type": "uint32" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "depositERC20To", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "_l2Gas", - "type": "uint32" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "depositETH", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint32", - "name": "_l2Gas", - "type": "uint32" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "depositETHTo", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "deposits", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "donateETH", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "finalizeERC20Withdrawal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "finalizeETHWithdrawal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l1messenger", - "type": "address" - }, - { - "internalType": "address", - "name": "_l2TokenBridge", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "l2TokenBridge", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "messenger", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b0319169055611975806100306000396000f3fe6080604052600436106100c05760003560e01c80638b4c40b0116100745780639a2ac6d51161004e5780639a2ac6d514610288578063a9f9e6751461029b578063b1a1a882146102bb57600080fd5b80638b4c40b0146101375780638f601f661461021557806391c49bf81461025b57600080fd5b8063485cc955116100a5578063485cc955146101b557806358a997f6146101d5578063838b2520146101f557600080fd5b80631532ec341461013e5780633cb747bf1461015e57600080fd5b3661013957333b156101195760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f41000000000000000000000000000000000060448201526064015b60405180910390fd5b61013733336213d620604051806020016040528060008152506102ce565b005b600080fd5b34801561014a57600080fd5b50610137610159366004611357565b61041a565b34801561016a57600080fd5b5060005461018b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101c157600080fd5b506101376101d03660046113ca565b610790565b3480156101e157600080fd5b506101376101f036600461141c565b61086f565b34801561020157600080fd5b5061013761021036600461149f565b6108d6565b34801561022157600080fd5b5061024d6102303660046113ca565b600260209081526000928352604080842090915290825290205481565b6040519081526020016101ac565b34801561026757600080fd5b5060015461018b9073ffffffffffffffffffffffffffffffffffffffff1681565b610137610296366004611535565b6108ef565b3480156102a757600080fd5b506101376102b6366004611598565b610937565b6101376102c9366004611611565b610c59565b600063662a633a60e01b600073420000000000000000000000000000000000000687873487604051602401610308969594939291906116da565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526001549091506103ac9073ffffffffffffffffffffffffffffffffffffffff168483610cef565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f35d79ab81f2b2017e19afb5c5571778877782d7a8786f5907f93b0f4702f4f23348560405161040b929190611735565b60405180910390a35050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1661045260005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104f25760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610110565b8073ffffffffffffffffffffffffffffffffffffffff1661052860005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b15801561056d57600080fd5b505afa158015610581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a5919061174e565b73ffffffffffffffffffffffffffffffffffffffff161461062e5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610110565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff8716908690604051610665919061176b565b60006040518083038185875af1925050503d80600081146106a2576040519150601f19603f3d011682016040523d82523d6000602084013e6106a7565b606091505b505090508061071e5760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c65640000000000000000000000006064820152608401610110565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f2ac69ee804d9a7a0984249f508dfab7cb2534b465b6ce1580f99a38ba9c5e63187878760405161077f939291906117d0565b60405180910390a350505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff161561081c5760405162461bcd60e51b815260206004820152602660248201527f436f6e74726163742068617320616c7265616479206265656e20696e6974696160448201527f6c697a65642e00000000000000000000000000000000000000000000000000006064820152608401610110565b6000805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560018054929093169116179055565b333b156108be5760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f4100000000000000000000000000000000006044820152606401610110565b6108ce8686333388888888610d77565b505050505050565b6108e68787338888888888610d77565b50505050505050565b61093133858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102ce92505050565b50505050565b60015473ffffffffffffffffffffffffffffffffffffffff1661096f60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a0f5760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610110565b8073ffffffffffffffffffffffffffffffffffffffff16610a4560005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015610a8a57600080fd5b505afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac2919061174e565b73ffffffffffffffffffffffffffffffffffffffff1614610b4b5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610110565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600260209081526040808320938b1683529290522054610b89908590611822565b73ffffffffffffffffffffffffffffffffffffffff808a166000818152600260209081526040808320948d1683529390529190912091909155610bcd908686610f27565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b388888888604051610c479493929190611839565b60405180910390a45050505050505050565b333b15610ca85760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f4100000000000000000000000000000000006044820152606401610110565b610cea33338585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102ce92505050565b505050565b6000546040517f3dbb202b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633dbb202b90610d4990869085908790600401611879565b600060405180830381600087803b158015610d6357600080fd5b505af11580156108e6573d6000803e3d6000fd5b610d9973ffffffffffffffffffffffffffffffffffffffff8916873087610ffb565b600063662a633a60e01b89898989898888604051602401610dc097969594939291906118be565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152600154909150610e649073ffffffffffffffffffffffffffffffffffffffff168583610cef565b73ffffffffffffffffffffffffffffffffffffffff808a166000908152600260209081526040808320938c1683529290522054610ea290869061191b565b73ffffffffffffffffffffffffffffffffffffffff808b1660008181526002602090815260408083208e86168085529252918290209490945551918a1692917f718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d039690610f14908b908b908a908a90611839565b60405180910390a4505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610cea9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611059565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526109319085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610f79565b60006110bb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661114b9092919063ffffffff16565b805190915015610cea57808060200190518101906110d99190611933565b610cea5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610110565b606061115a8484600085611164565b90505b9392505050565b6060824710156111dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610110565b843b61122a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610110565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611253919061176b565b60006040518083038185875af1925050503d8060008114611290576040519150601f19603f3d011682016040523d82523d6000602084013e611295565b606091505b50915091506112a58282866112b0565b979650505050505050565b606083156112bf57508161115d565b8251156112cf5782518084602001fd5b8160405162461bcd60e51b81526004016101109190611955565b73ffffffffffffffffffffffffffffffffffffffff8116811461130b57600080fd5b50565b60008083601f84011261132057600080fd5b50813567ffffffffffffffff81111561133857600080fd5b60208301915083602082850101111561135057600080fd5b9250929050565b60008060008060006080868803121561136f57600080fd5b853561137a816112e9565b9450602086013561138a816112e9565b935060408601359250606086013567ffffffffffffffff8111156113ad57600080fd5b6113b98882890161130e565b969995985093965092949392505050565b600080604083850312156113dd57600080fd5b82356113e8816112e9565b915060208301356113f8816112e9565b809150509250929050565b803563ffffffff8116811461141757600080fd5b919050565b60008060008060008060a0878903121561143557600080fd5b8635611440816112e9565b95506020870135611450816112e9565b94506040870135935061146560608801611403565b9250608087013567ffffffffffffffff81111561148157600080fd5b61148d89828a0161130e565b979a9699509497509295939492505050565b600080600080600080600060c0888a0312156114ba57600080fd5b87356114c5816112e9565b965060208801356114d5816112e9565b955060408801356114e5816112e9565b9450606088013593506114fa60808901611403565b925060a088013567ffffffffffffffff81111561151657600080fd5b6115228a828b0161130e565b989b979a50959850939692959293505050565b6000806000806060858703121561154b57600080fd5b8435611556816112e9565b935061156460208601611403565b9250604085013567ffffffffffffffff81111561158057600080fd5b61158c8782880161130e565b95989497509550505050565b600080600080600080600060c0888a0312156115b357600080fd5b87356115be816112e9565b965060208801356115ce816112e9565b955060408801356115de816112e9565b945060608801356115ee816112e9565b93506080880135925060a088013567ffffffffffffffff81111561151657600080fd5b60008060006040848603121561162657600080fd5b61162f84611403565b9250602084013567ffffffffffffffff81111561164b57600080fd5b6116578682870161130e565b9497909650939450505050565b60005b8381101561167f578181015183820152602001611667565b838111156109315750506000910152565b600081518084526116a8816020860160208601611664565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a083015261172960c0830184611690565b98975050505050505050565b82815260406020820152600061115a6040830184611690565b60006020828403121561176057600080fd5b815161115d816112e9565b6000825161177d818460208701611664565b9190910192915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8381526040602082015260006117ea604083018486611787565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611834576118346117f3565b500390565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015260606040820152600061186f606083018486611787565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526060602082015260006118a86060830185611690565b905063ffffffff83166040830152949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a083015261190e60c083018486611787565b9998505050505050505050565b6000821982111561192e5761192e6117f3565b500190565b60006020828403121561194557600080fd5b8151801515811461115d57600080fd5b60208152600061115d602083018461169056fea164736f6c6343000809000a", - "deployedBytecode": "0x6080604052600436106100c05760003560e01c80638b4c40b0116100745780639a2ac6d51161004e5780639a2ac6d514610288578063a9f9e6751461029b578063b1a1a882146102bb57600080fd5b80638b4c40b0146101375780638f601f661461021557806391c49bf81461025b57600080fd5b8063485cc955116100a5578063485cc955146101b557806358a997f6146101d5578063838b2520146101f557600080fd5b80631532ec341461013e5780633cb747bf1461015e57600080fd5b3661013957333b156101195760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f41000000000000000000000000000000000060448201526064015b60405180910390fd5b61013733336213d620604051806020016040528060008152506102ce565b005b600080fd5b34801561014a57600080fd5b50610137610159366004611357565b61041a565b34801561016a57600080fd5b5060005461018b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101c157600080fd5b506101376101d03660046113ca565b610790565b3480156101e157600080fd5b506101376101f036600461141c565b61086f565b34801561020157600080fd5b5061013761021036600461149f565b6108d6565b34801561022157600080fd5b5061024d6102303660046113ca565b600260209081526000928352604080842090915290825290205481565b6040519081526020016101ac565b34801561026757600080fd5b5060015461018b9073ffffffffffffffffffffffffffffffffffffffff1681565b610137610296366004611535565b6108ef565b3480156102a757600080fd5b506101376102b6366004611598565b610937565b6101376102c9366004611611565b610c59565b600063662a633a60e01b600073420000000000000000000000000000000000000687873487604051602401610308969594939291906116da565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526001549091506103ac9073ffffffffffffffffffffffffffffffffffffffff168483610cef565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f35d79ab81f2b2017e19afb5c5571778877782d7a8786f5907f93b0f4702f4f23348560405161040b929190611735565b60405180910390a35050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1661045260005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104f25760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610110565b8073ffffffffffffffffffffffffffffffffffffffff1661052860005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b15801561056d57600080fd5b505afa158015610581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a5919061174e565b73ffffffffffffffffffffffffffffffffffffffff161461062e5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610110565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff8716908690604051610665919061176b565b60006040518083038185875af1925050503d80600081146106a2576040519150601f19603f3d011682016040523d82523d6000602084013e6106a7565b606091505b505090508061071e5760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c65640000000000000000000000006064820152608401610110565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f2ac69ee804d9a7a0984249f508dfab7cb2534b465b6ce1580f99a38ba9c5e63187878760405161077f939291906117d0565b60405180910390a350505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff161561081c5760405162461bcd60e51b815260206004820152602660248201527f436f6e74726163742068617320616c7265616479206265656e20696e6974696160448201527f6c697a65642e00000000000000000000000000000000000000000000000000006064820152608401610110565b6000805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560018054929093169116179055565b333b156108be5760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f4100000000000000000000000000000000006044820152606401610110565b6108ce8686333388888888610d77565b505050505050565b6108e68787338888888888610d77565b50505050505050565b61093133858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102ce92505050565b50505050565b60015473ffffffffffffffffffffffffffffffffffffffff1661096f60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a0f5760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610110565b8073ffffffffffffffffffffffffffffffffffffffff16610a4560005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015610a8a57600080fd5b505afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac2919061174e565b73ffffffffffffffffffffffffffffffffffffffff1614610b4b5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610110565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600260209081526040808320938b1683529290522054610b89908590611822565b73ffffffffffffffffffffffffffffffffffffffff808a166000818152600260209081526040808320948d1683529390529190912091909155610bcd908686610f27565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b388888888604051610c479493929190611839565b60405180910390a45050505050505050565b333b15610ca85760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f4100000000000000000000000000000000006044820152606401610110565b610cea33338585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102ce92505050565b505050565b6000546040517f3dbb202b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633dbb202b90610d4990869085908790600401611879565b600060405180830381600087803b158015610d6357600080fd5b505af11580156108e6573d6000803e3d6000fd5b610d9973ffffffffffffffffffffffffffffffffffffffff8916873087610ffb565b600063662a633a60e01b89898989898888604051602401610dc097969594939291906118be565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152600154909150610e649073ffffffffffffffffffffffffffffffffffffffff168583610cef565b73ffffffffffffffffffffffffffffffffffffffff808a166000908152600260209081526040808320938c1683529290522054610ea290869061191b565b73ffffffffffffffffffffffffffffffffffffffff808b1660008181526002602090815260408083208e86168085529252918290209490945551918a1692917f718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d039690610f14908b908b908a908a90611839565b60405180910390a4505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610cea9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611059565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526109319085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610f79565b60006110bb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661114b9092919063ffffffff16565b805190915015610cea57808060200190518101906110d99190611933565b610cea5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610110565b606061115a8484600085611164565b90505b9392505050565b6060824710156111dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610110565b843b61122a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610110565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611253919061176b565b60006040518083038185875af1925050503d8060008114611290576040519150601f19603f3d011682016040523d82523d6000602084013e611295565b606091505b50915091506112a58282866112b0565b979650505050505050565b606083156112bf57508161115d565b8251156112cf5782518084602001fd5b8160405162461bcd60e51b81526004016101109190611955565b73ffffffffffffffffffffffffffffffffffffffff8116811461130b57600080fd5b50565b60008083601f84011261132057600080fd5b50813567ffffffffffffffff81111561133857600080fd5b60208301915083602082850101111561135057600080fd5b9250929050565b60008060008060006080868803121561136f57600080fd5b853561137a816112e9565b9450602086013561138a816112e9565b935060408601359250606086013567ffffffffffffffff8111156113ad57600080fd5b6113b98882890161130e565b969995985093965092949392505050565b600080604083850312156113dd57600080fd5b82356113e8816112e9565b915060208301356113f8816112e9565b809150509250929050565b803563ffffffff8116811461141757600080fd5b919050565b60008060008060008060a0878903121561143557600080fd5b8635611440816112e9565b95506020870135611450816112e9565b94506040870135935061146560608801611403565b9250608087013567ffffffffffffffff81111561148157600080fd5b61148d89828a0161130e565b979a9699509497509295939492505050565b600080600080600080600060c0888a0312156114ba57600080fd5b87356114c5816112e9565b965060208801356114d5816112e9565b955060408801356114e5816112e9565b9450606088013593506114fa60808901611403565b925060a088013567ffffffffffffffff81111561151657600080fd5b6115228a828b0161130e565b989b979a50959850939692959293505050565b6000806000806060858703121561154b57600080fd5b8435611556816112e9565b935061156460208601611403565b9250604085013567ffffffffffffffff81111561158057600080fd5b61158c8782880161130e565b95989497509550505050565b600080600080600080600060c0888a0312156115b357600080fd5b87356115be816112e9565b965060208801356115ce816112e9565b955060408801356115de816112e9565b945060608801356115ee816112e9565b93506080880135925060a088013567ffffffffffffffff81111561151657600080fd5b60008060006040848603121561162657600080fd5b61162f84611403565b9250602084013567ffffffffffffffff81111561164b57600080fd5b6116578682870161130e565b9497909650939450505050565b60005b8381101561167f578181015183820152602001611667565b838111156109315750506000910152565b600081518084526116a8816020860160208601611664565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a083015261172960c0830184611690565b98975050505050505050565b82815260406020820152600061115a6040830184611690565b60006020828403121561176057600080fd5b815161115d816112e9565b6000825161177d818460208701611664565b9190910192915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8381526040602082015260006117ea604083018486611787565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611834576118346117f3565b500390565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015260606040820152600061186f606083018486611787565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526060602082015260006118a86060830185611690565b905063ffffffff83166040830152949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a083015261190e60c083018486611787565b9998505050505050505050565b6000821982111561192e5761192e6117f3565b500190565b60006020828403121561194557600080fd5b8151801515811461115d57600080fd5b60208152600061115d602083018461169056fea164736f6c6343000809000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/boba/gas-price-oracle/src/abi/L2LiquidityPool.json b/packages/boba/gas-price-oracle/src/abi/L2LiquidityPool.json deleted file mode 100644 index ca8e095f2..000000000 --- a/packages/boba/gas-price-oracle/src/abi/L2LiquidityPool.json +++ /dev/null @@ -1,791 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "L2LiquidityPool", - "sourceName": "contracts/LP/L2LiquidityPool.sol", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "AddLiquidity", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "receivedAmount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "ClientDepositL2", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "userRewardFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "ownerRewardFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "totalFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "ClientPayL2", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "userRewardFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "ownerRewardFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "totalFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "ClientPayL2Settlement", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "receiver", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "OwnerRecoverFee", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Paused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Unpaused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "receiver", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "WithdrawLiquidity", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "receiver", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "WithdrawReward", - "type": "event" - }, - { - "inputs": [], - "name": "DAO", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "DEFAULT_FINALIZE_WITHDRAWAL_L1_GAS", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "L1LiquidityPoolAddress", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "addLiquidity", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "clientDepositL2", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address payable", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "clientPayL2", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address payable", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "clientPayL2Settlement", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_extraGas", - "type": "uint256" - } - ], - "name": "configureExtraGasRelay", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_userRewardFeeRate", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_ownerRewardFeeRate", - "type": "uint256" - } - ], - "name": "configureFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_userRewardFeeRate", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_ownerRewardFeeRate", - "type": "uint256" - } - ], - "name": "configureFeeExits", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "_l1GasFee", - "type": "uint32" - } - ], - "name": "configureGas", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "extraGasRelay", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getFinalizeDepositL1Gas", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l2CrossDomainMessenger", - "type": "address" - }, - { - "internalType": "address", - "name": "_L1LiquidityPoolAddress", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "messenger", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - } - ], - "name": "ownerRecoverFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "ownerRewardFeeRate", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "paused", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "poolInfo", - "outputs": [ - { - "internalType": "address", - "name": "l1TokenAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "l2TokenAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "userDepositAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastAccUserReward", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "accUserReward", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "accUserRewardPerShare", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "accOwnerReward", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "startTime", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l1TokenAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "_l2TokenAddress", - "type": "address" - } - ], - "name": "registerPool", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_newDAO", - "type": "address" - } - ], - "name": "transferDAORole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "unpause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "updateUserRewardPerShare", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "userInfo", - "outputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "rewardDebt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "pendingReward", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "userRewardFeeRate", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "internalType": "address payable", - "name": "_to", - "type": "address" - } - ], - "name": "withdrawLiquidity", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - } - ], - "name": "withdrawReward", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b0319169055613ae7806100306000396000f3fe6080604052600436106101cd5760003560e01c806368be42ca116100f7578063997d73df11610095578063c95f9d0e11610064578063c95f9d0e146105e9578063d1dd871a146105fc578063f2fde38b1461061c578063f48712681461063c57600080fd5b8063997d73df146104dd5780639a7b5f11146104f8578063b5e241f1146105a9578063bd2d1cab146105c957600080fd5b806381e6bdac116100d157806381e6bdac146104605780638456cb59146104805780638da5cb5b1461049557806398fabd3a146104b557600080fd5b806368be42ca1461040a57806370ac31801461042a5780637286e5e51461044057600080fd5b80633f4ba83a1161016f5780634c7d0def1161013e5780634c7d0def146103755780635c975abb14610395578063650a767b146103b85780636854e22b146103d857600080fd5b80633f4ba83a1461030a578063435fd5711461031f578063485cc9551461033557806349561dc41461035557600080fd5b80631d00a771116101ab5780631d00a7711461029357806334636648146102a6578063358fc07e146102c65780633cb747bf146102ea57600080fd5b80630f208beb146101d257806312f54c1a1461023957806316a8dda71461025b575b600080fd5b3480156101de57600080fd5b506102196101ed366004613741565b609860209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060015b60405180910390f35b34801561024557600080fd5b5061025961025436600461377a565b61065c565b005b34801561026757600080fd5b50609a5461027b906001600160a01b031681565b6040516001600160a01b039091168152602001610230565b6102596102a1366004613797565b6106f2565b3480156102b257600080fd5b506102596102c13660046137bc565b610a28565b3480156102d257600080fd5b506102dc609c5481565b604051908152602001610230565b3480156102f657600080fd5b5060005461027b906001600160a01b031681565b34801561031657600080fd5b50610259610b4b565b34801561032b57600080fd5b506102dc609b5481565b34801561034157600080fd5b50610259610350366004613741565b610bc3565b34801561036157600080fd5b506102596103703660046137e2565b610e96565b34801561038157600080fd5b50610259610390366004613824565b61116c565b3480156103a157600080fd5b5060655460ff166040519015158152602001610230565b3480156103c457600080fd5b506102596103d3366004613846565b61135c565b3480156103e457600080fd5b50609d546103f59063ffffffff1681565b60405163ffffffff9091168152602001610230565b34801561041657600080fd5b506102596104253660046137e2565b6117c0565b34801561043657600080fd5b506102dc609e5481565b34801561044c57600080fd5b5061025961045b366004613741565b611aad565b34801561046c57600080fd5b5061025961047b3660046137e2565b611cdc565b34801561048c57600080fd5b50610259611f5b565b3480156104a157600080fd5b5060995461027b906001600160a01b031681565b3480156104c157600080fd5b50609d5461027b9064010000000090046001600160a01b031681565b3480156104e957600080fd5b50609d5463ffffffff166103f5565b34801561050457600080fd5b5061056361051336600461377a565b609760205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701546001600160a01b03968716979590961695939492939192909188565b604080516001600160a01b03998a168152989097166020890152958701949094526060860192909252608085015260a084015260c083015260e082015261010001610230565b3480156105b557600080fd5b506102596105c436600461387d565b611fd1565b3480156105d557600080fd5b506102596105e4366004613846565b6120c2565b6102596105f7366004613797565b6126a7565b34801561060857600080fd5b50610259610617366004613824565b6129b3565b34801561062857600080fd5b5061025961063736600461377a565b612b22565b34801561064857600080fd5b5061025961065736600461377a565b612c45565b6001600160a01b03811660009081526097602052604090206004810154600382015410156106ee5760006106a182600301548360040154612d6590919063ffffffff16565b905081600201546000146106e25760028201546106dc906106d1906106cb8464e8d4a51000612d78565b90612d84565b600584015490612d90565b60058301555b50600481015460038201555b5050565b60655460ff161561074a5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064015b60405180910390fd5b60005a9050609e5481116107c65760405162461bcd60e51b815260206004820152602860248201527f496e73756666696369656e742047617320466f7220612052656c61792054726160448201527f6e73616374696f6e0000000000000000000000000000000000000000000000006064820152608401610741565b60006107dd609e5483612d6590919063ffffffff16565b905060005b815a11156107fc57806107f4816138c5565b9150506107e2565b3415158061082757506001600160a01b03841673420000000000000000000000000000000000000614155b6108735760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f7272656374000000000000000000000000000000006044820152606401610741565b34156108945734945073420000000000000000000000000000000000000693505b6001600160a01b03808516600090815260976020526040902060018101549091166109015760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b6001600160a01b0385167342000000000000000000000000000000000000061461093a5761093a6001600160a01b038616333089612d9c565b805460408051336024820152604481018990526001600160a01b039283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcf26fb1b00000000000000000000000000000000000000000000000000000000179052609a54609d5491926109d79291169063ffffffff165b83612e71565b60408051338152602081018990526001600160a01b0388168183015290517fe57500de6b6dcf76b201fef514aca6501809e3b700c9fbd5e803567c66edf54c9181900360600190a150505050505050565b6099546001600160a01b0316331480610a4a57506099546001600160a01b0316155b610a965760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b609a546001600160a01b0316610b145760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b6099546001600160a01b0316331480610b6d57506099546001600160a01b0316155b610bb95760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b610bc1612ef5565b565b6099546001600160a01b0316331480610be557506099546001600160a01b0316155b610c315760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b609a546001600160a01b031615610c8a5760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420686173206265656e20696e697469616c697a65640000006044820152606401610741565b6000547501000000000000000000000000000000000000000000900460ff1680610ccf575060005474010000000000000000000000000000000000000000900460ff16155b610d415760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff16158015610da857600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b0386811691909117909255609a80548216928516929092179091556099805433921682179055609d80547fffffffffffffffff0000000000000000000000000000000000000000ffffffff16640100000000909202919091179055610e3e6023600f6129b3565b610e4a620186a0610a28565b610e52612faf565b610e5a6130ff565b610e62613276565b8015610e9157600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b505050565b60655460ff1615610ee95760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b0380831660009081526097602090815260408083206098835281842033855290925290912060018201549192909116610f6b5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b6000610fad610fa28360010154610f9c64e8d4a510006106cb88600501548860000154612d7890919063ffffffff16565b90612d65565b600284015490612d90565b905085811015610fff5760405162461bcd60e51b815260206004820152601560248201527f576974686472617720526577617264204572726f7200000000000000000000006044820152606401610741565b6110098187612d65565b6002830155600583015482546110299164e8d4a51000916106cb91612d78565b60018301556001600160a01b0385167342000000000000000000000000000000000000061461106b576110666001600160a01b03861685886133c9565b611114565b6000846001600160a01b03166108fc88604051600060405180830381858888f193505050503d80600081146110bc576040519150601f19603f3d011682016040523d82523d6000602084013e6110c1565b606091505b50509050806111125760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080513381526001600160a01b0386811660208301528183018990528716606082015290517f3cb7cb475a33eda02ee6e719b6c2fc0c899157cfc6f098daf545354dbbce41ec9181900360800190a1505050505050565b609d5464010000000090046001600160a01b031633146111ce5760405162461bcd60e51b815260206004820152601560248201527f63616c6c6572206973206e6f74207468652044414f00000000000000000000006044820152606401610741565b609a546001600160a01b031661124c5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b6032821115801561125e575060328111155b6112d05760405162461bcd60e51b815260206004820152603c60248201527f7573657220616e64206f776e6572206665652072617465732073686f756c642060448201527f6265206c6f776572207468616e20352070657263656e742065616368000000006064820152608401610741565b604080516024810184905260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd1dd871a00000000000000000000000000000000000000000000000000000000179052609a54609d54610e91916001600160a01b03169063ffffffff166109d1565b609a546001600160a01b03166113da5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609a546001600160a01b03166113f86000546001600160a01b031690565b6001600160a01b0316336001600160a01b03161461147e5760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610741565b806001600160a01b031661149a6000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156114d257600080fd5b505afa1580156114e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150a91906138fe565b6001600160a01b0316146115865760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610741565b60655460ff16156115d95760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b0382166000908152609760205260408120609b5490919061160a906103e8906106cb908890612d78565b905060006116296103e86106cb609c5489612d7890919063ffffffff16565b905060006116378383612d90565b905060006116458883612d65565b60048601549091506116579085612d90565b6004860155600685015461166b9084612d90565b60068601556001600160a01b038716734200000000000000000000000000000000000006146116ad576116a86001600160a01b0388168a836133c9565b611756565b6000896001600160a01b03166108fc83604051600060405180830381858888f193505050503d80600081146116fe576040519150601f19603f3d011682016040523d82523d6000602084013e611703565b606091505b50509050806117545760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080516001600160a01b038b81168252602082018490528183018790526060820186905260808201859052891660a082015290517ff1068421680e00dfc2c4f3fc20c7f565bf1ec365420e7544365bae13d5cbc8c89181900360c00190a1505050505050505050565b60655460ff16156118135760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b03808316600090815260976020908152604080832060988352818420338552909252909120600182015491929091166118955760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b80548511156118e65760405162461bcd60e51b815260206004820152600e60248201527f5769746864726177204572726f720000000000000000000000000000000000006044820152606401610741565b6118ef8461065c565b61192961191e8260010154610f9c64e8d4a510006106cb87600501548760000154612d7890919063ffffffff16565b600283015490612d90565b6002820155805461193a9086612d65565b80825560058301546119579164e8d4a51000916106cb9190612d78565b6001820155600282015461196b9086612d65565b60028301556001600160a01b038416734200000000000000000000000000000000000006146119ad576119a86001600160a01b03851684876133c9565b611a56565b6000836001600160a01b03166108fc87604051600060405180830381858888f193505050503d80600081146119fe576040519150601f19603f3d011682016040523d82523d6000602084013e611a03565b606091505b5050905080611a545760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080513381526001600160a01b0385811660208301528183018890528616606082015290517ffa2e8fcf14fd6ea11b6ebe7caf7de210198b8fe1eaf0e06d19f8d87c73860c469181900360800190a15050505050565b6099546001600160a01b0316331480611acf57506099546001600160a01b0316155b611b1b5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b806001600160a01b0316826001600160a01b03161415611ba35760405162461bcd60e51b815260206004820152602860248201527f6c3120616e64206c3220746f6b656e206164647265737365732063616e6e6f7460448201527f2062652073616d650000000000000000000000000000000000000000000000006064820152608401610741565b6001600160a01b038082166000908152609760205260409020600181015490911615611c115760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e204164647265737320416c726561647920526567697374657264006044820152606401610741565b5060408051610100810182526001600160a01b03938416815291831660208084018281526000858501818152606087018281526080880183815260a0890184815260c08a018581524260e08c0190815298865260979097529790932097518854908a167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178955935160018901805491909a16941693909317909755955160028601555160038501559351600484015590516005830155915160068201559051600790910155565b6099546001600160a01b0316331480611cfe57506099546001600160a01b0316155b611d4a5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b6001600160a01b0380831660009081526097602052604090206001810154909116611db75760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f742052656769737465720000000000006044820152606401610741565b8381600601541015611e0b5760405162461bcd60e51b815260206004820152601b60248201527f4f776e657220526577617264205769746864726177204572726f7200000000006044820152606401610741565b6006810154611e1a9085612d65565b60068201556001600160a01b03831673420000000000000000000000000000000000000614611e5c57611e576001600160a01b03841683866133c9565b611f05565b6000826001600160a01b03166108fc86604051600060405180830381858888f193505050503d8060008114611ead576040519150601f19603f3d011682016040523d82523d6000602084013e611eb2565b606091505b5050905080611f035760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080513381526001600160a01b0384811660208301528183018790528516606082015290517f3cb71b9a1fb601579f96812b9f86ab5e914fc3e54c98d5f84d95581b2b9884f39181900360800190a150505050565b6099546001600160a01b0316331480611f7d57506099546001600160a01b0316155b611fc95760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b610bc1613412565b6099546001600160a01b0316331480611ff357506099546001600160a01b0316155b61203f5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b609a546001600160a01b03166120bd5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609e55565b609a546001600160a01b03166121405760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609a546001600160a01b031661215e6000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316146121e45760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610741565b806001600160a01b03166122006000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b15801561223857600080fd5b505afa15801561224c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227091906138fe565b6001600160a01b0316146122ec5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610741565b60655460ff161561233f5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b0382166000908152609760205260408120609b54829061236f906103e8906106cb908990612d78565b9050600061238e6103e86106cb609c548a612d7890919063ffffffff16565b9050600061239c8383612d90565b905060006123aa8983612d65565b90506001600160a01b038816734200000000000000000000000000000000000006146124b1576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038916906370a082319060240160206040518083038186803b15801561242857600080fd5b505afa15801561243c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612460919061391b565b8111156124705760019550612592565b600485015461247f9085612d90565b600486015560068501546124939084612d90565b60068601556124ac6001600160a01b0389168b836133c9565b612592565b478111156124c25760019550612592565b60048501546124d19085612d90565b600486015560068501546124e59084612d90565b60068601556040516000906001600160a01b038c16906108fc90849084818181858888f193505050503d806000811461253a576040519150601f19603f3d011682016040523d82523d6000602084013e61253f565b606091505b50509050806125905760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b851561263b578454604080516001600160a01b038d81166024830152604482018d90529283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f53174cc100000000000000000000000000000000000000000000000000000000179052609a54609d5491926126359291169063ffffffff166109d1565b5061269b565b604080516001600160a01b038c811682526020820184905281830187905260608201869052608082018590528a1660a082015290517fedb4d3b4b55168608412f15db11c00859915842963c31b1f08d910a38e1d6aa49181900360c00190a15b50505050505050505050565b600260015414156126fa5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610741565b600260015560655460ff16156127525760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b3415158061277d57506001600160a01b03811673420000000000000000000000000000000000000614155b6127c95760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f7272656374000000000000000000000000000000006044820152606401610741565b34156127e957503490507342000000000000000000000000000000000000065b6001600160a01b038082166000908152609760209081526040808320609883528184203385529092529091206001820154919290911661286b5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b6128748361065c565b8054156128e0576128aa61191e8260010154610f9c64e8d4a510006106cb87600501548760000154612d7890919063ffffffff16565b6002820155600582015481546128d69164e8d4a51000916106cb91906128d09089612d90565b90612d78565b6001820155612906565b61290064e8d4a510006106cb846005015487612d7890919063ffffffff16565b60018201555b6001600160a01b0383167342000000000000000000000000000000000000061461293f5761293f6001600160a01b038416333087612d9c565b805461294b9085612d90565b8155600282015461295c9085612d90565b600283015560408051338152602081018690526001600160a01b0385168183015290517f5852d1d46e583f7e92c2a572221de0e681d82ef71f489847e056b9445c0147369181900360600190a15050600180555050565b609d5464010000000090046001600160a01b03163314612a155760405162461bcd60e51b815260206004820152601560248201527f63616c6c6572206973206e6f74207468652044414f00000000000000000000006044820152606401610741565b609a546001600160a01b0316612a935760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b60328211158015612aa5575060328111155b612b175760405162461bcd60e51b815260206004820152603c60248201527f7573657220616e64206f776e6572206665652072617465732073686f756c642060448201527f6265206c6f776572207468616e20352070657263656e742065616368000000006064820152608401610741565b609b91909155609c55565b6099546001600160a01b0316331480612b4457506099546001600160a01b0316155b612b905760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b6001600160a01b038116612c0b5760405162461bcd60e51b8152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610741565b609980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b609d5464010000000090046001600160a01b03163314612ca75760405162461bcd60e51b815260206004820152601560248201527f63616c6c6572206973206e6f74207468652044414f00000000000000000000006044820152606401610741565b6001600160a01b038116612d235760405162461bcd60e51b815260206004820152602a60248201527f4e65772044414f20616464726573732063616e6e6f7420626520746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610741565b609d80546001600160a01b03909216640100000000027fffffffffffffffff0000000000000000000000000000000000000000ffffffff909216919091179055565b6000612d718284613934565b9392505050565b6000612d71828461394b565b6000612d718284613988565b6000612d7182846139c3565b6040516001600160a01b0380851660248301528316604482015260648101829052612e6b9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526134b8565b50505050565b6000546040517f3dbb202b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633dbb202b90612ebe90869085908790600401613a51565b600060405180830381600087803b158015612ed857600080fd5b505af1158015612eec573d6000803e3d6000fd5b50505050505050565b60655460ff16612f475760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610741565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000547501000000000000000000000000000000000000000000900460ff1680612ff4575060005474010000000000000000000000000000000000000000900460ff16155b6130665760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff161580156130cd57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b80156130fc57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b50565b6000547501000000000000000000000000000000000000000000900460ff1680613144575060005474010000000000000000000000000000000000000000900460ff16155b6131b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff1615801561321d57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905580156130fc57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6000547501000000000000000000000000000000000000000000900460ff16806132bb575060005474010000000000000000000000000000000000000000900460ff16155b61332d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff1615801561339457600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6001805580156130fc57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6040516001600160a01b038316602482015260448101829052610e919084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612de9565b60655460ff16156134655760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612f923390565b600061350d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661359d9092919063ffffffff16565b805190915015610e91578080602001905181019061352b9190613a89565b610e915760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610741565b60606135ac84846000856135b4565b949350505050565b60608247101561362c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610741565b843b61367a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610741565b600080866001600160a01b031685876040516136969190613aab565b60006040518083038185875af1925050503d80600081146136d3576040519150601f19603f3d011682016040523d82523d6000602084013e6136d8565b606091505b50915091506136e88282866136f3565b979650505050505050565b60608315613702575081612d71565b8251156137125782518084602001fd5b8160405162461bcd60e51b81526004016107419190613ac7565b6001600160a01b03811681146130fc57600080fd5b6000806040838503121561375457600080fd5b823561375f8161372c565b9150602083013561376f8161372c565b809150509250929050565b60006020828403121561378c57600080fd5b8135612d718161372c565b600080604083850312156137aa57600080fd5b82359150602083013561376f8161372c565b6000602082840312156137ce57600080fd5b813563ffffffff81168114612d7157600080fd5b6000806000606084860312156137f757600080fd5b8335925060208401356138098161372c565b915060408401356138198161372c565b809150509250925092565b6000806040838503121561383757600080fd5b50508035926020909101359150565b60008060006060848603121561385b57600080fd5b83356138668161372c565b92506020840135915060408401356138198161372c565b60006020828403121561388f57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156138f7576138f7613896565b5060010190565b60006020828403121561391057600080fd5b8151612d718161372c565b60006020828403121561392d57600080fd5b5051919050565b60008282101561394657613946613896565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561398357613983613896565b500290565b6000826139be577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082198211156139d6576139d6613896565b500190565b60005b838110156139f65781810151838201526020016139de565b83811115612e6b5750506000910152565b60008151808452613a1f8160208601602086016139db565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6001600160a01b0384168152606060208201526000613a736060830185613a07565b905063ffffffff83166040830152949350505050565b600060208284031215613a9b57600080fd5b81518015158114612d7157600080fd5b60008251613abd8184602087016139db565b9190910192915050565b602081526000612d716020830184613a0756fea164736f6c6343000809000a", - "deployedBytecode": "0x6080604052600436106101cd5760003560e01c806368be42ca116100f7578063997d73df11610095578063c95f9d0e11610064578063c95f9d0e146105e9578063d1dd871a146105fc578063f2fde38b1461061c578063f48712681461063c57600080fd5b8063997d73df146104dd5780639a7b5f11146104f8578063b5e241f1146105a9578063bd2d1cab146105c957600080fd5b806381e6bdac116100d157806381e6bdac146104605780638456cb59146104805780638da5cb5b1461049557806398fabd3a146104b557600080fd5b806368be42ca1461040a57806370ac31801461042a5780637286e5e51461044057600080fd5b80633f4ba83a1161016f5780634c7d0def1161013e5780634c7d0def146103755780635c975abb14610395578063650a767b146103b85780636854e22b146103d857600080fd5b80633f4ba83a1461030a578063435fd5711461031f578063485cc9551461033557806349561dc41461035557600080fd5b80631d00a771116101ab5780631d00a7711461029357806334636648146102a6578063358fc07e146102c65780633cb747bf146102ea57600080fd5b80630f208beb146101d257806312f54c1a1461023957806316a8dda71461025b575b600080fd5b3480156101de57600080fd5b506102196101ed366004613741565b609860209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060015b60405180910390f35b34801561024557600080fd5b5061025961025436600461377a565b61065c565b005b34801561026757600080fd5b50609a5461027b906001600160a01b031681565b6040516001600160a01b039091168152602001610230565b6102596102a1366004613797565b6106f2565b3480156102b257600080fd5b506102596102c13660046137bc565b610a28565b3480156102d257600080fd5b506102dc609c5481565b604051908152602001610230565b3480156102f657600080fd5b5060005461027b906001600160a01b031681565b34801561031657600080fd5b50610259610b4b565b34801561032b57600080fd5b506102dc609b5481565b34801561034157600080fd5b50610259610350366004613741565b610bc3565b34801561036157600080fd5b506102596103703660046137e2565b610e96565b34801561038157600080fd5b50610259610390366004613824565b61116c565b3480156103a157600080fd5b5060655460ff166040519015158152602001610230565b3480156103c457600080fd5b506102596103d3366004613846565b61135c565b3480156103e457600080fd5b50609d546103f59063ffffffff1681565b60405163ffffffff9091168152602001610230565b34801561041657600080fd5b506102596104253660046137e2565b6117c0565b34801561043657600080fd5b506102dc609e5481565b34801561044c57600080fd5b5061025961045b366004613741565b611aad565b34801561046c57600080fd5b5061025961047b3660046137e2565b611cdc565b34801561048c57600080fd5b50610259611f5b565b3480156104a157600080fd5b5060995461027b906001600160a01b031681565b3480156104c157600080fd5b50609d5461027b9064010000000090046001600160a01b031681565b3480156104e957600080fd5b50609d5463ffffffff166103f5565b34801561050457600080fd5b5061056361051336600461377a565b609760205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701546001600160a01b03968716979590961695939492939192909188565b604080516001600160a01b03998a168152989097166020890152958701949094526060860192909252608085015260a084015260c083015260e082015261010001610230565b3480156105b557600080fd5b506102596105c436600461387d565b611fd1565b3480156105d557600080fd5b506102596105e4366004613846565b6120c2565b6102596105f7366004613797565b6126a7565b34801561060857600080fd5b50610259610617366004613824565b6129b3565b34801561062857600080fd5b5061025961063736600461377a565b612b22565b34801561064857600080fd5b5061025961065736600461377a565b612c45565b6001600160a01b03811660009081526097602052604090206004810154600382015410156106ee5760006106a182600301548360040154612d6590919063ffffffff16565b905081600201546000146106e25760028201546106dc906106d1906106cb8464e8d4a51000612d78565b90612d84565b600584015490612d90565b60058301555b50600481015460038201555b5050565b60655460ff161561074a5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064015b60405180910390fd5b60005a9050609e5481116107c65760405162461bcd60e51b815260206004820152602860248201527f496e73756666696369656e742047617320466f7220612052656c61792054726160448201527f6e73616374696f6e0000000000000000000000000000000000000000000000006064820152608401610741565b60006107dd609e5483612d6590919063ffffffff16565b905060005b815a11156107fc57806107f4816138c5565b9150506107e2565b3415158061082757506001600160a01b03841673420000000000000000000000000000000000000614155b6108735760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f7272656374000000000000000000000000000000006044820152606401610741565b34156108945734945073420000000000000000000000000000000000000693505b6001600160a01b03808516600090815260976020526040902060018101549091166109015760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b6001600160a01b0385167342000000000000000000000000000000000000061461093a5761093a6001600160a01b038616333089612d9c565b805460408051336024820152604481018990526001600160a01b039283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcf26fb1b00000000000000000000000000000000000000000000000000000000179052609a54609d5491926109d79291169063ffffffff165b83612e71565b60408051338152602081018990526001600160a01b0388168183015290517fe57500de6b6dcf76b201fef514aca6501809e3b700c9fbd5e803567c66edf54c9181900360600190a150505050505050565b6099546001600160a01b0316331480610a4a57506099546001600160a01b0316155b610a965760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b609a546001600160a01b0316610b145760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b6099546001600160a01b0316331480610b6d57506099546001600160a01b0316155b610bb95760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b610bc1612ef5565b565b6099546001600160a01b0316331480610be557506099546001600160a01b0316155b610c315760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b609a546001600160a01b031615610c8a5760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420686173206265656e20696e697469616c697a65640000006044820152606401610741565b6000547501000000000000000000000000000000000000000000900460ff1680610ccf575060005474010000000000000000000000000000000000000000900460ff16155b610d415760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff16158015610da857600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b0386811691909117909255609a80548216928516929092179091556099805433921682179055609d80547fffffffffffffffff0000000000000000000000000000000000000000ffffffff16640100000000909202919091179055610e3e6023600f6129b3565b610e4a620186a0610a28565b610e52612faf565b610e5a6130ff565b610e62613276565b8015610e9157600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b505050565b60655460ff1615610ee95760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b0380831660009081526097602090815260408083206098835281842033855290925290912060018201549192909116610f6b5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b6000610fad610fa28360010154610f9c64e8d4a510006106cb88600501548860000154612d7890919063ffffffff16565b90612d65565b600284015490612d90565b905085811015610fff5760405162461bcd60e51b815260206004820152601560248201527f576974686472617720526577617264204572726f7200000000000000000000006044820152606401610741565b6110098187612d65565b6002830155600583015482546110299164e8d4a51000916106cb91612d78565b60018301556001600160a01b0385167342000000000000000000000000000000000000061461106b576110666001600160a01b03861685886133c9565b611114565b6000846001600160a01b03166108fc88604051600060405180830381858888f193505050503d80600081146110bc576040519150601f19603f3d011682016040523d82523d6000602084013e6110c1565b606091505b50509050806111125760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080513381526001600160a01b0386811660208301528183018990528716606082015290517f3cb7cb475a33eda02ee6e719b6c2fc0c899157cfc6f098daf545354dbbce41ec9181900360800190a1505050505050565b609d5464010000000090046001600160a01b031633146111ce5760405162461bcd60e51b815260206004820152601560248201527f63616c6c6572206973206e6f74207468652044414f00000000000000000000006044820152606401610741565b609a546001600160a01b031661124c5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b6032821115801561125e575060328111155b6112d05760405162461bcd60e51b815260206004820152603c60248201527f7573657220616e64206f776e6572206665652072617465732073686f756c642060448201527f6265206c6f776572207468616e20352070657263656e742065616368000000006064820152608401610741565b604080516024810184905260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd1dd871a00000000000000000000000000000000000000000000000000000000179052609a54609d54610e91916001600160a01b03169063ffffffff166109d1565b609a546001600160a01b03166113da5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609a546001600160a01b03166113f86000546001600160a01b031690565b6001600160a01b0316336001600160a01b03161461147e5760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610741565b806001600160a01b031661149a6000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156114d257600080fd5b505afa1580156114e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150a91906138fe565b6001600160a01b0316146115865760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610741565b60655460ff16156115d95760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b0382166000908152609760205260408120609b5490919061160a906103e8906106cb908890612d78565b905060006116296103e86106cb609c5489612d7890919063ffffffff16565b905060006116378383612d90565b905060006116458883612d65565b60048601549091506116579085612d90565b6004860155600685015461166b9084612d90565b60068601556001600160a01b038716734200000000000000000000000000000000000006146116ad576116a86001600160a01b0388168a836133c9565b611756565b6000896001600160a01b03166108fc83604051600060405180830381858888f193505050503d80600081146116fe576040519150601f19603f3d011682016040523d82523d6000602084013e611703565b606091505b50509050806117545760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080516001600160a01b038b81168252602082018490528183018790526060820186905260808201859052891660a082015290517ff1068421680e00dfc2c4f3fc20c7f565bf1ec365420e7544365bae13d5cbc8c89181900360c00190a1505050505050505050565b60655460ff16156118135760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b03808316600090815260976020908152604080832060988352818420338552909252909120600182015491929091166118955760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b80548511156118e65760405162461bcd60e51b815260206004820152600e60248201527f5769746864726177204572726f720000000000000000000000000000000000006044820152606401610741565b6118ef8461065c565b61192961191e8260010154610f9c64e8d4a510006106cb87600501548760000154612d7890919063ffffffff16565b600283015490612d90565b6002820155805461193a9086612d65565b80825560058301546119579164e8d4a51000916106cb9190612d78565b6001820155600282015461196b9086612d65565b60028301556001600160a01b038416734200000000000000000000000000000000000006146119ad576119a86001600160a01b03851684876133c9565b611a56565b6000836001600160a01b03166108fc87604051600060405180830381858888f193505050503d80600081146119fe576040519150601f19603f3d011682016040523d82523d6000602084013e611a03565b606091505b5050905080611a545760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080513381526001600160a01b0385811660208301528183018890528616606082015290517ffa2e8fcf14fd6ea11b6ebe7caf7de210198b8fe1eaf0e06d19f8d87c73860c469181900360800190a15050505050565b6099546001600160a01b0316331480611acf57506099546001600160a01b0316155b611b1b5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b806001600160a01b0316826001600160a01b03161415611ba35760405162461bcd60e51b815260206004820152602860248201527f6c3120616e64206c3220746f6b656e206164647265737365732063616e6e6f7460448201527f2062652073616d650000000000000000000000000000000000000000000000006064820152608401610741565b6001600160a01b038082166000908152609760205260409020600181015490911615611c115760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e204164647265737320416c726561647920526567697374657264006044820152606401610741565b5060408051610100810182526001600160a01b03938416815291831660208084018281526000858501818152606087018281526080880183815260a0890184815260c08a018581524260e08c0190815298865260979097529790932097518854908a167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178955935160018901805491909a16941693909317909755955160028601555160038501559351600484015590516005830155915160068201559051600790910155565b6099546001600160a01b0316331480611cfe57506099546001600160a01b0316155b611d4a5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b6001600160a01b0380831660009081526097602052604090206001810154909116611db75760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f742052656769737465720000000000006044820152606401610741565b8381600601541015611e0b5760405162461bcd60e51b815260206004820152601b60248201527f4f776e657220526577617264205769746864726177204572726f7200000000006044820152606401610741565b6006810154611e1a9085612d65565b60068201556001600160a01b03831673420000000000000000000000000000000000000614611e5c57611e576001600160a01b03841683866133c9565b611f05565b6000826001600160a01b03166108fc86604051600060405180830381858888f193505050503d8060008114611ead576040519150601f19603f3d011682016040523d82523d6000602084013e611eb2565b606091505b5050905080611f035760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080513381526001600160a01b0384811660208301528183018790528516606082015290517f3cb71b9a1fb601579f96812b9f86ab5e914fc3e54c98d5f84d95581b2b9884f39181900360800190a150505050565b6099546001600160a01b0316331480611f7d57506099546001600160a01b0316155b611fc95760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b610bc1613412565b6099546001600160a01b0316331480611ff357506099546001600160a01b0316155b61203f5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b609a546001600160a01b03166120bd5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609e55565b609a546001600160a01b03166121405760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609a546001600160a01b031661215e6000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316146121e45760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610741565b806001600160a01b03166122006000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b15801561223857600080fd5b505afa15801561224c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227091906138fe565b6001600160a01b0316146122ec5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610741565b60655460ff161561233f5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b0382166000908152609760205260408120609b54829061236f906103e8906106cb908990612d78565b9050600061238e6103e86106cb609c548a612d7890919063ffffffff16565b9050600061239c8383612d90565b905060006123aa8983612d65565b90506001600160a01b038816734200000000000000000000000000000000000006146124b1576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038916906370a082319060240160206040518083038186803b15801561242857600080fd5b505afa15801561243c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612460919061391b565b8111156124705760019550612592565b600485015461247f9085612d90565b600486015560068501546124939084612d90565b60068601556124ac6001600160a01b0389168b836133c9565b612592565b478111156124c25760019550612592565b60048501546124d19085612d90565b600486015560068501546124e59084612d90565b60068601556040516000906001600160a01b038c16906108fc90849084818181858888f193505050503d806000811461253a576040519150601f19603f3d011682016040523d82523d6000602084013e61253f565b606091505b50509050806125905760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b851561263b578454604080516001600160a01b038d81166024830152604482018d90529283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f53174cc100000000000000000000000000000000000000000000000000000000179052609a54609d5491926126359291169063ffffffff166109d1565b5061269b565b604080516001600160a01b038c811682526020820184905281830187905260608201869052608082018590528a1660a082015290517fedb4d3b4b55168608412f15db11c00859915842963c31b1f08d910a38e1d6aa49181900360c00190a15b50505050505050505050565b600260015414156126fa5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610741565b600260015560655460ff16156127525760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b3415158061277d57506001600160a01b03811673420000000000000000000000000000000000000614155b6127c95760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f7272656374000000000000000000000000000000006044820152606401610741565b34156127e957503490507342000000000000000000000000000000000000065b6001600160a01b038082166000908152609760209081526040808320609883528184203385529092529091206001820154919290911661286b5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b6128748361065c565b8054156128e0576128aa61191e8260010154610f9c64e8d4a510006106cb87600501548760000154612d7890919063ffffffff16565b6002820155600582015481546128d69164e8d4a51000916106cb91906128d09089612d90565b90612d78565b6001820155612906565b61290064e8d4a510006106cb846005015487612d7890919063ffffffff16565b60018201555b6001600160a01b0383167342000000000000000000000000000000000000061461293f5761293f6001600160a01b038416333087612d9c565b805461294b9085612d90565b8155600282015461295c9085612d90565b600283015560408051338152602081018690526001600160a01b0385168183015290517f5852d1d46e583f7e92c2a572221de0e681d82ef71f489847e056b9445c0147369181900360600190a15050600180555050565b609d5464010000000090046001600160a01b03163314612a155760405162461bcd60e51b815260206004820152601560248201527f63616c6c6572206973206e6f74207468652044414f00000000000000000000006044820152606401610741565b609a546001600160a01b0316612a935760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b60328211158015612aa5575060328111155b612b175760405162461bcd60e51b815260206004820152603c60248201527f7573657220616e64206f776e6572206665652072617465732073686f756c642060448201527f6265206c6f776572207468616e20352070657263656e742065616368000000006064820152608401610741565b609b91909155609c55565b6099546001600160a01b0316331480612b4457506099546001600160a01b0316155b612b905760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b6001600160a01b038116612c0b5760405162461bcd60e51b8152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610741565b609980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b609d5464010000000090046001600160a01b03163314612ca75760405162461bcd60e51b815260206004820152601560248201527f63616c6c6572206973206e6f74207468652044414f00000000000000000000006044820152606401610741565b6001600160a01b038116612d235760405162461bcd60e51b815260206004820152602a60248201527f4e65772044414f20616464726573732063616e6e6f7420626520746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610741565b609d80546001600160a01b03909216640100000000027fffffffffffffffff0000000000000000000000000000000000000000ffffffff909216919091179055565b6000612d718284613934565b9392505050565b6000612d71828461394b565b6000612d718284613988565b6000612d7182846139c3565b6040516001600160a01b0380851660248301528316604482015260648101829052612e6b9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526134b8565b50505050565b6000546040517f3dbb202b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633dbb202b90612ebe90869085908790600401613a51565b600060405180830381600087803b158015612ed857600080fd5b505af1158015612eec573d6000803e3d6000fd5b50505050505050565b60655460ff16612f475760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610741565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000547501000000000000000000000000000000000000000000900460ff1680612ff4575060005474010000000000000000000000000000000000000000900460ff16155b6130665760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff161580156130cd57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b80156130fc57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b50565b6000547501000000000000000000000000000000000000000000900460ff1680613144575060005474010000000000000000000000000000000000000000900460ff16155b6131b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff1615801561321d57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905580156130fc57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6000547501000000000000000000000000000000000000000000900460ff16806132bb575060005474010000000000000000000000000000000000000000900460ff16155b61332d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff1615801561339457600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6001805580156130fc57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6040516001600160a01b038316602482015260448101829052610e919084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612de9565b60655460ff16156134655760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612f923390565b600061350d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661359d9092919063ffffffff16565b805190915015610e91578080602001905181019061352b9190613a89565b610e915760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610741565b60606135ac84846000856135b4565b949350505050565b60608247101561362c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610741565b843b61367a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610741565b600080866001600160a01b031685876040516136969190613aab565b60006040518083038185875af1925050503d80600081146136d3576040519150601f19603f3d011682016040523d82523d6000602084013e6136d8565b606091505b50915091506136e88282866136f3565b979650505050505050565b60608315613702575081612d71565b8251156137125782518084602001fd5b8160405162461bcd60e51b81526004016107419190613ac7565b6001600160a01b03811681146130fc57600080fd5b6000806040838503121561375457600080fd5b823561375f8161372c565b9150602083013561376f8161372c565b809150509250929050565b60006020828403121561378c57600080fd5b8135612d718161372c565b600080604083850312156137aa57600080fd5b82359150602083013561376f8161372c565b6000602082840312156137ce57600080fd5b813563ffffffff81168114612d7157600080fd5b6000806000606084860312156137f757600080fd5b8335925060208401356138098161372c565b915060408401356138198161372c565b809150509250925092565b6000806040838503121561383757600080fd5b50508035926020909101359150565b60008060006060848603121561385b57600080fd5b83356138668161372c565b92506020840135915060408401356138198161372c565b60006020828403121561388f57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156138f7576138f7613896565b5060010190565b60006020828403121561391057600080fd5b8151612d718161372c565b60006020828403121561392d57600080fd5b5051919050565b60008282101561394657613946613896565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561398357613983613896565b500290565b6000826139be577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082198211156139d6576139d6613896565b500190565b60005b838110156139f65781810151838201526020016139de565b83811115612e6b5750506000910152565b60008151808452613a1f8160208601602086016139db565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6001600160a01b0384168152606060208201526000613a736060830185613a07565b905063ffffffff83166040830152949350505050565b600060208284031215613a9b57600080fd5b81518015158114612d7157600080fd5b60008251613abd8184602087016139db565b9190910192915050565b602081526000612d716020830184613a0756fea164736f6c6343000809000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} From 6fe25cc452758f513d9d26dee5ab5431503840c7 Mon Sep 17 00:00:00 2001 From: cby3149 Date: Tue, 21 Dec 2021 15:58:51 -0800 Subject: [PATCH 7/8] Revert "Add @boba package in gas oracle" This reverts commit 326cbf54a7e29e57ef1491f3351c864feedf6650. --- ops/docker/Dockerfile.boba_gas-price-oracle | 2 - .../src/abi/DiscretionaryExitBurn.json | 89 ++ .../src/abi/L1LiquidityPool.json | 812 ++++++++++++++++++ .../src/abi/L1StandardBridge.json | 421 +++++++++ .../src/abi/L2LiquidityPool.json | 791 +++++++++++++++++ 5 files changed, 2113 insertions(+), 2 deletions(-) create mode 100644 packages/boba/gas-price-oracle/src/abi/DiscretionaryExitBurn.json create mode 100644 packages/boba/gas-price-oracle/src/abi/L1LiquidityPool.json create mode 100644 packages/boba/gas-price-oracle/src/abi/L1StandardBridge.json create mode 100644 packages/boba/gas-price-oracle/src/abi/L2LiquidityPool.json diff --git a/ops/docker/Dockerfile.boba_gas-price-oracle b/ops/docker/Dockerfile.boba_gas-price-oracle index 21aa543e2..b24e2d761 100644 --- a/ops/docker/Dockerfile.boba_gas-price-oracle +++ b/ops/docker/Dockerfile.boba_gas-price-oracle @@ -6,8 +6,6 @@ WORKDIR /opt/optimism/ COPY --from=builder /optimism/*.json /optimism/yarn.lock ./ COPY --from=builder /optimism/node_modules ./node_modules -# copy @boba package -COPY --from=builder /optimism/packages/boba/contracts ./node_modules/@boba/contracts # copy deps (would have been nice if docker followed the symlinks required) COPY --from=builder /optimism/packages/core-utils/package.json ./packages/core-utils/package.json diff --git a/packages/boba/gas-price-oracle/src/abi/DiscretionaryExitBurn.json b/packages/boba/gas-price-oracle/src/abi/DiscretionaryExitBurn.json new file mode 100644 index 000000000..ef13bf052 --- /dev/null +++ b/packages/boba/gas-price-oracle/src/abi/DiscretionaryExitBurn.json @@ -0,0 +1,89 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DiscretionaryExitBurn", + "sourceName": "contracts/DiscretionaryExitBurn.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_l2Bridge", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_l2Token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "_l1Gas", + "type": "uint32" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "burnAndWithdraw", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_extraGas", + "type": "uint256" + } + ], + "name": "configureExtraGasRelay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "extraGasRelay", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "l2Bridge", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50604051610bd6380380610bd683398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610b43806100936000396000f3fe60806040526004361061003f5760003560e01c80636f0fbfb41461004457806370ac318014610059578063ae1f6aaf14610082578063b5e241f1146100d4575b600080fd5b610057610052366004610892565b6100f4565b005b34801561006557600080fd5b5061006f60015481565b6040519081526020015b60405180910390f35b34801561008e57600080fd5b506000546100af9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610079565b3480156100e057600080fd5b506100576100ef36600461093a565b610373565b60005a9050600154811161018f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f496e73756666696369656e742047617320466f7220612052656c61792054726160448201527f6e73616374696f6e00000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60006101a6600154836104c490919063ffffffff16565b905060005b815a11156101c557806101bd81610982565b9150506101ab565b341515806101fd575073ffffffffffffffffffffffffffffffffffffffff881673420000000000000000000000000000000000000614155b610263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f416d6f756e7420496e636f7272656374000000000000000000000000000000006044820152606401610186565b34156102845734965073420000000000000000000000000000000000000697505b73ffffffffffffffffffffffffffffffffffffffff8816734200000000000000000000000000000000000006146102d7576102d773ffffffffffffffffffffffffffffffffffffffff891633308a6104d7565b6000546040517fa3a7954800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063a3a7954890610337908b9033908c908c908c908c906004016109bb565b600060405180830381600087803b15801561035157600080fd5b505af1158015610365573d6000803e3d6000fd5b505050505050505050505050565b73420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103cd57600080fd5b505afa1580156103e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104059190610a47565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f63616c6c6572206973206e6f74207468652067617350726963654f7261636c6560448201527f206f776e657200000000000000000000000000000000000000000000000000006064820152608401610186565b600155565b60006104d08284610a64565b9392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261056c908590610572565b50505050565b60006105d4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166106839092919063ffffffff16565b80519091501561067e57808060200190518101906105f29190610a7b565b61067e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610186565b505050565b6060610692848460008561069a565b949350505050565b60608247101561072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610186565b843b610794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610186565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516107bd9190610ac9565b60006040518083038185875af1925050503d80600081146107fa576040519150601f19603f3d011682016040523d82523d6000602084013e6107ff565b606091505b509150915061080f82828661081a565b979650505050505050565b606083156108295750816104d0565b8251156108395782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101869190610ae5565b73ffffffffffffffffffffffffffffffffffffffff8116811461088f57600080fd5b50565b6000806000806000608086880312156108aa57600080fd5b85356108b58161086d565b945060208601359350604086013563ffffffff811681146108d557600080fd5b9250606086013567ffffffffffffffff808211156108f257600080fd5b818801915088601f83011261090657600080fd5b81358181111561091557600080fd5b89602082850101111561092757600080fd5b9699959850939650602001949392505050565b60006020828403121561094c57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156109b4576109b4610953565b5060010190565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015263ffffffff8516606083015260a060808301528260a0830152828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050979650505050505050565b600060208284031215610a5957600080fd5b81516104d08161086d565b600082821015610a7657610a76610953565b500390565b600060208284031215610a8d57600080fd5b815180151581146104d057600080fd5b60005b83811015610ab8578181015183820152602001610aa0565b8381111561056c5750506000910152565b60008251610adb818460208701610a9d565b9190910192915050565b6020815260008251806020840152610b04816040850160208701610a9d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea164736f6c6343000809000a", + "deployedBytecode": "0x60806040526004361061003f5760003560e01c80636f0fbfb41461004457806370ac318014610059578063ae1f6aaf14610082578063b5e241f1146100d4575b600080fd5b610057610052366004610892565b6100f4565b005b34801561006557600080fd5b5061006f60015481565b6040519081526020015b60405180910390f35b34801561008e57600080fd5b506000546100af9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610079565b3480156100e057600080fd5b506100576100ef36600461093a565b610373565b60005a9050600154811161018f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f496e73756666696369656e742047617320466f7220612052656c61792054726160448201527f6e73616374696f6e00000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60006101a6600154836104c490919063ffffffff16565b905060005b815a11156101c557806101bd81610982565b9150506101ab565b341515806101fd575073ffffffffffffffffffffffffffffffffffffffff881673420000000000000000000000000000000000000614155b610263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f416d6f756e7420496e636f7272656374000000000000000000000000000000006044820152606401610186565b34156102845734965073420000000000000000000000000000000000000697505b73ffffffffffffffffffffffffffffffffffffffff8816734200000000000000000000000000000000000006146102d7576102d773ffffffffffffffffffffffffffffffffffffffff891633308a6104d7565b6000546040517fa3a7954800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063a3a7954890610337908b9033908c908c908c908c906004016109bb565b600060405180830381600087803b15801561035157600080fd5b505af1158015610365573d6000803e3d6000fd5b505050505050505050505050565b73420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103cd57600080fd5b505afa1580156103e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104059190610a47565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f63616c6c6572206973206e6f74207468652067617350726963654f7261636c6560448201527f206f776e657200000000000000000000000000000000000000000000000000006064820152608401610186565b600155565b60006104d08284610a64565b9392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261056c908590610572565b50505050565b60006105d4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166106839092919063ffffffff16565b80519091501561067e57808060200190518101906105f29190610a7b565b61067e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610186565b505050565b6060610692848460008561069a565b949350505050565b60608247101561072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610186565b843b610794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610186565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516107bd9190610ac9565b60006040518083038185875af1925050503d80600081146107fa576040519150601f19603f3d011682016040523d82523d6000602084013e6107ff565b606091505b509150915061080f82828661081a565b979650505050505050565b606083156108295750816104d0565b8251156108395782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101869190610ae5565b73ffffffffffffffffffffffffffffffffffffffff8116811461088f57600080fd5b50565b6000806000806000608086880312156108aa57600080fd5b85356108b58161086d565b945060208601359350604086013563ffffffff811681146108d557600080fd5b9250606086013567ffffffffffffffff808211156108f257600080fd5b818801915088601f83011261090657600080fd5b81358181111561091557600080fd5b89602082850101111561092757600080fd5b9699959850939650602001949392505050565b60006020828403121561094c57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156109b4576109b4610953565b5060010190565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015263ffffffff8516606083015260a060808301528260a0830152828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050979650505050505050565b600060208284031215610a5957600080fd5b81516104d08161086d565b600082821015610a7657610a76610953565b500390565b600060208284031215610a8d57600080fd5b815180151581146104d057600080fd5b60005b83811015610ab8578181015183820152602001610aa0565b8381111561056c5750506000910152565b60008251610adb818460208701610a9d565b9190910192915050565b6020815260008251806020840152610b04816040850160208701610a9d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea164736f6c6343000809000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/packages/boba/gas-price-oracle/src/abi/L1LiquidityPool.json b/packages/boba/gas-price-oracle/src/abi/L1LiquidityPool.json new file mode 100644 index 000000000..d252865b0 --- /dev/null +++ b/packages/boba/gas-price-oracle/src/abi/L1LiquidityPool.json @@ -0,0 +1,812 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "L1LiquidityPool", + "sourceName": "contracts/LP/L1LiquidityPool.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "AddLiquidity", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "receivedAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "ClientDepositL1", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "userRewardFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "ownerRewardFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "ClientPayL1", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "userRewardFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "ownerRewardFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "ClientPayL1Settlement", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "OwnerRecoverFee", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "RebalanceLP", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "WithdrawLiquidity", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "WithdrawReward", + "type": "event" + }, + { + "inputs": [], + "name": "L1StandardBridgeAddress", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "L2LiquidityPoolAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SAFE_GAS_STIPEND", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SETTLEMENT_L2_GAS", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + } + ], + "name": "addLiquidity", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + } + ], + "name": "clientDepositL1", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + } + ], + "name": "clientPayL1", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + } + ], + "name": "clientPayL1Settlement", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_userRewardFeeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_ownerRewardFeeRate", + "type": "uint256" + } + ], + "name": "configureFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_l2GasFee", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "_safeGas", + "type": "uint256" + } + ], + "name": "configureGas", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_l1CrossDomainMessenger", + "type": "address" + }, + { + "internalType": "address", + "name": "_l1CrossDomainMessengerFast", + "type": "address" + }, + { + "internalType": "address", + "name": "_L2LiquidityPoolAddress", + "type": "address" + }, + { + "internalType": "address payable", + "name": "_L1StandardBridgeAddress", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "l1CrossDomainMessenger", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "ownerRecoverFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "ownerRewardFeeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "poolInfo", + "outputs": [ + { + "internalType": "address", + "name": "l1TokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "l2TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "userDepositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastAccUserReward", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accUserReward", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accUserRewardPerShare", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accOwnerReward", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "startTime", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + } + ], + "name": "rebalanceLP", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_l1TokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_l2TokenAddress", + "type": "address" + } + ], + "name": "registerPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "relayerMessenger", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "senderMessenger", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + } + ], + "name": "updateUserRewardPerShare", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "userInfo", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "pendingReward", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "userRewardFeeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + }, + { + "internalType": "address payable", + "name": "_to", + "type": "address" + } + ], + "name": "withdrawLiquidity", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "withdrawReward", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b0319908116909155600180549091169055613ab08061003c6000396000f3fe6080604052600436106101c25760003560e01c8063818c021e116100f7578063c95f9d0e11610095578063f2fde38b11610064578063f2fde38b146105bb578063f64b5f44146105db578063f72e5aa0146105ee578063f8c8765e1461060e57600080fd5b8063c95f9d0e14610536578063cf26fb1b14610549578063d04a966a14610569578063d1dd871a1461059b57600080fd5b80638cac7893116100d15780638cac7893146104255780638da5cb5b146104455780639a7b5f1114610465578063a71198691461051657600080fd5b8063818c021e146103d057806381e6bdac146103f05780638456cb591461041057600080fd5b806349561dc41161016457806353174cc11161013e57806353174cc11461034d5780635c975abb1461036d57806368be42ca146103905780637286e5e5146103b057600080fd5b806349561dc4146102df578063508e01c4146102ff578063513f31321461033757600080fd5b8063369fd102116101a0578063369fd102146102745780633f4ba83a146102945780633f89e952146102a9578063435fd571146102c957600080fd5b80630f208beb146101c757806312f54c1a1461022e578063358fc07e14610250575b600080fd5b3480156101d357600080fd5b5061020e6101e23660046136f1565b609960209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060015b60405180910390f35b34801561023a57600080fd5b5061024e61024936600461372a565b61062e565b005b34801561025c57600080fd5b50610266609d5481565b604051908152602001610225565b34801561028057600080fd5b5061024e61028f366004613747565b6106c4565b3480156102a057600080fd5b5061024e6107f0565b3480156102b557600080fd5b5061024e6102c436600461377c565b610868565b3480156102d557600080fd5b50610266609c5481565b3480156102eb57600080fd5b5061024e6102fa3660046137a1565b610d2a565b34801561030b57600080fd5b5060005461031f906001600160a01b031681565b6040516001600160a01b039091168152602001610225565b34801561034357600080fd5b50610266609f5481565b34801561035957600080fd5b5061024e6103683660046137e3565b610feb565b34801561037957600080fd5b5060665460ff166040519015158152602001610225565b34801561039c57600080fd5b5061024e6103ab3660046137a1565b6113bc565b3480156103bc57600080fd5b5061024e6103cb3660046136f1565b611694565b3480156103dc57600080fd5b5060015461031f906001600160a01b031681565b3480156103fc57600080fd5b5061024e61040b3660046137a1565b6118c4565b34801561041c57600080fd5b5061024e611b31565b34801561043157600080fd5b5060a15461031f906001600160a01b031681565b34801561045157600080fd5b50609a5461031f906001600160a01b031681565b34801561047157600080fd5b506104d061048036600461372a565b609860205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701546001600160a01b03968716979590961695939492939192909188565b604080516001600160a01b03998a168152989097166020890152958701949094526060860192909252608085015260a084015260c083015260e082015261010001610225565b34801561052257600080fd5b5060a05461031f906001600160a01b031681565b61024e61054436600461377c565b611ba7565b34801561055557600080fd5b5061024e6105643660046137e3565b611e75565b34801561057557600080fd5b50609e546105869063ffffffff1681565b60405163ffffffff9091168152602001610225565b3480156105a757600080fd5b5061024e6105b636600461381a565b6123ca565b3480156105c757600080fd5b5061024e6105d636600461372a565b612605565b61024e6105e936600461377c565b6126ad565b3480156105fa57600080fd5b50609b5461031f906001600160a01b031681565b34801561061a57600080fd5b5061024e61062936600461383c565b6128e8565b6001600160a01b03811660009081526098602052604090206004810154600382015410156106c057600061067382600301548360040154612c2190919063ffffffff16565b905081600201546000146106b45760028201546106ae906106a39061069d8464e8d4a51000612c34565b90612c40565b600584015490612c4c565b60058301555b50600481015460038201555b5050565b609a546001600160a01b03163314806106e65750609a546001600160a01b0316155b6107375760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064015b60405180910390fd5b609b546001600160a01b03166107b55760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a6564000000000000000000000000000000000000000000000000000000606482015260840161072e565b609e80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9390931692909217909155609f55565b609a546001600160a01b03163314806108125750609a546001600160a01b0316155b61085e5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b610866612c58565b565b609a546001600160a01b031633148061088a5750609a546001600160a01b0316155b6108d65760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b60665460ff16156109295760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b816109765760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f727265637400000000000000000000000000000000604482015260640161072e565b6001600160a01b038082166000908152609860205260409020609b549091166109e15760405162461bcd60e51b815260206004820152601e60248201527f4c32204c697175696469747920506f6f6c204e6f742052656769737465720000604482015260640161072e565b60018101546001600160a01b0316610a3b5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b6001600160a01b038216610b385747831115610a995760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f20526562616c616e6365204c5000000000000000000000604482015260640161072e565b60a154609b54609e546040517f9a2ac6d50000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff90911660248201526060604482015260006064820152911690639a2ac6d59085906084016000604051808303818588803b158015610b1a57600080fd5b505af1158015610b2e573d6000803e3d6000fd5b5050505050610ce4565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038316906370a082319060240160206040518083038186803b158015610b9057600080fd5b505afa158015610ba4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc89190613898565b831115610c175760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f20526562616c616e6365204c5000000000000000000000604482015260640161072e565b60a154610c31906001600160a01b03848116911685612d12565b60a1546001820154609b54609e546040517f838b25200000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152938416602482015291831660448301526064820187905263ffffffff16608482015260c060a4820152600060c482015291169063838b25209060e401600060405180830381600087803b158015610ccb57600080fd5b505af1158015610cdf573d6000803e3d6000fd5b505050505b604080518481526001600160a01b03841660208201527f40637a7e139eeb28b936b8decebe78604164b2ade81ce7f4c70deb132e7614c2910160405180910390a1505050565b60665460ff1615610d7d5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b0380831660009081526098602090815260408083206099835281842033855290925290912060018201549192909116610dff5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b6000610e41610e368360010154610e3064e8d4a5100061069d88600501548860000154612c3490919063ffffffff16565b90612c21565b600284015490612c4c565b905085811015610e935760405162461bcd60e51b815260206004820152601560248201527f576974686472617720526577617264204572726f720000000000000000000000604482015260640161072e565b610e9d8187612c21565b600283015560058301548254610ebd9164e8d4a510009161069d91612c34565b60018301556001600160a01b03851615610eea57610ee56001600160a01b0386168588612e89565b610f93565b6000846001600160a01b0316609f5488604051600060405180830381858888f193505050503d8060008114610f3b576040519150601f19603f3d011682016040523d82523d6000602084013e610f40565b606091505b5050905080610f915760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080513381526001600160a01b0386811660208301528183018990528716606082015290517f3cb7cb475a33eda02ee6e719b6c2fc0c899157cfc6f098daf545354dbbce41ec9181900360800190a1505050505050565b609b546001600160a01b03166110096001546001600160a01b031690565b6001600160a01b0316336001600160a01b03161461108f5760405162461bcd60e51b815260206004820152602a60248201527f58434841494e3a206d657373656e67657220636f6e747261637420756e61757460448201527f68656e7469636174656400000000000000000000000000000000000000000000606482015260840161072e565b806001600160a01b03166110ab6001546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156110e357600080fd5b505afa1580156110f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111b91906138b1565b6001600160a01b0316146111975760405162461bcd60e51b815260206004820152602c60248201527f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f60448201527f6d61696e206d6573736167650000000000000000000000000000000000000000606482015260840161072e565b60665460ff16156111ea5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b0382166000908152609860205260408120609c5490919061121b906103e89061069d908890612c34565b9050600061123a6103e861069d609d5489612c3490919063ffffffff16565b905060006112488383612c4c565b905060006112568883612c21565b60048601549091506112689085612c4c565b6004860155600685015461127c9084612c4c565b60068601556001600160a01b038716156112a9576112a46001600160a01b0388168a83612e89565b611352565b6000896001600160a01b0316609f5483604051600060405180830381858888f193505050503d80600081146112fa576040519150601f19603f3d011682016040523d82523d6000602084013e6112ff565b606091505b50509050806113505760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080516001600160a01b038b81168252602082018490528183018790526060820186905260808201859052891660a082015290517fe42a885e97ef72aed483b57141e41f9d64499b43411f58b60a0e07fcdb6e824a9181900360c00190a1505050505050505050565b60665460ff161561140f5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b03808316600090815260986020908152604080832060998352818420338552909252909120600182015491929091166114915760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b80548511156114e25760405162461bcd60e51b815260206004820152600e60248201527f5769746864726177204572726f72000000000000000000000000000000000000604482015260640161072e565b6114eb8461062e565b61152561151a8260010154610e3064e8d4a5100061069d87600501548760000154612c3490919063ffffffff16565b600283015490612c4c565b600282015580546115369086612c21565b80825560058301546115539164e8d4a510009161069d9190612c34565b600182015560028201546115679086612c21565b60028301556001600160a01b038416156115945761158f6001600160a01b0385168487612e89565b61163d565b6000836001600160a01b0316609f5487604051600060405180830381858888f193505050503d80600081146115e5576040519150601f19603f3d011682016040523d82523d6000602084013e6115ea565b606091505b505090508061163b5760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080513381526001600160a01b0385811660208301528183018890528616606082015290517ffa2e8fcf14fd6ea11b6ebe7caf7de210198b8fe1eaf0e06d19f8d87c73860c469181900360800190a15050505050565b609a546001600160a01b03163314806116b65750609a546001600160a01b0316155b6117025760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b806001600160a01b0316826001600160a01b0316141561178a5760405162461bcd60e51b815260206004820152602860248201527f6c3120616e64206c3220746f6b656e206164647265737365732063616e6e6f7460448201527f2062652073616d65000000000000000000000000000000000000000000000000606482015260840161072e565b6001600160a01b0380831660009081526098602052604090206001810154909116156117f85760405162461bcd60e51b815260206004820181905260248201527f546f6b656e204164647265737320416c72656164792052656769737465726564604482015260640161072e565b5060408051610100810182526001600160a01b0393841680825292841660208083019182526000838501818152606085018281526080860183815260a0870184815260c088018581524260e08a019081529a865260989096529790932095518654908a167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178755945160018701805491909a16951694909417909755955160028401559051600383015593516004820155905160058201559151600683015551600790910155565b609a546001600160a01b03163314806118e65750609a546001600160a01b0316155b6119325760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b6001600160a01b038083166000908152609860205260409020600181015490911661199f5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b83816006015410156119f35760405162461bcd60e51b815260206004820152601b60248201527f4f776e657220526577617264205769746864726177204572726f720000000000604482015260640161072e565b6006810154611a029085612c21565b60068201556001600160a01b03831615611a2f57611a2a6001600160a01b0384168386612e89565b611ad8565b6000826001600160a01b0316609f5486604051600060405180830381858888f193505050503d8060008114611a80576040519150601f19603f3d011682016040523d82523d6000602084013e611a85565b606091505b5050905080611ad65760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080513381526001600160a01b03808516602083015291810186905290841660608201527f3cb71b9a1fb601579f96812b9f86ab5e914fc3e54c98d5f84d95581b2b9884f3906080015b60405180910390a150505050565b609a546001600160a01b0316331480611b535750609a546001600160a01b0316155b611b9f5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b610866612ed2565b600280541415611bf95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161072e565b6002805560665460ff1615611c505760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b34151580611c6657506001600160a01b03811615155b611cb25760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f727265637400000000000000000000000000000000604482015260640161072e565b3415611cbf575034905060005b6001600160a01b0380821660009081526098602090815260408083206099835281842033855290925290912060018201549192909116611d415760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b611d4a8361062e565b805415611db657611d8061151a8260010154610e3064e8d4a5100061069d87600501548760000154612c3490919063ffffffff16565b600282015560058201548154611dac9164e8d4a510009161069d9190611da69089612c4c565b90612c34565b6001820155611ddc565b611dd664e8d4a5100061069d846005015487612c3490919063ffffffff16565b60018201555b6001600160a01b03831615611e0057611e006001600160a01b038416333087612f78565b8054611e0c9085612c4c565b81556002820154611e1d9085612c4c565b600283015560408051338152602081018690526001600160a01b0385168183015290517f5852d1d46e583f7e92c2a572221de0e681d82ef71f489847e056b9445c0147369181900360600190a1505060016002555050565b609b546001600160a01b0316611e936001546001600160a01b031690565b6001600160a01b0316336001600160a01b031614611f195760405162461bcd60e51b815260206004820152602a60248201527f58434841494e3a206d657373656e67657220636f6e747261637420756e61757460448201527f68656e7469636174656400000000000000000000000000000000000000000000606482015260840161072e565b806001600160a01b0316611f356001546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015611f6d57600080fd5b505afa158015611f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa591906138b1565b6001600160a01b0316146120215760405162461bcd60e51b815260206004820152602c60248201527f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f60448201527f6d61696e206d6573736167650000000000000000000000000000000000000000606482015260840161072e565b60665460ff16156120745760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b0382166000908152609860205260408120609c5482906120a4906103e89061069d908990612c34565b905060006120c36103e861069d609d548a612c3490919063ffffffff16565b905060006120d18383612c4c565b905060006120df8983612c21565b90506001600160a01b038816156121d1576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038916906370a082319060240160206040518083038186803b15801561214857600080fd5b505afa15801561215c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121809190613898565b81111561219057600195506122b1565b600485015461219f9085612c4c565b600486015560068501546121b39084612c4c565b60068601556121cc6001600160a01b0389168b83612e89565b6122b1565b478111156121e257600195506122b1565b60048501546121f19085612c4c565b600486015560068501546122059084612c4c565b6006860155609f546040516000916001600160a01b038d1691849084818181858888f193505050503d8060008114612259576040519150601f19603f3d011682016040523d82523d6000602084013e61225e565b606091505b50509050806122af5760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b851561235e576001850154604080516001600160a01b038d81166024830152604482018d90529283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f650a767b00000000000000000000000000000000000000000000000000000000179052609b54609e5491926123589291169063ffffffff1683612fc9565b506123be565b604080516001600160a01b038c811682526020820184905281830187905260608201869052608082018590528a1660a082015290517ffe1f8646fcb202e48551fbfd19085116c64b291c60cede7dce3665a57c05e3819181900360c00190a15b50505050505050505050565b609b546001600160a01b03166123e86001546001600160a01b031690565b6001600160a01b0316336001600160a01b03161461246e5760405162461bcd60e51b815260206004820152602a60248201527f58434841494e3a206d657373656e67657220636f6e747261637420756e61757460448201527f68656e7469636174656400000000000000000000000000000000000000000000606482015260840161072e565b806001600160a01b031661248a6001546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156124c257600080fd5b505afa1580156124d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fa91906138b1565b6001600160a01b0316146125765760405162461bcd60e51b815260206004820152602c60248201527f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f60448201527f6d61696e206d6573736167650000000000000000000000000000000000000000606482015260840161072e565b609b546001600160a01b03166125f45760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a6564000000000000000000000000000000000000000000000000000000606482015260840161072e565b50609c91909155609d55565b505050565b609a546001600160a01b03163314806126275750609a546001600160a01b0316155b6126735760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b609a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60665460ff16156127005760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b3415158061271657506001600160a01b03811615155b6127625760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f727265637400000000000000000000000000000000604482015260640161072e565b341561276f575034905060005b6001600160a01b03808216600090815260986020526040902060018101549091166127dc5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b6001600160a01b03821615612800576128006001600160a01b038316333086612f78565b600181015460408051336024820152604481018690526001600160a01b039283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fbd2d1cab00000000000000000000000000000000000000000000000000000000179052609b54609e54919261289f9291169063ffffffff1683612fc9565b60408051338152602081018690526001600160a01b038516918101919091527f860e25c3d48fb81f0b272550dd125a5a6ab20ee7511dd3e250d04964bd37a7a990606001611b23565b609a546001600160a01b031633148061290a5750609a546001600160a01b0316155b6129565760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b609b546001600160a01b0316156129af5760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420686173206265656e20696e697469616c697a6564000000604482015260640161072e565b6001547501000000000000000000000000000000000000000000900460ff16806129f4575060015474010000000000000000000000000000000000000000900460ff16155b612a665760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff16158015612acd57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6001600160a01b03851615801590612aed57506001600160a01b03841615155b8015612b0157506001600160a01b03831615155b612b4d5760405162461bcd60e51b815260206004820152601860248201527f7a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000604482015260640161072e565b600080546001600160a01b038781167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560018054878416908316179055609b805486841690831617905560a1805492851692821692909217909155609a8054909116331790556023609c55600f609d55612bd362155cc06108fc6106c4565b612bdb61304d565b612be361319d565b612beb613314565b8015612c1a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b5050505050565b6000612c2d82846138fd565b9392505050565b6000612c2d8284613914565b6000612c2d8284613951565b6000612c2d828461398c565b60665460ff16612caa5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161072e565b606680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e9060440160206040518083038186803b158015612d7757600080fd5b505afa158015612d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612daf9190613898565b612db9919061398c565b6040516001600160a01b038516602482015260448101829052909150612e839085907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613468565b50505050565b6040516001600160a01b0383166024820152604481018290526126009084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612e01565b60665460ff1615612f255760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b606680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612cf53390565b6040516001600160a01b0380851660248301528316604482015260648101829052612e839085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612e01565b6000546040517f3dbb202b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633dbb202b9061301690869085908790600401613a1a565b600060405180830381600087803b15801561303057600080fd5b505af1158015613044573d6000803e3d6000fd5b50505050505050565b6001547501000000000000000000000000000000000000000000900460ff1680613092575060015474010000000000000000000000000000000000000000900460ff16155b6131045760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff1615801561316b57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b801561319a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b50565b6001547501000000000000000000000000000000000000000000900460ff16806131e2575060015474010000000000000000000000000000000000000000900460ff16155b6132545760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff161580156132bb57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b606680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055801561319a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6001547501000000000000000000000000000000000000000000900460ff1680613359575060015474010000000000000000000000000000000000000000900460ff16155b6133cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff1615801561343257600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6001600255801561319a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b60006134bd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661354d9092919063ffffffff16565b80519091501561260057808060200190518101906134db9190613a52565b6126005760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161072e565b606061355c8484600085613564565b949350505050565b6060824710156135dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161072e565b843b61362a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161072e565b600080866001600160a01b031685876040516136469190613a74565b60006040518083038185875af1925050503d8060008114613683576040519150601f19603f3d011682016040523d82523d6000602084013e613688565b606091505b50915091506136988282866136a3565b979650505050505050565b606083156136b2575081612c2d565b8251156136c25782518084602001fd5b8160405162461bcd60e51b815260040161072e9190613a90565b6001600160a01b038116811461319a57600080fd5b6000806040838503121561370457600080fd5b823561370f816136dc565b9150602083013561371f816136dc565b809150509250929050565b60006020828403121561373c57600080fd5b8135612c2d816136dc565b6000806040838503121561375a57600080fd5b823563ffffffff8116811461376e57600080fd5b946020939093013593505050565b6000806040838503121561378f57600080fd5b82359150602083013561371f816136dc565b6000806000606084860312156137b657600080fd5b8335925060208401356137c8816136dc565b915060408401356137d8816136dc565b809150509250925092565b6000806000606084860312156137f857600080fd5b8335613803816136dc565b92506020840135915060408401356137d8816136dc565b6000806040838503121561382d57600080fd5b50508035926020909101359150565b6000806000806080858703121561385257600080fd5b843561385d816136dc565b9350602085013561386d816136dc565b9250604085013561387d816136dc565b9150606085013561388d816136dc565b939692955090935050565b6000602082840312156138aa57600080fd5b5051919050565b6000602082840312156138c357600080fd5b8151612c2d816136dc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561390f5761390f6138ce565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561394c5761394c6138ce565b500290565b600082613987577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000821982111561399f5761399f6138ce565b500190565b60005b838110156139bf5781810151838201526020016139a7565b83811115612e835750506000910152565b600081518084526139e88160208601602086016139a4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6001600160a01b0384168152606060208201526000613a3c60608301856139d0565b905063ffffffff83166040830152949350505050565b600060208284031215613a6457600080fd5b81518015158114612c2d57600080fd5b60008251613a868184602087016139a4565b9190910192915050565b602081526000612c2d60208301846139d056fea164736f6c6343000809000a", + "deployedBytecode": "0x6080604052600436106101c25760003560e01c8063818c021e116100f7578063c95f9d0e11610095578063f2fde38b11610064578063f2fde38b146105bb578063f64b5f44146105db578063f72e5aa0146105ee578063f8c8765e1461060e57600080fd5b8063c95f9d0e14610536578063cf26fb1b14610549578063d04a966a14610569578063d1dd871a1461059b57600080fd5b80638cac7893116100d15780638cac7893146104255780638da5cb5b146104455780639a7b5f1114610465578063a71198691461051657600080fd5b8063818c021e146103d057806381e6bdac146103f05780638456cb591461041057600080fd5b806349561dc41161016457806353174cc11161013e57806353174cc11461034d5780635c975abb1461036d57806368be42ca146103905780637286e5e5146103b057600080fd5b806349561dc4146102df578063508e01c4146102ff578063513f31321461033757600080fd5b8063369fd102116101a0578063369fd102146102745780633f4ba83a146102945780633f89e952146102a9578063435fd571146102c957600080fd5b80630f208beb146101c757806312f54c1a1461022e578063358fc07e14610250575b600080fd5b3480156101d357600080fd5b5061020e6101e23660046136f1565b609960209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060015b60405180910390f35b34801561023a57600080fd5b5061024e61024936600461372a565b61062e565b005b34801561025c57600080fd5b50610266609d5481565b604051908152602001610225565b34801561028057600080fd5b5061024e61028f366004613747565b6106c4565b3480156102a057600080fd5b5061024e6107f0565b3480156102b557600080fd5b5061024e6102c436600461377c565b610868565b3480156102d557600080fd5b50610266609c5481565b3480156102eb57600080fd5b5061024e6102fa3660046137a1565b610d2a565b34801561030b57600080fd5b5060005461031f906001600160a01b031681565b6040516001600160a01b039091168152602001610225565b34801561034357600080fd5b50610266609f5481565b34801561035957600080fd5b5061024e6103683660046137e3565b610feb565b34801561037957600080fd5b5060665460ff166040519015158152602001610225565b34801561039c57600080fd5b5061024e6103ab3660046137a1565b6113bc565b3480156103bc57600080fd5b5061024e6103cb3660046136f1565b611694565b3480156103dc57600080fd5b5060015461031f906001600160a01b031681565b3480156103fc57600080fd5b5061024e61040b3660046137a1565b6118c4565b34801561041c57600080fd5b5061024e611b31565b34801561043157600080fd5b5060a15461031f906001600160a01b031681565b34801561045157600080fd5b50609a5461031f906001600160a01b031681565b34801561047157600080fd5b506104d061048036600461372a565b609860205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701546001600160a01b03968716979590961695939492939192909188565b604080516001600160a01b03998a168152989097166020890152958701949094526060860192909252608085015260a084015260c083015260e082015261010001610225565b34801561052257600080fd5b5060a05461031f906001600160a01b031681565b61024e61054436600461377c565b611ba7565b34801561055557600080fd5b5061024e6105643660046137e3565b611e75565b34801561057557600080fd5b50609e546105869063ffffffff1681565b60405163ffffffff9091168152602001610225565b3480156105a757600080fd5b5061024e6105b636600461381a565b6123ca565b3480156105c757600080fd5b5061024e6105d636600461372a565b612605565b61024e6105e936600461377c565b6126ad565b3480156105fa57600080fd5b50609b5461031f906001600160a01b031681565b34801561061a57600080fd5b5061024e61062936600461383c565b6128e8565b6001600160a01b03811660009081526098602052604090206004810154600382015410156106c057600061067382600301548360040154612c2190919063ffffffff16565b905081600201546000146106b45760028201546106ae906106a39061069d8464e8d4a51000612c34565b90612c40565b600584015490612c4c565b60058301555b50600481015460038201555b5050565b609a546001600160a01b03163314806106e65750609a546001600160a01b0316155b6107375760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064015b60405180910390fd5b609b546001600160a01b03166107b55760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a6564000000000000000000000000000000000000000000000000000000606482015260840161072e565b609e80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9390931692909217909155609f55565b609a546001600160a01b03163314806108125750609a546001600160a01b0316155b61085e5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b610866612c58565b565b609a546001600160a01b031633148061088a5750609a546001600160a01b0316155b6108d65760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b60665460ff16156109295760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b816109765760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f727265637400000000000000000000000000000000604482015260640161072e565b6001600160a01b038082166000908152609860205260409020609b549091166109e15760405162461bcd60e51b815260206004820152601e60248201527f4c32204c697175696469747920506f6f6c204e6f742052656769737465720000604482015260640161072e565b60018101546001600160a01b0316610a3b5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b6001600160a01b038216610b385747831115610a995760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f20526562616c616e6365204c5000000000000000000000604482015260640161072e565b60a154609b54609e546040517f9a2ac6d50000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff90911660248201526060604482015260006064820152911690639a2ac6d59085906084016000604051808303818588803b158015610b1a57600080fd5b505af1158015610b2e573d6000803e3d6000fd5b5050505050610ce4565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038316906370a082319060240160206040518083038186803b158015610b9057600080fd5b505afa158015610ba4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc89190613898565b831115610c175760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f20526562616c616e6365204c5000000000000000000000604482015260640161072e565b60a154610c31906001600160a01b03848116911685612d12565b60a1546001820154609b54609e546040517f838b25200000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152938416602482015291831660448301526064820187905263ffffffff16608482015260c060a4820152600060c482015291169063838b25209060e401600060405180830381600087803b158015610ccb57600080fd5b505af1158015610cdf573d6000803e3d6000fd5b505050505b604080518481526001600160a01b03841660208201527f40637a7e139eeb28b936b8decebe78604164b2ade81ce7f4c70deb132e7614c2910160405180910390a1505050565b60665460ff1615610d7d5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b0380831660009081526098602090815260408083206099835281842033855290925290912060018201549192909116610dff5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b6000610e41610e368360010154610e3064e8d4a5100061069d88600501548860000154612c3490919063ffffffff16565b90612c21565b600284015490612c4c565b905085811015610e935760405162461bcd60e51b815260206004820152601560248201527f576974686472617720526577617264204572726f720000000000000000000000604482015260640161072e565b610e9d8187612c21565b600283015560058301548254610ebd9164e8d4a510009161069d91612c34565b60018301556001600160a01b03851615610eea57610ee56001600160a01b0386168588612e89565b610f93565b6000846001600160a01b0316609f5488604051600060405180830381858888f193505050503d8060008114610f3b576040519150601f19603f3d011682016040523d82523d6000602084013e610f40565b606091505b5050905080610f915760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080513381526001600160a01b0386811660208301528183018990528716606082015290517f3cb7cb475a33eda02ee6e719b6c2fc0c899157cfc6f098daf545354dbbce41ec9181900360800190a1505050505050565b609b546001600160a01b03166110096001546001600160a01b031690565b6001600160a01b0316336001600160a01b03161461108f5760405162461bcd60e51b815260206004820152602a60248201527f58434841494e3a206d657373656e67657220636f6e747261637420756e61757460448201527f68656e7469636174656400000000000000000000000000000000000000000000606482015260840161072e565b806001600160a01b03166110ab6001546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156110e357600080fd5b505afa1580156110f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111b91906138b1565b6001600160a01b0316146111975760405162461bcd60e51b815260206004820152602c60248201527f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f60448201527f6d61696e206d6573736167650000000000000000000000000000000000000000606482015260840161072e565b60665460ff16156111ea5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b0382166000908152609860205260408120609c5490919061121b906103e89061069d908890612c34565b9050600061123a6103e861069d609d5489612c3490919063ffffffff16565b905060006112488383612c4c565b905060006112568883612c21565b60048601549091506112689085612c4c565b6004860155600685015461127c9084612c4c565b60068601556001600160a01b038716156112a9576112a46001600160a01b0388168a83612e89565b611352565b6000896001600160a01b0316609f5483604051600060405180830381858888f193505050503d80600081146112fa576040519150601f19603f3d011682016040523d82523d6000602084013e6112ff565b606091505b50509050806113505760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080516001600160a01b038b81168252602082018490528183018790526060820186905260808201859052891660a082015290517fe42a885e97ef72aed483b57141e41f9d64499b43411f58b60a0e07fcdb6e824a9181900360c00190a1505050505050505050565b60665460ff161561140f5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b03808316600090815260986020908152604080832060998352818420338552909252909120600182015491929091166114915760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b80548511156114e25760405162461bcd60e51b815260206004820152600e60248201527f5769746864726177204572726f72000000000000000000000000000000000000604482015260640161072e565b6114eb8461062e565b61152561151a8260010154610e3064e8d4a5100061069d87600501548760000154612c3490919063ffffffff16565b600283015490612c4c565b600282015580546115369086612c21565b80825560058301546115539164e8d4a510009161069d9190612c34565b600182015560028201546115679086612c21565b60028301556001600160a01b038416156115945761158f6001600160a01b0385168487612e89565b61163d565b6000836001600160a01b0316609f5487604051600060405180830381858888f193505050503d80600081146115e5576040519150601f19603f3d011682016040523d82523d6000602084013e6115ea565b606091505b505090508061163b5760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080513381526001600160a01b0385811660208301528183018890528616606082015290517ffa2e8fcf14fd6ea11b6ebe7caf7de210198b8fe1eaf0e06d19f8d87c73860c469181900360800190a15050505050565b609a546001600160a01b03163314806116b65750609a546001600160a01b0316155b6117025760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b806001600160a01b0316826001600160a01b0316141561178a5760405162461bcd60e51b815260206004820152602860248201527f6c3120616e64206c3220746f6b656e206164647265737365732063616e6e6f7460448201527f2062652073616d65000000000000000000000000000000000000000000000000606482015260840161072e565b6001600160a01b0380831660009081526098602052604090206001810154909116156117f85760405162461bcd60e51b815260206004820181905260248201527f546f6b656e204164647265737320416c72656164792052656769737465726564604482015260640161072e565b5060408051610100810182526001600160a01b0393841680825292841660208083019182526000838501818152606085018281526080860183815260a0870184815260c088018581524260e08a019081529a865260989096529790932095518654908a167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178755945160018701805491909a16951694909417909755955160028401559051600383015593516004820155905160058201559151600683015551600790910155565b609a546001600160a01b03163314806118e65750609a546001600160a01b0316155b6119325760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b6001600160a01b038083166000908152609860205260409020600181015490911661199f5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b83816006015410156119f35760405162461bcd60e51b815260206004820152601b60248201527f4f776e657220526577617264205769746864726177204572726f720000000000604482015260640161072e565b6006810154611a029085612c21565b60068201556001600160a01b03831615611a2f57611a2a6001600160a01b0384168386612e89565b611ad8565b6000826001600160a01b0316609f5486604051600060405180830381858888f193505050503d8060008114611a80576040519150601f19603f3d011682016040523d82523d6000602084013e611a85565b606091505b5050905080611ad65760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080513381526001600160a01b03808516602083015291810186905290841660608201527f3cb71b9a1fb601579f96812b9f86ab5e914fc3e54c98d5f84d95581b2b9884f3906080015b60405180910390a150505050565b609a546001600160a01b0316331480611b535750609a546001600160a01b0316155b611b9f5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b610866612ed2565b600280541415611bf95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161072e565b6002805560665460ff1615611c505760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b34151580611c6657506001600160a01b03811615155b611cb25760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f727265637400000000000000000000000000000000604482015260640161072e565b3415611cbf575034905060005b6001600160a01b0380821660009081526098602090815260408083206099835281842033855290925290912060018201549192909116611d415760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b611d4a8361062e565b805415611db657611d8061151a8260010154610e3064e8d4a5100061069d87600501548760000154612c3490919063ffffffff16565b600282015560058201548154611dac9164e8d4a510009161069d9190611da69089612c4c565b90612c34565b6001820155611ddc565b611dd664e8d4a5100061069d846005015487612c3490919063ffffffff16565b60018201555b6001600160a01b03831615611e0057611e006001600160a01b038416333087612f78565b8054611e0c9085612c4c565b81556002820154611e1d9085612c4c565b600283015560408051338152602081018690526001600160a01b0385168183015290517f5852d1d46e583f7e92c2a572221de0e681d82ef71f489847e056b9445c0147369181900360600190a1505060016002555050565b609b546001600160a01b0316611e936001546001600160a01b031690565b6001600160a01b0316336001600160a01b031614611f195760405162461bcd60e51b815260206004820152602a60248201527f58434841494e3a206d657373656e67657220636f6e747261637420756e61757460448201527f68656e7469636174656400000000000000000000000000000000000000000000606482015260840161072e565b806001600160a01b0316611f356001546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015611f6d57600080fd5b505afa158015611f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa591906138b1565b6001600160a01b0316146120215760405162461bcd60e51b815260206004820152602c60248201527f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f60448201527f6d61696e206d6573736167650000000000000000000000000000000000000000606482015260840161072e565b60665460ff16156120745760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b0382166000908152609860205260408120609c5482906120a4906103e89061069d908990612c34565b905060006120c36103e861069d609d548a612c3490919063ffffffff16565b905060006120d18383612c4c565b905060006120df8983612c21565b90506001600160a01b038816156121d1576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038916906370a082319060240160206040518083038186803b15801561214857600080fd5b505afa15801561215c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121809190613898565b81111561219057600195506122b1565b600485015461219f9085612c4c565b600486015560068501546121b39084612c4c565b60068601556121cc6001600160a01b0389168b83612e89565b6122b1565b478111156121e257600195506122b1565b60048501546121f19085612c4c565b600486015560068501546122059084612c4c565b6006860155609f546040516000916001600160a01b038d1691849084818181858888f193505050503d8060008114612259576040519150601f19603f3d011682016040523d82523d6000602084013e61225e565b606091505b50509050806122af5760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b851561235e576001850154604080516001600160a01b038d81166024830152604482018d90529283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f650a767b00000000000000000000000000000000000000000000000000000000179052609b54609e5491926123589291169063ffffffff1683612fc9565b506123be565b604080516001600160a01b038c811682526020820184905281830187905260608201869052608082018590528a1660a082015290517ffe1f8646fcb202e48551fbfd19085116c64b291c60cede7dce3665a57c05e3819181900360c00190a15b50505050505050505050565b609b546001600160a01b03166123e86001546001600160a01b031690565b6001600160a01b0316336001600160a01b03161461246e5760405162461bcd60e51b815260206004820152602a60248201527f58434841494e3a206d657373656e67657220636f6e747261637420756e61757460448201527f68656e7469636174656400000000000000000000000000000000000000000000606482015260840161072e565b806001600160a01b031661248a6001546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156124c257600080fd5b505afa1580156124d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fa91906138b1565b6001600160a01b0316146125765760405162461bcd60e51b815260206004820152602c60248201527f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f60448201527f6d61696e206d6573736167650000000000000000000000000000000000000000606482015260840161072e565b609b546001600160a01b03166125f45760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a6564000000000000000000000000000000000000000000000000000000606482015260840161072e565b50609c91909155609d55565b505050565b609a546001600160a01b03163314806126275750609a546001600160a01b0316155b6126735760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b609a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60665460ff16156127005760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b3415158061271657506001600160a01b03811615155b6127625760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f727265637400000000000000000000000000000000604482015260640161072e565b341561276f575034905060005b6001600160a01b03808216600090815260986020526040902060018101549091166127dc5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b6001600160a01b03821615612800576128006001600160a01b038316333086612f78565b600181015460408051336024820152604481018690526001600160a01b039283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fbd2d1cab00000000000000000000000000000000000000000000000000000000179052609b54609e54919261289f9291169063ffffffff1683612fc9565b60408051338152602081018690526001600160a01b038516918101919091527f860e25c3d48fb81f0b272550dd125a5a6ab20ee7511dd3e250d04964bd37a7a990606001611b23565b609a546001600160a01b031633148061290a5750609a546001600160a01b0316155b6129565760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b609b546001600160a01b0316156129af5760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420686173206265656e20696e697469616c697a6564000000604482015260640161072e565b6001547501000000000000000000000000000000000000000000900460ff16806129f4575060015474010000000000000000000000000000000000000000900460ff16155b612a665760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff16158015612acd57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6001600160a01b03851615801590612aed57506001600160a01b03841615155b8015612b0157506001600160a01b03831615155b612b4d5760405162461bcd60e51b815260206004820152601860248201527f7a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000604482015260640161072e565b600080546001600160a01b038781167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560018054878416908316179055609b805486841690831617905560a1805492851692821692909217909155609a8054909116331790556023609c55600f609d55612bd362155cc06108fc6106c4565b612bdb61304d565b612be361319d565b612beb613314565b8015612c1a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b5050505050565b6000612c2d82846138fd565b9392505050565b6000612c2d8284613914565b6000612c2d8284613951565b6000612c2d828461398c565b60665460ff16612caa5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161072e565b606680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e9060440160206040518083038186803b158015612d7757600080fd5b505afa158015612d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612daf9190613898565b612db9919061398c565b6040516001600160a01b038516602482015260448101829052909150612e839085907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613468565b50505050565b6040516001600160a01b0383166024820152604481018290526126009084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612e01565b60665460ff1615612f255760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b606680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612cf53390565b6040516001600160a01b0380851660248301528316604482015260648101829052612e839085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612e01565b6000546040517f3dbb202b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633dbb202b9061301690869085908790600401613a1a565b600060405180830381600087803b15801561303057600080fd5b505af1158015613044573d6000803e3d6000fd5b50505050505050565b6001547501000000000000000000000000000000000000000000900460ff1680613092575060015474010000000000000000000000000000000000000000900460ff16155b6131045760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff1615801561316b57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b801561319a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b50565b6001547501000000000000000000000000000000000000000000900460ff16806131e2575060015474010000000000000000000000000000000000000000900460ff16155b6132545760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff161580156132bb57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b606680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055801561319a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6001547501000000000000000000000000000000000000000000900460ff1680613359575060015474010000000000000000000000000000000000000000900460ff16155b6133cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff1615801561343257600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6001600255801561319a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b60006134bd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661354d9092919063ffffffff16565b80519091501561260057808060200190518101906134db9190613a52565b6126005760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161072e565b606061355c8484600085613564565b949350505050565b6060824710156135dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161072e565b843b61362a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161072e565b600080866001600160a01b031685876040516136469190613a74565b60006040518083038185875af1925050503d8060008114613683576040519150601f19603f3d011682016040523d82523d6000602084013e613688565b606091505b50915091506136988282866136a3565b979650505050505050565b606083156136b2575081612c2d565b8251156136c25782518084602001fd5b8160405162461bcd60e51b815260040161072e9190613a90565b6001600160a01b038116811461319a57600080fd5b6000806040838503121561370457600080fd5b823561370f816136dc565b9150602083013561371f816136dc565b809150509250929050565b60006020828403121561373c57600080fd5b8135612c2d816136dc565b6000806040838503121561375a57600080fd5b823563ffffffff8116811461376e57600080fd5b946020939093013593505050565b6000806040838503121561378f57600080fd5b82359150602083013561371f816136dc565b6000806000606084860312156137b657600080fd5b8335925060208401356137c8816136dc565b915060408401356137d8816136dc565b809150509250925092565b6000806000606084860312156137f857600080fd5b8335613803816136dc565b92506020840135915060408401356137d8816136dc565b6000806040838503121561382d57600080fd5b50508035926020909101359150565b6000806000806080858703121561385257600080fd5b843561385d816136dc565b9350602085013561386d816136dc565b9250604085013561387d816136dc565b9150606085013561388d816136dc565b939692955090935050565b6000602082840312156138aa57600080fd5b5051919050565b6000602082840312156138c357600080fd5b8151612c2d816136dc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561390f5761390f6138ce565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561394c5761394c6138ce565b500290565b600082613987577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000821982111561399f5761399f6138ce565b500190565b60005b838110156139bf5781810151838201526020016139a7565b83811115612e835750506000910152565b600081518084526139e88160208601602086016139a4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6001600160a01b0384168152606060208201526000613a3c60608301856139d0565b905063ffffffff83166040830152949350505050565b600060208284031215613a6457600080fd5b81518015158114612c2d57600080fd5b60008251613a868184602087016139a4565b9190910192915050565b602081526000612c2d60208301846139d056fea164736f6c6343000809000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/packages/boba/gas-price-oracle/src/abi/L1StandardBridge.json b/packages/boba/gas-price-oracle/src/abi/L1StandardBridge.json new file mode 100644 index 000000000..c8bca236d --- /dev/null +++ b/packages/boba/gas-price-oracle/src/abi/L1StandardBridge.json @@ -0,0 +1,421 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "L1StandardBridge", + "sourceName": "contracts/L1/messaging/L1StandardBridge.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_l1Token", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_l2Token", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "ERC20DepositInitiated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_l1Token", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_l2Token", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "ERC20WithdrawalFinalized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "ETHDepositInitiated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "ETHWithdrawalFinalized", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_l1Token", + "type": "address" + }, + { + "internalType": "address", + "name": "_l2Token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "_l2Gas", + "type": "uint32" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "depositERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_l1Token", + "type": "address" + }, + { + "internalType": "address", + "name": "_l2Token", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "_l2Gas", + "type": "uint32" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "depositERC20To", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_l2Gas", + "type": "uint32" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "depositETH", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_l2Gas", + "type": "uint32" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "depositETHTo", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "deposits", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "donateETH", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_l1Token", + "type": "address" + }, + { + "internalType": "address", + "name": "_l2Token", + "type": "address" + }, + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "finalizeERC20Withdrawal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "finalizeETHWithdrawal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_l1messenger", + "type": "address" + }, + { + "internalType": "address", + "name": "_l2TokenBridge", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "l2TokenBridge", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "messenger", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b0319169055611975806100306000396000f3fe6080604052600436106100c05760003560e01c80638b4c40b0116100745780639a2ac6d51161004e5780639a2ac6d514610288578063a9f9e6751461029b578063b1a1a882146102bb57600080fd5b80638b4c40b0146101375780638f601f661461021557806391c49bf81461025b57600080fd5b8063485cc955116100a5578063485cc955146101b557806358a997f6146101d5578063838b2520146101f557600080fd5b80631532ec341461013e5780633cb747bf1461015e57600080fd5b3661013957333b156101195760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f41000000000000000000000000000000000060448201526064015b60405180910390fd5b61013733336213d620604051806020016040528060008152506102ce565b005b600080fd5b34801561014a57600080fd5b50610137610159366004611357565b61041a565b34801561016a57600080fd5b5060005461018b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101c157600080fd5b506101376101d03660046113ca565b610790565b3480156101e157600080fd5b506101376101f036600461141c565b61086f565b34801561020157600080fd5b5061013761021036600461149f565b6108d6565b34801561022157600080fd5b5061024d6102303660046113ca565b600260209081526000928352604080842090915290825290205481565b6040519081526020016101ac565b34801561026757600080fd5b5060015461018b9073ffffffffffffffffffffffffffffffffffffffff1681565b610137610296366004611535565b6108ef565b3480156102a757600080fd5b506101376102b6366004611598565b610937565b6101376102c9366004611611565b610c59565b600063662a633a60e01b600073420000000000000000000000000000000000000687873487604051602401610308969594939291906116da565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526001549091506103ac9073ffffffffffffffffffffffffffffffffffffffff168483610cef565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f35d79ab81f2b2017e19afb5c5571778877782d7a8786f5907f93b0f4702f4f23348560405161040b929190611735565b60405180910390a35050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1661045260005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104f25760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610110565b8073ffffffffffffffffffffffffffffffffffffffff1661052860005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b15801561056d57600080fd5b505afa158015610581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a5919061174e565b73ffffffffffffffffffffffffffffffffffffffff161461062e5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610110565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff8716908690604051610665919061176b565b60006040518083038185875af1925050503d80600081146106a2576040519150601f19603f3d011682016040523d82523d6000602084013e6106a7565b606091505b505090508061071e5760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c65640000000000000000000000006064820152608401610110565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f2ac69ee804d9a7a0984249f508dfab7cb2534b465b6ce1580f99a38ba9c5e63187878760405161077f939291906117d0565b60405180910390a350505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff161561081c5760405162461bcd60e51b815260206004820152602660248201527f436f6e74726163742068617320616c7265616479206265656e20696e6974696160448201527f6c697a65642e00000000000000000000000000000000000000000000000000006064820152608401610110565b6000805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560018054929093169116179055565b333b156108be5760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f4100000000000000000000000000000000006044820152606401610110565b6108ce8686333388888888610d77565b505050505050565b6108e68787338888888888610d77565b50505050505050565b61093133858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102ce92505050565b50505050565b60015473ffffffffffffffffffffffffffffffffffffffff1661096f60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a0f5760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610110565b8073ffffffffffffffffffffffffffffffffffffffff16610a4560005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015610a8a57600080fd5b505afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac2919061174e565b73ffffffffffffffffffffffffffffffffffffffff1614610b4b5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610110565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600260209081526040808320938b1683529290522054610b89908590611822565b73ffffffffffffffffffffffffffffffffffffffff808a166000818152600260209081526040808320948d1683529390529190912091909155610bcd908686610f27565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b388888888604051610c479493929190611839565b60405180910390a45050505050505050565b333b15610ca85760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f4100000000000000000000000000000000006044820152606401610110565b610cea33338585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102ce92505050565b505050565b6000546040517f3dbb202b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633dbb202b90610d4990869085908790600401611879565b600060405180830381600087803b158015610d6357600080fd5b505af11580156108e6573d6000803e3d6000fd5b610d9973ffffffffffffffffffffffffffffffffffffffff8916873087610ffb565b600063662a633a60e01b89898989898888604051602401610dc097969594939291906118be565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152600154909150610e649073ffffffffffffffffffffffffffffffffffffffff168583610cef565b73ffffffffffffffffffffffffffffffffffffffff808a166000908152600260209081526040808320938c1683529290522054610ea290869061191b565b73ffffffffffffffffffffffffffffffffffffffff808b1660008181526002602090815260408083208e86168085529252918290209490945551918a1692917f718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d039690610f14908b908b908a908a90611839565b60405180910390a4505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610cea9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611059565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526109319085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610f79565b60006110bb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661114b9092919063ffffffff16565b805190915015610cea57808060200190518101906110d99190611933565b610cea5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610110565b606061115a8484600085611164565b90505b9392505050565b6060824710156111dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610110565b843b61122a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610110565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611253919061176b565b60006040518083038185875af1925050503d8060008114611290576040519150601f19603f3d011682016040523d82523d6000602084013e611295565b606091505b50915091506112a58282866112b0565b979650505050505050565b606083156112bf57508161115d565b8251156112cf5782518084602001fd5b8160405162461bcd60e51b81526004016101109190611955565b73ffffffffffffffffffffffffffffffffffffffff8116811461130b57600080fd5b50565b60008083601f84011261132057600080fd5b50813567ffffffffffffffff81111561133857600080fd5b60208301915083602082850101111561135057600080fd5b9250929050565b60008060008060006080868803121561136f57600080fd5b853561137a816112e9565b9450602086013561138a816112e9565b935060408601359250606086013567ffffffffffffffff8111156113ad57600080fd5b6113b98882890161130e565b969995985093965092949392505050565b600080604083850312156113dd57600080fd5b82356113e8816112e9565b915060208301356113f8816112e9565b809150509250929050565b803563ffffffff8116811461141757600080fd5b919050565b60008060008060008060a0878903121561143557600080fd5b8635611440816112e9565b95506020870135611450816112e9565b94506040870135935061146560608801611403565b9250608087013567ffffffffffffffff81111561148157600080fd5b61148d89828a0161130e565b979a9699509497509295939492505050565b600080600080600080600060c0888a0312156114ba57600080fd5b87356114c5816112e9565b965060208801356114d5816112e9565b955060408801356114e5816112e9565b9450606088013593506114fa60808901611403565b925060a088013567ffffffffffffffff81111561151657600080fd5b6115228a828b0161130e565b989b979a50959850939692959293505050565b6000806000806060858703121561154b57600080fd5b8435611556816112e9565b935061156460208601611403565b9250604085013567ffffffffffffffff81111561158057600080fd5b61158c8782880161130e565b95989497509550505050565b600080600080600080600060c0888a0312156115b357600080fd5b87356115be816112e9565b965060208801356115ce816112e9565b955060408801356115de816112e9565b945060608801356115ee816112e9565b93506080880135925060a088013567ffffffffffffffff81111561151657600080fd5b60008060006040848603121561162657600080fd5b61162f84611403565b9250602084013567ffffffffffffffff81111561164b57600080fd5b6116578682870161130e565b9497909650939450505050565b60005b8381101561167f578181015183820152602001611667565b838111156109315750506000910152565b600081518084526116a8816020860160208601611664565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a083015261172960c0830184611690565b98975050505050505050565b82815260406020820152600061115a6040830184611690565b60006020828403121561176057600080fd5b815161115d816112e9565b6000825161177d818460208701611664565b9190910192915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8381526040602082015260006117ea604083018486611787565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611834576118346117f3565b500390565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015260606040820152600061186f606083018486611787565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526060602082015260006118a86060830185611690565b905063ffffffff83166040830152949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a083015261190e60c083018486611787565b9998505050505050505050565b6000821982111561192e5761192e6117f3565b500190565b60006020828403121561194557600080fd5b8151801515811461115d57600080fd5b60208152600061115d602083018461169056fea164736f6c6343000809000a", + "deployedBytecode": "0x6080604052600436106100c05760003560e01c80638b4c40b0116100745780639a2ac6d51161004e5780639a2ac6d514610288578063a9f9e6751461029b578063b1a1a882146102bb57600080fd5b80638b4c40b0146101375780638f601f661461021557806391c49bf81461025b57600080fd5b8063485cc955116100a5578063485cc955146101b557806358a997f6146101d5578063838b2520146101f557600080fd5b80631532ec341461013e5780633cb747bf1461015e57600080fd5b3661013957333b156101195760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f41000000000000000000000000000000000060448201526064015b60405180910390fd5b61013733336213d620604051806020016040528060008152506102ce565b005b600080fd5b34801561014a57600080fd5b50610137610159366004611357565b61041a565b34801561016a57600080fd5b5060005461018b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101c157600080fd5b506101376101d03660046113ca565b610790565b3480156101e157600080fd5b506101376101f036600461141c565b61086f565b34801561020157600080fd5b5061013761021036600461149f565b6108d6565b34801561022157600080fd5b5061024d6102303660046113ca565b600260209081526000928352604080842090915290825290205481565b6040519081526020016101ac565b34801561026757600080fd5b5060015461018b9073ffffffffffffffffffffffffffffffffffffffff1681565b610137610296366004611535565b6108ef565b3480156102a757600080fd5b506101376102b6366004611598565b610937565b6101376102c9366004611611565b610c59565b600063662a633a60e01b600073420000000000000000000000000000000000000687873487604051602401610308969594939291906116da565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526001549091506103ac9073ffffffffffffffffffffffffffffffffffffffff168483610cef565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f35d79ab81f2b2017e19afb5c5571778877782d7a8786f5907f93b0f4702f4f23348560405161040b929190611735565b60405180910390a35050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1661045260005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104f25760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610110565b8073ffffffffffffffffffffffffffffffffffffffff1661052860005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b15801561056d57600080fd5b505afa158015610581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a5919061174e565b73ffffffffffffffffffffffffffffffffffffffff161461062e5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610110565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff8716908690604051610665919061176b565b60006040518083038185875af1925050503d80600081146106a2576040519150601f19603f3d011682016040523d82523d6000602084013e6106a7565b606091505b505090508061071e5760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c65640000000000000000000000006064820152608401610110565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f2ac69ee804d9a7a0984249f508dfab7cb2534b465b6ce1580f99a38ba9c5e63187878760405161077f939291906117d0565b60405180910390a350505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff161561081c5760405162461bcd60e51b815260206004820152602660248201527f436f6e74726163742068617320616c7265616479206265656e20696e6974696160448201527f6c697a65642e00000000000000000000000000000000000000000000000000006064820152608401610110565b6000805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560018054929093169116179055565b333b156108be5760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f4100000000000000000000000000000000006044820152606401610110565b6108ce8686333388888888610d77565b505050505050565b6108e68787338888888888610d77565b50505050505050565b61093133858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102ce92505050565b50505050565b60015473ffffffffffffffffffffffffffffffffffffffff1661096f60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a0f5760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610110565b8073ffffffffffffffffffffffffffffffffffffffff16610a4560005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015610a8a57600080fd5b505afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac2919061174e565b73ffffffffffffffffffffffffffffffffffffffff1614610b4b5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610110565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600260209081526040808320938b1683529290522054610b89908590611822565b73ffffffffffffffffffffffffffffffffffffffff808a166000818152600260209081526040808320948d1683529390529190912091909155610bcd908686610f27565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b388888888604051610c479493929190611839565b60405180910390a45050505050505050565b333b15610ca85760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f4100000000000000000000000000000000006044820152606401610110565b610cea33338585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102ce92505050565b505050565b6000546040517f3dbb202b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633dbb202b90610d4990869085908790600401611879565b600060405180830381600087803b158015610d6357600080fd5b505af11580156108e6573d6000803e3d6000fd5b610d9973ffffffffffffffffffffffffffffffffffffffff8916873087610ffb565b600063662a633a60e01b89898989898888604051602401610dc097969594939291906118be565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152600154909150610e649073ffffffffffffffffffffffffffffffffffffffff168583610cef565b73ffffffffffffffffffffffffffffffffffffffff808a166000908152600260209081526040808320938c1683529290522054610ea290869061191b565b73ffffffffffffffffffffffffffffffffffffffff808b1660008181526002602090815260408083208e86168085529252918290209490945551918a1692917f718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d039690610f14908b908b908a908a90611839565b60405180910390a4505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610cea9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611059565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526109319085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610f79565b60006110bb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661114b9092919063ffffffff16565b805190915015610cea57808060200190518101906110d99190611933565b610cea5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610110565b606061115a8484600085611164565b90505b9392505050565b6060824710156111dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610110565b843b61122a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610110565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611253919061176b565b60006040518083038185875af1925050503d8060008114611290576040519150601f19603f3d011682016040523d82523d6000602084013e611295565b606091505b50915091506112a58282866112b0565b979650505050505050565b606083156112bf57508161115d565b8251156112cf5782518084602001fd5b8160405162461bcd60e51b81526004016101109190611955565b73ffffffffffffffffffffffffffffffffffffffff8116811461130b57600080fd5b50565b60008083601f84011261132057600080fd5b50813567ffffffffffffffff81111561133857600080fd5b60208301915083602082850101111561135057600080fd5b9250929050565b60008060008060006080868803121561136f57600080fd5b853561137a816112e9565b9450602086013561138a816112e9565b935060408601359250606086013567ffffffffffffffff8111156113ad57600080fd5b6113b98882890161130e565b969995985093965092949392505050565b600080604083850312156113dd57600080fd5b82356113e8816112e9565b915060208301356113f8816112e9565b809150509250929050565b803563ffffffff8116811461141757600080fd5b919050565b60008060008060008060a0878903121561143557600080fd5b8635611440816112e9565b95506020870135611450816112e9565b94506040870135935061146560608801611403565b9250608087013567ffffffffffffffff81111561148157600080fd5b61148d89828a0161130e565b979a9699509497509295939492505050565b600080600080600080600060c0888a0312156114ba57600080fd5b87356114c5816112e9565b965060208801356114d5816112e9565b955060408801356114e5816112e9565b9450606088013593506114fa60808901611403565b925060a088013567ffffffffffffffff81111561151657600080fd5b6115228a828b0161130e565b989b979a50959850939692959293505050565b6000806000806060858703121561154b57600080fd5b8435611556816112e9565b935061156460208601611403565b9250604085013567ffffffffffffffff81111561158057600080fd5b61158c8782880161130e565b95989497509550505050565b600080600080600080600060c0888a0312156115b357600080fd5b87356115be816112e9565b965060208801356115ce816112e9565b955060408801356115de816112e9565b945060608801356115ee816112e9565b93506080880135925060a088013567ffffffffffffffff81111561151657600080fd5b60008060006040848603121561162657600080fd5b61162f84611403565b9250602084013567ffffffffffffffff81111561164b57600080fd5b6116578682870161130e565b9497909650939450505050565b60005b8381101561167f578181015183820152602001611667565b838111156109315750506000910152565b600081518084526116a8816020860160208601611664565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a083015261172960c0830184611690565b98975050505050505050565b82815260406020820152600061115a6040830184611690565b60006020828403121561176057600080fd5b815161115d816112e9565b6000825161177d818460208701611664565b9190910192915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8381526040602082015260006117ea604083018486611787565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611834576118346117f3565b500390565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015260606040820152600061186f606083018486611787565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526060602082015260006118a86060830185611690565b905063ffffffff83166040830152949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a083015261190e60c083018486611787565b9998505050505050505050565b6000821982111561192e5761192e6117f3565b500190565b60006020828403121561194557600080fd5b8151801515811461115d57600080fd5b60208152600061115d602083018461169056fea164736f6c6343000809000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/packages/boba/gas-price-oracle/src/abi/L2LiquidityPool.json b/packages/boba/gas-price-oracle/src/abi/L2LiquidityPool.json new file mode 100644 index 000000000..ca8e095f2 --- /dev/null +++ b/packages/boba/gas-price-oracle/src/abi/L2LiquidityPool.json @@ -0,0 +1,791 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "L2LiquidityPool", + "sourceName": "contracts/LP/L2LiquidityPool.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "AddLiquidity", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "receivedAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "ClientDepositL2", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "userRewardFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "ownerRewardFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "ClientPayL2", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "userRewardFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "ownerRewardFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "ClientPayL2Settlement", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "OwnerRecoverFee", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "WithdrawLiquidity", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "WithdrawReward", + "type": "event" + }, + { + "inputs": [], + "name": "DAO", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_FINALIZE_WITHDRAWAL_L1_GAS", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "L1LiquidityPoolAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + } + ], + "name": "addLiquidity", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + } + ], + "name": "clientDepositL2", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + } + ], + "name": "clientPayL2", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + } + ], + "name": "clientPayL2Settlement", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_extraGas", + "type": "uint256" + } + ], + "name": "configureExtraGasRelay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_userRewardFeeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_ownerRewardFeeRate", + "type": "uint256" + } + ], + "name": "configureFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_userRewardFeeRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_ownerRewardFeeRate", + "type": "uint256" + } + ], + "name": "configureFeeExits", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_l1GasFee", + "type": "uint32" + } + ], + "name": "configureGas", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "extraGasRelay", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getFinalizeDepositL1Gas", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_l2CrossDomainMessenger", + "type": "address" + }, + { + "internalType": "address", + "name": "_L1LiquidityPoolAddress", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "messenger", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "ownerRecoverFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "ownerRewardFeeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "poolInfo", + "outputs": [ + { + "internalType": "address", + "name": "l1TokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "l2TokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "userDepositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastAccUserReward", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accUserReward", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accUserRewardPerShare", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "accOwnerReward", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "startTime", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_l1TokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_l2TokenAddress", + "type": "address" + } + ], + "name": "registerPool", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newDAO", + "type": "address" + } + ], + "name": "transferDAORole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + } + ], + "name": "updateUserRewardPerShare", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "userInfo", + "outputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardDebt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "pendingReward", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "userRewardFeeRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + }, + { + "internalType": "address payable", + "name": "_to", + "type": "address" + } + ], + "name": "withdrawLiquidity", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + } + ], + "name": "withdrawReward", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b0319169055613ae7806100306000396000f3fe6080604052600436106101cd5760003560e01c806368be42ca116100f7578063997d73df11610095578063c95f9d0e11610064578063c95f9d0e146105e9578063d1dd871a146105fc578063f2fde38b1461061c578063f48712681461063c57600080fd5b8063997d73df146104dd5780639a7b5f11146104f8578063b5e241f1146105a9578063bd2d1cab146105c957600080fd5b806381e6bdac116100d157806381e6bdac146104605780638456cb59146104805780638da5cb5b1461049557806398fabd3a146104b557600080fd5b806368be42ca1461040a57806370ac31801461042a5780637286e5e51461044057600080fd5b80633f4ba83a1161016f5780634c7d0def1161013e5780634c7d0def146103755780635c975abb14610395578063650a767b146103b85780636854e22b146103d857600080fd5b80633f4ba83a1461030a578063435fd5711461031f578063485cc9551461033557806349561dc41461035557600080fd5b80631d00a771116101ab5780631d00a7711461029357806334636648146102a6578063358fc07e146102c65780633cb747bf146102ea57600080fd5b80630f208beb146101d257806312f54c1a1461023957806316a8dda71461025b575b600080fd5b3480156101de57600080fd5b506102196101ed366004613741565b609860209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060015b60405180910390f35b34801561024557600080fd5b5061025961025436600461377a565b61065c565b005b34801561026757600080fd5b50609a5461027b906001600160a01b031681565b6040516001600160a01b039091168152602001610230565b6102596102a1366004613797565b6106f2565b3480156102b257600080fd5b506102596102c13660046137bc565b610a28565b3480156102d257600080fd5b506102dc609c5481565b604051908152602001610230565b3480156102f657600080fd5b5060005461027b906001600160a01b031681565b34801561031657600080fd5b50610259610b4b565b34801561032b57600080fd5b506102dc609b5481565b34801561034157600080fd5b50610259610350366004613741565b610bc3565b34801561036157600080fd5b506102596103703660046137e2565b610e96565b34801561038157600080fd5b50610259610390366004613824565b61116c565b3480156103a157600080fd5b5060655460ff166040519015158152602001610230565b3480156103c457600080fd5b506102596103d3366004613846565b61135c565b3480156103e457600080fd5b50609d546103f59063ffffffff1681565b60405163ffffffff9091168152602001610230565b34801561041657600080fd5b506102596104253660046137e2565b6117c0565b34801561043657600080fd5b506102dc609e5481565b34801561044c57600080fd5b5061025961045b366004613741565b611aad565b34801561046c57600080fd5b5061025961047b3660046137e2565b611cdc565b34801561048c57600080fd5b50610259611f5b565b3480156104a157600080fd5b5060995461027b906001600160a01b031681565b3480156104c157600080fd5b50609d5461027b9064010000000090046001600160a01b031681565b3480156104e957600080fd5b50609d5463ffffffff166103f5565b34801561050457600080fd5b5061056361051336600461377a565b609760205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701546001600160a01b03968716979590961695939492939192909188565b604080516001600160a01b03998a168152989097166020890152958701949094526060860192909252608085015260a084015260c083015260e082015261010001610230565b3480156105b557600080fd5b506102596105c436600461387d565b611fd1565b3480156105d557600080fd5b506102596105e4366004613846565b6120c2565b6102596105f7366004613797565b6126a7565b34801561060857600080fd5b50610259610617366004613824565b6129b3565b34801561062857600080fd5b5061025961063736600461377a565b612b22565b34801561064857600080fd5b5061025961065736600461377a565b612c45565b6001600160a01b03811660009081526097602052604090206004810154600382015410156106ee5760006106a182600301548360040154612d6590919063ffffffff16565b905081600201546000146106e25760028201546106dc906106d1906106cb8464e8d4a51000612d78565b90612d84565b600584015490612d90565b60058301555b50600481015460038201555b5050565b60655460ff161561074a5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064015b60405180910390fd5b60005a9050609e5481116107c65760405162461bcd60e51b815260206004820152602860248201527f496e73756666696369656e742047617320466f7220612052656c61792054726160448201527f6e73616374696f6e0000000000000000000000000000000000000000000000006064820152608401610741565b60006107dd609e5483612d6590919063ffffffff16565b905060005b815a11156107fc57806107f4816138c5565b9150506107e2565b3415158061082757506001600160a01b03841673420000000000000000000000000000000000000614155b6108735760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f7272656374000000000000000000000000000000006044820152606401610741565b34156108945734945073420000000000000000000000000000000000000693505b6001600160a01b03808516600090815260976020526040902060018101549091166109015760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b6001600160a01b0385167342000000000000000000000000000000000000061461093a5761093a6001600160a01b038616333089612d9c565b805460408051336024820152604481018990526001600160a01b039283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcf26fb1b00000000000000000000000000000000000000000000000000000000179052609a54609d5491926109d79291169063ffffffff165b83612e71565b60408051338152602081018990526001600160a01b0388168183015290517fe57500de6b6dcf76b201fef514aca6501809e3b700c9fbd5e803567c66edf54c9181900360600190a150505050505050565b6099546001600160a01b0316331480610a4a57506099546001600160a01b0316155b610a965760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b609a546001600160a01b0316610b145760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b6099546001600160a01b0316331480610b6d57506099546001600160a01b0316155b610bb95760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b610bc1612ef5565b565b6099546001600160a01b0316331480610be557506099546001600160a01b0316155b610c315760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b609a546001600160a01b031615610c8a5760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420686173206265656e20696e697469616c697a65640000006044820152606401610741565b6000547501000000000000000000000000000000000000000000900460ff1680610ccf575060005474010000000000000000000000000000000000000000900460ff16155b610d415760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff16158015610da857600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b0386811691909117909255609a80548216928516929092179091556099805433921682179055609d80547fffffffffffffffff0000000000000000000000000000000000000000ffffffff16640100000000909202919091179055610e3e6023600f6129b3565b610e4a620186a0610a28565b610e52612faf565b610e5a6130ff565b610e62613276565b8015610e9157600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b505050565b60655460ff1615610ee95760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b0380831660009081526097602090815260408083206098835281842033855290925290912060018201549192909116610f6b5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b6000610fad610fa28360010154610f9c64e8d4a510006106cb88600501548860000154612d7890919063ffffffff16565b90612d65565b600284015490612d90565b905085811015610fff5760405162461bcd60e51b815260206004820152601560248201527f576974686472617720526577617264204572726f7200000000000000000000006044820152606401610741565b6110098187612d65565b6002830155600583015482546110299164e8d4a51000916106cb91612d78565b60018301556001600160a01b0385167342000000000000000000000000000000000000061461106b576110666001600160a01b03861685886133c9565b611114565b6000846001600160a01b03166108fc88604051600060405180830381858888f193505050503d80600081146110bc576040519150601f19603f3d011682016040523d82523d6000602084013e6110c1565b606091505b50509050806111125760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080513381526001600160a01b0386811660208301528183018990528716606082015290517f3cb7cb475a33eda02ee6e719b6c2fc0c899157cfc6f098daf545354dbbce41ec9181900360800190a1505050505050565b609d5464010000000090046001600160a01b031633146111ce5760405162461bcd60e51b815260206004820152601560248201527f63616c6c6572206973206e6f74207468652044414f00000000000000000000006044820152606401610741565b609a546001600160a01b031661124c5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b6032821115801561125e575060328111155b6112d05760405162461bcd60e51b815260206004820152603c60248201527f7573657220616e64206f776e6572206665652072617465732073686f756c642060448201527f6265206c6f776572207468616e20352070657263656e742065616368000000006064820152608401610741565b604080516024810184905260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd1dd871a00000000000000000000000000000000000000000000000000000000179052609a54609d54610e91916001600160a01b03169063ffffffff166109d1565b609a546001600160a01b03166113da5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609a546001600160a01b03166113f86000546001600160a01b031690565b6001600160a01b0316336001600160a01b03161461147e5760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610741565b806001600160a01b031661149a6000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156114d257600080fd5b505afa1580156114e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150a91906138fe565b6001600160a01b0316146115865760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610741565b60655460ff16156115d95760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b0382166000908152609760205260408120609b5490919061160a906103e8906106cb908890612d78565b905060006116296103e86106cb609c5489612d7890919063ffffffff16565b905060006116378383612d90565b905060006116458883612d65565b60048601549091506116579085612d90565b6004860155600685015461166b9084612d90565b60068601556001600160a01b038716734200000000000000000000000000000000000006146116ad576116a86001600160a01b0388168a836133c9565b611756565b6000896001600160a01b03166108fc83604051600060405180830381858888f193505050503d80600081146116fe576040519150601f19603f3d011682016040523d82523d6000602084013e611703565b606091505b50509050806117545760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080516001600160a01b038b81168252602082018490528183018790526060820186905260808201859052891660a082015290517ff1068421680e00dfc2c4f3fc20c7f565bf1ec365420e7544365bae13d5cbc8c89181900360c00190a1505050505050505050565b60655460ff16156118135760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b03808316600090815260976020908152604080832060988352818420338552909252909120600182015491929091166118955760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b80548511156118e65760405162461bcd60e51b815260206004820152600e60248201527f5769746864726177204572726f720000000000000000000000000000000000006044820152606401610741565b6118ef8461065c565b61192961191e8260010154610f9c64e8d4a510006106cb87600501548760000154612d7890919063ffffffff16565b600283015490612d90565b6002820155805461193a9086612d65565b80825560058301546119579164e8d4a51000916106cb9190612d78565b6001820155600282015461196b9086612d65565b60028301556001600160a01b038416734200000000000000000000000000000000000006146119ad576119a86001600160a01b03851684876133c9565b611a56565b6000836001600160a01b03166108fc87604051600060405180830381858888f193505050503d80600081146119fe576040519150601f19603f3d011682016040523d82523d6000602084013e611a03565b606091505b5050905080611a545760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080513381526001600160a01b0385811660208301528183018890528616606082015290517ffa2e8fcf14fd6ea11b6ebe7caf7de210198b8fe1eaf0e06d19f8d87c73860c469181900360800190a15050505050565b6099546001600160a01b0316331480611acf57506099546001600160a01b0316155b611b1b5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b806001600160a01b0316826001600160a01b03161415611ba35760405162461bcd60e51b815260206004820152602860248201527f6c3120616e64206c3220746f6b656e206164647265737365732063616e6e6f7460448201527f2062652073616d650000000000000000000000000000000000000000000000006064820152608401610741565b6001600160a01b038082166000908152609760205260409020600181015490911615611c115760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e204164647265737320416c726561647920526567697374657264006044820152606401610741565b5060408051610100810182526001600160a01b03938416815291831660208084018281526000858501818152606087018281526080880183815260a0890184815260c08a018581524260e08c0190815298865260979097529790932097518854908a167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178955935160018901805491909a16941693909317909755955160028601555160038501559351600484015590516005830155915160068201559051600790910155565b6099546001600160a01b0316331480611cfe57506099546001600160a01b0316155b611d4a5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b6001600160a01b0380831660009081526097602052604090206001810154909116611db75760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f742052656769737465720000000000006044820152606401610741565b8381600601541015611e0b5760405162461bcd60e51b815260206004820152601b60248201527f4f776e657220526577617264205769746864726177204572726f7200000000006044820152606401610741565b6006810154611e1a9085612d65565b60068201556001600160a01b03831673420000000000000000000000000000000000000614611e5c57611e576001600160a01b03841683866133c9565b611f05565b6000826001600160a01b03166108fc86604051600060405180830381858888f193505050503d8060008114611ead576040519150601f19603f3d011682016040523d82523d6000602084013e611eb2565b606091505b5050905080611f035760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080513381526001600160a01b0384811660208301528183018790528516606082015290517f3cb71b9a1fb601579f96812b9f86ab5e914fc3e54c98d5f84d95581b2b9884f39181900360800190a150505050565b6099546001600160a01b0316331480611f7d57506099546001600160a01b0316155b611fc95760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b610bc1613412565b6099546001600160a01b0316331480611ff357506099546001600160a01b0316155b61203f5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b609a546001600160a01b03166120bd5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609e55565b609a546001600160a01b03166121405760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609a546001600160a01b031661215e6000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316146121e45760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610741565b806001600160a01b03166122006000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b15801561223857600080fd5b505afa15801561224c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227091906138fe565b6001600160a01b0316146122ec5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610741565b60655460ff161561233f5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b0382166000908152609760205260408120609b54829061236f906103e8906106cb908990612d78565b9050600061238e6103e86106cb609c548a612d7890919063ffffffff16565b9050600061239c8383612d90565b905060006123aa8983612d65565b90506001600160a01b038816734200000000000000000000000000000000000006146124b1576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038916906370a082319060240160206040518083038186803b15801561242857600080fd5b505afa15801561243c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612460919061391b565b8111156124705760019550612592565b600485015461247f9085612d90565b600486015560068501546124939084612d90565b60068601556124ac6001600160a01b0389168b836133c9565b612592565b478111156124c25760019550612592565b60048501546124d19085612d90565b600486015560068501546124e59084612d90565b60068601556040516000906001600160a01b038c16906108fc90849084818181858888f193505050503d806000811461253a576040519150601f19603f3d011682016040523d82523d6000602084013e61253f565b606091505b50509050806125905760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b851561263b578454604080516001600160a01b038d81166024830152604482018d90529283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f53174cc100000000000000000000000000000000000000000000000000000000179052609a54609d5491926126359291169063ffffffff166109d1565b5061269b565b604080516001600160a01b038c811682526020820184905281830187905260608201869052608082018590528a1660a082015290517fedb4d3b4b55168608412f15db11c00859915842963c31b1f08d910a38e1d6aa49181900360c00190a15b50505050505050505050565b600260015414156126fa5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610741565b600260015560655460ff16156127525760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b3415158061277d57506001600160a01b03811673420000000000000000000000000000000000000614155b6127c95760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f7272656374000000000000000000000000000000006044820152606401610741565b34156127e957503490507342000000000000000000000000000000000000065b6001600160a01b038082166000908152609760209081526040808320609883528184203385529092529091206001820154919290911661286b5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b6128748361065c565b8054156128e0576128aa61191e8260010154610f9c64e8d4a510006106cb87600501548760000154612d7890919063ffffffff16565b6002820155600582015481546128d69164e8d4a51000916106cb91906128d09089612d90565b90612d78565b6001820155612906565b61290064e8d4a510006106cb846005015487612d7890919063ffffffff16565b60018201555b6001600160a01b0383167342000000000000000000000000000000000000061461293f5761293f6001600160a01b038416333087612d9c565b805461294b9085612d90565b8155600282015461295c9085612d90565b600283015560408051338152602081018690526001600160a01b0385168183015290517f5852d1d46e583f7e92c2a572221de0e681d82ef71f489847e056b9445c0147369181900360600190a15050600180555050565b609d5464010000000090046001600160a01b03163314612a155760405162461bcd60e51b815260206004820152601560248201527f63616c6c6572206973206e6f74207468652044414f00000000000000000000006044820152606401610741565b609a546001600160a01b0316612a935760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b60328211158015612aa5575060328111155b612b175760405162461bcd60e51b815260206004820152603c60248201527f7573657220616e64206f776e6572206665652072617465732073686f756c642060448201527f6265206c6f776572207468616e20352070657263656e742065616368000000006064820152608401610741565b609b91909155609c55565b6099546001600160a01b0316331480612b4457506099546001600160a01b0316155b612b905760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b6001600160a01b038116612c0b5760405162461bcd60e51b8152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610741565b609980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b609d5464010000000090046001600160a01b03163314612ca75760405162461bcd60e51b815260206004820152601560248201527f63616c6c6572206973206e6f74207468652044414f00000000000000000000006044820152606401610741565b6001600160a01b038116612d235760405162461bcd60e51b815260206004820152602a60248201527f4e65772044414f20616464726573732063616e6e6f7420626520746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610741565b609d80546001600160a01b03909216640100000000027fffffffffffffffff0000000000000000000000000000000000000000ffffffff909216919091179055565b6000612d718284613934565b9392505050565b6000612d71828461394b565b6000612d718284613988565b6000612d7182846139c3565b6040516001600160a01b0380851660248301528316604482015260648101829052612e6b9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526134b8565b50505050565b6000546040517f3dbb202b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633dbb202b90612ebe90869085908790600401613a51565b600060405180830381600087803b158015612ed857600080fd5b505af1158015612eec573d6000803e3d6000fd5b50505050505050565b60655460ff16612f475760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610741565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000547501000000000000000000000000000000000000000000900460ff1680612ff4575060005474010000000000000000000000000000000000000000900460ff16155b6130665760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff161580156130cd57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b80156130fc57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b50565b6000547501000000000000000000000000000000000000000000900460ff1680613144575060005474010000000000000000000000000000000000000000900460ff16155b6131b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff1615801561321d57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905580156130fc57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6000547501000000000000000000000000000000000000000000900460ff16806132bb575060005474010000000000000000000000000000000000000000900460ff16155b61332d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff1615801561339457600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6001805580156130fc57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6040516001600160a01b038316602482015260448101829052610e919084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612de9565b60655460ff16156134655760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612f923390565b600061350d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661359d9092919063ffffffff16565b805190915015610e91578080602001905181019061352b9190613a89565b610e915760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610741565b60606135ac84846000856135b4565b949350505050565b60608247101561362c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610741565b843b61367a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610741565b600080866001600160a01b031685876040516136969190613aab565b60006040518083038185875af1925050503d80600081146136d3576040519150601f19603f3d011682016040523d82523d6000602084013e6136d8565b606091505b50915091506136e88282866136f3565b979650505050505050565b60608315613702575081612d71565b8251156137125782518084602001fd5b8160405162461bcd60e51b81526004016107419190613ac7565b6001600160a01b03811681146130fc57600080fd5b6000806040838503121561375457600080fd5b823561375f8161372c565b9150602083013561376f8161372c565b809150509250929050565b60006020828403121561378c57600080fd5b8135612d718161372c565b600080604083850312156137aa57600080fd5b82359150602083013561376f8161372c565b6000602082840312156137ce57600080fd5b813563ffffffff81168114612d7157600080fd5b6000806000606084860312156137f757600080fd5b8335925060208401356138098161372c565b915060408401356138198161372c565b809150509250925092565b6000806040838503121561383757600080fd5b50508035926020909101359150565b60008060006060848603121561385b57600080fd5b83356138668161372c565b92506020840135915060408401356138198161372c565b60006020828403121561388f57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156138f7576138f7613896565b5060010190565b60006020828403121561391057600080fd5b8151612d718161372c565b60006020828403121561392d57600080fd5b5051919050565b60008282101561394657613946613896565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561398357613983613896565b500290565b6000826139be577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082198211156139d6576139d6613896565b500190565b60005b838110156139f65781810151838201526020016139de565b83811115612e6b5750506000910152565b60008151808452613a1f8160208601602086016139db565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6001600160a01b0384168152606060208201526000613a736060830185613a07565b905063ffffffff83166040830152949350505050565b600060208284031215613a9b57600080fd5b81518015158114612d7157600080fd5b60008251613abd8184602087016139db565b9190910192915050565b602081526000612d716020830184613a0756fea164736f6c6343000809000a", + "deployedBytecode": "0x6080604052600436106101cd5760003560e01c806368be42ca116100f7578063997d73df11610095578063c95f9d0e11610064578063c95f9d0e146105e9578063d1dd871a146105fc578063f2fde38b1461061c578063f48712681461063c57600080fd5b8063997d73df146104dd5780639a7b5f11146104f8578063b5e241f1146105a9578063bd2d1cab146105c957600080fd5b806381e6bdac116100d157806381e6bdac146104605780638456cb59146104805780638da5cb5b1461049557806398fabd3a146104b557600080fd5b806368be42ca1461040a57806370ac31801461042a5780637286e5e51461044057600080fd5b80633f4ba83a1161016f5780634c7d0def1161013e5780634c7d0def146103755780635c975abb14610395578063650a767b146103b85780636854e22b146103d857600080fd5b80633f4ba83a1461030a578063435fd5711461031f578063485cc9551461033557806349561dc41461035557600080fd5b80631d00a771116101ab5780631d00a7711461029357806334636648146102a6578063358fc07e146102c65780633cb747bf146102ea57600080fd5b80630f208beb146101d257806312f54c1a1461023957806316a8dda71461025b575b600080fd5b3480156101de57600080fd5b506102196101ed366004613741565b609860209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060015b60405180910390f35b34801561024557600080fd5b5061025961025436600461377a565b61065c565b005b34801561026757600080fd5b50609a5461027b906001600160a01b031681565b6040516001600160a01b039091168152602001610230565b6102596102a1366004613797565b6106f2565b3480156102b257600080fd5b506102596102c13660046137bc565b610a28565b3480156102d257600080fd5b506102dc609c5481565b604051908152602001610230565b3480156102f657600080fd5b5060005461027b906001600160a01b031681565b34801561031657600080fd5b50610259610b4b565b34801561032b57600080fd5b506102dc609b5481565b34801561034157600080fd5b50610259610350366004613741565b610bc3565b34801561036157600080fd5b506102596103703660046137e2565b610e96565b34801561038157600080fd5b50610259610390366004613824565b61116c565b3480156103a157600080fd5b5060655460ff166040519015158152602001610230565b3480156103c457600080fd5b506102596103d3366004613846565b61135c565b3480156103e457600080fd5b50609d546103f59063ffffffff1681565b60405163ffffffff9091168152602001610230565b34801561041657600080fd5b506102596104253660046137e2565b6117c0565b34801561043657600080fd5b506102dc609e5481565b34801561044c57600080fd5b5061025961045b366004613741565b611aad565b34801561046c57600080fd5b5061025961047b3660046137e2565b611cdc565b34801561048c57600080fd5b50610259611f5b565b3480156104a157600080fd5b5060995461027b906001600160a01b031681565b3480156104c157600080fd5b50609d5461027b9064010000000090046001600160a01b031681565b3480156104e957600080fd5b50609d5463ffffffff166103f5565b34801561050457600080fd5b5061056361051336600461377a565b609760205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701546001600160a01b03968716979590961695939492939192909188565b604080516001600160a01b03998a168152989097166020890152958701949094526060860192909252608085015260a084015260c083015260e082015261010001610230565b3480156105b557600080fd5b506102596105c436600461387d565b611fd1565b3480156105d557600080fd5b506102596105e4366004613846565b6120c2565b6102596105f7366004613797565b6126a7565b34801561060857600080fd5b50610259610617366004613824565b6129b3565b34801561062857600080fd5b5061025961063736600461377a565b612b22565b34801561064857600080fd5b5061025961065736600461377a565b612c45565b6001600160a01b03811660009081526097602052604090206004810154600382015410156106ee5760006106a182600301548360040154612d6590919063ffffffff16565b905081600201546000146106e25760028201546106dc906106d1906106cb8464e8d4a51000612d78565b90612d84565b600584015490612d90565b60058301555b50600481015460038201555b5050565b60655460ff161561074a5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064015b60405180910390fd5b60005a9050609e5481116107c65760405162461bcd60e51b815260206004820152602860248201527f496e73756666696369656e742047617320466f7220612052656c61792054726160448201527f6e73616374696f6e0000000000000000000000000000000000000000000000006064820152608401610741565b60006107dd609e5483612d6590919063ffffffff16565b905060005b815a11156107fc57806107f4816138c5565b9150506107e2565b3415158061082757506001600160a01b03841673420000000000000000000000000000000000000614155b6108735760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f7272656374000000000000000000000000000000006044820152606401610741565b34156108945734945073420000000000000000000000000000000000000693505b6001600160a01b03808516600090815260976020526040902060018101549091166109015760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b6001600160a01b0385167342000000000000000000000000000000000000061461093a5761093a6001600160a01b038616333089612d9c565b805460408051336024820152604481018990526001600160a01b039283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcf26fb1b00000000000000000000000000000000000000000000000000000000179052609a54609d5491926109d79291169063ffffffff165b83612e71565b60408051338152602081018990526001600160a01b0388168183015290517fe57500de6b6dcf76b201fef514aca6501809e3b700c9fbd5e803567c66edf54c9181900360600190a150505050505050565b6099546001600160a01b0316331480610a4a57506099546001600160a01b0316155b610a965760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b609a546001600160a01b0316610b145760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b6099546001600160a01b0316331480610b6d57506099546001600160a01b0316155b610bb95760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b610bc1612ef5565b565b6099546001600160a01b0316331480610be557506099546001600160a01b0316155b610c315760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b609a546001600160a01b031615610c8a5760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420686173206265656e20696e697469616c697a65640000006044820152606401610741565b6000547501000000000000000000000000000000000000000000900460ff1680610ccf575060005474010000000000000000000000000000000000000000900460ff16155b610d415760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff16158015610da857600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b0386811691909117909255609a80548216928516929092179091556099805433921682179055609d80547fffffffffffffffff0000000000000000000000000000000000000000ffffffff16640100000000909202919091179055610e3e6023600f6129b3565b610e4a620186a0610a28565b610e52612faf565b610e5a6130ff565b610e62613276565b8015610e9157600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b505050565b60655460ff1615610ee95760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b0380831660009081526097602090815260408083206098835281842033855290925290912060018201549192909116610f6b5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b6000610fad610fa28360010154610f9c64e8d4a510006106cb88600501548860000154612d7890919063ffffffff16565b90612d65565b600284015490612d90565b905085811015610fff5760405162461bcd60e51b815260206004820152601560248201527f576974686472617720526577617264204572726f7200000000000000000000006044820152606401610741565b6110098187612d65565b6002830155600583015482546110299164e8d4a51000916106cb91612d78565b60018301556001600160a01b0385167342000000000000000000000000000000000000061461106b576110666001600160a01b03861685886133c9565b611114565b6000846001600160a01b03166108fc88604051600060405180830381858888f193505050503d80600081146110bc576040519150601f19603f3d011682016040523d82523d6000602084013e6110c1565b606091505b50509050806111125760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080513381526001600160a01b0386811660208301528183018990528716606082015290517f3cb7cb475a33eda02ee6e719b6c2fc0c899157cfc6f098daf545354dbbce41ec9181900360800190a1505050505050565b609d5464010000000090046001600160a01b031633146111ce5760405162461bcd60e51b815260206004820152601560248201527f63616c6c6572206973206e6f74207468652044414f00000000000000000000006044820152606401610741565b609a546001600160a01b031661124c5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b6032821115801561125e575060328111155b6112d05760405162461bcd60e51b815260206004820152603c60248201527f7573657220616e64206f776e6572206665652072617465732073686f756c642060448201527f6265206c6f776572207468616e20352070657263656e742065616368000000006064820152608401610741565b604080516024810184905260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd1dd871a00000000000000000000000000000000000000000000000000000000179052609a54609d54610e91916001600160a01b03169063ffffffff166109d1565b609a546001600160a01b03166113da5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609a546001600160a01b03166113f86000546001600160a01b031690565b6001600160a01b0316336001600160a01b03161461147e5760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610741565b806001600160a01b031661149a6000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156114d257600080fd5b505afa1580156114e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150a91906138fe565b6001600160a01b0316146115865760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610741565b60655460ff16156115d95760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b0382166000908152609760205260408120609b5490919061160a906103e8906106cb908890612d78565b905060006116296103e86106cb609c5489612d7890919063ffffffff16565b905060006116378383612d90565b905060006116458883612d65565b60048601549091506116579085612d90565b6004860155600685015461166b9084612d90565b60068601556001600160a01b038716734200000000000000000000000000000000000006146116ad576116a86001600160a01b0388168a836133c9565b611756565b6000896001600160a01b03166108fc83604051600060405180830381858888f193505050503d80600081146116fe576040519150601f19603f3d011682016040523d82523d6000602084013e611703565b606091505b50509050806117545760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080516001600160a01b038b81168252602082018490528183018790526060820186905260808201859052891660a082015290517ff1068421680e00dfc2c4f3fc20c7f565bf1ec365420e7544365bae13d5cbc8c89181900360c00190a1505050505050505050565b60655460ff16156118135760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b03808316600090815260976020908152604080832060988352818420338552909252909120600182015491929091166118955760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b80548511156118e65760405162461bcd60e51b815260206004820152600e60248201527f5769746864726177204572726f720000000000000000000000000000000000006044820152606401610741565b6118ef8461065c565b61192961191e8260010154610f9c64e8d4a510006106cb87600501548760000154612d7890919063ffffffff16565b600283015490612d90565b6002820155805461193a9086612d65565b80825560058301546119579164e8d4a51000916106cb9190612d78565b6001820155600282015461196b9086612d65565b60028301556001600160a01b038416734200000000000000000000000000000000000006146119ad576119a86001600160a01b03851684876133c9565b611a56565b6000836001600160a01b03166108fc87604051600060405180830381858888f193505050503d80600081146119fe576040519150601f19603f3d011682016040523d82523d6000602084013e611a03565b606091505b5050905080611a545760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080513381526001600160a01b0385811660208301528183018890528616606082015290517ffa2e8fcf14fd6ea11b6ebe7caf7de210198b8fe1eaf0e06d19f8d87c73860c469181900360800190a15050505050565b6099546001600160a01b0316331480611acf57506099546001600160a01b0316155b611b1b5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b806001600160a01b0316826001600160a01b03161415611ba35760405162461bcd60e51b815260206004820152602860248201527f6c3120616e64206c3220746f6b656e206164647265737365732063616e6e6f7460448201527f2062652073616d650000000000000000000000000000000000000000000000006064820152608401610741565b6001600160a01b038082166000908152609760205260409020600181015490911615611c115760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e204164647265737320416c726561647920526567697374657264006044820152606401610741565b5060408051610100810182526001600160a01b03938416815291831660208084018281526000858501818152606087018281526080880183815260a0890184815260c08a018581524260e08c0190815298865260979097529790932097518854908a167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178955935160018901805491909a16941693909317909755955160028601555160038501559351600484015590516005830155915160068201559051600790910155565b6099546001600160a01b0316331480611cfe57506099546001600160a01b0316155b611d4a5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b6001600160a01b0380831660009081526097602052604090206001810154909116611db75760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f742052656769737465720000000000006044820152606401610741565b8381600601541015611e0b5760405162461bcd60e51b815260206004820152601b60248201527f4f776e657220526577617264205769746864726177204572726f7200000000006044820152606401610741565b6006810154611e1a9085612d65565b60068201556001600160a01b03831673420000000000000000000000000000000000000614611e5c57611e576001600160a01b03841683866133c9565b611f05565b6000826001600160a01b03166108fc86604051600060405180830381858888f193505050503d8060008114611ead576040519150601f19603f3d011682016040523d82523d6000602084013e611eb2565b606091505b5050905080611f035760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080513381526001600160a01b0384811660208301528183018790528516606082015290517f3cb71b9a1fb601579f96812b9f86ab5e914fc3e54c98d5f84d95581b2b9884f39181900360800190a150505050565b6099546001600160a01b0316331480611f7d57506099546001600160a01b0316155b611fc95760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b610bc1613412565b6099546001600160a01b0316331480611ff357506099546001600160a01b0316155b61203f5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b609a546001600160a01b03166120bd5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609e55565b609a546001600160a01b03166121405760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609a546001600160a01b031661215e6000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316146121e45760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610741565b806001600160a01b03166122006000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b15801561223857600080fd5b505afa15801561224c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227091906138fe565b6001600160a01b0316146122ec5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610741565b60655460ff161561233f5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b0382166000908152609760205260408120609b54829061236f906103e8906106cb908990612d78565b9050600061238e6103e86106cb609c548a612d7890919063ffffffff16565b9050600061239c8383612d90565b905060006123aa8983612d65565b90506001600160a01b038816734200000000000000000000000000000000000006146124b1576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038916906370a082319060240160206040518083038186803b15801561242857600080fd5b505afa15801561243c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612460919061391b565b8111156124705760019550612592565b600485015461247f9085612d90565b600486015560068501546124939084612d90565b60068601556124ac6001600160a01b0389168b836133c9565b612592565b478111156124c25760019550612592565b60048501546124d19085612d90565b600486015560068501546124e59084612d90565b60068601556040516000906001600160a01b038c16906108fc90849084818181858888f193505050503d806000811461253a576040519150601f19603f3d011682016040523d82523d6000602084013e61253f565b606091505b50509050806125905760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b851561263b578454604080516001600160a01b038d81166024830152604482018d90529283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f53174cc100000000000000000000000000000000000000000000000000000000179052609a54609d5491926126359291169063ffffffff166109d1565b5061269b565b604080516001600160a01b038c811682526020820184905281830187905260608201869052608082018590528a1660a082015290517fedb4d3b4b55168608412f15db11c00859915842963c31b1f08d910a38e1d6aa49181900360c00190a15b50505050505050505050565b600260015414156126fa5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610741565b600260015560655460ff16156127525760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b3415158061277d57506001600160a01b03811673420000000000000000000000000000000000000614155b6127c95760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f7272656374000000000000000000000000000000006044820152606401610741565b34156127e957503490507342000000000000000000000000000000000000065b6001600160a01b038082166000908152609760209081526040808320609883528184203385529092529091206001820154919290911661286b5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b6128748361065c565b8054156128e0576128aa61191e8260010154610f9c64e8d4a510006106cb87600501548760000154612d7890919063ffffffff16565b6002820155600582015481546128d69164e8d4a51000916106cb91906128d09089612d90565b90612d78565b6001820155612906565b61290064e8d4a510006106cb846005015487612d7890919063ffffffff16565b60018201555b6001600160a01b0383167342000000000000000000000000000000000000061461293f5761293f6001600160a01b038416333087612d9c565b805461294b9085612d90565b8155600282015461295c9085612d90565b600283015560408051338152602081018690526001600160a01b0385168183015290517f5852d1d46e583f7e92c2a572221de0e681d82ef71f489847e056b9445c0147369181900360600190a15050600180555050565b609d5464010000000090046001600160a01b03163314612a155760405162461bcd60e51b815260206004820152601560248201527f63616c6c6572206973206e6f74207468652044414f00000000000000000000006044820152606401610741565b609a546001600160a01b0316612a935760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b60328211158015612aa5575060328111155b612b175760405162461bcd60e51b815260206004820152603c60248201527f7573657220616e64206f776e6572206665652072617465732073686f756c642060448201527f6265206c6f776572207468616e20352070657263656e742065616368000000006064820152608401610741565b609b91909155609c55565b6099546001600160a01b0316331480612b4457506099546001600160a01b0316155b612b905760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b6001600160a01b038116612c0b5760405162461bcd60e51b8152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610741565b609980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b609d5464010000000090046001600160a01b03163314612ca75760405162461bcd60e51b815260206004820152601560248201527f63616c6c6572206973206e6f74207468652044414f00000000000000000000006044820152606401610741565b6001600160a01b038116612d235760405162461bcd60e51b815260206004820152602a60248201527f4e65772044414f20616464726573732063616e6e6f7420626520746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610741565b609d80546001600160a01b03909216640100000000027fffffffffffffffff0000000000000000000000000000000000000000ffffffff909216919091179055565b6000612d718284613934565b9392505050565b6000612d71828461394b565b6000612d718284613988565b6000612d7182846139c3565b6040516001600160a01b0380851660248301528316604482015260648101829052612e6b9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526134b8565b50505050565b6000546040517f3dbb202b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633dbb202b90612ebe90869085908790600401613a51565b600060405180830381600087803b158015612ed857600080fd5b505af1158015612eec573d6000803e3d6000fd5b50505050505050565b60655460ff16612f475760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610741565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000547501000000000000000000000000000000000000000000900460ff1680612ff4575060005474010000000000000000000000000000000000000000900460ff16155b6130665760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff161580156130cd57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b80156130fc57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b50565b6000547501000000000000000000000000000000000000000000900460ff1680613144575060005474010000000000000000000000000000000000000000900460ff16155b6131b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff1615801561321d57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905580156130fc57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6000547501000000000000000000000000000000000000000000900460ff16806132bb575060005474010000000000000000000000000000000000000000900460ff16155b61332d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff1615801561339457600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6001805580156130fc57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6040516001600160a01b038316602482015260448101829052610e919084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612de9565b60655460ff16156134655760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612f923390565b600061350d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661359d9092919063ffffffff16565b805190915015610e91578080602001905181019061352b9190613a89565b610e915760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610741565b60606135ac84846000856135b4565b949350505050565b60608247101561362c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610741565b843b61367a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610741565b600080866001600160a01b031685876040516136969190613aab565b60006040518083038185875af1925050503d80600081146136d3576040519150601f19603f3d011682016040523d82523d6000602084013e6136d8565b606091505b50915091506136e88282866136f3565b979650505050505050565b60608315613702575081612d71565b8251156137125782518084602001fd5b8160405162461bcd60e51b81526004016107419190613ac7565b6001600160a01b03811681146130fc57600080fd5b6000806040838503121561375457600080fd5b823561375f8161372c565b9150602083013561376f8161372c565b809150509250929050565b60006020828403121561378c57600080fd5b8135612d718161372c565b600080604083850312156137aa57600080fd5b82359150602083013561376f8161372c565b6000602082840312156137ce57600080fd5b813563ffffffff81168114612d7157600080fd5b6000806000606084860312156137f757600080fd5b8335925060208401356138098161372c565b915060408401356138198161372c565b809150509250925092565b6000806040838503121561383757600080fd5b50508035926020909101359150565b60008060006060848603121561385b57600080fd5b83356138668161372c565b92506020840135915060408401356138198161372c565b60006020828403121561388f57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156138f7576138f7613896565b5060010190565b60006020828403121561391057600080fd5b8151612d718161372c565b60006020828403121561392d57600080fd5b5051919050565b60008282101561394657613946613896565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561398357613983613896565b500290565b6000826139be577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082198211156139d6576139d6613896565b500190565b60005b838110156139f65781810151838201526020016139de565b83811115612e6b5750506000910152565b60008151808452613a1f8160208601602086016139db565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6001600160a01b0384168152606060208201526000613a736060830185613a07565b905063ffffffff83166040830152949350505050565b600060208284031215613a9b57600080fd5b81518015158114612d7157600080fd5b60008251613abd8184602087016139db565b9190910192915050565b602081526000612d716020830184613a0756fea164736f6c6343000809000a", + "linkReferences": {}, + "deployedLinkReferences": {} +} From 1d5c43972a10be8a152204dd0d16ec9be583f761 Mon Sep 17 00:00:00 2001 From: cby3149 Date: Tue, 21 Dec 2021 15:59:42 -0800 Subject: [PATCH 8/8] Add boba package in gas oracle --- ops/docker/Dockerfile.boba_gas-price-oracle | 2 + .../src/abi/DiscretionaryExitBurn.json | 89 -- .../src/abi/L1LiquidityPool.json | 812 ------------------ .../src/abi/L1StandardBridge.json | 421 --------- .../src/abi/L2LiquidityPool.json | 791 ----------------- 5 files changed, 2 insertions(+), 2113 deletions(-) delete mode 100644 packages/boba/gas-price-oracle/src/abi/DiscretionaryExitBurn.json delete mode 100644 packages/boba/gas-price-oracle/src/abi/L1LiquidityPool.json delete mode 100644 packages/boba/gas-price-oracle/src/abi/L1StandardBridge.json delete mode 100644 packages/boba/gas-price-oracle/src/abi/L2LiquidityPool.json diff --git a/ops/docker/Dockerfile.boba_gas-price-oracle b/ops/docker/Dockerfile.boba_gas-price-oracle index b24e2d761..21aa543e2 100644 --- a/ops/docker/Dockerfile.boba_gas-price-oracle +++ b/ops/docker/Dockerfile.boba_gas-price-oracle @@ -6,6 +6,8 @@ WORKDIR /opt/optimism/ COPY --from=builder /optimism/*.json /optimism/yarn.lock ./ COPY --from=builder /optimism/node_modules ./node_modules +# copy @boba package +COPY --from=builder /optimism/packages/boba/contracts ./node_modules/@boba/contracts # copy deps (would have been nice if docker followed the symlinks required) COPY --from=builder /optimism/packages/core-utils/package.json ./packages/core-utils/package.json diff --git a/packages/boba/gas-price-oracle/src/abi/DiscretionaryExitBurn.json b/packages/boba/gas-price-oracle/src/abi/DiscretionaryExitBurn.json deleted file mode 100644 index ef13bf052..000000000 --- a/packages/boba/gas-price-oracle/src/abi/DiscretionaryExitBurn.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "DiscretionaryExitBurn", - "sourceName": "contracts/DiscretionaryExitBurn.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_l2Bridge", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "uint32", - "name": "_l1Gas", - "type": "uint32" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "burnAndWithdraw", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_extraGas", - "type": "uint256" - } - ], - "name": "configureExtraGasRelay", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "extraGasRelay", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "l2Bridge", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50604051610bd6380380610bd683398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610b43806100936000396000f3fe60806040526004361061003f5760003560e01c80636f0fbfb41461004457806370ac318014610059578063ae1f6aaf14610082578063b5e241f1146100d4575b600080fd5b610057610052366004610892565b6100f4565b005b34801561006557600080fd5b5061006f60015481565b6040519081526020015b60405180910390f35b34801561008e57600080fd5b506000546100af9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610079565b3480156100e057600080fd5b506100576100ef36600461093a565b610373565b60005a9050600154811161018f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f496e73756666696369656e742047617320466f7220612052656c61792054726160448201527f6e73616374696f6e00000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60006101a6600154836104c490919063ffffffff16565b905060005b815a11156101c557806101bd81610982565b9150506101ab565b341515806101fd575073ffffffffffffffffffffffffffffffffffffffff881673420000000000000000000000000000000000000614155b610263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f416d6f756e7420496e636f7272656374000000000000000000000000000000006044820152606401610186565b34156102845734965073420000000000000000000000000000000000000697505b73ffffffffffffffffffffffffffffffffffffffff8816734200000000000000000000000000000000000006146102d7576102d773ffffffffffffffffffffffffffffffffffffffff891633308a6104d7565b6000546040517fa3a7954800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063a3a7954890610337908b9033908c908c908c908c906004016109bb565b600060405180830381600087803b15801561035157600080fd5b505af1158015610365573d6000803e3d6000fd5b505050505050505050505050565b73420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103cd57600080fd5b505afa1580156103e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104059190610a47565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f63616c6c6572206973206e6f74207468652067617350726963654f7261636c6560448201527f206f776e657200000000000000000000000000000000000000000000000000006064820152608401610186565b600155565b60006104d08284610a64565b9392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261056c908590610572565b50505050565b60006105d4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166106839092919063ffffffff16565b80519091501561067e57808060200190518101906105f29190610a7b565b61067e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610186565b505050565b6060610692848460008561069a565b949350505050565b60608247101561072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610186565b843b610794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610186565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516107bd9190610ac9565b60006040518083038185875af1925050503d80600081146107fa576040519150601f19603f3d011682016040523d82523d6000602084013e6107ff565b606091505b509150915061080f82828661081a565b979650505050505050565b606083156108295750816104d0565b8251156108395782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101869190610ae5565b73ffffffffffffffffffffffffffffffffffffffff8116811461088f57600080fd5b50565b6000806000806000608086880312156108aa57600080fd5b85356108b58161086d565b945060208601359350604086013563ffffffff811681146108d557600080fd5b9250606086013567ffffffffffffffff808211156108f257600080fd5b818801915088601f83011261090657600080fd5b81358181111561091557600080fd5b89602082850101111561092757600080fd5b9699959850939650602001949392505050565b60006020828403121561094c57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156109b4576109b4610953565b5060010190565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015263ffffffff8516606083015260a060808301528260a0830152828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050979650505050505050565b600060208284031215610a5957600080fd5b81516104d08161086d565b600082821015610a7657610a76610953565b500390565b600060208284031215610a8d57600080fd5b815180151581146104d057600080fd5b60005b83811015610ab8578181015183820152602001610aa0565b8381111561056c5750506000910152565b60008251610adb818460208701610a9d565b9190910192915050565b6020815260008251806020840152610b04816040850160208701610a9d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea164736f6c6343000809000a", - "deployedBytecode": "0x60806040526004361061003f5760003560e01c80636f0fbfb41461004457806370ac318014610059578063ae1f6aaf14610082578063b5e241f1146100d4575b600080fd5b610057610052366004610892565b6100f4565b005b34801561006557600080fd5b5061006f60015481565b6040519081526020015b60405180910390f35b34801561008e57600080fd5b506000546100af9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610079565b3480156100e057600080fd5b506100576100ef36600461093a565b610373565b60005a9050600154811161018f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f496e73756666696369656e742047617320466f7220612052656c61792054726160448201527f6e73616374696f6e00000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60006101a6600154836104c490919063ffffffff16565b905060005b815a11156101c557806101bd81610982565b9150506101ab565b341515806101fd575073ffffffffffffffffffffffffffffffffffffffff881673420000000000000000000000000000000000000614155b610263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f416d6f756e7420496e636f7272656374000000000000000000000000000000006044820152606401610186565b34156102845734965073420000000000000000000000000000000000000697505b73ffffffffffffffffffffffffffffffffffffffff8816734200000000000000000000000000000000000006146102d7576102d773ffffffffffffffffffffffffffffffffffffffff891633308a6104d7565b6000546040517fa3a7954800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063a3a7954890610337908b9033908c908c908c908c906004016109bb565b600060405180830381600087803b15801561035157600080fd5b505af1158015610365573d6000803e3d6000fd5b505050505050505050505050565b73420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103cd57600080fd5b505afa1580156103e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104059190610a47565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f63616c6c6572206973206e6f74207468652067617350726963654f7261636c6560448201527f206f776e657200000000000000000000000000000000000000000000000000006064820152608401610186565b600155565b60006104d08284610a64565b9392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261056c908590610572565b50505050565b60006105d4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166106839092919063ffffffff16565b80519091501561067e57808060200190518101906105f29190610a7b565b61067e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610186565b505050565b6060610692848460008561069a565b949350505050565b60608247101561072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610186565b843b610794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610186565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516107bd9190610ac9565b60006040518083038185875af1925050503d80600081146107fa576040519150601f19603f3d011682016040523d82523d6000602084013e6107ff565b606091505b509150915061080f82828661081a565b979650505050505050565b606083156108295750816104d0565b8251156108395782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101869190610ae5565b73ffffffffffffffffffffffffffffffffffffffff8116811461088f57600080fd5b50565b6000806000806000608086880312156108aa57600080fd5b85356108b58161086d565b945060208601359350604086013563ffffffff811681146108d557600080fd5b9250606086013567ffffffffffffffff808211156108f257600080fd5b818801915088601f83011261090657600080fd5b81358181111561091557600080fd5b89602082850101111561092757600080fd5b9699959850939650602001949392505050565b60006020828403121561094c57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156109b4576109b4610953565b5060010190565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015263ffffffff8516606083015260a060808301528260a0830152828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050979650505050505050565b600060208284031215610a5957600080fd5b81516104d08161086d565b600082821015610a7657610a76610953565b500390565b600060208284031215610a8d57600080fd5b815180151581146104d057600080fd5b60005b83811015610ab8578181015183820152602001610aa0565b8381111561056c5750506000910152565b60008251610adb818460208701610a9d565b9190910192915050565b6020815260008251806020840152610b04816040850160208701610a9d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea164736f6c6343000809000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/boba/gas-price-oracle/src/abi/L1LiquidityPool.json b/packages/boba/gas-price-oracle/src/abi/L1LiquidityPool.json deleted file mode 100644 index d252865b0..000000000 --- a/packages/boba/gas-price-oracle/src/abi/L1LiquidityPool.json +++ /dev/null @@ -1,812 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "L1LiquidityPool", - "sourceName": "contracts/LP/L1LiquidityPool.sol", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "AddLiquidity", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "receivedAmount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "ClientDepositL1", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "userRewardFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "ownerRewardFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "totalFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "ClientPayL1", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "userRewardFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "ownerRewardFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "totalFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "ClientPayL1Settlement", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "receiver", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "OwnerRecoverFee", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Paused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "RebalanceLP", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Unpaused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "receiver", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "WithdrawLiquidity", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "receiver", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "WithdrawReward", - "type": "event" - }, - { - "inputs": [], - "name": "L1StandardBridgeAddress", - "outputs": [ - { - "internalType": "address payable", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "L2LiquidityPoolAddress", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "SAFE_GAS_STIPEND", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "SETTLEMENT_L2_GAS", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "addLiquidity", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "clientDepositL1", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address payable", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "clientPayL1", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address payable", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "clientPayL1Settlement", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_userRewardFeeRate", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_ownerRewardFeeRate", - "type": "uint256" - } - ], - "name": "configureFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "_l2GasFee", - "type": "uint32" - }, - { - "internalType": "uint256", - "name": "_safeGas", - "type": "uint256" - } - ], - "name": "configureGas", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l1CrossDomainMessenger", - "type": "address" - }, - { - "internalType": "address", - "name": "_l1CrossDomainMessengerFast", - "type": "address" - }, - { - "internalType": "address", - "name": "_L2LiquidityPoolAddress", - "type": "address" - }, - { - "internalType": "address payable", - "name": "_L1StandardBridgeAddress", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "l1CrossDomainMessenger", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - } - ], - "name": "ownerRecoverFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "ownerRewardFeeRate", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "paused", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "poolInfo", - "outputs": [ - { - "internalType": "address", - "name": "l1TokenAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "l2TokenAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "userDepositAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastAccUserReward", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "accUserReward", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "accUserRewardPerShare", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "accOwnerReward", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "startTime", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "rebalanceLP", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l1TokenAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "_l2TokenAddress", - "type": "address" - } - ], - "name": "registerPool", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "relayerMessenger", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "senderMessenger", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "unpause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "updateUserRewardPerShare", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "userInfo", - "outputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "rewardDebt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "pendingReward", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "userRewardFeeRate", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "internalType": "address payable", - "name": "_to", - "type": "address" - } - ], - "name": "withdrawLiquidity", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - } - ], - "name": "withdrawReward", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b0319908116909155600180549091169055613ab08061003c6000396000f3fe6080604052600436106101c25760003560e01c8063818c021e116100f7578063c95f9d0e11610095578063f2fde38b11610064578063f2fde38b146105bb578063f64b5f44146105db578063f72e5aa0146105ee578063f8c8765e1461060e57600080fd5b8063c95f9d0e14610536578063cf26fb1b14610549578063d04a966a14610569578063d1dd871a1461059b57600080fd5b80638cac7893116100d15780638cac7893146104255780638da5cb5b146104455780639a7b5f1114610465578063a71198691461051657600080fd5b8063818c021e146103d057806381e6bdac146103f05780638456cb591461041057600080fd5b806349561dc41161016457806353174cc11161013e57806353174cc11461034d5780635c975abb1461036d57806368be42ca146103905780637286e5e5146103b057600080fd5b806349561dc4146102df578063508e01c4146102ff578063513f31321461033757600080fd5b8063369fd102116101a0578063369fd102146102745780633f4ba83a146102945780633f89e952146102a9578063435fd571146102c957600080fd5b80630f208beb146101c757806312f54c1a1461022e578063358fc07e14610250575b600080fd5b3480156101d357600080fd5b5061020e6101e23660046136f1565b609960209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060015b60405180910390f35b34801561023a57600080fd5b5061024e61024936600461372a565b61062e565b005b34801561025c57600080fd5b50610266609d5481565b604051908152602001610225565b34801561028057600080fd5b5061024e61028f366004613747565b6106c4565b3480156102a057600080fd5b5061024e6107f0565b3480156102b557600080fd5b5061024e6102c436600461377c565b610868565b3480156102d557600080fd5b50610266609c5481565b3480156102eb57600080fd5b5061024e6102fa3660046137a1565b610d2a565b34801561030b57600080fd5b5060005461031f906001600160a01b031681565b6040516001600160a01b039091168152602001610225565b34801561034357600080fd5b50610266609f5481565b34801561035957600080fd5b5061024e6103683660046137e3565b610feb565b34801561037957600080fd5b5060665460ff166040519015158152602001610225565b34801561039c57600080fd5b5061024e6103ab3660046137a1565b6113bc565b3480156103bc57600080fd5b5061024e6103cb3660046136f1565b611694565b3480156103dc57600080fd5b5060015461031f906001600160a01b031681565b3480156103fc57600080fd5b5061024e61040b3660046137a1565b6118c4565b34801561041c57600080fd5b5061024e611b31565b34801561043157600080fd5b5060a15461031f906001600160a01b031681565b34801561045157600080fd5b50609a5461031f906001600160a01b031681565b34801561047157600080fd5b506104d061048036600461372a565b609860205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701546001600160a01b03968716979590961695939492939192909188565b604080516001600160a01b03998a168152989097166020890152958701949094526060860192909252608085015260a084015260c083015260e082015261010001610225565b34801561052257600080fd5b5060a05461031f906001600160a01b031681565b61024e61054436600461377c565b611ba7565b34801561055557600080fd5b5061024e6105643660046137e3565b611e75565b34801561057557600080fd5b50609e546105869063ffffffff1681565b60405163ffffffff9091168152602001610225565b3480156105a757600080fd5b5061024e6105b636600461381a565b6123ca565b3480156105c757600080fd5b5061024e6105d636600461372a565b612605565b61024e6105e936600461377c565b6126ad565b3480156105fa57600080fd5b50609b5461031f906001600160a01b031681565b34801561061a57600080fd5b5061024e61062936600461383c565b6128e8565b6001600160a01b03811660009081526098602052604090206004810154600382015410156106c057600061067382600301548360040154612c2190919063ffffffff16565b905081600201546000146106b45760028201546106ae906106a39061069d8464e8d4a51000612c34565b90612c40565b600584015490612c4c565b60058301555b50600481015460038201555b5050565b609a546001600160a01b03163314806106e65750609a546001600160a01b0316155b6107375760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064015b60405180910390fd5b609b546001600160a01b03166107b55760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a6564000000000000000000000000000000000000000000000000000000606482015260840161072e565b609e80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9390931692909217909155609f55565b609a546001600160a01b03163314806108125750609a546001600160a01b0316155b61085e5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b610866612c58565b565b609a546001600160a01b031633148061088a5750609a546001600160a01b0316155b6108d65760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b60665460ff16156109295760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b816109765760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f727265637400000000000000000000000000000000604482015260640161072e565b6001600160a01b038082166000908152609860205260409020609b549091166109e15760405162461bcd60e51b815260206004820152601e60248201527f4c32204c697175696469747920506f6f6c204e6f742052656769737465720000604482015260640161072e565b60018101546001600160a01b0316610a3b5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b6001600160a01b038216610b385747831115610a995760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f20526562616c616e6365204c5000000000000000000000604482015260640161072e565b60a154609b54609e546040517f9a2ac6d50000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff90911660248201526060604482015260006064820152911690639a2ac6d59085906084016000604051808303818588803b158015610b1a57600080fd5b505af1158015610b2e573d6000803e3d6000fd5b5050505050610ce4565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038316906370a082319060240160206040518083038186803b158015610b9057600080fd5b505afa158015610ba4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc89190613898565b831115610c175760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f20526562616c616e6365204c5000000000000000000000604482015260640161072e565b60a154610c31906001600160a01b03848116911685612d12565b60a1546001820154609b54609e546040517f838b25200000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152938416602482015291831660448301526064820187905263ffffffff16608482015260c060a4820152600060c482015291169063838b25209060e401600060405180830381600087803b158015610ccb57600080fd5b505af1158015610cdf573d6000803e3d6000fd5b505050505b604080518481526001600160a01b03841660208201527f40637a7e139eeb28b936b8decebe78604164b2ade81ce7f4c70deb132e7614c2910160405180910390a1505050565b60665460ff1615610d7d5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b0380831660009081526098602090815260408083206099835281842033855290925290912060018201549192909116610dff5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b6000610e41610e368360010154610e3064e8d4a5100061069d88600501548860000154612c3490919063ffffffff16565b90612c21565b600284015490612c4c565b905085811015610e935760405162461bcd60e51b815260206004820152601560248201527f576974686472617720526577617264204572726f720000000000000000000000604482015260640161072e565b610e9d8187612c21565b600283015560058301548254610ebd9164e8d4a510009161069d91612c34565b60018301556001600160a01b03851615610eea57610ee56001600160a01b0386168588612e89565b610f93565b6000846001600160a01b0316609f5488604051600060405180830381858888f193505050503d8060008114610f3b576040519150601f19603f3d011682016040523d82523d6000602084013e610f40565b606091505b5050905080610f915760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080513381526001600160a01b0386811660208301528183018990528716606082015290517f3cb7cb475a33eda02ee6e719b6c2fc0c899157cfc6f098daf545354dbbce41ec9181900360800190a1505050505050565b609b546001600160a01b03166110096001546001600160a01b031690565b6001600160a01b0316336001600160a01b03161461108f5760405162461bcd60e51b815260206004820152602a60248201527f58434841494e3a206d657373656e67657220636f6e747261637420756e61757460448201527f68656e7469636174656400000000000000000000000000000000000000000000606482015260840161072e565b806001600160a01b03166110ab6001546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156110e357600080fd5b505afa1580156110f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111b91906138b1565b6001600160a01b0316146111975760405162461bcd60e51b815260206004820152602c60248201527f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f60448201527f6d61696e206d6573736167650000000000000000000000000000000000000000606482015260840161072e565b60665460ff16156111ea5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b0382166000908152609860205260408120609c5490919061121b906103e89061069d908890612c34565b9050600061123a6103e861069d609d5489612c3490919063ffffffff16565b905060006112488383612c4c565b905060006112568883612c21565b60048601549091506112689085612c4c565b6004860155600685015461127c9084612c4c565b60068601556001600160a01b038716156112a9576112a46001600160a01b0388168a83612e89565b611352565b6000896001600160a01b0316609f5483604051600060405180830381858888f193505050503d80600081146112fa576040519150601f19603f3d011682016040523d82523d6000602084013e6112ff565b606091505b50509050806113505760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080516001600160a01b038b81168252602082018490528183018790526060820186905260808201859052891660a082015290517fe42a885e97ef72aed483b57141e41f9d64499b43411f58b60a0e07fcdb6e824a9181900360c00190a1505050505050505050565b60665460ff161561140f5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b03808316600090815260986020908152604080832060998352818420338552909252909120600182015491929091166114915760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b80548511156114e25760405162461bcd60e51b815260206004820152600e60248201527f5769746864726177204572726f72000000000000000000000000000000000000604482015260640161072e565b6114eb8461062e565b61152561151a8260010154610e3064e8d4a5100061069d87600501548760000154612c3490919063ffffffff16565b600283015490612c4c565b600282015580546115369086612c21565b80825560058301546115539164e8d4a510009161069d9190612c34565b600182015560028201546115679086612c21565b60028301556001600160a01b038416156115945761158f6001600160a01b0385168487612e89565b61163d565b6000836001600160a01b0316609f5487604051600060405180830381858888f193505050503d80600081146115e5576040519150601f19603f3d011682016040523d82523d6000602084013e6115ea565b606091505b505090508061163b5760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080513381526001600160a01b0385811660208301528183018890528616606082015290517ffa2e8fcf14fd6ea11b6ebe7caf7de210198b8fe1eaf0e06d19f8d87c73860c469181900360800190a15050505050565b609a546001600160a01b03163314806116b65750609a546001600160a01b0316155b6117025760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b806001600160a01b0316826001600160a01b0316141561178a5760405162461bcd60e51b815260206004820152602860248201527f6c3120616e64206c3220746f6b656e206164647265737365732063616e6e6f7460448201527f2062652073616d65000000000000000000000000000000000000000000000000606482015260840161072e565b6001600160a01b0380831660009081526098602052604090206001810154909116156117f85760405162461bcd60e51b815260206004820181905260248201527f546f6b656e204164647265737320416c72656164792052656769737465726564604482015260640161072e565b5060408051610100810182526001600160a01b0393841680825292841660208083019182526000838501818152606085018281526080860183815260a0870184815260c088018581524260e08a019081529a865260989096529790932095518654908a167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178755945160018701805491909a16951694909417909755955160028401559051600383015593516004820155905160058201559151600683015551600790910155565b609a546001600160a01b03163314806118e65750609a546001600160a01b0316155b6119325760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b6001600160a01b038083166000908152609860205260409020600181015490911661199f5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b83816006015410156119f35760405162461bcd60e51b815260206004820152601b60248201527f4f776e657220526577617264205769746864726177204572726f720000000000604482015260640161072e565b6006810154611a029085612c21565b60068201556001600160a01b03831615611a2f57611a2a6001600160a01b0384168386612e89565b611ad8565b6000826001600160a01b0316609f5486604051600060405180830381858888f193505050503d8060008114611a80576040519150601f19603f3d011682016040523d82523d6000602084013e611a85565b606091505b5050905080611ad65760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080513381526001600160a01b03808516602083015291810186905290841660608201527f3cb71b9a1fb601579f96812b9f86ab5e914fc3e54c98d5f84d95581b2b9884f3906080015b60405180910390a150505050565b609a546001600160a01b0316331480611b535750609a546001600160a01b0316155b611b9f5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b610866612ed2565b600280541415611bf95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161072e565b6002805560665460ff1615611c505760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b34151580611c6657506001600160a01b03811615155b611cb25760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f727265637400000000000000000000000000000000604482015260640161072e565b3415611cbf575034905060005b6001600160a01b0380821660009081526098602090815260408083206099835281842033855290925290912060018201549192909116611d415760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b611d4a8361062e565b805415611db657611d8061151a8260010154610e3064e8d4a5100061069d87600501548760000154612c3490919063ffffffff16565b600282015560058201548154611dac9164e8d4a510009161069d9190611da69089612c4c565b90612c34565b6001820155611ddc565b611dd664e8d4a5100061069d846005015487612c3490919063ffffffff16565b60018201555b6001600160a01b03831615611e0057611e006001600160a01b038416333087612f78565b8054611e0c9085612c4c565b81556002820154611e1d9085612c4c565b600283015560408051338152602081018690526001600160a01b0385168183015290517f5852d1d46e583f7e92c2a572221de0e681d82ef71f489847e056b9445c0147369181900360600190a1505060016002555050565b609b546001600160a01b0316611e936001546001600160a01b031690565b6001600160a01b0316336001600160a01b031614611f195760405162461bcd60e51b815260206004820152602a60248201527f58434841494e3a206d657373656e67657220636f6e747261637420756e61757460448201527f68656e7469636174656400000000000000000000000000000000000000000000606482015260840161072e565b806001600160a01b0316611f356001546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015611f6d57600080fd5b505afa158015611f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa591906138b1565b6001600160a01b0316146120215760405162461bcd60e51b815260206004820152602c60248201527f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f60448201527f6d61696e206d6573736167650000000000000000000000000000000000000000606482015260840161072e565b60665460ff16156120745760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b0382166000908152609860205260408120609c5482906120a4906103e89061069d908990612c34565b905060006120c36103e861069d609d548a612c3490919063ffffffff16565b905060006120d18383612c4c565b905060006120df8983612c21565b90506001600160a01b038816156121d1576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038916906370a082319060240160206040518083038186803b15801561214857600080fd5b505afa15801561215c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121809190613898565b81111561219057600195506122b1565b600485015461219f9085612c4c565b600486015560068501546121b39084612c4c565b60068601556121cc6001600160a01b0389168b83612e89565b6122b1565b478111156121e257600195506122b1565b60048501546121f19085612c4c565b600486015560068501546122059084612c4c565b6006860155609f546040516000916001600160a01b038d1691849084818181858888f193505050503d8060008114612259576040519150601f19603f3d011682016040523d82523d6000602084013e61225e565b606091505b50509050806122af5760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b851561235e576001850154604080516001600160a01b038d81166024830152604482018d90529283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f650a767b00000000000000000000000000000000000000000000000000000000179052609b54609e5491926123589291169063ffffffff1683612fc9565b506123be565b604080516001600160a01b038c811682526020820184905281830187905260608201869052608082018590528a1660a082015290517ffe1f8646fcb202e48551fbfd19085116c64b291c60cede7dce3665a57c05e3819181900360c00190a15b50505050505050505050565b609b546001600160a01b03166123e86001546001600160a01b031690565b6001600160a01b0316336001600160a01b03161461246e5760405162461bcd60e51b815260206004820152602a60248201527f58434841494e3a206d657373656e67657220636f6e747261637420756e61757460448201527f68656e7469636174656400000000000000000000000000000000000000000000606482015260840161072e565b806001600160a01b031661248a6001546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156124c257600080fd5b505afa1580156124d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fa91906138b1565b6001600160a01b0316146125765760405162461bcd60e51b815260206004820152602c60248201527f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f60448201527f6d61696e206d6573736167650000000000000000000000000000000000000000606482015260840161072e565b609b546001600160a01b03166125f45760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a6564000000000000000000000000000000000000000000000000000000606482015260840161072e565b50609c91909155609d55565b505050565b609a546001600160a01b03163314806126275750609a546001600160a01b0316155b6126735760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b609a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60665460ff16156127005760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b3415158061271657506001600160a01b03811615155b6127625760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f727265637400000000000000000000000000000000604482015260640161072e565b341561276f575034905060005b6001600160a01b03808216600090815260986020526040902060018101549091166127dc5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b6001600160a01b03821615612800576128006001600160a01b038316333086612f78565b600181015460408051336024820152604481018690526001600160a01b039283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fbd2d1cab00000000000000000000000000000000000000000000000000000000179052609b54609e54919261289f9291169063ffffffff1683612fc9565b60408051338152602081018690526001600160a01b038516918101919091527f860e25c3d48fb81f0b272550dd125a5a6ab20ee7511dd3e250d04964bd37a7a990606001611b23565b609a546001600160a01b031633148061290a5750609a546001600160a01b0316155b6129565760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b609b546001600160a01b0316156129af5760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420686173206265656e20696e697469616c697a6564000000604482015260640161072e565b6001547501000000000000000000000000000000000000000000900460ff16806129f4575060015474010000000000000000000000000000000000000000900460ff16155b612a665760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff16158015612acd57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6001600160a01b03851615801590612aed57506001600160a01b03841615155b8015612b0157506001600160a01b03831615155b612b4d5760405162461bcd60e51b815260206004820152601860248201527f7a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000604482015260640161072e565b600080546001600160a01b038781167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560018054878416908316179055609b805486841690831617905560a1805492851692821692909217909155609a8054909116331790556023609c55600f609d55612bd362155cc06108fc6106c4565b612bdb61304d565b612be361319d565b612beb613314565b8015612c1a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b5050505050565b6000612c2d82846138fd565b9392505050565b6000612c2d8284613914565b6000612c2d8284613951565b6000612c2d828461398c565b60665460ff16612caa5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161072e565b606680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e9060440160206040518083038186803b158015612d7757600080fd5b505afa158015612d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612daf9190613898565b612db9919061398c565b6040516001600160a01b038516602482015260448101829052909150612e839085907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613468565b50505050565b6040516001600160a01b0383166024820152604481018290526126009084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612e01565b60665460ff1615612f255760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b606680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612cf53390565b6040516001600160a01b0380851660248301528316604482015260648101829052612e839085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612e01565b6000546040517f3dbb202b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633dbb202b9061301690869085908790600401613a1a565b600060405180830381600087803b15801561303057600080fd5b505af1158015613044573d6000803e3d6000fd5b50505050505050565b6001547501000000000000000000000000000000000000000000900460ff1680613092575060015474010000000000000000000000000000000000000000900460ff16155b6131045760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff1615801561316b57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b801561319a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b50565b6001547501000000000000000000000000000000000000000000900460ff16806131e2575060015474010000000000000000000000000000000000000000900460ff16155b6132545760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff161580156132bb57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b606680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055801561319a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6001547501000000000000000000000000000000000000000000900460ff1680613359575060015474010000000000000000000000000000000000000000900460ff16155b6133cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff1615801561343257600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6001600255801561319a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b60006134bd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661354d9092919063ffffffff16565b80519091501561260057808060200190518101906134db9190613a52565b6126005760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161072e565b606061355c8484600085613564565b949350505050565b6060824710156135dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161072e565b843b61362a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161072e565b600080866001600160a01b031685876040516136469190613a74565b60006040518083038185875af1925050503d8060008114613683576040519150601f19603f3d011682016040523d82523d6000602084013e613688565b606091505b50915091506136988282866136a3565b979650505050505050565b606083156136b2575081612c2d565b8251156136c25782518084602001fd5b8160405162461bcd60e51b815260040161072e9190613a90565b6001600160a01b038116811461319a57600080fd5b6000806040838503121561370457600080fd5b823561370f816136dc565b9150602083013561371f816136dc565b809150509250929050565b60006020828403121561373c57600080fd5b8135612c2d816136dc565b6000806040838503121561375a57600080fd5b823563ffffffff8116811461376e57600080fd5b946020939093013593505050565b6000806040838503121561378f57600080fd5b82359150602083013561371f816136dc565b6000806000606084860312156137b657600080fd5b8335925060208401356137c8816136dc565b915060408401356137d8816136dc565b809150509250925092565b6000806000606084860312156137f857600080fd5b8335613803816136dc565b92506020840135915060408401356137d8816136dc565b6000806040838503121561382d57600080fd5b50508035926020909101359150565b6000806000806080858703121561385257600080fd5b843561385d816136dc565b9350602085013561386d816136dc565b9250604085013561387d816136dc565b9150606085013561388d816136dc565b939692955090935050565b6000602082840312156138aa57600080fd5b5051919050565b6000602082840312156138c357600080fd5b8151612c2d816136dc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561390f5761390f6138ce565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561394c5761394c6138ce565b500290565b600082613987577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000821982111561399f5761399f6138ce565b500190565b60005b838110156139bf5781810151838201526020016139a7565b83811115612e835750506000910152565b600081518084526139e88160208601602086016139a4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6001600160a01b0384168152606060208201526000613a3c60608301856139d0565b905063ffffffff83166040830152949350505050565b600060208284031215613a6457600080fd5b81518015158114612c2d57600080fd5b60008251613a868184602087016139a4565b9190910192915050565b602081526000612c2d60208301846139d056fea164736f6c6343000809000a", - "deployedBytecode": "0x6080604052600436106101c25760003560e01c8063818c021e116100f7578063c95f9d0e11610095578063f2fde38b11610064578063f2fde38b146105bb578063f64b5f44146105db578063f72e5aa0146105ee578063f8c8765e1461060e57600080fd5b8063c95f9d0e14610536578063cf26fb1b14610549578063d04a966a14610569578063d1dd871a1461059b57600080fd5b80638cac7893116100d15780638cac7893146104255780638da5cb5b146104455780639a7b5f1114610465578063a71198691461051657600080fd5b8063818c021e146103d057806381e6bdac146103f05780638456cb591461041057600080fd5b806349561dc41161016457806353174cc11161013e57806353174cc11461034d5780635c975abb1461036d57806368be42ca146103905780637286e5e5146103b057600080fd5b806349561dc4146102df578063508e01c4146102ff578063513f31321461033757600080fd5b8063369fd102116101a0578063369fd102146102745780633f4ba83a146102945780633f89e952146102a9578063435fd571146102c957600080fd5b80630f208beb146101c757806312f54c1a1461022e578063358fc07e14610250575b600080fd5b3480156101d357600080fd5b5061020e6101e23660046136f1565b609960209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060015b60405180910390f35b34801561023a57600080fd5b5061024e61024936600461372a565b61062e565b005b34801561025c57600080fd5b50610266609d5481565b604051908152602001610225565b34801561028057600080fd5b5061024e61028f366004613747565b6106c4565b3480156102a057600080fd5b5061024e6107f0565b3480156102b557600080fd5b5061024e6102c436600461377c565b610868565b3480156102d557600080fd5b50610266609c5481565b3480156102eb57600080fd5b5061024e6102fa3660046137a1565b610d2a565b34801561030b57600080fd5b5060005461031f906001600160a01b031681565b6040516001600160a01b039091168152602001610225565b34801561034357600080fd5b50610266609f5481565b34801561035957600080fd5b5061024e6103683660046137e3565b610feb565b34801561037957600080fd5b5060665460ff166040519015158152602001610225565b34801561039c57600080fd5b5061024e6103ab3660046137a1565b6113bc565b3480156103bc57600080fd5b5061024e6103cb3660046136f1565b611694565b3480156103dc57600080fd5b5060015461031f906001600160a01b031681565b3480156103fc57600080fd5b5061024e61040b3660046137a1565b6118c4565b34801561041c57600080fd5b5061024e611b31565b34801561043157600080fd5b5060a15461031f906001600160a01b031681565b34801561045157600080fd5b50609a5461031f906001600160a01b031681565b34801561047157600080fd5b506104d061048036600461372a565b609860205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701546001600160a01b03968716979590961695939492939192909188565b604080516001600160a01b03998a168152989097166020890152958701949094526060860192909252608085015260a084015260c083015260e082015261010001610225565b34801561052257600080fd5b5060a05461031f906001600160a01b031681565b61024e61054436600461377c565b611ba7565b34801561055557600080fd5b5061024e6105643660046137e3565b611e75565b34801561057557600080fd5b50609e546105869063ffffffff1681565b60405163ffffffff9091168152602001610225565b3480156105a757600080fd5b5061024e6105b636600461381a565b6123ca565b3480156105c757600080fd5b5061024e6105d636600461372a565b612605565b61024e6105e936600461377c565b6126ad565b3480156105fa57600080fd5b50609b5461031f906001600160a01b031681565b34801561061a57600080fd5b5061024e61062936600461383c565b6128e8565b6001600160a01b03811660009081526098602052604090206004810154600382015410156106c057600061067382600301548360040154612c2190919063ffffffff16565b905081600201546000146106b45760028201546106ae906106a39061069d8464e8d4a51000612c34565b90612c40565b600584015490612c4c565b60058301555b50600481015460038201555b5050565b609a546001600160a01b03163314806106e65750609a546001600160a01b0316155b6107375760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064015b60405180910390fd5b609b546001600160a01b03166107b55760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a6564000000000000000000000000000000000000000000000000000000606482015260840161072e565b609e80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9390931692909217909155609f55565b609a546001600160a01b03163314806108125750609a546001600160a01b0316155b61085e5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b610866612c58565b565b609a546001600160a01b031633148061088a5750609a546001600160a01b0316155b6108d65760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b60665460ff16156109295760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b816109765760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f727265637400000000000000000000000000000000604482015260640161072e565b6001600160a01b038082166000908152609860205260409020609b549091166109e15760405162461bcd60e51b815260206004820152601e60248201527f4c32204c697175696469747920506f6f6c204e6f742052656769737465720000604482015260640161072e565b60018101546001600160a01b0316610a3b5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b6001600160a01b038216610b385747831115610a995760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f20526562616c616e6365204c5000000000000000000000604482015260640161072e565b60a154609b54609e546040517f9a2ac6d50000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff90911660248201526060604482015260006064820152911690639a2ac6d59085906084016000604051808303818588803b158015610b1a57600080fd5b505af1158015610b2e573d6000803e3d6000fd5b5050505050610ce4565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038316906370a082319060240160206040518083038186803b158015610b9057600080fd5b505afa158015610ba4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc89190613898565b831115610c175760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f20526562616c616e6365204c5000000000000000000000604482015260640161072e565b60a154610c31906001600160a01b03848116911685612d12565b60a1546001820154609b54609e546040517f838b25200000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152938416602482015291831660448301526064820187905263ffffffff16608482015260c060a4820152600060c482015291169063838b25209060e401600060405180830381600087803b158015610ccb57600080fd5b505af1158015610cdf573d6000803e3d6000fd5b505050505b604080518481526001600160a01b03841660208201527f40637a7e139eeb28b936b8decebe78604164b2ade81ce7f4c70deb132e7614c2910160405180910390a1505050565b60665460ff1615610d7d5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b0380831660009081526098602090815260408083206099835281842033855290925290912060018201549192909116610dff5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b6000610e41610e368360010154610e3064e8d4a5100061069d88600501548860000154612c3490919063ffffffff16565b90612c21565b600284015490612c4c565b905085811015610e935760405162461bcd60e51b815260206004820152601560248201527f576974686472617720526577617264204572726f720000000000000000000000604482015260640161072e565b610e9d8187612c21565b600283015560058301548254610ebd9164e8d4a510009161069d91612c34565b60018301556001600160a01b03851615610eea57610ee56001600160a01b0386168588612e89565b610f93565b6000846001600160a01b0316609f5488604051600060405180830381858888f193505050503d8060008114610f3b576040519150601f19603f3d011682016040523d82523d6000602084013e610f40565b606091505b5050905080610f915760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080513381526001600160a01b0386811660208301528183018990528716606082015290517f3cb7cb475a33eda02ee6e719b6c2fc0c899157cfc6f098daf545354dbbce41ec9181900360800190a1505050505050565b609b546001600160a01b03166110096001546001600160a01b031690565b6001600160a01b0316336001600160a01b03161461108f5760405162461bcd60e51b815260206004820152602a60248201527f58434841494e3a206d657373656e67657220636f6e747261637420756e61757460448201527f68656e7469636174656400000000000000000000000000000000000000000000606482015260840161072e565b806001600160a01b03166110ab6001546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156110e357600080fd5b505afa1580156110f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111b91906138b1565b6001600160a01b0316146111975760405162461bcd60e51b815260206004820152602c60248201527f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f60448201527f6d61696e206d6573736167650000000000000000000000000000000000000000606482015260840161072e565b60665460ff16156111ea5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b0382166000908152609860205260408120609c5490919061121b906103e89061069d908890612c34565b9050600061123a6103e861069d609d5489612c3490919063ffffffff16565b905060006112488383612c4c565b905060006112568883612c21565b60048601549091506112689085612c4c565b6004860155600685015461127c9084612c4c565b60068601556001600160a01b038716156112a9576112a46001600160a01b0388168a83612e89565b611352565b6000896001600160a01b0316609f5483604051600060405180830381858888f193505050503d80600081146112fa576040519150601f19603f3d011682016040523d82523d6000602084013e6112ff565b606091505b50509050806113505760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080516001600160a01b038b81168252602082018490528183018790526060820186905260808201859052891660a082015290517fe42a885e97ef72aed483b57141e41f9d64499b43411f58b60a0e07fcdb6e824a9181900360c00190a1505050505050505050565b60665460ff161561140f5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b03808316600090815260986020908152604080832060998352818420338552909252909120600182015491929091166114915760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b80548511156114e25760405162461bcd60e51b815260206004820152600e60248201527f5769746864726177204572726f72000000000000000000000000000000000000604482015260640161072e565b6114eb8461062e565b61152561151a8260010154610e3064e8d4a5100061069d87600501548760000154612c3490919063ffffffff16565b600283015490612c4c565b600282015580546115369086612c21565b80825560058301546115539164e8d4a510009161069d9190612c34565b600182015560028201546115679086612c21565b60028301556001600160a01b038416156115945761158f6001600160a01b0385168487612e89565b61163d565b6000836001600160a01b0316609f5487604051600060405180830381858888f193505050503d80600081146115e5576040519150601f19603f3d011682016040523d82523d6000602084013e6115ea565b606091505b505090508061163b5760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080513381526001600160a01b0385811660208301528183018890528616606082015290517ffa2e8fcf14fd6ea11b6ebe7caf7de210198b8fe1eaf0e06d19f8d87c73860c469181900360800190a15050505050565b609a546001600160a01b03163314806116b65750609a546001600160a01b0316155b6117025760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b806001600160a01b0316826001600160a01b0316141561178a5760405162461bcd60e51b815260206004820152602860248201527f6c3120616e64206c3220746f6b656e206164647265737365732063616e6e6f7460448201527f2062652073616d65000000000000000000000000000000000000000000000000606482015260840161072e565b6001600160a01b0380831660009081526098602052604090206001810154909116156117f85760405162461bcd60e51b815260206004820181905260248201527f546f6b656e204164647265737320416c72656164792052656769737465726564604482015260640161072e565b5060408051610100810182526001600160a01b0393841680825292841660208083019182526000838501818152606085018281526080860183815260a0870184815260c088018581524260e08a019081529a865260989096529790932095518654908a167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178755945160018701805491909a16951694909417909755955160028401559051600383015593516004820155905160058201559151600683015551600790910155565b609a546001600160a01b03163314806118e65750609a546001600160a01b0316155b6119325760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b6001600160a01b038083166000908152609860205260409020600181015490911661199f5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b83816006015410156119f35760405162461bcd60e51b815260206004820152601b60248201527f4f776e657220526577617264205769746864726177204572726f720000000000604482015260640161072e565b6006810154611a029085612c21565b60068201556001600160a01b03831615611a2f57611a2a6001600160a01b0384168386612e89565b611ad8565b6000826001600160a01b0316609f5486604051600060405180830381858888f193505050503d8060008114611a80576040519150601f19603f3d011682016040523d82523d6000602084013e611a85565b606091505b5050905080611ad65760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b604080513381526001600160a01b03808516602083015291810186905290841660608201527f3cb71b9a1fb601579f96812b9f86ab5e914fc3e54c98d5f84d95581b2b9884f3906080015b60405180910390a150505050565b609a546001600160a01b0316331480611b535750609a546001600160a01b0316155b611b9f5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b610866612ed2565b600280541415611bf95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161072e565b6002805560665460ff1615611c505760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b34151580611c6657506001600160a01b03811615155b611cb25760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f727265637400000000000000000000000000000000604482015260640161072e565b3415611cbf575034905060005b6001600160a01b0380821660009081526098602090815260408083206099835281842033855290925290912060018201549192909116611d415760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b611d4a8361062e565b805415611db657611d8061151a8260010154610e3064e8d4a5100061069d87600501548760000154612c3490919063ffffffff16565b600282015560058201548154611dac9164e8d4a510009161069d9190611da69089612c4c565b90612c34565b6001820155611ddc565b611dd664e8d4a5100061069d846005015487612c3490919063ffffffff16565b60018201555b6001600160a01b03831615611e0057611e006001600160a01b038416333087612f78565b8054611e0c9085612c4c565b81556002820154611e1d9085612c4c565b600283015560408051338152602081018690526001600160a01b0385168183015290517f5852d1d46e583f7e92c2a572221de0e681d82ef71f489847e056b9445c0147369181900360600190a1505060016002555050565b609b546001600160a01b0316611e936001546001600160a01b031690565b6001600160a01b0316336001600160a01b031614611f195760405162461bcd60e51b815260206004820152602a60248201527f58434841494e3a206d657373656e67657220636f6e747261637420756e61757460448201527f68656e7469636174656400000000000000000000000000000000000000000000606482015260840161072e565b806001600160a01b0316611f356001546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015611f6d57600080fd5b505afa158015611f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa591906138b1565b6001600160a01b0316146120215760405162461bcd60e51b815260206004820152602c60248201527f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f60448201527f6d61696e206d6573736167650000000000000000000000000000000000000000606482015260840161072e565b60665460ff16156120745760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b6001600160a01b0382166000908152609860205260408120609c5482906120a4906103e89061069d908990612c34565b905060006120c36103e861069d609d548a612c3490919063ffffffff16565b905060006120d18383612c4c565b905060006120df8983612c21565b90506001600160a01b038816156121d1576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038916906370a082319060240160206040518083038186803b15801561214857600080fd5b505afa15801561215c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121809190613898565b81111561219057600195506122b1565b600485015461219f9085612c4c565b600486015560068501546121b39084612c4c565b60068601556121cc6001600160a01b0389168b83612e89565b6122b1565b478111156121e257600195506122b1565b60048501546121f19085612c4c565b600486015560068501546122059084612c4c565b6006860155609f546040516000916001600160a01b038d1691849084818181858888f193505050503d8060008114612259576040519150601f19603f3d011682016040523d82523d6000602084013e61225e565b606091505b50509050806122af5760405162461bcd60e51b815260206004820152601460248201527f4661696c656420746f2073656e64204574686572000000000000000000000000604482015260640161072e565b505b851561235e576001850154604080516001600160a01b038d81166024830152604482018d90529283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f650a767b00000000000000000000000000000000000000000000000000000000179052609b54609e5491926123589291169063ffffffff1683612fc9565b506123be565b604080516001600160a01b038c811682526020820184905281830187905260608201869052608082018590528a1660a082015290517ffe1f8646fcb202e48551fbfd19085116c64b291c60cede7dce3665a57c05e3819181900360c00190a15b50505050505050505050565b609b546001600160a01b03166123e86001546001600160a01b031690565b6001600160a01b0316336001600160a01b03161461246e5760405162461bcd60e51b815260206004820152602a60248201527f58434841494e3a206d657373656e67657220636f6e747261637420756e61757460448201527f68656e7469636174656400000000000000000000000000000000000000000000606482015260840161072e565b806001600160a01b031661248a6001546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156124c257600080fd5b505afa1580156124d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fa91906138b1565b6001600160a01b0316146125765760405162461bcd60e51b815260206004820152602c60248201527f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f60448201527f6d61696e206d6573736167650000000000000000000000000000000000000000606482015260840161072e565b609b546001600160a01b03166125f45760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a6564000000000000000000000000000000000000000000000000000000606482015260840161072e565b50609c91909155609d55565b505050565b609a546001600160a01b03163314806126275750609a546001600160a01b0316155b6126735760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b609a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60665460ff16156127005760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b3415158061271657506001600160a01b03811615155b6127625760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f727265637400000000000000000000000000000000604482015260640161072e565b341561276f575034905060005b6001600160a01b03808216600090815260986020526040902060018101549091166127dc5760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f74205265676973746572000000000000604482015260640161072e565b6001600160a01b03821615612800576128006001600160a01b038316333086612f78565b600181015460408051336024820152604481018690526001600160a01b039283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fbd2d1cab00000000000000000000000000000000000000000000000000000000179052609b54609e54919261289f9291169063ffffffff1683612fc9565b60408051338152602081018690526001600160a01b038516918101919091527f860e25c3d48fb81f0b272550dd125a5a6ab20ee7511dd3e250d04964bd37a7a990606001611b23565b609a546001600160a01b031633148061290a5750609a546001600160a01b0316155b6129565760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161072e565b609b546001600160a01b0316156129af5760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420686173206265656e20696e697469616c697a6564000000604482015260640161072e565b6001547501000000000000000000000000000000000000000000900460ff16806129f4575060015474010000000000000000000000000000000000000000900460ff16155b612a665760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff16158015612acd57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6001600160a01b03851615801590612aed57506001600160a01b03841615155b8015612b0157506001600160a01b03831615155b612b4d5760405162461bcd60e51b815260206004820152601860248201527f7a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000604482015260640161072e565b600080546001600160a01b038781167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560018054878416908316179055609b805486841690831617905560a1805492851692821692909217909155609a8054909116331790556023609c55600f609d55612bd362155cc06108fc6106c4565b612bdb61304d565b612be361319d565b612beb613314565b8015612c1a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b5050505050565b6000612c2d82846138fd565b9392505050565b6000612c2d8284613914565b6000612c2d8284613951565b6000612c2d828461398c565b60665460ff16612caa5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161072e565b606680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e9060440160206040518083038186803b158015612d7757600080fd5b505afa158015612d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612daf9190613898565b612db9919061398c565b6040516001600160a01b038516602482015260448101829052909150612e839085907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613468565b50505050565b6040516001600160a01b0383166024820152604481018290526126009084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612e01565b60665460ff1615612f255760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161072e565b606680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612cf53390565b6040516001600160a01b0380851660248301528316604482015260648101829052612e839085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612e01565b6000546040517f3dbb202b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633dbb202b9061301690869085908790600401613a1a565b600060405180830381600087803b15801561303057600080fd5b505af1158015613044573d6000803e3d6000fd5b50505050505050565b6001547501000000000000000000000000000000000000000000900460ff1680613092575060015474010000000000000000000000000000000000000000900460ff16155b6131045760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff1615801561316b57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b801561319a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b50565b6001547501000000000000000000000000000000000000000000900460ff16806131e2575060015474010000000000000000000000000000000000000000900460ff16155b6132545760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff161580156132bb57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b606680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055801561319a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6001547501000000000000000000000000000000000000000000900460ff1680613359575060015474010000000000000000000000000000000000000000900460ff16155b6133cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161072e565b6001547501000000000000000000000000000000000000000000900460ff1615801561343257600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6001600255801561319a57600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b60006134bd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661354d9092919063ffffffff16565b80519091501561260057808060200190518101906134db9190613a52565b6126005760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161072e565b606061355c8484600085613564565b949350505050565b6060824710156135dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161072e565b843b61362a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161072e565b600080866001600160a01b031685876040516136469190613a74565b60006040518083038185875af1925050503d8060008114613683576040519150601f19603f3d011682016040523d82523d6000602084013e613688565b606091505b50915091506136988282866136a3565b979650505050505050565b606083156136b2575081612c2d565b8251156136c25782518084602001fd5b8160405162461bcd60e51b815260040161072e9190613a90565b6001600160a01b038116811461319a57600080fd5b6000806040838503121561370457600080fd5b823561370f816136dc565b9150602083013561371f816136dc565b809150509250929050565b60006020828403121561373c57600080fd5b8135612c2d816136dc565b6000806040838503121561375a57600080fd5b823563ffffffff8116811461376e57600080fd5b946020939093013593505050565b6000806040838503121561378f57600080fd5b82359150602083013561371f816136dc565b6000806000606084860312156137b657600080fd5b8335925060208401356137c8816136dc565b915060408401356137d8816136dc565b809150509250925092565b6000806000606084860312156137f857600080fd5b8335613803816136dc565b92506020840135915060408401356137d8816136dc565b6000806040838503121561382d57600080fd5b50508035926020909101359150565b6000806000806080858703121561385257600080fd5b843561385d816136dc565b9350602085013561386d816136dc565b9250604085013561387d816136dc565b9150606085013561388d816136dc565b939692955090935050565b6000602082840312156138aa57600080fd5b5051919050565b6000602082840312156138c357600080fd5b8151612c2d816136dc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561390f5761390f6138ce565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561394c5761394c6138ce565b500290565b600082613987577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000821982111561399f5761399f6138ce565b500190565b60005b838110156139bf5781810151838201526020016139a7565b83811115612e835750506000910152565b600081518084526139e88160208601602086016139a4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6001600160a01b0384168152606060208201526000613a3c60608301856139d0565b905063ffffffff83166040830152949350505050565b600060208284031215613a6457600080fd5b81518015158114612c2d57600080fd5b60008251613a868184602087016139a4565b9190910192915050565b602081526000612c2d60208301846139d056fea164736f6c6343000809000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/boba/gas-price-oracle/src/abi/L1StandardBridge.json b/packages/boba/gas-price-oracle/src/abi/L1StandardBridge.json deleted file mode 100644 index c8bca236d..000000000 --- a/packages/boba/gas-price-oracle/src/abi/L1StandardBridge.json +++ /dev/null @@ -1,421 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "L1StandardBridge", - "sourceName": "contracts/L1/messaging/L1StandardBridge.sol", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "ERC20DepositInitiated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "ERC20WithdrawalFinalized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "ETHDepositInitiated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "ETHWithdrawalFinalized", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "uint32", - "name": "_l2Gas", - "type": "uint32" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "depositERC20", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "uint32", - "name": "_l2Gas", - "type": "uint32" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "depositERC20To", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "_l2Gas", - "type": "uint32" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "depositETH", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint32", - "name": "_l2Gas", - "type": "uint32" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "depositETHTo", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "deposits", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "donateETH", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "finalizeERC20Withdrawal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "finalizeETHWithdrawal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l1messenger", - "type": "address" - }, - { - "internalType": "address", - "name": "_l2TokenBridge", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "l2TokenBridge", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "messenger", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b0319169055611975806100306000396000f3fe6080604052600436106100c05760003560e01c80638b4c40b0116100745780639a2ac6d51161004e5780639a2ac6d514610288578063a9f9e6751461029b578063b1a1a882146102bb57600080fd5b80638b4c40b0146101375780638f601f661461021557806391c49bf81461025b57600080fd5b8063485cc955116100a5578063485cc955146101b557806358a997f6146101d5578063838b2520146101f557600080fd5b80631532ec341461013e5780633cb747bf1461015e57600080fd5b3661013957333b156101195760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f41000000000000000000000000000000000060448201526064015b60405180910390fd5b61013733336213d620604051806020016040528060008152506102ce565b005b600080fd5b34801561014a57600080fd5b50610137610159366004611357565b61041a565b34801561016a57600080fd5b5060005461018b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101c157600080fd5b506101376101d03660046113ca565b610790565b3480156101e157600080fd5b506101376101f036600461141c565b61086f565b34801561020157600080fd5b5061013761021036600461149f565b6108d6565b34801561022157600080fd5b5061024d6102303660046113ca565b600260209081526000928352604080842090915290825290205481565b6040519081526020016101ac565b34801561026757600080fd5b5060015461018b9073ffffffffffffffffffffffffffffffffffffffff1681565b610137610296366004611535565b6108ef565b3480156102a757600080fd5b506101376102b6366004611598565b610937565b6101376102c9366004611611565b610c59565b600063662a633a60e01b600073420000000000000000000000000000000000000687873487604051602401610308969594939291906116da565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526001549091506103ac9073ffffffffffffffffffffffffffffffffffffffff168483610cef565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f35d79ab81f2b2017e19afb5c5571778877782d7a8786f5907f93b0f4702f4f23348560405161040b929190611735565b60405180910390a35050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1661045260005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104f25760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610110565b8073ffffffffffffffffffffffffffffffffffffffff1661052860005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b15801561056d57600080fd5b505afa158015610581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a5919061174e565b73ffffffffffffffffffffffffffffffffffffffff161461062e5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610110565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff8716908690604051610665919061176b565b60006040518083038185875af1925050503d80600081146106a2576040519150601f19603f3d011682016040523d82523d6000602084013e6106a7565b606091505b505090508061071e5760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c65640000000000000000000000006064820152608401610110565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f2ac69ee804d9a7a0984249f508dfab7cb2534b465b6ce1580f99a38ba9c5e63187878760405161077f939291906117d0565b60405180910390a350505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff161561081c5760405162461bcd60e51b815260206004820152602660248201527f436f6e74726163742068617320616c7265616479206265656e20696e6974696160448201527f6c697a65642e00000000000000000000000000000000000000000000000000006064820152608401610110565b6000805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560018054929093169116179055565b333b156108be5760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f4100000000000000000000000000000000006044820152606401610110565b6108ce8686333388888888610d77565b505050505050565b6108e68787338888888888610d77565b50505050505050565b61093133858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102ce92505050565b50505050565b60015473ffffffffffffffffffffffffffffffffffffffff1661096f60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a0f5760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610110565b8073ffffffffffffffffffffffffffffffffffffffff16610a4560005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015610a8a57600080fd5b505afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac2919061174e565b73ffffffffffffffffffffffffffffffffffffffff1614610b4b5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610110565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600260209081526040808320938b1683529290522054610b89908590611822565b73ffffffffffffffffffffffffffffffffffffffff808a166000818152600260209081526040808320948d1683529390529190912091909155610bcd908686610f27565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b388888888604051610c479493929190611839565b60405180910390a45050505050505050565b333b15610ca85760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f4100000000000000000000000000000000006044820152606401610110565b610cea33338585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102ce92505050565b505050565b6000546040517f3dbb202b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633dbb202b90610d4990869085908790600401611879565b600060405180830381600087803b158015610d6357600080fd5b505af11580156108e6573d6000803e3d6000fd5b610d9973ffffffffffffffffffffffffffffffffffffffff8916873087610ffb565b600063662a633a60e01b89898989898888604051602401610dc097969594939291906118be565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152600154909150610e649073ffffffffffffffffffffffffffffffffffffffff168583610cef565b73ffffffffffffffffffffffffffffffffffffffff808a166000908152600260209081526040808320938c1683529290522054610ea290869061191b565b73ffffffffffffffffffffffffffffffffffffffff808b1660008181526002602090815260408083208e86168085529252918290209490945551918a1692917f718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d039690610f14908b908b908a908a90611839565b60405180910390a4505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610cea9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611059565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526109319085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610f79565b60006110bb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661114b9092919063ffffffff16565b805190915015610cea57808060200190518101906110d99190611933565b610cea5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610110565b606061115a8484600085611164565b90505b9392505050565b6060824710156111dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610110565b843b61122a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610110565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611253919061176b565b60006040518083038185875af1925050503d8060008114611290576040519150601f19603f3d011682016040523d82523d6000602084013e611295565b606091505b50915091506112a58282866112b0565b979650505050505050565b606083156112bf57508161115d565b8251156112cf5782518084602001fd5b8160405162461bcd60e51b81526004016101109190611955565b73ffffffffffffffffffffffffffffffffffffffff8116811461130b57600080fd5b50565b60008083601f84011261132057600080fd5b50813567ffffffffffffffff81111561133857600080fd5b60208301915083602082850101111561135057600080fd5b9250929050565b60008060008060006080868803121561136f57600080fd5b853561137a816112e9565b9450602086013561138a816112e9565b935060408601359250606086013567ffffffffffffffff8111156113ad57600080fd5b6113b98882890161130e565b969995985093965092949392505050565b600080604083850312156113dd57600080fd5b82356113e8816112e9565b915060208301356113f8816112e9565b809150509250929050565b803563ffffffff8116811461141757600080fd5b919050565b60008060008060008060a0878903121561143557600080fd5b8635611440816112e9565b95506020870135611450816112e9565b94506040870135935061146560608801611403565b9250608087013567ffffffffffffffff81111561148157600080fd5b61148d89828a0161130e565b979a9699509497509295939492505050565b600080600080600080600060c0888a0312156114ba57600080fd5b87356114c5816112e9565b965060208801356114d5816112e9565b955060408801356114e5816112e9565b9450606088013593506114fa60808901611403565b925060a088013567ffffffffffffffff81111561151657600080fd5b6115228a828b0161130e565b989b979a50959850939692959293505050565b6000806000806060858703121561154b57600080fd5b8435611556816112e9565b935061156460208601611403565b9250604085013567ffffffffffffffff81111561158057600080fd5b61158c8782880161130e565b95989497509550505050565b600080600080600080600060c0888a0312156115b357600080fd5b87356115be816112e9565b965060208801356115ce816112e9565b955060408801356115de816112e9565b945060608801356115ee816112e9565b93506080880135925060a088013567ffffffffffffffff81111561151657600080fd5b60008060006040848603121561162657600080fd5b61162f84611403565b9250602084013567ffffffffffffffff81111561164b57600080fd5b6116578682870161130e565b9497909650939450505050565b60005b8381101561167f578181015183820152602001611667565b838111156109315750506000910152565b600081518084526116a8816020860160208601611664565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a083015261172960c0830184611690565b98975050505050505050565b82815260406020820152600061115a6040830184611690565b60006020828403121561176057600080fd5b815161115d816112e9565b6000825161177d818460208701611664565b9190910192915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8381526040602082015260006117ea604083018486611787565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611834576118346117f3565b500390565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015260606040820152600061186f606083018486611787565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526060602082015260006118a86060830185611690565b905063ffffffff83166040830152949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a083015261190e60c083018486611787565b9998505050505050505050565b6000821982111561192e5761192e6117f3565b500190565b60006020828403121561194557600080fd5b8151801515811461115d57600080fd5b60208152600061115d602083018461169056fea164736f6c6343000809000a", - "deployedBytecode": "0x6080604052600436106100c05760003560e01c80638b4c40b0116100745780639a2ac6d51161004e5780639a2ac6d514610288578063a9f9e6751461029b578063b1a1a882146102bb57600080fd5b80638b4c40b0146101375780638f601f661461021557806391c49bf81461025b57600080fd5b8063485cc955116100a5578063485cc955146101b557806358a997f6146101d5578063838b2520146101f557600080fd5b80631532ec341461013e5780633cb747bf1461015e57600080fd5b3661013957333b156101195760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f41000000000000000000000000000000000060448201526064015b60405180910390fd5b61013733336213d620604051806020016040528060008152506102ce565b005b600080fd5b34801561014a57600080fd5b50610137610159366004611357565b61041a565b34801561016a57600080fd5b5060005461018b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101c157600080fd5b506101376101d03660046113ca565b610790565b3480156101e157600080fd5b506101376101f036600461141c565b61086f565b34801561020157600080fd5b5061013761021036600461149f565b6108d6565b34801561022157600080fd5b5061024d6102303660046113ca565b600260209081526000928352604080842090915290825290205481565b6040519081526020016101ac565b34801561026757600080fd5b5060015461018b9073ffffffffffffffffffffffffffffffffffffffff1681565b610137610296366004611535565b6108ef565b3480156102a757600080fd5b506101376102b6366004611598565b610937565b6101376102c9366004611611565b610c59565b600063662a633a60e01b600073420000000000000000000000000000000000000687873487604051602401610308969594939291906116da565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526001549091506103ac9073ffffffffffffffffffffffffffffffffffffffff168483610cef565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f35d79ab81f2b2017e19afb5c5571778877782d7a8786f5907f93b0f4702f4f23348560405161040b929190611735565b60405180910390a35050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1661045260005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104f25760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610110565b8073ffffffffffffffffffffffffffffffffffffffff1661052860005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b15801561056d57600080fd5b505afa158015610581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a5919061174e565b73ffffffffffffffffffffffffffffffffffffffff161461062e5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610110565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff8716908690604051610665919061176b565b60006040518083038185875af1925050503d80600081146106a2576040519150601f19603f3d011682016040523d82523d6000602084013e6106a7565b606091505b505090508061071e5760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c65640000000000000000000000006064820152608401610110565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f2ac69ee804d9a7a0984249f508dfab7cb2534b465b6ce1580f99a38ba9c5e63187878760405161077f939291906117d0565b60405180910390a350505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff161561081c5760405162461bcd60e51b815260206004820152602660248201527f436f6e74726163742068617320616c7265616479206265656e20696e6974696160448201527f6c697a65642e00000000000000000000000000000000000000000000000000006064820152608401610110565b6000805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560018054929093169116179055565b333b156108be5760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f4100000000000000000000000000000000006044820152606401610110565b6108ce8686333388888888610d77565b505050505050565b6108e68787338888888888610d77565b50505050505050565b61093133858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102ce92505050565b50505050565b60015473ffffffffffffffffffffffffffffffffffffffff1661096f60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a0f5760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610110565b8073ffffffffffffffffffffffffffffffffffffffff16610a4560005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015610a8a57600080fd5b505afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac2919061174e565b73ffffffffffffffffffffffffffffffffffffffff1614610b4b5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610110565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600260209081526040808320938b1683529290522054610b89908590611822565b73ffffffffffffffffffffffffffffffffffffffff808a166000818152600260209081526040808320948d1683529390529190912091909155610bcd908686610f27565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b388888888604051610c479493929190611839565b60405180910390a45050505050505050565b333b15610ca85760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f4100000000000000000000000000000000006044820152606401610110565b610cea33338585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102ce92505050565b505050565b6000546040517f3dbb202b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633dbb202b90610d4990869085908790600401611879565b600060405180830381600087803b158015610d6357600080fd5b505af11580156108e6573d6000803e3d6000fd5b610d9973ffffffffffffffffffffffffffffffffffffffff8916873087610ffb565b600063662a633a60e01b89898989898888604051602401610dc097969594939291906118be565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152600154909150610e649073ffffffffffffffffffffffffffffffffffffffff168583610cef565b73ffffffffffffffffffffffffffffffffffffffff808a166000908152600260209081526040808320938c1683529290522054610ea290869061191b565b73ffffffffffffffffffffffffffffffffffffffff808b1660008181526002602090815260408083208e86168085529252918290209490945551918a1692917f718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d039690610f14908b908b908a908a90611839565b60405180910390a4505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610cea9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611059565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526109319085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610f79565b60006110bb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661114b9092919063ffffffff16565b805190915015610cea57808060200190518101906110d99190611933565b610cea5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610110565b606061115a8484600085611164565b90505b9392505050565b6060824710156111dc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610110565b843b61122a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610110565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611253919061176b565b60006040518083038185875af1925050503d8060008114611290576040519150601f19603f3d011682016040523d82523d6000602084013e611295565b606091505b50915091506112a58282866112b0565b979650505050505050565b606083156112bf57508161115d565b8251156112cf5782518084602001fd5b8160405162461bcd60e51b81526004016101109190611955565b73ffffffffffffffffffffffffffffffffffffffff8116811461130b57600080fd5b50565b60008083601f84011261132057600080fd5b50813567ffffffffffffffff81111561133857600080fd5b60208301915083602082850101111561135057600080fd5b9250929050565b60008060008060006080868803121561136f57600080fd5b853561137a816112e9565b9450602086013561138a816112e9565b935060408601359250606086013567ffffffffffffffff8111156113ad57600080fd5b6113b98882890161130e565b969995985093965092949392505050565b600080604083850312156113dd57600080fd5b82356113e8816112e9565b915060208301356113f8816112e9565b809150509250929050565b803563ffffffff8116811461141757600080fd5b919050565b60008060008060008060a0878903121561143557600080fd5b8635611440816112e9565b95506020870135611450816112e9565b94506040870135935061146560608801611403565b9250608087013567ffffffffffffffff81111561148157600080fd5b61148d89828a0161130e565b979a9699509497509295939492505050565b600080600080600080600060c0888a0312156114ba57600080fd5b87356114c5816112e9565b965060208801356114d5816112e9565b955060408801356114e5816112e9565b9450606088013593506114fa60808901611403565b925060a088013567ffffffffffffffff81111561151657600080fd5b6115228a828b0161130e565b989b979a50959850939692959293505050565b6000806000806060858703121561154b57600080fd5b8435611556816112e9565b935061156460208601611403565b9250604085013567ffffffffffffffff81111561158057600080fd5b61158c8782880161130e565b95989497509550505050565b600080600080600080600060c0888a0312156115b357600080fd5b87356115be816112e9565b965060208801356115ce816112e9565b955060408801356115de816112e9565b945060608801356115ee816112e9565b93506080880135925060a088013567ffffffffffffffff81111561151657600080fd5b60008060006040848603121561162657600080fd5b61162f84611403565b9250602084013567ffffffffffffffff81111561164b57600080fd5b6116578682870161130e565b9497909650939450505050565b60005b8381101561167f578181015183820152602001611667565b838111156109315750506000910152565b600081518084526116a8816020860160208601611664565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a083015261172960c0830184611690565b98975050505050505050565b82815260406020820152600061115a6040830184611690565b60006020828403121561176057600080fd5b815161115d816112e9565b6000825161177d818460208701611664565b9190910192915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8381526040602082015260006117ea604083018486611787565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611834576118346117f3565b500390565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015260606040820152600061186f606083018486611787565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526060602082015260006118a86060830185611690565b905063ffffffff83166040830152949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152808816604084015280871660608401525084608083015260c060a083015261190e60c083018486611787565b9998505050505050505050565b6000821982111561192e5761192e6117f3565b500190565b60006020828403121561194557600080fd5b8151801515811461115d57600080fd5b60208152600061115d602083018461169056fea164736f6c6343000809000a", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/boba/gas-price-oracle/src/abi/L2LiquidityPool.json b/packages/boba/gas-price-oracle/src/abi/L2LiquidityPool.json deleted file mode 100644 index ca8e095f2..000000000 --- a/packages/boba/gas-price-oracle/src/abi/L2LiquidityPool.json +++ /dev/null @@ -1,791 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "L2LiquidityPool", - "sourceName": "contracts/LP/L2LiquidityPool.sol", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "AddLiquidity", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "receivedAmount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "ClientDepositL2", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "userRewardFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "ownerRewardFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "totalFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "ClientPayL2", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "userRewardFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "ownerRewardFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "totalFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "ClientPayL2Settlement", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "receiver", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "OwnerRecoverFee", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Paused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Unpaused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "receiver", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "WithdrawLiquidity", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "receiver", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenAddress", - "type": "address" - } - ], - "name": "WithdrawReward", - "type": "event" - }, - { - "inputs": [], - "name": "DAO", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "DEFAULT_FINALIZE_WITHDRAWAL_L1_GAS", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "L1LiquidityPoolAddress", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "addLiquidity", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "clientDepositL2", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address payable", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "clientPayL2", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address payable", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "clientPayL2Settlement", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_extraGas", - "type": "uint256" - } - ], - "name": "configureExtraGasRelay", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_userRewardFeeRate", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_ownerRewardFeeRate", - "type": "uint256" - } - ], - "name": "configureFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_userRewardFeeRate", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_ownerRewardFeeRate", - "type": "uint256" - } - ], - "name": "configureFeeExits", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32", - "name": "_l1GasFee", - "type": "uint32" - } - ], - "name": "configureGas", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "extraGasRelay", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getFinalizeDepositL1Gas", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l2CrossDomainMessenger", - "type": "address" - }, - { - "internalType": "address", - "name": "_L1LiquidityPoolAddress", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "messenger", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - } - ], - "name": "ownerRecoverFee", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "ownerRewardFeeRate", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "paused", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "poolInfo", - "outputs": [ - { - "internalType": "address", - "name": "l1TokenAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "l2TokenAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "userDepositAmount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastAccUserReward", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "accUserReward", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "accUserRewardPerShare", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "accOwnerReward", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "startTime", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l1TokenAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "_l2TokenAddress", - "type": "address" - } - ], - "name": "registerPool", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_newDAO", - "type": "address" - } - ], - "name": "transferDAORole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "unpause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "updateUserRewardPerShare", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "userInfo", - "outputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "rewardDebt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "pendingReward", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "userRewardFeeRate", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "internalType": "address payable", - "name": "_to", - "type": "address" - } - ], - "name": "withdrawLiquidity", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - } - ], - "name": "withdrawReward", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b0319169055613ae7806100306000396000f3fe6080604052600436106101cd5760003560e01c806368be42ca116100f7578063997d73df11610095578063c95f9d0e11610064578063c95f9d0e146105e9578063d1dd871a146105fc578063f2fde38b1461061c578063f48712681461063c57600080fd5b8063997d73df146104dd5780639a7b5f11146104f8578063b5e241f1146105a9578063bd2d1cab146105c957600080fd5b806381e6bdac116100d157806381e6bdac146104605780638456cb59146104805780638da5cb5b1461049557806398fabd3a146104b557600080fd5b806368be42ca1461040a57806370ac31801461042a5780637286e5e51461044057600080fd5b80633f4ba83a1161016f5780634c7d0def1161013e5780634c7d0def146103755780635c975abb14610395578063650a767b146103b85780636854e22b146103d857600080fd5b80633f4ba83a1461030a578063435fd5711461031f578063485cc9551461033557806349561dc41461035557600080fd5b80631d00a771116101ab5780631d00a7711461029357806334636648146102a6578063358fc07e146102c65780633cb747bf146102ea57600080fd5b80630f208beb146101d257806312f54c1a1461023957806316a8dda71461025b575b600080fd5b3480156101de57600080fd5b506102196101ed366004613741565b609860209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060015b60405180910390f35b34801561024557600080fd5b5061025961025436600461377a565b61065c565b005b34801561026757600080fd5b50609a5461027b906001600160a01b031681565b6040516001600160a01b039091168152602001610230565b6102596102a1366004613797565b6106f2565b3480156102b257600080fd5b506102596102c13660046137bc565b610a28565b3480156102d257600080fd5b506102dc609c5481565b604051908152602001610230565b3480156102f657600080fd5b5060005461027b906001600160a01b031681565b34801561031657600080fd5b50610259610b4b565b34801561032b57600080fd5b506102dc609b5481565b34801561034157600080fd5b50610259610350366004613741565b610bc3565b34801561036157600080fd5b506102596103703660046137e2565b610e96565b34801561038157600080fd5b50610259610390366004613824565b61116c565b3480156103a157600080fd5b5060655460ff166040519015158152602001610230565b3480156103c457600080fd5b506102596103d3366004613846565b61135c565b3480156103e457600080fd5b50609d546103f59063ffffffff1681565b60405163ffffffff9091168152602001610230565b34801561041657600080fd5b506102596104253660046137e2565b6117c0565b34801561043657600080fd5b506102dc609e5481565b34801561044c57600080fd5b5061025961045b366004613741565b611aad565b34801561046c57600080fd5b5061025961047b3660046137e2565b611cdc565b34801561048c57600080fd5b50610259611f5b565b3480156104a157600080fd5b5060995461027b906001600160a01b031681565b3480156104c157600080fd5b50609d5461027b9064010000000090046001600160a01b031681565b3480156104e957600080fd5b50609d5463ffffffff166103f5565b34801561050457600080fd5b5061056361051336600461377a565b609760205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701546001600160a01b03968716979590961695939492939192909188565b604080516001600160a01b03998a168152989097166020890152958701949094526060860192909252608085015260a084015260c083015260e082015261010001610230565b3480156105b557600080fd5b506102596105c436600461387d565b611fd1565b3480156105d557600080fd5b506102596105e4366004613846565b6120c2565b6102596105f7366004613797565b6126a7565b34801561060857600080fd5b50610259610617366004613824565b6129b3565b34801561062857600080fd5b5061025961063736600461377a565b612b22565b34801561064857600080fd5b5061025961065736600461377a565b612c45565b6001600160a01b03811660009081526097602052604090206004810154600382015410156106ee5760006106a182600301548360040154612d6590919063ffffffff16565b905081600201546000146106e25760028201546106dc906106d1906106cb8464e8d4a51000612d78565b90612d84565b600584015490612d90565b60058301555b50600481015460038201555b5050565b60655460ff161561074a5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064015b60405180910390fd5b60005a9050609e5481116107c65760405162461bcd60e51b815260206004820152602860248201527f496e73756666696369656e742047617320466f7220612052656c61792054726160448201527f6e73616374696f6e0000000000000000000000000000000000000000000000006064820152608401610741565b60006107dd609e5483612d6590919063ffffffff16565b905060005b815a11156107fc57806107f4816138c5565b9150506107e2565b3415158061082757506001600160a01b03841673420000000000000000000000000000000000000614155b6108735760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f7272656374000000000000000000000000000000006044820152606401610741565b34156108945734945073420000000000000000000000000000000000000693505b6001600160a01b03808516600090815260976020526040902060018101549091166109015760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b6001600160a01b0385167342000000000000000000000000000000000000061461093a5761093a6001600160a01b038616333089612d9c565b805460408051336024820152604481018990526001600160a01b039283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcf26fb1b00000000000000000000000000000000000000000000000000000000179052609a54609d5491926109d79291169063ffffffff165b83612e71565b60408051338152602081018990526001600160a01b0388168183015290517fe57500de6b6dcf76b201fef514aca6501809e3b700c9fbd5e803567c66edf54c9181900360600190a150505050505050565b6099546001600160a01b0316331480610a4a57506099546001600160a01b0316155b610a965760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b609a546001600160a01b0316610b145760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b6099546001600160a01b0316331480610b6d57506099546001600160a01b0316155b610bb95760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b610bc1612ef5565b565b6099546001600160a01b0316331480610be557506099546001600160a01b0316155b610c315760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b609a546001600160a01b031615610c8a5760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420686173206265656e20696e697469616c697a65640000006044820152606401610741565b6000547501000000000000000000000000000000000000000000900460ff1680610ccf575060005474010000000000000000000000000000000000000000900460ff16155b610d415760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff16158015610da857600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b0386811691909117909255609a80548216928516929092179091556099805433921682179055609d80547fffffffffffffffff0000000000000000000000000000000000000000ffffffff16640100000000909202919091179055610e3e6023600f6129b3565b610e4a620186a0610a28565b610e52612faf565b610e5a6130ff565b610e62613276565b8015610e9157600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b505050565b60655460ff1615610ee95760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b0380831660009081526097602090815260408083206098835281842033855290925290912060018201549192909116610f6b5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b6000610fad610fa28360010154610f9c64e8d4a510006106cb88600501548860000154612d7890919063ffffffff16565b90612d65565b600284015490612d90565b905085811015610fff5760405162461bcd60e51b815260206004820152601560248201527f576974686472617720526577617264204572726f7200000000000000000000006044820152606401610741565b6110098187612d65565b6002830155600583015482546110299164e8d4a51000916106cb91612d78565b60018301556001600160a01b0385167342000000000000000000000000000000000000061461106b576110666001600160a01b03861685886133c9565b611114565b6000846001600160a01b03166108fc88604051600060405180830381858888f193505050503d80600081146110bc576040519150601f19603f3d011682016040523d82523d6000602084013e6110c1565b606091505b50509050806111125760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080513381526001600160a01b0386811660208301528183018990528716606082015290517f3cb7cb475a33eda02ee6e719b6c2fc0c899157cfc6f098daf545354dbbce41ec9181900360800190a1505050505050565b609d5464010000000090046001600160a01b031633146111ce5760405162461bcd60e51b815260206004820152601560248201527f63616c6c6572206973206e6f74207468652044414f00000000000000000000006044820152606401610741565b609a546001600160a01b031661124c5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b6032821115801561125e575060328111155b6112d05760405162461bcd60e51b815260206004820152603c60248201527f7573657220616e64206f776e6572206665652072617465732073686f756c642060448201527f6265206c6f776572207468616e20352070657263656e742065616368000000006064820152608401610741565b604080516024810184905260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd1dd871a00000000000000000000000000000000000000000000000000000000179052609a54609d54610e91916001600160a01b03169063ffffffff166109d1565b609a546001600160a01b03166113da5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609a546001600160a01b03166113f86000546001600160a01b031690565b6001600160a01b0316336001600160a01b03161461147e5760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610741565b806001600160a01b031661149a6000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156114d257600080fd5b505afa1580156114e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150a91906138fe565b6001600160a01b0316146115865760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610741565b60655460ff16156115d95760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b0382166000908152609760205260408120609b5490919061160a906103e8906106cb908890612d78565b905060006116296103e86106cb609c5489612d7890919063ffffffff16565b905060006116378383612d90565b905060006116458883612d65565b60048601549091506116579085612d90565b6004860155600685015461166b9084612d90565b60068601556001600160a01b038716734200000000000000000000000000000000000006146116ad576116a86001600160a01b0388168a836133c9565b611756565b6000896001600160a01b03166108fc83604051600060405180830381858888f193505050503d80600081146116fe576040519150601f19603f3d011682016040523d82523d6000602084013e611703565b606091505b50509050806117545760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080516001600160a01b038b81168252602082018490528183018790526060820186905260808201859052891660a082015290517ff1068421680e00dfc2c4f3fc20c7f565bf1ec365420e7544365bae13d5cbc8c89181900360c00190a1505050505050505050565b60655460ff16156118135760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b03808316600090815260976020908152604080832060988352818420338552909252909120600182015491929091166118955760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b80548511156118e65760405162461bcd60e51b815260206004820152600e60248201527f5769746864726177204572726f720000000000000000000000000000000000006044820152606401610741565b6118ef8461065c565b61192961191e8260010154610f9c64e8d4a510006106cb87600501548760000154612d7890919063ffffffff16565b600283015490612d90565b6002820155805461193a9086612d65565b80825560058301546119579164e8d4a51000916106cb9190612d78565b6001820155600282015461196b9086612d65565b60028301556001600160a01b038416734200000000000000000000000000000000000006146119ad576119a86001600160a01b03851684876133c9565b611a56565b6000836001600160a01b03166108fc87604051600060405180830381858888f193505050503d80600081146119fe576040519150601f19603f3d011682016040523d82523d6000602084013e611a03565b606091505b5050905080611a545760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080513381526001600160a01b0385811660208301528183018890528616606082015290517ffa2e8fcf14fd6ea11b6ebe7caf7de210198b8fe1eaf0e06d19f8d87c73860c469181900360800190a15050505050565b6099546001600160a01b0316331480611acf57506099546001600160a01b0316155b611b1b5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b806001600160a01b0316826001600160a01b03161415611ba35760405162461bcd60e51b815260206004820152602860248201527f6c3120616e64206c3220746f6b656e206164647265737365732063616e6e6f7460448201527f2062652073616d650000000000000000000000000000000000000000000000006064820152608401610741565b6001600160a01b038082166000908152609760205260409020600181015490911615611c115760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e204164647265737320416c726561647920526567697374657264006044820152606401610741565b5060408051610100810182526001600160a01b03938416815291831660208084018281526000858501818152606087018281526080880183815260a0890184815260c08a018581524260e08c0190815298865260979097529790932097518854908a167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178955935160018901805491909a16941693909317909755955160028601555160038501559351600484015590516005830155915160068201559051600790910155565b6099546001600160a01b0316331480611cfe57506099546001600160a01b0316155b611d4a5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b6001600160a01b0380831660009081526097602052604090206001810154909116611db75760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f742052656769737465720000000000006044820152606401610741565b8381600601541015611e0b5760405162461bcd60e51b815260206004820152601b60248201527f4f776e657220526577617264205769746864726177204572726f7200000000006044820152606401610741565b6006810154611e1a9085612d65565b60068201556001600160a01b03831673420000000000000000000000000000000000000614611e5c57611e576001600160a01b03841683866133c9565b611f05565b6000826001600160a01b03166108fc86604051600060405180830381858888f193505050503d8060008114611ead576040519150601f19603f3d011682016040523d82523d6000602084013e611eb2565b606091505b5050905080611f035760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080513381526001600160a01b0384811660208301528183018790528516606082015290517f3cb71b9a1fb601579f96812b9f86ab5e914fc3e54c98d5f84d95581b2b9884f39181900360800190a150505050565b6099546001600160a01b0316331480611f7d57506099546001600160a01b0316155b611fc95760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b610bc1613412565b6099546001600160a01b0316331480611ff357506099546001600160a01b0316155b61203f5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b609a546001600160a01b03166120bd5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609e55565b609a546001600160a01b03166121405760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609a546001600160a01b031661215e6000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316146121e45760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610741565b806001600160a01b03166122006000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b15801561223857600080fd5b505afa15801561224c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227091906138fe565b6001600160a01b0316146122ec5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610741565b60655460ff161561233f5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b0382166000908152609760205260408120609b54829061236f906103e8906106cb908990612d78565b9050600061238e6103e86106cb609c548a612d7890919063ffffffff16565b9050600061239c8383612d90565b905060006123aa8983612d65565b90506001600160a01b038816734200000000000000000000000000000000000006146124b1576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038916906370a082319060240160206040518083038186803b15801561242857600080fd5b505afa15801561243c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612460919061391b565b8111156124705760019550612592565b600485015461247f9085612d90565b600486015560068501546124939084612d90565b60068601556124ac6001600160a01b0389168b836133c9565b612592565b478111156124c25760019550612592565b60048501546124d19085612d90565b600486015560068501546124e59084612d90565b60068601556040516000906001600160a01b038c16906108fc90849084818181858888f193505050503d806000811461253a576040519150601f19603f3d011682016040523d82523d6000602084013e61253f565b606091505b50509050806125905760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b851561263b578454604080516001600160a01b038d81166024830152604482018d90529283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f53174cc100000000000000000000000000000000000000000000000000000000179052609a54609d5491926126359291169063ffffffff166109d1565b5061269b565b604080516001600160a01b038c811682526020820184905281830187905260608201869052608082018590528a1660a082015290517fedb4d3b4b55168608412f15db11c00859915842963c31b1f08d910a38e1d6aa49181900360c00190a15b50505050505050505050565b600260015414156126fa5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610741565b600260015560655460ff16156127525760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b3415158061277d57506001600160a01b03811673420000000000000000000000000000000000000614155b6127c95760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f7272656374000000000000000000000000000000006044820152606401610741565b34156127e957503490507342000000000000000000000000000000000000065b6001600160a01b038082166000908152609760209081526040808320609883528184203385529092529091206001820154919290911661286b5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b6128748361065c565b8054156128e0576128aa61191e8260010154610f9c64e8d4a510006106cb87600501548760000154612d7890919063ffffffff16565b6002820155600582015481546128d69164e8d4a51000916106cb91906128d09089612d90565b90612d78565b6001820155612906565b61290064e8d4a510006106cb846005015487612d7890919063ffffffff16565b60018201555b6001600160a01b0383167342000000000000000000000000000000000000061461293f5761293f6001600160a01b038416333087612d9c565b805461294b9085612d90565b8155600282015461295c9085612d90565b600283015560408051338152602081018690526001600160a01b0385168183015290517f5852d1d46e583f7e92c2a572221de0e681d82ef71f489847e056b9445c0147369181900360600190a15050600180555050565b609d5464010000000090046001600160a01b03163314612a155760405162461bcd60e51b815260206004820152601560248201527f63616c6c6572206973206e6f74207468652044414f00000000000000000000006044820152606401610741565b609a546001600160a01b0316612a935760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b60328211158015612aa5575060328111155b612b175760405162461bcd60e51b815260206004820152603c60248201527f7573657220616e64206f776e6572206665652072617465732073686f756c642060448201527f6265206c6f776572207468616e20352070657263656e742065616368000000006064820152608401610741565b609b91909155609c55565b6099546001600160a01b0316331480612b4457506099546001600160a01b0316155b612b905760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b6001600160a01b038116612c0b5760405162461bcd60e51b8152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610741565b609980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b609d5464010000000090046001600160a01b03163314612ca75760405162461bcd60e51b815260206004820152601560248201527f63616c6c6572206973206e6f74207468652044414f00000000000000000000006044820152606401610741565b6001600160a01b038116612d235760405162461bcd60e51b815260206004820152602a60248201527f4e65772044414f20616464726573732063616e6e6f7420626520746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610741565b609d80546001600160a01b03909216640100000000027fffffffffffffffff0000000000000000000000000000000000000000ffffffff909216919091179055565b6000612d718284613934565b9392505050565b6000612d71828461394b565b6000612d718284613988565b6000612d7182846139c3565b6040516001600160a01b0380851660248301528316604482015260648101829052612e6b9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526134b8565b50505050565b6000546040517f3dbb202b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633dbb202b90612ebe90869085908790600401613a51565b600060405180830381600087803b158015612ed857600080fd5b505af1158015612eec573d6000803e3d6000fd5b50505050505050565b60655460ff16612f475760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610741565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000547501000000000000000000000000000000000000000000900460ff1680612ff4575060005474010000000000000000000000000000000000000000900460ff16155b6130665760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff161580156130cd57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b80156130fc57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b50565b6000547501000000000000000000000000000000000000000000900460ff1680613144575060005474010000000000000000000000000000000000000000900460ff16155b6131b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff1615801561321d57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905580156130fc57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6000547501000000000000000000000000000000000000000000900460ff16806132bb575060005474010000000000000000000000000000000000000000900460ff16155b61332d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff1615801561339457600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6001805580156130fc57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6040516001600160a01b038316602482015260448101829052610e919084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612de9565b60655460ff16156134655760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612f923390565b600061350d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661359d9092919063ffffffff16565b805190915015610e91578080602001905181019061352b9190613a89565b610e915760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610741565b60606135ac84846000856135b4565b949350505050565b60608247101561362c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610741565b843b61367a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610741565b600080866001600160a01b031685876040516136969190613aab565b60006040518083038185875af1925050503d80600081146136d3576040519150601f19603f3d011682016040523d82523d6000602084013e6136d8565b606091505b50915091506136e88282866136f3565b979650505050505050565b60608315613702575081612d71565b8251156137125782518084602001fd5b8160405162461bcd60e51b81526004016107419190613ac7565b6001600160a01b03811681146130fc57600080fd5b6000806040838503121561375457600080fd5b823561375f8161372c565b9150602083013561376f8161372c565b809150509250929050565b60006020828403121561378c57600080fd5b8135612d718161372c565b600080604083850312156137aa57600080fd5b82359150602083013561376f8161372c565b6000602082840312156137ce57600080fd5b813563ffffffff81168114612d7157600080fd5b6000806000606084860312156137f757600080fd5b8335925060208401356138098161372c565b915060408401356138198161372c565b809150509250925092565b6000806040838503121561383757600080fd5b50508035926020909101359150565b60008060006060848603121561385b57600080fd5b83356138668161372c565b92506020840135915060408401356138198161372c565b60006020828403121561388f57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156138f7576138f7613896565b5060010190565b60006020828403121561391057600080fd5b8151612d718161372c565b60006020828403121561392d57600080fd5b5051919050565b60008282101561394657613946613896565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561398357613983613896565b500290565b6000826139be577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082198211156139d6576139d6613896565b500190565b60005b838110156139f65781810151838201526020016139de565b83811115612e6b5750506000910152565b60008151808452613a1f8160208601602086016139db565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6001600160a01b0384168152606060208201526000613a736060830185613a07565b905063ffffffff83166040830152949350505050565b600060208284031215613a9b57600080fd5b81518015158114612d7157600080fd5b60008251613abd8184602087016139db565b9190910192915050565b602081526000612d716020830184613a0756fea164736f6c6343000809000a", - "deployedBytecode": "0x6080604052600436106101cd5760003560e01c806368be42ca116100f7578063997d73df11610095578063c95f9d0e11610064578063c95f9d0e146105e9578063d1dd871a146105fc578063f2fde38b1461061c578063f48712681461063c57600080fd5b8063997d73df146104dd5780639a7b5f11146104f8578063b5e241f1146105a9578063bd2d1cab146105c957600080fd5b806381e6bdac116100d157806381e6bdac146104605780638456cb59146104805780638da5cb5b1461049557806398fabd3a146104b557600080fd5b806368be42ca1461040a57806370ac31801461042a5780637286e5e51461044057600080fd5b80633f4ba83a1161016f5780634c7d0def1161013e5780634c7d0def146103755780635c975abb14610395578063650a767b146103b85780636854e22b146103d857600080fd5b80633f4ba83a1461030a578063435fd5711461031f578063485cc9551461033557806349561dc41461035557600080fd5b80631d00a771116101ab5780631d00a7711461029357806334636648146102a6578063358fc07e146102c65780633cb747bf146102ea57600080fd5b80630f208beb146101d257806312f54c1a1461023957806316a8dda71461025b575b600080fd5b3480156101de57600080fd5b506102196101ed366004613741565b609860209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060015b60405180910390f35b34801561024557600080fd5b5061025961025436600461377a565b61065c565b005b34801561026757600080fd5b50609a5461027b906001600160a01b031681565b6040516001600160a01b039091168152602001610230565b6102596102a1366004613797565b6106f2565b3480156102b257600080fd5b506102596102c13660046137bc565b610a28565b3480156102d257600080fd5b506102dc609c5481565b604051908152602001610230565b3480156102f657600080fd5b5060005461027b906001600160a01b031681565b34801561031657600080fd5b50610259610b4b565b34801561032b57600080fd5b506102dc609b5481565b34801561034157600080fd5b50610259610350366004613741565b610bc3565b34801561036157600080fd5b506102596103703660046137e2565b610e96565b34801561038157600080fd5b50610259610390366004613824565b61116c565b3480156103a157600080fd5b5060655460ff166040519015158152602001610230565b3480156103c457600080fd5b506102596103d3366004613846565b61135c565b3480156103e457600080fd5b50609d546103f59063ffffffff1681565b60405163ffffffff9091168152602001610230565b34801561041657600080fd5b506102596104253660046137e2565b6117c0565b34801561043657600080fd5b506102dc609e5481565b34801561044c57600080fd5b5061025961045b366004613741565b611aad565b34801561046c57600080fd5b5061025961047b3660046137e2565b611cdc565b34801561048c57600080fd5b50610259611f5b565b3480156104a157600080fd5b5060995461027b906001600160a01b031681565b3480156104c157600080fd5b50609d5461027b9064010000000090046001600160a01b031681565b3480156104e957600080fd5b50609d5463ffffffff166103f5565b34801561050457600080fd5b5061056361051336600461377a565b609760205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701546001600160a01b03968716979590961695939492939192909188565b604080516001600160a01b03998a168152989097166020890152958701949094526060860192909252608085015260a084015260c083015260e082015261010001610230565b3480156105b557600080fd5b506102596105c436600461387d565b611fd1565b3480156105d557600080fd5b506102596105e4366004613846565b6120c2565b6102596105f7366004613797565b6126a7565b34801561060857600080fd5b50610259610617366004613824565b6129b3565b34801561062857600080fd5b5061025961063736600461377a565b612b22565b34801561064857600080fd5b5061025961065736600461377a565b612c45565b6001600160a01b03811660009081526097602052604090206004810154600382015410156106ee5760006106a182600301548360040154612d6590919063ffffffff16565b905081600201546000146106e25760028201546106dc906106d1906106cb8464e8d4a51000612d78565b90612d84565b600584015490612d90565b60058301555b50600481015460038201555b5050565b60655460ff161561074a5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064015b60405180910390fd5b60005a9050609e5481116107c65760405162461bcd60e51b815260206004820152602860248201527f496e73756666696369656e742047617320466f7220612052656c61792054726160448201527f6e73616374696f6e0000000000000000000000000000000000000000000000006064820152608401610741565b60006107dd609e5483612d6590919063ffffffff16565b905060005b815a11156107fc57806107f4816138c5565b9150506107e2565b3415158061082757506001600160a01b03841673420000000000000000000000000000000000000614155b6108735760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f7272656374000000000000000000000000000000006044820152606401610741565b34156108945734945073420000000000000000000000000000000000000693505b6001600160a01b03808516600090815260976020526040902060018101549091166109015760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b6001600160a01b0385167342000000000000000000000000000000000000061461093a5761093a6001600160a01b038616333089612d9c565b805460408051336024820152604481018990526001600160a01b039283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcf26fb1b00000000000000000000000000000000000000000000000000000000179052609a54609d5491926109d79291169063ffffffff165b83612e71565b60408051338152602081018990526001600160a01b0388168183015290517fe57500de6b6dcf76b201fef514aca6501809e3b700c9fbd5e803567c66edf54c9181900360600190a150505050505050565b6099546001600160a01b0316331480610a4a57506099546001600160a01b0316155b610a965760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b609a546001600160a01b0316610b145760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b6099546001600160a01b0316331480610b6d57506099546001600160a01b0316155b610bb95760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b610bc1612ef5565b565b6099546001600160a01b0316331480610be557506099546001600160a01b0316155b610c315760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b609a546001600160a01b031615610c8a5760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420686173206265656e20696e697469616c697a65640000006044820152606401610741565b6000547501000000000000000000000000000000000000000000900460ff1680610ccf575060005474010000000000000000000000000000000000000000900460ff16155b610d415760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff16158015610da857600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b0386811691909117909255609a80548216928516929092179091556099805433921682179055609d80547fffffffffffffffff0000000000000000000000000000000000000000ffffffff16640100000000909202919091179055610e3e6023600f6129b3565b610e4a620186a0610a28565b610e52612faf565b610e5a6130ff565b610e62613276565b8015610e9157600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b505050565b60655460ff1615610ee95760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b0380831660009081526097602090815260408083206098835281842033855290925290912060018201549192909116610f6b5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b6000610fad610fa28360010154610f9c64e8d4a510006106cb88600501548860000154612d7890919063ffffffff16565b90612d65565b600284015490612d90565b905085811015610fff5760405162461bcd60e51b815260206004820152601560248201527f576974686472617720526577617264204572726f7200000000000000000000006044820152606401610741565b6110098187612d65565b6002830155600583015482546110299164e8d4a51000916106cb91612d78565b60018301556001600160a01b0385167342000000000000000000000000000000000000061461106b576110666001600160a01b03861685886133c9565b611114565b6000846001600160a01b03166108fc88604051600060405180830381858888f193505050503d80600081146110bc576040519150601f19603f3d011682016040523d82523d6000602084013e6110c1565b606091505b50509050806111125760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080513381526001600160a01b0386811660208301528183018990528716606082015290517f3cb7cb475a33eda02ee6e719b6c2fc0c899157cfc6f098daf545354dbbce41ec9181900360800190a1505050505050565b609d5464010000000090046001600160a01b031633146111ce5760405162461bcd60e51b815260206004820152601560248201527f63616c6c6572206973206e6f74207468652044414f00000000000000000000006044820152606401610741565b609a546001600160a01b031661124c5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b6032821115801561125e575060328111155b6112d05760405162461bcd60e51b815260206004820152603c60248201527f7573657220616e64206f776e6572206665652072617465732073686f756c642060448201527f6265206c6f776572207468616e20352070657263656e742065616368000000006064820152608401610741565b604080516024810184905260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd1dd871a00000000000000000000000000000000000000000000000000000000179052609a54609d54610e91916001600160a01b03169063ffffffff166109d1565b609a546001600160a01b03166113da5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609a546001600160a01b03166113f86000546001600160a01b031690565b6001600160a01b0316336001600160a01b03161461147e5760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610741565b806001600160a01b031661149a6000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156114d257600080fd5b505afa1580156114e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150a91906138fe565b6001600160a01b0316146115865760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610741565b60655460ff16156115d95760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b0382166000908152609760205260408120609b5490919061160a906103e8906106cb908890612d78565b905060006116296103e86106cb609c5489612d7890919063ffffffff16565b905060006116378383612d90565b905060006116458883612d65565b60048601549091506116579085612d90565b6004860155600685015461166b9084612d90565b60068601556001600160a01b038716734200000000000000000000000000000000000006146116ad576116a86001600160a01b0388168a836133c9565b611756565b6000896001600160a01b03166108fc83604051600060405180830381858888f193505050503d80600081146116fe576040519150601f19603f3d011682016040523d82523d6000602084013e611703565b606091505b50509050806117545760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080516001600160a01b038b81168252602082018490528183018790526060820186905260808201859052891660a082015290517ff1068421680e00dfc2c4f3fc20c7f565bf1ec365420e7544365bae13d5cbc8c89181900360c00190a1505050505050505050565b60655460ff16156118135760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b03808316600090815260976020908152604080832060988352818420338552909252909120600182015491929091166118955760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b80548511156118e65760405162461bcd60e51b815260206004820152600e60248201527f5769746864726177204572726f720000000000000000000000000000000000006044820152606401610741565b6118ef8461065c565b61192961191e8260010154610f9c64e8d4a510006106cb87600501548760000154612d7890919063ffffffff16565b600283015490612d90565b6002820155805461193a9086612d65565b80825560058301546119579164e8d4a51000916106cb9190612d78565b6001820155600282015461196b9086612d65565b60028301556001600160a01b038416734200000000000000000000000000000000000006146119ad576119a86001600160a01b03851684876133c9565b611a56565b6000836001600160a01b03166108fc87604051600060405180830381858888f193505050503d80600081146119fe576040519150601f19603f3d011682016040523d82523d6000602084013e611a03565b606091505b5050905080611a545760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080513381526001600160a01b0385811660208301528183018890528616606082015290517ffa2e8fcf14fd6ea11b6ebe7caf7de210198b8fe1eaf0e06d19f8d87c73860c469181900360800190a15050505050565b6099546001600160a01b0316331480611acf57506099546001600160a01b0316155b611b1b5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b806001600160a01b0316826001600160a01b03161415611ba35760405162461bcd60e51b815260206004820152602860248201527f6c3120616e64206c3220746f6b656e206164647265737365732063616e6e6f7460448201527f2062652073616d650000000000000000000000000000000000000000000000006064820152608401610741565b6001600160a01b038082166000908152609760205260409020600181015490911615611c115760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e204164647265737320416c726561647920526567697374657264006044820152606401610741565b5060408051610100810182526001600160a01b03938416815291831660208084018281526000858501818152606087018281526080880183815260a0890184815260c08a018581524260e08c0190815298865260979097529790932097518854908a167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178955935160018901805491909a16941693909317909755955160028601555160038501559351600484015590516005830155915160068201559051600790910155565b6099546001600160a01b0316331480611cfe57506099546001600160a01b0316155b611d4a5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b6001600160a01b0380831660009081526097602052604090206001810154909116611db75760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e2041646472657373204e6f742052656769737465720000000000006044820152606401610741565b8381600601541015611e0b5760405162461bcd60e51b815260206004820152601b60248201527f4f776e657220526577617264205769746864726177204572726f7200000000006044820152606401610741565b6006810154611e1a9085612d65565b60068201556001600160a01b03831673420000000000000000000000000000000000000614611e5c57611e576001600160a01b03841683866133c9565b611f05565b6000826001600160a01b03166108fc86604051600060405180830381858888f193505050503d8060008114611ead576040519150601f19603f3d011682016040523d82523d6000602084013e611eb2565b606091505b5050905080611f035760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b604080513381526001600160a01b0384811660208301528183018790528516606082015290517f3cb71b9a1fb601579f96812b9f86ab5e914fc3e54c98d5f84d95581b2b9884f39181900360800190a150505050565b6099546001600160a01b0316331480611f7d57506099546001600160a01b0316155b611fc95760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b610bc1613412565b6099546001600160a01b0316331480611ff357506099546001600160a01b0316155b61203f5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b609a546001600160a01b03166120bd5760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609e55565b609a546001600160a01b03166121405760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b609a546001600160a01b031661215e6000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316146121e45760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e746963617465640000000000000000000000000000000000006064820152608401610741565b806001600160a01b03166122006000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b15801561223857600080fd5b505afa15801561224c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227091906138fe565b6001600160a01b0316146122ec5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d657373616765000000000000000000000000000000006064820152608401610741565b60655460ff161561233f5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b6001600160a01b0382166000908152609760205260408120609b54829061236f906103e8906106cb908990612d78565b9050600061238e6103e86106cb609c548a612d7890919063ffffffff16565b9050600061239c8383612d90565b905060006123aa8983612d65565b90506001600160a01b038816734200000000000000000000000000000000000006146124b1576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038916906370a082319060240160206040518083038186803b15801561242857600080fd5b505afa15801561243c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612460919061391b565b8111156124705760019550612592565b600485015461247f9085612d90565b600486015560068501546124939084612d90565b60068601556124ac6001600160a01b0389168b836133c9565b612592565b478111156124c25760019550612592565b60048501546124d19085612d90565b600486015560068501546124e59084612d90565b60068601556040516000906001600160a01b038c16906108fc90849084818181858888f193505050503d806000811461253a576040519150601f19603f3d011682016040523d82523d6000602084013e61253f565b606091505b50509050806125905760405162461bcd60e51b815260206004820152601660248201527f4661696c656420746f2073656e64206f766d5f457468000000000000000000006044820152606401610741565b505b851561263b578454604080516001600160a01b038d81166024830152604482018d90529283166064808301919091528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f53174cc100000000000000000000000000000000000000000000000000000000179052609a54609d5491926126359291169063ffffffff166109d1565b5061269b565b604080516001600160a01b038c811682526020820184905281830187905260608201869052608082018590528a1660a082015290517fedb4d3b4b55168608412f15db11c00859915842963c31b1f08d910a38e1d6aa49181900360c00190a15b50505050505050505050565b600260015414156126fa5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610741565b600260015560655460ff16156127525760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b3415158061277d57506001600160a01b03811673420000000000000000000000000000000000000614155b6127c95760405162461bcd60e51b815260206004820152601060248201527f416d6f756e7420496e636f7272656374000000000000000000000000000000006044820152606401610741565b34156127e957503490507342000000000000000000000000000000000000065b6001600160a01b038082166000908152609760209081526040808320609883528184203385529092529091206001820154919290911661286b5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e2041646472657373204e6f742052656769737465726564000000006044820152606401610741565b6128748361065c565b8054156128e0576128aa61191e8260010154610f9c64e8d4a510006106cb87600501548760000154612d7890919063ffffffff16565b6002820155600582015481546128d69164e8d4a51000916106cb91906128d09089612d90565b90612d78565b6001820155612906565b61290064e8d4a510006106cb846005015487612d7890919063ffffffff16565b60018201555b6001600160a01b0383167342000000000000000000000000000000000000061461293f5761293f6001600160a01b038416333087612d9c565b805461294b9085612d90565b8155600282015461295c9085612d90565b600283015560408051338152602081018690526001600160a01b0385168183015290517f5852d1d46e583f7e92c2a572221de0e681d82ef71f489847e056b9445c0147369181900360600190a15050600180555050565b609d5464010000000090046001600160a01b03163314612a155760405162461bcd60e51b815260206004820152601560248201527f63616c6c6572206973206e6f74207468652044414f00000000000000000000006044820152606401610741565b609a546001600160a01b0316612a935760405162461bcd60e51b815260206004820152602560248201527f436f6e747261637420686173206e6f7420796574206265656e20696e6974696160448201527f6c697a65640000000000000000000000000000000000000000000000000000006064820152608401610741565b60328211158015612aa5575060328111155b612b175760405162461bcd60e51b815260206004820152603c60248201527f7573657220616e64206f776e6572206665652072617465732073686f756c642060448201527f6265206c6f776572207468616e20352070657263656e742065616368000000006064820152608401610741565b609b91909155609c55565b6099546001600160a01b0316331480612b4457506099546001600160a01b0316155b612b905760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610741565b6001600160a01b038116612c0b5760405162461bcd60e51b8152602060048201526024808201527f4e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610741565b609980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b609d5464010000000090046001600160a01b03163314612ca75760405162461bcd60e51b815260206004820152601560248201527f63616c6c6572206973206e6f74207468652044414f00000000000000000000006044820152606401610741565b6001600160a01b038116612d235760405162461bcd60e51b815260206004820152602a60248201527f4e65772044414f20616464726573732063616e6e6f7420626520746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610741565b609d80546001600160a01b03909216640100000000027fffffffffffffffff0000000000000000000000000000000000000000ffffffff909216919091179055565b6000612d718284613934565b9392505050565b6000612d71828461394b565b6000612d718284613988565b6000612d7182846139c3565b6040516001600160a01b0380851660248301528316604482015260648101829052612e6b9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526134b8565b50505050565b6000546040517f3dbb202b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633dbb202b90612ebe90869085908790600401613a51565b600060405180830381600087803b158015612ed857600080fd5b505af1158015612eec573d6000803e3d6000fd5b50505050505050565b60655460ff16612f475760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610741565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000547501000000000000000000000000000000000000000000900460ff1680612ff4575060005474010000000000000000000000000000000000000000900460ff16155b6130665760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff161580156130cd57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b80156130fc57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b50565b6000547501000000000000000000000000000000000000000000900460ff1680613144575060005474010000000000000000000000000000000000000000900460ff16155b6131b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff1615801561321d57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905580156130fc57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6000547501000000000000000000000000000000000000000000900460ff16806132bb575060005474010000000000000000000000000000000000000000900460ff16155b61332d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610741565b6000547501000000000000000000000000000000000000000000900460ff1615801561339457600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6001805580156130fc57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550565b6040516001600160a01b038316602482015260448101829052610e919084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401612de9565b60655460ff16156134655760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610741565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612f923390565b600061350d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661359d9092919063ffffffff16565b805190915015610e91578080602001905181019061352b9190613a89565b610e915760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610741565b60606135ac84846000856135b4565b949350505050565b60608247101561362c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610741565b843b61367a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610741565b600080866001600160a01b031685876040516136969190613aab565b60006040518083038185875af1925050503d80600081146136d3576040519150601f19603f3d011682016040523d82523d6000602084013e6136d8565b606091505b50915091506136e88282866136f3565b979650505050505050565b60608315613702575081612d71565b8251156137125782518084602001fd5b8160405162461bcd60e51b81526004016107419190613ac7565b6001600160a01b03811681146130fc57600080fd5b6000806040838503121561375457600080fd5b823561375f8161372c565b9150602083013561376f8161372c565b809150509250929050565b60006020828403121561378c57600080fd5b8135612d718161372c565b600080604083850312156137aa57600080fd5b82359150602083013561376f8161372c565b6000602082840312156137ce57600080fd5b813563ffffffff81168114612d7157600080fd5b6000806000606084860312156137f757600080fd5b8335925060208401356138098161372c565b915060408401356138198161372c565b809150509250925092565b6000806040838503121561383757600080fd5b50508035926020909101359150565b60008060006060848603121561385b57600080fd5b83356138668161372c565b92506020840135915060408401356138198161372c565b60006020828403121561388f57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156138f7576138f7613896565b5060010190565b60006020828403121561391057600080fd5b8151612d718161372c565b60006020828403121561392d57600080fd5b5051919050565b60008282101561394657613946613896565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561398357613983613896565b500290565b6000826139be577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082198211156139d6576139d6613896565b500190565b60005b838110156139f65781810151838201526020016139de565b83811115612e6b5750506000910152565b60008151808452613a1f8160208601602086016139db565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6001600160a01b0384168152606060208201526000613a736060830185613a07565b905063ffffffff83166040830152949350505050565b600060208284031215613a9b57600080fd5b81518015158114612d7157600080fd5b60008251613abd8184602087016139db565b9190910192915050565b602081526000612d716020830184613a0756fea164736f6c6343000809000a", - "linkReferences": {}, - "deployedLinkReferences": {} -}